/* Golden Clash deployment bundle. Generated by build-game.cjs; edit the modular source files. */

/* ===== Source: interactive.css ===== */
/* Interactive additions retain the original card and portrait border artwork. */
.game-stage .header-tools { gap: 6px; }
.game-stage .header-tools .plate { padding: 10px 18px; }
.game-stage .challengers-section { grid-template-rows: 16px 34px minmax(0, 1fr) 50px; }
.challenger-roster { min-height: 0; width: 100%; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-rows: repeat(2, minmax(0, 1fr)); gap: 8px 10px; margin: 2px 0; }
.challenger-roster figure { min-width: 0; min-height: 0; display: grid; grid-template-rows: minmax(0, 1fr) 19px; justify-items: center; margin: 0; }
.roster-portrait { position: relative; min-height: 0; height: 100%; width: auto; max-width: 100%; aspect-ratio: 2 / 3; }
.roster-portrait > img:first-child { position: absolute; inset: 8% 9%; width: 82%; height: 84%; object-fit: contain; }
.roster-portrait .roster-frame { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; pointer-events: none; }
.challenger-roster figcaption { align-self: end; color: #f8e5bb; font-size: 12px; line-height: 1.3; text-align: center; white-space: nowrap; }
.game-stage .challengers-section .challenge-note { font-size: 11px; line-height: 1.45; text-align: center; }
.practice-choice { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 6px; }
.practice-choice p { margin: 0; font-size: 12px; line-height: 1.4; }
.game-stage .practice-choice .plate { min-height: 29px; padding: 6px 20px; font-size: 11px; }
.health-track { width: 150px; max-width: 100%; height: 6px; margin: 0 0 7px; overflow: hidden; border: 1px solid #07101c; border-radius: 8px; background: #020711a8; box-shadow: 0 0 0 1px #b7cbd520; }
.health-track > span { display: block; width: 100%; height: 100%; background: linear-gradient(90deg, #29bd9c, #8ce9cb); transition: width .45s ease; }
.enemy-health-track > span { background: linear-gradient(90deg, #b5415d, #f18d81); }
.game-stage #rival-quip { font-style: italic; font-size: 10px; line-height: 1.4; color: #efdcab; margin-top: 8px; }
.game-stage .fighter-information { flex: 1; min-width: 0; }
.game-stage .fighter h2 { overflow-wrap: anywhere; }
.game-stage .status-line { line-height: 1.3; }
.game-stage .hand-heading p { text-align: right; }
.portrait-console .header-tools { display: grid; grid-template-columns: repeat(3, auto); justify-content: end; gap: 3px 4px; max-width: 410px; }
.portrait-console .header-tools .plate { min-height: 27px; padding: 7px 10px; font-size: 11px; }
.portrait-console .challengers-section { grid-template-rows: 13px 28px minmax(0, 1fr) 35px; }
.portrait-console .challenger-roster { grid-template-columns: repeat(7, minmax(0, 1fr)); grid-template-rows: minmax(0, 1fr); gap: 4px; }
.portrait-console .challenger-roster figure { grid-template-rows: minmax(0, 1fr) 26px; }
.portrait-console .roster-portrait { width: 100%; height: auto; align-self: center; }
.portrait-console .challenger-roster figcaption { font-size: 11px; white-space: normal; align-self: center; }
.portrait-console .challengers-section .challenge-note { font-size: 10px; line-height: 1.3; }
.portrait-console .practice-choice { flex-direction: row; align-items: center; justify-content: center; gap: 14px; }
.portrait-console .practice-choice p { font-size: 11px; }
.portrait-console .practice-choice .plate { padding: 6px 18px; font-size: 11px; min-height: 27px; }
.portrait-console .health-track { width: 135px; height: 5px; margin-bottom: 4px; }
.portrait-console .fighter h2 { font-size: 20px; margin-bottom: 4px; }
.portrait-console .health { font-size: 12px; margin-bottom: 4px; }
.portrait-console .status-line { font-size: 10px; }
.portrait-console .intent-panel #intent-description { font-size: 12px; line-height: 1.3; }
.portrait-console .intent-panel { grid-template-columns: 220px 1fr; grid-template-rows: 12px minmax(0, 1fr); }
.portrait-console .intent-panel .eyebrow { font-size: 7px; letter-spacing: 1px; line-height: 1.2; white-space: nowrap; }
.portrait-console .intent-panel h2 { font-size: 16px; line-height: 1.1; align-self: center; }
.portrait-console .hand-heading p { font-size: 10px; max-width: 360px; line-height: 1.3; }
@media (prefers-reduced-motion: reduce) {
  .health-track > span { transition: none; }
}

/* ===== Source: battle-effects.css ===== */
/* Every decorative effect is an ImageGen raster frame or an existing painted sprite. */
.effects-layer,.ambient-glitter{pointer-events:none}
.fx-drag-active{user-select:none;-webkit-user-select:none;cursor:grabbing}
.game-card{touch-action:pan-x;-webkit-user-select:none;user-select:none}
.game-stage .game-card.fx-card-dragging{opacity:.24}
.game-stage .fx-card-ghost{position:absolute!important;display:block!important;flex:none!important;margin:0!important;padding:0!important;min-width:0!important;max-width:none!important;min-height:0!important;max-height:none!important;aspect-ratio:2/3!important;pointer-events:none!important;z-index:8;transform-origin:center;will-change:transform,opacity}
.game-stage .fx-card-ghost:hover{transform:none}
.fx-card-ghost .frame{object-fit:contain!important;display:block!important}
.fx-card-ghost *{pointer-events:none!important}
.fighter.fx-drop-target .fighter-picture{filter:brightness(1.1)}
.fighter.fx-drop-ready .fighter-picture{filter:brightness(1.3)}
.fighter.fx-drop-ready::after{content:'Release to play';position:absolute;z-index:8;inset:auto 10px 6px;text-align:center;color:#fff3c3;text-shadow:0 2px 5px #000;font:bold 13px Arial,sans-serif}
.game-stage>.fx-raster-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:75;pointer-events:none;contain:strict;border-radius:inherit}
.game-stage main{z-index:auto}
.game-stage .fighter.panel{isolation:auto}
.game-stage .game-header,.game-stage>footer{z-index:85}
#game-stage .cinematic-battle .battle-turn-control{z-index:85}
.game-stage .header-tools,.game-stage #end-turn{position:relative;z-index:85}
.game-stage .fighter-information{position:relative;z-index:82}
.game-stage .game-card>.fx-card-glare{position:absolute;inset:0;width:100%;height:100%;max-width:none;z-index:10;pointer-events:none;object-fit:contain}
.game-stage .game-card.fx-card-picked{filter:none!important}
.game-stage .game-card{--card-element-bg:#263545;--card-element-ink:#f2eddf}
.game-stage .game-card[data-element='tide'],.game-stage .game-card[data-element='water']{--card-element-bg:#12374d;--card-element-ink:#c4f6ff}
.game-stage .game-card[data-element='flame'],.game-stage .game-card[data-element='fire']{--card-element-bg:#431b25;--card-element-ink:#ffd2b0}
.game-stage .game-card[data-element='poison']{--card-element-bg:#39233f;--card-element-ink:#e5c1ff}
.game-stage .game-card[data-element='shadow']{--card-element-bg:#2d2041;--card-element-ink:#dfc8ff}
.game-stage .game-card[data-element='guard'],.game-stage .game-card[data-element='blade']{--card-element-bg:#26384a;--card-element-ink:#d0edff}
.game-stage .game-card[data-element='gold']{--card-element-bg:#463713;--card-element-ink:#fff0b5}
.game-stage .game-card[data-element='heal']{--card-element-bg:#153f32;--card-element-ink:#c7ffe1}
.game-stage .game-card::before{background-color:var(--card-element-bg)}
.game-stage .game-card>.card-art{background-color:var(--card-element-bg)}
.game-stage .game-card .card-power,.game-stage .game-card .card-rule{background-color:var(--card-element-bg);color:var(--card-element-ink)}
.fx-gold-coin,.fx-gold-number,.fx-announcement{position:absolute;pointer-events:none;z-index:4;will-change:transform,opacity}
.fx-gold-coin{width:28px;height:28px}
.fx-gold-coin img{display:block;width:100%;height:100%;object-fit:contain}
.fx-gold-number{color:#ffe39a;font:bold 26px Georgia,serif;white-space:nowrap;text-shadow:0 2px 5px #000}
.fx-bonus-gold{color:#fff1bd;font-size:31px}
.fx-announcement{left:50%;max-width:80%;color:#fff1c8;font:bold 27px Georgia,serif;line-height:1.2;text-align:center;white-space:nowrap;text-shadow:0 2px 5px #000,0 3px 8px #000}
.fx-depth-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.fx-depth-sparkle{position:absolute;left:var(--sparkle-x);top:var(--sparkle-y);width:26px;height:26px;object-fit:contain;opacity:.18;animation:clash-painted-drift var(--sparkle-speed) ease-in-out var(--sparkle-delay) infinite alternate}
.game-stage.fx-camera-jolt{animation:clash-jolt .32s ease-out}
@keyframes clash-painted-drift{from{transform:translateY(20px);opacity:.1}to{transform:translateY(-35px);opacity:.3}}
@keyframes clash-jolt{0%,100%{translate:0 0}15%{translate:-5px 3px}30%{translate:6px -3px}45%{translate:-4px -1px}60%{translate:3px 2px}80%{translate:-1px 0}}
@media(prefers-reduced-motion:reduce){.fx-depth-layer{display:none}.game-stage.fx-camera-jolt{animation:none!important}}

/* ===== Source: clash-shell.css ===== */
/* The same complete console, including native menus, fills the fullscreen view. */
#game-console:is(:fullscreen, :-webkit-full-screen, .is-fullscreen) {
  width: 100vw !important;
  height: 100dvh !important;
  margin: 0;
  background: #060d19;
}
#game-console.viewport-fullscreen { position: fixed !important; inset: 0 !important; z-index: 2147483000; }
#game-console::backdrop { background: #060d19; }
#fullscreen-button { white-space: nowrap; }
.game-stage .tutorial-dialog { width: 780px; max-width: var(--console-dialog-width); }
.tutorial-dialog h2 { font-size: 38px; margin: 8px 0 18px; }
.tutorial-dialog > p:not(.eyebrow) { font-size: 18px; line-height: 1.6; }
.tutorial-dialog .small-note { color: #b8cad5; }
.tutorial-preview { display: flex; gap: 10px; margin: 24px 0; }
.tutorial-preview span { flex: 1; padding: 17px 12px; text-align: center; border: 1px solid #d7b45c60; border-radius: 10px; color: #ffe6a0; background: #78d5e710; font-size: 16px; }
.game-stage.tutorial-active #turn-message { display: none; }
.game-stage .tutorial-coach { flex: 1; min-width: 0; min-height: 58px; padding: 7px 14px; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px; border-color: #f5d581; background: linear-gradient(110deg, #173449f5, #13253df5); box-shadow: inset 0 0 20px #3b9aab18; }
.game-stage .tutorial-coach[hidden] { display: none; }
.tutorial-coach-copy { display: grid; gap: 3px; }
.tutorial-coach-copy strong { color: #ffe6a0; font-size: 11px; line-height: 1.2; }
.tutorial-coach-copy > span { color: #f4f8fc; font-size: 12px; line-height: 1.3; }
.tutorial-coach-actions { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; }
.game-stage .tutorial-coach-actions .plate { min-height: 27px; padding: 5px 14px; font-size: 11px; }
.tutorial-coach-actions .tutorial-skip { background: transparent; border: 0; padding: 3px 6px; color: #c9d7e4; font: inherit; font-size: 10px; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.tutorial-coach-actions .tutorial-skip:hover { color: #ffe6a0; }
.game-stage .tutorial-highlight { outline: 2px solid #ffe59a; outline-offset: 3px; filter: drop-shadow(0 0 7px #ffe59a99); }
.game-stage .tutorial-highlight:focus-visible { outline: 3px solid #fff; }
.game-stage .shell-status { position: absolute; z-index: 95; right: 22px; bottom: 40px; max-width: 600px; margin: 0; padding: 15px 20px; font-size: 14px; line-height: 1.5; color: #fff0c8; border-color: #e6ca7d; background: #10243df7; pointer-events: none; }
.game-stage .shell-status[hidden] { display: none; }
.portrait-console .header-tools { flex-wrap: wrap; justify-content: flex-end; max-width: 430px; }
.portrait-console .header-tools .plate { min-height: 27px; padding: 7px 12px; font-size: 11px; }
.portrait-console .tutorial-coach { min-height: 74px; padding: 6px 10px; gap: 6px; }
.portrait-console .tutorial-coach-copy strong { font-size: 10px; }
.portrait-console .tutorial-coach-copy > span { font-size: 11px; line-height: 1.22; }
.portrait-console .tutorial-coach-actions .plate { max-width: 91px; padding: 6px 9px; font-size: 10px; }
.portrait-console .tutorial-coach-actions .tutorial-skip { font-size: 9px; padding: 4px 1px; }
.portrait-console .tutorial-dialog h2 { font-size: 32px; }
.portrait-console .tutorial-preview { flex-direction: column; gap: 6px; margin: 18px 0; }
.portrait-console .tutorial-preview span { padding: 12px; }
.portrait-console .tutorial-dialog .result-actions { flex-wrap: wrap; }
.portrait-console .shell-status { right: 12px; left: 12px; max-width: none; bottom: 43px; }
@media (prefers-reduced-motion: reduce) {
  .game-stage .tutorial-highlight { filter: none; }
}

/* ===== Source: card-animation.css ===== */
/* Drawn poses swap inside the existing art window; the painted frame stays put. */
.game-stage .game-card>.card-art-frames{position:absolute;top:16%;left:9%;width:82%;height:48%;object-fit:contain;object-position:center;pointer-events:none;z-index:2;visibility:hidden;background:transparent;transform:none!important;filter:none!important;animation:none!important;transition:none!important}
.game-stage .game-card.card-animation-ready>img.card-art{visibility:hidden}
.game-stage .game-card.card-animation-ready>.card-art-frames{visibility:visible}
.game-stage .game-card>.frame{z-index:3}
.game-stage .fx-card-ghost.card-animation-ready>.card-art-frames{display:block!important;visibility:visible}
@media(prefers-reduced-motion:reduce){.game-stage .card-art-frames{animation:none!important;transition:none!important}}

/* ===== Source: versus-screen.css ===== */
/* Painted raster artwork fills the same game console as every menu and duel. */
.game-stage .versus-screen { position: absolute; z-index: 110; inset: 0; width: 100%; height: 100%; max-width: none; max-height: none; margin: 0; padding: 0; overflow: hidden; isolation: isolate; color: #fff3d4; border: 0; border-radius: 16px; background: #442b12; }
.versus-screen[hidden] { display: none !important; }
.versus-background { position: absolute; z-index: 0; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: center; pointer-events: none; }
.versus-heading { position: absolute; z-index: 5; top: 5%; left: 20%; width: 60%; margin: 0; text-align: center; color: #fff3cc; font: 700 12px/1.5 Arial, sans-serif; letter-spacing: .3em; text-transform: uppercase; text-shadow: 0 1px 3px #261500; }
.versus-heading > span { display: block; margin-top: 4px; font-size: 9px; letter-spacing: .24em; }
.versus-portrait { position: absolute; z-index: 3; top: 12%; height: 73%; width: auto; aspect-ratio: 2 / 3; }
.versus-portrait--hero { left: 9%; }
.versus-portrait--rival { right: 9%; }
.versus-character { position: absolute; inset: 6.8%; width: 86.4%; height: 86.4%; max-width: none; object-fit: contain; }
.versus-frame { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: contain; pointer-events: none; }
.versus-name { position: absolute; z-index: 5; bottom: 8%; width: 39%; padding: 15px 22px; text-align: center; background: transparent url('../assets/site/menu-plate.png') center/100% 100% no-repeat; }
.versus-name--hero { left: 4%; }
.versus-name--rival { right: 4%; }
.versus-name > span { display: block; margin-bottom: 6px; color: #f5cf7b; font: 700 9px/1.2 Arial, sans-serif; text-transform: uppercase; letter-spacing: .22em; }
.versus-name strong { display: block; min-height: 60px; color: #fff1cc; font: italic 700 47px/1.1 Georgia, serif; letter-spacing: -.04em; }
.versus-name-art { display: block; width: 100%; height: 60px; max-width: none; object-fit: contain; }
.versus-center { position: absolute; z-index: 4; top: 44%; left: 50%; width: 340px; height: 260px; transform: translate(-50%, -50%); text-align: center; pointer-events: none; }
.versus-mark { display: block; width: 100%; height: 100%; max-width: none; object-fit: contain; }
.versus-subtitle { display: inline-block; margin-top: 8px; padding: 8px 20px; color: #f9dd9a; background: transparent url('../assets/site/menu-plate.png') center/100% 100% no-repeat; font: 700 9px/1.4 Arial, sans-serif; letter-spacing: .23em; text-transform: uppercase; }
.game-stage .versus-skip { position: absolute; z-index: 6; left: 50%; bottom: 2.2%; transform: translateX(-50%); min-height: 36px; padding: 8px 28px; font-size: 11px; }
.versus-screen--playing .versus-portrait--hero { animation: versus-enter-left .55s cubic-bezier(.17,.78,.25,1) both; }
.versus-screen--playing .versus-portrait--rival { animation: versus-enter-right .55s cubic-bezier(.17,.78,.25,1) both; }
.versus-screen--playing .versus-center { animation: versus-enter-mark .5s .2s cubic-bezier(.2,.8,.25,1) both; }
.versus-screen--playing .versus-name { animation: versus-enter-name .4s .35s ease-out both; }
.portrait-console .versus-heading { top: 2%; left: 5%; width: 90%; font-size: 11px; }
.portrait-console .versus-heading > span { font-size: 8px; }
.portrait-console .versus-portrait { height: 39%; }
.portrait-console .versus-portrait--hero { top: 7%; left: 5%; }
.portrait-console .versus-portrait--rival { top: 54%; right: 5%; }
.portrait-console .versus-name { width: 43%; padding: 14px 12px; }
.portrait-console .versus-name--hero { top: 21%; bottom: auto; left: auto; right: 3%; }
.portrait-console .versus-name--rival { top: 69%; bottom: auto; left: 3%; right: auto; }
.portrait-console .versus-name strong { min-height: 40px; font-size: 35px; }
.portrait-console .versus-name-art { height: 40px; }
.portrait-console .versus-name > span { font-size: 8px; line-height: 1.5; letter-spacing: .16em; }
.portrait-console .versus-center { top: 50%; width: 240px; height: 160px; }
.portrait-console .versus-subtitle { font-size: 8px; margin-top: 3px; }
.portrait-console .versus-skip { min-height: 34px; bottom: 1.5%; }
@keyframes versus-enter-left { from { opacity: 0; transform: translateX(-110px); } to { opacity: 1; transform: translateX(0); } }
@keyframes versus-enter-right { from { opacity: 0; transform: translateX(110px); } to { opacity: 1; transform: translateX(0); } }
@keyframes versus-enter-mark { from { opacity: 0; transform: translate(-50%, -50%) scale(1.6); } to { opacity: 1; transform: translate(-50%, -50%) scale(1); } }
@keyframes versus-enter-name { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .versus-screen--playing .versus-portrait,
  .versus-screen--playing .versus-center,
  .versus-screen--playing .versus-name { animation: none !important; }
}

/* ===== Source: title-screen.css ===== */
/* All decorative title art and button states are painted raster assets. */
.game-stage .title-screen { position: absolute; z-index: 10; inset: 0; width: 100%; height: 100%; overflow: hidden; background: #0d182b url('../assets/site/card-board.webp') center/cover; }
.title-screen[hidden] { display: none !important; }
.game-stage.title-active .game-header { z-index: 20; }
.game-stage.title-active .header-tools .plate { padding: 10px 14px; font-size: 11px; }
.game-stage.title-active main, .game-stage.title-active > footer { visibility: hidden; pointer-events: none; }
#title-button { order: -1; }
.title-cover { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: contain; object-position: center; pointer-events: none; }
.game-stage .title-screen-heading { position: absolute; z-index: 1; top: 4%; left: 50%; width: 300px; height: 160px; margin: 0; transform: translateX(-50%); }
.title-screen-heading > img { width: 100%; height: 100%; object-fit: contain; }
.title-actions { position: absolute; z-index: 2; top: 88%; left: 50%; width: 1050px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; transform: translateX(-50%); }
.title-screen .title-action { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 86px; margin: 0; padding: 20px 35px; border: 0; background: transparent url('golden-clash-title-button-v1.webp') center/contain no-repeat; color: #fff1c0; font: 700 20px/1.2 Georgia, 'Times New Roman', serif; text-align: center; cursor: pointer; text-shadow: 0 2px 2px #261204; }
.title-screen .title-action:hover, .title-screen .title-action:focus-visible, .title-screen .title-action:active { background-image: url('golden-clash-title-button-active-v1.webp'); }
.title-screen .title-action:focus-visible { outline: 3px solid #fff1bf; outline-offset: 3px; }
.title-screen .title-action--primary { animation: title-button-pulse 2.4s ease-in-out infinite; }
.title-screen-note { display: none; position: absolute; z-index: 1; bottom: 3%; left: 10%; width: 80%; margin: 0; text-align: center; color: #fff1c0; font-size: 12px; text-shadow: 0 1px 3px #06101a; }
.portrait-console .title-cover { inset: 222px 0 auto; height: 375px; }
.portrait-console.title-active .header-tools .plate { padding: 7px 10px; }
.portrait-console .title-screen-heading { top: 80px; width: 320px; height: 140px; }
.portrait-console .title-actions { top: 630px; width: 330px; grid-template-columns: minmax(0, 1fr); gap: 10px; }
.portrait-console .title-action { min-height: 86px; font-size: 20px; }
.portrait-console .title-screen-note { display: block; bottom: 4%; font-size: 11px; }
@keyframes title-button-pulse { 0%, 100% { filter: brightness(1); opacity: 1; } 50% { filter: brightness(1.16); opacity: .96; } }
@media (prefers-reduced-motion: reduce) {
  .title-screen .title-action--primary { animation: none !important; }
}

/* A full-console roster keeps the hero artwork adjacent and leaves room to grow. */
.game-stage .hero-roster-setup { grid-template-rows: 60px minmax(0, 1fr) 60px; gap: 6px; }
.hero-selection-heading { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 4px 18px; }
.game-stage .hero-selection-heading h1 { margin: 0; font-size: 36px; }
.game-stage .hero-bank { margin: 0; gap: 8px; justify-content: flex-end; }
.game-stage .hero-bank > img { width: 30px; height: 30px; }
.game-stage .hero-bank p { margin: 0; font-size: 11px; }
.game-stage .hero-bank strong { font-size: 20px; }
.game-stage .hero-bank span { max-width: 280px; font-size: 10px; }
.hero-roster { min-height: 0; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; }
.game-stage .hero-roster-grid { width: 100%; max-width: none; min-height: 100%; display: flex; flex-wrap: wrap; justify-content: center; align-content: safe center; align-items: center; gap: 12px; margin: 0; padding: 4px; }
.game-stage .hero-roster-setup .choice { display: flex; flex: 0 0 auto; flex-direction: column; align-items: center; gap: 0; width: auto; height: auto; min-width: 0; max-width: 100%; padding: 0; opacity: 1; background: none; border: 0; }
.game-stage .hero-roster-setup .choice-portrait { flex: none; width: 300px; height: 450px; max-width: 100%; max-height: none; aspect-ratio: 2 / 3; margin: 0; filter: brightness(.82); transition: width .18s ease, height .18s ease, filter .16s ease; }
.game-stage .hero-roster-setup .choice:hover, .game-stage .hero-roster-setup .choice.selected { transform: none; }
.game-stage .hero-roster-setup .choice.selected .choice-portrait { width: 320px; height: 480px; filter: brightness(1.18) drop-shadow(0 0 10px #ffe6a8); }
.game-stage .hero-roster-setup .choice:hover .choice-portrait, .game-stage .hero-roster-setup .choice:focus-visible .choice-portrait { filter: brightness(1.2); }
.game-stage .hero-roster-setup .choice-caption { flex: none; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; width: 100%; min-height: 62px; padding: 4px 3px 0; gap: 2px 8px; text-align: left; }
.game-stage .hero-roster-setup .choice-caption strong { font-size: 29px; }
.game-stage .hero-roster-setup .choice-caption > span { grid-column: 1 / -1; font-size: 13px; line-height: 1.5; }
.game-stage .hero-roster-setup .choice-caption .hero-choice-state { grid-column: 2; grid-row: 1; color: #d6c7ac; font-size: 12px; font-weight: 700; letter-spacing: .02em; white-space: nowrap; }
.game-stage .hero-roster-setup .choice.selected .hero-choice-state { color: #fff0b5; }
/* Authored raster frames occupy only the original portrait's inner art window. */
.game-stage .hero-roster-setup .hero-selection-animation { position: absolute; z-index: 0; inset: 15% 8% 17%; width: 84%; height: 68%; object-fit: contain; pointer-events: none; }
.game-stage .hero-roster-setup .hero-selection-animation-ready > .choice-art { visibility: hidden; }
.game-stage .hero-roster-setup .begin-panel { grid-template-columns: 250px minmax(0, 1fr); gap: 24px; padding: 4px 18px; }
.game-stage .hero-roster-setup #hero-selection-status { text-align: left; color: #fff0cc; font-size: 15px; }
.game-stage .hero-roster-setup .practice-choice { width: 100%; }
.game-stage .hero-roster-setup .practice-choice .plate { width: 100%; min-height: 50px; font-size: 14px; }
.portrait-console .hero-roster-setup { grid-template-rows: 76px minmax(0, 1fr) 80px; gap: 8px; }
.portrait-console .hero-selection-heading { align-items: center; gap: 14px; padding: 4px; }
.portrait-console .hero-selection-heading h1 { font-size: 29px; }
.portrait-console .hero-bank { gap: 5px; }
.portrait-console .hero-bank > img { width: 24px; height: 24px; }
.portrait-console .hero-bank p { font-size: 10px; }
.portrait-console .hero-bank strong { font-size: 18px; }
.portrait-console .hero-bank span { max-width: 180px; font-size: 9px; }
.portrait-console .hero-roster { margin-inline: -8px; }
.portrait-console .hero-roster-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 4px; }
.portrait-console .hero-roster-setup .choice { width: 100%; }
.portrait-console .hero-roster-setup .choice-portrait { width: 94%; height: auto; aspect-ratio: 2 / 3; }
.portrait-console .hero-roster-setup .choice.selected .choice-portrait { width: 100%; height: auto; }
.portrait-console .hero-roster-setup .choice-caption strong { font-size: 28px; }
.portrait-console .hero-roster-setup .choice-caption > span { font-size: 12px; }
.portrait-console .hero-roster-setup .begin-panel { grid-template-columns: 220px minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); gap: 12px; padding: 4px 14px; }
.portrait-console .hero-roster-setup .practice-choice { min-width: 0; }
.portrait-console .hero-roster-setup .begin-panel .small-note { display: none; }
.portrait-console .hero-roster-setup .practice-choice .plate, .portrait-console .hero-roster-setup .begin-panel > .action-button { width: 100%; min-width: 0; min-height: 72px; padding: 12px 14px; font-size: 18px; }
.portrait-console .hero-roster-setup #hero-selection-status { font-size: 14px; line-height: 1.5; }

/* The existing painted action plate makes map progression the clear next step. */
.game-stage .result-dialog.result-campaign-win .result-actions { flex-direction: column; gap: 10px; }
.game-stage .result-dialog.result-campaign-win .result-actions .action-button { width: 100%; max-width: 430px; min-height: 86px; font-size: 20px; }
.game-stage .result-dialog.result-campaign-win .result-actions .plate { width: 240px; min-width: 0; min-height: 48px; padding: 12px 20px; font-size: 13px; }

/* ===== Source: campaign-screen.css ===== */
/* The route and islands are painted into the ImageGen map; controls use raster plates. */
.game-stage .journey-screen{position:absolute;z-index:10;inset:0;width:100%;height:100%;overflow:hidden;background:#10243b}
.journey-screen[hidden]{display:none!important}
.journey-active .game-header{z-index:85}
.journey-active>footer{visibility:hidden;pointer-events:none}
.journey-art{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover;pointer-events:none}
.journey-heading{position:absolute;z-index:3;top:88px;left:28px;right:28px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.game-stage .journey-heading-copy{min-width:340px;max-width:440px;padding:10px 24px}
.game-stage .journey-heading h1{margin:0;font-size:32px;line-height:1.1;color:#fff2c6;text-shadow:0 2px 5px #07121f}
.journey-heading p{margin:4px 0 0;font-size:14px;line-height:1.35;color:#fff2ce;text-shadow:0 2px 4px #07121f}
.game-stage .journey-heading .journey-chapter{margin:0 0 2px;font-size:10px;line-height:1.2;color:#e8d6a9}
.game-stage .journey-heading .journey-map-lock{margin:3px 0 0;font-size:11px;line-height:1.2;color:#ffe4a1}
.journey-map-lock[hidden]{display:none!important}
.journey-heading-controls{display:flex;align-items:center;gap:8px}
.journey-hero-badge{display:flex;align-items:center;gap:8px;width:160px;height:64px;padding:6px 16px;background:transparent url('../assets/site/menu-plate.png') center/100% 100% no-repeat;pointer-events:none}
.journey-hero-badge>img{width:36px;height:50px;object-fit:contain}
.journey-hero-badge>span{display:flex;flex-direction:column;gap:2px;min-width:0}
.journey-hero-badge small{font-size:9px;color:#ead6a6;white-space:nowrap}
.journey-hero-badge strong{font:700 18px/1.1 Georgia,serif;color:#fff0c1}
.journey-heading .plate{min-height:48px;font-size:13px}
.game-stage .journey-heading .journey-map-button{width:84px;min-width:0;padding:10px 12px}
.journey-map-button:disabled{opacity:.7;cursor:not-allowed}
/* Keep the animated upper-left clam clear; the existing ornate plate anchors the desktop footer. */
.game-stage:not(.portrait-console) .journey-heading{position:static}
.game-stage:not(.portrait-console) .journey-heading-copy{position:absolute;z-index:3;left:28px;bottom:8px;width:340px;min-width:340px;max-width:340px;min-height:84px;padding:6px 22px}
.game-stage:not(.portrait-console) .journey-heading h1{font-size:27px}
.game-stage:not(.portrait-console) .journey-heading p{margin:3px 0 0;font-size:14px;line-height:1.2}
.game-stage:not(.portrait-console) .journey-heading .journey-chapter{margin:0 0 2px;font-size:9px;line-height:1.2}
.game-stage:not(.portrait-console) .journey-heading .journey-map-lock{margin:2px 0 0;font-size:10px;line-height:1.1}
.game-stage:not(.portrait-console) .journey-heading-controls{position:absolute;z-index:3;top:88px;right:28px}
.journey-stage-grid{position:absolute;z-index:3;inset:0;pointer-events:none}
.journey-stage-grid>button{pointer-events:auto}
.journey-travel-art{position:absolute;inset:0;z-index:2;width:100%;height:100%;max-width:none;pointer-events:none}
.journey-landmark-art{position:absolute;inset:0;z-index:1;width:100%;height:100%;max-width:none;pointer-events:none}
.game-stage .journey-skip-travel{position:absolute;z-index:4;top:102px;left:50%;transform:translateX(-50%);width:200px;min-height:48px;padding:10px 18px;font-size:14px}
.journey-skip-travel[hidden]{display:none!important}
.game-stage .journey-stage-button{position:absolute;left:var(--stage-x);top:var(--stage-y);transform:translate(-50%,-50%);width:210px;min-height:92px;padding:14px 18px;display:flex;flex-direction:column;gap:3px;background:transparent url('../assets/site/menu-plate.png') center/100% 100% no-repeat;opacity:1;text-shadow:0 1px 3px #07121f}
.journey-stage-button strong{font:700 19px/1.15 Georgia,serif}
.journey-stage-number,.journey-stage-state{font-size:11px;line-height:1.3}
.journey-stage-button:disabled{filter:brightness(.86);cursor:not-allowed}
.journey-stage-button:not(:disabled):hover,.journey-stage-button:not(:disabled):focus-visible,.journey-stage-selected{filter:brightness(1.32)}
.game-stage .journey-details{position:absolute;z-index:3;left:28px;right:28px;bottom:8px;min-height:84px;padding:8px 22px;display:grid;grid-template-columns:minmax(0,1fr) 310px;align-items:center;gap:30px;background:transparent url('../assets/site/menu-plate.png') center/100% 100% no-repeat}
.game-stage:not(.portrait-console) .journey-details{left:388px;grid-template-columns:minmax(0,1fr) 260px;gap:20px}
.journey-details .eyebrow{margin:0 0 4px;font-size:10px}
.journey-details h2{margin:0 0 2px;font-size:24px}
.journey-details p:not(.eyebrow){margin:0;font-size:12px;line-height:1.3}
.journey-details .journey-hint{display:none}
.journey-details .action-button{width:100%;min-width:0;min-height:64px;font-size:17px}
.journey-difficulty{display:block;color:#ffe0a0;font-size:12px;line-height:1.3}
.versus-rival-variant{display:block;margin-top:5px;font:700 16px/1.3 Arial,sans-serif;color:#fff0c6}
.versus-name>.versus-difficulty-label{font-size:15px;letter-spacing:.08em}
.portrait-console .journey-heading{top:88px;left:18px;right:18px;gap:10px}
.portrait-console .journey-heading-copy{flex:1;min-width:0;max-width:370px;padding:6px 18px}
.portrait-console .journey-heading h1{font-size:26px}
.portrait-console .journey-heading p{font-size:12px}
.portrait-console .journey-heading-controls{flex:none;gap:6px}
.portrait-console .journey-hero-badge{position:absolute;top:82px;right:0;width:160px;height:64px}
.portrait-console .journey-heading .plate{width:116px;min-width:0;min-height:72px;padding:10px 12px;font-size:12px}
.portrait-console .journey-heading .journey-map-button{width:68px;padding:10px 8px}
.portrait-console .journey-art{top:160px;bottom:auto;height:375px;object-fit:contain}
.portrait-console .journey-skip-travel{top:453px;min-height:72px;width:205px;font-size:15px}
.portrait-console .journey-stage-grid{inset:530px 16px auto;height:282px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,88px);gap:8px}
.portrait-console .journey-stage-button{position:relative;inset:auto;transform:none;width:100%;min-width:0;min-height:0;padding:10px 14px;gap:3px}
.portrait-console .journey-stage-button strong{font-size:19px}
.portrait-console .journey-stage-number,.portrait-console .journey-stage-state{font-size:12px}
.portrait-console .journey-details{left:16px;right:16px;bottom:35px;min-height:135px;padding:12px 18px;grid-template-columns:minmax(0,1fr) 190px;gap:12px}
.portrait-console .journey-details h2{font-size:25px}
.portrait-console .journey-details p:not(.eyebrow){font-size:12px}
.portrait-console .journey-details .eyebrow{font-size:10px}
.portrait-console .journey-details .journey-hint{display:none}
.portrait-console .journey-details .action-button{min-height:78px;padding:12px 20px;font-size:17px}
.portrait-console .versus-rival-variant{font-size:14px}
.portrait-console .versus-name>.versus-difficulty-label{font-size:13px;letter-spacing:.06em}

/* ===== Source: battle-layout.css ===== */
/* Enlarged original fighter frames leave the card hand and controls in one console. */
.game-stage .cinematic-battle { grid-template-rows: 44px 260px minmax(0, 1fr) 44px 44px; gap: 6px; }
.cinematic-battle .battle-top { grid-row: 1; min-height: 0; padding: 4px 24px; }
.cinematic-battle .battle-top .eyebrow { display: none; }
.cinematic-battle .battle-top h1 { font-size: 24px; }
.cinematic-battle .round-stats p { gap: 1px; }
.cinematic-battle .round-stats strong { font-size: 22px; line-height: 1.05; }
.cinematic-battle .round-stats span { font-size: 9px; line-height: 1.2; }
.cinematic-battle .gold-stat img { width: 30px; height: 30px; }
.game-stage .cinematic-battle .arena { grid-row: 2; grid-column: 1; grid-template-columns: minmax(0, 1fr) 230px minmax(0, 1fr); gap: 12px; padding: 0; }
.cinematic-battle #player-fighter { grid-column: 1; }
.cinematic-battle #enemy-fighter { grid-column: 3; }
.game-stage .cinematic-battle .fighter { flex-direction: row; min-width: 0; padding: 5px 14px; gap: 16px; text-align: left; }
.game-stage .cinematic-battle .fighter-picture { flex: none; width: auto; height: 250px; aspect-ratio: 2 / 3; }
.cinematic-battle .fighter-information { flex: 1; min-width: 0; }
.cinematic-battle .fighter h2 { margin-bottom: 7px; }
.cinematic-battle .status-line { line-height: 1.4; overflow-wrap: anywhere; }
.game-stage .cinematic-battle .battle-turn-control { grid-row: 2; grid-column: 1; z-index: 5; align-self: end; justify-self: center; justify-content: center; width: 230px; height: 64px; margin: 0 0 8px; padding: 0; }
.game-stage .cinematic-battle #end-turn { width: 230px; min-width: 0; min-height: 64px; padding: 14px 22px; font-size: 14px; }
.cinematic-battle .hand-section { grid-row: 3; }
.game-stage .cinematic-battle .hand { min-height: 0; }
.cinematic-battle .card-copy .card-rule { max-height: 22%; }
.battle-message-row { grid-row: 4; display: flex; align-items: stretch; min-width: 0; min-height: 0; }
.game-stage .cinematic-battle .turn-message { width: 100%; min-height: 0; padding: 6px 18px; font-size: 12px; }
.game-stage .cinematic-battle .battle-bottom { grid-row: 5; min-height: 0; }
.game-stage .cinematic-battle .pile-button { min-height: 40px; padding-top: 4px; padding-bottom: 4px; }
.game-stage .cinematic-battle .pile-button img { width: 21px; height: 28px; }
.game-stage.tutorial-active .cinematic-battle { grid-template-rows: 44px 260px minmax(0, 1fr) 62px 44px; }
.game-stage .cinematic-battle .tutorial-coach { min-height: 0; width: 100%; }
.portrait-console .cinematic-battle { grid-template-rows: 52px 230px 72px minmax(0, 1fr) 76px 60px; gap: 8px; }
.portrait-console .cinematic-battle .battle-top { padding: 5px 14px; }
.portrait-console .cinematic-battle .battle-top h1 { font-size: 23px; }
.portrait-console .cinematic-battle .round-stats { gap: 16px; }
.portrait-console .cinematic-battle .arena { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.portrait-console .cinematic-battle #enemy-fighter { grid-column: 2; }
.portrait-console .cinematic-battle .fighter { padding: 10px; gap: 8px; }
.portrait-console .cinematic-battle .fighter-picture { width: auto; height: 210px; aspect-ratio: 2 / 3; }
.portrait-console .cinematic-battle .fighter-information { width: auto; }
.portrait-console .cinematic-battle .fighter h2 { font-size: 20px; margin-bottom: 5px; }
.portrait-console .cinematic-battle .health { font-size: 12px; }
.portrait-console .cinematic-battle .status-line { font-size: 10px; }
.portrait-console .cinematic-battle .health-track { width: 110px; }
.portrait-console .cinematic-battle .battle-turn-control { grid-row: 3; width: 280px; height: 72px; align-self: center; margin: 0; }
.portrait-console .cinematic-battle #end-turn { width: 280px; min-height: 72px; font-size: 18px; }
.portrait-console .cinematic-battle .hand-section { grid-row: 4; grid-template-rows: 32px minmax(0, 1fr); }
.portrait-console .cinematic-battle .hand-heading h2 { font-size: 23px; }
.portrait-console .cinematic-battle .hand-heading p { max-width: 370px; font-size: 10px; }
.portrait-console .cinematic-battle .battle-message-row { grid-row: 5; }
.portrait-console .cinematic-battle .turn-message { font-size: 13px; padding: 8px 14px; }
.portrait-console .cinematic-battle .battle-bottom { grid-row: 6; }
.portrait-console.tutorial-active .cinematic-battle { grid-template-rows: 52px 230px 72px minmax(0, 1fr) 76px 60px; }

/* ===== Source: status-effects.css ===== */
/* Transparent painted frames live only over the lower portrait; no card motion. */
.game-stage .fighter-picture.clash-status-host { isolation: isolate; }
.game-stage .fighter-picture > .clash-status-sprite {
  position: absolute;
  width: 118%;
  height: auto;
  aspect-ratio: 1;
  max-width: none;
  inset: auto auto 1% -9%;
  z-index: 3;
  padding: 0;
  border: 0;
  pointer-events: none;
  user-select: none;
  opacity: 0;
  transition: opacity 180ms ease;
  contain: layout paint;
}
.game-stage .fighter-picture > .clash-status-sprite.status-art-ready.status-persistent { opacity: .48; }
.game-stage .fighter-picture > .clash-status-sprite[data-status="weak"].status-art-ready.status-persistent { opacity: .42; }
.game-stage .fighter-picture > .clash-status-sprite.status-art-ready.status-burst { opacity: .97; }
.game-stage .fighter-picture > .clash-status-sprite[data-status="weak"].status-art-ready.status-burst { opacity: .86; }
@media (prefers-reduced-motion: reduce) {
  .game-stage .fighter-picture > .clash-status-sprite { transition: none; }
  .game-stage .fighter-picture > .clash-status-sprite.status-art-ready.status-burst { opacity: .72; }
}

/* ===== Source: battle-scene.css ===== */
/* Accepted ImageGen map pixels continue into the arena without stretching. */
.game-stage.battle-scene-active:not(.title-active):not(.journey-active){
  background-image:var(--battle-scene-art),url('../assets/site/card-board.webp');
  background-position:center;
  background-size:cover;
  background-repeat:no-repeat;
}
.game-stage.battle-scene-active .hand-heading,
.game-stage.battle-scene-active .hand-heading p,
.game-stage.battle-scene-active>footer p{
  text-shadow:0 1px 2px #02060a,0 0 5px #02060a,0 0 9px #02060ae6;
}
.game-stage>.battle-scenery-canvas{
  position:absolute;inset:0;width:100%;height:100%;max-width:none;
  z-index:-2;pointer-events:none;contain:strict;border-radius:inherit;
}
