/* Simply 主题首页样式 —— 由 index.html 移植，图片路径已改为主题 assets/images/ */

:root{
  /* —— 品牌色 —— */
  --accent:      #e8a33d;   /* 主强调色·琥珀金（按钮/图标底色） */
  --accent-2:    #f6c56a;   /* 渐变亮端 */
  --accent-dark: #c07d1c;   /* hover 深色 */
  --accent-ink:  #a9701a;   /* 文字用金色（白底上对比度达标） */

  /* —— 中性色（亮色主题）—— */
  --ink:         #ffffff;              /* 页面底色 */
  --ink-2:       #f4f6f9;              /* 交替区块底色 */
  --ink-3:       #eef1f6;              /* 更浅的灰（悬停/输入底） */
  --line:        rgba(15,23,42,.10);   /* 描边 */
  --text:        #1b2230;              /* 主文字 */
  --muted:       #5b6675;              /* 次要文字 */
  --white:       #ffffff;

  /* —— 布局 —— */
  --container: 80%;        /* 页面内容宽度：整站统一 80% */
  --radius: 16px;
  --radius-sm: 10px;
  --shadow: 0 16px 44px rgba(15,23,42,.10);
  --shadow-lg: 0 26px 60px rgba(15,23,42,.16);
  --ease: cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after{ margin:0; padding:0; box-sizing:border-box; }

html{ scroll-behavior:smooth; }

body{
  font-family:"Inter","Manrope",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;
  font-size:16px; line-height:1.6; color:var(--text);
  background:var(--ink); -webkit-font-smoothing:antialiased; overflow-x:hidden;
}

img,svg{ display:block; max-width:100%; }
a{ text-decoration:none; color:inherit; }
ul{ list-style:none; }
button,input,select,textarea{ font:inherit; color:inherit; }

/* 内容容器：宽度 80% 居中 */
.container{ width:var(--container); margin:0 auto; }

/* 小标签（SECTION 上方的小字） */
.eyebrow{
  font-size:13px; font-weight:700; letter-spacing:.18em; text-transform:uppercase;
  color:var(--accent-ink); margin-bottom:14px;
}

/* 区块通用间距
   overflow-x:clip（v1.9.3）：把装饰层横向超出区块的部分裁掉，防止它们撑宽文档。
   起因：footer.css 在 ≤640px 给 .deco--ring-tr 设了 right:-40px，首页 #equipment 区块里
   正好有这个装饰环，而 .section 不做裁切 → 文档宽被撑成「视口 375 + 40」，
   移动端布局视口随之变宽，position:fixed 的头部跟着变成 415px 宽，
   右侧汉堡按钮有 19px 掉到屏幕外（用户必须左右滑动才看得见）。
   用 clip 而不是 hidden：hidden 会连带把 overflow-y 也算成 auto（纵向装饰被裁 + 出滚动条），
   clip 是唯一能与 visible 配对的裁切值，纵向溢出（.deco--ring 的 bottom:-70px）不受影响。 */
.section{ padding:90px 0; position:relative; overflow-x:clip; }
.section--alt{ background:var(--ink-2); }

/* 区块标题组 */
.sec-head{ max-width:720px; margin-bottom:56px; }
.sec-title{
  font-family:"Manrope",Arial,sans-serif;
  font-size:clamp(30px,4vw,52px); line-height:1.14; font-weight:800; letter-spacing:-.02em;
  margin-bottom:18px; color:var(--text);
}
.sec-desc{ color:var(--muted); font-size:17px; }

/* 通用卡片 */
.card{
  background:var(--white);
  border:1px solid var(--line); border-radius:var(--radius);
  overflow:hidden; transition:transform .5s var(--ease), border-color .4s, box-shadow .5s;
}
.card:hover{
  transform:translateY(-8px);
  border-color:rgba(232,163,61,.55); box-shadow:var(--shadow-lg);
}

/* 渐变文字（白底上用深金 → 亮金渐变，保证可读性） */
.grad{
  background:linear-gradient(100deg,#c98a22,var(--accent) 55%,#a9701a);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}

/* 按钮 */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  padding:15px 30px; border-radius:999px; font-weight:700; font-size:15px;
  letter-spacing:.01em; cursor:pointer; border:1px solid transparent;
  transition:transform .35s var(--ease), background-color .3s, color .3s, border-color .3s, box-shadow .35s;
}
.btn--primary{
  background:linear-gradient(100deg,var(--accent-2),var(--accent));
  color:#20150a; box-shadow:0 10px 26px rgba(232,163,61,.34);
}
.btn--primary:hover{ transform:translateY(-3px); box-shadow:0 16px 38px rgba(232,163,61,.46); }
.btn--line{ border-color:rgba(27,34,48,.2); color:var(--text); }
.btn--line:hover{ border-color:var(--accent); color:var(--accent-ink); transform:translateY(-3px); }
.btn--ghost{ background:var(--white); border-color:var(--line); color:var(--text); }
.btn--ghost:hover{ background:var(--accent); color:#20150a; border-color:var(--accent); }
.btn--sm{ padding:11px 22px; font-size:14px; }
.btn--block{ width:100%; }

/* 箭头链接 */
.link-arrow{
  display:inline-flex; align-items:center; gap:8px; margin-top:16px;
  color:var(--accent-ink); font-weight:700; font-size:14px;
}
.link-arrow svg{ transition:transform .35s var(--ease); }
.card:hover .link-arrow svg{ transform:translateX(6px); }

/* 图片占位块（替换成真实图片时：把 <div class="ph"> 改成 <img src="xxx.jpg" alt=""> 即可） */
.ph{
  position:relative; width:100%; aspect-ratio:4/3; border-radius:var(--radius-sm) var(--radius-sm) 0 0;
  background:
    repeating-linear-gradient(45deg,rgba(15,23,42,.035) 0 2px,transparent 2px 9px),
    linear-gradient(135deg,#eef1f6,#dde3ec 60%,#d3dae5);
  overflow:hidden;
}
/* 占位容器内的真实图片：铺满 + 裁切（扫光效果仍在其上） */
.ph > img{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; display:block;
}
.ph::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.65) 50%,transparent 70%);
  transform:translateX(-100%); transition:transform .9s var(--ease);
}
.card:hover .ph::after, .equip__item:hover .ph::after, .show-card:hover .ph::after{ transform:translateX(100%); }
/* 8 种浅色金属质感占位配色 */
.ph--1{ background:repeating-linear-gradient(45deg,rgba(15,23,42,.035) 0 2px,transparent 2px 9px),linear-gradient(135deg,#eef1f6,#d9e0ea); }
.ph--2{ background:repeating-linear-gradient(45deg,rgba(15,23,42,.035) 0 2px,transparent 2px 9px),linear-gradient(135deg,#f4efe7,#e3dbcf); }
.ph--3{ background:repeating-linear-gradient(45deg,rgba(15,23,42,.035) 0 2px,transparent 2px 9px),linear-gradient(135deg,#e9eff5,#d5dee8); }
.ph--4{ background:repeating-linear-gradient(45deg,rgba(15,23,42,.035) 0 2px,transparent 2px 9px),linear-gradient(135deg,#f3ece5,#e0d6ca); }
.ph--5{ background:repeating-linear-gradient(45deg,rgba(15,23,42,.035) 0 2px,transparent 2px 9px),linear-gradient(135deg,#eaeff3,#d7dfe7); }
.ph--6{ background:repeating-linear-gradient(45deg,rgba(15,23,42,.035) 0 2px,transparent 2px 9px),linear-gradient(135deg,#eeecf3,#dcd8e6); }
.ph--7{ background:repeating-linear-gradient(45deg,rgba(15,23,42,.035) 0 2px,transparent 2px 9px),linear-gradient(135deg,#e7eef0,#d4dee0); }
.ph--8{ background:repeating-linear-gradient(45deg,rgba(15,23,42,.035) 0 2px,transparent 2px 9px),linear-gradient(135deg,#f2ede6,#e2d9cb); }

/* 滚动进场动画 */
.reveal{ opacity:0; transform:translateY(30px); transition:opacity .8s var(--ease), transform .8s var(--ease); }
.reveal.in{ opacity:1; transform:none; }
.reveal[data-delay="1"]{ transition-delay:.08s; }
.reveal[data-delay="2"]{ transition-delay:.16s; }
.reveal[data-delay="3"]{ transition-delay:.24s; }
.reveal[data-delay="4"]{ transition-delay:.32s; }
.reveal[data-delay="5"]{ transition-delay:.40s; }
.reveal[data-delay="6"]{ transition-delay:.48s; }
.reveal[data-delay="7"]{ transition-delay:.56s; }

/* 选择文本 / 焦点可见性（无障碍） */
::selection{ background:var(--accent); color:#20150a; }
:focus-visible{ outline:2px solid var(--accent-ink); outline-offset:3px; border-radius:4px; }

/* 头部改为 fixed：脱离文档流，收起时不再推动下方内容（消除滚动跳动） */
.site-header{
  position:fixed; top:0; left:0; right:0; z-index:80;
  background:var(--white);
}

/* fixed 头部会让页面顶部被遮挡，用 padding 让位（高度由 JS 实测后写入 --hh / --hh-mini） */
:root{ --hh:145px; --hh-mini:70px; }
body{ padding-top:var(--hh); transition:padding-top .45s var(--ease); }
body.is-mini{ padding-top:var(--hh-mini); }
/* 锚点跳转时避开固定头部 */
html{ scroll-padding-top:calc(var(--hh) + 12px); }

/* —— 上半：LOGO + 电话/邮箱/社交（斜切浅灰底）—— */
.header-top-wrap{
  background:linear-gradient(105deg,#ffffff 0%,#ffffff 40%,var(--ink-2) 40%,var(--ink-2) 100%);
  border-bottom:1px solid var(--line);
  max-height:140px; overflow:hidden;
  transition:max-height .45s var(--ease), opacity .3s var(--ease);
}
/* 滚动效果：下滑后上半信息条收起，只留导航条吸顶 */
.site-header.is-mini .header-top-wrap{ max-height:0; opacity:0; border-bottom-color:transparent; }

.header-top{
  display:flex; align-items:center; justify-content:space-between;
  gap:24px; padding:20px 0;
}
.header-top-left{ display:inline-flex; align-items:center; }

/* LOGO */
.logo{ display:inline-flex; align-items:center; gap:11px; }
.logo__mark{ display:block; }
.logo__text{
  font-family:"Manrope",Arial,sans-serif; font-weight:800; font-size:20px;
  letter-spacing:.06em; line-height:1; color:var(--text);
}
.logo__text em{ display:block; font-style:normal; font-size:11px; letter-spacing:.34em; color:var(--accent-ink); margin-top:3px; }
.header-top-left:hover .logo__text{ color:var(--accent-ink); }

/* 右侧：电话 / 邮箱 / 社交 */
.header-top-right{ display:flex; align-items:center; gap:56px; }

.contact{ display:inline-flex; align-items:center; gap:14px; }
.contact__icon{
  flex:0 0 40px; width:40px; height:40px; border-radius:50%;
  display:grid; place-items:center;
  background:rgba(232,163,61,.14); color:var(--accent-ink);
  transition:background-color .3s, color .3s, transform .3s var(--ease), box-shadow .3s;
}
/* 移入效果：图标变实心金 + 上浮 */
.contact:hover .contact__icon{
  background:var(--accent); color:#20150a; transform:translateY(-3px);
  box-shadow:0 8px 20px rgba(232,163,61,.4);
}
.contact__text em{ display:block; font-style:normal; font-size:13.5px; color:var(--muted); line-height:1.2; }
.contact__text strong{
  display:block; font-size:16px; font-weight:700; color:var(--text); line-height:1.3;
  transition:color .3s;
}
.contact:hover .contact__text strong{ color:var(--accent-ink); }

/* 社交图标 */
.social{ display:flex; align-items:center; gap:12px; }
.social a{
  width:32px; height:32px; display:grid; place-items:center; border-radius:50%;
  border:1px solid var(--line); color:var(--muted); background:var(--white);
  transition:color .3s, background-color .3s, border-color .3s, transform .3s var(--ease);
}
.social a:hover{
  color:#20150a; background:var(--accent); border-color:var(--accent); transform:translateY(-3px);
}
/* —— 社交图标：品牌实心圆徽章（v1.12.4 头部/手机菜单 · v1.12.5 页脚补齐）——
   **三处共用这一套**（锚点类 .social-link--*）：
     ① 头部 .social                     32px 圆，白底         → header.php
     ② 手机菜单 .nav-contact__social    36px 圆，白底         → functions.php（$social_cls 映射）
     ③ 页脚 .footer__social             36px 圆，深色照片底    → footer.php
   做法 = 圆底刷品牌色 + 图标转白（图标是 fill="currentColor" 的内联 SVG，给 color 就等于给图标上色）。
   品牌色抽成变量 --brand，公共规则只写一遍。
   特异性：`.social-link.social-link` = (0,2,0) 压过 `.social a` / `.nav-contact__social a` / `.footer__social a` 三者的 (0,1,1)；
   `.social-link.social-link:hover` = (0,3,0) 同样压过它们各自的 :hover (0,2,1)
   → 悬停时**保持品牌色**（抬升 3px 的 transform 仍由原 :hover 规则提供），不会跳成金色。
   注：页脚在深色底上也照用官方色 —— 深底比对的是「实心色圆」而非「色字」，对比度不再是问题。 */
.social-link.social-link--fb{ --brand:#1877f2; }   /* Facebook 官方蓝 */
.social-link.social-link--li{ --brand:#0a66c2; }   /* LinkedIn 官方蓝 */
.social-link.social-link--yt{ --brand:#ff0000; }   /* YouTube 官方红 */
.social-link.social-link{
  background:var(--brand); border-color:var(--brand); color:#fff;
}
.social-link.social-link:hover{
  background:var(--brand); border-color:var(--brand); color:#fff;
}
/* 图标放大一档：改为按圆直径的百分比，头部 32px 与手机菜单 36px 各自成比例
   （SVG 自带 viewBox="0 0 24 24"，CSS 宽度覆盖标签上的 width/height 属性后会等比缩放） */
.social-link.social-link svg{ width:58%; height:58%; }

.header-bottom-wrap{
  background:var(--white);
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
  padding:16px 0;
  transition:box-shadow .4s var(--ease);
}
/* 滚动效果：吸顶后导航条加阴影 */
.site-header.is-stuck .header-bottom-wrap{ box-shadow:0 10px 30px rgba(15,23,42,.10); }

.header-bottom{ display:flex; align-items:center; justify-content:space-between; gap:24px; }

/* 导航菜单 */
.navigation{ display:flex; align-items:center; }
.navigation li{ position:relative; padding:6px 22px; }
/* 菜单之间的竖线分隔（参照 index-simply.html） */
.navigation li + li::before{
  content:""; position:absolute; left:0; top:50%; transform:translateY(-50%);
  width:1px; height:16px; background:var(--line);
}
.navigation li:first-child{ padding-left:0; }
.navigation li a{
  display:block; font-size:16px; font-weight:700; color:var(--text);
  letter-spacing:.03em; transition:color .25s;
}
/* 移入效果：变金色 */
.navigation li a:hover{ color:var(--accent-ink); }
/* 当前区块高亮（JS 自动切换，仅首页锚点型菜单项） */
.navigation li a.is-active{ color:var(--accent-ink); }
/* 当前所在页面高亮（WP 自动给指向本页的菜单项加 current-menu-item，类在 <li> 上） */
.navigation li.current-menu-item > a{ color:var(--accent-ink); }
/* 子项命中时父项也保持高亮（父项是「当前页面的上级」，如 /faq/ 时的 Blog） */
.navigation li.current-menu-ancestor > a,
.navigation li.is-ancestor > a{ color:var(--accent-ink); }

/* ============================================================================
 * 二级下拉菜单（v1.12.9）—— 鼠标移入父项才露出，父项本身仍可点击跳转
 * ============================================================================
 *
 * 结构（wp_nav_menu，depth=2）：
 *   <li class="menu-item menu-item-has-children">
 *     <a class="nav__link">Blog</a>
 *     <ul class="sub-menu">
 *       <li class="menu-item"><a class="nav__link">FAQ</a></li>
 *     </ul>
 *   </li>
 *
 * ⚠️ 特异性必须 ≥ (0,2,1)，所以统一写成「.navigation li .sub-menu」的形式：
 *    本文件后段（约 1542 行）有一条 `.navigation ul{ display:flex; align-items:center;
 *    flex-wrap:wrap; margin:0; padding:0; list-style:none }` —— 它是 (0,2,0)，
 *    而 .sub-menu 正是一个嵌在 .navigation 里的 <ul>，会被那条规则**强行套成横向 flex**
 *    并变成常显的一行（桌面端菜单直接炸版）。用 (0,2,1) 压住它，与两条规则的行序无关。
 *
 * ⚠️ 另有 `.navigation li + li::before`（竖线分隔）与 `.navigation li{padding}` 会波及
 *    子项列表，下面逐条覆盖。
 *
 * 交互：纯 CSS（:hover + :focus-within），不需要 JS ——
 *   键盘 Tab 到父项也会展开，符合「移入即显示」的预期；隐藏态用 visibility:hidden
 *   而不是 display:none，才有淡入动画、且隐藏时不会拦截点击。
 * ------------------------------------------------------------------------- */
.navigation li .sub-menu{
  position:absolute; top:100%; left:22px; z-index:60;
  display:block; flex-direction:column; align-items:stretch; flex-wrap:nowrap;
  min-width:180px; margin:0; padding:8px; list-style:none;
  background:var(--white); border:1px solid var(--line); border-radius:14px;
  box-shadow:0 18px 40px rgba(15,23,42,.14);
  opacity:0; visibility:hidden; transform:translateY(6px);
  transition:opacity .22s var(--ease), transform .22s var(--ease), visibility .22s var(--ease);
}
.navigation li:hover > .sub-menu,
.navigation li:focus-within > .sub-menu{
  opacity:1; visibility:visible; transform:none;
}
/* 子项：清掉父级继承来的内边距与竖线分隔 */
.navigation li .sub-menu li{ padding:0; }
.navigation li .sub-menu li::before{ display:none; }
.navigation li .sub-menu a{
  padding:10px 14px; border-radius:10px;
  font-size:15px; font-weight:600; color:var(--muted); white-space:nowrap;
  transition:color .2s, background-color .2s;
}
.navigation li .sub-menu a:hover,
.navigation li .sub-menu a.is-active{
  color:var(--accent-ink); background:rgba(232,163,61,.12);
}

/* 有二级菜单的父项：文字后加一个小箭头（提示这里可以展开） */
.navigation li.menu-item-has-children > a::after{
  content:""; display:inline-block; width:5px; height:5px; margin-left:7px;
  border-right:1.6px solid currentColor; border-bottom:1.6px solid currentColor;
  vertical-align:middle; transform:translateY(-2px) rotate(45deg);
  transition:transform .25s var(--ease);
}
.navigation li.menu-item-has-children:hover > a::after,
.navigation li.menu-item-has-children:focus-within > a::after{
  transform:translateY(-1px) rotate(-135deg);
}

/* ≤1024px：抽屉里没有「悬停」，二级菜单直接展开成缩进列表（可预期、零 JS） */
@media (max-width:1024px){
  .navigation li .sub-menu{
    position:static; min-width:0; padding:0 0 4px;
    background:none; border:0; border-radius:0; box-shadow:none;
    opacity:1; visibility:visible; transform:none; transition:none;
  }
  .navigation li .sub-menu a{ padding:10px 4px 10px 26px; font-size:15px; }
  .navigation li.menu-item-has-children > a::after{ display:none; }
}

/* 头部搜索框
 *
 * ⚠️ 类名必须带 hdr- 前缀，绝不能用裸的 .search：
 *    WordPress 在搜索结果页会给 <body> 加 `search search-results` 类，
 *    裸 .search 会同时命中 body.search —— 旧的 `display:flex` 会把整个 body
 *    变成横向 flex 容器（<main> 被压成 310px、footer 挤到右边），
 *    而媒体查询里的 `.search{display:none}` 更会让**整页在手机上消失**。
 *    （v1.9.0 前的写法就是这样，见 README「搜索功能」一节。）
 */
.hdr-search{ position:relative; display:flex; align-items:center; }
.hdr-search input[type="search"]{
  width:230px; height:38px; padding:0 42px 0 12px;
  border:1px solid var(--line); border-radius:6px; outline:none;
  font-size:13.5px; color:var(--text); background:var(--white);
  transition:border-color .25s, box-shadow .25s;
}
.hdr-search input[type="search"]:focus{
  border-color:var(--accent); box-shadow:0 0 0 3px rgba(232,163,61,.16);
}
.hdr-search input[type="search"]::-webkit-search-cancel-button{ -webkit-appearance:none; appearance:none; }
/* 放大镜现在是真正的提交按钮（旧版是裸 <svg>，既不可点、键盘也用不了） */
.hdr-search__btn{
  position:absolute; right:4px; top:50%; transform:translateY(-50%);
  display:flex; align-items:center; justify-content:center;
  width:30px; height:30px; padding:0;
  border:0; border-radius:6px; background:none;
  color:#8b95a5; cursor:pointer;
  transition:color .25s, background-color .25s;
}
.hdr-search__btn:hover{ color:var(--accent-ink); background:rgba(232,163,61,.10); }
.hdr-search input[type="search"]:focus ~ .hdr-search__btn{ color:var(--accent-ink); }
.hdr-search__icon{ transition:stroke .25s; }

/* 汉堡按钮（仅移动端显示） */
.burger{
  display:none; width:44px; height:40px; background:var(--white);
  border:1px solid var(--line); border-radius:10px; cursor:pointer;
  padding:0; position:relative;
}
.burger span{
  position:absolute; left:12px; width:20px; height:2px; background:var(--text); border-radius:2px;
  transition:transform .35s var(--ease), opacity .25s;
}
.burger span:nth-child(1){ top:13px; }
.burger span:nth-child(2){ top:19px; }
.burger span:nth-child(3){ top:25px; }
.burger.is-open span:nth-child(1){ transform:translateY(6px) rotate(45deg); }
.burger.is-open span:nth-child(2){ opacity:0; }
.burger.is-open span:nth-child(3){ transform:translateY(-6px) rotate(-45deg); }

/* 移动端菜单遮罩
   注意：默认必须不可点（hidden 属性 + pointer-events:none 双保险）。
   它 position:fixed; inset:0; z-index:70，若只是 opacity:0 而仍接收指针事件，
   会变成一层"隐形全屏遮罩"挡住页面上所有链接。 */
.nav-mask{
  position:fixed; inset:0; background:rgba(27,34,48,.35); backdrop-filter:blur(3px);
  z-index:70; opacity:0; transition:opacity .35s;
  pointer-events:none;
}
.nav-mask.show{ opacity:1; pointer-events:auto; }

/* 抽屉里的联系方式（电话 / 邮箱 / 社交）
 *
 * 桌面端这三样在头部信息条 .header-top-right 里，这块整块不显示；
 * 只有 ≤1024px（汉堡出现、信息条被隐藏）时它才出现在抽屉底部。
 * 具体样式与抽屉那套规则写在一起，见下方 ≤1024px 媒体查询。
 * 结构由 functions.php 的 simply_classic_header_drawer_contact() 输出。 */
.nav-contact{ display:none; }

.banner{
  position:relative; overflow:hidden;
  display:flex; align-items:center;
  /* 客户需求：海报高度统一。
     PC 固定 700px；≤1024px（平板/手机）由媒体查询改成「一屏减导航」。
     用 height 而不是 min-height —— min-height 会让文案长的那一屏把整块撑高，
     各张幻灯片高度就不一致了。 */
  height:700px; min-height:0;
  padding:70px 0;
}
/* 背景图 = 真正的 core/image 区块（客户在后台点图即可「替换」）。
   图在 <img> 里，object-fit:cover 铺满容器；
   下面的双渐变为多层兜底 —— 图未加载完成时显示，加载后即被 img 完全覆盖。 */
.banner__bg{
  position:absolute; inset:0; margin:0;
  background-color:#4a4f57;
  background-image:
    radial-gradient(1100px 560px at 78% 20%, rgba(232,163,61,.28), transparent 62%),
    linear-gradient(135deg,#39404a 0%,#22262e 60%,#171a20 100%);
  background-position:center;
  overflow:hidden;
}
.banner__bg img{
  width:100%; height:100%; object-fit:cover; object-position:center; display:block;
}
/* 遮罩：左深右浅，保证左侧白字可读 */
.banner__bg::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(100deg,rgba(16,20,26,.78) 0%,rgba(16,20,26,.62) 45%,rgba(16,20,26,.42) 100%);
}
/* 背景装饰：淡金同心圆环 */
.banner__ring{
  position:absolute; width:560px; height:560px; right:-120px; top:-170px; border-radius:50%;
  background:repeating-radial-gradient(circle at center, transparent 0 36px, rgba(246,197,106,.20) 36px 37px);
  pointer-events:none; z-index:1;
  animation:float 12s ease-in-out infinite;
}
@keyframes float{ 0%,100%{ transform:translate(0,0); } 50%{ transform:translate(-26px,34px); } }

/* 内层限高 + 纵向 flex：定高模式下内容一律不许溢出。
   描述框给 min-height:0 后可以自动缩到剩余高度，配合下面的 -webkit-line-clamp
   出「…」，所以短屏幕（小尺寸手机）也不会把按钮顶出画面。 */
.banner__inner{
  position:relative; z-index:2;
  max-height:100%;
  display:flex; flex-direction:column; justify-content:center;
}
.banner__eyebrow{
  font-size:13px; font-weight:700; letter-spacing:.2em; text-transform:uppercase;
  color:rgba(255,255,255,.78); margin-bottom:16px;
}
.banner__title{
  font-family:"Manrope",Arial,sans-serif;
  font-size:clamp(32px,4.6vw,58px); line-height:1.1; font-weight:800; letter-spacing:-.02em;
  color:#fff; margin-bottom:20px;
}
.banner__title .hl{ color:var(--accent-2); }
.banner__desc{
  width:60%; font-size:18px; line-height:1.7;
  color:rgba(255,255,255,.86); margin-bottom:34px;
  /* 定高后描述超出可用行数就以「…」收尾。
     行数由 main.js 4h 按「当前视口下能放几整行」写进 --banner-desc-lines
     （必须落在整行上 —— 只靠 overflow:hidden 会截在行中间，且没有省略号）。
     变量缺失（未启用 JS）时用 11 行兜底。 */
  display:-webkit-box; -webkit-box-orient:vertical;
  -webkit-line-clamp:var(--banner-desc-lines, 11);
  overflow:hidden; min-height:0;
}
.banner__desc strong{ color:var(--accent-2); font-weight:700; }

.banner__btns{ display:flex; flex-wrap:wrap; gap:14px; }
/* 圆角胶囊按钮（参照 index-simply.html 的 learn more 按钮） */
.banner__btn{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:180px; padding:14px 30px; border-radius:999px;
  font-size:15px; font-weight:700; letter-spacing:.01em;
  background:linear-gradient(100deg,var(--accent-2),var(--accent)); color:#20150a;
  box-shadow:0 10px 26px rgba(232,163,61,.32);
  transition:transform .35s var(--ease), box-shadow .35s, background-color .3s, color .3s, border-color .3s;
}
.banner__btn:hover{ transform:translateY(-3px); box-shadow:0 18px 40px rgba(232,163,61,.5); }
/* 第二个按钮：描边款 */
.banner__btn--ghost{
  background:transparent; color:#fff; border:1px solid rgba(255,255,255,.55); box-shadow:none;
}
.banner__btn--ghost:hover{ background:#fff; color:var(--text); border-color:#fff; box-shadow:0 18px 40px rgba(0,0,0,.25); }

/* ---------------------------------------------------------------------------
 * Banner 轮播（「幻灯片」有 2 张及以上时才启用）
 *
 * 单张模式：.banner 自己定高 + flex 居中 + 背景图 inset:0 铺满整块。
 * 多张模式：外层 .banner 交出行高，改由 .banner-swiper（= Swiper 容器）定高，
 *   slide 通过 Swiper 自带的 height:100% 拿到同一个高度 —— 于是**所有幻灯片
 *   等高**，各自 .banner__bg（absolute inset:0）都铺满整块。
 *
 * ⚠️ 两个坑（都在 2026-10-06 踩过）：
 *  1. 选择器必须写成 .banner.banner--slider。fade 效果下 5 张幻灯片是
 *     用 translate3d 横向叠在一起的：容器高度 = 最高那张的内容高度，
 *     而每张 slide 自己的高度由各自文案决定。若容器不定高，切到短文案那张时
 *     背景图只盖住它自己那一段，下面露出一大片白（还会每 5 秒跳动一次）。
 *  2. padding 归零必须写在 .banner.banner--slider 上（双类名 = 特异性 0,2,0）。
 *     后面 ≤860 / ≤640 的媒体查询里有 .banner{padding:…}（0,1,0），
 *     只写 .banner--slider{padding:0} 会被它们按「后来居上」盖掉 →
 *     banner 顶部留出 52px 无背景的空白带（客户反馈的"头部和 banner 中间一段空白"）。
 * --------------------------------------------------------------------------- */
.banner.banner--slider{
  display:block;
  padding:0;
  /* 高度交给下面的 .banner-swiper */
  height:auto;
  min-height:0;
}
.banner--slider > .banner-swiper{ position:relative; z-index:0; height:700px; }
.banner-swiper .swiper-slide{
  position:relative;
  display:flex;
  align-items:center;
  /* 高度由容器的 height:100% 决定，不能再写 min-height（会把一屏撑破） */
  min-height:0;
  padding:70px 0;
}
/* 底部圆点：选中的用金色实心，未选中用半透明白。
   ⚠️ 选择器要写「父级 + 自身」两段：Swiper 自带的
   `.swiper-pagination-bullets.swiper-pagination-horizontal{bottom:8px}` 是 (0,2,0)，
   单类名 .banner-swiper__dots(0,1,0) 压不住它 → bottom:30px 不生效（实测圆点贴着底边 8px）。 */
.banner-swiper .banner-swiper__dots{
  bottom:30px;
  --swiper-pagination-color:var(--accent-2);
  --swiper-pagination-bullet-inactive-color:#fff;
  --swiper-pagination-bullet-inactive-opacity:.45;
  --swiper-pagination-bullet-size:9px;
  --swiper-pagination-bullet-horizontal-gap:6px;
}

.strip{
  background:linear-gradient(100deg,rgba(232,163,61,.14),rgba(232,163,61,.04) 60%,rgba(232,163,61,0));
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
}
.strip__inner{
  display:grid; grid-template-columns:repeat(4,1fr); gap:24px; padding:30px 0;
}
.strip__item{ display:flex; align-items:center; gap:14px; }
.strip__icon{
  flex:0 0 46px; width:46px; height:46px; display:grid; place-items:center; border-radius:12px;
  background:rgba(232,163,61,.16); color:var(--accent-ink); border:1px solid rgba(232,163,61,.4);
}
.strip__item strong{ display:block; font-size:15px; font-weight:700; color:var(--text); }
.strip__item em{ display:block; font-style:normal; font-size:13px; color:var(--muted); }

.series{ display:grid; grid-template-columns:repeat(4,1fr); gap:24px; }
.series__item{ display:flex; flex-direction:column; }
.series__item .ph{ aspect-ratio:1/1; border-radius:0; }
/* 大号编号 */
.series__no{
  position:absolute; left:18px; top:14px; z-index:2;
  font-family:"Manrope",Arial,sans-serif; font-size:44px; font-weight:800; line-height:1;
  color:rgba(27,34,48,.15); transition:color .4s, transform .5s var(--ease);
}
.series__item:hover .series__no{ color:var(--accent-ink); transform:translateY(-4px); }
.series__body{ padding:24px 24px 26px; display:flex; flex-direction:column; flex:1; }
.series__body h3{
  font-family:"Manrope",Arial,sans-serif; font-size:20px; font-weight:700;
  margin-bottom:12px; color:var(--text);
}
.series__tags{
  display:flex; flex-wrap:wrap; align-items:center; gap:8px;
  font-size:13px; color:var(--muted);
}
.series__tags i{ width:4px; height:4px; border-radius:50%; background:var(--accent); }
.series__body .link-arrow{ margin-top:auto; padding-top:18px; }
/* 整卡即可点（v1.12.7）：卡片元素由 div 改成 <a>，补一个键盘聚焦轮廓 */
.series__item:focus-visible{ outline:2px solid var(--accent-ink); outline-offset:3px; }

.about{ display:grid; grid-template-columns:1.05fr .95fr; gap:60px; align-items:stretch; }
.about__text p{ color:var(--muted); font-size:16.5px; margin-bottom:16px; }
.about__text p strong{ color:var(--text); font-weight:600; }
.about__text .sec-title{ margin-bottom:20px; }
.about__list{ margin:22px 0 30px; display:grid; gap:12px; }
.about__list li{ display:flex; gap:12px; align-items:flex-start; color:#4a5566; font-size:15.5px; }
.about__list li span{
  flex:0 0 22px; width:22px; height:22px; margin-top:2px; border-radius:50%;
  display:grid; place-items:center; font-size:12px;
  background:rgba(232,163,61,.18); color:var(--accent-ink);
}

/* 视频框 16:9 */
/* 图片轮播（Swiper）：高度跟随左栏，最低 400px */
/* 右栏：高度由左栏拉伸决定（grid align-items:stretch），min-height 兜底 400px
   注意：这里不能用 height:100% —— 会与内部 height:100% 形成循环依赖导致高度爆炸，
   所以轮播用 absolute 铺满，不参与行高计算 */
.about__video{ position:relative; min-height:400px; }
.about-swiper{
  position:absolute; inset:0; width:100%; height:100%; min-height:400px;
  border-radius:var(--radius); overflow:hidden;
  border:1px solid var(--line); background:var(--ink-3); box-shadow:var(--shadow);
}
/* 轮播图片：铺满裁切 */
.about-swiper .swiper-slide img{
  width:100%; height:100%; object-fit:cover; display:block;
}
/* 分页圆点：当前项变金色胶囊 */
.about-swiper .swiper-pagination-bullet{
  background:#fff; opacity:.6;
  transition:width .3s var(--ease), background-color .3s, opacity .3s;
}
.about-swiper .swiper-pagination-bullet-active{
  background:var(--accent); opacity:1; width:20px; border-radius:999px;
}
/* 左右箭头：白色圆钮，hover 变金 */
.about-swiper .swiper-button-next,
.about-swiper .swiper-button-prev{
  width:42px; height:42px; border-radius:50%;
  background:rgba(255,255,255,.88); color:var(--text);
  box-shadow:0 6px 18px rgba(15,23,42,.20);
  transition:background-color .25s, color .25s, transform .25s var(--ease);
}
.about-swiper .swiper-button-next:hover,
.about-swiper .swiper-button-prev:hover{
  background:var(--accent); color:#20150a; transform:scale(1.06);
}
.about-swiper .swiper-button-next::after,
.about-swiper .swiper-button-prev::after{ font-size:15px; font-weight:800; }

.equip{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
.equip__item{
  border:1px solid var(--line); border-radius:var(--radius); overflow:hidden;
  background:var(--white);
  transition:transform .5s var(--ease), border-color .4s, box-shadow .5s;
}
.equip__item:hover{ transform:translateY(-6px); border-color:rgba(232,163,61,.55); box-shadow:var(--shadow-lg); }
.equip__item .ph{ aspect-ratio:4/3; border-radius:0; }
.equip__item figcaption{
  padding:16px 20px 18px; font-size:15px; color:#4a5566;
}
.equip__item figcaption strong{
  color:var(--accent-ink); margin-right:10px; font-family:"Manrope",Arial,sans-serif; font-size:16px;
}

/* —— 版块深色图片背景 —— */
#process{
  --proc-overlay:.86;              /* 遮罩透明度：越大越深 */
  background:
    linear-gradient(rgba(13,18,26,var(--proc-overlay)),rgba(13,18,26,var(--proc-overlay))),
    url("/wp-content/themes/simply/assets/images/factory-floor.jpg") center/cover no-repeat fixed;
}
/* 深色底上标题改浅色 */
#process .eyebrow{ color:var(--accent-2); }
#process .sec-title{ color:#fff; }
#process .sec-desc{ color:rgba(255,255,255,.72); }
/* iOS 移动端不支持 fixed 背景 attachment，小屏回退为普通滚动背景 */
@media (max-width:1024px){
  #process{ background-attachment:scroll; }
}

.adv{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.adv__item{ position:relative; padding:30px 28px 32px; }
/* 金色顶部装饰条 */
.adv__item::before{
  content:""; position:absolute; left:0; top:0; width:44px; height:3px;
  background:linear-gradient(90deg,var(--accent),rgba(232,163,61,0));
}
/* 顶行：数字左上角 + 图标右上角 */
.adv__top{
  display:flex; align-items:flex-start; justify-content:space-between; gap:16px;
  margin-bottom:20px;
}
.adv__no{
  font-family:"Manrope",Arial,sans-serif; font-size:46px; font-weight:800; line-height:1;
  color:rgba(27,34,48,.14); transition:color .4s;
}
.adv__item:hover .adv__no{ color:rgba(232,163,61,.55); }
.adv__icon{
  flex:0 0 46px; width:46px; height:46px; display:grid; place-items:center; border-radius:12px;
  background:rgba(232,163,61,.14); border:1px solid rgba(232,163,61,.4); color:var(--accent-ink);
  transition:background-color .3s, color .3s;
}
.adv__item:hover .adv__icon{ background:var(--accent); color:#20150a; }

.adv__item h3{
  font-family:"Manrope",Arial,sans-serif; font-size:20px; font-weight:700;
  color:var(--text); margin-bottom:12px;
}
.adv__item p{ color:var(--muted); font-size:15.5px; }

.showcase-swiper{ padding:6px 2px 14px;}
/* 卡片高度跟随 slide 内最高者，保证标题文字对齐 */
.showcase-swiper .swiper-slide{ height:auto; }
.show-card{
  display:block; height:100%;
  border:1px solid var(--line); border-radius:var(--radius); overflow:hidden;
  background:var(--white);
  transition:transform .5s var(--ease), border-color .4s, box-shadow .5s;
}
.show-card:hover{ transform:translateY(-6px); border-color:rgba(232,163,61,.55); box-shadow:var(--shadow-lg); }
.show-card .ph{ border-radius:0; aspect-ratio:1/1; }
.show-card span{ display:block; padding:14px 18px 16px; font-size:14.5px; color:#4a5566; }

/* 分页圆点：默认灰、当前项金色胶囊 */
/* 限定词必须是 .showcase-swiper —— 箭头与分页是 swiper 容器（.swiper.showcase-swiper）的
   直接子元素，而这个板块的父级 section 上并没有 .showcase 类（模板里只有 .showcase-swiper
   和 .showcase__empty）。v1.13.1 之前误写成 .showcase，导致本节规则从未命中，
   箭头与圆点一直回落成 Swiper 出厂蓝 #007aff。 */
.showcase-swiper .swiper-pagination{ position:static; margin-top:16px; }
.showcase-swiper .swiper-pagination-bullet{
  background:#c4ccd8; opacity:1;
  transition:width .3s var(--ease), background-color .3s;
}
.showcase-swiper .swiper-pagination-bullet-active{ background:var(--accent); width:20px; border-radius:999px; }

/* 左右箭头：品牌金圆钮（v1.13.1 按要求由「白底 hover 变金」改为常态品牌色） */
.showcase-swiper .swiper-button-next,
.showcase-swiper .swiper-button-prev{
  width:44px; height:44px; border-radius:50%;
  background:var(--accent); color:#20150a;
  border:1px solid var(--accent);
  box-shadow:var(--shadow);
  transition:background-color .3s, color .3s, border-color .3s;
}
.showcase-swiper .swiper-button-next:hover,
.showcase-swiper .swiper-button-prev:hover{
  background:var(--accent-dark); color:#20150a; border-color:var(--accent-dark);
}
.showcase-swiper .swiper-button-next::after,
.showcase-swiper .swiper-button-prev::after{ font-size:16px; font-weight:800; }

/* ==== 客户留言墙（v1.12.0 改版 / v1.12.1 位移改由 JS 驱动）===========
   桌面 / 平板：三列（≤1024 收成两列）纵向自动滚动 —— 中间一列向下、
               左右两列向上；鼠标按住任意一列可上下拖动。
   手机：同一份 DOM 只保留第一列，轨道改成横向排开、向左缓慢滚动，
        手指可左右拖动。
   **位移统一由 main.js 第 9 节驱动，这里不再写 animation / keyframes** ——
   同一条位移不能既归 CSS 动画又归拖动：动画的 transform 与拖动写入的
   内联 transform 会互相覆盖（animation 优先级高于内联样式），拖动必然卡死。
   JS 每帧按「一份的高度 / 宽度」取模，天然无缝。

   两个必须遵守的点：
   ① 卡片**不能**带 .reveal —— 轮播/滚动容器里的卡片不在可视区，
      IntersectionObserver 永远不会给它 .in，滚过去就是空白（首页 Banner 踩过）。
   ② 间距用**每张卡自己的 margin-bottom / margin-right**，不能用轨道 gap ——
      轨道总长 = 2 份 + 1 个 gap，位移一份会差半个 gap，循环点会跳。
      每张卡都带 margin 时「一份」= k×(卡高+间距)，取模才精确对齐。 */
.clients{
  display:grid; grid-template-columns:repeat(3,1fr); gap:24px;
}
.clients__col{
  position:relative; height:var(--clients-h,640px); overflow:hidden;
  cursor:grab; /* 提示这一列可以用鼠标上下拖 */
  -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 9%,#000 91%,transparent 100%);
          mask-image:linear-gradient(180deg,transparent 0,#000 9%,#000 91%,transparent 100%);
}
.clients__col.is-dragging{ cursor:grabbing; }
/* 拖动时别顺手选中文字（松开就恢复，卡片里的留言照旧可选） */
.clients.is-dragging,
.clients.is-dragging *{ -webkit-user-select:none; user-select:none; }
.clients__track{
  list-style:none; margin:0; padding:0;
  display:flex; flex-direction:column; will-change:transform;
}

/* 只保留描边，不要投影（v1.12.1）；描边从 .07 提到 .10 ——
   去掉阴影后 .07 在纯白底上几乎看不见，卡片的边界感全靠它 */
.client{
  margin:0 0 20px;
  background:var(--white); border:1px solid rgba(15,23,42,.10); border-radius:16px;
  padding:24px 24px 26px;
  display:flex; flex-direction:column;
}
.client__head{ display:flex; align-items:center; gap:13px; margin-bottom:16px; }
.client__avatar{
  flex:0 0 50px; width:50px; height:50px; border-radius:50%;
  overflow:hidden; background:#eef1f6;
}
.client__avatar img{ width:100%; height:100%; object-fit:cover; display:block; }
.client__meta{ min-width:0; display:flex; flex-direction:column; gap:3px; }
.client__name{ color:var(--text); font-size:15.5px; font-weight:700; line-height:1.3; }
.client__role{ color:var(--muted); font-size:12.5px; line-height:1.45; }
.client__quote{ margin:0; }
.client__quote p{ margin:0; font-size:14.5px; line-height:1.75; color:#4a5566; }

/* ≤1024：留言墙收成两列（第 3 列收起），列高降一档，板块别拖太长 */
@media (max-width:1024px) and (min-width:641px){
  .clients__col{ height:540px; }
  .clients__col:nth-child(3){ display:none; }
}

.contact-layout{ display:grid; grid-template-columns:.9fr 1.1fr; gap:60px; align-items:stretch; }
.contact__intro .sec-title{ margin-bottom:18px; }
.contact__intro .sec-desc strong{ color:var(--accent-ink); }
/* 左栏改纵向 flex：让小优势区撑满剩余高度，底部与右侧表单对齐 */
.contact__intro{ display:flex; flex-direction:column; }

/* —— 四个小优势（2×2，鼠标移入显示文案）—— */
.mini-adv{
  flex:1; margin-top:34px;
  display:grid; grid-template-columns:1fr 1fr; gap:16px;
  /* 最小 170px 兜底（手机端左栏高度由内容决定时不会被压扁），桌面端自动撑满对齐表单 */
  grid-auto-rows:minmax(170px,1fr);
}
.mini-adv__item{
  /* 高度随行高固定：hover 展开文案时卡片尺寸不变 */
  padding:20px 16px; overflow:hidden;
  display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center;
  background:var(--white); border:1px solid var(--line); border-radius:var(--radius);
  cursor:default;
  transition:transform .45s var(--ease), border-color .4s, box-shadow .45s;
}
.mini-adv__item:hover{
  transform:translateY(-4px); border-color:rgba(232,163,61,.55); box-shadow:var(--shadow);
}
.mini-adv__icon{
  flex:0 0 auto; overflow:hidden;
  width:48px; height:48px; display:grid; place-items:center; border-radius:13px;
  background:rgba(232,163,61,.12); border:1px solid rgba(232,163,61,.4); color:var(--accent-ink);
  margin-bottom:13px;
  transition:all .4s var(--ease);
}
.mini-adv__item:hover .mini-adv__icon{ background:var(--accent); color:#20150a; }
.mini-adv__item h3{
  font-family:"Manrope",Arial,sans-serif; font-size:15px; font-weight:700; color:var(--text);
}
/* 文案：默认收起，移入/键盘聚焦展开；同时图标收起腾出空间 */
.mini-adv__text{
  max-height:0; opacity:0; overflow:hidden; margin-top:0;
  color:var(--muted); font-size:13px; line-height:1.55;
  transition:max-height .5s var(--ease), opacity .4s var(--ease), margin-top .4s var(--ease);
}
.mini-adv__item:hover .mini-adv__icon,
.mini-adv__item:focus-within .mini-adv__icon{
  height:0; width:0; margin:0; border-width:0; opacity:0;
}
.mini-adv__item:hover .mini-adv__text,
.mini-adv__item:focus-within .mini-adv__text{
  max-height:140px; opacity:1; margin-top:8px;
}

.contact__form{
  display:grid; grid-template-columns:1fr 1fr; gap:18px; padding:34px;
  /* 去阴影：用琥珀金渐变底（贴近 logo 色）与页面区分 */
  background:linear-gradient(135deg,#fdf6ea 0%,#fae8c8 45%,#f6d59c 100%);
  box-shadow:none;
}
/* 表单不参与卡片 hover 效果 */
.contact__form:hover{ transform:none; box-shadow:none; border-color:var(--line); }
/* v1.9.5 修复「表单右边被裁掉一截」：
   grid 轨道的隐含最小尺寸是 min-width:auto，会被 <input> 的固有宽度顶住
   （默认 size=20 ≈ 354px），窄屏下 .field 恒为 354px、而容器只有 ~290px，
   溢出部分被 .section 的 overflow-x:clip 裁掉 → 看起来像表单被截断。
   给网格项与输入框解除自动最小尺寸即可，输入框会跟着列宽收缩。 */
.contact__form > *{ min-width:0; }
.contact__form .field input,
.contact__form .field select,
.contact__form .field textarea{ min-width:0; }
.field{ display:flex; flex-direction:column; gap:8px; }
.field--full{ grid-column:1 / -1; }
.field label{ font-size:13.5px; color:#4a5566; font-weight:600; }
.field label i{ color:var(--accent-ink); font-style:normal; }
.field input, .field select, .field textarea{
  width:100%; padding:13px 15px; border-radius:var(--radius-sm);
  background:var(--white); border:1px solid var(--line);
  color:var(--text); font-size:15px; transition:border-color .3s, box-shadow .3s;
}
.field input::placeholder, .field textarea::placeholder{ color:#98a2b3; }
.field input:focus, .field select:focus, .field textarea:focus{
  outline:none; border-color:var(--accent); box-shadow:0 0 0 3px rgba(232,163,61,.18);
}
.field select option{ background:#ffffff; color:var(--text); }
.field textarea{ resize:vertical; min-height:110px; }
/* 验证码行：小图 + 输入框横排（图片由后端 PHP+GD 生成，见 inc/captcha.php） */
.captcha-row{ display:flex; align-items:center; gap:12px; }
.captcha-img{
  flex:0 0 auto; width:112px; height:46px;
  border:1px solid var(--line); border-radius:var(--radius-sm);
  cursor:pointer; user-select:none; background:#f2f2ef;
  transition:opacity .25s, border-color .25s;
}
.captcha-img:hover{ border-color:var(--accent); }
.captcha-img.is-loading{ opacity:.45; }
.captcha-img.is-error{ background:#fbeaea; border-color:rgba(198,40,40,.4); }
.captcha-row input{ flex:1; width:auto; min-width:0; }

/* —— 询价表单：附件上传（.form-upload 家族，首页与「联系我们」页共用）—— */
.field__hint{ font-weight:400; font-size:12.5px; color:#8a93a3; }
.form-upload{ position:relative; }
/* 原生 input 视觉隐藏但保留可聚焦，点击由下面对应的 label 触发 */
.form-upload__input{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}
.form-upload__drop{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  padding:20px 18px; text-align:center; cursor:pointer;
  background:rgba(255,255,255,.62);
  border:1.5px dashed rgba(180,140,70,.5);
  border-radius:var(--radius-sm);
  transition:border-color .3s, background .3s, transform .3s;
}
.form-upload__drop:hover,
.form-upload__drop.is-over{
  background:rgba(255,255,255,.88);
  border-color:var(--accent);
}
.form-upload__drop.is-over{ transform:scale(1.01); }
.form-upload__input:focus-visible + .form-upload__drop{ outline:2px solid var(--accent); outline-offset:2px; }
.form-upload__icon{ color:var(--accent-ink); line-height:0; }
.form-upload__title{ font-size:14px; font-weight:600; color:#4a5566; }
.form-upload__sub{ font-size:12.5px; color:#8a93a3; }

.form-upload__list{ list-style:none; margin:10px 0 0; padding:0; display:flex; flex-direction:column; gap:6px; }
.form-upload__item{
  display:flex; align-items:center; gap:10px;
  padding:8px 10px; border-radius:var(--radius-sm);
  background:rgba(255,255,255,.72); border:1px solid var(--line);
  font-size:13px;
}
.form-upload__name{
  flex:1; min-width:0; color:#4a5566;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.form-upload__size{ flex:0 0 auto; font-size:12px; color:#8a93a3; white-space:nowrap; }
.form-upload__del{
  flex:0 0 auto; width:22px; height:22px; padding:0;
  display:flex; align-items:center; justify-content:center;
  border:none; border-radius:50%; cursor:pointer;
  background:rgba(198,40,40,.10); color:#c62828;
  font-size:15px; line-height:1;
  transition:background .25s;
}
.form-upload__del:hover{ background:rgba(198,40,40,.22); }

.form-note{ margin-top:10px; font-size:14px; min-height:20px; }
.form-note.ok{ color:#178a4c; }
.form-note.err{ color:#c62828; }

/* —— 页脚：深色图片背景（工厂机械臂实拍 + 深色遮罩）—— */
.footer{
  --footer-overlay:.90;            /* 遮罩透明度：越大越深 */
  border-top:none;
  background:
    linear-gradient(rgba(15,20,30,var(--footer-overlay)),rgba(15,20,30,var(--footer-overlay))),
    url("/wp-content/themes/simply/assets/images/robotic-line.jpg") center/cover no-repeat fixed;
}
/* iOS 移动端不支持 fixed 背景 attachment，小屏回退为普通滚动背景 */
@media (max-width:1024px){
  .footer{ background-attachment:scroll; }
}

/* 5 列：品牌 / Quick Links / Capabilities / Support / Subscribe
   —— 以 assets/css/footer.css 为准（它在本文件之后加载，定义相同，此处仅为两处同步）。 */
.footer__inner{
  display:grid; grid-template-columns:1.8fr .95fr 1.05fr .95fr 1.15fr; gap:38px; padding:74px 0 54px;
}

/* —— 品牌列 —— */
/* 页脚 logo 文字改白色（全局 .logo__text 是深色，给头部白底用的） */
.footer .logo__text{ color:#fff; }
.footer .logo__text em{ color:var(--accent-2); }   /* METAL 用亮金，深底上更清晰 */
.footer__brand h3{
  font-family:"Manrope",Arial,sans-serif; font-size:17px; font-weight:700;
  margin:20px 0 14px; color:#fff;
}
.footer__brand p{ color:rgba(255,255,255,.62); font-size:14.5px; }
.footer__social{ display:flex; gap:10px; margin-top:20px; }
.footer__social a{
  width:36px; height:36px; display:grid; place-items:center; border-radius:50%;
  border:1px solid rgba(255,255,255,.22); color:rgba(255,255,255,.72); background:transparent;
  transition:color .3s, background-color .3s, border-color .3s, transform .3s;
}
.footer__social a:hover{ color:#20150a; background:var(--accent); border-color:var(--accent); transform:translateY(-3px); }

/* —— 链接列 —— */
.footer__nav h4{
  font-family:"Manrope",Arial,sans-serif; font-size:15px; font-weight:700; margin-bottom:18px;
  color:#fff;
}
.footer__nav ul{ display:grid; gap:11px; }
.footer__nav a{ color:rgba(255,255,255,.60); font-size:14.5px; transition:color .3s, padding-left .3s; }
.footer__nav a:hover{ color:var(--accent-2); padding-left:5px; }

/* —— 订阅列（替代原 Contact）—— */
.footer__sub h4{
  font-family:"Manrope",Arial,sans-serif; font-size:15px; font-weight:700; margin-bottom:18px;
  color:#fff;
}
.footer__sub-desc{ color:rgba(255,255,255,.62); font-size:14.5px; line-height:1.7; }
.footer__sub-form{
  margin-top:20px; display:flex; gap:10px; flex-wrap:wrap;
}
.footer__sub-form input{
  flex:1 1 180px; min-width:0; height:46px; padding:0 16px;
  border:1px solid rgba(255,255,255,.22); border-radius:99px;
  background:rgba(255,255,255,.08); color:#fff; font-size:14px;
  outline:none; transition:border-color .3s, background-color .3s;
}
.footer__sub-form input::placeholder{ color:rgba(255,255,255,.45); }
.footer__sub-form input:focus{ border-color:var(--accent); background:rgba(255,255,255,.12); }
.footer__sub-form button{
  flex:0 0 auto; height:46px; padding:0 26px; border:none; border-radius:99px; cursor:pointer;
  background:linear-gradient(100deg,var(--accent-2),var(--accent));
  color:#20150a; font-family:"Manrope",Arial,sans-serif; font-size:14.5px; font-weight:700;
  transition:filter .3s, transform .3s;
}
.footer__sub-form button:hover{ filter:brightness(1.08); transform:translateY(-2px); }
.footer__sub-note{ margin-top:10px; font-size:13.5px; min-height:18px; color:var(--accent-2); }
.footer__sub-note.err{ color:#ff9d8a; }

/* —— 底栏 —— */
.footer__bar{ border-top:1px solid rgba(255,255,255,.12); }
.footer__bar-inner{
  display:flex; align-items:center; justify-content:space-between; gap:16px; padding:20px 0;
  font-size:13.5px; color:rgba(255,255,255,.45);
}
.footer__bar a:hover{ color:var(--accent-2); }

/* ≥1600px：内容宽度保持 80%，但给超宽屏一个上限，避免文本过长 */
@media (min-width:1600px){
  :root{ --container:76%; }
}

/* ≤1200px */
@media (max-width:1200px){
  .series{ grid-template-columns:repeat(2,1fr); }
  .equip{ grid-template-columns:repeat(2,1fr); }
  .header-top-right{ gap:34px; }
  .hdr-search input[type="search"]{ width:180px; }
}

/* ≤1024px：平板 */
@media (max-width:1024px){
  :root{ --container:88%; }
  /* Banner（含轮播）：平板 / 手机一律「一屏减导航」——图片占满除头部以外的整屏。
     容器定高 → slide 拿同一个高度 → 各张幻灯片完全等高，切轮播不再上下跳。
     100vh 在前做兜底，支持 dvh 的浏览器用 100dvh（移动端地址栏收起/展开时不跳）。 */
  .banner,
  .banner--slider > .banner-swiper{
    height:calc(100vh - var(--hh));
    height:calc(100dvh - var(--hh));
  }
  .about{ grid-template-columns:1fr; gap:44px; }
  .contact-layout{ grid-template-columns:1fr; gap:44px; }
  .adv{ grid-template-columns:repeat(2,1fr); }
  .clients{ grid-template-columns:repeat(2,1fr); }
  .footer__inner{ grid-template-columns:1fr 1fr; gap:38px; }
  .strip__inner{ grid-template-columns:repeat(2,1fr); gap:20px; }

  /* 平板/手机：头部切换为「一排」版式（汉堡按钮 v1.9.2 起在 .header-top 里）
     目标：左 Logo + 右汉堡，中间不留任何东西 */
  /* z-index:80 —— 汉堡在页面右侧，正好落在抽屉（z-index:75）下面。
     它是 .burger.is-open 的「X」，被盖住就点不到，只能靠点遮罩关闭。
     汉堡本身是 position:relative，抬到抽屉与遮罩之上即可（同在头部的层叠上下文里）。
     桌面端不需要，因为那时汉堡 display:none。 */
  .burger{ display:block; z-index:80; }
  .hdr-search{ display:none; }
  /* 电话 / 邮箱 / 社交整块让位给抽屉（抽屉里的样式见本段末尾 .nav-contact） */
  .header-top-right{ display:none; }

  /* 上排原来要放 40px 的圆形图标与 56px 间距，现在只剩 34px 的 logo 与 40px 的汉堡，
     行高收到 64px 左右。JS 会把这个真实高度写进 --hh（body 的 padding-top）。 */
  .header-top{ padding:12px 0; }
  /* 上排背景原本是「白 → 浅灰」的斜切，用来分隔信息条与 logo 区；
     只剩一排之后斜切会变成半条灰底，这里改成纯白。 */
  .header-top-wrap{ background:var(--white); }

  /*
   * 下排外层压成 0 高 —— 移动端它不再占版面。
   *
   * 里面只剩两样东西：
   *   <nav>  → position:fixed 的抽屉，已脱离文档流，照样正常滑入
   *   <form> → 手机上 .hdr-search 已经 display:none
   * 所以把高度 / 内边距 / 边框 / 底色全部归零后，Logo 下面不会再留一条空白带，
   * 而且 JS 实测 --hh 时它的 offsetHeight 正好是 0（= 头部高度只算上排）。
   *
   * ⚠️ overflow 保持默认的 visible，绝不能写 hidden —— 会把 fixed 抽屉裁掉。
   */
  .header-bottom-wrap,
  .header-bottom{ height:0; padding:0; border:0; background:transparent; }
  /* 吸顶阴影原来挂在下排（0 高之后会变成头顶一条浮线），改挂到唯一可见的上排 */
  .site-header.is-stuck .header-bottom-wrap{ box-shadow:none; }
  .site-header.is-stuck .header-top-wrap{ box-shadow:0 10px 30px rgba(15,23,42,.10); }

  /* 单排头部不再「滚动后收起」：原逻辑是滚下 240px 收起上排信息条、只留导航条；
     现在上排本身就是唯一的一排，收起 = 整条头部消失（--hh-mini 也只剩 0）。
     这里显式停用 is-mini 的收起效果，并让 body 的 padding 继续用 --hh。 */
  .site-header.is-mini .header-top-wrap{ max-height:none; opacity:1; border-bottom-color:var(--line); }
  body.is-mini{ padding-top:var(--hh); }

  /* 移动端抽屉：用「直接子元素」选择器定位外层导航容器，不用 .nav / #nav ——
     移植到 WordPress 后核心区块会把 className 和 anchor 的 id 同时加到
     <nav> 与内层 <ul> 上，用类/ID 选择器会让内层 ul 也被固定定位。
     本文件结构下三者指向同一元素，行为完全一致。 */
  .header-bottom > nav{
    position:fixed; top:0; right:0; height:100dvh; width:min(320px,84vw);
    background:var(--white); border-left:1px solid var(--line); padding:88px 26px 30px;
    transform:translateX(100%); transition:transform .42s var(--ease); z-index:75;
    overflow-y:auto; box-shadow:-20px 0 60px rgba(15,23,42,.12);
  }
  .header-bottom > nav.is-open{ transform:none; }
  .navigation{ flex-direction:column; align-items:stretch; gap:0; }
  .navigation li{ padding:0; }
  .navigation li + li::before{ display:none; }
  .navigation li a{ padding:14px 4px; font-size:17px; border-bottom:1px solid var(--line); }

  /* —— 抽屉里的联系方式（电话 / 邮箱 / 社交）——
     接在最后一个菜单项下面，用间距分隔即可（菜单项自带 border-bottom 分隔线） */
  .nav-contact{ display:block; margin-top:8px; padding:10px 4px 0; }
  .nav-contact__item{ display:flex; align-items:center; gap:12px; padding:9px 0; }
  .nav-contact__icon{
    flex:0 0 36px; width:36px; height:36px; border-radius:50%;
    display:grid; place-items:center;
    background:rgba(232,163,61,.14); color:var(--accent-ink);
  }
  .nav-contact__text{ min-width:0; }
  .nav-contact__text em{ display:block; font-style:normal; font-size:12px; line-height:1.3; color:var(--muted); }
  .nav-contact__text strong{
    display:block; font-size:14.5px; font-weight:700; line-height:1.4;
    color:var(--text); word-break:break-word;
  }
  .nav-contact__social{ display:flex; align-items:center; gap:10px; padding:14px 0 0; }
  .nav-contact__social a{
    width:36px; height:36px; display:grid; place-items:center; border-radius:50%;
    border:1px solid var(--line); color:var(--muted); background:var(--white);
    transition:color .3s, background-color .3s, border-color .3s;
  }
  .nav-contact__social a:hover{ color:#20150a; background:var(--accent); border-color:var(--accent); }
}

/* ≤860px */
@media (max-width:860px){
  .section{ padding:80px 0; }
  /* v1.9.5：原来这里塌成 1 列（1024 是 2 列、860 又变 1 列、640 还是 1 列），
     与相邻断点不一致；改为全程 2 列，手机端「一排两个」也由此继承。 */
  .equip{ grid-template-columns:repeat(2,1fr); gap:16px; }

  /* v1.13.3 页脚：不再塌成 1 列，改「两栏 + 三条通栏」（详见 footer.css 同段注释，
     两份逐字一致；footer.css 后加载，实际生效的是它） */
  .footer__inner{
    grid-template-columns:1fr 1fr;
    gap:30px 20px;
    padding:48px 0 34px;
  }
  .footer__brand,
  .footer__nav.footer__nav--support,
  .footer__sub{ grid-column:1 / -1; }
  .footer__nav.footer__nav--support ul{
    display:flex; flex-wrap:wrap; gap:9px 22px;
  }

  /* Banner 高度由 ≤1024px 的「一屏减导航」统一给，这里只管收紧内边距 */
  .banner{ padding:56px 0; }
  .banner-swiper .swiper-slide{ padding:56px 0; }
}

/* ≤640px：手机 */
@media (max-width:640px){
  :root{ --container:90%; }
  body{ font-size:15.5px; }
  .section{ padding:64px 0; }
  .sec-head{ margin-bottom:38px; }

  /* 头部：v1.9.2 起手机端只有一排「Logo + 汉堡」，
     电话 / 邮箱 / 社交都在抽屉里（.nav-contact），这里只需收紧行高 */
  .header-top{ padding:14px 0 12px; }
  .logo__text{ font-size:17px; }
  .logo__mark svg{ width:34px; height:34px; }
  /* ⚠️ 别给 .header-bottom-wrap 加内边距：它在移动端必须保持 0 高，
     一旦有 padding 就会在 Logo 下面多出一条空白带（还会把 --hh 撑高）。 */

  /* Banner：高度同上（一屏减导航），这里收紧内边距 + 描述行数上限 */
  .banner{ padding:52px 0 46px; }
  .banner-swiper .swiper-slide{ padding:52px 0 46px; }
  .banner__title{ font-size:clamp(28px,8vw,40px); }
  .banner__desc{ width:100%; font-size:15.5px; margin-bottom:26px; }
  .banner__btns .banner__btn{ flex:1 1 100%; min-width:0; }
  
  .strip__inner{ grid-template-columns:1fr; gap:16px; padding:22px 0; }

  /* —— v1.9.5：手机端卡片网格统一改「一排两个」——
     .series / .adv / .equip 原本在 ≤640 都是 1 列（一屏只能看一张卡）。
     （.clients 留言墙 v1.12.0 起不再是网格，手机端为单行横向滚动，见下面 ③。）
     2 列后单卡实测宽：320px→138px、375px→163px、390px→169px、430px→187px，
     所以下面把卡片内部（编号 / 内边距 / 标题 / 正文）整体按窄列收紧一档。 */
  .series,
  .adv,
  .equip{ grid-template-columns:repeat(2,1fr); gap:12px; }

  /* ① 产品系列卡（.series）：大号编号与内边距同步缩小 */
  .series__no{ left:12px; top:10px; font-size:26px; }
  .series__body{ padding:13px 13px 15px; }
  .series__body h3{ font-size:15px; margin-bottom:8px; }
  .series__tags{ font-size:11.5px; gap:6px; }
  .series__tags i{ width:3px; height:3px; }
  .series__body .link-arrow{ padding-top:12px; font-size:13px; }

  /* ② 工艺优势卡（.adv，深色底） */
  .adv__item{ padding:16px 14px 18px; }
  .adv__item::before{ width:30px; }
  .adv__top{ gap:8px; margin-bottom:12px; }
  .adv__no{ font-size:28px; }
  .adv__icon{ flex:0 0 34px; width:34px; height:34px; border-radius:9px; }
  .adv__icon svg{ width:17px; height:17px; }
  .adv__item h3{ font-size:15px; margin-bottom:8px; }
  .adv__item p{ font-size:12.5px; line-height:1.6; }

  /* ③ 客户留言墙（.clients）：手机端 = 单行「向左缓慢滚动」+ 可手指拖动
     只保留第一列，把它的轨道横过来；间距由 .client 自己的 margin-right 给
     （不能用 gap，否则无缝循环会差半个间距，见主块注释）。 */
  .clients{
    display:block; overflow:hidden; touch-action:pan-y;
    -webkit-user-select:none; user-select:none;
    -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 4%,#000 96%,transparent 100%);
            mask-image:linear-gradient(90deg,transparent 0,#000 4%,#000 96%,transparent 100%);
  }
  .clients__col{ display:none; }
  /* 只留第一列（DOM 里第一列是 --up），把它的轨道横过来当横向无缝轨道用。
     ⚠️ 不能用 --up 选 —— 第三列也是 --up。
     这里不写 animation / transform：位移由 main.js 第 9 节用内联 transform 驱动，
     写了反而会跟拖动的值打架。 */
  .clients__col:first-child{
    display:block; height:auto; overflow:visible;
    -webkit-mask-image:none; mask-image:none;
  }
  .clients__col:first-child .clients__track{
    flex-direction:row; align-items:stretch; will-change:auto;
  }
  .clients__col:first-child .client{
    width:76vw; max-width:330px; flex:0 0 auto;
    margin:0 14px 0 0; padding:20px 20px 22px;
  }
  .clients__col:first-child .client__head{ gap:11px; margin-bottom:13px; }
  .clients__col:first-child .client__avatar{ flex-basis:44px; width:44px; height:44px; }
  .clients__col:first-child .client__name{ font-size:14.5px; }
  .clients__col:first-child .client__role{ font-size:11.5px; }
  .clients__col:first-child .client__quote p{ font-size:13.5px; line-height:1.7; }

  /* ④ 设备卡（.equip__item） */
  .equip__item figcaption{ padding:11px 12px 13px; font-size:12.5px; line-height:1.5; }
  .equip__item figcaption strong{ font-size:13px; margin-right:6px; }

  .contact__form{ grid-template-columns:1fr; padding:24px; gap:16px; }

  /* v1.13.3 页脚（详见 footer.css 同段注释，两份逐字一致） */
  .footer__inner{ gap:26px 18px; padding:40px 0 28px; }
  .footer__nav h4,
  .footer__sub h4{ font-size:14px; margin-bottom:12px; }
  .footer__brand h3{ margin:16px 0 10px; }
  .footer__social{ margin-top:14px; }
  .footer__nav ul{ gap:2px; }
  .footer__nav a{ display:block; padding:4px 0; font-size:14px; }
  .footer__sub-desc{ font-size:14px; }
  .footer__sub-form{ margin-top:14px; }
  .footer__bar-inner{ flex-direction:column; text-align:center; gap:8px; padding:16px 0; }
}

/* 尊重系统「减少动效」偏好 */
@media (prefers-reduced-motion:reduce){
  *{ animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
  html{ scroll-behavior:auto; }
}

/* —— 装饰层公共定位：绝对定位 / 不拦截点击 / 压在内容下方 —— */
.deco{ position:absolute; pointer-events:none; z-index:0; }
.section > .container{ position:relative; z-index:1; }   /* 内容永远在装饰之上 */
.footer{ position:relative; overflow:hidden; }
.footer > .container{ position:relative; z-index:1; }

/* —— 1. 金色点阵 —— */
.deco--dots{
  inset:0;
  background-image:radial-gradient(rgba(232,163,61,.30) 1.4px, transparent 1.5px);
  background-size:26px 26px;
  -webkit-mask-image:radial-gradient(110% 80% at 12% 6%, #000, transparent 70%);
          mask-image:radial-gradient(110% 80% at 12% 6%, #000, transparent 70%);
  opacity:.6;
}
/* 点阵（右侧起渐隐） */
.deco--dots-r{
  -webkit-mask-image:radial-gradient(100% 80% at 88% 14%, #000, transparent 68%);
          mask-image:radial-gradient(100% 80% at 88% 14%, #000, transparent 68%);
  opacity:.5;
}
/* 点阵（底部起渐隐，用于页脚） */
.deco--dots-b{
  -webkit-mask-image:radial-gradient(90% 70% at 50% 100%, #000, transparent 72%);
          mask-image:radial-gradient(90% 70% at 50% 100%, #000, transparent 72%);
  opacity:.45;
}

/* —— 2. 细网格 —— */
.deco--grid{
  inset:0;
  background-image:linear-gradient(rgba(15,23,42,.055) 1px, transparent 1px),
                   linear-gradient(90deg, rgba(15,23,42,.055) 1px, transparent 1px);
  background-size:74px 74px;
  -webkit-mask-image:radial-gradient(120% 100% at 80% 0%, #000, transparent 78%);
          mask-image:radial-gradient(120% 100% at 80% 0%, #000, transparent 78%);
}

/* —— 3. 淡金斜纹 —— */
.deco--stripes{
  inset:0;
  background-image:repeating-linear-gradient(45deg, rgba(232,163,61,.14) 0 2px, transparent 2px 15px);
  -webkit-mask-image:linear-gradient(200deg, #000, transparent 70%);
          mask-image:linear-gradient(200deg, #000, transparent 70%);
  opacity:.7;
}

/* —— 4. 同心圆环 —— */
.deco--rings{
  width:820px; height:820px; right:-300px; top:-220px; border-radius:50%;
  background:repeating-radial-gradient(circle at center, transparent 0 40px, rgba(232,163,61,.20) 40px 41px);
  opacity:.75;
}

/* —— 5. 单个大圆环 —— */
.deco--ring{
  width:320px; height:320px; left:-110px; bottom:-70px; border-radius:50%;
  border:1px solid rgba(232,163,61,.40);
}
.deco--ring-tr{
  left:auto; right:4%; top:8%; bottom:auto;
  width:240px; height:240px; border-color:rgba(232,163,61,.32);
}

/* —— 6. 柔和色团 —— */
.deco--blob{
  width:560px; height:560px; left:-200px; top:-160px; border-radius:50%;
  background:radial-gradient(circle, rgba(232,163,61,.20), transparent 68%);
  filter:blur(4px);
}

/* —— 7. 暖色光晕 —— */
.deco--glow{
  width:640px; height:640px; right:-200px; bottom:-260px; border-radius:50%;
  background:radial-gradient(circle, rgba(232,163,61,.22), transparent 66%);
  filter:blur(8px);
}

/* —— 8. 极淡实拍底图（复用已有的 Background.png，灰度 + 低透明度） —— */
.deco--photo{
  inset:0;
  background:url("/wp-content/themes/simply/assets/images/ceshi.png") center/cover no-repeat;
  opacity:.10;
  filter:grayscale(1);
  -webkit-mask-image:linear-gradient(180deg, #000, transparent 85%);
          mask-image:linear-gradient(180deg, #000, transparent 85%);
}
.deco--photo-soft{ opacity:.07; }

/* —— 移动端：弱化装饰，避免小屏杂乱 —— */
@media (max-width:640px){
  .deco--rings, .deco--blob, .deco--glow{ display:none; }
  .deco--dots{ opacity:.45; }
  .deco--photo{ opacity:.06; }
}

/* ==============================================================
   WP 适配层（区块主题专用，由 extract_assets.py 自动追加）
   - .delay-1~7：核心区块无法写 data-delay，用 className 代替，
     效果与 [data-delay] 一致
   ============================================================== */
.reveal.delay-1{ transition-delay:.08s; }
.reveal.delay-2{ transition-delay:.16s; }
.reveal.delay-3{ transition-delay:.24s; }
.reveal.delay-4{ transition-delay:.32s; }
.reveal.delay-5{ transition-delay:.40s; }
.reveal.delay-6{ transition-delay:.48s; }
.reveal.delay-7{ transition-delay:.56s; }

/* wp:group 渲染出的 .wp-block-group 不带默认间距，保持原布局 */
/* ==============================================================
   WP 适配层 · 核心区块（图片 / 按钮 / 列表 / 卡片文字）
   ============================================================== */

/* —— 图片区块 ——
   原结构 .ph > img，现在中间多了一层核心区块的 <figure class="wp-block-image">，
   核心样式会给 figure 加 display:flex / flex-grow 和 img{height:auto}，
   这里逐一覆盖回改造前的行为。 */
/* About 轮播：figure 要撑满 slide，否则内部 img 的 height:100% 会失去参照 */
/* —— 首页「产品展示」动态循环 ——
   该板块已从 8 个手写 <div class="swiper-slide"><div class="show-card"> 改为 wp:query 读取「产品」，
   DOM 变化：
     原  .showcase-swiper > .swiper-wrapper > .swiper-slide      > .show-card > figure.wp-block-image + p.show-card__name
     新  .showcase-swiper > ul.wp-block-post-template.swiper-wrapper > li.wp-block-post > .show-card > figure.wp-block-post-featured-image + h3.show-card__name
   差异：① 多一层 <li>；② figure 换成 featured-image；③ 文字从 <p> 变 <h3><a>。
   下面逐条补回原视觉，间距仍由 front.css 各卡片自己的 padding 控制。 */
/* li 由 Swiper 控制宽度；高度交给同名 flex 拉伸，保证同排卡片等高 */
/* 产品图统一正方形裁切，与改造前一致 */
/* 标题：原来是 <p>，现在是 <h3><a>，需清掉标题默认外边距与链接样式 */
.showcase-swiper .show-card__name{ margin:0; }
.showcase-swiper .show-card__name a{ color:inherit; text-decoration:none; }
/* 没有任何产品时的提示（wp:query-no-results） */
.showcase-empty{ text-align:center; color:var(--muted); padding:48px 0; margin:0; }

/* —— 列表区块 —— */
/* —— 关掉"新区块容器"内的 block-gap ——
   核心区块会给同层兄弟之间加 24px（:where(.is-layout-flow) > * + *）。
   改造前这些卡片内容全在 wp:html 里、没有任何默认间距，改成区块后会凭空多出
   24px，导致设备卡/客户卡/优势卡等整体变高。这里逐个关掉，
   间距仍由 front.css 各自的 padding/margin 控制。 */
.strip__item > * + *,
.series > * + *,
.series__item > * + *,
.series__body > * + *,
.equip > * + *,
.equip__item > * + *,
.equip__item > *,
.clients > * + *,
.client > * + *,
.client figcaption > * + *,
.client figcaption > *,
.adv > * + *,
.adv__item > * + *,
.adv__item > *,
.adv__top > *,
.mini-adv > * + *,
.mini-adv__item > * + *,
.mini-adv__item > *,
.swiper > * + *,
.swiper-wrapper > * + *,
.swiper-slide > * + *,
.show-card > * + *,
/* —— 装饰元素在 wp:group 容器内的 block-gap ——
   .deco 是 absolute 定位但默认无 inset，仍会被 is-layout-flow 加 24px margin-block-start，
   导致绝对定位元素的偏移基准点偏移 24px、整个 section 视觉上变高。
   所有 .section/.equip/.adv/.process 等板块内的装饰元素都需要清零。 */
.section > .deco,
.equip > .deco,
.adv > .deco,
.process > .deco,
.banner > .deco,
.clients > .deco,
.footer > .deco,
.section > .ph,
.section > .deco--grid,
.section > .deco--blob,
.section > .deco--ring,
.section > .deco--rings,
.section > .deco--dots,
.section > .deco--stripes{
  margin-block-start:0;
}

/* —— 按钮区块 ——
   core/button 的 className 落在最外层 <div>，真正的链接是内层 .wp-block-button__link。
   原 .banner__btn / .btn 的视觉整体迁移到内层链接上，外层 div 只保留布局，
   避免出现"外层一层按钮 + 内层又一层按钮"的双重内边距。 */
.wp-block-button.banner__btn,
/* 通用 .btn（About 板块的「Talk to an Engineer」） */
/* —— 卡片内文字 ——
   原来是 <a class="show-card"> 里的 <span>，区块化后改名段落并保类名 */
.show-card__name{ display:block; padding:14px 18px 16px; font-size:14.5px; color:#4a5566; }
/* 系列卡标签里的分隔圆点：原为 <i>，编辑器会吞掉空 <i>，改成带类名的 span */
.series__tags .dot{ display:inline-block; width:4px; height:4px; border-radius:50%; background:var(--accent); }

/* ============================================================================
 * 经典主题适配层
 *
 * 下面这些规则是「FSE 区块标记 → 标准 HTML」转换后的补偿。
 * FSE 里很多容器由 WordPress 生成（带 wp-block-* 类），经典主题里是普通标签，
 * 需要显式补上尺寸/定位。
 * ============================================================================ */

/* Logo：客户上传图片时用 img，未上传时用 SVG + 文字 */
.logo__img{
  height:38px;
  width:auto;
  display:block;
}

/* Banner 背景：FSE 里是空 div + background-image，这里改成 figure + img */
.banner__bg{
  margin:0;
  display:block;
}
.banner__bg img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

/* .ph 占位容器里的图片：撑满并裁切 */
.ph img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

/* 客户卡片的图片容器 */
.client__img{
  overflow:hidden;
}
.client__img img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

/* 系列卡 / 设备卡的图片容器 */
.card__media img,
.equip__item .ph img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

/* —— 首页「产品展示」轮播的图片容器 ——
   FSE 里是 figure.wp-block-post-featured-image（一条规则管裁切），
   经典主题里是 div.show-card__media + 直接子 img，需要补回同样的正方形裁切。
   少了这条，各产品图按原始宽高比撑开 → 卡片高矮不齐、标题不对齐。 */
.showcase-swiper .show-card__media{
  position:relative;
  margin:0;
  aspect-ratio:1/1;
  overflow:hidden;
  border-radius:0;
}
.showcase-swiper .show-card__media img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  max-width:none;
}
.showcase-swiper .swiper-wrapper{
  margin:0;
  padding:0;
  list-style:none;
}

/* strip 里的 SVG 图标继承颜色 */
.strip__icon svg{
  display:block;
}

/* 滚动进场动画：默认隐藏，JS 加上 .in 才显示（与 FSE 主题一致） */
.reveal{
  opacity:0;
  transform:translateY(24px);
  transition:opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1);
}
.reveal.in{
  opacity:1;
  transform:none;
}
.delay-1{ transition-delay:.08s; }
.delay-2{ transition-delay:.16s; }
.delay-3{ transition-delay:.24s; }
.delay-4{ transition-delay:.32s; }
.delay-5{ transition-delay:.40s; }
.delay-6{ transition-delay:.48s; }
.delay-7{ transition-delay:.56s; }

/* 询价表单
   表单结构已对齐 FSE：.contact__form.card 内是 .field / .field--full /
   .captcha-row / .form-note(.ok/.err) / .btn--block，这些样式主样式里都有，
   此处无需再补。*/

/* 兜底页（index.php）——经典主题独有 */
.simply-classic-fallback{
  padding:80px 0 60px;
}
.simply-classic-fallback .page-title{
  font-size:36px;
  margin-bottom:32px;
}
.entry{
  padding:24px 0;
  border-bottom:1px solid var(--line);
}
.entry__thumb{
  display:block;
  aspect-ratio:16/9;
  overflow:hidden;
  border-radius:14px;
  margin-bottom:16px;
}
.entry__thumb img{
  width:100%;height:100%;object-fit:cover;
}
.entry__title{ font-size:22px; margin-bottom:8px; }
.entry__meta{ font-size:13px; color:var(--muted); margin-bottom:8px; }
.pagination{ margin-top:48px; text-align:center; }
.pagination .nav-links a,
.pagination .nav-links span{
  display:inline-block; padding:8px 14px; margin:0 4px;
  border-radius:8px; border:1px solid var(--line);
}
.pagination .nav-links .current{
  background:var(--accent); color:#20150a; border-color:var(--accent);
}
.no-results{ padding:60px 0; text-align:center; color:var(--muted); }

/* ============================================================================
 * 经典主题适配层 · 导航列表
 *
 * 【为什么需要】
 * FSE 主题里导航用的是核心 wp:navigation 区块，它输出
 *   <nav class="navigation"><ul class="wp-block-navigation__container">…
 * 「横排」是靠 WordPress 核心样式 .wp-block-navigation__container{display:flex} 实现的，
 * 那条规则不在 front.css 里（所以剥区块规则时不会被带过来）。
 *
 * 经典主题改用 wp_nav_menu() 输出
 *   <nav class="navigation"><ul class="nav__list">…
 * 没有核心样式兜底，<li> 会退回 list-item（块级）→ 7 个菜单项竖向堆叠，
 * 把 header 撑高、压在 Banner 上。
 *
 * 另外 FSE 里 className 会同时落在 <nav> 和 <ul> 上（见开发记忆第 1 条），
 * 所以原来 @media 段里 `.navigation{flex-direction:column}` 会同时作用到 <ul>；
 * 经典主题下 .navigation 只在 <nav> 上，必须单独给 <ul> 写移动端规则。
 * ============================================================================ */

.navigation ul{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  margin:0;
  padding:0;
  list-style:none;
}
.navigation ul li{ list-style:none; }

/* ≤1024px：抽屉里改回竖排（与 @media 段的 .header-bottom > nav 抽屉配套） */
@media (max-width:1024px){
  .navigation ul{
    flex-direction:column;
    align-items:stretch;
    flex-wrap:nowrap;
  }
}

/* 进场动画首项延时（0 延时，显式声明避免继承导致错位） */
.delay-0{ transition-delay:0s; }

/* 遮罩不可点双保险：见主样式 .nav-mask 注释 —— 隐形全屏层会挡住整页点击 */
.nav-mask{ pointer-events:none; }
.nav-mask.show{ pointer-events:auto; }

/* 手机端顶部信息条：v1.9.2 起 ≤1024px 整块 .header-top-right 都已隐藏，
   电话 / 邮箱 / 社交进了抽屉（.nav-contact）。
   这条注释保留在此，是提醒「别再把 .contact / .social 的手机端取舍规则加回来」。 */

/* 1025–1320px（小笔记本/横屏平板）：
   7 项菜单 + 230px 搜索框在一行放不下，会折成两行、Contact 掉到第二行。
   收紧菜单内边距与搜索框宽度，保证仍是一行。 */
@media (min-width:1025px) and (max-width:1320px){
  .header-bottom{ gap:16px; }
  .navigation li{ padding:6px 12px; }
  /* 下拉面板要跟着一级项的左右内边距走，否则子项文字会比父项文字「反缩进」
     （面板 left 与 li 的 padding-left 对齐时，子项文字才正好在父项文字右下） */
  .navigation li .sub-menu{ left:12px; }
  .header-bottom .hdr-search input[type="search"]{ width:160px; }
}



/* ============================================================================
 * SC-MODAL BLOCK · 提交结果弹窗（全站统一）
 *
 * 【解决什么问题】
 * 以前表单提交成功，只在 .form-note 里写一行 14px 绿字，贴在按钮正下方，
 * 混在表单里几乎看不见，客户常怀疑「到底提交成功了没有」。
 * 现在改成居中浮层弹窗：图标 + 标题 + 正文 + Close 按钮，成功/失败同一套骨架。
 *
 * 【为什么 DOM 由 JS 动态建，而不是写进模板】
 * 询价表单有 4 个实例（首页 / 联系页 / 产品页选项卡右栏 / 新闻详情侧栏），
 * 外加页脚订阅表单 —— 弹窗 HTML 若复制 5 份，改一次文案要动 5 个文件，必然走形。
 * 所以 DOM 由 main.js「4i. 提交结果弹窗」按需创建（全站只插一次），
 * 类名统一 .sc-modal*，样式只此一份。
 *
 * 【层级】z-index:10000 —— 必须高于灯箱（inner-pages.css 的 9999）。
 *
 * 【为什么不锁 body 滚动】弹窗 6.5s 自动关；header 是 fixed 定位，
 * 一旦锁滚动，滚动条消失会让整条 fixed 头部右移，且 body padding 补不回来。
 * 故只做视觉遮罩，不拦截页面滚动。
 * ============================================================================ */
.sc-modal{
  position:fixed; inset:0; z-index:10000;
  display:flex; align-items:center; justify-content:center;
  padding:24px;
  background:rgba(18,12,4,.46);
  -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px);
  opacity:0; visibility:hidden; pointer-events:none;
  /* visibility 延迟到淡出结束再切，避免关闭时先「消失」再「淡出」 */
  transition:opacity .26s var(--ease), visibility 0s .26s;
}
.sc-modal.is-open{
  opacity:1; visibility:visible; pointer-events:auto;
  transition:opacity .26s var(--ease), visibility 0s 0s;
}
.sc-modal__dialog{
  position:relative; width:100%; max-width:420px;
  max-height:calc(100vh - 48px); overflow:auto;
  padding:38px 32px 30px;
  background:var(--white); border-radius:22px;
  text-align:center;
  box-shadow:0 32px 80px rgba(15,23,42,.34);
  transform:translateY(16px) scale(.96);
  transition:transform .34s cubic-bezier(.2,.9,.3,1.06);
}
.sc-modal.is-open .sc-modal__dialog{ transform:none; }
/* 打开时焦点先落在对话框容器（屏幕阅读器会朗读标题+正文）；
   容器是 tabindex="-1"，不参与 Tab 顺序，所以消掉它的聚焦圈，
   视觉上就不会凭空出现一圈金边（键盘用户 Tab 到按钮时仍有 :focus-visible） */
.sc-modal__dialog:focus{ outline:none; }

/* 顶部品牌渐变细条 + 金色对勾圆 —— 弹窗的「第一眼识别」 */
.sc-modal__dialog::before{
  content:""; position:absolute; top:0; left:0; right:0; height:5px;
  border-radius:22px 22px 0 0;
  background:linear-gradient(90deg,var(--accent),var(--accent-2));
}
.sc-modal__icon{
  width:66px; height:66px; margin:0 auto 18px;
  display:flex; align-items:center; justify-content:center;
  border-radius:50%;
  background:linear-gradient(135deg,var(--accent-2),var(--accent));
  box-shadow:0 12px 26px rgba(232,163,61,.34);
}
.sc-modal__icon svg{ width:32px; height:32px; display:block; }

.sc-modal__title{
  margin:0 0 10px; font-size:22px; font-weight:800; line-height:1.25;
  color:var(--text);
}
.sc-modal__text{
  margin:0 0 26px; font-size:15px; line-height:1.65; color:var(--muted);
}
/* 没有正文时（后台把提示语删空）整段不占位 */
.sc-modal__text[hidden]{ display:none; }

.sc-modal__btn{
  display:inline-block; min-width:150px; padding:13px 30px;
  border:0; border-radius:999px; cursor:pointer;
  font-family:inherit; font-size:15px; font-weight:700; color:#20150a;
  background:linear-gradient(135deg,var(--accent-2),var(--accent));
  box-shadow:0 12px 26px rgba(232,163,61,.30);
  transition:transform .2s var(--ease), box-shadow .2s var(--ease), filter .2s var(--ease);
}
.sc-modal__btn:hover{
  transform:translateY(-2px); filter:brightness(1.05);
  box-shadow:0 16px 32px rgba(232,163,61,.38);
}
.sc-modal__btn:focus-visible{ outline:3px solid rgba(169,112,26,.45); outline-offset:3px; }

.sc-modal__close{
  position:absolute; top:12px; right:12px;
  width:34px; height:34px; padding:0 0 2px;
  display:flex; align-items:center; justify-content:center;
  border:0; border-radius:50%; cursor:pointer;
  background:transparent; color:var(--muted);
  font-size:22px; line-height:1;
  transition:background .2s var(--ease), color .2s var(--ease);
}
.sc-modal__close:hover{ background:var(--ink-3); color:var(--text); }

/* —— 失败变体：结构与成功完全一致，只换配色（这才叫「统一样式」）—— */
.sc-modal--error .sc-modal__dialog::before{ background:linear-gradient(90deg,#e0664f,#f0a08c); }
.sc-modal--error .sc-modal__icon{
  background:linear-gradient(135deg,#f0907b,#d9503a);
  box-shadow:0 12px 26px rgba(217,80,58,.30);
}
.sc-modal--error .sc-modal__btn{
  color:#fff; background:linear-gradient(135deg,#e0664f,#cf4630);
  box-shadow:0 12px 26px rgba(207,70,48,.28);
}
.sc-modal--error .sc-modal__btn:hover{ box-shadow:0 16px 32px rgba(207,70,48,.36); }

@media (max-width:520px){
  /* 从偏上位置出现：手机上提交后键盘可能还开着，居中会被顶住 */
  .sc-modal{ align-items:flex-start; padding:14vh 16px 16px; }
  .sc-modal__dialog{ padding:32px 22px 24px; border-radius:18px; }
  .sc-modal__icon{ width:58px; height:58px; margin-bottom:14px; }
  .sc-modal__icon svg{ width:28px; height:28px; }
  .sc-modal__title{ font-size:19px; }
  .sc-modal__text{ font-size:14px; margin-bottom:22px; }
  .sc-modal__btn{ width:100%; min-width:0; padding:14px 22px; }
  .sc-modal__close{ top:8px; right:8px; }
}
@media (prefers-reduced-motion:reduce){
  .sc-modal, .sc-modal__dialog{ transition:none; }
}

/* 内页样式见 inner-pages.css（静态稿专用，移植时替换本节） */
