/* tofai · 异界召唤阵 */
:root{
  --bg:#160b26;
  --bg-d:#10071c;
  --paper:#f7f2ff;
  --mist:#efe6fd;
  --ink:#2a1a3e;
  --ink-soft:#6f6290;
  --tx:#efe9fb;
  --tx-soft:#b3a6d4;
  --line-d:rgba(239,233,251,.13);
  --brand:#a855f7;
  --brand-d:#7e22ce;
  --gold:#f59e0b;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;color:var(--tx);background:var(--bg);line-height:1.7;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
a{text-decoration:none;color:inherit}
ul,ol{list-style:none}
.wrap{max-width:1140px;margin:0 auto;padding:0 24px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.rv{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s ease}
.rv.in{opacity:1;transform:none}

/* 按钮 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:700;border-radius:12px;padding:10px 22px;font-size:15px;transition:.25s;border:1.5px solid transparent;cursor:pointer}
.btn-lg{padding:14px 30px;font-size:16px}
.btn-pri{background:linear-gradient(135deg,var(--brand),var(--brand-d));color:#fff;box-shadow:0 10px 26px rgba(168,85,247,.45)}
.btn-pri:hover{filter:brightness(1.12);transform:translateY(-2px)}
.btn-ghost{border-color:rgba(239,233,251,.5);color:var(--tx);background:transparent}
.btn-ghost:hover{border-color:var(--brand);color:var(--brand);transform:translateY(-2px)}

/* 头部 */
.hd{position:sticky;top:0;z-index:60;background:rgba(22,11,38,.9);backdrop-filter:blur(10px);border-bottom:1px solid var(--line-d)}
.hd-in{display:flex;align-items:center;gap:28px;height:66px}
.brand{display:flex;align-items:center;gap:10px;flex-shrink:0}
.brand img{border-radius:10px}
.brand-t{display:flex;flex-direction:column;line-height:1.25}
.brand-t strong{font-size:19px;letter-spacing:1px;color:#fff}
.brand-t small{font-size:11px;color:var(--tx-soft)}
.nav{display:flex;gap:4px;margin-left:auto}
.nav a{padding:8px 13px;border-radius:9px;font-size:14.5px;color:var(--tx-soft);transition:.2s}
.nav a:hover{color:#fff;background:rgba(168,85,247,.16)}
.nav a.on{color:var(--brand);font-weight:700}
.hd-r{display:flex;align-items:center;gap:12px}
.hd-cta{padding:9px 20px;font-size:14px}
.burger{display:none;width:40px;height:40px;border:1.5px solid var(--line-d);border-radius:10px;background:rgba(255,255,255,.06);cursor:pointer;position:relative}
.burger span{position:absolute;left:10px;right:10px;height:2px;background:var(--tx);transition:.25s}
.burger span:nth-child(1){top:13px}
.burger span:nth-child(2){top:19px}
.burger span:nth-child(3){top:25px}
.burger.on span:nth-child(1){top:19px;transform:rotate(45deg)}
.burger.on span:nth-child(2){opacity:0}
.burger.on span:nth-child(3){top:19px;transform:rotate(-45deg)}

/* 英雄区 */
.hero{position:relative;overflow:hidden;background:radial-gradient(900px 520px at 78% 8%,rgba(126,34,206,.4),transparent 62%),radial-gradient(640px 420px at 8% 90%,rgba(245,158,11,.12),transparent 66%),var(--bg)}
.hero-glow{position:absolute;inset:0;pointer-events:none;background:radial-gradient(300px 300px at 50% 118%,rgba(168,85,247,.22),transparent 70%)}
.hero-in{position:relative;display:grid;grid-template-columns:1.06fr .94fr;gap:44px;align-items:center;padding:78px 24px 92px}
.kick{display:inline-flex;align-items:center;gap:10px;font-size:12.5px;letter-spacing:2.5px;font-weight:700;color:var(--gold)}
.kick-gem{width:12px;height:12px;background:var(--gold);transform:rotate(45deg);display:inline-block}
.hero-l h1{font-size:60px;letter-spacing:3px;margin:14px 0 6px;color:#fff;font-weight:800}
.hero-slogan{font-size:26px;margin-bottom:18px;color:var(--tx)}
.hero-slogan em{font-style:normal;color:var(--brand);border-bottom:3px solid var(--gold);padding-bottom:2px}
.lead{font-size:15.5px;color:var(--tx-soft);max-width:520px;margin-bottom:28px}
.hero-acts{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:26px}
.hero-points{display:flex;gap:12px;flex-wrap:wrap}
.hero-points li{border:1.5px solid var(--line-d);background:rgba(255,255,255,.05);border-radius:10px;padding:7px 14px;font-size:13px;color:var(--tx-soft)}
.hero-points b{color:var(--gold);margin-right:4px}

/* 召唤阵装置 */
.hero-r{position:relative;display:flex;justify-content:center;padding:26px 0}
.sum-ring{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}
.sr{position:absolute;border-radius:50%;border:2px dashed rgba(245,158,11,.55)}
.sr-1{width:360px;height:360px;animation:spin 26s linear infinite}
.sr-2{width:420px;height:420px;border-color:rgba(168,85,247,.4);animation:spin 38s linear infinite reverse}
@keyframes spin{to{transform:rotate(360deg)}}
.sum-shot{position:relative;z-index:2;border:2px solid rgba(168,85,247,.65);border-radius:14px;overflow:hidden;box-shadow:0 30px 70px rgba(0,0,0,.55);transform:rotate(1.8deg)}
.rune{position:absolute;z-index:3;padding:10px 14px;border-radius:6px;display:flex;flex-direction:column;line-height:1.35;border:2px solid var(--bg-d)}
.rune b{font-size:16px}
.rune span{font-size:11.5px;opacity:.85}
.rune-a{left:2%;top:14%;background:var(--brand);color:#fff;box-shadow:6px 6px 0 rgba(245,158,11,.85);transform:rotate(-5deg)}
.rune-b{right:0;bottom:12%;background:#fff;color:var(--brand-d);box-shadow:-7px 5px 0 rgba(168,85,247,.6);transform:rotate(4deg)}

/* 数据条 */
.stats{padding:0 0 70px;margin-top:-38px;position:relative;z-index:4}
.st-in{display:grid;grid-template-columns:repeat(4,1fr);background:#20113a;border:1.5px solid rgba(168,85,247,.35);border-radius:16px;box-shadow:0 14px 34px rgba(0,0,0,.4);overflow:hidden}
.st{padding:24px 18px;text-align:center;border-left:1px dashed rgba(168,85,247,.3)}
.st:first-child{border-left:none}
.st b{display:block;font-size:30px;color:var(--brand);font-variant-numeric:tabular-nums}
.st:nth-child(even) b{color:var(--gold)}
.st span{font-size:13px;color:var(--tx-soft)}

/* 区块头 */
.sec-head{text-align:center;max-width:640px;margin:0 auto 44px}
.sec-kick{font-size:12px;letter-spacing:3px;font-weight:700;color:var(--gold);margin-bottom:10px}
.sec-head h2{font-size:30px;letter-spacing:1px;color:#fff}
.sec-sub{margin-top:10px;font-size:14.5px;color:var(--tx-soft)}
.sec-head.light h2{color:#fff}
.sec-head.light .sec-sub{color:var(--tx-soft)}

/* 角色群像 */
.roles{padding:80px 0 84px}
.rl-in{display:grid;grid-template-columns:340px 1fr;gap:38px;align-items:center}
.rl-poster{border:2px solid rgba(168,85,247,.5);border-radius:16px;overflow:hidden;position:relative}
.rl-poster figcaption{position:absolute;left:12px;bottom:12px;background:rgba(16,7,28,.85);color:var(--gold);font-size:12.5px;font-weight:700;padding:6px 12px;border-radius:8px}
.rl-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.rc{position:relative;background:#1e1033;border:1.5px solid var(--line-d);border-top:4px solid var(--brand);border-radius:14px;padding:24px 22px 20px;box-shadow:0 12px 28px rgba(0,0,0,.35);transition:.25s}
.rc:hover{transform:translateY(-5px)}
.rc-tag{display:inline-block;border:1.5px solid var(--brand);color:var(--brand);font-size:12px;font-weight:700;padding:3px 10px;border-radius:6px;margin-bottom:12px}
.rc-tag-g{border-color:var(--gold);color:var(--gold)}
.rc h3{font-size:21px;color:#fff;margin-bottom:6px}
.rc-desc{font-size:13.5px;color:var(--tx-soft);min-height:66px}
.rc-data{margin-top:14px;padding-top:12px;border-top:1px dashed rgba(168,85,247,.3);font-size:12.5px;color:var(--gold);font-weight:700}

/* 对话剧场 */
.theater{background:var(--bg-d);padding:80px 0 78px}
.th-in{display:grid;grid-template-columns:280px 1fr;gap:44px;align-items:center}
.th-shot{border:2px solid rgba(245,158,11,.5);border-radius:14px;overflow:hidden;transform:rotate(-2deg)}
.th-board{background:#1c0f31;border:1.5px solid rgba(168,85,247,.4);border-radius:18px;padding:30px 30px 24px;box-shadow:0 26px 58px rgba(0,0,0,.5)}
.tb-row{display:flex;gap:12px;margin-bottom:16px;align-items:flex-start}
.tb-row b{flex-shrink:0;font-size:12px;padding:5px 11px;border-radius:8px;margin-top:2px}
.tb-ai b{background:rgba(168,85,247,.25);color:var(--brand)}
.tb-me{flex-direction:row-reverse}
.tb-me b{background:rgba(245,158,11,.2);color:var(--gold)}
.tb-row p{max-width:420px;font-size:14px;padding:11px 15px;border-radius:12px;line-height:1.6}
.tb-ai p{background:rgba(168,85,247,.14);border:1px solid rgba(168,85,247,.3);border-top-left-radius:3px}
.tb-me p{background:rgba(245,158,11,.12);border:1px solid rgba(245,158,11,.32);border-top-right-radius:3px}
.tb-note{border-top:1px dashed rgba(168,85,247,.3);padding-top:16px;font-size:12.5px;color:var(--tx-soft)}

/* 炼成工房（浅色） */
.workshop{background:var(--paper);color:var(--ink);padding:80px 0 84px}
.workshop .sec-head h2{color:var(--ink)}
.workshop .sec-sub{color:var(--ink-soft)}
.wk-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-bottom:44px}
.wk-step{background:#fff;border:2px solid var(--ink);border-radius:12px;padding:22px 22px 20px;box-shadow:7px 7px 0 rgba(245,158,11,.5)}
.wk-no{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;background:var(--brand);color:#fff;border-radius:9px;font-weight:800;margin-bottom:12px}
.wk-step-g .wk-no{background:var(--gold);color:var(--ink)}
.wk-step h3{font-size:18px;margin-bottom:6px}
.wk-step p{font-size:13.5px;color:var(--ink-soft)}
.wk-in{display:grid;grid-template-columns:280px 280px 1fr;gap:30px;align-items:center}
.wk-shot{background:#fff;border:2px solid var(--ink);border-radius:14px;padding:12px;transform:rotate(-1.6deg)}
.wk-shot-t{transform:rotate(1.8deg)}
.wk-shot img{border-radius:8px}
.wk-shot figcaption{padding-top:10px;font-size:13px;font-weight:700;text-align:center;color:var(--ink)}
.wk-tags{display:flex;flex-wrap:wrap;gap:12px}
.wk-tag{border:1.5px solid var(--ink);border-radius:8px;background:#fff;padding:9px 18px;font-size:14px;font-weight:700;transform:rotate(-1.5deg)}
.wk-tags .wk-tag:nth-child(2n){transform:rotate(1.6deg)}
.wk-tags .wk-tag:nth-child(3n){transform:rotate(-2.4deg)}
.wk-tag-hot{background:var(--brand);border-color:var(--brand-d);color:#fff}
.wk-tag-g{background:var(--gold);border-color:#d97706;color:var(--ink)}

/* 魔导引擎 */
.engines{background:var(--bg-d);padding:80px 0 78px}
.en-in{display:grid;grid-template-columns:280px 1fr;gap:44px;align-items:center}
.en-shot{border:2px solid rgba(168,85,247,.55);border-radius:14px;overflow:hidden;transform:rotate(2deg)}
.en-list{display:flex;flex-direction:column;gap:14px}
.en-card{display:flex;gap:18px;align-items:flex-start;background:#1c0f31;border:1.5px solid var(--line-d);border-left:4px solid var(--brand);border-radius:12px;padding:16px 20px;transition:.25s}
.en-card:hover{border-color:var(--brand)}
.en-no{flex-shrink:0;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:rgba(168,85,247,.2);border:1.5px solid var(--brand);color:var(--brand);border-radius:10px;font-weight:800;font-size:16px}
.en-card:nth-child(even) .en-no{background:rgba(245,158,11,.16);border-color:var(--gold);color:var(--gold)}
.en-card h3{font-size:16px;color:#fff}
.en-card p{font-size:13px;color:var(--tx-soft);margin-top:3px}
.en-cost{display:inline-block;margin-top:8px;font-size:11.5px;font-weight:700;color:var(--gold);border:1px solid rgba(245,158,11,.5);padding:3px 9px;border-radius:6px}

/* 异界实拍（浅色） */
.shots{background:var(--paper);color:var(--ink);padding:78px 0 80px}
.shots .sec-head h2{color:var(--ink)}
.shots .sec-sub{color:var(--ink-soft)}
.film{display:grid;grid-template-columns:repeat(5,1fr);gap:18px}
.fl{background:#fff;border:1.5px solid rgba(42,26,62,.16);border-radius:14px;padding:12px 12px 14px;transition:.25s}
.fl:hover{transform:translateY(-4px)}
.fl img{border-radius:8px}
.fl figcaption{padding-top:10px;line-height:1.45}
.fl b{display:block;font-size:14px}
.fl span{font-size:12px;color:var(--ink-soft)}

/* 常见疑问 */
.faq{padding:80px 0 78px}
.acc{max-width:820px;margin:0 auto;display:flex;flex-direction:column;gap:14px}
.acc-item{background:#1e1033;border:1.5px solid var(--line-d);border-radius:13px;box-shadow:0 8px 20px rgba(0,0,0,.3);overflow:hidden}
.acc-q{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;background:none;border:none;cursor:pointer;text-align:left;font-size:16px;font-weight:700;color:#fff;padding:19px 22px;font-family:inherit}
.acc-ic{position:relative;flex-shrink:0;width:22px;height:22px;border:2px solid var(--gold);border-radius:7px}
.acc-ic::before,.acc-ic::after{content:"";position:absolute;background:var(--gold);left:50%;top:50%;transform:translate(-50%,-50%)}
.acc-ic::before{width:10px;height:2px}
.acc-ic::after{width:2px;height:10px;transition:.25s}
.acc-item.on .acc-ic{border-color:var(--brand)}
.acc-item.on .acc-ic::before{background:var(--brand)}
.acc-item.on .acc-ic::after{transform:translate(-50%,-50%) scaleY(0)}
.acc-body{max-height:0;overflow:hidden;transition:max-height .35s ease}
.acc-item.on .acc-body{max-height:300px}
.acc-body p{padding:15px 22px 20px;font-size:14.5px;color:var(--tx-soft);border-top:1px dashed rgba(168,85,247,.3)}

/* 旅人留言（浅色） */
.notes{background:var(--paper);color:var(--ink);padding:78px 0 84px}
.notes .sec-head h2{color:var(--ink)}
.notes .sec-sub{color:var(--ink-soft)}
.nt-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.nt{position:relative;background:#fff;border:2px solid var(--ink);border-radius:8px;padding:25px 20px 17px;box-shadow:5px 5px 0 rgba(168,85,247,.35)}
.nt::before{content:"";position:absolute;top:-10px;left:50%;width:70px;height:20px;transform:translateX(-50%) rotate(-2deg);border-radius:3px}
.nt-a::before{background:rgba(168,85,247,.32)}
.nt-b::before{background:rgba(245,158,11,.4);transform:translateX(-50%) rotate(2.2deg)}
.nt-c::before{background:rgba(42,26,62,.22);transform:translateX(-50%) rotate(-3.2deg)}
.nt-txt{font-size:14px;min-height:106px}
.nt-meta{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:13px;padding-top:12px;border-top:1px dashed rgba(42,26,62,.2)}
.nt-meta b{font-size:13.5px;color:var(--brand-d)}
.nt-c .nt-meta b{color:#b45309}
.nt-meta time{font-size:11.5px;color:var(--ink-soft);font-variant-numeric:tabular-nums}

/* 召唤下载区 */
.gate{padding:80px 0 90px;background:var(--bg)}
.summon{display:grid;grid-template-columns:1.25fr .75fr;gap:40px;align-items:center;background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%);border-radius:24px;padding:56px 54px;box-shadow:0 24px 56px rgba(245,158,11,.3);position:relative;overflow:hidden}
.summon::after{content:"";position:absolute;right:-80px;bottom:-80px;width:260px;height:260px;border-radius:50%;border:26px dashed rgba(255,255,255,.25)}
.sm-kick{font-size:12px;letter-spacing:3px;font-weight:700;color:rgba(22,11,38,.7);margin-bottom:12px}
.summon h2{font-size:36px;color:var(--bg-d);line-height:1.35;letter-spacing:1px}
.summon h2 em{font-style:normal;color:#fff;border-bottom:3px solid var(--bg-d);padding-bottom:2px}
.sm-sub{margin:16px 0 26px;font-size:14.5px;color:rgba(22,11,38,.82);max-width:460px}
.sm-acts{display:flex;gap:14px;flex-wrap:wrap}
.summon .btn-pri{background:var(--bg-d);color:#fff;box-shadow:none}
.summon .btn-pri:hover{background:#2a1150}
.summon .btn-ghost{border-color:rgba(22,11,38,.55);color:var(--bg-d)}
.summon .btn-ghost:hover{border-color:var(--bg-d);background:rgba(255,255,255,.16);color:var(--bg-d)}
.sm-r{position:relative;z-index:2;display:flex;justify-content:center}
.sm-sigil{position:relative;width:230px;height:230px;border-radius:50%;background:rgba(22,11,38,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;transform:rotate(-4deg)}
.ss-ring{position:absolute;inset:10px;border-radius:50%;border:2px dashed var(--gold);animation:spin 22s linear infinite}
.sm-sigil b{font-size:30px;color:#fff;letter-spacing:2px}
.sm-sigil span{font-size:11.5px;color:rgba(239,233,251,.7)}
.ss-line{width:70px;height:2px;background:var(--brand);margin-top:6px}

/* 页脚 */
.ft{background:var(--bg-d);color:var(--tx-soft);padding:36px 0;border-top:1px solid var(--line-d)}
.ft-in{display:flex;align-items:center;gap:34px;flex-wrap:wrap}
.ft-brand{display:flex;align-items:center;gap:10px}
.ft-brand img{border-radius:9px}
.ft-brand strong{color:#fff;font-size:17px;letter-spacing:1px}
.ft-brand span{font-size:12px;color:rgba(179,166,212,.6)}
.ft-nav{display:flex;gap:18px;flex-wrap:wrap;margin-left:auto}
.ft-nav a{font-size:13px;color:var(--tx-soft);transition:.2s}
.ft-nav a:hover{color:var(--gold)}
.ft-copy{width:100%;border-top:1px solid var(--line-d);padding-top:16px;font-size:12.5px;color:rgba(179,166,212,.55);display:flex;flex-direction:column;gap:3px}
.ft-copy a{color:inherit}
.ft-copy a:hover{color:var(--gold)}

/* 悬浮件 */
.float-complaint{position:fixed;right:24px;bottom:220px;z-index:70;width:62px;background:#1e1033;border:1.5px solid var(--line-d);border-radius:14px;display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 0 9px;color:var(--tx-soft);font-size:11.5px;font-weight:700;box-shadow:0 6px 16px rgba(0,0,0,.25);transition:.25s}
.float-complaint:hover{color:#fff;border-color:var(--brand);transform:translateY(-2px)}
.backtop{position:fixed;right:24px;bottom:160px;z-index:70;width:44px;height:44px;border-radius:13px;background:#1e1033;border:1.5px solid var(--line-d);cursor:pointer;opacity:0;pointer-events:none;transition:.3s}
.backtop.show{opacity:1;pointer-events:auto}
.backtop::before{content:"";position:absolute;left:50%;top:50%;width:11px;height:11px;border-left:2.5px solid var(--tx-soft);border-top:2.5px solid var(--tx-soft);transform:translate(-50%,-30%) rotate(45deg)}
.backtop:hover{border-color:var(--brand)}

/* 响应式 */
@media(max-width:1020px){
  .nav{position:fixed;top:66px;left:0;right:0;background:#1c0f31;flex-direction:column;padding:14px 20px 20px;gap:6px;border-bottom:1.5px solid var(--line-d);display:none;z-index:59}
  .nav.open{display:flex}
  .burger{display:block}
  .hd-cta{display:none}
  .hero-in{grid-template-columns:1fr;padding:56px 24px 76px;gap:56px}
  .hero-l h1{font-size:46px}
  .sr-1{width:300px;height:300px}
  .sr-2{width:350px;height:350px}
  .st-in{grid-template-columns:repeat(2,1fr)}
  .st:nth-child(3){border-left:none}
  .st{border-top:1px dashed rgba(168,85,247,.3)}
  .st:nth-child(-n+2){border-top:none}
  .rl-in{grid-template-columns:1fr}
  .rl-poster{max-width:320px;margin:0 auto}
  .th-in,.en-in{grid-template-columns:1fr;gap:40px}
  .th-shot,.en-shot{max-width:280px;margin:0 auto}
  .wk-steps{grid-template-columns:1fr}
  .wk-in{grid-template-columns:1fr;gap:34px}
  .wk-shot{max-width:280px;margin:0 auto}
  .wk-tags{justify-content:center}
  .film{grid-template-columns:repeat(3,1fr)}
  .nt-grid{grid-template-columns:repeat(2,1fr)}
  .summon{grid-template-columns:1fr;padding:44px 34px}
  .sm-r{display:none}
}
@media(max-width:640px){
  .hero-l h1{font-size:40px}
  .hero-slogan{font-size:21px}
  .sec-head h2{font-size:25px}
  .rl-grid{grid-template-columns:1fr}
  .rc-desc{min-height:0}
  .film{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:10px}
  .fl{min-width:200px;scroll-snap-align:start}
  .nt-grid{grid-template-columns:1fr}
  .nt-txt{min-height:0}
  .summon h2{font-size:28px}
  .ft-in{flex-direction:column;align-items:flex-start;gap:16px}
  .ft-nav{margin-left:0}
  .float-complaint{right:18px;bottom:204px;width:56px;font-size:11px}
  .backtop{right:18px;bottom:150px}
}
