:root{
  --bg:#000;--bg1:#0b0b0c;--bg2:#141518;--iron1:#1c1e21;--iron2:#26292d;--iron3:#33373c;
  --gold1:#8a6a3a;--gold2:#b8935a;--gold3:#e6c88a;--gold-hi:#f3e2b8;
  --gold:linear-gradient(120deg,#8a6a3a 0%,#b8935a 28%,#e6c88a 58%,#b8935a 100%);
  --gold-btn:linear-gradient(120deg,#b8935a 0%,#e6c88a 50%,#c9a56a 100%);
  --gold-text:linear-gradient(100deg,#f3e2b8 0%,#e6c88a 30%,#c9a56a 55%,#e6c88a 78%,#f3e2b8 100%);
  --ink:#ece8e1;--soft:#c9c4bb;--muted:#9a9a9a;--on-gold:#17120a;
  --line:rgba(214,180,120,.18);--line2:rgba(214,180,120,.34);
  --panel:linear-gradient(160deg,rgba(38,41,45,.86),rgba(28,30,33,.9) 55%,rgba(22,23,26,.92));
  --radius:18px;--ease:cubic-bezier(.2,.8,.2,1);
  --serif:"Noto Serif TC","Noto Serif CJK TC","Playfair Display","Songti TC",PMingLiU,serif;
  --font:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;
  --mono:ui-monospace,SFMono-Regular,"JetBrains Mono",Menlo,monospace;
  --danger:#e6a08a;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font);color:var(--ink);line-height:1.7;min-height:100vh;
  background:linear-gradient(180deg,#000 0,#0b0b0c 900px,#0b0b0c 60%,#141518 100%) fixed}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(600px 400px at 85% -5%,rgba(230,200,138,.10),transparent 70%),radial-gradient(500px 300px at 5% 10%,rgba(230,200,138,.05),transparent 70%),
  linear-gradient(rgba(214,180,120,.045) 1px,transparent 1px) 0 0/64px 64px,linear-gradient(90deg,rgba(214,180,120,.045) 1px,transparent 1px) 0 0/64px 64px;
  -webkit-mask-image:linear-gradient(#000,transparent 70%);mask-image:linear-gradient(#000,transparent 70%)}
body>*{position:relative;z-index:1}
h1,h2,h3{font-family:var(--serif);letter-spacing:.02em;margin:0 0 .5em;line-height:1.3}
h1{font-size:clamp(1.8rem,4vw,2.8rem);font-weight:900}
h2{font-size:clamp(1.3rem,2.6vw,1.9rem);font-weight:700}
h3{font-size:1.15rem;font-weight:700}
a{color:var(--gold3)}
p{margin:.3em 0 .8em}
.gold-text{background:var(--gold-text);-webkit-background-clip:text;background-clip:text;color:transparent}
.eyebrow{font-family:var(--mono);font-size:.72rem;letter-spacing:.28em;text-transform:uppercase;color:var(--gold2)}
.muted{color:var(--muted)}.soft{color:var(--soft)}
.wrap{max-width:1240px;margin:0 auto;padding:0 clamp(16px,4vw,40px)}
.narrow{max-width:640px}
.sr{position:absolute;left:-9999px}
.topbar{display:flex;align-items:center;gap:12px;padding:14px clamp(16px,4vw,40px);border-bottom:1px solid var(--line);background:rgba(0,0,0,.55);backdrop-filter:blur(10px);position:sticky;top:0;z-index:20;flex-wrap:wrap}
.brand{font-family:var(--serif);font-weight:900;letter-spacing:.12em}
.brand small{font-family:var(--mono);font-size:.62rem;letter-spacing:.2em;color:var(--gold2);margin-left:8px}
.spacer{flex:1}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:0 30px 60px -30px rgba(0,0,0,.9),inset 0 1px 0 rgba(255,255,255,.04);backdrop-filter:blur(10px);position:relative}
.card.sm{padding:16px;border-radius:14px}
.grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(270px,1fr))}
.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.stack>*+*{margin-top:14px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;min-height:44px;padding:.6em 1.3em;border-radius:999px;border:1px solid var(--line2);background:rgba(38,41,45,.6);color:var(--ink);font:700 .95rem var(--font);cursor:pointer;text-decoration:none;transition:transform .2s,box-shadow .2s,border-color .2s}
.btn:hover{transform:translateY(-2px);border-color:var(--gold3);box-shadow:0 8px 24px -10px var(--gold-glow,rgba(230,200,138,.28))}
.btn:disabled,.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.btn-primary{background:var(--gold-btn);color:var(--on-gold);border-color:transparent}
.btn-danger{border-color:rgba(230,160,138,.5);color:var(--danger)}
.btn-sm{min-height:36px;padding:.3em .9em;font-size:.85rem}
.btn-lg{min-height:56px;font-size:1.1rem;padding:.7em 1.8em}
:focus-visible{outline:2px solid var(--gold3);outline-offset:3px;border-radius:6px}
label{display:block;font-size:.88rem;color:var(--soft);margin:12px 0 4px}
input,textarea,select{width:100%;background:#101113;border:1px solid var(--line2);border-radius:12px;color:var(--ink);font:1rem var(--font);padding:.65em .9em;min-height:44px}
textarea{min-height:90px;resize:vertical}
input::placeholder,textarea::placeholder{color:#8f8b84}
input:focus,textarea:focus,select:focus{outline:none;box-shadow:0 0 0 4px rgba(230,200,138,.18);border-color:var(--gold3)}
input[type=checkbox],input[type=radio]{width:22px;height:22px;min-height:0;accent-color:#c9a56a;flex:none}
.chip{display:inline-block;font-size:.74rem;padding:.15em .8em;border-radius:999px;border:1px solid rgba(214,180,120,.35);background:rgba(184,147,90,.08);color:var(--gold3);white-space:nowrap}
.chip.solid{background:var(--gold-btn);color:var(--on-gold);border-color:transparent;font-weight:700}
.chip.dash{border-style:dashed;color:var(--muted);border-color:#555}
.chip.warn{color:var(--danger);border-color:rgba(230,160,138,.5);background:rgba(230,160,138,.08)}
.tag{font-family:var(--mono);font-size:.74rem;color:var(--gold3)}
.pending{color:var(--gold3);font-size:.85rem}
.err{color:var(--danger);min-height:1.4em;font-size:.92rem}
.notice{border:1px dashed var(--line2);border-radius:14px;padding:12px 16px;color:var(--soft);font-size:.92rem;background:rgba(0,0,0,.25)}
.devbar{background:repeating-linear-gradient(135deg,#2a1f0c 0 14px,#1a1408 14px 28px);color:var(--gold-hi);font:700 .8rem var(--mono);padding:6px 12px;text-align:center;letter-spacing:.06em;border-bottom:1px solid var(--gold1)}
.bar{height:10px;border-radius:999px;background:#0e0f10;border:1px solid var(--line);overflow:hidden}
.bar>i{display:block;height:100%;background:var(--gold);width:0;transition:width .6s var(--ease)}
.avatar{--s:56px;width:var(--s);height:var(--s);border-radius:50%;display:grid;place-items:center;flex:none;font-family:var(--serif);font-weight:900;font-size:calc(var(--s)*.46);color:var(--on-gold);box-shadow:inset 0 0 0 2px rgba(0,0,0,.35),0 0 0 2px var(--gold1);background:var(--c)}
.avatars{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.avatars button{background:none;border:2px solid transparent;border-radius:50%;padding:4px;cursor:pointer;min-height:44px;display:grid;place-items:center}
.avatars button[aria-pressed=true]{border-color:var(--gold-hi);box-shadow:0 0 18px rgba(230,200,138,.45)}
.avatars .avatar{--s:min(56px,12vw)}
table{width:100%;border-collapse:collapse}
th{font-family:var(--mono);font-size:.74rem;letter-spacing:.12em;color:var(--gold2);text-align:left;padding:8px;border-bottom:1px solid var(--line2);white-space:nowrap}
td{padding:8px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:nth-child(even) td{background:rgba(255,255,255,.015)}
.scroll-x{overflow-x:auto}
.step-item{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;padding:12px 0;border-bottom:1px solid var(--line)}
.step-no{width:36px;height:36px;border-radius:50%;border:1px solid var(--line2);display:grid;place-items:center;font-family:var(--display,var(--serif));color:var(--gold3);font-weight:700}
.step-item.done .step-no{background:var(--gold-btn);color:var(--on-gold);border-color:transparent}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#1c1e21;border:1px solid var(--gold2);color:var(--gold-hi);padding:10px 20px;border-radius:999px;z-index:99;font-weight:700;opacity:0;pointer-events:none;transition:opacity .3s}
.toast.show{opacity:1}
dialog{background:#141518;color:var(--ink);border:1px solid var(--line2);border-radius:22px;padding:24px;max-width:min(520px,92vw)}
dialog::backdrop{background:rgba(0,0,0,.8);backdrop-filter:blur(4px)}
.qrbox{background:#fff;padding:16px;border-radius:18px;display:inline-block;line-height:0}
.qrbox svg,.qrbox img{width:min(100%,320px);height:auto;display:block}
.tabs{display:flex;gap:8px;flex-wrap:wrap}
.tabs .btn[aria-current=true]{border-color:var(--gold3);color:var(--gold-hi);background:rgba(184,147,90,.14)}
.timer{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--gold-hi)}
.split{display:grid;grid-template-columns:minmax(300px,380px) 1fr;gap:18px;align-items:start}
@media(max-width:860px){.split{grid-template-columns:1fr}.hide-sm{display:none}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
[hidden]{display:none!important}
