:root{--image0:url("assets/background0.jpg");--image1:url("assets/background1.jpg")}

:root{
  --ink:#eee6d8; --muted:#a9a096; --paper:#d8cfbd; --paper2:#bfb39f;
  --black:#121214; --panel:rgba(20,20,21,.93); --line:#5f594f;
  --red:#b74b42; --red2:#7a2d29; --blue:#5e8fa7; --amber:#c89b53; --green:#6e9878;
  --w:1600px; --h:900px;
}
*{box-sizing:border-box} html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#0b0b0c;color:var(--ink);font-family:"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",system-ui,sans-serif;user-select:none;-webkit-user-select:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer} button:disabled{cursor:default;opacity:.35} img{user-drag:none;-webkit-user-drag:none}
#viewport{position:fixed;inset:0;display:grid;place-items:center;background:radial-gradient(circle at 50% 30%,#26252a 0,#0c0d0f 62%,#050506 100%)}
#stage{position:relative;width:1600px;height:900px;overflow:hidden;transform-origin:center;background:#171719;box-shadow:0 35px 100px #000b;border:1px solid #ffffff0c}
.screen{position:absolute;inset:0;display:none}.screen.active{display:block}
.grain{position:absolute;inset:0;pointer-events:none;opacity:.16;mix-blend-mode:soft-light;background-image:repeating-radial-gradient(circle at 12% 23%,#fff 0 1px,transparent 1px 4px),repeating-linear-gradient(17deg,transparent 0 8px,#fff1 9px,transparent 10px 16px);background-size:9px 9px,21px 21px}
.vignette{position:absolute;inset:-2px;pointer-events:none;box-shadow:inset 0 0 170px 70px #000c}
.hidden{display:none!important}

/* MENU */
#menuScreen{background:#0d0e10}
.cover{position:absolute;inset:-30px;background:var(--image0) center/cover no-repeat;filter:brightness(.48) saturate(.64) contrast(1.12);transform:scale(1.04)}
.cover::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#0b0b0dd9 0 35%,#0b0b0d25 60%,#070708a8 100%),linear-gradient(0deg,#070708ed 0,#07070820 58%,#0707088c 100%)}
.menu-wrap{position:absolute;left:92px;top:95px;width:560px;z-index:3}.eyebrow{font-size:13px;letter-spacing:7px;color:#c8ad82;text-transform:uppercase;margin-bottom:22px}.title{font-family:STKaiti,KaiTi,serif;font-size:84px;line-height:.95;letter-spacing:10px;margin:0;text-shadow:0 8px 28px #000}.title em{font-style:normal;color:#b5534a}.subtitle{margin:22px 0 40px;width:490px;color:#c0b8ac;line-height:1.9;font-size:16px;letter-spacing:1px}.menu-actions{display:flex;gap:14px;align-items:center}.btn-major,.btn-ghost{height:58px;padding:0 26px;border:1px solid #b7996b80;letter-spacing:3px;clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px);transition:.18s transform,.18s background,.18s border-color}.btn-major{background:linear-gradient(180deg,#9b493f,#6f2d28);min-width:182px;font-weight:700;box-shadow:0 10px 25px #0007}.btn-major:hover{transform:translateY(-2px);background:linear-gradient(180deg,#b25a4f,#7c332e)}.btn-ghost{background:#161618c7;min-width:148px}.btn-ghost:hover{background:#242326;border-color:#d6b886}.menu-foot{position:absolute;left:92px;bottom:42px;color:#817b72;font-size:12px;z-index:3;letter-spacing:1px}.stamp{position:absolute;right:78px;bottom:62px;border:2px solid #b4564d99;color:#d27b70aa;padding:10px 15px;transform:rotate(-7deg);font-weight:700;letter-spacing:4px;z-index:3}

/* SHARED HUD */
.runbar{position:absolute;left:0;right:0;top:0;height:76px;background:linear-gradient(180deg,#0a0a0be8,#141416e8);border-bottom:1px solid #776f622e;display:flex;align-items:center;padding:0 34px;z-index:15;box-shadow:0 8px 30px #0007}.run-title{width:330px}.run-title small{display:block;color:#9d9488;font-size:10px;letter-spacing:4px;margin-bottom:4px}.run-title b{font-family:serif;font-size:18px;letter-spacing:2px}.run-stats{display:flex;gap:26px;align-items:center;margin-left:auto}.stat-pill{display:flex;align-items:center;gap:8px;color:#c6b9a7;font-size:13px}.stat-pill b{font-size:16px;color:#f0dfc3}.run-actions{display:flex;gap:8px;margin-left:26px}.small-btn{border:1px solid #766e6340;background:#211f20;padding:8px 12px;color:#b9afa2}.small-btn:hover{background:#302c2d}

/* CHARACTER SELECT */
#selectScreen{background:radial-gradient(circle at 50% 12%,#343034,#171719 58%,#0c0d0f)}.select-head{position:absolute;top:66px;left:0;right:0;text-align:center}.select-head h2{font-family:serif;font-size:40px;letter-spacing:6px;margin:0 0 8px}.select-head p{margin:0;color:#9e968c;letter-spacing:2px}.class-grid{position:absolute;left:120px;right:120px;top:180px;bottom:86px;display:grid;grid-template-columns:repeat(3,1fr);gap:28px}.class-card{position:relative;border:1px solid #786f623d;background:linear-gradient(180deg,#252327,#161618);overflow:hidden;clip-path:polygon(18px 0,100% 0,100% calc(100% - 18px),calc(100% - 18px) 100%,0 100%,0 18px);transition:.2s transform,.2s border-color,.2s box-shadow}.class-card:hover{transform:translateY(-8px);border-color:#bf9e6c;box-shadow:0 22px 50px #0008}.class-art{position:absolute;left:0;right:0;top:0;height:360px;background:radial-gradient(circle at 50% 70%,#665a4f55,transparent 64%)}.class-art img{position:absolute;height:330px;max-width:88%;object-fit:contain;left:50%;bottom:3px;transform:translateX(-50%);filter:drop-shadow(0 18px 15px #000a)}.class-card:nth-child(2) .class-art{background:radial-gradient(circle at 50% 70%,#59483f55,transparent 64%)}.class-card:nth-child(3) .class-art{background:radial-gradient(circle at 50% 70%,#3f536355,transparent 64%)}.class-info{position:absolute;left:0;right:0;top:350px;bottom:0;padding:26px 28px;background:linear-gradient(180deg,#171719d9,#111113)}.class-role{font-size:11px;letter-spacing:4px;color:#c1a776}.class-info h3{font-family:serif;font-size:29px;margin:6px 0 10px;letter-spacing:4px}.class-info p{color:#a9a197;line-height:1.75;font-size:13px;min-height:70px}.class-traits{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}.trait{border:1px solid #83786a2d;background:#ffffff05;padding:9px 11px;font-size:11px;color:#bfb4a5}.trait b{color:#e0c79c}.class-go{position:absolute;right:20px;bottom:18px;border:1px solid #b9976788;background:#864039;padding:10px 18px;letter-spacing:2px}

/* STORY */
#storyScreen{background:#0f1012}.story-bg{position:absolute;inset:0;background:linear-gradient(90deg,#111217 0 43%,transparent 66%),var(--image0) center/cover no-repeat;filter:brightness(.55) saturate(.55)}.story-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,#08090bf2 0,#08090b18 45%,#08090b9a 100%)}.story-panel{position:absolute;left:110px;top:130px;width:640px;z-index:3}.story-kicker{font-size:11px;letter-spacing:6px;color:#c3a36f}.story-panel h2{font-family:STKaiti,KaiTi,serif;font-size:46px;letter-spacing:6px;margin:14px 0 20px}.story-text{font-family:serif;font-size:18px;line-height:2.05;color:#ddd3c4;min-height:278px;text-shadow:0 2px 8px #000}.story-text p{margin:0 0 14px}.story-next{margin-top:24px;min-width:150px}.story-portrait{position:absolute;right:125px;bottom:0;width:560px;height:650px;display:grid;place-items:end center;z-index:2}.story-portrait img{max-height:590px;max-width:520px;filter:drop-shadow(0 35px 40px #000c)}

/* MAP */
#mapScreen{background:#151518}.map-bg{position:absolute;inset:76px 0 0;background:radial-gradient(circle at 68% 35%,#433d3a55,transparent 35%),linear-gradient(180deg,#242226,#141416 65%,#0d0e10)}.map-silhouette{position:absolute;inset:76px 0 0;overflow:hidden}.ruin{position:absolute;background:#101114;border-top:1px solid #6a61562e;box-shadow:0 -18px 40px #0003}.ruin.r1{left:-30px;bottom:70px;width:390px;height:260px;clip-path:polygon(0 24%,18% 18%,20% 0,38% 10%,45% 22%,60% 19%,71% 37%,100% 31%,100% 100%,0 100%)}.ruin.r2{right:-80px;bottom:70px;width:520px;height:330px;clip-path:polygon(0 45%,14% 40%,16% 14%,30% 20%,35% 0,51% 7%,58% 33%,72% 28%,100% 36%,100% 100%,0 100%)}.moon{position:absolute;width:210px;height:210px;border-radius:50%;right:260px;top:105px;background:radial-gradient(circle at 43% 39%,#dfd4bc,#9f998d 55%,#5e5b56 100%);opacity:.18;box-shadow:0 0 90px #d8cdb31c}.map-content{position:absolute;left:85px;right:85px;top:118px;bottom:54px;z-index:4}.map-heading{display:flex;justify-content:space-between;align-items:flex-end}.map-heading h2{font-family:serif;font-size:34px;letter-spacing:4px;margin:0}.map-heading p{color:#9d958a;max-width:640px;line-height:1.7;font-size:13px;margin:0;text-align:right}.route{position:absolute;left:0;right:0;top:118px;bottom:120px;display:grid;grid-template-columns:repeat(4,1fr);gap:80px;align-items:center}.route::before{content:"";position:absolute;left:9%;right:9%;top:50%;height:1px;background:linear-gradient(90deg,#665f56,#b69a6b,#665f56);opacity:.4}.route-layer{height:330px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:space-around}.route-node{position:relative;width:136px;height:136px;border-radius:50%;border:1px solid #756c605c;background:radial-gradient(circle,#2a282b,#161719 67%);display:grid;place-items:center;text-align:center;box-shadow:0 12px 35px #0007;transition:.2s;z-index:2}.route-node small{display:block;color:#9c9388;font-size:10px;letter-spacing:2px;margin-top:4px}.route-node b{font-size:15px;letter-spacing:2px}.route-node .node-icon{font-size:30px;color:#b6996c;display:block;margin-bottom:4px}.route-node.locked{filter:grayscale(.8);opacity:.27}.route-node.done{opacity:.35;background:#101113}.route-node.active{border-color:#c29a60;box-shadow:0 0 0 6px #c29a6012,0 14px 36px #0009;animation:pulse 2s infinite}.route-node.active:hover{transform:scale(1.07);background:radial-gradient(circle,#3b3231,#1b1a1b 70%)}@keyframes pulse{50%{box-shadow:0 0 0 12px #c29a6000,0 14px 36px #0009}}.map-objective{position:absolute;left:0;bottom:0;border-left:3px solid #985047;background:#161618c7;padding:16px 20px;width:620px}.map-objective small{display:block;color:#a79682;font-size:10px;letter-spacing:4px}.map-objective b{display:block;margin-top:5px;font-size:15px;letter-spacing:1px}.map-hint{position:absolute;right:0;bottom:10px;color:#817a71;font-size:11px}

/* BATTLE */
#battleScreen{background:#111214}.battle-scene{position:absolute;inset:76px 0 0;overflow:hidden;background:radial-gradient(ellipse at 66% 38%,#51433c55 0,transparent 30%),linear-gradient(180deg,#2a2a2e,#17181a 52%,#0f1011 100%)}.battle-scene.act1{background:radial-gradient(ellipse at 64% 38%,#586a6252 0,transparent 30%),linear-gradient(180deg,#252b2c,#171a1a 50%,#0e0f10 100%)}.battle-scene.act2{background:radial-gradient(ellipse at 65% 35%,#6b4d4052 0,transparent 31%),linear-gradient(180deg,#2b2829,#181718 53%,#0f1011 100%)}.battle-scene.act3{background:radial-gradient(ellipse at 66% 30%,#42566b66 0,transparent 33%),linear-gradient(180deg,#202833,#15181c 50%,#0c0e10 100%)}.battle-moon{position:absolute;right:280px;top:55px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,#d7d1c3,#817f7b 60%,#31343a 100%);opacity:.16;box-shadow:0 0 90px #c9d2db18}.battle-ground{position:absolute;left:-5%;right:-5%;bottom:132px;height:180px;background:linear-gradient(180deg,transparent,#0b0c0de0 35%,#09090afa);clip-path:polygon(0 38%,12% 33%,18% 45%,30% 34%,45% 42%,54% 28%,69% 41%,78% 30%,100% 43%,100% 100%,0 100%)}.wreck{position:absolute;bottom:207px;background:#111316;opacity:.65}.wreck.w1{left:80px;width:400px;height:220px;clip-path:polygon(0 36%,12% 31%,17% 5%,37% 13%,42% 0,61% 9%,65% 30%,84% 26%,100% 43%,100% 100%,0 100%)}.wreck.w2{right:-30px;width:360px;height:250px;clip-path:polygon(0 45%,17% 40%,23% 15%,47% 20%,54% 0,72% 13%,79% 37%,100% 29%,100% 100%,0 100%)}
.enemy-zone{position:absolute;right:275px;top:110px;width:530px;height:500px;text-align:center}.enemy-name{font-family:serif;font-size:23px;letter-spacing:3px;text-shadow:0 2px 8px #000}.enemy-tag{font-size:10px;color:#b29e82;letter-spacing:4px;margin-top:5px}.enemy-hp{position:absolute;top:58px;left:100px;width:330px;height:18px;background:#070809;border:1px solid #8c796044;transform:skewX(-12deg);box-shadow:0 4px 12px #0008}.enemy-hp i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#6f2422,#bd4f45);transition:.3s width}.enemy-hp span{position:absolute;inset:-1px;display:grid;place-items:center;transform:skewX(12deg);font-size:11px;text-shadow:0 1px 3px #000}.enemy-portrait{position:absolute;left:50%;bottom:15px;width:370px;height:370px;transform:translateX(-50%);object-fit:contain;filter:drop-shadow(0 34px 35px #000d);transition:.12s transform,.12s filter}.enemy-portrait.attack{animation:enemyAttack .38s ease-out}.enemy-portrait.hit{animation:enemyHit .28s ease-out}@keyframes enemyAttack{45%{transform:translateX(-57%) translateY(10px) scale(1.07)}100%{transform:translateX(-50%)}}@keyframes enemyHit{30%{transform:translateX(-48%) rotate(3deg);filter:drop-shadow(0 20px 25px #000d) brightness(1.8)}65%{transform:translateX(-52%) rotate(-2deg)}}
.intent{position:absolute;right:-28px;top:95px;width:154px;min-height:90px;border:1px solid #8f806960;background:#181719e8;padding:12px 10px;text-align:left;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);box-shadow:0 9px 30px #0009}.intent small{font-size:9px;letter-spacing:3px;color:#9f9589}.intent b{display:block;margin:6px 0 5px;color:#e0c69b;font-size:16px}.intent p{font-size:10px;line-height:1.5;color:#a9a095;margin:0}
.player-zone{position:absolute;left:48px;bottom:208px;width:335px;height:340px}.player-portrait{position:absolute;left:0;bottom:0;width:230px;height:270px;object-fit:contain;filter:drop-shadow(0 30px 30px #000b)}.player-meta{position:absolute;left:135px;bottom:10px;width:220px;background:#111214df;border:1px solid #72695d3d;padding:14px 15px;clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px)}.player-meta h3{font-family:serif;margin:0 0 4px;font-size:17px}.player-meta small{color:#9d9488}.hpbar{margin-top:10px;height:11px;background:#060708;border:1px solid #ffffff18;position:relative}.hpbar i{display:block;height:100%;background:linear-gradient(90deg,#7c2c29,#c4574d);transition:.25s}.hpbar span{position:absolute;right:4px;top:-18px;font-size:10px;color:#e8d9c3}.battle-status{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;min-height:23px}.status-chip{font-size:9px;border:1px solid #776e6247;background:#242225;padding:3px 6px;color:#c9bda9}.status-chip.good{border-color:#728f794f;color:#a9ccb0}.status-chip.bad{border-color:#94534d55;color:#d3948c}.energy-orbs{position:absolute;left:395px;bottom:208px;width:96px;text-align:center}.energy-orbs b{font-family:Georgia;font-size:34px;color:#a9cee3;text-shadow:0 0 12px #6598b059}.energy-orbs small{display:block;font-size:9px;letter-spacing:3px;color:#8fa0a8}.energy-orbs .orb{width:74px;height:74px;margin:auto;border-radius:50%;display:grid;place-items:center;border:2px solid #6d9bb1;background:radial-gradient(circle at 45% 35%,#7db4ce,#2f576c 55%,#142631 100%);box-shadow:0 0 0 8px #0b0d0fba,0 0 28px #548aa655}
.deck-info{position:absolute;right:54px;bottom:208px;width:170px;color:#9f978e;font-size:11px;display:flex;gap:8px}.deck-box{flex:1;border:1px solid #71695d3a;background:#111214c7;padding:10px;text-align:center}.deck-box b{display:block;color:#d9c6a7;font-size:20px}.end-turn{position:absolute;right:54px;bottom:101px;width:170px;height:80px;border:1px solid #a88c6070;background:radial-gradient(circle at 50% 35%,#5d4a35,#30291f 70%);clip-path:polygon(13px 0,100% 0,100% calc(100% - 13px),calc(100% - 13px) 100%,0 100%,0 13px);font-weight:700;letter-spacing:3px;box-shadow:0 10px 30px #0008;transition:.15s}.end-turn:hover{transform:translateY(-2px);background:radial-gradient(circle at 50% 35%,#765c3e,#3b3023 70%)}
.hand{position:absolute;left:300px;right:250px;bottom:-6px;height:250px;display:flex;justify-content:center;align-items:flex-end;gap:-10px;z-index:8;pointer-events:none}.card{position:relative;width:168px;height:232px;margin:0 -9px;border-radius:9px;background:#d8cfbd;color:#171516;border:2px solid #4a443d;box-shadow:0 12px 24px #0009;overflow:hidden;transform-origin:50% 100%;transition:.16s transform,.16s filter,.16s box-shadow;pointer-events:auto;clip-path:polygon(9px 0,calc(100% - 7px) 0,100% 8px,100% calc(100% - 9px),calc(100% - 8px) 100%,8px 100%,0 calc(100% - 8px),0 8px)}.card:hover{transform:translateY(-45px) scale(1.07);z-index:20;box-shadow:0 24px 40px #000c}.card.disabled{filter:grayscale(.8) brightness(.65);cursor:not-allowed}.card-top{height:27px;background:#242123;color:#eee4d4;display:flex;align-items:center;padding:0 9px;gap:6px;border-bottom:1px solid #0007}.card-cost{width:27px;height:27px;margin-left:-4px;margin-top:7px;border-radius:50%;background:#567f97;color:white;display:grid;place-items:center;font:700 17px Georgia;box-shadow:0 0 0 2px #17252d,0 2px 4px #000}.card-name{font-size:12px;font-weight:700;letter-spacing:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-art{height:86px;background-size:cover;background-position:center;position:relative;border-bottom:1px solid #504940}.card-art::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,#0007,transparent 65%)}.card-rarity{position:absolute;right:7px;top:8px;width:7px;height:7px;border-radius:50%;background:#8e8a82;box-shadow:0 0 0 2px #1118}.card-rarity.uncommon{background:#6a97aa}.card-rarity.rare{background:#c19650}.card-desc{padding:10px 11px 8px;font-family:serif;font-size:11px;line-height:1.55;text-align:center;height:92px}.card-type{position:absolute;bottom:5px;left:0;right:0;text-align:center;font-size:9px;color:#71695f;letter-spacing:2px}.card.upgraded{box-shadow:0 0 0 2px #c9a45a,0 14px 25px #0009}.card.upgraded .card-name{color:#f5d69e}.card.playing{animation:cardPlay .45s ease forwards}@keyframes cardPlay{45%{transform:translateY(-150px) scale(1.17)}100%{transform:translateY(-50px) scale(.6);opacity:0}}
.logbox{position:absolute;left:28px;top:96px;width:300px;min-height:52px;color:#9d968c;font-size:10px;line-height:1.7;z-index:5;pointer-events:none}.logbox div:last-child{color:#d1c2ab}.damage-float{position:absolute;z-index:40;font:bold 26px Georgia;color:#e46d60;text-shadow:0 3px 8px #000;animation:floatUp .8s ease-out forwards;pointer-events:none}.damage-float.block{color:#83b8cf}.damage-float.heal{color:#8ecb93}@keyframes floatUp{0%{opacity:0;transform:translateY(10px) scale(.7)}20%{opacity:1;transform:translateY(0) scale(1.2)}100%{opacity:0;transform:translateY(-70px) scale(.95)}}
.turn-banner{position:absolute;left:50%;top:290px;transform:translateX(-50%);font-family:serif;font-size:36px;letter-spacing:11px;color:#eee0c7;text-shadow:0 4px 14px #000;opacity:0;pointer-events:none;z-index:30}.turn-banner.show{animation:banner 1s ease}@keyframes banner{0%{opacity:0;transform:translateX(-50%) translateY(14px)}25%,70%{opacity:1;transform:translateX(-50%) translateY(0)}100%{opacity:0;transform:translateX(-50%) translateY(-10px)}}

/* REWARD / EVENT / REST */
.overlay-screen{background:radial-gradient(circle at 50% 30%,#353033,#181719 55%,#0d0d0f);z-index:22}.overlay-head{position:absolute;left:0;right:0;top:95px;text-align:center}.overlay-head small{font-size:10px;letter-spacing:6px;color:#baa071}.overlay-head h2{font-family:serif;font-size:38px;letter-spacing:5px;margin:10px 0}.overlay-head p{margin:0;color:#9c948a}.reward-grid{position:absolute;left:370px;right:370px;top:230px;display:flex;justify-content:center;gap:26px}.reward-grid .card{width:205px;height:286px;margin:0;transform:none}.reward-grid .card:hover{transform:translateY(-14px) scale(1.03)}.reward-grid .card-art{height:112px}.reward-grid .card-desc{font-size:13px;height:117px;padding:14px}.reward-grid .card-top{height:34px}.reward-grid .card-cost{width:34px;height:34px;font-size:20px}.reward-grid .card-name{font-size:14px}.reward-foot{position:absolute;left:0;right:0;bottom:90px;text-align:center}.relic-award{display:inline-flex;gap:12px;align-items:center;border:1px solid #a2865a55;background:#1d1b1d;padding:12px 18px;margin-bottom:16px;color:#d8c49e}.relic-icon{width:34px;height:34px;border-radius:50%;border:1px solid #a48b62;display:grid;place-items:center;color:#d1b678}.skip-btn{display:block;margin:0 auto;color:#a69d91;border-bottom:1px solid #81786d55;padding:8px 14px}.event-card{position:absolute;left:50%;top:210px;transform:translateX(-50%);width:720px;min-height:460px;border:1px solid #766d603f;background:linear-gradient(180deg,#242225,#151517);box-shadow:0 25px 70px #000a;padding:42px 48px;clip-path:polygon(16px 0,100% 0,100% calc(100% - 16px),calc(100% - 16px) 100%,0 100%,0 16px)}.event-card h3{font-family:serif;font-size:28px;letter-spacing:3px;margin:0 0 18px}.event-card p{color:#b6ada2;line-height:1.9;font-size:14px;min-height:100px}.event-options{display:flex;flex-direction:column;gap:11px;margin-top:20px}.choice-btn{text-align:left;border:1px solid #776d6048;background:#1b1a1c;padding:14px 16px;transition:.15s}.choice-btn:hover{border-color:#b99662;background:#282427}.choice-btn b{display:block;margin-bottom:4px}.choice-btn small{color:#9e9589}.deck-pick{display:flex;gap:10px;flex-wrap:wrap;max-height:235px;overflow:auto;margin-top:18px;padding-right:5px}.mini-card{width:140px;border:1px solid #776e624a;background:#222023;padding:10px;cursor:pointer}.mini-card:hover{border-color:#c29a60}.mini-card b{font-size:12px}.mini-card small{display:block;color:#9c9388;font-size:10px;margin-top:5px}.mini-card.up{color:#d7b87c}

/* END */
#endingScreen{background:#0a0b0d}.ending-bg{position:absolute;inset:0;background:var(--image0) center/cover no-repeat;filter:brightness(.35) grayscale(.25)}.ending-bg::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 70% 36%,transparent,#07080aec 68%)}.ending-panel{position:absolute;left:125px;top:130px;width:650px;z-index:3}.ending-panel h2{font-family:STKaiti,KaiTi,serif;font-size:54px;letter-spacing:6px;margin:10px 0 24px}.ending-panel p{font-family:serif;font-size:17px;color:#c9c0b4;line-height:2}.ending-choices{display:flex;gap:12px;margin-top:28px}.ending-result{margin-top:24px;border-left:3px solid #a54a43;padding:12px 18px;color:#d9ccb8;background:#1212149c;line-height:1.8}.credits{position:absolute;right:70px;bottom:45px;text-align:right;color:#777168;font-size:10px;line-height:1.8;z-index:3}

/* TOAST / MODAL */
#toast{position:absolute;left:50%;top:95px;transform:translateX(-50%) translateY(-8px);z-index:100;background:#141416ef;border:1px solid #9d825869;padding:11px 20px;color:#e4d2b2;opacity:0;transition:.2s;pointer-events:none;box-shadow:0 10px 30px #0008}.toast-on{opacity:1!important;transform:translateX(-50%) translateY(0)!important}
#confirm{position:absolute;inset:0;background:#000b;z-index:120;display:none;place-items:center}.confirm-box{width:430px;background:#19191b;border:1px solid #7c716240;padding:28px;text-align:center;box-shadow:0 20px 70px #000}.confirm-box p{color:#b5aca1;line-height:1.7}.confirm-actions{display:flex;gap:10px;justify-content:center;margin-top:20px}

@media (max-aspect-ratio: 4/3){.menu-wrap{left:70px}.enemy-zone{right:220px}.hand{left:260px;right:220px}}

/* Complete-story edition: card stage, inspected sprite origins, touch controls. */
:root{--ink:#f0e4cd;--muted:#b3afa5;--gold:#c6a471}
button{touch-action:manipulation}button:focus-visible{outline:2px solid #ecd19b;outline-offset:4px}.hidden{display:none!important}
#stage{border:0}.grain{opacity:.045;background-size:19px 19px,37px 37px}.vignette{box-shadow:inset 0 0 125px 12px #04080b99}
.cover{inset:0;filter:brightness(.92) saturate(.88);transform:none;background-position:center}.cover:after{background:linear-gradient(90deg,#0c131aef 0,#0c131ae6 32%,#0c131a55 60%,#0c131a11 100%),linear-gradient(0deg,#0c121a 0,transparent 24%,transparent 80%,#0c131a44)}
.menu-wrap{left:116px;top:134px;width:620px}.eyebrow{font-size:12px;letter-spacing:5px;color:#c6b18e;margin-bottom:33px}.title{font-size:98px;line-height:1.18;letter-spacing:14px;font-family:"Noto Serif CJK SC","Songti SC",STSong,serif;font-weight:900}.title em{color:#d7af72}.subtitle{width:510px;font-size:16px;line-height:2;letter-spacing:2px;margin:25px 0 32px;color:#c0c4c3}.menu-actions{gap:15px}.btn-major{background:linear-gradient(135deg,#a64e42,#73382f);border-color:#d0967488;min-width:195px}.btn-ghost{border-color:#aa907552;min-width:168px;background:#101920bb}.menu-secondary{margin-top:26px;color:#657078;display:flex;align-items:center;gap:13px}.text-btn{font-size:14px;color:#aeb9bd;letter-spacing:2px;padding:8px 0}.text-btn:hover{color:#e6c593}.menu-note{margin-top:31px;color:#80908f;letter-spacing:2px;font-size:11px}.menu-note i{display:inline-block;width:5px;height:5px;background:#abceab;border-radius:50%;box-shadow:0 0 12px #a5dabc;margin-right:11px}.menu-note span{color:#ccaa71;padding-left:20px;letter-spacing:4px}.menu-foot{left:116px;bottom:42px;color:#969d9d;letter-spacing:3px}.stamp{right:100px;bottom:100px;font-size:13px;border:1px solid #d1b28c66;color:#d1b28c;padding:14px 25px;transform:rotate(-5deg)}
.runbar{height:78px;padding:0 34px;background:#101920e8;border-bottom:1px solid #a4a89922;box-shadow:0 6px 30px #04090d80}.run-title{width:340px}.run-title small{color:#a5aaa7;letter-spacing:3px}.run-title b{font-size:21px;color:#efdab5}.run-stats{gap:24px}.small-btn{padding:9px 14px;background:#15232c;border-color:#7a898444;color:#d0ccc0;font-size:13px}.small-btn:hover{background:#26343c;border-color:#c6a471}.icon-btn{border-radius:50%;width:35px;height:35px;padding:0}.back-btn{position:absolute;left:56px;top:42px;z-index:4;font-size:15px;color:#c4b18e;border-bottom:1px solid #b99d6b55;padding:10px}
#selectScreen{background:linear-gradient(#14212bf7,#0b121aed),var(--image1) center/cover}.select-head{top:65px}.select-head .eyebrow{margin-bottom:18px}.class-grid{top:205px;bottom:65px;gap:30px}.class-card{border-color:#b7a98c3d;background:linear-gradient(#23313d,#111922);clip-path:none;border-radius:8px}.class-card:hover{box-shadow:0 22px 70px #0009}.class-art{height:300px;background:radial-gradient(ellipse at 50% 72%,#c7a27630,transparent 66%)}.class-art img{height:275px;bottom:10px;max-width:80%;object-fit:contain}.class-info{top:300px;padding:25px 30px;background:linear-gradient(#15212cd9,#0d151f)}.class-info h3{font-size:29px}.class-info p{font-size:14px;line-height:1.85;min-height:70px;color:#bdc5c5}.class-info .class-role{color:#cbad7e}.class-traits{margin-top:16px}.class-go{bottom:17px;right:20px;min-width:100px;background:#975449;border-color:#b99a69;border-radius:3px}.class-vital{position:absolute;right:24px;top:22px;font-size:13px;color:#d3b990;z-index:2}
.story-bg{background:linear-gradient(90deg,#0e1921 0%,#0e1921c7 43%,#0e19213d 80%),var(--image1) center/cover;filter:none}.story-panel{left:105px;top:155px;width:800px}.story-panel h2{font-size:43px;letter-spacing:4px}.story-text{min-height:280px;font-size:20px;line-height:2.1;color:#ded9c8}.story-text p{margin-bottom:22px}.story-portrait{right:45px;width:570px;bottom:70px;height:620px}.story-portrait img{max-height:460px;max-width:490px;filter:drop-shadow(0 25px 35px #000a)}.story-next{margin-top:30px}
#mapScreen{background:#101923}.map-bg{background:linear-gradient(180deg,#111b2677,#121c25aa 70%,#0e151de8),var(--image1) center/cover}.map-content{left:74px;right:74px;top:130px;bottom:115px}.map-heading h2{font-size:34px;letter-spacing:3px}.map-heading p{font-size:14px;max-width:630px;color:#c1c6c2;text-align:right}.route{top:127px;bottom:89px;grid-template-columns:repeat(6,1fr);gap:26px}.route:before{left:5%;right:5%;top:49.5%;height:1px;background:repeating-linear-gradient(90deg,#b7a680 0 7px,transparent 7px 14px);opacity:.7}.route-layer{height:355px;gap:18px}.route-node{width:164px;height:136px;border-radius:8px;background:linear-gradient(#243642ee,#111e28f5);border-color:#939b8244;box-shadow:0 16px 45px #0005}.route-node .node-icon{font-size:31px;margin-bottom:9px;color:#c8ad7a}.route-node small{font-size:11px;line-height:1.7;color:#c1bba8;letter-spacing:1px}.route-node b{font-size:17px}.route-node.active{border-color:#d0b680;background:linear-gradient(#304149ee,#1a282eed);box-shadow:0 0 0 4px #c29a6012,0 14px 30px #0008}.route-node.active:hover{background:linear-gradient(#425056,#26363b)}.route-node.locked{opacity:.55;filter:none}.route-node.done{opacity:.25}.route-node.chosen:after{content:'✓';position:absolute;right:11px;top:8px;color:#a3d0a4;font-size:18px}.map-objective{bottom:0;background:#0c1621ba;border-color:#b88b55;width:800px;padding:17px 24px}.map-objective b{font-size:16px}.map-hint{bottom:20px;font-size:12px;color:#d2bb95}.relic-strip{position:absolute;bottom:38px;left:75px;right:75px;display:flex;align-items:center;gap:12px;font-size:13px;color:#a7b6b6}.relic-token{border:1px solid #ab936153;background:#182631e0;border-radius:50%;width:39px;height:39px;display:grid;place-items:center;color:#dbc18f;font-size:20px;cursor:pointer}.relic-token:hover{background:#31434a;border-color:#d5b680}
.battle-scene,.battle-scene.act1,.battle-scene.act2,.battle-scene.act3{inset:78px 0 0;background:linear-gradient(180deg,#0e161b00 10%,#0d161bdd 83%),var(--image1) center top/1600px 900px}.battle-scene.act2{filter:sepia(.22) saturate(.9)}.battle-scene.act3{filter:hue-rotate(12deg) saturate(.76)}.battle-ground{bottom:199px;height:115px;background:radial-gradient(ellipse,#95aea01b,transparent 66%);clip-path:none;border-bottom:1px solid #c6af8433;left:100px;right:100px}.actor-canvas{position:absolute;width:600px;height:600px;pointer-events:none;z-index:7;filter:drop-shadow(0 18px 8px #0007)}#playerCanvas{left:126px;top:48px}#enemyCanvas{right:108px;top:48px}
.enemy-zone{position:absolute;right:145px;top:123px;width:365px;height:432px;z-index:12}.enemy-name{font-size:25px;letter-spacing:2px;text-shadow:0 3px 7px #000;text-align:center}.enemy-tag{font-size:11px;letter-spacing:3px;color:#adbdbf;text-align:center;margin-top:9px}.enemy-hp{width:275px;height:18px;margin:15px auto 0;background:#152027;border:1px solid #b192743f;overflow:visible}.enemy-hp i{background:linear-gradient(90deg,#993d38,#d96d54)}.enemy-hp span{font-size:12px;line-height:18px;font-family:system-ui;letter-spacing:1px;z-index:2}.intent{position:absolute;right:275px;top:145px;width:200px;border:1px solid #c4a77780;border-radius:7px;padding:15px 14px;background:#121e27f5;box-shadow:0 9px 25px #0005;text-align:center}.intent:after{content:'';position:absolute;right:-7px;top:30px;width:12px;height:12px;background:#18232b;border-right:1px solid #c4a77780;border-top:1px solid #c4a77780;transform:rotate(45deg)}.intent small{font-size:10px;letter-spacing:3px;color:#cbb891}.intent b{font-size:19px;display:block;margin:9px 0 8px;color:#f2d4a2}.intent p{font-size:13px;line-height:1.7;margin:0;color:#dadbd0}
.player-zone{position:absolute;left:124px;top:127px;width:410px;height:70px;z-index:11}.player-meta{position:static;text-align:center;width:330px;margin:0 auto}.player-meta h3{font-size:25px;letter-spacing:3px;margin:0}.player-meta small{color:#adbbb7;letter-spacing:3px;font-size:11px;display:inline-block;margin-top:8px}.hpbar{height:18px;width:275px;margin:15px auto 0;border:1px solid #98927255}.hpbar i{background:linear-gradient(90deg,#54857b,#97b7a0)}.hpbar span{font-family:system-ui;font-size:12px;line-height:18px}.battle-status{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px;justify-content:center}.status-chip{font-size:11px;padding:4px 7px;border:1px solid #a0967038;border-radius:3px;white-space:nowrap;background:#1d303b}.status-chip.good{color:#b2d8cc}.status-chip.bad{color:#f1aa8e}.enemy-status{position:absolute;right:165px;top:215px;width:325px;z-index:15}.boss-mechanic{position:absolute;left:690px;right:475px;top:102px;font-size:12px;line-height:1.7;color:#d7b785;z-index:6;border-left:2px solid #ce927255;padding:0 12px;background:#121f2755}.boss-mechanic:empty{display:none}.class-passive{position:absolute;left:50px;top:535px;width:360px;z-index:9;text-align:center;font-size:12px;letter-spacing:1px;color:#ccbd9e}.battle-divider{position:absolute;left:760px;top:262px;z-index:5;border:1px solid #bca77930;transform:rotate(45deg);width:58px;height:58px;display:grid;place-items:center}.battle-divider span{display:block;transform:rotate(-45deg);color:#bdae90;font:16px Georgia;letter-spacing:3px}.logbox{left:30px;top:287px;width:238px;min-height:130px;color:#8c9c9e;font-size:11px;line-height:1.9;opacity:.85}.logbox div:last-child{color:#d7c8a8}.battle-relics{position:absolute;left:45px;top:575px;display:flex;gap:8px;z-index:12}.battle-relics .relic-token{width:30px;height:30px;font-size:16px}
.hand{position:absolute;left:292px;right:198px;bottom:31px;height:242px;display:flex;align-items:flex-end;justify-content:center;gap:10px;z-index:20;padding:0;perspective:1200px}.card{flex:none;position:relative;width:163px;height:228px;min-width:0;border:1px solid #b69e7677;border-radius:9px;background:linear-gradient(135deg,#eadfca,#c3b69c);box-shadow:0 10px 22px #0009, inset 0 0 0 3px #131b22;margin:0;transform:none;overflow:visible;color:#26313a;transition:transform .15s ease,box-shadow .15s ease,border-color .15s;padding:3px}.card:hover,.card:focus-visible{transform:translateY(-32px) scale(1.12);z-index:50;box-shadow:0 16px 34px #000a,0 0 0 2px #dcba72;border-color:#f4d793}.card.disabled{filter:saturate(.45) brightness(.7);opacity:.87;cursor:not-allowed;transform:none}.card-top{height:35px;background:linear-gradient(100deg,#1b2a35,#26333b);color:#f0e4c7;border-radius:5px 5px 0 0;display:flex;align-items:center;padding-left:37px;padding-right:4px}.card-cost{width:32px;height:34px;position:absolute;left:-7px;top:-6px;background:#263d4d;border:2px solid #e1c9a1;color:#f5ead4;font:bold 23px Georgia;display:grid;place-items:center;border-radius:45% 45% 50% 50%;box-shadow:0 3px 9px #0008}.card-name{font-size:13px;font-weight:600;letter-spacing:.5px;overflow:visible}.card-art{height:79px;border-bottom:1px solid #65564177;position:relative;background-position:center;background-size:cover}.card-art:after{background:linear-gradient(0deg,#0a17274d,transparent 50%)}.card-desc{padding:10px 11px;height:94px;font-size:13px;line-height:1.55;letter-spacing:0;color:#273039}.card-desc b{color:#8c352a;font-family:system-ui;font-weight:800}.card-type{bottom:8px;font-size:9px;letter-spacing:2px;color:#615e56}.card-rarity{height:6px;width:6px}.card-key{position:absolute;bottom:-23px;left:0;right:0;text-align:center;font:11px monospace;color:#a6ada7;opacity:.7}.card.upgraded{box-shadow:0 0 0 2px #ccab73,0 12px 24px #0008}.hand.compact{gap:0}.hand.compact .card{margin-left:-25px}.hand.compact .card:first-child{margin-left:0}.hand.dense .card{margin-left:-46px}.hand.dense .card:hover{transform:translateY(-36px) scale(1.15)}.hand.big-cards .card{transform:scale(1.06);transform-origin:50% 100%}.hand.big-cards .card:hover,.hand.big-cards .card:focus-visible{transform:translateY(-34px) scale(1.16)}
.energy-orbs{left:68px;bottom:64px;width:90px;text-align:center;z-index:20}.orb{width:87px;height:87px;margin:0 auto 10px;border-color:#bdaf8877;background:radial-gradient(circle at 33% 27%,#466a80,#182e3c 55%,#0a1723);box-shadow:0 0 30px #46748838,inset 0 0 18px #96caca33;display:grid;place-items:center}.orb b{font:44px Georgia;color:#e4ead5}.energy-orbs small{font-size:12px;color:#a3b6b9;letter-spacing:3px}.deck-info{left:178px;bottom:55px;right:auto;top:auto;display:flex;flex-direction:column;gap:8px;z-index:20}.deck-box{width:80px;height:44px;background:#15212ce6;border:1px solid #a69c7655;border-radius:4px;text-align:left;padding:8px 11px;font-size:11px;color:#b6b5a6;display:flex;justify-content:space-between;align-items:center;cursor:pointer}.deck-box b{display:inline;font:22px Georgia;color:#e7d4b4}.end-turn{right:33px;bottom:103px;width:139px;height:76px;border-radius:6px;clip-path:none;background:linear-gradient(#784237,#4a2a27);border:1px solid #c8a07588;color:#f2dfbe;letter-spacing:2px;font-size:19px;z-index:25;box-shadow:0 8px 26px #0005}.end-turn:enabled:hover{background:linear-gradient(#9b5946,#61342b);transform:translateY(-2px)}.end-turn:disabled{opacity:.55}.battle-bottom{position:absolute;left:0;right:0;bottom:0;height:27px;background:#0e1720;display:flex;justify-content:space-between;padding:6px 34px;font-size:10px;letter-spacing:1px;color:#899b9c;z-index:30}.battle-bottom button{font-size:10px;letter-spacing:1px;color:#b6ada0}.turn-banner{top:310px;z-index:38;color:#f1dfb9}.damage-float{font:bold 42px Georgia;z-index:60;pointer-events:none;color:#ffb38d;animation:floatUp 1s ease-out forwards}.damage-float.block{color:#95d4e5}.damage-float.heal{color:#afe0bd}.hit-flash{animation:hitflash .25s ease}@keyframes hitflash{40%{filter:brightness(2.4) drop-shadow(0 0 20px #d5764b)}}.screen-shake{animation:shakes .26s linear}@keyframes shakes{25%{margin-left:-5px}50%{margin-left:5px}75%{margin-left:-2px}100%{margin-left:0}}
.overlay-screen{background:linear-gradient(#14222bde,#0c151fe8),var(--image1) center/cover}.overlay-head{top:85px}.overlay-head h2{font-size:38px}.overlay-head p{color:#bdc1b5;font-size:15px;line-height:1.8}.reward-grid{left:315px;right:315px;top:228px;gap:42px}.reward-grid .card{width:235px;height:338px}.reward-grid .card-top{height:45px;padding-left:49px}.reward-grid .card-cost{width:40px;height:42px;top:-10px;left:-10px;font-size:28px}.reward-grid .card-name{font-size:18px}.reward-grid .card-art{height:123px}.reward-grid .card-desc{font-size:16px;line-height:1.7;height:128px;padding:17px 18px}.reward-grid .card-type{font-size:12px;bottom:10px}.reward-foot{bottom:115px}.relic-award{background:#182731e8;border-color:#c5a26b5c;padding:15px 22px;color:#e4d1ab;font-size:15px}.relic-award small{color:#aebdbc;line-height:1.8}.skip-btn{color:#aeb8b4;font-size:14px;padding:12px 15px}.event-card{top:213px;width:890px;max-height:597px;overflow:auto;min-height:440px;background:#12222cf2;border-color:#baa87b55;clip-path:none;border-radius:6px;padding:37px 45px}.event-card h3{font-size:28px;color:#edcfa2}.event-card p{font-size:17px;line-height:2;min-height:78px;color:#c9cfcb}.choice-btn{background:#24343e;border-color:#959e8266;border-radius:4px;padding:15px 20px}.choice-btn b{font-size:17px;font-weight:500;color:#f0ddbb}.choice-btn small{font-size:13px;line-height:1.7;color:#b8c4c0}.choice-btn:hover{background:#34464c}.deck-pick{max-height:225px;margin-top:10px}.mini-card{width:230px;background:#203541;border-radius:4px;padding:12px;border-color:#a19f7566;text-align:left}.mini-card small{font-size:11px;color:#bcc9c5;line-height:1.6}.mini-card b{font-size:14px}.camp-picker-intro{font-size:14px;color:#c4b89b;margin:0 0 9px}.rest-back{font-size:14px;padding:7px 0;color:#cdb787}
.shop-head{position:absolute;top:94px;left:105px;right:105px}.shop-head small{font-size:12px;letter-spacing:5px;color:#cbb182}.shop-head h2{font-size:32px;letter-spacing:2px;margin:16px 0}.shop-head p{font-size:16px;color:#bdc9c3}.shop-head b{color:#ebc68b}.shop-cards{position:absolute;left:130px;top:276px;display:flex;gap:26px}.shop-item{width:200px;text-align:center}.shop-item .card{width:188px;height:253px}.shop-item .card-desc{height:112px;font-size:14px}.shop-price{display:block;margin:18px auto 0;width:188px;background:#203840;border:1px solid #b49a6477;padding:13px;font-size:15px;letter-spacing:1px;color:#ebd2a4}.shop-item.bought{opacity:.45}.shop-services{position:absolute;left:853px;right:100px;top:276px;display:flex;flex-direction:column;gap:17px}.shop-services .choice-btn{padding:22px}.shop-services small{line-height:1.8}.shop-leave{position:absolute;right:100px;bottom:79px}.defeat-wrap{position:absolute;left:260px;right:260px;top:195px;text-align:center}.defeat-wrap small{color:#b8a781;letter-spacing:5px}.defeat-wrap h2{font-family:serif;font-size:58px;letter-spacing:7px;margin:20px 0 32px}.defeat-wrap p{font-size:20px;line-height:2;color:#d4d4c8;margin-bottom:37px}.defeat-wrap p span{font-size:14px;color:#97a9a8}.defeat-wrap .btn-ghost{margin-left:18px}
.ending-bg{background:linear-gradient(#0c16216e,#0c1621df),var(--image1) center/cover;filter:none}.ending-panel{left:120px;top:122px;width:1040px}.ending-panel p{font-size:20px;line-height:2;color:#d1d7d1}.ending-panel h2{font-size:50px}.ending-result{font-size:18px;line-height:2;padding:21px 26px;background:#11242fe8;border-color:#b39465}.ending-choices{flex-wrap:wrap;gap:17px}.credits{font-size:11px;letter-spacing:1px;right:50px;bottom:28px;color:#8b9699}
.panel-modal{position:absolute;inset:0;display:grid;place-items:center;background:#040a10da;backdrop-filter:blur(7px);z-index:120}.panel-shell{width:1250px;max-height:800px;background:linear-gradient(140deg,#1b2b36,#111f2a);border:1px solid #bcab875c;box-shadow:0 35px 95px #000b;border-radius:10px;overflow:hidden}.panel-shell>header{height:116px;padding:26px 38px;border-bottom:1px solid #a6a38426;display:flex;align-items:center;justify-content:space-between}.panel-shell small{font-size:10px;letter-spacing:4px;color:#bcac86}.panel-shell h2{font-family:serif;font-size:28px;letter-spacing:3px;margin:8px 0 0}.close-panel{width:44px;height:44px;border:1px solid #b4a88155;color:#d5cbb5;font-size:30px;border-radius:50%;line-height:1}.close-panel:hover{background:#304651}.panel-body{overflow:auto;max-height:670px;padding:30px 38px 36px;overscroll-behavior:contain;scrollbar-color:#a69064 #13242e;scrollbar-width:thin}.panel-grid{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:25px 20px;padding:14px 12px}.panel-grid .card{width:171px;height:235px}.panel-grid .card:hover{transform:translateY(-5px) scale(1.04)}.panel-grid .card-key{display:none}.panel-lead{font-size:15px;line-height:1.8;color:#bdc7c3;margin:0 0 19px}.rule-row{border-left:2px solid #b99c695a;margin-bottom:17px;padding:8px 23px;color:#c9d0c9;font-size:17px;line-height:1.85}.rule-row b{color:#ecd1a4}.rule-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.rule-grid .rule-row{font-size:14px;background:#10232b77;margin-bottom:0;padding:16px}.rule-grid .rule-row b{display:block;margin-bottom:5px;font-size:16px}.journal-entry{padding:10px 5px 26px;border-bottom:1px solid #b1a48533;margin-bottom:15px}.journal-entry h3{font-family:serif;font-size:23px;color:#e4c598;font-weight:500}.journal-entry p{font-size:17px;line-height:1.95;color:#c6d1cd;white-space:pre-line}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.setting-tile{border:1px solid #a4977455;background:#18313c;padding:22px;border-radius:6px;min-height:126px}.setting-tile h3{margin:0 0 12px;color:#e3c99f;font-size:19px}.setting-tile p{font-size:14px;color:#b3c4c2;line-height:1.8;margin:5px 0 14px}.setting-tile button,.setting-tile label{display:inline-block;border:1px solid #baa17688;background:#1a2c35;padding:10px 18px;color:#dfd8c5;cursor:pointer}.setting-tile input[type=range]{width:100%;accent-color:#c9b281}.danger{color:#efb39b!important}.panel-tabs{display:flex;gap:10px;margin-bottom:23px;flex-wrap:wrap}.panel-tabs button{border:1px solid #ac9a7455;padding:10px 16px;color:#b7c8c7;border-radius:4px}.panel-tabs button.active{background:#395057;color:#eed3a4;border-color:#ceb584}.empty-text{font-size:16px;line-height:1.9;color:#afbebd;padding:25px}.anim-layout{display:grid;grid-template-columns:230px 1fr;gap:25px}.anim-select{max-height:485px;overflow:auto;display:flex;flex-direction:column;gap:7px}.anim-select button{background:#18303d;border:1px solid #a8977555;padding:10px 16px;text-align:left;color:#c7d4cd;font-size:14px}.anim-select button.active{border-color:#d1ba84;background:#304851}.anim-stage{position:relative;height:445px;background:radial-gradient(ellipse at 50% 80%,#61756a24,transparent 52%),#14222c;border:1px solid #a4a18433;border-radius:5px;overflow:hidden}.anim-stage canvas{width:580px;height:580px;position:absolute;left:50%;top:-100px;transform:translateX(-50%)}.anim-info{position:absolute;bottom:20px;left:0;right:0;text-align:center;font-size:14px;color:#bfc5b8;z-index:4}.anim-controls{margin-top:15px;display:flex;gap:12px;justify-content:center}.anim-controls button{border:1px solid #bfa57888;padding:10px 20px;background:#293e46}.anim-controls button.active{color:#edd3a2;background:#46564e}.anim-caption{font-size:13px;color:#aabebd;line-height:1.9;margin-top:20px}
#confirm{z-index:160;backdrop-filter:blur(4px)}.confirm-box{width:650px;background:#152936;border-color:#b5a68288;border-radius:7px;padding:38px}.confirm-box h3{font-size:25px;font-weight:500;letter-spacing:2px}.confirm-box p{font-size:17px;color:#bfcbc7}#toast{top:91px;background:#102431f2;border-color:#d2bb8177;color:#efd4a9;font-size:16px;z-index:180;border-radius:4px;padding:13px 26px;max-width:1150px;white-space:nowrap}
#rotateHint{display:none;position:fixed;inset:0;background:radial-gradient(ellipse,#203745,#0b1420);z-index:300;text-align:center;place-items:center;color:#e8d6b2;transform:none}#rotateHint h2{font-family:serif;font-size:25px;letter-spacing:3px}#rotateHint p{font-size:14px;line-height:1.8;color:#bacac8;margin:15px 25px 30px}.rotate-icon{font-size:72px;color:#bfab82}#rotateHint .btn-ghost{font-size:15px;letter-spacing:1px;height:48px;min-width:195px}.loading{position:absolute;inset:0;z-index:250;display:grid;align-content:center;justify-content:center;text-align:center;background:#0b1924;color:#d4c39f;font-size:17px;letter-spacing:3px}.loading span{width:30px;height:30px;border-radius:50%;border:2px solid #c5b58e33;border-top-color:#c5b58e;margin:0 auto 15px;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
@media (max-aspect-ratio:3/4) and (max-width:700px){body:not(.portrait-ok) #rotateHint{display:grid}}
@media (prefers-reduced-motion:reduce){.route-node.active{animation:none}.card{transition:none}.cover{animation:none}.screen-shake{animation:none}}
/* Last-pass visual alignment: both labels sit above their actual actors. */
.grain{display:none}.card{clip-path:none}.player-zone{left:221px;top:124px;bottom:auto}.player-meta{padding:0;background:none;border:0;clip-path:none}.player-meta small{margin-top:9px}.player-meta .hpbar{margin:15px auto 0}.hpbar span{inset:0;display:grid;place-items:center;font-size:12px;line-height:18px}.enemy-zone{right:225.5px;top:124px}.enemy-hp{position:relative;top:auto;left:auto;margin:15px auto 0;transform:none}.enemy-hp span{transform:none;inset:0}.class-passive{left:246px;top:581px}.enemy-status{right:245px;top:211px}.battle-ground{bottom:301px;height:160px}.intent{right:283px;top:156px;clip-path:none}.intent:after{background:#15212a}.card-cost{z-index:5}.card{padding:3px}.card-top{padding-left:33px}.card-key{bottom:-23px}.card-desc{font-size:13px}.ending-panel{width:1100px}.ending-result{font-size:17px;line-height:1.9;max-height:380px;overflow:auto}.ending-panel p{font-size:18px;line-height:1.8}.ending-panel h2{margin-bottom:22px}
/* Touch inspection lives outside the scaled stage, so card text stays legible. */
.touch-card-modal{position:fixed;inset:0;background:#06121de8;display:grid;place-items:center;z-index:1000;backdrop-filter:blur(6px);padding:15px}.touch-card-modal.hidden{display:none}.touch-card-box{width:min(580px,96vw);max-height:95vh;overflow:auto;background:#172b38;border:1px solid #c2ab7c;border-radius:10px;padding:20px;color:#ebdbbf;box-shadow:0 20px 80px #000a}.touch-card-top{display:flex;gap:20px;align-items:flex-start}.touch-card-art{width:150px;height:145px;background-position:center;background-size:cover;border-radius:5px;flex:none}.touch-card-text{font-size:16px;line-height:1.7}.touch-card-text h3{font-size:24px;font-family:serif;margin:0 0 6px;color:#ead2a7}.touch-card-text b{color:#f4bc7d}.touch-card-cost{font-size:13px;color:#adccc9;margin-bottom:12px}.touch-card-actions{display:flex;gap:12px;margin-top:17px}.touch-card-actions button{padding:13px 25px;font-size:15px;border:1px solid #b89e7377;background:#855044;border-radius:4px}.touch-card-actions .cancel{background:#213b46}.touch-card-actions button:disabled{opacity:.4}.touch-card-footer{font-size:12px;line-height:1.7;color:#a9c0be;margin-top:12px}@media(max-width:500px){.touch-card-art{width:85px;height:118px}.touch-card-text h3{font-size:21px}}
/* Center the scaled surface by its centre, not by its unscaled grid layout box. */
#viewport{display:block;overflow:hidden}#stage{position:absolute;left:50%;top:50%;margin-left:-800px;margin-top:-450px;transform-origin:50% 50%}
@keyframes shakes{25%{left:calc(50% - 5px)}50%{left:calc(50% + 5px)}75%{left:calc(50% - 2px)}100%{left:50%}}
.hand.compact .card{margin-left:-28px}.hand.dense .card{margin-left:-60px}.hand.compact .card:first-child,.hand.dense .card:first-child{margin-left:0}

/* v1.2 portrait-safe-area + drag-to-play + UX upgrade */
.class-art{height:338px;overflow:hidden}
.class-art img{height:320px;max-height:320px;max-width:82%;bottom:8px;object-fit:contain;object-position:center bottom;box-sizing:border-box;padding:0 18px;filter:drop-shadow(0 18px 18px #000a)}
.class-card:nth-child(2) .class-art img{max-width:76%}.class-card:nth-child(3) .class-art img{max-width:74%}
.class-info{top:330px;padding-top:22px}
.playzone-indicator{position:absolute;left:256px;right:176px;top:112px;bottom:292px;border:2px dashed #d7b97833;border-radius:18px;display:flex;align-items:center;justify-content:center;color:#dbc086a8;font:600 22px Georgia,serif;letter-spacing:3px;pointer-events:none;opacity:0;transform:translateY(8px);transition:.16s ease;z-index:9;background:linear-gradient(180deg,#d0aa4f08,#d0aa4f02 45%,transparent)}
#battleScreen.drag-mode .playzone-indicator{opacity:.72;transform:none}#battleScreen.drag-ready .playzone-indicator{opacity:1;border-color:#e4c684b3;color:#f2dec0;background:linear-gradient(180deg,#ebc76d18,#ebc76d0d 45%,transparent);box-shadow:inset 0 0 0 1px #fff1,0 0 32px #0008}
.card.playable-card{touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none}.card.playable-card:not(.disabled){box-shadow:0 10px 22px #0009, inset 0 0 0 3px #131b22, 0 0 0 1px #e1c27d33}.card.playable-card.dragging{transition:none!important;cursor:grabbing;z-index:240!important;box-shadow:0 28px 55px #000d,0 0 0 2px #d3b57d!important;filter:none!important}.card.playable-card.drag-ready{box-shadow:0 28px 55px #000d,0 0 0 3px #8fc7a9,0 0 35px #73b89070!important}.hand.big-cards .card{transform:scale(1.06);transform-origin:50% 100%}.hand.big-cards .card:hover,.hand.big-cards .card:focus-visible{transform:translateY(-34px) scale(1.16)}
@media (pointer:coarse){.card.playable-card{cursor:default}.card:hover{transform:none}.card.playable-card.dragging{transform-origin:center center}.hand.big-cards .card{transform:none}}


/* 1.3 / Ash & Echo — keeps original AI art and makes actual game states legible. */
:root{--gold:#d1b276;--teal:#8cb7ac}
.release-tag{position:absolute;right:78px;top:48px;border-top:1px solid #baa77d66;padding-top:12px;color:#c6b693;font-size:13px;letter-spacing:4px}
.class-grid{top:192px;bottom:58px;gap:28px}.class-art{height:336px;overflow:visible}.class-art img{height:355px;max-height:355px;width:300px;max-width:90%!important;bottom:-3px;padding:0;object-fit:contain;object-position:center bottom}.class-info{top:335px;padding:18px 28px}.class-info h3{font-size:28px;margin:7px 0 9px}.class-info p{font-size:14px;line-height:1.7;min-height:58px;margin:8px 0}.class-traits{margin-top:8px;gap:9px}.trait{padding:7px 10px}.class-ability-note{border-top:1px solid #c0a37638;margin-top:11px;padding-top:10px;display:flex;gap:5px;flex-direction:column}.class-ability-note b{color:#dfc996;font-size:14px}.class-ability-note span{color:#9dafa9;font-size:12px;line-height:1.6}.class-go{bottom:18px}.class-card:hover{transform:translateY(-4px)}
/* Battle hierarchy */
.battle-scene{background-blend-mode:normal}.battle-divider{opacity:.32;left:777px;top:194px;width:42px;height:42px}.battle-divider span{font-size:12px}
#playerCanvas{top:35px;left:126px}#enemyCanvas{top:35px;right:108px}.actor-canvas{width:600px;height:600px}
.player-zone{left:220px!important;top:119px!important;width:412px}.player-meta{margin:auto}.player-meta h3{font-size:27px}.enemy-zone{top:119px!important}.enemy-name{font-size:27px}.enemy-status{top:214px}.player-meta .battle-status{max-width:345px;margin-left:auto;margin-right:auto}
#enemyIntent{position:fixed;left:684px;right:auto;top:278px;width:230px;min-height:112px;clip-path:none;border:1px solid #d5b98b55;border-radius:6px;padding:16px 16px;text-align:center;background:#10232bf2;cursor:pointer;box-shadow:0 12px 28px #0006}
#enemyIntent b{font-size:21px;letter-spacing:1px;margin:6px 0}#enemyIntent p{font-size:14px;line-height:1.5;margin:0}#enemyIntent strong{font-size:27px;color:#efcfa7}.intent-foot{font-size:11px;border-top:1px solid #b9ab892d;padding-top:9px;margin-top:10px;color:#a7bcb2;line-height:1.7}
.boss-mechanic{left:661px;right:auto;width:280px;top:432px;max-height:80px;overflow:auto;font-size:12px;z-index:11;border-radius:3px;border-color:#d19a6f;background:#101e29df;padding:9px 12px;line-height:1.7}.boss-mechanic.phase-two{border-color:#e2b16b;color:#f1d49e}
.class-passive{top:584px!important;left:240px!important;width:375px!important;font-size:13px}.battle-relics{top:530px;left:35px;max-width:200px;flex-wrap:wrap}.battle-relics .relic-token{width:32px;height:32px}
.logbox{top:295px;left:28px;width:225px;max-height:180px;overflow:hidden;font-size:11px;color:#b0bdb7}.log-open{position:absolute;left:28px;top:470px;border-bottom:1px solid #d1b27655;padding:8px 4px;color:#d1b88d;font-size:13px;z-index:14}
.ability-btn{position:absolute;top:525px;left:675px;width:246px;height:56px;z-index:15;display:flex;align-items:center;justify-content:center;gap:14px;background:linear-gradient(135deg,#38453b,#182b31);border:1px solid #dac18799;border-radius:6px;box-shadow:0 6px 22px #0008;color:#ead4a9}.ability-btn>span{font-size:29px}.ability-btn b{font-size:16px;letter-spacing:2px}.ability-btn small{display:block;font-size:10px;letter-spacing:2px;color:#b6c1ad;margin-top:3px}.ability-btn:disabled{opacity:.45}.ability-btn:hover:not(:disabled){border-color:#f6d89b;box-shadow:0 0 18px #d2b57833}
.terrain-badge{position:absolute;top:98px;left:674px;width:254px;z-index:12;color:#becea8;text-align:center;font-size:13px;padding:7px 12px;border:1px solid #aab99326;border-radius:4px;background:#102028b0}.terrain-badge b{letter-spacing:3px;color:#d5cba6}.terrain-badge small{font-size:10px;color:#a8b8af;display:block;line-height:1.8;margin-top:5px}
.end-turn{right:30px!important;bottom:94px!important;width:160px!important;height:84px!important;border-radius:6px;font-size:22px;letter-spacing:1px;clip-path:none;padding:9px;background:linear-gradient(#97654b,#583d31);box-shadow:0 8px 24px #0008}.end-turn small{display:block;font-size:10px;letter-spacing:0;line-height:1.7;font-weight:400;margin-top:7px;color:#e2d6bc}.end-turn:disabled{opacity:.5}
.hand{left:288px!important;right:200px!important;bottom:36px;height:244px;perspective:none;isolation:isolate}.hand .card{width:168px;height:235px;margin:0}.hand.compact .card,.hand.dense .card{margin-left:0}.card{clip-path:none;transform-origin:center bottom}.card-desc{font-size:13px;line-height:1.55}.card-art{height:85px}.card-top{padding-left:34px}.card-name{white-space:normal;font-size:13px;line-height:1.2;letter-spacing:0}.card-type{font-size:10px}.card-key{bottom:-22px}.card-cost{left:-6px;top:-6px;z-index:2}.card-dealt{animation:dealIn .24s ease-out both;animation-delay:var(--deal-delay,0s)}@keyframes dealIn{from{opacity:0;translate:0 18px}to{opacity:1;translate:0 0}}
.card:hover{z-index:35}.card.disabled{cursor:help!important}.card.disabled:hover{transform:translateY(-20px);filter:saturate(.6) brightness(.85)}.card.playable-card{touch-action:none}.drag-source{opacity:.2!important;transform:none!important;pointer-events:none}.card.drag-ghost{position:absolute;left:0;top:0;margin:0!important;z-index:260;pointer-events:none;transform-origin:center center;transition:none;filter:none;box-shadow:0 26px 70px #000a,0 0 0 2px #e8c88a}.drag-ghost .card-key{display:none}.drag-ghost.drag-ready{box-shadow:0 26px 60px #000a,0 0 0 3px #a7d3b5,0 0 24px #87ca9650}.ghost-return{transition:transform .15s ease-out!important;opacity:.7}.ghost-play{animation:ghostPlay .23s ease-in both}@keyframes ghostPlay{to{opacity:0;scale:.73;translate:0 -70px}}
#dragTrail{position:absolute;inset:0;width:1600px;height:900px;pointer-events:none;z-index:30;opacity:0}#dragTrail.on{opacity:.75}#dragTrail path{fill:none;stroke:#d9bf83;stroke-width:2;stroke-dasharray:5 9;stroke-linecap:round}.playzone-indicator{top:236px;bottom:296px;left:271px;right:210px;z-index:6;background:#dec27703!important;color:transparent!important;border-color:#d5b87566;box-shadow:none!important}.playzone-indicator:after{content:'松手出牌 · 拖回收起';position:absolute;bottom:6px;left:0;right:0;text-align:center;color:#e5d3b6;letter-spacing:3px;font-size:13px}.playzone-indicator{font-size:0}.drag-ready .playzone-indicator{border-color:#9fcdaa!important}
#cardPrediction{position:absolute;left:530px;right:340px;top:599px;height:31px;display:flex;align-items:center;justify-content:center;gap:7px;font-size:13px;letter-spacing:.3px;color:#eadbc2;background:#11252fea;border:1px solid #c6ac6c4d;border-radius:4px;z-index:60;pointer-events:none}#cardPrediction b{font-size:16px;color:#f5d492}#cardPrediction strong{font-size:13px;color:#eeb18c}#cardPrediction span{color:#88978b}.battle-bottom{height:26px}.battle-bottom span{font-size:11px}
.status-chip{cursor:help}.status-chip:hover{border-color:#d6bf8a}.hpbar span{position:absolute;inset:0;top:0!important;font-size:12px;color:white}.enemy-hp span{font-size:12px;color:white}.energy-orbs .orb{width:76px;height:76px}.energy-orbs{left:49px!important;bottom:67px!important}
/* Hit choreography is procedural; actor pixels are untouched. */
#combatFx{position:absolute;inset:0;pointer-events:none;z-index:44;overflow:hidden}.impact{position:absolute;width:1px;height:1px;color:var(--impact);pointer-events:none}.shock-ring{position:absolute;width:100px;height:100px;left:-50px;top:-50px;border:2px solid currentColor;border-radius:50%;animation:ring .5s ease-out both}.impact-slash{position:absolute;left:-90px;top:-5px;width:190px;height:8px;background:linear-gradient(90deg,transparent,currentColor,white,transparent);transform:rotate(-28deg);border-radius:50%;box-shadow:0 0 20px currentColor;animation:slash .27s ease-out both}.impact b{position:absolute;width:4px;height:8px;left:-2px;top:-4px;background:currentColor;border-radius:50%;animation:sparkFly .55s ease-out both}.impact.block .impact-slash,.impact.absorb .impact-slash,.impact.heal .impact-slash{display:none}.impact.block .shock-ring,.impact.absorb .shock-ring{border-radius:15% 15% 45% 45%;height:125px;top:-62px}.impact.heal .shock-ring{box-shadow:0 0 28px currentColor}.impact.phase .shock-ring{width:250px;height:250px;top:-125px;left:-125px}.damage-float{font-size:38px;z-index:60;pointer-events:none;text-align:center;animation:floatUp 1s ease-out both;text-shadow:0 3px 1px #07121e,0 0 14px #000}.damage-float.big-hit{font-size:54px}.damage-float small{display:block;font-size:12px;font-family:system-ui;font-weight:500;white-space:nowrap;color:#efcfa6;margin-top:3px}
@keyframes ring{from{opacity:1;scale:.45}to{opacity:0;scale:1.75}}@keyframes slash{from{opacity:1;scale:.4 1}to{opacity:0;scale:1.25 .5}}@keyframes sparkFly{from{opacity:1;transform:translate(0,0)}to{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--rot))}}
#comboRibbon{position:absolute;top:178px;left:525px;right:365px;text-align:center;padding:12px 20px;color:#f8db9d;background:linear-gradient(90deg,transparent,#122732ec,transparent);letter-spacing:4px;font-size:22px;z-index:65;opacity:0;pointer-events:none}#comboRibbon.show{animation:ribbonIn 1.25s ease both}@keyframes ribbonIn{0%{opacity:0;translate:0 10px}15%,80%{opacity:1;translate:0 0}100%{opacity:0;translate:0 -8px}}
/* Map lanes are an actual graph of legal next stops. */
.map-content{top:130px;bottom:125px}.map-heading{align-items:start}.map-heading h2{font-size:33px}.map-heading p{max-width:580px;line-height:1.9}.route{top:134px;bottom:auto;height:400px;gap:16px;align-items:start}.route:before{display:none}.route-layer{height:400px;display:block;position:relative}.route-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}.route-lines path{fill:none;stroke:#847b65;stroke-opacity:.36;stroke-width:1.7;stroke-dasharray:4 6}.route-lines path.travelled{stroke:#d9ba7b;stroke-opacity:.9;stroke-width:3;stroke-dasharray:none}.route-node{position:absolute;left:50%;transform:translateX(-50%);width:151px;height:142px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px 7px;gap:3px;z-index:3;overflow:hidden}.route-node:hover,.route-node.active:hover{transform:translateX(-50%) translateY(-3px);background:linear-gradient(#3e5055,#1c2b35)}.route-node .node-step{font:10px monospace;color:#a9a992;letter-spacing:1px;align-self:flex-start;position:absolute;top:7px;left:9px}.route-node .node-icon{font-size:25px;line-height:1;margin:6px 0 2px}.route-node b{font-size:16px;letter-spacing:1px}.route-node small{font-size:10px;line-height:1.4;letter-spacing:0}.node-risk{font-size:9px;margin-top:3px;color:#c6b491;line-height:1.2}.route-node[data-type=boss]{border-color:#c7867166;background:linear-gradient(#42353a,#201e28)}.route-node[data-type=rest]{border-color:#7aa79270}.route-node[data-type=event]{border-color:#9481af77}.route-node.done{opacity:.25}.route-node.chosen{opacity:.65}.route-node.locked{opacity:.7}.map-objective{bottom:0;width:850px;padding:14px 22px}.map-objective b{font-size:14px;line-height:1.65}.map-hint{right:12px;font-size:12px;bottom:22px;max-width:430px;line-height:1.7}.route-preview{position:absolute;left:75px;right:400px;bottom:222px;min-height:54px;border-left:2px solid #c0a06b55;padding:9px 14px;background:#11202cd9;z-index:9}.route-preview b{display:block;font-size:13px;color:#d8c399;margin-bottom:3px}.route-preview span{font-size:11px;line-height:1.6;color:#aeb8b4}.memory-meter{position:absolute;right:75px;bottom:215px;width:284px;padding:12px 18px;border:1px solid #bda4794d;background:#192831d9;border-radius:6px;display:grid;grid-template-columns:1fr 80px;text-align:left;gap:3px;z-index:10}.memory-meter small{color:#cfc19e;font-size:12px;letter-spacing:2px}.memory-meter b{grid-column:2;grid-row:1/3;text-align:right;font:28px Georgia;color:#efd69a}.memory-meter span{font-size:11px;color:#94afa6}.no-relic{color:#819995}.relic-strip{bottom:38px}
/* Outcome / camp / events */
.battle-report{position:absolute;top:210px;left:380px;right:380px;display:grid;grid-template-columns:repeat(6,1fr);gap:8px;text-align:center;padding:11px 0;border-top:1px solid #b39c7038;border-bottom:1px solid #b39c7038;z-index:3}.battle-report small,.report-mini small{display:block;color:#a7b8ad;font-size:11px;letter-spacing:1px}.battle-report b,.report-mini b{display:block;margin-top:7px;font:24px Georgia;color:#efd4a3}.reward-grid{top:333px;gap:46px;left:310px;right:310px}.reward-grid .card{height:310px;width:229px}.reward-grid .card-art{height:110px}.reward-grid .card-desc{font-size:15px;height:110px;line-height:1.65;padding:12px 15px}.reward-grid .card-top{height:40px}.reward-grid .card-name{font-size:17px}.reward-foot{bottom:64px}.relic-award{padding:10px 20px;font-size:14px;margin-bottom:8px}.reroll-reward{position:absolute;top:290px;left:625px;width:350px;text-align:center;font-size:13px;color:#d1bb94;padding:10px;border:1px solid #c4a47544;background:#152c36;border-radius:5px}.boss-reward .overlay-head small{color:#f2bd7d}.boss-reward .battle-report{border-color:#dfa66b66}#defeatStats{top:auto;bottom:130px;left:350px;right:350px}.defeat-wrap{top:142px}.defeat-wrap h2{font-size:52px}.defeat-wrap p{font-size:18px;margin-bottom:20px;line-height:1.8}#endingSummary{position:absolute;right:60px;bottom:80px;display:flex;gap:18px;flex-direction:column;padding:24px 28px;border-left:1px solid #c7af7866;background:#10242acf;color:#c7d0be}#endingSummary span{font-size:11px;letter-spacing:3px}#endingSummary b{font-size:16px;font-weight:400}.ending-panel{top:95px}.ending-panel p{font-size:16px}.ending-result{font-size:15px;line-height:1.8}
.event-actor{position:absolute;left:115px;bottom:150px;width:310px;height:485px;object-fit:contain;pointer-events:none;filter:drop-shadow(0 12px 22px #0009);display:none}.has-actor .event-card{left:920px;width:825px;max-height:595px}.event-card p{line-height:1.95}.shop-reroll{position:absolute;top:227px;left:130px;width:636px;font-size:13px;padding:11px}.shop-leave{bottom:65px}.shop-services{gap:13px}.shop-services .choice-btn{padding:19px}.restScreen .event-card{top:210px}
/* Archive */
.panel-shell{max-height:825px}.panel-body{max-height:685px;min-height:130px}.codex-tabs{display:flex;gap:10px;margin-bottom:23px;border-bottom:1px solid #baaa7830;padding-bottom:16px;position:sticky;top:-30px;z-index:6;background:#172933}.codex-tabs button{font-size:15px;padding:11px 25px;border:1px solid #a4957344;border-radius:4px;color:#afc0b9}.codex-tabs button.active{background:#475048;color:#f1d6a3;border-color:#d6b779}.archive-tools{display:flex;gap:14px;align-items:center;margin-bottom:18px}.archive-tools input,.archive-tools select{border:1px solid #bba57955;background:#0c212e;color:#dfd6bd;font-size:14px;padding:11px 15px;border-radius:4px;outline:none}.archive-tools input{width:330px}.archive-tools input:focus{border-color:#dfc895}.archive-tools select{width:135px}.archive-tools span{margin-left:auto;font-size:13px;color:#a1b6ab}.panel-grid .card{width:196px;height:265px}.panel-grid .card-desc{font-size:14px;height:106px}.panel-grid .card-art{height:92px}.panel-grid .card-name{font-size:14px}.enemy-archive{display:grid;grid-template-columns:267px 1fr;gap:28px}.enemy-list{height:500px;overflow:auto;padding-right:8px;display:flex;flex-direction:column;gap:8px}.enemy-list button{padding:12px 16px;border:1px solid #8d927448;background:#152d38;border-radius:4px;text-align:left}.enemy-list button.active{border-color:#d4b679;background:#394a4a}.enemy-list b{font-size:14px;color:#decda6;display:block;font-weight:500}.enemy-list small{font-size:10px;letter-spacing:1px;color:#95aca4;margin-top:7px;display:block}.enemy-doc-top{display:grid;grid-template-columns:270px 1fr;gap:16px;min-height:260px}.enemy-doc-top canvas{width:270px;height:270px;background:radial-gradient(ellipse at 50% 65%,#9a96711b,transparent 70%);border-bottom:1px solid #b7a57940}.enemy-doc-top h3{margin:14px 0 12px;font-size:25px;font-family:serif;line-height:1.4;color:#efdbb4}.enemy-doc-top small{font-size:11px;line-height:1.7;letter-spacing:1px}.enemy-doc-top p{font-size:14px;line-height:1.8;color:#c2cec5}.enemy-doc-top .enemy-base-note{font-size:10px;letter-spacing:0;color:#869e9c}.enemy-basehp{font:17px Georgia,serif;color:#b0d0b8}.enemy-document h4{font-size:12px;color:#d7c8a5;letter-spacing:3px;margin:16px 0 12px;font-weight:500}.enemy-pattern{display:flex;flex-direction:column;gap:7px}.enemy-pattern>div{background:#0d233066;border:1px solid #71837a33;display:flex;align-items:center;gap:15px;padding:9px 15px}.enemy-pattern b{font:17px Georgia;color:#d7bb89}.enemy-pattern span{font-size:13px;line-height:1.4;color:#c1cdc6}.enemy-phase{background:#322a2c60;border-left:2px solid #c29160;padding:10px 15px;margin-top:16px;font-size:13px;line-height:1.7;color:#d5bfa0}.enemy-phase p{margin:4px 0}.relic-catalogue{display:grid;grid-template-columns:1fr 1fr;gap:18px}.relic-entry{display:flex;gap:20px;padding:20px 23px;border:1px solid #8a9d8740;background:#122c37;border-radius:6px}.relic-entry.owned{border-color:#c6b97a;background:#334037}.relic-entry>span{font:39px Georgia;color:#e1c78f;width:48px;flex:none}.relic-entry h3{font-size:18px;margin:9px 0;color:#ebd3a4}.relic-entry p{font-size:14px;line-height:1.7;color:#b7c7be;margin:0}.relic-entry small{font-size:9px;letter-spacing:1px;color:#94ab9e}.live-status{display:block;font-size:11px!important;color:#a1c7b8!important;letter-spacing:0!important;padding-top:7px}.archive-heading{font-size:20px;font-family:serif;color:#e9cf9d;font-weight:500;margin:28px 0 15px}.combat-history{max-height:300px;overflow:auto;border:1px solid #86947844;background:#112531;padding:13px 18px}.combat-history>div{display:flex;gap:19px;border-bottom:1px solid #b2b19414;padding:8px 0;font-size:13px;line-height:1.5;color:#c5d0c2}.combat-history small{font-size:11px;letter-spacing:0;white-space:nowrap;width:60px;color:#c0b490}.report-history{background:#112a35;border:1px solid #849c8744;padding:16px 20px;margin-bottom:13px;border-radius:5px}.report-history>b{color:#e6c795;font-size:15px;font-weight:500}.report-mini{display:grid;grid-template-columns:repeat(6,1fr);text-align:center;margin-top:15px}.detail-estimate{margin-top:12px;color:#b7d2ba;font-size:14px;border-top:1px solid #cabb892f;padding-top:10px}
/* Real touch targets and a viewport-sized card detail, not a tiny scaled popup. */
@media(pointer:coarse){
 .run-actions .small-btn{min-height:55px;padding:12px 14px;font-size:16px}.run-actions{gap:7px}.run-title{width:235px}.run-stats{gap:16px}.runbar{padding:0 23px}.hand .card{width:198px;height:257px}.hand .card-desc{font-size:16px;padding:10px 12px;line-height:1.45;height:112px}.hand .card-name{font-size:16px}.hand .card-top{height:35px}.hand .card-art{height:81px}.card:focus-visible,.hand .card:hover,.hand.big-cards .card:hover{transform:none}.hand{bottom:29px;height:265px}.hand .card-key{display:none}.hand .card-type{font-size:13px;bottom:8px}.card-cost{width:37px;height:38px;font-size:24px}.end-turn{font-size:23px;bottom:84px!important;height:94px!important}.end-turn small{font-size:12px}.ability-btn{height:61px;top:520px}.ability-btn b{font-size:19px}.ability-btn small{font-size:12px}.terrain-badge small{font-size:12px}.enemy-name,.player-meta h3{font-size:29px}.hpbar span,.enemy-hp span{font-size:17px}.hpbar,.enemy-hp{height:23px}.status-chip{font-size:14px;padding:6px 9px}.log-open{font-size:17px;top:454px;padding:12px 6px}.class-passive{font-size:15px;top:580px!important}.battle-relics .relic-token{width:43px;height:43px;font-size:23px}.battle-relics{left:24px;top:519px;max-width:222px}.close-panel{width:66px;height:66px;font-size:39px}.codex-tabs button{font-size:19px;padding:15px 20px}.panel-shell>header{height:104px}.panel-body{max-height:695px;padding:25px 28px 30px}.panel-body p,.rule-row{font-size:19px}.rule-grid .rule-row{font-size:17px}.panel-grid .card{width:232px;height:284px}.panel-grid .card-desc{font-size:16px;height:112px}.panel-grid .card-name{font-size:17px}.panel-grid .card-art{height:95px}.archive-tools input,.archive-tools select,.archive-tools button{font-size:18px;padding:14px}.archive-tools input{width:315px}.enemy-list b{font-size:18px}.enemy-list small{font-size:13px}.enemy-list button{padding:14px 11px}.enemy-doc-top p{font-size:17px}.enemy-pattern span{font-size:17px}.enemy-pattern>div{padding:12px}.enemy-phase{font-size:17px}.enemy-doc-top{grid-template-columns:230px 1fr}.enemy-doc-top canvas{width:230px;height:265px}.enemy-doc-top h3{font-size:26px}.relic-entry p{font-size:17px}.relic-entry h3{font-size:20px}.relic-entry small{font-size:12px}.choice-btn b{font-size:21px}.choice-btn small{font-size:16px}.choice-btn{padding:16px 20px}.event-card p{font-size:21px;line-height:1.8}.event-card{max-height:590px}.shop-services .choice-btn{padding:20px}.shop-price{font-size:19px}.shop-reroll{font-size:18px}.map-heading p{font-size:18px}.route-node{height:151px;padding-top:10px}.route-node b{font-size:19px}.route-node small{font-size:13px}.node-risk{font-size:11px}.route-preview span{font-size:14px}.route-preview b{font-size:16px}.route-preview{bottom:201px}.memory-meter{bottom:204px}.memory-meter span{font-size:14px}.class-info p{font-size:17px;line-height:1.5;min-height:63px}.class-info h3{font-size:29px}.class-ability-note b{font-size:17px}.class-ability-note span{font-size:15px;line-height:1.5}.class-go{font-size:20px;padding:13px 19px}.class-traits{display:none}.class-ability-note{margin-top:8px}.class-art img{height:336px;max-height:336px}.class-info{top:318px}.class-grid{top:203px}.story-text{font-size:22px;line-height:1.8}.story-next{margin-top:12px}.panel-lead{font-size:18px}.settings-grid button,.settings-grid label{font-size:18px}.setting-tile p{font-size:18px}.touch-card-box{padding:18px;max-height:94dvh}.touch-card-actions button{min-height:47px}.card-portrait-safety{object-fit:contain}
}
@media (prefers-reduced-motion:reduce){.route-node.active{animation:none}.card-dealt{animation:none}.screen-shake{animation:none!important}}
/* Final spacing review: neither node previews nor character actions cover text. */
.class-ability-note{margin-top:9px;padding-top:9px}.class-ability-note span{font-size:12px;line-height:1.5}.class-go{bottom:12px}
.route-preview{bottom:188px}.memory-meter{bottom:192px}
@media(pointer:coarse){.route-preview{bottom:173px}.memory-meter{bottom:179px}.class-ability-note span{font-size:15px}.class-go{bottom:12px}}
/* Menu figures use the same complete safe-area PNGs; no baked, cropped old figures. */
.menu-cast{position:absolute;inset:0;z-index:2;pointer-events:none}.menu-cast img{position:absolute;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 24px 20px #0009)}.menu-cast-primary{height:645px;width:430px;bottom:38px;right:200px;opacity:.94}.menu-cast-secondary{height:602px;width:401px;bottom:55px;right:4px;opacity:.48}
/* v1.4: complete, isolated illustrations; readable endings and quest information. */
.class-art img{object-fit:contain!important;max-width:88%!important;padding:0 14px!important;height:340px!important;bottom:4px!important}.class-art{overflow:visible!important}.class-card .class-go{z-index:3}
.signal-node{border-color:#6dafa0!important}.signal-node b{color:#aaddc9}.protocol-node{border-color:#bd8072!important}.protocol-node b{color:#e6ad98}
.signal-progress{padding:22px 25px;margin:0 0 24px;background:#142a31;border:1px solid #7fada044;border-radius:8px}.signal-progress h3{margin:0 0 10px;color:#decb9c}.signal-progress p{line-height:1.8;color:#acc1c2}.signal-progress span{display:inline-block;padding:10px 20px;margin-right:10px;border:1px solid #90aab544;color:#829699}.signal-progress span.owned{color:#b5e0c6;border-color:#74b598}
.ending-choices{flex-wrap:wrap;gap:10px}.ending-choices button{min-width:145px;letter-spacing:1px}.ending-signal-note{margin-top:14px;font:13px/1.8 system-ui;color:#b3c4b8}.ending-result{max-height:435px;overflow:auto}
.card-art{background-size:cover;background-repeat:no-repeat;background-color:#17242f}.card-detail-illustration{object-fit:contain}.battle-hint{pointer-events:none}
