/* 通用 */

/* ============================================================
   设计令牌（2026-11-10 统一视觉）
   原来样式表里有 4 种蓝（#1e80ff/#5c7ceb/#2663fc/#4064fd）、
   7 种灰（#000/#222/#3d3d3d/#3f3f3f/#666/#6d6d6d/#909090），
   font-family 还写着 MicrosoftYaHei / MicrosoftYaHei-Bold 这类
   Mac/Linux 上并不存在的字体名（实际一直 fallback）。
   这里收敛成一套令牌，下面所有色值都引用变量；改主色只需改这一处。
   注：.c-3f3f3f、.c-5c7ceb 等工具类名是历史命名，实际色值以变量为准。
   ============================================================ */
:root {
    --c-brand: #4064fd;
    --c-brand-dark: #2b46c9;
    --c-brand-soft: #eef1ff;
    --c-title: #1a1a1a;
    --c-text: #4d4d4d;
    --c-text-2: #6b6b6b;
    --c-muted: #8c8c8c;
    --c-line: #e3e6ef;
    --c-bg-soft: #f4f5f9;
    --c-white: #ffffff;
    --font-sans: "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", "Helvetica Neue", Arial, sans-serif;
    /* 圆角 / 阴影 / 缓动统一到这里：原来全站是直角+硬投影，散落 5 种写法 */
    --radius-sm: 8px;
    --radius-md: 12px;
    --radius-lg: 16px;
    --shadow-1: 0 1px 2px rgba(16, 24, 40, .04), 0 6px 20px rgba(16, 24, 40, .06);
    --shadow-2: 0 12px 32px rgba(16, 24, 40, .12);
    --ease: cubic-bezier(.4, 0, .2, 1);
}

