/* ============================================================
   爱果儿装饰 · 案例站 VI 统一皮肤层（vi-unified.css）
   ------------------------------------------------------------
   用途：把案例站（www.igooseo.cn）的全部观感统一到报价站（www.igooo.top）
         的设计系统；彻底清除米色/沙金「档案感」，改用 VI 品牌青绿 #52E397 家族。
   基准：爱果儿报价站 /output/css/style.css（1181 行）
         规格：/tmp/VI_BASELINE.md
               §0 三条铁律 / §1 设计 token / §2 组件配方 2.1–2.12
               §3.2 案例站映射表 / §4 金黄色清除映射表
   日期：2026-09-27
   加载位置：必须插在每个页面 </head> 之前（最后一个 <link>/<style> 之后）。
             因为案例站 index.html 在 <head> 里还有一段内联 <style>，
             皮肤层只有排在它后面，才能在同等特异性下取得覆盖。
   硬约束：只改观感属性（颜色 / 圆角 / 阴影 / 字体 / 字号 / 间距）。
           绝不改 grid-template-columns 的列数、display、DOM、元素顺序、
           容器宽度结构。
   !important 使用说明：只在下面三类位置使用 ——
     (1) 原规则本身已用 !important 处跟随使用
         （.footer-main-link a / .footer-cta / .nav-ext / .badge-render）；
     (2) media.html 的 <style> 写在 <body> 内（文档序晚于本皮肤层），
         需提高一级选择器特异性或跟随 !important；
     (3) projects.html 的 .price-cta / .cta-box 把背景写死在行内 style="" 上，
         行内声明只能被 !important 覆盖（共 1 条规则）。
     其余一律靠「同名选择器 + 后加载」取得覆盖。
   ============================================================ */

/* ============================================================
   0. 设计 token（§1 最终值，一字不差）
   同时把案例站的旧 token 重指向：旧规则无需逐条改，引用它们即自动变 VI 色。
   ============================================================ */
:root{
  /* ---------- 品牌（§1，一字不差） ---------- */
  --brand:#52E397;            /* 装饰色：色块/圆点/进度条/图标。白底 1.64:1，禁止做文字 */
  --brand-deep:#3BC47A;       /* 渐变尾色 */
  --brand-text:#0F766E;       /* 浅底文字色（5.47:1 ✓）所有品牌色文字用它 */
  --brand-bg:#E6FBF0;         /* 品牌浅底：胶囊/标签/hover 底 */
  --brand-grad:#17A26F;       /* 渐变大字起色（白底 3.26:1 ✓） */
  --accent:#52E397;
  --accent-deep:#2FA864;
  --brand-on-dark:#52E397;
  --brand-border:#BFECD6;     /* 品牌浅边框（§1：原金黄警示边框统一用它） */

  /* ---------- 中性 ---------- */
  --ink:#1A1A1A;
  --ink-1:#1A1A1A;
  --ink-2:#333;
  --ink-3:#666;
  --ink-4:#666666;
  --ink-faint:#666666;        /* 案例站旧别名 */
  --ink-dim:#666;             /* 案例站旧别名（原契约保留） */
  --muted:#666;               /* 案例站旧别名（原契约保留） */
  --line:#EEEEEE;
  --line-strong:#EEEEEE;
  --line-teal:rgba(82,227,151,.18);  /* 案例站旧别名：保留 */

  /* ---------- 浅色面（案例站原为米色/浅灰蓝 → 统一白/近白） ---------- */
  --bg:#FFFFFF;
  --bg-soft:#FAFAFA;
  --bg-card:#FFFFFF;
  --paper:#FFFFFF;            /* 原 #FAFAFA 米灰蓝 → 白 */
  --paper-alt:#FAFAFA;        /* 原 #FAFAFA → 近白 */
  --paper-card:#FFFFFF;
  --card:#FFFFFF;             /* 案例站旧别名 */

  /* ---------- 深色面（仅背景/边框/图形，禁止作文字色） ---------- */
  --dark:#1A1A1A;             /* 原 #143524 墨青 → 统一深色 */
  --dark-2:#143524;           /* 深色面渐变尾色：统一 #1A1A1A → #143524 */

  /* ---------- 案例站旧青绿别名（保留变量名） ---------- */
  --ink-teal:#0F766E;
  --ink-teal-deep:#0B3D24;
  --ink-teal-soft:#D4F3E2;    /* 仅装饰用 */

  /* ---------- 旧金色别名：保留变量名，重指向品牌色 ----------
     这样 style_v68.css 里所有 var(--gold*) 引用无需逐条修改即自动变 VI 色。 */
  --gold:var(--brand);
  --gold-soft:var(--brand-deep);
  --gold-pale:var(--brand-bg);
  --gold-text:var(--brand-text);

  /* ---------- 阴影（§1 三档，比案例站现状轻得多） ---------- */
  --shadow-sm:0 1px 3px rgba(0,0,0,.04);
  --shadow-md:0 4px 20px rgba(0,0,0,.06);
  --shadow-lg:0 12px 40px rgba(0,0,0,.08);

  /* ---------- 圆角（只有两档，禁止再用 20/28px 大圆角） ---------- */
  --radius:12px;
  --radius-sm:8px;
  --r-sm:8px;                 /* 原 3px 小圆角 → 8px */
  --r-md:12px;                /* 原 5px → 12px */
  --r-lg:12px;                /* 原 8px → 12px */
  --r-full:999px;

  /* ---------- 字体（无衬线；--serif 一并重指向无衬线栈） ---------- */
  --font-cn:-apple-system,BlinkMacSystemFont,"PingFang SC","Noto Sans SC","Microsoft YaHei","Segoe UI",sans-serif;
  --font-mono:"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
  --mono:"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
  --serif:-apple-system,BlinkMacSystemFont,"PingFang SC","Noto Sans SC","Microsoft YaHei","Segoe UI",sans-serif;

  /* ---------- 唯一允许的非绿非中性（仅警示文字） ---------- */
  --danger:#C0392B;
}

