:root{--green:#1f5b3b;--green2:#2f7a51;--pale:#eef5ef;--ink:#17231b;--muted:#667268;--line:#dce5dd;--red:#a83b3b;--white:#fff;--shadow:0 10px 30px rgba(20,60,38,.09)}
.theme-ocean{--green:#155d75;--green2:#247f9e;--pale:#edf7fa;--ink:#14282f;--line:#d4e5ea}.theme-burgundy{--green:#762d3b;--green2:#9a4354;--pale:#faeff1;--ink:#30191e;--line:#ead7dc}.theme-plum{--green:#65406f;--green2:#83558f;--pale:#f7f0f8;--ink:#2b1c30;--line:#e6d9e9}.theme-solar{--green:#8a5a0a;--green2:#ad771b;--pale:#fff7df;--ink:#332711;--line:#eadfbd}.theme-slate{--green:#405566;--green2:#5c7486;--pale:#f0f4f6;--ink:#1d2932;--line:#d9e1e6}.theme-mint{--green:#28705c;--green2:#3d9077;--pale:#ebf8f3;--ink:#183029;--line:#d2e9e0}.theme-coral{--green:#9a4c43;--green2:#bb665b;--pale:#fff1ee;--ink:#351f1c;--line:#ecd8d4}.theme-night{--green:#27334f;--green2:#3f5279;--pale:#eef1f8;--ink:#182034;--line:#d7ddea}.theme-classic{--green:#245ea7;--green2:#3c77bf;--pale:#eef4fb;--ink:#17263a;--line:#d6e1ef}.theme-halloween{--green:#51265f;--green2:#77377f;--pale:#fff0d7;--ink:#291c2d;--line:#e3d3e5;--season-accent:#ed8d19;--season-page:#f6f0f7;--menu-panel:#35193e}.theme-christmas{--green:#145b3c;--green2:#237a53;--pale:#f7eadc;--ink:#173128;--line:#d1e1d6;--season-accent:#b8323e;--season-page:#f3f7f2;--menu-panel:#0d4930}.brand-short{display:none}
.nav-group{position:relative}.nav-group summary{list-style:none;cursor:pointer;color:#eaf4ed;padding:8px;font-weight:600}.nav-group summary::-webkit-details-marker{display:none}.nav-group summary::after{content:' ▾';font-size:11px}.nav-group>div{display:none;position:absolute;z-index:50;top:100%;right:0;min-width:190px;padding:7px;background:var(--menu-panel,#17482f);border-radius:10px;box-shadow:var(--shadow)}.nav-group[open]>div{display:grid}.nav-group>div a{white-space:nowrap}
*{box-sizing:border-box}body{margin:0;background:#f6f8f5;color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif}.header{min-height:68px;background:var(--green);color:#fff;padding:12px max(18px,calc((100% - 1180px)/2));display:flex;gap:24px;align-items:center;justify-content:space-between;box-shadow:var(--shadow)}.brand{font-size:20px;font-weight:800;color:#fff;text-decoration:none;white-space:nowrap}.shuttle{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#fff;color:var(--green);margin-right:7px}.header nav{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.header nav a,.header .link{border:0;background:transparent;color:#eaf4ed;padding:8px;text-decoration:none;font:inherit;cursor:pointer}.header nav a:hover,.header .link:hover{color:#fff;text-decoration:underline}.container{max-width:1180px;margin:0 auto;padding:28px 18px 60px}.page-title{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:20px}.page-title h1,h1{margin:0 0 4px;font-size:clamp(26px,4vw,38px)}.page-title p,.muted{color:var(--muted);margin:0}.card{background:var(--white);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:15px}.cards.compact{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));margin:18px 0}.slot{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:start}.slot form,.slot .button,.slot .event{grid-column:1/-1}.slot.disabled{opacity:.65}.time{font-size:23px;font-weight:800;margin-top:4px}.badge{background:var(--pale);color:var(--green);border-radius:999px;padding:7px 10px;font-weight:800}.badge.danger{background:#fae8e8;color:var(--red)}.event{border-left:4px solid #d6941b;padding:8px 10px;background:#fff7df}.button{display:inline-flex;justify-content:center;align-items:center;border:0;border-radius:10px;background:#e6ebe7;color:var(--ink);padding:11px 15px;font-weight:750;text-decoration:none;cursor:pointer}.button:hover:not(:disabled){filter:brightness(.96)}.button:disabled{cursor:not-allowed;color:#89938b}.button.primary{background:var(--green);color:#fff}.button.success{background:#dff1e5;color:#176137}.button.small{padding:7px 11px}.stack{display:grid;gap:15px}.login-card{max-width:430px;margin:8vh auto}.login-card p{margin-bottom:22px}label{display:grid;gap:7px;font-size:13px;font-weight:700}input,select{width:100%;border:1px solid #cfd9d1;border-radius:9px;background:#fff;padding:11px 12px;font:inherit;color:var(--ink)}input:focus,select:focus{outline:3px solid rgba(47,122,81,.16);border-color:var(--green2)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;align-items:end}.check{display:flex;align-items:center;gap:8px;height:42px}.check input{width:auto}.editor{margin:16px 0}.editor summary{font-weight:800;cursor:pointer}.editor[open] summary{margin-bottom:16px}.filter{margin:16px 0;max-width:300px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:var(--shadow)}table{border-collapse:collapse;width:100%;min-width:650px}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line)}th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:#f3f6f3}tr:last-child td{border-bottom:0}.inline{display:inline}.flash{padding:12px 15px;border-radius:10px;margin-bottom:16px;background:#e7eef9;color:#254c7e}.flash.success{background:#e2f3e7;color:#195f35}.flash.error{background:#fbe8e8;color:#8b2e2e}.empty{text-align:center;padding:50px 20px;color:var(--muted)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:15px}.stat{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:var(--shadow)}.stat strong{display:block;font-size:36px;color:var(--green)}.stat span{color:var(--muted)}.kiosk-head{text-align:center;margin-bottom:20px}.tabs{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:20px}.tab{padding:12px 18px;border-radius:999px;background:#fff;border:1px solid var(--line);color:var(--ink);font-weight:800;text-decoration:none}.tab.active{background:var(--green);color:#fff}.kiosk-search{max-width:700px;margin:0 auto 20px;display:grid;grid-template-columns:1fr auto;gap:10px}.kiosk-search input{font-size:22px;padding:15px}.roster{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.person,.person button{width:100%;border:2px dashed #b7c5ba;border-radius:13px;background:#fff;padding:0;text-align:left}.person button{border:0;padding:17px;cursor:pointer}.person span,.person strong{display:block}.person strong{font-size:12px;color:var(--green);margin-top:4px}.person.present{border-style:solid;border-color:#77b88b;background:#e6f5eb;padding:17px}.person.present strong{color:#176137}
h2{margin-top:32px}.mini-form{display:grid;gap:7px;min-width:210px;margin-top:8px}.modal{width:min(760px,calc(100% - 24px));border:0;border-radius:18px;padding:22px;box-shadow:0 30px 80px rgba(10,35,20,.28)}.modal::backdrop{background:rgba(12,28,18,.55);backdrop-filter:blur(2px)}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.modal-head h2{margin:0}.modal-close{border:0;background:transparent;font-size:30px;line-height:1;cursor:pointer;color:var(--muted)}.modal-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:10px;margin-top:8px}.toast{position:fixed;z-index:100;right:20px;bottom:20px;max-width:min(420px,calc(100% - 40px));padding:13px 17px;border-radius:11px;background:#195f35;color:#fff;box-shadow:var(--shadow);opacity:0;transform:translateY(12px);pointer-events:none;transition:.18s ease}.toast.show{opacity:1;transform:none}.toast.error{background:#8b2e2e}@media(max-width:760px){.header{align-items:flex-start;flex-direction:column}.header nav{justify-content:flex-start}.container{padding-top:20px}.page-title{align-items:flex-start;flex-direction:column}.page-title form,.page-title .button{width:100%}.kiosk-search{grid-template-columns:1fr}.time{font-size:20px}.modal{padding:17px}.modal-actions{flex-direction:column-reverse}.modal-actions .button{width:100%}}
.pwa-install-banner{position:fixed;z-index:90;left:50%;bottom:16px;display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:12px;width:min(680px,calc(100% - 28px));padding:12px 14px;transform:translateX(-50%);border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:0 18px 55px rgba(12,42,24,.24)}.pwa-install-banner[hidden]{display:none}.pwa-install-banner>span:nth-child(2){display:grid;gap:2px}.pwa-install-banner small{color:var(--muted)}.pwa-install-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--pale);color:var(--green);font-size:25px;font-weight:900}.pwa-install-close{align-self:start;border:0;background:transparent;color:var(--muted);font-size:24px;line-height:1;cursor:pointer}.pwa-install-dialog{max-width:480px}.pwa-install-dialog p{margin:0;line-height:1.6}@media(max-width:600px){.pwa-install-banner{grid-template-columns:auto minmax(0,1fr) auto;gap:9px;bottom:9px;padding:10px}.pwa-install-banner small{display:none}.pwa-install-banner [data-pwa-install]{grid-column:2;padding:9px 12px;justify-self:start}.pwa-install-close{grid-column:3;grid-row:1/3}.pwa-install-icon{grid-row:1/3}}
.container.container-wide{max-width:none;width:100%;padding-left:12px;padding-right:12px}
.sortable-heading{cursor:pointer;user-select:none}.sortable-heading::after{content:' ↕';opacity:.45}.sortable-heading[data-sort-direction="asc"]::after{content:' ↑';opacity:1}.sortable-heading[data-sort-direction="desc"]::after{content:' ↓';opacity:1}
