body{background:radial-gradient(ellipse at 0 0,#fff,transparent 60%),#e9edf2}main{max-width:1120px}h1{font-size:clamp(36px,5vw,68px);line-height:1.02;letter-spacing:-2.5px}.eyebrow{font:11px ui-monospace,monospace;letter-spacing:2px;color:#59718f;margin-top:24px}.lead{font-size:20px;max-width:610px}.mode-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:30px 0}.mode-card{padding:28px 22px;color:inherit;text-decoration:none;border:1px solid #c2d0e1;border-radius:20px;background:linear-gradient(145deg,#fff,#e2eaf4);box-shadow:0 8px 25px #294e7420;transition:transform .15s;display:flex;flex-direction:column}.mode-card:hover{transform:translateY(-4px)}.mode-card h2{font-size:26px;margin:18px 0 0}.mode-icon{font-size:48px;line-height:1;color:#3277c6}.mode-card:nth-child(2) .mode-icon{color:#dc6657}.mode-card:nth-child(3) .mode-icon{color:#2b9593}.mode-card p{font-size:15px;flex:1}.mode-cta{font-size:14px;font-weight:750;color:#2d6db9;margin-top:14px}.join-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:#f7faff;border:1px solid #cbd8e6;padding:18px;border-radius:14px}.join-bar input{width:150px;letter-spacing:3px;text-transform:uppercase}input:not([type=checkbox]),select{display:block;width:100%;margin:6px 0}.join-bar input{width:150px}#network{font-size:12px;min-height:20px}#network.offline{background:#fff2d7;color:#8f5e13;padding:10px;border-radius:8px}.room-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.room-heading h1{font-size:40px;margin:8px 0 20px}.room-code-block{text-align:center;background:#fff;border:1px solid #bfcee1;border-radius:14px;padding:15px 22px}.room-code-block span{font:11px ui-monospace,monospace;letter-spacing:2px;display:block;color:#65788f}.room-code-block strong{font:800 40px ui-monospace,monospace;letter-spacing:5px;display:block;color:#2f71bc}.share-grid{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center}.share-grid h2{margin-top:0}#join-link{display:block;font-size:13px;word-break:break-all;margin-bottom:15px}#qr{padding:8px;background:#fff;border-radius:10px}#qr img,#qr svg{display:block;width:180px;height:180px}details{font-size:13px;margin:12px 0}summary{cursor:pointer}#host-pin{font:700 24px ui-monospace,monospace;letter-spacing:5px}#roster{display:flex;flex-wrap:wrap;gap:9px;margin:16px 0}.player-chip{border:1px solid #c7d4e4;background:#f7faff;border-radius:12px;padding:12px 16px;font-size:17px}.player-chip small{display:block;font-size:11px;color:#63778e;margin-top:3px}.player-chip.ready{border-color:#53a397;background:#eaf8f2}#lobby-controls .primary{max-width:450px}#lobby-controls button+button{margin:8px}.tv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.tv-grid.many{grid-template-columns:repeat(4,minmax(0,1fr))}.tile{border:1px solid #aebed2;border-radius:14px;background:#f9fbff;overflow:hidden}.tile-head{display:flex;justify-content:space-between;gap:8px;font-size:21px;font-weight:750;padding:12px 14px}.tile-stat{font:14px ui-monospace,monospace;color:#526d8e;padding:0 14px 12px}.tile canvas{aspect-ratio:720/520;height:auto}.tile.stale{opacity:.7}.tile-status{padding:8px 14px;color:#61748a;font-size:12px;min-height:30px}#round-status{font-size:24px;font-weight:750;margin:18px 0}.online-board{width:min(100%,calc((100dvh - 350px)*1.384615));min-width:min(100%,270px)}#results h2{margin-top:0}.score-row{gap:14px}.score-row small{font-size:12px;color:#657992}#results button{margin-top:15px}#host-controls{display:flex;gap:8px;margin:12px 0}.reactions{display:flex;gap:6px;flex-wrap:wrap;margin-top:16px}.reactions button{font-size:12px;padding:8px 11px}#reaction-stage{position:fixed;right:25px;bottom:30px;pointer-events:none;z-index:10;display:flex;flex-direction:column;gap:10px}.reaction-toast{padding:15px 22px;background:#fff;color:#2867ad;border:2px solid #4d9fc4;border-radius:22px;font-size:24px;font-weight:800;box-shadow:0 8px 30px #24426725;animation:pop .2s}footer{font-size:12px;color:#8190a2;margin:36px 0 10px}footer a{color:#617a99}#error{color:#a33741;font-size:14px;white-space:pre-line}body.tv main{max-width:96vw}body.tv .room-heading h1{font-size:clamp(35px,3vw,70px)}body.tv .room-code-block strong{font-size:clamp(40px,3vw,80px)}body.tv #roster .player-chip{font-size:clamp(20px,1.5vw,38px)}body.tv .tile-head{font-size:clamp(22px,1.8vw,48px)}body.tv .tile-stat{font-size:clamp(16px,1.1vw,28px)}body.tv .tile-status{font-size:clamp(14px,1vw,24px)}body.tv #round-status{font-size:clamp(28px,2vw,50px)}body.tv .share-grid #qr svg{width:230px;height:230px}body.tv #results{font-size:clamp(20px,1.5vw,38px)}body.tv .score-row small{font-size:clamp(16px,1.1vw,27px)}body.tv.playing #share{display:none}.series-results #controller{display:none!important}.connection-dot{color:#298c78}button:disabled{opacity:.6;cursor:default}#sync-status{min-height:18px}@keyframes pop{from{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}@media(max-width:700px){.mode-grid{grid-template-columns:1fr}.mode-card{padding:20px;position:relative}.mode-icon{font-size:35px}.mode-card h2{margin:10px 0 0}.room-heading{align-items:flex-start;gap:10px}.room-heading h1{font-size:29px;letter-spacing:-1px}.room-code-block{padding:10px}.room-code-block strong{font-size:25px;letter-spacing:3px}.room-code-block span{font-size:9px}.share-grid{grid-template-columns:1fr auto;padding:15px;gap:12px}#qr svg{width:110px;height:110px}.share-grid h2{font-size:20px}.share-grid p{font-size:12px}.share-grid #join-link{font-size:10px}.tile-head{font-size:15px;padding:8px}.tile-stat{font-size:10px;padding:0 8px 8px}.tv-grid,.tv-grid.many{gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}.player-chip{font-size:14px;padding:9px}.join-bar{gap:8px}.join-bar label{width:100%;margin:0}#round-status{font-size:19px}.room-heading .eyebrow{font-size:9px;letter-spacing:1px}.score-row{font-size:14px}.score-row small{display:block}.reactions button{font-size:11px}.reaction-toast{font-size:18px}#host-controls button{font-size:12px}body.controller-active .room-heading{display:none}body.controller-active #roster{display:none}body.controller-active #host-controls{display:none}body.controller-active #round-status{margin:7px 0;font-size:14px}body.controller-active footer{display:none}body.controller-active #network{margin:6px 0}body.controller-active .online-board{width:min(100%,calc((100dvh - 310px)*1.384615))}}@media(prefers-reduced-motion:reduce){.mode-card{transition:none}.reaction-toast{animation:none}}
@media(min-width:701px){body.tv.playing main{padding:12px 20px;max-width:100vw}body.tv.playing header{padding-bottom:6px}body.tv.playing #network{margin:5px 0;font-size:11px}body.tv.playing .room-heading .eyebrow{margin-top:3px}body.tv.playing .room-heading h1{font-size:clamp(32px,2vw,64px);margin:4px 0 8px;letter-spacing:-1px}body.tv.playing .room-code-block{padding:7px 14px}body.tv.playing .room-code-block strong{font-size:clamp(32px,2vw,64px)}body.tv.playing #roster,body.tv.playing footer{display:none}body.tv.playing #host-controls{margin:6px 0}body.tv.playing #host-controls button{padding:6px 10px;font-size:12px}body.tv.playing #round-status{margin:7px 0;font-size:24px}body.tv.playing .tv-grid{height:calc(100dvh - clamp(280px,20vh,440px));grid-template-rows:repeat(2,minmax(0,1fr));gap:12px}body.tv.playing .tv-grid.pair{grid-template-rows:minmax(0,1fr)}body.tv.playing .tile{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto}body.tv.playing .tile canvas{height:100%;width:100%;object-fit:contain;background:#d8e3ee}body.tv.playing .tile-head{padding:8px 12px}body.tv.playing .tile-stat{padding-bottom:6px}body.tv.playing .tile-status{padding:5px 12px}}
/* Phone controller follows the solo Control Lab: compact HUD and a right thumb rail. */
.controller-heading{display:flex;justify-content:space-between;align-items:center;font:11px ui-monospace,monospace;color:#5b7390;margin:12px 0 8px}.controller-heading>span:first-child{font-weight:750;color:#2e527c}.mode-picker{display:flex;align-items:center;gap:12px;margin:10px 0}.mode-picker label{font:10px ui-monospace,monospace;letter-spacing:1px;margin:0}.mode-picker select{margin:0;flex:1;max-width:320px}.progress-copy{display:flex;justify-content:space-between;font:10px ui-monospace,monospace;color:#61758c;margin:0 0 6px}.progress-copy>span:first-child{font-weight:750;color:#306bbc}.thumb-controls{display:flex;gap:8px;justify-content:flex-end;margin:12px 0}.thumb-controls .directions{margin:0}.thumb-controls .directions button{font-size:14px;min-height:52px}.thumb-controls .directions button span{font-size:22px;vertical-align:middle}.shoot{background:linear-gradient(#e15b52,#ca423c);color:#fff;border-color:#bd3b35;min-width:100px;min-height:52px;font-weight:800}.bottom{justify-content:space-between;align-items:flex-start}.bottom #instruction{line-height:1.5;max-width:75%}#pause-play{min-height:44px;font-size:13px;padding:8px 13px}#reactions-panel{border-top:1px solid #ccd8e6;padding-top:3px}#reactions-panel summary{min-height:44px;padding:12px 0;color:#526e91}.series-results .thumb-controls{display:none}body.controller-active #network:not(.offline){font-size:10px;color:#69809c;min-height:16px;margin:5px 0}
@media(max-width:700px){input:not([type=checkbox]),select{font-size:16px}main{padding-top:max(10px,env(safe-area-inset-top));padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}#join-form h1,#setup h1{font-size:32px;letter-spacing:-1.5px}#join-form .card,#setup .card{padding:18px}#join-form input,#join-form select{min-height:48px}#join-code{letter-spacing:4px;font-weight:750;text-transform:uppercase}.join-bar input{flex:1;min-width:0}.join-bar button{min-height:46px}.mode-card{padding:20px}.mode-card:active{transform:scale(.99)}body.controller-active main{padding-bottom:max(12px,env(safe-area-inset-bottom))}body.controller-active #network.offline{font-size:11px;line-height:1.35;padding:8px;margin:5px 0}body.controller-active header{min-height:40px}body.controller-active .controller-heading{margin:6px 0 8px;font-size:10px}body.controller-active .mode-picker{margin:6px 0;height:42px;gap:8px}body.controller-active .mode-picker select{padding:8px 9px;max-width:none;min-height:40px;font-size:14px}body.controller-active .mode-picker label{font-size:9px}body.controller-active .stats{margin:8px 0 9px;padding:9px 10px;font-size:8px;gap:10px}body.controller-active .stats b{font-size:22px;margin-top:3px}body.controller-active .track{height:13px;margin-bottom:10px}body.controller-active #round-status{display:none}body.controller-active .online-board{width:min(100%,calc((100dvh - 320px)*1.384615));min-width:0;border-width:5px;border-radius:15px}body.controller-active .bottom{padding-right:79px;min-height:55px;margin-top:9px;gap:8px}body.controller-active .bottom #instruction{font-size:11px;line-height:16px;max-width:none;flex:1}body.controller-active #pause-play{font-size:12px;padding:7px 10px;min-height:44px}body.controller-active .thumb-controls{position:fixed;z-index:10;right:max(7px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));width:70px;display:flex;flex-direction:column;gap:8px;padding:7px 5px;margin:0;background:#edf3f9f5;border:1px solid #c2cfde;border-radius:15px;box-shadow:0 4px 18px #223b5420;backdrop-filter:blur(12px)}body.controller-active .thumb-controls .directions{display:flex;flex-direction:column;gap:7px}body.controller-active .thumb-controls .directions button{font-size:10px;min-height:60px;padding:6px 1px;width:100%;touch-action:manipulation}body.controller-active .thumb-controls .directions button span{display:block;font-size:24px;line-height:27px}body.controller-active .shoot{min-height:76px;min-width:0;width:100%;font-size:14px;padding:8px 2px;border-radius:9px;touch-action:manipulation}body.controller-active #sync-status{margin:0 80px 0 0;min-height:18px;font-size:10px}body.controller-active #reactions-panel{margin:2px 80px 0 0;padding-top:0;border:0}body.controller-active #reactions-panel summary{font-size:11px;padding:10px 0;min-height:44px}body.controller-active #reactions-panel .reactions{margin-top:0;gap:7px}body.controller-active .reactions button{min-height:44px;font-size:12px}.online-board .overlay h2{font-size:22px}.online-board .overlay p{font-size:12px}}
@media(max-width:700px) and (max-height:650px){body.controller-active .controller-heading{display:none}body.controller-active #network:not(.offline){display:none}body.controller-active .stats{padding:6px 8px;margin:6px 0}body.controller-active .stats b{font-size:19px}body.controller-active .online-board{width:min(100%,calc((100dvh - 260px)*1.384615))}body.controller-active #reactions-panel{display:none}}
@media(max-width:700px) and (max-height:740px){body.controller-active .online-board{width:min(calc(100% - 80px),calc((100dvh - 260px)*1.384615));margin-left:0;margin-right:auto}}
#sync-status:empty{display:none}
.start-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-width:850px}.start-grid .mode-card{padding:32px;min-height:290px}.start-grid .mode-card h2{font-size:30px}.start-grid .mode-icon{font-size:34px;letter-spacing:4px}.menu-back{display:inline-block;color:#557397;font-size:13px;margin-top:22px;text-decoration:none}.menu-back:hover{text-decoration:underline}.menu-back+.eyebrow{margin-top:20px}@media(max-width:700px){.start-grid{grid-template-columns:1fr;gap:14px;margin:22px 0}.start-grid .mode-card{padding:22px;min-height:0}.start-grid .mode-card h2{font-size:26px;margin-top:10px}.start-grid .mode-icon{font-size:25px}.start-grid .mode-card p{margin:10px 0 5px}.start-grid .mode-cta{margin-top:10px}.menu-back{margin-top:17px;font-size:12px}#start-menu h1{font-size:36px;letter-spacing:-1.6px}#start-menu .lead{font-size:17px}}
.join-back{display:block;width:100%;min-height:46px;margin-top:10px;background:transparent;color:#527196}
.rival-strip{display:flex;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;margin:8px 0 10px;padding-bottom:2px;scrollbar-width:thin}.rival-chip{flex:1 0 135px;min-width:0;padding:8px 11px;border:1px solid #b9d0e4;border-radius:10px;background:#edf5fc;display:grid;grid-template-columns:1fr auto;gap:5px 12px;align-items:center;font-size:12px}.rival-chip strong{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.rival-chip>span{font:10px ui-monospace,monospace;color:#527394}.rival-track{height:5px;background:#cadbe9;border-radius:8px;overflow:hidden;grid-column:1/-1}.rival-track>div{height:100%;background:linear-gradient(90deg,#367fc9,#53b6b6);border-radius:8px;transition:width .2s}.rival-chip.done{border-color:#62aa91;background:#edf9f1}.rival-chip.done>span{color:#2b8164}.rival-chip.done .rival-track>div{background:#55a887}.activity-log{font-size:12px;color:#56718e;margin-top:20px;border-top:1px solid #c6d6e5;padding-top:8px}.activity-log>div{padding:5px 0}.received{background:linear-gradient(125deg,#f9fcff,#e2f7f3);border-color:#5bac9e}.finish{background:#fff3d8;border-color:#d1a44c;color:#745311}.cut,.clear{background:#edf6ff;border-color:#6da7d6}.notice{font-size:16px}#reaction-feedback{font-size:12px;min-height:0;color:#24786c;margin:7px 0}#manage-players{border:1px solid #c4d4e4;border-radius:12px;background:#f4f8fc;padding:0 13px;margin:12px 0}#manage-players summary{padding:12px 0;min-height:44px;font-size:13px;color:#47698e}.manage-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid #d6e1ec;font-size:14px}.manage-row span{margin-right:auto}.manage-row button{min-height:44px;font-size:12px;padding:8px 10px}.manage-row button:first-of-type{color:#a33e40;border-color:#debfc0}.reaction-toast{animation:reaction-arrive .28s ease-out}body.tv.playing #manage-players:not([open]){position:absolute;right:30px;top:170px;margin:0;padding:0 12px}body.tv.playing #manage-players[open]{position:fixed;z-index:30;top:80px;right:25px;max-width:400px;max-height:70dvh;overflow-y:auto;box-shadow:0 12px 40px #253c6033}body.tv.playing .activity-log{display:none}@keyframes reaction-arrive{from{transform:translateY(14px) scale(.9);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}
@media(max-width:700px){body.controller-active .rival-strip{margin:6px 0 8px;gap:7px}.rival-chip{padding:7px 9px;flex-basis:150px;font-size:11px}.rival-chip>span{font-size:9px}body.controller-active .online-board{width:min(100%,calc((100dvh - 370px)*1.384615))}body.controller-active #reaction-stage{top:max(58px,calc(env(safe-area-inset-top) + 48px));left:12px;right:12px;bottom:auto;align-items:center}body.controller-active .reaction-toast{font-size:15px;padding:12px 16px;border-radius:16px;max-width:100%;box-shadow:0 5px 20px #26426733}body.controller-active .activity-log{display:none}#reaction-stage .reaction-toast{max-width:calc(100vw - 28px)}#reactions-panel p{font-size:11px;margin:3px 0 6px}body.tv.playing #manage-players:not([open]){position:static;margin:8px 0}#manage-players[open]{position:relative;z-index:15}body.controller-active #manage-players{margin:4px 0}body.controller-active #manage-players summary{font-size:11px;padding:8px 0;min-height:36px}}
@media(max-width:700px) and (max-height:740px){body.controller-active .online-board{width:min(calc(100% - 80px),calc((100dvh - 310px)*1.384615));margin-left:0;margin-right:auto}}
@media(prefers-reduced-motion:reduce){.reaction-toast{animation:none}.rival-track>div{transition:none}}
