*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#142522;color:#fff;font:15px system-ui,sans-serif}#game,#court{width:100%;height:100%;display:block}header,footer{position:absolute;left:20px;right:20px;display:flex;align-items:center;gap:22px;pointer-events:none}header{top:17px;justify-content:space-between;text-shadow:0 2px 6px #000}header strong{font-size:22px;letter-spacing:2px;color:#ffe36b}header span{display:block;font-size:10px;letter-spacing:3px;margin-top:4px}#score{font-size:20px;font-weight:650}#rally{min-width:145px;text-align:right}footer{bottom:14px;justify-content:center;font-size:12px;color:#e2ebe3}footer span{padding:9px 13px;background:#0a181cd9;border-radius:6px}button{font:inherit;color:#15382f;border:0;border-radius:7px;background:#ffe06a;padding:11px 20px;cursor:pointer;pointer-events:auto;font-weight:650}button:hover{filter:brightness(1.08)}button:disabled{opacity:.4;cursor:wait}footer button{padding:8px 12px;background:#0a181cd9;color:#eee;font-size:12px}#intro{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(480px,90vw);padding:30px;background:#142823ed;border:1px solid #d0dfb53b;border-radius:12px;text-align:center;box-shadow:0 20px 80px #0008}#intro small{color:#dacf8f;font-size:11px;letter-spacing:2px}h1{font-size:42px;letter-spacing:-1px;margin:13px 0}#intro p{line-height:1.7;color:#d5e5d8}.keys{font-size:13px;margin-bottom:0}#demo{background:#dfeadf;margin-left:8px}#status{position:absolute;bottom:63px;left:50%;transform:translateX(-50%);padding:10px 20px;border-radius:6px;background:#0a181cce;pointer-events:none;text-align:center;min-height:20px}#status:empty{display:none}@media(max-width:800px){header{left:12px;right:12px;gap:12px}header strong{font-size:16px}#score{font-size:15px}#rally{min-width:95px;font-size:13px}footer span{display:none}footer{left:8px;right:8px}h1{font-size:34px}}

#padStatus{font-size:11px;color:#ffe58a}footer{gap:8px}footer span{font-size:11px;padding:8px 10px}@media(max-width:1050px){footer span:not(#padStatus){display:none}#padStatus{display:inline}}

#shotInfo{font-size:13px;padding:7px 12px;background:#142823ba;border-radius:6px;text-transform:uppercase;letter-spacing:1px}#intro{width:min(530px,92vw)}@media(max-width:800px){#shotInfo{display:none}}

