/* 黑金翡翠：墨黑底 · 香槟金细线 · 翡翠绿点缀 · 火焰色只留给对战 */
@font-face{font-family:"PHT";src:url(/fonts/pht-bold.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"PHT";src:url(/fonts/pht-heavy.woff2) format("woff2");font-weight:900;font-display:swap}
:root{
 --bg:#08090b;--surface:rgba(255,255,255,.04);--surface2:rgba(255,255,255,.07);
 --line:rgba(214,178,106,.2);--line2:rgba(214,178,106,.5);--hair:rgba(255,255,255,.07);
 --gold:#d6b26a;--gold-hi:#f4e0ad;--gold-lo:#8f6f35;--jade:#38d2a4;--jade-d:#1f8f72;
 --fire:#ff6a2e;--fire2:#ff3d2e;--tx:#f4efe4;--mut:#a39c8d;--dim:#6f6a5e;--bad:#ff6b6b;
 --disp:"PHT","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
 --body:-apple-system,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;
 --goldtxt:linear-gradient(180deg,#fbeec8 0%,#e0bc72 48%,#a07a38 100%);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;color:var(--tx);font-family:var(--body);-webkit-font-smoothing:antialiased}
body{min-height:100vh;background:
 radial-gradient(760px 380px at 50% -90px,rgba(214,178,106,.17),transparent 70%),
 radial-gradient(620px 420px at 100% 100%,rgba(56,210,164,.08),transparent 70%),
 radial-gradient(520px 360px at 0% 85%,rgba(255,106,46,.05),transparent 70%),
 linear-gradient(#08090b,#0c0d10) fixed}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.05;
 background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .6 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}
.wrap,#app{position:relative;z-index:1}
h1,h2,h3{margin:0;font-weight:inherit}
.wrap{max-width:540px;margin:0 auto;padding:16px 16px 120px}

/* 主办方铭牌：浅色底承托原色 logo，不改品牌色 */
.brand{display:flex;align-items:center;justify-content:center;gap:16px;width:fit-content;max-width:100%;margin:6px auto 0;padding:10px 20px;border-radius:14px;
 background:linear-gradient(180deg,#fcf9f1,#eee5d2);box-shadow:inset 0 0 0 1px rgba(160,125,60,.5),inset 0 0 0 4px rgba(255,255,255,.55),0 10px 34px rgba(0,0,0,.55)}
.brand img{display:block;height:30px;width:auto}
.brand i{width:1px;height:22px;background:linear-gradient(transparent,#a07a38,transparent)}
.brand.sm img{height:22px}.brand.sm{padding:7px 14px;gap:12px;border-radius:11px}.brand.sm i{height:16px}

/* 标题 */
.hero{text-align:center;padding:18px 0 4px}
.title{font-family:var(--disp);font-weight:900;font-size:42px;line-height:1.1;letter-spacing:.06em;margin:0;background:var(--goldtxt);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 2px 14px rgba(214,178,106,.28))}
.title em{font-style:normal;margin:0 .04em}
.tagline{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:10px;font-size:11px;letter-spacing:.42em;color:var(--mut);text-transform:uppercase}
.tagline::before,.tagline::after{content:"";width:34px;height:1px;background:linear-gradient(90deg,transparent,var(--line2))}
.tagline::after{transform:scaleX(-1)}
.phase{display:inline-flex;align-items:center;gap:8px;margin-top:14px;padding:5px 14px;border-radius:99px;font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--gold-hi);background:rgba(214,178,106,.1);border:1px solid var(--line)}
.phase::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--jade);box-shadow:0 0 8px var(--jade)}
.phase span{display:inline}

/* 面板 */
.panel{position:relative;margin:14px 0;padding:18px;border-radius:18px;border:1px solid var(--line);
 background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.02));box-shadow:0 14px 40px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.05)}
.ph{display:flex;align-items:baseline;gap:10px;margin-bottom:14px;font-family:var(--disp);font-weight:700;font-size:15px;letter-spacing:.12em;color:var(--gold-hi)}
.ph small{font-family:var(--body);font-weight:500;font-size:10px;letter-spacing:.24em;color:var(--dim);text-transform:uppercase}
.ph::after{content:"";flex:1;height:1px;align-self:center;background:linear-gradient(90deg,var(--line2),transparent)}
.notice{margin:14px 0;padding:12px 16px;border-radius:14px;text-align:center;font-weight:700;font-size:15px;color:var(--gold-hi);background:linear-gradient(90deg,rgba(214,178,106,.16),rgba(56,210,164,.08));border:1px solid var(--line2)}

/* 头像 */
.av{display:inline-flex;align-items:center;justify-content:center;width:2.3em;height:2.3em;flex:none;overflow:hidden;border-radius:24%;background:#000;box-shadow:0 0 0 1px rgba(214,178,106,.45);line-height:1}
.av img{width:100%;height:100%;display:block;image-rendering:auto}
.av.xl{width:3.6em;height:3.6em}

/* 表单 */
.field{margin:0 0 16px}
label{display:block;margin-bottom:7px;font-size:13px;font-weight:600;letter-spacing:.06em;color:var(--mut)}
.req{color:var(--gold);margin-left:3px}
.hint{font-weight:400;color:var(--dim);margin-left:6px;font-size:12px}
input[type=tel],input[type=text],input[type=password]{width:100%;padding:13px 14px;border-radius:12px;border:1px solid var(--hair);background:rgba(0,0,0,.35);color:var(--tx);font-size:17px;font-family:var(--body);outline:none;transition:.15s}
input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(214,178,106,.16)}
input::placeholder{color:#5f5a4f}
input.pin{text-align:center;letter-spacing:.9em;padding-left:1.4em;font-size:22px}
.fe{min-height:18px;margin-top:5px;font-size:12.5px;color:var(--bad)}
.field.bad input{border-color:var(--bad)}
.err{color:var(--bad);font-size:14px;min-height:20px;margin:4px 0 8px;font-weight:600}
.muted{color:var(--mut);font-size:13px}
.seg{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;margin:0 0 18px;border-radius:13px;background:rgba(0,0,0,.4);border:1px solid var(--hair)}
.seg button{padding:10px;border:0;border-radius:10px;background:none;color:var(--mut);font:700 14px var(--body);letter-spacing:.1em;cursor:pointer}
.seg button.on{color:#1a1409;background:linear-gradient(180deg,#f2d99b,#c9a255)}

/* 头像选择 */
.avtabs{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:3px;border-radius:11px;background:rgba(0,0,0,.4);border:1px solid var(--hair);overflow:hidden}
.avtabs button{padding:8px 2px;border:0;border-radius:8px;background:none;color:var(--mut);font:700 12.5px var(--body);white-space:nowrap;cursor:pointer}
.avtabs button.on{color:var(--gold-hi);background:rgba(214,178,106,.16);box-shadow:inset 0 0 0 1px var(--line2)}
.avpick{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;margin:12px 0 8px}
.avpick button{position:relative;padding:0;border:0;background:none;aspect-ratio:1;border-radius:16px;cursor:pointer;opacity:.62;transition:.15s}
.avpick button .av{width:100%;height:100%;border-radius:16px;box-shadow:0 0 0 1px var(--hair)}
.avpick button.sel{opacity:1;transform:scale(1.06);z-index:1}
.avpick button.sel .av{box-shadow:0 0 0 2px var(--gold),0 6px 18px rgba(214,178,106,.35)}
.avpick button.sel::after{content:"✓";position:absolute;right:-5px;top:-5px;width:19px;height:19px;border-radius:50%;background:var(--gold);color:#1a1409;font:900 12px/19px var(--body);text-align:center}
.avsel{display:flex;align-items:center;gap:8px;min-height:2.6em;font-size:13px;color:var(--mut)}
.avsel .av{width:2.2em;height:2.2em}

/* 按钮 */
.btn{display:block;width:100%;padding:15px 18px;border:0;border-radius:14px;font:900 17px var(--disp);letter-spacing:.14em;color:#1a1409;cursor:pointer;
 background:linear-gradient(180deg,#f6e2ad 0%,#d9b468 55%,#b88f45 100%);box-shadow:0 8px 24px rgba(214,178,106,.28),inset 0 1px 0 rgba(255,255,255,.6)}
.btn:active{transform:translateY(1px);filter:brightness(.95)}
.btn:disabled{opacity:.4;filter:grayscale(.5);box-shadow:none}
.btn.ghost{background:rgba(255,255,255,.05);color:var(--gold-hi);box-shadow:inset 0 0 0 1px var(--line2);font:700 15px var(--body);letter-spacing:.08em}
.btn.red{background:rgba(255,107,107,.1);color:#ffb0b0;box-shadow:inset 0 0 0 1px rgba(255,107,107,.5);font:700 15px var(--body);letter-spacing:.08em}
.btn.blue{background:linear-gradient(180deg,#7ae8c6,#2fb590);color:#04231a;box-shadow:0 8px 24px rgba(56,210,164,.22),inset 0 1px 0 rgba(255,255,255,.5)}
.btn.sm{display:inline-block;width:auto;padding:7px 13px;font-size:13px;border-radius:10px}
.linkbtn{background:none;border:0;color:var(--mut);font:600 13px var(--body);text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:6px}

/* 我的状态 */
.me{display:flex;align-items:center;gap:14px}
.me .nick{font-family:var(--disp);font-weight:900;font-size:24px;letter-spacing:.04em;display:flex;align-items:center;gap:8px;min-width:0}
.me .nick span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pen{flex:none;border:1px solid var(--line);background:rgba(255,255,255,.05);color:var(--gold);border-radius:8px;padding:2px 8px;font:600 12px var(--body);cursor:pointer}
.nickedit{display:flex;gap:8px;margin-top:2px}.nickedit input{padding:9px 12px;font-size:16px;margin:0}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.chip{font-size:11.5px;padding:3px 10px;border-radius:99px;background:rgba(255,255,255,.06);color:var(--mut);border:1px solid var(--hair)}
.chip b{color:var(--gold-hi);font-family:var(--disp);font-weight:700;margin-left:2px}
.status{margin:14px 0 0;padding:12px 14px;border-radius:12px;font-weight:700;font-size:16px;border:1px solid var(--hair);border-left:4px solid var(--dim);background:rgba(255,255,255,.04)}
.tone-call{color:var(--gold-hi);border-left-color:var(--gold);background:rgba(214,178,106,.14);animation:pulse-bg 1.4s infinite}
.tone-wait{color:#bfe9dc;border-left-color:var(--jade)}
.tone-play{color:#bfe9dc;border-left-color:var(--jade);background:rgba(56,210,164,.1)}
.tone-warn{color:#ffb0b0;border-left-color:var(--bad)}
.tone-idle{color:var(--mut)}
@keyframes pulse-bg{50%{background:rgba(214,178,106,.28)}}
.queue-box{margin:12px 0 0;padding:14px;border-radius:12px;background:rgba(56,210,164,.07);border:1px solid rgba(56,210,164,.28)}
.queue-box .ahead{font-size:15px;font-weight:700;color:#cfeee4}
.queue-box .ahead b{font-family:var(--disp);font-weight:900;font-size:40px;line-height:1;margin:0 8px;background:var(--goldtxt);-webkit-background-clip:text;background-clip:text;color:transparent}
.queue-box.next{background:rgba(214,178,106,.12);border-color:var(--line2);animation:pulse-bg 1.4s infinite}
.progress{height:5px;border-radius:9px;background:rgba(255,255,255,.08);margin:12px 0 8px;overflow:hidden}
.progress i{display:block;height:100%;border-radius:9px;background:linear-gradient(90deg,var(--jade-d),var(--jade));transition:width .6s}

/* 对战 */
.duel{--pw:min(30vw,148px);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:6px}
.fighter{text-align:center;min-width:0}
.fighter .portrait{width:var(--pw);aspect-ratio:1;margin:0 auto;padding:3px;border-radius:24px}
.fighter .portrait .in{width:100%;height:100%;overflow:hidden;border-radius:21px;background:#000;display:flex;align-items:center;justify-content:center;font-size:calc(var(--pw)*.6)}
.fighter .portrait img{width:100%;height:100%;display:block}
.fighter.p1 .portrait{background:linear-gradient(145deg,#f6e2ad,#a07a38);box-shadow:0 10px 30px rgba(214,178,106,.28)}
.fighter.p2 .portrait{background:linear-gradient(145deg,#8ff0d0,#1f8f72);box-shadow:0 10px 30px rgba(56,210,164,.24)}
.pn{display:inline-block;margin:12px 0 3px;padding:2px 11px;border-radius:99px;font:700 11px var(--body);letter-spacing:.14em}
.p1 .pn{color:#1a1409;background:linear-gradient(180deg,#f6e2ad,#c9a255)}
.p2 .pn{color:#04231a;background:linear-gradient(180deg,#8ff0d0,#38d2a4)}
.fname{font-family:var(--disp);font-weight:900;font-size:1.22em;letter-spacing:.03em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 2px}
.streak{font-size:.75em;color:var(--gold);font-weight:700;margin-top:2px}
.mid{text-align:center;padding:0 2px}
.vsx{display:inline-block;font-family:var(--disp);font-weight:900;font-size:44px;line-height:1;padding:.04em .12em .06em;letter-spacing:.02em;
 background:linear-gradient(180deg,#fff2d0,#ffb347 50%,#ff5a2a);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 14px rgba(255,106,46,.55))}
.duel.playing .vsx{animation:vs 1.6s ease-in-out infinite}
@keyframes vs{50%{transform:scale(1.1);filter:drop-shadow(0 0 22px rgba(255,106,46,.9))}}
.clock-l{margin-top:8px;font:700 10px var(--body);letter-spacing:.4em;color:var(--dim)}
.clock{font-family:var(--disp);font-weight:900;font-size:28px;letter-spacing:.06em;color:var(--gold-hi);font-variant-numeric:tabular-nums;text-shadow:0 0 18px rgba(214,178,106,.35)}
.ready{margin-top:8px;font-family:var(--disp);font-weight:900;font-size:17px;letter-spacing:.2em;color:var(--gold-hi);animation:fade 1.1s infinite}
.ready small{display:block;margin-top:2px;font:500 11px var(--body);letter-spacing:.06em;color:var(--mut)}
@keyframes fade{50%{opacity:.45}}
.idle-note{text-align:center;color:var(--mut);padding:12px 0;font-size:14px}

/* 列表 / 榜单 */
.row{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px solid var(--hair)}
.row:last-child{border-bottom:0}
.row .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.row .pt{font-family:var(--disp);font-weight:900;font-size:1.25em;color:var(--gold-hi);min-width:1.6em;text-align:right}
.row .av{width:2.2em;height:2.2em}
.rk{width:1.7em;text-align:center;font-family:var(--disp);font-weight:900;color:var(--dim);font-size:1.1em}
.z1 .rk{color:#f4d37e}.z2 .rk{color:#d5dae2}.z3 .rk{color:#d99a66}
.z1{background:linear-gradient(90deg,rgba(244,211,126,.12),transparent)}
.cut{height:0;border-top:1px dashed rgba(214,178,106,.4);margin:2px 0}
.no{margin-left:7px;font-size:.68em;color:var(--dim);font-weight:500;letter-spacing:.06em}
.tag{margin-left:6px;padding:1px 7px;border-radius:99px;font-size:10px;font-weight:700;color:#ffd0a8;background:rgba(255,106,46,.16);border:1px solid rgba(255,106,46,.4)}
.row.mine{background:linear-gradient(90deg,rgba(214,178,106,.18),transparent);border-radius:10px}
.row.mine .nm::after{content:"我";margin-left:8px;padding:1px 7px;border-radius:99px;font-size:10px;font-weight:900;color:#1a1409;background:var(--gold)}
.final .tier{margin:12px 0}
.final .tier>b{display:inline-block;margin-bottom:6px;font:900 15px var(--disp);letter-spacing:.14em;background:var(--goldtxt);-webkit-background-clip:text;background-clip:text;color:transparent}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}

/* 规则页 */
.facts{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.facts.three{grid-template-columns:repeat(3,1fr)}
.fact{padding:14px 8px;text-align:center;border-radius:14px;background:rgba(0,0,0,.28);border:1px solid var(--hair)}
.fact b{display:block;font-family:var(--disp);font-weight:900;font-size:34px;line-height:1.1;background:var(--goldtxt);-webkit-background-clip:text;background-clip:text;color:transparent}
.fact span{display:block;margin-top:6px;font-size:12px;line-height:1.5;color:var(--mut)}
ol.rl{list-style:none;margin:0;padding:0;counter-reset:r}
ol.rl li{counter-increment:r;position:relative;padding:11px 0 11px 40px;border-bottom:1px solid var(--hair);line-height:1.75;font-size:14.5px;color:#e4dece}
ol.rl li:last-child{border-bottom:0}
ol.rl li::before{content:counter(r);position:absolute;left:0;top:12px;width:26px;height:26px;border-radius:50%;text-align:center;font:900 13px/26px var(--disp);color:var(--gold);background:rgba(214,178,106,.12);box-shadow:inset 0 0 0 1px var(--line)}
ol.rl b{color:var(--gold-hi);font-weight:700}
.rulelink{display:block;text-align:center;text-decoration:none}

/* 底部操作栏 / 弹层 */
.actionbar{position:fixed;left:0;right:0;bottom:0;z-index:20;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(180deg,rgba(8,9,11,.6),rgba(8,9,11,.96));backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line)}
.actionbar .in{max-width:540px;margin:0 auto}
.actionbar .note{text-align:center;color:var(--mut);font-size:14px;font-weight:600;padding:8px 0}
.sheet-bg{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-end;justify-content:center;background:rgba(0,0,0,.6);backdrop-filter:blur(3px)}
.sheet{width:100%;max-width:540px;padding:22px 18px calc(18px + env(safe-area-inset-bottom));border-radius:22px 22px 0 0;background:linear-gradient(180deg,#17181c,#0e0f12);border:1px solid var(--line2);border-bottom:0}
.sheet p{margin:0 0 18px;text-align:center;font-size:16px;font-weight:600;line-height:1.6}
