/* Hallmark · macrostructure: Bento Grid · F1 Bento knobs: tiles=8, spans=irregular, border=none
 * theme: custom · vibe: "克莱因蓝打底, 艾绿呼吸, 奶油点亮" · paper: oklch(34.5% 0.184 263.7) · accent: oklch(94.9% 0.039 86.1)
 * display: 得意黑 Smiley Sans · body: Geist + 系统中黑 · axes: mid / display-heavy / chromatic-cream ~86°
 * nav: N7 Brutal slab (border=2px, letter-spacing=normal, cta=filled-slab) · footer: Ft8 Marquee (speed=32s, direction=left, glyph=middot)
 * studied: no · context: explicit · v1.0.0
 *
 * 6:3:1 色彩纪律 — 克莱因蓝 60% 主表面 · 艾绿 30% 次级卡片 · 奶油米白 10% 点缀(文字/CTA/高亮)
 * 用户锚色: #012696 → oklch(34.5% 0.184 263.7) · #A4E2C6 → oklch(86.3% 0.074 165.1) · #FAEDD1 → oklch(94.9% 0.039 86.1)
 */

/* ——— 字体加载 ——— */
@font-face {
  font-family: "Smiley Sans";
  src: local("Smiley Sans"), local("得意黑"), local("SmileySans-Oblique"),
    url("https://cdn.jsdelivr.net/npm/@fontpkg/smiley-sans@2.0.4/SmileySans-Oblique.ttf.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

:root {
  /* ——— 色彩: 主色克莱因蓝系(60%) ——— */
  --color-paper: oklch(34.5% 0.184 263.7);    /* 克莱因蓝 #012696 · 页面主表面 */
  --color-paper-2: oklch(41.5% 0.189 265.7);  /* 抬升蓝 · 蓝底上的浮起面 */
  --color-paper-3: oklch(23.2% 0.115 263.5);  /* 深潜蓝 #011452 · 凹陷/页脚带 */

  /* ——— 色彩: 墨色(蓝底上的文字) ——— */
  --color-ink: oklch(94.9% 0.039 86.1);       /* 奶油米白 #FAEDD1 · 主文字 */
  --color-ink-2: oklch(80% 0.06 165);         /* 艾绿调次级文字 */

  /* ——— 色彩: 辅助艾绿系(30%) ——— */
  --color-mint: oklch(86.3% 0.074 165.1);     /* 艾绿 #A4E2C6 · 卡片表面 */
  --color-mint-2: oklch(80% 0.082 164.3);     /* 艾绿加深 · hover/描边 */
  --color-mint-3: oklch(72.6% 0.086 166);     /* 艾绿描边 */
  --color-on-mint: oklch(23.2% 0.115 263.5);  /* 深潜蓝 · 艾绿卡上的主文字 */
  --color-on-mint-2: oklch(38% 0.09 264);     /* 艾绿卡上的次级文字(对比度 4.5:1) */

  /* ——— 色彩: 点缀奶油米白(10%) ——— */
  --color-accent: oklch(94.9% 0.039 86.1);    /* 奶油米白 · CTA填充/高亮/焦点 */
  --color-accent-ink: oklch(23.2% 0.115 263.5); /* 奶油底上的文字(深潜蓝) */
  --color-cream-dim: oklch(89% 0.045 86);     /* 奶油降调 · 次级高亮 */

  /* ——— 色彩: 结构与功能 ——— */
  --color-rule: oklch(50% 0.08 264);          /* 蓝底分割线 */
  --color-rule-2: oklch(42% 0.06 264);        /* 次级分割线 */
  --color-muted: oklch(79% 0.05 180);         /* 蓝底弱化文字(对比度 ≥4.5:1) */
  --color-focus: oklch(94.9% 0.039 86.1);     /* 焦点环(蓝底上) */
  --color-focus-on-mint: oklch(23.2% 0.115 263.5); /* 焦点环(艾绿上) */
  --color-error: oklch(66% 0.19 25);          /* 错误珊瑚红 */
  --color-error-soft: oklch(78% 0.12 25);     /* 错误浅底 */
  --color-success: oklch(62% 0.11 165);       /* 正确深绿 */
  --color-warn: oklch(80% 0.13 75);           /* 模糊琥珀 */

  /* ——— 字体 ——— */
  --font-display: "Smiley Sans", "得意黑", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  --font-body: "Geist", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;

  /* ——— 字级(1.25 大三度) ——— */
  --text-xs: 0.64rem;
  --text-sm: 0.8rem;
  --text-base: 1rem;
  --text-md: 1.25rem;
  --text-lg: 1.5625rem;
  --text-xl: 1.9531rem;
  --text-2xl: 2.4414rem;
  --text-3xl: 3.0518rem;
  --text-4xl: 3.8147rem;
  --text-display: clamp(2.5rem, 5vw + 1rem, 4.5rem);
  --text-display-s: clamp(1.9rem, 3.5vw + 1rem, 3rem);

  /* ——— 间距(4pt) ——— */
  --space-3xs: 0.125rem;
  --space-2xs: 0.25rem;
  --space-xs: 0.5rem;
  --space-sm: 0.75rem;
  --space-md: 1rem;
  --space-lg: 1.5rem;
  --space-xl: 2.5rem;
  --space-2xl: 4rem;
  --space-3xl: 6rem;
  --space-4xl: 9rem;

  /* ——— 圆角(playful: 卡片12 · 输入8 · 胶囊999) ——— */
  --radius-card: 12px;
  --radius-input: 8px;
  --radius-pill: 999px;

  /* ——— 阴影(深底紧而暗) ——— */
  --shadow-card: 0 8px 24px -10px oklch(23.2% 0.115 263.5 / 0.55);
  --shadow-lift: 0 14px 32px -12px oklch(23.2% 0.115 263.5 / 0.6);
  --shadow-hairline: 0 0 0 1px oklch(50% 0.08 264 / 0.5);

  /* ——— 动效 ——— */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in: cubic-bezier(0.7, 0, 0.84, 0);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-micro: 120ms;
  --dur-short: 220ms;
  --dur-long: 420ms;

  /* ——— 层级 ——— */
  --z-base: 1;
  --z-raised: 10;
  --z-dropdown: 100;
  --z-sticky: 200;
  --z-modal: 400;
  --z-toast: 500;

  /* ——— 版心 ——— */
  --page-gutter: clamp(1rem, 4vw, 3rem);
  --page-max: 72rem;
}
