/* 生成文件 —— 别手改。来源 design/theme.wxss(= 小程序 styles/theme.wxss 快照),脚本 scripts/gen_web_tokens.py;
   scripts/test_theme_parity.py 比对本文件与快照,漂了就红。0908 Steven:网站向小程序靠齐,令牌只在小程序那一份里改。 */
:root {
  color-scheme: dark;
  --bg: #0b1524;
  --bg2: #0b1524;
  --card: #101f33;
  --card-shadow: none;
  --fab-shadow: 0 3px 9px rgba(0,0,0,.35);
  --card-hi: #132b45;
  --well: #0d1a29;
  --well-soft: rgba(17,30,46,.5);
  --float: rgba(13,26,41,.88);
  --raise: #26394b;
  --mask: rgba(4,10,20,.6);
  --mask-strong: rgba(11,21,36,.82);
  --white: #ffffff;
  --hair-soft: rgba(159,216,239,.1);
  --hair: rgba(159,216,239,.16);
  --line-hi: rgba(159,216,239,.32);
  --ice-bg: rgba(159,216,239,.08);
  --snow: #f6fbff;
  --text: #eaf4fb;
  --text-2: #dceef7;
  --dim-hi: #a9bdcb;
  --dim: #7d95a9;
  --dim-lo: #637d91;
  --ice: #9fd8ef;
  --ember: #f07f2d;
  --ember-text: #f07f2d;
  --ember-hi: #ffb37c;
  --ember-deep: #e86f1e;
  --grad-a: #ffa75c;
  --on-ember: #26160a;
  --set: #ffd1ae;
  --ember-bg-soft: rgba(240,127,45,.09);
  --ember-bg: rgba(240,127,45,.16);
  --ember-line: rgba(240,127,45,.5);
  --gold: #e8c15a;
  --gold-dim: #a99152;
  --gold-bg: rgba(232,193,90,.1);
  --gold-line: rgba(232,193,90,.3);
  --ok: #7fd8a0;
  --ok-bg: rgba(30,143,90,.14);
  --ok-line: rgba(111,207,151,.4);
  --ok-solid: #317950;
  --apply-bg: rgba(44,127,184,.16);
  --apply-line: rgba(44,127,184,.45);
  --danger: #ffb3b3;
  --danger-bg: rgba(214,69,69,.12);
  --danger-line: rgba(214,69,69,.5);
  --warn: #ffcf86;
  --muted-bg: rgba(112,132,147,.12);
  --muted-line: rgba(138,160,178,.35);
  --hero-a: #132b45;
  --hero-b: rgba(79,42,18,.4);
  --brand-a: rgba(71,37,19,.46);
  --brand-b: #101f33;
  --brand-line: rgba(240,127,45,.56);
  --brand-text: #f6fbff;
  --brand-sub: #c7d7e3;
  --brand-dim: #7d95a9;
  --brand-ice: #9fd8ef;
  --brand-set: #ffd9b3;
  --brand-gold: #e8c15a;
  --glass-tab: rgba(10,19,31,.66);
  --glass-top: rgba(255,255,255,.05);
  --glass-line: rgba(159,216,239,.2);
  --glass-ring: rgba(255,255,255,.38);
  --glass-ring-2: rgba(159,216,239,.26);
  --glass-shadow: 0 16px 36px -14px rgba(0,0,0,.85);
  --tab-solid: #0d1a29;
  --tab-active: #9fd8ef;
  --tab-idle: #7d95a9;
  --aurora-a: rgba(159,216,239,.42);
  --aurora-b: rgba(240,127,45,.30);
  --aurora-c: rgba(159,216,239,.06);
  --star: rgba(255,255,255,.95);
  --star-2: rgba(214,238,255,.85);
  --card-glass: #101f33;
  --bokeh: rgba(255,255,255,0);
  --bokeh-2: rgba(255,255,255,0);
  --gl-tint-edge: rgba(8, 17, 28, .84);
  --nav-bg: #0b1524;
  --fz-ink: var(--bg);
  --fz-well: var(--well);
  --fz-card: var(--card);
  --fz-snow: var(--snow);
  --fz-ice: var(--ice);
  --fz-dim: var(--dim);
  --fz-dim-lo: var(--dim-lo);
  --fz-hair: var(--hair);
  --fz-hair-lo: var(--hair-soft);
  --fz-hair-hi: var(--line-hi);
  --fz-line-hi: var(--line-hi);
  --fz-ember: var(--ember);
  --fz-ember-hi: var(--ember-hi);
  --fz-ember-g: linear-gradient(180deg, var(--grad-a), var(--ember-deep));
  --fz-ember-soft: var(--ember-bg);
  --fz-ember-line: var(--ember-line);
  --fz-gold: var(--gold);
  --fz-gold-line: var(--gold-line);
  --fz-gold-line-soft: var(--gold-line);
  --fz-hover: var(--ice-bg);
  --fz-hero-g: linear-gradient(150deg, var(--card-hi), var(--card) 60%);
  --fz-glyph-g: radial-gradient(120% 120% at 30% 20%, var(--card-hi), var(--well));
  --surface: var(--card);
  --surface-soft: var(--well-soft);
  --surface-tint: var(--ice-bg);
  --ink: var(--text);
  --ink-strong: var(--snow);
  --muted: var(--dim);
  --line: var(--hair);
  --line-strong: var(--line-hi);
  --brand: var(--ice);
  --brand-strong: var(--ice);
  --accent: var(--ember);
  --accent-strong: var(--ember-hi);
  --accent-soft: var(--ember-bg);
  --danger-soft: var(--danger-bg);
  --ok-soft: var(--ok-bg);
  --warn-soft: var(--gold-bg);
  --shadow: var(--card-shadow);
  --shadow-soft: var(--card-shadow);
  --gl-tint: var(--glass-tab);
  --gl-tab: var(--glass-tab);
  --gl-line: var(--glass-line);
  --gl-spec: var(--glass-top);
}
:root[data-theme="light"] {
  color-scheme: light;
  --bg: #F2F5F9;
  --bg2: #DDE8F4;
  --card: #FFFFFF;
  --card-shadow: inset 0 1px 0 rgba(255,255,255,.95), 0 10px 28px -14px rgba(27,49,72,.22);
  --fab-shadow: 0 3px 9px rgba(27,49,72,.18);
  --card-hi: #F1F5FA;
  --well: #FFFFFF;
  --well-soft: #F1F5FA;
  --float: rgba(255,255,255,.94);
  --raise: #E6ECF2;
  --mask: rgba(27,39,51,.45);
  --mask-strong: rgba(27,39,51,.72);
  --white: #ffffff;
  --hair-soft: #ECF1F6;
  --hair: #E4EAF1;
  --line-hi: #C4D2DF;
  --ice-bg: rgba(30,127,184,.06);
  --snow: #1B2733;
  --text: #24313E;
  --text-2: #33445A;
  --dim-hi: #4E6072;
  --dim: #617181;
  --dim-lo: #647487;
  --ice: #1A74AA;
  --ember: #E8730C;
  --ember-text: #C25400;
  --ember-hi: #C25400;
  --ember-deep: #E8730C;
  --grad-a: #FF9A4D;
  --on-ember: #FFFFFF;
  --set: #B45A00;
  --ember-bg-soft: rgba(232,115,12,.05);
  --ember-bg: rgba(232,115,12,.09);
  --ember-line: rgba(232,115,12,.5);
  --gold: #8A6100;
  --gold-dim: #7A5A00;
  --gold-bg: rgba(138,97,0,.08);
  --gold-line: rgba(138,97,0,.35);
  --ok: #178353;
  --ok-bg: rgba(23,131,83,.09);
  --ok-line: rgba(23,131,83,.45);
  --ok-solid: #178353;
  --apply-bg: rgba(30,111,168,.09);
  --apply-line: rgba(30,111,168,.45);
  --danger: #C0392B;
  --danger-bg: rgba(192,57,43,.08);
  --danger-line: rgba(192,57,43,.45);
  --warn: #A25E00;
  --muted-bg: rgba(97,113,129,.08);
  --muted-line: rgba(97,113,129,.35);
  --hero-a: #F1F5FA;
  --hero-b: rgba(232,115,12,.07);
  --brand-a: rgba(232,115,12,.12);
  --brand-b: #E9F0F8;
  --brand-line: rgba(232,115,12,.5);
  --brand-text: #1B2733;
  --brand-sub: #33445A;
  --brand-dim: #617181;
  --brand-ice: #1A74AA;
  --brand-set: #B45A00;
  --brand-gold: #8A6100;
  --glass-tab: rgba(255,255,255,.72);
  --glass-top: rgba(255,255,255,.6);
  --glass-line: rgba(27,49,72,.14);
  --glass-ring: rgba(255,255,255,.9);
  --glass-ring-2: rgba(27,49,72,.12);
  --glass-shadow: 0 16px 36px -16px rgba(27,49,72,.35);
  --tab-solid: #FFFFFF;
  --tab-active: #1A74AA;
  --tab-idle: #617181;
  --aurora-a: rgba(120,190,240,.55);
  --aurora-b: rgba(255,170,110,.38);
  --aurora-c: rgba(255,255,255,.6);
  --star: rgba(255,255,255,.95);
  --star-2: rgba(210,232,250,.95);
  --card-glass: rgba(255,255,255,.76);
  --bokeh: rgba(255,255,255,.55);
  --bokeh-2: rgba(190,220,245,.5);
  --gl-tint-edge: rgba(255, 255, 255, .92);
  --nav-bg: #DDE8F4;
}
@media (prefers-color-scheme: light) {
  :root[data-theme-mode="system"] {
    color-scheme: light;
    --bg: #F2F5F9;
    --bg2: #DDE8F4;
    --card: #FFFFFF;
    --card-shadow: inset 0 1px 0 rgba(255,255,255,.95), 0 10px 28px -14px rgba(27,49,72,.22);
    --fab-shadow: 0 3px 9px rgba(27,49,72,.18);
    --card-hi: #F1F5FA;
    --well: #FFFFFF;
    --well-soft: #F1F5FA;
    --float: rgba(255,255,255,.94);
    --raise: #E6ECF2;
    --mask: rgba(27,39,51,.45);
    --mask-strong: rgba(27,39,51,.72);
    --white: #ffffff;
    --hair-soft: #ECF1F6;
    --hair: #E4EAF1;
    --line-hi: #C4D2DF;
    --ice-bg: rgba(30,127,184,.06);
    --snow: #1B2733;
    --text: #24313E;
    --text-2: #33445A;
    --dim-hi: #4E6072;
    --dim: #617181;
    --dim-lo: #647487;
    --ice: #1A74AA;
    --ember: #E8730C;
    --ember-text: #C25400;
    --ember-hi: #C25400;
    --ember-deep: #E8730C;
    --grad-a: #FF9A4D;
    --on-ember: #FFFFFF;
    --set: #B45A00;
    --ember-bg-soft: rgba(232,115,12,.05);
    --ember-bg: rgba(232,115,12,.09);
    --ember-line: rgba(232,115,12,.5);
    --gold: #8A6100;
    --gold-dim: #7A5A00;
    --gold-bg: rgba(138,97,0,.08);
    --gold-line: rgba(138,97,0,.35);
    --ok: #178353;
    --ok-bg: rgba(23,131,83,.09);
    --ok-line: rgba(23,131,83,.45);
    --ok-solid: #178353;
    --apply-bg: rgba(30,111,168,.09);
    --apply-line: rgba(30,111,168,.45);
    --danger: #C0392B;
    --danger-bg: rgba(192,57,43,.08);
    --danger-line: rgba(192,57,43,.45);
    --warn: #A25E00;
    --muted-bg: rgba(97,113,129,.08);
    --muted-line: rgba(97,113,129,.35);
    --hero-a: #F1F5FA;
    --hero-b: rgba(232,115,12,.07);
    --brand-a: rgba(232,115,12,.12);
    --brand-b: #E9F0F8;
    --brand-line: rgba(232,115,12,.5);
    --brand-text: #1B2733;
    --brand-sub: #33445A;
    --brand-dim: #617181;
    --brand-ice: #1A74AA;
    --brand-set: #B45A00;
    --brand-gold: #8A6100;
    --glass-tab: rgba(255,255,255,.72);
    --glass-top: rgba(255,255,255,.6);
    --glass-line: rgba(27,49,72,.14);
    --glass-ring: rgba(255,255,255,.9);
    --glass-ring-2: rgba(27,49,72,.12);
    --glass-shadow: 0 16px 36px -16px rgba(27,49,72,.35);
    --tab-solid: #FFFFFF;
    --tab-active: #1A74AA;
    --tab-idle: #617181;
    --aurora-a: rgba(120,190,240,.55);
    --aurora-b: rgba(255,170,110,.38);
    --aurora-c: rgba(255,255,255,.6);
    --star: rgba(255,255,255,.95);
    --star-2: rgba(210,232,250,.95);
    --card-glass: rgba(255,255,255,.76);
    --bokeh: rgba(255,255,255,.55);
    --bokeh-2: rgba(190,220,245,.5);
    --gl-tint-edge: rgba(255, 255, 255, .92);
    --nav-bg: #DDE8F4;
  }
}

