/* 灵魂计划 · 前端统一风格（单一真源）
   AI 全息语言（Noto Sans + 等宽 + 金/青绿 + 记忆五色）× 登录页的日夜双主题。
   用法：<html data-theme="night|day"> + <link rel="stylesheet" href="/soul.css"> + <script src="/theme.js">。 */
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&family=Space+Grotesk:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap');

/* 单一真源令牌：字体 · 字号刻度 · 尺寸 · 单一深色皮层主题。客户端全站共用，后台 antd 主题对齐同一批数值。 */
:root{
  --sans:'Noto Sans SC',"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;
  --display:'Space Grotesk',var(--sans);
  --mono:'IBM Plex Mono',ui-monospace,'SFMono-Regular',monospace;
  /* 记忆五层（Ant Design 配色）：感知/语义/海马/情感/前额叶 */
  --m1:#2f54eb; --m2:#13c2c2; --m3:#faad14; --m4:#eb2f96; --m5:#9254de;

  /* —— 字号刻度（全站统一，别再各页各写）—— */
  --fs-hero:30px; --fs-h1:24px; --fs-h2:19px; --fs-h3:16px;
  --fs-body:15px; --fs-sm:13.5px; --fs-xs:12px; --fs-mono:11px;
  --lh:1.7; --ls-title:2px;

  /* —— 尺寸 / 间距 / 圆角（全站统一）—— */
  --btn-h:48px; --btn-px:30px; --ctrl-h:46px; --pill-h:36px; --icon-btn:38px;
  --radius:18px; --radius-md:12px; --radius-pill:99px;
  --sp-1:6px; --sp-2:11px; --sp-3:16px; --sp-4:24px; --sp-5:32px; --sp-6:46px;

  /* —— 单一深色皮层主题（日间主题已下线，全站一套）—— */
  --bg:#0c0f24; --grad1:rgba(201,168,106,.14); --grad2:rgba(142,162,224,.12);
  --panel:rgba(21,26,56,.72); --panel-solid:#151a38; --stage:#0a0e18;
  --line:rgba(255,255,255,.08); --line2:rgba(255,255,255,.14); --inbg:rgba(255,255,255,.045);
  --ink:#ece6d8; --ink2:#a9a2be; --ink3:#6a6685;
  --soul:#c9a86a; --soul2:#e6cd97; --accent:#8ea2e0; --accent2:#8ea2e0; --live:#6bd6b0; --err:#ff9b9b;
  --cta:linear-gradient(305deg,#e6cd97,#c9a86a); --cta-text:#241a0a; --cta-glow:rgba(201,168,106,.42);
  --grid:rgba(140,180,255,.05); --disc:transparent;
}

*{margin:0;padding:0;box-sizing:border-box}
html,body{min-height:100%}
body{font-family:var(--sans);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  background:
    radial-gradient(120% 78% at 50% -8%,var(--grad1),transparent 55%),
    radial-gradient(95% 60% at 88% 112%,var(--grad2),transparent 55%),
    var(--bg);
  transition:background .5s ease,color .4s ease}

/* ---- 顶栏 ---- */
.sp-nav{display:flex;align-items:center;gap:24px;padding:20px 46px;border-bottom:1px solid var(--line);position:relative;z-index:5}
.sp-brand{display:flex;align-items:center;gap:11px}
.sp-core{width:22px;height:22px;border-radius:50%;flex:none;
  background:radial-gradient(circle at 42% 38%,#fff3dd,var(--soul) 48%,#8a5a24 82%);box-shadow:0 0 14px var(--cta-glow)}
.sp-brand b{font-weight:600;font-size:15px;letter-spacing:4px}
.sp-tag{font-family:var(--mono);font-size:11px;letter-spacing:2px;color:var(--ink3);border-left:1px solid var(--line2);padding-left:11px}
.sp-links{margin-left:18px;display:flex;gap:22px;font-size:13.5px;color:var(--ink2)}
.sp-links a{color:inherit;text-decoration:none;transition:.15s}
.sp-links a:hover,.sp-links a.on{color:var(--ink)}
.sp-right{margin-left:auto;display:flex;align-items:center;gap:15px}
.sp-live{font-family:var(--mono);font-size:11px;letter-spacing:2px;color:var(--live);display:flex;align-items:center;gap:7px}
.sp-live::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--live);box-shadow:0 0 8px var(--live);animation:sp-glow 2.6s ease-in-out infinite}

/* ---- 主题切换 ---- */
.sp-theme{width:38px;height:38px;border-radius:50%;border:1px solid var(--line2);background:transparent;color:var(--ink2);
  cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:15px;transition:.18s}
.sp-theme:hover{color:var(--soul);border-color:var(--soul)}

/* ---- 标题排印（全站统一，取代各页自定字号）---- */
.sp-h1{font-family:var(--display);font-weight:700;font-size:var(--fs-hero);letter-spacing:var(--ls-title);line-height:1.25;text-wrap:balance}
.sp-h2{font-family:var(--display);font-weight:600;font-size:var(--fs-h2);letter-spacing:1px}
.sp-sub{font-size:var(--fs-sm);color:var(--ink2);line-height:1.9;text-wrap:balance}

/* ---- 输入 ---- */
.sp-input{background:var(--inbg);border:1px solid var(--line2);border-radius:var(--radius-md);
  height:var(--ctrl-h);padding:0 16px;color:var(--ink);font-family:var(--sans);font-size:var(--fs-body);
  outline:none;transition:.15s;width:100%}
.sp-input::placeholder{color:var(--ink3)}
.sp-input:focus{border-color:var(--soul);box-shadow:0 0 0 3px rgba(201,168,106,.14)}

/* ---- 按钮（尺寸走令牌，全站一致）---- */
.sp-cta{border:none;cursor:pointer;font-family:var(--sans);background:var(--cta);color:var(--cta-text);font-weight:700;
  font-size:var(--fs-body);height:var(--btn-h);padding:0 var(--btn-px);border-radius:var(--radius-pill);
  box-shadow:0 14px 36px -10px var(--cta-glow);transition:.2s;
  display:inline-flex;align-items:center;justify-content:center;gap:9px;text-decoration:none}
.sp-cta:hover{transform:translateY(-1px);box-shadow:0 18px 44px -12px var(--cta-glow)}
.sp-cta:active{transform:translateY(0)}
.sp-cta.block{width:100%}
.sp-ghost{border:none;background:transparent;color:var(--ink2);font-size:var(--fs-body);cursor:pointer;text-decoration:none;
  display:inline-flex;align-items:center;gap:8px;padding:0 4px;height:var(--btn-h);border-bottom:1px solid var(--line2);transition:.15s}
.sp-ghost:hover{color:var(--soul);border-color:var(--soul)}
.sp-pill{font-size:var(--fs-sm);color:var(--soul);border:1px solid var(--line2);border-radius:var(--radius-pill);
  height:var(--pill-h);padding:0 18px;background:transparent;cursor:pointer;text-decoration:none;transition:.15s;
  display:inline-flex;align-items:center;justify-content:center;gap:7px}
.sp-pill:hover{border-color:var(--soul)}

/* ---- 卡片 / 标签 ---- */
.sp-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(12px)}
.sp-eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:4px;color:var(--accent);text-transform:uppercase}
.sp-mono{font-family:var(--mono);font-size:11px;letter-spacing:2px;color:var(--ink3)}
.sp-display{font-family:var(--display)}

/* ---- 记忆层圆点 ---- */
.sp-mdot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none}
.sp-mdot[data-l="1"]{background:var(--m1);box-shadow:0 0 10px var(--m1)}
.sp-mdot[data-l="2"]{background:var(--m2);box-shadow:0 0 10px var(--m2)}
.sp-mdot[data-l="3"]{background:var(--m3);box-shadow:0 0 10px var(--m3)}
.sp-mdot[data-l="4"]{background:var(--m4);box-shadow:0 0 10px var(--m4)}
.sp-mdot[data-l="5"]{background:var(--m5);box-shadow:0 0 10px var(--m5)}

/* ---- 大脑舞台（恒深色，日夜都发光） ---- */
.sp-stage{position:relative;background:var(--stage);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:48px 48px}

@keyframes sp-glow{0%,100%{opacity:.5}50%{opacity:1}}
@keyframes sp-breathe{0%,100%{transform:scale(1);opacity:.94}50%{transform:scale(1.05);opacity:1}}
@keyframes sp-scan{to{transform:rotate(360deg)}}
@keyframes sp-rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition-duration:.001s!important}}

:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}
