@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/93a6e477e1480c92-s.woff2) format("woff2");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:Bricolage Grotesque;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c7e0cf6c760983e7-s.p.woff2) format("woff2");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:Bricolage Grotesque;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/9d5a263311222317-s.p.woff2) format("woff2");unicode-range:u+00??,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:Bricolage Grotesque;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/93a6e477e1480c92-s.woff2) format("woff2");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:Bricolage Grotesque;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c7e0cf6c760983e7-s.p.woff2) format("woff2");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:Bricolage Grotesque;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/9d5a263311222317-s.p.woff2) format("woff2");unicode-range:u+00??,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:Bricolage Grotesque;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/93a6e477e1480c92-s.woff2) format("woff2");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:Bricolage Grotesque;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c7e0cf6c760983e7-s.p.woff2) format("woff2");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:Bricolage Grotesque;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/9d5a263311222317-s.p.woff2) format("woff2");unicode-range:u+00??,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:Bricolage Grotesque Fallback;src:local("Arial");ascent-override:88.21%;descent-override:25.61%;line-gap-override:0.00%;size-adjust:105.43%}.__className_b8e636{font-family:Bricolage Grotesque,Bricolage Grotesque Fallback;font-style:normal}.__variable_b8e636{--font-display:"Bricolage Grotesque","Bricolage Grotesque Fallback"}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.p.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.p.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.p.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.p.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.p.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk Fallback;src:local("Arial");ascent-override:99.07%;descent-override:30.02%;line-gap-override:0.00%;size-adjust:100.94%}.__className_6b53e1{font-family:Hanken Grotesk,Hanken Grotesk Fallback;font-style:normal}.__variable_6b53e1{--font-body:"Hanken Grotesk","Hanken Grotesk Fallback"}:root{--sun:#fbb016;--sun-600:#ee9e0a;--sun-700:#cf820a;--sun-300:#ffcb4d;--sun-tint:#fef0d3;--plum:#4d0a47;--plum-600:#6a1b5c;--plum-deep:#2b0038;--plum-tint:#f3e9f1;--blue:#4d0a47;--blue-dark:#6a1b5c;--blue-light:#f3e9f1;--charcoal:#2a122e;--ink:#2a122e;--muted:#6e5570;--line:#ece1d8;--line-strong:#ddcec2;--bg:#fbf7f2;--surface:#ffffff;--surface-alt:#f5ede4;--panel-deep:#2b0038;--green:#1f9d63;--green-bg:#e4f4ec;--amber:#e8850f;--amber-bg:#fcebd6;--red:#dc4a38;--red-bg:#fbe6e2;--purple:#8a4fb8;--purple-bg:#f0e7f7;--info:#2e77c2;--info-bg:#e4eef8;--radius:8px;--radius-sm:5px;--shadow:0 1px 2px rgba(43,0,56,0.06),0 2px 8px rgba(43,0,56,0.07);--shadow-lg:0 12px 36px rgba(43,0,56,0.18);--font-display-stack:var(--font-display),"Bricolage Grotesque",var(--font-body),system-ui,sans-serif;--font-body-stack:var(--font-body),"Hanken Grotesk",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-body-stack);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--plum);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{font-family:var(--font-display-stack);color:var(--charcoal);line-height:1.2;letter-spacing:-.015em;margin:0}h1{font-size:22px;font-weight:800}h2{font-size:17px}h2,h3{font-weight:700}h3{font-size:14px}.app{display:flex;min-height:100vh}.sidebar{width:216px;flex-shrink:0;background:var(--panel-deep);border-right:1px solid rgba(255,255,255,.06);color:#f0e7ee;display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100vh}.sidebar-brand{padding:14px 18px;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar-nav{padding:10px 8px;flex:1 1;overflow-y:auto}.sidebar-nav .group{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.4);padding:14px 10px 5px}.sidebar-nav a{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;border-radius:var(--radius-sm);color:#e2d7e0;font-size:13px}.sidebar-nav a:hover{background:rgba(255,255,255,.09);text-decoration:none;color:#fff}.sidebar-nav a.active{background:var(--sun);color:var(--plum-deep);font-weight:700}.sidebar-nav a.active .count{background:rgba(43,0,56,.18);color:var(--plum-deep)}.sidebar-nav .count{font-size:11px;background:rgba(255,255,255,.16);border-radius:10px;padding:1px 7px}.sidebar-foot{padding:12px 14px;border-top:1px solid rgba(255,255,255,.1);font-size:12px;color:rgba(255,255,255,.65)}.sidebar-foot form{margin-top:6px}.sidebar-foot button{background:none;border:0;color:rgba(255,255,255,.75);padding:0;font-size:12px;cursor:pointer;text-decoration:underline}.main{flex:1 1;min-width:0;display:flex;flex-direction:column}.topbar{background:var(--surface);border-bottom:1px solid var(--line);padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.content{padding:20px 24px 60px;flex:1 1}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-head{padding:13px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.card-body{padding:16px}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:12px;gap:12px;margin-bottom:18px}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:13px 15px;box-shadow:var(--shadow)}.tile .k{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700}.tile .v{font-family:var(--font-display-stack);font-size:26px;font-weight:800;color:var(--charcoal);line-height:1.15;letter-spacing:-.02em;margin-top:4px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tile .s{font-size:12px;color:var(--muted);margin-top:2px}.tile.alert{border-color:#f3c8c0;background:var(--red-bg)}.tile.alert .v{color:#b5341f}.tile.warn{border-color:#f2ddba;background:var(--amber-bg)}.tile.warn .v{color:#a35e08}.table-wrap{overflow-x:auto}table.grid{width:100%;border-collapse:collapse;font-size:13px}table.grid th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;padding:9px 10px;border-bottom:1px solid var(--line-strong);background:var(--surface-alt);white-space:nowrap;position:-webkit-sticky;position:sticky;top:0;z-index:2}table.grid td{padding:5px 10px;border-bottom:1px solid var(--line);vertical-align:middle}table.grid tbody tr:hover{background:#f7efe6}table.grid tr.flagged td{background:var(--red-bg)}table.grid tr.flagged:hover td{background:#f8ddd7}table.grid tbody tr[class*=row-] td:first-child{position:relative}table.grid tbody tr[class*=row-] td:first-child:before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px}tr.row-present td{background:#e7f5ee}tr.row-present:hover td{background:#dcefe4}tr.row-present td:first-child:before{background:var(--green)}tr.row-late td{background:#fcefd8}tr.row-late:hover td{background:#f9e6c6}tr.row-late td:first-child:before{background:var(--amber)}tr.row-noshow td{background:#fce8e4}tr.row-noshow:hover td{background:#f8dad4}tr.row-noshow td:first-child:before{background:var(--red)}tr.row-sick td{background:#e6eff9}tr.row-sick:hover td{background:#d8e5f4}tr.row-sick td:first-child:before{background:var(--info)}tr.row-absence td{background:#f1ecf0}tr.row-absence:hover td{background:#e8e0e7}tr.row-absence td:first-child:before{background:var(--muted)}tr.row-unscheduled td{background:#f2e9f7}tr.row-unscheduled:hover td{background:#ebddf3}tr.row-unscheduled td:first-child:before{background:var(--purple)}tr[class*=row-] .inline-control{background:rgba(255,255,255,.65)}tr[class*=row-] .inline-control:focus,tr[class*=row-] .inline-control:hover{background:#fff}tr.remote td{background-image:repeating-linear-gradient(135deg,rgba(46,119,194,.1),rgba(46,119,194,.1) 2px,transparent 0,transparent 9px)}tr.remote td:first-child:before{background-image:repeating-linear-gradient(180deg,currentColor 0,currentColor 6px,transparent 0,transparent 11px)}.badge.remote{background:var(--info-bg);color:#2360a0;border:1px solid #bcd6f0}.legend i.hatch{background-image:repeating-linear-gradient(135deg,rgba(46,119,194,.45),rgba(46,119,194,.45) 2px,transparent 0,transparent 6px);background-color:var(--surface-alt);border:1px solid var(--line-strong)}.legend{display:flex;gap:7px;flex-wrap:wrap;align-items:center;font-size:12px;color:var(--muted)}.legend button{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:12px;color:var(--charcoal);background:var(--surface);border:1px solid var(--line-strong);border-radius:20px;padding:4px 11px;cursor:pointer;white-space:nowrap}.legend button:hover{border-color:var(--plum);background:var(--surface-alt)}.legend button[aria-pressed=true]{background:var(--plum);border-color:var(--plum);color:#fff}.legend button[aria-pressed=true] .n{background:rgba(255,255,255,.22);color:#fff}.legend button:disabled{opacity:.4;cursor:default}.legend button:disabled:hover{border-color:var(--line-strong);background:var(--surface)}.legend i{width:11px;height:11px;border-radius:3px;display:inline-block;flex-shrink:0}.legend .n{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700;background:var(--surface-alt);border-radius:9px;padding:0 6px;font-size:11px}table.grid td.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.row-name{font-weight:600;color:var(--charcoal);white-space:nowrap}.mono{font-family:IBM Plex Mono,ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12px}.empty{padding:34px 16px;text-align:center;color:var(--muted)}input[type=date],input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],select,textarea{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:6px 8px;width:100%;max-width:100%}input:focus,select:focus,textarea:focus{outline:3px solid rgba(251,176,22,.34);outline-offset:-1px;border-color:var(--sun)}textarea{min-height:70px;resize:vertical}.inline-control{border-color:transparent;background:transparent;padding:4px 6px;min-width:92px}.inline-control:hover{border-color:var(--line-strong);background:var(--surface)}.inline-control.narrow{min-width:68px}label.field{display:block;margin-bottom:13px}label.field>span{display:block;font-size:12px;font-weight:700;color:var(--charcoal);margin-bottom:4px}label.field .hint{font-weight:400;color:var(--muted);font-size:11px;margin-top:3px;display:block}.field-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:0 14px;gap:0 14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font:inherit;font-weight:700;font-size:13px;padding:7px 14px;border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--surface);color:var(--charcoal);cursor:pointer;white-space:nowrap;transition:background .12s ease,border-color .12s ease,transform .06s ease}.btn,.btn:hover{text-decoration:none}.btn:hover{background:var(--surface-alt)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--sun);border-color:var(--sun);color:var(--plum-deep);box-shadow:0 1px 0 var(--sun-700)}.btn.primary:hover{background:var(--sun-300);border-color:var(--sun-300)}.btn.danger{background:var(--red);border-color:var(--red);color:#fff}.btn.danger:hover{background:#c23a29;border-color:#c23a29}.btn.small{padding:4px 9px;font-size:12px}.btn.link{border-color:transparent;background:none;color:var(--plum);padding:3px 5px}.btn.link:hover{background:var(--plum-tint)}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.btn-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:11px;white-space:nowrap;background:var(--surface-alt);color:var(--muted)}.badge.green{background:var(--green-bg);color:#157a4b}.badge.amber{background:var(--amber-bg);color:#a35e08}.badge.red{background:var(--red-bg);color:#b5341f}.badge.blue{background:var(--plum-tint);color:var(--plum)}.badge.purple{background:var(--purple-bg);color:#6f3b99}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--red);vertical-align:middle}.notice{border-radius:var(--radius);padding:12px 14px;margin-bottom:16px;border:1px solid var(--line);background:var(--surface);font-size:13px}.notice.error{background:var(--red-bg);border-color:#f0c2ba;color:#a3301f}.notice.success{background:var(--green-bg);border-color:#bde3cd;color:#146a41}.notice.warn{background:var(--amber-bg);border-color:#f0d6ac;color:#925406}.notice.info{background:var(--info-bg);border-color:#bcd6f0;color:#235f9f}.muted{color:var(--muted)}.small{font-size:12px}.nowrap{white-space:nowrap}.stack{display:flex;flex-direction:column;gap:16px}.spread{align-items:center;justify-content:space-between;gap:12px}.filters,.spread{display:flex;flex-wrap:wrap}.filters{gap:10px;align-items:flex-end}.filters label.field{margin-bottom:0;min-width:130px}.filters input,.filters select{min-width:130px}.bulkbar{position:-webkit-sticky;position:sticky;bottom:0;z-index:5;background:var(--panel-deep);border:1px solid var(--plum-deep);border-radius:var(--radius);padding:10px 14px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;box-shadow:var(--shadow-lg);margin-top:12px}.bulkbar,.bulkbar strong{color:#fff}.bulkbar select{width:auto;min-width:150px;background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:#fff}.calendar{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:6px;gap:6px}.calendar .head{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;text-align:center;padding-bottom:2px}.day{border:1px solid var(--line);border-radius:var(--radius-sm);padding:7px 8px;min-height:74px;background:var(--surface);text-align:left;font:inherit;cursor:pointer;display:flex;flex-direction:column;gap:3px}.day:hover{border-color:var(--plum)}.day .d{font-weight:700;color:var(--charcoal);font-size:14px}.day .t{font-size:10px;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.day .l{font-size:10px;color:var(--muted);line-height:1.3}.day.open{background:var(--green-bg);border-color:#bde3cd}.day.open .t{color:#157a4b}.day.closed{background:var(--surface-alt)}.day.closed .t{color:var(--muted)}.day.holiday{background:var(--amber-bg);border-color:#f0d6ac}.day.holiday .t{color:#925406}.day.weekend{background:#f6f1ea}.day.blank{border:0;background:none;cursor:default;min-height:0}.day.blank:hover{border:0}.public{max-width:720px;margin:0 auto;padding:22px 16px 70px}.public-head{background:var(--plum);color:#fff;border-radius:var(--radius);padding:18px 20px;margin-bottom:18px}.public-head h1{color:#fff;font-size:20px}.public-head p{margin:6px 0 0;color:rgba(255,255,255,.88);font-size:13px}.week{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin-bottom:14px;overflow:hidden}.week-head{padding:9px 14px;background:var(--surface-alt);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.week-head strong{font-size:13px;color:var(--charcoal)}.day-row{display:flex;align-items:center;gap:12px;padding:9px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap}.day-row:last-child{border-bottom:0}.day-row .when{min-width:132px}.choice,.day-row .when{font-weight:600;color:var(--charcoal);font-size:13px}.choice{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line-strong);border-radius:20px;padding:7px 14px;cursor:pointer;background:var(--surface);-webkit-user-select:none;-moz-user-select:none;user-select:none}.choice:hover{border-color:var(--plum)}.choice input{width:auto;margin:0;accent-color:var(--plum)}.choice.on{background:var(--plum-tint);border-color:var(--plum);color:var(--plum)}.week.short{border-color:#f0d6ac}.week.short .week-head{background:var(--amber-bg)}.sticky-submit{position:-webkit-sticky;position:sticky;bottom:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:12px 16px;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:16px}.login-wrap,.sticky-submit{display:flex;align-items:center}.login-wrap{min-height:100vh;justify-content:center;padding:24px;background:radial-gradient(1200px 600px at 50% -10%,#fbe4c4 0,var(--bg) 55%)}.login-card{width:100%;max-width:370px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:26px}.login-card h1{font-size:20px;margin-bottom:3px}.login-brand{background:#fff;border-radius:14px;padding:16px 20px;margin-bottom:14px}.login-brand img{display:block;width:100%;max-width:200px;height:auto;margin:0 auto}@media print{.btn,.bulkbar,.sidebar,.topbar{display:none!important}body{background:#fff}.card{box-shadow:none}}@media (max-width:860px){.app{flex-direction:column}.sidebar{width:100%;height:auto;position:static}.sidebar-nav{display:flex;flex-wrap:wrap;gap:4px}.sidebar-nav .group{display:none}.content{padding:16px 12px 50px}.day-row .when{min-width:100%}}