:root,:root[data-theme=dark]{--bg:#1a1918;--panel:#201e1d;--panel-2:#2a2827;--line:#3a3735;--text:#f3f2f2;--dim:#a6a2a0;--field:#171615;--in:#4fb865;--school:#6aa9ff;--after:#c294f5;--out:#6b6866;--absent:#e0a53a;--danger:#ff6a5a}:root[data-theme=light]{--bg:#f3f2f2;--panel:#fff;--panel-2:#eae8e7;--line:#d5d2d0;--text:#201e1d;--dim:#4b4846;--field:#fff;--in:#1a7f37;--school:#0a58ca;--after:#6f42c1;--out:#6b6866;--absent:#8a5a00;--danger:#c2280f}:root{--accent:#2f81f7;--accent-ink:#fff;--accent-dim:#1a4788;--accent-soft:#2f81f73d;--accent-border:#2f81f7d9;--accent-hairline:#2f81f78c;--accent-panel:#2f81f729;--accent-panel-hover:#2f81f74d;--accent-header:#2f81f738;--accent-text:#96bcfb;--accent-tint:#2f81f738;--font:system-ui, -apple-system, sans-serif;--card-width:196px;--radius:9px;--radius-s:7px}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);font:14px/1.5 var(--font);-webkit-text-size-adjust:100%;margin:0;overflow-x:hidden}.shell{width:100%;padding:18px clamp(14px,2.5vw,40px) 60px}.panelled{max-width:1500px}.top{border-bottom:2px solid var(--accent-hairline);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;padding-bottom:12px;display:flex}.top .brand{align-items:center;display:inline-flex}.top h1{letter-spacing:-.03em;margin:0;font-size:18px;font-weight:700}.top .spacer{flex:1}.top nav{flex-wrap:wrap;gap:3px;display:flex}button.tab{color:var(--dim);background:0 0;border-color:#0000}button.tab:hover:not(.on){color:var(--text);background:var(--accent-panel)}button.tab.on{background:var(--accent-panel);border-color:var(--accent-hairline);color:var(--accent-text);font-weight:600}.badge{border:1px solid var(--line);color:var(--dim);white-space:nowrap;text-transform:uppercase;letter-spacing:.08em;border-radius:99px;padding:2px 9px;font-size:10.5px;font-weight:600}.badge.accent{border-color:var(--accent-border);color:var(--accent-text);background:var(--accent-panel)}.badge.warn{border-color:var(--absent);color:var(--absent)}.dim{color:var(--dim)}.ok{color:var(--in);font-size:13px}.err{color:var(--danger);font-size:13px}.empty{color:var(--dim);padding:26px 0}.spacer{flex:1}.num{font-variant-numeric:tabular-nums}button{font:inherit;border-radius:var(--radius-s);border:1px solid var(--line);background:var(--panel-2);color:var(--text);cursor:pointer;white-space:nowrap;padding:5px 11px;font-size:13px}button:hover:not(:disabled){border-color:var(--accent-border);background:var(--accent-panel)}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}button.danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 45%, var(--line))}button:disabled{opacity:.45;cursor:default}button.link{color:var(--accent-text);text-align:left;background:0 0;border:none;padding:0}button.link:hover:not(:disabled){background:0 0}button.small{padding:3px 8px;font-size:12px}input,select,textarea{font:inherit;border-radius:var(--radius-s);border:1px solid var(--line);background:var(--field);color:var(--text);max-width:100%;padding:6px 9px;font-size:13px}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}input[type=checkbox],input[type=radio]{accent-color:var(--accent)}.field{flex-direction:column;gap:4px;min-width:130px;display:flex}.field>span{color:var(--dim);font-size:12px}.field small{font-size:11.5px;line-height:1.4}.row{flex-wrap:wrap;align-items:flex-start;gap:14px;display:flex}.check{align-items:center;gap:6px;font-size:13px;display:inline-flex}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.toolbar .search,.subhead .search{flex:0 300px;min-width:220px}.actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.actions.sticky{background:var(--bg);border-top:1px solid var(--line);margin-top:16px;padding:12px 0;position:sticky;bottom:0}.panelled section,.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-s);border-left:3px solid var(--accent-hairline);margin-bottom:14px;padding:15px 16px}.panelled section>h2,.panel>h2{text-transform:uppercase;letter-spacing:.06em;color:var(--accent-text);margin:0 0 10px;font-size:13px;font-weight:600}.panelled>p:first-child{margin-top:0}.editor{background:var(--panel);border:1px solid var(--accent-border);border-radius:var(--radius-s);flex-direction:column;gap:12px;margin-bottom:16px;padding:16px;display:flex}.editor h2{margin:0;font-size:16px}.waiting{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);max-width:560px;padding:22px}.waiting h2{margin:0 0 8px;font-size:17px}.waiting p{margin:0 0 8px}.banner{background:color-mix(in srgb, var(--absent) 14%, transparent);border:1px solid color-mix(in srgb, var(--absent) 45%, transparent);color:var(--absent);border-radius:var(--radius-s);margin-bottom:14px;padding:9px 13px}.banner.accent{background:var(--accent-panel);border-color:var(--accent-border);color:var(--text)}.login{max-width:340px;margin:70px auto}.login h1{margin:0 0 4px;font-size:20px}.login form{flex-direction:column;gap:9px;margin:16px 0 10px;display:flex}.login input{padding:9px 11px}.subhead{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.subhead .date{color:var(--dim)}.duty{background:var(--accent-header);border:1px solid var(--accent-hairline);border-radius:var(--radius-s);flex-wrap:wrap;flex:100%;align-items:center;gap:10px;padding:10px 14px;display:flex}.duty.uncovered{border-color:color-mix(in srgb, var(--absent) 55%, var(--line))}.who{font-weight:600}.band{margin-bottom:22px}.band h2{text-transform:uppercase;letter-spacing:.06em;color:var(--accent-text);align-items:center;gap:8px;margin:0 0 9px;font-size:13px;font-weight:600;display:flex}.grid{grid-template-columns:repeat(auto-fill, minmax(min(var(--card-width), 100%), 1fr));gap:9px;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--out);border-radius:var(--radius-s);flex-direction:column;gap:2px;padding:10px 12px;display:flex;position:relative}.card .room-dot{border-radius:50%;width:12px;height:12px;position:absolute;top:9px;right:10px;box-shadow:inset 0 0 0 1px #0000002e}.card .name{padding-right:18px}.card.NotArrived{border-left-color:var(--out)}.card.MorningChildcare{border-left-color:var(--in)}.card.School{border-left-color:var(--school)}.card.Aftercare{border-left-color:var(--after)}.card.SignedOut{border-left-color:var(--line);opacity:.72}.card.Absent{border-left-color:var(--absent);opacity:.72}.card .name{font-weight:600;line-height:1.25}.card .name button{all:unset;cursor:pointer}.card .name button:hover{text-decoration:underline}.card .meta{color:var(--dim);flex-wrap:wrap;gap:5px;font-size:11.5px;display:flex}.card .hours{color:var(--dim);font-variant-numeric:tabular-nums;margin-top:4px;font-size:11.5px}.card .late{color:var(--absent)}.card .actions{margin-top:8px}.card .chip{border-radius:var(--radius-s);border:1px solid var(--line);color:var(--dim);padding:0 5px;font-size:10.5px;display:inline-block}.letters-row{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.letters{flex-wrap:wrap;gap:4px;display:flex}.letter{text-align:center;font-variant-numeric:tabular-nums;min-width:34px;padding:4px 6px;font-size:13px;font-weight:600}.letter.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}table.grid-table{border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-s);width:100%;font-size:13px}table.grid-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--accent-text);background:var(--accent-header);border-bottom:1px solid var(--accent-hairline);padding:9px 11px;font-size:11.5px;font-weight:600}table.grid-table th:first-child{border-top-left-radius:9px}table.grid-table th:last-child{border-top-right-radius:9px}table.grid-table tbody tr:hover{background:var(--accent-panel)}table.grid-table td{border-bottom:1px solid var(--line);vertical-align:top;padding:8px 11px}table.grid-table tr:last-child td{border-bottom:none}table.grid-table tr.pending{opacity:.6}table.grid-table td .name{font-weight:600}table.grid-table td .meta{color:var(--dim);font-size:11.5px}table.grid-table td.right{text-align:right;font-variant-numeric:tabular-nums}.scroller{overflow-x:auto}.sheet-backdrop{z-index:20;background:#00000073;justify-content:center;align-items:flex-start;padding:24px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.sheet{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-s);flex-direction:column;gap:14px;width:min(760px,100%);padding:18px 20px;display:flex}.sheet header{align-items:baseline;gap:10px;display:flex}.sheet header h2{margin:0;font-size:18px}.sheet .metrics{flex-wrap:wrap;gap:10px;display:flex}.sheet .metric{border:1px solid var(--line);border-radius:var(--radius-s);min-width:92px;padding:8px 12px}.sheet .metric b{font-variant-numeric:tabular-nums;font-size:16px;display:block}.sheet .metric span{color:var(--dim);font-size:11.5px}.swatches{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.swatch{border-radius:var(--radius-s);border:2px solid var(--line);cursor:pointer;width:34px;height:34px;padding:0}.swatch.on{border-color:var(--text);box-shadow:0 0 0 2px var(--accent-soft)}.swatch{position:relative}.preview{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--panel-2);padding:14px}.dropzone{border:1px dashed var(--line);border-radius:var(--radius-s);text-align:center;color:var(--dim);padding:22px}.log{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-s);white-space:pre-wrap;max-height:280px;margin:0;padding:10px 12px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;overflow:auto}@media (width<=620px){.shell{padding:12px 10px 50px}.top{gap:8px;margin-bottom:10px;padding-bottom:8px}.top nav{-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;order:3;width:100%;overflow-x:auto}.top nav::-webkit-scrollbar{display:none}.top nav .tab{flex:none}.top>.badge:not(.accent),.top>.who{display:none}.top>button:not(.tab){padding:6px 9px;font-size:13px}.duty{gap:8px;padding:8px 10px}.subhead{gap:8px;margin-bottom:10px}.subhead .date{width:100%;font-size:12px}.band{margin-bottom:16px}.grid{gap:8px}.card{padding:9px 11px}input,select,textarea{font-size:16px}.toolbar .search{flex:100%;min-width:0}.letters{-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;width:100%;padding-bottom:2px;overflow-x:auto}.letters::-webkit-scrollbar{display:none}.letter{flex:none;min-width:38px;padding:7px 6px}.subhead .search{flex:100%;min-width:0}.field{flex:140px;min-width:0}.sheet-backdrop{padding:0}.sheet{width:100%;min-height:100vh;padding:14px 12px}.waiting{max-width:none}}.splash{background:var(--brand-ink);min-height:100vh;color:var(--brand-paper);flex-direction:column;justify-content:center;align-items:center;gap:26px;display:flex}.splash .note{color:var(--brand-tag-dark);font-size:13px}:root{--brand-red:#e41d39;--brand-ink:#1a1a1a;--brand-paper:#f5f4f2;--brand-ring-dark:#6f6c6a;--brand-tag-light:#4b4846;--brand-tag-dark:#a6a2a0}.at-lockup{display:inline-flex}.at-lockup--lockup{flex-direction:row;align-items:center}.at-lockup--stacked{flex-direction:column;align-items:flex-start}.at-text{flex-direction:column;display:inline-flex}.at-word{letter-spacing:-.02em;white-space:nowrap;font-weight:800;line-height:.95}.at-tagline{letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;font-weight:600}.at-mark{flex:none;display:inline-block;position:relative}.at-ring,.at-orbit{border-radius:50%;position:absolute;inset:0}.at-orbit--spin{animation:4.5s linear infinite at-spin}.at-dot{background:var(--brand-red);border-radius:50%;position:absolute;left:50%}.at-disc{border-radius:50%;display:block;position:absolute;top:50%;left:50%}.at-disc--breathe{animation:4.5s ease-in-out infinite at-breathe}@keyframes at-spin{to{transform:rotate(360deg)}}@keyframes at-breathe{0%,to{transform:scale(.94)}50%{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.at-orbit--spin,.at-disc--breathe{animation:none}}
