:root{color-scheme:dark;--bg:#0e121a;--panel:#1b2533;--border:#374357;--text:#f1f5fa;--muted:#b4c1d0;--gold:#f7d368;--active:#f4bd37;--blue:#5c98e5}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.45}
main{max-width:1680px;margin:0 auto;padding:16px 20px 28px}
button,input,select{font:inherit}
button{border:1px solid #55657a;background:#2b3749;color:var(--text);border-radius:8px;padding:7px 10px;min-height:35px;cursor:pointer}
button:disabled{opacity:.4;cursor:not-allowed}
button:not(:disabled):hover{filter:brightness(1.14)}
.primary{background:var(--gold);border-color:var(--gold);color:#1c2430;font-weight:750}
.danger{border-color:#b75555;color:#ffc4c4}
.warning{border-color:#a5853a;color:#fce39b}
input,select{background:#111c2a;color:var(--text);border:1px solid #62748a;padding:6px 8px;border-radius:7px;min-height:35px}
.top-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.identity{display:flex;align-items:baseline;gap:8px;white-space:nowrap}
.identity strong{font-size:1.2rem;letter-spacing:-.02em;color:var(--gold)}
.identity span{color:var(--muted);font-size:.8rem}
.pill{border:1px solid #778092;border-radius:999px;padding:5px 10px;font-size:.79rem;background:#303a47;white-space:nowrap}
.pill.ready{color:#b4ffd8;background:#1e4b3b;border-color:#488f6c}
.pill.waiting{color:#fff0b8;border-color:#978147}
.register-status{color:var(--gold);font-size:.86rem;min-height:1.25em;font-weight:700}
.main-actions{margin-left:auto}
.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:7px}
.count-label{white-space:nowrap;display:flex;align-items:center;gap:6px;font-size:.9rem;color:var(--muted)}
.count-label input{width:68px}
.message{background:#192535;border-left:3px solid #578ce0;border-radius:6px;padding:8px 12px;margin-bottom:12px;font-size:.89rem}
.cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.seat{min-width:0;position:relative;border:2px solid #45546b;border-radius:12px;background:var(--panel);padding:10px;transition:border-color .12s,background .12s}
.seat.active{border-color:var(--active);background:#443722;box-shadow:0 0 0 1px #cfa634aa}
.seat.queued{border-style:dashed;border-color:#71a4ec}
.seat.last{border-color:#7493c2}
.seat.registering{border-color:var(--gold);box-shadow:0 0 0 2px #f7d36855}
.seat-head{display:flex;align-items:center;justify-content:space-between;gap:4px;min-height:25px}
.seat-index{color:var(--muted);font-size:.79rem}
.seat-state{color:var(--gold);font-size:.75rem;white-space:nowrap;font-weight:700}
.name-input{display:block;border:1px solid transparent;background:none!important;padding:0 2px;margin:7px 0 3px -2px;width:100%;font-size:1.37rem;font-weight:780;line-height:1.38;letter-spacing:-.025em;color:var(--text);border-radius:3px;text-overflow:ellipsis}
.name-input:hover{background:#ffffff10!important}
.name-input:focus-visible{outline:2px solid var(--blue);background:#162233!important}
.scores{display:flex;gap:8px;align-items:baseline;justify-content:space-between;margin-bottom:6px}
.points{font-size:2.35rem;line-height:1.1;font-weight:820;font-variant-numeric:tabular-nums;white-space:nowrap}
.points small{font-size:.85rem;font-weight:500;color:var(--muted)}
.counts{display:flex;gap:8px;font-size:1.14rem;font-variant-numeric:tabular-nums;font-weight:780}
.counts .correct{color:#93f2b3}.counts .wrong{color:#ffb4b4}
.row-actions{display:flex;gap:5px;flex-wrap:wrap;align-items:center;margin-top:7px}
.row-actions button{font-size:.85rem;min-height:31px;padding:4px 7px;flex:1 1 55px}
.row-actions .point-add{background:#224936;border-color:#457b5d}
.row-actions .point-sub{background:#51343a;border-color:#80515b}
.row-actions .correct-action{color:#a6f2bd}
.row-actions .wrong-action{color:#ffb9b9}
.row-actions .register{flex-basis:100%;font-size:.78rem;border-color:#556f98}
.row-actions .register.active{background:#6a531b;color:#ffeeb5}
.footnote{color:var(--muted);font-size:.8rem;margin:14px 0}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
dialog{color:var(--text);background:#172131;border:1px solid #576a81;border-radius:14px;box-shadow:0 24px 80px #000a;width:min(1040px,96vw);max-height:min(90vh,1100px);padding:0}
dialog::backdrop{background:#000b;backdrop-filter:blur(3px)}
.modal-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 20px;border-bottom:1px solid var(--border);position:sticky;top:0;background:#1c293b;z-index:2}
.modal-heading h2{font-size:1.16rem;margin:0}.modal-body{padding:6px 20px 20px;max-height:calc(90vh - 60px);overflow:auto}
.modal-section{padding:14px 0;border-bottom:1px solid var(--border)}
.modal-section h3{font-size:1rem;margin:0 0 12px}
.modal-section .toolbar{margin:8px 0}
.modal-section .toolbar label{font-size:.82rem;color:var(--muted);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.modal-section input[type=number]{max-width:92px}.modal-section input.mask{font-family:ui-monospace,Consolas,monospace;width:205px;letter-spacing:.04em}
.modal-section .grow{flex:1 1 360px}.modal-section .grow input{flex:1 1 240px;min-width:0}
.note{color:var(--muted);font-size:.8rem;margin:8px 0}
.wless-only{display:contents}
#serial-log{max-height:210px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:#101925;border:1px solid #344052;border-radius:7px;padding:10px;font-size:.78rem;color:#d7f4df}
.danger-zone{border:0}
@media(max-width:1199px){.cards{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:940px){.cards{grid-template-columns:repeat(3,minmax(0,1fr))}.main-actions{margin-left:0}}
@media(max-width:660px){main{padding:10px}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.seat{padding:8px}.points{font-size:1.9rem}.name-input{font-size:1.15rem}.counts{font-size:.98rem}.modal-body{padding:5px 12px 12px}.top-tools{gap:7px}}
@media(max-width:390px){.cards{grid-template-columns:1fr}.seat{padding:12px}}

[hidden]{display:none!important}

/* Frequent Basic actions stay in the scoreboard toolbar, not the hardware dialog. */
.rule-label,.rule-penalty{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:.88rem;white-space:nowrap}
.rule-label select{max-width:236px;font-size:.85rem;min-height:35px}
.rule-penalty input{width:72px;font-variant-numeric:tabular-nums}
#undo{font-weight:750;border-color:#9f915e;color:var(--gold)}
#undo:not(:disabled):hover{background:#635127}
@media(max-width:660px){.rule-label select{max-width:190px}.main-actions{gap:6px}}
