/* ============================================================
   UMBRA — backlit shadow-theater  (landing + game)
   ============================================================ */
:root{
  --indigo-deep:#0F1124; --indigo:#171A34; --indigo-2:#1E2242;
  --sil:#14100F; --paper:#F3E6C6;
  --amber:#E39A2E; --amber-hot:#F5B75C; --vermilion:#C0362A;
  --gold:#C9A227; --gold-hi:#ECCB6E; --jade:#2F8F76;
  --ink:#E9E0CB; --ink-dim:#A9A08A; --ink-faint:#6E6858;
  --hair:rgba(201,162,39,.26); --hair-soft:rgba(201,162,39,.13);

  --f-display:'Cormorant Garamond',Georgia,serif;
  --f-body:'Noto Serif',Georgia,serif;
  --f-brush:'Ma Shan Zheng',cursive;
  --f-mono:'JetBrains Mono',ui-monospace,monospace;
  --wrap:1140px; --ease:cubic-bezier(.22,.61,.36,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0; font-family:var(--f-body); color:var(--ink); line-height:1.65;
  background:radial-gradient(130% 80% at 50% -10%, #1b1e3c 0%, var(--indigo-deep) 52%, #0a0b1a 100%);
  background-attachment:fixed; -webkit-font-smoothing:antialiased; overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
em{font-style:italic}
button{font-family:inherit}
.btn,.rcard,.move,.ca-copy,.nav-toggle{-webkit-appearance:none;appearance:none}

.grain{position:fixed; inset:0; z-index:0; pointer-events:none;
  background:url(../assets/paper.png); background-size:340px; opacity:.05; mix-blend-mode:soft-light}
section,header,footer{position:relative; z-index:2}

/* ---------- decorative floating layers ---------- */
.decor{position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:1}
.lantern{position:absolute; background:url(../assets/lantern.png) no-repeat center/contain;
  filter:drop-shadow(0 0 24px rgba(227,154,46,.35)); will-change:transform;
  animation:sway 7s ease-in-out infinite, bobY 9s ease-in-out infinite}
.moth{position:absolute; width:34px; height:27px;
  background:url(../assets/moth.png) no-repeat center/contain; opacity:.85; will-change:transform}
.accent{position:absolute; pointer-events:none; opacity:.10; z-index:1;
  filter:blur(.5px); will-change:transform}
.accent-phoenix{background:url(../assets/phoenix.png) no-repeat center/contain;
  animation:driftA 26s ease-in-out infinite}
.accent-dragon{background:url(../assets/dragon.png) no-repeat center/contain;
  animation:driftB 32s ease-in-out infinite}
.cloud-divider{position:relative; z-index:2; height:74px; margin:-8px 0;
  background:url(../assets/clouds.png) repeat-x; background-size:auto 100%;
  opacity:.5; animation:clouds 60s linear infinite}
.cloud-divider.flip{transform:scaleY(-1); animation-duration:80s}

/* ---------- section rhythm ---------- */
.section{max-width:var(--wrap); margin:0 auto; padding:96px 26px}
.section-head{max-width:680px; margin:0 auto 44px; text-align:center}
.section-eyebrow{font-family:var(--f-mono); font-size:.68rem; letter-spacing:.42em;
  text-transform:uppercase; color:var(--amber); margin:0 0 14px}
.section-title{font-family:var(--f-display); font-weight:600; font-size:clamp(2.1rem,5vw,3.5rem);
  line-height:1.05; margin:0; color:var(--paper); letter-spacing:.01em}
.section-lead{font-size:1.06rem; color:var(--ink-dim); margin:18px auto 0; max-width:620px}

/* ---------- buttons ---------- */
.btn{display:inline-flex; align-items:center; gap:.5em; font-family:var(--f-mono);
  font-size:.8rem; font-weight:500; letter-spacing:.12em; text-transform:uppercase;
  padding:.82em 1.35em; border-radius:5px; border:1px solid transparent; cursor:pointer;
  transition:.32s var(--ease); white-space:nowrap}
.btn .tk{letter-spacing:.06em}
.btn-buy{color:#1b1305; background:linear-gradient(160deg,var(--amber-hot),var(--amber) 60%,#c07f1f);
  border-color:rgba(255,220,150,.5);
  box-shadow:0 6px 26px -8px rgba(227,154,46,.7), inset 0 1px 0 rgba(255,255,255,.35)}
.btn-buy:hover{transform:translateY(-2px);
  box-shadow:0 10px 34px -8px rgba(245,183,92,.9), inset 0 1px 0 rgba(255,255,255,.45)}
.btn-ghost{color:var(--gold-hi); border-color:var(--hair); background:rgba(201,162,39,.05)}
.btn-ghost:hover{border-color:rgba(236,203,110,.6); background:rgba(201,162,39,.12);
  box-shadow:0 0 26px -6px rgba(201,162,39,.45); transform:translateY(-2px)}
.btn-lg{font-size:.9rem; padding:1.05em 1.9em}

/* ============================================================ NAV */
.nav{position:fixed; top:0; left:0; right:0; z-index:50; display:flex; align-items:center;
  justify-content:space-between; padding:16px clamp(18px,4vw,42px);
  transition:background .4s var(--ease), border-color .4s var(--ease), padding .4s var(--ease);
  border-bottom:1px solid transparent}
.nav.scrolled{background:rgba(11,13,28,.82); backdrop-filter:blur(11px);
  border-bottom:1px solid var(--hair-soft); padding-top:11px; padding-bottom:11px}
.brand{display:flex; align-items:baseline; gap:.5em}
.brand-mark{font-family:var(--f-brush); font-size:1.5rem; color:var(--amber);
  text-shadow:0 0 18px rgba(227,154,46,.55); line-height:1}
.brand-word{font-family:var(--f-display); font-weight:700; font-size:1.35rem;
  letter-spacing:.22em; color:var(--paper)}
.nav-links{display:flex; gap:28px}
.nav-links a{font-family:var(--f-mono); font-size:.72rem; letter-spacing:.15em; text-transform:uppercase;
  color:var(--ink-dim); padding:4px 0; position:relative; transition:color .25s}
.nav-links a::after{content:""; position:absolute; left:0; right:100%; bottom:-2px; height:1px;
  background:var(--gold-hi); transition:right .3s var(--ease)}
.nav-links a:hover{color:var(--gold-hi)}
.nav-links a:hover::after{right:0}
.nav-right{display:flex; align-items:center; gap:14px}
.nav-toggle{display:none; flex-direction:column; gap:5px; width:34px; height:30px;
  background:none; border:0; cursor:pointer; padding:6px 4px}
.nav-toggle span{height:1.5px; background:var(--gold-hi); transition:.3s var(--ease); transform-origin:center}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}
.nav-drawer{position:fixed; top:0; right:0; z-index:49; width:min(78vw,320px); height:100vh;
  background:rgba(13,15,32,.97); backdrop-filter:blur(14px); border-left:1px solid var(--hair);
  padding:96px 30px 30px; display:flex; flex-direction:column; gap:6px;
  transform:translateX(100%); transition:transform .4s var(--ease)}
.nav-drawer.open{transform:translateX(0)}
.nav-drawer a{font-family:var(--f-mono); font-size:.85rem; letter-spacing:.12em; text-transform:uppercase;
  color:var(--ink-dim); padding:14px 0; border-bottom:1px solid var(--hair-soft)}
.nav-drawer a:hover{color:var(--gold-hi)}
.nav-drawer .btn-buy{margin-top:22px; justify-content:center; border-bottom:0}

/* ============================================================ HERO */
.hero{min-height:100svh; display:flex; align-items:center; padding:120px 26px 70px;
  max-width:var(--wrap); margin:0 auto}
.hero-glow{position:absolute; z-index:0; width:min(120vw,1100px); aspect-ratio:1; right:-6%; top:44%;
  transform:translateY(-50%);
  background:radial-gradient(circle, rgba(245,183,92,.42) 0%, rgba(227,154,46,.22) 30%, rgba(192,54,42,.07) 52%, transparent 68%);
  filter:blur(6px); animation:flicker 5.5s ease-in-out infinite}
.moon{position:absolute; z-index:0; width:min(78vw,600px); aspect-ratio:1; border-radius:50%;
  right:2%; top:44%; transform:translateY(-50%); border:1px solid rgba(201,162,39,.3);
  box-shadow:inset 0 0 90px rgba(227,154,46,.14)}
.hero-inner{position:relative; z-index:3; display:grid; grid-template-columns:1.05fr .95fr;
  align-items:center; gap:30px; width:100%}
.eyebrow{font-family:var(--f-mono); font-size:.72rem; letter-spacing:.34em; text-transform:uppercase;
  color:var(--amber); margin:0 0 20px}
.hero-title{font-family:var(--f-display); font-weight:600; font-size:clamp(2.9rem,7.5vw,5.6rem);
  line-height:1.02; margin:0; color:var(--paper); letter-spacing:.005em}
.hero-title em{font-style:italic;
  background:linear-gradient(100deg,var(--gold-hi),var(--amber-hot),var(--gold-hi));
  background-size:220% auto; -webkit-background-clip:text; background-clip:text; color:transparent;
  text-shadow:0 0 40px rgba(236,203,110,.25); animation:shimmer 6s linear infinite}
.hero-sub{font-size:1.12rem; color:var(--ink-dim); max-width:440px; margin:22px 0 30px}
.hero-cta{display:flex; gap:14px; flex-wrap:wrap; margin-bottom:38px}

.countdown{margin-bottom:26px}
.cd-label{font-family:var(--f-mono); font-size:.66rem; letter-spacing:.32em; text-transform:uppercase;
  color:var(--ink-faint); margin:0 0 12px}
.cd-clock{display:flex; align-items:flex-start; gap:10px}
.cd-unit{display:flex; flex-direction:column; align-items:center; min-width:56px; padding:10px 6px 8px;
  border:1px solid var(--hair-soft); border-radius:6px;
  background:linear-gradient(180deg, rgba(30,34,66,.5), rgba(15,17,36,.4))}
.cd-unit span{font-family:var(--f-mono); font-weight:600; font-size:1.7rem; color:var(--gold-hi);
  line-height:1; text-shadow:0 0 16px rgba(236,203,110,.3)}
.cd-unit small{font-family:var(--f-mono); font-size:.56rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ink-faint); margin-top:7px}
.cd-sep{font-family:var(--f-mono); font-size:1.5rem; color:var(--amber); padding-top:12px; opacity:.6}
.cd-when{font-family:var(--f-mono); font-size:.72rem; letter-spacing:.14em; color:var(--ink-dim); margin:14px 0 0}
.countdown[data-state="live"] .cd-clock,.countdown[data-state="live"] .cd-label{display:none}
.cd-live{display:none; font-family:var(--f-display); font-style:italic; font-size:1.5rem; color:var(--amber-hot)}
.countdown[data-state="live"] .cd-live{display:block}

.ca-row{display:inline-flex; align-items:center; gap:12px; flex-wrap:wrap; padding:9px 9px 9px 16px;
  border:1px solid var(--hair-soft); border-radius:8px; background:rgba(15,17,36,.45)}
.ca-label{font-family:var(--f-mono); font-size:.6rem; letter-spacing:.24em; text-transform:uppercase; color:var(--ink-faint)}
.ca-value{font-family:var(--f-mono); font-size:.82rem; color:var(--gold-hi); word-break:break-all; max-width:min(46vw,320px)}
.ca-copy{display:inline-flex; align-items:center; gap:6px; font-family:var(--f-mono); font-size:.66rem;
  letter-spacing:.12em; text-transform:uppercase; color:var(--indigo-deep); cursor:pointer;
  background:linear-gradient(160deg,var(--gold-hi),var(--gold)); border:0; border-radius:5px; padding:7px 11px; transition:.25s}
.ca-copy:hover{filter:brightness(1.08)}
.ca-copy.copied{background:var(--jade); color:#eafff8}

.hero-figure{position:relative; z-index:3; display:flex; justify-content:center; align-items:flex-end}
.hero-figure img{width:min(100%,420px); filter:drop-shadow(0 20px 50px rgba(227,154,46,.28))}
.sway{animation:swayFig 8s ease-in-out infinite}
.scroll-cue{position:absolute; bottom:22px; left:50%; transform:translateX(-50%); z-index:3;
  color:var(--amber); font-size:1.1rem; opacity:.55; animation:bob 2.6s ease-in-out infinite}
.scroll-cue:hover{opacity:1}

/* ============================================================ LORE */
.lore{max-width:820px; margin:20px auto; padding:40px 26px; text-align:center}
.rule{display:flex; align-items:center; gap:18px; color:var(--gold); max-width:520px; margin:0 auto}
.rule::before,.rule::after{content:""; flex:1; height:1px;
  background:linear-gradient(90deg,transparent,var(--hair),transparent)}
.rule span{font-family:var(--f-brush); font-size:1.5rem; color:var(--amber); text-shadow:0 0 16px rgba(227,154,46,.5)}
.lore-inner{padding:40px 0}
.lore-text{font-family:var(--f-display); font-weight:500; font-size:clamp(1.35rem,3.2vw,2rem);
  line-height:1.5; color:var(--paper); margin:0 auto; max-width:680px; font-style:italic}
.lore-attrib{font-family:var(--f-mono); font-size:.72rem; letter-spacing:.1em; color:var(--ink-faint); margin-top:26px}

/* ============================================================ DUEL TEASER */
.duel-teaser .stage-note{max-width:640px; margin:0 auto 34px; text-align:center; font-size:.98rem; color:var(--ink-dim)}
.duel-teaser .stage-note em{color:var(--gold-hi)}
.roster{display:grid; grid-template-columns:repeat(4,1fr); gap:16px}
.rcard{position:relative; cursor:pointer; text-align:center; display:block; color:inherit;
  border:1px solid var(--hair-soft); border-radius:12px; overflow:hidden;
  background:linear-gradient(180deg, rgba(30,34,66,.4), rgba(13,15,32,.55));
  padding:16px 12px 18px; transition:.3s var(--ease)}
.rcard::before{content:""; position:absolute; inset:0; z-index:0;
  background:radial-gradient(120% 60% at 50% 0%, rgba(227,154,46,.14), transparent 70%); opacity:0; transition:opacity .3s}
.rcard:hover{transform:translateY(-4px); border-color:rgba(236,203,110,.5); box-shadow:0 16px 40px -18px rgba(227,154,46,.55)}
.rcard:hover::before{opacity:1}
.rcard.sel{border-color:var(--amber); box-shadow:0 0 0 1px var(--amber),0 16px 40px -16px rgba(227,154,46,.7)}
.rcard-fig{height:150px; display:flex; align-items:flex-end; justify-content:center; position:relative; z-index:1}
.rcard-fig img{height:100%; object-fit:contain; filter:drop-shadow(0 8px 22px rgba(227,154,46,.28))}
.rcard-name{font-family:var(--f-display); font-weight:600; font-size:1.28rem; color:var(--paper);
  margin:12px 0 2px; position:relative; z-index:1; letter-spacing:.02em}
.rcard-cn{font-family:var(--f-brush); font-size:.95rem; color:var(--amber); opacity:.85}
.rcard-ep{font-family:var(--f-mono); font-size:.6rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-dim); margin:8px 0 10px; position:relative; z-index:1}
.rcard-stats{display:flex; justify-content:center; gap:12px; position:relative; z-index:1}
.rcard-stat{font-family:var(--f-mono); font-size:.62rem; color:var(--ink-faint)}
.rcard-stat b{color:var(--gold-hi); font-weight:600}
.teaser-cta{display:flex; justify-content:center; margin-top:40px}

/* ============================================================ TITHE */
.stat-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:16px; max-width:900px; margin:0 auto}
.stat{text-align:center; padding:30px 16px; border:1px solid var(--hair-soft); border-radius:12px;
  background:linear-gradient(180deg, rgba(30,34,66,.4), rgba(13,15,32,.5))}
