/* 共享设计令牌 + 基础组件。亮色默认，暗色跟随系统，可手动切换 (data-theme)
 * 【文档】设计取舍（配色、CSP 约束）→ website-sales/frontend-README.md「设计取舍」；总索引见 ../config.js 顶部。
 * 视觉语言「宣纸 · 朱印 · 靛」：暖纸底 + 靛蓝主色 + 朱红印章作签名点缀（logo / 中枢 / 光球 / 步骤数字）。
 * 令牌在三处同步：裸 :root（亮）、:root[data-theme="dark"]、prefers-color-scheme 暗色块。改色时三处一起改。 */
:root{
  --bg:#f6f2ea; --surface:#fffdf8; --surface2:#f0ebe0; --line:#e6dfd0;
  --txt:#191b2c; --sub:#5b607a; --mute:#8b8e9e;
  --brand:#4a63f0; --brand2:#12b886; --brand-ink:#fff; --brand-soft:#e9ecff;
  --seal:#e04a35; --seal2:#bf2f1d;
  --ok:#12b886; --warn:#f08c00; --err:#e03131;
  --glow1:rgba(224,74,53,.13); --glow2:rgba(74,99,240,.15); --glow3:rgba(18,184,134,.10); --grain:.34;
  --shadow:0 1px 2px rgba(60,40,20,.05),0 10px 28px rgba(60,40,20,.07);
  --radius:14px; --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  color-scheme:light;
}
:root[data-theme="dark"]{
  --bg:#0a0d1b; --surface:#11172a; --surface2:#171f38; --line:#232d4a;
  --txt:#e9edf8; --sub:#9aa5c3; --mute:#6c7899;
  --brand:#6d86ff; --brand2:#2fd4a0; --brand-soft:#1b2547;
  --seal:#f0614a; --seal2:#c93a26;
  --glow1:rgba(240,97,74,.12); --glow2:rgba(109,134,255,.20); --glow3:rgba(47,212,160,.08); --grain:.5;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.28);
  color-scheme:dark;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#0a0d1b; --surface:#11172a; --surface2:#171f38; --line:#232d4a;
    --txt:#e9edf8; --sub:#9aa5c3; --mute:#6c7899;
    --brand:#6d86ff; --brand2:#2fd4a0; --brand-soft:#1b2547;
    --seal:#f0614a; --seal2:#c93a26;
    --glow1:rgba(240,97,74,.12); --glow2:rgba(109,134,255,.20); --glow3:rgba(47,212,160,.08); --grain:.5;
    --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.28);
    color-scheme:dark;
  }
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--txt);
  font:15px/1.6 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased}
/* 全站氛围层：固定在视口，不随内容滚动（不用 background-attachment:fixed，手机上会卡）。
 * ::before = 三团柔光（左上朱红 / 右上靛蓝 / 底部青绿）；::after = 极细颗粒，给「纸」的质感。 */
body::before,body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none}
body::before{background:
  radial-gradient(70vw 55vh at 6% -8%,var(--glow1),transparent 70%),
  radial-gradient(60vw 50vh at 98% 2%,var(--glow2),transparent 70%),
  radial-gradient(80vw 60vh at 55% 112%,var(--glow3),transparent 70%)}
/* 颗粒纹理放在独立文件 grain.svg，而不是 data: 内联图——线上 CSP 的 img-src 通常不放行 data:，那样颗粒会悄悄消失 */
body::after{opacity:var(--grain);mix-blend-mode:overlay;background:url("grain.svg")}
a{color:var(--brand);text-decoration:none}
h1,h2,h3,p{margin:0}
button,input,select,textarea{font:inherit;color:inherit}
code,.mono{font-family:var(--mono)}
[hidden]{display:none!important}
.ns{padding:24px}/* <noscript> 提示（原内联 style，为过 CSP 挪到这里） */

/* logo = 朱红印章：微倾的圆角方块 + 内描边，与首页中枢/光球同一语言 */
.logo{position:relative;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-weight:800;color:#fff;
  background:linear-gradient(135deg,var(--seal),var(--seal2));font-size:15px;flex:none;transform:rotate(-4deg);
  box-shadow:0 4px 12px color-mix(in srgb,var(--seal) 38%,transparent)}
.logo::after{content:"";position:absolute;inset:3px;border:1.5px solid rgba(255,255,255,.42);border-radius:6px;pointer-events:none}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:10px;padding:9px 16px;
  font-weight:600;font-size:14px;border:1px solid var(--line);background:var(--surface);cursor:pointer;
  transition:transform .15s,box-shadow .15s,background .15s;text-decoration:none;color:var(--txt);white-space:nowrap}
.btn:hover{background:var(--surface2)}
.btn.primary{background:linear-gradient(135deg,var(--brand),#3b53e0);color:#fff;border-color:transparent;
  box-shadow:0 6px 18px rgba(74,99,240,.28)}
.btn.primary:hover{transform:translateY(-1px)}
.btn.lg{padding:13px 24px;font-size:15.5px;border-radius:12px}
.btn.sm{padding:5px 11px;font-size:13px;border-radius:8px}
.btn.danger{color:var(--err)}
.btn[disabled],.btn.soon{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}
.btn.soon{white-space:normal;text-align:center;line-height:1.4}

.tag{display:inline-block;font-size:11.5px;padding:1px 8px;border-radius:999px;background:var(--brand-soft);color:var(--brand);font-weight:600;white-space:nowrap}
.tag.ok{background:rgba(18,184,134,.14);color:var(--ok)}
.tag.warn{background:rgba(240,140,0,.15);color:var(--warn)}
.tag.err{background:rgba(224,49,49,.12);color:var(--err)}
.tag.mute{background:var(--surface2);color:var(--mute)}

.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.input{width:100%;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--surface);outline:none}
.input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}

pre.code{margin:0;background:#0f1424;color:#cfd8f3;border-radius:12px;padding:14px 16px;overflow-x:auto;
  font:13px/1.65 var(--mono)}
pre.code .k{color:#8fa4ff}pre.code .s{color:#7ee0b8}pre.code .c{color:#6c7899}
.code-block{border-radius:12px;overflow:hidden;border:1px solid var(--line);background:#0f1424;text-align:left}
.code-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-bottom:1px solid #1f2842;flex-wrap:wrap}
.code-block .seg{background:#1a2238}.code-block .seg button{color:#8b97b8}.code-block .seg button.on{background:#2a3558;color:#fff;box-shadow:none}
.code-block .btn{background:#1a2238;border-color:#2a3558;color:#cfd8f3}
.code-block pre.code{border-radius:0;background:transparent;max-height:340px}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
