/* ── 伴闾 Web · Color & Elevation design tokens ─────────────────────────────
   SSOT：miniprogram/app.wxss 的 token 定义块（规则见 .claude/skills/design-token-alex/SKILL.md）。
   本文件是它的手抄子集，只收色系：primitive 色阶、paper、状态色、Core UI semantic、
   星云 Experience semantic、品牌补充与阴影；小程序组件专用 token（册子 / 宝典 / 日历 / 问问页头等）不收。
   改色先改 app.wxss，再同步这里；阴影的 rpx 按 750rpx = 375px 折算成 px。
   本文件是 web 侧裸色值的唯一合法出现地，页面只消费 semantic，不碰 primitive。 */
:root {
  /* primitive · 页面不得直接引用 */
  --bl-purple-50:#F6F2FF;  --bl-purple-100:#EBE3FF; --bl-purple-200:#D9CBFF;
  --bl-purple-300:#BFA6FF; --bl-purple-400:#A37DFB; --bl-purple-500:#8A57F2;
  --bl-purple-600:#7440D9; --bl-purple-700:#5E32B4; --bl-purple-800:#47258A;
  --bl-purple-900:#2F1860; --bl-purple-950:#1B0E3B;
  --bl-pink-50:#FFF1F6;    --bl-pink-100:#FFE1EC;   --bl-pink-200:#FFC5DA;
  --bl-pink-300:#FF9EC1;   --bl-pink-400:#FB74A4;   --bl-pink-500:#F04E8A;
  --bl-pink-600:#D63472;   --bl-pink-700:#AF2559;   --bl-pink-800:#851B42;
  --bl-pink-900:#5A1130;
  --bl-ink-0:#FFFFFF;   --bl-ink-25:#FCFAFF;  --bl-ink-50:#F7F4FD;
  --bl-ink-100:#EFEAF7; --bl-ink-200:#E2DBEE; --bl-ink-300:#C9C0DA;
  --bl-ink-400:#A39AB6; --bl-ink-500:#837A96; --bl-ink-600:#6F6683;
  --bl-ink-700:#4E4660; --bl-ink-800:#2C2639; --bl-ink-900:#1B1626;
  --bl-ink-950:#100D18;
  /* paper · 同明度低彩纸；只能用于 background，不承担状态语义 */
  --bl-paper-violet:#E5DAFB; --bl-paper-blush:#F9D5DC; --bl-paper-peach:#F9DEC6;
  --bl-paper-sage:#E0E5C5;   --bl-paper-cream:#FBF6EC;
  --bl-success-500:#4A8F2F; --bl-success-700:#357021; --bl-success-50:#EDF3E2;
  --bl-warning-500:#C97A0B; --bl-warning-700:#96590A; --bl-warning-50:#FDF3E2;
  --bl-danger-500:#D92D20;  --bl-danger-700:#A82015;  --bl-danger-50:#FDECEA;

  /* semantic · surface */
  --bl-surface-canvas:var(--bl-ink-25);
  --bl-surface-raised:var(--bl-ink-0);
  --bl-surface-sunken:var(--bl-ink-50);
  --bl-surface-brand-soft:var(--bl-purple-50);
  --bl-surface-accent-soft:var(--bl-pink-50);
  --bl-surface-experience:var(--bl-ink-950);
  --bl-surface-reading:var(--bl-paper-cream);

  /* semantic · text */
  --bl-text-primary:var(--bl-ink-900);
  --bl-text-secondary:var(--bl-ink-700);
  --bl-text-tertiary:var(--bl-ink-600);
  --bl-text-placeholder:var(--bl-ink-400);
  --bl-text-brand:var(--bl-purple-700);
  --bl-text-brand-soft:var(--bl-purple-200);
  --bl-text-accent:var(--bl-pink-700);
  --bl-text-inverse:var(--bl-ink-0);

  /* semantic · border */
  --bl-border-subtle:var(--bl-ink-100);
  --bl-border-default:var(--bl-ink-200);
  --bl-border-strong:var(--bl-ink-300);
  --bl-border-focus:var(--bl-purple-500);

  /* semantic · action */
  --bl-action-primary:var(--bl-purple-500);
  --bl-action-primary-hover:var(--bl-purple-600);
  --bl-action-primary-press:var(--bl-purple-700);
  --bl-action-success:var(--bl-success-500);
  --bl-action-secondary:var(--bl-purple-50);
  --bl-action-accent:var(--bl-pink-600);

  /* semantic · Experience 星云（只在 hero / CTA 等整块 Experience 容器内消费） */
  --bl-neb-field:radial-gradient(130% 92% at 50% 16%, #2F1860 0%, #1B0E3B 48%, #100D18 100%);
  --bl-neb-haze:rgba(163,125,251,.08);
  --bl-neb-bloom:rgba(240,78,138,.08);
  --bl-neb-star-hi:#F4F0FF;
  --bl-neb-star-mid:#E3D7FF;
  --bl-neb-star-dim:var(--bl-purple-300);
  --bl-neb-star-glow:rgba(191,166,255,.48);
  --bl-neb-ink-1:#F2ECFF;
  --bl-neb-ink-2:rgba(217,203,255,.72);
  --bl-neb-ink-3:rgba(217,203,255,.48);
  --bl-neb-accent:var(--bl-purple-200);
  --bl-neb-line:rgba(217,203,255,.16);
  --bl-neb-chip-bg:rgba(138,87,242,.16);
  --bl-neb-chip-ring:rgba(191,166,255,.32);
  --bl-neb-star:var(--bl-pink-200);
  --bl-neb-scrim:rgba(16,13,24,.72);
  --bl-neb-shadow:0 20px 52px -20px rgba(16,13,24,.72);
  --bl-neb-close-bg:rgba(242,236,255,.08);

  /* semantic · 品牌补充（与 app.wxss 同名同值） */
  --bl-surface-brand-soft-press:var(--bl-purple-100);
  --bl-border-brand-soft:var(--bl-purple-200);
  --bl-surface-glass:rgba(255,255,255,.72);
  --bl-surface-brand-halo:rgba(138,87,242,.16);
  --bl-surface-brand-press:rgba(138,87,242,.08);
  --bl-border-accent-soft:var(--bl-pink-200);

  /* semantic · web 补充（app.wxss 没有对应角色，web 专用）
     - neb-surface：星云块上的半透明卡底。取值同 neb-close-bg，但 close-bg 的语义是关闭钮，
       不能借来当卡底，故单列。 */
  --bl-neb-surface:rgba(242,236,255,.08);

  /* elevation · 阴影基色一律墨紫，禁止纯黑 */
  --bl-e0:none;
  --bl-e1:0 1px 2px rgba(27,22,38,.06), 0 1px 3px rgba(27,22,38,.04);
  --bl-e2:0 2px 8px rgba(27,22,38,.06), 0 1px 2px rgba(27,22,38,.04);
  --bl-e3:0 8px 20px -6px rgba(27,22,38,.12);
  --bl-e4:0 16px 32px -12px rgba(27,22,38,.16);
  --bl-e5:0 -8px 28px -8px rgba(27,22,38,.14);
  --bl-glow-brand:0 8px 22px -8px rgba(138,87,242,.48);
  --bl-scrim:rgba(27,22,38,.48);
}