.stat-num{display:block; font-family:var(--f-display); font-weight:700; font-size:clamp(1.5rem,3vw,2.1rem); color:var(--gold-hi)}
.stat-cap{display:block; font-family:var(--f-mono); font-size:.62rem; letter-spacing:.18em;
  text-transform:uppercase; color:var(--ink-dim); margin-top:10px}
.tithe-flow{max-width:820px; margin:48px auto 0; text-align:center}
.flow-title{font-family:var(--f-display); font-style:italic; font-size:1.5rem; color:var(--amber-hot); margin:0 0 28px}
.flow{display:flex; align-items:stretch; justify-content:center; gap:14px; flex-wrap:wrap}
.flow-step{flex:1; min-width:180px; max-width:230px; padding:24px 18px; border-radius:12px;
  border:1px solid var(--hair-soft); background:rgba(15,17,36,.45)}
.flow-i{display:block; font-family:var(--f-brush); font-size:1.8rem; color:var(--amber); margin-bottom:8px}
.flow-step b{font-family:var(--f-display); font-size:1.3rem; color:var(--paper); display:block; margin-bottom:6px}
.flow-step p{font-size:.9rem; color:var(--ink-dim); margin:0}
.flow-arrow{align-self:center; color:var(--gold); font-size:1.5rem; opacity:.6}
.flow-fine{font-family:var(--f-mono); font-size:.7rem; line-height:1.7; color:var(--ink-faint); max-width:560px; margin:28px auto 0}

