/* Show-day screens: tablet first, big targets, colour never the only signal. */
:root{--in:#0f6634;--in-bg:#c9edd6;--scr:#9b1c12;--scr-bg:#f8cfc9;--ns:#6e4700;--ns-bg:#fbe2a0;--tile:#fff}
@media (prefers-color-scheme:dark){:root{--in:#8be3a9;--in-bg:#123d24;--scr:#ffa294;--scr-bg:#4a1a15;--ns:#ffd57a;--ns-bg:#463410;--tile:#24241f}}
main.wide{max-width:none;padding:12px 16px 110px}
.bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.bar h1{margin:0;font-size:22px;flex:1;min-width:200px}
.bar select{font-size:17px;max-width:100%}
.chip{display:inline-flex;gap:6px;align-items:center;padding:6px 12px;border-radius:999px;background:var(--card);border:2px solid var(--line);font-size:15px;font-weight:600;color:var(--ink)}
.chip b{font-size:16px}
.warn{background:var(--ns-bg);color:var(--ink);border-left:4px solid var(--ns);padding:8px 12px;border-radius:10px;margin:8px 0}
.cls{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px;margin:0 0 14px}
.cls.now{border:3px solid var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.cls header{all:unset;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;margin-bottom:10px}
.cls header .t{font-size:20px;font-weight:700;flex:1;min-width:180px}
.cls header .tag{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:10px}
.tile{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;gap:2px;min-height:92px;padding:10px;border-radius:12px;
  background:var(--tile);border:2px solid var(--line);box-shadow:0 1px 0 rgba(0,0,0,.08);color:var(--ink);-webkit-tap-highlight-color:transparent;user-select:none;position:relative}
.tile:active{transform:scale(.97)}
.tile .n{font-size:30px;font-weight:800;line-height:1}
.tile .h,.tile .r{font-size:13px;color:var(--muted);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tile .s{font-size:14px;font-weight:800;margin-top:auto}
.tile .go{position:absolute;top:8px;right:10px;font-size:12px;color:var(--muted)}
.tile.checked_in{background:var(--in-bg);border:3px solid var(--in)}.tile.checked_in .s{color:var(--in)}
.tile.scratched{background:var(--scr-bg);border:3px solid var(--scr)}.tile.scratched .s{color:var(--scr)}.tile.scratched .n{text-decoration:line-through}
.tile.no_show{background:var(--ns-bg);border:3px dashed var(--ns)}.tile.no_show .s{color:var(--ns)}
.tile .arena{all:unset;margin-top:6px;font-size:12px;padding:4px 6px;border-radius:8px;border:1px solid var(--line);text-align:center}
.tile .arena.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.tile .flag{font-size:11px;color:var(--scr);font-weight:700}
.add{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.add input{width:140px;font-size:18px}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:15px;color:var(--ink);margin:4px 0 12px}
.cols{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.judge{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px}
.judge h3{margin:0 0 8px;font-size:17px}
.plist{list-style:none;margin:0;padding:0}
.plist li{display:flex;gap:8px;align-items:center;padding:8px;border-bottom:1px solid var(--line)}
.plist .pl{font-size:22px;font-weight:800;width:44px;text-align:center}
.plist .who{flex:1;min-width:0}.plist .who b{font-size:20px}.plist .who div{font-size:14px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.plist .say{font-style:italic}
.ib{all:unset;cursor:pointer;min-width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;border:2px solid var(--line);font-size:18px;font-weight:700;background:var(--card);color:var(--ink)}
.ib.x{color:var(--scr);border-color:var(--scr)}.ib.dq{font-size:12px;padding:0 8px}
.np{opacity:.85}.np .pl{font-size:12px;color:var(--scr)}
.pool h4{margin:14px 0 8px;font-size:15px;color:var(--ink);font-weight:700}
.pool .tiles{grid-template-columns:repeat(auto-fill,minmax(84px,1fr))}.pool .tile{min-height:64px}.pool .tile .n{font-size:24px}
.search{width:100%;margin:6px 0}
.donebar{position:fixed;left:0;right:0;bottom:0;padding:12px 16px;background:var(--card);border-top:2px solid var(--line);display:flex;gap:10px;justify-content:center;z-index:5}
.donebar button{font-size:22px;font-weight:700;padding:16px 28px;min-width:min(520px,100%);border-radius:14px}
.donebar .closed{font-size:18px;align-self:center}
.next{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 14px}
.split{display:grid;gap:14px;grid-template-columns:1fr 1fr}
@media (max-width:900px){.split{grid-template-columns:1fr}}
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.modal{background:var(--card);color:var(--ink);border-radius:16px;padding:18px;max-width:560px;width:100%;max-height:85vh;overflow:auto}
.modal h2{margin:0 0 10px}.modal .btns{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-top:16px}
.modal .btns button{font-size:17px;padding:12px 18px}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:96px;background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:12px;z-index:60;max-width:90vw}
.toast.err{background:var(--scr);color:#fff}
.hub td a{margin-right:8px}
.stale{opacity:.55}
@media (max-width:640px){header{padding:8px 12px;gap:8px;flex-wrap:nowrap}header b{font-size:16px;white-space:nowrap}
header nav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}header nav a{white-space:nowrap;padding:6px 8px}
header .muted{display:none}header button.ghost{padding:6px 10px;font-size:14px;white-space:nowrap}
.tiles{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.bar h1{font-size:19px}}
.judge,.cls,.card{border-width:2px}.judge h3{font-size:19px}
input,select{border-width:2px!important;color:var(--ink)}input::placeholder{color:var(--muted);opacity:1}
button.ghost{border-width:2px!important;font-weight:600}
.plist li{border-bottom:2px solid var(--line)}
.np .pl{font-weight:800}
.tiles.compact{grid-template-columns:repeat(auto-fill,minmax(74px,1fr));gap:8px}
.tile.compact{min-height:64px;padding:8px 6px;align-items:center;justify-content:center;text-align:center}
.tile.compact .n{font-size:28px}.tile.compact .g{font-size:18px;font-weight:900;line-height:1;min-height:18px}
.tile.compact.checked_in .g{color:var(--in)}.tile.compact.scratched .g{color:var(--scr)}.tile.compact.no_show .g{color:var(--ns)}
.tile.compact .go{top:4px;right:6px;font-size:11px;font-weight:700}
.tile .fl{position:absolute;top:3px;left:6px;font-size:13px;font-weight:900;color:var(--scr)}
.tile.compact .arena{margin-top:4px;padding:2px 4px;font-size:11px}
.lastbar{position:sticky;top:0;z-index:4;display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:var(--card);border:2px solid var(--line);border-radius:12px;padding:8px 12px;margin:0 0 12px;font-size:15px}
.lastbar .lb-n{font-size:22px;font-weight:800}.lastbar .lb-w{flex:1;min-width:160px}
.lastbar .lb-s{font-weight:800}.lastbar .lb-s.checked_in{color:var(--in)}.lastbar .lb-s.scratched{color:var(--scr)}.lastbar .lb-s.no_show{color:var(--ns)}
.lastbar button{padding:8px 12px}
.split-h{margin:10px 0 6px;font-size:15px;display:flex;gap:10px;align-items:baseline}.split-h span{font-weight:600;color:var(--muted);font-size:14px}
.groups>div+div{border-top:2px dashed var(--line);margin-top:8px}
.cls header .ghost{padding:6px 10px;font-size:14px}
.modal .person{all:unset;box-sizing:border-box;display:flex;flex-direction:column;width:100%;padding:10px 12px;border:2px solid var(--line);border-radius:10px;margin:6px 0;cursor:pointer;background:var(--card);color:var(--ink)}
.modal .person span{font-size:13px;color:var(--muted)}.modal .person:hover,.modal .person:focus{border-color:var(--accent)}
.modal h4{margin:12px 0 4px;font-size:14px}
.who.tap{cursor:pointer}.who.tap:hover b{text-decoration:underline}
.stages{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 14px}
.stage{all:unset;cursor:pointer;display:flex;flex-direction:column;gap:2px;padding:8px 14px;border-radius:12px;border:2px solid var(--line);background:var(--card);color:var(--ink);font-weight:700;min-width:110px}
.stage small{font-weight:600;color:var(--muted);font-size:12px}.stage .i{font-size:14px}
.stage.done{border-color:var(--in)}.stage.done .i{color:var(--in)}.stage.in_ring{border-color:var(--accent)}.stage.in_ring .i{color:var(--accent)}
.stage.on{box-shadow:0 0 0 3px var(--accent);border-color:var(--accent)}.stage:disabled{opacity:.55;cursor:default}
.tile.pick.picked{background:var(--in-bg);border:3px solid var(--in)}.tile.pick.picked .g{color:var(--in)}
.board table td,.board table th{padding:6px 8px}.board tr.st-advance td{background:var(--in-bg)}.board tr.st-decide td{background:var(--ns-bg)}
.board .adv{color:var(--in);font-weight:800}
.readline{margin:12px 0;padding:12px 14px;border:2px solid var(--accent);border-radius:12px;background:var(--card);font-size:18px}
fieldset.opts{border:2px solid var(--line);border-radius:10px;margin:10px 0;padding:8px 12px}fieldset.opts legend{font-weight:700;padding:0 4px}
fieldset.opts label{display:block;font-weight:500;margin:6px 0}.nums{display:flex;gap:12px;flex-wrap:wrap}.nums input{width:70px;margin-left:6px}
.grp-done{opacity:.6}.grp-now .split-h{color:var(--accent)}
.notadv{margin:14px 0;padding:10px 12px;border:2px dashed var(--line);border-radius:10px}
.roles{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.role{display:flex;flex-direction:column;gap:4px;padding:16px;border:2px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink);text-decoration:none;min-height:110px}
.role:hover,.role:focus{border-color:var(--accent)}.role .ri{font-size:26px}.role b{font-size:19px}.role span{color:var(--muted);font-weight:600}
.role.last{border:3px solid var(--accent)}.role em{font-style:normal;font-size:12px;font-weight:700;color:var(--accent)}
.role-chip{border:2px solid var(--accent)!important;border-radius:999px!important;padding:5px 12px!important;font-size:14px;white-space:nowrap}
@media (max-width:640px){.role-chip{font-size:12px;padding:4px 8px!important;max-width:120px;overflow:hidden;text-overflow:ellipsis}}
.formgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.formgrid label{font-weight:600}.formgrid input{width:100%;margin-top:4px}
table.review td{font-size:15px}table.review tr.has-warn td{background:color-mix(in srgb,var(--ns-bg) 45%,transparent)}
.rule{display:block;font-weight:600;margin:2px 0 6px}.rule small{display:block;font-weight:400;color:var(--muted);font-size:12px;margin-left:24px}
.rule.assumed{background:var(--ns-bg);border-radius:8px;padding:4px 6px}
.tag-fun{font-size:11px;font-weight:800;text-transform:uppercase;background:var(--in-bg);color:var(--in);padding:2px 6px;border-radius:6px}
.narrow{max-width:560px;margin:0 auto}label.check{display:flex;gap:8px;align-items:flex-start;font-weight:600;margin:10px 0}
.add-role{border-style:dashed;justify-content:center}
.day h2{margin:22px 0 8px}.classlist{display:flex;flex-direction:column;gap:6px}
.crow{display:grid;grid-template-columns:32px 56px 1fr auto;gap:10px;align-items:center;padding:10px 12px;border:2px solid var(--line);border-radius:12px;background:var(--card);font-weight:600;cursor:pointer}
.crow input{width:24px;height:24px}.crow .cn{font-weight:800;font-size:18px}.crow .cname small{display:block;font-weight:500;color:var(--muted);font-size:13px}
.crow .why{color:var(--scr)!important}.crow.needs_info .why{color:var(--ns)!important}
.crow:has(input:checked){border-color:var(--in);background:var(--in-bg)}.crow.ineligible,.crow.locked{opacity:.7;cursor:default}
.crow .cfee{font-weight:700}
.donebar .closed{flex:1;max-width:560px}
.crow.grouped-out{opacity:.55;cursor:default}
.entries{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.ecard{border:2px solid var(--line);border-radius:12px;background:var(--card);padding:12px}.ecard.scr{opacity:.65}
.ecard .ehead{font-size:17px;font-weight:700}.ecard .emeta{color:var(--muted);font-weight:500;font-size:14px;margin-top:2px}.ecard .estat{margin-top:6px;font-weight:800;color:var(--in)}
@media (max-width:640px){.donebar{flex-direction:column;align-items:stretch;gap:6px;padding:8px 12px}.donebar button{min-width:0;width:100%;font-size:19px;padding:12px}
.donebar .closed{font-size:14px;max-width:none}.crow{grid-template-columns:28px 44px 1fr;}.crow .cfee{grid-column:3}}
[hidden]{display:none!important}
.sstat{font-weight:700;color:var(--in)}.sstat.wait{color:var(--ns)}
.scbar{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:4px 0 12px}.scbar label{font-weight:600}
.scoregrid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:14px;align-items:start}
@media (max-width:900px){.scoregrid{grid-template-columns:1fr}.ladder{position:static!important}}
.ladder{position:sticky;top:12px;background:var(--card);border:2px solid var(--line);border-radius:14px;padding:12px;max-height:85vh;overflow:auto}
.ladder h3{margin:4px 0 6px}.tbl{font-size:13px;background:var(--ns-bg);border-radius:8px;padding:6px 8px;margin:0 0 8px}
.lrow{all:unset;box-sizing:border-box;cursor:pointer;display:grid;grid-template-columns:44px 1fr auto;gap:6px;align-items:baseline;width:100%;padding:8px 6px;border-bottom:1px solid var(--line)}
.lrow .lk{font-weight:800}.lrow .lt{font-weight:800;font-size:18px}.lrow small{grid-column:1/-1;color:var(--muted);font-style:italic}.lrow.tied .lk{color:var(--ns)}
details.run{background:var(--card);border:2px solid var(--line);border-radius:14px;margin:0 0 10px}
details.run>summary{list-style:none;cursor:pointer;display:flex;gap:12px;align-items:center;padding:12px 14px}
details.run>summary::-webkit-details-marker{display:none}
details.run .rb{font-size:24px;font-weight:800}.details.run .rt{margin-left:auto}details.run .rt{margin-left:auto;font-size:22px;font-weight:800}
details.run.op .rt{color:var(--scr);font-size:16px}details.run.notin{border-style:dashed}
.tag-notin{font-size:12px;font-weight:800;background:var(--ns-bg);color:var(--ns);padding:2px 8px;border-radius:6px}
details.run.flash{box-shadow:0 0 0 4px var(--accent)}
.mans{padding:0 12px 12px}
.mn{border:3px solid var(--accent);border-radius:12px;margin:0 0 12px;overflow:hidden}
.mn:nth-child(even){border-color:#8a5a00}.mn>header{all:unset;display:flex;gap:10px;align-items:center;padding:8px 12px;background:var(--accent);color:#fff;font-weight:700}
.mn:nth-child(even)>header{background:#8a5a00}.mn .mi{width:1.8em;height:1.8em;border-radius:50%;background:rgba(255,255,255,.25);display:grid;place-items:center}
.mn .mv{margin-left:auto}.mn .mb{padding:10px}.mn.fe{border-color:#1f4f7a}.mn.fe>header{background:#1f4f7a}
.mn .quick{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:8px;flex-direction:row;font-weight:inherit}
.qv{all:unset;text-align:center;padding:12px 0;border:2px solid var(--line);border-radius:10px;font-weight:800;font-size:17px;cursor:pointer;background:var(--card);color:var(--ink)}
.qv.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.mn .quick.penq{display:flex;flex-wrap:wrap;gap:6px;width:100%;margin:0}.qv.pen{padding:10px 12px;font-size:15px;border-color:var(--bad,#c0392b);color:var(--bad,#c0392b)}
.strow{display:flex;gap:16px;flex-wrap:wrap}.st{display:flex;gap:6px;align-items:center}.st .sl{font-weight:700;min-width:62px}
.st output{min-width:44px;text-align:center;font-size:20px;font-weight:800}.st.pen .sl{color:var(--scr)}
.runfoot{display:flex;gap:14px;flex-wrap:wrap;align-items:center;justify-content:space-between}.runfoot .tot b{font-size:22px}
.fly{margin-top:14px}.mlist li{display:flex;gap:6px;margin:6px 0}.mlist input{flex:1}
.tclasses{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:4px 12px;max-height:420px;overflow:auto;border:2px solid var(--line);border-radius:10px;padding:8px}
.tcl{font-weight:500}.tcl.other{opacity:.55}
.divchip{padding:10px 16px;border-radius:999px;border:2px solid var(--line);background:var(--card);color:var(--ink);font-weight:700;font-size:16px;cursor:pointer}
.divchip small{font-weight:600;opacity:.75;margin-left:4px}
.divchip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.divpick .next{flex-wrap:wrap;gap:8px;margin-top:8px}
.elist{padding:0;overflow:hidden;max-width:820px}
.elist-h{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;border-bottom:2px solid var(--line)}
.elist-h b{font-size:18px}.elist-h small{display:block;color:var(--muted);font-weight:600;font-size:14px}
.elist-day{padding:6px 14px;background:var(--bg);font-weight:800;font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line)}
.erow{display:grid;grid-template-columns:56px 1fr auto;gap:10px;align-items:baseline;padding:8px 14px;border-bottom:1px solid var(--line)}
.erow:last-child{border-bottom:0}.erow .cn{font-weight:800}
.erow .en{font-weight:600}.erow .en small{color:var(--muted);font-weight:600;margin-left:8px;font-size:13px}
.erow .es{font-weight:800;color:var(--in);font-size:14px;white-space:nowrap}
.erow.scr .en,.erow.scr .cn{text-decoration:line-through;color:var(--muted)}.erow.scr .es{color:var(--scr)}
@media (max-width:520px){.erow .en small{display:block;margin-left:0}}
/* Entry screen class picker: one bordered list per day, thin row dividers. */
.classlist{gap:0;border:2px solid var(--line);border-radius:12px;background:var(--card);overflow:hidden;max-width:820px}
.crow{border:0;border-radius:0;border-bottom:1px solid var(--line);padding:8px 12px;grid-template-columns:28px 52px 1fr auto}
.crow:last-child{border-bottom:0}
.crow .cn{font-size:16px}.crow .cname small{display:inline;margin-left:8px}
.crow:has(input:checked){border-color:var(--line)}
.day h2{margin:16px 0 6px;font-size:15px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
@media (max-width:640px){.crow{grid-template-columns:28px 44px 1fr auto}.crow .cfee{grid-column:auto}.crow .cname small{display:block;margin-left:0}}
.staffbar{background:var(--ns-bg);color:var(--ink);padding:8px 16px;font-weight:600;border-bottom:2px solid var(--ns)}.staffbar a{color:var(--ink)}
.badge{display:inline-block;background:#fff;color:var(--accent);border-radius:999px;padding:1px 8px;font-size:13px;font-weight:800;margin-left:4px}
.numtbl td{vertical-align:middle}.numtbl .num{font-size:20px;font-weight:800}.numtbl input{width:90px;padding:8px}
.numtbl tr.done td{color:var(--muted)}.numtbl .prob{display:block;color:var(--scr);font-weight:700;font-size:13px}
.numtbl .acts{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.numtbl button{padding:8px 12px}
.tile.worked{background:var(--wk-bg);border:3px solid var(--wk)}.tile.compact.worked .g,.lastbar .lb-s.worked{color:var(--wk)}
:root{--wk:#1d4f91;--wk-bg:#d3e3f8}@media (prefers-color-scheme:dark){:root{--wk:#9cc4ff;--wk-bg:#152a47}}
.lastbar.inclass{top:4px;margin:8px 0 10px;border-color:var(--accent);box-shadow:0 2px 6px rgba(0,0,0,.08)}
/* ---- colour pass: header chip, pills, draws page ---- */
header .role-chip{border-color:var(--gold)!important;color:#fff;background:rgba(224,161,6,.18)}
.chip{border-color:var(--accent-line);background:var(--accent-soft);color:var(--ink)}
.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:13px;font-weight:800;white-space:nowrap;border:2px solid}
.pill.todo{background:#fff4d6;color:#7a5200;border-color:var(--gold)}.pill.done{background:var(--go-soft);color:var(--go);border-color:var(--go)}
.pill.none{background:var(--bg);color:var(--muted);border-color:var(--line)}
@media (prefers-color-scheme:dark){.pill.todo{background:#3b2d07;color:#ffd770}}
.drawctl{display:flex;flex-direction:column;gap:10px;border-left:5px solid var(--accent)}
.drawpick .range{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin:4px 0}
.drawpick .range label{display:flex;gap:6px;align-items:center;margin:0}.drawpick .range input{width:84px}
.drawpick .daychips{display:inline-flex;gap:6px;flex-wrap:wrap}
.rules summary{cursor:pointer;font-weight:700;color:var(--accent)}
.drawlist{border:2px solid var(--line);border-radius:12px;background:var(--card);overflow:hidden}
.drow{display:grid;grid-template-columns:28px 52px 1fr auto auto;gap:10px;align-items:center;padding:8px 12px;border-bottom:1px solid var(--line);margin:0;font-weight:600;cursor:pointer}
.drow:last-child{border-bottom:0}.drow input{width:22px;height:22px}.drow .cn{font-weight:800}
.drow .dn small{display:block;color:var(--muted);font-weight:500;font-size:13px}.drow .dn .ord{color:var(--go);font-weight:700}
.drow:has(input:checked){background:var(--accent-soft)}.drow.empty{opacity:.65;cursor:default}
.drow button{padding:7px 14px}
@media (max-width:640px){.drow{grid-template-columns:28px 44px 1fr}.drow .ds,.drow button{grid-column:3}}
.donebar{border-top:4px solid var(--gold)}
/* Each screen keeps its own colour everywhere it appears. */
.btn.scr-gate{background:#1d6b43;border-color:#1d6b43}.btn.scr-ring{background:#1f4fa8;border-color:#1f4fa8}
.btn.scr-ann{background:#7a3fa0;border-color:#7a3fa0}.btn.scr-rg{background:#0f6d78;border-color:#0f6d78}
.btn.tool{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-line)}
.btn.tool-num{background:#fff4d6;color:#6b4800;border-color:var(--gold)}.btn.tool-num .badge{background:var(--gold);color:#1a1200}
.btn.tool-draw{background:var(--gold);color:#1a1200;border-color:var(--gold)}
@media (prefers-color-scheme:dark){.btn.tool{color:#dbe6ff}.btn.tool-num{background:#3b2d07;color:#ffd770}}
.btn.sm{padding:4px 12px;font-size:14px}
.role{border-left-width:8px;border-left-color:var(--accent)}
.role.r-gate{border-left-color:#1d6b43}.role.r-ring{border-left-color:#1f4fa8}.role.r-announcer{border-left-color:#7a3fa0}
.role.r-office{border-left-color:var(--gold)}.role.r-scoring{border-left-color:#b3261e}.role.r-system,.role.r-staff{border-left-color:#46505f}
.role:hover{background:var(--accent-soft)}
@media (prefers-color-scheme:dark){:root{--tile:#1e2a3d}}
.tile.compact .go{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:0 5px;top:3px;right:4px}
@media (prefers-color-scheme:dark){.tile.compact .go{color:#dbe6ff}}
/* Placing pool: what a tap does */
.tapmode{display:inline-flex;border:2px solid var(--accent-line);border-radius:12px;overflow:hidden;margin:0 0 8px}
.tapmode .tm{border:0;border-radius:0;background:var(--card);color:var(--ink);padding:10px 14px;font-weight:700}
.tapmode .tm.place.on{background:var(--accent);color:#fff}.tapmode .tm.np.on{background:var(--bad);color:#fff}
.tapmode .tm + .tm{border-left:2px solid var(--accent-line)}
.pool.npmode{outline:3px solid var(--bad);outline-offset:4px;border-radius:10px}
.pool.npmode .poolh{color:var(--bad)}.pool.npmode .tile{border-color:var(--bad);background:var(--bad-soft)}
/* Judge picker, confirmation, announcer "all in" */
.jpick{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 10px}.jpick .jl{font-weight:700}
.jchip{background:var(--card);color:var(--ink);border:2px solid var(--line);border-radius:999px;padding:8px 14px;font-weight:700}
.jchip.on{background:var(--accent);border-color:var(--accent);color:#fff}.jchip.all{background:transparent;color:var(--accent);border-style:dashed;border-color:var(--accent-line)}
.cfmbtn{width:100%;margin:6px 0 10px;padding:12px;font-size:17px}
.cfmok{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;background:var(--go-soft);color:var(--go);border:2px solid var(--go);border-radius:10px;padding:8px 10px;margin:6px 0 10px;font-weight:800}
.cfmok button{padding:6px 12px}
.judge.confirmed{border-color:var(--go);box-shadow:inset 0 4px 0 var(--go)}
.cfmlist{columns:2;font-size:18px;margin:6px 0}
.allin{border:2px solid var(--gold);background:#fff4d6;color:#4a3300;border-radius:12px;padding:10px 14px;margin:0 0 10px;font-size:16px}
.allin.yes{border-color:var(--go);background:var(--go-soft);color:var(--go);font-size:18px;animation:allin 1.2s ease-out 1}
@keyframes allin{0%{box-shadow:0 0 0 0 rgba(29,107,67,.55)}100%{box-shadow:0 0 0 18px rgba(29,107,67,0)}}
@media (prefers-color-scheme:dark){.allin{background:#3b2d07;color:#ffd770}}
.tile.numonly{min-height:64px;justify-content:center;align-items:center}.tile.numonly .n{font-size:28px}
.npsel{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.npsel span{font-weight:700;margin-right:4px}
.npsel button{background:var(--card);color:var(--ink);border:2px solid var(--line);padding:7px 12px}
.npsel button.on{background:var(--go);border-color:var(--go);color:#fff}.npsel button.bad.on{background:var(--bad);border-color:var(--bad)}
a.jchip{text-decoration:none}
.plist li.np{grid-template-columns:auto 1fr auto}
.plist li.np .pl{width:auto;min-width:0;font-size:12px;font-weight:800;color:#fff;background:var(--bad);border-radius:999px;padding:3px 9px;white-space:nowrap}
/* Show picker in the top bar */
header .showpick{margin:0}
header .showpick select{background:rgba(255,255,255,.12);color:#fff;border:2px solid var(--gold);border-radius:10px;padding:7px 30px 7px 12px;font-weight:700;max-width:260px;
  appearance:none;background-image:linear-gradient(45deg,transparent 50%,#fff 50%),linear-gradient(135deg,#fff 50%,transparent 50%);background-position:calc(100% - 15px) 52%,calc(100% - 10px) 52%;background-size:5px 5px;background-repeat:no-repeat}
header .showpick select option{color:#121a26;background:#fff}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
@media (max-width:640px){header .showpick select{max-width:170px;font-size:14px}}
@media (max-width:640px){header{row-gap:8px;flex-wrap:wrap}header b{flex:1}header .showpick{order:20;flex-basis:100%}header .showpick select{max-width:none;width:100%;font-size:15px}
  header nav{order:10;flex-basis:100%}}
.cls header .ciall{padding:8px 14px}
.ringnav{margin:0 0 8px}#closedbar{margin:0 0 10px}#closedbar:empty{display:none}
.closednote{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:var(--bad-soft);border:2px solid var(--bad);border-radius:12px;padding:10px 14px}
.judge h3 .placesto{margin-left:8px;font-size:13px;font-weight:700;color:var(--muted)}
.pool.full:not(.npmode) .tile{opacity:.45}.pool.full:not(.npmode) .poolh{color:var(--go)}
.cutline{margin:6px 0;padding:4px 8px;border-top:3px dashed var(--bad);color:var(--bad);font-size:13px;font-weight:800}
.lrow.beyond{opacity:.55}
.settbl td{vertical-align:middle}.settbl input,.settbl select{padding:8px}
/* Role picker: one row per ring */
.rolerows{display:flex;flex-direction:column;gap:12px}
.rolerow{display:grid;grid-template-columns:150px 1fr;gap:12px;align-items:center}
.rolerow .rowname{font-weight:800;font-size:17px;color:var(--navy)}
@media (prefers-color-scheme:dark){.rolerow .rowname{color:var(--ink)}}
.roleline{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
.roleline .role{flex:0 0 150px;min-height:84px;padding:12px}
.roleline .role .ri{font-size:22px}.roleline .role b{font-size:17px}
@media (max-width:640px){.rolerow{grid-template-columns:1fr;gap:6px}.roleline .role{flex-basis:128px}}
.rolerow.noname{grid-template-columns:1fr}
.role.r-settings{border-left-color:var(--accent)}
/* Which screen am I on? A full-width band in that screen's colour. */
.screenband{display:flex;align-items:center;gap:12px;padding:8px 16px;color:#fff;font-size:22px;letter-spacing:.02em;border-bottom:3px solid rgba(0,0,0,.18)}
.screenband b{font-weight:900;text-transform:uppercase;letter-spacing:.06em}
.screenband .sbi{font-size:24px}.screenband .sbw{font-size:18px;font-weight:700;opacity:.92;padding-left:12px;border-left:2px solid rgba(255,255,255,.5)}
.sb-gate{background:#1d6b43}.sb-ring{background:#1f4fa8}.sb-ann{background:#7a3fa0}.sb-rg{background:#0f6d78}
.sb-score{background:#b3261e}.sb-office{background:#e0a106;color:#1a1200}.sb-office .sbw{border-color:rgba(0,0,0,.3)}.sb-admin{background:#46505f}
@media (max-width:640px){.screenband{font-size:18px;padding:6px 12px}.screenband .sbw{font-size:15px}}
/* My barn */
.bh{margin:18px 0 8px}
.nextcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.ncard{background:var(--card);border:2px solid var(--line);border-left:8px solid var(--accent);border-radius:12px;padding:10px 12px}
.ncard.now{border-left-color:var(--go);background:var(--go-soft)}
.ncard .nwhen{font-weight:800;font-size:14px;color:var(--accent)}.ncard.now .nwhen{color:var(--go)}
.ncard .nback{font-size:30px;font-weight:900;line-height:1.1}.ncard .ngo{font-size:15px;font-weight:800;margin-left:10px;padding:2px 8px;border-radius:999px;background:var(--gold);color:#1a1200;vertical-align:middle}
.ncard .nwho{font-size:15px}.ncard .nwhere{font-size:13px;color:var(--muted)}
.barnlist{border:2px solid var(--line);border-radius:12px;background:var(--card);overflow:hidden}
.brow{display:grid;grid-template-columns:78px 64px 1fr auto;gap:10px;align-items:center;padding:8px 12px;border-bottom:1px solid var(--line)}
.brow:last-child{border-bottom:0}.brow .bnum{font-weight:900;font-size:18px}.brow .bwhen{font-weight:800;font-size:14px;color:var(--accent)}
.brow .bwho small{display:block;color:var(--muted);font-size:13px}.brow .bstat{text-align:right;font-weight:700}.brow .bstat small{display:block;color:var(--muted);font-weight:600}
.brow.now{background:var(--go-soft)}.brow.now .bwhen{color:var(--go)}
.brow.done,.brow.scratched{opacity:.6}.brow.scratched .bwho b{text-decoration:line-through}
.brow .placed{color:var(--go);font-size:18px}
.addfollow .fres{display:flex;flex-direction:column;gap:4px;margin-top:6px}
.fopt{background:var(--card);color:var(--ink);border:2px solid var(--line);text-align:left;font-weight:600}
.fopt:hover{border-color:var(--accent)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.fchip{display:inline-flex;align-items:center;gap:6px;padding:4px 6px 4px 12px;border-radius:999px;background:var(--accent-soft);border:2px solid var(--accent-line);font-weight:700}
.fchip .x{background:transparent;color:var(--ink);border:0;padding:2px 6px}
.clash{border-left:5px solid var(--bad)}
@media (max-width:560px){.brow{grid-template-columns:62px 54px 1fr}.brow .bstat{grid-column:2 / -1;text-align:left}}
.eta{font-weight:800;color:var(--accent);white-space:nowrap}td.eta{font-size:14px}
.cls .tag .eta{color:var(--accent);text-transform:none;letter-spacing:0;margin-left:4px}
.brow .bwhen small{display:block;font-weight:600;font-size:11px;color:var(--muted)}
.buzzcard{border-left:5px solid var(--gold)}.buzzrow{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.buzzrow label{margin:0;font-weight:600}
.brow{grid-template-columns:104px 64px 1fr auto}
/* Paybacks / points */
.setrow{display:flex;gap:14px;align-items:end;flex-wrap:wrap}.setrow label{margin:0}
.pmodels{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.pmodel{margin:0}.pmodel.isdefault{border:2px solid var(--go)}.pmh{display:flex;gap:8px;align-items:center;justify-content:space-between}
.addm{display:grid;place-items:center;border-style:dashed;text-decoration:none;color:var(--accent);min-height:120px}
table.tiers{margin-top:8px;font-size:14px}table.tiers td{padding:4px 8px}.sh{display:inline-block;margin:2px 6px 2px 0;padding:1px 8px;border-radius:999px;background:var(--accent-soft);font-weight:700;font-size:13px}
.sh.posted{background:var(--go-soft);color:var(--go)}
.pbt td{vertical-align:middle}.pbt tr.nopay td{color:var(--muted)}.pbt .inl{display:flex;gap:6px;align-items:center;margin:0}.pbt select,.pbt input{padding:6px}
.pbt td.pays{font-size:13px}
.ptab{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.ptab label{margin:0;font-size:13px}.ptab input{width:100%}
.pickcls{max-height:320px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:6px 10px;margin:4px 0 10px}.pickcls .check{margin:4px 0}
.stand table td,.stand table th{padding:6px 10px}.stand tr.lead td{background:var(--go-soft)}
.qual summary{cursor:pointer}.qual table{margin-top:8px}
.champ ul{margin:6px 0 0;padding-left:20px}.champ{border-left:5px solid var(--gold)}
/* Role picker on the Staff page: toggle buttons, not bare checkboxes */
.rolepick{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;margin:6px 0}
.rchip{position:relative;display:block;margin:0;cursor:pointer}
.rchip input{position:absolute;opacity:0;pointer-events:none}
.rchip span{display:flex;flex-direction:column;gap:2px;padding:10px 12px 10px 38px;border:2px solid var(--line);border-left:6px solid var(--rc,var(--accent));border-radius:10px;background:var(--card);min-height:58px}
.rchip span::before{content:"";position:absolute;left:14px;top:50%;width:16px;height:16px;margin-top:-8px;border:2px solid var(--line);border-radius:5px;background:var(--card)}
.rchip b{font-size:15px}.rchip small{color:var(--muted);font-weight:600;font-size:12px;line-height:1.25}
.rchip input:checked + span{background:var(--accent-soft);border-color:var(--rc,var(--accent))}
.rchip input:checked + span::before{content:"✓";color:#fff;background:var(--rc,var(--accent));border-color:var(--rc,var(--accent));font-size:12px;font-weight:900;line-height:14px;text-align:center}
.rchip input:focus-visible + span{outline:3px solid var(--focus);outline-offset:2px}
.rc-owner{--rc:#121a26}.rc-admin{--rc:#46505f}.rc-office{--rc:#b07c00}.rc-billing{--rc:#6b4800}.rc-gate{--rc:#1d6b43}
.rc-announcer{--rc:#7a3fa0}.rc-ring{--rc:#1f4fa8}.rc-scorer{--rc:#b3261e}.rc-readonly{--rc:#7c8796}
.rtags{display:flex;flex-wrap:wrap;gap:4px}.rtag{font-size:12px;font-weight:800;color:#fff;background:var(--rc,var(--accent));border-radius:999px;padding:2px 10px}
.redit summary{cursor:pointer;color:var(--accent);font-weight:700;font-size:13px;margin-top:4px}
.stafft tr.off td{opacity:.6}
/* Change log */
.loglist{border:2px solid var(--line);border-radius:12px;background:var(--card);overflow:hidden}
.logrow{border-bottom:1px solid var(--line)}.logrow:last-child{border-bottom:0}
.logrow summary{display:grid;grid-template-columns:170px 140px 1fr;gap:12px;padding:8px 12px;cursor:pointer;list-style:none;align-items:baseline}
.logrow summary::-webkit-details-marker{display:none}.logrow summary:hover{background:var(--accent-soft)}
.logrow .lt{color:var(--muted);font-size:13px;font-weight:600}.logrow .lw{font-weight:700}.logrow .lx small{color:var(--muted)}
.logrow[open] summary{background:var(--accent-soft)}.logrow .ld{padding:8px 12px 12px;font-size:13px;display:flex;flex-direction:column;gap:4px;background:var(--bg)}
.logrow .ld code{word-break:break-all}.logrow.corr .lx{color:var(--bad)}
@media (max-width:640px){.logrow summary{grid-template-columns:1fr}.logrow .lt{font-size:12px}}
/* ⓘ help: hover, tap or tab to it */
.tip{position:relative;display:inline-grid;place-items:center;width:18px;height:18px;margin-left:6px;border-radius:50%;
  background:var(--accent-soft);color:var(--accent);border:1.5px solid var(--accent-line);font:italic 800 12px/1 Georgia,serif;
  cursor:help;vertical-align:middle;flex:none;text-transform:none;letter-spacing:0}
.tip:hover,.tip:focus{background:var(--accent);color:#fff;outline:none}
/* The tip text floats above everything (drawn by script in base.html), so scrolling tables can't clip it. */
.tipbox{position:fixed;z-index:9999;max-width:min(300px,calc(100vw - 20px));padding:9px 11px;border-radius:9px;background:#121a26;color:#fff;
  font:600 13.5px/1.4 system-ui,sans-serif;box-shadow:0 8px 22px rgba(0,0,0,.3);pointer-events:none}
header .tip,.screenband .tip{background:rgba(255,255,255,.2);color:#fff;border-color:rgba(255,255,255,.5)}
/* Pattern viewer */
.patview{position:fixed;inset:0;z-index:100;background:rgba(5,10,20,.92);display:flex;align-items:center;justify-content:center;cursor:zoom-out;padding:12px}
.patview img{max-width:100%;max-height:100%;object-fit:contain;background:#fff;border-radius:8px;box-shadow:0 10px 40px rgba(0,0,0,.5)}
.patview .pathint{position:fixed;bottom:14px;left:50%;transform:translateX(-50%);color:#fff;background:rgba(0,0,0,.6);padding:6px 14px;border-radius:999px;font-weight:700;font-size:14px}
.patbtn{padding:7px 12px}
.patpages{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0}.patpg{display:flex;flex-direction:column;align-items:center;gap:4px;margin:0;cursor:pointer}
.patpg input{position:absolute;opacity:0}.patpg img{width:140px;border:3px solid var(--line);border-radius:8px;background:#fff}
.patpg input:checked + img{border-color:var(--go);box-shadow:0 0 0 3px var(--go-soft)}.patpg span{font-size:13px;font-weight:700}
.linkbtn{background:none;border:0;padding:0;color:var(--accent);font:inherit;font-weight:700;cursor:pointer;text-decoration:underline}

/* ---- Billing and checkout ---- */
.sb-bill{background:#1d6b43}
.btn.tool-bill{background:var(--go-soft);color:var(--go);border-color:var(--go)}.btn.tool-bill .badge{background:var(--go);color:#fff}
@media (prefers-color-scheme:dark){.btn.tool-bill{color:#8be3a9}}
.btiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin:8px 0 14px}
.btiles.sm{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}
.btile{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border-radius:12px;background:var(--card);border:2px solid var(--line);color:var(--ink);text-decoration:none}
.btile b{font-size:24px;line-height:1.1}.btile span{font-size:13px;color:var(--muted);font-weight:600}
.btile.big b{font-size:30px}
a.btile:hover{border-color:var(--accent-line)}.btile.on{box-shadow:0 0 0 3px var(--accent-soft);border-color:var(--accent)}
.btile.rv{border-left:6px solid var(--gold)}.btile.ow{border-left:6px solid var(--bad)}.btile.dn{border-left:6px solid var(--go)}.btile.pd{border-left:6px solid var(--accent)}
.btile.ow b{color:var(--bad)}.btile.dn b{color:var(--go)}
.btable td.num,.btable th.num,.blines td.num{text-align:right;white-space:nowrap}
.btable tr{cursor:pointer}.btable tr:hover td{background:var(--accent-soft)}
.btable tr.st-review td:first-child{box-shadow:inset 5px 0 0 var(--gold)}.btable tr.st-returned td:first-child{box-shadow:inset 5px 0 0 var(--bad)}
.bpill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:13px;font-weight:800;white-space:nowrap;border:2px solid var(--line);background:var(--bg);color:var(--muted)}
.bpill.review{background:#fff4d6;color:#7a5200;border-color:var(--gold)}.bpill.returned,.bpill.owes{background:var(--bad-soft);color:var(--bad);border-color:var(--bad)}
.bpill.done,.bpill.zero{background:var(--go-soft);color:var(--go);border-color:var(--go)}.bpill.credit{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-line)}
@media (prefers-color-scheme:dark){.bpill.review{background:#3b2d07;color:#ffd770}}
.card.review{border:3px solid var(--gold);background:linear-gradient(0deg,var(--card),var(--card))}.card.review h2{margin-top:0}
.card.review .note{font-style:italic;margin:4px 0}
.revgrid{display:grid;grid-template-columns:2fr 1fr;gap:14px}.revform{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin:0}
.revform label{margin:0}.revform.back{flex-direction:column;align-items:stretch}.revform textarea{width:100%;font:inherit;padding:8px;border-radius:10px;border:2px solid var(--line);background:var(--card);color:var(--ink)}
@media (max-width:700px){.revgrid{grid-template-columns:1fr}}
.okline{padding:10px 14px;border-radius:10px;background:var(--go-soft);border-left:5px solid var(--go);font-weight:600;margin:10px 0;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.okline.wait{background:#fff4d6;border-color:var(--gold)}@media (prefers-color-scheme:dark){.okline.wait{background:#3b2d07}}
.okline .inl,.blines .inl{display:inline-flex;gap:6px;align-items:center;margin:0}
.bgroup{padding:10px 12px}.bgh{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:6px}.bgh .check{flex:1;margin:0;font-weight:500}
.bgh .gt{font-size:17px}
details.mv{position:relative}details.mv[open]{flex-basis:100%}details.mv form{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:6px 0;padding:8px;border-radius:10px;background:var(--accent-soft)}
details.mv summary,details.rv summary,.mvrow summary{list-style:none;cursor:pointer}details summary::-webkit-details-marker{display:none}
.blines{border:none}.blines td{padding:6px 8px}.blines td.ck{width:30px}.blines input[type=checkbox]{width:20px;height:20px}
.blines tr.gone td{color:var(--muted);text-decoration:line-through}.blines tr.scr td:nth-child(2){color:var(--muted)}
.mvbar{position:sticky;bottom:10px;z-index:5;display:flex;flex-direction:column;gap:8px;padding:12px 14px;border-radius:14px;background:var(--navy);color:#fff;box-shadow:0 6px 20px rgba(0,0,0,.25);margin:10px 0}
.mvbar .mvrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.mvbar select,.mvbar input{color:var(--ink)}
.mymv{flex-direction:row;align-items:center;flex-wrap:wrap}
.splits{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:6px}.splits .sp{display:inline-flex;gap:4px}
.bacts{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px;margin-top:14px}.bacts .card{margin:0}.bacts h3{margin:0 0 6px}
.bacts .row,.checkout .row{display:flex;gap:8px;flex-wrap:wrap}.muted.sm{font-size:13px;margin:4px 0}
.pof{font-weight:600}.clients h3{margin:0 0 6px}
.mybill{border-width:2px}.mybill.st-done{border-color:var(--go)}.mybill.st-review{border-color:var(--gold)}.mybill.st-returned{border-color:var(--bad)}
.mylines summary{cursor:pointer;font-weight:700;color:var(--accent);margin:6px 0}
.checkout{margin-top:12px;padding-top:10px;border-top:2px dashed var(--line)}.checkout h3{margin:0 0 8px}
.paypick{display:grid;gap:8px}.pm{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:2px solid var(--line);border-radius:12px;margin:0;font-weight:500;cursor:pointer}
.pm:has(input:checked){border-color:var(--go);background:var(--go-soft)}.pm.off{opacity:.6;cursor:default}
.pm input[type=radio]{width:20px;height:20px;margin-top:3px}.pm span{display:flex;flex-direction:column;gap:4px;flex:1}.pm small{color:var(--muted)}
.pm select,.pm input[name=reference]{max-width:260px}
button.big{font-size:19px;padding:14px 22px;width:100%;margin-top:8px}
.pofc{display:flex;justify-content:space-between;align-items:center;gap:10px}.pofc small{display:block}.pofc form{margin:0}
.setrow{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}.setrow label{margin:0}
.bacts label input,.bacts label select{display:block;width:100%;margin-top:4px;box-sizing:border-box}.bacts .row label{flex:1}
.bacts .row button{flex:1}

/* ---- Public show page (/live) ---- */
main.live{max-width:860px}
.lhero{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin:4px 0 10px}
.lhero h1{margin:0 0 2px;font-size:26px}.lsub{color:var(--muted);font-weight:600}
.lshowpick select{font-weight:700;max-width:260px}
.livedot{color:#c0392b;font-weight:800}.livedot::before{content:"";display:inline-block;width:9px;height:9px;border-radius:50%;background:#e53935;margin-right:5px;animation:lpulse 1.6s infinite}
@keyframes lpulse{50%{opacity:.25}}
.ann{display:flex;flex-direction:column;gap:2px;padding:10px 14px;border-radius:12px;margin:8px 0;background:var(--accent-soft);border-left:6px solid var(--accent)}
.ann.warn{background:#fff4d6;border-color:var(--gold)}.ann.urgent{background:var(--bad-soft);border-color:var(--bad)}
@media (prefers-color-scheme:dark){.ann.warn{background:#3b2d07}}
.ann span{font-weight:500}
h2.lh{font-size:17px;margin:18px 0 8px;display:flex;gap:8px;align-items:baseline}
.rnow{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.rcard{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-radius:14px;background:var(--navy);color:#fff;text-decoration:none;border-bottom:4px solid var(--gold)}
.rcard.idle{background:var(--card);color:var(--ink);border:2px solid var(--line);border-bottom-width:2px}
.rcard .rname{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;opacity:.8}
.rcard .rcls{font-size:16px;line-height:1.3}
.rline{display:flex;gap:5px;align-items:center;flex-wrap:wrap}.rline span{font-size:12px;opacity:.8;margin-right:2px}
.bn{display:inline-block;min-width:34px;text-align:center;padding:2px 7px;border-radius:7px;background:#fff;color:#13294b;font-weight:800;font-variant-numeric:tabular-nums}
.bn.deck{background:var(--gold);color:#1a1200}
.rcard.idle .bn,.lentries .bn,.places .bn{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-line)}
.rbar{height:6px;border-radius:3px;background:rgba(255,255,255,.2);overflow:hidden}.rbar i{display:block;height:100%;background:var(--gold)}
.rcard small.muted{color:inherit;opacity:.75}
.ltabs{display:flex;gap:6px;margin:18px 0 10px;overflow-x:auto;padding-bottom:2px}
.ltabs a{flex:0 0 auto;padding:9px 14px;border-radius:999px;background:var(--card);border:2px solid var(--line);color:var(--ink);text-decoration:none;font-weight:700}
.ltabs a.on{background:var(--accent);border-color:var(--accent);color:#fff}.ltabs .badge{background:var(--gold);color:#1a1200}
.daychips{display:flex;gap:6px;overflow-x:auto;margin:0 0 10px;padding-bottom:2px}.daychips .chip{flex:0 0 auto;text-decoration:none}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.chip.on a{color:#fff}
.lring{margin:0 0 16px}.lring h3{margin:0 0 6px;font-size:16px;color:var(--navy)}@media (prefers-color-scheme:dark){.lring h3{color:var(--ink)}}
.crow2{display:grid;grid-template-columns:56px 1fr auto;gap:10px;align-items:center;padding:10px 12px;background:var(--card);border:1px solid var(--line);border-radius:10px;margin:4px 0;color:var(--ink);text-decoration:none}
.crow2 .cnum{font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums}.crow2 .cname small{display:block;color:var(--muted);font-size:13px}
.crow2 .cwhen{font-weight:700;white-space:nowrap;font-size:14px;color:var(--muted)}
.crow2.now{border:2px solid var(--go);background:var(--go-soft)}.crow2.done{opacity:.7}
.crow2:hover{border-color:var(--accent-line)}
.nowpill{display:inline-block;white-space:nowrap;background:var(--go);color:#fff;padding:3px 10px;border-radius:999px;font-size:13px}
.respill{background:var(--gold);color:#1a1200;padding:3px 10px;border-radius:999px;font-size:13px}
details.ldone summary{cursor:pointer;color:var(--muted);font-weight:700;padding:4px 2px}
.lempty p{margin:10px 0 0}
.favchips{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px}.favchips .chip{gap:2px;padding:3px 4px 3px 12px}.favchips a{text-decoration:none}
.starf{display:inline;margin:0}button.star{background:none;border:none;color:var(--gold);font-size:22px;line-height:1;padding:4px 8px;cursor:pointer}
button.star:not(.on){color:var(--muted)}.chip.on button.star{color:#ffd770}
.bigstar button.star{font-size:34px}
.lfind{display:flex;gap:8px}.lfind input{flex:1;min-width:0;font-size:18px}.lfind button{flex:none}
.lfound .frow{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:var(--card);border:1px solid var(--line);border-radius:10px;margin:4px 0}
.lfound .frow a{text-decoration:none;color:var(--ink)}
.lres{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}.rescard h3{margin:0 0 6px;font-size:15px}
.places{list-style:none;margin:0;padding:0}.places li{display:flex;gap:8px;align-items:center;padding:5px 0;border-bottom:1px solid var(--line)}
.places li:last-child{border:none}.pl{display:inline-block;width:26px;height:26px;border-radius:50%;text-align:center;line-height:26px;font-weight:800;background:var(--bg);font-size:13px}
.pl.p1{background:#1f4fa8;color:#fff}.pl.p2{background:#b3261e;color:#fff}.pl.p3{background:#f5f5f5;color:#111;border:1px solid #bbb}.pl.p4{background:#f2c94c;color:#111}.pl.p5{background:#2e7d32;color:#fff}.pl.p6{background:#d81b60;color:#fff}
.erow2{display:flex;gap:10px;align-items:center;padding:8px 10px;background:var(--card);border-bottom:1px solid var(--line)}
.lentries{border:1px solid var(--line);border-radius:12px;overflow:hidden}.erow2 .who{flex:1}.erow2 .who small{display:block;color:var(--muted)}
.erow2 .who a{color:var(--ink);text-decoration:none}.erow2 .who small a{color:var(--muted)}
.erow2 .go{width:26px;text-align:right;color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums}
.erow2.scratched{opacity:.5}.erow2.scratched .who a{text-decoration:line-through}.erow2.worked{background:var(--go-soft)}
.lsplit{padding:6px 10px;background:var(--accent-soft);font-weight:800;color:var(--accent);font-size:13px}
a.brow{color:var(--ink);text-decoration:none}
.sglist{display:flex;flex-direction:column;gap:6px;margin-top:10px}.sg{display:flex;gap:10px;align-items:center;padding:10px 12px;background:var(--card);border:1px solid var(--line);border-radius:10px}
.sg form{margin:0}.sg>span{flex:1}.sg.planned{border-color:var(--go)}
button.vote,span.vote{display:flex;flex-direction:column;align-items:center;min-width:44px;padding:4px 6px;border-radius:10px;background:var(--accent-soft);color:var(--accent);border:2px solid var(--accent-line);font-size:12px;line-height:1.1}
button.vote.on{background:var(--accent);color:#fff}button.vote b,span.vote b{font-size:16px}
.lfoot{margin:30px 0 10px;text-align:center;color:var(--muted);font-size:14px}
@media (max-width:560px){.lhero h1{font-size:22px}.crow2{grid-template-columns:44px 1fr auto;padding:9px 10px}}
.installbar{position:sticky;bottom:10px;display:flex;gap:8px;align-items:center;padding:10px 12px;margin:16px 0 0;border-radius:14px;background:var(--navy);color:#fff;box-shadow:0 6px 18px rgba(0,0,0,.25)}
.installbar>span{flex:1}.installbar .ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.5)}

/* ---- Charts (reports & dashboards): series colors by slot, light and dark steps ---- */
:root{--s1:#2a78d6;--s2:#eb6834;--s3:#1baf7a;--s4:#eda100;--s5:#e87ba4;--s6:#008300;--s7:#6250d6;--s8:#e34948;--grid:#e3e6eb}
@media (prefers-color-scheme:dark){:root{--s1:#3987e5;--s2:#d95926;--s3:#199e70;--s4:#c98500;--s5:#d55181;--s6:#008300;--s7:#9085e9;--s8:#e66767;--grid:#2f3644}}
svg.chart{width:100%;max-width:720px;height:auto;display:block;font:12px system-ui,sans-serif;overflow:visible}
svg.chart .grid{stroke:var(--grid);stroke-width:1}svg.chart .tick{fill:var(--muted)}svg.chart .lab{fill:var(--ink)}svg.chart .val{fill:var(--ink);font-weight:700}
svg.chart g.s1{fill:var(--s1);stroke:var(--s1)}svg.chart g.s2{fill:var(--s2);stroke:var(--s2)}svg.chart g.s3{fill:var(--s3);stroke:var(--s3)}svg.chart g.s4{fill:var(--s4);stroke:var(--s4)}
svg.chart g path,svg.chart g rect{stroke:none}svg.chart g.ln path{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
svg.chart g.ln circle{stroke:var(--card);stroke-width:2}svg.chart g:hover{opacity:.85}
.clegend{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;margin:0 0 6px;color:var(--ink)}.clegend span{display:inline-flex;gap:6px;align-items:center}
.sw{display:inline-block;width:12px;height:12px;border-radius:3px}.sw.s1{background:var(--s1)}.sw.s2{background:var(--s2)}.sw.s3{background:var(--s3)}.sw.s4{background:var(--s4)}
details.ctbl{margin-top:6px}details.ctbl summary{cursor:pointer;color:var(--accent);font-size:13px;font-weight:700}
.dash{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr));gap:12px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;min-width:0}
.panel h3{margin:0 0 2px;font-size:16px}.panel .pnote{color:var(--muted);font-size:13px;margin:0 0 10px}
.panel.wide{grid-column:1/-1}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:0 0 12px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}.stat b{display:block;font-size:26px;line-height:1.1}
.stat span{color:var(--muted);font-size:13px;font-weight:600}.stat small{display:block;color:var(--muted);font-size:12px}
.rgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.rcardx{display:flex;flex-direction:column;gap:4px;padding:12px 14px;background:var(--card);border:1px solid var(--line);border-radius:12px;color:var(--ink);text-decoration:none}
.rcardx:hover{border-color:var(--accent-line)}.rcardx b{font-size:15px}.rcardx span{color:var(--muted);font-size:13px}
.flagsm{color:var(--bad);font-weight:700}.flagbig{color:var(--accent);font-weight:700}
.askbox .askrow{display:flex;gap:8px}.askbox .askrow input{flex:1;font-size:17px}.askbox .chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.askbox .chip{cursor:pointer;font-size:13px;font-weight:600}
.build .bgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:4px 14px}.build label select,.build label input{display:block;width:100%;box-sizing:border-box;margin-top:4px}
.build label select+select{margin-top:4px}.frow2{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0}.frow2 input{flex:1;min-width:120px}
.build .row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.build h4{margin:12px 0 4px}
.rcardx .row{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}form.rcardx{margin:0}
.dtabs{margin-top:0}
@media print{header,.screenband,.backbtn,.dtabs,.bar button,.bar .btn,.bar form,details.ctbl,.installbar{display:none!important}.panel{break-inside:avoid;border:1px solid #bbb}main{max-width:none}}
.sb-rep{background:#6250d6}
.conn .ch{display:flex;justify-content:space-between;align-items:center;gap:10px}.conn h2{margin:0}.conn h2 small{color:var(--muted);font-weight:600;font-size:13px}
.conn .row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.conn .testrow{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}.conn .testrow input{flex:1;min-width:200px}
.permgrid th.rc,.permgrid td.rc{text-align:center;width:84px}.permgrid th.rc small{display:block;color:var(--gold);font-size:11px}
.permgrid tr.grp th{background:var(--navy);color:#fff;font-size:13px;letter-spacing:.04em}
.permgrid thead th{position:sticky;top:0;z-index:2}
.sw-cell{display:inline-block;margin:0;cursor:pointer}.sw-cell input{position:absolute;opacity:0}
.sw-cell span{display:inline-block;width:40px;height:24px;border-radius:999px;background:var(--line);position:relative;transition:background .15s}
.sw-cell span::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.sw-cell input:checked+span{background:var(--go)}.sw-cell input:checked+span::after{left:19px}.sw-cell input:focus-visible+span{outline:3px solid var(--focus)}
.toolgroups{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:10px;margin:0 0 12px}
.tg{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px}.tg h3{margin:0 0 8px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.tgb{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
/* Top bar: one tab per screen; rings in a drop-down */
header nav.topnav{display:flex;gap:4px;flex-wrap:wrap;align-items:center;flex:1}
header nav.topnav>a,header .navdd>summary{color:#fff;text-decoration:none;padding:8px 12px;border-radius:9px;font-weight:700;cursor:pointer;list-style:none;white-space:nowrap;min-height:40px;display:inline-flex;align-items:center;gap:4px}
header .navdd>summary::-webkit-details-marker{display:none}
header nav.topnav>a:hover,header .navdd>summary:hover{background:rgba(255,255,255,.14)}
header nav.topnav>a.on,header .navdd.on>summary{background:var(--gold);color:#1a1200}
header .navdd{position:relative}header .navdd .ddm{position:absolute;top:calc(100% + 4px);left:0;z-index:60;min-width:200px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 26px rgba(0,0,0,.25);padding:6px;display:flex;flex-direction:column}
header .navdd .ddm a{color:var(--ink);padding:10px 12px;border-radius:8px;font-weight:600;text-decoration:none}header .navdd .ddm a:hover{background:var(--accent-soft)}header .navdd .ddm a.on{background:var(--gold);color:#1a1200}
header .navdd.more{margin-left:auto}header .navdd.more .ddm{left:auto;right:0}
/* Gate: the day's classes as a swipeable strip, with big previous/next buttons */
.classnav{display:flex;gap:8px;align-items:stretch;margin:0 0 10px}
.navb{min-width:56px;font-size:22px;border-radius:12px;padding:0 10px}.navb:disabled{opacity:.35}
.strip{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x proximity;flex:1;padding:2px;-webkit-overflow-scrolling:touch}
.strip .sc{flex:0 0 auto;scroll-snap-align:center;display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:150px;max-width:220px;padding:10px 12px;
  border-radius:12px;background:var(--card);color:var(--ink);border:2px solid var(--line);text-align:left;font-weight:600}
.strip .sc b{font-size:18px}.strip .sc span{font-size:13px;line-height:1.2;max-height:2.4em;overflow:hidden}.strip .sc i{font-style:normal;font-size:12px;color:var(--muted);font-weight:700}
.strip .sc.closed{opacity:.6}.strip .sc.now{border-color:var(--go)}.strip .sc.now i{color:var(--go)}
.strip .sc.on{background:var(--accent);border-color:var(--accent);color:#fff}.strip .sc.on i{color:#fff}
.browsebar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;margin:0 0 10px;border-radius:12px;background:#fff4d6;border-left:5px solid var(--gold);font-weight:600}
.browsebar span{flex:1}@media (prefers-color-scheme:dark){.browsebar{background:#3b2d07}}
.tile.compact.held{outline:3px dashed var(--bad);outline-offset:-3px}.tile.compact.pressed{transform:scale(.94)}
.tile.compact{touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
/* Announcer: the gate's taps, live. Yellow = checked in, green = worked / in the ring, red = scratched, grey = still looking. */
.gboard{background:var(--card);border:2px solid var(--line);border-radius:14px;padding:10px 12px;margin:0 0 12px}
.gbh{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:8px}.gbh b{margin-right:6px}
.gk{padding:3px 10px;border-radius:999px;font-weight:800;font-size:13px;border:2px solid}
.gnums{display:flex;flex-wrap:wrap;gap:6px}.gn{position:relative;min-width:54px;text-align:center;padding:9px 8px;border-radius:10px;font-weight:800;font-size:19px;border:2px solid;font-variant-numeric:tabular-nums}
.gn i{position:absolute;top:1px;left:4px;font-size:10px;font-style:normal;opacity:.75}
.gk.wait,.gn.wait{background:var(--bg);color:var(--ink);border-color:var(--line)}
.gk.here,.gn.here{background:#ffe680;color:#4a3700;border-color:#e0a106}
.gk.went,.gn.went{background:#cdeedb;color:#0f5132;border-color:#1d6b43}
.gk.scr,.gn.scr{background:#f9dcd8;color:#8a1c14;border-color:#b3261e;text-decoration:line-through}
.gwait{margin:8px 0 0;font-weight:600}.gwait.ok{color:var(--go)}
.autonext{display:flex;gap:10px;align-items:center;padding:10px 14px;border-radius:12px;background:var(--accent-soft);border-left:5px solid var(--accent);font-size:17px;flex:1}
/* Gate tiles: same colours as the announcer sees */
.tile.compact.checked_in{background:#ffe680;border-color:#e0a106;color:#4a3700}
.tile.compact.worked{background:#cdeedb;border-color:#1d6b43;color:#0f5132}
.tile.compact.scratched{background:#f9dcd8;border-color:#b3261e;color:#8a1c14}
@media (prefers-color-scheme:dark){.gk.here,.gn.here,.tile.compact.checked_in{background:#5a4706;color:#ffe680}.gk.went,.gn.went,.tile.compact.worked{background:#173826;color:#8be3a9}
.gk.scr,.gn.scr,.tile.compact.scratched{background:#3d1a17;color:#ff8a7d}}
#netbar{position:sticky;top:0;z-index:200;padding:12px 16px;background:#b3261e;color:#fff;font-weight:800;text-align:center;font-size:17px}
.screenband .fsbtn{margin-left:auto;background:rgba(255,255,255,.15);color:#fff;border-color:rgba(255,255,255,.5);padding:6px 12px;font-size:14px}
/* Tablet screens: bigger targets everywhere */
@media (pointer:coarse){.sb-gate~main button,.sb-ring~main button,.sb-ann~main button,.sb-rg~main button{min-height:48px}
  .tiles.compact{grid-template-columns:repeat(auto-fill,minmax(84px,1fr))}.tile.compact .n{font-size:24px}}
/* Ring and announcer: the numbers to place stay pinned at the top while placings are entered */
.judge .pool.pinned{position:sticky;top:0;z-index:20;background:var(--card);margin:0 -12px 10px;padding:8px 12px 10px;border-bottom:2px solid var(--line);box-shadow:0 6px 12px -8px rgba(0,0,0,.35)}
.judge .pool.pinned .tiles{max-height:42vh;overflow-y:auto}
/* Announcer: Each judge / Combined toggle, combined placings, payback */
.viewmode{margin:0}
.combo,.pback{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin:0 0 10px}
.pback{border-left:5px solid var(--good,#2e7d32)}
.combo{border-left:5px solid var(--accent)}
.pbcard{margin-top:6px}.pbcard small{color:var(--muted)}
.pbrows{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.pbr{display:inline-flex;gap:6px;align-items:baseline;padding:6px 10px;border-radius:10px;background:var(--bg);border:1px solid var(--line);font-size:1.05rem}
.pbr i{font-style:normal;font-weight:800;color:var(--accent)}.pbr.open{opacity:.6}
.combot{width:100%;border-collapse:collapse;margin-top:8px;font-size:1.05rem}
.combot th,.combot td{padding:8px 6px;border-bottom:1px solid var(--line);text-align:center;vertical-align:top}
.combot td:nth-child(3),.combot th:nth-child(3){text-align:left}
.combot .pl{font-size:1.4rem;font-weight:800}.combot .pl small{font-size:.7rem;margin-left:2px;color:var(--bad)}
.combot .bk{font-size:1.3rem;font-weight:800}
.combot tr.tied td{background:rgba(255,193,7,.12)}
/* Placings pool: gate state on each number (scratches never reach the pool) */
.tile.gs-here{background:#ffe680;border:3px solid #e0a106;color:#4a3700}.tile.gs-here .r,.tile.gs-here .gsl{color:#4a3700}
.tile.gs-went{background:#cdeedb;border:3px solid #1d6b43;color:#0f5132}.tile.gs-went .r,.tile.gs-went .gsl{color:#0f5132}
.tile .gsl{font-size:11px;font-weight:800;text-transform:uppercase;margin-top:auto}
.gkey{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:0 0 8px;font-size:13px}
@media (prefers-color-scheme:dark){.tile.gs-here{background:#4a3a07;color:#ffe680}.tile.gs-here .r,.tile.gs-here .gsl{color:#ffe680}
.tile.gs-went{background:#123d24;color:#8be3a9}.tile.gs-went .r,.tile.gs-went .gsl{color:#8be3a9}}
/* Slim top bar: one line; on narrower screens (tablets) the tabs show icons only, except the one you're on */
body>header{flex-wrap:nowrap!important}
header nav.topnav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;min-width:0}header nav.topnav::-webkit-scrollbar{display:none}
header nav.topnav>a,header .navdd>summary{padding:6px 10px;min-height:38px;font-size:15px}
header .navdd.more{margin-left:0;flex:none}
header .navdd .ddm{z-index:300;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.ddme{padding:8px 12px;font-size:13px;color:var(--muted);border-bottom:1px solid var(--line);margin-bottom:4px}
.ddso{width:100%;text-align:left;margin-top:4px}
.ddm .ddso{color:var(--ink)}.ddm .ddso:hover{background:var(--accent-soft)}
.ddver,.tver{padding:6px 12px 2px;font-size:12px;color:var(--muted);border-top:1px solid var(--line);margin-top:4px}
header .showpick select{max-width:200px;text-overflow:ellipsis}
header>b{white-space:nowrap}
@media (max-width:1280px){header nav.topnav .lbl{display:none}header nav.topnav .on .lbl{display:inline}header nav.topnav>a,header .navdd>summary{padding:6px 9px;font-size:16px}
header .showpick select{max-width:160px}}
@media (max-width:640px){header>b{display:none}header .showpick select{max-width:120px}}
/* One-line summary bar along the bottom of tablet screens, readable from across the booth */
#sumbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;align-items:center;gap:12px;padding:10px 16px;background:#14213d;color:#fff;
  font-size:24px;font-weight:700;line-height:1.2;border-top:4px solid var(--gold);box-shadow:0 -6px 16px rgba(0,0,0,.2)}
#sumbar .sbt{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#sumbar i{font-style:normal;opacity:.45;margin:0 10px}#sumbar b{color:#ffd55a}#sumbar small{font-size:16px;opacity:.8}
#sumbar.ok{background:#0f5132;border-top-color:#8be3a9}#sumbar.ok b{color:#c9f7d9}
#sumbar .undo{flex:none;font-size:20px;font-weight:800;padding:12px 18px;border-radius:12px;background:#fff;color:#14213d;border:0;min-height:52px}
#sumbar .undo b{color:#b3261e}#sumbar .undo:disabled{opacity:.35}
body.has-sumbar main{padding-bottom:96px}
body.has-sumbar .donebar{bottom:var(--sumh,62px)}
body.has-sumbar #toast,body.has-sumbar .toast{bottom:150px}
@media (max-width:640px){#sumbar{font-size:17px;padding:8px 10px}#sumbar i{margin:0 5px}#sumbar .undo{font-size:16px;padding:8px 12px;min-height:44px}body.has-sumbar .donebar{bottom:var(--sumh,52px)}}

/* Landscape tablets: Ring = numbers on the left, placings on the right (one judge on screen).
   Gate = the class in the ring big on the left, the next classes stacked on the right. */
@media (orientation:landscape) and (min-width:900px){
  body.tablet .cols>.judge:only-child{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);column-gap:16px;align-items:start}
  body.tablet .cols>.judge:only-child>*{grid-column:1/-1}
  body.tablet .cols>.judge:only-child>.pool.pinned{grid-column:1;grid-row:3/span 20;margin:0;border:0;border-right:2px solid var(--line);box-shadow:none;padding:0 16px 0 0;top:8px}
  body.tablet .cols>.judge:only-child>.pool.pinned .tiles{max-height:calc(100vh - 260px)}
  body.tablet .cols>.judge:only-child>.plist,body.tablet .cols>.judge:only-child>h4{grid-column:2}
  body.tab-gate #stack{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(0,1fr);gap:12px;align-items:start}
  body.tab-gate #stack>.cls:first-child{grid-row:1/span 4}
  body.tab-gate #stack>.cls:not(:first-child) .tiles.compact{grid-template-columns:repeat(auto-fill,minmax(64px,1fr))}
  body.tab-gate #stack>.cls:not(:first-child) .tile.compact{min-height:54px}
  body.tab-gate #stack>.cls:not(:first-child) .tile.compact .n{font-size:20px}
  body.tab-gate #stack>.cls:not(:first-child) form.add{display:none}
}
@media (orientation:landscape) and (min-width:900px){
  body.tab-gate #stack>.cls:not(:first-child) header .chip{flex:none;white-space:nowrap}
  body.tab-gate #stack>.cls:not(:first-child) header .t{flex:1 1 100%}}
/* Announcer reads horse and rider aloud: big, dark, never cut off */
body.tab-announcer .plist .who div{white-space:normal;overflow:visible}
body.tab-announcer .plist .who .wh{font-size:21px;font-weight:800;color:var(--ink);line-height:1.2}
body.tab-announcer .plist .who .wr{font-size:19px;font-weight:700;color:var(--ink);line-height:1.25}
body.tab-announcer .plist .who .say{font-size:16px;color:var(--accent);font-weight:600}
body.tab-announcer .plist .who b{font-size:22px}
body.tab-announcer .combot .ch{font-size:20px;font-weight:800}body.tab-announcer .combot .cr{font-size:18px;font-weight:700}
body.tab-announcer .pool .tile .r{font-size:15px;font-weight:700;color:inherit;white-space:normal;overflow:visible;line-height:1.15}
header .fixedshow{white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis;padding:7px 12px;border:2px solid rgba(255,255,255,.35);border-radius:10px;color:#fff;font-weight:700;font-size:15px}
header .workbtn{white-space:nowrap;border-color:var(--gold)!important;color:#ffd55a!important;padding:6px 10px;font-size:14px}
@media (max-width:1280px){header .fixedshow{max-width:170px}}
/* Prizes */
.needgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
.need{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:2px solid var(--line);border-radius:12px;background:var(--bg)}
.need b{font-size:20px}.need span{font-size:14px;color:var(--muted)}.need i{font-style:normal;font-weight:800;color:var(--go)}
.need.short{border-color:var(--bad);background:var(--scr-bg)}.need.short i{color:var(--bad)}
.prizet td.oh b{font-size:20px}.prizet tr.low td{background:var(--scr-bg)}
.pform{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.pform label{display:flex;flex-direction:column;gap:4px;font-weight:600;font-size:14px}
.addprize summary{cursor:pointer}.addprize .pform{margin-top:10px}
b.pos{color:var(--go)}b.neg{color:var(--bad)}
/* A page with the fixed Save / Done bar at the bottom: leave room so the last rows can scroll above it */
main:has(.donebar){padding-bottom:130px}
body.has-sumbar main:has(.donebar){padding-bottom:200px}
.donespacer{height:120px}
.statrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin:10px 0}
.stat span{display:block;font-size:13px;color:var(--muted);font-weight:600}
.filebtn{cursor:pointer;display:inline-flex;align-items:center}
.ordert tr.toorder td{background:var(--in-bg)}
.rlines input,.rlines select{font-size:15px}.rlines td{vertical-align:top}.newp{display:flex;gap:4px;flex-wrap:wrap}
@media print{.noprint,.donebar,.backbtn{display:none!important}.ordert input{border:0;font-weight:800}}
/* Ring: every judge's card is side by side inside itself: numbers to tap on the left, placings on the
   right, one judge or two. The numbers grow to show them all (no scrolling inside the box). */
@media (min-width:700px){
  body.tab-ring .cols>.judge{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:14px;align-items:start}
  body.tab-ring .cols>.judge>*{grid-column:1/-1}
  body.tab-ring .cols>.judge>.pool,body.tab-ring .cols>.judge>.pool.pinned{grid-column:1;grid-row:3/span 30;position:static;margin:0;
    padding:0 14px 0 0;border:0;border-right:2px solid var(--line);box-shadow:none;background:none}
  body.tab-ring .cols>.judge>.pool .tiles,body.tab-ring .cols>.judge>.pool.pinned .tiles{max-height:none;overflow:visible}
  body.tab-ring .cols>.judge>.plist,body.tab-ring .cols>.judge>h4{grid-column:2}
  body.tab-ring .cols>.judge>.plist{margin-top:0}
  body.tab-ring .pool .tiles{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px}
  body.tab-ring .pool .tile.numonly{min-height:58px}
  body.tab-ring .pool .search{margin-bottom:8px}
}
@media (min-width:700px){
  body.tab-ring .pool .poolh{display:none}
  body.tab-ring .tapmode{margin-bottom:6px}body.tab-ring .tapmode .tm{padding:8px 10px;font-size:14px;white-space:nowrap}
  body.tab-ring .cols:has(>.judge+.judge) .pool .tiles{grid-template-columns:repeat(auto-fill,minmax(62px,1fr));gap:6px}
  body.tab-ring .cols:has(>.judge+.judge) .pool .tile.numonly{min-height:52px;padding:6px}
  body.tab-ring .cols:has(>.judge+.judge) .pool .tile.numonly .n{font-size:23px}
  body.tab-ring .cols:has(>.judge+.judge) .tapmode .tm{padding:7px 8px;font-size:13px}
  body.tab-ring .cols:has(>.judge+.judge) .plist .pl{width:32px;font-size:19px}
}
@media (min-width:700px){body.tab-ring .cols:has(>.judge+.judge) .tapmode{display:flex;width:100%}
  body.tab-ring .cols:has(>.judge+.judge) .tapmode .tm{flex:1;white-space:normal;line-height:1.15}}
.tiers.edit .tsum{white-space:nowrap;font-weight:800;font-size:13px}.tiers.edit .tsum.ok{color:var(--go)}.tiers.edit .tsum.bad{color:var(--bad)}
.ann:has(.annx){flex-direction:row;align-items:center;gap:12px}.ann .annt{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.ann .annx{flex:none;padding:8px 14px;font-size:14px;font-weight:800;border-radius:10px;background:rgba(255,255,255,.7);border:2px solid currentColor;color:inherit;min-height:40px}
.ann.going{opacity:0;transition:opacity .2s}
/* Paper entry */
.pe{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:14px;align-items:start}@media (max-width:900px){.pe{grid-template-columns:1fr}}
.pe h2{margin:14px 0 6px;font-size:17px}.pe h2:first-child{margin-top:0}
.pick{position:relative}.pick .search{width:100%;font-size:17px}
.sugg{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-top:4px}.sugg:empty{display:none}
.sg1{all:unset;cursor:pointer;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--card)}.sg1:hover,.sg1:focus{background:var(--accent-soft)}.sg1.new{color:var(--accent);font-weight:700}
.chosen{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:10px 12px;border-radius:10px;background:var(--in-bg);border:2px solid var(--in);font-size:17px}
.newform{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.newform label{display:flex;flex-direction:column;font-size:13px;font-weight:600;gap:3px}
.newform .req{color:#b3261e}.newform fieldset.yn{flex-basis:100%;border:1px solid #c7ccd6;border-radius:10px;margin:2px 0;padding:6px 10px;display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center}
.newform fieldset.yn legend{font-size:13px;font-weight:700;padding:0 4px}.newform fieldset.yn label{flex-direction:row;align-items:center;gap:6px;font-size:15px;font-weight:600;padding:4px 2px}
.newform fieldset.yn input{width:20px;height:20px}.newform .miss,.newform fieldset.miss{border-color:#b3261e!important;box-shadow:0 0 0 2px rgba(179,38,30,.25)}
.seg{display:flex;gap:14px;flex-wrap:wrap}.backrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.quick{display:flex;flex-direction:column;gap:4px;font-weight:700;margin:8px 0}.quick input{font-size:20px;font-weight:700}
.clist{max-height:60vh;overflow:auto;border:1px solid var(--line);border-radius:10px;margin-top:8px}
.cday{margin:0;padding:6px 10px;background:var(--bg);position:sticky;top:0;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.crow3{display:grid;grid-template-columns:24px 56px 1fr auto auto;gap:8px;align-items:center;padding:8px 10px;border-bottom:1px solid var(--line);cursor:pointer}
.crow3.on{background:var(--accent-soft)}.crow3.entered{opacity:.6}.crow3.inel .cst{color:var(--bad);font-weight:700}.crow3.info .cst{color:var(--gold);font-weight:700}
.crow3.entered .cst{color:var(--go);font-weight:700}.crow3 .cst{font-size:12px}.crow3 .cfee{font-size:13px;color:var(--muted)}
.pesum{flex:1;align-self:center;font-size:16px}
p.big{font-size:22px}
.sgform label{display:flex;flex-direction:column;gap:4px;font-weight:600;margin-bottom:8px}.sgform textarea{width:100%;font:inherit;padding:10px;border-radius:10px;border:2px solid var(--line);background:var(--card);color:var(--ink);box-sizing:border-box}
.hp{position:absolute!important;left:-9999px!important;height:1px;overflow:hidden}
.sgchips{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.sgchips .chip{text-decoration:none}.sgchips .chip.on{background:var(--accent);color:#fff}
.sg.newidea{border-left:5px solid var(--bad)}.vote:disabled{opacity:.55;cursor:not-allowed}
#staffnotes{padding:0 16px}#staffnotes .ann{margin:8px auto;max-width:1400px;font-size:17px}
.setrow.targets{align-items:center;gap:12px;margin:6px 0}.tgt{display:inline-flex;gap:6px;align-items:center;font-weight:600}
/* Public home: where-we-are band and tiles */
.whereband{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center;text-decoration:none;color:#fff;background:#7d1f37;border-radius:18px;padding:14px 16px;margin:10px 0 14px;box-shadow:0 4px 0 #5c1427}
.whereband small{color:#e9b95d;letter-spacing:.12em;text-transform:uppercase;font-size:12px}.whereband b{font-size:22px;font-family:Georgia,serif}.whereband span{font-size:14px;opacity:.95}
.tiles9{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));gap:12px;margin:14px 0}
.t9{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center;min-height:104px;padding:14px 12px;border-radius:20px;background:var(--card);
  color:var(--ink);text-decoration:none;box-shadow:0 4px 0 #c79a45;border:1px solid var(--line)}
.t9 b{font-family:Georgia,serif;font-size:21px;color:#7d1f37}.t9 span{font-size:13px;color:var(--muted)}.t9:active{transform:translateY(2px);box-shadow:0 2px 0 #c79a45}
@media (prefers-color-scheme:dark){.t9 b{color:#f0a6b8}}
.ltotals{text-align:center;color:var(--muted);font-size:16px}
.dord{list-style:none;margin:8px 0 0;padding:0}.dord li{display:grid;grid-template-columns:34px 64px 1fr;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line)}
.dord li.gone{opacity:.5}.dord .go{font-weight:800;color:var(--muted)}
table.counts td.n{text-align:right;white-space:nowrap}table.counts tr.done td{opacity:.6}
.rec{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:6px 0 10px}
.sayplay{all:unset;cursor:pointer;font-size:18px;padding:0 6px;border-radius:8px}.sayplay:hover{background:var(--accent-soft)}
.saynew{background:#efe6ff;border:2px solid #7a4fd0;border-radius:14px;padding:10px 12px;margin:0 0 10px}@media (prefers-color-scheme:dark){.saynew{background:#2a1f45}}
.sayrow{display:flex;gap:10px;align-items:center;padding:8px 0;border-top:1px solid rgba(122,79,208,.3)}.sayrow:first-of-type{border-top:0}
.sayrow .sayn{flex:1;font-size:18px}.sayrow .says{font-size:20px;font-weight:800;color:#5a32b0}@media (prefers-color-scheme:dark){.sayrow .says{color:#c9b3ff}}
.rounds{margin-top:10px;display:flex;flex-direction:column;gap:6px}.rrow{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
.rrow .rn{font-weight:800;min-width:110px;align-self:center}.rrow label{display:flex;flex-direction:column;font-size:13px}.rrow input{width:70px}
/* ------------------------------------------------------------------ one-screen layout (gate, ring, announcer) */
body.one{height:100vh;height:100dvh;overflow:hidden;display:flex;flex-direction:column}
body.one>header,body.one .screenband,body.one .backbtn,body.one #sumbar,body.one main>.bar:first-child h1{display:none!important}
body.one main{flex:1;min-height:0;width:100%;max-width:none!important;margin:0;padding:8px 10px!important;box-sizing:border-box;overflow:hidden;display:flex;flex-direction:column;gap:8px}
body.one #staffnotes .ann{margin:4px auto;font-size:15px;padding:6px 12px}
.tbar{flex:none;min-height:52px;display:flex;align-items:center;gap:8px;padding:4px 8px;background:#14213d;color:#fff;border-bottom:3px solid var(--gold);flex-wrap:nowrap}
.tbar .tmenu{all:unset;cursor:pointer;font-size:24px;padding:4px 10px;border-radius:8px}.tbar .tmenu:hover{background:rgba(255,255,255,.15)}
.tbar .ttitle{font-weight:900;white-space:nowrap;font-size:15px;opacity:.9}
.tslot{display:flex;align-items:center;gap:6px;min-width:0;flex:1}
.tslot select{min-width:0;flex:1;max-width:420px;font-size:16px;font-weight:700;padding:8px 10px}
.tslot button,.tslot .btn{padding:8px 12px;font-size:15px;white-space:nowrap}
.tstat{display:flex;align-items:center;gap:2px;font-weight:800;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:42vw;padding:4px 10px;border-radius:10px;background:rgba(255,255,255,.08)}
.tstat i{font-style:normal;opacity:.45;margin:0 6px}.tstat b{color:#ffd55a}.tstat.ok{background:#0f5132}.tstat.ok b{color:#c9f7d9}.tstat small{font-size:12px;opacity:.8}
#tundo .undo{font-size:16px;font-weight:800;padding:8px 12px;border-radius:10px;background:#fff;color:#14213d;border:0}#tundo .undo b{color:#b3261e}#tundo .undo:disabled{opacity:.35}
.tdrawer{position:fixed;top:0;left:0;bottom:0;width:min(340px,90vw);z-index:400;background:var(--card);box-shadow:4px 0 24px rgba(0,0,0,.3);padding:12px;display:flex;flex-direction:column;gap:8px;overflow:auto}
.tdrawer .tdh{display:flex;justify-content:space-between;align-items:center}.tdrawer .tlinks{display:flex;flex-direction:column;border-top:1px solid var(--line);margin-top:6px;padding-top:6px}
.tdrawer .tlinks a{padding:10px 8px;border-radius:8px;text-decoration:none;color:var(--ink);font-weight:600}.tdrawer .tlinks a:hover{background:var(--accent-soft)}
body.one .tile .n{font-size:var(--tf,28px)}
@media (max-width:700px){.tbar .ttitle{display:none}.tstat{max-width:38vw;font-size:14px}}
@media (orientation:portrait) and (max-width:820px){.tbar{flex-wrap:wrap}.tslot{order:5;flex-basis:100%}.tstat{max-width:none;flex:1}}
/* Gate, one screen */
body.one #stack{flex:1;min-height:0;display:flex}
.g1{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,30%);gap:10px}
.gmain{min-height:0;display:flex;flex-direction:column;gap:6px;background:var(--card);border:2px solid var(--line);border-radius:14px;padding:8px}
.ghead{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.ghead .gt{font-size:19px}.ghead .gtag{font-size:12px;font-weight:800;text-transform:uppercase;color:var(--muted)}
.ghead .gacts{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}.ggroups{display:flex;gap:6px;flex-wrap:wrap}
.gtiles{flex:1;min-height:0}.gtiles .tile.compact{min-height:0;height:100%;padding:2px}
.gside{min-height:0;display:flex;flex-direction:column;gap:8px;overflow:hidden}
.gside .lastbar{margin:0}.gadd{display:flex;gap:6px}.gadd input{flex:1;min-width:0;font-size:18px}
.gnext{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px}.gnc{flex:1;min-height:0;display:flex;flex-direction:column;gap:4px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:6px 8px}
.gnh{display:flex;justify-content:space-between;gap:6px;font-size:14px}.gnh span{color:var(--accent);font-weight:800;white-space:nowrap}
.gnt{flex:1;min-height:0}.gnt .tile.compact{min-height:0;height:100%;padding:1px;border-width:2px}.gnt .tile.compact .g{display:none}.gnt .tile .go{display:none}
.ghint{margin:0;font-size:12px;color:var(--muted)}
@media (orientation:portrait){.g1{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(0,38%)}
  .gside{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto 1fr;align-content:start}.gside .glast,.gside .gadd{grid-column:1/-1}.gnext{grid-column:1/-1;flex-direction:row}.ghint{display:none}}
body.one main>.bar:first-of-type{display:none!important}
.g1{grid-template-rows:minmax(0,1fr)}
body.one #stack{flex-direction:column}
.g1{min-height:0;flex:1 1 0;overflow:hidden}.gmain,.gside{min-height:0;overflow:hidden}
.tslot select{min-width:170px}.tstat{flex:0 1 auto;min-width:0}
.gtiles .tile.compact{justify-content:center}
@media (orientation:portrait){.g1{grid-template-rows:minmax(0,1fr) minmax(0,30%)}.gnc small{display:none}}
.tbar #tundo{flex:none}@media (orientation:portrait) and (max-width:820px){.tbar .tstat{flex:1 1 0;min-width:0}}
/* Ring, one screen */
body.one #res{flex:1;min-height:0;display:flex;flex-direction:column}
.r1{flex:1;min-height:0;display:flex;flex-direction:column;gap:6px}.r1 .stages{flex:none;margin:0}
.r1scroll{flex:1;min-height:0;overflow:auto}
.jtabs{display:flex;gap:6px;flex:none}.jtabs:empty{display:none}
.jtab{flex:1;padding:10px 12px;font-size:17px;font-weight:800;border-radius:12px 12px 0 0;border:2px solid var(--line);border-bottom:0;background:var(--bg);color:var(--ink)}
.jtab small{font-weight:700;color:var(--muted);margin-left:6px}.jtab.on{background:var(--accent);color:#fff;border-color:var(--accent)}.jtab.on small{color:#dfe8ff}.jtab.ok:not(.on){border-color:var(--go)}
.rcard1{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:12px;background:var(--card);border:2px solid var(--line);border-radius:14px;padding:10px}
.rcard1.confirmed{border-color:var(--go)}
.rnums{min-height:0;display:flex;flex-direction:column;gap:6px}.rtop{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rtop .tapmode{margin:0}
.rhint{font-weight:800;font-size:17px}.rcard1.npmode .rhint{color:var(--bad)}
.rgrid{flex:1;min-height:0}.rgrid .tile.numonly{min-height:0;height:100%;padding:2px}
.rplaces{min-height:0;display:flex;flex-direction:column;gap:6px;border-left:2px solid var(--line);padding-left:12px}
.rslots{flex:1;min-height:0;display:grid;gap:5px;list-style:none;margin:0;padding:0}
.rslots li{display:flex;align-items:center;gap:10px;padding:0 10px;border-radius:10px;border:2px dashed var(--line);min-height:0;overflow:hidden}
.rslots li.on{border-style:solid;border-color:var(--accent-line);background:var(--accent-soft);cursor:pointer}
.rslots .pl{font-weight:800;color:var(--muted);width:44px;font-size:clamp(13px,2.2vh,20px)}.rslots .pb{font-size:clamp(18px,4.2vh,40px);font-weight:900}
.rnp{flex:none;display:flex;flex-wrap:wrap;gap:4px;align-items:center;font-size:14px}.rnp:empty{display:none}.npc{border-color:var(--bad);color:var(--bad)}
.rdone{flex:none;display:flex;gap:8px;align-items:center}.rdonebtn{flex:1;font-size:18px;padding:12px}.cfmok1{flex:1;font-weight:800;color:var(--go);font-size:18px}
@media (orientation:portrait){.rcard1{grid-template-columns:1fr;grid-template-rows:minmax(0,1.15fr) minmax(0,1fr)}.rplaces{border-left:0;border-top:2px solid var(--line);padding:8px 0 0}
  .rslots{grid-auto-flow:column;grid-template-columns:1fr 1fr}}
.rslots{grid-template-rows:repeat(var(--slots,8),minmax(0,1fr))}
@media (orientation:portrait){.rslots{grid-template-columns:1fr 1fr;grid-template-rows:repeat(var(--half,4),minmax(0,1fr));grid-auto-flow:column}}
.tslot{overflow:hidden}.tslot>div{display:flex;gap:6px;flex:none;align-items:center}.tslot .closednote{display:flex;gap:6px;align-items:center;white-space:nowrap}
/* Announcer, one screen (32" touch screen) */
.a1{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,24fr) minmax(0,52fr) minmax(0,24fr);grid-template-rows:minmax(0,1fr);gap:12px}
.acol{min-height:0;display:flex;flex-direction:column;gap:8px;overflow:hidden}
.aleft .bar{margin:0!important;flex-wrap:wrap}.aleft #now{font-size:clamp(20px,2.3vw,34px)!important;line-height:1.15}
.aleft .next{display:flex;flex-direction:column;gap:4px}.aleft .gboard{flex:1;min-height:0;overflow:hidden;margin:0}
.amid #res{flex:1;min-height:0;display:flex;flex-direction:column}.amid #res>div:last-child{flex:1;min-height:0;display:flex;flex-direction:column}
.aright{justify-content:flex-start}.aright #payback{flex:1;min-height:0;overflow:hidden}
body.one .aright .donebar{position:static;border:0;padding:0;background:none;flex-direction:column}
body.one .aright .donebar button{min-width:0;width:100%;font-size:22px;padding:18px}.placefor{font-size:17px;padding:12px}
.aview{flex:1;min-height:0;display:grid;grid-template-columns:repeat(var(--jn,1),minmax(0,1fr));gap:12px}
.acard{min-height:0;display:flex;flex-direction:column;background:var(--card);border:2px solid var(--line);border-radius:14px;padding:10px 12px}
.acard.ok{border-color:var(--go)}.acard h3{margin:0 0 6px;font-size:clamp(16px,1.4vw,24px)}.acard h3 small{font-weight:700;color:var(--muted);font-size:.7em;margin-left:6px}.acard.ok h3 small{color:var(--go)}
.arows{flex:1;min-height:0;list-style:none;margin:0;padding:0;display:grid;grid-template-rows:repeat(var(--slots,8),minmax(0,1fr));gap:4px}
.arows li{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:12px;padding:0 10px;border-bottom:1px solid var(--line);min-height:0;overflow:hidden}
.arows .ap{font-weight:800;color:var(--muted);font-size:clamp(14px,1.2vw,22px);width:3.2em}.arows .ab{font-size:clamp(22px,2.4vw,46px);font-weight:900;min-width:2.6em}
.arows .aw{min-width:0;line-height:1.15}.arows .aw .wh{font-size:clamp(16px,1.45vw,28px);font-weight:800}.arows .aw .wr{font-size:clamp(14px,1.2vw,24px);font-weight:700;color:var(--ink)}
.arows .aw .say{font-size:clamp(12px,1vw,18px);color:var(--accent);font-weight:700}
.aview.multi .arows .ab{font-size:clamp(20px,1.9vw,38px)}.aview.multi .arows .aw .wh{font-size:clamp(14px,1.15vw,22px)}.aview.multi .arows .aw .wr{font-size:clamp(13px,1vw,19px)}
.anp{margin:6px 0 0;font-size:15px}
.modal.wide1{width:min(1500px,96vw);max-height:92vh;overflow:auto}
body.one.combo-on .amid .aview{display:none}body.one.combo-on .amid #combo{flex:1;min-height:0;overflow:auto}
body.one .amid #combo .combot{font-size:clamp(15px,1.2vw,22px)}body.one .amid #combo .combot .bk,body.one .amid #combo .combot .pl{font-size:clamp(20px,1.8vw,34px)}
body.one.combo-on .amid #res{flex:none}

/* top-bar summary: readable on every tone, wraps to two lines instead of hiding things */
.tbar .tstat{color:#fff;white-space:normal;flex:1 1 0;min-width:0;max-width:none;line-height:1.15;font-size:15px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer}
.tbar .tstat i{margin:0 4px}.tbar .tstat.ok{background:#146c43;color:#fff}.tbar .tstat.ok b{color:#d7ffe4}.tbar .tstat.warn{color:#fff}
@media (max-width:700px){.tbar .tstat{font-size:13px}}

/* split dialog: plain steps + the whole path in one line */
.modal.splitm{max-width:640px}.sstep{border-top:1px solid var(--line);padding:10px 0 4px}.sstep:first-of-type{border-top:0}
.sstep h3{margin:0 0 6px;font-size:17px;display:flex;align-items:center;gap:8px}.sstep h3 span{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;font-size:13px}
.segk{display:flex;gap:8px;flex-wrap:wrap}.segk button{all:unset;cursor:pointer;display:flex;flex-direction:column;align-items:center;min-width:76px;padding:8px 10px;border:2px solid var(--line);border-radius:12px;background:var(--card)}
.segk button b{font-size:24px}.segk button small{font-size:12px;color:var(--muted);font-weight:600}.segk button.on{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent)}
.bigopt{display:flex!important;gap:10px;align-items:flex-start;padding:8px 10px;border:2px solid var(--line);border-radius:12px;margin:6px 0;cursor:pointer}
.bigopt input{width:20px;height:20px;margin-top:2px}.bigopt span{display:flex;flex-direction:column;gap:2px}.bigopt small{color:var(--muted);font-weight:500}
.bigopt:has(input:checked){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}
.sstep .nums label{display:flex;flex-direction:column;font-size:13px;font-weight:600;gap:3px}.sstep .nums select{max-width:100%}
.flow{margin-top:10px;padding:10px 12px;border-radius:10px;background:color-mix(in srgb,var(--accent) 10%,var(--card));border:1px solid var(--line)}
.flow .fl{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center;font-size:15px}.flow i{font-style:normal;color:var(--muted);font-weight:800}.flow .warn{margin-top:8px}
/* stage strip grouped by round */
.stages.grouped{align-items:stretch;gap:6px}.sgroup{display:flex;flex-direction:column;gap:4px}.sgh{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.sgb{display:flex;gap:6px;flex-wrap:wrap}.sarrow{align-self:center;font-size:22px;font-weight:800;color:var(--muted);padding-top:14px}
.stage.ghosty{cursor:default;opacity:.55;border-style:dashed}
/* drag-and-drop arranging (static/arrange.js) */
.arr-w{display:inline-flex;align-items:center;gap:2px;position:relative}
.arr-toggle{margin-left:auto}.arr-hid{display:none!important}
body.arranging [data-arrange]>[data-k]{outline:2px dashed var(--accent-line);outline-offset:3px;border-radius:12px;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
body.arranging [data-arrange]>[data-k].arr-hid{display:inline-flex!important;opacity:.35}
body.arranging .tg.arr-hid{display:block!important}
body.arranging [data-arrange]{min-height:46px;border-radius:12px}body.arranging .tgb{background:var(--accent-soft);padding:6px}
.arr-eye{all:unset;cursor:pointer;position:absolute;top:-10px;right:-10px;width:24px;height:24px;border-radius:50%;background:var(--card);border:2px solid var(--accent-line);display:grid;place-items:center;font-size:12px;z-index:2}
.tg>.arr-eye{top:6px;right:6px}.tg{position:relative}
.arr-ph{opacity:.25}.arr-ghost{position:fixed;z-index:9999;pointer-events:none;opacity:.9;transform:rotate(-2deg);box-shadow:0 10px 30px rgba(0,0,0,.3);border-radius:12px;background:var(--card)}
#arrbar{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:9000;width:min(760px,calc(100% - 24px));background:var(--navy);color:#fff;border-radius:14px;padding:10px 14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;box-shadow:0 10px 30px rgba(0,0,0,.35)}
#arrbar .arrmsg{flex:1 1 260px;font-size:14px}#arrbar .arrb{display:flex;gap:6px;flex-wrap:wrap}#arrbar .ghost{color:#fff;border-color:rgba(255,255,255,.6);background:transparent}
.hpbuild summary{cursor:pointer;padding:2px 0}.hpbuild[open] summary{margin-bottom:8px}.hpbuild table input[type=checkbox]{width:20px;height:20px}
/* Public class page: Each judge / Overall switch */
.lresh{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.lresh .lh{margin-right:auto}
.lseg{display:inline-flex;border:2px solid var(--accent-line);border-radius:999px;overflow:hidden;background:var(--card)}
.lseg button{border:0;border-radius:0;background:transparent;color:var(--accent);font-weight:800;padding:8px 16px;min-height:40px;cursor:pointer}
.lseg button[aria-selected="true"]{background:var(--accent);color:#fff}
.lres[hidden]{display:none}.places .byj{display:block;font-size:12px;color:var(--muted)}.places .pl sup{font-size:10px}
/* Public home: one search for rider, horse or back number */
.lfindhome{display:block;background:var(--card);border:2px solid var(--accent-line);border-radius:14px;padding:12px 14px;margin:14px 0}
.lfindhome label{display:block;margin-bottom:8px}.lfindhome .lfrow{display:flex;gap:8px}.lfindhome input{flex:1;min-width:0;font-size:18px;padding:10px 12px}
.lfound .fk{display:inline-block;min-width:24px;text-align:center;margin-right:6px;color:var(--muted);font-weight:800}
/* Import with pictures: camera / photos / file, page thumbnails */
.pimport .pibtns{display:flex;gap:8px;flex-wrap:wrap}.filebtn{cursor:pointer}
.pithumbs{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}
.pith{position:relative;width:96px;display:flex;flex-direction:column;align-items:center;gap:4px}
.pith img{width:96px;height:124px;object-fit:cover;border-radius:8px;border:2px solid var(--line)}
.pith>span{font-size:48px;line-height:124px}.pith small{font-size:12px;color:var(--muted);text-align:center;word-break:break-all}
.pith button{position:absolute;top:-8px;right:-8px;width:28px;height:28px;min-height:0;padding:0;border-radius:50%;font-size:14px}
.pirow{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}

/* ---------------------------------------------------------------- guided tours (tour.js) */
.tourlayer{position:fixed;inset:0;z-index:9000;cursor:default}
.tourlayer.dim{background:rgba(8,14,26,.62)}
.tourspot{position:fixed;border-radius:12px;box-shadow:0 0 0 4px var(--gold),0 0 0 9999px rgba(8,14,26,.62);transition:left .2s,top .2s,width .2s,height .2s;pointer-events:none}
.tourcard{position:fixed;z-index:9001;width:min(400px,calc(100vw - 24px));background:var(--card);color:var(--ink);border:2px solid var(--gold);border-radius:14px;padding:14px 16px 12px;box-shadow:0 12px 40px rgba(0,0,0,.35);transition:left .2s,top .2s}
.tourcard h3{margin:4px 0 6px;font-size:20px;color:var(--navy)}
@media (prefers-color-scheme:dark){.tourcard h3{color:var(--ink)}}
.tourcard p{margin:0 0 10px;font-size:16px;line-height:1.45}
.tch{display:flex;justify-content:space-between;align-items:center;gap:8px}
.tcn{font-size:13px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.tcx{min-width:40px;min-height:40px}
.tcb{display:flex;justify-content:space-between;gap:10px}
.tcb button{min-height:48px;min-width:110px;font-size:17px}
.tcreq{font-size:14px!important;color:var(--muted);margin:10px 0 0!important}
.tcdots{display:flex;gap:5px;justify-content:center;margin-top:10px;flex-wrap:wrap}
.tcdots i{width:8px;height:8px;border-radius:50%;background:var(--line)}
.tcdots i.was{background:var(--accent-line)}.tcdots i.on{background:var(--gold);transform:scale(1.3)}
.touroffer{position:fixed;z-index:8000;left:50%;transform:translateX(-50%);bottom:16px;width:min(560px,calc(100vw - 24px));background:var(--card);border:2px solid var(--gold);border-radius:14px;padding:12px 14px;box-shadow:0 10px 30px rgba(0,0,0,.3);display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}
.touroffer b{display:block;font-size:17px}.touroffer span{color:var(--muted);font-size:15px}
.tob{display:flex;gap:8px;flex-wrap:wrap}.tob button{min-height:44px}
body.touring{overflow:hidden}
.tcourse{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.tmod{display:flex;flex-direction:column;gap:6px;margin:0}.tmod p{margin:0;flex:1}.tmod .btn{align-self:flex-start}
.tmh{display:flex;gap:10px;align-items:center}.tmh>div{flex:1}.tmh small{display:block}
.tmi{font-size:30px;line-height:1}
.tmod.tdone{opacity:.85}
.ttable td,.ttable th{text-align:center}.ttable td:first-child,.ttable th:first-child{text-align:left}

/* ------------------------------------------------------------------ phones: fit the real screen (0.21.2)
   iPhone safe areas: the clock and Dynamic Island at the top, rounded corners, the home bar at the bottom.
   Installed to the home screen the status bar is see-through, so the top bars run up under it and pad past it.
   env() is 0 on computers, tablets without a notch, and Android, so nothing moves there. */
:root{--sat:env(safe-area-inset-top,0px);--sar:env(safe-area-inset-right,0px);--sab:env(safe-area-inset-bottom,0px);--sal:env(safe-area-inset-left,0px)}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body>header{padding-top:calc(10px + var(--sat));padding-left:max(16px,calc(var(--sal) + 8px));padding-right:max(16px,calc(var(--sar) + 8px))}
main{padding-left:max(16px,var(--sal));padding-right:max(16px,var(--sar));padding-bottom:calc(16px + var(--sab))}
/* One-screen gate, ring and announcer: the page is exactly the visible screen; the top bar clears the island,
   the work area clears the corners and the home bar. */
body.one{padding-bottom:var(--sab)}
body.one .tbar{padding-top:calc(4px + var(--sat));padding-left:max(8px,var(--sal));padding-right:max(8px,var(--sar))}
body.one main{padding-left:max(10px,var(--sal))!important;padding-right:max(10px,var(--sar))!important}
.tdrawer{padding-top:calc(12px + var(--sat));padding-left:max(12px,var(--sal));padding-bottom:calc(12px + var(--sab))}
/* Bars and pop-ups along the bottom stay above the home bar */
.donebar{padding-bottom:calc(12px + var(--sab));padding-left:max(16px,var(--sal));padding-right:max(16px,var(--sar))}
#sumbar{padding-bottom:calc(10px + var(--sab));padding-left:max(16px,var(--sal));padding-right:max(16px,var(--sar))}
.toast{bottom:calc(96px + var(--sab))}body.has-sumbar #toast,body.has-sumbar .toast{bottom:calc(150px + var(--sab))}
.installbar,.mvbar{bottom:calc(10px + var(--sab))}
.modal-bg{padding:max(16px,var(--sat)) max(16px,var(--sar)) max(16px,var(--sab)) max(16px,var(--sal))}
.patview .pathint{bottom:calc(14px + var(--sab))}
/* iPhone zooms the whole page in when a box with text under 16px is tapped, and leaves it zoomed.
   On touch screens every typing box and dropdown is at least 16px. */
@media (hover:none) and (pointer:coarse){
  input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),select,textarea{font-size:max(16px,1em)!important}
  .gadd input{font-size:18px!important}
}
/* Bars that stick to the top while the page scrolls stop below the clock and island */
.lastbar{top:var(--sat)}.ladder{top:calc(12px + var(--sat))}#netbar{padding-top:calc(12px + var(--sat))}
.touroffer{bottom:calc(16px + var(--sab))}

/* Office check-in (0.22.0): a number whose bill hasn't checked in at the show office */
.tile.noci{border-color:#c46a00;border-style:dashed}
.tile .oci{position:absolute;left:3px;bottom:3px;padding:0 5px;border-radius:6px;background:#c46a00;color:#fff;font-size:10px;font-weight:800;letter-spacing:.03em;line-height:15px;text-transform:uppercase}
.tile.compact{position:relative}
.lb-oci{padding:2px 9px;border-radius:999px;background:#c46a00;color:#fff;font-weight:800;font-size:13px;white-space:nowrap}
@media (prefers-color-scheme:dark){.tile.noci{border-color:#ff9d3c}.tile .oci,.lb-oci{background:#b35c00}}
.cibar{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;padding:10px 14px;margin:10px 0;border-radius:12px;background:var(--go-soft);border-left:6px solid var(--go)}
.cibar span{color:var(--ink)}
.cicard{border:2px solid #c46a00;background:#fff4e6}@media (prefers-color-scheme:dark){.cicard{background:#2d1f0d;border-color:#ff9d3c}}
.cicard h2{margin:0 0 4px}.ciform fieldset{border:1px solid var(--line);border-radius:12px;padding:8px 12px 10px;margin:10px 0}
.ciform legend{font-weight:800;padding:0 6px}.cipay{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 8px}
.cichip{display:inline-flex;margin:0}.cichip input{position:absolute;opacity:0}.cichip span{padding:9px 14px;border-radius:999px;border:2px solid var(--line);background:var(--card);font-weight:700;cursor:pointer}
.cichip input:checked+span{background:var(--accent);border-color:var(--accent);color:#fff}.cichip input:focus-visible+span{outline:3px solid var(--focus)}
.cinew{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:flex-end}.cinew label{margin:4px 0}
.cirel{list-style:none;margin:0;padding:0}.cirel li{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line)}
.cirel li:last-child{border-bottom:0}.cirel .check{margin:0 0 0 auto;font-weight:600}.cirel .ok{margin-left:auto}
button.big{padding:14px 20px;font-size:18px;margin-top:6px}.ocitag{padding:0 6px;border-radius:6px;background:#c46a00;color:#fff;font-size:12px;text-transform:uppercase}
.release{border:2px solid var(--accent-line)}.release h2{margin:0 0 6px}.reltext{background:var(--bg);border-radius:10px;padding:2px 12px;font-size:15px}
.relsign{display:flex;flex-wrap:wrap;gap:4px 12px}.relsign label{flex:1;min-width:200px}.relsign input,.relsign select{width:100%}
.cinext{border-left:6px solid #c46a00}.cinext p{margin:6px 0 0}
/* The small "coming up" tiles: the dashed orange border says it; no word on top of the number */
.gnt .tile .oci,.pool .tile .oci{display:none}

/* My stalls and Office → Stalls (0.23.0) */
.stord.scr{opacity:.65}.stord .btiles{margin:8px 0}
.stgroup tr.me td{background:var(--accent-soft)}
tr.scr td{color:var(--muted)}tr.scr td b{text-decoration:line-through}
form.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px 12px;align-items:end}
form.grid2 label{display:flex;flex-direction:column;gap:2px;font-weight:600}

/* Gate: My tap order (0.25.0) */
fieldset.taporder{border:1px solid var(--line);border-radius:10px;padding:6px 10px;margin:8px 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px 10px}
fieldset.taporder legend{font-weight:700;padding:0 4px}fieldset.taporder label{display:flex;flex-direction:column;gap:2px;font-weight:600}
#howto .ghost.sm{margin-left:6px;padding:2px 8px}

/* Warm-up gate (0.25.0) */
.wurings{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:10px}
.wuring h3{margin:0 0 6px}.wuc{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:6px 0;border-top:1px solid var(--line)}
.wuc:first-of-type{border-top:0}.wuc .wul{font-size:12px;font-weight:800;text-transform:uppercase;color:var(--muted);min-width:78px}
.wuc .wun{flex:1;min-width:120px}.wuc.open{background:var(--go-soft);border-radius:8px;padding:6px}
.wuopen{margin-top:12px}.wutiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;margin:10px 0}
.wut{position:relative;min-height:84px;border:3px dashed var(--line);border-radius:14px;background:var(--card);color:var(--ink);font-weight:800;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer}
.wut .n{font-size:32px;line-height:1}.wut .s{font-size:13px}.wut .go{position:absolute;top:4px;left:8px;font-size:12px;color:var(--muted)}
.wut.in{border:3px solid var(--go);background:var(--go-soft);color:var(--go)}
.wut.busy{border-color:var(--gold)}.wut.done{opacity:.45;border-style:solid}
.wumiss{margin:0;font-size:15px}.warnchip{background:#fde2df;color:#8a1c14;border-color:#b3261e}
.wuarea.on{border-color:var(--go)}
.wupill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:800;background:#ffe9cc;color:#7a3f00;border:1.5px solid #e08a00;white-space:nowrap}
.tile .wu{position:absolute;bottom:3px;right:5px;font-size:11px;font-weight:800;color:#7a3f00;background:#ffe9cc;border-radius:6px;padding:0 4px}
.rline.wuline span{color:#e08a00}
@media (prefers-color-scheme:dark){.wupill,.tile .wu{background:#3b2a10;color:#ffc46b}}
.wuband{background:#ffe9cc;color:#4a2600;border-left:5px solid #e08a00;padding:8px 12px;border-radius:10px;margin:6px 0;font-size:16px}
@media (prefers-color-scheme:dark){.wuband{background:#3b2a10;color:#ffd9a0}}

/* ------------------------------------------------------------------ phone layouts (0.26.0)
   Under 600 px wide the one-screen Gate, Ring and Announcer stop trying to fit everything and scroll instead. */
body.one.phone main{overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:calc(12px + var(--sab))!important}
body.one.phone #stack,body.one.phone #res{display:block;flex:none}
/* Gate: one big row per number */
.gph{display:flex;flex-direction:column;gap:8px}
.gph-head{background:var(--card);border:2px solid var(--line);border-radius:14px;padding:10px;display:flex;flex-direction:column;gap:6px}
.gph-head>b{font-size:19px}.gph-head .gtag{color:var(--muted);font-weight:700}
.gph-k{display:flex;flex-wrap:wrap;gap:5px}.gph-k .gk{font-size:14px}
.gph-acts{display:flex;flex-wrap:wrap;gap:6px}.gph-acts button{flex:1 1 auto;font-size:17px;min-height:48px}
.gph-grp{font-size:17px;padding:10px}
.gph-hint{margin:0;font-size:14px;color:var(--muted)}
.gph-list{display:flex;flex-direction:column;gap:6px}
.tile.compact.prow{flex-direction:row;justify-content:flex-start;text-align:left;gap:12px;min-height:66px;padding:8px 12px}
.tile.compact.prow .n{font-size:30px;min-width:72px;text-align:center}
.tile.compact.prow .pw{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.2}
.tile.compact.prow .pw b{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile.compact.prow .pw small{font-size:14px;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile.compact.prow .g{font-size:22px;min-width:22px}.tile.compact.prow .ps{font-size:13px;font-weight:800;white-space:nowrap}
.tile.compact.prow .go{position:static;order:-1}
.tile.compact.prow .oci{position:static}
.gph .gadd input{font-size:20px!important;padding:12px}.gph .gadd button{font-size:18px;padding:0 20px}
.gph-nc{border:2px solid var(--line);border-radius:14px;padding:8px 10px;background:var(--card)}
.gph-nc summary{cursor:pointer;font-size:16px;min-height:40px;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.gph-nc .gph-list{margin-top:8px}
/* Ring: the places filled so far stack on top, then the next empty one; numbers to place below in big rows of four */
.rcard1.rph{display:flex;flex-direction:column;gap:10px;flex:none}
.rcard1.rph .rplaces{border:0;padding:0;order:0}
.rcard1.rph .rslots{display:flex;flex-direction:column;gap:5px}
.rcard1.rph .rslots li{min-height:48px;display:none}
.rcard1.rph .rslots li.on,.rcard1.rph .rslots li:first-child:not(.on),.rcard1.rph .rslots li.on+li:not(.on){display:flex}
.rcard1.rph .rslots li:not(.on){border-color:var(--accent-line)}
.rcard1.rph .rslots .pl{font-size:16px}.rcard1.rph .rslots .pb{font-size:26px}
.rcard1.rph .rnums{order:1}
.rcard1.rph .rgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:66px;gap:8px}
.rcard1.rph .rgrid .tile{min-height:0}.rcard1.rph .rgrid .tile .n{font-size:28px}
.rcard1.rph .rhint{font-size:16px}
.rcard1.rph .rdone{order:2;position:sticky;bottom:0;background:var(--card);padding:8px 0 0;display:flex;gap:8px}
.rcard1.rph .rdone button{flex:1;font-size:19px;min-height:54px}
body.one.phone .r1{display:block}body.one.phone .jtabs{display:flex;overflow-x:auto;gap:6px;margin-bottom:8px}
/* Announcer: one column to read down: placings first, then Done and payback, then what's next and the gate */
body.one.phone .a1{display:flex;flex-direction:column;gap:12px;flex:none}
body.one.phone .acol{overflow:visible}
body.one.phone .amid{order:0}body.one.phone .aright{order:1}body.one.phone .aleft{order:2}
body.one.phone .aview{display:flex;flex-direction:column;gap:10px}
body.one.phone .aview .arows li{min-height:44px}
body.one.phone .tslot{flex-wrap:wrap;gap:6px}body.one.phone .tslot select{flex:1 1 0;min-width:0}body.one.phone .tslot>div,body.one.phone .tslot>.ghost:not([aria-label]){flex-basis:100%}
.signoff.ok{border-color:var(--go)}.sobar{height:10px;border-radius:999px;background:var(--line);overflow:hidden;margin:8px 0 0}.sobar i{display:block;height:100%;background:var(--go)}
.signrow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0 0;padding-top:8px;border-top:1px dashed var(--line)}.signrow .okline{margin:0}
/* Practice show (0.27.0): a band on ordinary pages, a faint PRACTICE watermark and gold dashed edge on every page.
   The watermark never takes a tap. One-screen tablets skip the band (it would push the screen down). */
.prband{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin:0 0 12px;padding:10px 14px;border-radius:12px;
  background:repeating-linear-gradient(135deg,#fff6db 0 14px,#fdecb4 14px 28px);border:2px solid var(--gold);color:#3a2b00}
.prband b{font-size:17px}.prband .btn{margin-left:auto}
@media (prefers-color-scheme:dark){.prband{background:repeating-linear-gradient(135deg,#3a2f10 0 14px,#2d250c 14px 28px);color:#ffe7a3}}
body.one .prband{display:none}
.prmark{position:fixed;inset:0;pointer-events:none;z-index:2147483000;border:5px dashed var(--gold);
  display:flex;align-items:center;justify-content:center;overflow:hidden}
.prmark span{font:900 clamp(60px,16vw,220px)/1 system-ui,sans-serif;letter-spacing:.08em;color:var(--gold);opacity:.08;transform:rotate(-24deg);white-space:nowrap}
.prbtns{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
/* Shows page (0.28.0) */
.nsgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px;margin-top:10px}
.nsopt{border:1px solid var(--line);border-radius:12px;padding:12px}.nsopt h3{margin:0 0 4px}
.shtop{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:10px;align-items:start}.shtop .card{margin:0 0 10px}
.stbtns{display:flex;flex-wrap:wrap;gap:6px}.shlinks{display:flex;flex-wrap:wrap;gap:6px}.shlinks h2{flex:1 0 100%}
.ringrows{display:flex;flex-direction:column;gap:6px}.ringrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.ringrow .rn{min-width:22px}
form.inl{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap;margin:0}
.sday{margin:18px 0 6px}
.scols{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:10px}
.scol{margin:0;padding:10px}.sch{display:flex;justify-content:space-between;gap:8px;margin-bottom:6px}
.sclist{list-style:none;margin:0;padding:0;min-height:44px;display:flex;flex-direction:column;gap:6px;border-radius:10px}
.sclist:empty::after{content:'Drop a class here';display:block;padding:12px;text-align:center;color:var(--muted);border:2px dashed var(--line);border-radius:10px}
.scard{display:flex;align-items:stretch;gap:0;background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.scard.closed{opacity:.65}.scard .sbody{flex:1;padding:8px 10px;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:2px}
.scard .sbody:hover{background:var(--accent-soft)}
.shandle{display:flex;align-items:center;padding:0 10px;cursor:grab;touch-action:none;user-select:none;font-size:20px;color:var(--muted);background:var(--bg);border-right:1px solid var(--line)}
.sph{border:2px dashed var(--accent);border-radius:10px;background:var(--accent-soft)}
.sghost{position:fixed;z-index:99999;pointer-events:none;box-shadow:0 10px 30px rgba(0,0,0,.25);transform:rotate(1deg);list-style:none}
.sdragging{display:none!important}
.sadd{display:block;margin-top:8px;font-weight:600;font-size:14px}
.delcls .warn ul{margin:6px 0 6px 18px;padding:0}
main.officehome{max-width:1280px}
@media (min-width:1000px){main.officehome .toolgroups{grid-template-columns:repeat(4,minmax(0,1fr))}}
.stack label>input:not([type=checkbox]):not([type=radio]),.stack label>select{display:block;width:100%;margin-top:4px}
/* Office home: Columns or Rows (0.28.2), picked per person */
.laysw{display:inline-flex;border:2px solid var(--accent-line);border-radius:10px;overflow:hidden;margin-left:auto}
.laysw button{border:0;border-radius:0;padding:7px 12px;background:var(--accent-soft);color:var(--accent);font-size:14px}
.laysw button.on{background:var(--accent);color:#fff}
@media (prefers-color-scheme:dark){.laysw button:not(.on){color:#dbe6ff}}
main.officehome .toolgroups.rows{grid-template-columns:1fr!important;gap:8px}
.toolgroups.rows .tg{display:grid;grid-template-columns:150px 1fr;gap:12px;align-items:start;padding:10px 14px}
.toolgroups.rows .tg h3{margin:12px 0 0;font-size:13px}
@media (max-width:700px){.toolgroups.rows .tg{grid-template-columns:1fr;gap:6px}.toolgroups.rows .tg h3{margin:0}}
.feedbox{margin:4px 0 12px 28px;padding:10px;border:1px solid var(--line);border-radius:10px}
/* Year-end circuit awards page (0.30.0) */
.yshows{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.yatable th.ys,.yatable td.ys{font-size:13px;min-width:90px}
.yfeed{display:inline-block;padding:2px 8px;border-radius:999px;background:var(--go-soft);color:var(--go);font-weight:700;font-size:12px}
.yfeed.picked{background:#fff4d6;color:#7a5200}
@media (prefers-color-scheme:dark){.yfeed.picked{background:#3b2d07;color:#ffd770}}
.pbpost{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
/* Setup questions and Features (0.33.0) */
.ob{max-width:780px;margin:0 auto}.ob h1{font-size:28px;margin:14px 0 4px}.obintro{font-size:17px;color:var(--muted);margin:0 0 14px}
.obsteps{list-style:none;display:flex;gap:4px;padding:0;margin:4px 0 6px;overflow-x:auto}.obsteps li{flex:1 0 auto}
.obsteps a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 8px;border-radius:10px;text-decoration:none;color:var(--muted);font-size:12px}
.obsteps a span{font-size:18px;filter:grayscale(1);opacity:.6}.obsteps li.done a span,.obsteps li.on a span{filter:none;opacity:1}
.obsteps li.on a{background:var(--accent-soft);color:var(--accent)}.obsteps li.done a{color:var(--go)}
.obbar{height:6px;border-radius:999px;background:var(--line);overflow:hidden;margin-bottom:6px}.obbar i{display:block;height:100%;background:var(--go)}
.obcard{padding:16px 18px}.obnav{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:14px 0 30px}
button.big,.btn.big{font-size:18px;padding:12px 26px}
.obq{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;border:2px solid var(--line);margin:0 0 10px;padding:14px 16px}
.obq.found{border-color:var(--go)}.obqt b{font-size:17px}.obqt p{margin:4px 0 0}
.obfound{color:var(--go)!important;font-weight:600}
.obyn{display:flex;border:2px solid var(--accent-line);border-radius:12px;overflow:hidden}
.obyn label{margin:0;cursor:pointer}.obyn input{position:absolute;opacity:0;pointer-events:none}
.obyn span{display:block;padding:12px 20px;font-weight:800;font-size:16px;background:var(--card);color:var(--accent)}
.obyn input:checked+span{background:var(--accent);color:#fff}.obyn input:focus-visible+span{outline:3px solid var(--focus)}
.obchoices{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:12px}.obchoice h2{margin-top:0}
.obusers,.obcheck{margin:8px 0;padding-left:0;list-style:none}.obusers li,.obcheck li{padding:4px 0}.obcheck li.ok{color:var(--go)}
.obfeat{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.featlist{display:grid;gap:8px}.feat{display:flex;gap:12px;align-items:flex-start;padding:10px;border:1px solid var(--line);border-radius:10px;margin:0;font-weight:400}
.feat input{width:22px;height:22px;margin-top:2px}.feat span{display:flex;flex-direction:column}.feat b{font-size:16px}
@media (max-width:560px){.obq{grid-template-columns:1fr}.obyn{justify-self:start}.obsteps b{display:none}}
.obnav button,.obnav .btn{width:auto;flex:0 0 auto;margin:0}.obnav .go.big{min-width:180px}

/* Ring Done (0.35.0): one button on the ring tablet that confirms every judge's card */
.ringdone{font-weight:800;white-space:nowrap;flex:none}
button.ringdone{padding:10px 18px;font-size:17px}
.jtabs .ringdone{align-self:stretch;border-radius:14px 14px 0 0;padding:8px 20px}.jtabs span.ringdone.ok{display:flex;align-items:center}
span.ringdone.ok{color:var(--go);padding:6px 10px}
.rdj{margin:0 0 10px;padding-bottom:8px;border-bottom:1px solid var(--line, #ddd)}
.rdj:last-of-type{border-bottom:0}
.rdadv{display:flex;gap:8px;align-items:center;margin:12px 0 4px;font-size:17px}
.rdadv input{width:22px;height:22px}

/* Per-show logos (0.35.0) */
.lshowlogo{height:56px;max-width:150px;object-fit:contain;background:#fff;border-radius:10px;padding:4px 6px;flex:none}
.lhero:has(.lshowlogo){justify-content:flex-start}.lhero:has(.lshowlogo) .lshowpick{margin-left:auto}
.shlogo{display:flex;align-items:center;gap:12px;min-height:70px;margin:0 0 10px}
.shlogo img{max-height:90px;max-width:220px;object-fit:contain;background:#fff;border-radius:10px;padding:6px;border:1px solid var(--line)}
.shlogoform{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

/* Pay the bill on the phone (0.36.0): Apple Pay / Google Pay above Square's card box */
.paynow .wallets{display:flex;flex-direction:column;gap:10px;margin:8px 0 12px}.paynow .wallets:empty{display:none}
.paynow .apbtn{-webkit-appearance:-apple-pay-button;-apple-pay-button-type:pay;-apple-pay-button-style:black;height:48px;width:100%;border-radius:10px;cursor:pointer}
.paynow .gpbtn:empty{display:none}.paynow .gpbtn{min-height:48px}
.paynow .sqbox{min-height:100px}
/* Move a number in the order of go (0.37.0): number grid at the gate, drag list in the office */
.movepick .spots{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px}
.movepick .spots button{display:flex;flex-direction:column;align-items:center;padding:8px 4px;min-height:58px;background:var(--tile);color:var(--ink);border:2px solid var(--line)}
.movepick .spots button b{font-size:20px}.movepick .spots button small{font-size:12px;color:var(--muted);font-weight:600}
.oogmove{list-style:none;margin:8px 0;padding:0;max-width:760px}
.oogmove li{display:flex;gap:10px;align-items:center;padding:6px 8px;border:1px solid var(--line);border-radius:10px;margin:0 0 6px;background:var(--card)}
.oogmove li .go{min-width:2.4em;font-weight:700;color:var(--muted);text-align:right}
.oogmove li .bk{font-weight:800;font-size:18px;min-width:3em}
.oogmove li .who{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.oogmove li .grip{cursor:grab;font-size:20px;color:var(--muted);padding:0 4px;user-select:none}
.oogmove li.gone{opacity:.55}.oogmove li.gone .grip{visibility:hidden}
.oogmove li.moved .go::after{content:" ↕";color:var(--accent)}
.oogmove li.dragging{opacity:.4}.oogmove li.over{box-shadow:0 -3px 0 0 var(--accent)}
.oogmove li.endzone{justify-content:center;border-style:dashed;color:var(--muted);background:transparent}
.oogmove li button{padding:4px 10px;font-size:14px}

/* ❓ Help (0.38.0) */
.helplink{display:inline-flex;align-items:center;gap:4px;padding:6px 10px;border-radius:10px;color:inherit;text-decoration:none;font-weight:700;white-space:nowrap}
.helplink:hover{background:rgba(255,255,255,.12)}
.helpwrap{display:grid;grid-template-columns:230px minmax(0,1fr);gap:20px;align-items:start;max-width:1180px;margin:0 auto}
.htoc{position:sticky;top:12px;display:flex;flex-direction:column;gap:2px;padding:12px;border-radius:14px;background:var(--card);border:1px solid var(--line);
  max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px - var(--sat, 0px) - var(--sab, 0px));overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;box-sizing:border-box}
.htoc>*{flex:none}
.htoc b{margin:0 0 6px}.htoc a{padding:6px 8px;border-radius:8px;text-decoration:none;font-weight:600}.htoc a:hover{background:var(--accent-soft)}
@media (max-width:820px){.helpwrap{grid-template-columns:1fr;gap:8px}.htoc{position:static;max-height:none;overflow-y:hidden;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;white-space:nowrap;padding:6px 8px;-webkit-overflow-scrolling:touch}
  .htoc b{display:none}.htoc a{flex:none;border:1px solid var(--line)}}
.hmain .hsec{scroll-margin-top:16px;transition:box-shadow .4s}.hsec.hflash{box-shadow:0 0 0 4px var(--accent-line)}
.hsec h2{margin-top:0}.hsec p,.hsec li{line-height:1.55;max-width:75ch}.hsec li{margin:4px 0}.htop{text-align:right;margin:4px 0 0;font-size:14px}
.hscroll{overflow-x:auto;margin:10px 0}.htable{border-collapse:collapse;width:100%;font-size:15px}
.htable th,.htable td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}.htable th{background:var(--accent-soft)}
.hrow{display:flex;gap:8px}.hrow input{flex:1;min-width:0;font-size:17px;padding:10px 12px}
.hans{margin:12px 0 0;padding:12px 14px;border-radius:12px;background:var(--accent-soft);border-left:5px solid var(--accent)}
.hans .hq,.hpq{font-weight:700;margin:0 0 6px}.hsrc,.hpsrc{font-size:14px;margin:8px 0 0}
.hhits{display:flex;flex-direction:column;gap:6px;margin:12px 0 0}.hhit,.hphit{display:block;padding:8px 10px;border-radius:10px;border:1px solid var(--line);text-decoration:none;color:inherit;background:var(--card)}
.hhit small,.hphit small{display:block;color:var(--accent);font-weight:700}
.helpfab{position:fixed;right:calc(16px + var(--sar, 0px));bottom:calc(16px + var(--sab, 0px));z-index:40;display:flex;align-items:center;gap:6px;padding:10px 16px;border-radius:999px;
  background:var(--accent);color:#fff;border:0;font-weight:800;font-size:16px;box-shadow:0 4px 14px rgba(0,0,0,.25);cursor:pointer}
.helpfab span[aria-hidden]{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#fff;color:var(--accent);font-size:15px}
.helpfab.on{opacity:.85}
body.one .helpfab,body.tablet .helpfab{display:none}
@media print{.helpfab,.helppanel{display:none}}
.helppanel{position:fixed;right:calc(16px + var(--sar, 0px));bottom:calc(72px + var(--sab, 0px));z-index:41;width:min(400px,calc(100vw - 32px));max-height:min(70vh,620px);
  display:flex;flex-direction:column;border-radius:16px;background:var(--card);border:1px solid var(--line);box-shadow:0 10px 40px rgba(0,0,0,.3)}
.helppanel[hidden]{display:none}
.hph{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line)}.hph a{margin-left:auto}
.hpbody{flex:1;overflow:auto;padding:10px 12px;display:flex;flex-direction:column;gap:12px}
.hpturn{display:flex;flex-direction:column;gap:6px}.hpa{padding:10px 12px;border-radius:12px;background:var(--accent-soft);font-size:15px;line-height:1.5}.hpa p{margin:0 0 6px}.hpa ol,.hpa ul{margin:4px 0;padding-left:20px}
.hpform{display:flex;gap:6px;padding:10px 12px;border-top:1px solid var(--line)}.hpform input{flex:1;min-width:0}
/* Live video and clips (0.37.0) */
.vgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:6px 0 10px}
.vdot{display:inline-block;width:11px;height:11px;border-radius:50%;background:var(--line);vertical-align:middle;flex:none}
.vdot.on{background:#d62d20;box-shadow:0 0 0 3px rgba(214,45,32,.25);animation:vpulse 1.6s infinite}
@keyframes vpulse{50%{box-shadow:0 0 0 6px rgba(214,45,32,0)}}
@media (prefers-reduced-motion:reduce){.vdot.on{animation:none}}
.vcam{border-top:1px solid var(--line);padding:10px 0}.vcam:first-of-type{border-top:0}
.vcamhead{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.vaddr code{word-break:break-all;font-size:15px}.vaddr{margin:0 0 8px}
.vrings td,.vrings th{padding:6px 10px 6px 0;text-align:left}
.vnudge{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.vnudge input{width:4.5em}
.vact{white-space:nowrap}.vplay video{width:100%;max-height:60vh;background:#000;border-radius:10px}
.vtabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 10px}
.vtab{all:unset;cursor:pointer;display:inline-flex;gap:8px;align-items:center;padding:8px 14px;border-radius:999px;border:2px solid var(--line);background:var(--card);color:var(--ink);font-weight:600}
.vtab.on{border-color:var(--accent)}
.vplayer{position:relative;width:100%;aspect-ratio:16/9;background:#000;border-radius:14px;overflow:hidden}
.vframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:#000}
.voff{position:absolute;inset:0;display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;color:#ddd;text-align:center;padding:16px}
.voff b{font-size:20px;color:#fff}
.vnow{margin:8px 2px 4px;font-size:16px;min-height:1.4em}
.vmine video{width:100%;max-height:60vh;background:#000;border-radius:10px;margin:8px 0}
.vmhead{display:flex;flex-direction:column;gap:2px}
.vlock{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:8px}
.rcard .rwatch{display:inline-flex;gap:6px;align-items:center;font-size:13px;font-weight:700;margin-top:4px}
.lwatch{display:inline-flex;gap:8px;align-items:center;margin:4px 0 10px}
.vlinkcard{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;text-decoration:none;color:inherit}

/* 🔔 Notifications (0.44.0): the bell, its panel, the inbox page */
.nbell{position:relative;background:transparent;border:0;color:inherit;padding:6px 9px;font-size:19px;line-height:1;border-radius:8px;cursor:pointer}
header .nbell{color:#fff}header .nbell:hover{background:rgba(255,255,255,.14)}
.nbell .nbadge{position:absolute;top:0;right:0;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--bad);color:#fff;font:700 11px/18px system-ui,sans-serif;text-align:center;border:2px solid var(--navy)}
.tbar .nbell{margin-left:auto;font-size:20px}.tbar .nbell .nbadge{border-color:var(--card)}
.npanel{position:fixed;z-index:120;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px rgba(0,0,0,.28);
  max-height:min(560px,calc(100dvh - 90px - var(--sab, 0px)));display:flex;flex-direction:column;overflow:hidden}
.nph{display:flex;gap:8px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--line)}.nph b{flex:1;font-size:17px}
.ndev{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:8px 12px;background:var(--accent-soft);font-size:14px;font-weight:600}
#ndevcard .ndev{border-radius:10px;padding:10px 12px;font-size:15px}
.nlist{overflow-y:auto;flex:1}
.nitem{display:flex;gap:6px;align-items:flex-start;padding:10px 12px;border-bottom:1px solid var(--line);cursor:pointer}
.nitem:hover{background:var(--accent-soft)}.nitem:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
.nit{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.nit b{font-weight:600}.nit span{color:var(--muted);font-size:14px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.nitem.open .nit span{display:block;-webkit-line-clamp:unset;white-space:pre-wrap}
.nit small{color:var(--muted);font-size:12px}
.nitem.unread{background:color-mix(in srgb,var(--accent-soft) 55%,transparent)}.nitem.unread .nit b{font-weight:800}
.nitem.unread .nit b::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);margin-right:6px;vertical-align:2px}
.nx{background:transparent;border:0;color:var(--muted);padding:2px 6px;font-size:15px}.nx:hover{color:var(--bad)}
.nempty{padding:14px 12px;margin:0}.nmore{display:block;padding:10px 12px;font-weight:700;text-align:center;border-top:1px solid var(--line)}
.nlist.page{background:var(--card);border:1px solid var(--line);border-radius:12px;margin:8px 0 16px}.nlist.page .nitem:last-child{border-bottom:0}
.npop{position:fixed;z-index:130;left:50%;transform:translateX(-50%);top:calc(12px + var(--sat, 0px));max-width:min(92vw,520px);background:var(--navy);color:#fff;padding:10px 16px;
  border-radius:12px;font-weight:700;box-shadow:0 8px 24px rgba(0,0,0,.3);border-bottom:3px solid var(--gold);transition:opacity .5s}
.npop.out{opacity:0}
.mpick{margin:6px 0 4px 28px}.mpick select{width:100%;max-width:560px}
.nwho .chip{display:inline-block;margin:2px 0}.nwho .chip.on{background:var(--go-soft);border-color:var(--go)}
.mbody{width:100%;font:inherit;padding:10px 12px;border-radius:10px;border:2px solid var(--line);background:var(--card);color:var(--ink)}
.pfound{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.ppicked{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.ppicked .chip .nx{padding:0 2px}.nwho a.chip{text-decoration:none}
.acctt td{font-size:15px}.acctt .acts{display:flex;gap:6px;flex-wrap:wrap}

/* Filter bar for long tick lists (0.46.0, static/pickfilter.js) */
.pfbar{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;margin:6px 0}
.pfbar .pfq{flex:1 1 220px;min-width:180px}
.pfbar .pfdiv{flex:0 1 200px}
.pfbar .pfon{margin:0;white-space:nowrap}
.pfbar .pfcount{margin-left:auto;white-space:nowrap}
.pickcls label[hidden]{display:none!important}

/* Office class page: Results card (0.47.0) */
#results .oresc{border-top:1px solid var(--line);padding:10px 0}
#results .oresc:first-of-type{border-top:0;padding-top:0}
#results .orespl{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px 10px}
#results .oresp{display:grid;grid-template-columns:28px 1fr;align-items:center;gap:2px 6px;margin:0;font-weight:400}
#results .oresp span{font-weight:700;text-align:right}
#results .oresp input{width:100%}
#results .oresp .oresn{grid-column:2;font-size:.8em;min-height:1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#results .oresnp{margin:8px 0}

/* Office class page: gate status per entry (0.48.0) */
#centries .gsel{padding:4px 6px;font-size:14px;min-width:120px}
#centries .gs-checked_in{border-color:var(--ok,#2e7d32)}
#centries .gs-worked{border-color:var(--navy,#1f2a44)}
#centries .gs-scratched{border-color:var(--bad,#b3261e);color:var(--bad,#b3261e)}

/* How they qualified (0.49.0) */
.qtable td{vertical-align:top}
.qhow{list-style:none;margin:0;padding:0;font-size:.92em;line-height:1.35}
.qhow li{margin:0 0 3px;padding-left:46px;text-indent:-46px}
.qhow .qplace{display:inline-block;min-width:40px;margin-right:6px;padding:1px 6px;border-radius:999px;background:var(--line,#e4e7ee);
  font-weight:700;font-size:.85em;text-align:center;text-indent:0}
.qhow .qoff{background:#fff3cd}
.qrmnote{display:inline-block;margin:4px 0 0;color:var(--bad,#b3261e);font-size:.9em;text-decoration:none}

/* One announcer, several arenas (0.50.0) */
.annstrip{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch;margin:0 0 8px;flex:none}
.annring{display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:180px;flex:1 1 200px;max-width:420px;padding:6px 12px;
  border:2px solid var(--line,#d8dce5);border-radius:10px;background:var(--card,#fff);color:inherit;text-align:left;cursor:pointer;font-size:15px}
.annring b{font-size:16px}.annring span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.annring i{font-style:normal;font-size:13px;color:var(--muted,#667)}
.annring.on{border-color:var(--navy,#1f2a44);box-shadow:inset 0 0 0 1px var(--navy,#1f2a44)}
.annring.ar-ready{border-color:#2e7d32;background:#e8f5e9}.annring.ar-ready i{color:#1b5e20;font-weight:800}
.annring.ar-ready:not(.on){animation:annpulse 1.6s ease-in-out infinite}
@keyframes annpulse{50%{box-shadow:0 0 0 4px rgba(46,125,50,.25)}}
.annq{align-self:center;margin-left:auto;font-size:15px;white-space:nowrap}
@media (prefers-color-scheme:dark){.annring.ar-ready{background:#123d24}.annring.ar-ready i{color:#8be3a9}}

/* ------------------------------------------------------------------ Paperwork wallet (0.51.0) */
.plist{display:flex;flex-direction:column;gap:8px;margin:8px 0}
.pdoc{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line);border-radius:10px}
.pdoc small{display:block;color:var(--muted)}
.pdoc.pst-ok{border-left:5px solid #2e7d32}.pdoc.pst-pending{border-left:5px solid #c77700}.pdoc.pst-rejected,.pdoc.pexp{border-left:5px solid #b3261e}
.padd>summary{list-style:none;display:inline-block;cursor:pointer}.padd>summary::-webkit-details-marker{display:none}
.pnote{border-left:5px solid var(--gold,#c9a227)}
.tile .pp,.tile .cx{position:absolute;font-size:13px;line-height:15px}
.tile .pp{top:2px;left:50%;transform:translateX(-50%);font-size:15px;padding:0 6px;border-radius:6px;background:#c77700;color:#fff;font-weight:900}
.tile .pp::after{content:' Papers';font-size:10px;text-transform:uppercase;letter-spacing:.03em}
.tiles .tile:not(.compact) .pp::after,.gnt .tile .pp::after{content:''}
.tile .cx{right:auto;left:50%;transform:translateX(-50%);bottom:2px;padding:0 5px;border-radius:6px;background:#6a1b9a;color:#fff;font-weight:900}
.lb-cx{padding:2px 8px;border-radius:8px;background:#6a1b9a;color:#fff;font-weight:700;font-size:.85em}
.gnt .tile .pp,.gnt .tile .cx,.pool .tile .pp,.pool .tile .cx{display:none}
.cipapers{margin:8px 0;padding:8px 12px;border-radius:10px;background:#fff4e0;border-left:5px solid #c77700}.cipapers.block{background:#fde8e6;border-left-color:#b3261e}
.cipapers ul{margin:4px 0 6px 18px;padding:0}
@media (prefers-color-scheme:dark){.cipapers{background:#3b2a10}.cipapers.block{background:#3d1512}}

/* ------------------------------------------------------------------ Score sheets on phones, sponsors, go times (0.51.0) */
.sheetlnk{margin-left:auto;font-size:.85em;white-space:nowrap;text-decoration:none;padding:2px 8px;border:1px solid var(--line);border-radius:8px}
.places li{display:flex;align-items:center;gap:8px}
.sheetcard h3{margin:0 0 6px}.sheettop{display:flex;justify-content:space-between;background:var(--bg2,#f2f2f2);padding:8px 12px;border-radius:8px;margin-bottom:8px}
.sheettop small{display:block;font-size:10px;font-weight:800;color:var(--muted)}.sheettop b{font-size:22px}.sheettop div:last-child{text-align:right}
.mantbl,.sumtbl{width:100%;border-collapse:collapse}.mantbl th,.mantbl td{padding:6px;border-bottom:1px solid var(--line);text-align:left}
.mantbl .v{text-align:right;white-space:nowrap}.mantbl .sc{font-weight:800}.mantbl .pen{color:#b3261e}
.sumtbl{max-width:280px;margin:8px 0 0 auto}.sumtbl td{padding:3px 6px;text-align:right}.sumtbl td:first-child{color:var(--muted)}.sumtbl tr.t td{border-top:2px solid var(--ink);font-weight:800;font-size:1.1em}
.lspons{margin-top:6px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--muted)}.lspons img{height:28px;max-width:90px;object-fit:contain}
.spstrip{display:flex;gap:18px;align-items:center;overflow:hidden;padding:8px 0;justify-content:center;flex-wrap:wrap}
.spstrip img{height:40px;max-width:140px;object-fit:contain}.spstrip span{font-weight:700;color:var(--muted)}
.splogo{height:32px;max-width:110px;object-fit:contain;margin-right:8px;vertical-align:middle}
.cobar{height:12px;border-radius:6px;background:var(--line);overflow:hidden}.cobar div{height:100%;background:#2e7d32}
.colist{display:flex;flex-direction:column;gap:8px;margin-top:10px}.coitem{display:flex;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:10px}
.coitem>div:nth-child(2){flex:1}.coitem small{display:block;color:var(--muted)}.cotick{font-size:20px;font-weight:900;width:24px;text-align:center;color:var(--muted)}
.coitem.done .cotick{color:#2e7d32}.coitem.done b{color:var(--muted)}
.findnum{font-size:28px;font-weight:900}kbd{border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:0 5px;font-size:.9em}

/* ------------------------------------------------------------------ ☀ Sunlight screen (0.51.0): tablets outside */
body.sun{--bg:#fff;--card:#fff;--ink:#000;--muted:#1a1a1a;--line:#000;--tile:#fff;--accent:#000;
  --in:#00401c;--in-bg:#7ee09e;--scr:#5e0000;--scr-bg:#ff9a8c;--ns:#3d2800;--ns-bg:#ffd34d;--wk:#00265e;--wk-bg:#8fbcff;
  background:#fff;color:#000;color-scheme:light}
body.sun .tile{border-width:3px;box-shadow:none}body.sun .tile .n{font-weight:900}
body.sun .tile.checked_in,body.sun .tile.scratched,body.sun .tile.worked{border-width:5px}
body.sun .muted,body.sun small{color:#1a1a1a}body.sun .card,body.sun .cls{border:2px solid #000}
body.sun header,body.sun .tbar{background:#000;color:#fff}body.sun button,body.sun .btn{border-width:2px}
.findbox{position:fixed;z-index:400;top:calc(70px + var(--sat,0px));left:50%;transform:translateX(-50%);width:min(440px,92vw);display:flex;flex-wrap:wrap;gap:6px;
  padding:10px;background:var(--card);border:2px solid var(--accent);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.25)}
.findbox input{flex:1;font-size:20px}.findbox ul{list-style:none;margin:0;padding:0;width:100%}.findbox li a{display:block;padding:6px 4px;text-decoration:none}
.annspon{font-weight:700;color:#7a5b00;background:#fff3cf;border-radius:8px;padding:4px 10px;margin:4px 0;display:inline-block}
@media (prefers-color-scheme:dark){.annspon{background:#3b2e0a;color:#ffd57a}}
.ngoeta{font-weight:800;margin-top:2px}
.hphoto{height:64px;width:64px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}
.lb-ph{height:40px;width:40px;object-fit:cover;border-radius:8px;cursor:zoom-in;flex:none}
.toast.undoable{display:flex;align-items:center;gap:10px}.toast.undoable button{color:inherit;border-color:currentColor}
body.sun .tstat{--muted:#e6e6e6;color:#fff}body.sun .tstat small{color:#e6e6e6}
/* 0.52.0: Office home class status pick */
.clsst{margin:0}.clsst select{padding:4px 8px;border-radius:8px;font-size:.92em;min-height:34px}
.clsst select.st-in_ring{border-color:var(--accent,#3b6fd8);font-weight:600}.clsst select.st-closed{opacity:.75}
/* 0.53.0: Scratch on My entries */
.erow:has(.escr){grid-template-columns:56px 1fr auto auto}.escr{margin:0}.escr button{padding:4px 10px;min-height:32px}
@media (max-width:520px){.erow:has(.escr){grid-template-columns:48px 1fr auto}.erow .escr{grid-column:2 / -1;justify-self:end}}
/* 0.53.2: public show page before the show starts */
.lnotyet{display:flex;flex-direction:column;gap:4px;text-align:center;padding:16px;margin:10px 0 14px}
/* 0.53.2: Office home class list filters and sortable columns */
.clsfilter{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0 8px}.clsfilter input[type=search]{flex:1 1 220px;min-width:0}
.clsfilter select{flex:0 1 auto;max-width:100%}
#clslist thead th[data-sort]{cursor:pointer;user-select:none;white-space:nowrap}
#clslist thead th[aria-sort=ascending]::after{content:" ▲";font-size:.75em}#clslist thead th[aria-sort=descending]::after{content:" ▼";font-size:.75em}
/* 0.54.0: rings that wait on each other */
.ringpar{margin-left:8px}.ringpar select{padding:4px 8px}.ringafter{margin:2px 0 6px}.ringafter select{padding:3px 6px;font-size:13px;max-width:100%}
.swait{display:block;color:var(--accent);font-weight:700;font-size:12px}.clswait{margin:6px 0}.clswait summary{cursor:pointer}
.ringat{display:inline-flex;align-items:center;gap:4px;margin-left:6px}.ringat input{width:96px;padding:4px 8px}
/* 0.54.0: back to the top (bottom-left, clear of Help on the right) */
.topfab{position:fixed;left:calc(16px + var(--sal, 0px));bottom:calc(16px + var(--sab, 0px));z-index:40;display:flex;align-items:center;gap:6px;
  padding:10px 16px;border-radius:999px;border:0;background:var(--navy);color:#fff;font-weight:700;box-shadow:0 4px 14px rgba(0,0,0,.25);cursor:pointer}
.topfab[hidden]{display:none}.topfab span{font-size:18px;line-height:1}
body.one .topfab,body.tablet .topfab{display:none}
@media print{.topfab{display:none}}
/* 0.54.1: gate tablet switch when rings split or come back */
.swban{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-weight:700}.swban .swbtns{display:flex;flex-wrap:wrap;gap:8px}
.swban .btn{text-decoration:none}
/* 0.55.1: arrange the show page's buttons */
.tilearr{display:flex;gap:8px;justify-content:center;margin:6px 0 12px}
.tiles9.arranging .t9{cursor:grab;touch-action:none;outline:2px dashed var(--accent-line);outline-offset:-4px;animation:t9wig .9s ease-in-out infinite alternate}
.tiles9.arranging .t9.dragging{cursor:grabbing;opacity:.75;transform:scale(1.04);animation:none;z-index:2}
@keyframes t9wig{from{transform:rotate(-.6deg)}to{transform:rotate(.6deg)}}
@media (prefers-reduced-motion:reduce){.tiles9.arranging .t9{animation:none}}
/* 0.55.1: "A new version is ready" on a page left open across an update */
.newver{position:fixed;left:50%;transform:translateX(-50%);top:calc(10px + var(--sat, 0px));z-index:500;display:flex;align-items:center;gap:10px;
  background:var(--navy);color:#fff;padding:8px 10px 8px 16px;border-radius:999px;box-shadow:0 6px 20px rgba(0,0,0,.3);font-weight:700;max-width:calc(100vw - 24px)}
.newver[hidden]{display:none}
.placed{color:var(--ok);font-weight:700;font-size:.92em;white-space:nowrap}

/* 🎓 How-to (0.59.0): videos on /howto, /training and in Help */
.hvids{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.hvid{margin:0;padding:8px}.hvid video{width:100%;border-radius:8px;background:#000;aspect-ratio:16/10}
.hvid figcaption{display:flex;flex-direction:column;gap:2px;padding:6px 2px 0}
.tourhere{display:inline-flex;gap:6px;align-items:center}
body.touring .helpfab,body.touring .helppanel,body.touring .topfab{display:none!important}
/* Addresses (0.61.0) */
.myaddr h2{font-size:1.05rem;margin:18px 0 6px}.myaddr form.card h2:first-of-type{margin-top:0}
.myaddr .lead{font-size:1.05rem}.addr3{grid-template-columns:2fr 1.4fr 1fr}
@media (max-width:600px){.addr3{grid-template-columns:1fr 1fr}.addr3 label:first-child{grid-column:1/-1}}
label:has(>input[data-addr]){position:relative}
.addrlist{position:absolute;left:0;right:0;z-index:30;background:var(--card,#fff);border:1px solid var(--line,#ccc);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.18);margin-top:4px;overflow:hidden}
.addrlist button{display:flex;flex-direction:column;align-items:flex-start;width:100%;text-align:left;background:none;color:inherit;border:0;border-bottom:1px solid var(--line,#eee);border-radius:0;padding:10px 12px;font-weight:400;min-height:0}
.addrlist button b{font-weight:600}.addrlist button span{font-size:.85em;opacity:.75}
.addrlist button.on,.addrlist button:hover{background:var(--hl,rgba(128,0,0,.08))}
.addrlist .addrby{display:block;text-align:right;padding:4px 10px;font-size:.72em;opacity:.6}
.addrcheck{border-left:5px solid var(--gold,#c9a227)}.addrcheck.fix{border-left-color:var(--warn,#d97706)}
.addrbox{font-size:1.1rem;font-weight:600;padding:10px 12px;background:var(--hl,rgba(0,0,0,.04));border-radius:8px;margin:8px 0}
.addrcard .addrline{font-size:1rem}.addrcard form{margin-top:8px}

/* Find a number: status per class, take one class off, add classes (0.62.0). */
.findtbl td{vertical-align:middle}.findst{margin:0}.findst select{padding:6px 8px;font-weight:700}
.findst select.gs-checked_in{border-color:var(--gold)}.findst select.gs-scratched{border-color:var(--bad);color:var(--bad)}.findst select.gs-worked{border-color:var(--go)}
.findadd{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}.findadd label{margin:0}.findadd input{flex:1;min-width:200px;max-width:26em}.findadd .addsee{flex-basis:100%}
.acctname{font-weight:700;text-decoration:none}.acctname:hover{text-decoration:underline}

/* Office home buttons (0.62.0): every button the same size (one per line in Columns, a fixed width in Rows), and the
   everyday desk buttons (Process entry, Find a number, check-in, back numbers, draws, billing) bigger as well as coloured. */
.tgb{align-items:stretch;gap:6px}
.tgb>.arr-w,.tgb>a.btn{flex:1 1 100%;display:flex;align-items:center;min-width:0}
.tgb>.arr-w>a.btn,.tgb>a.btn{flex:1;min-width:0;min-height:46px;display:flex;align-items:center;gap:6px;line-height:1.2;padding:8px 12px}
.tgb>.arr-w>.tip{flex:none;margin-left:4px}
.tgb a.btn.big{min-height:64px;font-size:18px;padding:10px 14px}
.toolgroups.rows .tgb{flex-direction:row}
.toolgroups.rows .tgb>.arr-w,.toolgroups.rows .tgb>a.btn{flex:0 0 250px}
@media (max-width:700px){.toolgroups.rows .tgb>.arr-w,.toolgroups.rows .tgb>a.btn{flex:1 1 100%}}
.btn.tool-find{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn.tool-ci{background:#dff3f3;color:#0b5c60;border-color:#1b8a8f}
@media (prefers-color-scheme:dark){.btn.tool-ci{background:#0f3436;color:#8fe3e6;border-color:#2fb3b8}}

/* Office home class list (0.62.0): folded by default, the search stays; the class number and name open its page. */
.clshead{display:flex;align-items:center;gap:10px}.clstog{background:none;border:none;color:inherit;padding:4px 0;font-size:inherit;font-weight:800}
.clstog:hover{filter:none;text-decoration:underline}.clstog .chev{display:inline-block;width:1em}
.clshead kbd{font-size:12px;border:1px solid var(--line);border-radius:5px;padding:1px 6px}
a.clsgo{color:inherit;font-weight:700;text-decoration:none}a.clsgo:hover{text-decoration:underline;color:var(--accent)}
.clslist tbody tr{cursor:pointer}.clslist tbody tr:hover td{background:var(--accent-soft)}
/* "Change show" over the show picker in the top bar (0.62.0). */
header .showpick{display:flex;flex-direction:column;align-items:flex-start;gap:1px}
header .showpick .spl{margin:0;font-size:11px;line-height:1;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--gold)}
@media (max-width:640px){header .showpick{flex-direction:row;align-items:center;gap:6px}header .showpick .spl{white-space:nowrap}}

/* Announcer (0.62.0): the left column scrolls on its own when it runs past the bottom, and nothing in it is cut
   off at the side (Each judge / Combined shares the width; long buttons wrap). */
body.one:not(.phone) .aleft{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding-bottom:12px;scrollbar-width:thin}
body.one:not(.phone) .aleft>*{flex-shrink:0;max-width:100%}
body.one:not(.phone) .aleft .gboard{flex:none;overflow:visible}
.aleft .bar{min-width:0}.aleft .bar>span:empty{display:none}
.aleft .viewmode{display:flex;width:100%;max-width:100%}.aleft .viewmode .tm{flex:1 1 0;min-width:0;white-space:normal;padding-left:6px;padding-right:6px}
.aleft .bar .btn,.aleft .bar button{white-space:normal;max-width:100%}
.aleft #viewbtn:not(:empty){display:block;width:100%}

/* Things floating over the page (0.62.0): the ⓘ tip never catches a tap meant for what's under it; the Help and Top
   buttons are small round ones (the label shows on hover), and long pages leave room at the bottom so the last
   buttons can scroll clear of them. */
.tipbox{pointer-events:none}
.helpfab{padding:0;width:48px;height:48px;justify-content:center;opacity:.92}
.helpfab .lbl{display:none}.helpfab span[aria-hidden]{width:26px;height:26px;font-size:17px}
@media (hover:hover){.helpfab:hover,.helpfab:focus-visible{width:auto;padding:10px 16px}.helpfab:hover .lbl,.helpfab:focus-visible .lbl{display:inline}}
.topfab{padding:0 14px;height:48px;opacity:.92}
body:not(.one):not(.tablet) main{padding-bottom:calc(84px + var(--sab, 0px))}

/* 🎨 Colors (0.62.0): colour schemes picked per person (staff) or per device (exhibitors, public). Only the band,
   the action colour and the stripe change; light or dark still follows the device. */
html[data-theme=maroon]{--navy:#5a1424;--accent:#8a1c33;--accent-soft:#f6dde2;--accent-line:#c98a97;--gold:#d4a017;--focus:#d4a017}
html[data-theme=forest]{--navy:#163d2b;--accent:#23704a;--accent-soft:#dbefe3;--accent-line:#82bf9c;--gold:#c9a227;--focus:#c9a227}
html[data-theme=plum]{--navy:#3a1f5c;--accent:#6a3fb0;--accent-soft:#e8e0f7;--accent-line:#a991d9}
html[data-theme=slate]{--navy:#2b3440;--accent:#3c5a7a;--accent-soft:#e1e8ef;--accent-line:#93a6ba}
@media (prefers-color-scheme:dark){
  html[data-theme=maroon]{--navy:#3a0c17;--accent:#c4506a;--accent-soft:#3d1520;--accent-line:#a8495d;--gold:#e6b52e}
  html[data-theme=forest]{--navy:#0c2419;--accent:#38a26c;--accent-soft:#173826;--accent-line:#3f9a68;--gold:#d8b23a}
  html[data-theme=plum]{--navy:#221238;--accent:#8b66dd;--accent-soft:#2b1f47;--accent-line:#7a5cc7}
  html[data-theme=slate]{--navy:#171c23;--accent:#5d84ad;--accent-soft:#1f2a36;--accent-line:#5a7896}}
html[data-theme] .tbar{background:var(--navy)}
.themebg{position:fixed;inset:0;z-index:9000;background:rgba(0,0,0,.45);display:grid;place-items:center;padding:16px}
.themebox{background:var(--card);color:var(--ink);border-radius:14px;padding:18px;max-width:420px;width:100%;box-shadow:0 12px 40px rgba(0,0,0,.4)}
.themebox h2{margin:0 0 6px}.themelist{display:grid;gap:8px;margin:12px 0}
.themeopt{display:flex;align-items:center;gap:12px;background:var(--card);color:var(--ink);border:2px solid var(--line);text-align:left;font-weight:700}
.themeopt.on{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.themeopt .thsw{display:inline-flex;border-radius:6px;overflow:hidden;border:1px solid var(--line)}.themeopt .thsw i{display:block;width:22px;height:26px}
main.officehome>.bar:first-of-type .laysw{margin-right:auto}
.findtbl button.sm{white-space:nowrap;padding:6px 10px}
main.officehome>.bar:first-of-type .laysw{margin-left:0}
.themeopt .thsw{flex:none}.themeopt .thsw i{flex:none;width:22px!important;height:26px!important;min-width:22px}
/* Role layouts (0.63.0): Save for… in the Arrange bar; "Button layout" in 🎨 Colors for people with several roles. */
#arrbar .arr-for{padding:6px 8px;font-size:14px;width:auto}
.themeh3{margin:14px 0 4px;font-size:16px}.themebox .layrole{width:100%}

/* Admin / At show (0.64.0): an admin's two layouts; the switch sits by Columns / Rows */
.modesw{display:inline-flex;border:2px solid var(--accent-line);border-radius:10px;overflow:hidden}
.modesw button{border:0;border-radius:0;padding:7px 12px;background:var(--accent-soft);color:var(--accent);font-size:14px;white-space:nowrap}
.modesw button.on{background:var(--accent);color:#fff}
.modesw.sm{margin-left:auto;margin-right:8px}.modesw.sm button{padding:4px 9px;font-size:13px}
.modesw.sm+.arr-toggle{margin-left:0}
@media (prefers-color-scheme:dark){.modesw button:not(.on){color:#dbe6ff}}
body.arranging .modesw{opacity:.45;pointer-events:none}
main.officehome>.bar:first-of-type .modesw{margin-right:8px}