body {
    font-family: var(--font-sans);
    color: var(--c-text);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

a {
    color: var(--c-title);
    cursor: pointer;
}


a:hover {
    color: var(--c-brand-dark);
}

/* 标题统一深色 + 行高：原来碎片里的 h3 没有颜色类，直接继承 body 的灰，
   与正文同色导致层级不清；有专门颜色类的（如品牌色小标题）仍会覆盖这条 */
h1,
h2,
h3,
h4,
h5,
h6 {
    color: var(--c-title);
    line-height: 1.4;
}

ul>li:last-child {
    border-bottom: none;
}

/* 页脚：原来和白底页面同色，收尾处"断得很突然"；给一块浅灰底 + 细上边框收住页面 */
footer {
    background-color: var(--c-bg-soft);
    border-top: 1px solid var(--c-line);
}

/* 主按钮统一圆角（原来 .btn-about-more/.m-btn-more 是直角，.btn-ok 是 5px，三种口径不一） */
.btn-about-more,
.m-btn-more,
.btn-ok {
    border-radius: 4px;
}

html {
    scroll-behavior: smooth;
}
.code {
  overflow-y: scroll;
  overflow-x: hidden;
  background-color: rgba(255, 255, 255, 0.95);
  box-shadow: 0 0 10px rgba(0, 0, 0, .3);
  transition: transform 0.3s ease;
  font-size: 14px;
  color: var(--c-title);
}

.code pre{
 
  font-size: 18px;
  color: var(--c-title);
  font-family: var(--font-sans);
  font-size: 14px;
}

.w-1200 {
    width: 1200px;
}

.w-800 {
    width: 800px;
}

.pl-226 {
    padding-left: 226px;
}

.pt-80 {
    padding-top: 80px;
}

.c-3f3f3f {
    color: var(--c-text);
}

.c-fff {
    color: var(--c-white);
}

.c-222 {
    color: var(--c-title);
}

.c-464646 {
    color: var(--c-text) !important;
}

.c-3d3d3d {
    color: var(--c-text) !important;
}

.c-5c7ceb {
    color: var(--c-brand);
}

/* 模板里写了、但样式表从未定义过的色阶类：
   c-141414(4处) c-bfbfbf(4处) c-595959(2处) c-6d6d6d(1处) c-252933(1处)。
   原来这些文字全部在继承 body 色，等于"写了一堆分级、实际同一种灰"。
   按统一灰阶补齐，不改模板。 */
.c-141414,
.c-252933 {
    color: var(--c-title);
}

.c-595959 {
    color: var(--c-text);
}

.c-6d6d6d {
    color: var(--c-text-2);
}

.c-bfbfbf {
    color: var(--c-muted);
}

.bg-999 {
    background-color: var(--c-muted);
}

.mb-40 {
    margin-bottom: 40px;
}

.gap-20 {
    gap: 20px;
}

.border-dashed {
    border-bottom: 1px dashed var(--c-line);
}

.it,
.it a {
    color: rgba(0, 0, 0, 0);
}

.frag p {
    display: inline-block;
}

.thumb-120 {
    min-width: 120px;
    max-width: 160px;
    max-height: 130px;
    border-radius: 6px;
    margin-right: 10px;
    overflow: hidden;
    /* 缩略图文件缺失时（老站上传目录没同步过来）浏览器会把 alt 文字当内容渲染，
       灰底 + 透明字让缺失位变成干净的占位块，不再是一坨乱码 */
    background-color: var(--c-bg-soft);
}

.thumb-120 img {
    color: transparent;
}

.more {
    font-size: 14px;
}

.article-index {
    width: 930px;
}

.aside-index {
    width: 250px;
}

/* 首页 */
.header-wrap {

    height: 80px;
    background-image: linear-gradient(0deg,
            #e9eff4 0%,
            #ffffff 57%,
            #f1f8ff 100%),
        linear-gradient(#ffffff,
            #ffffff);
    background-blend-mode: normal,
        normal;
    box-shadow: 0 2px 12px rgba(15, 23, 42, 0.06);
    position: sticky;
    top: 0;
    z-index: 10;
    background-color: rgba(255, 255, 255, 0.6);
    backdrop-filter: blur(8px);
}

.header {
    width: 1200px;
}

.logo {
    width: 61px;
    height: 60px;
    background: url(../img/logo.png) left center no-repeat;
    background-size: 61px 60px;
    color: rgba(0, 0, 0, 0);
}

.logo-title h2 {
    font-size: 12px;
    font-weight: lighter;
    padding-top: 18px;
}

.header-wrap .nav {
    /* margin-left: 50px; */
}

.header-wrap .nav-item {
    position: relative;
    height: 42px;
    line-height: 42px;
    padding-left: 18px;
    padding-right: 18px;
}

.header-wrap .nav-item.active {
    transition: all 0.3s ease-in-out;
}

.header-wrap .nav-item.active::after {
    display: block;
    content: '';
    width: 60%;
    height: 3px;
    background-color: var(--c-brand);
    margin: 0 auto;
}

.header-wrap .nav-item a {
    font-size: 15px;
    padding-left: 5px;
    padding-right: 5px;
    display: block;
    color: rgba(0, 0, 0, 0.9);
}

.header-wrap .nav-item a:hover {
    color: var(--c-brand);
}

.header-wrap .sub-nav::before {
    content: "";
    position: absolute;
    top: -10px;
    left: 50%;
    transform: translateX(-50%);
    border-width: 5px;
    border-style: solid;
    border-color: transparent transparent rgba(242, 237, 237, 0.9) transparent;
}

.header-wrap .sub-nav {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    /* padding: 10px; */
    background-color: rgba(255, 255, 255, 0.92);
    backdrop-filter: blur(10px);
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
    border-radius: 6px;
    width: 160%;
    z-index: 1;
}

.header-wrap .sub-nav-item {
    margin-bottom: 5px;
    padding-left: 10px;
    padding-right: 10px;
}

.header-wrap .nav-item:hover .sub-nav {
    display: block;
}

.header-wrap .tel {
    font-family: var(--font-sans);
    font-weight: 700;
    font-size: 16px;
    font-weight: normal;
    font-stretch: normal;
    line-height: 55px;
    letter-spacing: 0px;
    color: var(--c-brand);
}

.swiper {
    /* width: 1200px; */
    height: 418px;
}

.swiper-slide {
    text-align: center;
    font-size: 18px;
    background: var(--c-white);

    /* Center slide text vertically */
    display: -webkit-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -webkit-box-pack: center;
    -ms-flex-pack: center;
    -webkit-justify-content: center;
    justify-content: center;
    -webkit-box-align: center;
    -ms-flex-align: center;
    -webkit-align-items: center;
    align-items: center;
}

.swiper-slide img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.swiper-button-next,
.swiper-button-prev {
    color: var(--c-white);
}

.swiper-pagination-bullet-active,
.swiper-pagination-bullet {
    background-color: var(--c-white);
}


/* 解决方案 */

.m-jjfa {
    height: 508px;
}

.m-jjfa img {
    width: 100%;
    height: 100%;
}

.m-title {
    font-family: var(--font-sans);
    font-weight: 700;
    font-size: 25px;

    line-height: 55px;
    letter-spacing: 0px;
    color: var(--c-brand);
}

.m-aside-title {
    font-family: var(--font-sans);
    font-weight: 700;
    font-size: 18px;
    letter-spacing: 0px;
    color: var(--c-brand);
    padding-bottom: 16px;
}

.m-description {
    font-family: var(--font-sans);
    font-size: 14px;
    font-weight: normal;
    font-stretch: normal;
    letter-spacing: 0px;
    color: var(--c-muted);
}

.m-h4 {
    min-width: 148px;
    height: 57px;
    line-height: 57px;
    text-align: center;
    /* 原来是 rgba(255,255,255,.2) 半透明白底 + 近黑字，压在彩色大图上几乎读不清；
       改成深色半透明底 + 白字，任何图片下都清晰 */
    background-color: rgba(17, 24, 39, 0.55);
    border-radius: 0 4px 4px 0;
    font-family: var(--font-sans);
    font-size: 18px;
    font-weight: normal;
    font-stretch: normal;
    letter-spacing: 0px;
    color: var(--c-white);
    position: absolute;
    bottom: 32px;
    left: 0;
}

.m-h4 a {
    display: block;
    /* a 自带 color 规则，不 inherit 会把白字盖回深色 */
    color: inherit;
}

.m-h4 a:hover {
    color: var(--c-white);
}

.m-xiaoyuan {
    width: 694px;
    height: 253px;
    overflow: hidden;
}

.m-xiaoyuan img {
    width: 694px;
    min-height: 253px;
    transition: all 0.5s ease-in-out;
}

.m-xiaoyuan:hover img {
    transform: scale(1.05);
}

.m-yuanqu {
    width: 345px;
    height: 253px;
    overflow: hidden;
    transition: all 0.5s ease-in-out;
}

.m-yuanqu img {
    /* width: 217px; */
    min-height: 253px;
    transition: all 0.5s ease-in-out;
}

.m-yuanqu:hover img {
    transform: scale(1.05);
}

.m-yanglao {
    width: 345px;
    height: 253px;
    overflow: hidden;
    transition: all 0.5s ease-in-out;
}

.m-yanglao img {
    width: 345px;
    min-height: 253px;
    transition: all 0.5s ease-in-out;
}

.m-yanglao:hover img {
    transform: scale(1.05);
}

.m-gongchang {
    width: 760px;
    height: 511px;
    overflow: hidden;
}

.m-gongchang img {
    min-height: 511px;
    transition: all 0.5s ease-in-out;
}

.m-gongchang:hover img {
    transform: scale(1.05);
}

/* 技术服务 */
.m-jsfw {
    height: 455px;
}

/* .m-jsfw-bg{
    background: url('../img/jsfw-bg.jpg');
} */
.m-btn-more {
    width: 235px;
    height: 56px;
    line-height: 56px;
    background-color: var(--c-brand);
    font-family: var(--font-sans);
    font-size: 14px;
    letter-spacing: 3px;
    color: var(--c-white);
    transition: all 0.5s ease-in-out;
}

.m-btn-more:hover {
    transform: scale(1.05);
}

.m-btn-more a {
    display: block;
    color: var(--c-white);
}

.m-top-shadow {
    box-shadow: 0 -2px 12px rgba(15, 23, 42, 0.08);
}

/* 新闻 */
.m-tab-th {}

.m-tab-th span {
    color: var(--c-text);
    cursor: pointer;
}

.m-tab-th span.active {
    color: var(--c-brand);
}

.m-news {
    display: none;
}

.m-news.active {
    display: block;
}

.m-news-item {
    width: 285px;
    height: 290px;
    background-color: var(--c-white);
    box-shadow: 0 4px 16px rgba(15, 23, 42, 0.06);
}

.m-news-img {
    width: 285px;
    height: 180px;
    background-color: var(--c-bg-soft);
    overflow: hidden;
}

/* 缩略图统一按 285×180 裁切，避免原图比例不同被 min-height 拉变形；
   color:transparent 用于图片缺失时遮掉 alt 大字（缺图文件待补，占位仍是灰底） */
.m-news-img img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    color: transparent;
}

.m-news-title a {
    font-family: var(--font-sans);
    font-size: 13px;
    font-weight: bold;
    line-height: 18px;
    letter-spacing: 0px;
    color: var(--c-title);
}

.m-news-des {
    font-family: var(--font-sans);
    font-size: 12px;
    font-weight: normal;
    font-stretch: normal;
    line-height: 18px;
    letter-spacing: 0px;
    color: var(--c-text);
}

.m-new-more {
    width: 93px;
    height: 31px;
    line-height: 31px;
    background-color: var(--c-white);
    border: solid 1px var(--c-title);
    font-family: var(--font-sans);
    font-size: 12px;
    font-weight: normal;
    font-stretch: normal;
    letter-spacing: 0px;
    color: var(--c-title);
}



/* 技术服务 / 关于 板块背景图
   碎片模板里的底图是「内联 absolute + left:0 + 1920px 原图」，
   视口一旦宽于 1920（2K/超宽屏）右侧就会露出一条白边。
   这里统一改为相对各自 section 水平居中并铺满，超出部分裁掉
   （两张底图都是抽象几何，没有关键细节，裁剪不影响观感）。
   碎片内联样式优先级高于选择器，left/top 必须 !important 才能覆盖。 */
section.m-jsfw,
section.home-about {
    position: relative;
    overflow: hidden;
}

section.m-jsfw > p,
section.home-about > p {
    left: 50% !important;
    top: 0 !important;
    right: auto;
    bottom: auto;
    width: 100%;
    height: 100%;
    margin: 0;
    overflow: hidden;
    transform: translateX(-50%);
}

section.m-jsfw > p img,
section.home-about > p img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
}

/* 关于 */
.ak-bg {
    height: 534px;
}

.btn-about-more {
    width: 236px;
    height: 57px;
    line-height: 57px;
    background-color: var(--c-brand);
    font-family: var(--font-sans);
    font-size: 14px;
    font-weight: normal;
    font-stretch: normal;
    letter-spacing: 3px;
    color: var(--c-white);
    display: block;
    transition: all 0.5s ease-in-out !important;
}

.btn-about-more:hover {
    color: var(--c-white);
    transform: scale(1.05);
}

.about-item {
    height: 91px;
    min-width: 185px;
    border-left: 3px solid var(--c-brand);
    padding: 14px 18px;
}

/* 返回顶部 */
.backtop {
    position: fixed;
    bottom: 113px;
    right: 15px;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.12);
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: rgba(255, 255, 255, 0.6);
    backdrop-filter: blur(8px);
    transition: all 0.3s ease-in-out;
    cursor: pointer;
}

