@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.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}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2) format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.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: #F6F7F5;--surface: #FFFFFF;--surface-2: #EEF1EE;--surface-3: #E3E7E4;--line: #DCE1DD;--line-2: #C9D0CB;--ink: #1B1E1C;--ink-2: #343936;--muted: #5E6461;--faint: #8A918C;--ok: #2F7D50;--ok-soft: #E2F0E6;--warn: #8A5F0E;--warn-soft: #F6ECD4;--bad: #A8433B;--bad-soft: #F8E3E0;--pause: #E0B45A;--pause-ink: #2A1E05;--brand: #2F7D50;--brand-ink: #FFFFFF;--brand-text: #2F7D50;--brand-2: #5AA878;--brand-2-ink: #0D1A12;--brand-accent: #B8BEC3;--silver: #B8BEC3;--silver-2: #8E959B;--canvas: #EEF1EE;--pill: #1B1E1C;--pill-ink: #FFFFFF;--shadow-1: 0 1px 2px rgba(20,40,28,.05), 0 1px 1px rgba(20,40,28,.03);--stamp: #2F7D50;--stamp-ink: #FFFFFF;--ring: #2F7D50;--font: "Geist Variable", "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: "Geist Mono Variable", "Geist Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--ease: cubic-bezier(.2, .8, .2, 1);--spring: cubic-bezier(.3, .7, .4, 1.35);--r: 14px;--shadow: 0 1px 2px rgba(0,0,0,.04), 0 8px 24px rgba(0,0,0,.06);--s1: #2a78d6;--s2: #eb6834;--s3: #1baf7a;--s4: #eda100;--s5: #e87ba4;--s6: #008300;--s7: #6250d6;--s0: #a3a29b;color-scheme:light}:root[data-theme=dark]{--bg: #141514;--surface: #1C1D1C;--surface-2: #242624;--surface-3: #2E312E;--line: #313431;--line-2: #3D413E;--ink: #EEF1EE;--ink-2: #D2D7D3;--muted: #9FA7A1;--faint: #737A75;--ok: #7ABF93;--ok-soft: #1E2B22;--warn: #E0B45A;--warn-soft: #3A3020;--bad: #E07A72;--bad-soft: #3A2320;--shadow: 0 1px 2px rgba(0,0,0,.3), 0 8px 24px rgba(0,0,0,.25);--canvas: #111211;--pill: #EEF1EE;--pill-ink: #141514;--silver: #9AA1A7;--silver-2: #737A80;--shadow-1: 0 0 0 1px #2A2D2A;--s1: #3987e5;--s2: #d95926;--s3: #199e70;--s4: #c98500;--s5: #d55181;--s6: #008300;--s7: #9085e9;--s0: #6f6e68;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}a{color:var(--brand-text)}h1,h2,h3{margin:0;line-height:1.2;text-wrap:balance;font-weight:560;letter-spacing:-.015em}p{margin:0}:focus-visible{outline:2px solid var(--brand-text);outline-offset:2px}[hidden]{display:none!important}.mono,.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.small{font-size:13px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:12px}.grow{flex:1;min-width:0}label.field{display:flex;flex-direction:column;gap:6px;font-size:13.5px;color:var(--ink-2)}input,select,textarea{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line-2);border-radius:11px;padding:11px 12px;width:100%;min-width:0}input:focus,select:focus,textarea:focus{border-color:var(--brand-text);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 22%,transparent)}input[type=checkbox]{width:20px;height:20px;accent-color:var(--brand);flex:none}input[type=color]{padding:2px;width:44px;height:40px}input[type=range]{padding:0;border:0;background:transparent;accent-color:var(--brand)}.check{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--ink-2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:12px;padding:11px 16px;font-weight:520;font-size:14.5px;background:var(--brand);color:var(--brand-ink);transition:transform .22s var(--spring),filter .15s,background .2s,box-shadow .22s var(--ease),border-color .2s;text-decoration:none}.btn:hover{filter:brightness(1.05);transform:translateY(-1px);box-shadow:0 6px 16px #0000001a}.btn.quiet:hover{box-shadow:none}.btn:active{transform:scale(.96);transition-duration:.08s;box-shadow:none}.page-in{animation:zz-page .42s var(--ease) backwards}@keyframes zz-page{0%{opacity:0;transform:translateY(10px)}}@media (prefers-reduced-motion: reduce){.page-in{animation:none}.btn:hover{transform:none}}.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none}.btn.ghost{background:var(--surface);color:var(--ink);border-color:var(--line-2);font-weight:500}.btn.quiet{background:transparent;color:var(--ink-2);border-color:transparent;font-weight:500}.btn.danger{background:var(--bad-soft);color:var(--bad)}.btn.danger.solid{background:var(--bad);color:#fff}.ampel-legend{display:grid;gap:6px;padding:10px 12px;border-radius:12px;background:var(--surface-2);color:var(--ink-2)}.ampel-legend .pill{margin-right:6px}.btn.okay{background:var(--ok-soft);color:var(--ok)}.btn.sm{padding:7px 12px;font-size:13.5px;border-radius:10px}.btn.lg{padding:15px 20px;font-size:16px;border-radius:14px}.btn.block{width:100%}.link{border:0;background:transparent;padding:0;color:var(--brand-text);font-size:13.5px;text-align:left}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:12px;min-width:0}.card h2{font-size:16px;font-weight:560}.card.warn{background:var(--warn-soft);border-color:transparent}.card.ok{background:var(--ok-soft);border-color:transparent}.card.soft{background:var(--surface-2);border-color:transparent}.card.bad{background:var(--bad-soft);border-color:transparent}.tiles{display:grid;grid-template-columns:repeat(var(--cols, 4),minmax(0,1fr));gap:12px}@media (max-width: 1100px){.tiles{grid-template-columns:repeat(var(--cols-m, 3),minmax(0,1fr))}}.tile.click{cursor:pointer}.tile.click:hover,a.tile:hover{border-color:var(--line-2)}@media (max-width: 860px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;display:flex;flex-direction:column;gap:4px;text-align:left;min-width:0}button.tile:hover{border-color:var(--line-2)}.tile .lbl{font-size:12.5px;color:var(--muted)}.tile .val{font-size:26px;font-weight:600;letter-spacing:-.01em;font-variant-numeric:tabular-nums}.tile .sub{font-size:12.5px;color:var(--ink-2)}.tile.good .val{color:var(--ok)}.tile.warn .val{color:var(--warn)}.tile.bad .val{color:var(--bad)}.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:2px 9px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);white-space:nowrap}.pill i{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--bad)}.pill.brand{background:color-mix(in srgb,var(--brand) 14%,var(--surface));color:var(--brand-text)}.av{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:600;font-size:13px;background:var(--surface-3);color:var(--ink-2);flex:none;overflow:hidden}.av img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}.avp{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.avp-face{box-shadow:0 0 0 3px var(--surface),0 0 0 4px var(--line)}.list{display:flex;flex-direction:column}.li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}.li:last-child{border-bottom:0}.li .nm{font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.li .rl{font-size:12.5px;color:var(--muted)}.tw{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap}th{font-size:12.5px;color:var(--muted);font-weight:500;background:var(--surface-2)}tr:last-child td{border-bottom:0}td.r,th.r{text-align:right;font-variant-numeric:tabular-nums}tr.dim td{color:var(--faint)}.empty{padding:26px 12px;text-align:center;color:var(--muted);font-size:14px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0c0a80;display:flex;align-items:flex-end;justify-content:center;padding:12px;z-index:50;animation:fade .18s}@media (min-width: 640px){.overlay{align-items:center}}.sheet{background:var(--surface);border:1px solid var(--line-2);border-radius:22px;padding:20px;width:100%;max-width:460px;display:flex;flex-direction:column;gap:14px;max-height:90vh;overflow:auto;animation:up .26s var(--ease)}.sheet h2{font-size:18px}.sheet table td{padding:7px 0;white-space:normal}.sheet table td:last-child{text-align:right;font-family:var(--mono)}.toast{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom,0px));transform:translate(-50%);background:var(--ink);color:var(--bg);padding:10px 18px 10px 10px;border-radius:999px;font-size:14px;font-weight:500;z-index:70;animation:zz-toast-in .45s var(--spring) backwards;max-width:calc(100% - 32px);box-shadow:0 14px 34px #00000038;display:flex;align-items:center;gap:10px;overflow:hidden}.toast .t-ic{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--ok);color:#fff;animation:zz-pop .4s .1s var(--spring) backwards}.toast.warn .t-ic{background:var(--warn)}.toast:after{content:"";position:absolute;left:0;bottom:0;height:2px;width:100%;background:color-mix(in srgb,var(--bg) 45%,transparent);transform-origin:left;animation:zz-toast-time var(--toast-ms, 2.8s) linear forwards}.toast.out{animation:zz-toast-out .26s var(--ease) forwards}@keyframes zz-toast-in{0%{transform:translate(-50%,24px) scale(.92);opacity:0}}@keyframes zz-toast-out{to{transform:translate(-50%,16px) scale(.96);opacity:0}}@keyframes zz-toast-time{to{transform:scaleX(0)}}@keyframes zz-pop{0%{transform:scale(.3);opacity:0}}@media (prefers-reduced-motion: reduce){.toast,.toast .t-ic,.toast.out{animation:none}.toast:after{display:none}}@keyframes fade{0%{opacity:0}}@keyframes up{0%{transform:translate(var(--tx, 0),18px);opacity:.5}}.toast{--tx: -50%}.dots{display:flex;gap:14px;justify-content:center}.dot{width:14px;height:14px;border-radius:50%;border:2px solid var(--line-2);transition:background .12s,border-color .12s,transform .16s var(--spring)}.dot.on{background:var(--ink);border-color:var(--ink);transform:scale(1.08)}.dots.shake{animation:shake .35s}.dots.wave{animation:dots-up .35s var(--spring)}.dots.wave .dot{background:transparent;border-color:var(--line-2);transform:none;animation:dot-wave 1.1s cubic-bezier(.45,0,.25,1) infinite;animation-delay:calc(var(--i) * .14s)}.dots.ok .dot{background:var(--ok);border-color:var(--ok);animation:dot-ok .32s var(--spring) both;animation-delay:calc(var(--i) * 40ms)}@keyframes dots-up{0%{transform:translateY(6px) scale(.9)}}@keyframes dot-wave{0%{background:transparent;border-color:var(--line-2);transform:translateY(0) scale(1)}22%{background:var(--brand);border-color:var(--brand);transform:translateY(-7px) scale(1.3)}44%{background:color-mix(in srgb,var(--brand) 25%,transparent);border-color:var(--line-2);transform:translateY(0) scale(1)}60%,to{background:transparent;border-color:var(--line-2);transform:translateY(0) scale(1)}}@keyframes dot-ok{0%{transform:scale(1)}50%{transform:scale(1.45)}to{transform:scale(1.1)}}@media (prefers-reduced-motion: reduce){.dots.wave,.dots.wave .dot,.dots.ok .dot{animation:none}.dots.wave .dot{background:var(--brand);border-color:var(--brand)}}@keyframes shake{20%,60%{transform:translate(-7px)}40%,80%{transform:translate(7px)}}.pad{display:grid;grid-template-columns:repeat(3,var(--key, 72px));gap:14px;justify-content:center}.key{height:var(--key, 72px);border-radius:50%;border:0;background:var(--surface-2);font-size:26px;font-weight:500;transition:background .12s,transform .12s var(--spring)}.key:active{transform:scale(.93);background:var(--surface-3)}.key.ghost{background:transparent;font-size:15px;color:var(--muted)}.ring{position:relative;width:var(--size, 196px);height:var(--size, 196px);border-radius:50%;border:0;background:transparent;padding:0}.ring>svg{position:absolute;top:0;right:0;bottom:0;left:0;transform:rotate(-90deg)}.ring .track{stroke:var(--surface-3)}.ring .fill{stroke:var(--ring);stroke-linecap:round;transition:stroke-dashoffset .6s var(--ease)}.ring .face{position:absolute;top:16px;right:16px;bottom:16px;left:16px;border-radius:50%;display:grid;place-items:center;font-size:22px;font-weight:650;background:var(--stamp);color:var(--stamp-ink);transition:transform .16s var(--spring),background .25s var(--ease),color .1s;box-shadow:var(--shadow)}.ring:active .face{transform:scale(.95)}.ring.pause .face{background:var(--pause);color:var(--pause-ink)}.ring.ok .face{color:transparent}.ring .tick{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:none;opacity:0;color:var(--stamp-ink)}.ring.pause .tick{color:var(--pause-ink)}.ring.ok .tick{opacity:1}.tick path,.okc path{stroke:currentColor;stroke-width:6;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:62;stroke-dashoffset:62}.ring.ok .tick path,.okc path{animation:draw .34s .04s ease-out forwards}@keyframes draw{to{stroke-dashoffset:0}}.okc{width:96px;height:96px;border-radius:50%;background:var(--stamp);color:var(--stamp-ink);display:grid;place-items:center}.logo{display:flex;align-items:center;min-width:0}.logo.center{justify-content:center}.logo img{display:block;width:auto;max-width:100%;object-fit:contain}.logo .word{font-weight:700;letter-spacing:-.01em}.spin{width:22px;height:22px;border-radius:50%;border:3px solid var(--surface-3);border-top-color:var(--brand);animation:rot .8s linear infinite}@keyframes rot{to{transform:rotate(360deg)}}.center-page{min-height:100%;display:grid;place-items:center;padding:24px 16px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}.ring.ok .tick path,.okc path{stroke-dashoffset:0}}@media print{body{background:#fff}.no-print{display:none!important}}.help-btn{width:36px;height:36px;margin:-8px -6px;border:0;background:transparent;display:inline-grid;place-items:center;cursor:pointer;flex:none;color:var(--muted);font:600 12px/1 var(--font, inherit)}.help-btn:before{content:"?";width:20px;height:20px;border-radius:50%;border:1px solid var(--line-2);display:grid;place-items:center;background:var(--surface)}.help-btn:hover:before,.help-btn:focus-visible:before{border-color:var(--brand);color:var(--brand-text)}.tile{position:relative}.tile .help-btn{position:absolute;top:6px;right:6px;margin:0}.tile .lbl{padding-right:30px}table.week th,table.week td,table.cal th,table.cal td{white-space:nowrap}table.week td.c,table.week th.c{text-align:center;min-width:54px}table.cal td.c,table.cal th.c{text-align:center;padding:0;min-width:36px;font-size:12px}table.cal th.c{padding:6px 0;line-height:1.25}table.cal th.we{color:var(--muted)}.sticky{position:sticky;left:0;background:var(--surface);z-index:1}thead .sticky{background:var(--surface-2)}.nm-cell{font-weight:550;max-width:150px;overflow:hidden;text-overflow:ellipsis}td.today,th.today{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--brand) 55%,transparent)}td.off{background:var(--surface-2);color:var(--muted)}td.miss{color:var(--warn)}td.hit{color:var(--bad);font-weight:600}td.neg{color:var(--warn)}td.pos{color:var(--ok)}.cal-cell{width:100%;min-width:36px;height:36px;border:0;background:transparent;color:inherit;font:inherit;font-weight:600;cursor:pointer}.cal-cell:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}.ab{font-weight:600}.ab-u{background:var(--ok-soft);color:var(--ok)}.ab-k{background:var(--bad-soft);color:var(--bad)}.ab-za{background:var(--warn-soft);color:var(--warn)}.ab-su,.ab-bs{background:color-mix(in srgb,var(--brand) 14%,var(--surface));color:var(--brand-text)}.ab-uf,.ab-sf{background:var(--surface-2);color:var(--ink-2)}.ab-sp{background:repeating-linear-gradient(135deg,var(--surface-2) 0 6px,transparent 6px 12px);color:var(--ink-2)}.ab-s{background:color-mix(in srgb,var(--brand) 8%,var(--surface));color:var(--brand-text);font-weight:500}.pending{background-image:repeating-linear-gradient(135deg,transparent 0 5px,color-mix(in srgb,currentColor 12%,transparent) 5px 7px);outline:1px dashed currentColor;outline-offset:-3px}.legend{font-size:12px;padding:3px 8px;border-radius:999px;border:1px solid var(--line)}.legend.off{background:var(--surface-2);color:var(--muted)}.pick{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}.pick:last-child{border-bottom:0}.tour{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100}.tour-dim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0c0b8c}.tour-spot{position:fixed;border-radius:14px;box-shadow:0 0 0 9999px #0a0c0b8c;outline:2px solid var(--brand);transition:left .25s var(--ease, ease),top .25s var(--ease, ease),width .25s var(--ease, ease),height .25s var(--ease, ease);pointer-events:none}.tour-card{position:fixed;background:var(--surface);color:var(--ink);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:6px;box-shadow:0 12px 40px #00000047}@media (prefers-reduced-motion: reduce){.tour-spot{transition:none}}.emp-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:2px 9px;border-radius:999px;white-space:nowrap;--c: #2f6fd6;background:color-mix(in srgb,var(--c) 13%,var(--surface));color:color-mix(in srgb,var(--c) 78%,var(--ink))}.emp-chip:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--c)}[data-emp=vollzeit]{--c: #2f6fd6}[data-emp=teilzeit]{--c: #0f8a7a}[data-emp=minijob]{--c: #8a4fd0}[data-emp=kurzfristig]{--c: #6b7280}[data-emp=azubi]{--c: #c26a00}[data-emp=werkstudent]{--c: #4a7d12}[data-emp=praktikum]{--c: #c0367a}.av[data-emp]{background:color-mix(in srgb,var(--c) 16%,var(--surface));color:color-mix(in srgb,var(--c) 80%,var(--ink))}.nm-cell a{display:inline-block;padding:9px 0}table.week td.c{padding:0}.wk-cell{width:100%;min-height:40px;border:0;background:transparent;color:inherit;font:inherit;font-weight:inherit;cursor:pointer;padding:6px 4px;position:relative;border-radius:6px;transition:background .15s,transform .15s var(--ease)}.wk-cell:hover{background:color-mix(in srgb,var(--brand) 9%,transparent)}.wk-cell:active{transform:scale(.96)}td.hint{color:var(--warn);font-weight:600}td.live .wk-cell:after{content:"";position:absolute;top:5px;right:5px;width:6px;height:6px;border-radius:50%;background:var(--ok);animation:zz-blink 1.6s ease-in-out infinite}.wk-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--warn);margin-left:4px;vertical-align:2px}#woche{animation:zz-in .25s var(--ease)}@keyframes zz-in{0%{opacity:.4;transform:translateY(3px)}to{opacity:1;transform:none}}@keyframes zz-blink{50%{opacity:.25}}@keyframes zz-pulse{0%,to{outline-color:currentColor}50%{outline-color:transparent}}.pending{animation:zz-pulse 2.2s ease-in-out infinite}.cal-cell{transition:transform .15s var(--ease),background .15s;border-radius:4px}.cal-cell:hover{transform:scale(1.08);background:color-mix(in srgb,var(--brand) 10%,transparent)}table.cal th.busy{color:var(--warn)}table.cal th.busy:after{content:"";display:block;width:6px;height:6px;border-radius:50%;background:var(--warn);margin:2px auto 0}@media (prefers-reduced-motion: reduce){.pending,td.live .wk-cell:after,#woche{animation:none}.cal-cell:hover,.wk-cell:active{transform:none}}.saldo{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}.saldo.pos{color:var(--ok)}.saldo.neg{color:var(--bad)}.saldo.high{color:var(--warn)}:is(.zz-admin,.zz-admin-body .overlay){--r: 20px}:is(.zz-admin,.zz-admin-body .overlay) .card,:is(.zz-admin,.zz-admin-body .overlay) .tile,:is(.zz-admin,.zz-admin-body .overlay) .tw{border-color:transparent;box-shadow:var(--shadow-1)}:is(.zz-admin,.zz-admin-body .overlay) .card.soft{background:var(--surface)}:is(.zz-admin,.zz-admin-body .overlay) .card.warn,:is(.zz-admin,.zz-admin-body .overlay) .card.ok,:is(.zz-admin,.zz-admin-body .overlay) .card.bad{box-shadow:none}:is(.zz-admin,.zz-admin-body .overlay) .btn{border-radius:999px}:is(.zz-admin,.zz-admin-body .overlay) .btn.ghost{border-color:transparent;box-shadow:var(--shadow-1),inset 0 0 0 1px var(--line)}:is(.zz-admin,.zz-admin-body .overlay) .btn.sm{padding:7px 14px}:is(.zz-admin,.zz-admin-body .overlay) input,:is(.zz-admin,.zz-admin-body .overlay) select,:is(.zz-admin,.zz-admin-body .overlay) textarea{border-radius:12px}:is(.zz-admin,.zz-admin-body .overlay) .tile .val{font-size:30px;letter-spacing:-.03em}:is(.zz-admin,.zz-admin-body .overlay) .tile .lbl{font-size:13px;color:var(--ink-2);font-weight:500}:is(.zz-admin,.zz-admin-body .overlay) th{background:transparent}:is(.zz-admin,.zz-admin-body .overlay) .sheet{border-radius:26px}:is(.zz-admin,.zz-admin-body .overlay) table.week{border-collapse:separate;border-spacing:4px 5px}:is(.zz-admin,.zz-admin-body .overlay) table.week th,:is(.zz-admin,.zz-admin-body .overlay) table.week td{border-bottom:0}:is(.zz-admin,.zz-admin-body .overlay) table.week th{background:transparent}:is(.zz-admin,.zz-admin-body .overlay) table.week thead .sticky{background:var(--surface)}:is(.zz-admin,.zz-admin-body .overlay) table.week td.c{border-radius:10px}:where(:is(.zz-admin,.zz-admin-body .overlay) table.week td.c){background:var(--surface-2)}:where(:is(.zz-admin,.zz-admin-body .overlay) table.week td.c.wk){background:var(--ok-soft);color:var(--ok)}:where(:is(.zz-admin,.zz-admin-body .overlay) table.week td.c.miss,:is(.zz-admin,.zz-admin-body .overlay) table.week td.c.hint){background:var(--warn-soft)}:where(:is(.zz-admin,.zz-admin-body .overlay) table.week td.c.hit){background:var(--bad-soft)}:is(.zz-admin,.zz-admin-body .overlay) table.week td.now-cell{background:transparent}:is(.zz-admin,.zz-admin-body .overlay) table.week td.today,:is(.zz-admin,.zz-admin-body .overlay) table.week th.today{box-shadow:inset 0 0 0 2px var(--pill)}:is(.zz-admin,.zz-admin-body .overlay) table.week th.today{border-radius:10px;color:var(--ink)}:is(.zz-admin,.zz-admin-body .overlay) .tw{border-radius:20px}.ph{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:4px}.ph h1{font-size:30px;font-weight:560;letter-spacing:-.03em}.ph-act{gap:8px}.kpis{display:grid;grid-template-columns:repeat(var(--n, 4),minmax(0,1fr));gap:16px}@media (max-width: 1100px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}.kpi{gap:8px;min-height:132px;text-align:left;font:inherit;color:inherit;text-decoration:none;border:0;transition:transform .18s var(--ease),box-shadow .2s}a.kpi:hover,button.kpi:hover{transform:translateY(-2px);box-shadow:0 10px 24px #14281c14;cursor:pointer}.k-top{display:flex;align-items:center;gap:6px;min-height:34px}.k-lbl{font-size:13.5px;font-weight:500;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.k-ic{margin-left:auto;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;flex:none}.tone-ok{background:var(--ok-soft);color:var(--ok)}.tone-bad{background:var(--bad-soft);color:var(--bad)}.tone-warn{background:var(--warn-soft);color:var(--warn)}.tone-brand{background:color-mix(in srgb,var(--silver) 30%,var(--surface));color:var(--ink-2)}.k-mid{display:flex;align-items:center;justify-content:space-between;gap:10px}.k-val{font-size:32px;font-weight:580;letter-spacing:-.035em;line-height:1.05;white-space:nowrap;font-variant-numeric:tabular-nums}.k-val small{font-size:14px;font-weight:450;color:var(--muted);letter-spacing:0}.k-val.small-val{font-size:21px;white-space:normal}.k-val .saldo{font-family:var(--font)}.k-sub{font-size:12.5px;color:var(--muted);margin-top:auto}.k-ring{transition:stroke-dashoffset .9s var(--ease)}.av-row{display:flex}.av-row .av{border:2px solid var(--surface);margin-left:-8px}.av-row .av:first-child{margin-left:0}.seg{display:inline-flex;gap:2px;padding:4px;border-radius:999px;background:var(--surface);box-shadow:var(--shadow-1);max-width:100%;overflow-x:auto}.seg button{border:0;background:transparent;padding:8px 16px;border-radius:999px;font:inherit;font-size:14px;font-weight:500;color:var(--ink-2);cursor:pointer;white-space:nowrap}.seg button[aria-pressed=true]{background:var(--pill);color:var(--pill-ink)}.card .seg{background:var(--surface-2);box-shadow:none}:is(.zz-admin) .filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center}:is(.zz-admin) .filters input:not([type=checkbox]),:is(.zz-admin) .filters select{border-radius:999px;border-color:transparent;box-shadow:var(--shadow-1);background:var(--surface);padding:10px 16px}:is(.zz-admin) .filters input:not([type=checkbox]){flex:1 1 220px;min-width:0}:is(.zz-admin) .filters select{flex:0 1 auto;max-width:240px;width:auto}@media (prefers-reduced-motion: reduce){.kpi{transition:none}}.back-link{align-self:flex-start;text-decoration:none;font-size:14px;font-weight:500;color:var(--ink-2);background:var(--surface);border-radius:999px;padding:8px 14px;box-shadow:var(--shadow-1)}.back-link:hover{background:var(--surface-2)}body:has(.emp-tabs) .toast{bottom:calc(104px + env(safe-area-inset-bottom,0px))}@media (max-width: 900px){body:has(.admin-tabs) .toast{bottom:calc(100px + env(safe-area-inset-bottom,0px))}}.btn,.btn.lg,.btn.sm{border-radius:999px}.claim{font-size:15px;color:var(--muted);letter-spacing:-.01em}.center-page{background:var(--canvas)}.center-page>.stack,.center-page>.card{animation:zz-in .35s var(--ease)}.btn.ghost:hover,.btn.ghost:focus-visible{border-color:color-mix(in srgb,var(--brand) 55%,var(--line-2));background:color-mix(in srgb,var(--brand) 7%,var(--surface))}.btn.quiet:hover,.btn.quiet:focus-visible{background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--ink)}.btn[aria-pressed=true],.btn.on{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--brand) 50%,transparent)}a.li,button.li{color:inherit;text-decoration:none;border-radius:14px;margin:0 -10px;padding-left:10px;padding-right:10px;transition:background .15s,box-shadow .15s,transform .15s var(--ease);cursor:pointer}a.li:hover,button.li:hover,a.li:focus-visible,button.li:focus-visible{background:color-mix(in srgb,var(--brand) 7%,var(--surface-2));box-shadow:inset 3px 0 0 var(--brand);border-bottom-color:transparent}a.li:active,button.li:active{transform:scale(.99)}a.li .av,button.li .av{transition:transform .2s var(--spring, ease)}a.li:hover .av,button.li:hover .av{transform:scale(1.06)}a.li[aria-current=page],.li.selected{background:color-mix(in srgb,var(--brand) 11%,var(--surface-2));box-shadow:inset 3px 0 0 var(--brand)}.tile.click:hover,a.tile:hover{border-color:color-mix(in srgb,var(--brand) 40%,var(--line-2))}:is(.zz-admin,.zz-admin-body .overlay) table.week td.today,:is(.zz-admin,.zz-admin-body .overlay) table.week th.today,td.today,th.today{box-shadow:none;position:relative}td.today:after,th.today:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border:2px solid color-mix(in srgb,var(--brand) 70%,var(--ink));border-radius:10px;pointer-events:none;animation:zz-today-in .35s var(--ease) both}td.today .wk-cell{border-radius:9px}@keyframes zz-today-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){td.today:after,th.today:after{animation:none}}
