/* ============================================================
   tokens-authoritative.css — 单一权威视觉 Token 层
   ------------------------------------------------------------
   目的：收敛全站 4 套冲突的 token 系统（tokens.css / variables.css
        / design-system.css / design-tokens-extended.css）为唯一规范值。

   原理：作为「最后加载」的权威层，只对冲突变量声明规范值，其余不做覆盖。
       以本文件为单一事实源，禁止在新代码中另立 token。
   规范口径（2026-08 认定，对齐 teal 品牌系统）：
       主色     #0E7C7B（全站唯一，禁用 #0891b2 变体）
       圆角     基于 16px 基准：sm8 / md12 / lg16 / xl20 / 2xl24
       字体     中文优先链（PingFang → Noto Sans SC → InstrumentSans 西文）
       间距     4px 网格统一
   ============================================================ */

:root {
    /* ── 品牌主色（统一 #0E7C7B，覆盖 design-tokens-extended 的 #0891b2） ── */
    --primary:             #0E7C7B;
    --primary-light:       #12a3a2;
    --primary-dark:        #0a6362;
    --primary-500:         #0E7C7B;
    --primary-600:         #0a6362;
    --primary-700:         #09605f;
    --primary-800:         #074c4b;
    --primary-900:         #063e3d;
    --primary-hover:       #0a6362;
    --primary-active:      #09605f;

    --color-accent:          #0E7C7B;
    --color-accent-hover:    #0a6362;
    --color-accent-active:   #09605f;
    --color-accent-dark:     #0a6362;
    --color-on-accent:       #ffffff;

    /* ── 主色相关彩色阴影/辉光（统一为品牌 teal rgba，不用 #0891b2） ── */
    --shadow-color-primary: 0 8px 24px -4px rgba(14, 124, 123, 0.35),
                            0 4px 8px -2px rgba(14, 124, 123, 0.18);
    --shadow-glow-brand: 0 0 24px rgba(14, 124, 123, 0.28);
    --shadow-glow-soft:  0 0 0 1px rgba(14, 124, 123, 0.08), 0 4px 16px rgba(14, 124, 123, 0.12);
    --shadow-button:     0 4px 14px rgba(14, 124, 123, 0.3);

    /* ── 圆角（统一 16px 基准，收敛 tokens=12/18px、variables=8/12/18/24） ── */
    --radius-xs:    4px;
    --radius-sm:    8px;
    --radius-md:    12px;
    --radius-lg:    16px;
    --radius-xl:    20px;
    --radius-2xl:   24px;
    --radius-full:  9999px;
    --radius-pill:  9999px;

    /* ── 时长（批15 收敛单一事实源：tokens.css 内部两套 duration 冲突
           [100/200/300 死代码 + 150/250/400 生效]，统一为 Lead 签发口径
           fast100 / normal200 / slow300，另补数值档位覆盖全站裸时长迁移） ── */
    --duration-instant:   80ms;
    --duration-fast:      100ms;
    --duration-normal:    200ms;
    --duration-slow:      300ms;
    --duration-slower:    400ms;
    --duration-slowest:   600ms;
    --duration-40:        40ms;
    --duration-50:        50ms;
    --duration-60:        60ms;
    --duration-70:        70ms;
    --duration-90:        90ms;
    --duration-120:       120ms;
    --duration-140:       140ms;
    --duration-150:       150ms;
    --duration-160:       160ms;
    --duration-180:       180ms;
    --duration-210:       210ms;
    --duration-220:       220ms;
    --duration-240:       240ms;
    --duration-250:       250ms;
    --duration-270:       270ms;
    --duration-280:       280ms;
    --duration-320:       320ms;
    --duration-330:       330ms;
    --duration-350:       350ms;
    --duration-360:       360ms;
    --duration-380:       380ms;
    --duration-420:       420ms;
    --duration-440:       440ms;
    --duration-450:       450ms;
    --duration-480:       480ms;
    --duration-500:       500ms;
    --duration-540:       540ms;
    --duration-550:       550ms;
    --duration-640:       640ms;
    --duration-660:       660ms;
    --duration-700:       700ms;
    --duration-750:       750ms;
    --duration-800:       800ms;
    --duration-900:       900ms;
    --duration-1000:      1000ms;
    --duration-1200:      1200ms;
    --duration-1400:      1400ms;
    --duration-1500:      1500ms;
    --duration-1600:      1600ms;
    --duration-1800:      1800ms;
    --duration-2000:      2000ms;
    --duration-2400:      2400ms;
    --duration-3000:      3000ms;
    --duration-4000:      4000ms;
    --duration-6000:      6000ms;
    --duration-8000:      8000ms;
    --duration-14000:     14000ms;
    --duration-20000:     20000ms;

    /* ── 动效曲线（批15 F7 补全：对照 Polaris 5 档 linear/ease-in/ease-out/
           ease-in-out/ease，补 linear 与 in；其余为众泰云自定曲线，不照搬数值） ── */
    --ease-default:       cubic-bezier(0.4, 0, 0.2, 1);
    --ease-out:           cubic-bezier(0.16, 1, 0.3, 1);
    --ease-in:            cubic-bezier(0.55, 0, 1, 0.45);
    --ease-in-out:        cubic-bezier(0.65, 0, 0.35, 1);
    --ease-linear:        linear;
    --ease-spring:        cubic-bezier(0.34, 1.56, 0.64, 1);
    --ease-emphasized:    cubic-bezier(0.2, 0, 0, 1);
    --ease-bounce:        cubic-bezier(0.68, -0.55, 0.265, 1.55);
    --ease-standard:      cubic-bezier(0.2, 0, 0, 1);

    /* ── 字体栈（中文优先，保证 CJK 渲染，西文回退 InstrumentSans） ── */
    --font-sans:  "PingFang SC", "Microsoft YaHei", "Noto Sans SC", "Hiragino Sans GB",
                  "InstrumentSans", "DM Sans", -apple-system, BlinkMacSystemFont,
                  "Segoe UI", "Helvetica Neue", Arial, sans-serif;
    --font-family:    var(--font-sans);
    --font-display:   var(--font-sans);
    --font-sans-display: var(--font-sans);

    /* ── 间距（4px 网格，补齐空间键位互相兼容） ── */
    --space-1:  0.25rem;   /* 4px */
    --space-2:  0.5rem;    /* 8px */
    --space-3:  0.75rem;   /* 12px */
    --space-4:  1rem;      /* 16px */
    --space-5:  1.25rem;   /* 20px */
    --space-6:  1.5rem;    /* 24px */
    --space-7:  2rem;      /* 32px */
    --space-8:  2.5rem;    /* 40px */
    --space-12: 3rem;      /* 48px */
    --space-16: 4rem;      /* 64px */
    --space-20: 5rem;      /* 80px */

    /* ── 容器宽度（统一 1200 为主正文宽度） ── */
    --container-max:   1200px;
    --container-wide:  1400px;
    --container-xl:    1280px;

    /* ── 语义状态色（统一，保持跨系统一致） ── */
    --success:  #10b981;
    --warning:  #f59e0b;
    --error:    #ef4444;
    --info:     #3b82f6;
    --accent:   #0E7C7B;
    --gold:     #f59e0b;

    /* ── tiance-* 模板抽象 token（variables.css 高频类引用源）统一映射 ── */
    --tiance-bg:             #f8fafc;
    --tiance-text:           #1f2937;
    --tiance-text-sec:       #4b5563;
    --tiance-text-muted:     #9ca3af;
    --tiance-border:         #e5e7eb;
    --tiance-border-light:   #f3f4f6;

    /* ── Admin 抽象 token 统一映射（admin.css 依赖） ── */
    --admin-text:            #1f2937;
    --admin-text3:           #9ca3af;
    --admin-bg:              #f8fafc;
    --admin-card-bg:         #ffffff;
}

