@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&family=VT323&display=swap');

/* A 16-bit stadium scoreboard: square edges, team colors, pixel lettering. */
.site-header,.workspace,.site-footer{max-width:1814px}
.workspace{grid-template-columns:minmax(0,1fr) 500px;gap:44px;padding-top:36px}
.clock-body{padding-top:30px;padding-bottom:30px}
.clock{font:400 clamp(46px,4.8vw,56px)/1 'Press Start 2P',monospace;letter-spacing:0}
.timer-ring{position:relative;width:min(100%,360px);aspect-ratio:1;margin:0 auto}
.timer-ring-graphic{position:absolute;inset:0;width:100%;height:100%;overflow:visible;transform:rotate(-90deg)}
.timer-ring-track,.timer-ring-progress{fill:none;stroke-width:3.5;stroke-linecap:butt;stroke-dasharray:2.6 1.5666667;shape-rendering:crispEdges}
.timer-ring-track{stroke:#c7d9ee}
.timer-ring-progress{stroke:#101d43}
#timer-ring-mask{transition:none}
.timer-ring .clock{position:absolute;inset:9%;width:82%;height:82%;padding:0;display:flex;align-items:center;justify-content:center}
.timer-ring .clock.long-time{font-size:clamp(30px,3.4vw,38px);letter-spacing:0}
.timer-card.finished .timer-ring-progress{stroke:#101d43}
.timer-card:fullscreen .clock{font-size:clamp(54px,8vw,110px);letter-spacing:0}
.timer-card:fullscreen .clock.long-time{font-size:clamp(38px,6vw,72px);letter-spacing:0}
.timer-controls{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0}
.objectives-panel{margin-bottom:22px;padding:25px 27px 28px;background:#fff;border:1px solid #c7d9ee;border-top:5px solid #ffe35b;border-radius:16px;box-shadow:0 7px 24px #101d4308}
.objectives-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:20px}
.objectives-heading h2{font:18px/1.55 'Press Start 2P',monospace;margin:8px 0 0;background:#ffe35b;letter-spacing:0}
.objectives-edit{flex:none;border:1px solid #aec9e9;background:#f3f8ff;color:#245da8;border-radius:7px;padding:8px 12px;font-size:11px;font-weight:700}
.objectives-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.objectives-grid article{min-width:0;min-height:220px;padding:25px 27px;background:#eaf3ff;border:1px solid #c7d9ee;border-radius:10px}
.class-chip{display:inline-block;padding:10px 14px;background:#101d43;color:#ffe35b;border-radius:5px;font:15px/1 'Press Start 2P',monospace;letter-spacing:.3px}
.objective-text{margin:18px 0 0;color:#101d43;font:600 31px/1.4 'DM Sans',sans-serif;white-space:pre-wrap;overflow-wrap:anywhere}
.objective-text.empty{color:#61728e;font-weight:400;font-style:italic}
.objectives-dialog{width:690px}
.objectives-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.objectives-fields label>span{display:block;margin-bottom:7px;color:#245da8;font-size:12px;font-weight:700}
.objectives-fields textarea{width:100%;resize:vertical;border:1px solid #aec9e9;border-radius:8px;padding:12px;color:#101d43;background:#fff;font:13px/1.5 'DM Sans',sans-serif}
.leaderboard{--board:#101d43;--board-deep:#09122d;--board-line:#344a7d;--board-gold:#ffe35b;background:var(--board);color:#fff;border:4px solid var(--board-gold);border-radius:0;box-shadow:6px 6px 0 #101d43;position:relative;overflow:visible;font-family:'VT323',monospace}
.leaderboard::before{content:'';position:absolute;inset:4px;pointer-events:none;border:1px solid #6876a1}
.leaderboard-heading{padding:23px 20px 18px;text-align:center;background:var(--board-deep);border-bottom:4px solid var(--board-gold)}
.leaderboard-heading .eyebrow{font-family:'Press Start 2P',monospace;font-size:9px;line-height:1.8;letter-spacing:1px;color:#b7c9ed}
.leaderboard-heading h2{font-family:'Press Start 2P',monospace;font-size:31px;line-height:1.5;letter-spacing:0;margin:14px 0 11px;color:var(--board-gold);text-shadow:3px 3px 0 #84613c}
.leaderboard-heading h2 span{font-size:16px;line-height:1.8;color:#fff;text-shadow:2px 2px 0 #536389}
.test-label{font:21px/1 'VT323',monospace;letter-spacing:.8px;display:flex;justify-content:center;gap:10px;margin:0 auto;padding:8px 12px;color:var(--board-gold);border:1px solid #52658c;border-radius:0;background:#192853;width:fit-content}
.test-label>span{color:#9badd3!important}
.table-head{display:grid;grid-template-columns:42px minmax(0,1fr) 62px;gap:10px;padding:13px 18px 10px;background:#23365f;border:0;border-bottom:2px solid var(--board-line);font:19px/1 'VT323',monospace;letter-spacing:1px;color:#c6d5ee}
.table-head span:last-child{text-align:right}
.leaderboard-list{padding:0 12px;counter-reset:rank}
.leaderboard-list li{grid-template-columns:42px minmax(0,1fr) 62px;gap:10px;min-height:64px;padding:8px 6px;border-bottom:2px solid #293b66;background:transparent}
.leaderboard-list li:nth-child(even){background:#14234a}
.leaderboard-list li:first-child.filled{background:#254779;border-radius:0;box-shadow:inset 4px 0 0 var(--board-gold)}
.rank,.filled:nth-child(-n+3) .rank{font:38px/1 'VT323',monospace;color:var(--board-gold);font-variant-numeric:tabular-nums;text-shadow:2px 2px 0 #664a2c}
.student,.empty .student,.empty:first-child .student{font:31px/1.02 'VT323',monospace;letter-spacing:.3px;text-transform:uppercase;color:#fff;text-shadow:2px 2px 0 #080e22;overflow-wrap:anywhere}
.graduation{font:21px/1.1 'VT323',monospace;letter-spacing:.7px;color:#b6cbf5;margin-top:5px;text-shadow:none}
.score,.empty .score{font:44px/1 'VT323',monospace;letter-spacing:0;color:#fff56e;text-shadow:2px 2px 0 #84613c;font-variant-numeric:tabular-nums}
.empty .student,.empty:first-child .student{color:#a8bcdf;font-size:25px}
.empty .score{color:#8199c3;text-shadow:none}
.leaderboard-footer{padding:16px 18px 19px;background:var(--board-deep);border-top:2px solid var(--board-line)}
.leaderboard-footer p{font:19px/1.2 'VT323',monospace;color:#b6c7e4;margin-bottom:14px}
.leaderboard .edit-button{font:20px/1.2 'VT323',monospace;letter-spacing:.6px;text-transform:uppercase;color:#101d43;background:var(--board-gold);border:2px solid #fff5ae;border-radius:0;box-shadow:3px 3px 0 #806138;padding:9px}
.leaderboard .edit-button:hover{background:#fff1a0;filter:none}
.leaderboard .signout{font:18px/1.2 'VT323',monospace;color:#c6d5ee}
.leaderboard a:focus-visible,.leaderboard button:focus-visible{outline-color:#fff;outline-offset:5px}
@media(min-width:1400px){.timer-card:not(:fullscreen) .clock-body{display:grid;grid-template-columns:minmax(360px,460px) minmax(250px,1fr);align-items:center;gap:34px;padding:30px 42px}.timer-card:not(:fullscreen) .timer-ring{width:min(100%,460px)}.timer-card:not(:fullscreen) .clock{font-size:68px}.timer-card:not(:fullscreen) .clock.long-time{font-size:44px}.timer-card:not(:fullscreen) .clock-hint{margin-top:0}.timer-card:not(:fullscreen) .presets{max-width:360px}}
@media(min-width:1550px){.workspace{padding-top:45px}.clock-body{padding-top:34px;padding-bottom:34px}}
@media(max-width:1150px){.workspace{grid-template-columns:minmax(0,1fr) 360px;gap:26px;padding-left:28px;padding-right:28px}.clock{font-size:clamp(80px,11.5vw,160px)}.leaderboard-heading{padding-left:12px;padding-right:12px}.leaderboard-heading h2 span{font-size:14px}.leaderboard-heading .eyebrow{font-size:8px}.student{font-size:26px}.rank{font-size:32px}.score{font-size:38px}.table-head,.leaderboard-list li{grid-template-columns:36px minmax(0,1fr) 54px;gap:7px}}
@media(max-width:850px){.workspace{grid-template-columns:1fr;padding:26px 22px;gap:18px}.clock{font-size:clamp(38px,10vw,54px)}.clock-body{padding-top:36px;padding-bottom:36px}.leaderboard{width:100%;max-width:560px;justify-self:center}.below-timer{margin-bottom:12px}.student{font-size:30px}.leaderboard-list li{min-height:65px}.leaderboard-heading h2 span{font-size:16px}}
@media(max-width:650px){.objectives-grid,.objectives-fields{grid-template-columns:1fr}.objectives-heading{align-items:flex-start}.objectives-heading h2{font-size:14px}.objectives-panel{padding:20px}.objectives-grid article{min-height:165px;padding:20px}.objective-text{font-size:22px}}
@media(max-width:420px){.workspace{padding:24px 14px}.leaderboard-heading .eyebrow{font-size:8px;letter-spacing:.2px}.leaderboard-heading h2 span{font-size:14px}.table-head,.leaderboard-list li{grid-template-columns:32px minmax(0,1fr) 51px;gap:7px}.table-head{font-size:17px}.student{font-size:26px}.empty .student{font-size:23px}.score,.empty .score{font-size:35px}.rank{font-size:30px}.leaderboard-list{padding:0 9px}.leaderboard-heading{padding-top:20px}}

/* Teacher editor ranking controls. */
.board-dialog{width:700px}
.editor-head,.editor-row{grid-template-columns:78px minmax(0,1fr) 100px 75px 28px;gap:8px;align-items:center}
.editor-row{position:relative;padding:5px;border:1px solid transparent;border-radius:9px;transition:background .12s,border-color .12s,opacity .12s}
.editor-row.dragging{opacity:.48;background:#e7f1ff;border-color:#78a3d6}
.editor-row.drop-before::before,.editor-row.drop-after::after{content:'';position:absolute;left:4px;right:4px;height:3px;border-radius:3px;background:#245da8}
.editor-row.drop-before::before{top:-5px}.editor-row.drop-after::after{bottom:-5px}
.rank-controls{display:grid;grid-template-columns:25px 25px 20px;gap:3px;align-items:center}
.editor-rank{font:700 13px/1 Manrope,sans-serif;text-align:center;color:#245da8;font-variant-numeric:tabular-nums}
.drag-handle,.rank-arrow{min-width:0;border:1px solid #aec9e9;background:#f3f8ff;color:#284d7c;border-radius:6px;padding:0}
.drag-handle{grid-column:2;height:38px;font-size:22px;line-height:1;cursor:grab;touch-action:none;user-select:none}
.drag-handle:active{cursor:grabbing}
.rank-arrows{grid-column:3;display:grid;gap:2px}
.rank-arrow{height:18px;font-size:10px;line-height:1}
.rank-arrow:disabled{opacity:.3;cursor:default}
.history-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:14px;border-top:1px solid #c7d9ee;color:#526889;font:11px/1.4 'DM Sans',sans-serif}
.history-download{flex:none;color:#245da8;font-weight:700;text-decoration:underline;text-underline-offset:3px}
@media(max-width:650px){.board-dialog{padding:18px}.editor-head,.editor-row{grid-template-columns:68px minmax(0,1fr) 78px 62px 24px;gap:5px}.editor-head{font-size:8px}.editor-row input{padding:8px 5px}.rank-controls{grid-template-columns:21px 23px 18px}.drag-handle{height:36px}.editor-rank{font-size:11px}}