.backtop.none {
    display: none;
}

.backtop:hover {
    background-color: rgba(255, 255, 255, 0.9);
}

/* 语言 */
#translate {
    display: none;
}



/* 内容页 */
.m-article-title {
    font-family: var(--font-sans);
    font-weight: 700;
    font-size: 18px;
    font-weight: bold;
    line-height: 24px;
    letter-spacing: 0px;
    color: var(--c-text-2);
}

.m-article-cont {
    font-family: var(--font-sans);
    font-weight: 300;
    font-size: 14px;
    font-weight: normal;
    line-height: 24px;
    letter-spacing: 0px;
    color: var(--c-title);
}

.m-article-cont p {
    margin-top: 20px;
    margin-bottom: 20px;
}



/* 留言 */
.message {
    width: 739px;
    /* height: 374px; */
    background-color: var(--c-brand-soft);
}

.message label {
    width: 129px;
    height: 62px;
    line-height: 62px;
    display: block;
    background-color: var(--c-line);
    font-family: var(--font-sans);
    font-weight: 300;
    font-size: 19px;
    color: var(--c-title);
}

.message-item {
    width: 340px;
    /* height: 62px; */
    /* background-color: #ffffff; */
    margin-bottom: 12px;
}

.message-item input {
    flex: 1;
    padding: 10px;
}

.message .textarea {
    width: 100%;
    height: 120px;
    background-color: var(--c-white);
}

.btn-ok {
    width: 200px;
    height: 40px;
    line-height: 40px;
    border-radius: 5px;
    background-color: var(--c-brand);
    color: var(--c-white);
    font-size: 16px;
    text-align: center;
}


/* 列表（方案卡片）—— 现代化：通栏卡片 + 大圆角 + 悬停抬升
   原来固定 739px 宽，在 1200 容器里居中后两侧各留 230px 空白，显得又窄又散 */
.m-list-item {
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    background-color: var(--c-white);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: var(--shadow-1);
    align-items: stretch;
    transition: transform .3s var(--ease), box-shadow .3s var(--ease);
}

.m-list-item:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-2);
}

.m-list-img {
    width: 44%;
    height: auto;
    min-height: 268px;
    flex-shrink: 0;
    overflow: hidden;
}

.m-list-img a {
    display: block;
    height: 100%;
}

.m-list-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .5s var(--ease);
}

.m-list-item:hover .m-list-img img {
    transform: scale(1.05);
}

/* 右侧文案区：垂直居中。原来内容顶着上沿，卡片下方留一大片空白 */
.m-list-des {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 34px 40px;
}

.m-list-title {
    font-size: 22px;
    font-weight: 600;
    line-height: 1.4;
    color: var(--c-title);
    margin-bottom: 14px;
}

.m-list-title a {
    color: inherit;
    transition: color .22s var(--ease);
}

.m-list-item:hover .m-list-title a {
    color: var(--c-brand);
}

