:root{--bg:#f4f5f7;--panel:#fff;--ink:#1f2430;--muted:#6b7280;--accent:#4f6df5;--accent-ink:#fff;--border:#e3e6ec;--amber:#b45309;--amber-bg:#fef3c7;color:var(--ink);font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{background:var(--bg);margin:0}button{font:inherit;cursor:pointer}input{font:inherit}.auth-wrap{place-items:center;min-height:100vh;display:grid}.auth-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:12px;width:320px;padding:32px;display:flex;box-shadow:0 8px 30px #1f243014}.auth-card h1{margin:0;font-size:24px}.auth-sub{color:var(--muted);margin:0 0 8px;font-size:14px}.auth-card input{border:1px solid var(--border);border-radius:8px;padding:10px 12px}.auth-card button[type=submit]{background:var(--accent);color:var(--accent-ink);border:none;border-radius:8px;padding:10px}.auth-error{color:#b91c1c;font-size:13px}.link{color:var(--accent);background:0 0;border:none;padding:0;font-size:13px}.app{min-height:100vh;display:flex}.sidebar{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:8px;width:220px;padding:16px 12px;display:flex}.sidebar-head{justify-content:space-between;align-items:baseline;padding:0 6px 8px;display:flex}.logo{font-weight:700}.board-link{cursor:pointer;border-radius:8px;justify-content:space-between;align-items:center;padding:8px 10px;font-size:14px;display:flex}.board-link:hover{background:var(--bg)}.board-link.active{background:var(--accent);color:var(--accent-ink)}.board-del{color:inherit;opacity:0;background:0 0;border:none;font-size:12px}.board-link:hover .board-del{opacity:.6}.add-board{border:1px dashed var(--border);color:var(--muted);background:0 0;border-radius:8px;margin-top:auto;padding:8px}main{flex:1;min-width:0;padding:20px 24px}.board-empty{color:var(--muted);place-items:center;height:60vh;display:grid}.add-task{gap:8px;max-width:560px;margin-bottom:16px;display:flex}.add-task input{border:1px solid var(--border);border-radius:8px;flex:1;padding:10px 12px}.add-task button{background:var(--accent);color:var(--accent-ink);border:none;border-radius:8px;padding:0 18px}.columns{grid-template-columns:repeat(3,1fr);align-items:start;gap:14px;display:grid}.column{background:#ecedf1;border-radius:10px;min-height:200px;padding:10px}.column.drag-over{background:#e2e6f5}.column h2{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:2px 4px 10px;font-size:13px}.count{font-weight:400}.card{background:var(--panel);border:1px solid var(--border);border-radius:8px;margin-bottom:8px;padding:10px 12px;position:relative;box-shadow:0 1px 2px #1f24300d}.card.dragging{box-shadow:0 8px 20px #1f24302e}.card-title{word-break:break-word;padding-right:48px;font-size:14px}.card-actions{opacity:0;gap:2px;display:flex;position:absolute;top:8px;right:8px}.card:hover .card-actions{opacity:1}.card-actions button{color:var(--muted);background:0 0;border:none;padding:2px 4px;font-size:12px}.badge{background:var(--amber-bg);color:var(--amber);border:none;border-radius:6px;margin-bottom:6px;padding:2px 6px;font-size:11px;display:inline-block}.badge.woke{cursor:pointer}.snooze-menu{z-index:10;background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:4px;width:190px;padding:8px;display:flex;position:absolute;top:30px;right:6px;box-shadow:0 10px 30px #1f243026}.snooze-menu>button{text-align:left;background:0 0;border:none;border-radius:6px;padding:6px 8px;font-size:13px}.snooze-menu>button:hover{background:var(--bg)}.snooze-custom{gap:4px;padding:4px 8px 0;display:flex}.snooze-custom input{border:1px solid var(--border);border-radius:6px;flex:1;min-width:0;padding:4px;font-size:12px}.snooze-custom button{background:var(--accent);color:var(--accent-ink);border:none;border-radius:6px;padding:0 10px;font-size:12px}.snooze-hint{color:var(--muted);padding:2px 8px 4px;font-size:11px}.label-menu{max-height:260px;overflow-y:auto}.label-opt{text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:7px;padding:6px 8px;font-size:13px;display:flex}.label-opt:hover{background:var(--bg)}.label-opt.on .label-name{font-weight:600}.label-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.label-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.label-tick{color:var(--accent);font-size:12px}.kbd-hint{color:var(--muted);margin-top:14px;font-size:12px}.kbd-hint kbd{border:1px solid var(--border);background:var(--panel);border-bottom-width:2px;border-radius:4px;padding:1px 5px;font-family:inherit;font-size:11px;display:inline-block}.chip-row.suggest{margin-top:6px}.chip.ghost{opacity:.65;cursor:pointer;border:none}.chip.ghost:hover{opacity:1}.snoozed-panel{max-width:560px;margin-top:22px}.snoozed-panel h2{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:13px}.snoozed-row{background:var(--panel);border:1px solid var(--border);border-radius:8px;align-items:center;gap:10px;margin-bottom:6px;padding:8px 12px;font-size:14px;display:flex}.snoozed-row .badge{margin:0}.snoozed-title{color:var(--muted);flex:1}.snoozed-row button{border:1px solid var(--border);color:var(--muted);background:0 0;border-radius:6px;padding:3px 8px;font-size:12px}.sidebar-body{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex}.nav-toggle{border:1px solid var(--border);background:0 0;border-radius:6px;padding:2px 8px;font-size:14px;display:none}.board-name{align-items:center;gap:6px;min-width:0;display:flex}.board-count{background:#7f7f7f2e;border-radius:10px;padding:1px 7px;font-size:11px}.board-link.active .board-count{background:#ffffff40}.search-wrap{position:relative}.search{border:1px solid var(--border);border-radius:8px;width:100%;padding:8px 10px;font-size:13px}.search-results{z-index:30;background:var(--panel);border:1px solid var(--border);border-radius:10px;max-height:280px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 10px 30px #1f243026}.search-row{text-align:left;background:0 0;border:none;border-radius:6px;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:7px 8px;display:flex}.search-row:hover{background:var(--bg)}.search-title{font-size:13px}.search-board{color:var(--muted);font-size:11px}.search-empty{color:var(--muted);padding:8px;font-size:12px}.chip-row{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.chip-row.small{margin-top:6px}.chip{color:#fff;border:none;border-radius:999px;align-items:center;gap:4px;padding:2px 9px;font-size:11px;display:inline-flex}.chip.mini{padding:1px 7px;font-size:10px}.chip button{color:#ffffffd9;background:0 0;border:none;padding:0;font-size:10px}.chip.filter{opacity:.55}.chip.filter:hover,.chip.filter.active{opacity:1}.chip.filter.active{outline:2px solid var(--ink);outline-offset:1px}.chip-clear{color:var(--muted);background:0 0;border:none;font-size:11px;text-decoration:underline}.chip-add input{border:1px dashed var(--border);background:0 0;border-radius:999px;width:80px;padding:2px 9px;font-size:11px}.label-filter{flex-wrap:wrap;align-items:center;gap:5px;margin:-6px 0 14px;display:flex}.card-meta{color:var(--muted);flex-wrap:wrap;gap:8px;margin-top:7px;font-size:11px;display:flex}.due{border-radius:6px;padding:1px 6px}.due.overdue{color:#b91c1c;background:#fee2e2;font-weight:600}.due.due-today{background:var(--amber-bg);color:var(--amber);font-weight:600}.due.due-future{background:var(--bg)}.modal-overlay{z-index:100;background:#1f243073;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border-radius:14px;flex-direction:column;gap:14px;width:100%;max-width:460px;max-height:88vh;padding:20px;display:flex;overflow-y:auto;box-shadow:0 20px 60px #1f24304d}.modal-head{align-items:center;gap:8px;display:flex}.modal-title{border:1px solid #0000;border-radius:8px;flex:1;min-width:0;padding:6px 8px;font-size:17px;font-weight:600}.modal-title:hover,.modal-title:focus{border-color:var(--border);outline:none}.modal-close{color:var(--muted);background:0 0;border:none;font-size:14px}.modal-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.modal-field{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.modal-field input,.modal-field select{border:1px solid var(--border);color:var(--ink);background:var(--panel);border-radius:8px;padding:7px 8px;font-size:13px}.modal-section{flex-direction:column;gap:6px;display:flex}.modal-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:12px}.modal-section textarea{border:1px solid var(--border);font:inherit;resize:vertical;border-radius:8px;padding:8px 10px;font-size:13px}.check-row{align-items:center;gap:8px;font-size:13px;display:flex}.check-row span{word-break:break-word;flex:1}.check-done{color:var(--muted);text-decoration:line-through}.check-row button{color:var(--muted);opacity:0;background:0 0;border:none;font-size:10px}.check-row:hover button{opacity:1}.check-add input{border:1px dashed var(--border);background:0 0;border-radius:8px;width:100%;padding:6px 10px;font-size:13px}.modal-foot{justify-content:flex-end;padding-top:4px;display:flex}.modal-hint{color:var(--muted);font-size:12px}button.danger{color:#b91c1c;background:0 0;border:1px solid #fca5a5;border-radius:8px;padding:6px 12px;font-size:13px}button.danger:hover{background:#fee2e2}@media (width<=760px){.app{flex-direction:column}.kbd-hint{display:none}.sidebar{border-right:none;border-bottom:1px solid var(--border);width:100%;padding:10px 12px}.nav-toggle{display:inline-block}.sidebar-body{display:none}.sidebar.open .sidebar-body{display:flex}main{padding:14px 12px}.columns{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:10px;padding-bottom:6px;display:flex;overflow-x:auto}.column{scroll-snap-align:start;min-width:80vw}.card-actions,.check-row button{opacity:1}.modal{max-width:none;max-height:92vh}}.calendar{max-width:1100px}.cal-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.cal-title{text-align:center;min-width:150px;margin:0;font-size:18px}.cal-nav{border:1px solid var(--border);background:var(--panel);border-radius:8px;width:30px;height:30px;font-size:16px;line-height:1}.cal-today-btn{border:1px solid var(--border);background:var(--panel);border-radius:8px;padding:5px 10px;font-size:12px}.cal-stats{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.cal-stat{color:var(--muted);background:var(--panel);border:1px solid var(--border);border-radius:20px;padding:3px 10px;font-size:12px}.cal-stat.late{color:#b3261e;background:#fdf1f0;border-color:#e7bdb9}.cal-layout{align-items:flex-start;gap:14px;display:flex}.cal-main{flex:1;min-width:0}.cal-grid{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.cal-dows{margin-bottom:4px}.cal-dow{color:var(--muted);text-align:center;text-transform:uppercase;letter-spacing:.04em;font-size:11px}.cal-cell{background:var(--panel);border:1px solid var(--border);border-radius:8px;min-height:92px;margin-bottom:6px;padding:5px}.cal-cell.out{opacity:.45}.cal-cell.today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.cal-cell.drag-over{background:var(--bg);border-style:dashed}.cal-daynum{color:var(--muted);margin-bottom:3px;font-size:11px}.cal-cell.today .cal-daynum{color:var(--accent);font-weight:700}.cal-chip{background:var(--bg);border:1px solid var(--border);cursor:grab;border-radius:6px;align-items:center;gap:5px;margin-bottom:3px;padding:3px 6px;font-size:11px;display:flex}.cal-chip.dragging{box-shadow:0 8px 20px #1f243040}.cal-chip.late{background:#fdf1f0;border-color:#e7bdb9}.cal-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.cal-chip-title{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.cal-recur{color:var(--muted);flex-shrink:0}.cal-nodate{background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-shrink:0;width:220px;min-height:200px;padding:10px}.cal-nodate.drag-over{background:var(--bg);border-style:dashed}.cal-nodate h3{margin:0 0 2px;font-size:13px}.cal-nodate-hint{color:var(--muted);margin:0 0 8px;font-size:11px}.repeats{max-width:640px}.repeats h2{margin:0 0 14px;font-size:18px}.repeats-empty,.repeats-hint{color:var(--muted);font-size:13px;line-height:1.5}.repeats-hint{margin-top:14px}.repeats-list{flex-direction:column;gap:8px;display:flex}.repeat-row{background:var(--panel);border:1px solid var(--border);border-radius:10px;align-items:center;gap:12px;padding:10px 12px;display:flex}.repeat-row.stopped{opacity:.6}.repeat-main{flex-direction:column;flex:1;min-width:0;display:flex}.repeat-title{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.repeat-board{color:var(--muted);font-size:11px}.repeat-info{color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;font-size:12px;display:flex}.repeat-overdue{color:#b3261e}.repeat-next{color:var(--ink);font-weight:600}.repeat-stop{border:1px solid var(--border);background:var(--bg);border-radius:8px;flex-shrink:0;padding:5px 10px;font-size:12px}@media (width<=760px){.cal-layout{flex-direction:column}.cal-nodate{width:100%;min-height:0}.cal-cell{min-height:64px}.cal-chip-title{font-size:10px}}.view-tabs{align-items:center;gap:6px;margin-bottom:14px;display:flex}.view-board-name{margin-right:10px;font-size:16px;font-weight:700}.view-tab{border:1px solid var(--border);background:var(--panel);color:var(--muted);border-radius:8px;padding:5px 12px;font-size:13px}.view-tab.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