/* ============================================================ MANUAL */
.manual-grid{display:grid; grid-template-columns:1fr 1fr; gap:26px; max-width:960px; margin:0 auto}
.manual-col{padding:32px 30px; border:1px solid var(--hair-soft); border-radius:14px;
  background:linear-gradient(180deg, rgba(30,34,66,.4), rgba(13,15,32,.5))}
.manual-col h3{font-family:var(--f-display); font-weight:600; font-size:1.7rem; color:var(--paper); margin:0 0 22px}
.steps{list-style:none; counter-reset:s; margin:0; padding:0}
.steps li{counter-increment:s; position:relative; padding:0 0 20px 46px; font-size:.98rem; color:var(--ink-dim)}
.steps li:last-child{padding-bottom:0}
.steps li::before{content:counter(s); position:absolute; left:0; top:-2px; width:30px; height:30px;
  display:grid; place-items:center; border-radius:50%; font-family:var(--f-mono); font-size:.8rem;
  color:var(--gold-hi); border:1px solid var(--hair); background:rgba(201,162,39,.06)}
.steps b{color:var(--paper); font-weight:600}
.steps a{color:var(--gold-hi); border-bottom:1px solid var(--hair)}
.manual-fine{font-family:var(--f-mono); font-size:.7rem; line-height:1.7; color:var(--ink-faint); margin:22px 0 0}

