:root {
  --bg: #090b14;
  --panel: #111522;
  --panel-2: #171b2a;
  --line: rgba(255,255,255,.09);
  --text: #f4f1e8;
  --muted: #8d93a7;
  --gold: #dfb769;
  --gold-2: #f2d38c;
  --violet: #8f7cff;
  --green: #68d5a4;
  --danger: #ef746b;
  --sans: "Noto Sans SC", system-ui, sans-serif;
  --serif: "ZCOOL XiaoWei", "Noto Serif SC", serif;
}
* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; background: var(--bg); color: var(--text); font-family: var(--sans); }
body { overflow-x: hidden; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
.hidden { display: none !important; }
.mobile-block{display:none;min-height:100vh;place-items:center;padding:24px;background:radial-gradient(circle at 50% 20%,rgba(143,124,255,.16),transparent 35%),#090b14;text-align:center}.mobile-block-card{max-width:420px}.mobile-block-piece{font-size:72px;color:var(--gold);filter:drop-shadow(0 0 28px rgba(223,183,105,.3));margin-bottom:28px}.mobile-block h1{font-family:var(--serif);font-size:34px;font-weight:400;line-height:1.35;margin:0 0 18px}.mobile-block p{color:#8d93a7;line-height:1.8;font-size:13px}.mobile-block small{display:block;color:#555c6d;margin-top:30px;letter-spacing:.12em}.mobile-device body>.mobile-block{display:grid}.mobile-device body>:not(.mobile-block){display:none!important}
.ambient { position: fixed; width: 45vw; height: 45vw; border-radius: 50%; filter: blur(130px); opacity: .12; pointer-events: none; z-index: 0; }
.ambient-one { background: #6170ff; right: -15vw; top: -10vw; }
.ambient-two { background: #d6a856; left: -20vw; bottom: -25vw; }
.eyebrow { color: var(--gold); font-size: 10px; letter-spacing: .24em; font-weight: 700; margin: 0 0 10px; }
.muted { color: var(--muted); }

.auth-shell { min-height: 100vh; display: grid; grid-template-columns: 1.15fr .85fr; position: relative; z-index: 1; }
.auth-story { padding: clamp(50px, 7vw, 110px); display: flex; flex-direction: column; justify-content: center; overflow: hidden; position: relative; background: radial-gradient(circle at 15% 30%, rgba(223,183,105,.11), transparent 30%), linear-gradient(135deg, #0b0d16, #111526); }
.auth-story:after { content: "♞"; position: absolute; font-size: 580px; opacity: .025; right: -100px; bottom: -220px; transform: rotate(-12deg); }
.brand-mark { width: 58px; height: 58px; display: grid; place-items: center; border: 1px solid rgba(223,183,105,.35); color: var(--gold); font-size: 30px; margin-bottom: 50px; transform: rotate(45deg); }
.brand-mark::first-line { transform: rotate(-45deg); }
.auth-story h1, .hero-copy h1 { font-family: var(--serif); font-weight: 400; font-size: clamp(48px, 5.3vw, 82px); line-height: 1.08; margin: 0; letter-spacing: -.02em; }
.auth-story h1 em, .hero-copy h1 em { color: var(--gold-2); font-style: normal; }
.story-copy { color: #a6a9b3; max-width: 550px; line-height: 2; font-size: 16px; margin: 30px 0; }
.feature-row { display: flex; gap: 10px; flex-wrap: wrap; }
.feature-row span, .season-tag { border: 1px solid var(--line); background: rgba(255,255,255,.025); border-radius: 30px; padding: 8px 14px; color: #aeb2c0; font-size: 12px; }
.quote-card { margin-top: 65px; border-left: 1px solid var(--gold); padding-left: 22px; display: flex; gap: 10px; color: #8e93a1; font-family: var(--serif); }
.quote-card span { font-size: 42px; color: var(--gold); line-height: 1; }
.quote-card p { margin: 0; line-height: 1.8; }
.auth-panel { display: grid; place-items: center; padding: 35px; background: rgba(7,9,16,.6); backdrop-filter: blur(30px); }
.auth-box { width: min(410px, 100%); }
.mobile-logo { display: none; font-family: var(--serif); font-size: 22px; color: var(--gold); margin-bottom: 45px; }
.auth-box h2 { font-family: var(--serif); font-size: 36px; font-weight: 400; margin: 0 0 8px; }
.auth-box > .muted { margin: 0 0 34px; }
label { color: #b9bdc8; font-size: 12px; font-weight: 600; display: flex; flex-direction: column; gap: 9px; margin-bottom: 18px; }
input, select, textarea { width: 100%; color: var(--text); background: #0b0e18; border: 1px solid var(--line); border-radius: 8px; padding: 13px 14px; outline: none; transition: .2s; }
input:focus, select:focus, textarea:focus { border-color: rgba(223,183,105,.65); box-shadow: 0 0 0 3px rgba(223,183,105,.08); }
.primary-btn, .ghost-btn, .text-btn, .icon-btn { border: 0; color: var(--text); background: transparent; }
.primary-btn { background: linear-gradient(135deg, #d3aa61, #b88239); color: #17120a; border-radius: 8px; padding: 14px 20px; font-weight: 800; display: inline-flex; justify-content: center; align-items: center; gap: 40px; box-shadow: 0 8px 30px rgba(196,145,64,.18); }
.primary-btn:hover { filter: brightness(1.08); transform: translateY(-1px); }
.primary-btn.wide { width: 100%; margin-top: 8px; }
.primary-btn.compact { padding: 10px 16px; gap: 12px; font-size: 12px; }
.text-btn { color: var(--muted); font-size: 12px; padding: 10px 0; }
.text-btn strong { color: var(--gold); }
.auth-box > .text-btn { width: 100%; margin-top: 12px; }
.auth-box>.forgot-btn{margin:5px 0 -8px;text-align:right;color:#858b9a}.code-input{display:grid;grid-template-columns:1fr 105px;gap:7px}.code-input button{border:1px solid rgba(223,183,105,.35);background:rgba(223,183,105,.08);color:var(--gold-2);border-radius:8px;font-size:10px}.code-input button:disabled{opacity:.45;cursor:not-allowed}
.demo-tip { margin-top: 30px; color: #646a7b; font-size: 11px; text-align: center; }
.demo-tip code { color: #9096aa; }
.form-error { color: var(--danger); min-height: 18px; font-size: 12px; }

.app { min-height: 100vh; display: grid; grid-template-columns: 238px 1fr; position: relative; z-index: 1; }
.sidebar { position: fixed; inset: 0 auto 0 0; width: 238px; background: rgba(11,13,22,.92); border-right: 1px solid var(--line); padding: 28px 17px 20px; display: flex; flex-direction: column; z-index: 10; backdrop-filter: blur(22px); }
.logo { display: flex; align-items: center; gap: 13px; padding: 0 10px 35px; }
.logo > span { font-size: 27px; color: var(--gold); }
.logo strong { display: block; font-family: var(--serif); font-size: 20px; letter-spacing: .12em; }
.logo small { font-size: 7px; color: #6f7484; letter-spacing: .14em; }
nav { display: flex; flex-direction: column; gap: 6px; }
.nav-item { border: 0; background: transparent; color: #7e8495; padding: 13px 15px; border-radius: 8px; text-align: left; display: flex; gap: 13px; align-items: center; font-size: 13px; }
.nav-item span { font-size: 18px; width: 20px; text-align: center; }
.nav-item:hover { color: #d8dbe3; background: rgba(255,255,255,.03); }
.nav-item.active { color: var(--gold-2); background: linear-gradient(90deg, rgba(223,183,105,.14), rgba(223,183,105,.02)); box-shadow: inset 2px 0 var(--gold); }
.sidebar-bottom { margin-top: auto; border-top: 1px solid var(--line); padding-top: 18px; }
.user-card { display: grid; grid-template-columns: 37px 1fr 25px; align-items: center; gap: 10px; }
.avatar, .mini-avatar { display: grid; place-items: center; border-radius: 50%; background: linear-gradient(135deg, #d6b46e, #72501e); color: #181207; font-family: var(--serif); }
.avatar { width: 37px; height: 37px; }
.user-card strong, .user-card small { display: block; }
.user-card strong { font-size: 12px; }
.user-card small { color: #686e7e; font-size: 9px; margin-top: 3px; }
.user-card button { border: 0; color: #747a89; background: transparent; }
.content { grid-column: 2; min-width: 0; }
.topbar { height: 84px; border-bottom: 1px solid var(--line); display: flex; align-items: center; padding: 0 34px; justify-content: space-between; background: rgba(9,11,20,.65); backdrop-filter: blur(18px); position: sticky; top: 0; z-index: 8; }
.topbar h2 { margin: 0; font-family: var(--serif); font-size: 20px; font-weight: 400; }
.topbar .eyebrow { margin-bottom: 4px; font-size: 8px; }
.top-actions { display: flex; gap: 13px; align-items: center; }
.icon-btn { border: 1px solid var(--line); width: 31px; height: 31px; border-radius: 50%; color: #9298a6; }
.menu-btn { display: none; }
.view { display: none; padding: 32px 34px 55px; max-width: 1480px; margin: auto; }
.view.active { display: block; animation: rise .35s ease; }
@keyframes rise { from { opacity: 0; transform: translateY(8px); } }

.hero-panel { min-height: 375px; position: relative; overflow: hidden; border: 1px solid rgba(223,183,105,.18); border-radius: 14px; padding: 48px 55px; display: flex; align-items: center; background: radial-gradient(circle at 76% 50%, rgba(129,107,255,.16), transparent 25%), radial-gradient(circle at 85% 50%, rgba(223,183,105,.1), transparent 38%), linear-gradient(120deg,#141827,#10131f); }
.hero-panel:before { content: ""; position: absolute; inset: 0; opacity: .06; background-image: linear-gradient(rgba(255,255,255,.4) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.4) 1px, transparent 1px); background-size: 35px 35px; mask-image: linear-gradient(to right, transparent 40%, #000); }
.hero-copy { position: relative; z-index: 2; max-width: 580px; }
.live-pill { display: inline-flex; align-items: center; gap: 8px; font-size: 10px; color: #aeb3bf; letter-spacing: .12em; margin-bottom: 20px; }
.live-pill i, .status-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--green); box-shadow: 0 0 12px var(--green); }
.hero-copy h1 { font-size: clamp(43px, 4.8vw, 68px); }
.hero-copy p { color: #9da2af; margin: 20px 0 30px; line-height: 1.8; }
.hero-sigil { position: absolute; right: 4%; width: 330px; height: 330px; display: grid; place-items: center; }
.orbit { position: absolute; border: 1px solid rgba(223,183,105,.25); border-radius: 50%; }
.orbit-a { width: 270px; height: 270px; animation: spin 20s linear infinite; border-style: dashed; }
.orbit-b { width: 190px; height: 190px; box-shadow: 0 0 70px rgba(142,124,255,.15); }
.orbit-a:after, .orbit-b:after { content: "✦"; position: absolute; color: var(--gold); top: -8px; left: 50%; }
.sigil-piece { font-size: 125px; color: #e2c27e; filter: drop-shadow(0 20px 25px #000) drop-shadow(0 0 25px rgba(223,183,105,.25)); position: relative; z-index: 2; }
.sigil-star { position: absolute; color: var(--gold); opacity: .7; }.s1{left:10%;top:20%}.s2{right:8%;top:25%}.s3{right:12%;bottom:12%}
@keyframes spin { to { transform: rotate(360deg); } }
.section-heading { display: flex; align-items: end; justify-content: space-between; margin: 34px 0 18px; }
.section-heading h3, .track-head h3, .panel-head h3 { margin: 0; font-family: var(--serif); font-size: 22px; font-weight: 400; }
.ghost-btn { border: 1px solid var(--line); border-radius: 7px; padding: 9px 13px; color: #a1a6b4; font-size: 11px; }
.ghost-btn:hover { border-color: rgba(223,183,105,.4); color: var(--gold-2); }
.stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.stat-card { background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 22px; display: flex; gap: 18px; align-items: center; position: relative; overflow: hidden; }
.stat-card:after { content:""; position:absolute; width: 80px; height: 80px; border-radius:50%; filter:blur(45px); opacity:.18; right:-20px; top:-20px; background:currentColor; }
.stat-icon { font-size: 24px; width: 48px; height: 48px; display: grid; place-items: center; border: 1px solid currentColor; border-radius: 9px; background: rgba(255,255,255,.03); }
.stat-card.amber{color:#e9bb62}.stat-card.violet{color:#9a86ff}.stat-card.blue{color:#62b8e9}
.stat-card div { color: var(--text); }.stat-card small{color:#8f95a5;font-size:10px}.stat-card strong{font-size:27px;display:block}.stat-card p{margin:1px 0;color:#696f7e;font-size:10px}
.unlock-track { margin-top: 16px; border: 1px solid var(--line); border-radius: 10px; background: var(--panel); padding: 23px 26px 28px; }
.track-head { display: flex; justify-content: space-between; align-items: center; }.track-head span{font-size:10px;color:#686e7e}
.track { display: grid; grid-template-columns: repeat(4, 1fr); position: relative; margin-top: 27px; }.track-line{position:absolute;top:8px;left:8%;right:8%;height:1px;background:var(--line)}
.track-node { position: relative; display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center }.track-node:before{content:"";width:15px;height:15px;border-radius:50%;background:#272c3b;border:3px solid var(--panel);box-shadow:0 0 0 1px #3c4253;z-index:1}.track-node.active:before{background:var(--gold);box-shadow:0 0 12px var(--gold)}
.track-node b{font-size:10px;color:#8f95a3}.track-node small{font-size:9px;color:#5f6574}.track-node.locked{opacity:.45}
.rarity{font-size:10px;border-radius:4px;padding:3px 8px}.rarity.common{color:#b7bdc8;background:#303543}.rarity.elite{color:#9ad5ff;background:#15344a}.rarity.epic{color:#bd9aff;background:#322453}.rarity.legendary{color:#ffd56e;background:#4c3715}
.room-hall{display:grid;grid-template-columns:.9fr 1.1fr;gap:16px;margin-top:16px}.room-create,.room-browser{border:1px solid var(--line);border-radius:10px;background:var(--panel);padding:22px}.room-create h3{font-family:var(--serif);font-size:22px;font-weight:400;margin:0}.room-create>div>p:not(.eyebrow){color:#777d8d;font-size:10px;line-height:1.7}.room-form{display:grid;grid-template-columns:1fr 120px auto;gap:8px;margin-top:18px}.room-form input,.room-form select,.join-form input{margin:0;padding:10px;font-size:10px}.join-form{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:8px}.room-browser-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:12px}.room-browser-head strong,.room-browser-head small{display:block}.room-browser-head strong{font-family:var(--serif);font-size:16px}.room-browser-head small{font-size:8px;color:#666d7c;margin-top:3px}.room-list{display:flex;flex-direction:column;gap:7px;max-height:210px;overflow:auto;padding-top:10px}.room-row{display:grid;grid-template-columns:1fr 80px 60px auto;gap:8px;align-items:center;background:#0d101a;border:1px solid rgba(255,255,255,.055);padding:9px 10px;border-radius:7px}.room-row strong,.room-row small{display:block}.room-row strong{font-size:10px}.room-row small{font-size:8px;color:#616877;margin-top:2px}.room-row>span{font-size:8px;color:#9299aa}.room-row .room-code{color:var(--gold);letter-spacing:.12em}.room-row button{border:1px solid #3b4254;background:#222736;color:#ccd0d9;border-radius:5px;padding:5px 8px;font-size:8px}.room-row button:disabled{opacity:.4}.empty-room{font-size:10px;color:#626978;text-align:center;padding:35px}

.game-toolbar { display: flex; justify-content: space-between; align-items: center; border: 1px solid var(--line); border-radius: 9px; padding: 12px 16px; background: var(--panel); margin-bottom: 13px; }
.game-toolbar > div { display:flex;align-items:center;gap:10px}.game-toolbar strong{font-size:12px}.game-toolbar small{font-size:10px;color:#777d8c;border-left:1px solid var(--line);padding-left:10px}.round-actions{display:flex;gap:8px}
.game-layout { display: grid; grid-template-columns: minmax(600px, 1fr) 260px; gap: 14px; }
.battle-column { min-width: 0; }
.player-strip { height: 64px; display:flex;align-items:center;padding:10px 14px;background:#131724;border:1px solid var(--line);gap:10px}.player-strip.enemy{border-radius:9px 9px 0 0}.hand-area{border-radius:0 0 9px 9px}
.mini-avatar{width:38px;height:38px;font-size:12px}.mini-avatar.dark{background:linear-gradient(135deg,#5f6472,#1b1e28);color:#ddd}.mini-avatar.light{background:linear-gradient(135deg,#f1d68f,#9b6b29)}
.player-meta{min-width:120px}.player-meta strong,.player-meta span{display:block}.player-meta strong{font-size:11px}.player-meta span{color:#6e7484;font-size:9px;margin-top:3px}
.resource{margin-left:auto;display:grid;grid-template-columns:75px 105px 25px;align-items:center;gap:8px}.resource small{font-size:8px;color:#777d8c}.resource b{font-size:11px}.bar{height:5px;background:#292e3d;border-radius:4px;overflow:hidden}.bar i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#c65459,#ef8373);transition:.3s}
.resource-chip{font-size:10px;border-left:1px solid var(--line);padding-left:12px;margin-left:5px}.resource-chip.soul{color:#a28cff}.resource-chip.energy{color:#e5b85f}
.board-wrap{position:relative;background:#0c0f18;padding:10px;border-inline:1px solid var(--line)}
.board{width:min(72vh,720px);max-width:100%;aspect-ratio:1;margin:auto;display:grid;grid-template-columns:repeat(8,1fr);border:5px solid #262b3a;box-shadow:0 25px 50px #05060a}
.square{position:relative;display:grid;place-items:center;user-select:none}.square.light{background:#b7ac95}.square.dark{background:#565e67}.square:hover{box-shadow:inset 0 0 0 3px rgba(255,255,255,.28)}.square.selected{box-shadow:inset 0 0 0 4px #f3c766}.square.valid:after{content:"";position:absolute;width:22%;height:22%;border-radius:50%;background:rgba(90,241,168,.68);box-shadow:0 0 15px rgba(90,241,168,.6)}.square.attackable:after{content:"";position:absolute;inset:6%;border-radius:50%;border:4px solid rgba(242,99,91,.8)}
.square.hazard:before{content:"✧";position:absolute;color:#dd73ff;font-size:clamp(15px,2.2vw,28px);text-shadow:0 0 10px #962be4;opacity:.75;z-index:1}
.coord{position:absolute;font-size:8px;font-weight:800;opacity:.55}.coord.rank{top:2px;left:3px}.coord.file{bottom:2px;right:3px}
.piece{width:84%;height:84%;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;z-index:2;font-size:clamp(27px,4vw,52px);line-height:.85;filter:drop-shadow(0 4px 3px rgba(0,0,0,.5));transition:.15s}.piece.white{color:#fff2d0;text-shadow:0 1px #4b3820}.piece.black{color:#252733;text-shadow:0 1px #9ea3af}.piece small{font-family:var(--sans);font-size:7px;background:rgba(11,12,18,.78);color:#fff;border-radius:8px;padding:2px 5px;margin-top:4px;text-shadow:none}.piece.hurt{animation:hit .35s}@keyframes hit{50%{transform:translateX(7px);filter:drop-shadow(0 0 10px red)}}
.target-hint{position:absolute;inset:auto 50% 18px auto;transform:translateX(50%);background:#171b27;border:1px solid var(--gold);color:var(--gold-2);font-size:10px;padding:7px 13px;border-radius:20px;z-index:4}
.hand-area{background:#121622;border:1px solid var(--line);padding:13px}.hand-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.hand-title span{font-size:11px;font-weight:700}.hand-title small{font-size:9px;color:#656b79;margin-left:10px}.hand-title b{font-size:9px;color:#747a89}
.hand{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 7px;min-height:152px}.hand::-webkit-scrollbar{height:4px}.hand::-webkit-scrollbar-thumb{background:#353b4c}
.game-card{flex:0 0 114px;height:148px;border-radius:8px;border:1px solid var(--card-color);background:linear-gradient(160deg,color-mix(in srgb,var(--card-color) 20%,#151925),#10131d 55%);padding:7px;position:relative;overflow:hidden;text-align:left;color:var(--text);box-shadow:0 4px 12px #080a10;transition:.18s}.game-card:hover{transform:translateY(-5px);box-shadow:0 9px 18px #05060a}.game-card.active{transform:translateY(-8px);box-shadow:0 0 0 2px var(--gold),0 10px 20px #05060a}.game-card.disabled{filter:grayscale(.7);opacity:.55}
.card-cost{position:absolute;left:6px;top:6px;width:23px;height:23px;border-radius:50%;display:grid;place-items:center;background:#1c86a2;border:2px solid #a2ecfb;font-size:9px;font-weight:800;z-index:2}.card-soul{position:absolute;right:5px;top:8px;font-size:8px;color:#bda9ff}.game-card-art{height:64px;display:grid;place-items:center;font-size:38px;color:var(--card-color);background:radial-gradient(circle, color-mix(in srgb,var(--card-color) 22%,transparent),transparent 65%)}.game-card-name{font-family:var(--serif);font-size:11px;text-align:center;margin:3px 0}.game-card-desc{font-size:7px;color:#a2a7b3;line-height:1.45;border-top:1px solid var(--line);padding-top:5px}.game-card-rarity{position:absolute;bottom:3px;right:5px;font-size:6px;color:var(--card-color);letter-spacing:.1em}
.battle-side{display:flex;flex-direction:column;gap:13px}.side-card{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:14px}.side-title{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:10px}.side-title span{font-family:var(--serif);font-size:14px}.side-title .text-btn{font-size:9px;padding:0}
.battle-log{height:355px;overflow:auto;padding-top:9px}.log-row{font-size:9px;color:#848a99;padding:7px 2px;border-bottom:1px solid rgba(255,255,255,.035);line-height:1.5}.log-row b{color:#c7cbd4}.log-row.good b{color:var(--green)}.log-row.bad b{color:var(--danger)}.log-row small{display:block;color:#4e5462}
.rules-mini p{display:flex;gap:8px;color:#7e8492;font-size:9px;line-height:1.6}.rules-mini i{font-style:normal;color:var(--gold);border:1px solid rgba(223,183,105,.3);width:17px;height:17px;display:grid;place-items:center;border-radius:50%;flex:none}
.online-chat .side-title small{color:var(--green);font-size:8px}.chat-log{height:120px;overflow:auto;padding:8px 0}.chat-line{font-size:8px;color:#808797;padding:3px 0}.chat-line b{color:#c9cdd6}.chat-form{display:grid;grid-template-columns:1fr auto;gap:5px}.chat-form input{padding:7px;font-size:9px}.chat-form button{border:0;border-radius:5px;background:#333a4d;color:#d8dbe2;font-size:8px}

.collection-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.collection-head p{font-size:12px;color:#858b9a}.collection-head strong{color:var(--gold)}.filter-tabs{display:flex;background:#111522;border:1px solid var(--line);padding:3px;border-radius:8px}.filter-tabs button{border:0;background:transparent;color:#7a8090;font-size:10px;padding:7px 13px;border-radius:6px}.filter-tabs button.active{background:#2a2f3e;color:#eee}
.deck-builder{display:flex;justify-content:space-between;align-items:center;border:1px solid rgba(223,183,105,.2);background:linear-gradient(90deg,rgba(223,183,105,.09),rgba(143,124,255,.05));border-radius:10px;padding:16px 20px;margin:-10px 0 22px}.deck-builder h3{font-family:var(--serif);font-weight:400;margin:0}.deck-builder h3 span{font-family:var(--sans);font-size:10px;color:var(--gold);margin-left:8px}.deck-builder small{color:#777d8d;font-size:9px}.deck-actions{display:flex;gap:12px;align-items:center}
.card-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:18px}.gallery-card{height:300px;border:1px solid color-mix(in srgb,var(--card-color) 55%,#444);border-radius:13px;background:linear-gradient(160deg,color-mix(in srgb,var(--card-color) 17%,#171b29),#0d1019 58%);padding:12px;position:relative;overflow:hidden;transition:.2s}.gallery-card:hover{transform:translateY(-4px);box-shadow:0 18px 35px #05060c}.gallery-card .game-card-art{height:145px;font-size:75px;border-radius:8px;border:1px solid rgba(255,255,255,.06);background-color:rgba(0,0,0,.12);background-position:center;background-size:cover}.gallery-card h3{font-family:var(--serif);font-weight:400;text-align:center;margin:12px 0 7px}.gallery-card p{font-size:9px;color:#8d93a1;line-height:1.65;margin:0;border-top:1px solid var(--line);padding-top:8px}.gallery-card .costs{position:absolute;top:19px;left:19px;display:flex;gap:5px}.gallery-card .costs span{background:#172b37;border:1px solid #4aacc3;border-radius:20px;padding:4px 8px;font-size:9px}.gallery-card .rarity{position:absolute;right:17px;bottom:14px}.locked-card{filter:grayscale(.7);opacity:.55}.locked-card:after{content:"暂未开放";position:absolute;inset:0;display:grid;place-items:center;background:rgba(5,6,10,.45);font-size:14px;letter-spacing:.15em}
.gallery-card.in-deck{box-shadow:0 0 0 2px var(--gold),0 14px 30px #05060b}.deck-toggle{position:absolute;left:14px;bottom:12px;border:1px solid rgba(255,255,255,.18);background:#202535;color:#aeb4c1;border-radius:5px;padding:5px 8px;font-size:8px;z-index:3}.in-deck .deck-toggle{background:var(--gold);color:#17120a;border-color:var(--gold);font-weight:800}

.admin-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:16px}.admin-panel{border:1px solid var(--line);border-radius:11px;background:var(--panel);padding:20px}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.admin-card-list{display:flex;flex-direction:column;gap:7px;max-height:680px;overflow:auto}.admin-card-row{display:grid;grid-template-columns:38px 1fr 70px 62px 65px;align-items:center;gap:10px;background:#0e111b;border:1px solid rgba(255,255,255,.06);border-radius:7px;padding:8px}.admin-card-row .art{width:36px;height:36px;display:grid;place-items:center;border-radius:5px;background:color-mix(in srgb,var(--color) 18%,#171a24);color:var(--color);font-size:20px}.admin-card-row strong,.admin-card-row small{display:block}.admin-card-row strong{font-size:10px}.admin-card-row small{font-size:8px;color:#686e7c;margin-top:3px}.admin-card-row>span{font-size:9px;color:#888e9c}.row-actions{display:flex;gap:4px}.row-actions button{background:#232837;border:0;color:#aeb3bf;border-radius:4px;font-size:9px;padding:5px}.row-actions .delete{color:#ed847a}
.unit-config{display:flex;flex-direction:column;gap:7px}.unit-row{display:grid;grid-template-columns:35px 1fr 80px 80px;align-items:center;gap:8px;background:#0e111b;padding:8px;border-radius:7px}.unit-row>span{font-size:24px;color:var(--gold)}.unit-row strong{font-size:10px}.unit-row label{margin:0;font-size:8px;gap:3px}.unit-row input{padding:7px;font-size:10px}.rule-config{border-top:1px solid var(--line);margin-top:18px;padding-top:13px}.rule-config h4{font-family:var(--serif);font-weight:400;margin:0 0 13px}.input-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.input-grid label{margin-bottom:12px}.span-2{grid-column:span 2}.checkbox{flex-direction:row;align-items:center}.checkbox input{width:auto}

dialog{width:min(600px,calc(100% - 30px));background:#131724;color:var(--text);border:1px solid #353b4b;border-radius:12px;padding:0;box-shadow:0 30px 100px #000}dialog::backdrop{background:rgba(3,4,8,.78);backdrop-filter:blur(4px)}dialog form{padding:24px}.dialog-head,.dialog-actions{display:flex;justify-content:space-between;align-items:center}.dialog-head h3{font-family:var(--serif);font-size:24px;font-weight:400;margin:0}.dialog-close{background:transparent;border:0;color:#8c92a0;font-size:25px}.dialog-actions{justify-content:flex-end;gap:8px;border-top:1px solid var(--line);padding-top:15px}.toast{position:fixed;right:24px;bottom:24px;padding:11px 16px;border-radius:7px;background:#222837;border:1px solid #3d455a;color:#e7e9ee;font-size:11px;z-index:30;opacity:0;transform:translateY(10px);pointer-events:none;transition:.25s}.toast.show{opacity:1;transform:none}.toast.error{border-color:#a94f4c;color:#ffaaa4}

@media(max-width:1050px){.hero-sigil{opacity:.5;right:-5%}.game-layout{grid-template-columns:1fr}.battle-side{display:grid;grid-template-columns:1fr 1fr}.battle-log{height:160px}.admin-grid{grid-template-columns:1fr}.game-card{flex-basis:108px}.room-hall{grid-template-columns:1fr}}
@media(max-width:760px){.auth-shell{grid-template-columns:1fr}.auth-story{display:none}.auth-panel{min-height:100vh}.mobile-logo{display:block}.app{display:block}.sidebar{transform:translateX(-100%);transition:.25s}.sidebar.open{transform:none}.content{grid-column:auto}.topbar{padding:0 17px;height:70px}.menu-btn{display:block;border:0;background:transparent;color:#bbb;font-size:20px}.season-tag{display:none}.view{padding:18px 12px 40px}.hero-panel{padding:30px 24px;min-height:350px}.hero-sigil{opacity:.2;right:-35%}.stats-grid{grid-template-columns:1fr}.track{grid-template-columns:1fr;gap:15px}.track-line{display:none}.track-node{display:grid;grid-template-columns:20px 70px 70px 1fr;text-align:left}.track-node:before{grid-row:1;grid-column:1}.room-form{grid-template-columns:1fr}.room-row{grid-template-columns:1fr 55px auto}.room-row>span:nth-of-type(2){display:none}.game-toolbar{align-items:flex-start}.game-toolbar>div:first-child{align-items:flex-start;flex-wrap:wrap}.game-toolbar small{width:100%;border:0;padding:0}.game-layout{display:block}.battle-side{margin-top:12px;grid-template-columns:1fr}.board-wrap{padding:5px}.board{width:100%}.resource{grid-template-columns:65px 60px 23px}.resource-chip{display:none}.player-meta{min-width:90px}.piece{font-size:8vw}.deck-builder{align-items:flex-start;gap:12px}.card-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.gallery-card{height:250px;padding:8px}.gallery-card .game-card-art{height:115px}.collection-head{align-items:flex-start;gap:12px;flex-direction:column}.filter-tabs{max-width:100%;overflow:auto}.admin-card-row{grid-template-columns:35px 1fr 50px 65px}.admin-card-row>span:nth-of-type(2){display:none}.input-grid{grid-template-columns:1fr}.span-2{grid-column:auto}}

.turn-timer{font-variant-numeric:tabular-nums;color:var(--gold-2);font-size:12px;letter-spacing:.08em;border:1px solid rgba(223,183,105,.22);padding:5px 8px;border-radius:6px}.turn-timer.urgent{color:#ff8c82;border-color:#9d4d4a;animation:pulse-timer .8s infinite alternate}@keyframes pulse-timer{to{box-shadow:0 0 15px rgba(239,116,107,.35)}}
.discard-card-action{position:absolute;inset:auto 5px 5px 5px;background:#9b3f3b;color:#fff;text-align:center;border-radius:4px;padding:5px;font-size:8px;font-weight:700;box-shadow:0 4px 12px #000}
.tactical-context .side-title small{font-size:8px;color:#9b8cff}.equipment-drawer{padding-top:10px}.equipment-drawer p{font-size:9px;color:#6f7584;line-height:1.6;margin:3px 0}.equipment-head{display:flex;justify-content:space-between;font-size:10px;margin-bottom:8px}.equipment-head span{color:var(--gold)}.equipment-item{padding:7px 8px;margin-top:6px;border:1px solid rgba(223,183,105,.14);background:#0d1019;border-radius:6px}.equipment-item b,.equipment-item small{display:block}.equipment-item b{font-size:9px;color:#e6d3a5}.equipment-item small{font-size:7px;color:#777e8e;margin-top:3px;line-height:1.5}.secret-mark{font-size:8px;color:#d18cff;margin-top:9px}
.collection-tools{display:flex;align-items:center;gap:8px}.collection-tools input,.collection-tools select{width:auto;margin:0;padding:9px 10px;font-size:9px}.collection-tools input{width:190px}.load-more{display:block;margin:24px auto 0;min-width:160px}
.hero-actions{display:flex;align-items:center;gap:10px}.hero-actions .ghost-btn{padding:13px 18px}
.deck-tabs{display:flex;gap:5px;margin:5px 0 9px}.deck-tabs button{border:1px solid var(--line);background:#0e111b;color:#777e8d;border-radius:5px;padding:5px 11px;font-size:9px}.deck-tabs button.active{color:#16120b;background:var(--gold);border-color:var(--gold)}
#deck-name{width:135px;margin:0;padding:5px 7px;border-color:transparent;background:rgba(0,0,0,.17);font-family:var(--serif);font-size:16px;color:#eee}.deck-card-controls{position:absolute;left:12px;bottom:10px;display:flex;align-items:center;gap:4px;z-index:3}.deck-card-controls .deck-toggle{position:static;min-width:25px;padding:5px 7px}.deck-card-controls .remove{background:#252a37;color:#aaa}.deck-card-controls button:disabled{opacity:.35}.deck-card-controls b{min-width:19px;text-align:center;font-size:9px;color:var(--gold-2)}
.tutorial-dialog{width:min(900px,calc(100% - 36px));overflow:hidden}.tutorial-dialog .tutorial-shell{position:relative;padding:0}.tutorial-close{position:absolute;right:16px;top:12px;z-index:3}.tutorial-progress{height:52px;padding:18px 58px 0 24px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);font-size:9px;color:#787f90}.tutorial-progress>div{display:flex;gap:5px}.tutorial-progress i{width:18px;height:3px;border-radius:3px;background:#303544}.tutorial-progress i.active{background:var(--gold);box-shadow:0 0 9px rgba(223,183,105,.5)}#tutorial-content{display:grid;grid-template-columns:1.05fr .95fr;min-height:430px}.tutorial-visual{min-height:430px;background:#090b12}.tutorial-visual img{width:100%;height:100%;display:block;object-fit:cover}.tutorial-copy{padding:52px 45px}.tutorial-copy h2{font-family:var(--serif);font-size:34px;font-weight:400;margin:9px 0 18px}.tutorial-copy>p:not(.eyebrow){color:#a0a6b4;font-size:13px;line-height:1.9}.tutorial-copy ul{padding:18px 0 0;margin:20px 0 0;border-top:1px solid var(--line);list-style:none}.tutorial-copy li{position:relative;padding:8px 0 8px 20px;color:#858c9b;font-size:10px;line-height:1.5}.tutorial-copy li:before{content:"✦";position:absolute;left:0;color:var(--gold)}.tutorial-actions{height:66px;padding:12px 20px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line)}.tutorial-actions button:disabled{opacity:.3;cursor:not-allowed}
@media(max-width:760px){#tutorial-content{grid-template-columns:1fr}.tutorial-visual{min-height:220px;height:220px}.tutorial-copy{padding:28px 25px}.tutorial-copy h2{font-size:27px}.hero-actions{align-items:flex-start;flex-direction:column}}
