/* Shared arcade language. Character art and arena assets retain their original colors. */
:root{--ui-blue:#aecdf0;--ui-yellow:#f5dea1;--ui-orange:#f5bd99;--ui-ink:#edf3fa;--ui-muted:#c0cedc;--ui-surface:#233345ed;--ui-soft:#273b50dc;--ui-edge:#71869b70;--ui-shadow:0 3px 12px #08132325;--ui-radius:9px;font-family:'Trebuchet MS',system-ui,sans-serif}
body[data-ui-theme="light"]{color-scheme:light;--ui-ink:#203449;--ui-muted:#435c72;--ui-surface:#edf5fbed;--ui-soft:#dbeaf5e8;--ui-edge:#68829960;--ui-shadow:0 3px 12px #233d5520}
body{color:var(--ui-ink);background:#b5cce0}
.theme-golem{--fighter-accent:#b5d39d;--fighter-dark:#38553a;--wound:#9af179;--wound-hot:#d6ffc0;--fighter-texture:url('assets/golem-theme.webp')}
.theme-assassin{--fighter-accent:#a3d9ee;--fighter-dark:#31526c;--wound:#68dbff;--wound-hot:#e0faff;--fighter-texture:url('assets/assassin-theme.webp')}
.theme-mage{--fighter-accent:#f2bc95;--fighter-dark:#704833;--wound:#ff9e48;--wound-hot:#ffe0a0;--fighter-texture:url('assets/mage-theme.png')}
button,select{font:700 14px 'Trebuchet MS',system-ui,sans-serif;min-height:38px;border:1px solid var(--ui-edge);border-radius:var(--ui-radius);background:var(--ui-surface);color:var(--ui-ink);box-shadow:var(--ui-shadow);text-shadow:none;transition:background .16s,transform .12s,border-color .16s;padding:7px 10px}
button:hover:not(:disabled){background:var(--ui-soft);filter:none;border-color:var(--ui-blue)}button:active:not(:disabled){transform:translateY(1px);box-shadow:none}button:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--ui-orange);outline-offset:2px}button:disabled{opacity:.43;filter:none}
button::before,button::after{box-shadow:none}header{background:none;border:0;box-shadow:none}.header-actions{gap:5px}.header-actions button{font-size:13px;min-height:34px;padding:5px 8px}
.primary,.confirm{background:var(--ui-blue);color:#203449;border:1px solid #7f9bb750;box-shadow:var(--ui-shadow);font-weight:800;text-shadow:none;min-height:39px}.primary:hover:not(:disabled),.confirm:hover:not(:disabled){background:#c2daf4;color:#203449}.player .confirm{background:var(--fighter-accent);border-color:transparent;color:#203449}
.player{background:none;border:0;border-radius:0;box-shadow:none;padding:3px 2px;margin:0;backdrop-filter:none;overflow:visible}.player::before,.player::after{display:none}.player h2{background:var(--ui-surface);border:0;border-left:2px solid var(--fighter-accent);box-shadow:var(--ui-shadow);border-radius:var(--ui-radius);padding:6px 8px;margin:0 0 5px;gap:7px;font-size:15px;min-height:38px;color:var(--ui-ink);text-shadow:none}.player h2 .fighter-portrait{width:27px;height:27px;border:0;border-radius:6px;box-shadow:none}.fighter-heading{min-width:0}.current{color:var(--ui-muted);font-size:12px}.fighter-portrait{border:0;box-shadow:none}
.card-choices{gap:5px}.card-choices button{background:var(--ui-surface);border:1px solid var(--ui-edge);box-shadow:var(--ui-shadow);border-radius:8px;min-height:37px;padding:4px 6px;gap:5px;color:var(--ui-ink)}.card-choices button[aria-pressed="true"]{border-color:var(--fighter-accent);background:var(--ui-soft);box-shadow:inset 0 -2px var(--fighter-accent)}.card-choices img{width:27px;height:27px}.card-choices span{font-size:12px}
.coupling{background:none;border:0;box-shadow:none;margin:5px 0 0;padding:0}.dial-labels{gap:7px}.dial-labels span{background:var(--ui-surface);border-radius:6px;padding:3px 6px;font-size:12px;color:var(--ui-muted);box-shadow:var(--ui-shadow)}.dial-labels output{color:var(--ui-ink);font-weight:800}.coupling-svg{height:132px;max-height:132px;background:none;overflow:visible}.coupling-svg image{filter:drop-shadow(0 2px 2px #0a172a35)}.dial-buttons{margin:0;gap:10px}.dial-buttons button{min-height:36px;min-width:45px;font-size:23px;padding:1px 10px;background:var(--ui-surface);color:var(--ui-ink)}
.coupling-hint,.micro-readout,.inertia{width:fit-content;max-width:100%;margin:4px auto;padding:3px 7px;border-radius:6px;background:var(--ui-surface);box-shadow:var(--ui-shadow);color:var(--ui-muted);font-size:12px;line-height:1.3;border:0;text-align:center}.micro-readout{color:var(--ui-ink);font-weight:700}.inertia{margin:4px 0}.speed{background:var(--ui-surface);color:var(--ui-muted);border:0;box-shadow:var(--ui-shadow);border-radius:8px;padding:5px 8px;margin:5px 0;gap:5px}.speed b{color:var(--ui-ink);font-size:21px}.speed small{color:var(--ui-muted);font-size:12px;line-height:1.35}.spin-box{border:0;background:var(--ui-surface);padding:4px 7px;border-radius:7px;color:var(--ui-ink);font-size:12px}.spin-box button{font-size:12px;min-height:32px}
aside{background:none;box-shadow:none;padding:0 6px 5px}.fighter-hud{background:var(--ui-surface);border:0;border-left:2px solid var(--fighter-accent);box-shadow:var(--ui-shadow);border-radius:8px;padding:5px 7px;backdrop-filter:blur(5px);width:min(260px,62vw)}.health-title{gap:6px}.health-title b{color:var(--ui-ink);font-size:14px;text-shadow:none}.health-title>span{color:var(--ui-ink);font-size:13px}.hud-known{font-size:11px;color:var(--ui-muted)}.health-title .fighter-portrait{width:23px;height:23px;border-radius:5px}.healthbar{height:12px;gap:3px;margin:4px 0 0;background:none;border:0;box-shadow:none}.hp-unit{transform:none;gap:0;overflow:hidden;border-radius:3px;background:#542b32;box-shadow:inset 0 0 0 1px #101a2540}.hp-segment{position:relative;min-width:0;transition:background-color .3s;box-shadow:none}
/* Existing theme textures provide material; bright fracture marks encode partial injury. */
.hp-segment.alive{background-color:#29382d;background-image:linear-gradient(#17241dbb,#17241dbb),var(--fighter-texture);background-size:cover;filter:none}.theme-assassin .hp-segment.alive{background-color:#243445;background-image:linear-gradient(#19293bc4,#19293bc4),var(--fighter-texture)}.theme-mage .hp-segment.alive{background-color:#343338;background-image:linear-gradient(#292529c4,#292529c4),var(--fighter-texture)}
.hp-segment.scratch{background-color:var(--fighter-dark);background-image:linear-gradient(118deg,transparent 33%,var(--wound-hot) 35%,var(--wound) 43%,transparent 46%),linear-gradient(53deg,transparent 55%,var(--wound) 57%,var(--wound-hot) 62%,transparent 65%);box-shadow:inset 0 1px var(--wound),inset 0 -1px color-mix(in srgb,var(--wound) 65%,transparent)}.hp-segment.lost{background:#663039;background-image:none;box-shadow:inset 0 0 3px #251a2455;opacity:1}
.stage,#notice{background:var(--ui-surface);color:var(--ui-ink);border:0;box-shadow:var(--ui-shadow);border-radius:7px;backdrop-filter:blur(4px)}.stage{gap:8px;padding:4px 7px}#turn{font-size:13px;color:var(--ui-ink)}#phase{font-size:12px;color:var(--ui-muted)}#notice{padding:4px 7px;font-size:12px;line-height:1.4;min-height:0}.camera-controls{background:none;border:0;box-shadow:none;gap:4px;padding:0}.camera-controls button{background:var(--ui-surface);color:var(--ui-ink);min-width:32px;min-height:32px;padding:3px 7px;font-size:14px;box-shadow:var(--ui-shadow)}
#board .token-disc{filter:drop-shadow(0 3px 2.8px #09132155)}.micro-arrow{filter:drop-shadow(0 2px 1.5px #08172a65)}.inertia-arrows{filter:drop-shadow(1px 0 0 #10202c) drop-shadow(-1px 0 0 #10202c) drop-shadow(0 1px 0 #10202c) drop-shadow(0 2px 1.5px #08172a65)}
.hit-card,.finale{background:var(--ui-surface);color:var(--ui-ink);border:1px solid var(--ui-edge);box-shadow:var(--ui-shadow);border-radius:9px;padding:8px}.hit-card strong,.finale strong{color:var(--ui-ink);text-shadow:none}.finale p,.finale-kicker{color:var(--ui-muted)}.finale{animation:panel-arrive .25s ease-out}.finale::before,.finale::after{display:none}.finale .fighter-portrait{border:0;box-shadow:none}.directionbuttons button{flex:1}.directionbuttons{gap:6px}#actions p{background:var(--ui-surface);color:var(--ui-ink);padding:6px;border-radius:6px;font-size:14px}
#handoff{background:var(--ui-surface);color:var(--ui-ink);border:1px solid var(--ui-edge);box-shadow:var(--ui-shadow);border-radius:10px;padding:14px;min-height:160px;backdrop-filter:blur(6px)}#handoff h2{font-size:18px}#handoff p{color:var(--ui-muted)}#handoff strong{color:var(--ui-ink);font-size:17px}#handoff-ready{font-size:13px}
dialog{color:var(--ui-ink);background:var(--ui-surface);border:1px solid var(--ui-edge);border-radius:14px;box-shadow:0 8px 36px #07142635;backdrop-filter:blur(12px)}dialog::backdrop{background:#0d1d3038;backdrop-filter:none}#setup{background:var(--ui-surface);color:var(--ui-ink);box-shadow:0 8px 36px #07142635;border:1px solid var(--ui-edge)}.setup-heading h2{color:var(--ui-ink);text-shadow:none}.setup-heading>span{color:var(--ui-muted)}.setup-heading p,.priority-note{color:var(--ui-muted)}.select-player h3{color:var(--ui-ink)}.roster-card{background:var(--ui-soft);border:1px solid var(--ui-edge);border-radius:10px;box-shadow:none;overflow:hidden}.roster-card[aria-pressed="true"]{border-color:var(--fighter-accent);box-shadow:inset 0 -3px var(--fighter-accent);background:var(--ui-soft)}.roster-card b{color:var(--ui-ink);text-shadow:none}.roster-card span{color:var(--ui-muted)}.roster-card em{background:var(--fighter-accent);color:#203449;box-shadow:none;font-size:12px}.roster-card img{filter:none}.setup-audio{background:var(--ui-soft);color:var(--ui-ink)}
#options-dialog{width:min(420px,calc(100vw - 36px));max-height:72dvh;padding:0;margin:auto;overflow:hidden}#options-dialog:not([open]){display:none}.options-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--ui-edge);background:var(--ui-soft)}.options-heading h2{margin:0;font-size:19px}.options-heading button{font-size:24px;line-height:1;min-width:34px;min-height:34px;padding:3px;box-shadow:none;background:none;border:0}.options-content{padding:14px 16px;max-height:calc(72dvh - 60px);overflow-y:auto;overscroll-behavior:contain}.options-content label{font-size:14px;color:var(--ui-ink);margin:0 0 7px}.options-content select{width:100%;font-size:14px;background:var(--ui-soft);color:var(--ui-ink)}.options-audio{margin:12px 0;width:100%}.options-content details{display:block;padding:11px 0;border-top:1px solid var(--ui-edge);font-size:14px;color:var(--ui-ink)}.options-content summary{font-size:14px;color:var(--ui-ink)}.options-content p,.options-content #log{font-size:14px;line-height:1.55;color:var(--ui-muted)}.options-content input[type="range"]{width:100%;accent-color:#7ca6cf;margin:4px 0 14px}.options-content .sound-settings label{margin-top:12px}.options-content output{color:var(--ui-muted)}
body.options-open #board *,body.options-open #announcement{animation-play-state:paused!important}
@keyframes panel-arrive{from{opacity:0;translate:0 5px}to{opacity:1;translate:0 0}}@media(max-width:380px){.player{padding:2px}.card-choices button{padding:3px}.card-choices span{font-size:11px}.coupling-svg{height:120px}.header-actions button{font-size:12px;padding:4px 6px}}
@media(prefers-reduced-motion:reduce){button,select{transition:none}.finale{animation:none}}

/* Material-led fantasy HUDs: one shared geometry for all three fighters. */
:root{--ui-surface:#263e59f2;--ui-soft:#365474ee;--ui-edge:#b1cbea88;--ui-shadow:0 6px 15px #050d234a,0 1px 2px #02081760}
body[data-ui-theme="light"]{--ui-surface:#fff0cdf2;--ui-soft:#f5d8b6f0;--ui-edge:#7198b58c;--ui-shadow:0 5px 15px #3a354c35,0 1px 2px #4a36402b}
#options-dialog,#setup{border:1px solid var(--ui-edge);box-shadow:var(--ui-shadow),inset 0 2px 0 var(--ui-yellow)}
.options-heading{border-bottom:1px solid var(--ui-orange)}body[data-ui-theme="light"] .options-heading{border-bottom-color:#6d97bb}
.stage,header button,.camera-controls button{border-top:1px solid color-mix(in srgb,var(--ui-yellow) 70%,transparent);box-shadow:var(--ui-shadow)}body[data-ui-theme="light"] .stage,body[data-ui-theme="light"] header button,body[data-ui-theme="light"] .camera-controls button{border-top-color:#8fb3d4}
.theme-golem{--material-shade:#17251adc;--material-ink:#eff9e7;--material-muted:#c7d8bc;--fighter-accent:#a8dc79;--hp-row:20.15%;--energy:#65ff64}
.theme-assassin{--material-shade:#122338dc;--material-ink:#e4f6ff;--material-muted:#bdd9ed;--fighter-accent:#88d8f5;--hp-row:56.59%;--energy:#43d5ff}
.theme-mage{--material-shade:#302322da;--material-ink:#fff0df;--material-muted:#e6cdb8;--fighter-accent:#ffb47a;--hp-row:91.54%;--energy:#ff912b}
.fighter-hud,.player h2,.player .speed,.player .inertia,.player .micro-readout,.player .coupling-hint,.player .dial-labels span,.player .spin-box,.player .card-choices button,.player .dial-buttons button,.roster-card,.finale{
 background-color:#1b2833;background-image:linear-gradient(var(--material-shade),var(--material-shade)),var(--fighter-texture);background-size:cover;background-position:center;color:var(--material-ink);border:1px solid color-mix(in srgb,var(--fighter-accent) 48%,#26313e);box-shadow:var(--ui-shadow),inset 0 1px 0 color-mix(in srgb,var(--fighter-accent) 20%,transparent);opacity:1
}
.fighter-hud{backdrop-filter:none;isolation:isolate;overflow:visible;min-height:59px;border-left-width:2px}
.fighter-hud .health-title b,.fighter-hud .health-title>span,.player h2,.player .speed b,.player .dial-labels output,.roster-card b,.finale strong{color:var(--material-ink)}
.fighter-hud .hud-known,.player .current,.player .speed small,.player .inertia,.roster-card span,.finale p{color:var(--material-muted)}
.player .card-choices button[aria-pressed="true"]{background-color:#263540;background-image:linear-gradient(var(--material-shade),var(--material-shade)),var(--fighter-texture);border-color:var(--fighter-accent);box-shadow:var(--ui-shadow),inset 0 -2px var(--fighter-accent)}
.player .card-choices button:disabled{opacity:.68}.player .card-choices button:disabled[aria-pressed="true"]{opacity:1}
.player .confirm{box-shadow:0 5px 12px #09152350;border-bottom:2px solid var(--fighter-dark)}
.health-title{grid-template-columns:25px minmax(0,1fr) auto;min-height:28px}.health-title b{overflow-wrap:anywhere;min-width:0}.health-title .fighter-portrait{width:25px;height:25px;flex-shrink:0;border:1px solid var(--fighter-accent)}
.healthbar{height:18px;gap:4px;overflow:visible}.hp-unit{gap:1px;border:1px solid #b5c9d04d;border-radius:4px;box-shadow:0 2px 3px #050c1c80;overflow:hidden}.hp-segment{border-radius:2px}
/* Sample the supplied reference as a sprite sheet, without altering its pixels. */
.fighter-hud .hp-segment.alive,.fighter-hud .hp-segment.scratch,.fighter-hud .hp-segment.lost{background-image:url('assets/hud-reference.png');background-size:2194.286% 938.182%;background-repeat:no-repeat;filter:none;opacity:1}
.fighter-hud .hp-segment.alive{background-position:14.05% var(--hp-row);background-color:#314638;box-shadow:inset 0 0 1px #fff8}
.fighter-hud .hp-segment.scratch{background-position:71.05% var(--hp-row);background-color:var(--energy);box-shadow:inset 0 0 0 1px var(--energy),inset 0 0 5px var(--energy);filter:brightness(1.18)}
.fighter-hud .hp-segment.lost{background-position:85.1% var(--hp-row);background-color:#67171a;box-shadow:inset 0 0 4px #21050988}
.stage{top:calc(47px + var(--top-hud-height,59px) + 7px)}#notice{top:calc(47px + var(--top-hud-height,59px) + 7px + var(--stage-height,28px) + 5px)}
#board .token-disc{filter:drop-shadow(0 6px 4px #030a1677) drop-shadow(1px 2px 1px #0006)}
.micro-arrow{filter:drop-shadow(1px 5px 3px #030b1688)}.inertia-arrows{filter:drop-shadow(1px 0 0 #10202c) drop-shadow(-1px 0 0 #10202c) drop-shadow(0 1px 0 #10202c) drop-shadow(1px 5px 3px #030b1688)}
.game-logo{display:block;width:104px;height:104px;object-fit:contain;margin:0 auto 8px;border-radius:10px}.options-logo{width:32px;height:32px;object-fit:contain;border-radius:5px;vertical-align:middle;margin-right:5px}
body.booting{background:#000}body.booting>header,body.booting>main{visibility:hidden}
#intro{position:fixed;inset:0;z-index:9999;background:#000;display:grid;place-items:center;overflow:hidden}#intro[hidden]{display:none}
#intro-logo{width:min(88vw,76dvh,670px);height:auto;opacity:0;transform:scale(.02);object-fit:contain;will-change:transform,opacity;mix-blend-mode:screen}
.intro-point{position:absolute;left:50%;top:50%;width:5px;height:5px;border-radius:50%;background:#fff3c0;box-shadow:0 0 12px #ffe298,0 0 26px #a7d9ff;transform:translate(-50%,-50%);opacity:0}
#intro.running .intro-point{animation:intro-point .85s ease-out both}#intro.running #intro-logo{animation:intro-logo 2.5s cubic-bezier(.17,.75,.25,1) both}#intro.running{animation:intro-out 2.5s linear both}
@keyframes intro-point{0%{opacity:0;scale:.1}18%{opacity:1;scale:1}50%{opacity:1;scale:4}100%{opacity:0;scale:35}}
@keyframes intro-logo{0%,9%{opacity:0;transform:scale(.02);clip-path:circle(0%)}40%{opacity:1;transform:scale(1);clip-path:circle(75%)}51%{filter:brightness(1.3);transform:scale(1.025)}64%,88%{opacity:1;filter:brightness(1);transform:scale(1);clip-path:circle(75%)}100%{opacity:0;transform:scale(1.035);clip-path:circle(75%)}}
@keyframes intro-out{0%,88%{opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){#intro.running .intro-point{animation:none}#intro.running #intro-logo{animation:intro-reduced 2.5s linear both;transform:none;clip-path:none}@keyframes intro-reduced{0%{opacity:0}20%,85%{opacity:1}100%{opacity:0}}}