/* ============================================================ WHISPERS */
.faq{max-width:760px; margin:0 auto}
.q{border-bottom:1px solid var(--hair-soft)}
.q summary{list-style:none; cursor:pointer; padding:22px 40px 22px 0; position:relative;
  font-family:var(--f-display); font-weight:600; font-size:1.28rem; color:var(--paper); transition:color .2s}
.q summary::-webkit-details-marker{display:none}
.q summary::after{content:"+"; position:absolute; right:6px; top:50%; transform:translateY(-50%);
  font-family:var(--f-mono); font-size:1.3rem; color:var(--amber); transition:transform .3s var(--ease)}
.q[open] summary::after{content:"\2013"}
.q summary:hover{color:var(--gold-hi)}
.q .a{padding:0 0 24px; max-width:660px}
.q .a p{margin:0; color:var(--ink-dim); font-size:1rem}
.q .a b{color:var(--ink)}

/* ============================================================ FOOTER */
.footer{max-width:var(--wrap); margin:40px auto 0; padding:56px 26px 40px; border-top:1px solid var(--hair-soft)}
.footer-top{display:flex; justify-content:space-between; align-items:flex-start; gap:30px; flex-wrap:wrap}
.footer-brand{display:flex; align-items:baseline; gap:.5em; flex-wrap:wrap}
.footer-brand .brand-mark{font-size:1.7rem}
.footer-brand .brand-word{font-size:1.4rem}
.footer-tag{flex-basis:100%; font-family:var(--f-display); font-style:italic; font-size:1.05rem; color:var(--ink-dim); margin:12px 0 0}
.footer-social{display:flex; gap:26px}
.footer-social a{font-family:var(--f-mono); font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-dim); transition:color .2s}
.footer-social a:hover{color:var(--gold-hi)}
.footer-bar{margin-top:40px; padding-top:22px; border-top:1px solid var(--hair-soft);
  display:flex; justify-content:space-between; align-items:flex-start; gap:20px; flex-wrap:wrap}
.footer-bar .js-domain{font-family:var(--f-mono); font-size:.72rem; letter-spacing:.14em; color:var(--gold)}
.disclaimer{font-family:var(--f-mono); font-size:.64rem; line-height:1.7; color:var(--ink-faint); max-width:640px; margin:0; text-align:right; flex:1}