/* ============================================================
   1. 基础（§1 正文字体口径）
   ============================================================ */
body{
  font-family:var(--font-cn);
  color:var(--ink);
  background:var(--bg);
  line-height:1.8;
  font-size:15px;
  -webkit-font-smoothing:antialiased;
}
::selection{background:var(--brand-bg);color:var(--ink);}

/* ============================================================
   2. 页头导航（§2.1 毛玻璃 64px；§3.2 .site-header 映射）
   位置仍为 sticky（不改布局），只把玻璃感与胶囊形态对齐报价站。
   ============================================================ */
.site-header{
  background:rgba(255,255,255,.72);
  backdrop-filter:saturate(180%) blur(20px);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  border-bottom:1px solid var(--line);
}
.header-inner{height:64px;}

.brand img{height:30px;}
.brand-name b{color:var(--ink);}
.brand-name span{color:var(--ink-4);}

/* 导航链接：20px 胶囊，去掉下划线动效（content:none 直接不生成伪元素） */
.site-nav a{
  padding:6px 14px;
  font-size:13px;
  font-weight:400;
  border-radius:20px;
  color:var(--ink-3);
  transition:color .2s ease,background-color .2s ease;
}
.site-nav a::after{content:none;}
.site-nav a:hover{color:var(--brand-text);background:var(--brand-bg);}
.site-nav a.active{color:var(--brand-text);background:var(--brand-bg);font-weight:700;}
.site-nav a.nav-side{color:var(--brand-text);font-weight:700;}
.site-nav a.nav-ext{font-weight:600;}

.menu-toggle span{background:var(--ink);}
.mobile-nav{background:var(--bg-card);border-bottom:2px solid var(--brand);}
.mobile-nav a{color:var(--ink-2);border-bottom:1px solid var(--line);}
.mobile-nav a.active{color:var(--brand-text);font-weight:700;}
.mobile-nav .m-cta{
  background:linear-gradient(135deg,var(--brand),var(--brand-deep));
  color:#1A1A1A;
  border-radius:12px;
}

/* 头部 CTA：绿渐变胶囊 + 黑字（原为 var(--ink-teal) 实底） */
.header-cta{
  background:linear-gradient(135deg,var(--brand),var(--brand-deep));
  color:#1A1A1A;
  font-size:14px;
  font-weight:700;
  letter-spacing:.02em;
  padding:9px 20px;
  border-radius:20px;
  box-shadow:0 4px 14px rgba(59,196,122,.28);
}
.header-cta:hover{
  background:linear-gradient(135deg,var(--brand),var(--brand-deep));
  transform:translateY(-1px);
  box-shadow:0 6px 20px rgba(59,196,122,.36);
}

