/* Frisch varsity presentation. Gameplay and control bindings stay independent. */
:root{--gold:#ffcf70;--ink:#10111a;--panel:#1a1c29;--muted:#b5b9c9}
body{background:linear-gradient(120deg,#31121f 0,transparent 48%),#10111a}
header{min-height:64px;padding:10px 3vw;background:#10111af2;border-bottom:1px solid #39303a}
.brand{font-size:15px;letter-spacing:1.5px}.brand img{width:36px;height:36px}.edition{font-size:12px}
main{max-width:1500px;padding:24px 3vw 32px}
button,select{border-radius:6px;background:#252734;border-color:#4b4e61;min-height:42px}
button:hover:not(:disabled){background:#393b4c;transform:translateY(-2px)}
button.primary{background:var(--gold);box-shadow:0 4px 0 #976827;border:0;text-transform:uppercase;letter-spacing:1px;font-size:14px;padding:15px 24px}
button.primary:hover:not(:disabled){background:#ffdf9b}.primary:disabled{box-shadow:none}
.intro{align-items:center;border-bottom:1px solid #ffffff20;padding-bottom:22px;gap:32px}
.intro h1{font-size:clamp(34px,4.2vw,60px);font-style:italic;line-height:.95;letter-spacing:-2px;margin:5px 0 10px;text-shadow:3px 4px 0 #751b36}
.intro h1 br{display:none}.intro h1 span{display:block;color:#fff}.intro .eyebrow{color:var(--gold);letter-spacing:3px;font-size:12px;margin:0 0 10px}
.intro p:last-child{margin:0;font-size:14px}.rules{grid-template-columns:repeat(3,minmax(100px,1fr));padding:16px 18px;gap:12px;background:#1c1c29;border:1px solid #ffffff1c;border-radius:8px;min-width:440px}
.rules label{font-size:12px;text-transform:uppercase;letter-spacing:1px;font-weight:750}.rules select{min-width:0;width:100%;text-transform:none;letter-spacing:0;font-size:14px;background:#10121d}
.rules label:last-child{grid-column:1/-1;font-size:12px;letter-spacing:0;text-transform:none}.rules input{accent-color:var(--gold)}
.section-head{margin-top:22px}.section-head h2{font-size:22px;text-transform:uppercase;letter-spacing:.4px}.section-head span{border:1px solid #ffffff25;border-radius:30px;padding:7px 14px;font-size:13px}
#lobby>.hint{margin:0 0 16px;font-size:14px;max-width:1000px}
.slots{gap:16px;margin:16px 0 20px}.slot{background:var(--panel);border:1px solid #ffffff22;border-top:4px solid var(--player);border-radius:8px;box-shadow:0 12px 28px #0004;display:flex;flex-direction:column;transition:border-color .2s}
.slot.is-ready{border-color:var(--player)}.slot-head{padding:10px 14px;font-size:12px;letter-spacing:.5px;background:#0002;min-height:44px}
.slot.empty{display:flex;align-items:center;justify-content:center;min-height:370px;border-style:dashed;background:linear-gradient(150deg,#ffffff04,#ffffff00)}
.slot.empty .slot-head{font-size:64px;line-height:1;font-style:italic;letter-spacing:-5px;background:none;opacity:.35;margin-bottom:12px}.slot.empty h3{font-size:19px;font-weight:650}.slot.empty p{font-size:13px;max-width:190px}
.portrait{height:180px;position:relative;overflow:hidden;background:linear-gradient(135deg,#ffffff08 25%,transparent 25%,transparent 75%,#ffffff06 75%),linear-gradient(150deg,#242637,#141722);background-size:44px 44px,100% 100%}
.portrait:after{content:'';position:absolute;bottom:0;left:0;right:0;height:4px;background:var(--player)}
.portrait img{height:174px;width:145px;border-radius:8px 8px 0 0;object-position:top;filter:drop-shadow(0 0 16px #0005);transform:translateY(4px);transition:transform .2s}.slot:hover .portrait img{transform:translateY(0)}
.slot-content{padding:16px;display:flex;flex-direction:column;flex:1}.slot h3{font-size:23px;letter-spacing:-.6px}.slot .role{font-size:12px;text-transform:uppercase;letter-spacing:1.2px;margin:2px 0 10px}.slot p{font-size:14px;line-height:1.45}.slot-controls{margin-top:auto;padding-top:8px;display:grid;grid-template-columns:auto 1fr;gap:8px}.slot-controls button{font-size:13px;padding:8px}
.slot-controls .ready{background:var(--player);color:#0c1421;border-color:var(--player)}.slot.is-ready .ready{background:#10161e;color:var(--player)}
#lobby>.toolbar{padding:16px;background:#1c1c28;border:1px solid #ffffff20;border-radius:8px;margin-bottom:22px}#lobby>.toolbar button{font-size:14px}
.footer-row{font-size:12px;padding:10px 0 16px;color:#a6a9ba;border:0}.hint{color:#b5b9c9}details{background:#ffffff03;border-color:#ffffff16;border-radius:6px}summary{font-size:14px}.diagnostics{margin-top:14px}
.stage-list{gap:24px}.stage-card{padding:14px 14px 22px;background:#1b1e2b;border:2px solid #3c3e50;border-radius:10px;position:relative;overflow:hidden}.stage-card.selected{border-color:var(--gold);background:#262331;box-shadow:0 0 0 3px #ffcf7015}.stage-card.selected:after{content:'SELECTED';position:absolute;top:28px;right:28px;border-radius:4px;padding:8px 12px;background:var(--gold);color:#181521;font-size:12px;letter-spacing:1px}.stage-card:disabled{opacity:.55}.stage-card h2,.stage-card p,.stage-card small{margin-left:10px;margin-right:10px}.stage-card h2{font-size:28px}.stage-card canvas{border-radius:5px}.stage-card p{font-weight:400}
.game-bar{display:grid;grid-template-columns:1fr auto 1fr;gap:18px;margin-bottom:14px}.game-bar span{font-size:13px;letter-spacing:1px;font-weight:800;color:#c2c5d3}.game-bar strong{font-size:30px;background:#1f202e;border:1px solid #ffffff25;border-radius:6px;padding:5px 24px;box-shadow:0 3px 0 #0005}.game-bar button{justify-self:end}
.canvas-wrap{border:1px solid #636073;border-radius:8px;box-shadow:0 12px 40px #0006;max-height:calc(100dvh - 285px)}
.hud{gap:12px;max-width:1250px;margin:14px auto 0}.hud-card{position:relative;overflow:hidden;background:linear-gradient(120deg,#292b3c,#171a26);border:1px solid #ffffff15;border-top:3px solid var(--player);border-left:0;border-radius:6px;padding:10px 14px;box-shadow:0 5px 14px #0003}.hud-card .name{font-size:13px;line-height:1.3;max-width:calc(100% - 50px)}.hud-portrait{width:48px;height:58px;border-radius:4px}.hud-card .damage{font-size:42px;line-height:1.15;font-style:italic;letter-spacing:-2px;color:#fff}.hud-card .stats{font-size:12px;line-height:1.7}.meter{height:8px;background:#090d17;border:1px solid #ffffff18;border-radius:3px;margin-top:8px}.meter i{transition:width .1s}.hud-card small{font-size:11px;letter-spacing:.8px;font-weight:800;color:var(--player)}
.overlay{background:#080b16d9}.overlay-card{background:linear-gradient(145deg,#302032,#181b2a);border:1px solid #ddba76;border-top:5px solid var(--gold);border-radius:10px;box-shadow:0 24px 90px #0008}.overlay-card h2{font-size:42px;font-style:italic;letter-spacing:-1px;margin:12px 0 20px}#results p{display:flex;align-items:center;padding:10px 14px;margin:6px 0;background:#ffffff06;border-radius:5px;border-left:3px solid #e0b66b;font-variant-numeric:tabular-nums}
#game>.hint{text-align:center;font-size:12px;margin-bottom:0}#banner:not(:empty){left:20%;width:60%;padding:12px;background:#141620df;border-bottom:3px solid var(--gold);border-radius:5px}
.binding-group{border:1px solid #ffffff18;background:#1b1d2a}.binding-group h2{margin-top:0}.binding-grid button{background:#11131e}.audio-settings{background:#1b1d2a;padding:22px;border-radius:8px}input[type=range]{accent-color:var(--gold)}
@media(max-width:1050px){.intro{gap:18px}.rules{min-width:360px}.slots{gap:10px}.slot-content{padding:12px}.slot h3{font-size:20px}.slot-head{font-size:11px;padding:8px}.portrait{height:150px}.portrait img{height:145px;width:120px}.slot.empty{min-height:340px}}
@media(max-width:900px){.intro{align-items:center}.slots{grid-template-columns:repeat(2,minmax(0,1fr))}.portrait{height:180px}.portrait img{height:174px;width:145px}.hud{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.hud-card{padding:8px}.hud-portrait{width:30px;height:38px}.hud-card .name{font-size:12px;max-width:100%}.hud-card .damage{font-size:32px}.canvas-wrap{max-height:none}.rules{min-width:310px}.intro h1{font-size:36px}}
@media(max-width:620px){main{padding:18px 14px}.intro{display:block}.intro h1{font-size:44px}.rules{margin-top:20px;min-width:0;grid-template-columns:repeat(3,minmax(0,1fr));padding:12px;gap:8px}.rules select{padding:8px 4px}.section-head h2{font-size:17px}.section-head span{font-size:11px;padding:6px;white-space:nowrap}.slot.empty{min-height:350px}.slot h3{font-size:19px}.slot-head{font-size:11px}.portrait{height:155px}.portrait img{height:150px;width:123px}.slot-controls{grid-template-columns:1fr}.slot-controls button{min-height:40px}.hud{grid-template-columns:repeat(2,minmax(0,1fr))}.hud-portrait{width:40px;height:48px}.game-bar{gap:8px;grid-template-columns:1fr auto auto}.game-bar strong{font-size:23px;padding:5px 10px}.game-bar span{font-size:11px}.game-bar button{font-size:13px;padding:8px}.stage-list{grid-template-columns:1fr}.overlay-card{padding:12px;max-height:95%;overflow:auto}.overlay-card h2{font-size:26px;margin:5px}#results p{font-size:12px;padding:5px}.overlay-card .toolbar{margin:8px 0;gap:5px}.overlay-card button{font-size:12px;padding:7px;min-height:34px}.brand{font-size:12px}.brand img{width:30px;height:30px}header{gap:6px;padding:10px 12px}header button{font-size:12px;padding:7px}.stage-card.selected:after{top:22px;right:22px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important}}
/* Match desk: compact setup, direct roster choices and a unified arena HUD. */
body{background:radial-gradient(ellipse at 0 0,#681e35 0,transparent 45%),#0a101a}
.match-steps{display:flex;gap:28px;border-bottom:1px solid #ffffff17;padding:0 0 15px;margin-bottom:20px;color:#818ca1;font-size:13px;text-transform:uppercase;letter-spacing:1.2px;font-weight:800}.match-steps b{margin-right:7px;color:#657084}
body[data-screen=lobby] [data-step=lobby],body[data-screen=stages] [data-step=stages],body[data-screen=game] [data-step=game]{color:#ffd378}body[data-screen=game] .match-steps{display:none}
.intro{padding:0 0 18px}.intro h1{font-size:40px}.intro h1 span{display:inline;margin-left:10px}.intro p:last-child{display:none}.intro .eyebrow{font-size:11px;margin-bottom:8px}.rules{padding:10px 14px;gap:7px}.rules select{min-height:36px;padding:7px 10px}.rules label:last-child{font-size:11px}
kbd{display:inline-block;padding:2px 6px;border:1px solid #69758c;border-bottom-width:3px;background:#212c40;border-radius:4px;color:#fff;font:600 12px system-ui}
.slots{gap:14px}.slot{border-radius:12px;background:#152032}.slot-head{background:#0a1424}.slot.empty{min-height:395px;background:#111b2c;border-color:#354459;border-top-color:var(--player)}.slot.empty .slot-head{background:none;font-size:76px;opacity:.65}.slot.empty h3{font-size:18px}
.portrait{height:155px;background:linear-gradient(140deg,#ffffff0c,transparent 45%),linear-gradient(20deg,#0e182a,var(--player));}.portrait img{height:160px;width:145px;border-radius:0;transform:translateY(10px);box-shadow:0 0 0 5px #ffffff15}
.slot-content{padding:14px}.slot h3{font-size:24px}.slot .role{font-size:11px;margin:3px 0 8px}.slot p:not(.role){font-size:13px;min-height:38px;margin-bottom:10px}
.fighter-picker{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:auto}.fighter-picker button{display:flex;align-items:center;gap:8px;padding:5px;background:#0b1526;border:1px solid #41526d;min-width:0;min-height:42px;font-size:12px;color:#c4ccda}.fighter-picker img{width:26px;height:30px;object-fit:cover;object-position:top;border-radius:3px}.fighter-picker .selected{border-color:var(--player);color:#fff;background:#314059;box-shadow:inset 0 -2px var(--player)}.slot-controls{display:block;margin-top:8px;padding-top:0}.slot-controls .ready{width:100%;font-size:14px;min-height:38px}.slot.is-ready{box-shadow:0 0 0 1px var(--player),0 12px 28px #0004}
#lobby>.toolbar{margin:14px 0;padding:12px;background:#192338;border-color:#39475d}#lobby>.toolbar .primary{min-width:205px}.section-head{margin-top:15px}.footer-row{padding-bottom:8px}
body[data-screen=game] main{padding-top:14px}.canvas-wrap{max-height:calc(100dvh - 350px);border-radius:10px 10px 0 0;border-bottom:0;min-height:220px}.hud{grid-template-columns:repeat(var(--players,4),minmax(0,1fr));max-width:none;margin-top:0;gap:2px;padding:4px;background:#0b111c;border:1px solid #525869;border-radius:0 0 10px 10px}.hud-card{border-radius:5px;box-shadow:none;display:grid;grid-template-columns:1fr auto;column-gap:8px;padding:10px 14px}.hud-card .name{grid-column:1;grid-row:1;max-width:none}.hud-portrait{float:none;grid-column:2;grid-row:1/4;width:48px;height:62px}.hud-card .damage{grid-column:1;grid-row:2;font-size:38px}.hud-card .stats{grid-column:1;grid-row:3;font-size:11px}.shield-track{grid-column:1/-1;height:3px;background:#0006;margin:5px 0 2px}.shield-track b{display:block;height:100%;background:#a8bdd8;transition:width .1s}.hud-card .meter{grid-column:1/-1;margin:5px 0;height:7px}.hud-card small{grid-column:1/-1;font-size:10px}.hud-card.danger .damage{color:#ff7769}.hud-card.ultimate-ready{background:linear-gradient(130deg,#584727,#232737)}.hud-card.ultimate-ready small{color:#ffe2a3}.hud-card.ultimate-ready .meter i{background:#ffdc78}
.game-bar strong{background:#f4ca76;color:#192030;border:0;min-width:110px;text-align:center}.overlay-card{background:#142238;border-color:#61758f;border-top-color:#f4ca76}body[data-screen=game] .diagnostics{display:none}
@media(max-width:1100px){.intro h1{font-size:32px}.intro h1 span{display:block;margin-left:0}.slot h3{font-size:20px}.hud-card{padding:8px}.hud-card .name{font-size:12px}.hud-portrait{width:36px;height:49px}}
@media(max-width:700px){.match-steps{gap:15px;font-size:11px}.intro h1{font-size:36px}.slots{grid-template-columns:repeat(2,minmax(0,1fr))}.portrait{height:140px}.portrait img{height:145px;width:125px}.slot-content{padding:10px}.slot h3{font-size:19px}.fighter-picker button{display:grid;justify-items:center;gap:3px;font-size:11px}.fighter-picker img{width:32px;height:35px}.slot.empty{min-height:390px}.hud{grid-template-columns:repeat(2,minmax(0,1fr))}.canvas-wrap{max-height:none;min-height:0}.hud-card .stats{font-size:10px}.match-steps span{white-space:nowrap}.game-bar span{letter-spacing:0}.intro .rules{margin-top:12px}#lobby>.toolbar .primary{width:100%}}
.portrait{background:linear-gradient(140deg,#ffffff15,transparent 45%),linear-gradient(20deg,#0e182a,var(--outfit,var(--player)))}
.outfit-label{font-size:12px;color:#becbdd;display:flex;align-items:center;gap:8px;margin-top:10px}.outfit-label select{margin:0;font-size:12px;padding:6px;min-height:34px;flex:1}.slot .outfit-note{min-height:0!important;font-size:11px!important;margin:6px 0!important;color:#9caec4}.ability-guide{font-size:12px;min-height:32px;padding:5px;background:transparent}
#helpDialog{width:min(900px,94vw);max-height:88dvh;overflow:auto;background:#132034;color:#edf2fa;border:1px solid #64768e;border-top:5px solid #f4ca76;border-radius:12px;padding:24px;box-shadow:0 25px 100px #0009}#helpDialog::backdrop{background:#050b16dc;backdrop-filter:blur(5px)}.help-header{display:flex;align-items:center;justify-content:space-between;position:sticky;top:-24px;background:#132034;padding:12px 0;z-index:2;border-bottom:1px solid #ffffff20}.help-header h2{font-size:30px;margin:0}.help-header .eyebrow{margin:0 0 5px}#helpContent{line-height:1.6;font-size:15px}.keyboard-guides,.teacher-guides{display:grid;grid-template-columns:1fr 1fr;gap:18px}.keyboard-guides section,.teacher-guides section{background:#0b1628;border:1px solid #35465f;border-radius:8px;padding:16px}.key-guide{margin:0}.key-guide>div{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff10;padding:7px 0;gap:8px}.key-guide dt{font-size:13px}.key-guide dd{margin:0;white-space:nowrap}#helpContent h3{color:#ffda8a}.teacher-guides dt{font-size:13px;font-weight:800;color:#9bbdec}.teacher-guides dd{margin:0 0 12px;font-size:14px}.combat-guide ul{padding-left:20px}.combat-guide li{margin:10px 0}@media(max-width:620px){.keyboard-guides,.teacher-guides{grid-template-columns:1fr}#helpDialog{padding:16px}.help-header{top:-16px}.outfit-label{display:block}.outfit-label select{width:100%;margin-top:5px}}
/* Always available, outside the action. */
.quick-controls{margin:12px 0;background:#121e30;border:1px solid #42516a;border-left:3px solid #f4ca76;border-radius:8px;padding:10px 14px;font-size:14px}.quick-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.quick-top strong{color:#f4ca76}.quick-top select{margin:0;max-width:190px}.quick-top button,.quick-top select{min-height:32px;padding:5px 10px;font-size:14px}.quick-top #toggleKeys{margin-left:auto}#quickKeys{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:10px}#quickKeys span{white-space:nowrap;color:#dae4f3}.quick-tip{font-size:12px;color:#aab9cf;margin:8px 0 0}.quick-controls.collapsed #quickKeys,.quick-controls.collapsed .quick-tip{display:none}.player-name-label{display:block;font-size:13px;color:#c0cee1;margin:10px 0}.player-name{display:block;width:100%;min-width:0;box-sizing:border-box;background:#0c1727;color:#fff;border:1px solid #60718c;border-radius:5px;padding:8px;font:inherit;margin-top:5px}#boardDialog{width:min(740px,94vw);max-height:85dvh;overflow:auto;background:#132034;color:#edf2fa;border:1px solid #64768e;border-top:5px solid #f4ca76;border-radius:12px;padding:24px}#boardDialog::backdrop{background:#050b16dc;backdrop-filter:blur(5px)}#boardDialog p{line-height:1.5}.board-scroll{overflow-x:auto}#boardDialog table{width:100%;border-collapse:collapse;margin:15px 0;font-size:14px}#boardDialog th,#boardDialog td{text-align:left;padding:12px 8px;border-bottom:1px solid #ffffff20}#boardDialog th{color:#f4ca76}#boardDialog td:nth-child(2){max-width:220px;overflow-wrap:anywhere}#boardEmpty{border:1px dashed #65768e;padding:20px;border-radius:8px}body[data-screen="game"] .canvas-wrap{max-width:1100px;margin-inline:auto}body[data-screen="game"] #canvas{max-height:calc(100dvh - 440px);min-height:260px}@media(max-width:700px){.quick-top #toggleKeys{margin-left:0}.quick-top select{max-width:155px}#boardDialog{padding:14px}}

body[data-screen="game"] .canvas-wrap{height:clamp(260px,calc(100dvh - 450px),650px);max-height:none;aspect-ratio:auto}body[data-screen="game"] #canvas{height:100%;max-height:none;min-height:0}

/* Campus match identity: legible jersey colors and controls at every size. */
:root{--gold:#ffdb92;--panel:#142236;--muted:#bed0e0}
body{background:
 radial-gradient(circle at 84% 4%,#28526647 0,transparent 31%),
 radial-gradient(circle at 6% 0%,#81224376 0,transparent 45%),
 #0c1422}
header{border-bottom:3px solid #bd384e;background:#0b1423f5;box-shadow:0 10px 32px #04081188}
.brand{letter-spacing:1px}.brand img{background:#f4ecd8;border-radius:5px;padding:2px}
.edition{color:#d7d7ce;letter-spacing:2.4px;font-size:11px;font-weight:850}
main{max-width:1480px}
.match-steps{padding:0 0 15px;gap:28px}
.match-steps span{border-radius:4px;padding:7px 11px;background:#132238;color:#b2c5d3}
.match-steps b{color:#e9bf72}
body[data-screen=lobby] [data-step=lobby],body[data-screen=stages] [data-step=stages],body[data-screen=game] [data-step=game]{color:#172233;background:#ffdc91}
body[data-screen=lobby] [data-step=lobby] b,body[data-screen=stages] [data-step=stages] b{color:#872a3b}
.intro h1{font-size:clamp(36px,4.4vw,60px);line-height:1.03;color:#ffede2;text-shadow:3px 4px 0 #8c2543}
.intro h1 span{color:#ffd98d}
.rules,#lobby>.toolbar,.stage-card,.quick-controls{background:#15253a;border:1px solid #425774;box-shadow:0 8px 22px #02081745}
.slot{background:#142339;border-color:#52637d;border-top:6px solid var(--player);box-shadow:0 9px 0 #081221,0 14px 30px #0008}
.slot.is-ready{box-shadow:0 0 0 2px var(--player),0 9px 0 #081221,0 15px 32px #0008}
.slot-head{background:#0b1729;color:#fff;text-shadow:0 1px 3px #000}
.slot-head::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--player);box-shadow:0 0 0 3px #ffffff23}
.portrait{background:radial-gradient(ellipse at 55% 95%,var(--player) 0,#101d32 65%);border-bottom:3px solid var(--player)}
.portrait::before{content:'FRISCH VARSITY';position:absolute;top:16px;right:9px;font-weight:900;letter-spacing:2px;font-size:9px;color:#ffffff98;writing-mode:vertical-rl}
.portrait img{height:160px;width:152px;object-fit:cover;object-position:top;transform:translateY(10px);border:3px solid #fff5;border-bottom:0;box-shadow:0 7px 18px #07091695}
.slot h3{color:#fff3e6}.slot .role{color:var(--player)}
.fighter-picker button{border-radius:6px}
.fighter-picker button:hover:not(:disabled){border-color:#ffe2a0}
.fighter-picker .selected{box-shadow:inset 0 -3px var(--player),0 0 0 1px var(--player)}
.outfit-label{font-weight:800}.outfit-label select{background:#0b1b2d}
.slot .outfit-note{color:#bac9d8}
.slot.empty{border:2px dashed #4d647d;border-top:5px solid var(--player);box-shadow:none}
.stage-card{border-radius:8px;transition:transform .15s,box-shadow .15s}
.stage-card:hover:not(:disabled){transform:translateY(-2px)}
.stage-card.selected{border-color:#ffda8a;box-shadow:0 0 0 2px #ffdb9266,0 14px 30px #0007}
.stage-card canvas{border:1px solid #b6c1ca55}
.canvas-wrap{background:#111b2b;border:2px solid #75879d;box-shadow:0 12px 0 #091120,0 25px 45px #0009}
.hud{border-color:#75879d;background:#0d1c31}
.hud-card{border-top-width:5px;background:linear-gradient(135deg,#213147,#122137);border-left:1px solid #506681}
.hud-card .name{color:#fff;font-weight:900;text-shadow:0 1px 2px #000}
.hud-card .damage{font-variant-numeric:tabular-nums;text-shadow:0 2px 2px #050b13}
.hud-portrait{border:2px solid var(--player);box-shadow:0 2px 0 #020711}
.hud-card.ultimate-ready{background:linear-gradient(135deg,#63522d,#203147);box-shadow:inset 0 0 0 1px #ffe1a5}
.hud-card.ultimate-ready small{color:#fff0c5}
.game-bar strong{border-radius:5px;box-shadow:0 3px 0 #8d5f2a}
.overlay-card{border-radius:9px;border-top-width:7px;background:linear-gradient(140deg,#253954,#111d30)}
.overlay-card h2{font-style:normal;letter-spacing:-1px}
#banner:not(:empty){background:#0e1c31e8;border:1px solid #ffdb93;color:#ffecbd}
.quick-controls{border-left:5px solid #f6cd76}
button.primary{background:#ffdb91;color:#202038;border:1px solid #fff0c3;box-shadow:0 3px 0 #966827}
button.primary:hover:not(:disabled){background:#ffe5ab}
button:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid #ffedbd;outline-offset:2px}
@media(max-width:1050px){.portrait img{height:148px;width:132px}}
@media(max-width:700px){.match-steps{gap:6px}.match-steps span{padding:5px}.portrait img{height:137px;width:118px}.slot{box-shadow:0 6px 0 #081221,0 10px 20px #0008}.slot.is-ready{box-shadow:0 0 0 1px var(--player),0 6px 0 #081221}.hud-card .damage{font-size:30px}}
@media(prefers-reduced-motion:reduce){.stage-card,.portrait img{transition:none!important}}

.fighter-maintenance{position:fixed;inset:0;z-index:180;display:grid;place-items:center;padding:24px;background:#0d1423f5;color:#edf2fa}.fighter-maintenance>div{max-width:460px;text-align:center;padding:32px;border:1px solid #35445a;background:#172235;border-radius:18px}.fighter-maintenance small{display:inline-block;padding:8px 14px;border:1px solid #ffadc040;border-radius:999px;color:#ffadc0;font-size:14px;font-weight:750}.fighter-maintenance h2{font-size:28px;margin:20px 0 12px}.fighter-maintenance p{font-size:16px;line-height:1.6;overflow-wrap:anywhere}.fighter-maintenance p:last-child{font-size:14px;color:#9eafc4;margin-top:24px}

/* Arcade fighter selection and match display. */
:root{--gold:#ffd05c;--panel:#141f35}
body{background:radial-gradient(ellipse at top,#273d61 0,#0b1120 65%)}
.intro h1{font-style:normal;font-family:monospace;letter-spacing:-2px;text-shadow:4px 4px 0 #8c2343}
.slot{border-radius:4px;border-width:2px;box-shadow:5px 5px 0 #050a15}
.slot .role{color:var(--gold);font-size:14px;font-weight:900}
.fighter-portrait{width:100%;height:200px;object-fit:contain;image-rendering:pixelated}
.portrait{height:200px;background:repeating-linear-gradient(0deg,#ffffff03 0 2px,transparent 2px 6px),#15233b}
button,select{border-radius:4px}.slot h3{font-family:monospace;font-size:26px}
.canvas-wrap{border:3px solid #466186;border-radius:4px;box-shadow:0 8px 0 #050b18}
#canvas{image-rendering:pixelated}.game-bar{background:#14213a;border:1px solid #344d70;padding:12px 16px}
.hud>div,.hud>article{border-radius:4px;box-shadow:4px 4px 0 #050a16}
.hud small{font-size:14px;line-height:1.4;white-space:normal}.hud .damage{font-family:monospace;font-weight:950}
#banner{font-family:monospace;font-weight:900;text-shadow:2px 2px #000}
@media(max-width:650px){.intro h1{font-size:34px}.hud small{font-size:12px}}

/* Every teacher carries a distinct attack identity into setup and play. */
.attack-summary{margin:12px 0;padding:10px;background:var(--attack-soft);border:1px solid var(--attack);border-left-width:4px;border-radius:4px}
.attack-identity{display:block;color:var(--attack);font-size:14px;font-weight:900;letter-spacing:.6px;text-transform:uppercase}
.attack-summary dl{margin:7px 0 0}.attack-summary dl>div{display:grid;grid-template-columns:44px minmax(0,1fr);gap:7px;margin-top:5px}.attack-summary dt{font-size:12px;font-weight:800;color:#c0ccdb;text-transform:uppercase;align-self:center}.attack-summary dd{margin:0;font-size:14px;font-weight:750;line-height:1.35;overflow-wrap:anywhere}
.hud-card .current-move{grid-column:1/-1;color:var(--attack);font-size:14px;font-weight:850;min-height:16px;margin:5px 0 0;line-height:1.4;overflow-wrap:anywhere}.hud-card .current-move.attacking{background:var(--attack-soft);border-left:2px solid var(--attack);padding:2px 6px}.hud-card .meter i,.hud-card.ultimate-ready .meter i{background:var(--attack)}.hud-card small,.hud-card.ultimate-ready small{color:var(--attack);font-size:14px;letter-spacing:0;line-height:1.4}.hud-card.ultimate-ready{background:linear-gradient(135deg,var(--attack-soft),#14243a);box-shadow:inset 0 0 0 1px var(--attack)}
.quick-controls{border-left-color:var(--attack,#ffd166)}.quick-top strong{color:var(--attack,#ffd166);font-size:13px}#quickKeys{gap:6px 10px}#quickKeys>span{white-space:normal;display:flex;align-items:center;gap:5px;font-size:12px;line-height:1.4;padding:5px 7px;border:1px solid #ffffff1b;border-radius:4px}#quickKeys>span kbd{flex-shrink:0}#quickKeys>.move-chip{color:var(--attack);background:var(--attack-soft);border-color:var(--attack)}.quick-tip{line-height:1.6}.quick-controls.collapsed .quick-tip{display:none}
.touch-actions [data-touch=attack],.touch-actions [data-touch=special],.touch-actions [data-touch=ultimate]{display:flex;flex-direction:column;justify-content:center;gap:3px;border:2px solid var(--attack);background:var(--attack-soft);color:#fff;line-height:1.2}.touch-actions button small{color:var(--attack);font-size:12px;font-weight:850;letter-spacing:.5px;text-transform:uppercase}.touch-actions button span{font-size:14px;font-weight:800;overflow-wrap:anywhere}.touch-actions [data-touch=ultimate].is-super-ready{background:var(--attack);color:#0b1729;box-shadow:0 0 12px var(--attack-soft)}.touch-actions [data-touch=ultimate].is-super-ready small{color:#0b1729}
.guide .character-guide{border:1px solid var(--attack);border-top:4px solid var(--attack);background:linear-gradient(130deg,var(--attack-soft),#0b1628);padding:14px;border-radius:4px}.character-guide h3{margin:0 0 6px;color:var(--attack)}.character-guide p{font-size:12px;line-height:1.8}.character-guide b{color:#f2f5f9}.teacher-guides section{border-top:4px solid var(--attack);background:linear-gradient(130deg,var(--attack-soft),#0b1628)}#helpContent .teacher-guides h3,.teacher-guides dt{color:var(--attack)}
@media(max-width:700px){.attack-summary{padding:8px}.attack-summary dl>div{grid-template-columns:39px minmax(0,1fr);gap:4px}.attack-summary dd{font-size:14px}.attack-identity{font-size:12px}.touch-actions{max-width:520px}.quick-top strong{font-size:12px}.hud-card .current-move{font-size:12px}.hud-card small{font-size:12px}}
@media(max-width:420px){.touch-actions{grid-template-columns:repeat(4,minmax(0,1fr))}.touch-actions button{min-width:0;padding:6px 3px}.touch-actions button span{font-size:12px}.attack-summary dl>div{display:block}.attack-summary dt{font-size:12px;margin-top:6px}.attack-summary dd{margin-top:1px}}

/* Combat labels change constantly; reserve their rows so the page stays still. */
#game{overflow-anchor:none}
.hud-card{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:40px 46px 42px 8px 46px 12px 60px;align-content:start}
.hud-card .name{grid-row:1;line-height:20px;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.hud-card .damage{grid-row:2;line-height:46px}
.hud-card .stats{grid-row:3;grid-column:1/-1;line-height:14px;overflow:hidden;font-variant-numeric:tabular-nums}
.hud-card .shield-track{grid-row:4;margin:2px 0}
.hud-card .current-move,.hud-card .current-move.attacking{grid-row:5;height:46px;margin:0;padding:3px 6px;border-left:2px solid transparent;line-height:20px;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.hud-card .current-move.attacking{border-left-color:var(--attack)}
.hud-card .meter{grid-row:6;margin:2px 0}
.hud-card small{grid-row:7;height:60px;line-height:20px;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}
.touch-actions{grid-auto-rows:104px}
.touch-actions button{height:104px;min-height:104px;overflow:hidden}
.touch-actions button span{line-height:1.25;max-height:3.75em;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.ai-setup{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:18px;border:2px solid #69e8d3;background:#142c3b;border-radius:6px;margin:16px 0}
.ai-setup>div{flex:1 1 240px}.ai-setup h2{margin:0 0 6px;font-size:22px}.ai-setup p{margin:0;color:#c4d7e7;font-size:14px;line-height:1.5}.ai-setup label{display:grid;gap:6px;font-size:14px;font-weight:750}.ai-setup select{min-width:110px;margin:0}.ai-setup #aiStatus{flex-basis:100%;font-size:14px;color:#69e8d3}.ai-random-label{display:flex;align-items:start;gap:8px;font-size:14px;line-height:1.5;margin:12px 0;color:#c4d7e7}.ai-random-label input{margin-top:4px;flex-shrink:0}
@media(max-width:560px){.ai-setup{gap:12px;padding:14px}.ai-setup>div{flex-basis:100%}.ai-setup label{flex:1}.ai-setup button{width:100%}}