/* ============================================================ GAME PAGE */
.game-body{min-height:100vh}
.game-top{position:sticky; top:0; z-index:50; display:flex; align-items:center; justify-content:space-between;
  padding:14px clamp(18px,4vw,42px); background:rgba(11,13,28,.82); backdrop-filter:blur(11px);
  border-bottom:1px solid var(--hair-soft)}
.game-back{font-family:var(--f-mono); font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-dim)}
.game-back:hover{color:var(--gold-hi)}
.game-wrap{max-width:1000px; margin:0 auto; padding:48px 22px 90px}
.game-hero{text-align:center; margin-bottom:40px}
.game-eyebrow{font-family:var(--f-mono); font-size:.68rem; letter-spacing:.42em; text-transform:uppercase; color:var(--amber); margin:0 0 12px}
.game-title{font-family:var(--f-display); font-weight:600; font-size:clamp(2.4rem,6vw,3.8rem); color:var(--paper); margin:0; line-height:1.02}
.game-title em{font-style:italic; color:var(--gold-hi)}
.game-lead{color:var(--ink-dim); margin:16px auto 0; max-width:560px}

/* dashboard */
.dash{display:grid; grid-template-columns:repeat(6,1fr); gap:14px; margin-bottom:20px}
.dash-card{grid-column:span 2; text-align:center; padding:22px 14px; border-radius:14px;
  border:1px solid var(--hair-soft); background:linear-gradient(180deg, rgba(30,34,66,.45), rgba(13,15,32,.55)); position:relative; overflow:hidden}
.dash-card::before{content:""; position:absolute; inset:0;
  background:radial-gradient(120% 70% at 50% 0%, rgba(227,154,46,.10), transparent 70%)}
.dash-num{position:relative; display:block; font-family:var(--f-display); font-weight:700;
  font-size:clamp(1.7rem,4vw,2.4rem); color:var(--gold-hi); line-height:1}
.dash-num small{font-size:.5em; color:var(--ink-dim)}
.dash-cap{position:relative; display:block; font-family:var(--f-mono); font-size:.6rem; letter-spacing:.16em;
  text-transform:uppercase; color:var(--ink-dim); margin-top:9px}
.dash-wide{grid-column:span 3}
.dash-fav{display:flex; align-items:center; justify-content:center; gap:12px; text-align:left}
.dash-fav img{height:52px; width:auto; filter:drop-shadow(0 6px 14px rgba(227,154,46,.3))}
.dash-fav .fav-name{font-family:var(--f-display); font-weight:600; font-size:1.4rem; color:var(--paper); line-height:1.1}
.dash-fav .fav-sub{font-family:var(--f-mono); font-size:.56rem; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-faint)}

.records{margin:6px 0 34px; border:1px solid var(--hair-soft); border-radius:14px; overflow:hidden}
.records h3{font-family:var(--f-display); font-weight:600; font-size:1.15rem; color:var(--paper);
  margin:0; padding:16px 20px; border-bottom:1px solid var(--hair-soft); background:rgba(15,17,36,.5)}
.rec-row{display:grid; grid-template-columns:1.4fr repeat(3,1fr) 1.4fr; gap:8px; align-items:center;
  padding:11px 20px; font-family:var(--f-mono); font-size:.74rem; color:var(--ink-dim); border-top:1px solid rgba(201,162,39,.07)}
.rec-row:first-of-type{border-top:0}
.rec-head{color:var(--ink-faint); font-size:.58rem; letter-spacing:.16em; text-transform:uppercase}
.rec-name{font-family:var(--f-display); font-size:1rem; color:var(--paper); font-weight:600}
.rec-name b{font-family:var(--f-brush); font-weight:400; color:var(--amber); font-size:.9rem; margin-left:6px}
.rec-w{color:var(--jade)} .rec-l{color:var(--vermilion)}
.rec-bar{height:6px; border-radius:4px; background:rgba(90,60,20,.3); overflow:hidden}
.rec-bar i{display:block; height:100%; background:linear-gradient(90deg,var(--amber),var(--gold-hi))}

.dash-reset{display:flex; justify-content:flex-end; margin-top:-24px; margin-bottom:30px}
.dash-reset button{background:none; border:0; cursor:pointer; font-family:var(--f-mono); font-size:.6rem;
  letter-spacing:.14em; text-transform:uppercase; color:var(--ink-faint)}
.dash-reset button:hover{color:var(--vermilion)}

/* arena (shared with duel engine) */
.stage-wrap{max-width:920px; margin:0 auto}
.select-title{text-align:center; font-family:var(--f-display); font-style:italic; font-size:1.5rem; color:var(--amber-hot); margin:0 0 26px}
.arena{margin-top:6px}
.screen-panel{position:relative; border-radius:16px; padding:26px 22px 22px;
  background:radial-gradient(120% 90% at 50% 30%, rgba(243,230,198,.92), rgba(236,214,168,.74) 55%, rgba(214,190,150,.5) 100%);
  box-shadow:0 0 70px -10px rgba(227,154,46,.5), inset 0 0 0 1px rgba(201,162,39,.4), inset 0 0 60px rgba(227,154,46,.25);
  overflow:hidden}
.screen-panel::after{content:""; position:absolute; inset:0; pointer-events:none;
  background:url(../assets/paper.png); background-size:300px; opacity:.5; mix-blend-mode:multiply}
