:root{--page:#f7f7f8;--bg:#fff;--surface:#f7f7f8;--surface-2:#efeff1;--header:#fafafa;--border:#e9e9ec;--border-strong:#dadadf;--text:#111214;--text-2:#3c3f45;--muted:#6b6f76;--faint:#a0a3aa;--accent:#3e63dd;--accent-soft:#3e63dd24;--primary:#18181b;--primary-text:#fff;--selected:#f3f5fc;--hover:#fafafb;--danger:#d93036;--danger-text:#c4262c;--warn-text:#c2410c;--shadow-sm:0 1px 2px #1011140d;--shadow-panel:0 1px 3px #1011140a, 0 1px 2px #10111408;--shadow:0 16px 40px #10111424, 0 2px 6px #1011140f;--radius:3px;--sans:Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--mono:"JetBrains Mono", ui-monospace, "SF Mono", SFMono-Regular, Menlo, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--page:#0c0d10;--bg:#131418;--surface:#1a1b20;--surface-2:#202127;--header:#16171b;--border:#24252b;--border-strong:#31333a;--text:#ededf0;--text-2:#c6c7cd;--muted:#8a8c95;--faint:#5c5e67;--accent:#7c9cff;--accent-soft:#7c9cff2e;--primary:#ededf0;--primary-text:#111214;--selected:#191c26;--hover:#17181d;--danger:#e5484d;--danger-text:#ff7a7f;--warn-text:#ff9a4d;--shadow-sm:0 1px 2px #0006;--shadow-panel:0 1px 2px #0000004d;--shadow:0 16px 48px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{background:var(--page);color:var(--text);font:14px/1.45 var(--sans);font-feature-settings:"cv11", "ss01";-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0}button,input,textarea{font:inherit;color:inherit}.muted{color:var(--muted)}.error{color:var(--danger)}.spacer{flex:1}kbd{border:1px solid var(--border-strong);min-width:18px;font:500 11px/16px var(--mono);text-align:center;color:var(--muted);background:var(--bg);border-radius:2px;padding:0 4px;display:inline-block}kbd+kbd{margin-left:2px}.btn{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);cursor:pointer;white-space:nowrap;height:32px;box-shadow:var(--shadow-sm);align-items:center;gap:8px;padding:0 12px;font-size:13px;font-weight:500;transition:background-color .1s,border-color .1s;display:inline-flex}.btn:hover{background:var(--surface)}.btn.primary,.btn.danger{color:var(--primary-text);border-color:#0000}.btn.primary{background:var(--primary)}.btn.danger{background:var(--danger);color:#fff}.btn.primary:hover,.btn.danger:hover{opacity:.88}.btn.primary kbd{border-color:color-mix(in srgb, var(--primary-text) 30%, transparent);color:color-mix(in srgb, var(--primary-text) 75%, transparent);background:0 0}.btn.ghost{color:var(--muted);box-shadow:none;background:0 0;border-color:#0000}.btn.ghost:hover{color:var(--text);background:var(--surface-2)}.btn.ghost kbd{background:0 0}.link{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0}.center{place-items:center;min-height:100vh;padding:24px;display:grid}.login{text-align:center;justify-items:center;gap:16px;display:grid}.login h1{letter-spacing:-.015em;margin:0;font-size:22px;font-weight:600}.app{flex-direction:column;max-width:1160px;height:100dvh;margin:0 auto;display:flex}.topbar{align-items:center;gap:4px;padding:16px 24px 14px;display:flex}.topbar h1{letter-spacing:-.01em;align-items:center;gap:9px;margin:0;font-size:15px;font-weight:600;display:flex}.panel{background:var(--bg);border:1px solid var(--border);min-height:0;box-shadow:var(--shadow-panel);border-radius:4px;flex-direction:column;flex:1;margin:0 24px 24px;display:flex;overflow:hidden}.toolbar{border-bottom:1px solid var(--border);align-items:center;gap:8px;height:48px;padding:0 12px 0 16px;display:flex}.views{align-self:stretch;gap:20px;display:flex}.tab{color:var(--muted);cursor:pointer;background:0 0;border:2px solid #0000;border-left:0;border-right:0;border-radius:0;align-items:center;gap:7px;padding:0;font-size:13px;font-weight:500;display:flex}.tab:hover{color:var(--text)}.tab.on{color:var(--text);border-bottom-color:var(--text)}.count{background:var(--surface-2);font:500 11px/17px var(--mono);color:var(--muted);border-radius:2px;padding:0 5px}.tab.on .count{background:var(--text);color:var(--bg)}.filter{align-items:center;display:flex;position:relative}.filter input{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='none' stroke='%23898c94' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath d='M9.5 9.5L13 13'/%3E%3C/svg%3E") no-repeat 10px center;outline:none;width:220px;height:32px;padding:0 30px 0 31px;font-size:13px}.filter input::placeholder{color:var(--faint)}.filter input::-webkit-search-cancel-button{display:none}.filter input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.filter kbd{pointer-events:none;position:absolute;right:7px}.filter input:focus+kbd,.filter input:not(:placeholder-shown)+kbd{display:none}.table-wrap{flex:1;overflow:auto}.empty{text-align:center;padding:72px 16px}table.tasks{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%}.tasks th{z-index:1;background:var(--header);border-bottom:1px solid var(--border);text-align:left;height:32px;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none;padding:0 12px;font-size:12px;font-weight:500;position:sticky;top:0}.tasks th:hover{color:var(--text)}.arrow{color:var(--text-2);margin-left:4px}.tasks td{border-bottom:1px solid var(--border);text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;height:38px;padding:0 12px;overflow:hidden}.tasks th:first-child,.tasks td:first-child{padding-left:16px}.tasks th+th,.tasks td+td{border-left:1px solid var(--border)}.tasks th.col-actions,.tasks td.col-actions{border-left:0}.col-name{width:40%}.col-deadline{width:172px}.col-actions{width:184px}td.col-name{color:var(--text);font-weight:500}td.col-description{color:var(--muted)}.tasks tbody tr:hover td{background-color:var(--hover)}.tasks tr.active td{background-color:var(--selected)}.tasks td.cell-active{box-shadow:inset 0 0 0 1.5px var(--accent)}td.col-deadline{--tint:rgb(249 115 22/calc(var(--heat,0) * .16));background-image:linear-gradient(var(--tint), var(--tint))}td.col-deadline.overdue{--tint:#d9303621}.deadline{font-family:var(--mono);color:var(--text-2);align-items:baseline;gap:6px;display:inline-flex}.deadline .date{font-size:12.5px}.deadline .rel{color:var(--faint);font-size:11.5px}td.soon .deadline .rel{color:var(--muted)}td.today .deadline{color:var(--warn-text);font-weight:500}td.overdue .deadline{color:var(--danger-text);font-weight:500}td.today .deadline .rel,td.overdue .deadline .rel{color:inherit;opacity:.75}.tasks td.editing{white-space:normal;height:auto;padding:5px 8px;overflow:visible}.cell-input{border:1px solid var(--accent);background:var(--bg);width:100%;box-shadow:0 0 0 3px var(--accent-soft);resize:vertical;border-radius:2px;outline:none;padding:5px 8px;display:block}.cell-input[aria-invalid=true]{border-color:var(--danger)}.cell-hint{color:var(--accent);margin-top:3px;font-size:11px;display:block}.cell-hint.error{color:var(--danger)}.cell-hint.muted{color:var(--muted)}.actions{opacity:0;justify-content:flex-end;gap:4px;display:flex}tr:hover .actions,tr.active .actions{opacity:1}.actions button{border:1px solid var(--border-strong);background:var(--bg);height:26px;color:var(--text-2);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:2px;padding:0 9px;font-size:12px;font-weight:500}.actions button:hover{background:var(--surface);color:var(--text)}.actions button.danger:hover{color:var(--danger);border-color:#d9303666}.count-pending{border-radius:var(--radius);background:var(--primary);min-width:40px;color:var(--primary-text);font:600 15px/1.2 var(--mono);text-align:center;box-shadow:var(--shadow);z-index:20;padding:6px 12px;position:fixed;bottom:24px;right:24px}.toast{color:#f4f4f5;max-width:calc(100vw - 32px);box-shadow:var(--shadow);z-index:20;background:#18181b;border-radius:3px;align-items:center;gap:16px;padding:9px 14px;font-size:13px;animation:.15s ease-out rise;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}.toast span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.toast .link{color:#a5b8ff;white-space:nowrap;font-weight:500}.toast kbd{color:inherit;background:0 0;border-color:#ffffff4d}@keyframes rise{0%{opacity:0;transform:translate(-50%,8px)}}.overlay{z-index:30;background:#09090b52;place-items:start center;padding:12vh 16px 16px;animation:.12s ease-out fade;display:grid;position:fixed;inset:0;overflow:auto}@keyframes fade{0%{opacity:0}}.dialog{background:var(--bg);border:1px solid var(--border);width:100%;max-width:460px;box-shadow:var(--shadow);border-radius:4px;gap:16px;padding:20px;display:grid}.dialog h2{letter-spacing:-.01em;margin:0;font-size:15px;font-weight:600}.dialog label{gap:6px;display:grid}.dialog label>span{color:var(--text-2);font-size:12px;font-weight:500}.dialog label em{color:var(--faint);font-style:normal;font-weight:400}.dialog input,.dialog textarea{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);outline:none;width:100%;padding:7px 10px}.dialog textarea{resize:vertical}.dialog input:focus,.dialog textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.dialog [aria-invalid=true]{border-color:var(--danger)}.deadline-row{gap:8px;display:flex}.deadline-row .date-picker{color:#0000;cursor:pointer;flex:none;width:42px;padding:0 8px}.deadline-row .date-picker::-webkit-datetime-edit{display:none}.presets{flex-wrap:wrap;align-items:center;gap:6px;min-height:20px;display:flex}.chip{border:1px solid var(--border-strong);background:var(--bg);cursor:pointer;border-radius:2px;padding:2px 10px;font-size:12px}.chip:hover{background:var(--surface)}.presets small{font-size:12px}.preview{color:var(--text-2);font-variant-numeric:tabular-nums;font-weight:500}.dialog-actions{align-items:center;gap:8px;margin-top:2px;display:flex}.dialog-actions small{font-size:12px}.help{max-width:560px}.help dl{gap:8px;margin:0;display:grid}.help dl>div{grid-template-columns:120px 1fr;align-items:baseline;gap:12px;display:grid}.help dt{text-align:right}.help dd{color:var(--text-2);margin:0;font-size:13px}.confirm{max-width:380px}.confirm-task{color:var(--muted);overflow-wrap:anywhere;margin:-8px 0 0}.cell-popup{max-width:540px}.popup-task{margin:-10px 0 0;font-size:13px}.popup-body{white-space:pre-wrap;overflow-wrap:anywhere;max-height:60vh;overflow:auto}.popup-body a{color:var(--accent)}.fab{right:16px;bottom:calc(16px + env(safe-area-inset-bottom));background:var(--primary);width:52px;height:52px;color:var(--primary-text);box-shadow:var(--shadow);cursor:pointer;z-index:10;border:0;border-radius:4px;place-items:center;display:grid;position:fixed}.fab svg{width:22px;height:22px}.mobile-only{display:none}@media (width<=720px){.desktop-only{display:none!important}.mobile-only{display:block}.fab.mobile-only{display:grid}.topbar{padding:10px 12px 8px 16px;padding-top:calc(10px + env(safe-area-inset-top))}.topbar .btn.ghost{height:30px;padding:0 8px}.panel{box-shadow:none;border-bottom:0;border-left:0;border-right:0;border-radius:0;margin:0}.toolbar{padding:0 12px 0 16px}.toolbar .spacer{display:none}.toolbar{gap:14px;height:46px}.views{gap:14px}.filter{flex:1;min-width:0}.filter input{width:100%;font-size:16px}.table-wrap{padding-bottom:88px}table.tasks,.tasks tbody{display:block}.tasks thead{display:none}.tasks tr{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr) auto;column-gap:12px;padding:10px 14px 10px 16px;display:grid}.tasks tbody tr:last-child{border-bottom:1px solid var(--border)}.tasks tr.active{background:var(--selected);box-shadow:inset 2px 0 0 var(--accent)}.tasks td,.tasks td:first-child,.tasks tr.active td,.tasks tbody tr:hover td{background-color:#0000;border:0;width:auto;height:auto;padding:0;display:block}.tasks td+td{border-left:0}.tasks td.cell-active{box-shadow:none}td.col-name{white-space:normal;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:15px;line-height:1.35;display:-webkit-box}.tasks td.col-deadline{align-self:start;padding:2px 6px}.deadline{gap:5px}.deadline .date{font-size:12px}.deadline .rel{font-size:11px}td.col-description{grid-column:1/-1;margin-top:2px;font-size:13px}td.col-description:empty{display:none}td.col-actions{grid-column:1/-1;display:none}tr.active td.col-actions{margin-top:10px;display:block}.tasks td.editing{padding:2px 0}.actions{opacity:1;flex-wrap:wrap;justify-content:flex-start;gap:6px}.actions button{height:32px;padding:0 12px;font-size:13px}.toast{bottom:calc(80px + env(safe-area-inset-bottom))}.overlay{place-items:end stretch;padding:0}.dialog{max-width:none;padding:20px 16px calc(16px + env(safe-area-inset-bottom));border-bottom:0;border-radius:6px 6px 0 0;animation:.18s ease-out sheet}.dialog input,.dialog textarea{font-size:16px}.dialog-actions .btn{flex:1;justify-content:center;height:42px}.help dl>div{grid-template-columns:1fr;gap:2px}.help dt{text-align:left}}@keyframes sheet{0%{opacity:.6;transform:translateY(24px)}}