/* ── 暗色模式统一口径（覆盖 varies.css dark + tokens.css dark 的不一致区） ── */
:root[data-theme="dark"] {
    --primary:              #2dd4bf;
    --primary-light:        #5eead4;
    --primary-dark:         #14b8a6;
    --primary-500:          #2dd4bf;
    --primary-600:          #14b8a6;
    --primary-hover:        #5eead4;

    --color-accent:         #2dd4bf;
    --color-accent-hover:   #5eead4;
    --color-accent-active:  #14b8a6;

    --shadow-color-primary: 0 8px 24px -4px rgba(45, 212, 191, 0.40),
                            0 4px 8px -2px rgba(45, 212, 191, 0.22);
    --shadow-glow-brand: 0 0 32px rgba(45, 212, 191, 0.32);
    --shadow-button:     0 4px 14px rgba(45, 212, 191, 0.4);

    --tiance-bg:            #0f172a;
    --tiance-text:          #f1f5f9;
    --tiance-text-sec:      #cbd5e1;
    --tiance-text-muted:    #64748b;
    --tiance-border:        #334155;
    --tiance-border-light:  #1e293b;

    --admin-text:           #f1f5f9;
    --admin-text3:          #64748b;
    --admin-bg:             #0f172a;
    --admin-card-bg:        #1e293b;
}

/* ============================================================
   无障碍：遵循系统的强制暗色偏好作为兜底（无 data-theme 时）
   ============================================================ */
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
        --primary:              #2dd4bf;
        --primary-light:        #5eead4;
        --primary-500:          #2dd4bf;

        --color-accent:         #2dd4bf;

        --tiance-bg:            #0f172a;
        --tiance-text:          #f1f5f9;
        --tiance-text-sec:      #cbd5e1;
        --tiance-text-muted:    #64748b;
        --tiance-border:        #334155;

        --admin-text:           #f1f5f9;
        --admin-text3:          #64748b;
    }
}