.lantern-top{position:absolute; top:-40px; left:50%; transform:translateX(-50%); width:200px; height:70px;
  background:radial-gradient(ellipse at 50% 0%, rgba(245,183,92,.75), transparent 70%); filter:blur(3px); animation:flicker 4.5s ease-in-out infinite}
.combatant{position:relative; z-index:2; display:flex; flex-direction:column; gap:7px; max-width:44%}
.side-p{align-items:flex-start}
.side-o{align-items:flex-end; margin-left:auto; text-align:right}
.cbt-name{font-family:var(--f-display); font-weight:700; font-size:1.15rem; color:#2a1c10; line-height:1}
.cbt-style{font-family:var(--f-mono); font-size:.56rem; letter-spacing:.16em; text-transform:uppercase; color:#7a5a2c}
.hpbar{position:relative; width:172px; max-width:42vw; height:11px; border-radius:6px; background:rgba(60,38,16,.30);
  overflow:hidden; box-shadow:inset 0 0 0 1px rgba(90,60,20,.4)}
.hpbar i{position:absolute; top:0; left:0; height:100%; border-radius:6px; width:100%}
.hpbar .hp-ghost{background:rgba(255,246,224,.6); transition:width .55s var(--ease) .12s}
.hpbar .hp-fill{background:linear-gradient(90deg,var(--amber),var(--gold-hi)); box-shadow:0 0 10px rgba(236,203,110,.5); transition:width .14s linear}
.hpbar-o .hp-fill{background:linear-gradient(90deg,var(--vermilion),var(--amber-hot))}
.stage{position:relative; height:250px; margin:8px 0 18px; z-index:1}
.fighter{position:absolute; bottom:0; height:100%; --dir:1}
.fighter .flip{height:100%; transition:filter .12s ease}
.fighter img{height:100%; width:auto; object-fit:contain; transform-origin:50% 92%;
  animation:breathe 3.4s ease-in-out infinite}
.fighter-p{left:3%; --dir:1}
.fighter-o{right:3%; --dir:-1}
.fighter-o .flip{transform:scaleX(-1)}
.fighter-o img{animation-delay:-1.7s}
.fighter .flip.flash{filter:brightness(2.3) contrast(1.05) saturate(.6)}
.fighter.enter{animation:fEnter .55s var(--ease) both}
.fighter.lunge{animation:lunge .58s var(--ease)}
.fighter.recoil{animation:recoil .5s var(--ease)}
.fighter.dodge{animation:dodge .5s var(--ease)}
.fighter.victory .flip{filter:drop-shadow(0 0 26px rgba(245,183,92,.6))}
.fighter.victory img{animation:victoryBob 1.5s ease-in-out infinite}
.fighter.fallen{transition:opacity .75s ease, transform .75s var(--ease), filter .75s ease;
  opacity:.08; transform:translateY(16%) rotate(calc(var(--dir)*6deg)); filter:grayscale(1) blur(2px)}

.clash{position:absolute; top:42%; left:50%; width:130px; height:130px; transform:translate(-50%,-50%) scale(0);
  border-radius:50%; pointer-events:none; opacity:0; z-index:4;
  background:radial-gradient(circle, rgba(255,244,214,.95), rgba(245,183,92,.5) 40%, transparent 72%)}
.clash.flash{animation:clash .5s ease-out}

/* impact fx */
.fx{position:absolute; z-index:5; pointer-events:none}
.spark{position:absolute; left:0; top:0; width:9px; height:9px; border-radius:50%;
  transform:translate(-50%,-50%);
  background:radial-gradient(circle,#fff 10%,var(--amber-hot) 45%,transparent 72%);
  animation:sparkFly .52s ease-out forwards}
.dmg{position:absolute; z-index:6; transform:translate(-50%,-50%); pointer-events:none;
  font-family:var(--f-display); font-weight:700; font-size:1.9rem; color:var(--vermilion);
  text-shadow:0 2px 10px rgba(0,0,0,.45); animation:dmgFloat .95s ease-out forwards}
.dmg.crit{color:var(--amber-hot); font-size:2.4rem}
.dmg.miss{color:#7a5a2c; font-style:italic; font-weight:600; font-size:1.45rem}
.ember{position:absolute; bottom:6%; width:5px; height:5px; border-radius:50%; opacity:0;
  background:radial-gradient(circle,var(--amber-hot),transparent 70%); animation:ember 4.5s linear infinite}
.screen-panel.shake{animation:shake .4s ease}
.screen-panel.lightup{animation:lightup 1s ease}

@keyframes breathe{0%,100%{transform:translateY(0) scale(1) rotate(-.5deg)}50%{transform:translateY(-2%) scale(1.02) rotate(.5deg)}}
@keyframes lunge{0%{transform:translateX(0) rotate(0) scale(1)}
  22%{transform:translateX(calc(var(--dir)*-8%)) rotate(calc(var(--dir)*-2deg)) scale(1.02)}
  52%{transform:translateX(calc(var(--dir)*50%)) rotate(calc(var(--dir)*3deg)) scale(1.05)}
  100%{transform:translateX(0) rotate(0) scale(1)}}
@keyframes recoil{0%{transform:translateX(0)}
  28%{transform:translateX(calc(var(--dir)*-17%)) rotate(calc(var(--dir)*-5deg))}
  100%{transform:translateX(0)}}
@keyframes dodge{0%{transform:translateX(0);opacity:1}
  35%{transform:translateX(calc(var(--dir)*-24%)) skewX(calc(var(--dir)*-8deg));opacity:.4}
  100%{transform:translateX(0);opacity:1}}
@keyframes fEnter{0%{opacity:0; transform:translateX(calc(var(--dir)*42%))}100%{opacity:1; transform:translateX(0)}}
@keyframes victoryBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-5%)}}
@keyframes sparkFly{0%{opacity:1; transform:translate(-50%,-50%) scale(1)}
  100%{opacity:0; transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.3)}}
