:root{--bg: #f2f4f7;--surface: #ffffff;--sunk: #e8ebf0;--ink: #172031;--muted: #5b6678;--line: #d8dde6;--accent: #2a4fd6;--accent-ink: #ffffff;--accent-soft: #e2e8fc;--work: #16805a;--work-soft: #d9f1e5;--pause: #a86400;--pause-soft: #fbebcf;--danger: #c03a28;--danger-soft: #fbe0da;--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #0f131a;--surface: #171d26;--sunk: #1e2530;--ink: #e5e9f0;--muted: #97a2b5;--line: #2b3442;--accent: #7b97ff;--accent-ink: #0b1020;--accent-soft: #1f2a4d;--work: #3fcf8f;--work-soft: #173828;--pause: #f2ad45;--pause-soft: #3a2b12;--danger: #f36f5a;--danger-soft: #3d1c17;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--bg);color:var(--ink);font:15px/1.45 var(--font)}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3{text-wrap:balance;margin:0}h2{font-size:18px}h3{font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.muted{color:var(--muted)}.small{font-size:13px}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.sr{position:absolute;left:-9999px}.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:14px;padding:10px 20px;background:var(--surface);border-bottom:1px solid var(--line);flex-wrap:wrap}.brand{font-weight:700;font-size:17px;letter-spacing:-.01em;display:flex;align-items:center;gap:10px}.logo{width:30px;height:30px;border-radius:8px;background:#172031;position:relative;flex:none}.logo:before,.logo:after{content:"";position:absolute;bottom:7px;width:4px;border-radius:1px;background:#fff}.logo:before{left:8px;height:12px;background:#6f8cff}.logo:after{left:15px;height:16px;box-shadow:7px 4px #fff}.nav{display:flex;gap:2px;background:var(--sunk);padding:3px;border-radius:10px;flex-wrap:wrap}.nav a{padding:6px 10px;border-radius:7px;color:var(--muted);text-decoration:none;font-weight:500;font-size:14px;white-space:nowrap}.nav a:hover{color:var(--ink)}.nav a.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #0000001f}.nav .badge{background:var(--danger);color:#fff;border-radius:999px;font-size:11px;padding:1px 6px;margin-left:6px}.spacer{flex:1}.who{display:flex;align-items:center;gap:10px;font-size:14px}.shiftbar{display:flex;align-items:center;gap:12px}.clock{font:600 20px/1 var(--mono);font-variant-numeric:tabular-nums}.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap;background:var(--sunk);color:var(--muted)}.pill:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.pill.work{background:var(--work-soft);color:var(--work)}.pill.work:before{animation:pulse 1.6s ease-in-out infinite}.pill.pause{background:var(--pause-soft);color:var(--pause)}.pill.danger{background:var(--danger-soft);color:var(--danger)}.pill.office{background:var(--ink);color:var(--surface)}.pill.accent{background:var(--accent-soft);color:var(--accent)}.pill.plain:before{display:none}@keyframes pulse{50%{opacity:.3}}@media (prefers-reduced-motion: reduce){.pill.work:before{animation:none}}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;border:1px solid var(--line);background:var(--surface);cursor:pointer;font-weight:500;font-size:14px;white-space:nowrap}.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{filter:brightness(1.08)}.btn.ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn.ghost:hover{background:var(--sunk);color:var(--ink)}.btn.danger{color:var(--danger)}.btn.sm{padding:5px 10px;font-size:13px}.btn:disabled{opacity:.5;cursor:default;filter:none}input,select,textarea{width:100%;padding:8px 10px;background:var(--surface);border:1px solid var(--line);border-radius:8px}textarea{min-height:80px;resize:vertical}input[type=checkbox]{width:auto}label.f{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--muted);font-weight:500}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}main{padding:18px 20px 60px;max-width:1500px;margin:0 auto}.page-head{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px}.cols2{display:grid;grid-template-columns:minmax(300px,380px) 1fr;gap:14px;align-items:start}.stack{display:flex;flex-direction:column;gap:14px}.banner{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:10px;padding:12px 16px;margin-bottom:14px;display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.banner.warn{border-left-color:var(--pause);background:var(--pause-soft)}.error{color:var(--danger);font-size:13px;margin:4px 0 0}.empty{color:var(--muted);text-align:center;padding:28px 8px;font-size:14px}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.tile{background:var(--sunk);border-radius:10px;padding:12px 14px}.tile b{display:block;font:600 22px/1.2 var(--mono);font-variant-numeric:tabular-nums}.tile span{color:var(--muted);font-size:13px}.board{display:grid;grid-template-columns:repeat(6,minmax(205px,1fr));gap:12px;overflow-x:auto;align-items:start;padding-bottom:8px}.col{background:var(--sunk);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:8px;min-height:160px}.col>header{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:2px 4px}.col>header .n{margin-left:auto;font:500 12px var(--mono);background:var(--surface);color:var(--ink);padding:2px 8px;border-radius:999px}.tcard{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--prio, var(--accent));border-radius:9px;padding:10px 12px;cursor:pointer;display:flex;flex-direction:column;gap:6px;text-align:left;width:100%}.tcard:hover{border-color:var(--muted);border-left-color:var(--prio, var(--accent))}.tcard .t{font-weight:600;font-size:14px;overflow-wrap:anywhere}.tcard .meta{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;font-size:12.5px;color:var(--muted)}.tcard .note{font-size:13px;color:var(--muted);background:var(--sunk);border-radius:6px;padding:6px 8px;overflow-wrap:anywhere}.tcard .reason{font-size:13px;color:var(--danger);background:var(--danger-soft);border-radius:6px;padding:6px 8px;overflow-wrap:anywhere}.late{color:var(--danger);font-weight:600}.p-urgent{--prio: var(--danger)}.p-high{--prio: var(--pause)}.p-normal{--prio: var(--accent)}.p-low{--prio: var(--muted)}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:5px 12px;font-size:13px;color:var(--muted);cursor:pointer}.chip.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}.tablewrap{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:12px}table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap;vertical-align:top;font-size:13.5px}th:first-child,td:first-child{text-align:left;position:sticky;left:0;background:var(--surface);z-index:1}thead th{font-size:11.5px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em;background:var(--surface)}tbody tr:last-child td{border-bottom:0}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--accent-soft)}th.d,td.d{padding:8px 4px;text-align:center;min-width:30px}td.wk,th.wk{background:var(--sunk)}td.today,th.today{box-shadow:inset 0 0 0 2px var(--accent)}.cell-vac{color:var(--accent);font-size:12px;font-weight:600}.cell-sick{color:var(--danger);font-size:12px;font-weight:600}.cell-off{color:var(--pause);font-size:12px;font-weight:600}.nil{color:var(--muted);opacity:.6}td.tot{font-weight:700}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0f1973;z-index:40}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(580px,100%);background:var(--surface);z-index:41;overflow-y:auto;border-left:1px solid var(--line);box-shadow:-12px 0 32px #0003}.drawer-in{padding:18px 22px 30px;display:flex;flex-direction:column;gap:16px}.modal{position:fixed;z-index:51;top:50%;left:50%;transform:translate(-50%,-50%);width:min(480px,calc(100% - 32px));max-height:calc(100% - 32px);overflow-y:auto;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px;display:flex;flex-direction:column;gap:14px;box-shadow:0 20px 50px #0000004d}.modal-back{z-index:50}.facts{display:grid;grid-template-columns:auto 1fr;gap:5px 14px;font-size:13px;background:var(--sunk);border-radius:10px;padding:12px 14px;margin:0}.facts dt{color:var(--muted)}.facts dd{margin:0}.log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;font-size:13px}.log .when{color:var(--muted);font-size:12px;margin-left:6px}.notebox{background:var(--accent-soft);border-radius:8px;padding:7px 10px;margin-top:4px;white-space:pre-wrap;overflow-wrap:anywhere}.statusbtns{display:flex;gap:8px;flex-wrap:wrap}.login{max-width:380px;margin:12vh auto 0;padding:0 16px}.login .card{display:flex;flex-direction:column;gap:14px}.toast{position:fixed;left:50%;bottom:20px;transform:translate(-50%);background:var(--ink);color:var(--surface);padding:10px 16px;border-radius:10px;z-index:60;max-width:calc(100% - 32px);font-size:14px}.toast.err{background:var(--danger);color:#fff}@media (max-width: 900px){.cols2{grid-template-columns:1fr}.top{padding:10px 16px;gap:12px}main{padding-left:16px;padding-right:16px}}@media (max-width: 560px){.grid2{grid-template-columns:1fr}.shiftbar{width:100%;justify-content:space-between}}.tcard.drag{cursor:grab}.tcard.drag:active{cursor:grabbing}.tcard.dragging{opacity:.45}.col.over{outline:2px dashed var(--accent);outline-offset:-2px;background:var(--accent-soft, var(--sunk))}
