:root{color-scheme:dark;--bg:#12161d;--panel:#1b212b;--line:#303844;--ink:#e6e8ea;--muted:#9ca7b6;--gold:#efbd76;--mint:#85c5b6;--red:#e58b86}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 70% 0,#27303b 0,transparent 65%),var(--bg);color:var(--ink);font:16px/1.6 system-ui,-apple-system,'PingFang SC','Microsoft YaHei',sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:1px solid var(--line);border-radius:9px;background:#242c37;padding:10px 18px;transition:background .15s,border-color .15s}button:hover{border-color:var(--gold);background:#30333a}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.4}h1,h2,h3,p{margin:0}h1{font-size:32px;letter-spacing:.06em}h2{font-size:22px}h3{font-size:17px}small,.muted{color:var(--muted)}small{font-size:13px}.shell{max-width:1300px;padding:0 36px;margin:auto}header{height:92px;display:flex;align-items:center;gap:24px;border-bottom:1px solid var(--line);margin-bottom:30px}.brand{text-decoration:none;color:var(--ink);font-size:21px;display:flex;align-items:center;gap:10px;font-weight:600}.brand small{font-size:11px;letter-spacing:.13em}.brandmark{color:var(--gold);font-size:38px}.header-note{color:var(--muted);font-size:14px;flex:1}.subtle{background:transparent;font-size:14px}footer{color:#84909f;font-size:12px;margin:30px 0;line-height:1.8}.intro{display:flex;align-items:end;justify-content:space-between;margin-bottom:30px}.eyebrow{color:var(--gold);font-size:12px;letter-spacing:.2em;margin-bottom:8px}.steps{display:flex;gap:8px;color:var(--muted);font-size:14px}.step{border:1px solid var(--line);border-radius:20px;padding:4px 12px}.section-label{display:flex;align-items:center;gap:10px;margin:24px 0 13px}.section-label b{color:var(--gold);font-size:12px}.selection{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.select-card{text-align:left;padding:23px;min-height:176px;background:linear-gradient(130deg,#242b34,#1a202a);position:relative}.select-card.active{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}.select-card.active:after{content:'已选择';position:absolute;right:16px;top:16px;font-size:12px;color:var(--gold)}.sigil{font-size:37px;color:var(--gold);line-height:1.4}.select-card h3{font-size:20px;margin:8px 0 2px}.select-card p{font-size:14px;color:var(--muted)}.statline{display:flex;gap:14px;font-size:13px;margin-top:14px;color:var(--mint)}.start-row{display:flex;gap:20px;align-items:center;margin-top:28px}.primary{background:var(--gold);color:#1c2027;border-color:var(--gold);font-weight:650;padding:12px 26px}.primary:hover{background:#ffd497}.gamegrid{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:20px}.panel{border:1px solid var(--line);border-radius:12px;background:var(--panel);overflow:hidden}.panel-head{padding:18px 20px;display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid var(--line)}.wave-label{font-size:23px;font-weight:650}.wave-label span{font-size:14px;color:var(--muted);font-weight:400}.controls{display:flex;gap:6px}.controls button{padding:6px 11px;font-size:14px}.controls button.active{color:var(--gold);border-color:var(--gold)}.arena{height:330px;position:relative;background:radial-gradient(ellipse at center,#283039 0,transparent 65%),repeating-linear-gradient(0deg,transparent 0,transparent 32px,#ffffff03 33px),repeating-linear-gradient(90deg,transparent 0,transparent 32px,#ffffff03 33px),#141b23;overflow:hidden}.arena:before{content:'';position:absolute;left:12%;top:24%;width:150px;height:150px;border:1px solid #efbd7622;border-radius:50%;transform:rotateX(35deg)}.unit{position:absolute;transform:translate(-50%,-50%);text-align:center;width:46px}.unit.player{left:22%;top:52%;width:72px}.unit-symbol{font-size:38px;line-height:1.2;color:var(--red);filter:drop-shadow(0 4px 9px #0009)}.player .unit-symbol{font-size:66px;color:var(--gold)}.unit.boss{width:66px}.boss .unit-symbol{font-size:57px}.unit-label{font-size:11px;color:var(--muted)}.unit .bar{height:4px;margin-top:7px}.bar{height:7px;background:#10151b;border-radius:5px;overflow:hidden}.bar i{height:100%;display:block;background:var(--mint);transition:width .15s}.unit .bar i{background:var(--red)}.phase{color:var(--gold);font-size:12px;white-space:nowrap}.float{position:absolute;color:#f1d3a9;font-size:14px;font-weight:700;pointer-events:none;animation:rise .6s ease-out forwards}.arena-info{position:absolute;left:18px;top:15px;font-size:12px;color:var(--muted)}.arena-time{position:absolute;right:18px;top:15px;font-size:13px;color:var(--muted)}.arena-overlay{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;background:#10151bd9;text-align:center;padding:24px;z-index:4}.arena-overlay h2{font-size:26px;margin-bottom:8px}.arena-overlay p{max-width:400px;color:var(--muted);font-size:14px;margin:0 auto 18px}.vitals{padding:14px 20px;display:grid;grid-template-columns:1fr auto;gap:8px 18px;font-size:14px}.vitals .bar{grid-column:1/-1}.shieldtext{color:#92b5da}.skill-zone{margin-top:18px}.skillgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.skill{padding:12px;background:#1b222c;border:1px solid var(--line);border-radius:9px;min-height:100px;font-size:14px}.skill .icon{font-size:23px;color:var(--mint)}.skill small{display:block;font-size:12px}.skill.empty{color:#626e7d;border-style:dashed;display:grid;place-content:center;text-align:center}.side-body{padding:18px}.tag-row{margin-bottom:15px}.tag-title{display:flex;justify-content:space-between;font-size:14px;margin-bottom:8px}.pips{display:grid;grid-template-columns:repeat(8,1fr);gap:4px}.pips i{height:6px;background:#353c46;border-radius:2px}.pips i.on{background:var(--gold)}.tag-bonus{font-size:12px;color:var(--muted);margin-top:5px}.relics{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.relicchip{padding:5px 9px;font-size:12px;border:1px solid #434549;border-radius:6px;color:#d4bf9e}.relicchip:hover{border-color:var(--gold)}.logs{list-style:none;padding:0;margin:0;font-size:13px;color:var(--muted)}.logs li{border-bottom:1px solid #ffffff07;padding:6px 0}.logs li:first-child{color:var(--mint)}.reward-area{margin-top:20px}.reward-title{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}.rewardcards{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.reward-card{padding:15px;text-align:left;min-height:172px}.reward-card b{display:block;margin:8px 0}.reward-card p{font-size:13px;color:var(--muted)}.reward-card .badge{font-size:12px;color:var(--gold)}.recipe-row{padding:12px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;justify-content:space-between}.recipe-row p{font-size:13px;color:var(--muted)}.recipe-row button{font-size:13px;white-space:nowrap;padding:7px 11px}dialog{max-width:650px;width:calc(100% - 28px);max-height:85vh;border:1px solid #48505b;border-radius:14px;background:#1b222c;color:var(--ink);padding:24px}dialog::backdrop{background:#000a;backdrop-filter:blur(5px)}dialog p{margin:15px 0;color:var(--muted);font-size:14px}.dialog-head{display:flex;justify-content:space-between;align-items:center}.dialog-head button{font-size:24px;padding:0 10px}.endstats{display:flex;gap:20px;justify-content:center;font-size:14px;color:var(--gold);margin-bottom:20px}.warn{color:var(--red)}@keyframes rise{to{transform:translateY(-25px);opacity:0}}@media(max-width:960px){.shell{padding:0 22px}.gamegrid{grid-template-columns:1fr}.sidebar{display:grid;grid-template-columns:1fr 1fr;gap:16px}.sidebar .panel{height:max-content}.header-note{display:none}.brand{flex:1}.intro{align-items:start;gap:20px}.steps{display:none}}@media(max-width:560px){.shell{padding:0 14px}header{height:76px;gap:8px;margin-bottom:22px}.brand{font-size:18px;gap:7px}.brand small{font-size:10px}.brandmark{font-size:29px}header button{padding:8px 10px}h1{font-size:26px}.intro{margin-bottom:18px}.selection{grid-template-columns:1fr;gap:9px}.select-card{min-height:120px;padding:15px 16px 15px 72px}.sigil{position:absolute;left:20px;top:28px}.select-card h3{margin-top:0;font-size:18px}.select-card.active:after{top:14px;right:12px}.statline{margin-top:8px}.start-row{align-items:stretch;flex-direction:column;gap:10px}.panel-head{padding:13px}.wave-label{font-size:19px}.controls{gap:4px}.controls button{padding:5px 8px}.arena{height:292px}.skillgrid{grid-template-columns:repeat(2,1fr)}.sidebar{grid-template-columns:1fr}.rewardcards{grid-template-columns:1fr}.reward-card{min-height:120px}.vitals{padding:12px 14px}.reward-title{align-items:start;gap:12px}.reward-title small{font-size:12px}.arena:before{width:110px;height:110px}.unit.player{left:20%}.player .unit-symbol{font-size:52px}.unit-symbol{font-size:30px}.boss .unit-symbol{font-size:45px}.arena-overlay{padding:18px}.arena-overlay h2{font-size:22px}}
.illustrated{min-height:205px;padding:28px;border:1px solid #444c52;border-radius:12px;background:linear-gradient(90deg,#12161dfa 0%,#12161dc9 35%,#12161d05 75%),url('pixel/battlefield.svg') center 60%/cover}.illustrated .steps{display:none}.illustrated .muted{color:#d0d5dc}.boss-preview{background:linear-gradient(#11161ad9,#11161af2),url('pixel/battlefield.svg') center/cover}@media(max-width:560px){.illustrated{min-height:170px;padding:19px;background-position:center,right center}.illustrated h1{font-size:24px}.illustrated .muted{font-size:14px;max-width:225px}}
/* 0.2: fixed-left defender, right-to-left enemy groups, stable sprite/SVG layers */
.arena{height:360px;background:linear-gradient(#10202644,#10182111),url('pixel/battlefield.svg') center/100% 100%;isolation:isolate}.arena:before{display:none}.arena .arena-info,.arena .arena-time{z-index:110;color:#e0e5e9;text-shadow:0 2px 4px #000}.arena .arena-info{background:#111b27a8;padding:3px 7px;border-radius:4px}.arena .unit{width:65px;transform:translate(-50%,-65%)}.arena .unit.player{left:18%;top:57%;width:105px;z-index:58}.arena .unit.boss{width:120px}.unit-art{width:100%;height:84px;object-fit:contain;display:block;filter:drop-shadow(0 8px 6px #0008)}.player .unit-art{height:139px}.boss .unit-art{height:144px}.unit-label{font-size:12px;color:#e3d7bd;text-shadow:0 2px 4px #000}.enemy .bar{width:70%;margin:0 auto;height:5px;border:1px solid #182326}.boss .bar{width:75%;height:6px}.phase{font-size:12px;text-shadow:0 1px 4px #000;min-height:18px}.enemy-layer,.overlay-layer{position:absolute;inset:0;pointer-events:none}.overlay-layer{z-index:150}.overlay-layer .arena-overlay{pointer-events:auto}.projectile-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:100}.defense-line{position:absolute;left:27%;top:23%;bottom:12%;width:1px;background:linear-gradient(transparent,#eebd7544,transparent);z-index:0}.projectile .trail{stroke:#f5d198;stroke-width:2px;vector-effect:non-scaling-stroke;opacity:.55;stroke-linecap:round}.projectile .head{fill:#ffde9c;filter:drop-shadow(0 0 4px #f6c774)}.projectile.fire .head{fill:#ffc15a;filter:drop-shadow(0 0 5px #ff6b2d)}.projectile.fire .trail{stroke:#ef773f;stroke-width:5px;opacity:.6}.projectile.lightning .trail{stroke:#b0edff;stroke-width:3px;opacity:1;filter:drop-shadow(0 0 4px #63b4ff)}.projectile.frost .head,.projectile.wind .head{fill:#a5efea}.projectile.frost .trail,.projectile.wind .trail{stroke:#97e1e5}.projectile.shock .head{fill:#fbd391;opacity:.6}.projectile.shock .trail{opacity:.12}.projectile.orb .head{fill:#eac6ff;filter:drop-shadow(0 0 5px #b994ed)}.combat-effect{color:#ffd995}.impact-ring,.impact-rays{stroke:currentColor;stroke-width:2px;vector-effect:non-scaling-stroke}.damage-number{fill:currentColor;stroke:#17212d;stroke-width:.16px;paint-order:stroke;font-size:3.2px;font-weight:800}.combat-effect.hurt{color:#ff8378}.combat-effect.heal{color:#9ef4be}.combat-effect.shield{color:#9cd4ff}.combat-effect.death{color:#9ec6c3}.combat-effect.cast{color:#ffd498}.combat-effect.cast .impact-rays,.combat-effect.heal .impact-rays,.combat-effect.shield .impact-rays{display:none}.player-aura{position:absolute;inset:12px -7px 15px;border:2px solid #8dcce9;border-radius:50%;box-shadow:0 0 18px #87cafa66;background:#78b7dc12;pointer-events:none}.trigger-label{position:absolute;bottom:9px;left:14px;font-size:12px;color:#c4e6df;text-shadow:0 2px 3px #000;z-index:110}.shielded .unit-art{filter:drop-shadow(0 0 7px #8ecfed) drop-shadow(0 8px 6px #0008)}.enraged .unit-art{filter:drop-shadow(0 0 7px #e66651) saturate(1.3)}.hero-art.bastion{filter:hue-rotate(130deg) drop-shadow(0 6px 5px #0008)}.hero-art.spark{filter:hue-rotate(300deg) drop-shadow(0 6px 5px #0008)}.select-card .portrait{width:75px;height:84px;float:left;margin-right:16px}.portrait img{width:100%;height:100%;object-fit:contain}.select-card .portrait~h3{padding-top:6px}.select-card .portrait~.statline{clear:both}.arena-overlay{backdrop-filter:blur(2px)}.is-paused *{animation-play-state:paused!important}@media(max-width:560px){.arena{height:295px;background-size:auto 100%;background-position:center}.arena .unit{width:49px}.arena .unit.player{width:75px;left:16%}.unit-art{height:65px}.player .unit-art{height:105px}.arena .unit.boss{width:79px}.boss .unit-art{height:100px}.phase{font-size:10px}.unit-label{font-size:11px}.select-card .portrait{position:absolute;left:8px;top:18px;width:55px;height:75px;margin:0}.select-card .portrait~h3{padding-top:0}.damage-number{font-size:3.5px}.projectile .trail{stroke-width:1.5px}.projectile.lightning .trail{stroke-width:2px}}
.enemy .unit-art{animation:creature-step .65s ease-in-out infinite alternate}.player .unit-art{animation:hero-idle 2.2s ease-in-out infinite alternate}@keyframes creature-step{to{transform:translateY(-3px) rotate(-1deg)}}@keyframes hero-idle{to{transform:translateY(-2px)}}@media(prefers-reduced-motion:reduce){.enemy .unit-art,.player .unit-art{animation:none}}
/* 0.2.1: rewards are modal and viewport-centered, never below the battlefield */
body.reward-open{overflow:hidden}.shell[inert]{pointer-events:none;user-select:none}.reward-dialog{position:fixed;inset:0;margin:auto;width:min(880px,calc(100vw - 40px));max-width:880px;max-height:calc(100dvh - 40px);overflow:auto;overscroll-behavior:contain;border:1px solid #797064;background:linear-gradient(135deg,#29313a,#1a222c 75%);padding:26px;border-radius:16px;box-shadow:0 30px 100px #000b}.reward-dialog::backdrop{background:#080f18cf;backdrop-filter:blur(5px)}.reward-dialog .reward-area{margin:0}.reward-dialog .reward-title{margin-bottom:5px}.reward-dialog .reward-title h2{font-size:26px}.reward-dialog #rewardHint{margin:4px 0 15px;font-size:14px}.reward-dialog .reward-card{min-height:190px;background:#1a222ce6;display:flex;flex-direction:column;align-items:flex-start}.reward-dialog .reward-card p{margin:5px 0;font-size:14px}.reward-dialog .reward-card:hover,.reward-dialog .reward-card:focus-visible{border-color:var(--gold);background:#313337}.build-preview{padding:11px 14px;margin-bottom:18px;border:1px solid #ffffff16;border-radius:8px;color:#b6c5d2;font-size:13px;display:grid;gap:4px}.reward-dialog .reward-footer{font-size:12px;color:#9ca7b6;margin:15px 0 0}.reward-dialog .reward-card .badge{font-size:13px}.reward-dialog .eyebrow{margin:0 0 8px}@media(max-width:560px){.reward-dialog{width:calc(100vw - 24px);max-height:calc(100dvh - 24px);padding:18px;border-radius:12px}.reward-dialog .reward-title h2{font-size:23px}.reward-dialog .rewardcards{gap:9px}.reward-dialog .reward-card{min-height:0;padding:13px 14px}.reward-dialog .reward-card b{margin:5px 0}.reward-dialog .reward-card p{font-size:13px;margin:2px 0}.reward-dialog .build-preview{padding:9px 11px;margin-bottom:12px;font-size:12px}.reward-dialog .reward-footer{margin-top:12px}.reward-dialog #rewardHint{font-size:13px;margin-bottom:11px}}
/* 0.3: the active game is one full-viewport battle surface. */
body.playing{overflow:hidden;background:#0d141c}body.playing .shell{max-width:none;height:100dvh;padding:env(safe-area-inset-top) 14px env(safe-area-inset-bottom)}body.playing header{height:58px;margin:0 0 8px;border:0}body.playing .header-note{display:none}body.playing header .brand{flex:1}body.playing footer{display:none}body.playing #app{height:calc(100dvh - 78px - env(safe-area-inset-top) - env(safe-area-inset-bottom));min-height:0}.battle-console{height:100%;display:flex;flex-direction:column;border-color:#34414d;background:#18222d}.battle-toolbar{display:flex;align-items:center;gap:20px;padding:11px 18px;flex-shrink:0;min-height:58px;background:#18232eee;border-bottom:1px solid #46515b}.combat-identity{flex:1;color:#aebdcc;font-size:14px}.battle-console .arena{flex:1;height:auto;min-height:160px;background-size:100% 100%}.battle-console .arena .unit{width:clamp(67px,7vw,112px)}.battle-console .arena .unit.player{width:clamp(120px,12vw,180px);left:16%;top:56%}.battle-console .arena .unit.boss{width:clamp(113px,12vw,184px)}.battle-console .unit-art{width:100%;height:auto;aspect-ratio:1;object-fit:contain}.battle-bottom{display:flex;align-items:center;gap:28px;padding:10px 18px;flex-shrink:0;min-height:78px;border-top:1px solid #3c4956;background:#18232e}.battle-bottom .vitals{width:32%;min-width:160px;padding:0;gap:4px 12px;font-size:13px}.skills-strip{display:flex;gap:8px;flex:1;justify-content:flex-end}.skill-chip{display:flex;align-items:center;gap:7px;min-width:110px;padding:8px 12px;min-height:50px;font-size:13px;border-color:#344855;background:#23303b;white-space:nowrap}.skill-chip>span{font-size:22px;color:#9cdbd0}.skill-chip>b{font-size:13px;font-weight:500}.skill-chip>small{font-size:12px}.skill-chip.empty{opacity:.48;border:1px dashed #6d7b88;border-radius:8px;justify-content:center}.build-dialog{width:min(800px,calc(100vw - 28px));max-width:800px;max-height:calc(100dvh - 32px);padding:23px;overscroll-behavior:contain}.build-dialog .dialog-head{position:sticky;top:-23px;background:#1b222cf5;padding:12px 0;z-index:2}.build-dialog h3{margin:16px 0 10px}.build-dialog .skillgrid{margin-top:12px}.build-dialog .build-section{border-top:1px solid #39434d;padding-top:16px}.build-dialog .tag-row{margin:14px 0}.build-dialog .recipe-row p{margin:4px 0}.actor-rig{position:relative;width:100%;aspect-ratio:1;transform-origin:50% 90%}.actor-rig .hero-art{position:relative;z-index:2;animation:none!important}.actor-rig .held-weapon{position:absolute;z-index:1;left:80.4%;top:42.3%;width:70%;height:auto;aspect-ratio:1;object-fit:contain;--grip-x:50%;--grip-y:50%;transform:translate(calc(-1*var(--grip-x)),calc(-1*var(--grip-y)));transform-origin:var(--grip-x) var(--grip-y);filter:drop-shadow(0 4px 4px #0008)}.weapon-bow .held-weapon{width:85%}.weapon-hammer .held-weapon{width:90%}.player:not(.is-attacking):not(.is-hit) .actor-rig{animation:actor-breathe 2.2s ease-in-out infinite alternate}.player.is-attacking .actor-rig{animation:hero-lunge .28s ease-out}.player.is-attacking .held-weapon{animation:weapon-swing .28s ease-out}.player.weapon-bow.is-attacking .held-weapon{animation:bow-release .28s ease-out}.player.is-hit .actor-rig{animation:hero-hurt .3s ease-out}.enemy .unit-art{animation:none}.enemy.is-walking .unit-art{animation:creature-walk .48s ease-in-out infinite alternate}.enemy.in-contact:not(.is-attacking) .unit-art{animation:actor-breathe 1.3s ease-in-out infinite alternate}.enemy.is-attacking .unit-art{animation:enemy-strike .35s ease-out}.enemy.is-hit .unit-art{filter:brightness(1.9) drop-shadow(0 0 7px #ffdda3)}.death-layer{position:absolute;inset:0;pointer-events:none}.death-ghost .unit-art{animation:none!important;filter:grayscale(.6) brightness(.8)}.weapon-preview{display:block;width:64px;height:64px;float:left;margin-right:16px}.weapon-preview img{width:100%;height:100%;object-fit:contain}.weapon-preview~.statline{clear:both}@keyframes actor-breathe{to{transform:translateY(-3px) scaleY(1.015)}}@keyframes hero-lunge{35%{transform:translateX(8px) rotate(3deg)}100%{transform:none}}@keyframes hero-hurt{25%{transform:translateX(-8px);filter:brightness(1.7) sepia(.5)}100%{transform:none;filter:none}}@keyframes weapon-swing{20%{rotate:-30deg}65%{rotate:48deg}100%{rotate:0deg}}@keyframes bow-release{30%{scale:.92 1.06;rotate:-7deg}70%{scale:1.06 .96}100%{scale:1;rotate:0deg}}@keyframes creature-walk{to{transform:translateY(-5px) rotate(-2deg)}}@keyframes enemy-strike{40%{transform:translateX(-13px) rotate(-7deg)}100%{transform:none}}
@media(max-width:700px){body.playing .shell{padding-left:7px;padding-right:7px}body.playing header{height:49px;margin-bottom:5px}body.playing .brand{font-size:17px}body.playing .brandmark{font-size:26px}body.playing #app{height:calc(100dvh - 66px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}.battle-toolbar{padding:8px 10px;gap:8px;min-height:49px;flex-wrap:wrap}.battle-toolbar .wave-label{font-size:18px}.battle-toolbar .wave-label span{font-size:12px}.battle-toolbar .combat-identity{display:none}.battle-toolbar .controls{margin-left:auto;gap:4px}.battle-toolbar .controls button{font-size:12px;padding:5px 7px}.battle-bottom{flex-direction:column;gap:8px;padding:9px 10px}.battle-bottom .vitals{width:100%;font-size:12px;grid-template-columns:1fr auto}.battle-bottom .vitals .bar{height:5px}.skills-strip{width:100%;gap:5px}.skill-chip{min-width:0;width:25%;min-height:48px;padding:5px;flex-wrap:wrap;justify-content:center;gap:2px 4px}.skill-chip>span{font-size:18px}.skill-chip>b{font-size:11px;max-width:100%;overflow:hidden;text-overflow:ellipsis}.skill-chip>small{font-size:10px}.skill-chip.empty>small{font-size:11px}.battle-console .arena .unit{width:clamp(58px,13vw,82px)}.battle-console .arena .unit.player{width:clamp(95px,22vw,135px);left:13%}.battle-console .arena .unit.boss{width:clamp(96px,22vw,128px)}.battle-console .arena .phase{font-size:10px}.battle-console .arena-info,.battle-console .arena-time{font-size:11px;top:9px}.battle-console .arena-info{left:8px}.battle-console .arena-time{right:8px}.battle-console .trigger-label{font-size:11px;bottom:6px;left:8px}.build-dialog{padding:17px}.build-dialog .dialog-head{top:-17px}.weapon-preview{position:absolute;left:9px;top:18px;width:53px;height:74px;margin:0}.build-dialog .skillgrid{grid-template-columns:repeat(2,1fr)}}@media(max-height:500px) and (orientation:landscape){body.playing header{height:38px;margin-bottom:4px}body.playing #app{height:calc(100dvh - 51px)}.battle-toolbar{min-height:39px;padding:4px 10px}.battle-bottom{flex-direction:row;padding:5px 10px;min-height:50px}.battle-bottom .vitals{width:30%;font-size:11px}.skills-strip{width:auto}.skill-chip{min-height:36px;padding:3px}.battle-console .arena{min-height:100px}.battle-console .arena .unit.player{width:80px}.battle-console .arena .unit{width:53px}.battle-console .arena .unit.boss{width:89px}.arena .unit-label{display:none}}
@media(prefers-reduced-motion:reduce){.actor-rig,.held-weapon,.enemy .unit-art{animation:none!important}}
.weapon-bow .held-weapon{--grip-x:54.8%;--grip-y:50%}
.weapon-hammer .held-weapon{--grip-x:50%;--grip-y:66%}
/* 0.4: original low-resolution pixel assets and separate permanent camp menus */
:root{--bg:#111a2b;--panel:#1a293a;--line:#3c5063;--gold:#edbd72;--mint:#8acebf}body{background:#111a2b}button,.panel,dialog,.select-card,.relicchip{border-radius:3px;box-shadow:none}button:focus-visible{outline:3px solid #f3cf85;outline-offset:3px}img[src^="pixel/"]{image-rendering:pixelated;image-rendering:crisp-edges}.arena,.battle-console .arena{background:#243c46 url('pixel/battlefield.svg') center/100% 100%;image-rendering:pixelated}.boss-preview{background:#101b2ee8}.arena-overlay{backdrop-filter:none}.unit-art{filter:drop-shadow(0 4px 0 #0006)}.actor-rig .held-weapon{left:81.25%;top:43.75%;--grip-x:25%;--grip-y:68.75%;width:60%;filter:drop-shadow(0 2px 0 #0006)}.weapon-bow .held-weapon{--grip-x:71.875%;--grip-y:50%;width:78%}.weapon-hammer .held-weapon{--grip-x:40.625%;--grip-y:78.125%;width:83%}.hero-art.swift{filter:hue-rotate(155deg)}.hero-art.heavy{filter:hue-rotate(320deg)}.camp-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.camp-heading h1{font-size:28px}.gold-balance{font-size:26px;color:var(--gold);font-weight:700;text-align:right;min-width:120px}.gold-balance small{display:block;font-size:13px;color:var(--muted);font-weight:400}.camp-tabs{display:flex;gap:8px;margin:23px 0;flex-wrap:wrap}.camp-tabs button{background:#18283b}.camp-tabs .active{border-color:var(--gold);color:var(--gold)}.notice{background:#2b3745;border-left:3px solid var(--gold);padding:10px 14px;margin:16px 0;color:#e8d1a8;font-size:14px}.weapon-card{display:grid;grid-template-columns:88px 1fr auto;gap:15px;align-items:center;padding:18px;border:1px solid var(--line);background:#19293b;margin:12px 0}.weapon-card.active{border-color:#d4b275}.weapon-card img{width:80px;height:96px;object-fit:contain;image-rendering:pixelated}.weapon-card p{color:var(--muted);font-size:14px;line-height:1.6;margin:5px 0}.weapon-card h3{font-size:20px}.quality{font-size:13px;color:#bac6d1}.q1{color:#98d6b8}.q2{color:#94c5f7}.q3{color:#d6adef}.inventory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.inventory-grid .weapon-card{grid-template-columns:75px 1fr;align-items:start;margin:0}.inventory-grid .weapon-card button{grid-column:1/-1}.training-card{padding:22px;border:1px solid var(--line);background:#1a2a3a}.training-card p{margin:14px 0;color:var(--muted)}.shop-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:20px 0}.shop-head+p{margin-bottom:20px}.camp-record{color:#8fa3b4;font-size:13px;margin-top:28px}.battle-build-hud{flex:1;min-width:0}.set-strip{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:6px}.set-strip button{font-size:13px;padding:2px 9px;border-color:#395166;color:#a9c9dc}.set-strip small{font-size:11px}.set-strip>span{color:var(--gold);font-size:13px;margin-left:4px}.battle-bottom .vitals{font-size:14px}.xpbar{height:4px!important}.xpbar i{background:#a495e0}#xptext{font-size:12px;grid-column:1/-1;color:#c4b8f0}.skills-strip{justify-content:stretch}.skill-chip{min-width:0;flex:1}.skill-chip b{font-size:14px}.battle-bottom{gap:18px}.reward-dialog,.build-dialog{background:#18273b;border:2px solid #8da0b3}.reward-dialog .reward-card{background:#22334a}.replacement-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:15px 0}.reward-dialog .replacement-grid .reward-card{min-height:140px}.combat-effect.rend,.combat-effect.echo{color:#ffc589}.combat-effect.storm{color:#c5adff}.combat-effect.shatter,.combat-effect.freeze{color:#a0e5ff}.is-frozen .unit-art{animation:none!important;filter:brightness(1.35) drop-shadow(0 0 5px #a3eaff)}.enemy .phase{max-width:140px;white-space:normal;line-height:1.25}.skill.empty{min-height:92px}.select-card .portrait{width:82px;height:82px}.reward-dialog .reward-card small{font-size:12px;margin-top:6px}@media(max-width:700px){.camp-heading{align-items:start;gap:10px}.camp-heading h1{font-size:23px}.camp-heading .eyebrow{font-size:10px}.gold-balance{font-size:22px;min-width:82px}.camp-tabs{gap:5px}.camp-tabs button{flex:1;font-size:14px;padding:9px 7px}.weapon-card{grid-template-columns:64px 1fr;padding:14px;gap:10px}.weapon-card img{width:64px;height:78px}.weapon-card button{grid-column:1/-1}.inventory-grid{grid-template-columns:1fr}.shop-head{align-items:start}.battle-bottom .vitals{width:100%;font-size:14px}.battle-build-hud{width:100%}.set-strip{justify-content:space-between;gap:3px}.set-strip button{padding:2px 6px;font-size:12px}.set-strip>span{font-size:12px}.skill-chip b{font-size:13px}.skill-chip small{font-size:11px}.battle-console .arena{min-height:130px}.camp-record{font-size:12px}.replacement-grid{grid-template-columns:1fr}.reward-dialog .replacement-grid .reward-card{min-height:95px}.select-card .portrait{width:58px;height:70px}.enemy .phase{font-size:9px}.reward-dialog .build-preview{font-size:13px}}@media(max-height:500px) and (orientation:landscape){.battle-bottom .vitals{width:28%}.battle-build-hud{width:auto}.set-strip{margin-top:2px}.battle-bottom{min-height:60px}.battle-console .arena .unit.player{width:75px}.skill-chip{min-height:30px}}

/* 0.5: smaller battlefield actors, scalable held-weapon rig. */
.battle-console .arena .unit{width:clamp(30px,4.2vw,52px)}.battle-console .arena .unit.player{width:clamp(48px,6.5vw,78px);left:15%}.battle-console .arena .unit.boss{width:clamp(54px,7vw,90px)}.battle-console .arena .unit-art{height:auto;aspect-ratio:1}.arena .unit .bar{width:85%;height:4px}.arena .phase{font-size:10px;min-height:12px;max-width:85px}.arena .unit-label{font-size:10px}.enemy:not(.boss) .phase{max-height:24px;overflow:hidden}.element{font-weight:650;white-space:nowrap}.element-0{color:#f2cf8d}.element-1{color:#ff9273}.element-2{color:#d2a5ff}.element-3{color:#8de1ff}.skill-numbers{padding:9px 0;font-size:14px;line-height:1.7;color:#d7e5ef}.skill-numbers strong{color:#f1d398}.damage-tabs{display:flex;gap:10px;margin-top:18px}.damage-tabs .active{border-color:var(--gold);color:var(--gold)}.damage-row{border-bottom:1px solid var(--line);padding:11px 0}.damage-row summary{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;cursor:pointer}.damage-row summary>span{font-size:14px}.damage-row summary strong{font-size:14px}.damage-row summary i{width:100%;height:5px;background:linear-gradient(to right,#e1b471 var(--share),#2e3d50 var(--share))}.damage-row p{margin:5px 0;font-size:13px}.damage-list{margin:16px 0}.projectile.lightning .trail{stroke:#d2a5ff}.projectile.frost .trail{stroke:#8de1ff}.projectile.fire .trail{stroke:#ff9273}.combat-effect.storm{color:#d2a5ff}.combat-effect.shatter{color:#8de1ff}@media(max-width:700px){.battle-console .arena .unit{width:32px}.battle-console .arena .unit.player{width:52px;left:12%}.battle-console .arena .unit.boss{width:60px}.battle-console .arena .phase{font-size:9px}.battle-toolbar .controls button{padding:5px 6px}.damage-row summary>span{font-size:13px}}@media(max-height:500px) and (orientation:landscape){.battle-console .arena .unit{width:28px}.battle-console .arena .unit.player{width:44px}.battle-console .arena .unit.boss{width:50px}}
/* 0.6 combat HUD: one battlefield, edge-mounted inventory and timed skill strip. */
.battle-console{background:#111b2a;border:1px solid #495b6a}.battle-stage{display:flex;flex:1;min-height:0;position:relative;overflow:hidden}.battle-console .battle-stage .arena{flex:1;min-width:0;height:100%;min-height:0}.relic-rail{width:56px;flex-shrink:0;display:flex;align-content:start;align-items:center;flex-direction:column;gap:7px;padding:10px 5px;background:#101b2c;border-left:1px solid #35495a;overflow:auto}.relic-icon{width:40px;min-height:40px;padding:2px;position:relative;background:#1d2b3c}.relic-icon>span{font-size:24px;line-height:1}.relic-icon small{position:absolute;right:2px;bottom:0;font-size:10px;color:#eee}.rarity-normal{border-color:#71818d!important}.rarity-epic{border-color:#efbd68!important;box-shadow:inset 0 0 0 1px #b58642,0 0 9px #d1a65824!important;background:linear-gradient(135deg,#50403033,#202e42)!important}.reward-dialog{max-width:870px!important;width:calc(100% - 28px);padding:25px}.reward-area{margin:0}.reward-title{margin-bottom:22px}.reward-card{min-height:200px;padding:20px}.reward-card b{font-size:20px;margin:12px 0}.reward-card p{font-size:15px;margin:9px 0}.reward-card .badge{font-size:13px}.reward-exit{display:block;margin:18px auto 0;background:none;border-color:transparent;color:#98a5b4;font-size:13px;padding:5px}.reward-exit:hover{color:#fff}.skill-numbers{font-size:14px}.battle-toolbar{border-bottom:1px solid #3b4c5b;padding:7px 12px;min-height:46px}.battle-toolbar .combat-identity{display:none}.battle-toolbar .controls{margin-left:auto}.battle-toolbar .wave-label{font-size:20px}.battle-bottom{background:#111d2d;padding:8px 12px;gap:13px;min-height:85px}.skills-strip{gap:7px}.skill-chip{position:relative;flex:1;display:flex;min-height:47px;gap:3px 6px;padding:7px 8px 12px;background:#192c41;border:1px solid #405b70;overflow:hidden}.skill-chip>span{font-size:21px}.skill-chip>b{font-size:13px}.skill-chip>small{font-size:11px}.skill-chip .cd-text{margin-left:auto;min-width:24px}.skill-chip .cd-track{position:absolute;bottom:0;left:0;right:0;height:4px;background:#0b1321}.cd-track>i{display:block;height:100%;background:currentColor;width:0}.weapon-chip img{height:26px;width:26px;object-fit:contain}.skill-chip.empty{min-height:47px;border-style:dashed}.set-strip{margin-top:6px}.vitals{max-width:260px}.hud-tooltip{position:fixed;z-index:1000;background:#122237f5;border:1px solid #6a8094;padding:14px;box-shadow:0 6px 25px #0009;pointer-events:none;font-size:13px;max-height:calc(100dvh - 16px);overflow:auto}.hud-tooltip[hidden]{display:none}.hud-tooltip h3{font-size:15px}.hud-tooltip p{margin:7px 0;line-height:1.5}.set-locked{color:#7f8a98}.set-earned{font-weight:600}.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}.enemy-type{font-size:9px;line-height:1.1;color:#dae6eb;display:block;text-shadow:0 1px #000}.type-tank .unit-art{transform:scale(1.18)}.type-fast .unit-art{transform:scale(.85)}.enemy.is-casting .unit-art{filter:brightness(1.5) drop-shadow(0 0 6px #dda6ff)}.hostile .trail{stroke-dasharray:3 2}.hostile .head{filter:drop-shadow(0 0 3px #fc6262)}.arena.low-health{box-shadow:inset 0 0 65px #d83e3e66}.exit-actions{display:flex;gap:10px;justify-content:flex-end}#exitDialog{max-width:360px}#exitDialog p{font-size:18px}.camp-heading .eyebrow,.start-row>small,.camp-record{display:none}.camp-heading h1{font-size:29px}.camp-tabs{justify-content:center}.camp-tabs button{min-width:120px}.select-card{border:2px solid #435c73;background:#142235}.select-card.active{background:radial-gradient(ellipse at 50% 40%,#45524855,#142235 75%);border-color:#d8b273}.select-card.active:after{content:'◆';font-size:16px}.section-label b{display:none}.weapon-card{background:#132235}.training-card{background:#132235}@media(max-width:700px){.relic-rail{width:39px;padding:6px 3px;gap:5px}.relic-icon{width:30px;min-height:31px}.relic-icon>span{font-size:19px}.battle-toolbar{padding:5px 7px;gap:5px}.battle-toolbar .controls button{font-size:11px;padding:5px}.battle-toolbar .wave-label{font-size:16px}.battle-bottom{padding:6px;gap:5px;min-height:110px}.battle-bottom .vitals{max-width:none;font-size:12px;gap:3px}.skills-strip{gap:4px}.skill-chip{flex-direction:column;gap:1px;min-height:56px;padding:4px 2px 7px;flex-wrap:nowrap}.skill-chip b{font-size:10px;line-height:1.2}.skill-chip>span{font-size:15px;line-height:1.2}.skill-chip>small,.skill-chip .cd-text{font-size:9px;margin:0;line-height:1.1}.weapon-chip img{width:19px;height:19px}.set-strip{margin-top:3px}.set-strip button{font-size:11px;padding:1px 5px}.reward-dialog{padding:18px}.reward-card{min-height:125px;padding:12px 15px}.reward-card b{font-size:18px;margin:6px 0}.reward-card p{font-size:14px;margin:5px 0}.reward-title{margin-bottom:13px}.rewardcards{gap:9px}.enemy-type{font-size:8px}.camp-tabs button{min-width:0}.camp-heading h1{font-size:24px}.selection{grid-template-columns:repeat(3,minmax(0,1fr))}.select-card{padding:12px 5px;text-align:center;min-height:170px}.select-card .portrait{position:static;float:none;display:block;width:64px;height:70px;margin:0 auto}.select-card h3{font-size:14px}.select-card p,.statline{font-size:11px;line-height:1.5}.select-card.active:after{right:5px;top:2px;font-size:12px}}@media(max-height:500px) and (orientation:landscape){.battle-bottom{min-height:60px;flex-direction:row}.battle-bottom .vitals{max-width:28%}.skill-chip{min-height:38px;flex-direction:row;flex-wrap:wrap}.battle-toolbar{min-height:35px}}
.rarity-fine{border-color:#82c79f!important}.rarity-rare{border-color:#7db6ee!important}.shell>footer{display:none}.camp-tabs{border-bottom:1px solid #42566a;padding-bottom:12px}.weapon-card .element{font-size:13px}.skill-chip.element-1 .cd-track>i{background:#ff9273}.skill-chip.element-2 .cd-track>i{background:#d2a5ff}.skill-chip.element-3 .cd-track>i{background:#8de1ff}.battle-bottom .vitals{padding:0}.reward-dialog .reward-card .badge{color:var(--muted)}
.set-strip .set-dormant{color:#7f8a98;border-color:#344455}.set-strip .set-active{border-color:currentColor}.hud-tooltip{word-break:break-word}
/* 0.7: dark-fantasy game chrome, readable actor silhouettes, distinct impact vocabulary. */
:root{--bg:#090e17;--panel:#142130;--line:#405567;--gold:#dfb66f;--mint:#8dc7bc}body{background:#090e17}body.playing .shell{max-width:none;padding:0 14px}body.playing header{height:42px;margin-bottom:8px;border:0}body.playing .brand{font-size:17px;letter-spacing:.08em}.brand small{font-size:12px;font-weight:400;letter-spacing:.04em}body.playing #app{height:calc(100dvh - 62px)}header #guideBtn{font-size:13px;padding:4px 12px}.battle-console{border:2px solid #5d6570;box-shadow:0 0 0 2px #0b1420,inset 0 0 0 1px #172a3c;border-radius:8px;overflow:hidden}.battle-toolbar{background:linear-gradient(#223245,#111e2d);border-bottom:2px solid #5d5140;min-height:46px}.wave-label{font-variant-numeric:tabular-nums;color:#f5e4bf}.battle-toolbar .controls button{border:1px solid #556374;background:linear-gradient(#314052,#202d3d);border-radius:4px;font-size:13px;padding:5px 10px;box-shadow:inset 0 1px #ffffff13,0 2px #0005}.battle-toolbar .controls button.active{background:#534630;color:#ffe3aa;border-color:#b69a69}.battle-stage{background:#132431}.battle-stage .arena:after{content:'';pointer-events:none;position:absolute;inset:0;z-index:1;background:linear-gradient(#09182a35,transparent 20%,transparent 75%,#08132065);box-shadow:inset 0 0 100px #06121e66}.battle-console .arena .unit{width:clamp(44px,4.8vw,70px);transform:translate(-50%,-73%)}.battle-console .arena .unit.player{width:clamp(56px,6vw,86px)}.battle-console .arena .unit.boss{width:clamp(88px,9.2vw,138px)}.arena .unit-art{filter:drop-shadow(0 2px 1px #03111cd9);image-rendering:pixelated}.enemy .unit-art{position:relative;z-index:2}.ground-shadow{position:absolute;left:15%;right:15%;bottom:16px;height:9px;background:#0410178c;border-radius:50%;filter:blur(2px);z-index:0}.player .ground-shadow{bottom:9px}.enemy .phase{position:absolute;bottom:calc(100% - 6px);left:50%;transform:translateX(-50%);padding:0 4px;font-size:12px;background:#101e2bcc;border-radius:3px;z-index:4;white-space:nowrap;max-width:none}.enemy .phase:empty{display:none}.enemy .bar{height:4px!important;background:#131b22;border:1px solid #121d29!important;width:68%!important;position:relative;z-index:4}.enemy .bar i{background:#ce7669}.boss .bar i{background:#e2a35f}.enemy-type{display:none}.enemy:hover .enemy-type{display:block;position:absolute;bottom:-16px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:12px;background:#111d2de8;padding:1px 4px;z-index:5}.type-tank .unit-art,.type-fast .unit-art{transform:none}.enemy.is-casting:after{content:'';position:absolute;left:18%;width:64%;bottom:4px;height:3px;z-index:5;background:linear-gradient(to right,#ddb9ff calc(var(--cast)*100%),#271d39 0)}.enemy.is-hit .unit-art{filter:brightness(1.65) drop-shadow(0 0 2px #fff2ba)}.enemy.is-walking .unit-art{animation:pixel-walk .42s steps(3,end) infinite}.type-fast.is-walking .unit-art{animation:beast-bound .28s steps(3,end) infinite}.type-tank.is-walking .unit-art{animation:heavy-step .7s steps(3,end) infinite}.type-mage .unit-art,.type-summoner .unit-art{animation:caster-float 1.5s ease-in-out infinite alternate}.enemy.is-attacking .unit-art{animation:enemy-strike .35s ease-out}.enemy.is-frozen .unit-art{animation:none!important;filter:brightness(1.2) drop-shadow(0 0 4px #82cdee)}.projectile .trail{stroke-width:2px;opacity:.85}.projectile .trail-glow{stroke-width:7px;opacity:.17;vector-effect:non-scaling-stroke}.projectile .core{fill:#fff4d3;stroke:#fff7dc;stroke-width:.25px}.projectile.fire .core{fill:#fff0ad}.projectile.frost .core{stroke:#e0fbff;fill:none}.projectile.arrow .core{stroke:#fff3c6;fill:none}.projectile.lightning .trail{stroke-width:2.5px}.projectile.lightning .trail-glow{stroke-width:9px;opacity:.2}.projectile.shock .trail,.projectile.shock .trail-glow{opacity:0}.projectile .head{filter:none}.combat-effect .impact-ring{stroke-width:1px;opacity:.4}.combat-effect .impact-rays{stroke-width:2px}.impact-sparks{fill:currentColor}.combat-effect.cast .impact-sparks,.combat-effect.death .damage-number{display:none}.damage-number{font-size:2.4px;stroke:#101521;stroke-width:.18px;paint-order:stroke;filter:drop-shadow(0 1px 0 #0006)}.combat-effect.death .impact-rays,.combat-effect.death .impact-ring{opacity:.15}.relic-rail{background:linear-gradient(90deg,#132231,#0a1422);border-left:2px solid #5b5144;width:57px;padding-top:12px}.relic-icon{width:41px;min-height:42px;border-radius:5px;background:linear-gradient(135deg,#2c3a4b,#172435);box-shadow:inset 0 1px #ffffff18,0 2px #0005}.relic-icon small{font-size:12px;background:#111b29;border-radius:3px;padding:0 2px}.battle-bottom{background:linear-gradient(#202e40,#101b2a);border-top:2px solid #5e5140;min-height:94px;padding:10px 14px}.skill-chip{background:linear-gradient(#344559,#1c2d41);border:1px solid #6d7c8a;border-radius:5px;box-shadow:inset 0 1px #ffffff17,0 2px #0006;min-height:52px}.skill-chip b{font-size:14px}.skill-chip>span{display:grid;place-items:center;width:30px;height:30px;border:1px solid currentColor;background:#111c2c;border-radius:4px;font-size:21px}.skill-chip .cd-text{font-size:12px;font-variant-numeric:tabular-nums}.cd-track{height:4px!important}.vitals .bar{height:9px;border:1px solid #556374;background:#0d1726}.vitals .bar i{background:linear-gradient(#bc605b,#923e42)}.vitals .xpbar{height:5px!important}.vitals .xpbar i{background:#708fb8}.battle-bottom .vitals{font-size:14px}.set-strip button{border:0;border-radius:0;background:none;font-size:13px;padding:1px 10px;box-shadow:none}.arena-info,.arena-time{font-size:12px!important;color:#c2cbd1!important;background:#0c1b2ac4!important;border:1px solid #50617366}.trigger-label{display:none}.reward-dialog,.build-dialog,#guide,#exitDialog{background:linear-gradient(135deg,#243347,#132034);border:2px solid #a28b67;border-radius:8px;box-shadow:0 0 0 3px #111a26,0 20px 100px #0009}.reward-card{background:linear-gradient(145deg,#2f4359,#1b2c40)!important;border-radius:6px;box-shadow:inset 0 1px #ffffff17,0 4px #080e18!important;transition:transform .15s,border-color .15s}.reward-card:hover{transform:translateY(-4px);background:linear-gradient(145deg,#3a4e62,#23374c)!important}.reward-title h2{font-size:25px;color:#f6e0b7}.arena-overlay{background:radial-gradient(ellipse,#142032c9,#060c15e6)}.arena-overlay h2{color:#f5deb2}.primary{background:linear-gradient(#eed098,#bd9659);border:1px solid #fae0b3;border-bottom:3px solid #7f623c;border-radius:5px;color:#241d18;box-shadow:0 3px 0 #080c14}.camp-heading{margin-top:25px}.camp-heading h1{font-size:34px;color:#ecd4ad}.camp-tabs button{background:linear-gradient(#2a3a4d,#192637);border-color:#57687a;border-radius:4px}.select-card,.weapon-card,.training-card{border-radius:6px;background:linear-gradient(135deg,#26384b,#162334);box-shadow:inset 0 1px #ffffff0b,0 5px 18px #0003}.select-card .portrait{width:104px;height:104px}.select-card h3{font-size:21px}.select-card.active{box-shadow:inset 0 0 35px #cba65b16;border-color:#d5b275}.hero-art{image-rendering:pixelated}@keyframes pixel-walk{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-3px) rotate(1deg)}}@keyframes beast-bound{0%,100%{transform:translateY(0) scaleX(1.03)}50%{transform:translateY(-5px) scaleX(.98)}}@keyframes heavy-step{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px) rotate(-2deg)}}@keyframes caster-float{to{transform:translateY(-4px)}}@media(max-width:700px){body.playing .shell{padding:0 4px}body.playing header{height:36px;margin-bottom:4px}body.playing #app{height:calc(100dvh - 47px)}.battle-console .arena .unit{width:42px}.battle-console .arena .unit.player{width:55px}.battle-console .arena .unit.boss{width:76px}.relic-rail{width:39px;padding:7px 2px}.relic-icon{width:30px;min-height:34px}.relic-icon small{font-size:12px}.battle-toolbar .controls button{padding:4px 5px;font-size:12px}.battle-toolbar .wave-label{font-size:16px}.battle-bottom{padding:6px;min-height:126px}.skill-chip{padding:4px 2px 8px;min-height:64px}.skill-chip>span{width:23px;height:23px;font-size:17px}.skill-chip b{font-size:12px}.skill-chip small,.skill-chip .cd-text{font-size:12px;line-height:1.2}.weapon-chip img{width:23px;height:23px}.battle-bottom .vitals{font-size:13px}.set-strip button{font-size:12px;padding:1px 5px}.enemy .phase{font-size:12px;max-width:85px;overflow:hidden}.arena-info,.arena-time{font-size:12px!important;max-width:52%}.select-card .portrait{width:63px;height:72px}.select-card h3{font-size:15px}.select-card p,.select-card .statline{font-size:12px}.camp-heading h1{font-size:28px}}@media(prefers-reduced-motion:reduce){.enemy .unit-art,.actor-rig{animation:none!important}.reward-card:hover{transform:none}}
/* A / 暮铁: shared components across every page and overlay. */
:root{--bg:#090e13;--panel:#151b22;--line:#6e624d;--ink:#ebe2d2;--muted:#b5b0a7;--gold:#d4b073;--mint:#acc6b5}body{background:radial-gradient(ellipse at 50% 0,#263440,#090e13 75%);color:var(--ink)}.shell{max-width:1360px}button{border-radius:2px;border-color:#73634e;background:linear-gradient(#30343a,#161d25);box-shadow:inset 0 1px #e6c98926,0 2px #080c12;color:#e5d6ba}button:hover{border-color:#d8b678;background:linear-gradient(#434342,#222a31)}button:focus-visible{outline:2px solid #f4d39a;outline-offset:3px}h1,h2,h3,.brand{font-family:Georgia,'Songti SC','Noto Serif CJK SC',serif;font-weight:700}.brand{letter-spacing:.13em;color:#ead6ad}.primary{background:linear-gradient(#61513a,#2f2a24);border:1px solid #d0ad75;border-bottom:3px solid #6f5737;color:#f7e6c5;padding:11px 24px}.primary:hover{background:linear-gradient(#827050,#514331)}.battle-console,.panel,.weapon-card,.training-card,.select-card,.reward-card,dialog{border-radius:2px;border-color:#8a7758;box-shadow:inset 0 0 0 2px #0c141c,inset 0 0 0 3px #65594244,0 7px 22px #0006}.battle-console{position:relative}.battle-toolbar{min-height:80px;background:linear-gradient(#16212bea,#080f18e8);border-bottom:1px solid #ac8e58;gap:18px}.battle-toolbar .vitals{min-width:210px;width:230px;font-family:system-ui,sans-serif;font-size:14px;gap:3px 8px;padding:4px 0}.battle-toolbar .vitals #health{color:#f5e8d8}.battle-toolbar .vitals #xptext{font-size:12px}.battle-toolbar .wave-label{flex:1;text-align:center;color:#f2deb5;font-family:Georgia,'Songti SC',serif;font-size:25px;white-space:nowrap}.battle-toolbar .controls{gap:5px;flex-wrap:wrap;max-width:340px;justify-content:flex-end}.battle-toolbar .controls button{background:linear-gradient(#252b31,#101822);border:1px solid #79674b;box-shadow:inset 0 0 0 2px #0c121a;border-radius:2px}.battle-stage{min-height:0}.battle-bottom{position:relative;background:linear-gradient(#171f28,#0a111a);border-top:1px solid #ac8e58;min-height:93px;padding:9px 20px}.battle-build-hud{display:flex;justify-content:center;width:100%}.skills-strip{width:min(800px,100%);gap:12px}.skill-chip{display:grid;grid-template-columns:48px 1fr;grid-template-rows:1fr 1fr;align-items:center;gap:0 7px;padding:8px 10px 12px;min-height:76px;background:linear-gradient(#202b36,#0c1420);border:1px solid #bca16a;border-radius:1px;box-shadow:inset 0 0 0 2px #0a121d,inset 0 0 0 3px #78634766}.skill-chip>span{grid-row:1/3;width:48px;height:48px;border:0;background:none;display:block}.item-icon{display:block;width:100%;height:100%;object-fit:contain;image-rendering:pixelated}.skill-chip b{font-size:14px;line-height:1.3;color:#eee2c9}.skill-chip>small{color:#c7b78d}.skill-chip .cd-text{font-size:13px;justify-self:end;grid-column:2;grid-row:2}.weapon-chip>img{width:48px;height:48px;grid-row:1/3}.skill-chip.empty{display:flex;align-items:center;justify-content:center;opacity:.5;border-color:#766b57}.relic-rail{width:104px;padding:12px 7px;display:grid;grid-template-columns:repeat(2,1fr);grid-auto-rows:min-content;align-content:start;gap:8px;border-left:1px solid #a68957;background:linear-gradient(90deg,#1a242e,#0b1420);overflow:auto}.rail-title{grid-column:1/-1;color:#c9b58d;font-size:14px;letter-spacing:.25em;text-align:center;margin:0 0 4px}.relic-icon{width:40px;min-height:43px;padding:3px;background:#111d28;box-shadow:inset 0 0 0 2px #080f18;border-radius:1px}.relic-icon>span{display:block;width:31px;height:32px}.relic-icon small{position:absolute;right:1px;bottom:0;color:#ebd5a6;font-size:12px;background:#101722}.relic-rail .set-strip{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #716044;padding-top:8px;gap:6px;margin-top:8px}.set-strip button{padding:4px 0;font-size:12px;border:0;background:none;box-shadow:none}.set-strip>span{grid-column:1/-1;text-align:center;font-size:13px;margin:0;color:#d8b779}.reward-dialog,.build-dialog,#guide,#exitDialog{background:linear-gradient(#202931f8,#0c141ff8);border:2px solid #b79a68;border-radius:2px}.reward-dialog{max-width:920px!important;padding:28px}.reward-title{justify-content:center;margin-bottom:24px}.reward-title h2{font-size:29px;letter-spacing:.15em}.rewardcards{gap:18px}.reward-card{position:relative;background:linear-gradient(#19252f,#0c1420)!important;padding:22px 18px;text-align:center;border:2px solid #8f949a;min-height:300px}.reward-card.rarity-epic{border-color:#e8be62!important;background:radial-gradient(ellipse at 50% 25%,#b3893033,transparent 60%),linear-gradient(#24282e,#121b27)!important}.reward-icon{display:block;width:88px;height:88px;object-fit:contain;margin:8px auto 16px;image-rendering:pixelated}.reward-card b{font-family:Georgia,'Songti SC',serif;font-size:23px;color:#eedebc}.reward-card p{font-size:15px;line-height:1.55;color:#c5c4be}.skill-numbers{font-family:system-ui,sans-serif;font-size:14px}.reward-card .badge{font-size:13px}.reward-exit{font-family:system-ui,sans-serif}.camp-heading{margin:28px 0 14px}.camp-heading h1{font-size:38px;letter-spacing:.15em}.gold-balance{padding:4px 15px;background:#111b26;border:1px solid #8b7553;font-size:24px}.camp-tabs{gap:0;border:1px solid #8a7556;background:#111c27;padding:3px;margin:25px 0}.camp-tabs button{flex:1;min-width:0;border:0;background:none;box-shadow:none;letter-spacing:.12em;padding:11px}.camp-tabs .active{background:linear-gradient(#4b4233,#292927);color:#f4dcaa}.section-label h3{font-size:22px;color:#d5c29f}.selection{gap:20px}.select-card{background:radial-gradient(ellipse at 50% 30%,#52606a30,#111c28 75%);padding:25px;text-align:center;min-height:225px}.select-card .portrait{float:none;display:block;width:110px;height:110px;margin:auto}.select-card h3{font-size:24px}.select-card .statline{display:block;font-size:14px}.select-card.active{border-color:#e5c48b;background:radial-gradient(ellipse at 50% 30%,#a18a4933,#121d28 75%)}.weapon-card,.training-card{background:linear-gradient(130deg,#26303a,#111b27);padding:22px}.weapon-card h3{font-size:24px}.training-card h3{font-size:22px}.training-card p{font-size:16px}.start-row{justify-content:center;border-top:1px solid #756345;padding:22px 0;margin-top:24px}.start-row .primary{font-size:19px;min-width:230px}.dialog-head{border-bottom:1px solid #817052;padding-bottom:12px}.build-dialog .dialog-head{background:#1b2633}.build-dialog h3{color:#d9c296}.hud-tooltip{background:#111c2af5;border:1px solid #b79a68;border-radius:1px}.sprite-frame{background-repeat:no-repeat;image-rendering:pixelated;aspect-ratio:1;position:relative}.actor-rig .hero-art{width:100%;height:100%;filter:none!important}.enemy .sprite-frame,.death-ghost .sprite-frame{height:auto;width:100%}.enemy .unit-art,.actor-rig,.held-weapon{animation:none!important}.hero-art.swift,.hero-art.heavy{filter:none}.actor-rig .held-weapon{z-index:3}.arena .unit.player{z-index:58}.is-frozen .sprite-frame{filter:brightness(1.2) drop-shadow(0 0 4px #9cdaff)!important}@media(max-width:700px){.battle-toolbar{min-height:85px;gap:5px 8px;padding:6px}.battle-toolbar .vitals{width:150px;min-width:150px;font-size:13px;flex:1}.battle-toolbar .wave-label{font-size:18px;flex:0 0 auto}.battle-toolbar .controls{max-width:none;flex-basis:100%;justify-content:center;gap:6px}.battle-toolbar .controls button{padding:3px 7px;font-size:12px}.battle-bottom{min-height:80px;padding:6px}.skills-strip{gap:5px}.skill-chip{display:flex;flex-direction:column;gap:1px;padding:4px 2px 8px;min-height:66px}.skill-chip>span,.weapon-chip>img{width:31px;height:31px}.skill-chip b{font-size:12px;white-space:nowrap}.skill-chip>small{font-size:12px}.skill-chip .cd-text{position:absolute;right:3px;top:3px;font-size:12px;background:#0e1625bb;padding:0 2px}.relic-rail{width:42px;padding:7px 3px;grid-template-columns:1fr;gap:6px}.rail-title{font-size:12px;letter-spacing:0}.relic-icon{width:33px;min-height:35px;padding:2px}.relic-icon>span{width:27px;height:28px}.relic-rail .set-strip{grid-template-columns:1fr;gap:3px}.set-strip>span{font-size:12px}.set-strip button{font-size:12px;padding:2px 0}.reward-dialog{padding:16px}.rewardcards{gap:10px}.reward-card{min-height:145px;text-align:left;padding:14px 14px 14px 78px}.reward-icon{position:absolute;left:12px;top:20px;width:54px;height:54px;margin:0}.reward-card b{font-size:19px}.reward-card p{font-size:14px;margin:5px 0}.reward-title{margin-bottom:14px}.reward-title h2{font-size:25px}.camp-heading h1{font-size:29px}.camp-tabs button{font-size:14px;padding:9px 2px;letter-spacing:0}.select-card{padding:15px 4px;min-height:185px}.select-card .portrait{width:69px;height:82px}.select-card h3{font-size:16px}.select-card .statline,.select-card p{font-size:12px}.selection{gap:8px}.weapon-card,.training-card{padding:16px}.weapon-card h3{font-size:21px}.start-row{padding:17px 0}.reward-exit{margin-top:13px}}@media(max-height:500px) and (orientation:landscape){.battle-toolbar{min-height:45px;flex-wrap:nowrap}.battle-toolbar .controls{flex-basis:auto}.battle-toolbar .vitals{max-width:200px}.battle-bottom{min-height:61px}.skill-chip{min-height:47px}.skill-chip>span,.weapon-chip>img{width:32px;height:32px}}
.inline-icon{width:28px;height:28px;object-fit:contain;vertical-align:middle;margin-right:6px;image-rendering:pixelated}.skillgrid .skill .icon{display:inline-block;width:34px;height:34px;vertical-align:middle;margin-right:5px}.portrait .hero-art.swift{filter:hue-rotate(155deg)}.portrait .hero-art.heavy{filter:hue-rotate(320deg)}.sprite-patch{display:block;image-rendering:pixelated;pointer-events:none}
.battle-console .battle-stage .arena{background:#142331 url('art/battlefield-A.png') center 60%/cover no-repeat}.boss-preview{background:linear-gradient(#07111ee0,#0a1322e8),url('art/battlefield-A.png') center/cover}body:not(.playing){background:linear-gradient(#08111bdd,#08111bf0),url('art/battlefield-A.png') center/cover fixed}
.skill-extra{stroke-width:1.5px;vector-effect:non-scaling-stroke;opacity:.8}.projectile .core{stroke-width:.3px;fill:none}.combat-effect.cast .impact-rays{display:block}.combat-effect.cast .impact-sparks{display:none}.sprite-patch{filter:inherit}
.status-layer{position:absolute;inset:0;width:100%;height:100%;z-index:90;pointer-events:none;overflow:visible}.status-layer path{vector-effect:non-scaling-stroke;stroke-width:1px}.status-layer .burn{fill:#f5a454;stroke:#ffce8b}.status-layer .bleed{fill:#bd5260}.status-layer .chill{stroke:#a3d9ec;fill:none}.status-layer .freeze{stroke:#b2e5f2;fill:#7bbace24}.status-layer .charge{fill:#c9a6ef;stroke:#eddfff}
.hero-preview{display:block;width:100%;height:100%;position:relative}.portrait{overflow:visible}.sprite-frame[data-sprite-ready="true"]{background:none}.sprite-patch{background-repeat:no-repeat}
.actor-rig .held-weapon{z-index:1}.actor-rig .hero-art{z-index:2;position:relative}
#guide p,.build-dialog>p{font-size:16px;line-height:1.7}.hud-tooltip p{font-size:14px}.build-dialog .recipe-row p{font-size:14px}.reward-card p{font-size:16px}@media(max-width:700px){.reward-card p{font-size:14px}}
/* 0.9: the arena owns the entire viewport; HUD floats over the same scene. */
body.playing{overflow:hidden}body.playing .shell{width:100%;max-width:none;padding:0!important}body.playing header,body.playing footer{display:none!important}body.playing #app{height:100dvh!important;width:100%;padding:0}.battle-console{display:block;height:100%;border:0;box-shadow:none;border-radius:0;overflow:hidden}.battle-stage{position:absolute;inset:0;display:block;width:100%;height:100%;overflow:hidden}.battle-console .battle-stage .arena{position:absolute;inset:0;width:100%;height:100%;background:#17232a url('art/battlefield-ground.png') center/cover no-repeat}.battle-stage .arena:after{box-shadow:inset 0 0 70px #03080f66;background:linear-gradient(#050a1266,transparent 24%,transparent 78%,#03070d77)}.battle-toolbar{position:absolute;inset:18px 18px auto;z-index:210;min-height:0;height:auto;display:flex;align-items:flex-start;justify-content:space-between;background:none;border:0;box-shadow:none;padding:0;pointer-events:none}.battle-toolbar>*{pointer-events:auto}.battle-toolbar .vitals{background:#101923e6;border:2px solid #a48a5c;box-shadow:inset 0 0 0 3px #060d15,0 4px 12px #0007;width:240px;min-width:220px;padding:9px 13px;font-size:14px;gap:2px 8px}.battle-toolbar .wave-label{position:absolute;left:50%;transform:translateX(-50%);flex:0;top:0;font-size:24px;padding:4px 24px;background:#111a24eb;border:2px solid #9e8458;box-shadow:inset 0 0 0 3px #060d15,0 4px 12px #0007}.battle-toolbar .controls{margin:0 0 0 auto;max-width:310px;gap:4px;background:#0b131dc9;padding:5px;border:1px solid #756348}.battle-toolbar .controls button{padding:5px 8px}.battle-toolbar .combat-identity{display:none}.battle-bottom{position:absolute;left:50%;transform:translateX(-50%);bottom:max(16px,env(safe-area-inset-bottom));width:min(670px,calc(100% - 40px));height:101px;min-height:0;padding:9px 14px;display:flex;z-index:210;background:linear-gradient(#1d2530ed,#0b121bef);border:2px solid #9e8458;box-shadow:inset 0 0 0 3px #050c15,0 5px 18px #000b;clip-path:polygon(12px 0,calc(100% - 12px) 0,100% 12px,100% calc(100% - 12px),calc(100% - 12px) 100%,12px 100%,0 calc(100% - 12px),0 12px)}.battle-build-hud{width:100%;height:100%}.skills-strip{width:100%;height:100%;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.skill-chip{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0;padding:3px 2px 8px;min-height:0;height:100%;border:1px solid #9b8157;position:relative}.skill-chip>span,.weapon-chip>img{width:44px;height:44px;flex:none}.skill-chip b{font-size:12px;line-height:16px}.skill-chip>small:not(.cd-text){position:absolute;left:4px;top:3px;font-size:11px;color:#dac497;text-shadow:0 1px #000}.skill-chip .cd-text{position:absolute;right:4px;top:3px;font-size:12px;background:#080e18b0;padding:0 2px}.skill-chip.empty{opacity:.55}.skill-chip.empty>small{display:none}.skill-chip.empty>span{width:auto;height:auto}.relic-rail{position:absolute;right:17px;top:110px;bottom:auto;z-index:205;width:106px;max-height:calc(100% - 260px);padding:9px;gap:8px;background:#101924de;border:2px solid #9e8458;box-shadow:inset 0 0 0 3px #060d15,0 4px 12px #0007;grid-template-columns:repeat(2,minmax(0,1fr));overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.rail-title{display:none}.relic-icon{width:38px;min-height:40px}.relic-icon>span{width:30px;height:30px}.relic-rail .set-strip{margin-top:2px;padding-top:5px;gap:3px}.set-strip button{font-size:11px}.arena .arena-info{top:110px;left:20px;padding:3px 8px}.arena .arena-time{top:110px;right:140px}.battle-console .arena .unit{position:absolute;aspect-ratio:1}.battle-console .arena .unit-art,.actor-rig{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:1}.arena .unit-label{display:none}.ground-shadow,.player .ground-shadow{top:var(--foot);bottom:auto;left:22%;right:22%;height:7px;transform:translateY(-50%);background:#03070bcc;filter:blur(1px)}.enemy .bar{position:absolute;bottom:auto;top:calc(var(--foot) + 6px);left:18%;width:64%!important;margin:0}.enemy .phase{top:auto;bottom:calc(100% - 16px);max-width:140px;font-size:11px;line-height:14px;padding:0 3px}.enemy .enemy-type{top:calc(var(--foot) + 12px);bottom:auto}.defense-line{display:none}.enemy.is-casting:after{top:calc(var(--foot) + 13px);bottom:auto}.player-aura{top:12%;bottom:10%}.arena-overlay{z-index:200}.battle-console:has(.arena-overlay) .battle-toolbar,.battle-console:has(.arena-overlay) .battle-bottom,.battle-console:has(.arena-overlay) .relic-rail{opacity:.55}.combat-effect .damage-number{font-size:1.65px}.arena .unit.player{z-index:57}
@media(max-width:700px){.battle-toolbar{inset:max(9px,env(safe-area-inset-top)) 9px auto;flex-wrap:nowrap}.battle-toolbar .vitals{width:165px;min-width:0;font-size:12px;padding:7px;gap:1px 5px;flex:none}.battle-toolbar .vitals #xptext{font-size:11px}.battle-toolbar .wave-label{left:auto;right:0;transform:none;font-size:17px;padding:5px 8px;top:0}.battle-toolbar .wave-label span{font-size:11px}.battle-toolbar .controls{position:absolute;right:0;top:48px;max-width:205px;flex-basis:auto;justify-content:flex-end;padding:3px;gap:2px}.battle-toolbar .controls button{font-size:11px;padding:3px 4px}.battle-toolbar .controls #endRunBtn{display:block}.relic-rail{right:7px;top:118px;width:45px;padding:4px;gap:5px;grid-template-columns:1fr;max-height:calc(100% - 238px)}.relic-icon{width:32px;min-height:33px}.relic-icon>span{width:26px;height:26px}.relic-rail .set-strip{grid-template-columns:1fr}.set-strip button{font-size:10px;line-height:15px}.set-strip>span{font-size:11px}.battle-bottom{width:calc(100% - 18px);bottom:max(10px,env(safe-area-inset-bottom));height:85px;padding:7px;min-height:0}.skills-strip{gap:5px}.skill-chip>span,.weapon-chip>img{width:34px;height:34px}.skill-chip b{font-size:11px;line-height:14px}.skill-chip>small:not(.cd-text){font-size:9px;top:0;left:2px}.skill-chip .cd-text{font-size:10px;right:1px;top:0}.arena .arena-info{top:90px;left:9px;font-size:10px!important}.arena .arena-time{top:112px;right:59px;font-size:10px!important}.enemy .phase{font-size:9px;line-height:11px}.arena .unit .bar{height:3px!important}.combat-effect .damage-number{font-size:2.8px}}
@media(max-height:500px) and (orientation:landscape){.battle-toolbar{inset:7px}.battle-toolbar .vitals{width:180px;min-width:180px;padding:4px 8px;font-size:11px}.battle-toolbar .wave-label{font-size:17px;padding:2px 14px}.battle-toolbar .controls{max-width:290px}.battle-toolbar .controls button{padding:3px 5px;font-size:11px}.battle-bottom{height:65px;bottom:7px;width:450px;padding:4px 10px}.skill-chip>span,.weapon-chip>img{width:30px;height:30px}.skill-chip b{font-size:10px}.relic-rail{top:65px;right:7px;max-height:calc(100% - 150px)}.arena .arena-info,.arena .arena-time{top:72px}}
@media(min-width:701px) and (max-width:1050px) and (min-height:501px){.battle-toolbar .wave-label{left:auto;right:0;transform:none}.battle-toolbar .controls{position:absolute;right:0;top:58px}.relic-rail{top:124px}.arena .arena-time{top:124px}}
@media(max-width:700px) and (min-height:501px){.arena .arena-info{top:121px}.arena .arena-time{top:145px}}
/* Explicitly clear historical flex widths after switching the dock to five columns. */
.battle-console .skills-strip .skill-chip{width:100%;flex-wrap:nowrap;min-width:0;max-width:none}
@media(max-width:700px) and (max-height:500px) and (orientation:landscape){.battle-toolbar .vitals{width:145px;min-width:145px}.battle-toolbar .wave-label{left:50%;right:auto;transform:translateX(-50%);top:0;font-size:15px;padding:2px 9px}.battle-toolbar .controls{top:47px;right:0;max-width:none;flex-wrap:nowrap}.relic-rail{top:99px;max-height:calc(100% - 182px)}.arena .arena-time{top:99px;right:62px}.arena .arena-info{top:79px;left:9px}}
@media(max-width:360px) and (min-height:501px){.battle-toolbar .vitals{width:142px;min-width:142px;font-size:11px}.battle-toolbar .wave-label{font-size:15px;max-width:145px;padding:5px}.battle-toolbar .wave-label span{font-size:10px}.battle-toolbar .controls{max-width:184px}}
@media(max-width:700px) and (min-height:501px){.battle-toolbar .controls{top:84px}.relic-rail{top:160px;max-height:calc(100% - 280px)}.arena .arena-info{top:152px}.arena .arena-time{top:177px}}
@media(max-width:700px){.relic-rail .set-label,.relic-rail .set-count{display:block;line-height:12px;font-size:10px}.relic-rail .set-count small{font-size:10px}}

/* Temporary visible state while a verified sprite atlas is unavailable. */
.sprite-fallback{position:absolute;left:14%;top:20%;width:72%;height:65%;display:grid;place-items:center;color:#f3d8a8;background:#1e2d3e;border:2px dashed #a99473;font:12px system-ui;text-align:center;padding:4px;box-sizing:border-box;z-index:3}

/* Append after the full 0.9 stylesheet. Only the replacement view is affected. */
.reward-dialog .replacement-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: stretch;
  gap: 10px;
  margin: 12px 0 14px;
  min-width: 0;
}

.reward-dialog .replacement-grid > .reward-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  min-width: 0;
  min-height: 0;
  height: 100%;
  padding: 12px 8px;
  text-align: center;
  white-space: normal;
}

.reward-dialog .replacement-grid > .reward-card > .reward-icon {
  position: static;
  inset: auto;
  flex: none;
  width: 38px;
  height: 38px;
  margin: 0 0 3px;
}

.reward-dialog .replacement-grid > .reward-card > b {
  display: block;
  width: 100%;
  margin: 0;
  font-size: 17px;
  line-height: 1.3;
  overflow-wrap: anywhere;
}

.reward-dialog .replacement-grid > .reward-card > p {
  margin: 0;
  font-size: 12px;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.reward-dialog .replacement-grid > .reward-card > .badge {
  display: block;
  margin-top: auto;
  padding-top: 3px;
  color: var(--gold);
  font-size: 12px;
  line-height: 1.4;
  overflow-wrap: anywhere;
}

.reward-dialog .replacement-summary {
  margin: 8px 0 10px;
  font-size: 14px;
  line-height: 1.5;
}

.reward-dialog .replacement-summary > b {
  color: var(--ink);
}

.reward-dialog .replacement-summary > .replacement-loss {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 12px;
}

@media (max-width: 600px) {
  .reward-dialog .replacement-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }
}

@media (max-height: 500px) {
  .reward-dialog .replacement-grid {
    gap: 8px;
    margin: 8px 0 10px;
  }

  .reward-dialog .replacement-grid > .reward-card {
    gap: 3px;
    padding: 8px 6px;
  }

  .reward-dialog .replacement-grid > .reward-card > .reward-icon {
    width: 30px;
    height: 30px;
    margin-bottom: 1px;
  }
}

.route-effect-layer{position:absolute;inset:0;width:100%;height:100%;z-index:8;pointer-events:none;image-rendering:pixelated}.route-effect-layer image{image-rendering:pixelated}.item-icon[src*="core-art"],.reward-icon[src*="core-art"]{object-fit:contain;padding:6%;box-sizing:border-box}

/* Reviewed opaque icon tiles: fill tile, keep rarity on the surrounding UI. */
.item-icon[src*="core-art/skill-"],.reward-icon[src*="core-art/skill-"],
.item-icon[src*="core-art/relic-"],.reward-icon[src*="core-art/relic-"]{padding:0;object-fit:contain}
.icon-fallback{display:inline-grid!important;place-items:center;background:#2d2530;border:1px solid #9a7854;color:#f3ddbb;font:600 11px/1.2 system-ui;white-space:normal;word-break:break-all;overflow:hidden;text-align:center;min-width:24px;min-height:24px;vertical-align:middle}
.skill-chip.empty>small{display:block!important;position:static!important;font-size:12px!important;color:#b1b7c0!important}
.skill-chip.empty{background:#111923;border-style:dashed!important}