/* ============================================================
   3. 首页 Hero（§2.2 白色 + 双光斑；原为米色三段渐变）
   注意：本节选择器与 index.html 内联 <style> 同名同特异性，靠后加载取胜。
   ============================================================ */
.hero{
  background:var(--bg);
  color:var(--ink);
  border-bottom:1px solid var(--line);
}
/* ::before 覆盖首页 Hero 原有的米色/中性光斑 → 品牌青绿双光斑（右上 / 左下） */
.hero::before{
  background:
    radial-gradient(circle at 78% 22%, rgba(82,227,151,.09) 0%, transparent 42%),
    radial-gradient(circle at 18% 82%, rgba(82,227,151,.06) 0%, transparent 46%);
}
/* ::after 原为右上角沙金虚线印章圆环 → 改为左下品牌光斑（§2.2） */
.hero::after{
  left:-10%;bottom:-30%;right:auto;top:auto;
  width:500px;height:500px;border-radius:50%;
  border:none;
  background:radial-gradient(circle, rgba(82,227,151,.06) 0%, transparent 70%);
}
.hero h1{
  font-size:clamp(30px,5vw,52px);
  font-weight:900;
  line-height:1.18;
  letter-spacing:-1px;
  background:linear-gradient(135deg,#1A1A1A 0%,#2D2D2D 100%);
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
}
/* em：必须显式恢复文字填充色，否则继承 -webkit-text-fill-color:transparent 会隐形 */
.hero h1 em{
  color:var(--brand-text);
  -webkit-text-fill-color:var(--brand-text);
  background:linear-gradient(180deg,transparent 62%,rgba(82,227,151,.28) 62%);
  -webkit-background-clip:border-box;
  background-clip:border-box;
  padding:0 4px;
}
.hero h1 .gold{
  color:var(--brand-text);
  -webkit-text-fill-color:var(--brand-text);
}
.hero-lead{color:var(--ink-3);font-weight:300;}
.hero-kicker{
  background:var(--brand-bg);
  border:1px solid var(--brand-border);
  color:var(--brand-text);
}
.hero-points{background:rgba(82,227,151,.06);}
.hero-points div{border-right:1px solid var(--line-teal);}
.hero-points b{color:var(--brand-text);}

/* 徽章（§2.2） */
.hero-badge{
  display:inline-flex;align-items:center;gap:8px;
  padding:6px 16px;border-radius:20px;
  background:var(--brand-bg);color:var(--brand-text);
  border:none;
  font-family:var(--font-cn);
  font-size:12px;font-weight:500;letter-spacing:1px;text-transform:none;
  margin-bottom:28px;
}
.hero-badge::before{
  content:'';width:6px;height:6px;border-radius:50%;
  background:var(--brand);
  animation:igoo-pulse 2s infinite;
}
@keyframes igoo-pulse{
  0%,100%{opacity:1;transform:scale(1);}
  50%{opacity:.5;transform:scale(1.3);}
}

/* Hero 数据栏（§2.3 1px 缝隙网格；列数沿用原 auto-fit，不动布局） */
.hero-stats{
  background:var(--line);
  border:1px solid var(--line);
  border-radius:var(--radius);
  box-shadow:var(--shadow-md);
}
.hero-stats .stat,
.hero-stats > div{background:#FFFFFF;}
.hero-stats .cell{background:#FFFFFF;}
.hero-stats .num{color:var(--ink);font-family:var(--mono);font-weight:900;}
.hero-stats .lab{color:var(--ink-4);}
.hero-stats .num.gold{color:var(--ink);}

/* ============================================================
   4. 内页 Hero + 面包屑（§2.2 白色页头 / 渐变标题）
   ============================================================ */
.page-hero{
  background:var(--bg);
  border-bottom:1px solid var(--line);
}
.page-hero::before{
  background:repeating-linear-gradient(90deg, transparent 0 79px, rgba(82,227,151,.035) 79px 80px);
}
.page-hero h1{
  color:var(--ink);
  font-weight:900;
  letter-spacing:-1px;
  line-height:1.2;
  background:linear-gradient(135deg,#1A1A1A 0%,#2D2D2D 100%);
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
}
.page-hero .desc{color:var(--ink-3);font-weight:300;}

.case-hero-fig{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);}

.breadcrumb{color:var(--ink-faint);}
.breadcrumb a{color:var(--ink-3);}
.breadcrumb a:hover{color:var(--brand-text);}
.breadcrumb .sep{color:var(--ink-4);}

/* ============================================================
   5. 按钮（§2.4）
   ============================================================ */
.btn{border-radius:10px;}
.btn-primary{
  background:linear-gradient(135deg,var(--brand),var(--brand-deep));
  color:#1A1A1A;
  font-size:16px;
  font-weight:800;
  letter-spacing:.03em;
  padding:14px 34px;
  border-radius:12px;
  box-shadow:0 10px 28px rgba(59,196,122,.34);
}
.hero .btn-primary{background:linear-gradient(135deg,var(--brand),var(--brand-deep));}
.btn-primary:hover{
  background:linear-gradient(135deg,var(--brand),var(--brand-deep));
  transform:translateY(-2px);
  box-shadow:0 14px 34px rgba(59,196,122,.42);
}
.btn-ghost{
  background:#FFFFFF;
  color:var(--ink-3);
  border:1px solid var(--line);
  border-radius:10px;
  padding:10px 20px;
}
.btn-ghost:hover{border-color:var(--brand);color:var(--brand-text);background:#FFFFFF;}
.section .btn-ghost,
.btn-ghost.dark{color:var(--ink-3);border-color:var(--line);}
.section .btn-ghost:hover{border-color:var(--brand);color:var(--brand-text);background:#FFFFFF;}
/* 深色 CTA 卡内的 ghost：保持深底规范（白字），不被上面的浅底规则带偏 */
.cta-card .btn-ghost{background:transparent;color:rgba(255,255,255,.78);border-color:rgba(255,255,255,.26);}
.cta-card .btn-ghost:hover{background:rgba(255,255,255,.10);color:#FFFFFF;border-color:rgba(255,255,255,.45);}

/* ============================================================
   6. 章节与章节头（§2.5）
   ============================================================ */
.section-alt{background:var(--bg-soft);}
.section-head h2{
  font-size:clamp(24px,3.4vw,32px);
  font-weight:700;
  letter-spacing:-.5px;
  color:var(--ink);
}
.section-head p{color:var(--ink-3);}
.section-kicker{
  font-family:var(--font-cn);
  font-size:12.5px;
  font-weight:500;
  letter-spacing:3px;
  text-transform:none;
  color:var(--brand-text);
}
.section-head .section-kicker{display:block;margin-bottom:10px;}
.section-head .section-kicker::after{
  content:"";display:inline-block;width:44px;height:1px;
  background:var(--line);margin-left:12px;vertical-align:middle;
}

/* ============================================================
   7. 统计带 / 统计卡（§2.3 §2.6）
   ============================================================ */
.stats-band{background:var(--bg-card);border-bottom:1px solid var(--line);}
.stats-grid .stat b{color:var(--ink);font-family:var(--mono);}
.stats-grid .stat span{color:var(--ink-4);}
.stat b,
.stat-num{color:var(--ink);font-family:var(--mono);}
.stat span,
.stat-label{color:var(--ink-4);}

.stat-card{
  background:var(--bg-card);
  border:1px solid var(--line);
  border-top:3px solid var(--brand);
  border-radius:var(--radius);
}
.stat-card:hover{border-top-color:var(--brand);box-shadow:var(--shadow-md);}
.stat-card .stat-ico{background:var(--brand-bg);color:var(--brand-text);}
.stat-card:hover .stat-ico{background:var(--brand-bg);}
.stat-card .stat-body b{color:var(--ink);font-family:var(--mono);}
.stat-card .stat-cap{color:var(--ink);}
.stat-card .stat-desc{color:var(--ink-4);}

/* ============================================================
   8. 卡片族（§2.6 统一配方）
   ============================================================ */

/* 8.1 案例卡（cases.html） */
.case-card{
  background:var(--bg-card);
  border:1px solid var(--line);
  border-radius:var(--radius);
}
.case-card::before{color:var(--ink-4);}   /* data-no 档案编号：沙金 → 中性 */
.case-card::after{background:var(--brand);}
.case-card:hover{
  background:var(--bg-card);
  border-color:var(--brand);
  box-shadow:var(--shadow-md);
  transform:translateY(-2px);
}
.case-card h3 a{color:var(--ink);}
.case-card:hover h3 a{color:var(--brand-text);}
.case-card p{color:var(--ink-3);}
.case-card:hover p{color:var(--ink-3);}
.case-ico{background:var(--brand-bg);color:var(--brand-text);border-radius:var(--radius-sm);}
.case-card:hover .case-ico{background:var(--brand-bg);color:var(--brand-text);}
.case-card .case-photo{background:var(--bg-soft);border-radius:var(--radius-sm);}
.case-card:hover .case-photo{background:var(--bg-soft);}
.case-card:hover .case-meta span{background:var(--brand-bg);color:var(--brand-text);}

/* 8.2 图库卡（gallery.html / projects.html / media.html） */
.gallery-card{
  background:var(--bg-card);
  border:1px solid var(--line);
  border-radius:var(--radius);
}
.gallery-card:hover{
  border-color:var(--brand);
  transform:translateY(-2px);
  box-shadow:var(--shadow-md);
}
.card-img{background:var(--bg-soft);}
.card-desc{color:var(--ink-3);}
.card-badge{background:var(--brand);color:#1A1A1A;border-radius:var(--r-full);}

/* 8.3 媒体卡（media.html） */
.media-card .card-img{background:var(--bg-soft);}
.media-card .card-body b{color:var(--ink);}

/* 8.4 特性卡（§2.6） */
.feature{
  background:var(--bg-card);
  border:1px solid var(--line);
  border-radius:var(--radius);
}
.feature:hover{border-color:var(--brand);box-shadow:var(--shadow-md);}
.feature-ico{background:var(--brand-bg);color:var(--brand-text);border-radius:var(--radius-sm);}
.feature h3{color:var(--ink);}
.feature p{color:var(--ink-3);}

/* 8.5 侧栏卡 / 信息格 / 标签块 / 高亮清单（§2.6） */
.side-card{
  background:var(--bg-card);
  border:1px solid var(--line);
  border-radius:var(--radius);
}
.side-card::before{background:var(--brand);}
.side-card h4{color:var(--ink);}
.side-list li{border-bottom:1px dashed var(--line);}
.side-list a{color:var(--ink-2);}
.side-list a:hover{color:var(--brand-text);}

.meta-card{background:var(--line);border:1px solid var(--line);border-radius:var(--radius-sm);}
.meta-row{background:var(--bg-card);}
.meta-k{color:var(--ink-faint);}
.meta-v{color:var(--ink);font-family:var(--mono);}
.meta-empty{color:var(--ink-faint);}

.highlight-list li{border-bottom:1px dashed var(--line);}

.note-box{
  background:var(--brand-bg);
  border:1px solid var(--brand-border);
  border-radius:var(--radius);
  color:var(--ink-2);
}

/* 8.6 分类块 / 分类标题 */
.cat-block h3{color:var(--ink);}
.cat-title{color:var(--ink);border-bottom:2px solid var(--line);}
.cat-title svg{color:var(--brand-text);}
.more-index{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);}
.more-index summary{color:var(--ink);}
.more-index summary:hover{background:var(--brand-bg);}
.more-index a{color:var(--ink-2);}
.more-index a:hover{color:var(--brand-text);}
.plain-list li{border-bottom:1px dashed var(--line);}

/* ============================================================
   9. 文章列表（§3.2 细线分隔 + hover --brand-bg）
   ============================================================ */
.article-list{display:flex;flex-direction:column;}
.article-row{border-bottom:1px solid var(--line);}
.article-row:first-child{border-top:1px solid var(--line);}
.article-row:hover{background:var(--brand-bg);}
.article-date{
  background:var(--bg-card);
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
}
.article-date b{color:var(--ink);font-family:var(--mono);}
.article-date span{color:var(--ink-4);}
.article-body h3 a{color:var(--ink);}
.article-body h3 a:hover{color:var(--brand-text);}
.article-body p{color:var(--ink-3);}

/* ============================================================
   10. 正文排版（§2.7 表格 + blockquote 左边框品牌）
   ============================================================ */
.prose{color:var(--ink-2);}
.prose h2{color:var(--ink);border-left-color:var(--brand);}
.prose h3{color:var(--ink);}
.prose li::before{background:var(--brand);}
.prose strong{color:var(--ink);}
.prose a{color:var(--brand-text);border-bottom:1px solid rgba(15,118,110,.3);}
.prose a:hover{color:var(--brand-text);border-color:var(--brand);}
.prose blockquote{background:var(--brand-bg);border-left-color:var(--brand);color:var(--ink-2);}
.prose th{
  background:var(--bg-soft);
  color:var(--ink-3);
  border-bottom:2px solid var(--line);
  font-weight:500;
}
.prose td{border-bottom:1px solid var(--line);}
.prose tr:nth-child(even) td{background:var(--bg-soft);}

/* ============================================================
   11. FAQ（§2.10）
   ============================================================ */
.faq-item{
  background:var(--bg-card);
  border:1px solid var(--line);
  border-radius:var(--radius);
}
.faq-item h3,
.faq-item summary,
.faq-item .faq-q{color:var(--ink);}
.faq-item .faq-q::after,
.faq-item summary::after{color:var(--brand-text);}
.faq-item .faq-a,
.faq-item .faq-body{color:var(--ink-3);}

/* ============================================================
   12. CTA 区（§2.9 深色渐变 #1A1A1A → #143524）
   ============================================================ */
.cta-card{
  background:linear-gradient(135deg,#1A1A1A 0%,#143524 100%);
  border-radius:var(--radius);
}
.cta-card::before{
  background:radial-gradient(circle at 88% 18%, rgba(82,227,151,.16) 0%, transparent 62%);
}
.cta-card h2,
.cta-card h3{color:#FFFFFF;}
.cta-card p{color:rgba(255,255,255,.92);}
.cta-card h4{color:var(--brand-on-dark);}
.cta-phone{color:#FFFFFF;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);border-radius:var(--radius-sm);}

/* ============================================================
   13. 胶囊 / 标签（§2.8）
   ============================================================ */
.chip{
  background:#FFFFFF;
  color:var(--ink-3);
  border:1px solid var(--line);
  border-radius:20px;
}
.chip:hover{background:#FFFFFF;border-color:var(--brand);color:var(--brand-text);}
.chip.on{background:var(--brand);color:#1A1A1A;border-color:var(--brand);font-weight:700;}
.cat-pill{
  background:#FFFFFF;
  color:var(--ink-3);
  border:1px solid var(--line);
  border-radius:20px;
}
.cat-pill:hover,
.cat-pill.on{background:var(--brand);color:#1A1A1A;border-color:var(--brand);}
.case-meta span,
.tag,
.article-tags span{
  background:var(--brand-bg);
  color:var(--brand-text);
  border-radius:16px;
}
.tag--std{color:var(--ink-2);background:var(--bg-soft);border:1px solid var(--line);}

/* ============================================================
   14. GEO / 长尾词墙 / 分类页杂项
   ============================================================ */
.kw-hero .kw-meta li{color:var(--ink-3);}
.kw-hero .kw-meta b{color:var(--ink);font-family:var(--mono);}
.kw-block{background:var(--bg-card);border:1px solid var(--line);border-left:3px solid var(--brand);}
.kw-block h3{color:var(--ink);font-family:var(--font-cn);}
.kw-tag{background:var(--brand);color:#1A1A1A;font-family:var(--mono);}
.kw-count{color:var(--ink-3);}
.kw{background:#FFFFFF;color:var(--ink-3);border:1px solid var(--line);border-radius:var(--radius-sm);}
.kw:hover{background:var(--brand);color:#1A1A1A;border-color:var(--brand);}

.geo-hub-group h3{color:var(--ink);border-bottom:2px solid var(--line);}
.geo-hub-group h3 .cnt{color:var(--brand-text);}
.geo-hub-row .geo-biz-name{color:var(--ink);}
.geo-hub-links a{background:#FFFFFF;border:1px solid var(--line);color:var(--ink-3);border-radius:var(--r-full);}
.geo-hub-links a:hover{background:var(--brand);border-color:var(--brand);color:#1A1A1A;}

.gallery-figure{background:var(--bg-soft);border-radius:var(--radius);}
.gallery-figure figcaption{color:var(--ink-2);}
.gallery-back,
.gallery-prev,
.gallery-next{background:#FFFFFF;border:1px solid var(--line);color:var(--ink-3);border-radius:var(--radius-sm);}
.gallery-back:hover,
.gallery-prev:hover,
.gallery-next:hover{background:var(--brand);color:#1A1A1A;border-color:var(--brand);}

/* ============================================================
   15. 页脚（§2.11 极简浅色；原为墨青深底 #143524）
   深底 → 浅底后，所有白色系文字必须同步换成中性色，否则不可见。
   ============================================================ */
.site-footer{background:var(--bg-soft);color:var(--ink-4);}
.footer-brand p{color:var(--ink-4);}
.footer-main-link a{color:var(--brand-text) !important;border-bottom:1px solid rgba(82,227,151,.4);}
.footer-col h5{color:var(--ink-4);}
.footer-col a{color:var(--ink-4);}
.footer-col a:hover{color:var(--brand-text);}
.footer-contact li{color:var(--ink-4);}
.footer-contact svg{color:var(--brand-text);}
.footer-contact b{color:var(--ink);}
.footer-cta{
  background:var(--brand-bg);
  border:1px solid var(--brand-border);
  color:var(--brand-text) !important;
  border-radius:var(--radius-sm);
}
.footer-cta:hover{background:var(--brand);}
.footer-bottom{border-top:1px solid var(--line);}
.footer-bottom .container{color:var(--ink-4);}
.footer-bottom a{color:var(--ink-4);}
.footer-bottom a:hover{color:var(--brand-text);}

/* ============================================================
   16. 首页内联 <style> 专用覆盖（index.html）
   这些类只在 index.html 出现，且内联样式里带沙金/米色字面值，
   不能被「token 重指向」自动修复，因此逐条覆盖（同名选择器 + 后加载）。
   ============================================================ */
.sec-tag{color:var(--brand-text);border:1px solid var(--line);}
.sec-title{color:var(--ink);}
.sec-title em{color:var(--brand-text);}
.sec-sub{color:var(--ink-3);}
.sec-more{color:var(--brand-text);}
.sec-more:hover{color:var(--brand-text);}

.case{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);}
.case:hover{border-color:var(--brand);box-shadow:var(--shadow-md);}
.case-fig{background:var(--bg-soft);border-bottom:1px solid var(--line);}
.case-type{background:var(--brand);color:#1A1A1A;border-radius:var(--r-full);}
.case-type.gold{background:var(--brand);color:#1A1A1A;}
.case-body h3{color:var(--ink);}
.case-body p{color:var(--ink-3);}
.case-meta .dur{color:var(--brand-text);}

.words span{background:#FFFFFF;border:1px solid var(--line);color:var(--ink-2);border-radius:var(--r-full);}
.words span:hover{border-color:var(--brand);color:var(--brand-text);}

.arc{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);}
.arc:hover{border-color:var(--brand);}
.arc summary .arc-tag{
  color:var(--brand-text);
  background:var(--brand-bg);
  border:1px solid var(--brand-border);
  border-radius:99px;
}
.arc[open] .arc-arrow{background:var(--brand);color:#1A1A1A;border-color:var(--brand);}
.arc-body{border-top:1px dashed var(--line);}
.arc-body h4{color:var(--ink);}
.arc-body h4::before{background:var(--brand);}
.arc-body tr:hover td{background:var(--bg-soft);}
.arc-note{background:var(--brand-bg);border-left:3px solid var(--brand);color:var(--ink-2);}
.arc-cta{color:var(--brand-text);}
.arc-quote{background:var(--bg-soft);border:1px solid var(--line);color:var(--ink-2);}
.arc-quote b{color:var(--brand-text);}

.local-card{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);}
.local-card:hover{border-color:var(--brand);}
.local-card .lc-num{color:var(--ink);font-family:var(--mono);}
.local-card.x .lc-num{color:var(--brand-text);}
.local-card h4{color:var(--ink);}
.local-card p{color:var(--ink-3);}
.local-region span{background:#FFFFFF;border:1px solid var(--line);color:var(--ink-2);}
.local-region span b{color:var(--brand-text);}
.local-statement{background:var(--bg-soft);border:1px solid var(--line);border-left:4px solid var(--brand);border-radius:var(--radius-sm);}
.local-statement h4{color:var(--ink);}
.local-statement p{color:var(--ink-2);}

.cred{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);}
.cred h4{color:var(--ink);}
.cred p{color:var(--ink-3);}
.cred p b{color:var(--ink);}

.news{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);}
.news:hover{border-color:var(--brand);}
.news .date{color:var(--brand-text);}
.news .date .bar{background:var(--brand);}
.news h3{color:var(--ink);}
.news p{color:var(--ink-3);}
.news .tags span{border:1px solid var(--line);color:var(--ink-3);}

.tip-card{
  border:1px solid var(--brand-border);
  background:linear-gradient(90deg, rgba(82,227,151,.08), transparent 70%), var(--bg-card);
  border-radius:var(--radius);
}
.tip-card h3{color:var(--ink);}
.tip-card p{color:var(--ink-3);}

.faq{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius);}
.faq summary{color:var(--ink);}
.faq summary .q{color:var(--brand-text);}
.faq summary::after{color:var(--brand-text);}
.faq-body{border-top:1px dashed var(--line);}
.faq-body p{color:var(--ink-2);}

/* ============================================================
   17. 行内 style 属性的强制覆盖
   ------------------------------------------------------------
   17.a media.html：该页的 <style> 位于 <body> 内、文档序晚于本皮肤层，
        同特异性下会盖过本文件；故提高一个层级的选择器特异性。
        （media.html 文件本身未改动。）
   ============================================================ */
body .feat-card{outline-color:rgba(82,227,151,.45);}
body .feat-star{background:linear-gradient(135deg,var(--brand),var(--brand-deep));color:#1A1A1A;}
body #pager .pg-btn:hover{border-color:var(--brand);color:var(--brand-text);}

/* ------------------------------------------------------------
   17.b projects.html：.price-cta / .cta-box 两处把背景色写死在
        style="" 属性里（background:var(--ink-teal…)）。行内声明的优先级
        高于任何选择器，token 改色后这两块会变成「深底(#0F766E) + 深字(#1A1A1A)」
        而不可读（实测 3.18:1 / 1.41:1）。此处是覆盖行内样式的唯一手段：
        用 !important 把它们恢复成 VI 规范的品牌绿渐变 + 黑字。
   ------------------------------------------------------------ */
.price-cta,
.cta-box{background:linear-gradient(135deg,var(--brand),var(--brand-deep)) !important;}

/* ============================================================
   18. 杂项 / 安全网
   ============================================================ */
.muted{color:var(--ink-3);}
.gallery-card[data-cat="site-photo"] .card-img::after{background:rgba(26,26,26,.55);color:#FFFFFF;}
#shots .case-fig img{background:var(--bg-soft);}
svg{max-width:100%;}

/* ============================================================
   19. 第二轮补遗（2026-09-27 · 渲染层逐元素实证抓出的漏网项）
   ------------------------------------------------------------
   来源：/tmp/offender_scan.py 在 1440 视口把每个可见元素的
        backgroundColor 与 §1 规范逐项比对，抓出案例站 2 处越界。
   ============================================================ */

/* 19.1 .hero-points 子格仍是 rgba(255,255,255,.85)（半透明白叠在浅底上
   会透出底色，与报价站「纯白卡片」不一致）→ 统一纯白 */
.hero-points > div,
.hero-points div{background:#FFFFFF;}

/* 19.2 首页 .case-type 有一处写成行内 style="background:#4FA3F7"（非 VI 蓝），
   行内声明优先级高于任何选择器，只能用 !important 覆盖。
   覆盖后本页所有业态角标统一为品牌绿底 + 黑字（§2.8）。 */
.case-type{background:var(--brand)!important;color:#1A1A1A!important;}

/* 19.3 Hero 纵向节奏对齐报价站（§2.2：padding 130px 40px 90px）。
   仅作用于 ≥769px，避免挤压移动端首屏。 */
@media (min-width:769px){
  .hero{padding-top:130px;padding-bottom:90px;}
}
