/* 拖拽部署、出售与品质视觉 */
[draggable="true"]{cursor:grab}[draggable="true"]:active{cursor:grabbing}.is-dragging{opacity:.3;filter:saturate(.4)}.cell.drop-ready,.bench-slot.drop-ready{background:#1f5b5c66!important;box-shadow:inset 0 0 0 2px #55e0d3,0 0 15px #35cfc486!important}.shop-wrap{position:relative}.sell-hint{margin-left:auto;margin-right:8px;padding:3px 7px;border:1px dashed #507073;color:#708f91;font-size:9px}.shop-wrap:after{content:"拖到这里出售 · 松开获得金币";position:absolute;inset:25px 0 0;z-index:20;display:grid;place-items:center;background:rgba(42,19,13,.91);border:2px dashed #ff8053;color:#ffd0bd;font-size:16px;font-weight:700;letter-spacing:1px;opacity:0;transform:scale(.98);pointer-events:none;transition:.15s}.dragging-unit .shop-wrap:after{opacity:.72}.shop-wrap.sell-ready:after{opacity:1;transform:scale(1);background:rgba(71,26,14,.96);box-shadow:inset 0 0 28px #ff754044,0 0 18px #ff75405c}.dragging-unit .shop-wrap{border-color:#a65739}
.shop-card:disabled{filter:none;opacity:.5}.shop-card.rarity-1{--rarity:#eef4f5;background:linear-gradient(135deg,#e9eff0,#9baaad);color:#172326}.shop-card.rarity-2{--rarity:#5ce18b;background:linear-gradient(135deg,#22663d,#123622);color:#effff2}.shop-card.rarity-3{--rarity:#54a8ff;background:linear-gradient(135deg,#235d99,#132f59);color:#f1f7ff}.shop-card.rarity-4{--rarity:#b46cff;background:linear-gradient(135deg,#63359b,#301b57);color:#fbf4ff}.shop-card.rarity-5{--rarity:#ffc84f;background:linear-gradient(135deg,#e5af35,#765112);color:#211807;box-shadow:inset 0 0 18px #fff2a555,0 0 9px #ffc94b44}.shop-card.rarity-1 .shop-info small,.shop-card.rarity-5 .shop-info small{color:#344447}.shop-card.rarity-5 .shop-info small{color:#49350f}.shop-card.rarity-1 .shop-cost{background:#f8ffff;color:#1b2a2c;border-color:#89999c}.shop-card.rarity-2 .shop-cost{background:#10321d;color:#8ef7ae;border-color:#50b872}.shop-card.rarity-3 .shop-cost{background:#102d50;color:#9ed0ff;border-color:#4e91d1}.shop-card.rarity-4 .shop-cost{background:#291647;color:#d5a8ff;border-color:#8555b5}.shop-card.rarity-5 .shop-cost{background:#fff1ad;color:#3b2a08;border-color:#9c721c}
.unit-token.star-1 .unit-portrait{border-color:#aab8bc;box-shadow:0 0 0 2px #43565a,0 6px 12px #000,0 0 9px #b7c5c658}.unit-token.star-2 .unit-portrait{border-color:#55baff;box-shadow:0 0 0 3px #194e83,0 6px 13px #000,0 0 17px #3ea8ff}.unit-token.star-3 .unit-portrait{border-color:#ffd45b;box-shadow:0 0 0 3px #9f6c14,0 6px 14px #000,0 0 20px #ffcb43;animation:starThreeGlow 1.15s ease-in-out infinite alternate}.unit-token.star-2 .unit-nameplate{border-color:#4ba9ed;color:#dff4ff}.unit-token.star-3 .unit-nameplate{border-color:#e8b839;color:#fff0ad;background:#302208}.bench-slot.star-1 .mini-portrait{box-shadow:inset 0 0 0 2px #aab8bc}.bench-slot.star-2 .mini-portrait{box-shadow:inset 0 0 0 3px #55baff,0 0 10px #3ea8ff}.bench-slot.star-3 .mini-portrait{box-shadow:inset 0 0 0 3px #ffd45b,0 0 13px #ffcb43}.bench-slot.star-2{border-color:#4a9dd8}.bench-slot.star-3{border-color:#e9b83f;background:#30240e}.stars{font-weight:800}@keyframes starThreeGlow{to{filter:brightness(1.18);box-shadow:0 0 0 3px #d99d19,0 6px 14px #000,0 0 27px #ffe070}}
.sprite-regular{background-image:url("assets/hero-atlas-v5.png")}.sprite-legend{background-image:url("assets/legend-atlas-v5.png")}

/* 棋盘与角色始终保持原始比例 */
.board-stage{position:relative;flex:0 0 auto;width:min(100%,calc((max(760px,100vh) - 436px)*8/7));aspect-ratio:4/3;margin-inline:auto;isolation:isolate}
.board-stage .battlefield{width:100%;height:100%;aspect-ratio:4/3;flex:none;grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:repeat(6,minmax(0,1fr));gap:0;padding:0;border-width:3px 4px}
.board-stage .cell{aspect-ratio:1/1;min-width:0;min-height:0}
.unit-visual{position:relative;width:min(82px,92%);aspect-ratio:1/1;flex:0 0 auto}
.unit-portrait{width:100%;height:100%;max-width:none;aspect-ratio:1/1;display:block;background-size:800% 500%}
.unit-portrait.sprite-legend{background-size:200% 200%}
.mini-portrait,.shop-portrait,.detail-portrait,.hover-portrait{aspect-ratio:1/1;background-size:800% 500%;background-repeat:no-repeat}
.mini-portrait.sprite-legend,.shop-portrait.sprite-legend,.detail-portrait.sprite-legend,.hover-portrait.sprite-legend{background-size:200% 200%}
.mini-portrait{width:auto;height:100%;max-width:100%;margin-inline:auto}
.shop-portrait{width:min(100%,80px);height:auto;max-height:100%;align-self:center;justify-self:center}
.bench-inline{width:min(100%,calc((max(760px,100vh) - 436px)*8/7));height:auto!important;margin:0 auto 7px!important;padding:6px 4px 8px!important;background:#171b1d!important;border-color:#626a6d!important;box-shadow:inset 0 0 20px #050708,0 6px 15px #0007!important}
.bench{height:auto!important;grid-template-columns:repeat(8,minmax(0,1fr));gap:0!important;align-items:stretch}
.bench-slot{width:100%;height:auto;aspect-ratio:1/1;justify-self:stretch;background:linear-gradient(145deg,#454b4e,#292e31)!important;border:1px solid #747d80!important;border-radius:2px!important}
.bench-slot:before{color:#929a9d!important}
.bench-slot:hover{background:linear-gradient(145deg,#555d60,#343a3d)!important;border-color:#a1aaad!important}

/* 血条紧贴头像：8px 血条底边距离头像上沿 3px */
.unit-visual .healthbar{top:-11px;left:3%;width:94%;height:8px;z-index:7}
.unit-visual .manabar{top:2px;left:18%;width:64%;height:4px;z-index:7}

/* 敌我血量识别 */
.unit-token:not(.enemy) .healthbar i{background:linear-gradient(90deg,#23b85b,#7ee576);box-shadow:0 0 7px #35db70}
.unit-token.enemy .healthbar i{background:linear-gradient(90deg,#d82d35,#ff7359);box-shadow:0 0 7px #ff493f}

/* 商店持有与升星提示 */
.shop-card.owned{outline:2px solid #55ddd1;outline-offset:-4px;box-shadow:inset 0 0 18px #26c9c442,0 0 10px #26c9c43d}
.shop-card.upgrade-ready{outline-color:#ffd452;box-shadow:inset 0 0 22px #ffd34c40,0 0 14px #ffc83f70;animation:shopUpgradePulse .85s ease-in-out infinite alternate}
.owned-mark,.upgrade-arrow{position:absolute;z-index:6;top:4px;padding:2px 4px;border:1px solid;border-radius:2px;font-size:8px;font-weight:800;line-height:1.1;pointer-events:none;box-shadow:0 2px 6px #0008}
.owned-mark{left:4px;background:#0b3b3cde;border-color:#4bcfc8;color:#9afff4}
.upgrade-arrow{right:4px;background:#4b3410ef;border-color:#ffd054;color:#ffe99a;letter-spacing:.2px}
.shop-card.upgrade-3 .upgrade-arrow{background:#5c3311;color:#fff0a5;border-color:#fff073;text-shadow:0 0 6px #ffd82e}
@keyframes shopUpgradePulse{to{filter:brightness(1.12);box-shadow:inset 0 0 28px #ffdd594f,0 0 19px #ffd0439a}}

/* 商店上方玩家资源状态 */
.bottom-dock{height:180px!important}
.bottom-dock .economy-btn{align-self:65px!important;height:91px!important}
.player-economy-bar{height:36px;display:grid;grid-template-columns:1.1fr .65fr 1.25fr .9fr;gap:6px;margin-bottom:3px}
.player-stat{position:relative;display:flex;align-items:center;gap:7px;min-width:0;padding:5px 9px;background:#111f22;border:1px solid #345155;border-radius:3px;color:#91a8aa}
.player-stat span{font-size:11px;white-space:nowrap}.player-stat b{margin-left:auto;color:#eef7f5;font-size:15px;white-space:nowrap}.player-stat b em{font-style:normal;color:inherit}
.player-stat>i{position:absolute;left:8px;right:8px;bottom:3px;height:3px;background:#071012;overflow:hidden}.player-stat>i em{display:block;height:100%;width:0;transition:width .3s}
.hp-stat{border-color:#64413b}.hp-stat b{color:#ff8b73}.hp-stat>i em{background:linear-gradient(90deg,#dc413d,#ff8a55)}
.level-stat{border-color:#5c5231}.level-stat b{color:#f2c852}.level-stat b em{font-size:18px;margin-left:2px}
.xp-stat{border-color:#2e6266}.xp-stat>i em{background:linear-gradient(90deg,#27b7bd,#65e1d9)}
.gold-stat{border-color:#75602d}.gold-stat b{color:#ffd057}.gold-stat b em{font-size:18px}
.left-panel .trait-list{max-height:calc(100% - 105px)}

/* 全局信息字号增强 */
body{font-size:17px}.brand b{font-size:25px}.brand small{font-size:11px}.round-card span{font-size:15px}.round-card b{font-size:18px}.timer span{font-size:13px}.timer b{font-size:26px}.icon-btn{font-size:19px}
.section-title b{font-size:18px}.section-title span{font-size:11px}.code-row small,.code-row span{font-size:9px}.trait b{font-size:14px}.trait small{font-size:11px}.trait strong{font-size:13px}.trait-icon{font-size:18px}
.enemy-banner{font-size:13px}.board-caption{font-size:12px}.board-caption b{font-size:14px}.bench-label b{font-size:14px}.bench-label span,.bench-label em{font-size:12px}.mini-name{font-size:10px}.battle-controls button{font-size:14px}
.shop-head b{font-size:16px}.shop-head small,.shop-head button{font-size:11px}.sell-hint{font-size:10px}.shop-info b{font-size:13px}.shop-info small{font-size:11px}.shop-cost{font-size:12px}.owned-mark,.upgrade-arrow{font-size:9px}
.economy-btn span{font-size:14px!important}.economy-btn b{font-size:17px!important}.economy-btn small{font-size:10px!important}.detail-head h3{font-size:18px}.tag,.cost-dot{font-size:11px}.skill-box,.battle-log{font-size:12px}.round-node{font-size:11px}
.shop-wrap:after{inset:65px 0 0}

/* 激活羁绊强化显示，并由脚本自动排列到顶部 */
.trait-list{scroll-behavior:smooth}
.trait{order:2;transition:background .2s,border-color .2s,opacity .2s,transform .2s}
.trait.active{order:1;position:relative;opacity:1!important;filter:none!important;border-color:#54d7d1!important;background:linear-gradient(90deg,#194247,#172b30)!important;box-shadow:inset 4px 0 #f1be42,0 0 14px #2ecbd33b!important;transform:translateX(2px)}
.trait.active:after{content:"ACTIVE";position:absolute;right:7px;top:3px;color:#6fe1da;font:700 7px/1 Consolas,monospace;letter-spacing:.7px}

/* 棋盘中央阶段横幅 */
.phase-banner{position:absolute;z-index:30;left:50%;top:50%;width:min(92%,680px);min-height:74px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:12px 58px;transform:translate(-50%,-50%) scaleX(.72);opacity:0;pointer-events:none;background:linear-gradient(90deg,transparent,#0a181cf2 12%,#132b30f7 50%,#0a181cf2 88%,transparent);border-top:1px solid #52d2d5;border-bottom:1px solid #52d2d5;box-shadow:0 0 36px #000c,0 0 25px #25bfc63b;transition:opacity .2s,transform .24s cubic-bezier(.2,.8,.2,1)}
.phase-banner.show{opacity:1;transform:translate(-50%,-50%) scaleX(1);animation:phaseBannerOut .28s ease 1s forwards}
.phase-banner.victory.show,.phase-banner.defeat.show{animation:phaseBannerOut .28s ease 2s forwards}
.phase-banner b{font-size:26px;line-height:1;color:#eaf8f6;letter-spacing:6px;text-shadow:0 0 13px #48d4d8}
.phase-banner span{font-size:11px;color:#94b8ba;letter-spacing:1px}
.phase-banner.prep{border-color:#49d7d4}.phase-banner.battle{border-color:#f1b942}.phase-banner.battle b{color:#ffe296;text-shadow:0 0 14px #e9a72c}.phase-banner.victory{border-color:#4de18e}.phase-banner.victory b{color:#8dffb7;text-shadow:0 0 14px #26c76b}.phase-banner.defeat{border-color:#ff5a4f}.phase-banner.defeat b{color:#ff998a;text-shadow:0 0 14px #e63b31}
@keyframes phaseBannerOut{to{opacity:0;transform:translate(-50%,-50%) scaleX(1.04)}}
@media(prefers-reduced-motion:reduce){.phase-banner,.phase-banner.show{animation:none;transition:none}.trait{transition:none}}

/* 信息传达优先：第二档大字号 */
body{font-size:19px}
.brand b{font-size:28px}.brand small{font-size:13px}.round-card span{font-size:17px}.round-card b{font-size:21px}.timer span{font-size:15px}.timer b{font-size:30px}.icon-btn{font-size:21px}
.section-title b{font-size:21px}.section-title span{font-size:13px}.code-row small,.code-row span{font-size:11px}.trait{padding:10px 9px}.trait b{font-size:17px}.trait small{font-size:14px;line-height:1.35}.trait strong{font-size:16px}.trait-icon{width:34px;height:34px;font-size:21px}
.enemy-banner{font-size:15px}.board-caption{font-size:14px}.board-caption b{font-size:16px}.bench-label b{font-size:16px}.bench-label span,.bench-label em{font-size:14px}.mini-name{font-size:12px;padding:3px 2px}.unit-nameplate{font-size:12px}.battle-controls button{font-size:16px}
.player-stat span{font-size:13px}.player-stat b{font-size:18px}.level-stat b em,.gold-stat b em{font-size:21px}
.shop-head b{font-size:19px}.shop-head small,.shop-head button{font-size:13px}.sell-hint{font-size:12px}.shop-info b{font-size:16px}.shop-info small{font-size:13px;line-height:1.2}.shop-cost{font-size:14px}.owned-mark,.upgrade-arrow{font-size:11px}
.economy-btn span{font-size:16px!important}.economy-btn b{font-size:19px!important}.economy-btn small{font-size:12px!important}.detail-head h3{font-size:21px}.tag,.cost-dot{font-size:13px}.skill-box,.battle-log{font-size:14px;line-height:1.6}.round-node{font-size:13px}.log-title button{font-size:12px}
.hover-tooltip{width:330px}.hover-head strong,.trait-hover-title strong{font-size:19px}.hover-head span,.trait-hover-title small{font-size:13px}.hover-tags i{font-size:12px}.hover-stats span{font-size:11px}.hover-stats b{font-size:15px}.hover-skill b{font-size:15px}.hover-skill p,.trait-levels span{font-size:13px}.trait-levels b{font-size:15px}.hover-note{font-size:11px}
.phase-banner b{font-size:30px}.phase-banner span{font-size:15px}.help-card p{font-size:14px}.quick-rules span{font-size:12px}.rule-chips span{font-size:12px}.result-card p{font-size:14px}.result-stats span{font-size:13px}

/* 六种种族图腾纹理 */
.race-totem{position:relative;overflow:hidden;isolation:isolate;--race-color:#fff;--race-glyph:"?"}
.race-totem:before,.race-totem:after{position:absolute;z-index:3;pointer-events:none}
.race-totem:before{content:"";inset:0;opacity:.35;mix-blend-mode:screen}
.race-totem:after{content:var(--race-glyph);right:3px;bottom:3px;display:grid;place-items:center;min-width:23px;height:23px;padding:1px;color:var(--race-color);font:900 18px/1 "Microsoft YaHei",sans-serif;background:#071012a8;border:1px solid var(--race-color);text-shadow:0 0 8px var(--race-color);box-shadow:0 0 10px #0008}
.race-sausage{--race-color:#ff9a55;--race-glyph:"◎"}.race-sausage:before{background:radial-gradient(circle at 20% 20%,#ffb26c 0 3px,transparent 4px),radial-gradient(circle at 80% 70%,#ff8b4d 0 2px,transparent 3px),repeating-linear-gradient(90deg,transparent 0 14px,#ff9a5526 15px 17px)}
.race-tribe{--race-color:#ff75dc;--race-glyph:"✦"}.race-tribe:before{background:repeating-conic-gradient(from 30deg at 18% 82%,#ff5dc942 0 12deg,#7b75ff3d 12deg 24deg,#54e5df38 24deg 36deg,transparent 36deg 48deg)}
.race-light{--race-color:#55e9ff;--race-glyph:"✦"}.race-light:before{background:repeating-linear-gradient(155deg,transparent 0 10px,#5fe8ff32 11px 14px,transparent 15px 23px),radial-gradient(ellipse at 70% 15%,#9dffff55,transparent 45%)}
.race-ystar{--race-color:#8cf5ff;--race-glyph:"Y"}.race-ystar:before{background:linear-gradient(#72e9ff26 1px,transparent 1px),linear-gradient(90deg,#72e9ff26 1px,transparent 1px),radial-gradient(circle at 50% 50%,transparent 0 28%,#9ff8ff38 30% 33%,transparent 35%);background-size:12px 12px,12px 12px,100% 100%}
.race-wolf{--race-color:#c8d0d3;--race-glyph:"爪"}.race-wolf:before{background:repeating-linear-gradient(125deg,transparent 0 13px,#e4eaec32 14px 17px,transparent 18px 25px),linear-gradient(35deg,transparent 46%,#c8d0d32c 48% 52%,transparent 54%)}
.race-ancient{--race-color:#f0c553;--race-glyph:"☥"}.race-ancient:before{background:repeating-conic-gradient(from 0deg at 22% 23%,#ffd96a40 0 8deg,transparent 8deg 24deg),radial-gradient(circle at 22% 23%,#fff0a05e 0 6px,transparent 7px),repeating-linear-gradient(0deg,transparent 0 15px,#e9bb4a28 16px 18px)}
.mini-portrait.race-totem:after,.shop-portrait.race-totem:after{min-width:19px;height:19px;font-size:14px}.detail-portrait.race-totem:after,.hover-portrait.race-totem:after{min-width:20px;height:20px;font-size:15px}
.race-totem:after{display:none!important}
.race-totem:before{display:none!important}
.portrait-traits{position:absolute;z-index:6;right:2px;bottom:2px;display:flex;flex-direction:row-reverse;align-items:center;gap:2px;pointer-events:none}
.portrait-traits i{display:grid;place-items:center;width:20px;height:20px;margin:0;border:1px solid #b7c7ca;border-radius:3px;background:#071113e8;color:#f3f8f7;font:normal 14px/1 "Microsoft YaHei",sans-serif;box-shadow:0 2px 7px #000c;text-shadow:0 0 5px currentColor}
.portrait-traits .profession-icon{border-color:#f0bd4c;color:#ffe18a}.portrait-traits .race-icon{border-color:#56d4d5;color:#b7ffff}
.mini-portrait .portrait-traits i,.shop-portrait .portrait-traits i{width:17px;height:17px;font-size:12px}.detail-portrait .portrait-traits i,.hover-portrait .portrait-traits i{width:18px;height:18px;font-size:12px}

/* 羁绊悬停棋子图鉴：拥有的点亮，未拥有的淡化 */
.hover-tooltip:has(.trait-roster-grid){width:430px;max-height:min(720px,calc(100vh - 20px));overflow:auto}
.trait-roster-head{display:flex;align-items:center;justify-content:space-between;margin:12px 0 7px;padding-top:10px;border-top:1px solid #34565a}
.trait-roster-head b{color:#f3d272;font-size:15px;letter-spacing:1px}.trait-roster-head span{color:#9bb7ba;font-size:13px}
.trait-roster-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.trait-roster-unit{position:relative;display:grid;grid-template-columns:46px minmax(0,1fr);align-items:center;gap:7px;min-height:52px;padding:4px;border:1px solid #35565b;border-radius:4px;background:linear-gradient(135deg,#16282c,#0a1316);transition:opacity .15s,filter .15s,border-color .15s,box-shadow .15s}
.trait-roster-portrait{width:46px;aspect-ratio:1/1;border-radius:3px;background-repeat:no-repeat;box-shadow:inset 0 0 0 1px #ffffff24}
.trait-roster-info{min-width:0;display:flex;flex-direction:column;gap:3px}.trait-roster-info b{overflow:hidden;color:#e9f3f1;font-size:13px;line-height:1.15;white-space:nowrap;text-overflow:ellipsis}.trait-roster-info span{color:#9bb0b2;font-size:11px}
.trait-roster-unit.owned{border-color:#61ded6;background:linear-gradient(135deg,#1e4b4e,#12272b);box-shadow:inset 0 0 12px #3fe3d327,0 0 8px #31d9d23d;filter:none;opacity:1}
.trait-roster-unit.owned .trait-roster-portrait{box-shadow:inset 0 0 0 2px #f3cc69,0 0 8px #47d8d28a}.trait-roster-unit.owned .trait-roster-info b{color:#fff4b2}
.trait-roster-unit.unowned{opacity:.34;filter:grayscale(1) saturate(.25)}
.trait-owned-mark{position:absolute;right:3px;top:2px;padding:1px 3px;border-radius:2px;background:#083437e8;color:#79f4e9;font:normal 8px/1.25 "Microsoft YaHei",sans-serif;pointer-events:none}
@media(max-width:1100px){.hover-tooltip:has(.trait-roster-grid){width:390px}.trait-roster-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* 第六版：实体战术桌游 + 电子游戏指挥台 */
:root{--table-wood:#3a2618;--table-edge:#a7824c;--board-felt:#254b40;--board-enemy:#53333a;--console:#171d1e;--console-hi:#434a48;--brass:#d1aa5f;--screen:#64ddd4}
html,body{background:#160e09;color:#eef2e9}
body:before{background:repeating-linear-gradient(93deg,#1b100a 0 22px,#21140d 23px 45px,#180e09 46px 68px),repeating-linear-gradient(4deg,transparent 0 48px,#bf88440c 49px 51px),radial-gradient(ellipse at 50% 42%,#69432755,transparent 66%);background-size:auto;filter:none}
body:after{inset:0;background:radial-gradient(ellipse at center,transparent 38%,#050302b8 100%),repeating-linear-gradient(90deg,transparent 0 3px,#ffffff05 4px);animation:none;pointer-events:none}
.sky-orb{display:none}
.game-shell{padding:7px;background:linear-gradient(145deg,#50341f,#21150e 42%,#3a2517);border:2px solid #9c7446;border-radius:15px;box-shadow:0 22px 70px #000, inset 0 0 0 2px #1a0f09,inset 0 0 0 4px #b58b5345;gap:9px}
.topbar,.panel,.arena-panel,.bottom-dock{backdrop-filter:none;border:2px solid #76603f;border-radius:7px;background:linear-gradient(165deg,#2c3231,#121718 60%,#0b0f10);box-shadow:inset 0 1px #8b8d7c70,inset 0 -2px #060808,0 8px 15px #0009}
.topbar{height:66px;border-color:#9e8150;background:linear-gradient(180deg,#3c4140 0,#202727 11%,#121819 89%,#050809 100%);box-shadow:inset 0 0 0 2px #0c1010,0 7px 13px #000b}
.topbar:before{content:"TABLETOP COMMAND // LOCAL SESSION";left:50%;top:4px;transform:translateX(-50%);color:#7f8c82;font:700 8px/1 Consolas,monospace;letter-spacing:2px}
.topbar:after{left:270px;right:255px;bottom:0;height:2px;background:linear-gradient(90deg,transparent,#d3aa5f,#5ee5dc,#d3aa5f,transparent)}
.brand-mark{border:3px double #e3bd73;border-radius:50%;background:radial-gradient(circle,#171d1d 0 32%,#d2a953 34% 39%,#222b2a 41% 60%,#090c0c 62%);box-shadow:0 3px 0 #080a09,0 0 13px #d7ad5d48;color:#75e4dc}
.brand b{color:#fff3cf;text-shadow:0 2px #000;letter-spacing:2px}.brand small{color:#69d8cf;font-family:Consolas,monospace}
.round-card{border:1px solid #8d7549;border-radius:4px;background:linear-gradient(#252d2c,#0c1112);box-shadow:inset 3px 0 #d0a653,inset -3px 0 #d0a653,0 3px 0 #060909;padding:8px 22px}.round-card b{color:#75e2d9;text-shadow:0 0 8px #38bdb4}
.timer{border:2px solid #7c6845;border-radius:50%;min-width:102px;justify-content:center;background:radial-gradient(circle,#101b1a,#070b0c);box-shadow:inset 0 0 0 3px #252d2d,0 3px 0 #050707}.timer b{color:#ffd26f;text-shadow:0 0 9px #e2a63d}
.icon-btn{border:1px solid #777056;border-radius:50%;background:linear-gradient(#3b4543,#111717);box-shadow:inset 0 1px #b4b49b66,0 3px 0 #060808;color:#d7d2b8}.icon-btn:hover{background:linear-gradient(#4d5e5b,#1a2827);color:#7cf1e8;transform:translateY(-1px)}
.main-grid{gap:10px}.panel{position:relative;padding:13px;background:linear-gradient(160deg,#252b2a,#101516 58%,#0a0e0f)}
.panel:after{content:"";position:absolute;inset:5px;z-index:0;border:1px solid #b9955540;border-radius:3px;pointer-events:none}.panel>*{position:relative;z-index:1}
.section-title{padding:7px 8px;margin:5px 0 8px;border:1px solid #66583d;background:linear-gradient(90deg,#31291d,#121818 32%,#121818 70%,#31291d);box-shadow:inset 0 0 0 1px #060909,0 2px 0 #080a0a}.section-title b{color:#ffe0a0;text-shadow:0 1px #000}.section-title span{color:#69d8cf}
.visual-code{border:1px solid #5c513c;border-radius:3px;background:#0b1111;box-shadow:inset 0 0 18px #000}
.trait{border:1px solid #4a4738;border-radius:4px;background:linear-gradient(180deg,#252b2a,#111616);box-shadow:inset 0 1px #77765d32,0 2px 2px #0008}.trait-icon{border:1px solid #81714d;border-radius:50%;background:radial-gradient(circle,#2b3936,#0b1111);box-shadow:inset 0 0 0 2px #080b0b}.trait.active{background:linear-gradient(90deg,#304d42,#192421)!important;border-color:#d0aa5d!important;box-shadow:inset 4px 0 #f1c867,0 0 13px #58d7c849!important}.trait.active:after{content:"ONLINE";color:#7ff2df}
.arena-panel{padding:12px 14px;background:linear-gradient(145deg,#69452a 0,#342216 5%,#171d1d 6%,#0d1212 94%,#392418 95%,#684329);border-color:#c0985d;box-shadow:inset 0 0 0 3px #1a110c,inset 0 0 0 5px #82623e,0 10px 22px #000b}
.arena-panel:before,.arena-panel:after{content:"✣";display:grid;place-items:center;width:18px;height:18px;border:1px solid #b18c55;border-radius:50%;background:#181d1c;color:#d7ad64;font-size:10px;opacity:1;box-shadow:inset 0 0 0 2px #070909}.arena-panel:before{left:5px;top:5px}.arena-panel:after{right:5px;bottom:5px}
.enemy-banner{height:32px;margin:0 18px 7px;padding:0 12px;border:1px solid #745e40;border-radius:3px;background:linear-gradient(#252d2c,#101515);box-shadow:inset 0 0 0 1px #060909,0 3px 0 #070909}.enemy-banner b{color:#ff9a78}.danger-dot{box-shadow:0 0 0 3px #401a14,0 0 10px #ff684b}
.board-stage{border-radius:4px;box-shadow:0 0 0 2px #d2ae69,0 0 0 7px #352316,0 0 0 10px #8c6941,0 13px 25px #000c}
.board-stage .battlefield{border:0;border-radius:3px;background:linear-gradient(180deg,#4b3037 0 49.4%,#121918 49.5% 50.5%,#24483e 50.6% 100%);box-shadow:inset 0 0 38px #0009,inset 0 0 0 2px #070b0b;overflow:hidden}
.battlefield:before{content:"⌖";z-index:1;width:112px;height:112px;border:6px double #b897596b;border-radius:50%;background:radial-gradient(circle,#202523d9 0 38%,#9c7c4660 40% 43%,#101514d9 45%);color:#d2aa5e;font:700 38px/1 Consolas,monospace;text-shadow:0 2px #000,0 0 10px #f2c568;box-shadow:0 0 0 10px #0a0d0c59,0 5px 12px #0009;opacity:.72}
.battlefield:after{content:"";position:absolute;z-index:1;left:0;right:0;top:50%;height:3px;transform:translateY(-50%);background:linear-gradient(90deg,#d1aa5f66,#ffe19e,#d1aa5f66);box-shadow:0 0 8px #e2ba6e;pointer-events:none}
.board-stage .cell{z-index:2;border:1px solid #c8b17f2e;border-radius:0;background:linear-gradient(145deg,#ffffff08,#00000013);box-shadow:inset 1px 1px #ffffff0a,inset -2px -2px #00000022}
.board-stage .cell:nth-child(even){background:linear-gradient(145deg,#ffffff03,#0000001e)}
.cell[data-lane="front"]{box-shadow:inset 0 0 18px #e5ad4a0a,inset 1px 1px #ffffff0c}.cell[data-lane="back"]{filter:saturate(.88)}
.cell:nth-child(8n+1):before{content:attr(data-lane-label);position:absolute;z-index:1;left:3px;top:3px;padding:1px 3px;border:1px solid #d6bd8263;background:#090d0db8;color:#d9c28d;font:700 8px/1.25 "Microsoft YaHei",sans-serif;letter-spacing:1px;pointer-events:none}
.cell.player-zone:hover{background:#5ed8c827;box-shadow:inset 0 0 0 2px #69e4d8,inset 0 0 20px #39cabb35}.cell.valid-target{animation:tableCellGlow .7s infinite alternate}
@keyframes tableCellGlow{to{box-shadow:inset 0 0 0 3px #ffd46c,inset 0 0 22px #d9aa4148}}
.board-caption{height:28px;margin-top:9px;padding:0 6px;color:#bd9078;font-family:Consolas,"Microsoft YaHei",monospace}.board-caption span:last-child{color:#79cdbd}.board-caption b{padding:3px 12px;border:1px solid #927447;border-radius:12px;background:#111817;color:#ffda85;box-shadow:inset 0 0 8px #000}
.unit-portrait{border-radius:50%;border-color:#d4b468;box-shadow:0 0 0 3px #171b1a,0 0 0 5px #735b38,0 7px 11px #000c}.unit-token.enemy .unit-portrait{border-color:#e27e68;box-shadow:0 0 0 3px #241313,0 0 0 5px #704139,0 7px 11px #000c}.unit-token.selected .unit-portrait{box-shadow:0 0 0 3px #fff1a0,0 0 0 6px #d39d3c,0 0 20px #ffd45c}
.unit-nameplate{bottom:-5px;padding:3px 7px;border:1px solid #9e8152;border-radius:2px;background:linear-gradient(#252b28,#090d0d);box-shadow:0 3px 0 #000;color:#fff3cf}
.unit-visual .healthbar{border:1px solid #c8b886;border-radius:2px;background:#080b0b;box-shadow:0 2px 0 #000}.unit-visual .manabar{border:1px solid #263d3c;background:#080b0b}
.bench-inline{margin:0 5px 7px;padding:7px 9px 9px;border:2px solid #725b3e;border-radius:5px;background:linear-gradient(#242a28,#0b1010);box-shadow:inset 0 0 0 2px #060909,inset 0 0 22px #000,0 5px 0 #060707}.bench-label{color:#d7c39b}.bench-label b{color:#ffd77f}.bench-slot{border:2px solid #625b4c!important;border-radius:50%!important;background:radial-gradient(circle,#4d5250 0 55%,#2a2e2d 57% 70%,#111515 72%)!important;box-shadow:inset 0 0 0 2px #161a19,0 3px 0 #050707}.bench-slot:before{content:"";inset:10%;border:1px dashed #a29b8070;border-radius:50%}.bench-slot.selected{box-shadow:inset 0 0 0 2px #161a19,0 0 0 3px #f2c760,0 0 15px #f2c76088!important}
.battle-controls button{border-width:2px;border-style:solid;border-radius:4px;box-shadow:inset 0 1px #ffffff42,0 4px 0 #050707}.primary-btn{background:linear-gradient(#277c71,#164a46);border-color:#62d8c8;color:#effff8}.sell-btn{background:linear-gradient(#5a3026,#2b1815);border-color:#ac654e;color:#ffb59e}
.right-panel .selected-card{border:2px solid #67583f;background:linear-gradient(155deg,#252c2a,#0b1111);box-shadow:inset 0 0 0 2px #070a0a,inset 0 0 22px #000}.detail-portrait{border:2px solid #c7a45f;border-radius:50%;box-shadow:0 0 0 2px #141817,0 5px 9px #000}.position-tag{display:inline-block;margin-left:4px;padding:2px 6px;border:1px solid #6f644b;border-radius:2px;background:#171d1c;color:#d9c58f;font-size:12px}.position-前排{border-color:#bd6c52;color:#ffad91}.position-中排{border-color:#c4a052;color:#f1cf7e}.position-后排{border-color:#4caea7;color:#8ce8df}
.skill-box{border:1px solid #504a38;border-left:4px solid #d2a656;border-radius:3px;background:#0b1010;box-shadow:inset 0 0 12px #000}.battle-log{border:2px solid #4e4938;border-radius:3px;background:repeating-linear-gradient(180deg,#090d0d 0 23px,#111817 24px);box-shadow:inset 0 0 18px #000}
.round-node{border:1px solid #5b513b;border-radius:50%;background:radial-gradient(circle,#27302d,#0a0e0e);box-shadow:0 2px 0 #050606}.round-node.current{background:radial-gradient(circle,#6f5b2d,#1d1a10);border-color:#e4bd68;box-shadow:0 0 13px #dfb452}.round-node.done{background:radial-gradient(circle,#285348,#101b19);border-color:#63cbb9}
.bottom-dock{border-color:#b08b52;border-radius:7px;background:linear-gradient(180deg,#6b472b 0,#352318 7%,#171d1c 9%,#0a0f0f 88%,#281a12 90%,#5b3b25);box-shadow:inset 0 0 0 3px #150e0a,0 10px 20px #000c}
.shop-wrap{padding:5px 8px 7px;border:1px solid #6e593c;border-radius:4px;background:linear-gradient(#252c2a,#0c1111);box-shadow:inset 0 0 0 2px #050808,inset 0 0 20px #000}.player-economy-bar{margin-bottom:5px}.player-stat{border:1px solid #6a5a3d;border-radius:3px;background:linear-gradient(#26302e,#0b1111);box-shadow:inset 0 0 0 1px #050808,0 2px 0 #050707}.shop-head{padding:0 3px}.shop-head b{color:#ffe0a0}.shop-head button{border:1px solid #776642;background:linear-gradient(#343d3a,#111716);box-shadow:0 2px 0 #050707}
.shop{gap:8px;perspective:900px}.shop-card{border-width:3px;border-radius:5px;box-shadow:inset 0 0 0 1px #ffffff24,inset 0 -15px 20px #0004,0 5px 0 #050707;transform-origin:center bottom}.shop-card:before{content:"";position:absolute;inset:3px;z-index:5;border:1px solid #ffffff26;border-radius:2px;pointer-events:none}.shop-card:hover:not(:disabled){transform:translateY(-5px) rotateX(3deg);box-shadow:inset 0 0 0 1px #ffffff3d,inset 0 -15px 20px #0003,0 9px 13px #000c}.shop-portrait{border-radius:2px}.shop-info{background:linear-gradient(90deg,#080b0b10,#080b0b66);text-shadow:0 1px #000}.shop-cost{border-radius:50%;min-width:29px;height:29px;display:grid;place-items:center;padding:2px;box-shadow:0 2px 0 #0009}.economy-btn{border-width:2px;border-radius:5px;box-shadow:inset 0 1px #ffffff55,inset 0 0 20px #0004,0 5px 0 #050707}.xp-action{background:linear-gradient(#2a8b76,#153d37);border-color:#62d4b6}.reroll-btn{background:linear-gradient(#c47235,#68351f);border-color:#eba25e}
.hover-tooltip{border:2px solid #a68650;border-radius:5px;background:linear-gradient(150deg,#2a302e,#0a0f0f);box-shadow:inset 0 0 0 2px #050707,0 18px 42px #000e}.hover-stats{grid-template-columns:repeat(5,1fr)}.hover-stats span{border:1px solid #514b38;border-radius:2px;background:#0b1010}.hover-skill{border:1px solid #4a4435;border-left:4px solid #d19f4d;background:#0a0f0f}.trait-roster-unit{border-radius:3px;background:linear-gradient(#252c2a,#0b1010)}
.modal-card{border:3px solid #b18a50;border-radius:7px;background:linear-gradient(155deg,#303633,#101616);box-shadow:inset 0 0 0 3px #070a0a,0 26px 75px #000}.title-creature{border:5px double #d5aa5e;border-radius:50%;background:radial-gradient(circle,#1b2422,#090d0d);box-shadow:0 6px 0 #050707,0 0 23px #c59b514d}.rule-chips span,.quick-rules div,.help-grid div,.result-stats span{border:1px solid #5f543d;background:linear-gradient(#242b29,#0d1212)}
@media(max-width:1180px){.cell:nth-child(8n+1):before{font-size:6px;padding:1px}.position-tag{font-size:10px}}

/* 阶段计时器：准备时居中，战斗时移动到棋盘顶部 */
.board-timer{position:absolute;z-index:26;left:50%;margin:0;display:flex;align-items:center;justify-content:center;pointer-events:none;transform-origin:center;transition:top .28s ease,transform .28s ease,opacity .2s ease,background .2s ease;border:2px solid #d7b46c;background:linear-gradient(180deg,#26302eec,#080d0df2);box-shadow:inset 0 0 0 2px #060909,0 6px 18px #000d,0 0 18px #d8ae5857;color:#efe6cf}
.board-timer span{font-weight:700;letter-spacing:1px;opacity:.86}.board-timer b{color:#ffd36d;text-shadow:0 0 11px #e7a93e,0 2px #000;font-family:Consolas,"Microsoft YaHei",monospace;font-variant-numeric:tabular-nums}
.board-timer.phase-prep{top:25%;min-width:224px;min-height:82px;padding:10px 22px;border-radius:8px;transform:translate(-50%,-50%);background:linear-gradient(180deg,#283331ed,#090e0ef3);box-shadow:inset 0 0 0 3px #070a0a,0 8px 24px #000e,0 0 0 5px #725a37a8,0 0 24px #e3b75b69}
.board-timer.phase-prep span{font-size:15px}.board-timer.phase-prep b{margin:0 9px;font-size:42px;line-height:1}.board-timer.phase-prep span:last-child{font-size:13px}
.board-timer.phase-battle{top:10px;min-width:176px;min-height:48px;padding:5px 16px;border-radius:24px;transform:translateX(-50%);border-color:#71d9cd;background:linear-gradient(180deg,#183c38e8,#071110ed);box-shadow:inset 0 0 0 2px #050909,0 5px 16px #000c,0 0 17px #4bdace5c}
.board-timer.phase-battle span{font-size:12px}.board-timer.phase-battle b{margin:0 7px;font-size:28px;color:#8ff5e9;text-shadow:0 0 10px #38cfc2,0 2px #000}.board-timer.phase-battle span:last-child{font-size:11px}
.board-timer.phase-idle,.board-timer.phase-resolve,.board-timer.phase-result{opacity:0;visibility:hidden}
.board-timer.phase-prep.danger{border-color:#ff6f57;background:linear-gradient(180deg,#54231feb,#160b0bf2);box-shadow:inset 0 0 0 3px #090505,0 8px 24px #000e,0 0 0 5px #8c3b30a8,0 0 28px #ff523f8c;animation:prepTimerDanger .65s ease-in-out infinite alternate}.board-timer.phase-prep.danger b{color:#ff9c83;text-shadow:0 0 13px #ff4d39}
.phase-banner.show + .board-timer{opacity:0}
@keyframes prepTimerDanger{to{transform:translate(-50%,-50%) scale(1.045);filter:brightness(1.13)}}
@media(max-height:780px){.board-timer.phase-prep{min-width:198px;min-height:68px}.board-timer.phase-prep b{font-size:34px}.board-timer.phase-battle{top:7px}}
