/* System font stack keeps the game self-contained. */
*{box-sizing:border-box}body{margin:0;background:#f4f0e4;color:#24273a;font-family:Outfit,Arial,sans-serif}header{max-width:1450px;margin:auto;padding:26px 5%;display:flex;align-items:center;gap:30px;border-bottom:1px solid #ddd8ca}.brand{font-size:35px;font-weight:900;text-decoration:none;color:#24273a;letter-spacing:-2px}.brand span{display:block;font-size:10px;letter-spacing:4px;padding-left:40px}.tag{flex:1;color:#7d7d87;font-size:14px}button,select{font:inherit;cursor:pointer}button{border:1px solid #d6d3cc;background:transparent;border-radius:10px;padding:10px 16px;font-weight:600}button:hover{filter:brightness(.95)}button:focus-visible,select:focus-visible{outline:3px solid #755af3;outline-offset:3px}main{max-width:1450px;margin:0 auto;display:grid;grid-template-columns:.8fr 1.2fr;gap:70px;padding:55px 5% 35px}.intro{padding-top:28px}.eyebrow{font-size:11px;letter-spacing:2.5px;font-weight:800;color:#6e5ad4}h1{font-size:clamp(45px,5.4vw,80px);line-height:.99;letter-spacing:-4px;margin:22px 0}h1 em{font-style:normal;color:#755af3}p{color:#797a84;line-height:1.65;font-size:15px}.settings{display:flex;gap:12px;margin:28px 0 16px}label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:1px;flex:1}select{display:block;width:100%;background:#fffaf1;border:1px solid #ded9cd;border-radius:9px;padding:12px 8px;margin-top:8px;font-size:13px;color:#24273a;letter-spacing:0}.primary{background:#755af3;color:white;border:0;box-shadow:0 5px 0 #5540ba;font-size:14px;letter-spacing:1px;padding:17px 22px;border-radius:12px}.intro>.primary{width:100%;text-align:left;display:flex;justify-content:space-between}.controls{display:grid;grid-template-columns:90px 1fr;gap:15px 12px;margin-top:37px;font-size:12px}.controls b{font-size:10px;color:#767784;letter-spacing:1px}.note{font-size:11px;margin-top:25px}.game{background:#fffaf1;padding:16px;border-radius:24px;border:1px solid #ddd8ce;box-shadow:0 18px 60px #42375712}.bar,.bottom{display:flex;justify-content:space-between;align-items:center;font-size:11px;letter-spacing:1px;padding:2px 4px 14px;gap:8px}.bar b{font-size:10px}.bar button{padding:5px 10px}.bar>div{flex:1}.dot{display:inline-block;width:7px;height:7px;background:#89b251;border-radius:50%;margin-right:8px}.board{position:relative;border-radius:16px;overflow:hidden;background:#b8d390;aspect-ratio:1}canvas{display:block;width:100%;height:100%}#overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:#f8f4e9dc;backdrop-filter:blur(4px);padding:20px}#overlay h2{font-size:32px;letter-spacing:-1px;margin:15px 0 0}#overlay p{margin:10px 0 24px}.badge{font-size:55px}.bottom{padding:17px 4px 0}.tip{font-size:11px;text-align:center;margin:16px 10px 2px}.touch{display:none;justify-content:space-between;align-items:center;margin:14px 4px 0}.pad{text-align:center}.pad button{background:#e7e1fa;width:45px;margin:2px;padding:10px;touch-action:none}.drop{background:#755af3;color:white;touch-action:none}footer{max-width:1450px;margin:auto;padding:20px 5% 35px;font-size:9px;font-weight:800;letter-spacing:2px;color:#94928a;display:flex;justify-content:space-between}@media(max-width:900px){main{gap:30px;padding-top:25px}h1{letter-spacing:-2px}.settings{flex-direction:column}.tag{display:none}header{justify-content:space-between}.controls{grid-template-columns:1fr;gap:6px}}@media(max-width:650px){main{display:flex;flex-direction:column;padding:22px 4%;gap:22px}.intro{padding-top:0}h1{font-size:51px;margin:14px 0}h1 br{display:none}.intro p{font-size:13px}.settings{flex-direction:row;margin:18px 0}.controls,.note{display:none}.game{padding:11px;border-radius:19px}.touch{display:flex}.brand{font-size:29px}header{padding:17px 4%}footer span{display:none}.intro>.primary{padding:12px 20px}.tip{font-size:10px}}

/* Plumber park art direction */
body{background:radial-gradient(ellipse at 80% 15%,#ddf7ff 0,transparent 50%),#f3f6e7}header{border-color:#d2dfd1}.brand{color:#137653;font-size:34px;letter-spacing:-1.5px}.brand span{padding-left:3px;letter-spacing:4px;color:#488767}.eyebrow{color:#169775}h1 em{color:#149675}.primary{background:#148c69;box-shadow:0 5px 0 #09634a}button:focus-visible,select:focus-visible{outline-color:#168c69}.game{background:#fcfff5;border:2px solid #b1d6bd;box-shadow:0 20px 70px #165c3920}.board{border:4px solid #27684d;border-radius:15px}#overlay{background:#f5fff0df}.badge{filter:drop-shadow(0 6px 0 #35a8b22a)}.bar b{color:#27684d}.bottom{font-weight:700;letter-spacing:.5px}.pad button{background:#d4eee0}.drop{background:#148c69}.tag{color:#628274}select{background:#fcfff5}.intro>.primary{font-size:14px}@media(max-width:650px){.brand{font-size:29px}.bottom{font-size:9px}}

body{background:radial-gradient(ellipse at 75% 0%,#244945,transparent 60%),#102827;color:#f5f7e8}header{border-color:#ffffff14}.brand{color:#abf5bf}.brand span{color:#61bd9b}.tag,p{color:#a5bfb5}.eyebrow{color:#b9ef84}h1 em{color:#b9ef84}.primary{background:#b9ef84;color:#14352c;box-shadow:0 5px 0 #6d9c48}.intro select{background:#203c36;color:#f1f8ed;border-color:#496258}.game{background:#193f36;border-color:#547c58;box-shadow:0 25px 90px #0006}.bar b,.bottom{color:#e4f4d1}.bar button,header button{color:#e4f4d1;border-color:#597866}.board{border-color:#86b677;box-shadow:inset 0 0 30px #0003}#overlay{background:#edf9e7eb;color:#244434}#overlay p{color:#607662}.controls b{color:#b0d49b}.controls span{color:#acc2b5}.pad button{color:#173b2a}.tip{color:#a9c4b1}footer{color:#7d9f8c}.note{color:#80a28f}h1{font-size:clamp(43px,4.6vw,69px)}

.matchmeta{display:flex;justify-content:space-between;gap:10px;font-size:9px;letter-spacing:1px;color:#a9cdb7;padding:0 4px 12px}.scoreboard{display:grid;grid-template-columns:repeat(6,1fr);gap:5px;margin-bottom:12px}.scorechip{background:#0e2e27;border:1px solid #42664d;border-radius:7px;padding:7px 3px;text-align:center;font-size:9px;color:#e9f9df}.scorechip i{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--uniform);margin-right:4px}.scorechip b{display:block;font-size:19px;margin-top:3px}.scorechip.out{opacity:.4}.matchmeta span{font-size:8px}@media(max-width:650px){.scorechip{font-size:7px}.scorechip i{width:6px;height:6px}.matchmeta{font-size:8px}}

.abilities{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;padding:17px 5px 0}.ability span{font-size:9px;font-weight:700;letter-spacing:1px;color:#d9eec6;display:flex;justify-content:space-between}.ability b{color:#fff}.pips{display:flex;gap:3px;margin-top:6px}.pips i{display:block;flex:1;height:7px;border-radius:2px}.board{border-color:#a4d575}#stats{font-size:9px;opacity:.7}@media(max-width:650px){.abilities{gap:8px}.ability span{font-size:8px}}

.audio-controls{display:flex;align-items:center;gap:8px}.audio-controls button{font-size:11px;padding:8px 10px}.musicvolume{font-size:8px;color:#bdd4c4;max-width:90px}.musicvolume input{width:85px;display:block;accent-color:#b9ef84;margin-top:5px}#overlay .badge{font-size:65px}#overlay h2{max-width:90%;line-height:1.1}#overlay .primary{min-width:180px}@media(max-width:650px){.audio-controls{gap:4px}.audio-controls button{font-size:9px;padding:6px}.musicvolume{max-width:55px}.musicvolume input{width:55px}.tag{display:none}}

@media(max-width:650px){header{flex-wrap:wrap;gap:14px}.audio-controls{width:100%;justify-content:space-between}.musicvolume{max-width:75px}.musicvolume input{width:70px}}

.crewchooser{margin:18px 0 22px;background:#16372f;border:1px solid #466953;border-radius:14px;padding:14px}.crewchooser summary{cursor:pointer;font-size:11px;font-weight:800;letter-spacing:1px;color:#c7f19c}.crewgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;max-height:410px;overflow-y:auto;padding:5px 3px}.crewcard{min-width:0;padding:5px 3px;background:#21473b;border:2px solid transparent;color:#f2ffe4}.crewcard.selected{border-color:#b9ef84;background:#315d42}.crewportrait{display:block;width:66px;max-width:100%;aspect-ratio:1;margin:auto;background-size:800% 400%;background-repeat:no-repeat}.crewcard b{display:block;font-size:10px}.crewcard small{display:block;font-size:8px;color:#aac6b4}.crewchooser p{font-size:11px;margin:10px 0}.crewchooser .crewnote{font-size:10px}.scorechip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:650px){.crewgrid{grid-template-columns:repeat(5,minmax(0,1fr));max-height:300px}.crewportrait{width:58px}.crewcard small{display:none}}

.arenatitle{display:flex;justify-content:space-between;gap:12px;padding:2px 5px 17px;font-size:10px;font-weight:800;letter-spacing:1.5px;color:#d4efbd}.arenatitle b{font-size:8px;color:#8ec6ac}.crewcard{transition:transform .15s,border-color .15s,background .15s}.crewcard:hover{transform:translateY(-3px);background:#315d48}.crewcard.selected{box-shadow:0 0 0 1px #d6ffab,0 4px 15px #b9ef8418}.crewcard:hover .crewportrait{animation:previewwalk .5s steps(3) infinite}@keyframes previewwalk{from{background-position-x:0}to{background-position-x:42.857%}}.board:fullscreen{border:0;border-radius:0;background:#102827;width:min(100vw,100vh);height:min(100vw,100vh);margin:auto;overflow:hidden}#overlay{background:#effbe7d9}#overlay .badge{animation:badgefloat 2.2s ease-in-out infinite}#rematch{margin-top:14px;border-color:#86a976;color:#285237}.bar button{font-size:9px;padding:6px}.scorechip{transition:opacity .3s,background .3s}.scorechip:not(.out){box-shadow:inset 0 -2px 0 var(--uniform)}@keyframes badgefloat{50%{transform:translateY(-5px) rotate(-4deg)}}@media(prefers-reduced-motion:reduce){.crewcard,.scorechip{transition:none}.crewcard:hover .crewportrait,#overlay .badge{animation:none}}@media(max-width:650px){.arenatitle{font-size:8px;letter-spacing:1px}.audio-controls{flex-wrap:wrap}.bar{flex-wrap:wrap}.bar>div{min-width:50%}}

#arena3d{position:absolute;inset:0;width:100%;height:100%;z-index:1}#overlay{z-index:4}#threehud{position:absolute;inset:0;z-index:2;pointer-events:none;display:none}.threeplayerlabel{position:absolute;transform:translate(-50%,-100%);background:#14352ddd;color:#fff;border:1px solid;border-radius:5px;padding:2px 5px;font-size:8px;font-weight:800;white-space:nowrap}.threecountdown{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);white-space:pre-line;text-align:center;font-size:50px;font-weight:900;color:#fff9c5;text-shadow:0 3px 0 #193b2b,0 0 20px #0007}.renderstatus{font-size:10px;color:#a4d9be;margin:6px 0 12px}@media(max-width:650px){.threeplayerlabel{font-size:6px;padding:1px 3px}.threecountdown{font-size:38px}}

.threefuse{position:absolute;transform:translate(-50%,-50%);border:1px solid #b2f4ff;border-radius:50%;padding:1px 4px;color:white;font-size:8px;font-weight:900;box-shadow:0 1px 3px #0004}.fpscounter{align-self:center;color:#bde989;font-size:10px;font-weight:800;white-space:nowrap}

.gamelegend{margin:20px 0;background:#17392f;border:1px solid #4a7057;border-radius:13px;padding:16px}.gamelegend h2{font-size:13px;margin:0 0 10px;letter-spacing:1px;color:#c9ed98}.gamelegend p{font-size:11px;margin:8px 0}.gamelegend dl{margin:12px 0}.gamelegend dt{font-size:10px;font-weight:800;color:#e3f6d7;margin-top:12px}.gamelegend dd{font-size:11px;line-height:1.5;color:#b7cfbd;margin:4px 0}.legendcontrols{border-top:1px solid #40694e;padding-top:10px}.threepickuplabel{position:absolute;transform:translate(-50%,50%);background:#103a2bdd;border:1px solid #94bc75;border-radius:4px;padding:1px 3px;font-size:6px;font-weight:900;color:#eaffd3;white-space:nowrap}@media(min-width:901px){.game{position:sticky;top:16px;align-self:start;max-height:calc(100vh - 32px);overflow-y:auto}}

/* Block Party: asphalt, cool steel and safety yellow. */
body{background:radial-gradient(ellipse at 80% 0%,#26374e,transparent 55%),#111823;color:#f2f5fb}header{border-color:#384250}.brand{color:#f6cb62}.brand span,.eyebrow{color:#65ccf3}.tag,p,.controls span,.note,.tip{color:#b6c3d3}h1 em{color:#f6cb62}.primary{background:#f6cb62;color:#172130;box-shadow:0 5px 0 #a77c2d}.intro select{background:#202d40;color:#f1f5fc;border-color:#4b5b70}.game{background:#1a2535;border-color:#46566c}.board{border-color:#6a7b8c;background:#26323d}.bar b,.bottom,.arenatitle{color:#e1eafa}.bar button,header button{color:#e1eafa;border-color:#5c6e85}.controls b,.fpscounter{color:#f6cb62}.dot{background:#65ccf3}.crewchooser,.gamelegend,.streetradio{background:#182536;border:1px solid #46576e;border-radius:14px;padding:14px;margin:18px 0}.crewchooser summary,.streetradio summary,.gamelegend h2{color:#f6cb62}.crewcard{background:#26374c;color:#f5f8fc}.crewcard.selected{border-color:#f6cb62;background:#35465d;box-shadow:0 0 0 1px #f6cb62}.crewcard:hover{background:#35465d}.crewcard small,.gamelegend dd,.renderstatus,.matchmeta{color:#b6c9dd}.gamelegend dt,.abilities .ability span{color:#f1f5fc}.gamelegend .legendcontrols{border-color:#46576e}.scorechip{background:#111d2c;border-color:#46576e;color:#f1f5fc}#overlay{background:#152132e8;color:#f2f5fc}#overlay p{color:#c4d1e2}#rematch{color:#dae5f5;border-color:#657992}.threeplayerlabel,.threepickuplabel{background:#121e30e6;color:#f4f7fc}.threepickuplabel{border-color:#8fadc8}.pad button{background:#344c68;color:#fff}.drop{background:#f6cb62;color:#172130}.streetradio summary{cursor:pointer;font-size:12px;font-weight:800;letter-spacing:1px}.streetradio p{font-size:11px;margin:10px 0}.streetradio label{display:block;margin:10px 0}.streetradio button{color:#f1f5fc;border-color:#687c98;font-size:11px}.streetradio input[type=file]{display:block;width:100%;font-size:11px;margin-top:8px;color:#b6c9dd}.radiocredit a{color:#82d9f7}.musicvolume{color:#c6d4e5}.musicvolume input{accent-color:#f6cb62}.gamelegend strong{color:#fff}footer{color:#96a6ba}.crewcard:hover .crewportrait{animation:none}

/* Clear, compact result presentation at both desktop and phone board sizes. */
.roundshowcase{display:flex;align-items:center;justify-content:center;gap:14px;max-width:100%;margin:0 0 4px}.resultportrait{display:block;width:clamp(76px,15vw,132px);height:clamp(76px,15vw,132px);object-fit:contain;filter:drop-shadow(0 9px 10px #0005)}.resultprogress{text-align:left}.resultprogress>span{font-size:10px;letter-spacing:1.4px;color:#f6cb62;font-weight:900}.resultwins{display:flex;gap:5px;margin:6px 0;color:#74859b}.resultwins i{font-style:normal;font-size:26px;line-height:1}.resultwins i.won{color:#f6cb62;text-shadow:0 1px 7px #f6cb6230}.resultprogress small{font-size:8px;letter-spacing:1px;color:#c5d4e6}.winneroverlay>.badge{display:none}#overlay.winneroverlay h2{font-size:clamp(20px,3.3vw,31px);margin:4px 0 0}#overlay.winneroverlay p{font-size:clamp(11px,1.5vw,14px);line-height:1.4;margin:7px 0 12px}#overlay.winneroverlay .primary{padding:12px 18px}#overlay.winneroverlay #rematch{margin-top:7px;padding:7px 12px}.threeplayerlabel.slipping{color:#fff;border-width:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:650px){.roundshowcase{gap:8px}.resultprogress>span{font-size:8px}.resultwins i{font-size:21px}#overlay.winneroverlay{padding:14px}.resultprogress small{font-size:7px}}
/* A readable team-color display, including named neutral crews. */
.crewcard{position:relative;border:1px solid #425066;border-top:4px solid var(--crew-color,#65ccf3);background:radial-gradient(ellipse at 50% 35%,#40526955,transparent 70%),#1d2b3e;overflow:hidden}.crewcard .crewportrait{filter:drop-shadow(0 5px 5px #0005)}.crewcard small{display:flex;align-items:center;justify-content:center;gap:5px;min-height:1.8em;line-height:1.35;color:#c7d4e5}.crewswatch{display:inline-block;flex:0 0 8px;width:8px;height:8px;border-radius:50%;background:var(--crew-color);outline:1px solid #ffffff55}.crewcard.selected{border-color:var(--crew-color,#f6cb62);box-shadow:0 0 0 2px #e5edfa,0 8px 18px #0003;background:#32445b}.crewcard:focus-visible{outline:3px solid #fff;outline-offset:3px}.crewcard.selected b{color:#fff}

.audio-controls{flex-wrap:wrap;justify-content:flex-end}@media(max-width:1100px){header{flex-wrap:wrap}.audio-controls{width:100%;justify-content:center}.tag{margin-left:auto}}

/* Firecracker block: warm sparks against midnight street tones. */
.brand span,.eyebrow{color:#ffb16b}.dot{background:#ff9955}.threefuse{border-color:#ffcf8d}.primary{background:#ffc26b;box-shadow:0 5px 0 #a3662b}.board{border-color:#8a7867}.game{border-color:#5f5760}.gamelegend{border-color:#80654f}.threepickuplabel{border-color:#d6b480}.musicvolume input{accent-color:#ffc26b}.brand,h1 em,.crewchooser summary,.gamelegend h2{color:#ffc879}

