:root{--bg:#f4f6f8;--card:#fff;--inner:#f8fafb;--b:#e2e6ea;--t:#111827;--s:#4b5563;--m:#9ca3af;--a:#0e7490;--ok:#15803d;--warn:#b45309;--bad:#b91c1c;
--c0:#06b6d4;--c1:#eab308;--c2:#3b82f6;--c3:#9ca3af}
@media (prefers-color-scheme:dark){:root{--bg:#0b0f14;--card:#151b22;--inner:#1b232c;--b:#26313c;--t:#e5e7eb;--s:#9ca3af;--m:#6b7280;--a:#22d3ee}}
*{box-sizing:border-box}body{margin:0;font:16px/1.35 -apple-system,system-ui,sans-serif;background:var(--bg);color:var(--t);padding-bottom:calc(70px + env(safe-area-inset-bottom))}
header{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding:calc(10px + env(safe-area-inset-top)) 14px 8px;border-bottom:3px solid var(--c0);background:var(--card)}
h1{margin:0;font-size:22px}.meta{font-size:12px;color:var(--m)}
main{padding:10px;max-width:1100px;margin:0 auto;display:flex;flex-direction:column;gap:10px}
.card{background:var(--card);border:1px solid var(--b);border-radius:16px;padding:14px}
.h{font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--s);margin:0 0 8px}
.wx{display:flex;gap:6px;overflow-x:auto;font-size:13px}.wx>div{flex:none;background:var(--card);border:1px solid var(--b);border-radius:10px;padding:4px 8px;text-align:center}
.wx b{display:block;font-size:14px}.wx .rain{color:var(--a)}
.ev{border-left:4px solid var(--c3);background:var(--inner);border-radius:8px;padding:6px 8px;margin:6px 0}.ev .tm{font-weight:700;font-size:13px}.ev .wh{font-size:12px;color:var(--s)}
.week{display:grid;gap:8px;grid-template-columns:repeat(7,minmax(0,1fr))}.day{background:var(--card);border:1px solid var(--b);border-radius:12px;padding:8px;min-width:0}
.day.today{border-color:var(--a)}.day h3{margin:0 0 4px;font-size:14px}.day.today h3{color:var(--a)}.free{color:var(--m);font-size:14px}
@media (max-width:700px){.week{grid-template-columns:1fr}.day{display:flex;gap:10px}.day h3{flex:none;width:58px}.day>div{flex:1;min-width:0}}
.gadd{display:flex;gap:8px}input{font:inherit;padding:10px;border:1px solid var(--b);border-radius:10px;flex:1;background:var(--inner);color:var(--t);min-width:0}
button{font:inherit;min-height:44px;border:0;border-radius:10px;padding:0 14px;background:var(--a);color:#fff;cursor:pointer}
button.link{background:none;color:var(--a);padding:0}
.gi{display:flex;align-items:center;gap:10px;min-height:48px;border-bottom:1px solid var(--b)}.gi label{flex:1;display:flex;gap:10px;align-items:center;min-width:0}
.gi input[type=checkbox]{width:22px;height:22px;flex:none}.gi.done span{text-decoration:line-through;color:var(--m)}.gi .x{background:none;color:var(--m);font-size:20px;padding:0 8px}
.kids{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.row{display:flex;justify-content:space-between;gap:8px;padding:3px 0;align-items:center}.row span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pill{min-width:40px;text-align:center;font-weight:600;font-size:13px;padding:2px 9px;border-radius:999px}
.g90{background:#dcfce7;color:#166534}.g80{background:#cffafe;color:#155e75}.g70{background:#fef3c7;color:#92400e}.g0{background:#fee2e2;color:#991b1b}
.tag{flex:none;font-size:11px;font-weight:600;padding:1px 7px;border-radius:999px;background:var(--inner);color:var(--s)}.tag.over{background:#fee2e2;color:#991b1b}.tag.due{background:#fef3c7;color:#92400e}
.sch{display:flex;gap:8px;align-items:center;font-size:14px;padding:3px 0}.sch .t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sch .w{flex:none;font-size:12px;color:var(--m)}
.switch{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:60px}
.toggle{width:64px;height:36px;border-radius:999px;background:var(--b);position:relative;padding:0}.toggle::after{content:"";position:absolute;top:3px;left:3px;width:30px;height:30px;border-radius:50%;background:#fff;transition:.2s}
.toggle.on{background:var(--ok)}.toggle.on::after{left:31px}.toggle:disabled{opacity:.5}
.err{color:var(--bad);font-size:14px;min-height:1em}.muted{color:var(--m);font-size:13px}
nav{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--card);border-top:1px solid var(--b);padding-bottom:env(safe-area-inset-bottom)}
nav button{flex:1;background:none;color:var(--s);border-radius:0;font-size:13px;min-height:54px}nav button.on{color:var(--a);font-weight:700}
#login{padding:24px 14px;max-width:420px;margin:0 auto}#login form{display:flex;flex-direction:column;gap:10px}
.attn{margin-top:10px}.attn summary{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:999px;background:#fef3c7;color:#92400e;font-weight:600;font-size:14px;cursor:pointer;list-style:none}
.attn summary::-webkit-details-marker{display:none}.attn summary::after{content:" ▾"}.attn[open] summary::after{content:" ▴"}.attn ul{margin:6px 0 0;padding-left:20px;color:var(--s);font-size:15px}.attn li{padding:2px 0}

.lctl{margin-top:12px;display:grid;gap:14px}
.swatches{display:flex;flex-wrap:wrap;gap:10px}
.sw{width:40px;height:40px;border-radius:50%;padding:0;border:2px solid var(--b);position:relative;overflow:hidden;cursor:pointer}.sw:disabled{opacity:.5}
.sw.pick{background:conic-gradient(red,#ff0,lime,cyan,blue,#f0f,red)}.sw.pick input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}
.bright{display:flex;align-items:center;gap:10px}.bright input{flex:1;min-height:36px}.bright output{min-width:3em;text-align:right}
.scenes{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.scn{min-height:40px;border-radius:12px;border:1px solid var(--b);background:transparent;color:inherit}.scn.on{background:var(--ok);color:#fff;border-color:var(--ok)}.scn:disabled{opacity:.5}
.band-i{display:flex;gap:8px;align-items:flex-start;font-size:14px;padding:6px 0;border-top:1px solid var(--b)}.band-i .bt{flex:1;min-width:0}.band-i .bd{font-size:13px;color:var(--s);margin-top:2px}.band-i .w{flex:none;font-size:12px;color:var(--m)}.band-i a,.blink{color:var(--a);font-size:13px}.tag.deadline{background:#fef3c7;color:#92400e}.tag.rehearsal{background:#e0f2fe;color:#075985}
.cams{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.cam{min-width:0}
.snapw{position:relative;aspect-ratio:16/9;background:var(--inner);border-radius:12px;overflow:hidden}.snapw img,.snapw video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;cursor:pointer;background:#000}
.cam.loading .snapw::after{content:"Loading…";position:absolute;right:8px;bottom:6px;font-size:12px;color:#fff;background:#0008;border-radius:6px;padding:1px 6px}
.crow{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:6px}.crow button:disabled{opacity:.5}.cnote{min-height:1em}
.nnow{display:flex;align-items:baseline;gap:10px;margin:4px 0 10px}.nbig{font-size:44px;font-weight:700}
.nsp{display:flex;align-items:center;gap:10px;margin:8px 0}.nsp .muted{min-width:64px}.nb{width:48px;font-size:22px;padding:0}.nset{font-size:24px;min-width:48px;text-align:center}
nav button{padding:0 2px}
.vh{margin:4px 2px 10px;font-size:1.25rem}
dialog{border:0;border-radius:14px;padding:18px;max-width:320px}dialog::backdrop{background:rgba(0,0,0,.5)}