.m-list-info {
    margin-bottom: 26px;
    font-size: 14.5px;
    line-height: 1.95;
    color: var(--c-text-2);
}

/* 摘要文字被 <a> 包着，会吃到全局 a 的深色，这里拉回正文灰 */
.m-list-info a {
    color: inherit;
}

.m-list-btn-more {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    align-self: flex-start;
    width: auto;
    height: 42px;
    padding: 0 26px;
    border-radius: 999px;
    text-align: center;
    background-color: var(--c-brand);
    box-shadow: 0 8px 18px rgba(64, 100, 253, .24);
    font-size: 14px;
    font-weight: 500;
    color: var(--c-white);
    transition: background-color .22s var(--ease), box-shadow .22s var(--ease);
}

.m-list-btn-more::after {
    content: '→';
    transition: transform .22s var(--ease);
}

.m-list-btn-more:hover {
    background-color: var(--c-brand-dark);
    color: var(--c-white);
    box-shadow: 0 10px 24px rgba(64, 100, 253, .34);
}

.m-list-btn-more:hover::after {
    transform: translateX(3px);
}



/* 分页 —— 现代化：flex 居中 + 圆角方块 + 轻量悬停
   （新版 pageHtml 输出 <span>/<a> 平铺、老版包 <li>，两套合并成同一条规则） */
.page ul {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
}

.page ul li,
.page ul>span,
.page ul>a {
    float: none;
    display: block;
    margin-right: 0;
    padding: 0 15px;
    height: 38px;
    line-height: 36px;
    border: 1px solid var(--c-line);
    border-radius: 10px;
    font-size: 14px;
    color: var(--c-text-2);
    background-color: var(--c-white);
    cursor: pointer;
    transition: border-color .2s var(--ease), color .2s var(--ease), background-color .2s var(--ease);
}

.page ul li a {
    display: block;
    padding: 0;
    height: 36px;
    line-height: 36px;
}

.page ul li.disabled {
    padding: 0 15px;
}

.page ul li.current,
.page ul>span.current {
    background-color: var(--c-brand);
    border-color: var(--c-brand);
    color: var(--c-white);
}

.page ul li.current a {
    color: var(--c-white);
}

.page ul>a:hover {
    border-color: var(--c-brand);
    color: var(--c-brand);
    background-color: var(--c-brand-soft);
}

.page ul>span.disabled {
    color: var(--c-muted);
    cursor: default;
    background-color: transparent;
}

.article-cont p {
    margin-bottom: 24px;
    line-height: 22px;
    font-size: 14px;
    color: var(--c-title);
    /* text-indent: 2em; */
}

.article-cont img {
    max-width: 100%;
    margin: 0 auto;
}

.article-cont h3 {
    color: var(--c-text-2);
    margin-bottom: 16px;
}


.toast {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 1000;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.5);
    display: flex;
    justify-content: center;
    align-items: center;
}

.toast-txt {
    display: inline-block;
    padding: 6px 16px;
    border-radius: 12px;
    background-color: rgba(0, 0, 0, 0.8);
    color: var(--c-white);
    font-size: 12px;
}



/* 产品页 / 方案页：浅灰底 + 白卡片，卡片才有"浮起来"的层次。
   原来整页白底 + 白卡片，只靠 1px 灰边分层，看着又平又散 */
body.page-product,
body.page-case {
    background-color: #eef1f6;
}

/* 页脚在主站是浅灰收边；这两个页面底色本身就比它深，透出底色才不会出现一条突兀的浅色带 */
body.page-product footer,
body.page-case footer {
    background-color: transparent;
    border-top-color: rgba(15, 23, 42, .07);
}

/* 方案页顶部说明 + 架构图（碎片内容，结构改不了，用外层容器收住观感）：
   原图是一整块浅紫蓝色块、直角直接裸露，和现在的圆角卡片语言不搭 */
body.page-case .c-3d3d3d p {
    font-size: 14.5px;
    line-height: 2;
    color: var(--c-text-2);
}

body.page-case .c-3d3d3d img {
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-1);
}

/* 分页栏：模板自带 bg-fff + 25px 内边距，在浅灰底上会变成一条突兀的白杠；
   透出底色、按钮自成一个圆角块，视觉更轻 */
body.page-product .page,
body.page-case .page {
    background-color: transparent;
    padding: 4px 0 0;
}

/* 模板里这层容器自带 bg-fff + radius-6，会和白卡片叠成「白上白」，去掉背景让它透出页面底色 */
body.page-product article>.list.row {
    background-color: transparent;
}

/* banner 碎片直接塞了 1920px 原图，超过视口就居中溢出（1440 视口实测 docW=1680 → 横向滚动条）。
   宽屏下按原尺寸居中显示、左右对称裁掉超出部分（视觉与改前一致，只是不再撑出滚动条）；
   窄屏由图自身的 max-width:100% 接管，这里只在 ≥1200 生效，避免两套规则打架 */
@media (min-width: 1200px) {

    body.page-product>section>.container,
    body.page-case>section>.container {
        width: 100%;
        overflow: hidden;
    }

    body.page-product>section>.container img,
    body.page-case>section>.container img {
        position: relative;
        left: 50%;
        transform: translateX(-50%);
        max-width: none;
        display: block;
    }
}

/* 产品网格容器：.product-item 改成自适应宽度后，容器必须显式占满剩余空间，
   否则 .row(flex) 里会被收缩成内容宽，grid 的 1fr 就失效了 */
.product-container {
    flex: 1;
    min-width: 0;
}

/* 产品页面 —— 侧栏分类（现代化：独立卡片 + 胶囊列表 + 悬停反馈）
   宽度 160 → 210：原宽度下中文分类两侧留白比文字还宽，显得空 */
.product-menu {
    width: 210px;
    flex-shrink: 0;
    background-color: var(--c-white);
    border: 1px solid var(--c-line);
    border-radius: var(--radius-lg);
    margin-right: 28px;
    padding: 12px;
    box-shadow: var(--shadow-1);
    /* 分类项数量由后台栏目决定，写死 285px 时 8 项实测 323px → 末项会溢出到边框外。
       改为由内容撑开、保留最小高度；flex-start 防止被 .row 的 stretch 拉成整行高 */
    height: auto;
    min-height: 285px;
    align-self: flex-start;
    /* 右侧网格/图文比侧栏长很多，滚动时让分类跟随，避免左侧一大片空 */
    position: sticky;
    top: 92px;
}

