/* ============================================================
   数字校园 · 设计令牌（Design Tokens）
   ------------------------------------------------------------
   配色来源：本校校徽 public/img/logo.png 逐像素提取
     · 主色（草绿）  校徽外环底色
     · 辅色（橙黄）  校徽中心书本内页
     · 深绿          校徽文字与纹样
   ⚠️ 对比度纪律：主色/辅色对白底远低于 4.5:1，
      一律不得直接承载文字。文字与实心面走下面的 -800 / -900 深阶。
   ============================================================ */

:root {
  /* ---------- 品牌原色（仅用于图形/底色衬，不承载文字）---------- */
  --brand-green:      #6fd900;   /* 校徽外环草绿 */
  --brand-green-lt:   #8ee62e;
  --brand-amber:      #fd8a02;   /* 校徽书本橙黄 */
  --brand-amber-lt:   #ffab45;

  /* ---------- 文字/实心面用深阶（对白 ≥ 4.5:1 已核算）---------- */
  --green-900:  #175200;   /* 最深，正文/大标题 */
  --green-800:  #2a6b04;   /* 主按钮实心面、强调文字（对白 5.9:1） */
  --green-700:  #357f0c;
  /* 2026-10-18 补：app.css 有 7 处引用 var(--green-d)，但令牌里从来没定义过。
     绝大多数写了兜底 var(--green-d, var(--green-900)) 所以看不出来；
     app.css:566 的 border-color: var(--green-d) 没有兜底 → 整条声明被浏览器丢掉
     （课程表选中页签少了边框）。这里按"最深阶"补齐，视觉零变化、声明恢复生效。 */
  --green-d:    #175200;
  --green-100:  #eaf9dc;   /* 浅色底衬 */
  --green-050:  #f4fcea;

  --amber-900:  #7a3d00;
  --amber-800:  #96500a;   /* 橙黄实心面（对白 5.4:1） */
  --amber-100:  #fff2e0;
  --amber-050:  #fff9f1;

  /* ---------- 中性色 ---------- */
  --ink:        #16211a;   /* 主文字 */
  --ink-2:      #47564c;   /* 次要文字 */
  --ink-3:      #66735d;   /* 弱化文字/占位（2026-09-26 统一布局：原 #7b8a80 对白仅 3.2:1，
                              取班务无障碍专项压深值 #66735d（5.03:1），全系统弱文字同源 */
  --line:       #e4eae5;   /* 分割线 */
  --line-soft:  #eff3f0;

  --bg:         #f8f9f8;   /* 页面底（参考图的浅灰绿底）*/
  --surface:    #ffffff;   /* 卡片面 */
  --surface-2:  #fafcfa;

  /* ---------- 卡片强调色 ----------
     每色四阶：ink 承载文字（对白 ≥ 4.5:1）/ mid 图形与描边 / soft 浅底 / faint 卡面顶部微渐变。
     ⚠️ 与品牌色纪律一致：mid 及更浅的阶**一律不承载文字**。

     2026-10-01 用户复审："首页配色需统一色系，避免过度撞色" ——
     首页原来六张卡各挂一色（teal/amber/blue/green/violet/rose），同屏就是一团花。
     **现行规则：首页只用 --acc-green 作主色 + --acc-amber 作唯一点缀（橙黄取自校徽书本）**；
     其余 acc-* 保留给状态语义（提示/危险/信息）与非首页场景，别再往首页卡片上加。 */
  --acc-green:  #2a6b04;  --acc-green-m:  #57b81f;  --acc-green-s:  #e9f8db;  --acc-green-f: #f6fcee;
  --acc-teal:   #0d6866;  --acc-teal-m:   #16a6a4;  --acc-teal-s:   #dff4f3;  --acc-teal-f:  #f2fbfa;
  --acc-blue:   #1c5c9e;  --acc-blue-m:   #3b8ede;  --acc-blue-s:   #e4eefb;  --acc-blue-f:  #f4f9fe;
  --acc-violet: #573aa0;  --acc-violet-m: #8a6ce0;  --acc-violet-s: #ebe6f8;  --acc-violet-f:#f8f6fe;
  --acc-amber:  #8f4c08;  --acc-amber-m:  #ee9422;  --acc-amber-s:  #fff0d9;  --acc-amber-f: #fffaf2;
  --acc-rose:   #9c2f4c;  --acc-rose-m:   #e0567c;  --acc-rose-s:   #fce6ec;  --acc-rose-f:  #fef7f9;

  /* ---------- 状态色（与品牌色区分开）---------- */
  --info:    #1f6fb2;
  --info-bg: #e8f3fc;
  /* ⚠️ 2026-10-16 用对比度脚本核算后发现：原来的 #a8620a 对 --warn-bg 只有 **4.33:1** ✗
     （WCAG 正文要求 ≥4.5 ✓ 差一点点 ✓ 肉眼看不出来但确实不达标 ✗）
     → 压深到 #96500a（同色系 ✓ 与 --amber-800 一致 ✓ 复核后 ≥5.4:1 ✓）*/
  --warn:    #96500a;
  --warn-bg: #fdf3e3;
  --danger:    #b3261e;
  --danger-bg: #fdeceb;

  /* ---------- 圆角（参考图是大圆角轻拟物风）---------- */
  /* 2026-10-18 P3：控件与卡片新增令牌（只加不改，现有 r-* 维持原值避免全局位移） */
  --line-ctl: #cfd9cf;   /* 表单控件描边：比卡片边(--line)深一档，白底上才有边界感 */
  --ctl-h: 40px;         /* 控件高度：桌面 40 / 手机 44 */
  --ctl-r: 10px;         /* 控件圆角 */
  --r-card: 14px;        /* 卡片圆角（A 版） */
  --r-xs: 8px;
  --r-sm: 12px;
  --r-md: 16px;
  --r-lg: 22px;
  --r-xl: 28px;
  --r-pill: 999px;

  /* ---------- 阴影（很轻，靠圆角和大留白撑品质）---------- */
  --sh-1: 0 1px 2px rgba(22, 33, 26, .04), 0 2px 8px rgba(22, 33, 26, .04);
  --sh-2: 0 2px 6px rgba(22, 33, 26, .05), 0 8px 24px rgba(22, 33, 26, .06);
  --sh-3: 0 8px 20px rgba(22, 33, 26, .08), 0 20px 48px rgba(22, 33, 26, .08);
  --sh-hover: 0 6px 16px rgba(22, 33, 26, .08), 0 18px 40px rgba(22, 33, 26, .10);   /* 悬停上浮用 */

  /* ---------- 运动语言（2026-10-01 统一：悬停/切换/入场同一套节奏）---------- */
  --t-fast: .16s cubic-bezier(.4, 0, .2, 1);
  --t-mid:  .26s cubic-bezier(.4, 0, .2, 1);
  --t-slow: .42s cubic-bezier(.22, .61, .36, 1);

  /* ---------- 焦点环（按背后的面分色，见记忆里的无障碍约定）---------- */
  --focus-ring: var(--green-800);
  --focus-ring-light: #ffffff;

  /* ---------- 版式 ----------
     ⚠️ 2026-10-01 立规：全站**只允许**下面这几档字号/行距/字重。
     立规前统计：124 种字号（925 处）、25 种行距、13 种字体族 —— 光"13px 旁边站个 13.8px"就足以让人觉得不齐。
     归一化工具：`node tools/audit-type.js`（普查）／`node tools/normalize-type.js --apply`（按刻度吸附）。 */
  --font: "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", "Source Han Sans SC",
          system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-num: "SF Pro Display", "Segoe UI Variable", "Helvetica Neue", Arial, sans-serif;
  --mono: ui-monospace, "SF Mono", "Cascadia Mono", Consolas, "Courier New", monospace;  /* 补：多处引用但原来没定义 */
  --sans: var(--font);
  --serif: Georgia, "Songti SC", "SimSun", serif;

  /* 字号刻度（11→48，够用且不多） */
  --fs-2xs: 11px;   /* 角标、极小注脚 */
  --fs-xs:  12px;   /* 辅助信息、表格注 */
  --fs-sm:  13px;   /* 次要正文、表格、按钮小号 */
  --fs-md:  14px;   /* **正文默认** */
  --fs-lg:  15px;   /* 卡片正文、表单 */
  --fs-xl:  16px;   /* 小节标题 */
  --fs-2xl: 18px;   /* 卡片标题 h3 */
  --fs-3xl: 20px;   /* 页面标题 h2 */
  --fs-4xl: 22px;   /* 大标题 */
  --fs-5xl: 26px;   /* 数字/大标题 */
  --fs-6xl: 32px;   /* 首页大数字 */
  --fs-7xl: 40px;
  --fs-8xl: 48px;   /* 教室大屏 */

  /* 行距刻度（tie 时向上取，宁可松一点） */
  --lh-tight: 1.2;  /* 单行标题、按钮 */
  --lh-snug:  1.3;  /* 紧凑列表 */
  --lh-base:  1.5;  /* **正文默认** */
  --lh-relax: 1.6;  /* 长段落 */
  --lh-loose: 1.7;

  /* 字重刻度（中文界面不用 300 以下：笔画发虚） */
  --fw-normal: 400;
  --fw-mid:    500;
  --fw-semi:   600;   /* 小标题/强调 */
  --fw-bold:   700;   /* 标题 */
  --fw-heavy:  800;   /* 数字、极强调 */

  /* ---------- 布局 ---------- */
  /* ⚠️ 断点三档口径（2026-10-21 定，全站新规则按这个写）：
        · ≤620px  手机（主力断点，全站最多）
        · ≥901px  桌面双列（顶栏 logo 换桌面版也从这里切）
        · ≥1025px 后台顶栏（admin-kit 桌面版式）
     其余断点（600/640/660/760/768/820/900/980/1024/1100/1180…）是历史遗留或专项场景
     （横屏矮屏 820、打印、表格收列 1180），只在专项里用，别拿去写新的通用规则。 */
  --side-w: 232px;          /* 侧边栏宽 */
  --side-w-mini: 76px;      /* 收起后 */
  --top-h: 64px;
  --gap: 20px;
  --pad: 26px;
  --max-w: 1560px;

  /* ---------- 间距刻度（2026-10-16 补 · 4px 基准）----------
     ⚠️ 这七个变量**早就一直在被引用**（`admin-kit.css` 15 处 + 外观层 `weui-look.css` 160 处 ✓）
        却**从没在门户令牌里定义过** ✗ —— 唯一一份定义在 `apps/班务助手/redesign/tokens.css`
        （那是**设计稿目录** ✓ 页面根本不加载 ✓）
     → 后果：门户与各应用里所有 `padding: var(--sp-3)` / `gap: var(--sp-2)` 这类声明
        **整条被判无效、被浏览器直接丢掉** ✗（静默失效 ✓ 不报错 ✓ 最难查的一类 ✓）
     → 现在补齐：取值与那份设计稿一致（4/8/12/16/20/24/32 ✓）
        同时贴合门户实际在用的节奏（实测频次 6/8/12/4/10px ✓ 主力就是 4 的倍数 ✓）
     ⚠️ 补齐后会**新激活约 175 处**此前被丢掉的声明 ✓ → 观感会有可见变化 ✓ 已跑全套体检验收 ✓
     用法：**新写规则请带兜底** `var(--sp-3, 12px)` ✓（老规则不带现在也能生效了 ✓ 但兜底更保险 ✓）*/
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 20px;
  --sp-6: 24px;
  --sp-7: 32px;

  /* ---------- 纵向节奏（2026-10-16 补）----------
     ⚠️ 与 --sp-* 同一类问题 ✗：`--v-rhythm` 只在 **admin-kit.css** 里定义过 ✗
        可是 `flat.css`（首页+后台）与外观层 `weui-look.css`（8 个应用）都在用它 ✓
     → 在**门户首页**与**各应用**里同样"整条无效"被丢掉 ✗
     → 这里的 16px 与 admin-kit 的桌面取值一致 ✓（窄屏在 admin-kit / 外观层里另行收紧 ✓）
     `--card-pad` 同理（admin-kit 桌面 18px ✓ 窄屏 14px ✓）*/
  --v-rhythm: 16px;
  --card-pad: 18px;
}

/* 深色待机/大屏场景（教室端那种）——目前门户不用，先占位 */
@media (prefers-reduced-motion: reduce) {
  * { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
