:root{--gap:16px;--edge:24px;--card:112px;--dock:204px}
*{box-sizing:border-box}
body{margin:0;background:#fff;color:#000;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased}
button,input{font:inherit;color:inherit;background:#fff;border:1px solid #000;border-radius:0}
button{cursor:pointer;padding:10px 20px;touch-action:manipulation}
button:disabled{cursor:default;opacity:.35}
button:focus-visible{outline:2px solid #000;outline-offset:3px}
[hidden]{display:none!important}
.student-view{width:min(100%,720px);margin:clamp(48px,24vh,240px) auto 0;padding:24px}
.score-options{display:grid;grid-template-columns:repeat(11,minmax(0,1fr));border-left:1px solid #000}
.score-option{height:64px;padding:0;border-left:0;font-size:20px}
.score-option[aria-checked=true]{background:#000;color:#fff}
.ballot-bottom{display:flex;align-items:stretch;gap:24px;margin-top:24px}
#student-name{appearance:none;-webkit-appearance:none;min-width:0;flex:1;padding:10px 0;border:0;border-bottom:1px solid #000;box-shadow:none;background:transparent}
#student-name:focus{outline:none}
#vote-button{width:112px;flex:none;padding:10px}
.student-view.submitting button:disabled{opacity:1}
.admin-view{width:100%;height:calc(100dvh - var(--dock));overflow-y:auto;padding:var(--edge);scrollbar-gutter:stable}
.slots,.captures{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--card),1fr));gap:var(--gap);align-items:start}
.slot,.capture{position:relative;height:112px;min-width:0;padding:12px;border:1px solid #d0d0d0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:20px minmax(0,1fr) 20px;align-items:center}
.slot.voted,.capture{border-color:#000}
.slot-name,.capture-index{grid-row:1;line-height:20px;font-size:12px;height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.slot strong,.capture strong{grid-row:2;width:100%;margin:0;text-align:center;font-size:36px;line-height:1;font-weight:400;font-variant-numeric:tabular-nums}
.capture-index{padding-right:24px}
.remove-capture{position:absolute;right:4px;top:4px;width:36px;height:36px;padding:0;border:0;font-size:20px;line-height:1}
#archive{margin-top:32px}
.text-button{border:0;font-size:13px;line-height:24px;padding:4px 0}
#clear-captures-button{display:block;margin:8px 0 0 auto;min-height:36px}
.total-row{position:fixed;right:var(--edge);bottom:12px;display:flex;flex-direction:column;align-items:stretch;width:128px;gap:4px;background:#fff;z-index:2}
#client-count{order:-1;text-align:center;font-size:13px;line-height:24px;font-variant-numeric:tabular-nums}
#capture-button{order:0;width:100%;height:112px;padding:12px;display:grid;place-items:center}
#capture-button:disabled{opacity:1}
#capture-button strong{font-size:44px;font-weight:400;line-height:1;text-align:center;font-variant-numeric:tabular-nums}
#reset-button{width:100%;text-align:center}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#000;color:#fff;padding:10px 16px;font-size:13px;max-width:90vw}
@media(max-width:600px){
 :root{--edge:16px;--gap:12px;--card:88px;--dock:188px}
 .student-view{padding:16px;margin-top:18vh}
 .score-options{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;border:0}
 .score-option{height:48px;border:1px solid #000}
 .ballot-bottom{gap:16px}
 .slot,.capture{height:104px;padding:10px}
 .slot strong,.capture strong{font-size:32px}
 .capture strong{font-size:28px}
 .total-row{width:112px}
 #capture-button{height:96px}
 #capture-button strong{font-size:40px}
}
@media(max-height:500px){
 :root{--dock:148px}
 .total-row{bottom:8px;gap:0}
 #capture-button{height:64px}
 #capture-button strong{font-size:36px}
 .student-view{margin-top:16px}
}

.admin-view::after{content:"";position:fixed;inset:auto 0 0;height:var(--dock);background:#fff;border-top:1px solid #d0d0d0;pointer-events:none;z-index:1}
.total-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;min-height:32px}
.total-actions .text-button{width:100%;text-align:center}
#undo-button[hidden]{display:block!important;visibility:hidden;pointer-events:none}