.product-menu ul {
    list-style-type: none;
    padding: 0;
    margin: 0;
}

.product-menu li {
    margin-bottom: 4px;
}

.product-menu li:last-child {
    margin-bottom: 0;
}

.product-menu a {
    padding: 0 16px;
    height: 44px;
    line-height: 44px;
    font-size: 15px;
    text-decoration: none;
    color: var(--c-text);
    border-radius: 10px;
    display: block;
    text-align: left;
    transition: background-color .22s var(--ease), color .22s var(--ease), box-shadow .22s var(--ease);
}

.product-menu a:hover {
    background-color: var(--c-brand-soft);
    color: var(--c-brand);
}

.product-menu li.active a {
    background-color: var(--c-brand);
    color: var(--c-white);
    font-weight: 600;
    box-shadow: 0 6px 16px rgba(64, 100, 253, .26);
}

.product-menu li.active a:hover {
    background-color: var(--c-brand-dark);
    color: var(--c-white);
}


.product-list {

    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}

.product-list.none {
    display: none;
}

.product-item {
    width: auto;
    height: auto;
    border: 1px solid var(--c-line);
    border-radius: var(--radius-lg);
    background-color: var(--c-white);
    text-align: center;
    padding: 0 0 16px;
    overflow: hidden;
    transition: transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease);
}

.product-item > a {
    display: block;
    height: 100%;
}

.product-item:hover {
    transform: translateY(-4px);
    border-color: transparent;
    box-shadow: var(--shadow-2);
}

/* 产品图是白底实拍：统一放进浅灰「图兜」居中 contain。
   原来 img 宽度 100% 撑满，比例不同的图高度参差，卡片下沿永远对不齐 */