/* ── 页面底:小程序 theme-fab 的 bgfx 三层(极光两团 + 中央微光 + 浅档光斑)同一组参数;body 渐变 = 小程序 bgTop→bg ── */
body { background: linear-gradient(180deg, var(--bg2), var(--bg) 22%), var(--bg); color: var(--text); }
body::before {
  content: ""; position: fixed; inset: 0; z-index: -2; pointer-events: none; opacity: 1;
  background:
    radial-gradient(70% 34% at 88% -4%, var(--aurora-a), transparent 70%),
    radial-gradient(60% 30% at 6% 104%, var(--aurora-b), transparent 70%),
    radial-gradient(40% 20% at 50% 55%, var(--aurora-c), transparent 70%),
    radial-gradient(90px 90px at 14% 22%, var(--bokeh), transparent 70%),
    radial-gradient(140px 140px at 86% 16%, var(--bokeh-2), transparent 70%),
    radial-gradient(70px 70px at 68% 58%, var(--bokeh), transparent 70%),
    radial-gradient(110px 110px at 22% 82%, var(--bokeh-2), transparent 70%);
}
body::after { display: none; }
/* 星光 / 雪点:与小程序 .bgfx-stars 同款点位与亮度 */
.snowfall {
  opacity: .55;
  background-image:
    radial-gradient(3px 3px at 24px 36px, var(--star), transparent),
    radial-gradient(2.6px 2.6px at 150px 90px, var(--star-2), transparent),
    radial-gradient(2.2px 2.2px at 88px 170px, var(--star), transparent),
    radial-gradient(2.4px 2.4px at 210px 240px, var(--star-2), transparent),
    radial-gradient(1.8px 1.8px at 50px 262px, var(--star), transparent),
    radial-gradient(2px 2px at 190px 20px, var(--star), transparent);
}
a:hover { color: var(--ice); }
.topbar.is-scrolled { background: linear-gradient(180deg, var(--glass-top), transparent 55%), var(--gl-tint-edge); }
:root[data-theme="light"] .topbar, :root[data-theme="light"] .tabbar { color: var(--text); }
:root[data-theme="light"] .tabbar a { color: var(--tab-idle); }
:root[data-theme="light"] .tabbar a.is-active { color: var(--tab-active); }

