:root{--font-ui:"IBM Plex Sans",system-ui,-apple-system,Segoe UI,Roboto,Inter,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",Arial,sans-serif;--bg:#f6f7f9;--text:#171717;--muted:#7a7a7a;--hint:#c2c2c2;--hover:#ededed;--hover-strong:#e2e5eb;--icon:#171717;--surface:#ffffff;--toast-bg:rgba(255,255,255,.92);--toast-border:#e5e5e5;--shadow:0 6px 18px rgba(0,0,0,.10);--sidebar-bg:#ffffff;--sidebar-shadow:0 8px 24px rgba(0,0,0,.10);--radius:14px;--cal-grid:#e9e9e9;--today-bg:#dff3e3;--today-text:#1f6f43;--cal-today:var(--today-bg);--cal-week-bg:#f3f3f3;--sel-bg:#e9eef9;--context-menu-bg:var(--surface);--context-menu-border:var(--toast-border);--context-menu-shadow:var(--shadow);--context-menu-radius:10px;--context-menu-padding:4px;--accent:#3a82f6;--accent-soft:rgba(58,130,246,.12);--accent-soft-strong:rgba(58,130,246,.22);--accent-border:rgba(58,130,246,.35);--accent-shadow:rgba(58,130,246,.18);--success:#2f9a5d;--success-soft:rgba(47,154,93,.18);--success-border:rgba(47,154,93,.42);--success-strong:#1f6f43;--confetti-1:#2ecc71;--confetti-2:#3498db;--confetti-3:#9b59b6;--confetti-4:#f1c40f;--confetti-5:#e67e22;--confetti-6:#e74c3c;--timer-accent:#e45b4d;--timer-glow:rgba(228,91,77,.18);--timer-glow-strong:rgba(228,91,77,.26);--timer-border:rgba(228,91,77,.42);--timer-shadow:rgba(228,91,77,.32);--sidebar-width:260px;--sidebar-min-width:220px;--cal-weeknum-width:32px;--year-day-height:14px;--year-weekend-bg:#fff2f1;--year-weekend-text:#d86a60;--year-disabled-bg:#f0f2f5;--year-grid-border:#e5e7eb;--inheritance-line:#8b949e}
:root{--radius-control:10px;--radius-card:14px;--radius-panel:16px}
:root{--radius-xs:var(--radius-control);--radius-sm:var(--radius-control);--radius-md:var(--radius-card);--radius-lg:var(--radius-panel)}
body.theme-dark{--bg:#0f1115;--text:#e7e7e7;--muted:#a5a5a5;--hint:#4b4f57;--hover:#1a1d23;--hover-strong:#22262d;--icon:#e7e7e7;--surface:transparent;--toast-bg:rgba(22,24,29,.95);--toast-border:#2a2e36;--shadow:0 10px 24px rgba(0,0,0,.35);--sidebar-bg:#171b22;--sidebar-shadow:none;--radius:16px;--cal-grid:#2a2e36;--today-bg:rgba(60,155,90,.32);--today-text:#8de5a2;--cal-today:var(--today-bg);--cal-week-bg:#1c2129;--sel-bg:#1b2433;--context-menu-bg:#171b22;--accent:#7da6ff;--accent-soft:rgba(61,117,255,.16);--accent-soft-strong:rgba(61,117,255,.28);--accent-border:rgba(125,166,255,.36);--accent-shadow:rgba(28,58,128,.55);--success:#4cb07e;--success-soft:rgba(76,176,126,.22);--success-border:rgba(76,176,126,.45);--success-strong:#a3f3c1;--confetti-1:#2ecc71;--confetti-2:#5dade2;--confetti-3:#bb8fce;--confetti-4:#f7dc6f;--confetti-5:#f5b041;--confetti-6:#ec7063;--timer-accent:#ff8678;--timer-glow:rgba(255,104,89,.16);--timer-glow-strong:rgba(255,104,89,.26);--timer-border:rgba(255,104,89,.42);--timer-shadow:rgba(255,104,89,.38);--year-weekend-bg:rgba(255,118,118,.08);--year-weekend-text:#ffb0aa;--year-disabled-bg:#1a1d23;--year-grid-border:#2a2e36;--inheritance-line:#9ea7b2}
body[data-theme="light"][data-palette="garden"]{--bg:#f4f8f3;--text:#17211b;--muted:#6d7b70;--hint:#b8c6bb;--hover:#e8f0e8;--hover-strong:#dbe7dd;--surface:#ffffff;--toast-bg:rgba(255,255,255,.94);--toast-border:#dfe8e1;--shadow:0 8px 20px rgba(25,68,45,.10);--sidebar-bg:#fbfdfb;--sidebar-shadow:0 10px 26px rgba(25,68,45,.12);--cal-grid:#dfe8e1;--today-bg:#d8f0df;--today-text:#1f6f48;--cal-week-bg:#e8f0e8;--sel-bg:#dfeee9;--accent:#2f8f69;--accent-soft:rgba(47,143,105,.13);--accent-soft-strong:rgba(47,143,105,.24);--accent-border:rgba(47,143,105,.36);--accent-shadow:rgba(47,143,105,.18);--success:#2f8f69;--success-soft:rgba(47,143,105,.18);--success-border:rgba(47,143,105,.42);--success-strong:#1f6f48;--confetti-1:#2f8f69;--confetti-2:#43a9a1;--confetti-3:#8fcf7a;--confetti-4:#f0c85a;--confetti-5:#d97855;--confetti-6:#6f9fe8;--timer-accent:#c85c46;--timer-glow:rgba(200,92,70,.16);--timer-glow-strong:rgba(200,92,70,.26);--timer-border:rgba(200,92,70,.42);--timer-shadow:rgba(200,92,70,.25);--year-weekend-bg:#edf6ef;--year-weekend-text:#317a59;--year-disabled-bg:#edf2ee;--year-grid-border:#dfe8e1;--inheritance-line:#6f8a78}
body[data-theme="light"][data-palette="berry"]{--bg:#f8f3f6;--text:#26181f;--muted:#806b75;--hint:#cab7c1;--hover:#f0e6ec;--hover-strong:#e6d7df;--surface:#ffffff;--toast-bg:rgba(255,255,255,.94);--toast-border:#eadde4;--shadow:0 8px 20px rgba(94,40,63,.11);--sidebar-bg:#fffafd;--sidebar-shadow:0 10px 26px rgba(94,40,63,.12);--cal-grid:#eadde4;--today-bg:#dff0ea;--today-text:#247052;--cal-week-bg:#f0e6ec;--sel-bg:#f3dfe8;--accent:#b64a75;--accent-soft:rgba(182,74,117,.13);--accent-soft-strong:rgba(182,74,117,.24);--accent-border:rgba(182,74,117,.36);--accent-shadow:rgba(182,74,117,.18);--success:#2f8f69;--success-soft:rgba(47,143,105,.18);--success-border:rgba(47,143,105,.42);--success-strong:#247052;--confetti-1:#b64a75;--confetti-2:#e06a8c;--confetti-3:#4fa6a0;--confetti-4:#f0c75a;--confetti-5:#6f9fe8;--confetti-6:#d97855;--timer-accent:#d85d4a;--timer-glow:rgba(216,93,74,.16);--timer-glow-strong:rgba(216,93,74,.26);--timer-border:rgba(216,93,74,.42);--timer-shadow:rgba(216,93,74,.25);--year-weekend-bg:#f7e7ee;--year-weekend-text:#a84067;--year-disabled-bg:#f1e9ed;--year-grid-border:#eadde4;--inheritance-line:#9a7888}
body.theme-dark[data-palette="graphite"]{--bg:#101312;--text:#e5ece8;--muted:#9aa8a1;--hint:#46534d;--hover:#19201d;--hover-strong:#222b27;--icon:#e5ece8;--surface:#141917;--toast-bg:rgba(20,25,23,.95);--toast-border:#2d3833;--shadow:0 10px 24px rgba(0,0,0,.38);--sidebar-bg:#171d1a;--cal-grid:#2d3833;--today-bg:rgba(55,151,107,.28);--today-text:#98e2bd;--cal-week-bg:#1d2622;--sel-bg:#1e302b;--context-menu-bg:#171d1a;--accent:#67c39b;--accent-soft:rgba(103,195,155,.16);--accent-soft-strong:rgba(103,195,155,.28);--accent-border:rgba(103,195,155,.38);--accent-shadow:rgba(34,105,75,.52);--success:#67c39b;--success-soft:rgba(103,195,155,.22);--success-border:rgba(103,195,155,.45);--success-strong:#b2f2cf;--confetti-1:#67c39b;--confetti-2:#58c7d5;--confetti-3:#a7d86c;--confetti-4:#f0cf66;--confetti-5:#e58a62;--confetti-6:#78a8f0;--timer-accent:#ff947d;--timer-glow:rgba(255,148,125,.16);--timer-glow-strong:rgba(255,148,125,.26);--timer-border:rgba(255,148,125,.42);--timer-shadow:rgba(255,148,125,.36);--year-weekend-bg:rgba(103,195,155,.08);--year-weekend-text:#99d8b9;--year-disabled-bg:#19201d;--year-grid-border:#2d3833;--inheritance-line:#91a29a}
body.theme-dark[data-palette="ember"]{--bg:#151111;--text:#f0e8e2;--muted:#b0a19a;--hint:#5a4944;--hover:#211a18;--hover-strong:#2d231f;--icon:#f0e8e2;--surface:#1a1413;--toast-bg:rgba(26,20,19,.95);--toast-border:#3b2d29;--shadow:0 10px 24px rgba(0,0,0,.42);--sidebar-bg:#1e1715;--cal-grid:#3b2d29;--today-bg:rgba(76,176,126,.22);--today-text:#a3f3c1;--cal-week-bg:#261d1a;--sel-bg:#34231e;--context-menu-bg:#1e1715;--accent:#e29b69;--accent-soft:rgba(226,155,105,.15);--accent-soft-strong:rgba(226,155,105,.27);--accent-border:rgba(226,155,105,.38);--accent-shadow:rgba(122,68,35,.55);--success:#67c39b;--success-soft:rgba(103,195,155,.21);--success-border:rgba(103,195,155,.43);--success-strong:#b2f2cf;--confetti-1:#e29b69;--confetti-2:#e86f8a;--confetti-3:#67c39b;--confetti-4:#f0cf66;--confetti-5:#7eb5e8;--confetti-6:#c58be0;--timer-accent:#ff7f6f;--timer-glow:rgba(255,127,111,.16);--timer-glow-strong:rgba(255,127,111,.26);--timer-border:rgba(255,127,111,.42);--timer-shadow:rgba(255,127,111,.36);--year-weekend-bg:rgba(226,155,105,.08);--year-weekend-text:#edb48d;--year-disabled-bg:#211a18;--year-grid-border:#3b2d29;--inheritance-line:#aa958b}
body.theme-dark[data-palette="radar"]{--bg:#0b1118;--text:#f3f0f4;--muted:#a99faa;--hint:#514657;--hover:#1b1624;--hover-strong:#281d31;--icon:#f3f0f4;--surface:#12101a;--toast-bg:rgba(18,16,26,.96);--toast-border:#382b43;--shadow:0 18px 44px rgba(0,0,0,.48);--sidebar-bg:#181421;--cal-grid:#382b43;--today-bg:rgba(255,214,0,.12);--today-text:#ffe56b;--cal-week-bg:#1e1828;--sel-bg:rgba(255,60,120,.18);--context-menu-bg:#181421;--accent:#ff3c78;--accent-soft:rgba(255,60,120,.14);--accent-soft-strong:rgba(255,60,120,.26);--accent-border:rgba(255,60,120,.46);--accent-shadow:rgba(255,60,120,.34);--success:#ffd600;--success-soft:rgba(255,214,0,.14);--success-border:rgba(255,214,0,.40);--success-strong:#fff09a;--confetti-1:#ff3c78;--confetti-2:#ffd600;--confetti-3:#00e5ff;--confetti-4:#a6ff00;--confetti-5:#f3f0f4;--confetti-6:#8f7dff;--timer-accent:#ffd600;--timer-glow:rgba(255,214,0,.13);--timer-glow-strong:rgba(255,214,0,.23);--timer-border:rgba(255,214,0,.44);--timer-shadow:rgba(255,214,0,.28);--year-weekend-bg:rgba(255,60,120,.08);--year-weekend-text:#ff9abc;--year-disabled-bg:#17131f;--year-grid-border:#382b43;--inheritance-line:#ffd600}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:15px;line-height:1.45;min-height:100vh;display:grid;grid-template-columns:var(--sidebar-width) 1fr;gap:16px;box-sizing:border-box;padding:16px;align-items:start;overflow-x:hidden}
code, .mono{font-family:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace}
.sidebar{display:flex;flex-direction:column;background:var(--sidebar-bg);border-radius:var(--radius);box-shadow:var(--sidebar-shadow);position:sticky;top:16px;height:calc(100vh - 32px);align-self:start;box-sizing:border-box;overflow:hidden;width:var(--sidebar-width);min-width:var(--sidebar-min-width);max-width:30vw;--cal-cell-size:clamp(26px,3.4vh,32px)}
.sidebar-content{display:flex;flex-direction:column;gap:6px;padding:12px 12px 6px;flex:1 1 0;min-height:0;box-sizing:border-box;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:none;-ms-overflow-style:none}
.sidebar-content::-webkit-scrollbar{width:0;height:0;display:none}
.sidebar-content::-webkit-scrollbar-thumb{background:transparent}
.sidebar-content::-webkit-scrollbar-track{background:transparent}
.sidebar-resizer{position:absolute;top:0;right:-6px;width:12px;height:100%;cursor:ew-resize;touch-action:none;display:none}
body.desktop .sidebar-resizer{display:block}
body.sidebar-resizing{cursor:ew-resize}
.sidebar h2{margin:2px 6px 6px;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
.nav{display:flex;flex-direction:column;gap:6px}
.nav-btn{appearance:none;border:none;background:transparent;color:var(--text);padding:8px 10px;text-align:left;cursor:pointer;border-radius:var(--radius-sm);transition:background .12s ease,color .12s ease,transform .08s ease;font-size:16px;font-weight:700}
.nav-btn:hover,.nav-btn.is-active{background:var(--hover-strong)}
.nav-btn:active{transform:translateY(1px)}
.sidebar-bottom{display:flex;flex-direction:column;gap:6px;margin-top:auto;padding-top:18px;flex:0 0 auto;min-width:0}
.calendar{margin-top:6px;margin-bottom:0;border-radius:var(--radius-md);overflow:hidden;width:100%;min-width:0;flex:0 0 auto}
.cal-header{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:6px;padding:6px 4px 8px}
.cal-title{font-size:13px;font-weight:700;justify-self:center}
.cal-ctrls{display:flex;align-items:center;gap:6px;justify-self:end}
.cal-arrow,.cal-today,.cal-collapse{width:28px;height:28px;border-radius:999px;border:1px solid var(--hint);background:transparent;display:grid;place-items:center;cursor:pointer;color:var(--icon)}
.cal-arrow:hover,.cal-today:hover,.cal-collapse:hover{background:var(--hover)}
.cal-today::before{content:"○";font-size:14px;line-height:1}
.cal-legend{display:grid;grid-template-columns:var(--cal-weeknum-width) repeat(7,minmax(0,1fr));gap:2px;padding:4px 2px;color:var(--muted);font-size:11px;min-width:0}
.cal-legend div{padding:2px 0;text-align:center}
.cal-viewport{overflow:hidden;position:relative;height:auto;min-height:calc(5*var(--cal-cell-size) + 16px)}
.calendar .cal-viewport{display:flex;flex-direction:column;justify-content:flex-end}
.cal-track{display:flex;transition:transform .24s ease;will-change:transform}
.calendar .cal-track{align-items:flex-end}
.cal-month{min-width:100%;display:flex;flex-direction:column;justify-content:flex-end}
.cal-grid{display:flex;flex-direction:column;gap:2px;padding:0 2px 2px;min-width:0}
.cal-week{display:grid;grid-template-columns:var(--cal-weeknum-width) repeat(7,minmax(0,1fr));gap:2px;min-width:0}
.cal-weeknum{background:var(--cal-week-bg);color:var(--muted);font-size:11px;user-select:none;border-radius:var(--radius-xs);display:flex;align-items:center;justify-content:center;height:var(--cal-cell-size);min-width:0;padding:0 2px;box-sizing:border-box}
.cal-day{position:relative;display:flex;align-items:center;justify-content:center;height:var(--cal-cell-size);border-radius:var(--radius-sm);user-select:none}
.cal-day.is-out{opacity:.35}
.cal-day.is-today{background:var(--today-bg);color:var(--today-text);font-weight:700}
.cal-day:hover{background:var(--hover)}
.calendar.is-collapsed .cal-legend{display:none}
.calendar.is-collapsed .cal-viewport{height:calc(var(--cal-cell-size) + 8px);min-height:calc(var(--cal-cell-size) + 8px)}
.calendar.is-collapsed .cal-week{display:none}
.calendar.is-collapsed .cal-week.is-active{display:grid}
.yearplan-access{margin:0 6px 0;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.yearplan-btn{width:100%;margin:0}
.graph-view{display:flex;flex-direction:column;gap:14px;padding:6px}
.graph-view-header{display:flex;align-items:center;justify-content:space-between;gap:10px}
.graph-view-controls{display:flex;align-items:center;gap:8px}
.graph-view-month{font-weight:800;font-size:18px;min-width:170px;text-align:center}
.graph-workdays{margin-left:auto;text-align:right;font-size:13px;font-weight:700;color:var(--muted);min-width:86px}
.graph-columns{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;align-items:start}
.graph-column{background:var(--surface);border:1px solid var(--toast-border);border-radius:var(--radius-md);padding:8px;display:flex;flex-direction:column;gap:8px;min-height:320px}
.graph-column-title{font-size:13px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;padding:2px 4px}
.graph-day-list{display:flex;flex-direction:column;gap:8px}
.graph-day-card{position:relative;overflow:hidden;border:1px solid var(--toast-border);border-radius:var(--radius-sm);background:var(--hover);min-height:96px}
.graph-day-progress{position:absolute;left:0;top:0;bottom:0;width:var(--graph-progress,0%);background:var(--graph-progress-color,var(--accent-soft));pointer-events:none;transition:width .2s ease,background-color .2s ease}
.graph-day-card.is-low{--graph-progress-color:color-mix(in srgb,var(--accent) 14%,transparent)}
.graph-day-card.is-mid{--graph-progress-color:color-mix(in srgb,var(--accent) 26%,transparent)}
.graph-day-card.is-high{--graph-progress-color:color-mix(in srgb,var(--accent) 68%,#ffffff 32%);border-color:color-mix(in srgb,var(--accent) 52%,#ffffff 48%)}
.graph-day-card.is-hit{--graph-progress-color:color-mix(in srgb,var(--accent) 82%,#1a1a1a 18%);border-color:color-mix(in srgb,var(--accent) 68%,#1a1a1a 32%)}
.graph-day-content{position:relative;z-index:1;padding:8px;display:flex;flex-direction:column;gap:4px}
.graph-day-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.graph-day-card.is-today{border-color:var(--accent-border);box-shadow:0 0 0 2px var(--accent-soft)}
.graph-day-card.is-hit.is-today{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 24%,transparent)}
.graph-day-card.is-high .graph-day-date,.graph-day-card.is-high .graph-day-metric,.graph-day-card.is-high .graph-day-percent{color:#f2f7ff}
.graph-day-card.is-high .graph-day-metric{font-weight:600}
.graph-day-card.is-hit .graph-day-date,.graph-day-card.is-hit .graph-day-metric,.graph-day-card.is-hit .graph-day-percent{color:#f5fff8}
.graph-day-card.is-hit .graph-day-metric{font-weight:600}
.graph-day-card.is-out{opacity:.48;background:transparent}
.graph-day-card.is-out .graph-day-date,.graph-day-card.is-out .graph-day-metric,.graph-day-card.is-out .graph-day-percent{color:var(--hint)}
.graph-day-card.is-out .graph-day-progress{display:none}
.graph-day-card.is-offday{opacity:.5;background:transparent}
.graph-day-card.is-offday .graph-day-date,.graph-day-card.is-offday .graph-day-metric,.graph-day-card.is-offday .graph-day-percent{color:var(--hint)}
.graph-day-card.is-offday .graph-day-progress{display:none}
.graph-day-date{font-size:13px;font-weight:800}
.graph-day-percent{margin-left:auto;text-align:right;font-size:12px;font-weight:800;color:var(--muted);font-variant-numeric:tabular-nums}
.graph-day-metric{font-size:12px;color:var(--muted)}
body.theme-dark .graph-day-card.is-low{--graph-progress-color:color-mix(in srgb,var(--accent) 20%,#0f1115 80%)}
body.theme-dark .graph-day-card.is-mid{--graph-progress-color:color-mix(in srgb,var(--accent) 34%,#131a27 66%)}
body.theme-dark .graph-day-card.is-high{--graph-progress-color:color-mix(in srgb,var(--accent) 52%,#1b2438 48%);border-color:color-mix(in srgb,var(--accent) 44%,#26324d 56%)}
body.theme-dark .graph-day-card.is-hit{--graph-progress-color:color-mix(in srgb,var(--accent) 66%,#ffffff 34%);border-color:color-mix(in srgb,var(--accent) 56%,#ffffff 44%)}
body.theme-dark .graph-day-card.is-high .graph-day-date,body.theme-dark .graph-day-card.is-high .graph-day-metric,body.theme-dark .graph-day-card.is-high .graph-day-percent{color:#eaf1ff}
body.theme-dark .graph-day-card.is-hit .graph-day-date,body.theme-dark .graph-day-card.is-hit .graph-day-metric,body.theme-dark .graph-day-card.is-hit .graph-day-percent{color:#0d1b14}
@media (max-width:980px){
  .graph-columns{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:620px){
  .graph-columns{grid-template-columns:1fr}
  .graph-view-month{min-width:0;font-size:16px}
  .graph-workdays{font-size:12px;min-width:0}
}
.year-plan{display:flex;flex-direction:column;gap:12px;padding:6px}
.year-plan-header{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.year-plan-controls{display:flex;align-items:center;gap:6px}
.year-plan-actions{margin-left:auto}
.year-plan-add{appearance:none;border:1px solid var(--accent);background:transparent;color:var(--accent);border-radius:var(--radius-sm);padding:8px 12px;font-weight:700;cursor:pointer;transition:background .12s ease,color .12s ease,border-color .12s ease,transform .08s ease}
.year-plan-add:hover{background:var(--accent-soft);color:var(--text);border-color:var(--accent-border)}
.year-plan-add:active{transform:translateY(1px)}
.year-plan-arrow{width:32px;height:32px;border-radius:var(--radius-sm);border:1px solid var(--hint);background:transparent;display:grid;place-items:center;cursor:pointer;color:var(--icon);transition:background .12s ease,color .12s ease,border-color .12s ease}
.year-plan-arrow:hover{background:var(--hover);color:var(--text);border-color:var(--muted)}
.year-plan-year{font-weight:800;font-size:18px;min-width:64px;text-align:center}
.year-plan-content{display:flex;flex-direction:column;gap:12px}
.year-plan-grid{display:flex;flex-direction:column;gap:12px;padding:2px}
.year-half{display:flex;align-items:stretch;gap:12px}
.year-half-label{display:flex;align-items:center;justify-content:center;flex:0 0 32px;border-radius:var(--radius-md);border:1px solid var(--toast-border);background:var(--hover);font-weight:700;color:var(--muted);font-size:11px;writing-mode:vertical-rl;transform:rotate(180deg);text-align:center;padding:6px 4px}
.year-half-months{display:flex;gap:12px;flex:1;min-width:0}
.year-month{background:var(--surface);border:1px solid var(--toast-border);border-radius:var(--radius-md);display:flex;flex-direction:column;min-width:0;flex:1 1 0;box-sizing:border-box;overflow:hidden}
.year-month-title{padding:6px 8px;font-weight:700;border-bottom:1px solid var(--toast-border);background:var(--hover);text-align:center;font-size:12px}
.year-month-body{position:relative}
.year-days{display:flex;flex-direction:column;position:relative}
.year-day{display:flex;align-items:center;gap:6px;padding:0 8px;height:var(--year-day-height);border-bottom:1px solid var(--year-grid-border);font-size:12px;color:var(--text);box-sizing:border-box;background:var(--surface)}
.year-day:last-child{border-bottom:none}
.year-day-num{font-variant-numeric:tabular-nums;font-weight:500;font-size:11px;color:var(--hint)}
.year-day.is-weekend,.year-day.is-holiday{background:var(--year-weekend-bg);color:var(--year-weekend-text)}
.year-day.is-today{background:var(--today-bg);color:var(--today-text);font-weight:600}
.year-day.is-today .year-day-num{color:var(--today-text)}
.year-day.is-disabled{background:var(--year-disabled-bg);color:var(--muted);opacity:.7}
.year-day.is-disabled .year-day-num{display:none}
.year-activities{position:absolute;inset:0;padding:0 6px 4px;pointer-events:none}
.year-activity{position:absolute;left:0;width:100%;box-sizing:border-box;pointer-events:none;--year-activity-handle-height:10px;--year-activity-color:var(--accent);--year-activity-soft:var(--accent-soft);--year-activity-soft-strong:var(--accent-soft-strong);--year-activity-border:var(--accent-border);--year-activity-shadow:var(--accent-shadow)}
.year-activity:not(.year-activity--draft){filter:drop-shadow(0 8px 18px var(--year-activity-shadow))}
.year-activity.is-dragging{opacity:.35}
.year-activity-resize{position:absolute;left:0;width:100%;height:10px;opacity:0;pointer-events:none;cursor:ns-resize;z-index:4}
.year-activity-resize.is-top{top:-2px}
.year-activity-resize.is-bottom{bottom:-2px}
.year-activity.is-selected.is-hovered .year-activity-resize{opacity:1;pointer-events:auto}
.year-activity-resize::after{content:'';position:absolute;left:10px;right:10px;top:4px;height:2px;border-radius:999px;background:var(--year-activity-border);opacity:.9}
.year-activity-handle{position:absolute;left:0;width:100%;height:var(--year-activity-handle-height);display:flex;align-items:center;justify-content:flex-start;gap:6px;padding:0 6px;box-sizing:border-box;background:var(--year-activity-soft-strong);border-bottom:1px solid var(--year-activity-border);cursor:grab;z-index:4;opacity:0;pointer-events:auto;transition:opacity .12s ease}
.year-activity.is-hovered .year-activity-handle,.year-activity.is-selected .year-activity-handle,.year-activity.is-dragging .year-activity-handle{opacity:1;pointer-events:auto}
.year-activity-handle:hover{filter:brightness(1.05)}
.year-activity.is-dragging .year-activity-handle{cursor:grabbing}
.year-activity-grip{width:14px;height:6px;background-image:radial-gradient(circle,var(--accent-border) 1.1px,transparent 1.4px);background-size:3px 3px;opacity:.75}
.year-activity-segments{position:relative;width:100%;height:100%;pointer-events:none}
.year-activity-segment{position:absolute;background:var(--year-activity-soft);border:none;outline:none;box-shadow:none;border-radius:0;margin:0;pointer-events:auto}
.year-activity-segment.is-top{border-top-left-radius:0;border-top-right-radius:0}
.year-activity-segment.is-bottom{border-bottom-left-radius:0;border-bottom-right-radius:0}
.year-activity-label{position:absolute;padding:calc(var(--year-activity-handle-height) + 4px) 6px 4px 28px;display:flex;flex-direction:column;gap:2px;pointer-events:auto;box-sizing:border-box;align-items:flex-end;text-align:right;z-index:3}
.year-activity-title{font-weight:700;font-size:12px;white-space:normal;overflow-wrap:anywhere;word-break:break-word;display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}
.year-activity-emoji{font-size:13px;line-height:1}
.year-activity-duration{font-size:11px;color:var(--muted)}
.year-activity.is-selected .year-activity-segment,.year-activity.is-hovered .year-activity-segment{background:var(--year-activity-soft-strong)}
.year-activity.is-selected .year-activity-label{background:transparent}
.year-activity--move-preview{background:var(--year-activity-soft-strong);border:1px solid var(--year-activity-border);box-shadow:none;opacity:.6;pointer-events:none;border-radius:0;padding:4px 6px;display:flex;justify-content:flex-end;align-items:center;box-sizing:border-box}
.year-activity--draft{background:var(--hover);border:1px dashed var(--accent-border);box-shadow:none;opacity:.9;pointer-events:auto;border-radius:0;padding:6px 8px;display:flex;flex-direction:column;gap:4px;justify-content:center}
.year-activity--draft.is-preview{color:var(--muted)}
.year-activity--draft.is-editing{background:var(--surface);border-style:solid;box-shadow:0 6px 16px var(--toast-shadow)}
.year-plan-rename-input{width:100%;border:1px solid var(--accent-border);border-radius:var(--radius-sm);padding:6px 8px;font-weight:700;font-size:13px;background:var(--surface);color:var(--text);outline:none;box-sizing:border-box}
.year-plan-rename-input:focus{box-shadow:0 0 0 3px var(--accent-soft);border-color:var(--accent)}
.year-plan-draft-input{width:100%;border:1px solid var(--accent-border);border-radius:var(--radius-sm);padding:8px 10px;font-weight:700;font-size:14px;background:transparent;color:var(--text);outline:none;box-sizing:border-box}
.year-plan-draft-input:focus{box-shadow:0 0 0 3px var(--accent-soft);border-color:var(--accent)}
.year-plan-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;align-items:end;background:var(--surface);border:1px solid var(--toast-border);border-radius:var(--radius-md);padding:12px}
.year-plan-field{display:flex;flex-direction:column;gap:6px}
.year-plan-label{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.3px;text-transform:uppercase}
.year-plan-input{appearance:none;border:1px solid var(--hint);border-radius:var(--radius-sm);padding:10px 12px;font-size:15px;font-weight:600;color:var(--text);background:transparent;transition:border-color .12s ease,box-shadow .12s ease}
.year-plan-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.year-plan-error{grid-column:1/-1;font-size:13px;color:#d64545;min-height:18px}
body.theme-dark .year-plan-error{color:#ff8c8c}
.year-plan-form-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:10px}
.year-plan-secondary,.year-plan-primary{appearance:none;border-radius:var(--radius-md);padding:10px 16px;font-weight:700;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,background-color .12s ease,color .12s ease;border:none;min-width:120px}
.year-plan-secondary{background:transparent;color:var(--text);border:1px solid var(--hint)}
.year-plan-secondary:hover{background:var(--hover)}
.year-plan-secondary:active{transform:translateY(1px)}
.year-plan-primary{background:var(--accent);color:#fff;box-shadow:0 14px 28px var(--accent-shadow)}
.year-plan-primary:hover{transform:translateY(-1px);box-shadow:0 20px 36px var(--accent-shadow)}
.year-plan-primary:active{transform:translateY(0);box-shadow:0 12px 24px var(--accent-shadow)}
.year-plan-primary[disabled]{opacity:.6;cursor:not-allowed;box-shadow:none;transform:none}
.year-plan-status{padding:10px 12px;border:1px solid var(--toast-border);border-radius:var(--radius-md);background:var(--hover);font-weight:700;color:var(--muted)}
.year-plan-status.is-error{color:#d64545}
body.theme-dark .year-plan-status.is-error{color:#ff8c8c}
.year-plan-status.is-empty{color:var(--muted)}
.year-plan-color-palette{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;padding:8px 10px 6px;border-top:1px solid var(--toast-border);margin-top:6px}
.year-plan-color-swatch{width:20px;height:20px;border-radius:var(--radius-xs);border:1px solid transparent;cursor:pointer;display:inline-block}
.year-plan-color-swatch:hover{transform:translateY(-1px)}
.year-plan-color-swatch.is-active{border-color:var(--text);box-shadow:0 0 0 2px var(--hover-strong)}
.tasks.is-project-view{overflow-y:auto;overflow-x:hidden}
.project-layout{display:flex;gap:16px;align-items:stretch;width:100%;min-width:0;min-height:0}
.project-tasks{flex:1;display:flex;flex-direction:column;gap:6px;min-width:0;min-height:0;overflow-y:auto;overflow-x:hidden}
.project-summary{display:flex;align-items:baseline;gap:10px;padding:2px 0 10px;color:var(--text)}
.project-summary-label{font-size:13px;color:var(--muted);font-weight:600}
.project-summary-value{font-size:18px;font-weight:800;font-variant-numeric:tabular-nums}
.project-right-col{flex:0 0 20%;min-width:200px;max-width:320px;display:flex;flex-direction:column;gap:12px}
.year-side{background:var(--surface);border:1px solid var(--toast-border);border-radius:var(--radius-lg);padding:12px;display:flex;flex-direction:column;gap:10px;height:fit-content}
.year-side-header{font-weight:800;font-size:12px;letter-spacing:.3px;text-transform:uppercase;color:var(--muted)}
.year-side-list{display:flex;flex-direction:column;gap:8px}
.year-side-item{appearance:none;border:1px solid transparent;background:var(--hover);border-radius:var(--radius-sm);padding:8px 10px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:4px;transition:background .12s ease,border-color .12s ease}
.year-side-item:hover{background:var(--hover-strong);border-color:var(--toast-border)}
.year-side-item-title{font-weight:600;font-size:14px;color:var(--text)}
.year-side-item-dates{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.year-side-status{font-size:13px;color:var(--muted)}
.year-side-status.is-error{color:#d64545}
body.theme-dark .year-side-status.is-error{color:#ff8c8c}
.today-side-item.is-selected{background:var(--hover-strong);border-color:var(--accent,var(--toast-border))}
.project-delete-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(15,17,21,.46);backdrop-filter:blur(5px);opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:12500}
.project-delete-overlay.is-open{opacity:1;pointer-events:auto}
.project-delete-dialog{position:relative;width:100%;max-width:420px;background:var(--sidebar-bg);border-radius:var(--radius-lg);padding:24px;border:1px solid var(--toast-border);box-shadow:0 22px 40px rgba(15,17,21,.2);display:flex;flex-direction:column;gap:14px;color:var(--text)}
.project-delete-title{font-size:16px;font-weight:800}
.project-delete-list{display:flex;flex-direction:column;gap:8px;max-height:240px;overflow:auto}
.project-delete-item{background:var(--hover);border-radius:var(--radius-md);padding:8px 10px;display:flex;flex-direction:column;gap:4px}
.project-delete-item-title{font-weight:600;font-size:14px}
.project-delete-item-dates{font-size:12px;color:var(--muted)}
.project-delete-actions{display:flex;gap:10px;justify-content:flex-end}
.project-delete-primary,.project-delete-secondary{appearance:none;border-radius:var(--radius-md);padding:10px 16px;font-weight:700;cursor:pointer;border:none}
.project-delete-primary{background:var(--accent);color:#fff;box-shadow:0 12px 24px rgba(58,130,246,.28)}
.project-delete-secondary{background:transparent;color:var(--text);border:1px solid var(--hint)}
.year-plan-grid::-webkit-scrollbar{height:8px}
.year-plan-grid::-webkit-scrollbar-thumb{background:var(--hint);border-radius:999px}
.year-plan-grid::-webkit-scrollbar-track{background:transparent}
.main{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:10px;padding:8px;height:calc(100vh - 32px);box-sizing:border-box;min-width:0}
.header{display:flex;flex-direction:column;gap:12px}
.header-top{display:flex;align-items:center;gap:14px;width:100%;flex-wrap:wrap}
.header-leading{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1 1 0}
.header .title{font-weight:800}
.header-tools{display:flex;align-items:center;gap:14px;flex:0 0 auto;min-width:0;flex-wrap:wrap;justify-content:flex-end}
.header-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end}
.workday-bar{display:inline-flex;align-items:center;gap:12px;padding:4px 0;border-radius:0;background:transparent;border:none;box-shadow:none;transition:none;flex:0 1 auto;min-width:0;max-width:100%;flex-wrap:wrap;font-size:13px}
.workday-bar:hover{box-shadow:none}
.workday-stats{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch;flex:0 1 auto}
.workday-stat{display:inline-flex;align-items:center;justify-content:flex-start;height:34px;min-width:0;color:var(--text)}
.workday-stat + .workday-stat{position:relative;padding-left:12px}
.workday-stat + .workday-stat::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:1px;height:18px;background:var(--hint);opacity:.45}
.workday-stat-label{display:none}
.workday-stat-value{font-variant-numeric:tabular-nums;font-size:19px;font-weight:800;line-height:1}
.workday-rec{display:inline-flex;align-items:center;justify-content:center;align-self:center;width:10px;height:34px;margin-right:2px;padding:0;border-radius:0;border:none;background:transparent;color:inherit;font-size:0;opacity:0;transform:scale(.92);transition:opacity .2s ease,transform .2s ease;pointer-events:none}
.workday-rec.is-active{opacity:1;transform:scale(1)}
.workday-rec-dot{width:8px;height:8px;border-radius:50%;background:#ff3b30;box-shadow:0 0 0 0 rgba(255,59,48,.6);animation:workday-rec-pulse 1.4s ease-in-out infinite}
@keyframes workday-rec-pulse{0%{transform:scale(.85);box-shadow:0 0 0 0 rgba(255,59,48,.7)}70%{transform:scale(1);box-shadow:0 0 0 8px rgba(255,59,48,0)}100%{transform:scale(.85);box-shadow:0 0 0 0 rgba(255,59,48,0)}}
.workday-finish{appearance:none;border:1px solid var(--accent);border-radius:var(--radius-sm);padding:0 16px;min-width:0;height:34px;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--accent);font-weight:700;font-size:1em;cursor:pointer;box-shadow:none;transition:transform .15s ease,box-shadow .15s ease,background-color .15s ease,color .15s ease,border-color .15s ease;white-space:nowrap;flex:0 0 auto}
.workday-finish:hover{transform:translateY(-1px);box-shadow:0 10px 26px var(--accent-shadow);background-color:var(--accent-soft)}
.workday-finish:active{transform:translateY(0);box-shadow:0 6px 16px var(--accent-shadow);background-color:rgba(58,130,246,.18)}
.workday-finish[disabled]{cursor:not-allowed;opacity:.6;box-shadow:none;transform:none;background:transparent;color:var(--muted);border-color:var(--hint)}
.workday-finish[disabled]:hover,.workday-finish[disabled]:active{transform:none;box-shadow:none;background:transparent}
.workday-finish.is-hidden{display:none}
.workday-bar[data-state="inactive"]{opacity:.82}
.workday-bar[data-state="closed"]{opacity:.74}
.workday-bar[data-state="inactive"] .workday-stat-value,.workday-bar[data-state="closed"] .workday-stat-value{color:var(--muted)}
.workday-bar[data-state="inactive"] .workday-stat-label,.workday-bar[data-state="closed"] .workday-stat-label{color:var(--hint)}
.time-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(15,17,21,.46);backdrop-filter:blur(5px);opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:12000}
.time-overlay.is-open{opacity:1;pointer-events:auto}
.time-dialog{position:relative;width:100%;max-width:360px;background:var(--sidebar-bg);border-radius:var(--radius-lg);padding:26px;border:1px solid var(--toast-border);box-shadow:0 22px 40px rgba(15,17,21,.2);display:flex;flex-direction:column;gap:18px;color:var(--text)}
.time-dialog-header{display:flex;flex-direction:column;gap:4px}
.time-dialog-title{font-size:20px;font-weight:800}
.time-dialog-subtitle{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;min-height:18px}
.time-dialog-close{position:absolute;top:14px;right:14px;border:none;background:transparent;color:var(--muted);font-size:20px;font-weight:700;line-height:1;padding:6px;border-radius:var(--radius-sm);cursor:pointer}
.time-dialog-close:hover{background:var(--hover);color:var(--text)}
.time-dialog-form{display:flex;flex-direction:column;gap:16px}
.time-dialog-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px}
.time-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.time-field-label{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.32px}
.time-input{appearance:textfield;border:1px solid var(--hint);border-radius:var(--radius-sm);padding:10px 12px;font-size:16px;font-weight:600;color:var(--text);background:transparent;transition:border-color .12s ease,box-shadow .12s ease;width:100%;box-sizing:border-box}
.time-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.time-input::-webkit-outer-spin-button,.time-input::-webkit-inner-spin-button{appearance:none;margin:0}
.time-dialog-summary{font-size:14px;font-weight:600;color:var(--muted)}
.time-dialog-summary span{color:var(--text)}
.time-dialog-presets{display:flex;flex-wrap:wrap;gap:8px}
.time-dialog-error{font-size:13px;color:#d64545;min-height:18px}
body.theme-dark .time-dialog-error{color:#ff8c8c}
.time-input.is-invalid{border-color:#d64545;box-shadow:0 0 0 3px rgba(214,69,69,.22)}
body.theme-dark .time-input.is-invalid{border-color:#ff8c8c;box-shadow:0 0 0 3px rgba(255,140,140,.24)}
.time-dialog-actions{display:flex;justify-content:flex-end;gap:10px}
.time-dialog-secondary,.time-dialog-primary{appearance:none;border-radius:var(--radius-sm);padding:10px 18px;font-weight:600;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,background-color .12s ease,color .12s ease;border:none}
.time-dialog-secondary{background:transparent;color:var(--text);border:1px solid var(--hint)}
.time-dialog-secondary:hover{background:var(--hover)}
.time-dialog-secondary:active{transform:translateY(1px)}
.time-dialog-primary{background:var(--accent);color:#fff;box-shadow:0 14px 28px var(--accent-shadow)}
.time-dialog-primary:hover{transform:translateY(-1px);box-shadow:0 20px 36px var(--accent-shadow)}
.time-dialog-primary:active{transform:translateY(0);box-shadow:0 12px 24px var(--accent-shadow)}
.time-dialog-primary[disabled]{opacity:.6;cursor:not-allowed;box-shadow:none;transform:none}
body.time-dialog-open{overflow:hidden}
.api-settings-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(15,17,21,.46);backdrop-filter:blur(5px);opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:14000}
.api-settings-overlay.is-open{opacity:1;pointer-events:auto}
.api-settings-dialog{position:relative;width:min(920px,100%);min-height:540px;max-height:min(720px,calc(100vh - 48px));background:var(--sidebar-bg);border-radius:var(--radius-sm);border:1px solid var(--toast-border);box-shadow:0 22px 40px rgba(15,17,21,.2);display:grid;grid-template-columns:248px minmax(0,1fr);overflow:hidden;color:var(--text)}
.api-settings-sidebar{border-right:1px solid var(--toast-border);background:var(--bg);padding:22px 14px;display:flex;flex-direction:column;gap:22px}
.api-settings-sidebar-header{display:flex;flex-direction:column;gap:4px;padding:0 8px}
.api-settings-kicker{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:0}
.api-settings-title{font-size:22px;font-weight:800}
.api-settings-nav{display:flex;flex-direction:column;gap:4px}
.api-settings-nav-item{appearance:none;border:none;background:transparent;color:var(--text);border-radius:var(--radius-sm);padding:10px;display:grid;grid-template-columns:40px minmax(0,1fr);gap:12px;align-items:center;text-align:left;cursor:pointer;min-height:58px;transition:background-color .12s ease,color .12s ease}
.api-settings-nav-item:hover{background:var(--hover)}
.api-settings-nav-item.is-active{background:var(--hover-strong);color:var(--text)}
.api-settings-nav-icon{width:40px;height:40px;border-radius:var(--radius-sm);background:var(--accent-soft);display:grid;place-items:center;background-position:center;background-repeat:no-repeat;background-size:26px 26px}
.api-settings-nav-item.is-active .api-settings-nav-icon{background-color:var(--accent-soft-strong)}
.api-settings-nav-icon--server{background-image:url("assets/icons/settings/cloud-dark.svg")}
.api-settings-nav-icon--display{background-image:url("assets/icons/settings/view-dark.svg")}
body[data-theme="dark"] .api-settings-nav-icon{background-color:var(--accent-soft)}
body[data-theme="dark"] .api-settings-nav-item.is-active .api-settings-nav-icon{background-color:var(--accent-soft-strong)}
.api-settings-nav-label{display:block;font-size:14px;font-weight:800;line-height:1.2}
.api-settings-nav-description{display:block;margin-top:2px;font-size:12px;color:var(--muted);line-height:1.25}
.api-settings-content{min-width:0;padding:32px;overflow:auto}
.api-settings-section{display:none;max-width:560px}
.api-settings-section.is-active{display:flex;flex-direction:column;gap:22px}
.api-settings-header{display:flex;flex-direction:column;gap:8px}
.api-settings-section-eyebrow{font-size:12px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:0}
.api-settings-section-title{font-size:28px;font-weight:800;line-height:1.15}
.api-settings-section-subtitle{font-size:14px;color:var(--muted);line-height:1.5;max-width:460px}
.api-settings-description{align-self:flex-start;padding:6px 10px;border-radius:var(--radius-sm);background:var(--hover);border:1px solid var(--toast-border);font-size:12px;font-weight:800;letter-spacing:0;text-transform:uppercase;color:var(--text);display:inline-flex;align-items:center;gap:6px}
.api-settings-description::before{content:"●";color:var(--accent);font-size:10px;line-height:1}
.api-settings-hint{font-size:13px;color:var(--muted);line-height:1.5}
.api-settings-message{font-size:14px;font-weight:700;color:var(--text);background:var(--hover);border:1px solid var(--toast-border);border-radius:var(--radius-sm);padding:10px 12px;line-height:1.4}
.api-settings-close{position:absolute;top:14px;right:14px;border:none;background:transparent;color:var(--muted);font-size:20px;font-weight:700;line-height:1;padding:6px;border-radius:var(--radius-sm);cursor:pointer;z-index:1}
.api-settings-close:hover{background:var(--hover);color:var(--text)}
.api-settings-form{display:flex;flex-direction:column;gap:16px}
.api-settings-field{display:flex;flex-direction:column;gap:6px}
.api-settings-label{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:0}
.api-settings-input-wrap{position:relative;display:flex;align-items:center}
.api-settings-input{appearance:none;border:1px solid var(--hint);border-radius:var(--radius-sm);padding:8px 44px 8px 12px;font-size:15px;font-weight:500;color:var(--text);background:transparent;transition:border-color .12s ease,box-shadow .12s ease;flex:1 1 auto;min-width:0;min-height:40px}
.api-settings-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.api-settings-toggle{position:absolute;top:50%;right:8px;transform:translateY(-50%);appearance:none;border:none;background:transparent;padding:6px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--muted);border-radius:var(--radius-sm);transition:color .12s ease,background-color .12s ease}
.api-settings-toggle:hover{color:var(--text);background:var(--hover)}
.api-settings-toggle svg{width:20px;height:20px;display:block;fill:currentColor}
.api-settings-toggle.is-active{color:var(--accent)}
.api-settings-error{font-size:13px;color:#d64545;min-height:18px}
body.theme-dark .api-settings-error{color:#ff8c8c}
.api-settings-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.api-settings-ghost{appearance:none;border:1px solid var(--hint);background:transparent;border-radius:var(--radius-sm);padding:10px 12px;font-weight:600;cursor:pointer;color:var(--text);white-space:nowrap;min-height:44px}
.api-settings-ghost:hover{background:var(--hover)}
.api-settings-actions-spacer{display:none}
.api-settings-secondary,.api-settings-primary{appearance:none;border-radius:var(--radius-sm);padding:10px 18px;font-weight:600;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,background-color .12s ease,color .12s ease;border:none;min-height:44px}
.api-settings-secondary{background:transparent;color:var(--text);border:1px solid var(--hint)}
.api-settings-secondary:hover{background:var(--hover)}
.api-settings-secondary:active{transform:translateY(1px)}
.api-settings-primary{background:var(--accent);color:#fff;box-shadow:0 14px 28px var(--accent-shadow)}
.api-settings-primary:hover{transform:translateY(-1px);box-shadow:0 20px 36px var(--accent-shadow)}
.api-settings-primary:active{transform:translateY(0);box-shadow:0 12px 24px var(--accent-shadow)}
.api-settings-primary[disabled]{opacity:.6;cursor:not-allowed;box-shadow:none;transform:none}
.api-settings-empty{border:1px dashed var(--hint);border-radius:var(--radius-sm);padding:18px;color:var(--muted);font-size:14px;background:var(--hover)}
.settings-subsection{display:flex;flex-direction:column;gap:14px}
.settings-subsection-header{display:flex;flex-direction:column;gap:4px}
.settings-subsection-title{font-size:16px;font-weight:800;color:var(--text)}
.settings-subsection-description{font-size:13px;color:var(--muted);line-height:1.45}
.settings-toggle-group{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.settings-toggle-group--triple{grid-template-columns:repeat(3,minmax(0,1fr))}
.settings-choice{appearance:none;border:1px solid var(--hint);border-radius:var(--radius-sm);background:transparent;color:var(--text);min-height:42px;padding:9px 12px;font-weight:700;cursor:pointer;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}
.settings-choice:hover{background:var(--hover)}
.settings-choice.is-active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 12px 24px var(--accent-shadow)}
.settings-choice--icon{min-height:68px;padding:10px;display:grid;place-items:center}
.settings-radius-icon{width:40px;height:40px;border-radius:10px;background:var(--accent-soft);display:grid;place-items:center;position:relative;transition:background-color .12s ease,transform .12s ease}
.settings-choice:hover .settings-radius-icon{background:var(--accent-soft-strong);transform:translateY(-1px)}
.settings-choice.is-active .settings-radius-icon{background:rgba(255,255,255,.2)}
.settings-radius-icon::after{content:'';width:18px;height:18px;border:2px solid currentColor}
.settings-radius-icon--none::after{border-radius:0}
.settings-radius-icon--compact::after{border-radius:6px}
.settings-radius-icon--round::after{border-radius:999px}
.settings-palette-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.settings-palette{appearance:none;border:1px solid var(--toast-border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);min-width:0;padding:10px;display:flex;flex-direction:column;gap:8px;cursor:pointer;text-align:left;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease,transform .12s ease}
.settings-palette:hover{background:var(--hover);transform:translateY(-1px)}
.settings-palette.is-active{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.settings-palette-swatch{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;height:28px}
.settings-palette-swatch span{border-radius:var(--radius-xs);border:1px solid var(--toast-border);min-width:0}
.settings-palette-name{font-size:12px;font-weight:800;line-height:1.25;color:var(--text);word-break:break-word}
.settings-select-label{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:0}
.settings-select{appearance:none;border:1px solid var(--hint);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);min-height:44px;padding:10px 40px 10px 12px;font-weight:700;cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 18px) 18px,calc(100% - 12px) 18px;background-size:6px 6px,6px 6px;background-repeat:no-repeat;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease}
.settings-select:hover{background-color:var(--hover)}
.settings-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.settings-section-divider{height:1px;background:var(--toast-border);margin-top:4px}
.nav-btn,.add-btn,.icon-btn,.icon-btn.settings-btn,.icon-btn.theme-btn,.settings-choice,.settings-palette,.settings-select,.api-settings-secondary,.api-settings-primary,.api-settings-input,.task,.archive-task,.archive-empty,.projects,.proj-item,.sprint-row,.workday-dialog-list li{border-radius:var(--radius-control)}
.sidebar,.archive-task,.archive-empty,.task{border-radius:var(--radius-card)}
.api-settings-dialog,.workday-dialog,.notes-sidebar{border-radius:var(--radius-panel)}
/* Radius system: pass 1 (base controls and common surfaces) */
.nav-btn,.add-btn,.icon-btn,.icon-btn.settings-btn,.icon-btn.theme-btn,.settings-choice,.settings-palette,.settings-select,.api-settings-secondary,.api-settings-primary,.api-settings-input,.api-settings-toggle,.api-settings-ghost,.api-settings-close,.api-settings-nav-item,.archive-delete,.delete-btn,.note-btn,.due-btn,.timer-btn,.time-preset-trigger,.time-preset-btn,.ctx-submenu-item,.context-item,.completed-toggle,.workday-finish,.proj-add{border-radius:var(--radius-sm)}
.settings-radius-icon,.api-settings-nav-icon,.completed-toggle-count,.workday-stat-value,.due-tag,.proj-tag,.time-spent{border-radius:var(--radius-xs)}
.task,.archive-task,.archive-empty,.projects,.proj-item,.sprint-row,.toast{border-radius:var(--radius-md)}
.api-settings-dialog,.notes-sidebar,.workday-dialog,.time-dialog,.project-delete-dialog{border-radius:var(--radius-lg)}
body.api-settings-open{overflow:hidden}
body.theme-dark .api-settings-description{background:rgba(26,29,36,.8);border-color:var(--hint)}
body.theme-dark .api-settings-message{background:rgba(26,29,36,.8);border-color:var(--toast-border)}
body.theme-dark .api-settings-sidebar{background:rgba(26,29,36,.52)}
@media (max-width:720px){
  .api-settings-overlay{padding:10px}
  .api-settings-dialog{grid-template-columns:1fr;min-height:0;max-height:calc(100vh - 20px)}
  .api-settings-sidebar{border-right:none;border-bottom:1px solid var(--toast-border);padding:18px 14px 12px}
  .api-settings-nav{flex-direction:row;overflow-x:auto;padding-bottom:2px}
  .api-settings-nav-item{min-width:154px}
  .api-settings-content{padding:22px 16px 24px}
  .api-settings-section-title{font-size:24px}
  .api-settings-actions{grid-template-columns:repeat(2,1fr)}
  .api-settings-primary{grid-column:span 2}
  .settings-palette-grid{grid-template-columns:1fr}
  .settings-toggle-group--triple{grid-template-columns:1fr}
}
.workday-overlay{position:fixed;inset:0;background:rgba(15,17,21,.52);backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity .22s ease;z-index:13000;display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;box-sizing:border-box}
.workday-overlay.is-open{opacity:1;pointer-events:auto}
.workday-fireworks{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:0;transition:opacity .3s ease}
.workday-fireworks.is-active{opacity:1}
.workday-dialog{position:relative;z-index:1;background:var(--sidebar-bg);color:var(--text);border-radius:var(--radius-lg);padding:28px;max-width:560px;width:100%;border:1px solid var(--toast-border);box-shadow:0 26px 48px rgba(15,17,21,.18);display:flex;flex-direction:column;gap:22px}
.workday-dialog-header{display:flex;flex-direction:column;gap:6px}
.workday-dialog-title{font-size:22px;font-weight:800}
.workday-dialog-range{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.workday-dialog-close{position:absolute;top:16px;right:16px;border:none;background:transparent;color:var(--muted);font-size:20px;font-weight:700;line-height:1;padding:6px;border-radius:var(--radius-sm);cursor:pointer}
.workday-dialog-close:hover{background:var(--hover);color:var(--text)}
.workday-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}
.workday-summary-item{padding:14px 16px;border-radius:var(--radius-lg);background:var(--hover);display:flex;flex-direction:column;gap:6px}
.workday-summary-label{font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.32px;font-weight:600}
.workday-summary-value{font-size:20px;font-weight:700}
.workday-dialog-section{display:flex;flex-direction:column;gap:10px}
.workday-dialog-subtitle{font-size:15px;font-weight:700}
.workday-dialog-empty{font-size:14px;color:var(--muted)}
.workday-dialog-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;max-height:220px;overflow:auto}
.workday-dialog-list li{padding:10px 12px;border-radius:var(--radius-md);background:var(--hover);display:flex;flex-direction:column;gap:4px}
.workday-dialog-task-title{font-weight:600;font-size:14px;color:var(--text);word-break:break-word}
.workday-dialog-task-meta{font-size:12px;color:var(--muted)}
.workday-dialog-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}
.workday-dialog-action{appearance:none;border:none;border-radius:var(--radius-md);padding:10px 18px;background:var(--accent);color:#fff;font-weight:700;cursor:pointer;box-shadow:0 12px 28px var(--accent-shadow);transition:transform .15s ease,box-shadow .15s ease}
.workday-dialog-action:hover{transform:translateY(-1px);box-shadow:0 18px 36px var(--accent-shadow)}
.workday-dialog-action:active{transform:translateY(0);box-shadow:0 10px 24px var(--accent-shadow)}
.workday-dialog-action[disabled]{cursor:not-allowed;opacity:.55;box-shadow:none;transform:none}
.workday-dialog-action[disabled]:hover,.workday-dialog-action[disabled]:active{transform:none;box-shadow:none}
.workday-dialog-secondary{appearance:none;border:1px solid var(--hint);border-radius:var(--radius-md);padding:10px 18px;background:transparent;color:var(--text);font-weight:600;cursor:pointer;transition:background .12s ease}
.workday-dialog-secondary:hover{background:var(--hover)}
.workday-dialog-secondary:active{background:var(--hover-strong)}
.workday-dialog-list::-webkit-scrollbar{width:6px}
.workday-dialog-list::-webkit-scrollbar-thumb{background:var(--hint);border-radius:999px}
.workday-dialog-list::-webkit-scrollbar-track{background:transparent}
body.workday-dialog-open{overflow:hidden}
.sprint-filters{display:none;flex:1 1 auto;flex-wrap:wrap;gap:6px;align-items:center}
.sprint-filters.is-active{display:flex}
.header-leading .sprint-filters{align-self:stretch}
.sprint-filter-btn{appearance:none;border:1px solid var(--hint);background:transparent;color:var(--text);padding:6px 12px;border-radius:var(--radius-sm);display:flex;align-items:center;gap:6px;cursor:pointer;font-size:13px;font-weight:600;line-height:1;transition:background .12s ease,border-color .12s ease,color .12s ease,opacity .12s ease}
.sprint-filter-btn:hover{background:var(--hover);opacity:1}
.sprint-filter-btn:focus-visible{outline:2px solid var(--hint);outline-offset:2px}
.sprint-filter-btn.is-active{background:var(--hover-strong);border-color:var(--text);opacity:1}
.theme-dark .sprint-filter-btn.is-active{border-color:var(--hint)}
.sprint-filter-btn:not(.is-active){opacity:.6}
.sprint-filter-emoji{font-size:16px;line-height:1}
.sprint-filter-title{font-size:13px;line-height:1}
.header .hint{font-size:12px;color:var(--muted)}
.composer{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}
body.view-sprint .composer,body.view-year .composer{display:none}
body.view-graph .composer{grid-template-columns:1fr;align-items:stretch}
body.view-graph #taskInput,body.view-graph #addBtn{display:none}
.vacation-composer{display:none;grid-template-columns:auto 1fr;gap:10px;align-items:center;padding:8px 0}
body.view-graph .vacation-composer{display:grid}
.vacation-add-btn{appearance:none;border:1px solid var(--accent-border);background:var(--accent-soft);color:var(--text);border-radius:var(--radius-sm);padding:10px 14px;font-weight:700;cursor:pointer;white-space:nowrap}
.vacation-add-btn:hover{background:var(--accent-soft-strong)}
.vacation-add-btn:disabled{opacity:.6;cursor:not-allowed}
.vacation-periods{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:8px;min-height:40px;align-items:center}
.vacation-period-chip{display:inline-flex;align-items:center;padding:8px 10px;border-radius:var(--radius-sm);background:var(--hover);border:1px solid var(--toast-border);font-size:13px;font-weight:600;color:var(--text)}
.vacation-period-text{white-space:nowrap}
.vacation-period-remove{margin-left:8px;appearance:none;border:1px solid transparent;background:transparent;color:var(--muted);width:20px;height:20px;border-radius:999px;display:grid;place-items:center;cursor:pointer;font-size:14px;line-height:1;padding:0}
.vacation-period-remove:hover{background:var(--hover-strong);color:var(--text);border-color:var(--hint)}
.vacation-period-empty{font-size:13px;color:var(--muted)}
.vacation-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(15,17,21,.46);backdrop-filter:blur(5px);opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:14500}
.vacation-overlay.is-open{opacity:1;pointer-events:auto}
.vacation-dialog{position:relative;width:min(860px,100%);background:var(--sidebar-bg);border-radius:var(--radius-panel);border:1px solid var(--toast-border);box-shadow:0 22px 40px rgba(15,17,21,.2);padding:20px;display:flex;flex-direction:column;gap:14px}
.vacation-close{position:absolute;top:12px;right:12px;border:none;background:transparent;color:var(--muted);font-size:20px;font-weight:700;line-height:1;padding:6px;border-radius:var(--radius-sm);cursor:pointer}
.vacation-close:hover{background:var(--hover);color:var(--text)}
.vacation-title{font-size:20px;font-weight:800}
.vacation-controls{display:flex;gap:8px}
.vacation-arrow{width:32px;height:32px;border-radius:var(--radius-sm);border:1px solid var(--hint);background:transparent;display:grid;place-items:center;cursor:pointer;color:var(--icon)}
.vacation-arrow:hover{background:var(--hover)}
.vacation-calendars{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.vacation-cal-wrap{display:flex;flex-direction:column;gap:8px}
.vacation-month-title{font-size:14px;font-weight:800}
.vacation-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;color:var(--muted);font-size:11px}
.vacation-weekdays span{text-align:center}
.vacation-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.vacation-day{height:34px;border:1px solid var(--toast-border);background:var(--surface);color:var(--text);border-radius:var(--radius-xs);cursor:pointer;font-weight:600}
.vacation-day:hover{background:var(--hover)}
.vacation-day.is-out{opacity:.35;cursor:default}
.vacation-day.is-range{background:var(--accent-soft);border-color:var(--accent-border)}
.vacation-day.is-start,.vacation-day.is-end{background:var(--accent);border-color:var(--accent);color:#fff}
.vacation-actions{display:flex;justify-content:flex-end;gap:10px}
.vacation-secondary,.vacation-primary{appearance:none;border-radius:var(--radius-sm);padding:10px 16px;font-weight:700;cursor:pointer;border:none}
.vacation-secondary{background:transparent;color:var(--text);border:1px solid var(--hint)}
.vacation-secondary:hover{background:var(--hover)}
.vacation-primary{background:var(--accent);color:#fff;box-shadow:0 14px 28px var(--accent-shadow)}
.vacation-primary:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}
body.vacation-dialog-open{overflow:hidden}
@media (max-width:820px){
  .vacation-composer{grid-template-columns:1fr}
  .vacation-calendars{grid-template-columns:1fr}
}
.input{border:none;border-bottom:1px solid var(--hint);padding:10px 2px;background:transparent;color:var(--text);font:inherit;outline:none;border-radius:var(--radius-xs) var(--radius-xs) 0 0}
.input::placeholder{color:#9fa3a9}
.input:focus{border-bottom-color:#9a9ea5}
.add-btn{border:none;background:transparent;color:var(--text);cursor:pointer;padding:8px 10px;border-radius:var(--radius-sm)}
.add-btn:hover{background:var(--hover)}
.tasks{display:flex;flex-direction:column;gap:6px;overflow-y:auto;overflow-x:hidden;min-height:0;min-width:0}
.archive-container{display:flex;flex-direction:column;gap:6px}
.archive-empty{padding:20px 12px;border-radius:var(--radius);background:var(--surface);border:1px dashed var(--hint);color:var(--muted);text-align:center}
.archive-task{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:flex-start;padding:10px 12px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--toast-border)}
.archive-task:hover{background:var(--hover)}
.archive-status{font-size:20px;line-height:1;color:var(--success)}
.archive-main{display:flex;flex-direction:column;gap:4px;min-width:0}
.archive-title{font-weight:700;word-break:break-word}
.archive-tags{display:flex;flex-wrap:wrap;gap:6px;color:var(--muted);font-size:12px}
.archive-tags:empty{display:none}
.archive-meta{display:flex;flex-wrap:wrap;gap:8px;color:var(--muted);font-size:12px}
.archive-meta:empty{display:none}
.archive-actions{display:flex;align-items:center;gap:6px}
.archive-task .note-btn{opacity:1}
.archive-task .note-btn:hover{transform:translateY(-1px) scale(1.05)}
.archive-task .note-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.archive-delete,.delete-btn{appearance:none;border:1px solid transparent;background:transparent;color:var(--muted);border-radius:var(--radius-sm);line-height:1;font-size:16px;padding:4px 6px;cursor:pointer;transition:color .12s ease,background .12s ease,border-color .12s ease,transform .12s ease,opacity .12s ease}
.archive-delete:hover,.delete-btn:hover{color:var(--timer-accent);background:var(--hover);border-color:var(--timer-border)}
.archive-delete:active,.delete-btn:active{transform:scale(.92)}
.archive-delete:focus-visible,.delete-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.archive-time{font-size:12px;color:var(--muted)}
.task{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:8px;align-items:center;padding:8px 10px;border-radius:var(--radius);transition:background .16s ease,box-shadow .2s ease,transform .18s ease;border:1px solid transparent;background:var(--surface);position:relative;overflow:hidden;box-sizing:border-box;max-width:100%}
.task[draggable="true"]{cursor:grab}
.task.is-dragging{opacity:.6;cursor:grabbing}
.task.is-drop-target{background:var(--hover-strong);box-shadow:0 0 0 2px var(--hint) inset}
.task.is-drop-before,.task.is-drop-after{position:relative}
.task.is-drop-before::before{content:'';position:absolute;top:-2px;left:0;right:0;height:2px;background:var(--accent);border-radius:1px;pointer-events:none;z-index:5}
.task.is-drop-after::after{content:'';position:absolute;bottom:-2px;left:0;right:0;height:2px;background:var(--accent);border-radius:1px;pointer-events:none;z-index:5}
.task:hover{background:var(--hover);box-shadow:none;transform:translateY(-1px)}
.task.is-selected{background:var(--sel-bg)}
.task.is-priority{
  background:var(--hover);
  border-color:var(--accent-border);
  box-shadow:0 0 0 1px var(--accent-border) inset;
}
.task.is-priority:hover{
  background:var(--hover-strong);
  box-shadow:0 0 0 1px var(--accent-border) inset;
}
.task.is-timer-active{border-color:transparent;box-shadow:inset 0 0 0 2px var(--timer-border)}
.task.is-timer-active:hover{box-shadow:inset 0 0 0 2px var(--timer-border)}
.task-row{position:relative;overflow:visible}
.task-inheritance-guides{position:absolute;inset:0;pointer-events:none;z-index:0}
.task-inheritance-line{position:absolute;top:6px;bottom:6px;width:2px;background:var(--inheritance-line);pointer-events:none;transition:width .14s ease,left .14s ease}
.task-row.is-inherited-hover .task-inheritance-line{width:4px}
.task.done{background:var(--hover)}
.task-main{display:flex;flex-direction:column;gap:4px;min-width:0;align-self:flex-start}
.task-title{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;min-width:0}
.task-title-text{flex:0 1 auto;max-width:100%;white-space:pre-wrap;word-break:break-word}
.task-title-text.is-priority{font-weight:800;max-width:calc(100% - 74px)}
.task-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.task[data-depth="0"].has-children .task-title{font-weight:700}
.task[data-depth="2"] .task-title{font-style:italic}
.task.done .task-title{color:var(--muted);text-decoration:line-through}
.task-tags:empty{display:none}
.due-tag{display:inline-flex;align-items:center;padding:1px 6px;border-radius:var(--radius-sm);background:var(--hover);font-size:11px;color:var(--muted);line-height:1.2}
.due-tag.is-overdue{background:var(--timer-glow-strong);color:var(--timer-accent);font-weight:600}
.due-tag.is-today{background:var(--today-bg);color:var(--today-text);font-weight:600}
.proj-tag{display:inline-flex;align-items:center;padding:1px 6px;border-radius:var(--radius-sm);background:var(--hover);font-size:11px;color:var(--muted);line-height:1.2}
.task-actions{display:flex;align-items:center;gap:6px;justify-content:flex-end;white-space:nowrap;justify-self:end;align-self:center}
.time-inline-controls{display:flex;align-items:center;gap:6px}
.time-preset-trigger{border:1px solid var(--hint);background:transparent;color:var(--muted);padding:4px 8px;border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;transition:background-color .12s ease,color .12s ease,border-color .12s ease;opacity:0;pointer-events:none}
.task:hover .time-preset-trigger,.task.is-selected .time-preset-trigger,.time-inline-controls:focus-within .time-preset-trigger{opacity:1;pointer-events:auto}
.time-preset-trigger:hover{background:var(--hover);color:var(--text);border-color:var(--text)}
.time-preset-trigger:active{background:var(--hover-strong)}
.time-preset-trigger:disabled{opacity:.55;cursor:not-allowed;background:transparent}
.time-preset-btn{border:1px solid var(--hint);background:transparent;color:var(--muted);padding:4px 8px;border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;transition:background-color .12s ease,color .12s ease,border-color .12s ease}
.time-preset-btn:hover{background:var(--hover);color:var(--text);border-color:var(--text)}
.time-preset-btn:active{background:var(--hover-strong)}
.time-preset-btn:disabled{opacity:.55;cursor:not-allowed;background:transparent}
.time-inline-controls.is-disabled .time-preset-trigger{cursor:not-allowed}
.time-loading{width:14px;height:14px;border:2px solid var(--hint);border-top-color:var(--accent);border-radius:50%;display:inline-block;opacity:0;transition:opacity .12s ease;animation:timeSpin .9s linear infinite}
.time-loading.is-visible{opacity:1}
.time-spent{display:inline-flex;align-items:center;padding:2px 6px;border-radius:var(--radius-xs);background:var(--hover);font-size:12px;color:var(--muted);gap:4px}
.ctx-submenu{position:fixed;z-index:10000;min-width:160px;display:none}
.ctx-submenu .ctx-submenu-item+.ctx-submenu-item{margin-top:2px}
.ctx-submenu-item{padding:6px 12px;border-radius:var(--radius-sm);cursor:pointer;user-select:none;font-size:13px;line-height:1.25;font-weight:500;letter-spacing:.01em;transition:background .12s ease,color .12s ease}
.ctx-submenu-item:hover,.ctx-submenu-item.is-submenu-open{background:var(--hover-strong)}
.note-btn,.due-btn,.timer-btn{border:1px solid transparent;background-color:transparent;color:var(--text);padding:4px 6px;font-size:16px;line-height:1;cursor:pointer;border-radius:var(--radius-sm);opacity:0;display:inline-flex;align-items:center;justify-content:center;transition:opacity .12s ease,color .12s ease,background-color .12s ease,border-color .12s ease}
.task-btn--timer,.task-btn--note,.task-btn--deadline{background-repeat:no-repeat;background-position:center;background-size:20px 20px;overflow:hidden;width:34px;height:34px;padding:0;font-size:0}
body[data-theme="light"] .task-btn--timer{background-image:url("assets/icons/light/timer.svg")}
body[data-theme="light"] .task-btn--note{background-image:url("assets/icons/light/note.svg")}
body[data-theme="light"] .task-btn--deadline{background-image:url("assets/icons/light/calendar.svg")}
body[data-theme="dark"] .task-btn--timer{background-image:url("assets/icons/dark/timer.svg")}
body[data-theme="dark"] .task-btn--note{background-image:url("assets/icons/dark/note.svg")}
body[data-theme="dark"] .task-btn--deadline{background-image:url("assets/icons/dark/calendar.svg")}
.task:hover .note-btn,.note-btn:focus-visible,.task:hover .timer-btn,.timer-btn:focus-visible{opacity:1}
.task.is-selected .note-btn,.task.is-selected .timer-btn{opacity:1}
.note-btn[data-has-notes="true"]{opacity:1;color:var(--muted)}
.timer-btn[data-active="true"]{opacity:1;color:var(--timer-accent);background-color:var(--timer-glow);box-shadow:0 4px 12px var(--timer-shadow);animation:timerButtonPulse 3.2s ease-in-out infinite;border-color:var(--timer-border)}
.task:hover .due-btn,.due-btn:focus-visible{opacity:1}
.task.is-selected .due-btn{opacity:1}
.note-btn:hover,.timer-btn:hover,.due-btn:hover{background-color:var(--hover)}
.note-btn:hover{border-color:#f2994a;color:#f2994a}
body.theme-dark .note-btn:hover{border-color:#f2994a;color:#f2994a}
.timer-btn:hover{border-color:#e45b4d;color:#e45b4d}
body.theme-dark .timer-btn:hover{border-color:#e45b4d;color:#e45b4d}
.due-btn:hover{border-color:var(--accent);color:var(--accent)}
body.theme-dark .due-btn:hover{border-color:var(--accent);color:var(--accent)}
.note-btn:active,.timer-btn:active,.due-btn:active{background-color:var(--hover-strong)}
.note-btn:focus-visible,.timer-btn:focus-visible,.due-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;background-color:var(--hover);box-shadow:0 0 0 4px rgba(0,0,0,.06)}
body.theme-dark .note-btn:focus-visible,body.theme-dark .timer-btn:focus-visible,body.theme-dark .due-btn:focus-visible{box-shadow:0 0 0 4px rgba(0,0,0,.4)}
.timer-btn:disabled{opacity:.5;cursor:not-allowed}
.timer-btn[data-active="true"]:hover{background-color:var(--timer-glow-strong);box-shadow:none}
.timer-btn[data-active="true"]:active{background-color:var(--timer-glow);box-shadow:0 4px 12px var(--timer-shadow)}
.timer-btn[data-active="true"]:focus-visible{outline:2px solid var(--timer-accent);background-color:var(--timer-glow-strong);box-shadow:0 0 0 4px var(--timer-shadow)}
.delete-btn{opacity:0}
.task:hover .delete-btn,.delete-btn:focus-visible{opacity:1}
.task.is-selected .delete-btn{opacity:1}
.subtasks{grid-column:1 / -1;margin-left:28px;overflow:visible}
.subtasks-inner{display:flex;flex-direction:column;gap:6px}
.task-checkbox{width:32px;height:32px;display:inline-grid;place-items:center;cursor:pointer;font-size:20px;line-height:1;user-select:none;border-radius:50%;border:1px solid var(--toast-border);color:var(--muted);background-color:var(--surface);background-position:center;background-repeat:no-repeat;background-size:0 0;transition:background-color .16s ease,background-size .16s ease,border-color .16s ease,color .16s ease,transform .16s ease,box-shadow .18s ease;align-self:center}
.task-checkbox::before{content:"";font-weight:700}
.task-checkbox[data-checked="true"]{background-color:transparent;background-image:url("assets/icons/checkmark.svg");background-size:38px 38px;border-color:transparent;color:var(--success-strong)}
.task-checkbox:hover{background-color:var(--hover);box-shadow:0 0 0 4px rgba(0,0,0,.04) inset}
.task-checkbox[data-checked="true"]:hover{background-color:transparent;background-image:url("assets/icons/checkmark.svg");background-size:38px 38px}
.task-checkbox.is-bouncing{animation:taskCheckboxBounce .16s ease-out}
.task-checkbox:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.completed-dock{--completed-dock-height:220px;display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--toast-border);padding-top:6px;min-height:0;box-sizing:border-box}
.completed-dock[hidden]{display:none}
.completed-dock.is-open{height:var(--completed-dock-height);max-height:min(50vh,420px);min-height:132px}
.completed-toggle{appearance:none;border:1px solid var(--toast-border);background:var(--surface);color:var(--muted);border-radius:var(--radius-sm);padding:8px 10px;display:flex;align-items:center;gap:8px;width:100%;cursor:pointer;font-size:13px;font-weight:800;text-align:left;transition:background .12s ease,color .12s ease,border-color .12s ease;flex:0 0 auto}
.completed-toggle:hover{background:var(--hover);color:var(--text);border-color:var(--hint)}
.completed-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.completed-toggle-chevron{font-size:18px;line-height:1;transition:transform .12s ease}
.completed-toggle[aria-expanded="true"] .completed-toggle-chevron{transform:rotate(90deg)}
.completed-toggle-label{flex:1}
.completed-toggle-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:22px;border-radius:var(--radius-xs);background:var(--hover);color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}
.completed-resizer{height:8px;margin:-2px 0;cursor:ns-resize;position:relative;flex:0 0 auto;touch-action:none}
.completed-resizer::before{content:'';position:absolute;left:50%;top:50%;width:46px;height:3px;border-radius:999px;background:var(--hint);transform:translate(-50%,-50%);opacity:.65}
.completed-resizer:hover::before{background:var(--muted);opacity:1}
.completed-list{display:flex;flex-direction:column;gap:6px;overflow-y:auto;overflow-x:hidden;min-height:0;padding-right:2px}
.completed-list .task{opacity:.76}
.today-priority-block{display:flex;flex-direction:column;gap:8px;margin-bottom:6px;padding:10px;border:1px solid var(--accent-border);border-radius:var(--radius-md);background:var(--accent-soft)}
.today-priority-block.is-drop-target{background:var(--accent-soft-strong);box-shadow:0 0 0 2px var(--accent-border) inset}
.today-priority-title{margin:0;font-size:12px;font-weight:800;letter-spacing:.3px;text-transform:uppercase;color:var(--muted)}
.today-priority-list{display:flex;flex-direction:column;gap:6px}
.today-regular-block{display:flex;flex-direction:column;gap:6px;min-height:56px;border-radius:var(--radius-md)}
.today-regular-block.is-drop-target{background:var(--hover);box-shadow:0 0 0 2px var(--hint) inset}

@keyframes taskCheckboxBounce{0%{transform:scale(1)}45%{transform:scale(1.14)}100%{transform:scale(1)}}

.task-confetti{position:absolute;inset:0;pointer-events:none;z-index:3}

@media (prefers-reduced-motion:reduce){
  .task{transition:background .12s ease,border-color .12s ease}
  .task:hover{transform:none}
  .task-checkbox{transition:background .12s ease,border-color .12s ease,color .12s ease}
  .task-checkbox.is-bouncing{animation:none}
}
.icon-btn{border:none;background:transparent;color:var(--text);padding:6px 8px;font-size:12px;cursor:pointer;border-radius:var(--radius-sm);outline:none}
.icon-btn:hover{background:var(--hover)}
.icon-btn:focus,.icon-btn:focus-visible{outline:none}
.icon-btn.settings-btn,.icon-btn.theme-btn{width:34px;height:34px;border:1px solid var(--hint);border-radius:var(--radius-sm);padding:0;display:grid;place-items:center;font-size:18px;line-height:1;background:transparent;color:var(--icon);transition:background .12s ease,border-color .12s ease,color .12s ease}
.icon-btn.settings-btn::before{content:"⚙️"}
.icon-btn.settings-btn:hover{background:var(--hover)}
.icon-btn.settings-btn:focus-visible{outline:2px solid var(--hint);outline-offset:2px}
.icon-btn.theme-btn{border:1px solid var(--hint)}
.icon-btn.theme-btn::before{content:"🌙"}
.icon-btn.theme-btn[data-mode="dark"]::before{content:"☀️"}
.icon-btn.theme-btn:hover{background:var(--hover)}
.icon-btn.theme-btn:focus-visible{outline:2px solid var(--hint);outline-offset:2px}
.context-menu{position:fixed;z-index:9999;min-width:150px;display:none}
.context-menu,.ctx-submenu{background:var(--context-menu-bg);border:1px solid var(--context-menu-border);box-shadow:var(--context-menu-shadow);border-radius:var(--context-menu-radius);padding:var(--context-menu-padding)}
.context-menu .context-item+.context-item{margin-top:2px}
.context-item{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--radius-sm);cursor:pointer;user-select:none;font-size:13px;line-height:1.25;font-weight:500;letter-spacing:.01em;transition:background .12s ease,color .12s ease}
.context-item.has-submenu::after{content:"›";margin-left:auto;color:var(--muted);font-size:15px;line-height:1}
.context-item:hover,.context-item.is-submenu-open{background:var(--hover-strong)}
.due-picker{padding:8px;box-sizing:border-box}
.due-picker .cal-header{padding-left:8px;padding-right:8px}
.due-picker .cal-legend{padding-left:8px;padding-right:8px}
.due-picker .cal-grid{padding-left:8px;padding-right:8px}
.toast{position:fixed;bottom:18px;right:18px;background:var(--toast-bg);border:1px solid var(--toast-border);padding:10px 14px;border-radius:var(--radius-md);box-shadow:var(--shadow);opacity:0;transform:translateY(8px);transition:opacity .2s,transform .2s}
.toast.show{opacity:1;transform:translateY(0)}
.sprint{display:flex;flex-direction:column;gap:12px}
.sprint-row{display:flex;flex-direction:column;gap:8px;align-items:stretch;padding:12px;border-radius:var(--radius-md);border:1px solid var(--toast-border);background:var(--surface)}
.sprint-week{font-weight:800;font-size:14px;color:var(--text);align-self:flex-start;display:flex;align-items:center;margin-bottom:2px}
.sprint-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;border-top:1px solid var(--cal-grid);padding-top:8px}
.sprint-col{background:transparent;border-radius:var(--radius-sm);padding:6px}
.sprint-col.is-today{background:var(--today-bg);box-shadow:0 0 0 1px rgba(47,111,67,.25) inset}
.sprint-col.is-today .col-title{color:var(--today-text);font-weight:700}
.sprint-col.is-today .sprint-empty{color:var(--today-text)}
.sprint-col .col-title{font-size:12px;color:var(--muted);margin-bottom:6px}
.sprint-task{padding:4px 6px;border-radius:var(--radius-sm);cursor:default;display:flex;flex-direction:column;gap:4px;align-items:flex-start;transition:background .15s ease,transform .15s ease}
.sprint-task[draggable="true"]{cursor:grab}
.sprint-task.is-dragging{opacity:.6;cursor:grabbing}
.sprint-task:hover{background:var(--hover);transform:translateY(-1px)}
.sprint-task.is-done{opacity:.6}
.sprint-task.is-priority .sprint-task-title{font-weight:700}
.sprint-task.is-priority .sprint-task-title::before{
  content:"●";
  display:inline-block;
  margin-right:6px;
  font-size:11px;
  line-height:1;
  color:var(--accent);
  vertical-align:middle;
}
.sprint-task-title{font-size:13px;font-weight:500;color:var(--text)}
.sprint-task.is-done .sprint-task-title{text-decoration:line-through}
.sprint-project-group{display:flex;flex-direction:column;gap:6px;border-left:1px solid var(--cal-grid);padding-left:10px;margin-left:2px;margin-bottom:10px}
.sprint-project-group:last-child{margin-bottom:0}
.sprint-project-tag{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--muted)}
.sprint-project-emoji{font-size:16px;line-height:1}
.sprint-project-name{font-size:12px;color:var(--muted)}
.sprint-project-group .sprint-task{padding-left:0}
.sprint-col.is-drop-target{background:var(--hover);box-shadow:0 0 0 2px var(--hint) inset}
.sprint-empty{color:var(--muted);font-size:12px;pointer-events:none;text-align:center}
.projects{margin-top:14px;padding:14px 12px;border-radius:var(--radius-md);background:var(--accent-soft);border:1px solid var(--accent-border);box-shadow:0 12px 26px var(--accent-shadow);display:flex;flex-direction:column;gap:8px}
.proj-header{display:flex;align-items:center;justify-content:space-between;gap:10px}
.proj-title{font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.35px;color:var(--accent)}
.proj-add{appearance:none;border:1px solid var(--accent-border);background:rgba(255,255,255,.65);color:var(--accent);padding:6px 10px;border-radius:var(--radius-sm);cursor:pointer;font-weight:600;line-height:1;transition:background .12s ease,transform .08s ease}
body.theme-dark .proj-add{background:rgba(23,27,34,.85)}
.proj-add:hover{background:var(--hover-strong)}
.proj-add:active{transform:translateY(1px)}
.proj-list{display:flex;flex-direction:column;gap:6px}
.proj-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-md);background:rgba(255,255,255,.65);box-shadow:0 1px 0 rgba(0,0,0,.08);cursor:pointer;transition:background .12s ease,transform .08s ease}
body.theme-dark .proj-item{background:rgba(23,27,34,.85);box-shadow:0 1px 0 rgba(0,0,0,.35)}
.proj-item:hover{background:var(--hover-strong);transform:translateY(-1px)}
.proj-item.is-empty{justify-content:center;font-size:13px;color:var(--muted);background:transparent;box-shadow:none;padding:4px 0;cursor:default;transform:none}
.proj-item.is-empty:hover{background:transparent;transform:none}
.proj-item .name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emoji-btn{width:28px;height:28px;border-radius:var(--radius-sm);border:1px solid transparent;background:var(--hover);display:flex;align-items:center;justify-content:center;font-size:18px;cursor:pointer;transition:background .12s ease,border-color .12s ease,transform .08s ease}
.emoji-btn:hover{background:var(--hover-strong);border-color:var(--hint)}
.emoji-btn:active{transform:translateY(1px)}
.emoji-menu{position:fixed;z-index:10000;background:var(--surface);border:1px solid var(--toast-border);box-shadow:var(--shadow);border-radius:var(--radius-md);padding:8px;display:none}
.emoji-menu[aria-hidden="true"]{display:none}
.emoji-menu emoji-picker{width:min(360px,calc(100vw - 24px));max-width:calc(100vw - 24px);max-height:380px;color:var(--text);font-family:inherit;--background-color:var(--surface);--border-color:var(--toast-border);--box-shadow:var(--shadow);--category-button-color:var(--muted);--category-button-active-color:var(--text);--category-button-background-color:var(--hover);--search-background-color:var(--surface);--search-border-color:var(--toast-border)}
.emoji-menu emoji-picker::part(header){border-bottom:1px solid var(--toast-border)}
.emoji-menu emoji-picker::part(search){border-radius:var(--radius-sm)}
.proj-input{width:100%;border:none;border-bottom:1px solid var(--hint);padding:6px 2px;background:transparent;color:var(--text);outline:none}
@keyframes timerButtonPulse{0%,100%{background-color:var(--timer-glow);box-shadow:0 4px 12px var(--timer-shadow)}50%{background-color:var(--timer-glow-strong);box-shadow:0 10px 24px var(--timer-shadow)}}
@keyframes timeSpin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.note-btn,.timer-btn,.due-btn{transition:opacity .12s ease,background-color .18s ease,color .18s ease;transform:none!important}.note-btn:hover,.timer-btn:hover,.due-btn:hover,.note-btn:active,.timer-btn:active,.due-btn:active{transform:none}.timer-btn[data-active="true"],.task.is-timer-active{animation:none}}
@media (max-width:860px){body{grid-template-columns:1fr}.sidebar{position:fixed!important;top:0;left:0;bottom:0;height:100dvh!important;width:min(380px,85vw)!important;transform:translateX(-100%);transition:transform .25s ease;z-index:13000;border-radius:0 20px 20px 0;overflow-y:auto;order:unset!important;padding:16px;box-sizing:border-box;min-width:0;max-width:none}.sidebar.is-open{transform:translateX(0)}.sidebar-resizer{display:none}.sidebar-content{height:100%;min-height:0}.main{order:unset;height:auto;min-height:calc(100vh - 32px)}.completed-dock.is-open{max-height:min(50vh,360px)}}
@media (max-width:480px){.sidebar{width:100vw!important;border-radius:0!important}}

button,input,select,textarea{font:inherit}

.notes-overlay{position:fixed;inset:0;background:rgba(15,17,21,.45);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:11000}
.notes-overlay.is-visible{opacity:1;pointer-events:auto}
.notes-sidebar{position:fixed;top:16px;right:16px;bottom:16px;width:30vw;min-width:30vw;max-width:30vw;max-height:calc(100vh-32px);background:var(--sidebar-bg);border-radius:var(--radius-lg);border:1px solid var(--toast-border);box-shadow:var(--sidebar-shadow);display:flex;flex-direction:column;gap:16px;padding:18px;transform:translateX(calc(100% + 32px));transition:transform .24s ease;z-index:12000;overflow:hidden;box-sizing:border-box}
.notes-sidebar.is-open{transform:translateX(0)}
.notes-header{display:flex;align-items:center;justify-content:space-between;gap:12px}
.notes-label{font-size:12px;font-weight:800;text-transform:uppercase;color:var(--muted);letter-spacing:.35px}
.notes-close{border:none;background:transparent;color:var(--muted);font-size:20px;line-height:1;padding:6px;border-radius:var(--radius-sm);cursor:pointer;font-weight:700}
.notes-close:hover{background:var(--hover);color:var(--text)}
.notes-task{font-weight:600;font-size:18px;line-height:1.35;margin-top:2px;color:var(--text);word-break:break-word}
.notes-input{flex:1;border:1px solid var(--hint);border-radius:var(--radius-md);padding:16px;background:var(--surface);color:var(--text);resize:none;min-height:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.08);line-height:1.5;transition:border-color .12s ease,box-shadow .12s ease;overflow:auto;white-space:pre-wrap;word-break:break-word}
.notes-input::placeholder{color:var(--hint)}
.notes-input:focus{border-color:var(--text);box-shadow:inset 0 1px 2px rgba(0,0,0,.08),0 0 0 2px var(--hint);outline:none}
.notes-input.is-readonly{background:var(--hover);color:var(--muted);box-shadow:inset 0 1px 2px rgba(0,0,0,.04)}
.notes-input.is-readonly:focus{border-color:var(--hint);box-shadow:inset 0 1px 2px rgba(0,0,0,.04)}
.notes-sidebar textarea{font-family:var(--font-ui)}
.notes-sidebar::after{content:"";margin-top:auto}
.notes-sidebar{overflow-y:auto}
.notes-input::-webkit-scrollbar{width:6px}
.notes-input::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:999px}
.notes-input::-webkit-scrollbar-track{background:transparent}
body.notes-open .sidebar,body.notes-open .main,body.notes-open .toast{filter:blur(2px);opacity:.6;transition:filter .2s ease,opacity .2s ease}
@media (max-width:640px){.notes-sidebar{top:0;right:0;bottom:0;left:0;width:100vw;min-width:100vw;max-width:100vw;max-height:100vh;border-radius:0;border:none;padding:20px;transform:translateX(100%)}.notes-sidebar.is-open{transform:translateX(0)}}
.storage-toggle{position:fixed;right:22px;bottom:22px;width:52px;height:52px;border-radius:999px;border:1px solid var(--toast-border);background:var(--sidebar-bg);color:var(--text);font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center;box-shadow:0 14px 32px rgba(15,17,21,.18);cursor:pointer;transition:transform .16s ease,box-shadow .18s ease,background-color .16s ease,color .16s ease,border-color .16s ease;z-index:12050}
.storage-toggle:hover{transform:translateY(-2px);box-shadow:0 18px 42px rgba(15,17,21,.2)}
.storage-toggle:active{transform:translateY(0);box-shadow:0 10px 28px rgba(15,17,21,.2)}
.storage-toggle:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.storage-toggle[data-mode="server"]{background:var(--accent);color:#fff;border-color:var(--accent-border);box-shadow:0 16px 36px var(--accent-shadow)}
.storage-toggle[data-mode="server"]:hover{box-shadow:0 22px 48px var(--accent-shadow)}
.storage-toggle[data-mode="server"]:active{box-shadow:0 14px 32px var(--accent-shadow)}
.storage-toggle.is-loading{pointer-events:none;opacity:.72}
body.theme-dark .storage-toggle{background:rgba(23,27,34,.92);border-color:#2a2e36;box-shadow:0 18px 42px rgba(0,0,0,.38)}
body.theme-dark .storage-toggle:hover{box-shadow:0 24px 56px rgba(0,0,0,.42)}
body.theme-dark .storage-toggle:active{box-shadow:0 14px 34px rgba(0,0,0,.42)}
body.theme-dark .storage-toggle[data-mode="server"]{background:var(--accent);color:#0b1020;border-color:var(--accent-border);box-shadow:0 18px 44px var(--accent-shadow)}
body.theme-dark .storage-toggle[data-mode="server"]:hover{box-shadow:0 24px 58px var(--accent-shadow)}
body.theme-dark .storage-toggle[data-mode="server"]:active{box-shadow:0 16px 40px var(--accent-shadow)}
@media (max-width:960px){.storage-toggle{right:16px;bottom:16px;width:48px;height:48px;font-size:12px}}

/* ── Mobile sidebar ─────────────────────────────────────── */
.sidebar-close-row{display:none}
.sidebar-close{border:none;background:transparent;color:var(--muted);font-size:22px;line-height:1;padding:6px 8px;border-radius:var(--radius-sm);cursor:pointer;font-weight:400}
.sidebar-close:hover{background:var(--hover);color:var(--text)}
.sidebar-toggle{display:none;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;border:none;background:transparent;color:var(--text);border-radius:var(--radius-sm);cursor:pointer;padding:0;transition:background .12s ease}
.sidebar-toggle:hover{background:var(--hover)}
.sidebar-toggle:active{background:var(--hover-strong)}
.sidebar-overlay{position:fixed;inset:0;background:rgba(15,17,21,.45);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:12900}
.sidebar-overlay.is-visible{opacity:1;pointer-events:auto}
@media (max-width:860px){
  .sidebar-toggle{display:flex}
  .sidebar-close-row{display:flex;justify-content:flex-end;margin-bottom:4px}
  .header-top{display:grid;grid-template-areas:"toggle leading finish actions" "stats stats stats stats";grid-template-columns:auto 1fr auto auto;align-items:center;gap:10px 8px;flex-wrap:unset}
  .sidebar-toggle{grid-area:toggle}
  .header-leading{grid-area:leading;min-width:0;flex:unset}
  .header-tools{display:contents}
  .workday-bar{display:contents}
  .workday-finish{grid-area:finish}
  .workday-stats{grid-area:stats;flex-wrap:nowrap;gap:12px}
  .header-actions{grid-area:actions;margin-left:0;flex-wrap:nowrap}
}
@media (max-width:600px){
  .task{grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;align-items:start;gap:6px 8px}
  .task-checkbox{grid-column:1;grid-row:1 / span 2;align-self:start;margin-top:3px}
  .task-main{grid-column:2;grid-row:1}
  .delete-btn{grid-column:3;grid-row:1;align-self:start}
  .task-actions{grid-column:2 / span 2;grid-row:2;justify-content:flex-start}
  .project-layout{flex-direction:column}
  .project-right-col{flex:unset;min-width:unset;max-width:unset;width:100%}
}