@keyframes dmgFloat{0%{opacity:0; transform:translate(-50%,-40%) scale(.7)}
  22%{opacity:1; transform:translate(-50%,-64%) scale(1.12)}
  100%{opacity:0; transform:translate(-50%,-150%) scale(1)}}
@keyframes ember{0%{opacity:0; transform:translateY(0) scale(.6)}15%{opacity:.85}
  100%{opacity:0; transform:translateY(-170px) translateX(14px) scale(1)}}
@keyframes shake{10%{transform:translate(-3px,2px)}20%{transform:translate(4px,-2px)}
  30%{transform:translate(-6px,-1px)}40%{transform:translate(5px,3px)}50%{transform:translate(-4px,1px)}
  60%{transform:translate(4px,-2px)}70%{transform:translate(-3px,2px)}80%{transform:translate(2px,-1px)}100%{transform:translate(0,0)}}
@keyframes lightup{
  0%{box-shadow:0 0 0 rgba(227,154,46,0), inset 0 0 0 1px rgba(201,162,39,.4), inset 0 0 0 rgba(227,154,46,0)}
  50%{box-shadow:0 0 120px -6px rgba(245,183,92,.8), inset 0 0 0 1px rgba(201,162,39,.5), inset 0 0 90px rgba(227,154,46,.4)}
  100%{box-shadow:0 0 70px -10px rgba(227,154,46,.5), inset 0 0 0 1px rgba(201,162,39,.4), inset 0 0 60px rgba(227,154,46,.25)}}
.lampwright{min-height:2.6em; text-align:center; font-family:var(--f-display); font-style:italic;
  font-size:1.18rem; color:var(--gold-hi); margin:8px auto 20px; max-width:600px; line-height:1.4}
.moves{display:flex; justify-content:center; gap:14px; flex-wrap:wrap}
.move{display:flex; flex-direction:column; align-items:center; gap:3px; cursor:pointer; min-width:118px;
  padding:14px 16px 12px; border-radius:10px; color:var(--ink); border:1px solid var(--hair-soft);
  background:linear-gradient(180deg, rgba(30,34,66,.55), rgba(13,15,32,.6)); transition:.24s var(--ease)}
.move svg{color:var(--amber); margin-bottom:2px}
.move span{font-family:var(--f-display); font-weight:600; font-size:1.12rem; color:var(--paper)}
.move em{font-family:var(--f-mono); font-size:.54rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-faint); font-style:normal}
.move:hover:not(:disabled){transform:translateY(-3px); border-color:rgba(236,203,110,.55); box-shadow:0 12px 30px -14px rgba(227,154,46,.6)}
.move:hover:not(:disabled) svg{color:var(--amber-hot)}
.move:disabled{opacity:.4; cursor:default}
.move.chosen{border-color:var(--amber); box-shadow:0 0 0 1px var(--amber)}
.verdict{text-align:center; margin-top:6px}
.verdict-text{font-family:var(--f-display); font-size:1.6rem; color:var(--paper); margin:0 0 18px}
.verdict-text.win{color:var(--gold-hi)}
.verdict-text.lose{color:var(--vermilion)}
.verdict-btns{display:flex; justify-content:center; gap:12px; flex-wrap:wrap}
.stage-note{max-width:640px; margin:34px auto 0; text-align:center; font-size:.96rem; color:var(--ink-dim); font-style:italic}
.stage-note em{color:var(--gold-hi)}

/* ---- summon panel ---- */
.summon{max-width:720px; margin:0 auto 30px; padding:22px 22px 18px; border:1px solid var(--hair-soft); border-radius:14px;
  background:linear-gradient(180deg, rgba(30,34,66,.45), rgba(13,15,32,.55)); text-align:center}
.summon-title{font-family:var(--f-display); font-weight:600; font-size:1.5rem; color:var(--paper); margin:0 0 6px}
.summon-hint{font-size:.92rem; color:var(--ink-dim); margin:0 0 16px}
.summon-row{display:flex; gap:10px; max-width:560px; margin:0 auto}
.summon-input{flex:1; min-width:0; font-family:var(--f-body); font-size:.98rem; color:var(--ink);
  background:rgba(15,17,36,.6); border:1px solid var(--hair-soft); border-radius:8px; padding:.7em .9em; transition:border-color .2s}
.summon-input::placeholder{color:var(--ink-faint)}
.summon-input:focus{outline:none; border-color:rgba(236,203,110,.6)}
.summon-foot{display:flex; align-items:center; justify-content:space-between; gap:14px; margin-top:12px; flex-wrap:wrap}
.summon-link{background:none; border:0; cursor:pointer; font-family:var(--f-mono); font-size:.66rem; letter-spacing:.12em;
  text-transform:uppercase; color:var(--gold-hi); padding:4px 0}
