/* ==========================================================================
   S23 站点皮肤 · 令牌语义重映射层（必须在 modules.css 之后加载）
   依据：01_站点身份与占位符/site-identity.json + 第三包S23 官方文档
     · 语言 fr-FR ｜ 区域 Pays de la Loire / Bretagne / Atlantique（Nantes→Brest）
     · 行业 Aéronautique（Airbus Nantes）/ Naval & Maritime / Agroalimentaire export
     · 主题色 brand_color #0d9488（teal-600）→ 组件库 --navy-* 同位重映射
     · 强调色 accent_color #0891b2（cyan-600）→ 组件库 --gold-* 同位重映射
       —— cyan-600 白底仅 3.2:1，不可作正文/CTA 底 → 文字档与实底取
          cyan-700 #0e7490（白底 5.36:1；白字在其上 5.36:1）
     · --gold-600 hover 档 → cyan-800 #155e75（白底 7.17:1）
   对比度实测（WCAG 2.1 相对亮度法）：
     white on #134e4a = 9.48:1 ✓ ｜ #0f766e on white = 4.54:1 ✓
     white on #0e7490 = 5.36:1 ✓ ｜ #0e7490 on white = 5.36:1 ✓
     #67e8f9 on #134e4a = 6.53:1 ✓
   换肤只改这一处 —— 51 个组件零改动复用，站内差异只来自配色令牌。
   ========================================================================== */
:root{
  --navy-900:#042f2e;   /* 深底渐变起点（teal-950） */
  --navy-800:#134e4a;   /* 主色深档（teal-900）：头部/深底区块（白字 9.5:1） */
  --navy-700:#0f766e;   /* ← 主色 teal-700：链接/标题（白底 4.54:1） */
  --navy-500:#14b8a6;   /* 强调描边 / hover（teal-500） */
  --navy-100:#ccfbf1;   /* 深底上的正文色（teal-100） */
  --navy-50:#f0fdfa;    /* 浅色交替区块底（teal-50） */

  /* 强调色：gold 名下实为「品牌强调」角色。实底 CTA 用 cyan-700 #0e7490 + 白字
     （5.36:1）；cyan-300 承担描边/图标/深底强调（与规范 accent #0891b2 同族）。 */
  --gold-600:#155e75;   /* 文字档（白底 7.17:1）/ 实底 hover（cyan-800） */
  --gold-500:#0e7490;   /* 实底 CTA 底（配 .btn-gold 白字 5.36:1）（cyan-700） */
  --gold-300:#67e8f9;   /* 深底上的强调（cyan-300，深 teal 底 6.5:1） */
  --gold-50:#ecfeff;    /* 浅强调底（cyan-50） */

  --border:#c3e7e2;     /* teal 灰边框，跟随主色 */
  --surface:#fff;

  --shadow-sm:0 1px 2px rgba(4,47,46,.06);
  --shadow:0 4px 14px rgba(4,47,46,.08);
  --shadow-lg:0 14px 34px rgba(4,47,46,.14);
  --shadow-gold:0 4px 14px rgba(8,145,178,.28);

  /* assets/img 为空时的降级块底色，跟随 teal 系 */
  --ph-tint:#e6f5f2;
}