.product-item-img {
    height: auto;
    aspect-ratio: 1 / 1;
    margin: 0 0 14px;
    padding: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.product-item-img img {
    width: auto;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    transition: transform .45s var(--ease);
}

.product-item:hover .product-item-img img {
    transform: scale(1.06);
}

.product-item h3 {
    margin: 0 14px;
    font-size: 14px;
    font-weight: 500;
    line-height: 1.5;
    color: var(--c-title);
    transition: color .22s var(--ease);
    /* 标题过长时最多两行，卡片高度才不会参差 */
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.product-item:hover h3 {
    color: var(--c-brand);
}

/* 详情页内容区：原来写死 980px，加上侧栏 210+28 后超过 1200 容器宽，
   .row 是 flex-wrap:wrap → 内容整块被挤到第二行，与侧栏上下错位。
   改为占满剩余宽度，并自带白卡（列表页右侧是网格卡片，只有详情页需要整块卡片） */
.product-detail {
    flex: 1;
    min-width: 0;
    width: auto;
    background-color: var(--c-white);
    border: 1px solid var(--c-line);
    border-radius: var(--radius-lg);
    padding: 28px;
    box-shadow: var(--shadow-1);
}

.product-detail-title {
    font-size: 18px;
    text-align: center;
    font-weight: normal;
    margin-bottom: 50px;
}

.product-detail-content {
    font-size: 16px;
    line-height: 1.9;
    color: var(--c-text);
}

.product-detail-content p {
    font-size: 16px;
    line-height: 1.9;
    color: var(--c-text);
}

.product-detail-content h2 {
    font-size: 18px;
    font-weight: 600;
    color: var(--c-title);
}

.product-detail-content img {
    max-width: 100%;
}

.product-detail-info {
    display: flex;
}

/* 产品主图：白底实拍统一放进浅灰图兜居中 contain，圆角与卡片呼应 */
.product-img {
    width: 335px;
    height: 320px;
    border: 1px solid var(--c-line);
    border-radius: var(--radius-md);
    margin-right: 36px;
    padding: 16px;
    overflow: hidden;
    flex-shrink: 0;
}

.product-img img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.product-title {
    font-size: 28px;
    font-weight: 600;
    line-height: 1.4;
    color: var(--c-title);
}

/* 产品咨询热线：内边距只保留在 <a> 一层（原来容器 18px + <a> 22px 双层叠加、字号 28px
   → 按钮高达 76px，比标题还抢眼）。现改为常规 CTA 尺寸，约 52px 高 */
.product-contact {
    display: inline-block;
    background-color: var(--c-brand);
    border-radius: var(--radius-md);
    padding: 0;
    margin-top: 32px;
    line-height: 1.5;
    box-shadow: 0 8px 20px rgba(64, 100, 253, .2);
    transition: background-color .22s var(--ease), box-shadow .22s var(--ease);
}

.product-contact a {
    display: inline-block;
    color: var(--c-white);
    padding: 13px 26px;
    font-size: 17px;
    font-weight: 500;
}

.product-contact:hover {
    background-color: var(--c-brand-dark);
    box-shadow: 0 10px 24px rgba(64, 100, 253, .28);
}

/* ==========================================================================
   响应式适配
   原则：所有改动都在媒体查询内 —— 视口 > 1199px 时保持原 1200 桌面版，
   一个像素都不变（原有规则一条未改，这里只做覆盖）。
   ========================================================================== */

/* 移动端菜单按钮 & 遮罩：桌面端不渲染 */
.nav-toggle,
.nav-mask {
    display: none;
}

/* ---------- 1. 窄桌面 / 平板横屏（≤1199px）：容器由固定宽转流式 ---------- */
@media (max-width: 1199px) {
    .w-1200,
    .w-800,
    .header,
    .footer,
    .article-index,
    .product-detail,
    .message {
        width: 100%;
        max-width: 1200px;
        padding-left: 15px;
        padding-right: 15px;
    }

    .w-800 {
        max-width: 800px;
    }

    .article-index,
    .product-detail,
    .message {
        max-width: 100%;
    }

    /* 方案卡片已改成通栏自适应（width:100%），不能再吃 15px 内边距，
       否则图片无法贴到卡片圆角边 */
    .m-list-item {
        width: 100%;
        max-width: 100%;
        padding-left: 0;
        padding-right: 0;
    }

    /* 轮播：按 1200:418 比例自适应，避免固定高度压扁 */
    .swiper {
        width: 100%;
        height: auto;
        aspect-ratio: 1200 / 418;
    }

    .swiper-slide img {
        height: 100%;
    }

    /* 首页解决方案：三块拼图跟随容器缩放 */
    .m-jjfa {
        height: auto;
    }

    .m-jjfa > div:first-child {
        flex: 1 1 58%;
        min-width: 0;
    }

    .m-xiaoyuan {
        width: 100%;
        height: 253px;
    }

    .m-xiaoyuan img,
    .m-yuanqu img,
    .m-yanglao img,
    .m-gongchang img {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

    .m-yuanqu,
    .m-yanglao {
        width: calc(50% - 3px);
    }

    .m-jjfa > .m-gongchang {
        flex: 1 1 42%;
        min-width: 0;
        height: auto;
        min-height: 400px;
    }

    /* 技术服务 / 关于：固定高度改自适应 */
    .m-jsfw {
        height: auto;
        padding: 40px 0;
    }

    .m-jsfw .m-jsfw-bg {
        padding-top: 0;
    }

    .ak-bg {
        height: auto;
        padding-top: 35px;
        padding-bottom: 35px;
    }

    /* 新闻卡片：一行三张改弹性 */
    .m-news-item {
        width: calc(33.33% - 14px);
        height: auto;
    }

    .m-news-img {
        width: 100%;
        height: auto;
        aspect-ratio: 285 / 180;
    }

    .m-news-img img {
        min-height: 0;
        height: 100%;
        object-fit: cover;
    }

    /* 列表页图文卡 */
    .m-list-img {
        width: 45%;
        height: auto;
    }

    .m-list-img img {
        height: 100%;
        object-fit: cover;
    }

    /* 商品网格 4 列 → 3 列 */
    .product-list {
        grid-template-columns: repeat(3, 1fr);
        gap: 15px;
    }

    .product-item {
        width: auto;
        height: auto;
    }

    .product-item-img {
        height: auto;
        aspect-ratio: 1 / 1;
    }

    .product-item-img img {
        height: auto;
        max-height: 100%;
        object-fit: contain;
    }

    /* 碎片里的定宽大图（如 banner 1920px）不撑破页面 */
    img {
        max-width: 100%;
    }

    .frag p,
    .frag img,
    .container img,
    .article-cont img,
    .product-detail-content img {
        max-width: 100%;
    }

    .frag p img {
        height: auto;
    }

    /* 首屏/关于 板块的背景图碎片（绝对定位 + 1920px 原图）已在桌面段统一
       改为「居中 + 铺满 + cover 裁剪」，移动端不再需要单独覆盖，避免两套规则打架 */

    /* 碎片里带 width/height 属性的 banner 图：宽度收进容器后高度必须按比例走，
       否则保留 height 属性值会把图拉变形（cpzx.jpg 1920x327 被拉成 390x327） */
    .container img {
        width: 100%;
        height: auto;
    }
}

/* ---------- 2. 平板竖屏（≤900px） ---------- */
@media (max-width: 900px) {
    .m-news-item {
        width: calc(50% - 10px);
        margin-bottom: 20px;
    }

    .m-news-item + .m-news-item {
        margin-top: 0;
    }

    .product-list {
        grid-template-columns: repeat(2, 1fr);
    }

    /* 文章详情：正文与侧栏上下排列 */
    .article-news .main > article,
    .main.w-1200.row > aside {
        width: 100%;
        flex: 1 1 100%;
    }

    .aside-index {
        width: 100%;
    }

    /* 首页解决方案：工厂图收到下方 */
    .m-jjfa {
        flex-direction: column;
    }

    .m-jjfa > div:first-child {
        width: 100%;
        padding-right: 0;
    }

    .m-jjfa > .m-gongchang {
        width: 100%;
        min-height: 260px;
        margin-top: 8px;
    }
}

/* ---------- 3. 手机（≤768px） ---------- */
@media (max-width: 768px) {
    body {
        font-size: 13px;
        /* 抽屉导航在屏幕外，会撑出横向滚动；锁在 body 上不影响 sticky 头 */
        overflow-x: hidden;
    }

    /* --- 头部：Logo + 电话 + 汉堡 --- */
    .header-wrap {
        height: auto;
        position: sticky;
        top: 0;
        /* 关键：backdrop-filter 会让本元素成为 fixed 子元素的包含块，
           抽屉导航会退化成「只有头部高度」的一条，看起来像导航消失 */
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        background-color: var(--c-white);
    }

    .header {
        flex-wrap: nowrap;
        align-items: center;
        justify-content: space-between;
        padding: 8px 12px;
        gap: 6px;
        max-width: 100%;
    }

    .logo {
        width: 46px;
        height: 45px;
        background-size: 46px 45px;
        flex-shrink: 0;
    }

    .header-wrap .tel {
        font-size: 13px;
        line-height: 1.3;
        margin-left: 0;
        text-align: right;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        flex: 1 1 auto;
        min-width: 0;
    }

    .header-wrap .tel .frag p {
        display: inline;
    }

    .lang-switch {
        margin: 0 !important;
        font-size: 12px;
        flex-shrink: 0;
    }

    /* 汉堡按钮 */
    .nav-toggle {
        display: flex;
        flex-direction: column;
        justify-content: center;
        gap: 5px;
        width: 38px;
        height: 38px;
        padding: 0 7px;
        background: transparent;
        cursor: pointer;
        flex-shrink: 0;
        order: 9;
    }

    .nav-toggle span {
        display: block;
        width: 100%;
        height: 2px;
        background-color: #262626;
        border-radius: 2px;
        transition: transform 0.25s ease, opacity 0.2s ease;
    }

    .nav-toggle.on span:nth-child(1) {
        transform: translateY(7px) rotate(45deg);
    }

    .nav-toggle.on span:nth-child(2) {
        opacity: 0;
    }

    .nav-toggle.on span:nth-child(3) {
        transform: translateY(-7px) rotate(-45deg);
    }

    /* 导航改右侧抽屉 */
    .header-wrap .nav {
        position: fixed;
        top: 0;
        right: 0;
        bottom: 0;
        width: 78%;
        max-width: 320px;
        padding: 62px 0 24px;
        background-color: var(--c-white);
        box-shadow: -6px 0 24px rgba(0, 0, 0, 0.14);
        transform: translateX(105%);
        transition: transform 0.28s ease;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        z-index: 120;
    }

    .header-wrap .nav.open {
        transform: translateX(0);
    }

    .header-wrap .nav > ul {
        flex-direction: column;
        padding: 0 14px;
    }

    .header-wrap .nav-item {
        width: 100%;
        height: auto;
        line-height: 1.5;
        padding: 12px 2px;
        border-bottom: 1px solid var(--c-line);
        position: static;
    }

    .header-wrap .nav-item > a {
        font-size: 16px;
        padding: 0;
    }

    .header-wrap .nav-item.active::after {
        display: none;
    }

    /* 二级菜单：抽屉内直接展开，去掉 hover 浮层 */
    .header-wrap .sub-nav {
        position: static;
        display: block;
        width: 100%;
        margin-top: 6px;
        padding: 0 0 0 12px;
        background-color: transparent;
        box-shadow: none;
        border-radius: 0;
        backdrop-filter: none;
    }

    .header-wrap .sub-nav::before {
        display: none;
    }

    /* 二级菜单：抽屉内直接展开，去掉 hover 浮层。
       左侧那条灰竖线（border-left）在移动端显得像装饰性虚线，用户明确要求去掉，
       只靠缩进体现层级 */
    .header-wrap .sub-nav-item {
        padding: 8px 0 8px 14px;
        border-left: 0;
        margin-bottom: 0;
    }

    .header-wrap .sub-nav-item a {
        font-size: 14px;
        color: #555;
    }

    .nav-mask {
        position: fixed;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        background-color: rgba(0, 0, 0, 0.45);
        z-index: 110;
        display: none;
    }

    body.nav-open .nav-mask {
        display: block;
    }

    body.nav-open {
        overflow: hidden;
    }

    /* --- 首页 --- */
    .m-title {
        font-size: 21px;
        line-height: 1.5;
    }

    .m-description {
        font-size: 13px;
        line-height: 1.7;
    }

    /* 碎片文案里的手工 <br> 在窄屏会造成“一句一行 + 二次折行”，改为自然流 */
    .m-description br {
        display: none;
    }

    .m-jjfa {
        gap: 8px !important;
    }

    .m-xiaoyuan,
    .m-yuanqu,
    .m-yanglao {
        width: 100%;
        height: 180px;
    }

    .m-jjfa .row.mt-5 {
        gap: 8px;
    }

    /* 老模板给园区图挂了 mr-5，叠加 gap 会超出 100% 导致换行 */
    .m-yuanqu.mr-5 {
        margin-right: 0;
    }

    .m-yuanqu,
    .m-yanglao {
        width: calc(50% - 4px);
    }

    .m-jjfa > .m-gongchang {
        min-height: 200px;
    }

    .m-h4 {
        min-width: 0;
        padding: 0 12px;
        height: 40px;
        line-height: 40px;
        font-size: 14px;
        bottom: 12px;
        left: 0;
    }

    .m-jsfw {
        padding: 28px 15px;
    }

    .m-jsfw-bg {
        padding-top: 0 !important;
    }

    .m-btn-more {
        width: 170px;
        height: 44px;
        line-height: 44px;
        font-size: 13px;
    }

    /* 新闻 */
    .m-news-item {
        width: 100%;
        margin-bottom: 16px;
        height: auto;
    }

    .m-news-img {
        width: 100%;
        height: auto;
        aspect-ratio: 285 / 160;
    }

    .m-tab-th {
        font-size: 13px;
        flex-wrap: wrap;
        gap: 4px;
    }

    .m-new-more {
        width: 110px;
        height: 32px;
        line-height: 32px;
    }

    /* 关于 */
    .ak-bg {
        padding-top: 24px;
        padding-bottom: 24px;
    }

    .ak-bg .f-30 {
        font-size: 22px;
    }

    .btn-about-more {
        width: 180px;
        height: 44px;
        line-height: 44px;
        font-size: 13px;
    }

    .about-item {
        min-width: 0;
        flex: 1 1 100%;
        height: auto;
        padding: 10px 12px;
        margin-bottom: 10px;
    }

    /* --- 列表页（图文卡） --- */
    .w-1200.pb-20,
    .main.w-1200 {
        padding-left: 12px;
        padding-right: 12px;
    }

    .bg-fff.pl-25.pr-25.pb-25,
    .bg-fff.radius-6.pd-25 {
        padding-left: 14px;
        padding-right: 14px;
    }

    .m-list-item {
        flex-direction: column;
        padding: 0;
        border-radius: 14px;
    }

    .m-list-img {
        width: 100%;
        height: auto;
        min-height: 0;
        aspect-ratio: 415 / 240;
    }

    /* 文案区：底部只留 6px 让「了解更多」几乎贴着卡片下沿；且 justify-content:center
       在内容超高时会把顶部标题顶出裁剪区。改 flex-start + 20px 底部呼吸 */
    .m-list-des {
        padding: 18px 18px 20px;
        width: 100%;
        justify-content: flex-start;
    }

    .m-list-title {
        font-size: 17px;
        margin-bottom: 10px;
    }

    .m-list-info {
        font-size: 13px;
        line-height: 1.85;
        margin-bottom: 18px;
    }

    .m-list-btn-more {
        height: 38px;
        padding: 0 22px;
        font-size: 13px;
    }

    .thumb-120 {
        min-width: 92px;
        max-width: 108px;
        max-height: 82px;
        margin-right: 10px;
    }

    .list h3.f-18 {
        font-size: 15px;
    }

    .list p.f-14 {
        font-size: 13px;
    }

    /* 文章详情 */
    .article-cont {
        font-size: 15px !important;
        line-height: 1.8;
        overflow-wrap: break-word;
        word-break: break-word;
    }

    .article-cont table {
        display: block;
        width: 100%;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .article-cont img {
        height: auto !important;
    }

    .f-26 {
        font-size: 20px !important;
    }

    /* 面包屑 */
    .bg-fff.pd-15.mb-1 {
        font-size: 12px;
        padding: 10px 12px;
        line-height: 1.7;
    }

    /* 文章侧栏「推荐图文」：老结构是 figure 左图右文，
       .thumb 无固定宽 → 图片吃掉近一半宽度，标题被挤成 4 字一行。
       移动端统一改成「上图下文」 */
    .notices figure.row {
        flex-direction: column;
        align-items: stretch;
        padding-bottom: 14px;
        margin-bottom: 14px;
        border-bottom: 1px dashed var(--c-line);
    }

    .notices figure.row:last-child {
        margin-bottom: 0;
        padding-bottom: 0;
        border-bottom: none;
    }

    .notices .thumb {
        width: 100%;
        margin-bottom: 10px;
    }

    .notices .thumb img {
        width: 100%;
        height: auto;
        border-radius: 4px;
    }

    .notices figcaption {
        font-size: 15px;
        line-height: 1.55;
        margin-top: 0;
    }

    .notices .m-aside-title,
    .notices .m-title {
        font-size: 15px;
    }

    /* 分页：float 换行后会左对齐，移动端改 flex 居中折行 */
    .page ul {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        gap: 6px;
        float: none;
    }

    .page ul>a,
    .page ul>span,
    .page ul li,
    .page ul li.disabled {
        float: none;
        height: 32px;
        line-height: 30px;
        padding: 0 10px;
        font-size: 13px;
        margin-right: 0;
    }

    .page ul li a {
        height: 30px;
        line-height: 30px;
        padding: 0;
    }

    /* --- 商品列表 --- */
    .product-menu {
        width: 100%;
        height: auto;
        /* 桌面段为「分类项变多不溢出」加了 min-height:285px，移动端是横向单行滚动条，
           必须清零，否则会撑出一个 285px 的空白灰块 */
        min-height: 0;
        margin-right: 0;
        margin-bottom: 15px;
        border: none;
        border-radius: 0;
        background-color: transparent;
        padding: 0;
        box-shadow: none;
        position: static;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        /* 隐藏原生横向滚动条（iOS/安卓上是一条很粗的灰条），滑动仍可用 */
        scrollbar-width: none;
        -ms-overflow-style: none;
    }

    .product-menu::-webkit-scrollbar {
        display: none;
        width: 0;
        height: 0;
    }

    .product-menu ul {
        display: flex;
        flex-wrap: nowrap;
        gap: 8px;
        padding: 0;
    }

    .product-menu a {
        height: auto;
        line-height: 1.4;
        padding: 9px 16px;
        white-space: nowrap;
        border: 1px solid var(--c-line);
        border-radius: 999px;
        background-color: var(--c-white);
        font-size: 13px;
        text-align: center;
    }

    .product-menu li {
        margin-bottom: 0;
    }

    .product-menu li.active a {
        border-color: var(--c-brand);
        box-shadow: none;
    }

    .product-menu li.active a::after {
        content: '';
    }

    /* 侧栏变成 100% 宽的横向标签后，内容区 flex:1（basis 0）会被挤成 0 宽 → 卡片塌成 2px。
       这里强制它独占一行 */
    .product-container {
        flex: 1 1 100%;
        width: 100%;
    }

    .product-list {
        grid-template-columns: repeat(2, 1fr);
        gap: 10px;
    }

    .product-item {
        padding: 0 0 12px;
        border-radius: 14px;
    }

    .product-item h3 {
        font-size: 13px;
        line-height: 1.4;
        margin: 0 10px;
    }

    /* --- 商品详情 --- */
    .product-detail-info {
        flex-direction: column;
    }

    /* 桌面段是 28px 内边距，手机上会把正文压得太窄 */
    .product-detail {
        padding: 16px 14px;
    }

    .product-img {
        width: 100%;
        height: auto;
        max-height: 300px;
        margin-right: 0;
        margin-bottom: 16px;
    }

    .product-img img {
        height: auto;
        max-height: 300px;
        object-fit: contain;
    }

    .product-title {
        font-size: 22px;
        line-height: 1.4;
    }

    .product-name,
    .product-no {
        font-size: 14px !important;
    }

    /* 桌面段把蓝色热线块的内边距放在容器上，移动端字号变小改由 <a> 撑开，避免双层内边距 */
    .product-contact {
        margin-top: 24px;
        padding: 0;
        border-radius: 10px;
    }

    .product-contact a {
        padding: 12px 16px;
        font-size: 15px;
        line-height: 1.5;
    }

    .product-detail-title {
        font-size: 16px;
        margin-bottom: 24px;
    }

    .product-detail-content,
    .product-detail-content p {
        font-size: 15px;
        line-height: 1.8;
    }

    .product-detail-content img {
        height: auto !important;
    }

    .bg-fff.pb-25.radius-6.list.row {
        padding: 12px;
    }

    /* --- 留言 / 单页 --- */
    .message {
        padding: 14px !important;
    }

    .message-item {
        width: 100%;
        margin-bottom: 10px;
    }

    .message label {
        width: 100%;
        height: 44px;
        line-height: 44px;
        font-size: 15px;
        border-radius: 4px 4px 0 0;
    }

    .message .col-9 {
        margin-left: 0 !important;
        width: 100%;
    }

    .message .textarea {
        height: 100px;
        padding: 10px !important;
    }

    .btn-ok {
        width: 100%;
        height: 44px;
        line-height: 44px;
        font-size: 15px;
    }

    /* --- 页脚 --- */
    .footer {
        padding-left: 14px;
        padding-right: 14px;
        max-width: 100%;
    }

    .footer .row.justify-around {
        flex-direction: column;
        gap: 6px;
    }

    .footer .f-15,
    .footer .f-14,
    .footer .f-13 {
        font-size: 12px;
        line-height: 1.9;
    }

    /* 返回顶部 */
    .backtop {
        bottom: 82px;
        right: 12px;
        width: 36px;
        height: 36px;
    }
}

/* 超小屏（≤380px）进一步收敛 */
@media (max-width: 380px) {
    .header-wrap .tel {
        font-size: 12px;
    }

    .m-yuanqu,
    .m-yanglao {
        width: 100%;
    }

    .product-list {
        gap: 8px;
    }
}