:root{--bg: #f3f2ff;--surface: #ffffff;--text: #171633;--muted: #6b6f8c;--border: #e6e4fb;--accent: #6d5efc;--accent-2: #ff5fa2;--accent-text: #ffffff;--accent-grad: linear-gradient(135deg, #6d5efc 0%, #ff5fa2 100%);--todo: #3b82f6;--started: #f97316;--done: #16a34a;--warn: #ef4444;--safe-bottom: env(safe-area-inset-bottom, 0px)}@media(prefers-color-scheme:dark){:root{--bg: #0e0f1e;--surface: #1a1b30;--text: #ecebff;--muted: #a2a6c8;--border: #2e2f4d;--accent: #7c6cff;--accent-2: #ff6fae;--accent-grad: linear-gradient(135deg, #7c6cff 0%, #ff6fae 100%);--todo: #3b82f6;--started: #f97316;--done: #1cae57;--warn: #f4525f}}:root[data-theme=light]{--bg: #f3f2ff;--surface: #ffffff;--text: #171633;--muted: #6b6f8c;--border: #e6e4fb;--accent: #6d5efc;--accent-2: #ff5fa2;--accent-grad: linear-gradient(135deg, #6d5efc 0%, #ff5fa2 100%);--todo: #3b82f6;--started: #f97316;--done: #16a34a;--warn: #ef4444}:root[data-theme=dark]{--bg: #0e0f1e;--surface: #1a1b30;--text: #ecebff;--muted: #a2a6c8;--border: #2e2f4d;--accent: #7c6cff;--accent-2: #ff6fae;--accent-grad: linear-gradient(135deg, #7c6cff 0%, #ff6fae 100%);--todo: #3b82f6;--started: #f97316;--done: #1cae57;--warn: #f4525f}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font:16px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app{max-width:640px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;padding-bottom:calc(72px + var(--safe-bottom))}.app.loading{align-items:center;justify-content:center;color:var(--muted)}.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:var(--surface);border-bottom:1px solid var(--border)}.topbar h1{font-size:18px;margin:0;font-weight:800;letter-spacing:-.01em;background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;color:transparent}.conn{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}.conn .dot{width:9px;height:9px;border-radius:50%;background:var(--done)}.conn.off .dot{background:var(--muted)}.conn.warn .conn-label,.conn.warn .dot{color:var(--warn);background:var(--warn)}.conn .badge{min-width:20px;text-align:center;padding:1px 6px;border-radius:10px;background:var(--accent);color:var(--accent-text);font-size:12px}.filterbar{display:flex;flex-wrap:wrap;gap:6px;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:49px;z-index:4}.filter-chip,.filter-clear{min-height:32px;padding:0 10px;border:1px solid var(--border);border-radius:16px;background:var(--bg);color:var(--muted);font-size:13px}.filter-chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.status-chip-todo.on{background:var(--todo);border-color:var(--todo);color:#fff}.status-chip-started.on{background:var(--started);border-color:var(--started);color:#fff}.status-chip-done.on{background:var(--done);border-color:var(--done);color:#fff}.filter-sep{width:1px;align-self:stretch;background:var(--border);margin:3px 2px}.filter-clear{color:var(--warn);border-color:transparent;background:transparent}.tree{flex:1;padding:10px 12px;position:relative}.section{margin-bottom:18px}.section-header{display:flex;align-items:center;gap:8px;margin:6px 4px 8px;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.section-todo .section-header{color:var(--todo)}.section-started .section-header{color:var(--started)}.section-done .section-header{color:var(--done)}.section-count{min-width:20px;text-align:center;padding:0 6px;border-radius:10px;background:var(--border);color:var(--muted);font-size:11px;font-weight:700;letter-spacing:0}.section-empty{margin:0 6px 4px;color:var(--muted);font-size:14px}.drag-handle{min-width:26px;min-height:44px;border:none;background:transparent;color:var(--muted);font-size:16px;line-height:1;padding:0;border-radius:6px;cursor:grab;touch-action:none}.row.dragging{opacity:.4}.drop-indicator{position:absolute;height:2px;right:12px;background:var(--accent);border-radius:2px;pointer-events:none;z-index:3}.drop-indicator:before{content:"";position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--accent)}.tree .empty{color:var(--muted);font-size:14px;margin:8px 4px}.nodes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.node>.nodes{margin-top:6px}.swipe{position:relative;overflow:hidden;border-radius:10px}.swipe-fg{position:relative;z-index:1;touch-action:pan-y}.swipe-bg{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;gap:6px;color:#fff;font-weight:600;font-size:14px;opacity:0}.swipe-bg.show{opacity:1}.swipe-bg.archive{justify-content:flex-start;padding-left:18px;background:var(--done)}.swipe-bg.delete{justify-content:flex-end;padding-right:18px;background:var(--warn)}.row{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:6px 8px 6px 6px}.row.dim{opacity:.5}.titlewrap{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.fold{min-width:26px;min-height:44px;border:none;background:transparent;color:var(--muted);font-size:13px;line-height:1;padding:0;border-radius:6px}.fold-spacer{display:inline-block;width:26px;flex:0 0 26px}.fold-count{color:var(--muted);font-size:13px}.row .title{word-break:break-word}.row .title.done{text-decoration:line-through;color:var(--muted)}.tagchips{display:flex;flex-wrap:wrap;gap:4px}.tagchip{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--muted);background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:1px 7px}.tagchip.removable button{min-height:20px;min-width:20px;border:none;background:transparent;color:var(--muted);font-size:14px;line-height:1;padding:0}.tagbtn{min-width:40px;border:none;background:transparent;font-size:17px;line-height:1;border-radius:8px;filter:grayscale(.3)}.body-preview{margin:0;font-size:13px;color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.completed{font-size:12px;color:var(--done)}.crumb{font-size:11px;color:var(--muted)}.datechips{display:flex;flex-wrap:wrap;gap:4px}.datechip{font-size:11px;padding:1px 7px;border-radius:10px;border:1px solid var(--border);color:var(--muted);background:var(--bg);white-space:nowrap}.datechip.due.overdue{color:#fff;background:var(--warn);border-color:var(--warn)}.dateseditor{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin-top:6px}.dateseditor label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted)}.dateseditor input{min-height:40px;padding:0 10px;font-size:16px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text)}.dates-done{min-height:40px;padding:0 14px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text)}.viewswitch{display:inline-flex;border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--bg)}.viewswitch button{min-height:32px;padding:0 10px;border:none;background:transparent;color:var(--muted);font-size:12px}.viewswitch button.on{background:var(--accent);color:var(--accent-text)}.agenda-overdue .section-header{color:var(--warn)}.agenda-today .section-header{color:var(--accent)}.logbook{margin-top:6px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--bg)}.logbook-head{display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:6px}.logbook-head button{border:none;background:transparent;color:var(--muted);font-size:14px;min-height:28px;min-width:28px}.logbook ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.logbook li{display:flex;gap:10px;font-size:13px}.logbook-when{color:var(--muted);min-width:72px}.logbook-empty{margin:0;color:var(--muted);font-size:13px}.progress{margin-left:8px;font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}.progress.complete{color:var(--done)}.progressbar{height:4px;max-width:180px;margin-top:3px;border-radius:3px;background:var(--border);overflow:hidden}.progressbar>div{height:100%;border-radius:3px;background:var(--accent-grad);transition:width .2s ease}.menu-wrap{position:relative;display:flex}.menubtn{min-width:44px;min-height:44px;border:none;background:transparent;color:var(--muted);font-size:20px;line-height:1;border-radius:8px}.menubtn.on{background:var(--bg);color:var(--text)}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10}.menu{position:absolute;top:100%;right:0;z-index:11;min-width:160px;margin-top:4px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:4px;box-shadow:0 8px 24px #00000040;display:flex;flex-direction:column}.menu button{min-height:44px;text-align:left;padding:0 12px;border:none;background:transparent;color:var(--text);border-radius:8px;font-size:15px}.menu button:hover{background:var(--bg)}.menu button.danger{color:var(--warn)}.bodyeditor{display:flex;flex-direction:column;gap:8px;margin-top:6px}.bodyeditor textarea{width:100%;padding:8px 10px;font:inherit;font-size:16px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);resize:vertical}.bodyeditor-actions{display:flex;gap:8px;justify-content:flex-end}.bodyeditor-actions button{min-height:40px;padding:0 14px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text)}.bodyeditor-actions .primary{background:var(--accent-grad);border-color:transparent;color:var(--accent-text);font-weight:700}.tagbtn.on{filter:none;background:var(--bg)}.tageditor{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;padding-top:2px}.taginput input{min-height:32px;min-width:120px;padding:0 10px;font-size:16px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text)}button{font:inherit;cursor:pointer}.status,.delete,.subtask,.tagbtn,.archive,.drag-handle,.addbar button,.loginbar button{min-height:44px}.archive{min-width:40px;border:none;background:transparent;font-size:16px;line-height:1;border-radius:8px;filter:grayscale(.3)}.topbar-right{display:flex;align-items:center;gap:12px}.viewtoggle{min-height:32px;padding:0 12px;border:1px solid var(--border);border-radius:16px;background:var(--bg);color:var(--muted);font-size:13px}.viewtoggle.on{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.status.readonly{display:inline-flex;align-items:center;justify-content:center;min-height:32px;cursor:default}.unarchive{min-height:44px;padding:0 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);font-size:13px}.linkbtn{border:none;background:transparent;color:var(--accent);text-decoration:underline;padding:0}.subtask{min-width:40px;border:none;background:transparent;color:var(--muted);font-size:20px;line-height:1;border-radius:8px}.status{min-width:84px;border:none;border-radius:8px;color:#fff;padding:0 12px;font-size:13px;font-weight:600}.status-todo{background:var(--todo)}.status-started{background:var(--started)}.status-done{background:var(--done)}.delete{min-width:44px;border:none;background:transparent;color:var(--muted);font-size:18px;border-radius:8px}.addbar{position:fixed;bottom:0;left:0;right:0;display:flex;flex-direction:column;gap:8px;padding:10px 12px calc(10px + var(--safe-bottom));background:var(--surface);border-top:1px solid var(--border)}.app>.addbar{max-width:640px;margin:0 auto}.add-context{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;color:var(--muted);padding:2px 4px}.add-context button{min-height:32px;min-width:32px;border:none;background:transparent;color:var(--muted);border-radius:8px}.add-row{display:flex;gap:8px}.add-row input{flex:1;min-height:44px;padding:0 12px;font-size:16px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text)}.add-row button{min-height:44px;padding:0 18px;border:none;border-radius:10px;background:var(--accent-grad);color:var(--accent-text);font-weight:700;box-shadow:0 4px 14px #6d5efc59}.loginbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--border)}.loginbar input{min-height:44px;padding:0 12px;font-size:16px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text)}.loginbar button{padding:0 16px;border:none;border-radius:10px;background:var(--accent);color:var(--accent-text)}.loginbar .err{color:var(--warn);font-size:13px}.undo{position:fixed;bottom:calc(72px + var(--safe-bottom));left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:var(--text);color:var(--bg);padding:8px 12px 8px 16px;border-radius:10px;font-size:14px;box-shadow:0 4px 16px #00000040}.undo button{min-height:36px;border:none;background:transparent;color:var(--accent);font-weight:700}.confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:24px;background:#00000073}.confirm-box{width:100%;max-width:340px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px}.confirm-box p{margin:0 0 16px}.confirm-actions{display:flex;gap:10px;justify-content:flex-end}.confirm-actions button{min-height:44px;padding:0 16px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);font-weight:600}.confirm-actions .danger{background:var(--warn);border-color:var(--warn);color:#fff}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
