:root{color-scheme:light;--bg: #f3f5fa;--panel: #ffffff;--sunken: #f7f8fc;--hover: #f1f4fa;--hover-strong: #e9edf6;--line: rgba(15, 23, 42, .09);--line-soft: rgba(15, 23, 42, .06);--line-strong: rgba(15, 23, 42, .15);--grip: #b8c0d0;--text: #0f172a;--ink: var(--text);--muted: #5b6478;--faint: #8b93a7;--on-dark: #e7eaf0;--on-color: #ffffff;--on-accent: #ffffff;--blue: #2f6bff;--blue-hover: #1f5af0;--blue-ink: #1d4fd8;--blue-ink-deep: #172b5a;--blue-dim: #4b78e0;--blue-soft: #eef3ff;--blue-soft-strong: #e2eaff;--blue-line: #c5d5fd;--blue-line-soft: #a7c0fb;--todo: #7c3aed;--todo-ink: #6425c9;--todo-soft: #f5f0ff;--todo-soft-strong: #ece2ff;--todo-line: #d9c6fb;--overdue: #d92d20;--overdue-soft: #fef3f2;--overdue-line: #fbcac4;--green: #059669;--amber: #d97706;--danger: #c4320a;--danger-solid: #e0362a;--danger-line: #fbd3ce;--danger-line-strong: #fda29b;--danger-soft: #fef3f2;--warn-soft: #fffbeb;--warn-line: #fde68a;--warn-ink: #92400e;--radius: 12px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 1px 2px rgba(15, 23, 42, .04), 0 12px 28px -8px rgba(15, 23, 42, .16);--shadow-lg: 0 1px 3px rgba(15, 23, 42, .06), 0 28px 64px -16px rgba(15, 23, 42, .32);--raised: #ffffff;--sidebar-bg: var(--bg);--sidebar-head-line: transparent;--card-highlight: 0 1px 2px rgba(15, 23, 42, .04);--project-bg: var(--panel);--project-border: var(--line);--project-radius: 12px;--project-margin: 0 10px 10px;--project-head-hover: var(--hover);--chip-bg: #ffffff;--chip-line: var(--line);--chip-tint: 7%;--chip-hover-bg: #ffffff;--chip-tint-hover: 13%;--chip-ink: var(--text);--chip-time: var(--blue-ink);--chip-pad: 6px 8px 7px 9px;--chip-radius: 8px;--chip-shadow: 0 1px 2px rgba(15, 23, 42, .06);--chip-hover-line: var(--line-strong);--todo-chip-line: dashed;--extras: block;--extras-flex: flex;--grid-bg: var(--panel);--dow-bg: var(--sunken);--weekend-bg: rgba(15, 23, 42, .022);--today-bg: linear-gradient(180deg, rgba(47, 107, 255, .07), rgba(47, 107, 255, 0) 140px);--today-glow: 0 4px 12px -2px rgba(47, 107, 255, .55);--primary-glow: inset 0 1px 0 rgba(255, 255, 255, .18), 0 4px 12px -4px rgba(47, 107, 255, .6);--drop-label: "Drop to schedule";--tabs-wrap-bg: var(--hover-strong);--tabs-margin: 12px 12px 2px;--tabs-pad: 3px;--tabs-border: 1px solid var(--line-soft);--tabs-radius: 10px;--tabs-gap: 3px;--tab-radius: 7px;--tab-underline: 0;--tab-pad: 6px 10px;--tab-on-bg: #ffffff;--tab-on-shadow: 0 1px 2px rgba(15, 23, 42, .08), 0 0 0 1px var(--line-soft);--tab-on-ink: var(--text);--task-row-bg: transparent;--task-row-sched-bg: rgba(47, 107, 255, .06);--task-row-sched-line: rgba(47, 107, 255, .14);--task-overdue: var(--overdue);--btn-bg: #ffffff;--control-bg: #ffffff;--control-line: var(--line-strong);--focus-ring: 0 0 0 3px rgba(47, 107, 255, .16);--overlay: rgba(15, 23, 42, .32);--foot-bg: var(--sunken);--gate-glow: radial-gradient(900px 500px at 50% -10%, rgba(47, 107, 255, .14), transparent 60%)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #0b1020;--panel: #10172a;--sunken: #0d1324;--hover: #1a2340;--hover-strong: #1e2846;--line: rgba(148, 163, 209, .12);--line-soft: rgba(148, 163, 209, .08);--line-strong: rgba(148, 163, 209, .2);--grip: #4a5578;--text: #e6ebf7;--muted: #8e9abb;--faint: #5d6889;--on-dark: #e7eaf0;--on-color: #ffffff;--on-accent: #ffffff;--blue: #4f9dff;--blue-hover: #6aacff;--blue-ink: #a9cdff;--blue-ink-deep: #d6e7ff;--blue-dim: #7fa9e8;--blue-soft: rgba(79, 157, 255, .12);--blue-soft-strong: rgba(79, 157, 255, .2);--blue-line: rgba(79, 157, 255, .4);--blue-line-soft: rgba(79, 157, 255, .28);--todo: #a78bfa;--todo-ink: #c9b6fd;--todo-soft: rgba(167, 139, 250, .14);--todo-soft-strong: rgba(167, 139, 250, .24);--todo-line: rgba(167, 139, 250, .42);--overdue: #ff7a85;--overdue-soft: rgba(255, 122, 133, .12);--overdue-line: rgba(255, 122, 133, .36);--green: #34d399;--amber: #fbbf24;--danger: #ff7a85;--danger-solid: #e5544a;--danger-line: rgba(255, 122, 133, .38);--danger-line-strong: rgba(255, 122, 133, .55);--danger-soft: rgba(255, 122, 133, .12);--warn-soft: rgba(251, 191, 36, .12);--warn-line: rgba(251, 191, 36, .34);--warn-ink: #fbbf24;--shadow-sm: 0 1px 0 rgba(255, 255, 255, .04) inset, 0 1px 2px rgba(0, 0, 0, .45);--shadow-md: 0 1px 0 rgba(255, 255, 255, .05) inset, 0 10px 28px rgba(0, 0, 0, .55);--shadow-lg: 0 1px 0 rgba(255, 255, 255, .06) inset, 0 24px 60px rgba(0, 0, 0, .7);--raised: #151d33;--sidebar-bg: var(--bg);--card-highlight: inset 0 1px 0 rgba(255, 255, 255, .05);--project-bg: var(--panel);--project-border: var(--line);--project-radius: 12px;--project-margin: 0 10px 10px;--chip-bg: #151d33;--chip-line: var(--line);--chip-tint: 10%;--chip-ink: var(--text);--chip-time: var(--blue-ink);--ink: var(--text);--btn-bg: #151d33;--control-bg: #0d1324;--control-line: var(--line-strong);--focus-ring: 0 0 0 3px rgba(79, 157, 255, .22);--overlay: rgba(3, 6, 15, .62);--foot-bg: #0d1324;--gate-glow: radial-gradient(900px 500px at 50% -10%, rgba(79, 157, 255, .18), transparent 60%);--chip-pad: 6px 8px 7px 9px;--chip-radius: 8px;--chip-shadow: inset 0 1px 0 rgba(255, 255, 255, .05), 0 4px 12px -6px rgba(0, 0, 0, .7);--chip-hover-line: var(--line-strong);--extras: block;--extras-flex: flex;--sidebar-head-line: transparent;--project-head-hover: var(--hover);--dow-bg: var(--panel);--chip-hover-bg: #1a2340;--chip-tint-hover: 16%;--todo-chip-line: dashed;--tabs-margin: 12px 12px 2px;--tabs-pad: 3px;--tabs-border: 1px solid var(--line);--tabs-radius: 10px;--tabs-gap: 3px;--tab-radius: 7px;--tab-underline: 0;--tab-pad: 6px 10px;--weekend-bg: rgba(0, 0, 0, .2);--today-bg: linear-gradient(180deg, rgba(79, 157, 255, .1), rgba(79, 157, 255, 0) 140px);--today-glow: 0 0 16px rgba(79, 157, 255, .6);--primary-glow: 0 0 0 1px rgba(255, 255, 255, .08) inset, 0 4px 14px -4px rgba(79, 157, 255, .7);--drop-label: "Drop to schedule";--tabs-wrap-bg: var(--panel);--tabs-wrap-line: var(--line);--tab-on-bg: #1a2340;--tab-on-shadow: 0 0 0 1px var(--line-strong), inset 0 1px 0 rgba(255, 255, 255, .05);--tab-on-ink: var(--text);--task-row-bg: transparent;--task-row-sched-bg: transparent;--task-row-sched-line: transparent;--task-overdue: var(--overdue);--grid-bg: var(--sunken)}}:root[data-theme=dark]{color-scheme:dark;--bg: #0b1020;--panel: #10172a;--sunken: #0d1324;--hover: #1a2340;--hover-strong: #1e2846;--line: rgba(148, 163, 209, .12);--line-soft: rgba(148, 163, 209, .08);--line-strong: rgba(148, 163, 209, .2);--grip: #4a5578;--text: #e6ebf7;--muted: #8e9abb;--faint: #5d6889;--on-dark: #e7eaf0;--on-color: #ffffff;--on-accent: #ffffff;--blue: #4f9dff;--blue-hover: #6aacff;--blue-ink: #a9cdff;--blue-ink-deep: #d6e7ff;--blue-dim: #7fa9e8;--blue-soft: rgba(79, 157, 255, .12);--blue-soft-strong: rgba(79, 157, 255, .2);--blue-line: rgba(79, 157, 255, .4);--blue-line-soft: rgba(79, 157, 255, .28);--todo: #a78bfa;--todo-ink: #c9b6fd;--todo-soft: rgba(167, 139, 250, .14);--todo-soft-strong: rgba(167, 139, 250, .24);--todo-line: rgba(167, 139, 250, .42);--overdue: #ff7a85;--overdue-soft: rgba(255, 122, 133, .12);--overdue-line: rgba(255, 122, 133, .36);--green: #34d399;--amber: #fbbf24;--danger: #ff7a85;--danger-solid: #e5544a;--danger-line: rgba(255, 122, 133, .38);--danger-line-strong: rgba(255, 122, 133, .55);--danger-soft: rgba(255, 122, 133, .12);--warn-soft: rgba(251, 191, 36, .12);--warn-line: rgba(251, 191, 36, .34);--warn-ink: #fbbf24;--shadow-sm: 0 1px 0 rgba(255, 255, 255, .04) inset, 0 1px 2px rgba(0, 0, 0, .45);--shadow-md: 0 1px 0 rgba(255, 255, 255, .05) inset, 0 10px 28px rgba(0, 0, 0, .55);--shadow-lg: 0 1px 0 rgba(255, 255, 255, .06) inset, 0 24px 60px rgba(0, 0, 0, .7);--raised: #151d33;--sidebar-bg: var(--bg);--card-highlight: inset 0 1px 0 rgba(255, 255, 255, .05);--project-bg: var(--panel);--project-border: var(--line);--project-radius: 12px;--project-margin: 0 10px 10px;--chip-bg: #151d33;--chip-line: var(--line);--chip-tint: 10%;--chip-ink: var(--text);--chip-time: var(--blue-ink);--ink: var(--text);--btn-bg: #151d33;--control-bg: #0d1324;--control-line: var(--line-strong);--focus-ring: 0 0 0 3px rgba(79, 157, 255, .22);--overlay: rgba(3, 6, 15, .62);--foot-bg: #0d1324;--gate-glow: radial-gradient(900px 500px at 50% -10%, rgba(79, 157, 255, .18), transparent 60%);--chip-pad: 6px 8px 7px 9px;--chip-radius: 8px;--chip-shadow: inset 0 1px 0 rgba(255, 255, 255, .05), 0 4px 12px -6px rgba(0, 0, 0, .7);--chip-hover-line: var(--line-strong);--extras: block;--extras-flex: flex;--sidebar-head-line: transparent;--project-head-hover: var(--hover);--dow-bg: var(--panel);--chip-hover-bg: #1a2340;--chip-tint-hover: 16%;--todo-chip-line: dashed;--tabs-margin: 12px 12px 2px;--tabs-pad: 3px;--tabs-border: 1px solid var(--line);--tabs-radius: 10px;--tabs-gap: 3px;--tab-radius: 7px;--tab-underline: 0;--tab-pad: 6px 10px;--weekend-bg: rgba(0, 0, 0, .2);--today-bg: linear-gradient(180deg, rgba(79, 157, 255, .1), rgba(79, 157, 255, 0) 140px);--today-glow: 0 0 16px rgba(79, 157, 255, .6);--primary-glow: 0 0 0 1px rgba(255, 255, 255, .08) inset, 0 4px 14px -4px rgba(79, 157, 255, .7);--drop-label: "Drop to schedule";--tabs-wrap-bg: var(--panel);--tabs-wrap-line: var(--line);--tab-on-bg: #1a2340;--tab-on-shadow: 0 0 0 1px var(--line-strong), inset 0 1px 0 rgba(255, 255, 255, .05);--tab-on-ink: var(--text);--task-row-bg: transparent;--task-row-sched-bg: transparent;--task-row-sched-line: transparent;--task-overdue: var(--overdue);--grid-bg: var(--sunken)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,Helvetica,Arial,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit}.app{display:grid;grid-template-columns:var(--sidebar-w, 320px) 1fr;height:100vh;overflow:hidden;position:relative}.resizer{position:absolute;top:0;bottom:0;left:calc(var(--sidebar-w, 320px) - 4px);width:9px;z-index:6;cursor:col-resize;background:none;touch-action:none;display:flex;align-items:center;justify-content:center}.resizer:before{content:"";position:absolute;top:0;bottom:0;left:4px;width:1px;background:var(--blue);opacity:0;transition:opacity .12s ease}.resizer:hover:before,.resizer:focus-visible:before{opacity:1;box-shadow:0 0 0 1px var(--blue)}.resizer:focus-visible{outline:none}.resizer:after{content:"";width:3px;height:34px;border-radius:3px;background:var(--line-strong);transition:background .12s ease,height .12s ease}.resizer:hover:after,.resizer:focus-visible:after{background:var(--blue);height:54px}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.resizing .resizer:before{opacity:1}body.resizing .resizer:after{background:var(--blue);height:54px}@media (prefers-reduced-motion: reduce){.resizer:before,.resizer:after{transition:none}}.sidebar{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;min-width:0}.sidebar-head{padding:18px 16px 14px;border-bottom:1px solid var(--line)}.sidebar-head h1{margin:0;font-size:15px;font-weight:650;letter-spacing:-.01em}.sidebar-head p{margin:5px 0 0;font-size:12px;color:var(--faint);line-height:1.4}.sidebar-scroll{flex:1;overflow-y:auto;padding:8px 0 24px;min-height:0}.project{border-bottom:1px solid var(--line-soft);position:relative}.project-dragging{opacity:.4}.project.drop-before:before,.project.drop-after:after{content:"";position:absolute;left:8px;right:8px;height:2px;background:var(--blue);border-radius:2px;z-index:2}.project.drop-before:before{top:-1px}.project.drop-after:after{bottom:-1px}.project.task-drop-target{background:var(--blue-soft);box-shadow:inset 0 0 0 2px var(--blue);border-radius:6px}.task-drop-hint{position:absolute;top:6px;right:10px;z-index:3;padding:2px 8px;border-radius:999px;background:var(--blue);color:var(--on-accent);font-size:11px;font-weight:600;pointer-events:none;max-width:calc(100% - 20px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project.task-drop-target>.project-head .info-btn,.project.task-drop-target>.project-head .project-count{visibility:hidden}.project-head{display:flex;align-items:center;gap:8px;width:100%;padding:10px 14px;background:none;border:0;text-align:left}.chevron{width:12px;color:var(--faint);flex:0 0 auto;transition:transform .15s ease;font-size:10px}.chevron.open{transform:rotate(90deg)}.dot{width:8px;height:8px;border-radius:999px;flex:0 0 auto}.project-name{font-weight:600;font-size:13px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-count{font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums}.task-list{padding:0 8px 10px 14px}.task-row{display:flex;align-items:center;gap:8px;padding:7px 8px 7px 10px;margin:3px 0;border-radius:8px;border:1px solid transparent;background:var(--sunken);cursor:grab;-webkit-user-select:none;user-select:none}.task-row:active{cursor:grabbing}.task-row.dragging{opacity:.4}.task-row.scheduled{background:var(--blue-soft);border-color:var(--blue-line)}.grip{color:var(--grip);font-size:12px;line-height:1;letter-spacing:1px;flex:0 0 auto}.task-row.scheduled .grip{color:var(--blue-line-soft)}.task-body{flex:1;min-width:0}.step-badge{flex:0 0 auto;border:1px solid var(--line-strong);background:var(--panel);color:var(--muted);border-radius:999px;padding:1px 7px;font-size:10.5px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.5}.step-badge:hover{border-color:var(--blue);color:var(--blue)}.step-badge.open{background:var(--blue-soft);border-color:var(--blue-line);color:var(--blue-ink)}.step-badge.all-done{color:var(--green);border-color:var(--green)}.step-row{display:flex;align-items:center;gap:8px;width:calc(100% - 18px);margin:2px 0 2px 18px;padding:5px 9px;text-align:left;border:1px solid var(--line-soft);border-left:2px solid var(--line-strong);border-radius:7px;background:none;font-size:12px;color:var(--muted)}.step-row:hover{background:var(--hover-strong)}.step-row-mark{flex:0 0 auto;font-size:10px;color:var(--faint)}.step-row-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.step-row.done .step-row-title{text-decoration:line-through;color:var(--faint)}.step-row.done .step-row-mark{color:var(--green)}.steps{display:grid;gap:5px;margin-bottom:7px}.step{display:flex;align-items:center;gap:9px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--sunken)}.step-check{flex:0 0 auto;width:19px;height:19px;border-radius:5px;border:1.5px solid var(--line-strong);background:var(--panel);display:grid;place-items:center;font-size:11px;line-height:1;color:var(--on-accent)}.step-check:hover:not(:disabled){border-color:var(--blue)}.step.done .step-check{background:var(--green);border-color:var(--green)}.step-title{flex:1;min-width:0;text-align:left;border:0;background:none;padding:0;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.step-title:hover{text-decoration:underline}.step.done .step-title{text-decoration:line-through;color:var(--faint)}.step-x{flex:0 0 auto;font-size:11px}.picker-overlay{z-index:60;background:#1018287a}.picker-modal{width:460px;display:flex;flex-direction:column;max-height:min(560px,86vh)}.picker-sub{font-size:12px;line-height:1.45;color:var(--muted);margin-top:6px}.picker-search{padding:12px 18px 4px}.picker-list{flex:1;min-height:0;overflow-y:auto;padding:8px 12px 12px;display:grid;gap:4px;align-content:start}.picker-row{display:grid;gap:2px;width:100%;text-align:left;padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}.picker-row:hover{background:var(--blue-soft);border-color:var(--blue-line)}.picker-row:focus-visible{outline:2px solid var(--blue);outline-offset:1px}.picker-row-title{font-size:13px;font-weight:550}.picker-row-note{font-size:11.5px;color:var(--faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-empty{padding:22px 14px;text-align:center;font-size:12.5px;line-height:1.55;color:var(--muted)}.picker-empty b{color:var(--text)}@media (max-width: 820px){.picker-modal{width:100%;max-height:100dvh;border-radius:0}.picker-overlay{padding:0;align-items:stretch}.picker-row{padding:12px}}.step-parent-note{padding:9px 11px;border:1px solid var(--blue-line);border-radius:8px;background:var(--blue-soft);color:var(--blue-ink);font-size:12px;line-height:1.45}.task-title{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-row.scheduled .task-title{color:var(--blue-ink);font-weight:550}.task-meta{font-size:11px;color:var(--faint);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-row.scheduled .task-meta{color:var(--blue-dim)}.task-row.done .task-title{text-decoration:line-through;color:var(--faint)}.add-task{display:block;width:calc(100% - 4px);text-align:left;padding:6px 10px;margin:4px 0 2px;border:0;background:none;color:var(--faint);font-size:12px;border-radius:8px}.add-task:hover{background:var(--hover-strong);color:var(--muted)}.ext-block{flex:0 0 auto;display:flex;align-items:baseline;gap:5px;padding:2px 6px;margin-bottom:3px;border-radius:5px;border:1px dashed var(--line-strong);border-left:3px solid var(--grip);background:var(--sunken);font-size:9px;line-height:1.35;color:var(--muted);cursor:default;overflow:hidden}.ext-time{flex:0 0 auto;font-variant-numeric:tabular-nums;font-weight:600;color:var(--faint)}.ext-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-detail .ext-block{padding:9px 11px;font-size:12.5px;margin-bottom:8px;border-radius:9px}.done-toggle{display:flex;align-items:center;gap:6px;width:calc(100% - 4px);text-align:left;padding:6px 10px;margin:6px 0 2px;border:0;background:none;color:var(--faint);font-size:11.5px;font-weight:600;letter-spacing:.02em;border-radius:8px}.done-toggle:hover{background:var(--hover-strong);color:var(--muted)}.done-toggle .chevron{font-size:8px;transition:transform .12s ease;display:inline-block}.done-toggle.open .chevron{transform:rotate(90deg)}@media (prefers-reduced-motion: reduce){.done-toggle .chevron{transition:none}}.inline-input{width:100%;padding:7px 10px;margin:4px 0;border:1px solid var(--blue-line);border-radius:8px;outline:none;font-size:13px;background:var(--panel)}.inline-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #2563eb1f}.sidebar-foot{border-top:1px solid var(--line);padding:10px 12px;display:flex;gap:8px}.btn{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:7px 12px;font-size:13px;box-shadow:var(--shadow-sm)}.btn:hover{background:var(--hover)}.btn.primary{background:var(--blue);border-color:var(--blue);color:var(--on-accent)}.btn.ghost{border-color:transparent;box-shadow:none;background:none;color:var(--muted)}.btn.danger{color:var(--danger);border-color:var(--danger-line);background:var(--panel)}.btn.danger:hover{background:var(--danger-soft)}.btn.sm{padding:5px 9px;font-size:12px}.btn.wide{flex:1}.calendar{display:flex;flex-direction:column;min-width:0;min-height:0;padding:16px 18px 18px}.cal-head{display:flex;align-items:center;gap:10px;padding-bottom:14px}.cal-title{font-size:20px;font-weight:650;letter-spacing:-.02em;min-width:220px}.cal-title .year{color:var(--faint);font-weight:500}.nav-group{display:flex;gap:4px}.icon-btn{width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--line);background:var(--panel);border-radius:8px;box-shadow:var(--shadow-sm);font-size:13px;color:var(--muted)}.icon-btn:hover{background:var(--hover);color:var(--text)}.spacer{flex:1}.legend{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--faint)}.legend .swatch{width:10px;height:10px;border-radius:3px;background:var(--blue-soft);border:1px solid var(--blue-line)}.grid-wrap{flex:1;min-height:0;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.dow-row{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--line);background:var(--sunken);position:sticky;top:0;z-index:2}.dow{padding:9px 10px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--faint)}.weeks{flex:1 0 auto;display:flex;flex-direction:column}.week{flex:1 0 0;display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--line-soft)}.week:last-child{border-bottom:0}.day{border-right:1px solid var(--line-soft);padding:6px 6px 8px;display:flex;flex-direction:column;gap:3px;min-width:0;min-height:96px;transition:background .12s ease}.day:last-child{border-right:0}.day.outside{background:var(--sunken)}.day.outside .day-num{color:var(--grip)}.day.drop-target{background:var(--blue-soft);box-shadow:inset 0 0 0 2px var(--blue)}.week{position:relative}.span-spacer{flex:0 0 auto}.chip.span-bar{position:absolute;z-index:1;width:auto;justify-content:center}.chip.span-bar .chip-title{font-weight:600}.chip.span-bar.from-before{border-left-width:1px;border-left-color:var(--blue-line)!important;border-top-left-radius:0;border-bottom-left-radius:0}.chip.span-bar.into-after{border-right-width:0;border-top-right-radius:0;border-bottom-right-radius:0}.weeks.drag-active .span-bar{pointer-events:none}.multi-note{padding:9px 12px;border-radius:8px;background:var(--blue-soft);border:1px solid var(--blue-line);color:var(--blue-ink-deep);font-size:12.5px;line-height:1.4}.mini-day.blocked{opacity:.3;cursor:not-allowed}.day-num{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;padding:1px 2px 2px;font-weight:500}.day.today .day-num{background:var(--blue);color:var(--on-accent);border-radius:999px;width:22px;height:22px;display:grid;place-items:center;font-weight:650}.day-num-btn{align-self:flex-start;min-width:22px;height:22px;display:grid;place-items:center;padding:0 5px;border:0;border-radius:999px;background:none}.day-num-btn:hover{background:var(--hover-strong);color:var(--text)}.day.today .day-num-btn{padding:0}.day.today .day-num-btn:hover{background:var(--blue-hover);color:var(--on-accent)}.day-num-btn:focus-visible{outline:2px solid var(--blue);outline-offset:1px}.day-items{display:flex;flex-direction:column;gap:3px}.chip{display:flex;flex-direction:column;align-items:stretch;flex:0 0 auto;gap:0;padding:3px 6px 4px;border-radius:6px;background:var(--blue-soft);border:1px solid var(--blue-line);border-left:3px solid var(--blue);font-size:9.5px;line-height:1.2;cursor:grab;text-align:left;width:100%;overflow:hidden}.chip-project{font-size:7.5px;font-weight:700;letter-spacing:.02em;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.85}.chip-main{display:flex;align-items:center;gap:5px;min-width:0}.chip:hover{background:var(--blue-soft-strong)}.chip.dragging{opacity:.4}.chip.done{opacity:.6}.chip.done .chip-title{text-decoration:line-through}.chip.done .chip-project{text-decoration:none}.chip-time{color:var(--blue);font-weight:650;font-variant-numeric:tabular-nums;flex:0 0 auto}.chip-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--blue-ink-deep)}.avatar{flex:0 0 auto;width:16px;height:16px;border-radius:999px;display:grid;place-items:center;font-size:8.5px;font-weight:700;color:var(--on-color);letter-spacing:-.02em}.empty-hint{color:var(--faint);font-size:12px;padding:2px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#10182866;display:grid;place-items:center;padding:24px;z-index:50;animation:fade .12s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.modal{width:460px;max-width:100%;max-height:100%;overflow-y:auto;background:var(--panel);border-radius:14px;box-shadow:var(--shadow-lg);animation:pop .14s ease}@keyframes pop{0%{opacity:0;transform:translateY(6px) scale(.99)}to{opacity:1;transform:none}}.modal-head{padding:16px 18px 14px;border-bottom:1px solid var(--line)}.modal-eyebrow{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);margin-bottom:8px}.modal-head .title{display:block;width:100%;background:none;border:0;outline:none;font:inherit;font-size:17px;font-weight:600;letter-spacing:-.01em;line-height:1.3;padding:0;margin:0;resize:none;overflow:hidden;white-space:pre-wrap;word-break:break-word}.modal-body{padding:16px 18px;display:grid;grid-template-columns:minmax(0,1fr);gap:14px;align-content:start}.field{display:grid;gap:6px;min-width:0;align-content:start}.row2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.row2>*{min-width:0}label.lbl{font-size:11.5px;font-weight:600;color:var(--muted);letter-spacing:.01em}.control{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);outline:none}.control:focus{border-color:var(--blue);box-shadow:0 0 0 3px #2563eb1f}textarea.control{resize:vertical;min-height:64px}.assignees{display:flex;flex-wrap:wrap;gap:6px}.pill{display:flex;align-items:center;gap:6px;padding:5px 10px 5px 5px;border:1px solid var(--line);border-radius:999px;background:var(--panel);font-size:12.5px}.pill:hover{background:var(--hover)}.pill.on{border-color:var(--blue);background:var(--blue-soft);color:var(--blue-ink);font-weight:550}.pill.none{padding-left:10px}.status-seg{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.status-seg button{flex:1;padding:7px 8px;border:0;background:var(--panel);font-size:12.5px;color:var(--muted);border-right:1px solid var(--line)}.status-seg button:last-child{border-right:0}.status-seg button.on{background:var(--blue-soft);color:var(--blue-ink);font-weight:600}.modal-foot{padding:12px 18px 16px;border-top:1px solid var(--line);display:flex;gap:8px;align-items:center}.err{color:var(--danger);font-size:12px}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:999px;border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:var(--grip);background-clip:content-box}.map-link{display:flex;align-items:center;gap:7px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--sunken);color:var(--blue-ink);font-size:12.5px;text-decoration:none;min-height:38px}.map-link:hover{background:var(--blue-soft);border-color:var(--blue-line)}.map-link:active{background:var(--blue-soft-strong)}.map-link:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.map-link.compact{margin-top:9px;padding:6px 9px;font-size:12px;min-height:32px}.map-pin{flex:0 0 auto;display:grid;place-items:center;color:var(--blue)}.map-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:550}.map-go{flex:0 0 auto;color:var(--faint);font-size:11px}@media (max-width: 820px){.map-link{min-height:44px;font-size:13px}.map-link.compact{min-height:40px;font-size:12.5px}}.project-head{display:flex;align-items:center;gap:6px;padding:0 12px 0 0}.project-head:hover{background:var(--sunken)}.project-head[draggable=true]{cursor:grab}.project-head[draggable=true]:active{cursor:grabbing}.head-main{display:flex;align-items:center;gap:8px;flex:1;min-width:0;padding:10px 4px 10px 14px;background:none;border:0;text-align:left}.info-btn{flex:0 0 auto;width:18px;height:18px;border-radius:999px;border:1.5px solid var(--grip);background:transparent;color:var(--faint);font-size:11px;font-weight:700;font-family:Georgia,Times New Roman,serif;line-height:1;display:grid;place-items:center;padding:0;transition:all .12s ease}.info-btn:hover{border-color:var(--blue);background:var(--blue);color:var(--on-accent)}.project.is-archived .project-name{color:var(--muted)}.project.is-archived .dot{opacity:.55}.archive-shelf{border-top:1px solid var(--line);background:var(--sunken);display:flex;flex-direction:column;min-height:0}.archive-shelf.open{max-height:48%}.archive-tab{display:flex;align-items:center;gap:8px;width:100%;padding:11px 14px;background:none;border:0;text-align:left;flex:0 0 auto}.archive-tab:hover{background:var(--hover-strong)}.archive-label{flex:1;font-size:12px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}.archive-body{overflow-y:auto;min-height:0;border-top:1px solid var(--line-soft);background:var(--panel)}.tag{font-size:10px;font-weight:700;letter-spacing:.04em;padding:2px 6px;border-radius:4px;text-transform:uppercase}.archived-tag{background:var(--hover-strong);color:var(--muted)}.toggle{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none;padding:4px 8px;border-radius:7px}.toggle:hover{background:var(--line-soft)}.toggle input{accent-color:var(--blue);margin:0;cursor:pointer}.chip-steps{flex:0 0 auto;margin-left:4px;padding:0 5px;border-radius:999px;border:1px solid var(--blue-line);background:var(--panel);color:var(--blue-ink);font-size:7.5px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.6}.chip-steps.all-done{color:var(--green);border-color:var(--green)}.day-row-title .chip-steps{font-size:10.5px;margin-left:6px}.chip-group{display:flex;flex-direction:column;gap:2px}.chip.group{cursor:pointer;background:var(--panel);border-style:dashed;border-left-style:solid}.chip.group:hover{background:var(--hover-strong)}.chip.group.open{background:var(--sunken);border-bottom-left-radius:2px;border-bottom-right-radius:2px}.chip.group .chip-title{font-weight:650;color:var(--muted)}.group-caret{flex:0 0 auto;font-size:9px;color:var(--faint);margin-right:1px}.chip.nested{margin-left:10px;width:calc(100% - 10px);border-left-width:2px;padding-top:2px;padding-bottom:3px}.chip.archived{background:var(--bg);border-color:var(--line-strong);border-left-style:dashed}.chip.archived .chip-title{color:var(--muted)}.chip.archived .chip-project{color:var(--faint)!important}.chip.archived .chip-time{color:var(--faint)}.modal.wide{width:860px}.modal-body.cols{grid-template-columns:1fr 1fr;gap:24px;align-items:start}.modal-body.cols .col{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;align-content:start;min-width:0}.section{border-top:1px solid var(--line-soft);padding-top:14px;display:grid;grid-template-columns:minmax(0,1fr);gap:10px}.modal-body.cols .col>.section:first-child{border-top:0;padding-top:0}.section-title{font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--faint)}.row3{display:grid;grid-template-columns:minmax(0,1fr) 72px 110px;gap:10px}.row3>*{min-width:0}textarea.control.tall{min-height:132px}.update-compose{display:grid;gap:8px;justify-items:end}.update-compose textarea{min-height:58px}.btn:disabled{opacity:.45;cursor:not-allowed}.update-log{display:grid;gap:8px;max-height:240px;overflow-y:auto;padding-right:2px}.update{border:1px solid var(--line);border-left:3px solid var(--blue-line);border-radius:8px;padding:8px 10px;background:var(--sunken)}.update-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}.update-stamp{flex:1;font-size:11px;font-weight:600;color:var(--faint);letter-spacing:.01em}.update-text{font-size:13px;line-height:1.45;white-space:pre-wrap}.confirm-overlay{z-index:60;background:#1018287a}.modal.confirm{width:420px}.confirm-body{padding:20px 20px 16px}.confirm-title{font-size:15.5px;font-weight:650;letter-spacing:-.01em;margin-bottom:7px}.confirm-detail{font-size:13px;line-height:1.5;color:var(--muted)}.btn.danger-solid{background:var(--danger-solid);border-color:var(--danger-solid);color:var(--on-accent)}.btn.danger-solid:hover{background:var(--danger);border-color:var(--danger)}.btn.danger-solid:focus-visible{outline:2px solid var(--danger-line-strong);outline-offset:2px}.app.mobile .resizer{display:none}.app.mobile{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr;height:100dvh}.mtabs{display:flex;gap:6px;padding:10px 12px;padding-top:max(10px,env(safe-area-inset-top));background:var(--panel);border-bottom:1px solid var(--line)}.mtabs button{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--panel);font-size:14px;font-weight:550;color:var(--muted)}.mtabs button.on{background:var(--blue);border-color:var(--blue);color:var(--on-accent)}.tab-count{font-size:11px;font-weight:700;padding:1px 6px;border-radius:999px;background:var(--line-soft);color:var(--muted);font-variant-numeric:tabular-nums}.mtabs button.on .tab-count{background:#ffffff3d;color:var(--on-accent)}.mpane{min-height:0;display:flex;flex-direction:column}.mpane>*{flex:1;min-height:0}.app.mobile .sidebar{border-right:0}.app.mobile .task-row{padding:11px 10px;margin:5px 0}.app.mobile .task-title{font-size:14px;white-space:normal}.app.mobile .task-meta{font-size:12px}.app.mobile .head-main{padding:14px 4px 14px 14px}.app.mobile .info-btn{width:26px;height:26px;font-size:13px}.app.mobile .add-task{padding:10px;font-size:13px}.app.mobile .project-head{padding-right:10px}.calendar.compact{padding:12px 12px 0;overflow-y:auto}.calendar.compact .cal-head{flex-wrap:wrap;gap:8px;padding-bottom:10px}.calendar.compact .cal-title{font-size:18px;min-width:0;flex:1}.calendar.compact .icon-btn{width:36px;height:36px}.calendar.compact .btn.sm{padding:8px 12px}.calendar.compact .toggle{width:100%;justify-content:flex-start;padding:2px 0}.calendar.compact .grid-wrap{flex:0 0 auto}.calendar.compact .dow{padding:7px 0;text-align:center;font-size:10px}.calendar.compact .week{flex:0 0 auto}.calendar.compact .day{min-height:52px;padding:5px 2px 4px;align-items:center;gap:4px;background:none;border-top:0;border-bottom:0;border-left:0;font:inherit;color:inherit;cursor:pointer}.calendar.compact .day-num{font-size:13px;padding:0;width:26px;height:26px;display:grid;place-items:center;border-radius:999px}.calendar.compact .day.selected .day-num{background:var(--blue-ink-deep);color:var(--on-accent);font-weight:650}.calendar.compact .day.today.selected .day-num{background:var(--blue-ink-deep)}.dots{display:flex;align-items:center;gap:3px;height:8px}.day-dot{width:6px;height:6px;border-radius:999px;display:block}.day-more{font-size:9px;font-weight:700;color:var(--faint);line-height:1}.day-detail{padding:16px 2px calc(24px + env(safe-area-inset-bottom))}.day-detail-head{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);padding-bottom:8px}.day-detail-head>span{flex:1;min-width:0}.day-detail-head .btn{text-transform:none;letter-spacing:0;font-weight:550}.day-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:11px 12px;margin-bottom:8px;background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--blue);border-radius:10px;box-shadow:var(--shadow-sm)}.day-row:active{background:var(--hover-strong)}.day-row-body{flex:1;min-width:0}.day-row-project{font-size:10px;font-weight:700;letter-spacing:.02em;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-row-title{font-size:14px;font-weight:550;line-height:1.3}.day-row.done .day-row-title{text-decoration:line-through;color:var(--faint)}.day-row-meta{font-size:12px;color:var(--muted);margin-top:3px}@media (max-width: 820px){.overlay{padding:0;align-items:stretch}.modal,.modal.wide{width:100%;max-height:100dvh;border-radius:0;display:flex;flex-direction:column}.modal.confirm{width:calc(100% - 32px);margin:auto;border-radius:14px;max-height:none}.overlay.confirm-overlay{padding:16px;align-items:center}.modal-head{padding-top:max(16px,env(safe-area-inset-top))}.modal-body{flex:1;overflow-y:auto}.modal-body.cols{grid-template-columns:minmax(0,1fr);gap:18px}.modal-body.cols .col>.section:first-child{border-top:1px solid var(--line-soft);padding-top:14px}.modal-body.cols .col:first-child>.section:first-child{border-top:0;padding-top:0}.modal-foot{flex-wrap:wrap;padding-bottom:max(14px,env(safe-area-inset-bottom));position:sticky;bottom:0;background:var(--panel)}.modal-foot .btn{padding:7px 12px}.modal-foot .btn.sm{padding:7px 10px}.control,.inline-input,.modal-head .title,.picker-input{font-size:16px}.row3{grid-template-columns:1fr 64px 92px}.pill{padding:6px 10px 6px 5px}.status-seg button{padding:8px}.update-log{max-height:none}}.field-pop{position:relative;min-width:0}.picker-field{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);text-align:left;cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease}.picker-field:hover{border-color:var(--grip)}.picker-field.open,.picker-field:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px #2563eb1f}.picker-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-field.empty .picker-value{color:var(--faint)}.picker-input{flex:1;min-width:0;border:0;outline:none;background:none;padding:0;font:inherit;color:inherit}.picker-input::placeholder{color:var(--faint)}.picker-icon{flex:0 0 auto;color:var(--faint);display:grid;place-items:center}.picker-field.open .picker-icon{color:var(--blue)}.popover{position:fixed;z-index:70;max-width:calc(100vw - 24px);overflow-y:auto;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-md);padding:10px;animation:pop .12s ease}.quick-row{display:flex;align-items:center;gap:5px;flex-wrap:wrap;padding-bottom:9px;margin-bottom:9px;border-bottom:1px solid var(--line-soft)}.quick-label{font-size:10.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--faint);margin-right:2px}.quick{padding:5px 10px;border:1px solid var(--line);border-radius:999px;background:var(--panel);font-size:12px;font-weight:550;color:var(--muted);white-space:nowrap}.quick:hover{border-color:var(--blue);background:var(--blue-soft);color:var(--blue-ink)}.pop-foot{border-top:1px solid var(--line-soft);margin-top:9px;padding-top:8px;display:flex}.cal-pop{width:268px}.mini-head{display:flex;align-items:center;gap:4px;margin-bottom:6px}.mini-title{flex:1;text-align:center;font-size:13px;font-weight:650;letter-spacing:-.01em}.mini-nav{width:26px;height:26px;display:grid;place-items:center;border:0;background:none;border-radius:7px;color:var(--muted);font-size:14px}.mini-nav:hover{background:var(--hover-strong);color:var(--text)}.mini-dow,.mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.mini-dow span{text-align:center;font-size:10px;font-weight:700;color:var(--faint);padding-bottom:3px}.mini-day{aspect-ratio:1;display:grid;place-items:center;border:0;background:none;border-radius:7px;font-size:12.5px;color:var(--text);font-variant-numeric:tabular-nums}.mini-day:hover{background:var(--line-soft)}.mini-day.outside{color:var(--grip)}.mini-day.today{box-shadow:inset 0 0 0 1.5px var(--blue-line);font-weight:650}.mini-day.selected{background:var(--blue);color:var(--on-accent);font-weight:650;box-shadow:none}.mini-day.selected:hover{background:var(--blue-hover)}.time-pop{min-width:170px}.slot-list{max-height:208px;overflow-y:auto;display:flex;flex-direction:column;gap:1px;scroll-behavior:auto}.slot{flex:0 0 auto;text-align:left;padding:7px 10px;border:0;background:none;border-radius:7px;font-size:13px;font-variant-numeric:tabular-nums;color:var(--text)}.slot:hover{background:var(--hover-strong)}.slot.selected{background:var(--blue-soft);color:var(--blue-ink);font-weight:650}@media (max-width: 820px){.picker-field{padding:9px 10px}.cal-pop{width:min(300px,calc(100vw - 40px))}.mini-day{font-size:13px;border-radius:8px}.slot-list{max-height:44dvh}.slot{padding:9px 10px;font-size:13.5px}.quick{padding:6px 11px;font-size:12.5px}}.gate{min-height:100dvh;display:grid;place-items:center;padding:24px;background:var(--bg)}.gate-card{width:100%;max-width:380px;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-md);padding:26px 24px 24px;display:grid;gap:12px}.gate-card.quiet{max-width:260px;text-align:center;color:var(--muted);box-shadow:var(--shadow-sm);padding:18px}.gate-mark{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--blue)}.gate-card h1{margin:0;font-size:19px;font-weight:650;letter-spacing:-.01em}.gate-card p{margin:0;color:var(--muted);line-height:1.5}.gate-card code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;background:var(--hover-strong);border-radius:4px;padding:1px 5px}.gate-btn{display:flex;align-items:center;justify-content:center;gap:9px;padding:11px 14px;margin-top:4px}.gate-err{margin-top:2px}.banner{position:fixed;top:12px;left:50%;transform:translate(-50%);z-index:60;display:flex;align-items:center;gap:8px;max-width:calc(100vw - 24px);padding:8px 8px 8px 14px;background:var(--warn-soft);border:1px solid var(--warn-line);border-radius:10px;box-shadow:var(--shadow-md);font-size:12.5px;color:var(--warn-ink)}.banner span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-foot{display:flex;align-items:center;gap:8px}.whoami{display:flex;align-items:center;gap:7px;min-width:0;flex:1}.whoami-name{font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.section-note{margin-left:7px;font-size:10.5px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--faint)}.gate-btn{background:var(--panel);border-color:var(--line);color:var(--text);font-weight:550}.gate-btn:hover:not(:disabled){background:var(--hover);border-color:var(--line-strong)}.gate-btn:disabled{color:var(--faint);cursor:default}.avatars{display:inline-flex;align-items:center;flex:0 0 auto}.avatars .avatar{margin-left:-6px;border:1.5px solid var(--panel);box-shadow:none}.avatars .avatar:first-child{margin-left:0}.avatars .avatar.more{background:var(--hover-strong);color:var(--muted);font-size:9.5px}.lbl-note{font-weight:400;color:var(--faint);margin-left:5px}.title.as-text{font-size:17px;font-weight:600;letter-spacing:-.01em}.icon-only{display:inline-grid;place-items:center;padding:5px 7px}.people{display:grid;gap:6px}.person{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}.person-id{flex:1;min-width:0}.person-name{font-size:13px;font-weight:550;display:flex;align-items:center;gap:6px}.you-tag{font-size:9.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--blue-ink);background:var(--blue-soft);border-radius:999px;padding:1px 6px}.person-email{font-size:11.5px;color:var(--faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.role-select{width:auto;flex:0 0 auto;padding:6px 8px;font-size:12.5px}.role-select:disabled{color:var(--faint);background:var(--sunken);cursor:default}.cap-scroll{overflow-x:auto}.cap-table{border-collapse:collapse;width:100%;min-width:380px;font-size:12.5px}.cap-table th,.cap-table td{padding:6px 8px;border-bottom:1px solid var(--line-soft);text-align:center}.cap-table thead th{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);border-bottom-color:var(--line)}.cap-table th[scope=row]{text-align:left;font-weight:450;color:var(--text);white-space:nowrap}.cap-table thead th:first-child{text-align:left}.cap-yes{color:var(--green);font-weight:700}.cap-no{color:var(--faint)}.picker-field.disabled{background:var(--sunken);color:var(--muted);cursor:default}.picker-field.disabled .picker-icon{color:var(--faint)}.pill:disabled{opacity:.55;cursor:default}.pill:disabled:hover{background:var(--panel)}.status-seg button:disabled{color:var(--faint);cursor:default}textarea.control[readonly],input.control[readonly]{background:var(--sunken);color:var(--muted)}.modal-head .title[readonly]{color:var(--text)}.switch{flex:0 0 auto;width:38px;height:22px;padding:0;border:1px solid var(--line-strong);border-radius:999px;background:var(--hover-strong);position:relative;transition:background .14s ease,border-color .14s ease}.switch.on{background:var(--blue);border-color:var(--blue)}.switch:disabled{opacity:.5;cursor:default}.switch:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.switch-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:999px;background:var(--panel);box-shadow:var(--shadow-sm);transition:transform .14s ease}.switch.on .switch-knob{transform:translate(16px)}@media (prefers-reduced-motion: reduce){.switch,.switch-knob{transition:none}}.pref{display:flex;align-items:flex-start;gap:14px;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:var(--sunken)}.pref-text{flex:1;min-width:0}.pref-name{font-size:13px;font-weight:550;margin-bottom:3px}.pref-help{font-size:11.5px;color:var(--muted);line-height:1.45}.pref-warn{margin-top:7px;padding:7px 9px;border:1px solid var(--warn-line);border-radius:7px;background:var(--warn-soft);color:var(--warn-ink);font-size:11.5px;line-height:1.45}.lock{flex:0 0 auto;font-size:10px;line-height:1;opacity:.75}.sync-stats{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:7px;font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}.sync-stats b{color:var(--text);font-weight:650}.sync-stats .sync-bad{color:var(--danger)}.role-tag{flex:0 0 auto;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);background:var(--hover-strong);border-radius:999px;padding:3px 9px}.pane-tabs{display:flex;gap:2px;padding:8px 8px 0;border-bottom:1px solid var(--line);background:var(--panel);flex:0 0 auto}.pane-tabs button{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 10px;border:0;border-bottom:2px solid transparent;background:none;color:var(--faint);font-size:12.5px;font-weight:600;letter-spacing:-.005em;cursor:pointer;margin-bottom:-1px}.pane-tabs button:hover{color:var(--muted);background:var(--hover-strong);border-radius:8px 8px 0 0}.pane-tabs button.on{color:var(--ink);border-bottom-color:var(--todo)}.pane-count{font-size:10.5px;font-weight:700;font-variant-numeric:tabular-nums;padding:1px 5px;border-radius:999px;background:var(--todo-soft-strong);color:var(--todo-ink)}.todo-add-wrap{padding:10px 14px 4px}.todo-add{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--sunken);color:var(--ink);font:inherit;font-size:13px}.todo-add::placeholder{color:var(--faint)}.todo-add:focus{outline:none;border-color:var(--todo);background:var(--panel)}.todo-list{padding:4px 10px 8px 14px}.todo-row{display:flex;align-items:center;gap:9px;padding:7px 8px 7px 9px;margin:3px 0;border-radius:8px;border:1px solid transparent;background:var(--sunken)}.todo-row.due-today{background:var(--todo-soft);border-color:var(--todo-line)}.todo-row.due-overdue{background:var(--overdue-soft);border-color:var(--overdue-line)}.todo-row.done{opacity:.55}.todo-check{flex:0 0 auto;width:19px;height:19px;border-radius:5px;border:1.5px solid var(--line-strong);background:var(--panel);display:grid;place-items:center;font-size:11px;line-height:1;color:var(--on-accent);cursor:pointer;padding:0}.todo-check:hover{border-color:var(--todo)}.todo-row.done .todo-check{background:var(--green);border-color:var(--green)}.todo-body{flex:1;min-width:0;text-align:left;border:0;background:none;padding:0;cursor:pointer;color:inherit;font:inherit}.todo-title{font-size:13px;font-weight:550;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.todo-row.done .todo-title{text-decoration:line-through;color:var(--faint)}.todo-meta{font-size:11.5px;color:var(--faint);margin-top:2px}.todo-row.due-today .todo-meta{color:var(--todo-ink);font-weight:550}.todo-row.due-overdue .todo-meta{color:var(--overdue);font-weight:600}.todo-flag{flex:0 0 auto;display:grid;place-items:center;color:var(--todo);opacity:.85}.todo-bell{flex:0 0 auto;font-size:10px;font-weight:700;font-variant-numeric:tabular-nums;padding:1px 5px;border-radius:999px;border:1px solid var(--todo-line);color:var(--todo-ink);background:var(--todo-soft)}.todo-done-wrap{padding:2px 10px 20px 14px}.modal-eyebrow .todo-dot{background:var(--todo)}.todo-cal-row{display:flex;align-items:flex-start;gap:11px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--sunken)}.todo-cal-text{flex:1;min-width:0}.todo-cal-title{font-size:13px;font-weight:600;line-height:1.3}.todo-cal-note{font-size:12px;color:var(--faint);line-height:1.45;margin-top:3px}.todo-chip{display:flex;align-items:center;gap:5px;flex:0 0 auto;width:100%;padding:3px 6px 4px;margin-bottom:3px;border-radius:6px;background:var(--todo-soft);border:1px solid var(--todo-line);border-left:3px solid var(--todo);font-size:9.5px;line-height:1.2;text-align:left;cursor:pointer;overflow:hidden;color:var(--ink)}.todo-chip:hover{background:var(--todo-soft-strong)}.todo-chip.done{opacity:.6}.todo-chip.done .todo-chip-title{text-decoration:line-through}.todo-chip-mark{flex:0 0 auto;font-size:10px;color:var(--todo);line-height:1}.todo-chip-time{flex:0 0 auto;color:var(--todo-ink);font-weight:650;font-variant-numeric:tabular-nums}.todo-chip-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.todo-chip.compact{padding:9px 10px;margin-bottom:6px;font-size:13.5px;border-radius:9px}.legend .swatch.todo{background:var(--todo-soft-strong);border-color:var(--todo-line)}.modal.day-modal{width:580px;display:flex;flex-direction:column;overflow:hidden}.day-modal-head{display:flex;align-items:flex-start;gap:12px}.day-modal-titles{flex:1;min-width:0}.day-modal-titles .modal-eyebrow{margin-bottom:4px}.day-modal-date{font-size:19px;font-weight:650;letter-spacing:-.02em;line-height:1.25}.day-modal-summary{font-size:12.5px;color:var(--faint);margin-top:3px}.day-modal-nav{display:flex;gap:4px;flex:0 0 auto}.day-modal .modal-body{flex:1 1 auto;min-height:0;overflow-y:auto}.day-modal-body>.section:first-child{border-top:0;padding-top:0}.day-modal-list{display:grid;grid-template-columns:minmax(0,1fr);gap:6px}.day-modal .day-row{margin-bottom:0}.day-modal .day-row:hover{background:var(--hover)}.day-modal .todo-chip.compact{margin-bottom:0}.day-modal .todo-chip-title,.day-modal .ext-title{white-space:normal;overflow-wrap:anywhere}.ext-block.detailed{padding:9px 11px;margin-bottom:0;border-radius:9px;font-size:12.5px}.ext-cal{flex:0 1 auto;max-width:40%;margin-left:auto;padding-left:10px;font-size:11px;color:var(--faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-modal-empty{padding:18px 2px;text-align:center}.ctx-menu{position:fixed;z-index:80;min-width:210px;padding:5px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-md);animation:pop .1s ease}.ctx-title{padding:5px 9px 6px;font-size:11px;font-weight:600;color:var(--muted);white-space:nowrap}.ctx-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 9px;border:0;border-radius:6px;background:transparent;color:var(--text);font:inherit;font-size:13px;text-align:left;cursor:pointer}.ctx-item:hover,.ctx-item:focus-visible{background:var(--hover-strong);outline:none}.ctx-dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto}.ctx-label{flex:1}.ctx-hint{font-size:11.5px;color:var(--faint)}.ctx-sep{height:1px;margin:4px 6px;background:var(--line-soft)}.todo-row.draggable{cursor:grab}.todo-row.draggable:active{cursor:grabbing}.todo-row.dragging,.todo-chip.dragging{opacity:.4}.todo-chip[draggable=true]{cursor:grab}.todo-chip{cursor:default}.todo-chip-mark{display:grid;place-items:center;width:13px;height:13px;padding:0;border-radius:50%;border:1.5px solid var(--todo);background:var(--panel);color:var(--on-accent);font-size:8.5px;font-weight:700;cursor:pointer}.todo-chip-mark:hover{background:var(--todo-soft-strong)}.todo-chip-mark.static{cursor:default}.todo-chip.done .todo-chip-mark{background:var(--green);border-color:var(--green)}.todo-chip.compact .todo-chip-mark{width:18px;height:18px;font-size:11px}.todo-chip-open{display:flex;align-items:center;gap:5px;flex:1;min-width:0;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.todo-modal-title{display:flex;align-items:flex-start;gap:10px}.todo-modal-title .title{flex:1;min-width:0}.todo-check.big{width:22px;height:22px;margin-top:2px;border-radius:6px;font-size:13px}.todo-modal-title.done .todo-check{background:var(--green);border-color:var(--green)}.todo-modal-title.done .title{text-decoration:line-through;color:var(--muted)}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-feature-settings:"cv11","ss01";letter-spacing:-.006em}.sidebar{background:var(--sidebar-bg, var(--panel))}.sidebar-head{border-bottom-color:var(--sidebar-head-line, var(--line))}.sched-progress{display:var(--extras, none);height:4px;margin-top:10px;border-radius:999px;background:var(--hover-strong);overflow:hidden}.sched-progress i{display:block;height:100%;border-radius:999px;background:var(--blue);transition:width .3s ease}.project{background:var(--project-bg, transparent);border:1px solid var(--project-border, transparent);border-bottom-color:var(--project-border, var(--line-soft));border-radius:var(--project-radius, 0);margin:var(--project-margin, 0);box-shadow:var(--card-highlight, none)}.project-head{border-radius:var(--project-radius, 0)}.project-head:hover{background:var(--project-head-hover, var(--sunken))}.task-row{background:var(--task-row-bg, var(--sunken))}.task-row:hover{background:var(--hover-strong)}.task-row.scheduled{background:var(--task-row-sched-bg, var(--blue-soft));border-color:var(--task-row-sched-line, var(--blue-line))}.task-row.scheduled:hover{background:var(--blue-soft-strong)}.task-row.overdue .task-meta{color:var(--task-overdue, var(--blue-dim))}.overdue-tag{display:var(--extras, none);flex:0 0 auto;padding:1px 7px;border-radius:6px;font-size:10.5px;font-weight:650;color:var(--overdue);background:var(--overdue-soft);border:1px solid var(--overdue-line)}.pane-tabs{margin:var(--tabs-margin, 0);padding:var(--tabs-pad, 8px 8px 0);gap:var(--tabs-gap, 2px);border:var(--tabs-border, 0);border-bottom:var(--tabs-border, 1px solid var(--line));border-radius:var(--tabs-radius, 0);background:var(--tabs-wrap-bg, var(--panel))}.pane-tabs button{padding:var(--tab-pad, 8px 10px);border-bottom-width:var(--tab-underline, 2px);border-radius:var(--tab-radius, 0)}.pane-tabs button:hover{border-radius:var(--tab-radius, 8px 8px 0 0)}.pane-tabs button.on{background:var(--tab-on-bg, none);box-shadow:var(--tab-on-shadow, none);color:var(--tab-on-ink, var(--ink))}.btn.primary{box-shadow:var(--primary-glow, var(--shadow-sm))}.grid-wrap{background:var(--grid-bg, var(--panel))}.dow-row{background:var(--dow-bg, var(--sunken))}.day.weekend:not(.outside){background:var(--weekend-bg, transparent)}.day.today:not(.drop-target){background:var(--today-bg, transparent)}.day.today .day-num{box-shadow:var(--today-glow, none)}.day.drop-target:after{content:var(--drop-label, none);margin-top:auto;padding:6px 4px;border:1.5px dashed var(--blue-line);border-radius:8px;text-align:center;font-size:11.5px;font-weight:600;color:var(--blue-ink);pointer-events:none}.chip{background:color-mix(in srgb,var(--pc, transparent) var(--chip-tint, 0%),var(--chip-bg, var(--blue-soft)));border-color:var(--chip-line, var(--blue-line));padding:var(--chip-pad, 3px 6px 4px);border-radius:var(--chip-radius, 6px);box-shadow:var(--chip-shadow, none);transition:background .12s ease,border-color .12s ease}.chip:hover{background:color-mix(in srgb,var(--pc, transparent) var(--chip-tint-hover, 0%),var(--chip-hover-bg, var(--blue-soft-strong)));border-color:var(--chip-hover-line, var(--blue-line))}.chip.span-bar{padding-top:3px;padding-bottom:4px}.chip-title{color:var(--chip-ink, var(--blue-ink-deep))}.chip-time{color:var(--chip-time, var(--blue))}.chip-progress{display:var(--extras-flex, none);gap:3px;margin-top:5px}.chip-progress i{flex:1;height:3px;border-radius:2px;background:var(--line-strong)}.chip-progress i.on{background:var(--pc, var(--blue))}.todo-chip{border-style:var(--todo-chip-line, solid);border-left-style:solid;border-radius:var(--chip-radius, 6px)}.btn{background:var(--btn-bg);border-color:var(--line-strong);border-radius:9px;font-weight:550;box-shadow:var(--shadow-sm);transition:background .12s ease,border-color .12s ease,box-shadow .12s ease}.btn:hover{background:var(--hover);border-color:var(--line-strong)}.btn.primary{background:var(--blue);border-color:transparent;color:var(--on-accent);font-weight:600}.btn.primary:hover{background:var(--blue-hover)}.btn.ghost{background:none;border-color:transparent;box-shadow:none}.btn.ghost:hover{background:var(--hover-strong)}.btn.danger{background:var(--btn-bg)}.btn.danger-solid{box-shadow:0 4px 12px -4px #e0362a8c}.btn:focus-visible,.icon-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.icon-btn{background:var(--btn-bg);border-color:var(--line-strong);border-radius:9px;box-shadow:var(--shadow-sm)}.cal-head{padding-bottom:16px}.cal-title{font-size:22px;font-weight:700;letter-spacing:-.025em}.grid-wrap{border-radius:14px;border-color:var(--line);box-shadow:var(--card-highlight)}.dow{padding:10px 12px;font-size:10.5px;letter-spacing:.08em}.day-num-btn{font-weight:600}.legend .swatch{border-radius:4px}.overlay,.confirm-overlay,.picker-overlay{background:var(--overlay);backdrop-filter:blur(6px) saturate(120%);-webkit-backdrop-filter:blur(6px) saturate(120%)}.modal{border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-lg);animation:pop .18s cubic-bezier(.2,.9,.3,1.1)}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}.modal-head{padding:20px 22px 16px;border-bottom-color:var(--line-soft)}.modal-eyebrow{font-size:10.5px;letter-spacing:.08em;font-weight:650;margin-bottom:10px}.modal-head .title{font-size:19px;font-weight:650;letter-spacing:-.02em}.modal-body{padding:18px 22px 20px;gap:16px}.modal-foot{padding:14px 22px;border-top-color:var(--line-soft);background:var(--foot-bg);position:sticky;bottom:0}.section{border-top-color:var(--line-soft);padding-top:16px;gap:12px}.section-title{font-size:10.5px;letter-spacing:.08em;font-weight:650}label.lbl{font-size:12px;font-weight:600;color:var(--muted);letter-spacing:0}.control,.picker-field,.todo-add,.inline-input{background:var(--control-bg);border:1px solid var(--control-line);border-radius:10px;transition:border-color .12s ease,box-shadow .12s ease,background .12s ease}.control,.picker-field{padding:9px 12px}.control:hover,.picker-field:hover{border-color:var(--grip)}.control:focus,.inline-input:focus,.todo-add:focus,.picker-field.open,.picker-field:focus-within{border-color:var(--blue);box-shadow:var(--focus-ring);background:var(--control-bg)}.todo-add:focus{border-color:var(--todo);box-shadow:0 0 0 3px var(--todo-soft-strong)}.control::placeholder,.inline-input::placeholder{color:var(--faint)}.role-select:disabled{background:var(--sunken)}.pill{background:var(--btn-bg);border-color:var(--line-strong);padding:5px 12px 5px 5px;font-weight:500;transition:background .12s ease,border-color .12s ease}.pill.none{padding-left:12px}.pill.on{background:var(--blue-soft);border-color:var(--blue-line);color:var(--blue-ink);box-shadow:inset 0 0 0 1px var(--blue-line)}.status-seg{gap:3px;padding:3px;border:1px solid var(--line-soft);border-radius:11px;background:var(--tabs-wrap-bg)}.status-seg button{border:0;border-radius:8px;background:none;font-weight:550;transition:background .12s ease,color .12s ease}.status-seg button:hover{color:var(--text)}.status-seg button.on{background:var(--tab-on-bg);box-shadow:var(--tab-on-shadow);color:var(--blue-ink);font-weight:650}.switch{background:var(--hover-strong);border-color:var(--line-strong)}.switch.on{background:var(--blue);border-color:transparent;box-shadow:0 0 10px -2px #2f6bff99}.switch-knob{background:#fff;box-shadow:0 1px 3px #0000004d}.step-check{border-radius:6px}.popover,.ctx-menu{border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg)}.popover{padding:12px}.ctx-menu{padding:6px}.ctx-item{border-radius:8px}.ctx-title{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}.mini-day{border-radius:8px}.mini-day.selected{box-shadow:var(--today-glow)}.quick{border-radius:8px}.picker-row{border-radius:10px}.todo-row{background:transparent;border-radius:9px}.todo-row:hover{background:var(--hover-strong)}.todo-check{border-radius:6px}.todo-list{padding:4px 10px 8px}.todo-add-wrap{padding:10px 12px 4px}.day-row,.update{border-radius:10px}.archive-tab{padding-top:12px;padding-bottom:12px}.banner{border-radius:12px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.tag,.role-tag{border-radius:6px}.avatars .avatar{box-shadow:0 0 0 2px var(--panel)}.map-link{border-radius:10px}.gate{background:var(--gate-glow),var(--bg)}.gate-card{max-width:400px;border-radius:20px;padding:32px 28px 28px;gap:14px;box-shadow:var(--shadow-lg)}.gate-mark{display:flex;align-items:center;gap:10px;color:var(--text);font-size:13px;letter-spacing:0;text-transform:none;font-weight:650}.gate-mark:before{content:"▲";width:28px;height:28px;display:grid;place-items:center;border-radius:8px;font-size:12px;color:#fff;background:linear-gradient(135deg,#4f9dff,#7c5cff);box-shadow:0 4px 14px -4px #4f9dffb3}.gate-card h1{font-size:22px;font-weight:700;letter-spacing:-.02em}.gate-btn{border-radius:11px;padding:12px 14px}.mtabs{background:var(--sidebar-bg);gap:4px}.mtabs button{border-radius:10px;background:var(--btn-bg);border-color:var(--line)}.mtabs button.on{background:var(--blue);border-color:transparent;box-shadow:var(--primary-glow)}.app.mobile .project{margin:0 8px 10px}.calendar.compact .day.selected .day-num{box-shadow:var(--today-glow)}@media (max-width: 820px){.mtabs{padding:6px 10px;padding-top:max(6px,env(safe-area-inset-top))}.mtabs button{padding:6px 10px;font-size:13px;border-radius:8px}.tab-count{font-size:10px;padding:0 5px}.calendar.compact .icon-btn{width:30px;height:30px}.calendar.compact .day{min-height:40px;padding:3px 2px;gap:2px}.calendar.compact .day-num{font-size:12px;width:22px;height:22px}.day-dot{width:5px;height:5px}.day-detail{padding:10px 2px calc(16px + env(safe-area-inset-bottom))}.day-detail-head{font-size:11px;padding-bottom:6px}.day-detail-head .btn{padding:5px 10px;font-size:12px}.day-row{padding:7px 10px;margin-bottom:5px;gap:8px;border-radius:8px}.day-row-project{font-size:9.5px;margin-bottom:1px}.day-row-title{font-size:13px;line-height:1.25}.day-row-meta{font-size:11px;margin-top:1px}.app.mobile .task-row{padding:7px 8px;margin:3px 0}.app.mobile .task-title{font-size:13px}.app.mobile .task-meta{font-size:11px}.app.mobile .add-task{padding:7px 10px;font-size:12px}.app.mobile .project{margin:0 6px 4px}.app.mobile .pane-tabs{padding:4px 6px 0}.app.mobile .pane-tabs button{padding:5px 8px;font-size:12px}.app.mobile .sidebar-head{padding:10px 12px 8px}.app.mobile .sidebar-head h1{font-size:14px}.app.mobile .sidebar-head p{font-size:11px;margin-top:2px}.app.mobile .head-main{padding:7px 4px 7px 10px;gap:6px}.app.mobile .project-name{font-size:12.5px}.app.mobile .info-btn{width:20px;height:20px;font-size:11px}.app.mobile .project-count{font-size:10.5px}.app.mobile .archive-tab{padding:7px 12px}.modal-head{padding-top:calc(env(safe-area-inset-top) + 12px)}.modal-body.cols>.col{min-width:0}.app.mobile .sidebar-foot{padding:6px 10px;padding-bottom:max(6px,env(safe-area-inset-bottom));font-size:12px}}.day-row{cursor:pointer}.day-row-addr{display:inline-flex;align-items:center;gap:4px;max-width:100%;margin-top:4px;font-size:11px;color:var(--blue-ink);text-decoration:none}.day-row-addr span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-row-addr:active{opacity:.7}.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:6px}.thumb{aspect-ratio:1;border:1px solid var(--line);border-radius:8px;overflow:hidden;padding:0;background:var(--sunken);display:grid;place-items:center;cursor:zoom-in}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.thumb:hover{border-color:var(--line-strong)}.thumb-doc{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.04em}.spinner{width:18px;height:18px;border-radius:50%;border:2px solid var(--line-strong);border-top-color:var(--blue);animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.file-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.modal-body.cols>.files-section{grid-column:1 / -1;border-top:0;padding-top:0}.files-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}.file-tabs{display:inline-flex;background:var(--sunken);border:1px solid var(--line);border-radius:9px;padding:2px;gap:2px}.file-tabs button{border:0;background:none;border-radius:7px;padding:5px 11px;font-size:12.5px;font-weight:550;color:var(--muted);display:inline-flex;align-items:center;gap:6px}.file-tabs button.on{background:var(--panel);color:var(--text);box-shadow:var(--shadow-sm)}.file-tab-count{font-size:10.5px;font-weight:700;min-width:17px;padding:1px 5px;border-radius:999px;background:var(--blue-soft);color:var(--blue-ink)}.doc-list{display:grid;gap:4px;grid-template-columns:minmax(0,1fr)}.doc-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:10px;padding:6px 8px;border:1px solid var(--line);border-radius:9px;background:var(--panel);text-align:left;font-size:13px;color:var(--text)}.doc-row:hover{background:var(--hover)}.doc-row.uploading{display:flex;color:var(--muted)}.doc-icon{width:34px;height:34px;border-radius:6px;background:var(--danger-soft);color:var(--danger);font-size:9.5px;font-weight:800;letter-spacing:.03em;display:grid;place-items:center;object-fit:cover}.doc-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:550}.doc-date{font-size:11.5px;color:var(--faint);white-space:nowrap}.viewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:#05070c;color:#e7eaf0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);animation:fade .12s ease}.viewer-bar{display:flex;align-items:center;gap:6px;padding:calc(env(safe-area-inset-top) + 8px) 10px 8px;background:#05070cd9;z-index:2}.viewer-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:600}.viewer-count{margin-left:8px;color:#8b93a7;font-weight:500;font-size:12px}.viewer-btn{border:0;background:#ffffff14;color:#e7eaf0;border-radius:8px;min-width:36px;height:36px;font-size:16px;display:grid;place-items:center}.viewer-btn.text{padding:0 12px;font-size:13px;font-weight:600}.viewer-btn.danger{color:#ff8a80}.viewer-btn:hover{background:#ffffff29}.viewer-btn:disabled{opacity:.35}.viewer-stage{position:relative;overflow:hidden}.zoom-stage{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;touch-action:none;overflow:hidden;cursor:grab}.zoom-img{grid-area:1 / 1;max-width:100%;max-height:100%;object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;will-change:transform}.zoom-img.placeholder{width:100%;height:100%;filter:blur(8px);opacity:.6}.viewer-nav{position:absolute;top:50%;transform:translateY(-50%);border:0;width:44px;height:64px;border-radius:10px;background:#ffffff14;color:#fff;font-size:30px;line-height:1}.viewer-nav.prev{left:10px}.viewer-nav.next{right:10px}.viewer-nav:hover{background:#ffffff2e}.viewer-other,.viewer-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;justify-items:center;gap:12px;text-align:center;padding:24px;color:#8b93a7}.viewer-other-name{color:#e7eaf0;font-weight:600;word-break:break-word}.pdf-wrap{position:absolute;top:0;right:0;bottom:0;left:0}.pdf-scroller{position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto;padding:8px;display:grid;justify-content:start;align-content:start;gap:8px;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch}.pdf-page{background:#fff;box-shadow:0 2px 10px #00000080}.pdf-page canvas{width:100%;height:100%;display:block}.pdf-zoom{position:absolute;right:12px;bottom:calc(env(safe-area-inset-bottom) + 12px);display:flex;gap:4px;padding:4px;border-radius:10px;background:#05070ccc}@media (max-width: 820px){.viewer-nav{display:none}.thumbs{grid-template-columns:repeat(auto-fill,minmax(68px,1fr))}.file-tabs button{padding:5px 9px}}.todo-bell.alarm{color:#fff;background:var(--danger-solid)}.alarm-row{margin-top:10px}.link-btn{border:0;padding:0;background:none;color:var(--blue-ink);font:inherit;text-decoration:underline;cursor:pointer}.alarm-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:grid;place-items:center;padding:max(24px,env(safe-area-inset-top)) 16px max(24px,env(safe-area-inset-bottom));background:#080d1aeb;animation:alarm-pulse 1.4s ease-in-out infinite}@keyframes alarm-pulse{0%,to{background:#080d1aeb}50%{background:#251e46f2}}@media (prefers-reduced-motion: reduce){.alarm-screen{animation:none}}.alarm-card{width:min(420px,100%);text-align:center;color:#fff}.alarm-clock{font-size:64px;font-weight:300;font-variant-numeric:tabular-nums;line-height:1}.alarm-kind{margin-top:28px;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#60a5fa}.alarm-title{margin-top:8px;font-size:28px;font-weight:700;overflow-wrap:anywhere}.alarm-body{margin-top:8px;font-size:16px;color:#94a3b8}.alarm-actions{display:grid;gap:12px;margin-top:40px}.alarm-btn{height:64px;border:0;border-radius:16px;background:#1e293b;color:#fff;font:inherit;font-size:19px;font-weight:700;cursor:pointer}.alarm-btn.primary{background:#2563eb}.alarm-btn:focus-visible{outline:3px solid #93c5fd;outline-offset:2px}.alarm-open{margin-top:18px;border:0;background:none;color:#94a3b8;font:inherit;font-size:15px;cursor:pointer}
