@font-face{font-family:Plex;src:url('assets/fonts/ibm-plex-sans-condensed-400.woff2')}@font-face{font-family:Plex;src:url('assets/fonts/ibm-plex-sans-condensed-600.woff2');font-weight:600}@font-face{font-family:Serif;src:url('assets/fonts/source-serif-4-400.woff2')}@font-face{font-family:Mono;src:url('assets/fonts/ibm-plex-mono-500.woff2');font-weight:500}
:root{font-family:Plex,Arial,sans-serif;font-size:18px;color:#171819;--red:#b52d27;--rule:#ccd0d3;--soft:#f3f4f5;--muted:#555d64;color-scheme:light}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:white}button,input,select{font:inherit;color:inherit}button{border:1px solid var(--rule);background:white;min-height:44px;padding:.5rem .9rem;cursor:pointer;font-weight:600;transition:background .12s,transform .12s}button:hover{background:#ebedef}button:active{transform:translateY(1px)}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,a:focus-visible{outline:3px solid #227ab0;outline-offset:3px}input,select{border:1px solid var(--rule);border-radius:0;background:white;padding:.55rem .65rem;min-height:44px}select{appearance:none;padding-right:2.6rem;background:white url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9'%3E%3Cpath d='m1 1 6 6 6-6' fill='none' stroke='%23171819' stroke-width='2'/%3E%3C/svg%3E") right 15px center/14px no-repeat}.primary{background:var(--red);border-color:var(--red);color:white}.primary:hover{background:#92241f}.dark{background:#202326;color:white;border-color:#202326}.dark:hover{background:#3a4045}.eyebrow{font:500 .66rem/1.4 Mono,monospace;letter-spacing:.09em;color:var(--muted)}h1,h2,h3{font-family:Serif,Georgia,serif;font-weight:400}h1{font-size:clamp(2rem,4vw,3.1rem);line-height:1.1;margin:.7rem 0 .6rem}h2{font-size:1.8rem;line-height:1.2;margin:0}p{line-height:1.5}.site-head{max-width:1440px;margin:auto;padding:1.2rem 2.5rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--rule)}.site-head img{display:block;width:46px;height:46px;object-fit:contain}.site-head a{display:flex;align-items:center;gap:.6rem;color:inherit;text-decoration:none;font-family:Serif,Georgia,serif;font-size:1rem;line-height:1.1}main{max-width:1440px;padding:2rem 2.5rem;margin:auto}.intro{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1.7rem}.intro p{margin-bottom:0}.text-button{padding:.3rem 0;border:0;border-bottom:1px solid var(--ink);text-decoration:underline;text-underline-offset:4px;background:transparent;font-weight:400;white-space:nowrap}.design-picker{padding:1.2rem 0 1.4rem;border-top:3px solid #171819}.designs{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin-top:.7rem}.design{display:flex;align-items:center;gap:1rem;text-align:left;padding:.8rem 1rem;min-height:90px;border-color:var(--rule)}.design.selected{outline:2px solid #171819;outline-offset:-2px;background:#f4f5f6}.design strong{display:block;font-size:1.15rem}.design small{display:block;color:var(--muted);font-size:.85rem;font-weight:400;margin-top:.15rem}.mini{display:flex;flex:none;width:72px;height:48px;gap:4px;align-items:center;justify-content:center}.mini i{font-style:normal}.panels-mini i{font:600 25px Plex;border-top:4px solid var(--red);padding:3px 5px;background:white}.panels-mini i+i{border-color:#275d7c}.race-mini{flex-direction:column;gap:8px}.race-mini i{width:100%;height:4px;background:#ddd;position:relative}.race-mini i:after{content:'';position:absolute;left:40%;top:-3px;width:10px;height:10px;background:var(--red);border-radius:50%}.race-mini i:nth-child(2):after{left:68%;background:#275d7c}.race-mini i:nth-child(3):after{left:20%;background:#75600e}.sheet-mini{flex-direction:column;gap:0;align-items:stretch;font:500 11px Mono}.sheet-mini i{padding:2px 5px;border-bottom:1px solid #bbb;word-spacing:10px}
.board{padding:1.4rem;background:#f4f5f6;border:1px solid var(--rule);position:relative}.board-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.1rem}.board-head .eyebrow{margin:0 0 .4rem}.board-head h2{overflow-wrap:anywhere}.head-actions{display:flex;gap:.6rem;flex:none}.head-actions button span{margin-left:.4rem}.play-controls{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1.2rem}.play-controls>button{margin-left:auto}.points{display:flex;align-items:center;gap:.8rem;font-size:.92rem}.segmented{display:flex}.segmented button{min-width:44px;border-right:0;padding:.35rem .6rem}.segmented button:last-child{border-right:1px solid var(--rule)}.segmented button[aria-pressed=true]{background:#25282b;color:white;border-color:#25282b}.play-controls label{font-size:.92rem;display:flex;align-items:center;gap:.4rem}.play-controls input{width:85px}.teams{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.teams[data-count="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}.teams[data-count="4"],.teams[data-count="5"],.teams[data-count="6"],.teams[data-count="7"],.teams[data-count="8"]{grid-template-columns:repeat(4,minmax(0,1fr))}.team{background:white;border:1px solid var(--rule);border-top:6px solid var(--team);min-width:0;padding:1.1rem 1.1rem .9rem;display:flex;flex-direction:column;align-items:center;position:relative}.team-head{display:flex;align-items:center;justify-content:center;gap:.55rem;width:100%;min-height:2rem}.team-head h3{font-family:Plex;font-size:1.4rem;font-weight:600;margin:0;overflow-wrap:anywhere;text-align:center;line-height:1.15}.team-index{font:500 .7rem Mono;color:var(--muted);border:1px solid var(--rule);padding:2px 5px;flex:none}.score{font:600 clamp(4rem,10vw,8rem)/1 Plex;letter-spacing:-.04em;margin:1.2rem 0 .15rem;font-variant-numeric:tabular-nums}.score.long-score{font-size:clamp(1.8rem,4vw,3.3rem)}.score-caption{font:500 .6rem Mono;letter-spacing:.12em;color:var(--muted);margin:0 0 .9rem}.round-note{color:var(--muted);font-size:.85rem;margin:0 0 .7rem;min-height:1.3rem}.score-controls{display:grid;grid-template-columns:1fr 2fr;gap:.55rem;width:100%;max-width:320px;margin-top:auto}.score-controls button{min-height:54px;font-size:1.35rem;font-weight:600}.score-controls .add{background:var(--team);border-color:var(--team);color:white}.score-controls .add:hover{filter:brightness(.9)}.team.bump .score{animation:pop .22s ease-out}.board-foot{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-top:1.2rem}.board-foot p{margin:0;font-size:.9rem;color:var(--muted)}.board-foot>div{display:flex;gap:.6rem;flex:none}.result{background:#fff;border-left:5px solid var(--red);padding:1rem 1.2rem;margin:0 0 1.1rem;display:grid;grid-template-columns:1fr auto;align-items:center}.result .eyebrow{grid-column:1}.result h3{font-size:1.7rem;margin:.2rem 0 0;overflow-wrap:anywhere}.result button{grid-column:2;grid-row:1/3}.under-board{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:1rem}.file-actions{display:flex;gap:.6rem}.under-board p{font-size:.88rem;color:var(--muted)}.help{margin-top:1.2rem;border-top:1px solid var(--rule);padding-top:1rem;color:var(--muted)}summary{cursor:pointer;font-weight:600}kbd{font:500 .75rem Mono;background:#eef0f2;border:1px solid #ccd0d3;padding:2px 5px}.help p{max-width:80ch;font-size:.9rem}.table-wrap{overflow:auto}#history{margin-top:1.2rem;border-top:1px solid var(--rule);padding-top:.9rem}table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums;background:white;margin-top:.8rem}th,td{padding:.6rem .8rem;border-bottom:1px solid var(--rule);text-align:right}th:first-child,td:first-child{text-align:left}footer{margin-top:2rem;font-size:.8rem;color:var(--muted)}#error{background:#fff0ec;border-left:4px solid var(--red);padding:1rem;margin-top:.8rem}.skip{position:absolute;left:-9999px}.skip:focus{left:10px;top:10px;background:white;padding:1rem;z-index:20}
/* Race lanes: horizontal distance represents a fixed goal, never rank. */
.board[data-style=race] .teams{display:flex;flex-direction:column;gap:.7rem}.board[data-style=race] .team{display:grid;grid-template-columns:minmax(130px,1.2fr) minmax(160px,3fr) 76px 138px;align-items:center;gap:1rem;border-top:1px solid var(--rule);border-left:6px solid var(--team);padding:.9rem 1.1rem}.board[data-style=race] .team-head{justify-content:start}.board[data-style=race] .team-head h3{text-align:left;font-size:1.2rem}.board[data-style=race] .score{font-size:2.7rem;margin:0;text-align:right}.board[data-style=race] .score.long-score{font-size:1.8rem}.board[data-style=race] .score-controls{grid-template-columns:1fr 1.4fr;gap:.35rem}.board[data-style=race] .score-controls button{font-size:1.1rem;min-height:44px;padding:.35rem}.track{height:16px;border-radius:8px;background:repeating-linear-gradient(90deg,#e2e5e8 0,#e2e5e8 calc(25% - 1px),#b7bdc2 calc(25% - 1px),#b7bdc2 25%);position:relative;margin:11px 12px 24px 0}.track-fill{height:100%;background:var(--team);border-radius:8px;opacity:.24;transition:width .3s ease}.runner{position:absolute;left:var(--progress);top:50%;transform:translate(-50%,-50%);width:27px;height:27px;border-radius:50%;background:var(--team);border:4px solid white;outline:1px solid var(--team);transition:left .3s ease}.track-labels{position:absolute;top:22px;left:0;right:0;display:flex;justify-content:space-between;font:500 .6rem Mono;color:var(--muted)}
/* Round sheet: stable rows expose current and accumulated scores. */
.board[data-style=sheet] .teams{display:flex;flex-direction:column;gap:0;background:white;border:1px solid var(--rule)}.sheet-head,.board[data-style=sheet] .team{display:grid;grid-template-columns:minmax(150px,2fr) 1fr 1fr 140px;gap:1rem;align-items:center;padding:.8rem 1rem}.sheet-head{font:500 .65rem Mono;letter-spacing:.05em;color:var(--muted);background:#e9ecee;text-transform:uppercase}.sheet-head span:not(:first-child){text-align:center}.board[data-style=sheet] .team{border:0;border-bottom:1px solid var(--rule);border-left:6px solid var(--team)}.board[data-style=sheet] .team:last-child{border-bottom:0}.board[data-style=sheet] .team-head{justify-content:start}.board[data-style=sheet] .team-head h3{text-align:left;font-size:1.2rem}.board[data-style=sheet] .score{font-size:2.3rem;margin:0;text-align:center}.sheet-round{font:400 2rem Plex;text-align:center;color:var(--muted)}.board[data-style=sheet] .score-controls{grid-template-columns:1fr 1.4fr;gap:.35rem}.board[data-style=sheet] .score-controls button{min-height:44px;font-size:1.15rem;padding:.3rem}
dialog{border:1px solid var(--rule);max-width:600px;width:calc(100% - 2rem);max-height:90dvh;padding:1.5rem;color:#171819}dialog::backdrop{background:#17181988}dialog label{display:block;font-weight:600;margin-top:1rem}dialog label input:not([type=checkbox]){display:block;width:100%;margin-top:.35rem}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}.dialog-head button{border:0;font-size:1.5rem}.settings-line{display:flex;gap:1rem;align-items:center}.settings-line label{flex:none}.settings-line select{display:block;width:100px;margin-top:.3rem}.settings-line p{font-size:.85rem;color:var(--muted);max-width:28ch}.team-field{display:grid;grid-template-columns:1fr 115px;gap:1rem;align-items:end}.team-field input{border-left:5px solid var(--team)}.team-field select{width:100%}.team-field label{font-size:.9rem}.extra{margin-top:1.3rem;padding-top:1rem;border-top:1px solid var(--rule)}.check{display:flex;align-items:center;gap:.6rem;font-weight:400}.check input{width:20px;height:20px;accent-color:var(--red)}.hint{font-size:.85rem;color:var(--muted)}.dialog-actions{display:flex;justify-content:space-between;gap:1rem;margin-top:1.5rem}.dialog-actions button{flex:1}body.presenting{overflow:hidden}body.presenting .board{position:fixed;inset:0;z-index:10;overflow:auto;display:flex;flex-direction:column;min-height:100dvh;border:0;padding:1.5rem 2rem}body.presenting .board .teams{flex:1}body.presenting .board[data-style=panels] .score{font-size:clamp(4rem,15vh,12rem);margin:auto 0 .25rem}body.presenting .board[data-style=panels] .score.long-score{font-size:clamp(2rem,6vw,4rem)}body.presenting .board[data-style=panels] .team{justify-content:center}body.presenting .board[data-style=race] .teams,body.presenting .board[data-style=sheet] .teams{justify-content:center}body.presenting #history{display:none}body.presenting .head-actions #settings,body.presenting .head-actions #fullscreen{display:none}body.presenting .board-head h2{font-size:2rem}body.presenting .team-head h3{font-size:1.6rem}body.presenting .board[data-style=race] .team{min-height:90px}body.presenting .board[data-style=sheet] .team{min-height:80px}
@keyframes pop{50%{transform:scale(1.045)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}
@media(max-width:1000px){.design{gap:.6rem;padding:.7rem}.design small{font-size:.78rem}.mini{width:55px}.teams[data-count="4"],.teams[data-count="5"],.teams[data-count="6"],.teams[data-count="7"],.teams[data-count="8"]{grid-template-columns:repeat(2,minmax(0,1fr))}.board-head{align-items:start}.board-head h2{font-size:1.55rem}.head-actions{gap:.4rem}.head-actions button{font-size:.9rem;padding:.5rem}.team-head h3{font-size:1.25rem}.board[data-style=race] .team{grid-template-columns:minmax(100px,1fr) minmax(120px,2fr) 65px 110px;gap:.7rem}}
@media(max-width:650px){:root{font-size:17px}.site-head{padding:1rem}.site-head img{width:40px;height:40px}.site-head .eyebrow{font-size:.5rem}main{padding:1.4rem .8rem}.intro{display:block}.intro .text-button{margin-top:.7rem}.designs{gap:.4rem}.design{display:block;padding:.65rem .45rem;text-align:center;min-height:85px}.design strong{font-size:.9rem}.design small{display:none}.mini{margin:auto;width:52px;height:36px}.panels-mini i{font-size:19px}.sheet-mini{font-size:8px}.board{padding:.8rem}.board-head{flex-wrap:wrap;gap:.7rem}.head-actions{width:100%;justify-content:space-between}.play-controls{gap:.65rem;margin-bottom:.8rem}.points{gap:.5rem}.segmented button{min-width:37px}.play-controls>button{padding:.4rem .6rem}.teams{gap:.6rem}.teams[data-count="3"]{grid-template-columns:repeat(2,minmax(0,1fr))}.team{padding:.8rem .55rem .65rem}.team-head{flex-wrap:wrap;gap:.3rem}.team-head h3{font-size:1.15rem}.team-index{font-size:.6rem}.score{font-size:4.7rem}.score.long-score{font-size:2.7rem}.round-note{font-size:.75rem}.score-controls{gap:.35rem}.score-controls button{min-height:46px;padding:.3rem;font-size:1.2rem}.board-foot{display:block}.board-foot>div{margin-top:.7rem;justify-content:space-between}.under-board{display:block}.under-board p{margin:.7rem 0}.file-actions button{flex:1}.board[data-style=race] .team{grid-template-columns:1fr 60px 115px;gap:.6rem}.board[data-style=race] .team-head{justify-content:start}.board[data-style=race] .team-head h3{font-size:1.15rem}.track{grid-row:2;grid-column:1/-1;margin-bottom:20px;margin-top:5px}.board[data-style=race] .score{font-size:2.4rem}.board[data-style=race] .score-controls{grid-column:3;grid-row:1}.sheet-head,.board[data-style=sheet] .team{grid-template-columns:minmax(76px,1fr) 43px 48px 90px;gap:.3rem;padding:.7rem .4rem}.sheet-head{font-size:.52rem;letter-spacing:0}.board[data-style=sheet] .team-head{gap:.2rem}.board[data-style=sheet] .team-head h3{font-size:1rem}.board[data-style=sheet] .score,.sheet-round{font-size:1.6rem}.board[data-style=sheet] .score.long-score{font-size:1rem}.board[data-style=sheet] .score-controls button{font-size:1rem;min-width:0}.result{display:block}.result button{margin-top:.6rem}.result h3{font-size:1.4rem}body.presenting .board{padding:.8rem}body.presenting .board-head h2{font-size:1.4rem}body.presenting .team-head h3{font-size:1.15rem}body.presenting .board[data-style=panels] .score{font-size:4.3rem}body.presenting .board[data-style=panels] .score.long-score{font-size:2rem}}

@media(min-width:1001px){body.presenting .board[data-style=race] .team{flex:1;max-height:165px;grid-template-columns:minmax(170px,1.2fr) minmax(160px,3fr) 100px 150px}body.presenting .board[data-style=race] .team-head h3{font-size:1.6rem}body.presenting .board[data-style=race] .score{font-size:4rem}body.presenting .board[data-style=race] .score.long-score{font-size:1.6rem}body.presenting .board[data-style=sheet] .teams{flex:0;margin:auto 0}body.presenting .board[data-style=sheet] .team{min-height:110px}body.presenting .board[data-style=sheet] .score{font-size:3.5rem}body.presenting .board[data-style=sheet] .score.long-score{font-size:2rem}}
#settings-error{color:#92241f;border-left:3px solid #b52d27;padding:.7rem;background:#fff0ec}

/* Miniatures have a fixed drawing area so their labels never wrap into the artwork. */
.design>span:last-child{min-width:0}.mini{overflow:hidden}.sheet-mini{display:block;word-spacing:normal}
/* A clear finish post sits beyond the scoring track, away from the final marker. */
.track{margin-right:34px}.track-labels{top:25px}

/* Projector sizing: keep the controls with the scores at common laptop heights. */
@media(min-width:760px){
 body.presenting .board{height:100dvh;min-height:0;padding:1rem 1.4rem;gap:0}
 body.presenting .board-head{margin-bottom:.65rem}body.presenting .board-head h2{font-size:1.6rem}
 body.presenting .play-controls{margin-bottom:.65rem}body.presenting .board-foot{margin-top:.65rem}
 body.presenting .board[data-style=panels] .teams{min-height:0;grid-template-rows:minmax(0,1fr)}
 body.presenting .board[data-style=panels] .teams[data-count="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}
 body.presenting .board[data-style=panels] .teams[data-count="4"],body.presenting .board[data-style=panels] .teams[data-count="5"],body.presenting .board[data-style=panels] .teams[data-count="6"],body.presenting .board[data-style=panels] .teams[data-count="7"],body.presenting .board[data-style=panels] .teams[data-count="8"]{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(0,1fr)}
 body.presenting .board[data-style=panels] .team{padding:.7rem;min-height:210px}
 body.presenting .board[data-style=panels] .score{font-size:clamp(3.2rem,12vh,8rem);margin:auto 0 .15rem}
 body.presenting .board[data-style=panels] .teams[data-count="5"] .score,body.presenting .board[data-style=panels] .teams[data-count="6"] .score,body.presenting .board[data-style=panels] .teams[data-count="7"] .score,body.presenting .board[data-style=panels] .teams[data-count="8"] .score{font-size:clamp(2.4rem,7vh,5rem)}
 body.presenting .board[data-style=panels] .score.long-score{font-size:clamp(1.5rem,3vw,3rem)}
 body.presenting .team-head h3{font-size:1.25rem}body.presenting .score-caption{margin-bottom:.3rem}body.presenting .round-note{margin-bottom:.3rem;min-height:0}
 body.presenting .score-controls button{min-height:48px}
 body.presenting .board[data-style=race] .team{min-height:65px;padding:.45rem .8rem}
 body.presenting .board[data-style=race] .team-head h3{font-size:1.3rem}
 body.presenting .board[data-style=race] .score{font-size:2.7rem}
 body.presenting .board[data-style=sheet] .team{min-height:65px}
}

/* A compact display chooser keeps the scoring controls near the top. */
.intro{margin-bottom:1rem}.intro h1{font-size:2.4rem}.intro p{margin-top:.35rem}
.design-picker{padding:.75rem 0;border-top:2px solid #171819;margin-bottom:.6rem}
.design-picker summary{font-size:1rem}.display-hint{float:right;font-size:.85rem;color:var(--muted);font-weight:400}
.designs{grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem}.design{flex-direction:column;align-items:start;gap:.5rem}.design small{font-size:.8rem}.mini{width:72px;height:48px;margin:0}
/* Cooperative scoring: one target, stable team contributions below. */
.class-progress{background:white;border:1px solid var(--rule);padding:1.2rem 1.5rem;margin-bottom:1rem;text-align:center}
.class-progress .eyebrow{margin:0}.class-value{font-size:1.4rem;color:var(--muted);font-variant-numeric:tabular-nums;line-height:1.1;margin:.5rem 0 1rem}
.class-value strong{font:600 clamp(3rem,7vw,5rem)/1 Plex;color:#171819}.class-bar{display:flex;height:28px;background:#e3e6e9;overflow:hidden}.class-bar>span{height:100%}.goal-message{margin:.7rem 0 0;font-size:1rem}
.board[data-style=class] .score{font-size:3rem;margin:.65rem 0 .1rem}.board[data-style=class] .team{padding:.75rem}.board[data-style=class] .score-caption{font-size:.6rem}.board[data-style=class] .team-head h3{font-size:1.15rem}
.board[data-style=class] .teams{grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem}
.board[data-style=class] .teams[data-count="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}
.board[data-style=class] .teams[data-count="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}
/* Recent rounds stay visible; the full history is available underneath. */
.sheet-head,.board[data-style=sheet] .team{grid-template-columns:minmax(120px,2fr) repeat(var(--recent),minmax(55px,.7fr)) minmax(65px,.9fr) minmax(65px,.9fr) 140px;gap:.7rem}
.past-round{text-align:center;font:400 1.5rem Plex;color:var(--muted)}.sheet-head .past-round{font:inherit}.sheet-round{font-weight:600;color:#171819;background:#f3f4f5;padding:.4rem 0}
.board[data-style=sheet] .score-controls button,.board[data-style=race] .score-controls button{min-height:48px}
.board.finished .score-controls{display:none}.board.finished .result h3{font-size:2rem}.board.finished .result{border:1px solid #171819;border-left:6px solid var(--red)}
@media(min-width:760px){body.presenting .board[data-style=class] .teams{flex:1;min-height:0}body.presenting .board[data-style=class] .class-progress{padding:.6rem 1.5rem;margin-bottom:.65rem}body.presenting .class-value{margin:.25rem 0 .5rem}body.presenting .class-value strong{font-size:3.5rem}body.presenting .board[data-style=class] .score{font-size:clamp(2rem,6vh,4rem);margin:auto 0 .2rem}body.presenting .board[data-style=class] .team{min-height:180px}body.presenting .board[data-style=sheet] .teams{margin:0;flex:1}body.presenting .board[data-style=sheet] .team{flex:1;max-height:135px;min-height:65px}}
@media(max-width:900px){.designs{grid-template-columns:repeat(2,minmax(0,1fr))}.design{flex-direction:row;align-items:center}.sheet-head,.board[data-style=sheet] .team{grid-template-columns:minmax(100px,1fr) 65px 65px 110px}.past-round{display:none}.board[data-style=sheet] .score{font-size:2rem}}
@media(max-width:650px){.design{display:flex;text-align:left;gap:.6rem;min-height:70px}.design .mini{width:44px;height:36px}.display-hint{font-size:.75rem}.intro h1{font-size:2rem}.board[data-style=class] .teams,.board[data-style=class] .teams[data-count="3"]{grid-template-columns:repeat(2,minmax(0,1fr))}.class-progress{padding:1rem}.class-value{font-size:1rem}.board[data-style=class] .score{font-size:2.7rem}.sheet-head,.board[data-style=sheet] .team{grid-template-columns:minmax(60px,1fr) 42px 45px 90px;gap:.25rem}.board[data-style=sheet] .score{font-size:1.6rem}}
/* Finish post is anchored to the exact target; the marker remains below the flag. */
.track{margin-right:24px}
.board[data-style=sheet] .score-controls,.board[data-style=race] .score-controls{margin-top:0}

@media(min-width:760px){
 body.presenting .board[data-style=class] .team{min-height:140px;padding:.5rem}
 body.presenting .board[data-style=class] .teams{grid-auto-rows:minmax(140px,1fr)}
 body.presenting .board[data-style=class]:is([data-count="5"],[data-count="6"],[data-count="7"],[data-count="8"]) .score-caption,
 body.presenting .board[data-style=class]:is([data-count="5"],[data-count="6"],[data-count="7"],[data-count="8"]) .round-note{display:none}
 body.presenting .board[data-style=class]:is([data-count="5"],[data-count="6"],[data-count="7"],[data-count="8"]) .score{font-size:2rem;margin:.2rem 0}
 body.presenting .board[data-style=class] .team-head h3{font-size:1rem}
}
@media(min-width:760px) and (max-height:800px){
 body.presenting .board[data-style=class] .class-progress{padding:.3rem 1rem}
 body.presenting .board[data-style=class] .class-progress .eyebrow{display:none}
 body.presenting .board[data-style=class] .class-value{margin:0 0 .3rem;font-size:1rem}
 body.presenting .board[data-style=class] .class-value strong{font-size:2.5rem}
 body.presenting .board[data-style=class] .class-bar{height:18px}
 body.presenting .board[data-style=class] .goal-message{margin:.3rem 0 0;font-size:.85rem}
}

/* The finish is part of the lane; the final point fills its checkered end cap. */
.track{margin-right:0;height:16px}.finish-zone{position:absolute;right:0;top:0;width:24px;height:16px;border-radius:0 8px 8px 0;background:conic-gradient(#69727a 25%,#f7f8f9 0 50%,#69727a 0 75%,#f7f8f9 0) 0 0/8px 8px}
.track-fill{position:relative;z-index:1;opacity:1;background:var(--team);border-radius:8px 0 0 8px}.track.complete .track-fill{border-radius:8px}.runner{z-index:2}.track.complete .runner{display:none}
/* Two reserved history slots keep the current-round and total columns stationary. */
@media(max-width:900px){.sheet-head,.board[data-style=sheet] .team{grid-template-columns:minmax(85px,1.3fr) 55px 65px 60px 110px}.past-round{display:block}.past-round:nth-child(2){display:none}}
@media(max-width:650px){.sheet-head,.board[data-style=sheet] .team{grid-template-columns:minmax(50px,1fr) 35px 40px 40px 78px;gap:.2rem}.past-round{font-size:1.2rem}.board[data-style=sheet] .team-index{display:none}.board[data-style=sheet] .score-controls{gap:.2rem}.board[data-style=sheet] .score-controls button{font-size:.85rem}.sheet-head{font-size:.48rem}}

/* Every point travels the same distance, including the checkered final point. */
.finish-zone{width:var(--finish-width)}.track{background:repeating-linear-gradient(90deg,#e2e5e8 0,#e2e5e8 calc(var(--tick) - 1px),#b7bdc2 calc(var(--tick) - 1px),#b7bdc2 var(--tick))}
.result-actions{display:flex;gap:.6rem;grid-column:2;grid-row:1/3}.result-actions button{white-space:nowrap}
@media(max-width:650px){.result-actions{flex-wrap:wrap;margin-top:.6rem}.result-actions button{margin-top:0}}

/* Brief, non-interactive celebration; clipped to the viewport, including fullscreen. */
.confetti-layer{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:30;contain:strict}
.confetti-layer i{position:absolute;display:block;opacity:0;will-change:transform,opacity}
.celebration-highlight{outline:3px solid #d7a539;outline-offset:-3px}

@media(prefers-reduced-motion:reduce){.confetti-layer{display:none}}

/* On phones, keep full team names above their compact score row. */
@media(max-width:480px){
 .board[data-style=sheet] .sheet-head{display:none}
 .board[data-style=sheet] .team{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 82px;gap:.4rem;padding:.8rem .5rem}
 .board[data-style=sheet] .team-head{grid-column:1/-1;justify-content:flex-start;text-align:left}
 .board[data-style=sheet] .team-head h3{font-size:1.05rem;overflow-wrap:anywhere}
 .board[data-style=sheet] [data-label]::before{content:attr(data-label);display:block;font:400 .6rem/1.4 Plex,Arial,sans-serif;color:var(--muted);margin-bottom:.2rem}
 .board[data-style=sheet] .score{margin:0;font-size:1.6rem}
 .board[data-style=sheet] .sheet-round{padding:.2rem 0}
}

.tool-feedback{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--rule)}.tool-feedback h2{font-size:1.5rem}a{color:inherit}body>div[data-scoreboard-background]{max-width:1440px;padding:0 2.5rem 2rem;margin:auto}.site-information{display:flex;gap:1rem;flex-wrap:wrap;margin-top:.6rem}body.presenting [data-scoreboard-background]{display:none}
