/* 香肠幻想棋：幻域主题 */
:root{--ink:#f6f0ff;--muted:#aaa1c7;--cream:#1a1730;--panel:#19162d;--blue:#7c6cff;--deep:#9e8cff;--mint:#59e0cd;--coral:#ff6d91;--yellow:#f4d478;--violet:#a26cff;--shadow:0 18px 50px rgba(4,2,20,.55)}
html,body{background:#09081b;color:var(--ink)}
body:before{background:radial-gradient(circle at 8% 16%,#8b57e9 0 1px,transparent 2px),radial-gradient(circle at 76% 22%,#f3dc8e 0 1px,transparent 2px),radial-gradient(circle at 42% 72%,#61d9e8 0 1px,transparent 2px),radial-gradient(circle at 18% 28%,rgba(113,71,194,.28),transparent 28%),radial-gradient(circle at 82% 17%,rgba(43,149,184,.22),transparent 24%),linear-gradient(165deg,#0b0a22 0,#171038 48%,#071725 100%);background-size:90px 90px,130px 130px,170px 170px,auto,auto,auto;opacity:1}
body:after{content:"";position:fixed;inset:-30%;pointer-events:none;background:conic-gradient(from 30deg at 50% 50%,transparent 0 18%,rgba(139,99,232,.05) 20%,transparent 23% 48%,rgba(80,220,210,.04) 50%,transparent 54%);animation:auroraSpin 45s linear infinite}
.sky-orb{filter:blur(4px);opacity:.42}.orb-one{background:#6b42d9;box-shadow:0 0 90px #9b68ff}.orb-two{background:#28b7b0;box-shadow:0 0 80px #49e5d0}
.topbar,.panel,.arena-panel,.bottom-dock{background:linear-gradient(155deg,rgba(34,28,64,.96),rgba(15,17,39,.95));border:1px solid rgba(226,195,111,.48);box-shadow:var(--shadow),inset 0 1px rgba(255,255,255,.08);backdrop-filter:blur(18px)}
.topbar{border-radius:18px;position:relative}.topbar:after{content:"";position:absolute;left:275px;right:265px;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,#e4c772,transparent)}
.brand-mark{background:radial-gradient(circle at 35% 30%,#baffff,#7657ec 42%,#3a225f 70%);color:#fff7c7;border:1px solid #e5ca79;box-shadow:0 0 20px #8569e99c;clip-path:polygon(50% 0,72% 25%,100% 50%,72% 75%,50% 100%,28% 75%,0 50%,28% 25%)}
.brand b{font-family:Georgia,"Microsoft YaHei",serif;color:#fff5d0;text-shadow:0 0 12px #bc83ff}.brand small{color:#b9a7de}.round-card{background:linear-gradient(180deg,#2e2752,#1d193b);border:1px solid #8b74c8;box-shadow:inset 0 0 18px #8f61db29}.round-card b{color:#d9c5ff}.timer{background:linear-gradient(180deg,#17142b,#0e0c1e);border:1px solid #c6a95a;box-shadow:inset 0 0 12px #d9c2641c}.timer b{color:#f8de80;text-shadow:0 0 9px #f4c952}.icon-btn{background:#2a2448;color:#dbcdf7;border:1px solid #554878}.icon-btn:hover{background:#41356d;color:#fff4c8}
.commander{border-bottom-color:#54446c}.commander-avatar{background:radial-gradient(circle at 45% 40%,#9cfaf0,#6c4dc5 47%,#25183e 70%);border:1px solid #dbc574;box-shadow:0 0 18px #5de1d16e}.commander small,.section-title span,.dock-label span,.shop-head small{color:#9f96ba}.commander strong{color:#ff8aa7}.hp-line{background:#100e22;border:1px solid #493859}.hp-line i{background:linear-gradient(90deg,#d8467b,#ff9a80);box-shadow:0 0 9px #ff658a}.resource-row span{background:#25203f;border:1px solid #504469;color:#ede4ff}.xp-wrap>i{background:#100e22}.xp-wrap em{background:linear-gradient(90deg,#6557ec,#69ded4);box-shadow:0 0 8px #76dcd4}.wide-btn{background:linear-gradient(180deg,#332953,#211b3c);border-color:#5c4c7d;color:#e4d9fb}.wide-btn:hover{border-color:#d3b965}.wide-btn span{color:#f0d179}.section-title b{color:#f5e9ff;font-family:Georgia,"Microsoft YaHei",serif;letter-spacing:.5px}
.visual-code{display:flex;flex-direction:column;gap:4px;margin:-2px 0 8px;padding:6px;background:#120f25;border:1px solid #403554;border-radius:10px}.code-row{display:flex;align-items:center;gap:4px;min-width:0}.code-row small{width:25px;flex:0 0 25px;color:#8e83aa;font-size:7px}.code-row span{position:relative;padding-left:9px;font-size:7px;color:#d8cfea;white-space:nowrap}.code-row span:before{content:"";position:absolute;left:0;top:50%;width:6px;height:6px;border-radius:50%;background:var(--sw);transform:translateY(-50%);box-shadow:0 0 5px var(--sw)}
.trait-list{max-height:calc(100% - 292px)}.trait{background:#17142b;border-color:#302944;filter:saturate(.5);opacity:.65}.trait.active{background:linear-gradient(100deg,#312554,#222044);border-color:#a98cd7;box-shadow:inset 3px 0 #e2c46e,0 0 12px #744bc429;filter:none;opacity:1}.trait-icon{background:#292242;border:1px solid #594a79}.trait small{color:#a79cbd}.trait strong{color:#f1d478}
.arena-panel{background:linear-gradient(160deg,rgba(25,20,52,.96),rgba(10,20,39,.96));position:relative}.arena-panel:before,.arena-panel:after{content:"✧";position:absolute;color:#d9be6e;opacity:.5;font-size:18px}.arena-panel:before{left:9px;top:7px}.arena-panel:after{right:9px;bottom:7px}.enemy-banner{color:#aaa0bf}.enemy-banner b{color:#ff87a1}.danger-dot{background:#ff5c8a;box-shadow:0 0 9px #ff5c8a}
.battlefield{background:radial-gradient(circle at 50% 50%,rgba(114,79,208,.38),transparent 38%),linear-gradient(180deg,rgba(87,46,126,.8) 0 49.5%,rgba(18,94,100,.78) 50.5% 100%);border-color:#2a214c;box-shadow:inset 0 0 0 2px #9f83d0,inset 0 0 55px #0a081c,0 8px 28px #05030e;border-radius:18px}
.battlefield:before{content:"✦";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;place-items:center;width:170px;height:170px;border:1px solid #d7c06c59;border-radius:50%;color:#e7cf78;font-size:45px;text-shadow:0 0 18px #e8c957;box-shadow:inset 0 0 35px #9a70de28,0 0 30px #7f5dcc26;pointer-events:none}
.cell{border-color:rgba(217,193,117,.24);background:rgba(58,39,97,.28);border-radius:10px}.cell.enemy-zone:nth-child(odd){background:rgba(136,54,116,.18)}.cell.player-zone{background:rgba(33,132,132,.16)}.cell.player-zone:hover{background:rgba(94,233,216,.16);box-shadow:inset 0 0 0 2px #71e1d0}.board-caption{color:#81799a}.board-caption span:last-child{color:#6de0d0}.board-caption b{color:#e7d07d}.primary-btn{background:linear-gradient(135deg,#785be3,#377ecb);border:1px solid #b49af5;box-shadow:0 7px 18px #5a3cc864,inset 0 1px rgba(255,255,255,.18)}.sell-btn{background:#2d1d36;color:#ff9dba;border:1px solid #643552}.unit-portrait{border-color:#d9c472;box-shadow:0 0 0 2px #5c4783,0 7px 14px #050310,0 0 14px #8b65e566}.unit-token.enemy .unit-portrait{border-color:#ef7f9b;box-shadow:0 0 0 2px #6d2e55,0 7px 14px #050310}.unit-nameplate{background:linear-gradient(180deg,#342a54,#161329);border:1px solid #7f69a5;color:#fff8df}.healthbar{background:#171326;border-color:#d7c782}.manabar{background:#1f1a32}.manabar i{background:#6bbcff;box-shadow:0 0 5px #6bbcff}
.round-node{background:#201b38;color:#79708e;border:1px solid #342b4e}.round-node.done{background:#1e504d;color:#8ae4cc;border-color:#397a72}.round-node.current{background:#634d28;color:#fff1a9;border-color:#e0bf64;box-shadow:0 0 12px #dbb95866}.round-node.boss{background:#4a1f40;color:#ff99bd;border-color:#7f345f}.selected-card{background:linear-gradient(145deg,#241d45,#14182c);border-color:#59497e}.empty-state{color:#817891}.detail-portrait{border:1px solid #cbb56f;box-shadow:0 0 12px #9271dc55}.cost-dot{background:#4d3f25;color:#ffe492;border:1px solid #8a7139}.tag{background:#29213f;color:#d9ccef;border:1px solid #493c66}.skill-box{background:#100e21;color:#bfb4d0;border:1px solid #372d4d}.skill-box b{color:#d8c0ff}.battle-log{background:linear-gradient(180deg,#0d0b1b,#131025);border:1px solid #382e50;color:#c9c0d7}.log-item{border-bottom-color:#8f78b91a}.log-item b{color:#f3d375}.log-item.good{color:#83e1ce}.log-item.bad{color:#ff91ad}
.bottom-dock{background:linear-gradient(180deg,rgba(27,23,51,.98),rgba(12,13,29,.98))}.bench-slot{background:#121022;border-color:#514466}.bench-slot:before{content:"✦";position:absolute;inset:0;display:grid;place-items:center;color:#53476d;font-size:13px}.mini-unit{z-index:1}.mini-portrait,.shop-portrait{box-shadow:inset 0 0 0 1px #a98f52}.mini-name{background:#171329ee;border:1px solid #584878;color:#fff3ce}.shop-head button{background:#29213f;color:#d9cdec;border:1px solid #4b3d67}.shop-head button.locked{background:#4b3c24;color:#f8db7b;border-color:#8c7036}.shop-card{background:#17142b;color:#eee6ff;box-shadow:inset 0 0 16px #8c63ce1f}.shop-card:hover:not(:disabled){box-shadow:0 7px 18px #05030f,inset 0 0 20px #906ddb33}.shop-info small{color:#a99dbd}.shop-cost{background:#3f3420;color:#ffe294;border:1px solid #76602f}.reroll-btn{background:linear-gradient(160deg,#7756d4,#3d8ab0);color:#fff3d3;border:1px solid #d7be70;box-shadow:0 8px 19px #38248680,inset 0 1px #ffffff55}
.modal{background:rgba(4,3,15,.82)}.modal-card{background:linear-gradient(150deg,#292148,#121329);border:1px solid #dfc36e;box-shadow:0 28px 90px #000c,0 0 45px #8058c843}.start-card:before,.result-card:before{content:"";position:absolute;inset:9px;border:1px solid #d5bd654f;border-radius:21px;pointer-events:none}.title-creature{background:radial-gradient(circle,#a5fff1,#7957db 45%,#24163d 70%);border-color:#e0c46c;box-shadow:0 0 30px #8b63dc}.start-card h1{background:linear-gradient(135deg,#fff1b3,#c6a7ff,#68e4d5);-webkit-background-clip:text}.start-card>p:not(.eyebrow),.result-card p{color:#bbb0cf}.rule-chips span,.quick-rules div,.help-grid div,.result-stats span{background:#18152d;border:1px solid #3f3557}.quick-rules b{background:#32294e;color:#f3d678}.modal-close{background:#302747;color:#dfd0ef}.help-grid b{color:#e5cb78}.help-grid p{color:#b7acc7}.result-card h2{color:#fff1bd}
@keyframes auroraSpin{to{transform:rotate(360deg)}}

/* ── 8列战场与商店层级 ───────────────────────────────────── */
body{font-size:15px}.main-grid{grid-template-columns:260px minmax(650px,1fr) 275px}.bottom-dock{height:142px;grid-template-columns:132px minmax(560px,1fr) 132px;gap:12px;padding:11px 14px}.arena-panel{padding:9px 13px}.battlefield{grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(6,1fr);gap:4px;min-height:315px}.board-caption{height:21px}.bench-inline{height:86px;margin:0 5px 7px;padding:6px 8px 8px;border:1px solid #6a5887;border-radius:13px;background:linear-gradient(180deg,#18142b,#0d0c1b);box-shadow:inset 0 0 18px #835bd023,0 6px 15px #0005}.bench-label{height:20px;display:flex;align-items:center;gap:9px;color:#e8dcf6}.bench-label b{font-size:12px;color:#f1d379}.bench-label span{font-size:10px;color:#8f84a8}.bench-label em{margin-left:auto;font-style:normal;font-size:11px;color:#73ddce}.bench{height:53px;grid-template-columns:repeat(8,1fr);gap:5px}.bench-slot{border-radius:8px;border-style:solid}.bench-slot.selected{box-shadow:0 0 0 2px #f1d16e,0 0 13px #f1d16e80}.mini-unit{inset:2px}.mini-name{font-size:9px;padding:2px}.battle-controls{height:34px}.battle-controls button{font-size:12px;padding:7px 18px}
.shop-wrap{min-width:0}.shop-head{height:28px}.shop-head b{font-size:15px}.shop-head small{font-size:10px}.shop-head button{font-size:10px;padding:5px 9px}.shop{height:91px;gap:8px}.shop-card{grid-template-columns:47% 53%;border-width:2px}.shop-info{padding:7px 5px}.shop-info b{font-size:12px}.shop-info small{font-size:10px;line-height:1.25}.shop-cost{font-size:11px;padding:3px 5px}.economy-btn{align-self:28px;height:91px;border-radius:14px;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:1px solid;box-shadow:0 8px 19px #0006,inset 0 1px #ffffff4d}.economy-btn span{font-size:13px;font-weight:700}.economy-btn b{font-size:15px}.economy-btn small{font-size:9px;opacity:.78}.xp-action{background:linear-gradient(155deg,#318b7e,#22627a);border-color:#71e1ce}.xp-action:hover:not(:disabled){filter:brightness(1.14);box-shadow:0 8px 22px #1db9a84f}.reroll-btn{align-self:28px;height:91px;background:linear-gradient(155deg,#7756d4,#5535a3);border-color:#b69af2;color:#fff}.reroll-btn:hover:not(:disabled){filter:brightness(1.14);box-shadow:0 8px 22px #7b55d76b}

/* ── 更大的信息与棋子 ─────────────────────────────────────── */
.brand b{font-size:23px}.round-card span{font-size:14px}.round-card b{font-size:16px}.timer span{font-size:12px}.resource-row span{font-size:14px;padding:8px 10px}.commander b{font-size:16px}.commander small{font-size:11px}.xp-wrap>div{font-size:11px}.section-title b{font-size:16px}.section-title span{font-size:10px}.trait{padding:8px 9px;gap:8px}.trait-icon{width:30px;height:30px;font-size:16px}.trait b{font-size:13px}.trait small{font-size:10px}.trait strong{font-size:12px}.enemy-banner{font-size:12px}.board-caption{font-size:10px}.board-caption b{font-size:12px}.selected-card{min-height:169px}.detail-head h3{font-size:17px}.tag,.cost-dot{font-size:10px}.skill-box{font-size:11px}.battle-log{font-size:11px}.round-node{font-size:10px}.unit-token{inset:-5px;overflow:visible}.unit-portrait{width:min(82px,108%);border-width:3px}.unit-nameplate{font-size:10px;padding:3px 6px;bottom:-3px}.healthbar{top:1px;left:5%;width:90%;height:8px;border-width:1px;z-index:5;box-shadow:0 2px 4px #0008}.manabar{top:10px;height:4px;z-index:5}.shield-mark{top:14px;right:0}.cell{overflow:visible}.battlefield{overflow:hidden}

/* ── 攻击反馈 ─────────────────────────────────────────────── */
.unit-token.melee-attacking .unit-portrait{animation:meleeLunge .32s cubic-bezier(.2,.8,.25,1)}.unit-token.cast-attacking .unit-portrait{animation:spellCast .42s ease-out}.unit-token.hit-react .unit-portrait{animation:hitReact .25s ease-out}.attack-projectile{position:absolute;z-index:12;width:22px;height:7px;border-radius:999px;pointer-events:none;transform:translate(-50%,-50%) rotate(var(--angle));background:linear-gradient(90deg,transparent,#f7e08a 42%,#fff 78%);box-shadow:0 0 8px #f7d76c,0 0 16px #f0c84c;filter:drop-shadow(-6px 0 3px #f4ce6388)}.attack-projectile:after{content:"";position:absolute;right:-4px;top:50%;transform:translateY(-50%);border-left:7px solid #fff4bd;border-top:5px solid transparent;border-bottom:5px solid transparent}.attack-projectile.enemy{filter:hue-rotate(285deg) drop-shadow(-6px 0 3px #ff639888)}.attack-projectile.spell{width:17px;height:17px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#a883ff 35%,#5927bd 70%);box-shadow:0 0 12px #bb8dff,0 0 25px #6c32d9}.attack-projectile.spell:after{display:none}.attack-projectile.gear{width:16px;height:16px;border:3px dotted #ffc55e;background:#8b5926;box-shadow:0 0 10px #ffb43f;animation:gearSpin .18s linear infinite}.attack-projectile.gear:after{display:none}
@keyframes meleeLunge{0%{transform:translateY(0) scale(1)}45%{transform:translateY(-13px) scale(1.16) rotate(-4deg);filter:brightness(1.35)}100%{transform:translateY(0) scale(1)}}@keyframes spellCast{0%{transform:scale(1)}45%{transform:scale(1.18);filter:brightness(1.7) drop-shadow(0 0 10px #b487ff)}100%{transform:scale(1)}}@keyframes hitReact{35%{transform:translateX(5px) rotate(4deg);filter:brightness(1.8) sepia(.7) saturate(3)}70%{transform:translateX(-3px) rotate(-3deg)}}@keyframes gearSpin{to{transform:translate(-50%,-50%) rotate(calc(var(--angle) + 180deg))}}

/* ── Hover 属性面板 ───────────────────────────────────────── */
.hover-tooltip{position:fixed;z-index:80;width:286px;display:none;padding:13px;background:linear-gradient(150deg,#2a2148,#101225);border:1px solid #ddc36f;border-radius:13px;box-shadow:0 18px 45px #000b,0 0 22px #7d59c84d;color:#eee7ff;pointer-events:none}.hover-tooltip.open{display:block}.hover-head{display:grid;grid-template-columns:54px 1fr;gap:10px;align-items:center}.hover-portrait{width:54px;height:54px;border-radius:10px;background-repeat:no-repeat;border:1px solid #cfb76d}.hover-head strong{display:block;color:#fff1bc;font-size:16px}.hover-head span{display:block;margin-top:4px;color:#a99dbc;font-size:11px}.hover-tags{display:flex;flex-wrap:wrap;gap:4px;margin:9px 0}.hover-tags i{font-style:normal;font-size:10px;padding:3px 6px;border-radius:6px;background:#302747;border:1px solid #55446f}.hover-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.hover-stats span{padding:5px 3px;text-align:center;background:#111020;border-radius:7px;color:#9f94b5;font-size:9px}.hover-stats b{display:block;margin-top:2px;color:#f0e7fa;font-size:12px}.hover-skill{margin-top:8px;padding:8px;background:#151128;border-left:3px solid #9c77e8;border-radius:7px}.hover-skill b{color:#dbc3ff;font-size:12px}.hover-skill p{margin:4px 0 0;color:#bcb1cc;font-size:10px;line-height:1.5}.trait-hover-title{display:flex;align-items:center;gap:9px}.trait-hover-title>span{display:grid;place-items:center;width:42px;height:42px;border-radius:11px;background:#372b56;font-size:21px}.trait-hover-title strong{display:block;color:#fff1bc;font-size:16px}.trait-hover-title small{display:block;color:#a99dbc;font-size:10px}.trait-levels{display:flex;flex-direction:column;gap:5px;margin-top:10px}.trait-levels div{display:grid;grid-template-columns:28px 1fr;gap:7px;align-items:center;padding:6px;background:#151227;border-radius:7px;color:#847a96}.trait-levels div.active{background:#34294c;color:#f2df9f;box-shadow:inset 2px 0 #e2c56d}.trait-levels b{font-size:12px}.trait-levels span{font-size:11px}.hover-note{margin:9px 0 0;color:#8f85a2;font-size:9px;line-height:1.45}
@media(max-height:780px){.game-shell{height:760px}.bottom-dock{height:134px}.shop,.economy-btn{height:84px}.bench-inline{height:78px}.bench{height:47px}.selected-card{min-height:150px}.trait-list{max-height:220px}}