.scoreWrap{background:#0a181cce;padding:9px 16px;border-radius:8px;text-align:center;margin-left:auto}#setScore{font-size:11px;margin-top:4px;color:#e4d8a4}header{gap:16px}header strong{font-size:20px}#score{font-size:18px}#rally{font-size:13px;min-width:115px}#status{max-width:80vw;font-size:13px}#intro{width:min(570px,92vw)}footer{flex-wrap:wrap}footer span{font-size:10px}@media(max-width:1050px){#rally{display:none}#shotInfo{display:none}}

.scoreWrap{display:flex;align-items:center;gap:8px;padding:4px 10px}.scoreWrap img{width:58px;height:58px;object-fit:contain}.apeLineup{display:flex;justify-content:center;gap:30px}.apeLineup figure{margin:0}.apeLineup img{width:105px;height:105px;object-fit:contain;background:#d5e09f14;border-radius:50%}.apeLineup figcaption{font-size:10px;letter-spacing:1px;color:#ffde78}#intro h1{margin:8px 0}#intro p{margin:10px 0}#replayBanner{position:absolute;top:100px;left:50%;transform:translateX(-50%);background:#15251de8;border:1px solid #ffe06a;color:#ffe06a;padding:9px 16px;border-radius:7px;font-size:12px;letter-spacing:.7px;pointer-events:none}#replayBanner[hidden]{display:none}@media(max-width:850px){.scoreWrap img{width:38px;height:38px}header strong{font-size:16px}#score{font-size:14px}#setScore{font-size:10px}}

#controlsOverlay{position:absolute;z-index:10;top:50%;left:50%;transform:translate(-50%,-50%);width:min(650px,94vw);padding:24px 30px;border:1px solid #ffe06a77;background:#10271af5;border-radius:12px;text-align:center;box-shadow:0 20px 80px #000a}#controlsOverlay[hidden]{display:none}#controlsOverlay p{font-size:13px;line-height:1.7;color:#dce8d5}#controlsOverlay h2{margin:0 0 12px;color:#ffe06a}#controlsOverlay table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}#controlsOverlay td{padding:9px;border-bottom:1px solid #ffffff1f}#controlsOverlay td:nth-child(odd){color:#ffe06a}

#intro{max-height:calc(100dvh - 42px);overflow:auto;width:min(800px,94vw);box-sizing:border-box;padding:22px 32px}#intro h1{font-size:34px;margin:6px 0}.apeLineup img{width:88px;height:88px}.apeLineup{gap:38px;margin:10px 0}.matchSetup{display:grid;grid-template-columns:1fr 1fr;gap:12px;text-align:left}.matchSetup label{display:flex;flex-direction:column;gap:5px;color:#ffe9a0;font-size:14px}.matchSetup label:last-child{grid-column:1/-1}.matchSetup select{border:1px solid #77965e;background:#243c2e;color:#fff3c5;border-radius:8px;padding:10px;font-size:17px}.matchSetup select:focus{outline:3px solid #f5da57}.matchSetup span{font-size:12px;color:#c7d9bf;min-height:30px}#intro .keys{font-size:12px;line-height:1.45;margin:10px 0}#intro #loading{font-size:14px;margin:10px 0}footer{flex-wrap:wrap;gap:7px}footer button,footer span{padding:10px 12px!important;font-size:13px!important}@media(max-width:650px){.matchSetup{grid-template-columns:1fr}#intro{padding:16px}.apeLineup img{width:64px;height:64px}.scoreWrap img{width:46px;height:46px}}

/* Desktop character selection; supplied background and named portraits are asset-driven. */
[hidden]{display:none!important}body.choosing header,body.choosing footer,body.choosing #status{display:none}#intro{inset:0;transform:none;width:100vw;height:100vh;max-height:none;border:0;border-radius:0;box-shadow:none;background-color:#152e20;background-size:cover;background-position:center;padding:20px;display:block;overflow:auto}.desktopMenu{margin-left:auto;width:min(780px,75vw);padding:24px;background:linear-gradient(120deg,#10251be8,#122920f5);border:1px solid #97b56866;border-radius:18px;box-shadow:0 16px 50px #0005}#intro h1{font-size:26px;color:#ffe176}.apeLineup{display:none}.rosterPicker{margin:14px 0}#rosterGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.rosterCard{display:flex;flex-direction:column;align-items:center;padding:5px;background:#27402d;border:2px solid #73905f;color:#fff4c5;font-size:13px;min-height:46px;position:relative}.rosterCard img{width:100%;height:105px;object-fit:contain;border-radius:5px}.rosterCard.p1{border-color:#62e0ce;box-shadow:inset 0 0 0 1px #62e0ce}.rosterCard.p2{outline:2px solid #ffb069;outline-offset:-6px}.sidePicker{display:flex;gap:8px;justify-content:center;margin-bottom:9px}.sidePicker button{background:#36563a;color:#fff0b1;padding:8px 16px}.sidePicker button.selected{background:#ffe06a;color:#15382f}.matchSetup{gap:8px}.matchSetup label:last-child{grid-column:auto}.matchSetup label{font-size:12px}.matchSetup select{font-size:14px;padding:8px}.matchSetup span{min-height:0;font-size:11px}#intro .keys{font-size:11px;line-height:1.35}#schemeHelp{font-weight:600;color:#f7dfa0!important;margin:10px 0 4px}#intro #loading{margin:4px 0 10px}#intro .desktopMenu>small{font-size:10px}@media(max-height:800px){.rosterCard img{height:80px}.desktopMenu{padding:16px}#intro{padding:12px}#intro .keys{display:none}}@media(max-width:1050px){.desktopMenu{width:min(780px,96vw);margin:auto}}

#intro{padding:0 16px 18px;background-position:center top}.desktopMenu{width:min(1360px,96vw);margin:32vh auto 0;padding:14px 18px;background:linear-gradient(110deg,#10281ce8,#10281cee)}#intro h1{font-size:20px;margin:2px 0 6px}#intro small{font-size:9px}.rosterPicker{margin:8px 0}.sidePicker{margin-bottom:8px}#rosterGrid{grid-template-columns:repeat(8,1fr);gap:8px}.rosterCard img{height:auto;aspect-ratio:1;width:100%;object-fit:contain}.rosterCard{padding:3px;font-size:12px}.matchSetup{grid-template-columns:repeat(4,1fr);gap:12px;margin-top:12px}.matchSetup label:last-child{grid-column:auto}.matchSetup span{font-size:10px}#intro .keys{font-size:10px;line-height:1.25;margin:5px 0;max-height:28px;overflow:hidden}#intro #loading{font-size:12px;margin:4px 0 8px}#schemeHelp{font-size:12px;margin-top:8px}#intro .desktopMenu>small{display:none}@media(max-height:800px){.desktopMenu{margin-top:30vh;padding:10px 14px}#intro h1{font-size:17px}.rosterCard img{max-height:104px}.matchSetup{margin-top:8px}.matchSetup span{display:none}#schemeHelp{margin-top:6px}#intro .keys{display:none}.sidePicker button{padding:5px 14px}}
