@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #edf0ec;--bg-tint: radial-gradient(1100px 520px at 88% -12%, #e2ece6 0%, transparent 56%), radial-gradient(900px 460px at -8% -6%, #ece8db 0%, transparent 50%), linear-gradient(180deg, #f1f3f0 0%, #e9ede9 100%);--surface: #ffffff;--surface-2: #f3f5f2;--ink: #172623;--muted: #5d6d69;--teal: #1a534f;--teal-2: #256b64;--brand-fill: #1a534f;--on-brand: #ffffff;--accent: #b6512f;--gold: #b8891f;--line: #dce2dd;--line-soft: #e7ebe7;--radius: 16px;--radius-sm: 10px;--radius-lg: 20px;--shadow-sm: 0 1px 2px rgba(20, 43, 40, .05);--shadow: 0 1px 2px rgba(20, 43, 40, .04), 0 6px 20px -6px rgba(20, 43, 40, .1);--shadow-lg: 0 2px 6px rgba(20, 43, 40, .08), 0 24px 64px -16px rgba(20, 43, 40, .28);--focus: #1a534f;--ease: cubic-bezier(.2, .7, .2, 1);--spring: cubic-bezier(.34, 1.3, .5, 1);--font: "Inter Variable", "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--chart-sat: #009688;--chart-sun: #c25026;--chart-aft: #c08c14;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #0c1a19;--bg-tint: radial-gradient(1200px 600px at 100% -10%, #12302d 0%, transparent 60%), radial-gradient(900px 500px at -10% 0%, #0f2523 0%, transparent 55%);--surface: #122726;--surface-2: #16302e;--ink: #eef2f0;--muted: #a2b5b1;--teal: #86d6cd;--teal-2: #6fc7bd;--brand-fill: #2c6e63;--on-brand: #ffffff;--accent: #ec8f66;--gold: #e6c25a;--line: #244543;--line-soft: #1d3937;--shadow-sm: 0 1px 2px rgba(0,0,0,.3);--shadow: 0 1px 2px rgba(0,0,0,.3), 0 8px 24px rgba(0,0,0,.35);--shadow-lg: 0 12px 40px rgba(0,0,0,.5);--focus: #86d6cd;--chart-sat: #2fa89c;--chart-sun: #dd7143;--chart-aft: #bd8a24}}*{box-sizing:border-box}html{font-size:17px}body{margin:0;background:var(--bg);background-image:var(--bg-tint);background-attachment:fixed;color:var(--ink);font-family:var(--font);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;line-height:1.5}::selection{background:color-mix(in srgb,var(--teal) 24%,transparent)}*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--muted) 45%,transparent) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--muted) 40%,transparent);border-radius:999px;border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-track{background:transparent}button{font:inherit;font-weight:550;cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:var(--radius-sm);padding:8px 14px;transition:transform .12s var(--spring),border-color .15s var(--ease),background .15s var(--ease),box-shadow .15s var(--ease),filter .15s var(--ease)}button:hover{border-color:color-mix(in srgb,var(--teal) 45%,var(--line));background:color-mix(in srgb,var(--teal) 5%,var(--surface));box-shadow:var(--shadow-sm)}button:active{transform:translateY(1px) scale(.99)}button.primary{background:linear-gradient(180deg,color-mix(in srgb,var(--brand-fill) 82%,#ffffff30),var(--brand-fill));color:var(--on-brand);border-color:transparent;box-shadow:inset 0 1px #ffffff29,var(--shadow-sm)}button.primary:hover{filter:brightness(1.08);background:var(--brand-fill)}button.ghost{background:transparent;border-color:transparent;box-shadow:none}button.ghost:hover{background:color-mix(in srgb,var(--teal) 7%,transparent);border-color:transparent}button.tiny{padding:3px 9px;font-size:.78rem}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:8px}input{font:inherit;padding:9px 11px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink)}input:focus-visible{border-color:var(--teal)}.app{max-width:1280px;margin:0 auto;padding:20px 22px 56px}.topbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 4px 14px;position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 72%,transparent);-webkit-backdrop-filter:blur(14px) saturate(1.5);backdrop-filter:blur(14px) saturate(1.5);border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent);margin-bottom:12px}.brand{display:flex;flex-direction:column;line-height:1.15}.brand h1{font-size:1.35rem;margin:0;letter-spacing:-.022em;font-weight:800;background:linear-gradient(115deg,var(--teal) 30%,var(--teal-2) 75%,color-mix(in srgb,var(--teal-2) 60%,var(--gold)) 110%);-webkit-background-clip:text;background-clip:text;color:transparent}.brand .sub{font-size:.78rem;color:var(--muted);letter-spacing:.015em}.spacer{flex:1}.who{font-size:.85rem;color:var(--muted);display:inline-flex;align-items:center;gap:6px}.who select{font:inherit;padding:6px 8px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);color:var(--ink);transition:border-color .15s var(--ease)}.who select:hover{border-color:var(--teal)}.hint{font-size:.8rem;color:var(--muted);margin:2px 0 14px}.lock-note{color:var(--accent);font-weight:600}.ro-badge{font-size:.74rem;font-weight:700;padding:5px 11px;border-radius:999px;color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);white-space:nowrap}.sync-badge{font-size:.74rem;font-weight:700;padding:5px 11px;border-radius:999px;color:var(--gold);background:color-mix(in srgb,var(--gold) 12%,transparent);border:1px solid color-mix(in srgb,var(--gold) 35%,transparent);white-space:nowrap}.due-chip{color:var(--gold);border:1px solid color-mix(in srgb,var(--gold) 40%,transparent);background:color-mix(in srgb,var(--gold) 10%,transparent);border-radius:999px;white-space:nowrap}.due-chip:hover{border-color:var(--gold)}.monthnav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}.nav-left,.nav-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.nav-btn{width:38px;height:38px;padding:0;font-size:1.1rem;line-height:1;border-radius:50%;display:inline-flex;align-items:center;justify-content:center}.monthnav .label{font-size:1.22rem;font-weight:750;min-width:11ch;text-align:center;letter-spacing:-.018em;font-variant-numeric:tabular-nums}.coverage{font-size:.78rem;font-weight:600;padding:5px 11px;border-radius:999px;border:1px solid var(--line)}.coverage.ok{color:var(--teal);background:color-mix(in srgb,var(--teal) 10%,transparent);border-color:color-mix(in srgb,var(--teal) 25%,transparent)}.coverage.warn{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);border-color:color-mix(in srgb,var(--accent) 30%,transparent)}.layout{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}.layout>*{min-width:0}.layout-2{margin-top:18px}@media(min-width:900px){.layout{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);align-items:start}.layout-2{grid-template-columns:minmax(0,1fr) minmax(0,1.35fr)}}.card{background:var(--surface);border:1px solid color-mix(in srgb,var(--line) 85%,transparent);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.card h2{margin:0 0 12px;font-size:.7rem;color:var(--muted);letter-spacing:.11em;text-transform:uppercase;font-weight:700}.card-head h2{margin-bottom:0}.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:5px;color:#12211f;font-weight:600;flex:none;box-shadow:inset 0 0 0 1px #0000001a;letter-spacing:.02em}.cal-head,.cal-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.cal-head div{text-align:center;font-size:.7rem;color:var(--muted);padding:2px 0 8px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.cal-grid{display:flex;flex-direction:column;gap:7px}.cal-row{gap:7px}.day{min-width:0;min-height:94px;border:1px solid var(--line-soft);border-radius:13px;padding:8px 8px 9px;background:var(--surface);display:flex;flex-direction:column;gap:6px;text-align:left;align-items:stretch;transition:transform .14s var(--spring),box-shadow .15s var(--ease),border-color .15s var(--ease),opacity .15s var(--ease)}.day:not(.out):hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:color-mix(in srgb,var(--teal) 55%,var(--line));z-index:1}.day.out{opacity:.32}.day.weekend{background:color-mix(in srgb,var(--surface-2) 85%,var(--surface))}.day.today{border-color:color-mix(in srgb,var(--accent) 55%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 30%,transparent);background:color-mix(in srgb,var(--accent) 3%,var(--surface))}.day.uncovered{background:var(--surface);border-style:dashed;border-color:color-mix(in srgb,var(--muted) 40%,transparent)}.day.dimmed{opacity:.32;filter:grayscale(.4)}.day.lit{border-color:var(--teal);box-shadow:0 0 0 2px color-mix(in srgb,var(--teal) 45%,transparent),var(--shadow)}.day .dnum{font-size:.8rem;color:var(--muted);display:flex;justify-content:space-between;align-items:center}.day .dnum .dn{font-weight:700;color:var(--ink)}.day.today .dnum .dn{background:var(--accent);color:#fff;border-radius:999px;min-width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;font-size:.72rem}.day .badge{font-size:.7rem;color:var(--accent)}.chips{display:flex;flex-direction:column;gap:4px}.chip{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;font-weight:600;padding:3px 9px 3px 4px;border-radius:999px;background:color-mix(in srgb,var(--c, #a9c2bd) 18%,var(--surface));color:var(--ink);border:1px solid color-mix(in srgb,var(--c, #a9c2bd) 38%,transparent);border-left:1px solid color-mix(in srgb,var(--c, #a9c2bd) 38%,transparent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chip .chip-name{overflow:hidden;text-overflow:ellipsis}.chip .avatar{border-radius:999px;box-shadow:none}@media(max-width:560px){.day{min-height:74px;padding:5px 5px 6px;border-radius:10px}.day .dnum{font-size:.72rem}.chip{font-size:.66rem;padding:2px 6px;gap:4px}.chip .avatar{display:none}.cal-grid,.cal-row{gap:4px}.topbar{row-gap:6px}.card{overflow-x:auto;padding:12px}table.balance{font-size:.76rem}.wk-col{min-width:64px}}.chip.gap{justify-content:center;padding:3px 8px;color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface));border:1px dashed color-mix(in srgb,var(--accent) 45%,transparent);border-left:1px dashed color-mix(in srgb,var(--accent) 45%,transparent);font-weight:700;font-size:.7rem;letter-spacing:.02em}.day.shared{box-shadow:inset 0 0 0 2px var(--gold)}.day.shared:hover{box-shadow:inset 0 0 0 2px var(--gold),var(--shadow)}.holiday-dot{color:var(--gold)}table.balance{width:100%;border-collapse:collapse;font-size:.86rem;table-layout:auto}table.balance th,table.balance td{padding:8px 6px;text-align:right;border-bottom:1px solid var(--line-soft)}table.balance th:first-child,table.balance td:first-child{text-align:left;width:40%}table.balance td:not(:first-child),table.balance th:not(:first-child){white-space:nowrap;font-variant-numeric:tabular-nums;min-width:3ch}table.balance thead th{color:var(--muted);font-weight:700;font-size:.68rem;text-transform:uppercase;letter-spacing:.05em}table.balance tbody tr:last-child td{border-bottom:none}.prow{cursor:pointer;transition:background .14s var(--ease)}.prow:hover{background:color-mix(in srgb,var(--teal) 6%,transparent)}.prow.on{background:color-mix(in srgb,var(--teal) 12%,transparent);box-shadow:inset 3px 0 0 var(--teal)}.name-cell{display:flex;align-items:center;gap:8px}.pname{font-weight:600}.tag{font-size:.66rem}.tag.hi{color:var(--accent)}.tag.lo{color:var(--teal)}.wk-col{min-width:96px}.wk-wrap{display:inline-flex;align-items:center;gap:8px;justify-content:flex-end;width:100%}.wk-bar{height:8px;width:var(--w, 0%);min-width:2px;max-width:52px;flex:0 1 52px;background:linear-gradient(90deg,color-mix(in srgb,var(--c) 55%,transparent),var(--c));border-radius:999px}.wk-num{font-variant-numeric:tabular-nums;font-weight:700;min-width:2ch;text-align:right}.spotlight-hint{margin:12px 0 0}.chart{width:100%;height:auto}.chart text{fill:var(--muted);font-size:9px;font-weight:600}.pattern-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line-soft);flex-wrap:wrap}.pattern-row:last-child{border-bottom:none}.pattern-row .wd{width:3.6ch;font-weight:700;color:var(--teal)}.toggle{font-size:.78rem;padding:4px 10px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--muted);transition:all .14s var(--ease)}.toggle:hover{border-color:var(--teal);color:var(--ink)}.toggle[aria-pressed=true]{color:#10201e;border-color:transparent;font-weight:700}.avatar-toggle{display:inline-flex;align-items:center;gap:6px;padding-left:4px}.avatar-toggle.mini{padding:3px;border-radius:50%;opacity:.5;border-color:transparent}.avatar-toggle.mini:hover{opacity:1;border-color:var(--teal)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a1c1a73;display:flex;align-items:center;justify-content:center;padding:16px;z-index:50;-webkit-backdrop-filter:blur(7px) saturate(1.2);backdrop-filter:blur(7px) saturate(1.2);animation:fade .15s var(--ease)}.modal{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:min(460px,100%);padding:22px;border:1px solid color-mix(in srgb,var(--line) 80%,transparent);animation:pop .22s var(--spring)}.modal h3{margin:0 0 4px;color:var(--teal);font-size:1.08rem;letter-spacing:-.015em;font-weight:750}.modal .row{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.modal .actions{display:flex;gap:8px;justify-content:flex-end;margin-top:18px;flex-wrap:wrap}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(12px) scale(.965)}}.modal.wide{width:min(560px,100%)}.field-grid{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-top:6px}.fl{display:flex;flex-direction:column;gap:5px;font-size:.8rem;color:var(--muted)}.fl>span{font-weight:600}.fl input[type=date]{min-width:150px}.month-btn{align-self:flex-end;margin-bottom:2px}.seg{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}.seg button{border:none;border-radius:0;background:var(--surface);color:var(--muted);padding:8px 16px}.seg button.on{background:var(--teal);color:#fff;font-weight:600}.seg button+button{border-left:1px solid var(--line)}.affected{flex:1;font-size:.82rem;color:var(--muted);font-weight:600}.data-panel{width:min(340px,92vw)}.data-actions{display:flex;flex-direction:column;gap:6px;margin:6px 0 4px}.data-actions button{justify-content:flex-start;text-align:left}.danger-zone{margin-top:12px;padding-top:12px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px}.dz-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:var(--accent);font-weight:700}button.danger{color:#fff;background:var(--accent);border-color:transparent}button.danger:hover{filter:brightness(1.06);border-color:transparent}.login-wrap{min-height:70vh;display:flex;align-items:center;justify-content:center}.login{width:min(360px,100%);text-align:center}.login .field{display:flex;flex-direction:column;gap:8px;margin:14px 0;text-align:left}.error{color:var(--accent);font-size:.85rem;min-height:1.2em}.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--surface);padding:8px;border-radius:8px;z-index:100}.offline-tools{display:flex;align-items:center;gap:4px;position:relative;flex-wrap:wrap;min-width:0}.history-panel{position:absolute;top:calc(100% + 8px);right:0;width:min(560px,92vw);max-height:60vh;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:14px;z-index:60}.history-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.history-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.history-list li{display:grid;grid-template-columns:auto auto 1fr;gap:8px;align-items:baseline;font-size:.82rem;padding:5px 7px;border-radius:var(--radius-sm)}.history-list li:nth-child(odd){background:color-mix(in srgb,var(--teal) 5%,transparent)}.history-list .h-ts{color:var(--muted);white-space:nowrap}.history-list .h-actor{font-weight:700;color:var(--teal)}.history-list .h-action{color:var(--accent)}.history-list .h-detail{grid-column:1 / -1;color:var(--ink);opacity:.8;font-family:ui-monospace,monospace;font-size:.78rem}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}.note-dot{font-size:.7rem}.note-area{font:inherit;width:100%;resize:vertical;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink)}.note-area:focus-visible{border-color:var(--teal)}.link-btn{border:none;background:none;color:var(--teal);padding:0 6px;font-size:.78rem;cursor:pointer;text-decoration:underline;box-shadow:none}.link-btn:hover{border:none;box-shadow:none;filter:brightness(1.1)}.seg.wrap{flex-wrap:wrap;border-radius:var(--radius-sm)}.theme-select select{min-width:8ch}[data-theme=sand]{--brand-fill:#a8632e;--on-brand:#ffffff;--chart-sat:#009688;--chart-sun:#c25026;--chart-aft:#c08c14;--bg:#efe7d6;--bg-tint:linear-gradient(180deg,#f3ecdd,#e9e0cc);--surface:#fffdf7;--surface-2:#f6efe0;--ink:#3a2e22;--muted:#8a7a63;--teal:#a8632e;--teal-2:#c2743a;--accent:#b6512f;--gold:#c79a3a;--line:#e2d7c1;--line-soft:#ece3d1;--focus:#a8632e;color-scheme:light}[data-theme=plum]{--brand-fill:#6d3f8e;--on-brand:#ffffff;--chart-sat:#009688;--chart-sun:#c25026;--chart-aft:#c08c14;--bg:#efe9f0;--bg-tint:linear-gradient(180deg,#f2ecf3,#e9e1ec);--surface:#fffbfe;--surface-2:#f6eff6;--ink:#2e2333;--muted:#786a80;--teal:#6d3f8e;--teal-2:#7f4fa2;--accent:#b5477e;--gold:#c08a2e;--line:#e4d9e6;--line-soft:#ece4ed;--focus:#6d3f8e;color-scheme:light}[data-theme=forest]{--brand-fill:#2f6b3a;--on-brand:#ffffff;--chart-sat:#009688;--chart-sun:#c25026;--chart-aft:#c08c14;--bg:#e7eee6;--bg-tint:linear-gradient(180deg,#eaf0e8,#e0e9de);--surface:#fbfdfa;--surface-2:#eef4ec;--ink:#1e2b1f;--muted:#5f7360;--teal:#2f6b3a;--teal-2:#3a8047;--accent:#b5652f;--gold:#b8921f;--line:#d9e3d6;--line-soft:#e6ede3;--focus:#2f6b3a;color-scheme:light}[data-theme=slate]{--brand-fill:#2c5f7c;--on-brand:#ffffff;--chart-sat:#009688;--chart-sun:#c25026;--chart-aft:#c08c14;--bg:#e9ecef;--bg-tint:linear-gradient(180deg,#eef1f3,#e4e8eb);--surface:#ffffff;--surface-2:#f1f4f6;--ink:#1f2833;--muted:#5f6b76;--teal:#2c5f7c;--teal-2:#356f8f;--accent:#c0603a;--gold:#b8901f;--line:#dbe0e5;--line-soft:#e7ebef;--focus:#2c5f7c;color-scheme:light}[data-theme=midnight]{--brand-fill:#2a5f88;--on-brand:#ffffff;--chart-sat:#2fa89c;--chart-sun:#dd7143;--chart-aft:#bd8a24;--bg:#0c1420;--bg-tint:radial-gradient(1000px 500px at 100% -10%, #142236 0%, transparent 60%);--surface:#141e2e;--surface-2:#1a2740;--ink:#e8eef7;--muted:#93a4bd;--teal:#6db3e6;--teal-2:#5aa3db;--accent:#e88f66;--gold:#e6c25a;--line:#26344b;--line-soft:#1e2b40;--shadow-sm:0 1px 2px rgba(0,0,0,.4);--shadow:0 8px 24px rgba(0,0,0,.45);--shadow-lg:0 16px 48px rgba(0,0,0,.6);--focus:#6db3e6;color-scheme:dark}.size-ctl{display:inline-flex;gap:2px}.size-ctl button{font-weight:700;padding:4px 8px}.ctx-menu{position:fixed;z-index:80;min-width:180px;padding:5px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:1px;animation:pop .12s var(--ease)}.ctx-head{font-size:.72rem;color:var(--muted);font-weight:700;padding:4px 8px}.ctx-item{display:flex;align-items:center;gap:8px;border:none;background:none;box-shadow:none;text-align:left;padding:7px 8px;border-radius:6px;font-size:.85rem;width:100%}.ctx-item:hover{background:color-mix(in srgb,var(--teal) 12%,transparent);border:none;box-shadow:none}.ctx-sep{height:1px;background:var(--line);margin:4px 2px}.people-list{display:flex;flex-direction:column;gap:8px;margin:6px 0;max-height:52vh;overflow:auto}.person-row{display:flex;align-items:center;gap:10px}.color-input{width:34px;height:34px;padding:2px;border-radius:8px;border:1px solid var(--line);background:var(--surface);cursor:pointer;flex:none}.name-input{flex:1;min-width:0}.mgr-badge{font-size:.9rem}.active-toggle{display:inline-flex;align-items:center;gap:5px;font-size:.8rem;color:var(--muted);white-space:nowrap}.active-toggle input{width:auto}.add-row{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.modal.season{width:min(720px,100%);max-height:88vh;overflow:auto}.season-head{display:flex;align-items:center;justify-content:space-between}.season-legend{display:flex;gap:16px;margin:12px 0 6px;font-size:.8rem;color:var(--muted)}.season-legend .sw{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:5px;vertical-align:middle}.season-chart{display:flex;flex-direction:column;gap:8px;margin:8px 0 16px}.season-row{display:grid;grid-template-columns:130px 1fr 42px;gap:12px;align-items:center}.season-name{display:flex;align-items:center;gap:8px;font-weight:600;font-size:.86rem;overflow:hidden}.season-name span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.season-bars{display:flex;flex-direction:column;gap:4px}.sbar-track{display:flex;align-items:center;gap:8px;height:12px}.sbar{height:12px;border-radius:999px;min-width:2px;transition:width .2s var(--ease)}.sbar.sat{background:var(--chart-sat)}.sbar.sun{background:var(--chart-sun)}.sbar.aft{background:var(--chart-aft)}.sbar-num{font-size:.74rem;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}.season-total{text-align:right;font-weight:800;font-variant-numeric:tabular-nums}.season-table{margin-top:8px}@media print{@page{size:A4 landscape;margin:8mm}:root{--surface: #fff;--surface-2: #f3f3f3;--bg: #fff;--ink: #000;--muted: #555;--line: #999;--line-soft: #bbb}html{font-size:13pt}body{background:#fff!important;background-image:none!important}.topbar,.offline-tools,.skip,.ctx-menu,.monthnav .nav-btn,.monthnav .ghost,.monthnav .coverage,.layout>.card:not(.cal-card),.layout-2{display:none!important}.app{max-width:none;padding:0}.layout{display:block}.monthnav{justify-content:center;margin-bottom:3mm}.monthnav .label{font-size:20pt;font-weight:800}.card.cal-card{box-shadow:none;border:none;padding:0;break-inside:avoid}.cal-head div{font-size:10pt;color:#333;padding-bottom:2mm}.cal-grid{gap:1.6mm;height:165mm}.cal-row{gap:1.6mm;break-inside:avoid;flex:1}.day{min-height:0;border:.5pt solid #999;border-radius:1.5mm;background:#fff;padding:1.5mm;gap:1.2mm}.day:hover{transform:none;box-shadow:none}.day.weekend{background:#f2f2f2;print-color-adjust:exact;-webkit-print-color-adjust:exact}.day.out{opacity:.18}.day.dimmed{opacity:1;filter:none}.day.lit{box-shadow:none;border-color:#999}.day.today{box-shadow:none}.day .dnum .dn{font-size:11pt}.day.today .dnum .dn{background:none;color:#000;min-width:0;height:auto}.chip{font-size:10.5pt;font-weight:600;padding:.8mm 2mm;border:none;border-left:2mm solid var(--c, #999);border-radius:1mm;background:#fff;color:#000;print-color-adjust:exact;-webkit-print-color-adjust:exact}.chip .avatar{display:none}.day.shared{box-shadow:inset 0 0 0 1.5pt #b8891f;print-color-adjust:exact;-webkit-print-color-adjust:exact}}
