:root{font-family:Arial,Helvetica,sans-serif;color:#f6f3fa;background:#141020;font-synthesis:none;--muted:#b7adc7;--accent:#ffcf24;--line:#463750}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 75% 0,#352147 0,transparent 50%),#141020;min-height:100vh}button,input,select{font:inherit}a{color:inherit;text-decoration:none}header{height:100px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 4.2%}.brand{display:flex;align-items:center;gap:14px;font-size:23px;font-weight:900;letter-spacing:2px}.brand-logo{display:block;flex-shrink:0;width:110px;height:64px;object-fit:contain;object-position:center;border-radius:0;background:transparent}.brand small{display:block;font-size:8px;letter-spacing:2.7px;margin-top:5px;color:var(--muted)}.header-right{display:flex;gap:25px;align-items:center}.status{color:#92ddbb;font-size:12px}.edition{font-size:10px;letter-spacing:2px;color:var(--muted)}main{padding:45px 4.2% 40px;max-width:1800px;margin:auto}h1{font-size:clamp(34px,3.5vw,60px);letter-spacing:-2px;line-height:1.08;margin:14px 0 16px}h1 em{font-style:normal;color:var(--accent)}h2{font-size:23px;letter-spacing:-.6px;margin:12px 0}p{font-size:14px;line-height:1.7;color:var(--muted)}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2.2px;color:var(--accent)}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.page-heading p{margin-bottom:0}.event-number{font-size:72px;font-weight:900;letter-spacing:-5px;color:#473554;text-align:right}.event-number small{display:block;font-size:9px;letter-spacing:1.7px;color:var(--muted)}.desktop-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:25px}.panel{padding:26px;background:#241a35;border:1px solid #49395b;border-radius:16px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:24px}.section-heading h2{margin:0}.section-heading h2 span{margin-left:12px;font-size:13px;color:var(--muted);font-weight:400}.pulse-label{font-size:9px;color:#92ddbb;letter-spacing:1.6px}.pulse-label:before{content:'●';margin-right:8px}.roster-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.player{display:flex;align-items:center;gap:10px;border:1px solid #49395b;background:#2b203d;border-radius:10px;padding:12px;min-width:0}.avatar{background:color-mix(in srgb,var(--player) 17%,#21182f);color:var(--player);border:1px solid color-mix(in srgb,var(--player) 35%,#21182f);width:38px;height:38px;flex-shrink:0;display:grid;place-items:center;font-weight:800;border-radius:12px}.player strong{font-size:13px;display:block;max-width:105px;overflow:hidden;text-overflow:ellipsis}.player small{font-size:7px;letter-spacing:1px;display:block;color:var(--muted);margin-top:6px}.player b{font-size:10px;color:#9d8eaf;margin-left:auto}.dot{width:5px;height:5px;background:#e6a657;border-radius:50%;margin-left:auto}.dot.live{background:#86d9b3}.empty-slot{border:1px dashed #5c486e;border-radius:10px;color:#a99aba;font-size:11px;display:flex;gap:14px;align-items:center;padding:17px}.empty-slot span{font-size:23px}.qr-panel{text-align:center}.qr-panel img{display:block;width:210px;max-width:100%;margin:23px auto 16px;border-radius:12px}.join-url{font-size:11px;overflow-wrap:anywhere}.qr-panel p{font-size:12px}.wifi-note{margin-top:24px;border-top:1px solid var(--line);padding-top:22px;font-size:9px;letter-spacing:1.2px;color:var(--muted)}.event-strip{display:flex;gap:18px;align-items:center;background:#2c203d;border:1px solid #4c3a5c;border-radius:14px;padding:22px;margin-top:22px}.event-strip h2{font-size:20px;margin:7px 0}.event-strip p{font-size:12px;margin:0}.event-icon{color:var(--accent);font-size:40px}.pill{margin-left:auto;font-size:8px;letter-spacing:1px;background:#493659;padding:10px;border-radius:30px;white-space:nowrap}.upcoming{padding:28px 8px}.upcoming .eyebrow{color:#a797b8}.upcoming p{font-size:11px;margin:14px 0;color:#ac9cbe}.upcoming p span{float:right;font-size:7px;color:var(--accent);padding-top:4px}footer{display:flex;justify-content:space-between;padding:25px 4.2%;border-top:1px solid var(--line);font-size:8px;font-weight:700;letter-spacing:2px;color:#a393b3}.join-hero{max-width:470px;margin:20px auto}.join-hero h1{font-size:64px}.join-hero p{font-size:16px}.join-hero form{margin:30px 0}.join-hero form small{display:block;text-align:center;color:var(--muted);font-size:10px;margin-top:18px}label{display:block;font-size:12px;color:#e2d9ed;font-weight:bold}input,select{width:100%;padding:15px;border:1px solid #665277;border-radius:9px;background:#1a1228;color:white;margin:10px 0 18px;outline:none}input:focus,select:focus{border-color:var(--accent)}button{background:var(--accent);border:0;border-radius:9px;color:#22152e;padding:16px 18px;font-size:13px;font-weight:800;cursor:pointer;width:100%;transition:filter .15s}button:hover{filter:brightness(1.08)}button:disabled{opacity:.4;cursor:default}button.secondary{background:#49335e;color:#f6f2fc;margin-top:12px}button.quiet{background:transparent;color:#c3b4d4;font-size:11px;margin-top:5px}.rules{margin-top:24px;border-top:1px solid var(--line);padding-top:24px;font-size:12px}.rules p{font-size:12px}.tag{font-size:10px;letter-spacing:1px;color:var(--muted)}.tag b{color:var(--accent);margin-left:16px}.phone-home{max-width:550px;margin:auto}.phone-title{display:flex;justify-content:space-between;align-items:center}.phone-title h1{font-size:44px}.score{font-size:44px;font-weight:900;color:var(--accent);text-align:center}.score small{display:block;font-size:9px;letter-spacing:2px;margin-top:4px}.mini-roster{margin-top:25px;display:grid;gap:9px;grid-template-columns:1fr 1fr}.mini-roster .player{padding:9px}.mini-roster .player b,.mini-roster .dot{display:none}.pick{display:flex;justify-content:space-between;margin-top:10px;background:#39294b;color:white;text-align:left}.pick span{font-size:9px;align-self:center;color:var(--muted)}.pick.selected{background:var(--accent);color:#141020}.pick.selected span{color:#141020}.game-phone{text-align:center}#pad{height:270px;position:relative;display:grid;place-items:center;touch-action:none;user-select:none;-webkit-user-select:none;background:radial-gradient(circle,#3d2b52,transparent 65%);border-radius:20px;margin:20px 0}.pad-ring{width:190px;height:190px;border:1px solid #947aa8;border-radius:50%;position:absolute;box-shadow:0 0 0 22px #654c8055}#stick{display:grid;place-items:center;position:absolute;width:85px;height:85px;border-radius:50%;background:var(--accent);color:#24162f;font-size:44px;box-shadow:0 8px 24px #0005;pointer-events:none}.pad-label{position:absolute;bottom:7px;font-size:9px;letter-spacing:2px;color:var(--muted)}.arena-panel{border:1px solid #624975;border-radius:15px;overflow:hidden;background:#1d152d}.arena-top,.arena-bottom{display:flex;justify-content:space-between;padding:16px 20px;font-size:11px;letter-spacing:1px}.arena-top{color:var(--accent)}.arena-top b{font-size:18px;color:white}.arena-bottom{gap:15px;flex-wrap:wrap;color:#d7c9e5;font-size:10px}#rink-slot{aspect-ratio:16/9}#rink{height:100%;width:100%}#rink canvas{display:block}.standing{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #4a385b;font-size:12px}.standing strong{flex:1}.standing>span:not(.avatar):not(.rank){font-size:10px;color:var(--muted)}.standing b{color:var(--accent);white-space:nowrap}.standing b small{font-size:8px;color:var(--muted)}.rank{width:20px;color:var(--muted);font-weight:bold}.small{width:28px;height:28px;font-size:12px;border-radius:8px}.results{margin-top:20px}#notice{position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(150px);background:#ffdf71;color:#2a1838;padding:17px 24px;border-radius:12px;max-width:90vw;z-index:100;transition:transform .2s;font-size:13px;box-shadow:0 10px 40px #0005}#notice.show{transform:translateX(-50%)}
@media(min-width:1600px){.desktop-grid{grid-template-columns:minmax(0,1fr) 360px}.qr-panel img{width:250px}.player{padding:17px}.player strong{font-size:15px}}
@media(max-width:1100px){.roster-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.desktop-grid{grid-template-columns:minmax(0,1fr) 280px}.pill{display:none}}
@media(max-width:720px){header{height:80px;padding:0 6%}.brand{font-size:18px;gap:10px}.brand-logo{width:72px;height:42px}.brand{font-size:16px}.brand small{letter-spacing:1.5px}.brand small{font-size:6px;letter-spacing:2px}.edition{display:none}.status{font-size:10px}main{padding:30px 6%}.desktop-grid{grid-template-columns:1fr}.page-heading .event-number{display:none}.page-heading h1{font-size:40px}.panel{padding:22px}.join-hero{margin-top:5px}.join-hero h1{font-size:58px}.roster-grid{grid-template-columns:1fr 1fr}.section-heading{align-items:flex-start}.section-heading h2{font-size:19px}.section-heading h2 span{display:block;margin:8px 0}.section-heading .pulse-label{font-size:7px}.upcoming{display:none}.phone-title h1{font-size:40px}.mini-roster{grid-template-columns:1fr 1fr}.mini-roster .player strong{max-width:85px}.mini-roster .avatar{width:28px;height:30px;border-radius:8px}.mini-roster .player small{font-size:6px}footer{padding:22px 6%;font-size:7px}.standing{gap:8px}.standing>span:not(.avatar):not(.rank){font-size:9px}}

/* Projector devotes its complete viewport to the rink until the heat ends. */
body.projector-playing{overflow:hidden;background:#141020}
.projector-playing header,.projector-playing footer,.projector-playing .page-heading,
.projector-playing aside,.projector-playing .event-strip,.projector-playing .arena-bottom{display:none}
.projector-playing main{padding:0;max-width:none}
.projector-playing .arena-panel{position:fixed;inset:0;border:0;border-radius:0;background:#141020}
.projector-playing #rink-slot{position:absolute;inset:0;aspect-ratio:auto}
.projector-playing .arena-top{position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:2;gap:28px;align-items:center;border-radius:30px;padding:9px 20px;background:#20132feb;pointer-events:none}
/* The whole remaining phone screen is a floating joystick, not just its ring. */
body.phone-playing{overflow:hidden;overscroll-behavior:none;touch-action:none}
.phone-playing header{height:65px}
.phone-playing footer,.phone-playing .phone-home>.eyebrow,.phone-playing .phone-title{display:none}
.phone-playing main{position:fixed;inset:65px 0 0;padding:0;max-width:none}
.phone-playing .phone-home{height:100%;max-width:none}
.phone-playing .game-phone{height:100%;position:relative;border:0;border-radius:0;padding:16px 0 0;display:flex;flex-direction:column}
.phone-playing .game-phone h2{font-size:24px;margin:10px 0 0;pointer-events:none}
.phone-playing .game-phone>.eyebrow{pointer-events:none}
.phone-playing .game-phone>p{position:absolute;bottom:calc(12px + env(safe-area-inset-bottom));left:12px;right:12px;pointer-events:none;font-size:11px}
.phone-playing #pad{flex:1;width:100%;height:auto;min-height:160px;margin:0;border-radius:0;overflow:visible;touch-action:none;cursor:grab}
.phone-playing #pad.pressed{cursor:grabbing}
.phone-playing .pad-ring{width:220px;height:220px;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none}
.phone-playing #stick{left:50%;top:50%;transform:translate(-50%,-50%);width:90px;height:90px;pointer-events:none;will-change:transform}
.phone-playing .pad-label{bottom:calc(60px + env(safe-area-inset-bottom));left:10px;right:10px;font-size:9px;pointer-events:none}
.phone-playing .clock{margin-left:16px;color:#fff}

.phone-timer{display:flex;align-items:center;justify-content:center;gap:14px;margin-bottom:18px;color:#d3c5e2}
.phone-timer>span{font-size:9px;letter-spacing:2px}
.phone-timer .clock{margin:0;color:#fff;font-size:28px;font-variant-numeric:tabular-nums}
.phone-countdown-active .phone-timer{flex-direction:column;gap:4px}
.phone-countdown-active .phone-timer .clock{font-size:80px;line-height:1.1;color:var(--accent)}
.phone-playing .phone-timer{position:absolute;right:18px;top:12px;margin:0;gap:8px;pointer-events:none}
.phone-playing .phone-timer>span{font-size:7px;max-width:65px;line-height:1.5}
.phone-playing .phone-timer .clock{font-size:24px}
.phone-playing.phone-countdown-active .phone-timer{z-index:3;top:32%;left:0;right:0;gap:5px}
.phone-playing.phone-countdown-active .phone-timer>span{font-size:11px;max-width:none}
.phone-playing.phone-countdown-active .phone-timer .clock{font-size:100px}
.phone-playing.phone-countdown-active .pad-ring,.phone-playing.phone-countdown-active #stick{opacity:.12}
.prediction-result{padding:18px;margin:20px 0;border:1px solid #6d5481;border-radius:12px;background:#312341}
.prediction-result.correct{border-color:#83dcb3;background:#1d3d3b}
.prediction-result.incorrect{border-color:#aa8dbe}
.prediction-result h3{font-size:18px;margin:10px 0}
.prediction-result p{font-size:13px;margin:8px 0 0}
.prediction-result p strong{color:#f8f5fb}

.phone-playing .brand-logo{width:84px;height:50px}
@media(max-width:720px){.phone-playing .brand-logo{width:72px;height:42px}}

/* Cyclones gold and purple, with keyboard focus visible against both surfaces. */
header{background:#17112288}
button:focus-visible,a:focus-visible{outline:3px solid #ffe77e;outline-offset:4px}
.brand-logo{filter:drop-shadow(0 2px 2px #0006)}
button.secondary{border:1px solid #73568c}

/* Belly Slide uses the same large touch area as Puck Dodge, with a hold action. */
.slide-readout{font-size:13px;color:#ddd0ec;margin:22px 12px 12px;font-variant-numeric:tabular-nums}
.slide-pad{flex:1;min-height:180px;margin:10px 20px 60px;width:calc(100% - 40px);padding:28px 16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;touch-action:none;user-select:none;-webkit-user-select:none;background:linear-gradient(145deg,#ffdf65,#eab400);box-shadow:inset 0 0 0 2px #ffe990,0 8px 28px #0004}
.slide-pad.pressed{background:linear-gradient(145deg,#f9bf0d,#d79500);box-shadow:inset 0 4px 20px #5f3d0044}
.slide-pad.finished{background:#46345c;color:#e9dff3;box-shadow:none}
.slide-pad strong{font-size:clamp(22px,4vw,34px);letter-spacing:1px}
.slide-pad>span:not(.slide-symbol):not(.power-track){font-size:12px;font-weight:400;line-height:1.6;max-width:300px}
.slide-symbol{font-size:56px;line-height:1}
.power-track{width:min(280px,85%);height:17px;border-radius:20px;background:#311c3c44;overflow:hidden;border:1px solid #3d224244}
#slide-power{display:block;height:100%;width:0;background:#321940;border-radius:20px}
.phone-countdown-active .slide-pad{opacity:.15}
.phone-playing .slide-phone>.slide-readout{margin-top:22px}
@media(max-height:550px){.slide-pad{min-height:100px;gap:8px;margin-bottom:45px}.slide-symbol{display:none}.slide-readout{margin:8px}.phone-playing .slide-phone>.slide-readout{margin-top:8px}}

.slide-attempts{display:flex;justify-content:center;gap:10px;margin:0 12px 8px;font-size:11px;color:#ded3ed}
.slide-attempts span{padding:6px 10px;border:1px solid #68517e;border-radius:8px;background:#30213e}
.standing>span:not(.avatar):not(.rank){text-align:right}
@media(max-width:720px){.standing>span:not(.avatar):not(.rank){max-width:125px;line-height:1.5}}

.demo-count-label{margin-top:22px}
.demo-count-label input{margin-bottom:0}
.roster-spots{display:block;margin:10px 0;text-align:center;font-size:10px;color:var(--muted)}

.relay-queue{font-size:11px;line-height:1.6;color:var(--muted);padding:5px 18px;max-height:90px;overflow:auto;flex-shrink:0}
#relay-handoff{width:calc(100% - 40px);margin:24px 20px;min-height:130px;touch-action:none;user-select:none;background:var(--accent);color:#241a35;flex:1}
#relay-handoff.pressed{filter:brightness(.85)}
.relay-team{margin-top:14px;border-left:3px solid;padding-left:10px;font-size:12px}.relay-team p{font-size:11px;margin:6px 0}
.relay-waiting{flex:1;margin:24px 20px 60px;padding:26px;display:flex;flex-direction:column;justify-content:center;gap:18px;background:#30213f;border:1px solid #5d4770;border-radius:18px}.relay-waiting h3{font-size:30px;margin:0}.relay-waiting .power-track{width:100%;height:14px}.relay-waiting p{margin:0}
.phone-playing .relay-phone>.eyebrow{text-align:left;max-width:calc(100% - 135px);padding-left:18px;line-height:1.5;letter-spacing:1px;min-height:17px}
.relay-auto-plan{padding:15px;background:#30213f;border:1px solid #51405e;border-radius:10px;margin:0 0 18px;font-size:12px}.relay-auto-plan p{margin:8px 0;font-size:12px;color:var(--accent)}.relay-auto-plan small{color:var(--muted);font-size:10px;line-height:1.5}
@media(min-width:1050px){.large-roster .roster-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.large-roster .player{padding:7px;gap:6px}.large-roster .avatar{width:25px;height:25px;font-size:12px;border-radius:8px}.large-roster .player strong{font-size:10px;max-width:85px}.large-roster .player small{font-size:6px;margin-top:3px}.large-roster .player b{font-size:8px}.large-roster .dot{display:none}}
.player.removable{flex-wrap:wrap}.player .remove-player{width:auto;margin-left:auto;padding:5px 8px;font-size:9px;border:1px solid #916875;background:#513040;color:#ffe0e5;border-radius:5px}.player .remove-player:hover{background:#714052}
.phone-playing .king-phone>.eyebrow{text-align:left;max-width:calc(100% - 135px);padding-left:18px;line-height:1.5;letter-spacing:1px;min-height:17px}

.coach-prefix{min-height:30px;color:var(--gold,#ffcf51);font-size:22px;font-weight:900}.coach-phone h3{font-size:32px;margin:10px 0}.coach-buttons{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:18px}.coach-buttons button{min-height:90px;font-size:18px;touch-action:manipulation}.coach-buttons button:disabled{opacity:.4}.coach-phone #coach-feedback{min-height:48px}
.phone-playing .coach-phone>.eyebrow{display:block;text-align:left;margin:0 125px 0 16px;font-size:9px;letter-spacing:1px;min-height:30px}.phone-playing .coach-phone>h2{margin-top:12px}.phone-playing .coach-phone>#coach-feedback{position:static;margin:10px 16px 0;min-height:36px}.coach-buttons{padding:0 12px}

.phone-playing .shootout-phone>.eyebrow{display:block;text-align:left;margin:0 125px 0 16px;min-height:30px;letter-spacing:1px}.phone-playing .shootout-phone>#shootout-feedback{position:static;margin:12px;font-size:13px}.shootout-phone #shootout-aim{position:relative;flex:0 1 240px;min-height:130px;margin:12px 18px;border:5px solid #d86278;border-radius:8px;touch-action:none;background:repeating-linear-gradient(0deg,transparent,transparent 24px,#bfd3dc 25px),repeating-linear-gradient(90deg,#e5f2f5,#e5f2f5 24px,#bfd3dc 25px)}.shootout-goalie,#shootout-crosshair{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none}.shootout-goalie{background:#604494;border:3px solid white;border-radius:12px;width:48px;height:55px;color:white;font-size:0}.shootout-goalie:before{content:'●';font-size:28px}.shootout-goalie:after{content:'';display:block;background:white;width:12px;height:6px;margin:0 auto}#shootout-crosshair{color:#13774b;font-size:35px;font-weight:bold}.shot-meter{height:18px;background:#6c516a;position:relative;margin:12px 24px;border-radius:10px}.shot-green{position:absolute;left:50%;right:0;top:0;bottom:0;background:#2ca871;border-radius:0 10px 10px 0}#shootout-meter{position:absolute;top:-5px;height:28px;width:6px;background:white;border-radius:4px}#shootout-fire{margin:10px 18px;min-height:75px}#shootout-history{margin:10px 16px;color:var(--muted);font-size:12px}#shootout-fire:disabled{opacity:.5}

#shootout-fire{width:calc(100% - 36px)}

.shootout-goalie{width:90%;height:90%;object-fit:fill;border:0;background:none;border-radius:0}.shootout-goalie:before,.shootout-goalie:after{content:none}.shot-meter-label{margin:4px 24px 0;font-size:10px;letter-spacing:1px;color:var(--muted)}.shootout-phone #shootout-aim{background-color:#e5f2f5;box-shadow:0 18px 0 -5px #a9d4e6}.shot-meter{margin-top:8px}

.shootout-phone #shootout-aim.sling-pad{--pull-x:0px;--pull-y:0px;flex:1 1 300px;min-height:180px;max-height:380px;overflow:visible;border:2px solid #766086;background:radial-gradient(ellipse,#54366c 0,#2b1d3c 70%);box-shadow:none;position:relative;cursor:grab}.sling-rest{position:absolute;left:50%;top:42%;width:90px;height:90px;transform:translate(-50%,-50%);border:2px dashed #b89cc8;border-radius:50%}.sling-puck{position:absolute;left:50%;top:42%;width:66px;height:45px;border:3px solid #b1c5d2;border-radius:50%;background:#152535;box-shadow:0 8px 0 #080f18,0 12px 20px #0007;transform:translate(calc(-50% + var(--pull-x)),calc(-50% + var(--pull-y)));pointer-events:none}.sling-caption{position:absolute;left:0;right:0;bottom:12px;text-align:center;font-size:11px;letter-spacing:1.5px;line-height:1.6;color:#d4c2e3;pointer-events:none}.sling-pad.pulling{cursor:grabbing}.sling-pad.pulling .sling-rest{border-color:#ffcf24}.sling-pad.pulling .sling-puck{border-color:#ffcf24}.sling-pad.shot-locked{opacity:.5;cursor:default}#shootout-power-fill{display:block;height:100%;width:0;background:#ffcf24;border-radius:10px}.shootout-phone .shot-meter{overflow:hidden}

.sling-band{position:absolute;left:50%;top:42%;width:6px;height:var(--pull-length,0px);background:#ffcf24;transform-origin:50% 0;transform:translateX(-50%) rotate(var(--pull-angle,0deg));border-radius:3px;pointer-events:none}

.shootout-identity{display:flex;align-items:center;justify-content:center;gap:12px;margin:2px 14px 4px;min-height:46px}.shootout-marker-badge{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:2px solid #ffffffdd;color:#183346;font-size:26px;font-weight:900;flex-shrink:0}.shootout-identity>span:last-child{text-align:left;font-size:9px;letter-spacing:1.5px;color:var(--muted)}.shootout-identity strong{display:block;font-size:15px;letter-spacing:0;color:#fff;margin-top:3px}

.projector-playing.shootout-event .arena-top{left:auto;right:16px;transform:none;max-width:230px;font-size:9px;gap:12px}

/* Projector pages use the available viewport, including a full 40-skater roster. */
body.presenter{height:100dvh;overflow:hidden;display:flex;flex-direction:column}
.presenter #app{height:100%;display:flex;flex-direction:column;min-height:0}
.presenter header{flex-shrink:0;padding:10px 3%;height:70px;box-sizing:border-box}
.presenter footer{display:none}.presenter main{max-width:none;width:100%;padding:14px 3%;flex:1;min-height:0;display:flex;flex-direction:column;box-sizing:border-box}
.presenter-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;flex-shrink:0;margin-bottom:12px}.presenter-heading h1{font-size:clamp(22px,3vw,42px);margin:0}
.presenter-content{flex:1;min-height:0;display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}
.presenter-content.lobby{grid-template-columns:minmax(0,1fr) minmax(220px,25%)}
.presenter-content.predictions{grid-template-columns:1fr 1fr}
.presenter-content.results{grid-template-rows:minmax(0,1fr) minmax(0,1fr)}
.presenter-content section,.presenter-content aside{min-height:0;min-width:0;margin:0;padding:14px;display:flex;flex-direction:column;overflow:hidden}
.presenter-content h2{font-size:clamp(16px,1.8vw,25px);margin:0 0 10px;flex-shrink:0}
.presenter-cards,.presenter-standings,.presenter-results{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:minmax(0,1fr);gap:6px;flex:1;min-height:0}
.presenter .player{padding:5px;gap:6px;min-width:0;margin:0}.presenter .player strong{font-size:clamp(10px,1.1vw,16px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.presenter .player small{font-size:7px}.presenter .player>b,.presenter .player .dot{display:none}
.presenter .avatar{width:28px;height:28px;border-radius:50%;font-size:15px;flex-shrink:0}.presenter .player>div{min-width:0}
.presenter .standing{padding:5px;gap:5px;min-width:0;margin:0;font-size:clamp(10px,1vw,15px);display:flex;border:1px solid #574363;border-radius:6px}.presenter .standing strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.presenter .standing b{white-space:nowrap}.presenter .standing .rank{width:18px;flex-shrink:0;font-size:12px}.presenter .standing small{font-size:8px}.presenter .standing .avatar{display:none}
.presenter-results .standing{flex-wrap:wrap}.presenter-results .standing>span:not(.rank):not(.avatar){width:100%;font-size:9px;text-align:left}.presenter-results .standing strong{font-size:12px}.presenter .qr-panel{justify-content:center;align-items:center;text-align:center}.presenter .qr-panel img{width:min(100%,240px);max-height:40vh;object-fit:contain}.presenter .qr-panel strong{font-size:clamp(11px,1.3vw,18px);overflow-wrap:anywhere}
.presenter-content.predictions .presenter-cards,.presenter-content.predictions .presenter-standings{grid-template-columns:repeat(2,minmax(0,1fr))}
.winner-reveal{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;background:#21132bd9;z-index:5;padding:8%;color:#fff}.winner-reveal h1{font-size:clamp(36px,7vw,100px);color:#ffcf24;margin:20px 0}.winner-reveal p{font-size:24px}
.controller-identity{align-self:center;border:2px solid var(--player);border-left:12px solid var(--player);padding:5px 12px;border-radius:20px;font-size:14px;font-weight:bold;flex-shrink:0;margin:4px 12px}
@media(max-height:650px){.presenter header{height:55px}.presenter-content section,.presenter-content aside{padding:8px}.presenter .player small{display:none}.presenter main{padding-top:8px}.presenter-content h2{margin-bottom:6px}.presenter-heading{margin-bottom:8px}}

.presenter-results:has(.relay-result){grid-template-columns:repeat(4,minmax(0,1fr))}.relay-result{border:2px solid;padding:10px;border-radius:8px;min-width:0}.relay-result p{font-size:clamp(10px,1vw,14px);line-height:1.5;margin:8px 0}.relay-result strong{font-size:13px}

.night-rounds{display:block;font-size:10px;font-weight:normal;color:var(--muted);margin-top:3px}.presenter .standing .night-rounds{font-size:8px;margin-top:1px}.presenter:has(.night-rounds) .standing{padding:3px 5px}.night-phone-status{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:8px 0 14px;font-size:12px}.night-phone-status button{width:auto;padding:8px;font-size:11px;margin:0}.phone-playing .night-phone-status{position:fixed;bottom:5px;right:10px;z-index:12;margin:0;background:#241a35e8;padding:3px 8px;border-radius:12px}.phone-playing .night-phone-status>span{display:none}

.night-join{text-align:center;margin:20px 0}.night-join img{width:140px;border-radius:8px}.night-join p{overflow-wrap:anywhere;font-size:12px}

.standing>.night-rounds{display:inline-block;flex-shrink:0;white-space:nowrap;margin:0 5px;color:var(--muted)}.presenter .standing>.night-rounds{font-size:8px;margin:0 3px}.presenter .standing strong{line-height:1.2}

/* Heat results stay fixed on the left; only the total tally scrolls. */
.presenter-content.results{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:24px}
.presenter-content.results .presenter-results{display:flex;flex-direction:column;gap:7px;min-height:0}
.result-details{flex:1;min-width:0}.result-details>strong{display:block}.result-details>small{display:block;color:var(--muted);font-size:10px;margin-top:4px}
.heat-result{flex-wrap:nowrap!important}.heat-result .avatar{flex-shrink:0}.heat-result .rank{flex-shrink:0}
.presenter .heat-result{flex:1;min-height:0;padding:6px 10px;gap:10px}.presenter .heat-result .rank{font-size:18px;width:24px}.presenter .heat-result .avatar{display:grid;width:32px;height:32px;font-size:18px}.presenter .heat-result .result-details>strong{font-size:clamp(13px,1.6vw,21px)}.presenter .heat-result .result-details>small{font-size:clamp(9px,1vw,13px)}.presenter .heat-result b{font-size:20px}
.tally-window{overflow:hidden;min-height:0;flex:1;scrollbar-width:none}.tally-window::-webkit-scrollbar{display:none}.presenter-tally{display:flex;flex-direction:column;gap:9px;padding:2px 0}
.presenter .presenter-tally .standing{flex-shrink:0;min-height:48px;padding:7px 10px;gap:12px;font-size:clamp(15px,1.7vw,23px)}.presenter .presenter-tally .avatar{display:grid;width:34px;height:34px;font-size:19px}.presenter .presenter-tally .rank{font-size:18px;width:28px}.presenter .presenter-tally .night-rounds{font-size:11px}.presenter .presenter-tally b{font-size:22px}
.presenter-results .relay-result{flex:1;min-height:0;padding:9px 12px}.relay-result-members{display:flex;flex-wrap:wrap;gap:5px 12px;margin:6px 0}.relay-result-members>span{display:flex;align-items:center;gap:5px;font-size:clamp(9px,1vw,13px)}.relay-result-members b{display:grid;place-items:center;min-width:20px;height:20px;padding:0 2px;border-radius:50%;font-size:12px;color:#142231}.presenter .relay-result h2{font-size:19px;margin-bottom:3px}
.phone-standings{background:#2c203b;border:1px solid #654b78;border-radius:12px;padding:10px;margin:0 0 16px}.phone-standings-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:7px;font-size:13px}.phone-standings-heading>strong{color:var(--accent)}.phone-standings-heading>span{font-size:8px;letter-spacing:1px;color:var(--muted)}.phone-standings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;position:relative}.phone-rank{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:5px;padding:6px 5px;background:#392847;border-radius:5px;font-size:10px;min-width:0}.phone-rank>b{color:#d2b4e9;font-size:10px}.phone-rank>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phone-rank>strong{font-size:10px;color:var(--accent)}.phone-rank.is-you{outline:1px solid var(--accent);background:#5a4137}.rank-gap{position:absolute;left:-6px;top:50%;font-size:12px;color:var(--muted)}
.phone-playing .phone-home{display:flex;flex-direction:column;min-height:0}.phone-playing .phone-standings{flex-shrink:0;margin:0;padding:6px 10px;border-radius:0;border-width:0 0 1px}.phone-playing .phone-standings-heading{margin-bottom:5px}.phone-playing .phone-rank{padding:4px 5px}.phone-playing .game-phone{height:auto;flex:1;min-height:0;padding-top:10px;box-sizing:border-box}
@media(max-height:700px){.phone-playing .phone-standings{padding:4px 8px}.phone-playing .phone-rank{padding:3px}.phone-playing .game-phone>h2{font-size:20px;margin-top:5px}.phone-playing .controller-identity{margin:2px;font-size:12px;padding:3px 10px}}
.presenter-results .heat-result>.avatar{width:32px;flex:0 0 32px;height:32px;font-size:18px;text-align:center;display:grid;place-items:center;border-radius:50%}.presenter-results .heat-result .result-details{overflow:hidden}
.phone-playing .controller-identity{align-self:flex-start;margin-left:16px;max-width:calc(100% - 145px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box}
.presenter-results:has(.heat-result:nth-child(9)) .heat-result{padding:3px 8px;gap:7px}.presenter-results:has(.heat-result:nth-child(9)) .heat-result>.avatar{width:26px;flex-basis:26px;height:26px;font-size:15px}.presenter-results:has(.heat-result:nth-child(9)) .result-details>strong{font-size:15px}.presenter-results:has(.heat-result:nth-child(9)) .result-details>small{font-size:10px;margin-top:2px}

.practice-notice{padding:9px 12px;margin:0 0 12px;border:1px solid #ffcf24;border-radius:8px;background:#453724;color:#ffe683;font-size:12px;font-weight:bold;letter-spacing:.6px;text-align:center;flex-shrink:0}
.phone-playing .practice-notice{margin:0;border-radius:0;padding:6px 8px;font-size:10px}
.projector-playing .practice-notice{position:fixed;left:18px;top:14px;z-index:9;max-width:45%;margin:0;font-size:clamp(10px,1.2vw,16px)}
.presenter-content.lobby .presenter-standings{grid-auto-rows:38px;align-content:start}.presenter-content.lobby .presenter-standings:has(.standing:only-child){grid-template-columns:1fr}.presenter .lobby-wait{margin:4px 0 16px;font-size:20px}.lobby-wait .clock{color:var(--accent)}

.heist-team-card{border-left:5px solid var(--team);background:#342441;border-radius:8px;padding:14px;margin:12px 0}.heist-team-card h3{color:var(--team);margin:0;font-size:19px}.heist-team-card p{font-size:14px;line-height:1.7;margin:7px 0}.presenter-cards:has(.heist-team-card){display:flex;flex-direction:column;justify-content:center}.heist-phone-team{color:var(--team);font-size:14px;font-weight:bold;margin:5px 150px 12px 18px;text-align:left}.heist-score{font-size:22px;font-weight:bold;color:var(--accent);text-align:center;margin:4px}.heist-carry{font-size:12px;text-align:center;color:var(--muted);padding:7px 12px}.heist-dash{margin:8px 18px 42px;min-height:65px;flex-shrink:0;touch-action:none}.heist-dash:disabled{opacity:.6}.heist-dash .power-track{margin:7px auto 0;height:6px;width:80%}.heist-dash .power-track>span{display:block;height:100%;background:#513457;width:100%}.phone-playing .heist-phone #pad{min-height:130px}.phone-playing .heist-phone .pad-ring{width:170px;height:170px}.phone-playing .heist-phone .pad-label{bottom:18px}.phone-playing .heist-phone>p{font-size:9px;bottom:12px}.heat-result:has(.result-details) .result-details small{white-space:normal;line-height:1.4}

.heist-dash{width:calc(100% - 36px);box-sizing:border-box}.heist-dash .power-track{display:block;height:6px;flex:none;position:relative}.heist-dash .power-track>span{height:100%}

.heist-final-score{padding:10px 12px;margin-bottom:12px;background:#342441;border-radius:8px;text-align:center;color:var(--accent);font-size:23px;font-weight:bold;flex-shrink:0}.heist-final-score small{display:block;color:var(--muted);font-size:12px;margin-top:3px}

.heist-gold{background:#ffe17a;color:#5b3800;border:2px solid #f5b722;border-radius:8px;margin:3px 14px;padding:7px;text-align:center;font-size:13px;font-weight:900;flex-shrink:0}.heist-gold[hidden]{display:none}

.tow-settings{border:1px solid #675178;border-radius:9px;padding:12px;margin:14px 0}.tow-settings summary{cursor:pointer;font-size:13px;font-weight:bold;color:var(--accent)}.tow-settings form{margin-top:14px}
.tow-identity{color:var(--team);font-size:14px;font-weight:bold;margin:5px 145px 8px 16px;text-align:left}.tow-phone h2{text-align:center}.tow-partner{text-align:center;font-size:13px;color:var(--muted);margin:8px}.tow-feedback{font-size:16px;color:var(--accent);min-height:42px;padding:10px;text-align:center;font-weight:bold;flex-shrink:0}.tow-pull-controls{display:grid;grid-template-columns:1fr 1fr;gap:14px;flex:1;min-height:160px;padding:8px 14px 40px}.tow-pull-controls button{width:100%;height:100%;margin:0;font-size:55px;touch-action:none;user-select:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px}.tow-pull-controls strong{font-size:27px}.tow-pull-controls button:last-child{background:#82c2fa}.tow-pull-controls button.pressed,.tow-balance-controls button.pressed{transform:scale(.98);filter:brightness(.8)}.tow-pull-controls button:disabled,.tow-balance-controls button:disabled{opacity:.45}
.tow-balance-controls{display:flex;flex-direction:column;align-items:center;flex:1;min-height:0;padding:0 14px 34px;gap:10px}.tow-ring-stage{height:240px;min-height:140px;flex:1;width:100%;position:relative;pointer-events:none}.tow-target-ring,.tow-moving-ring{position:absolute;left:50%;top:50%;width:82px;height:82px;border:6px solid #ffcf24;border-radius:50%;transform:translate(-50%,-50%);box-sizing:border-box}.tow-moving-ring{border-color:#8fceff;will-change:transform;opacity:0}.tow-ring-stage.aligned .tow-target-ring{border-color:#86eeb3;box-shadow:0 0 20px #86eeb344}#tow-ring-label{position:absolute;top:calc(50% + 118px);left:0;right:0;text-align:center;font-size:10px;letter-spacing:1px;color:var(--muted)}#tow-balance-tap{height:120px;min-height:85px;margin:6px 0 0;font-size:32px;width:100%;flex-shrink:0;touch-action:none;user-select:none}.tow-balance-controls small{font-size:11px;color:var(--muted)}.tow-progress{text-align:center;font-size:11px;letter-spacing:1px;color:var(--muted);position:absolute;bottom:12px;left:0;right:0;pointer-events:none}
@media(max-height:750px){.tow-feedback{font-size:13px;min-height:30px;padding:6px}.tow-partner{margin:4px}.tow-balance-controls{gap:5px}.tow-ring-stage{min-height:130px}#tow-ring-label{top:calc(50% + 100px)}#tow-balance-tap{height:90px}}
.sharp-settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.sharp-settings-grid label{font-size:11px}.sharp-toggle{display:flex;align-items:center;gap:10px}.sharp-toggle input{width:auto}.sharp-phone .shootout-identity{margin-top:8px;margin-right:130px}.sharp-phone h2{font-size:25px;text-align:center;margin:12px 8px}.sharp-status{font-size:13px;text-align:center;min-height:36px;color:var(--accent);font-weight:bold;padding:5px}.sharp-phone .shootout-aim{flex:1;min-height:150px;margin:8px 14px}.sharp-feedback{font-size:13px;text-align:center;color:var(--accent);min-height:30px;padding:6px}.sharp-phone>small{text-align:center;line-height:1.6;font-size:11px;color:var(--muted);padding:5px 8px 12px}.sharp-phone .pull-puck{position:absolute;left:50%;top:50%;transform:translate(calc(-50% + var(--pull-x,0px)),calc(-50% + var(--pull-y,0px)));font-size:50px;color:#ffcf24}.sharp-phone .pull-instruction{position:absolute;bottom:15px;left:0;right:0;text-align:center;font-size:12px;color:var(--muted);pointer-events:none}.sharp-phone .pull-guide{position:absolute;left:50%;top:50%;width:140px;height:140px;border:2px dashed #7b6e93;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none}
.sharp-phone #sharp-aim{position:relative;touch-action:none;user-select:none;cursor:grab;overflow:hidden;border:2px solid #6e5a89;border-radius:20px;background:radial-gradient(circle at center,#4c355e,#281d3a 70%);--pull-x:0px;--pull-y:0px}.sharp-phone #sharp-aim.pulling{cursor:grabbing;border-color:#ffcf24}.sharp-phone #sharp-aim *{pointer-events:none}.sharp-phone .pull-line{position:absolute;left:50%;top:50%;height:5px;width:var(--pull-length,0px);background:#ffe188;transform-origin:0 50%;transform:rotate(calc(var(--pull-angle,0deg) + 90deg))}.sharp-phone .pull-puck{width:64px;height:64px;border:3px solid white;border-radius:50%;display:grid;place-items:center;font-size:32px;background:#142337;color:#ffcf24;box-shadow:0 5px 20px #0008}.projector-sound{font-size:12px;margin:8px 0;padding:10px}
.projector-playing.sharp-event .arena-top{left:auto;right:16px;transform:none;max-width:140px;gap:0}.projector-playing.sharp-event #arena-label{display:none}
.sound-controls{position:relative;z-index:100;letter-spacing:0;text-transform:none}.sound-controls summary{list-style:none;cursor:pointer;border:1px solid #8d779a;border-radius:7px;padding:7px 10px;color:#ffdf68;font-size:11px;white-space:nowrap}.sound-controls summary::-webkit-details-marker{display:none}.sound-popover{position:absolute;right:0;top:calc(100% + 8px);width:250px;background:#291f3a;border:1px solid #84708f;border-radius:12px;padding:15px;box-shadow:0 12px 35px #0008;display:flex;flex-direction:column;gap:12px;text-align:left}.sound-popover strong{font-size:14px}.sound-popover label{font-size:12px;margin:0}.sound-popover input[type=range]{width:100%;padding:0;margin:8px 0;accent-color:#ffcf24}.sound-popover button{font-size:13px;padding:10px;margin:0;min-height:40px}.sound-popover small{font-size:11px;line-height:1.5;color:#d0c1dd}.phone-playing .header-right{gap:8px}.phone-playing .sound-controls summary{padding:6px;font-size:10px}.phone-playing .status{font-size:8px}
.projector-playing header{display:block;position:fixed;z-index:100;left:0;top:0;height:0;padding:0;border:0;background:none;pointer-events:none}.projector-playing header>.brand,.projector-playing .header-right>:not(.sound-controls){display:none}.projector-playing .sound-controls{position:fixed;left:14px;top:14px;pointer-events:auto}.projector-playing .sound-popover{left:0;right:auto}.projector-playing .practice-notice{left:125px}
@media(max-width:480px){header .header-right{gap:7px}header .brand{font-size:14px;gap:8px}header .brand small{font-size:5px;letter-spacing:1px}header .brand-logo{width:60px}header .status{font-size:8px}.sound-controls summary{font-size:9px;padding:6px}.sound-popover{width:235px}.phone-playing .brand-logo{width:60px}}
.zamboni-identity{font-size:13px;font-weight:bold;margin:3px 135px 8px 16px;min-height:24px}.zamboni-phone h2{text-align:center}.zamboni-feedback{text-align:center;font-size:14px;color:#ffdf68;font-weight:bold;min-height:44px;padding:10px 16px}.projector-playing.zamboni-event .arena-top{left:auto;right:16px;transform:none;max-width:140px;gap:0}.projector-playing.zamboni-event #arena-label{display:none}
.projector-playing.zamboni-event .arena-top .clock{font-size:30px}

/* Memory Challenge: one shared grid, all 40 players, no projector scrolling. */
.memory-game{height:100%;min-height:0;display:flex;flex-direction:column;padding:clamp(8px,2vh,24px);background:#15213c;border-radius:20px;color:#fff;overflow:hidden}.memory-heading{text-align:center;flex:none}.memory-heading h2{font-size:clamp(22px,3.5vh,42px);margin:8px 0}.memory-heading p{margin:6px 0 14px;font-size:clamp(13px,2vh,22px)}.memory-body{display:flex;flex:1;min-height:0;gap:24px}.memory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));flex:1;min-height:0;gap:12px}.memory-grid button{min-height:0;min-width:0;margin:0;padding:8px;display:flex;align-items:center;justify-content:center;gap:16px;background:#273658;color:white;border:4px solid #72819e;border-radius:16px;touch-action:manipulation;opacity:1;transform:none}.memory-grid button:disabled{opacity:1;cursor:default}.memory-icon{font-size:clamp(30px,6vh,72px);display:flex;align-items:center;justify-content:center;height:80%;aspect-ratio:1}.memory-icon img,.memory-icon svg{width:100%;height:100%;object-fit:contain;max-height:110px;max-width:110px}.memory-grid strong{font-size:clamp(14px,2.5vh,28px)}.memory-grid button.memory-highlight{border-color:#fff;background:#76602a;box-shadow:inset 0 0 0 5px #ffc844,0 0 20px #ffc844;transform:scale(1.015)}.memory-reduced .memory-grid button.memory-highlight{box-shadow:inset 0 0 0 5px #ffc844;transform:none}.memory-results{width:30%;align-self:center;font-size:clamp(15px,2.2vh,25px)}.memory-results p{padding:8px 0;border-bottom:1px solid #ffffff25}.memory-results strong{color:#ffc844}.memory-phone{height:calc(100dvh - 110px);max-height:780px}.memory-phone .memory-body{display:flex;flex-direction:column;gap:8px}.memory-phone .memory-grid{min-height:240px}.memory-phone .memory-grid button{flex-direction:column;gap:2px;padding:4px}.memory-phone .memory-icon{font-size:36px;height:48px}.memory-phone .memory-grid strong{font-size:14px}.memory-phone .memory-results{width:100%;font-size:13px;flex:none;max-height:25vh;overflow:auto}.memory-phone .memory-results p{margin:0;padding:3px}.memory-reduce{font-size:12px;display:flex;gap:8px;align-items:center;margin:8px 0 0}.memory-reduce input{width:auto}.memory-projector{height:100%;min-height:420px}.memory-event.projector-playing #main{display:block}.memory-event.projector-playing .memory-projector{height:100%;min-height:0}@media(prefers-reduced-motion:reduce){.memory-grid button.memory-highlight{transform:none;box-shadow:inset 0 0 0 5px #ffc844}}@media(max-height:650px){.memory-phone{height:calc(100dvh - 70px)}.memory-phone .memory-heading h2{font-size:20px;margin:3px}.memory-phone .memory-heading .eyebrow{font-size:10px}.memory-phone .memory-heading p{margin-bottom:6px;font-size:12px}.memory-phone .memory-grid{gap:6px;min-height:200px}.memory-phone .memory-icon{height:34px;font-size:29px}}
.memory-event.projector-playing .memory-projector{position:fixed;inset:0;height:100dvh;padding:24px 4%;border-radius:0}.memory-event.projector-playing .memory-results{display:block}.memory-event.phone-playing #main{padding:8px}.memory-event.phone-playing .memory-phone{height:calc(100dvh - 50px)}
.memory-projector .memory-results p{font-size:clamp(16px,2.2vh,26px);line-height:1.4}.memory-projector .memory-results h3{font-size:clamp(20px,2.6vh,32px)}.memory-projector .memory-heading p{color:#d4deef}.memory-grid button:focus-visible{outline:4px solid white;outline-offset:2px}
.memory-event.phone-playing .phone-home{display:flex;flex-direction:column;gap:8px}.memory-event.phone-playing .phone-standings{flex:none;margin:0}.memory-event.phone-playing .memory-phone{flex:1;min-height:0;height:auto;max-height:none}.memory-phone .memory-heading h2{font-size:24px}.memory-phone .memory-heading p{font-size:12px;line-height:1.4}.memory-phone .memory-heading .eyebrow{font-size:9px}.memory-event.phone-playing .memory-game{padding:10px}.memory-event.phone-playing .memory-phone .memory-grid{min-height:180px}.memory-event.phone-playing .memory-reduce{flex:none}
/* Uniform image boxes on both displays; SVGs and the portrait fill the same square. */
.memory-grid .memory-icon{width:clamp(64px,10vh,110px);height:clamp(64px,10vh,110px);flex:none;aspect-ratio:1}
.memory-grid .memory-icon>svg,.memory-grid .memory-icon>img{display:block;width:100%;height:100%;max-width:none;max-height:none;object-fit:contain}
.memory-phone .memory-grid .memory-icon{width:52px;height:52px}
@media(max-height:650px){.memory-phone .memory-grid .memory-icon{width:38px;height:38px}}
.presenter-results .heat-result[hidden]{display:none!important}
.results-page-label{flex:none;text-align:center;color:#ffdf68;font-size:13px;margin:8px 0 0}
/* Four stable choices; round summaries never steal space from the phone grid. */
.memory-grid{grid-template-rows:repeat(2,minmax(0,1fr))}
.memory-grid button{position:relative}
.memory-tap-mark{display:none;position:absolute;right:10px;top:7px;font-size:24px;font-weight:900;color:#fff}
.memory-grid button.memory-tapped,.memory-phone .memory-grid button:active:not(:disabled){background:#146453;border-color:#a6ffe4;box-shadow:inset 0 0 0 4px #a6ffe4;transform:none}
.memory-grid button.memory-tapped .memory-tap-mark{display:block}
.memory-phone .memory-heading{height:116px;flex:0 0 116px;overflow:hidden}
.memory-phone .memory-heading h2{white-space:nowrap;font-size:22px;margin:7px 0}
.memory-phone .memory-heading p{margin:6px 0;line-height:1.4}
.memory-phone .memory-body{display:grid;grid-template-rows:minmax(0,1fr) 58px;gap:8px;flex:1;min-height:0}
.memory-phone .memory-grid{height:100%;min-height:0!important}
.memory-phone .memory-results{height:58px;max-height:58px;overflow:hidden;align-self:stretch;display:flex;align-items:center;justify-content:center;text-align:center;margin:0;line-height:1.4;padding:4px}
.memory-phone .memory-grid .memory-icon{width:64px;height:64px}
@media(max-height:650px){.memory-phone .memory-heading{height:94px;flex-basis:94px}.memory-phone .memory-heading h2{font-size:19px}.memory-phone .memory-grid .memory-icon{width:44px;height:44px}.memory-phone .memory-body{grid-template-rows:minmax(0,1fr) 48px}.memory-phone .memory-results{height:48px;max-height:48px;font-size:12px}}
.presenter-results .heat-result .result-details>small{font-size:clamp(15px,2vh,21px);line-height:1.2;color:#e6e0ef;margin-top:3px}
.presenter-results .heat-result .result-details>strong{font-size:clamp(17px,2.5vh,25px)}
.dash-phone{padding:12px!important}.dash-phone h2{font-size:24px;margin:8px 110px 4px 0;min-height:30px}.dash-phone>p{margin:5px 0 12px;font-size:14px;color:#ffdc67}.dash-phone #dash-swipe{flex:1;min-height:200px;touch-action:none;user-select:none;-webkit-user-select:none;display:flex;flex-direction:column;align-items:center;justify-content:center;border:3px solid #665c85;border-radius:22px;background:radial-gradient(ellipse,#314766,#1b243b);text-align:center;padding:15px}.dash-directions{font-size:clamp(19px,4vh,30px);line-height:2.2;font-weight:bold;color:#ecf8ff}.dash-phone #dash-feedback{font-size:21px;color:#ffda62;min-height:50px}.dash-phone #dash-swipe.swiped{animation:dash-swipe-feedback .22s ease-out}@keyframes dash-swipe-feedback{from{border-color:#b5ffe5;box-shadow:inset 0 0 25px #80ffe455}to{border-color:#665c85;box-shadow:none}}@media(prefers-reduced-motion:reduce){.dash-phone #dash-swipe.swiped{animation:none;border-color:#b5ffe5}}
.projector-playing.dash-event .arena-top{left:auto;right:16px;transform:none;max-width:125px;gap:0}.projector-playing.dash-event #arena-label{display:none}
.dash-phone #dash-swipe.dash-pushed{border-color:#ffca45;box-shadow:inset 0 0 35px #ffc23b40}.dash-phone .dash-pushed #dash-feedback{color:#ffe58f}