.summon-link:hover{color:var(--amber-hot)}
.summon-link:disabled{opacity:.5; cursor:default}
.summon-status{flex:1; min-width:180px; text-align:right; font-family:var(--f-display); font-style:italic; font-size:.95rem; color:var(--gold-hi)}

/* ---- roster badges for cut/custom shadows ---- */
.rcard-badge{position:absolute; top:8px; right:8px; z-index:2; font-family:var(--f-mono); font-size:.5rem;
  letter-spacing:.12em; text-transform:uppercase; color:var(--indigo-deep);
  background:linear-gradient(160deg,var(--gold-hi),var(--gold)); border-radius:20px; padding:3px 7px}
.rcard.is-custom{border-color:rgba(201,162,39,.35)}
.rcard.fresh{animation:cardFresh 1.4s var(--ease)}
@keyframes cardFresh{0%{box-shadow:0 0 0 2px var(--amber-hot), 0 0 30px rgba(245,183,92,.6)}100%{box-shadow:0 0 0 0 rgba(245,183,92,0)}}

/* ---- global leaderboard ---- */
.lb-sub{font-family:var(--f-mono); font-size:.56rem; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-faint); margin-left:8px}
.lb-empty{padding:18px 20px; font-family:var(--f-display); font-style:italic; color:var(--ink-dim); text-align:center}

/* ---- verdict recap (AI) ---- */
.verdict-recap{max-width:560px; margin:0 auto 18px; font-family:var(--f-display); font-style:italic; font-size:1.15rem;
  line-height:1.5; color:var(--gold-hi)}
.recap-copy{font-size:.7rem}

/* ============================================================ ANIMATION */
@keyframes flicker{0%,100%{opacity:.92; transform:translateY(-50%) scale(1)}20%{opacity:1; transform:translateY(-50%) scale(1.015)}
  35%{opacity:.85}50%{opacity:.97; transform:translateY(-50%) scale(1.008)}70%{opacity:.8}85%{opacity:1}}
@keyframes swayFig{0%,100%{transform:translateY(0) rotate(-.5deg)}50%{transform:translateY(-10px) rotate(.5deg)}}
@keyframes sway{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}
@keyframes bobY{0%,100%{margin-top:0}50%{margin-top:14px}}
@keyframes bob{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(6px)}}
@keyframes clash{0%{opacity:0; transform:translate(-50%,-50%) scale(.2)}30%{opacity:1; transform:translate(-50%,-50%) scale(1.1)}100%{opacity:0; transform:translate(-50%,-50%) scale(1.5)}}
@keyframes shimmer{to{background-position:220% center}}
@keyframes clouds{from{background-position:0 0}to{background-position:-1500px 0}}
@keyframes driftA{0%,100%{transform:translate(0,0) rotate(0deg)}50%{transform:translate(-26px,18px) rotate(2deg)}}
@keyframes driftB{0%,100%{transform:translate(0,0) rotate(0deg)}50%{transform:translate(30px,-14px) rotate(-2deg)}}
@keyframes flutter{
  0%{transform:translate(0,0) rotate(-6deg)} 25%{transform:translate(24px,-20px) rotate(8deg)}
  50%{transform:translate(48px,-6px) rotate(-4deg)} 75%{transform:translate(22px,16px) rotate(6deg)}
  100%{transform:translate(0,0) rotate(-6deg)}}

.reveal{opacity:0; transform:translateY(24px); transition:opacity .8s var(--ease), transform .8s var(--ease)}
.reveal.in{opacity:1; transform:none}

/* ============================================================ RESPONSIVE */
@media (max-width:900px){
  .nav-links{display:none}
  .nav-toggle{display:flex}
  .hero-inner{grid-template-columns:1fr; gap:10px}
  .hero-figure{order:-1; margin-bottom:10px}
  .hero-figure img{width:min(66%,280px)}
  .hero-sub{max-width:none}
  .moon,.hero-glow{right:-20%; top:30%}
  .roster{grid-template-columns:repeat(2,1fr)}
  .stat-grid{grid-template-columns:repeat(2,1fr)}
  .manual-grid{grid-template-columns:1fr}
  .disclaimer{text-align:left}
  .dash{grid-template-columns:repeat(4,1fr)}
  .dash-card{grid-column:span 2}
  .dash-wide{grid-column:span 4}
}
@media (max-width:560px){
  .section{padding:72px 20px}
  .hero{padding-top:104px}
  .cd-unit{min-width:46px}
  .cd-unit span{font-size:1.35rem}
  .flow-arrow{transform:rotate(90deg)}
  .stage{height:180px}
  .move{min-width:96px; padding:12px 10px}
  .footer-top{flex-direction:column}
  .dash{grid-template-columns:repeat(2,1fr)}
  .dash-card{grid-column:span 1}
  .dash-wide{grid-column:span 2}
  .rec-row{grid-template-columns:1.2fr .8fr .8fr .8fr; font-size:.68rem; padding:10px 14px}
  .rec-row .rec-bar{display:none}
  .lantern{display:none}
}
@media (max-width:440px){ .nav-right .btn-buy{display:none} }

@media (prefers-reduced-motion:reduce){
  *{animation:none !important; scroll-behavior:auto !important}
  .reveal{opacity:1; transform:none; transition:none}
  .fighter{transition:none}
}
:focus-visible{outline:2px solid var(--amber-hot); outline-offset:3px; border-radius:3px}
