:root{--bg:#eef2f5;--surface:#fff;--surface-2:#f6f8fa;--line:#dde3ea;--line-strong:#b9c3ce;--fg:#16202a;--muted:#5d6b79;--accent:#005398;--accent-soft:#e3eef8;--accent-fg:#fff;--weekend:#fbf4e2;--odd:#fafbfc;--danger:#c62828;--danger-soft:#fdecec;--ok:#2e7d32;--warn:#b26a00;--shadow:0 1px 2px #1020300f,0 4px 14px #1020300f;--f-ui:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--f-display:"Space Grotesk","Inter",system-ui,sans-serif;--r:8px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f151b;--surface:#151d25;--surface-2:#1a242e;--line:#26323e;--line-strong:#3a4856;--fg:#e6edf3;--muted:#93a2b1;--accent:#5aa7e8;--accent-soft:#16304a;--accent-fg:#06121d;--weekend:#1f1f17;--odd:#17202a;--danger:#ff7b72;--danger-soft:#3a1d1d;--ok:#56d364;--warn:#e3b341;--shadow:0 1px 2px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0f151b;--surface:#151d25;--surface-2:#1a242e;--line:#26323e;--line-strong:#3a4856;--fg:#e6edf3;--muted:#93a2b1;--accent:#5aa7e8;--accent-soft:#16304a;--accent-fg:#06121d;--weekend:#1f1f17;--odd:#17202a;--danger:#ff7b72;--danger-soft:#3a1d1d;--ok:#56d364;--warn:#e3b341;--shadow:0 1px 2px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--fg);font-family:var(--f-ui);padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:12px 24px;font-size:14px}[hidden]{display:none!important}button,input{font:inherit;color:inherit}.app{flex-direction:column;gap:10px;max-width:1720px;margin:0 auto;display:flex}.top{flex-wrap:wrap;align-items:center;gap:16px 24px;display:flex}.brand{flex-direction:column;gap:1px;min-width:0;display:flex}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:600}h1{font-family:var(--f-display);letter-spacing:-.01em;margin:0;font-size:22px;font-weight:700;line-height:1.1}h2{font-family:var(--f-display);margin:0;font-size:16px;font-weight:600}h3{font-family:var(--f-display);margin:0;font-size:18px}.weeknav{align-items:center;gap:6px;margin-inline:auto;display:flex}.weeklabel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);align-items:center;gap:8px;min-height:36px;padding:6px 10px;display:flex;position:relative}.weeklabel strong{font-family:var(--f-display);white-space:nowrap;font-size:15px}.weeklabel input{border:1px solid var(--line);background:var(--surface-2);border-radius:6px;max-width:140px;padding:3px 6px;font-size:12px}.savestate{color:var(--muted);align-items:center;gap:7px;max-width:340px;font-size:12px;display:flex}.led{background:var(--muted);border-radius:50%;flex:none;width:8px;height:8px}.savestate.ok .led{background:var(--ok)}.savestate.busy .led{background:var(--warn);animation:1s infinite pulse}.savestate.err{color:var(--danger)}.savestate.err .led{background:var(--danger)}.savestate.warn .led{background:var(--warn)}@keyframes pulse{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.savestate.busy .led{animation:none}}.note{background:var(--accent-soft);border-radius:var(--r);padding:8px 12px;font-size:13px}.toolbar{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;display:flex}.palette,.actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tlabel{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-right:2px;font-size:11px;font-weight:600}.sep{background:var(--line);width:1px;height:22px;margin-inline:2px}.btn{border:1px solid var(--line);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:7px;align-items:center;gap:6px;min-height:32px;padding:6px 10px;font-size:13px;font-weight:500;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--line-strong);background:var(--surface-2)}.btn:focus-visible,.chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.btn.primary:hover:not(:disabled){filter:brightness(1.08);background:var(--accent)}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){background:var(--surface-2);border-color:var(--line)}.btn.danger{color:var(--danger);border-color:var(--danger-soft);background:var(--danger-soft);justify-content:center}.btn.sm{min-height:28px;padding:4px 8px;font-size:12px}.btn.icon{justify-content:center;padding:6px}.chip{border:1px solid var(--line);background:var(--surface);cursor:pointer;letter-spacing:.02em;border-radius:999px;align-items:center;gap:7px;min-height:30px;padding:4px 12px 4px 5px;font-size:12.5px;font-weight:600;display:inline-flex}.chip .dot{background:var(--c);border-radius:50%;width:20px;height:20px;box-shadow:inset 0 0 0 1px #0000001f}.chip.on{background:var(--c);color:var(--t);border-color:var(--c);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--c)}.chip.on .dot{box-shadow:inset 0 0 0 2px var(--t)}.chip.sm{min-height:26px;padding:2px 10px 2px 4px;font-size:12px}.chip.sm .dot{width:16px;height:16px}.confirm{background:var(--danger-soft);border:1px solid var(--danger);color:var(--fg);border-radius:var(--r);flex-wrap:wrap;align-items:center;gap:10px;padding:8px 12px;display:flex}.confirm svg{color:var(--danger)}.layout{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:12px;display:grid}@media (width<=1180px){.layout{grid-template-columns:minmax(0,1fr)}}.board{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:10px;min-width:0;overflow:hidden}.hint{color:var(--muted);border-bottom:1px solid var(--line);background:var(--surface-2);align-items:center;gap:10px;padding:7px 12px;font-size:12px;display:flex}.hint kbd{font-family:var(--f-ui);border:1px solid var(--line-strong);background:var(--surface);border-bottom-width:2px;border-radius:4px;padding:0 4px;font-size:11px}.zoom{gap:2px;margin-left:auto;display:flex}.gridwrap{overflow-x:auto}.grid{--slot:13px;-webkit-user-select:none;user-select:none;grid-template-columns:76px repeat(7,minmax(104px,1fr)) 76px;min-width:900px;display:grid;position:relative}.hcell{z-index:3;background:var(--surface);border-bottom:2px solid var(--line-strong);flex-direction:column;justify-content:center;align-items:center;gap:1px;min-height:46px;padding:6px 4px;display:flex;position:sticky;top:0}.hcell.corner{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-size:10.5px;font-weight:600}.hcell.day{border-left:1px solid var(--line)}.hcell.we{background:var(--weekend)}.dname{font-family:var(--f-display);text-transform:uppercase;letter-spacing:.04em;font-size:13.5px;font-weight:700}.dmeta{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.hcell.today .dname{color:var(--accent)}.hcell.today{box-shadow:inset 0 3px 0 var(--accent)}.times{background:var(--surface-2);flex-direction:column;display:flex}.times.right{border-left:1px solid var(--line-strong)}.tl{height:var(--slot);font-size:min(10.5px,calc(var(--slot) - 2px));line-height:var(--slot);text-align:center;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;border-top:1px solid #0000;overflow:hidden}.tl span{opacity:.7}.tl.hr{color:var(--fg);border-top-color:var(--line-strong);font-weight:600}.col{border-left:1px solid var(--line);cursor:crosshair;touch-action:none;position:relative}.col.odd{background:var(--odd)}.col.we{background:var(--weekend)}.grid.ro .col{cursor:default}@media (pointer:coarse){.col{touch-action:pan-x pan-y}}.cell{height:var(--slot);border-top:1px solid var(--line);opacity:.55}.cell.hr{border-top-color:var(--line-strong);opacity:1}.cell:first-child{border-top-color:#0000}.blk{background:var(--c);color:var(--t);cursor:grab;touch-action:none;z-index:1;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:0;display:flex;position:absolute;overflow:hidden;box-shadow:0 1px #0000001f,inset 0 0 0 1px #00000014}.blk:hover{box-shadow:0 2px 8px #0000002e,inset 0 0 0 1px #0000001f}.bname{letter-spacing:.03em;white-space:nowrap;pointer-events:none;text-overflow:ellipsis;align-items:center;gap:4px;max-width:100%;padding-inline:4px;font-size:12.5px;font-weight:700;line-height:1.15;display:flex;overflow:hidden}.btime{opacity:.85;font-variant-numeric:tabular-nums;pointer-events:none;white-space:nowrap;font-size:10.5px}.blk.tiny .bname{font-size:11px}.blk.sel{outline:2.5px solid var(--fg);outline-offset:1px;z-index:2}.blk.clash{outline:2.5px dashed var(--danger);outline-offset:1px}.blk.ghost{opacity:.88;z-index:4;cursor:grabbing;box-shadow:0 8px 22px #00000040}.grid.dragging,.grid.dragging *{cursor:grabbing!important}.hdl{cursor:ns-resize;z-index:2;height:7px;position:absolute;left:0;right:0}.hdl.top{top:0}.hdl.bot{bottom:0}.blk:hover .hdl.bot:after,.blk.sel .hdl.bot:after,.blk:hover .hdl.top:after,.blk.sel .hdl.top:after{content:"";background:var(--t);opacity:.55;border-radius:2px;width:22px;height:3px;margin-left:-11px;position:absolute;left:50%}.hdl.top:after{top:2px}.hdl.bot:after{bottom:2px}.del{color:#fff;cursor:pointer;z-index:3;background:#00000047;border:none;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;padding:0;display:none;position:absolute;top:3px;right:3px}.blk:hover .del,.blk.sel .del{display:flex}.blk.tiny .del{margin-top:-9px;top:50%}.del:hover{background:var(--danger)}.emptyweek{z-index:5;pointer-events:none;justify-content:center;align-items:flex-start;padding-top:80px;display:flex;position:absolute;inset:46px 76px 0}.emptyweek .card{pointer-events:auto;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:12px;flex-direction:column;gap:10px;max-width:520px;padding:20px 22px;display:flex}.emptyweek p{color:var(--muted);margin:0}.row{flex-wrap:wrap;gap:8px;display:flex}.side{flex-direction:column;gap:12px;min-width:0;display:flex;position:sticky;top:12px}@media (width<=1180px){.side{position:static}}.panel{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:10px;flex-direction:column;gap:10px;min-width:0;padding:14px;display:flex}.inspector{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.ph{align-items:center;gap:10px;display:flex}.ph>div{flex:1;min-width:0}.ph strong{font-family:var(--f-display);font-size:16px}.swatch{border-radius:7px;flex:none;width:26px;height:26px;box-shadow:inset 0 0 0 1px #0000001f}.swatch.sm{vertical-align:-1px;border-radius:3px;width:12px;height:12px;margin-right:7px;display:inline-block}.muted{color:var(--muted)}.small{margin:0;font-size:12px}.field{grid-template-columns:auto 1fr;align-items:center;gap:6px 10px;display:grid}.field.col{flex-direction:column;align-items:stretch;display:flex}.flabel{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-size:11px;font-weight:600}.stepper{align-items:center;gap:8px;display:flex}.stepper b{text-align:center;font-variant-numeric:tabular-nums;min-width:44px;font-size:15px}.chips{flex-wrap:wrap;gap:5px;display:flex}.days7{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.days7 .btn{justify-content:center;padding-inline:0}.sumhead{justify-content:space-between;align-items:flex-end;gap:10px;display:flex}.bigtotal{flex-direction:column;align-items:flex-end;line-height:1.1;display:flex}.bigtotal b{font-family:var(--f-display);font-variant-numeric:tabular-nums;font-size:24px}.bigtotal span{color:var(--muted);font-size:12px}.warnbox{background:var(--danger-soft);color:var(--fg);border:1px solid var(--danger);border-radius:var(--r);gap:10px;padding:9px 11px;font-size:12.5px;display:flex}.warnbox svg{color:var(--danger);flex:none;margin-top:1px}.warnbox strong{margin-bottom:2px;display:block}.tablewrap{overflow-x:auto}table.sum{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:12.5px}.sum th{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--line-strong);text-align:center;padding:5px 3px;font-size:11px;font-weight:600}.sum th:first-child,.sum td:first-child{text-align:left;white-space:nowrap}.sum td{border-bottom:1px solid var(--line);text-align:center;padding:6px 3px}.sum td.zero{color:var(--line-strong)}.sum td em{color:var(--muted);font-size:11px;font-style:normal}.sum .tot{font-weight:700}.sum tfoot td{border-bottom:none;border-top:2px solid var(--line-strong);font-weight:700}.detail{flex-direction:column;gap:10px;max-height:420px;padding-right:2px;display:flex;overflow:auto}.dh{align-items:center;gap:2px;font-size:13px;display:flex}.dh .muted{margin-left:auto;font-size:12px}.drow ul{gap:2px;margin:4px 0 0;padding:0;list-style:none;display:grid}.drow li{cursor:pointer;font-variant-numeric:tabular-nums;border-radius:5px;grid-template-columns:38px 1fr auto;gap:6px;padding:3px 6px;font-size:12.5px;display:grid}.drow li:hover{background:var(--surface-2)}.drow li.on{background:var(--accent-soft)}.drow li.clash{color:var(--danger)}.dd{color:var(--muted);font-weight:600}.hh{color:var(--muted)}.setbase{align-self:flex-start}.overlay{z-index:50;background:#0a141e6b;justify-content:center;align-items:flex-start;padding:60px 16px;display:flex;position:fixed;inset:0;overflow:auto}.modal{background:var(--surface);border-radius:12px;flex-direction:column;gap:12px;width:min(620px,100%);padding:18px;display:flex;box-shadow:0 20px 60px #0000004d}.modal-h{justify-content:space-between;align-items:center;display:flex}.modal p{margin:0;font-size:13px}.wlist{flex-direction:column;gap:6px;display:flex}.wrow,.wadd{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.wrow{border:1px solid var(--line);border-radius:var(--r);padding:6px 8px}.wrow.off{opacity:.6}input[type=color]{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:6px;width:36px;height:32px;padding:2px}input[type=text]{border:1px solid var(--line);background:var(--surface-2);border-radius:6px;min-width:0;padding:6px 9px}input[type=text]:focus,input[type=date]:focus{outline:2px solid var(--accent);outline-offset:0}.wname{letter-spacing:.03em;flex:1;font-weight:700}.wadd input[type=text]{flex:1}.wcount{color:var(--muted);font-size:12px}.switch{cursor:pointer;align-items:center;gap:6px;font-size:12.5px;display:flex}.toast{left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));background:var(--fg);color:var(--bg);z-index:60;border-radius:999px;max-width:calc(100% - 32px);padding:9px 16px;font-size:13px;position:fixed;transform:translate(-50%);box-shadow:0 8px 24px #00000040}@media (width<=640px){h1{font-size:19px}.weeknav{margin-inline:0}.weeklabel strong{white-space:normal;font-size:13px}.hint{flex-wrap:wrap}}.usermenu{align-items:center;gap:6px;display:flex}.who{text-overflow:ellipsis;flex-direction:column;align-items:flex-end;max-width:200px;font-size:12.5px;font-weight:600;line-height:1.15;display:flex;overflow:hidden}.who em{color:var(--muted);font-size:11px;font-style:normal;font-weight:500}.auth{justify-content:center;align-items:center;min-height:calc(100vh - 40px);display:flex}.authcard{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;flex-direction:column;gap:14px;width:min(400px,100%);padding:26px;display:flex}.authcard h1{font-size:22px}.authcard form{flex-direction:column;gap:10px;display:flex}.authcard label{color:var(--muted);flex-direction:column;gap:4px;font-size:12.5px;font-weight:600;display:flex}.authcard input{border:1px solid var(--line);background:var(--surface-2);color:var(--fg);border-radius:7px;padding:9px 11px;font-size:14px}.authcard input:focus{outline:2px solid var(--accent);outline-offset:0}.authcard .btn{justify-content:center;min-height:38px}.linkbtn{color:var(--accent);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:13px;text-decoration:underline}.msg{background:var(--accent-soft);border-radius:7px;padding:8px 10px;font-size:13px}.msg.err{background:var(--danger-soft);color:var(--danger)}.ulist{flex-direction:column;gap:6px;display:flex}.urow{border:1px solid var(--line);border-radius:var(--r);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.urow .uinfo{min-width:0}.urow .uinfo div{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.urow select{border:1px solid var(--line);background:var(--surface-2);color:var(--fg);font:inherit;border-radius:6px;padding:5px 6px;font-size:13px}.badge{background:var(--danger-soft);color:var(--danger);border-radius:999px;padding:2px 7px;font-size:11px;font-weight:600}.printhead{display:none}@media print{@page{size:A4 portrait;margin:7mm}body{background:#fff;padding:0;font-size:9pt}:root{--bg:#fff;--surface:#fff;--surface-2:#f4f6f8;--line:#d5dbe2;--line-strong:#9aa6b2;--fg:#111;--muted:#444;--weekend:#fff7e0;--odd:#fff}.top,.toolbar,.confirm,.note,.side,.hint,.toast,.overlay,.emptyweek,.del,.hdl,.dhrs{display:none!important}.app{gap:2mm;max-width:none}.printhead{border-bottom:2px solid #005398;justify-content:space-between;align-items:baseline;padding-bottom:1.5mm;display:flex}.printhead strong{font-family:var(--f-display);color:#005398;font-size:14pt}.printhead span{font-size:11pt;font-weight:600}.layout{display:block}.board{box-shadow:none;border:none;border-radius:0;overflow:visible}.gridwrap{overflow:visible}.grid{grid-template-columns:15mm repeat(7,1fr) 15mm;min-width:0;--slot:4.05mm!important}.hcell{min-height:9mm;padding:1mm;position:static}.dname{font-size:8.5pt}.dmeta{font-size:7pt}.tl{font-size:6.3pt}.blk{box-shadow:none;border-radius:1.2mm;outline:none!important}.bname{font-size:8pt}.btime{font-size:6.5pt}.blk.sel{outline:none}.hcell.today{box-shadow:none}.hcell.today .dname{color:inherit}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