/* ── 外观浮钮(小程序 theme-fab 同位):右下角,手机在底栏之上 ── */
.theme-fab {
  position: fixed; right: 14px; bottom: 24px; z-index: 55; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--glass-line);
  background: linear-gradient(180deg, var(--glass-top), transparent 60%), var(--float); color: var(--ice); box-shadow: var(--fab-shadow);
  display: grid; place-items: center; cursor: pointer; padding: 0; -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px);
  transition: transform .18s cubic-bezier(.2, .9, .3, 1.3);
}
.theme-fab:active { transform: scale(.9); }
.theme-fab .fz-ico { width: 20px; height: 20px; }
@media (max-width: 860px) { .theme-fab { bottom: calc(84px + env(safe-area-inset-bottom)); } }
@media (prefers-reduced-motion: reduce) { .theme-fab { transition: none; } }

/* ── 外观分段控件(我的页):深色 / 浅色 / 跟随系统,与小程序「外观」同款 ── */
.theme-seg { display: flex; background: var(--well-soft); border: 1px solid var(--hair); border-radius: 10px; padding: 3px; gap: 2px; }
.theme-seg button { flex: 1; border: 0; background: none; font: inherit; font-size: 13px; padding: 8px 0; border-radius: 8px; color: var(--dim); cursor: pointer; }
.theme-seg button.is-on { background: var(--card-hi); color: var(--snow); font-weight: 700; box-shadow: inset 0 0 0 1px var(--line-hi); }   /* 浅档 card-hi 与 well-soft 同值,加一圈线才看得出选中 */