/* ============================================================
   无障碍：减弱动画偏好（token 级降级，批15 F5 补回）
   权威层最后加载会覆盖 design-tokens-extended.css 的 reduced-motion
   块，此处补回同等语义，保证 prefers-reduced-motion 用户动画瞬时化。
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
    :root {
        --duration-instant:   0ms;
        --duration-fast:      0ms;
        --duration-normal:    0ms;
        --duration-slow:      0ms;
        --duration-slower:    0ms;
        --duration-slowest:   0ms;
        --ease-spring:        linear;
        --ease-bounce:        linear;
        --ease-emphasized:    linear;
    }
}
/* ============================================================
   众泰云设计语言 v1（--zt-* 层）· 批17a Lead 签发
   ------------------------------------------------------------
   地位：设计语言 v1（zt_b16b_design_language_v1.md）的实现层。
   策略：--zt-* 与既有 --tiance-*/--primary 并行映射，不直接改名，
         避免大面积回归（规格书 §九.4）。
   纪律：一页最多一个金色焦点；渐变只允许两种；蓝紫禁用。
   ============================================================ */
:root {
    /* ── 黛青主色阶 ── */
    --zt-primary-700:  #0B4A52;
    --zt-primary-600:  #0E5F69;
    --zt-primary-500:  #12808C;
    --zt-primary-300:  #7FBFC7;
    --zt-primary-100:  #E3F1F2;

    /* ── 暖金强调（全站唯一强调色） ── */
    --zt-gold-500:     #E8A33D;
    --zt-gold-600:     #C9882B;
    --zt-gold-100:     #FBF0DC;

    /* ── 墨色系（青灰底调） ── */
    --zt-ink-900:      #15201F;
    --zt-ink-600:      #5A6B6A;
    --zt-ink-400:      #8FA0A0;

    /* ── 纸面与夜色 ── */
    --zt-paper:        #F7F8F7;
    --zt-night-900:    #0C1618;
    --zt-night-800:    #112226;
    --zt-night-700:    #16333A;
    --zt-line:         #E4E9E8;

    /* ── 映射层：既有组件经此逐步迁移（一次性全替换风险高） ── */
    --zt-map-primary:      var(--zt-primary-600);
    --zt-map-primary-deep: var(--zt-primary-700);
    --zt-map-accent:       var(--zt-gold-500);
    --zt-map-bg:           var(--zt-paper);
    --zt-map-night:        var(--zt-night-900);

    /* ── 增长线（品牌图形） ── */
    --zt-growth-line-color: rgba(18, 128, 140, 0.16);
    --zt-growth-line-gold:  rgba(232, 163, 61, 0.35);
}

/* ── 暗色模式（工作台领地） ── */
[data-theme="dark"] {
    --zt-map-bg:           var(--zt-night-900);
    --zt-line:             #23393D;
    --zt-ink-600:          #9DB3B2;
    /* [dark-fix 2026-09-10] 补全遗漏的墨色/纸面覆盖。
       原先该块只覆盖了 ink-600，ink-900 / ink-400 / paper 在暗色下仍取浅色值，
       导致 .zt-trustbar__item strong、.zt-works__meta strong、.zt-wall .section-title
       等取 #15201F 深墨压在 #0F0F16 深底上 —— 像素实测对比度 1.14，等于隐形。
       取值对齐全站契约 theme-contract.css，不另立数值。 */
    --zt-ink-900:          var(--c-ink);
    --zt-ink-400:          var(--c-ink-2);
    --zt-paper:            var(--c-bg-2);
    --zt-primary-100:      rgba(18, 128, 140, 0.16);
    --zt-gold-100:         rgba(232, 163, 61, 0.12);
}

/* ============================================================
   增长线 · 品牌辅助图形（贝塞尔圆头折线，左下→右上）
   ============================================================ */
.zt-growthline {
    position: absolute;
    inset: 0;
    overflow: hidden;
    pointer-events: none;
}
.zt-growthline svg {
    position: absolute;
    bottom: -8%;
    right: -4%;
    width: 62%;
    height: auto;
    opacity: 1;
}

/* ============================================================
   滚动显现动效（D9-1：IntersectionObserver 驱动，JS 挂钩在模板）
   ============================================================ */
.zt-reveal {
    opacity: 0;
    transform: translateY(12px);
    transition:
        opacity var(--duration-slow) var(--ease-out),
        transform var(--duration-slow) var(--ease-out);
}
.zt-reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
    .zt-reveal { opacity: 1; transform: none; transition: none; }
}

/* ============================================================
   卡片悬浮（D9-2）
   ============================================================ */
.zt-lift {
    transition:
        transform var(--duration-fast) var(--ease-standard),
        box-shadow var(--duration-fast) var(--ease-standard);
}
.zt-lift:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 28px -8px rgba(21, 32, 31, 0.16);
}
@media (prefers-reduced-motion: reduce) {
    .zt-lift, .zt-lift:hover { transform: none; transition: none; }
}