/* 实底 CTA：cyan-700 底 + 白字（#0e7490 上白字 5.36:1；库默认深字只有 ~3.3:1） */
.btn-gold{ color:#fff; }
.btn-gold:hover{ background:#155e75; color:#fff; }

/* 降级块在 teal 系皮肤下的底色 */
.img-ph{
  background:
    linear-gradient(135deg, rgba(255,255,255,.16), rgba(255,255,255,0) 58%),
    repeating-linear-gradient(45deg, rgba(13,148,136,.045) 0 9px, rgba(13,148,136,0) 9px 18px),
    var(--ph-tint);
}

/* --------------------------------------------------------------------------
   组件库内「写死的 S02 藏蓝/金值」（不走令牌）—— 皮肤层逐点收编。
   来源：2026-09-15 对 modules.css 全量色值扫描（同 S08/S11/S14 方法）。
   -------------------------------------------------------------------------- */

/* 01/01 Hero 基类：原 linear-gradient(#061a33,#0a2547,#0f3460) → S23 teal 阶 */
.m-hero{ background:linear-gradient(135deg,#042f2e,#134e4a 60%,#0d9488); }
.m-hero::after{ background:radial-gradient(circle,rgba(8,145,178,.22),transparent 68%); }
.m-hero .lead{ color:#ccfbf1; }        /* 原蓝白 #d6e4f5 → teal-100 */

/* Header 变体 B（全站头部）：原 rgba(6,26,51,.97)/rgba(10,37,71,.94) */
.m-hdr[data-v="b"]{
  background:linear-gradient(180deg,rgba(4,47,46,.97),rgba(19,78,74,.94));
}

/* 01/08 数据统计（深底卡）：标签文字原蓝白 */
.m-stats .l{ color:#ccfbf1; }

/* 03/05 演示块播放钮 / 08/04 弹窗遮罩：暗调跟随主色 */
.m-demo .play span{ background:rgba(4,47,46,.82); }
.m-modal{ background:rgba(4,47,46,.6); }

/* 06 组 m-sop 色板半格：原 #0f3460 */
.m-sop .swatch.c{ background:linear-gradient(135deg,#f5f4f1 50%,#134e4a 50%); }

/* 组件内硬编码金色 rgba → 品牌强调（cyan/teal）rgba */
.m-cert .ic, .m-quote .q-mark{ color:var(--gold-300); }

/* ===== S23 补齐模块（FR teal+cyan） ===== */
.m23-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}
.m23-metric{border:1px solid var(--border,#c3e7e2);border-top:3px solid #0f766e;background:#fff;padding:20px;text-align:center}
.m23-metric .n{font-size:30px;font-weight:800;color:#0f766e;line-height:1.1}
.m23-metric .l{font-size:13px;color:#64748b;margin-top:6px}
.m23-lc{position:fixed;left:22px;bottom:26px;z-index:900;display:flex;flex-direction:column;gap:10px}
.m23-lc-btn{width:54px;height:54px;border-radius:50%;border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;font-size:22px;box-shadow:0 4px 14px rgba(0,0,0,.18)}
.m23-wa{background:#25d366}
.m23-chat{background:linear-gradient(135deg,#0f766e,#0e7490)}
.m23-pop{position:fixed;left:22px;bottom:92px;z-index:950;width:300px;background:#fff;border:1px solid var(--border,#c3e7e2);border-top:4px solid #0f766e;border-radius:12px;padding:20px;display:none;box-shadow:0 12px 30px rgba(4,47,46,.2)}
.m23-pop.open{display:block}
.m23-pop h4{margin:0 0 6px;color:#042f2e}
.m23-pop p{margin:0 0 12px;font-size:13px;color:#64748b}
.m23-pop input,.m23-pop textarea{width:100%;box-sizing:border-box;padding:11px;border:1px solid var(--border,#c3e7e2);border-radius:8px;margin-bottom:10px;font-size:14px}
.m23-pop .btn{width:100%}
.m23-top{position:fixed;right:22px;bottom:26px;width:46px;height:46px;border-radius:50%;background:#042f2e;color:#fff;border:1px solid #0f766e;cursor:pointer;font-size:20px;z-index:900;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:.3s;box-shadow:0 4px 14px rgba(4,47,46,.35)}
.m23-top.show{opacity:1;pointer-events:auto}

/* hero real photo */
.m-hero .m-hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;z-index:0;display:block;}
.m-hero .m-hero-shade{position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(8,18,40,.85) 0%,rgba(8,18,40,.5) 55%,rgba(8,18,40,.15) 100%);}
.m-hero .wrap,.m-hero .hero-in{position:relative;z-index:2;}

/* ===== 卡片满行修复（S23 · 2026-09-21） ===== */
/* m23-metrics 4 卡：656-871 三列下末卡跨满（<=655 两列 2+2 本满，>871 四列自然满） */
@media (min-width: 656px) and (max-width: 871px) {
  .m23-metrics:not(:has(> :nth-child(5))) > :nth-child(4):last-child { grid-column: 1 / -1; }
}
/* ===== END-FULLROW-S23 ===== */

/* ===== 大图卡片样式（S23 · 2026-09-23） ===== */
/* m-feat 大图顶部卡片 */
.m-feat .card{
  position:relative;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  transition:transform .22s ease,box-shadow .22s ease;
}
.m-feat .card:hover{
  transform:translateY(-4px);
  box-shadow:var(--shadow-lg);
  border-color:var(--gold-300);
}
.m-feat .card-thumb{
  width:100%;
  aspect-ratio:16/10;
  overflow:hidden;
  background:var(--navy-50);
  flex:0 0 auto;
}
.m-feat .card-thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .3s ease;
}
.m-feat .card:hover .card-thumb img{
  transform:scale(1.05);
}
.m-feat .card-body{
  padding:20px 22px 22px;
  display:flex;
  flex-direction:column;
  gap:8px;
  flex:1 1 auto;
}
.m-feat .card h3{
  margin:0;
  font-size:17px;
  font-weight:700;
  color:var(--navy-700);
}
.m-feat .card p{
  margin:0;
  font-size:13.5px;
  color:var(--gray-600);
  line-height:1.55;
  flex:1 1 auto;
}
.m-feat .card .ic-box{ display:none; }

/* m-cat 大图顶部卡片 */
.m-cat .card{
  position:relative;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:0;
  gap:0;
  transition:transform .22s ease,box-shadow .22s ease;
}
.m-cat .card:hover{
  transform:translateY(-4px);
  box-shadow:var(--shadow-lg);
  border-color:var(--gold-300);
}
.m-cat .card-thumb{
  width:100%;
  aspect-ratio:16/10;
  overflow:hidden;
  background:var(--navy-50);
  flex:0 0 auto;
}
.m-cat .card-thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .3s ease;
}
.m-cat .card:hover .card-thumb img{
  transform:scale(1.05);
}
.m-cat .card-body{
  padding:20px 22px 22px;
  display:flex;
  flex-direction:column;
  gap:10px;
  flex:1 1 auto;
}
.m-cat .card h3{
  margin:0;
  font-size:18px;
  font-weight:700;
  color:var(--navy-700);
}
.m-cat .card p{
  margin:0;
  font-size:14px;
  color:var(--gray-600);
  line-height:1.55;
  flex:1 1 auto;
}
.m-cat .card .more{
  margin-top:auto;
  font-size:13.5px;
  font-weight:600;
  color:var(--accent-ink);
}
.m-cat .card .ic-box{ display:none; }

/* 响应式 */
@media (max-width:640px){
  .m-feat .card-thumb,
  .m-cat .card-thumb{ aspect-ratio:16/9; }
  .m-feat .card-body,
  .m-cat .card-body{ padding:16px 18px 18px; }
}


/* >>> 2026-09-26 页脚品牌名换行修复 <<< */
/* 页脚品牌名 "Traduction Atlantique France" 因列宽窄逐词折断：
   (1) 强制品牌一行不换行；(2) 桌面端把品牌列加宽，容纳 ~273px 的品牌名，避免溢出到下一列。 */
.m-ftr .brandblk .brand{ white-space:nowrap; flex-wrap:nowrap; flex:0 0 auto; }
.m-ftr .brandblk .brand > span{ white-space:nowrap; }
@media (min-width:961px){
  .m-ftr .cols{ grid-template-columns:2.4fr repeat(4, minmax(0,1fr)); }
  .m-ftr .brandblk .brand{ font-size:15px; }
}
/* <<< end 2026-09-26 S23 fix >>> */

/* === lingomere logo rollout 2026-09-28 === */
a.brand, header .brand, .main-header .brand, .site-header .brand, .m-hdr .brand {
  max-width: none !important;
  overflow: visible !important;
  white-space: nowrap !important;
}
.brand-logo, .brand .mark, .brand .lg, .brand .brand-mark {
  width: auto !important;
  height: auto !important;
  overflow: visible !important;
  background: none !important;
  border: none !important;
  box-shadow: none !important;
  flex: 0 0 auto !important;
  display: inline-flex !important;
  align-items: center;
  padding: 0 !important;
  max-width: none !important;
}
.brand-logo-img, .brand .mark img, .brand .lg img, .brand .brand-mark img {
  height: 36px !important;
  width: auto !important;
  max-width: none !important;
  border-radius: 0 !important;
  display: inline-block !important;
}
.brand-text, .brand .mark + span, .brand .lg + span, .brand .brand-mark + span {
  display: none !important;
}
.brand-logo::after, .brand .mark::after, .brand .lg::after, .brand .brand-mark::after {
  display: none !important;
}
