/********** Template CSS **********/
:root {
    --primary: #00AEFF;
    --light: #E9F8FF;
    --dark: #181d38;
    /* 与 body 字体栈一致；中文为思源黑体 Noto Sans SC（各页 Google Fonts 已请求 wght@400–900，与现有 font-weight 一致） */
    --bs-font-sans-serif: "Heebo", "Noto Sans SC", "Source Han Sans SC", "Source Han Sans CN", "PingFang SC", sans-serif;
}

/*** 全站中文：思源黑体 Noto Sans SC（Google Fonts）；拉丁文仍优先 Heebo / Nunito。未改 font-weight / .fw-* / Bootstrap 标题字重 ***/
body {
    font-family: "Heebo", "Noto Sans SC", "Source Han Sans SC", "Source Han Sans CN", "PingFang SC", sans-serif;
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6,
.display-1, .display-2, .display-3, .display-4, .display-5, .display-6 {
    font-family: "Nunito", "Noto Sans SC", "Source Han Sans SC", "Source Han Sans CN", "PingFang SC", sans-serif;
}

.fw-medium {
    font-weight: 600 !important;
}

.fw-semi-bold {
    font-weight: 700 !important;
}

.back-to-top {
    position: fixed;
    display: none;
    right: 45px;
    bottom: 105px;
    z-index: 99;
}

/*** 浮动在线客服（首页右下角，位于返回顶部之下） ***/
.float-customer-service {
    position: fixed;
    display: flex;
    right: 45px;
    bottom: 45px;
    z-index: 98;
}

.brand-service-item {
    border-left: 4px solid var(--primary);
}

.brand-case-card {
    transition: transform .25s ease, box-shadow .25s ease;
}

.brand-case-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 24px rgba(24, 29, 56, .12) !important;
}

.brand-partner-cell img {
    filter: grayscale(10%);
}

.float-customer-service:hover {
    filter: brightness(1.05);
}


/*** Spinner ***/
#spinner {
    opacity: 0;
    visibility: hidden;
    transition: opacity .5s ease-out, visibility 0s linear .5s;
    z-index: 99999;
}

#spinner.show {
    transition: opacity .5s ease-out, visibility 0s linear 0s;
    visibility: visible;
    opacity: 1;
}


/*** Button ***/
.btn {
    font-family: "Nunito", "Noto Sans SC", "Source Han Sans SC", "Source Han Sans CN", "PingFang SC", sans-serif;
    font-weight: 600;
    transition: .5s;
}

.btn.btn-primary,
.btn.btn-secondary {
    color: #FFFFFF;
}

.btn-square {
    width: 38px;
    height: 38px;
}

.btn-sm-square {
    width: 32px;
    height: 32px;
}

.btn-lg-square {
    width: 48px;
    height: 48px;
}

.btn-square,
.btn-sm-square,
.btn-lg-square {
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: normal;
    border-radius: 0px;
}

/* 首页大模块间距 */
.page-index .index-section {
    padding-top: 4.5rem;
    padding-bottom: 4.5rem;
}

@media (min-width: 768px) {
    .page-index .index-section {
        padding-top: 5.5rem;
        padding-bottom: 5.5rem;
    }
}

/*
 * 首页 index（body.page-index）：统一圆角变量
 * 适用于卡片、媒体框、表单、浮动按钮等；不含首屏 banner、.navbar*、#spinner
 */
.page-index {
    --index-surface-radius: 14px;
    --index-surface-radius-sm: 10px;
}

.page-index .service-item {
    border-radius: var(--index-surface-radius);
    overflow: hidden;
}

/* 四大保障：悬停上移时不裁切内容 */
.page-index .guarantee-cards-row .service-item {
    overflow: visible;
    box-shadow: none !important;
}

.page-index .about-video-frame {
    border-radius: var(--index-surface-radius) !important;
}

.page-index .campus-cases-section .campus-case-media {
    border-radius: var(--index-surface-radius);
}

.page-index .campus-cases-section .campus-case-caption {
    /* 左上、右下保留圆角；右上、左下为 0，与卡片体系统一又略不对称 */
    border-radius: var(--index-surface-radius-sm) 0 var(--index-surface-radius-sm) 0;
}

.page-index .course-item,
.page-index .team-item {
    border-radius: var(--index-surface-radius);
    overflow: hidden;
}

.page-index .team-item .position-relative > .bg-light {
    border-radius: var(--index-surface-radius-sm);
}

.page-index .testimonial-text {
    border-radius: var(--index-surface-radius);
}

.page-index .testimonial-carousel .owl-dot {
    border-radius: 999px;
}

.page-index .footer .row.g-2 .col-4 img.img-fluid {
    border-radius: var(--index-surface-radius-sm);
}

.page-index .footer .form-control {
    border-radius: var(--index-surface-radius);
}

.page-index .float-customer-service,
.page-index .back-to-top {
    border-radius: var(--index-surface-radius) !important;
}

/* 首页内容区按钮圆角（与表面 token 一致；不含导航栏内按钮） */
.page-index .header-carousel .btn.btn-primary,
.page-index .header-carousel .btn.btn-light {
    border-radius: var(--index-surface-radius);
}

/* Banner CTA：等宽按钮 + 统一间距（移动端以最长文案定宽；≥lg 三列均分整行） */
.hero-one-screen__banner .header-carousel__cta-group {
    display: grid;
    gap: 1rem;
    width: 100%;
    margin-left: auto;
    margin-right: auto;
}

@media (max-width: 991.98px) {
    .hero-one-screen__banner .header-carousel__cta-group {
        grid-template-columns: minmax(0, 1fr);
        margin-left: auto;
        margin-right: auto;
    }

    .hero-one-screen__banner .banner-copy > .header-carousel__cta-group {
        width: calc(100% + 2ch);
        max-width: calc(100% + 2ch);
    }

    .hero-one-screen__banner .header-carousel__cta-group .btn {
        width: 100%;
        justify-self: stretch;
        text-align: center;
    }
}

@media (min-width: 992px) {
    .hero-one-screen__banner .header-carousel__cta-group {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        align-items: stretch;
    }

    .hero-one-screen__banner .header-carousel__cta-group .btn {
        text-align: center;
        white-space: normal;
    }
}

.page-index .about-text-col > .btn {
    border-radius: var(--index-surface-radius);
}

.page-index .course-item .btn:not(.btn-sm-square):not(.btn-lg-square):not(.btn-square) {
    border-radius: var(--index-surface-radius);
}

.page-index .team-item .btn.btn-sm-square {
    border-radius: var(--index-surface-radius-sm) !important;
}

.page-index .footer .btn.btn-social {
    border-radius: var(--index-surface-radius-sm) !important;
}

.page-index .footer .position-relative .btn.btn-primary {
    border-radius: var(--index-surface-radius-sm);
}


/*** 全站顶栏（主导航上方，浅灰底 + 主题蓝图标；无底边彩色线，避免蓝条/阴影感） ***/
.site-topbar {
    background: var(--light);
    border-top: none;
    border-bottom: none;
    box-shadow: none;
    display: flex;
    align-items: stretch;
    /* 顶栏总高度约为原设计的 85%（减小 15%），与内层 py-2 缩放一致 */
    min-height: calc(3.25rem * 0.85);
}

.site-topbar .site-topbar__text {
    font-size: 0.875rem;
    line-height: 1.6;
    color: #666666;
}

.site-topbar .site-topbar__icon {
    flex-shrink: 0;
    width: 1.125rem;
    text-align: center;
    color: var(--primary);
    font-size: 0.875rem;
}

.site-topbar .site-topbar__icon.fab {
    font-weight: 400;
}

.site-topbar .site-topbar__sep {
    color: rgba(24, 29, 56, 0.2);
    font-size: 0.875rem;
    user-select: none;
}

/* 顶栏联系热线、微信账号：可点击，默认与旁路文案同色，悬停为主题蓝 */
.site-topbar a.site-topbar__text {
    color: #666666;
    text-decoration: none;
    transition: color 0.2s ease;
}

.site-topbar a.site-topbar__text:hover,
.site-topbar a.site-topbar__text:focus-visible {
    color: var(--primary);
}

.site-topbar .site-topbar__item {
    min-width: 0;
}

/* 顶栏单行固定高度：不折行；< md 仅显示热线 + 微信号 */
.site-topbar > .container-xxl.site-shell-header,
.site-topbar > .container {
    display: flex;
    align-items: center;
    flex: 1 1 auto;
    width: 100%;
    /* 覆盖 Bootstrap .py-2，与顶栏 min-height 同比例缩小，各页 HTML 不变也一致 */
    padding-top: calc(0.5rem * 0.85) !important;
    padding-bottom: calc(0.5rem * 0.85) !important;
}

.site-topbar__inner {
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

/* 强制统一：确保所有页面（包含 contact 页）顶栏与主导航在高度/内边距上保持一致 */
.site-topbar {
    min-height: calc(3.25rem * 0.85) !important;
    box-shadow: none !important;
}

.site-topbar .site-topbar__text {
    font-size: 0.875rem !important;
    line-height: 1.6 !important;
}

.navbar-light .navbar-brand {
    height: 75px !important;
    max-height: 75px !important;
}

.navbar-light .navbar-nav .nav-link {
    padding: 0.5rem 1rem !important;
    vertical-align: middle !important;
}

@media (max-width: 991.98px) {
    .navbar-light .navbar-nav .nav-link {
        padding: 10px 0 !important;
    }
}

.site-topbar__inner::-webkit-scrollbar {
    height: 0;
}

.site-topbar__left {
    flex: 1 1 auto;
    min-width: 0;
}

@media (min-width: 768px) {
    .site-topbar__left {
        flex: 0 1 auto;
    }
}

.site-topbar__item--address .site-topbar__text {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: min(50vw, 36rem);
}

@media (min-width: 1200px) {
    .site-topbar__item--address .site-topbar__text {
        max-width: none;
        white-space: normal;
    }
}

@media (max-width: 767.98px) {
    .site-topbar .site-topbar__text {
        font-size: 0.8125rem;
    }
}

/* 顶栏 + 主导航：与正文同用 container-xxl 版心；水平留白略小于正文区（每侧少 4px），仍与页面边缘保持安全距离 */
.container-xxl.site-shell-header {
    padding-left: calc(var(--bs-gutter-x, 1.5rem) * 0.5 - 0.25rem) !important;
    padding-right: calc(var(--bs-gutter-x, 1.5rem) * 0.5 - 0.25rem) !important;
}

.navbar.navbar-expand-lg > .container-xxl.site-shell-header,
.site-topbar .container-xxl.site-shell-header {
    --site-nav-edge-shrink: 120px; /* 左右各相对默认版心向视口扩 120px；顶栏与 Tab 栏同宽对齐 */
}

.navbar.navbar-expand-lg > .container-xxl.site-shell-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
}

@media (min-width: 576px) {
    .navbar.navbar-expand-lg > .container-xxl.site-shell-header,
    .site-topbar .container-xxl.site-shell-header {
        max-width: min(calc(540px + 2 * var(--site-nav-edge-shrink)), calc(100vw - 1rem)) !important;
    }
}

@media (min-width: 768px) {
    .navbar.navbar-expand-lg > .container-xxl.site-shell-header,
    .site-topbar .container-xxl.site-shell-header {
        max-width: min(calc(720px + 2 * var(--site-nav-edge-shrink)), calc(100vw - 1rem)) !important;
    }
}

@media (min-width: 992px) {
    .navbar.navbar-expand-lg > .container-xxl.site-shell-header,
    .site-topbar .container-xxl.site-shell-header {
        max-width: min(calc(960px + 2 * var(--site-nav-edge-shrink)), calc(100vw - 1rem)) !important;
    }
}

@media (min-width: 1200px) {
    .navbar.navbar-expand-lg > .container-xxl.site-shell-header,
    .site-topbar .container-xxl.site-shell-header {
        max-width: min(calc(1140px + 2 * var(--site-nav-edge-shrink)), calc(100vw - 1rem)) !important;
    }
}

@media (min-width: 1400px) {
    .navbar.navbar-expand-lg > .container-xxl.site-shell-header,
    .site-topbar .container-xxl.site-shell-header {
        max-width: min(calc(1320px + 2 * var(--site-nav-edge-shrink)), calc(100vw - 1rem)) !important;
    }
}

/* 顶栏与主导航紧贴：去掉紧挨顶栏的导航条 Bootstrap .shadow，避免投影模糊上溢在浅蓝顶栏与白底 Tab 之间形成阴影带 */
.site-topbar + nav.navbar.shadow {
    box-shadow: none !important;
}

/* 页面下滑后：主导航底缘浅浅阴影，与下方内容区分（由 main.js 添加 .navbar--scrolled） */
nav.navbar.navbar-expand-lg.shadow.sticky-top {
    transition: box-shadow 0.28s ease;
}

.site-topbar + nav.navbar.shadow.navbar--scrolled {
    box-shadow: 0 5px 16px -3px rgba(24, 29, 56, 0.1) !important;
}


/*** Navbar ***/
.navbar .dropdown-toggle::after {
    border: none;
    content: "\f107";
    font-family: "Font Awesome 5 Free";
    font-weight: 900;
    vertical-align: middle;
    margin-left: 8px;
}

.navbar-light .navbar-nav .nav-link {
    margin-right: 30px;
    padding: 25px 0;
    color: #FFFFFF;
    font-size: 15px;
    text-transform: uppercase;
    outline: none;
}

.navbar-light .navbar-nav .nav-link:hover {
    color: var(--primary);
}

@media (max-width: 991.98px) {
    .navbar-light .navbar-nav .nav-link  {
        margin-right: 0;
        padding: 10px 0;
    }

    .navbar-light .navbar-nav {
        border-top: 1px solid #EEEEEE;
    }
}

.navbar-light .navbar-brand {
    height: 75px;
}

.navbar-light .navbar-nav .nav-link {
    color: var(--dark);
    font-weight: 500;
}

/* 主导航：选中与悬停/未选同高；圆角略大于上一版 */
@media (min-width: 992px) {
    .navbar-expand-lg.navbar-light .navbar-collapse {
        align-items: center;
    }

    .navbar-light .navbar-nav {
        align-items: center;
        column-gap: 0.75rem;
        row-gap: 0.35rem;
    }

    .navbar-light .navbar-nav .nav-link {
        margin-right: 0;
        padding: 0.5rem 1rem;
        border-radius: 12px;
        transition: background-color 0.2s ease, color 0.2s ease, border-radius 0.2s ease;
    }

    .navbar-light .navbar-nav .nav-link:hover:not(.active) {
        color: var(--primary);
        background-color: rgba(0, 174, 255, 0.1);
    }

    .navbar-light .navbar-nav .nav-link.active {
        padding: 0.5rem 1rem;
        border-radius: 10px;
        background-color: var(--primary);
        color: #fff !important;
        font-weight: 600;
    }

    .navbar-light .navbar-nav .nav-link.active:hover {
        color: #fff !important;
        filter: brightness(1.06);
    }
}

@media (max-width: 991.98px) {
    /* 折叠菜单容器铺到屏幕两边：抵消 .container-xxl.site-shell-header 的 0.5rem 内边距，
       这样链接只需填满容器、不再溢出，展开动画的 overflow:hidden 就不会裁掉蓝条 */
    #navbarCollapse {
        margin-left: -0.5rem;
        margin-right: -0.5rem;
    }

    .navbar-light .navbar-nav {
        row-gap: 0.35rem;
        padding-left: 0 !important;                   /* 去掉 p-4 的左右内边距，让 nav 满宽 */
        padding-right: 0 !important;
    }

    .navbar-light .navbar-nav .nav-link {
        display: block;                               /* 块级，整行可点击 */
        width: 100%;                                  /* 填满容器，不溢出（避免被裁） */
        margin: 0;
        padding: 0.5rem 1.5rem !important;            /* 文字缩进；!important 覆盖前面 10px 0 的旧规则 */
        border-radius: 0;                             /* 贴边取消圆角 */
        transition: background-color 0.2s ease, color 0.2s ease;
    }

    .navbar-light .navbar-nav .nav-link:hover:not(.active) {
        color: var(--primary);
        background-color: rgba(0, 174, 255, 0.08);
    }

    .navbar-light .navbar-nav .nav-link.active {
        background-color: var(--primary);
        color: #fff !important;              /* 文字白色，显示在蓝色背景之上 */
        font-weight: 600;
    }
}

.navbar-light.sticky-top {
    top: -100px;
    transition: .5s;
}

@media (min-width: 992px) {
    .navbar .nav-item .dropdown-menu {
        display: block;
        margin-top: 0;
        opacity: 0;
        visibility: hidden;
        transition: .5s;
    }

    .navbar .dropdown-menu.fade-down {
        top: 100%;
        transform: rotateX(-75deg);
        transform-origin: 0% 0%;
    }

    .navbar .nav-item:hover .dropdown-menu {
        top: 100%;
        transform: rotateX(0deg);
        visibility: visible;
        transition: .5s;
        opacity: 1;
    }
}


/*** 首页首屏 Banner 区：高度 = 一屏减去顶栏与主导航（顶栏、Tab 不在此容器内，避免 sticky 随首屏整块滚走） ***/
body.page-index .index-first-screen {
    height: calc(100vh - var(--index-chrome-topbar, 3.25rem) - var(--index-chrome-navbar, 4.75rem));
    height: calc(100dvh - var(--index-chrome-topbar, 3.25rem) - var(--index-chrome-navbar, 4.75rem));
    height: calc(100svh - var(--index-chrome-topbar, 3.25rem) - var(--index-chrome-navbar, 4.75rem));
    min-height: 220px;
    display: flex;
    flex-direction: column;
}

body.page-index .index-first-screen > .hero-one-screen {
    flex: 1 1 auto;
    min-height: 0;
    height: auto !important;
}

.hero-one-screen {
    display: flex;
    flex-direction: column;
}

.hero-one-screen__banner {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.hero-one-screen__banner > .container-fluid {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.hero-one-screen .header-carousel {
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
}

.hero-one-screen .header-carousel .owl-stage-outer {
    height: 100% !important;
}

.hero-one-screen .header-carousel .owl-stage,
.hero-one-screen .header-carousel .owl-item {
    height: 100%;
}

.hero-one-screen .owl-carousel-item {
    height: 100%;
    min-height: 0 !important;
    position: relative;
}

.hero-one-screen .owl-carousel-item > img.img-fluid {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}

.hero-one-screen .owl-carousel-item > .position-absolute {
    z-index: 1;
    display: flex !important;
    align-items: center;
    justify-content: center;
    width: 100%;
    left: 0;
    right: 0;
}

/* Banner：与全站同宽的 container-xxl，文案块页面水平居中 */
.hero-one-screen__banner .owl-carousel-item .position-absolute > .container-xxl {
    flex: 0 0 100%;
    width: 100%;
    max-width: 100%;
    margin-left: auto;
    margin-right: auto;
}

.hero-one-screen__banner .owl-carousel-item .container .row {
    justify-content: center;
}

.hero-one-screen__banner .owl-carousel-item [class*="col-"] {
    display: flex;
    flex-direction: column;
    align-items: center;
    overflow: visible;
}

/* 文案块：子项统一 +2ch 有效宽度，列内 flex 居中（勿用 padding 抵消 +2ch） */
.hero-one-screen__banner .banner-copy {
    width: 100%;
    max-width: 100%;
    margin-left: auto;
    margin-right: auto;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    overflow: visible;
}

.hero-one-screen__banner .banner-copy > h5.text-primary,
.hero-one-screen__banner .banner-copy > p.fs-5,
.hero-one-screen__banner .banner-copy > .header-carousel__cta-group,
.hero-one-screen__banner .banner-copy h1.display-3 {
    width: calc(100% + 2ch);
    max-width: calc(100% + 2ch);
    text-align: center;
    box-sizing: border-box;
    flex-shrink: 0;
    align-self: center;
}

.hero-one-screen__banner .banner-copy > h5.text-primary {
    margin-bottom: 0.8rem !important;
}

.hero-one-screen__banner .banner-copy > p.fs-5 {
    margin-bottom: 1rem !important;
    padding-bottom: 0 !important;
}

.hero-one-screen__banner .banner-copy h1.display-3,
.hero-one-screen__banner .header-carousel h1.display-3 {
    width: calc(100% + 2ch);
    max-width: calc(100% + 2ch);
    display: block;
    margin-bottom: 0.8rem;
    line-height: 1.6;
    text-align: center;
}

@media (max-width: 991.98px) {
    .hero-one-screen__banner .banner-copy h1.display-3,
    .hero-one-screen__banner .header-carousel h1.display-3 {
        width: calc(100% + 2ch);
        max-width: calc(100% + 2ch);
        align-self: center;
    }
}

/* =============================================================================
   【About 模块】智慧校园洗涤新生态 — 左侧响应式视频区
   与页面风格统一：使用模板 CSS 变量 --primary / --light / --dark
   ============================================================================= */

/*
 * 【Flex 等高布局】
 * Bootstrap 5 的 .row 已为 flex；显式 align-items-stretch 确保
 * 「视频列」与「文案列」在桌面端上下对齐、同高。
 */
.about-about-row {
    align-items: stretch;
}

/* 【视频区域】列容器 */
.about-video-col {
    min-width: 0;
    min-height: 300px;
}

@media (max-width: 991.98px) {
    /* 竖向堆叠：取消大 min-height，避免外列撑出空白 */
    .about-video-col {
        min-height: 0;
        align-self: flex-start;
    }

    .about-video-frame {
        min-height: 0;
    }
}

/*
 * 【视频可视外框】
 * - 具体宽高由 JS 写入；桌面端高度与右侧文案列一致
 * - 圆角由内层 .about-video-inner overflow 裁剪
 * - 上/下渐变：对称、柔和，pointer-events:none，不拦截原生 controls
 */
.about-video-frame {
    min-height: 0;
    width: 100%;
    background: #fff;
    border: none;
    overflow: hidden;
}

@media (min-width: 992px) {
    .about-video-frame {
        min-height: 260px;
    }
}

.about-video-inner {
    position: relative;
    z-index: 1;
    min-width: 0;
    min-height: 0;
    border-radius: inherit;
    overflow: hidden;
}

.about-video-shade {
    position: absolute;
    left: 0;
    right: 0;
    height: 38%;
    z-index: 2;
    pointer-events: none;
    border-radius: inherit;
}

.about-video-shade--top {
    top: 0;
    background: linear-gradient(to bottom, rgba(0, 0, 0, 0.48) 0%, rgba(0, 0, 0, 0.12) 40%, transparent 100%);
}

.about-video-shade--bottom {
    bottom: 0;
    background: linear-gradient(to top, rgba(0, 0, 0, 0.48) 0%, rgba(0, 0, 0, 0.12) 40%, transparent 100%);
}

@media (max-width: 991.98px) {
    .about-video-shade {
        height: 22%;
    }
}

/*
 * 【视频完整显示规则 — 重点】
 * 必须使用 object-fit: contain：
 *   ✔ 完整显示全部画面，不裁切
 * 禁止使用 object-fit: cover：
 *   ✘ cover 会放大并裁切边缘，违反需求
 */
.about-section-video {
    display: block;
    width: 100%;
    height: 100%;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

/* 【全屏模式】保持 contain + 黑底衬边，横屏视频全屏时由浏览器按比例适配，不强制 cover 裁切 */
.about-section-video:fullscreen,
.about-section-video:-webkit-full-screen {
    width: 100vw;
    height: 100vh;
    max-width: 100vw;
    max-height: 100vh;
    object-fit: contain;
    background: #000;
}

/* 【文案区域】min-width:0 防止窄列 flex 溢出；字号与全站一致（不在此单独覆盖） */
.about-text-col {
    min-width: 0;
}

/* 小标题（ABOUT US / CONTACT 等）与下方主标题间距：与首页「智慧校园洗涤新生态」文案列一致 */
.about-text-col h6.section-title {
    margin-bottom: 1rem;
}


/*** Header carousel ***/
@media (max-width: 768px) {
    .header-carousel .owl-carousel-item {
        position: relative;
        min-height: 500px;
    }
    
    .header-carousel .owl-carousel-item img {
        position: absolute;
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

    /* 仅首页一屏 Banner：覆盖 min-height，避免撑破一屏 */
    .hero-one-screen .header-carousel .owl-carousel-item {
        min-height: 0 !important;
        height: 100%;
    }
}

/* Banner 内 CTA 按钮文字字号 */
.header-carousel .owl-carousel-item .btn.btn-primary,
.header-carousel .owl-carousel-item .btn.btn-light {
    font-size: 20px;
}

/* 首页 Banner 轮播：隐藏左右箭头，底部为圆点 / 当前项胶囊条 */
.header-carousel .owl-nav {
    display: none !important;
}

.hero-one-screen .header-carousel .owl-dots {
    position: absolute;
    left: 0;
    right: 0;
    bottom: clamp(0.75rem, 2.5vw, 1.5rem);
    margin: 0;
    padding: 0 0.75rem;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    z-index: 8;
    pointer-events: none;
}

.hero-one-screen .header-carousel .owl-dots .owl-dot {
    pointer-events: auto;
}

.hero-one-screen .header-carousel .owl-dots .owl-dot {
    width: auto;
    height: auto;
    margin: 0;
    padding: 0.35rem 0.25rem;
    background: transparent;
    border: none;
    border-radius: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    line-height: 0;
}

.hero-one-screen .header-carousel .owl-dots .owl-dot span {
    width: 0.5rem;
    height: 0.5rem;
    margin: 0;
    display: block;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.42);
    border: 1px solid rgba(255, 255, 255, 0.35);
    box-sizing: content-box;
    transition: width 0.35s ease, height 0.35s ease, background 0.35s ease, border-color 0.35s ease, box-shadow 0.35s ease;
}

.hero-one-screen .header-carousel .owl-dots .owl-dot:hover span {
    background: rgba(255, 255, 255, 0.72);
    border-color: rgba(255, 255, 255, 0.55);
}

.hero-one-screen .header-carousel .owl-dots .owl-dot.active span {
    width: 2.25rem;
    height: 0.5rem;
    border-radius: 999px;
    background: #fff;
    border-color: rgba(255, 255, 255, 0.85);
    box-shadow: 0 0 0 1px rgba(0, 174, 255, 0.35);
}

.hero-one-screen .header-carousel .owl-dots .owl-dot:focus {
    outline: none;
}

.hero-one-screen .header-carousel .owl-dots .owl-dot:focus-visible span {
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.9), 0 0 0 4px rgba(0, 174, 255, 0.45);
}

.page-header {
    background: linear-gradient(rgba(24, 29, 56, .7), rgba(24, 29, 56, .7)), url(img/carousel-1.jpg);
    background-position: center center;
    background-repeat: no-repeat;
    background-size: cover;
}

/* 内页 Banner：与「解决方案」页同级区块保持同一可视高度（首页全屏 Hero 除外） */
:root {
    --inner-page-banner-h-sm: 20rem;
    --inner-page-banner-h-lg: 22rem;
}

body:not(.page-index) .page-header {
    /* 与首页轮播遮罩一致：深色半透明叠在 banner01 上 */
    background: linear-gradient(rgba(24, 29, 56, .7), rgba(24, 29, 56, .7)), url("../img/banner01.png");
    background-position: center center;
    background-repeat: no-repeat;
    background-size: cover;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: stretch;
    /* 取消外层 py-5，高度改由固定值 + 内层留白控制，避免各页标题换行导致总高不一致 */
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    overflow: hidden;
}

body:not(.page-index) .page-header > .container {
    /* 取消内层 py-5，与外层统一由下方 min-height/height 约束 */
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    width: 100%;
}

/* 小屏：略矮，允许随极长标题微增高，仍设统一下限 */
@media (max-width: 575.98px) {
    body:not(.page-index) .page-header {
        min-height: 17.5rem;
        height: auto;
    }

    body:not(.page-index) .page-header > .container {
        padding-top: 2.25rem !important;
        padding-bottom: 2.25rem !important;
    }
}

/* ≥576px：固定高度，与解决方案页桌面观感一致 */
@media (min-width: 576px) {
    body:not(.page-index) .page-header {
        height: var(--inner-page-banner-h-sm);
        min-height: var(--inner-page-banner-h-sm);
        max-height: var(--inner-page-banner-h-sm);
    }

    body:not(.page-index) .page-header > .container {
        padding-top: 2.5rem !important;
        padding-bottom: 2.5rem !important;
    }
}

@media (min-width: 992px) {
    body:not(.page-index) .page-header {
        height: var(--inner-page-banner-h-lg);
        min-height: var(--inner-page-banner-h-lg);
        max-height: var(--inner-page-banner-h-lg);
    }
}

body:not(.page-index) .page-header h1.display-3 {
    line-height: 1.15;
}

.page-header-inner {
    background: rgba(15, 23, 43, .7);
}

.breadcrumb-item + .breadcrumb-item::before {
    color: var(--light);
}


/*** Section Title ***/
.section-title {
    position: relative;
    display: inline-block;
    text-transform: uppercase;
}

.section-title::before {
    position: absolute;
    content: "";
    width: calc(100% + 80px);
    height: 2px;
    top: 4px;
    left: -40px;
    background: var(--primary);
    z-index: -1;
}

.section-title::after {
    position: absolute;
    content: "";
    width: calc(100% + 120px);
    height: 2px;
    bottom: 5px;
    left: -60px;
    background: var(--primary);
    z-index: -1;
}

.section-title.text-start::before {
    width: calc(100% + 40px);
    left: 0;
}

.section-title.text-start::after {
    width: calc(100% + 60px);
    left: 0;
}


/*** Service ***/
.service-item {
    background: var(--light);
    transition: transform .5s, background-color .5s;
}

.service-item:hover {
    transform: translateY(-10px);
    /* 覆盖 index 卡片上的 .bg-light（Bootstrap 带 !important） */
    background-color: var(--primary) !important;
}

.service-item * {
    transition: color .5s;
}

.service-item:hover * {
    color: #fff !important;
}

/* 四大保障：为悬停上移预留空间，避免顶到上一区块 */
.guarantee-cards-row {
    padding-top: 12px;
}

.guarantee-cards-row > [class*="col-"].d-flex {
    overflow: visible;
}

/* 四项保障卡片等高 */
.guarantee-cards-row > [class*="col-"].d-flex > .service-item {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-height: 100%;
}

.guarantee-cards-row .service-item > .p-4 {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    width: 100%;
}

.guarantee-cards-row .service-item > .p-4 > p:last-child {
    flex-grow: 1;
    margin-bottom: 0;
}


/*** Categories & Courses ***/
/*
 * 校园案例（.campus-cases-section）：仅在 <768px（Bootstrap 以下、整区竖向单列）时，
 * 四张图统一为同一可视高度（约 4:3 的 4/5 高度，aspect-ratio 5/3）；≥768px 保持原有两栏与右侧 min-height 布局。
 */
@media (max-width: 767.98px) {
    .campus-cases-section .campus-case-tall-col {
        min-height: 0 !important;
    }

    .campus-cases-section .campus-case-media {
        width: 100%;
        aspect-ratio: 5 / 3;
        height: auto !important;
        position: relative;
    }

    .campus-cases-section .campus-case-media > img {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        max-width: none;
        object-fit: cover;
        z-index: 0;
        margin: 0;
    }

    .campus-cases-section .campus-case-media > .campus-case-caption {
        z-index: 1;
    }
}

/*
 * 校园案例（灰底）：装饰线在模块灰底之上、在文案条（与区块同 #F5F5F5）之下——伪元素 z-index:0，文案 span z-index:1。
 * isolation 保证整块叠在 .campus-cases-section 灰底之上且不被裁切。
 */
.campus-cases-section .campus-cases-section__title.section-title {
    isolation: isolate;
    position: relative;
    z-index: 0;
}

.campus-cases-section .campus-cases-section__title.section-title::before,
.campus-cases-section .campus-cases-section__title.section-title::after {
    z-index: 0;
}

.campus-cases-section .campus-cases-section__title .campus-cases-section__title-text {
    position: relative;
    z-index: 1;
    display: inline-block;
    /* 与 .campus-cases-section 区块灰底一致（index 内联 background:#F5F5F5） */
    background-color: #F5F5F5;
}

.campus-cases-section .text-center {
    overflow: visible;
}

.campus-cases-section {
    overflow: visible;
}

/* 校园案例灰底模块：用外边距与相邻白底模块拉开一致的间距 */
/* 首页与解决方案页：灰底模块与上方白底区块的间距一致；解决方案页灰底紧贴页脚，不设下边距以免露出 body 白条 */
.page-index .campus-cases-section,
.page-solution .campus-cases-section,
.page-cooperation .campus-cases-section {
    margin-top: 1.5rem;
}

.page-index .campus-cases-section {
    margin-bottom: 1.5rem;
}

@media (min-width: 768px) {
    .page-index .campus-cases-section,
    .page-solution .campus-cases-section,
    .page-cooperation .campus-cases-section {
        margin-top: 2.5rem;
    }

    .page-index .campus-cases-section {
        margin-bottom: 2.5rem;
    }
}

/* 首页「服务保障」三卡：正文 16px，去掉外框线/阴影 */
.service-guarantee-section .service-guarantee-card {
    border: none !important;
    box-shadow: none !important;
    outline: none;
}

.service-guarantee-section .service-guarantee-card-body {
    font-size: 16px;
    line-height: 1.65;
    color: var(--dark);
}

/* 底部三列：竖向/顶部分割线（浅蓝，与浅底呼应） */
.service-guarantee-section .service-guarantee-card .border-top,
.service-guarantee-section .service-guarantee-card .border-end {
    border-color: #d4f2ff !important;
}

.category img,
.course-item img {
    transition: .5s;
}

.category a:hover img,
.course-item:hover img {
    transform: scale(1.1);
}


/*** Team ***/
.team-item img {
    transition: .5s;
}

.team-item:hover img {
    transform: scale(1.1);
}


/*** Testimonial ***/
.testimonial-carousel::before {
    position: absolute;
    content: "";
    top: 0;
    left: 0;
    height: 100%;
    width: 0;
    background: linear-gradient(to right, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%);
    z-index: 1;
}

.testimonial-carousel::after {
    position: absolute;
    content: "";
    top: 0;
    right: 0;
    height: 100%;
    width: 0;
    background: linear-gradient(to left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%);
    z-index: 1;
}

@media (min-width: 768px) {
    .testimonial-carousel::before,
    .testimonial-carousel::after {
        width: 200px;
    }
}

@media (min-width: 992px) {
    .testimonial-carousel::before,
    .testimonial-carousel::after {
        width: 300px;
    }
}

.testimonial-carousel .owl-item .testimonial-text,
.testimonial-carousel .owl-item.center .testimonial-text * {
    transition: .5s;
}

.testimonial-carousel .owl-item.center .testimonial-text {
    background: var(--primary) !important;
}

.testimonial-carousel .owl-item.center .testimonial-text * {
    color: #FFFFFF !important;
}

/* 轮播中间项：头像描边主题蓝（内页评价区 img 自带 border；合作伙伴用外圈 .partner-avatar-ring） */
.testimonial-carousel:not(.partner-showcase-carousel) .owl-item.center .testimonial-item > img {
    border-color: var(--primary) !important;
}

.partner-showcase-carousel .owl-item.center .partner-avatar-ring {
    border-color: var(--primary) !important;
}

/* 首页合作伙伴：非选中项不再整体降透明度（照片用滤镜统一深灰） */
.partner-showcase-carousel .owl-item:not(.center) .testimonial-item {
    opacity: 1;
    transition: opacity 0.35s ease;
}

.partner-showcase-carousel .owl-item.center .testimonial-item {
    opacity: 1;
}

/* 外圈圆环：照片与描边留白在原有基础上每侧 +4px（padding +4）；外径 +8px 以免照片被挤小 */
.partner-showcase-carousel .partner-avatar-ring {
    width: 92px;
    height: 92px;
    box-sizing: border-box;
    border: 1px solid rgba(0, 0, 0, 0.14);
    border-radius: 50%;
    padding: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    margin-left: auto;
    margin-right: auto;
    overflow: hidden;
    transition: border-color 0.28s ease;
}

.partner-showcase-carousel .partner-avatar-photo-mat {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    background-color: #f4f5f7;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: background-color 0.28s ease;
}

/* 合作伙伴头像始终保持原图色彩，仅通过外圈和底色区分轮播层级 */
.partner-showcase-carousel .partner-showcase-avatar {
    transition: transform 0.28s ease;
}

.partner-showcase-carousel .partner-showcase-avatar {
    display: block;
    width: 100% !important;
    height: 100% !important;
    min-width: 0 !important;
    min-height: 0 !important;
    max-width: none !important;
    padding: 0 !important;
    border: none !important;
    box-sizing: border-box;
    border-radius: 50% !important;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    object-position: center;
    flex-shrink: 0;
}

/* 学员姓名：与首页服务保障卡片正文一致（16px）；职业副标题固定 12px */
.partner-showcase-carousel .testimonial-item h5 {
    font-size: 16px;
    line-height: 1.65;
    font-weight: 400;
    color: var(--dark);
}

.partner-showcase-carousel .partner-showcase-role {
    font-size: 12px;
    line-height: 1.4;
    color: #8e939c;
    margin-top: 0.12rem;
}

@media (max-width: 575.98px) {
    .partner-showcase-carousel .partner-avatar-ring {
        width: 64px;
        height: 64px;
        padding: 7px;
    }

    .partner-showcase-carousel .testimonial-item h5 {
        font-size: 16px;
    }

    .partner-showcase-carousel .partner-showcase-role {
        font-size: 12px;
    }
}

@media (min-width: 576px) and (max-width: 767.98px) {
    .partner-showcase-carousel .partner-avatar-ring {
        width: 80px;
        height: 80px;
        padding: 8px;
    }

    .partner-showcase-carousel .testimonial-item h5 {
        font-size: 16px;
    }

    .partner-showcase-carousel .partner-showcase-role {
        font-size: 12px;
    }
}

@media (min-width: 1200px) {
    .partner-showcase-carousel .partner-avatar-ring {
        width: 102px;
        height: 102px;
        padding: 9px;
    }
}

.testimonial-carousel .owl-dots {
    margin-top: 24px;
    display: flex;
    align-items: flex-end;
    justify-content: center;
}

.testimonial-carousel .owl-dot {
    position: relative;
    display: inline-block;
    margin: 0 5px;
    width: 15px;
    height: 15px;
    border: 1px solid #CCCCCC;
    transition: .5s;
}

.testimonial-carousel .owl-dot.active {
    background: var(--primary);
    border-color: var(--primary);
}

/* 首页合作伙伴：圆点更密更小时仍可读（覆盖上一段尺寸） */
.testimonial-carousel.partner-showcase-carousel .owl-dots {
    margin-top: 1rem;
    flex-wrap: wrap;
    row-gap: 6px;
}

.testimonial-carousel.partner-showcase-carousel .owl-dot {
    width: 11px;
    height: 11px;
    margin: 0 4px;
    border-color: rgba(0, 0, 0, 0.14);
}

.testimonial-carousel.partner-showcase-carousel .owl-dot.active {
    background: var(--primary);
    border-color: var(--primary);
}

@media (max-width: 575.98px) {
    .testimonial-carousel.partner-showcase-carousel .owl-dot {
        width: 9px;
        height: 9px;
        margin: 0 3px;
    }
}


/*** Footer ***/
.footer .btn.btn-social {
    margin-right: 5px;
    width: 35px;
    height: 35px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--light);
    font-weight: normal;
    border: 1px solid #FFFFFF;
    border-radius: 35px;
    transition: .3s;
}

.footer .btn.btn-social:hover {
    color: var(--primary);
}

.footer .btn.btn-link {
    display: block;
    margin-bottom: 5px;
    padding: 0;
    text-align: left;
    color: #FFFFFF;
    font-size: 15px;
    font-weight: normal;
    text-transform: capitalize;
    transition: .3s;
}

.footer .btn.btn-link::before {
    position: relative;
    content: "\f105";
    font-family: "Font Awesome 5 Free";
    font-weight: 900;
    margin-right: 10px;
}

.footer .btn.btn-link:hover {
    letter-spacing: 1px;
    box-shadow: none;
}

.footer .copyright {
    padding: 25px 0;
    font-size: 15px;
    border-top: 1px solid rgba(256, 256, 256, .1);
}

.footer .copyright a {
    color: var(--light);
}

.footer .footer-menu a {
    margin-right: 15px;
    padding-right: 15px;
    border-right: 1px solid rgba(255, 255, 255, .1);
}

.footer .footer-menu a:last-child {
    margin-right: 0;
    padding-right: 0;
    border-right: none;
}

/* -------------------------------------------------------------------- */
/* 企业底栏 .footer-main-pro（深色底 + 浅色字，配合 Bootstrap bg-dark text-light） */
/* -------------------------------------------------------------------- */
.footer-main-pro .footer-main-pro__top {
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

.footer-main-pro .footer-main-pro__slogan {
    font-size: 1.5rem;
    font-weight: 700;
    color: #ffffff;
    letter-spacing: 0.02em;
    line-height: 1.3;
}

.footer-main-pro .footer-main-pro__navlink {
    color: rgba(255, 255, 255, 0.72);
    font-size: 0.9375rem;
    text-decoration: none;
    white-space: nowrap;
    transition: color 0.2s ease;
}

.footer-main-pro .footer-main-pro__navlink:hover {
    color: #ffffff;
}

.footer-main-pro .footer-main-pro__hotline {
    font-size: 1.5rem;
    font-weight: 700;
    color: #ffffff;
    letter-spacing: 0.02em;
}

.footer-main-pro .footer-main-pro__hotline-link {
    color: #ffffff;
    text-decoration: none;
    transition: color 0.2s ease;
}

.footer-main-pro .footer-main-pro__hotline-link:hover {
    color: var(--primary);
}

.footer-main-pro .footer-main-pro__subtext {
    font-size: 0.875rem;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.65);
}

/* 版权/备案区内与整块 legal 字号一致（不受上方 .footer-main-pro__subtext 的 0.875rem 覆盖） */
.footer-main-pro .footer-main-pro__legal .footer-main-pro__subtext {
    font-size: inherit;
    line-height: inherit;
}

.footer-main-pro .footer-main-pro__icon {
    flex-shrink: 0;
    width: 1.125rem;
    text-align: center;
    color: rgba(255, 255, 255, 0.5);
    margin-top: 0.2rem;
}

.footer-main-pro .footer-main-pro__icon.fab {
    font-weight: 400;
}

.footer-main-pro .footer-main-pro__meta .footer-main-pro__subtext {
    flex: 1;
    min-width: 0;
}

.footer-main-pro .footer-main-pro__legal {
    min-width: 0;
    text-align: left;
    /* 版权 + 备案整块统一字号（子元素 inherit，避免链接与正文大小不一） */
    font-size: calc(0.875rem - 2px);
    line-height: 1.5;
}

/* 版权/备案：略小于联系副文、更浅，与左侧热线列同左缘对齐（结构在 midcol-left 内） */
.footer-main-pro .footer-main-pro__legal .footer-main-pro__legal-text {
    font-size: inherit;
    line-height: inherit;
    color: rgba(255, 255, 255, 0.45);
}

/* 备案行：ICP 与公安备案之间的竖分割线（无版权与备案之间的横线） */
.footer-main-pro .footer-main-pro__legal-filings-sep {
    display: inline-block;
    width: 1px;
    height: 0.85em;
    background-color: rgba(255, 255, 255, 0.22);
    flex-shrink: 0;
    margin: 0 0.125rem;
}

.footer-main-pro .footer-main-pro__legal a.footer-main-pro__icpbeian,
.footer-main-pro .footer-main-pro__legal a.footer-main-pro__psbbeian {
    font-size: inherit;
    line-height: inherit;
    color: rgba(255, 255, 255, 0.45);
    text-decoration: none;
}

.footer-main-pro .footer-main-pro__legal a.footer-main-pro__icpbeian:hover,
.footer-main-pro .footer-main-pro__legal a.footer-main-pro__psbbeian:hover {
    color: rgba(255, 255, 255, 0.72);
    text-decoration: underline;
}

.footer-main-pro .footer-main-pro__legal a.footer-main-pro__icpbeian:focus-visible,
.footer-main-pro .footer-main-pro__legal a.footer-main-pro__psbbeian:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.45);
    outline-offset: 2px;
}

/* 底栏中部：左列与右列并排；大屏二维码区略下移与「热线」视觉顶对齐，版权在左列下方 */
.footer-main-pro .footer-main-pro__midrow {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: clamp(1rem, 3vw, 2rem);
    width: 100%;
}

.footer-main-pro .footer-main-pro__midwing-left,
.footer-main-pro .footer-main-pro__midwing-right {
    flex: 1 1 0;
    min-width: 0;
}

.footer-main-pro .footer-main-pro__midwing-right {
    display: flex;
    justify-content: flex-end;
}

.footer-main-pro .footer-main-pro__midcol-qrs {
    min-width: 0;
    gap: 1rem;
    align-items: flex-start;
}

/* 大屏：二维码区略下移，与左侧「热线」首行视觉顶对齐 */
@media (min-width: 992px) {
    .footer-main-pro .footer-main-pro__midcol-qrs {
        padding-top: 0.4rem;
    }
}

@media (min-width: 768px) {
    .footer-main-pro .footer-main-pro__midcol-qrs {
        gap: 1.75rem;
    }
}

.footer-main-pro .footer-main-pro__qrcode {
    display: inline-block;
    vertical-align: top;
    object-fit: contain;
    width: 98px;
    height: 98px;
    max-width: 100%;
    border-radius: 0.5rem;
}

.footer-main-pro .footer-main-pro__qrcaption {
    max-width: 9rem;
    margin-left: auto;
    margin-right: auto;
    margin-top: 1rem !important; /* 大于 Bootstrap .mt-2，加大码与说明字间距 */
    text-align: center;
    white-space: nowrap;
}

.footer-main-pro .footer-main-pro__qrblock {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    max-width: 140px;
}

@media (max-width: 991.98px) {
    .footer-main-pro .footer-main-pro__midrow {
        flex-direction: column;
        align-items: stretch;
        gap: 1.5rem;
    }

    .footer-main-pro .footer-main-pro__midwing-left,
    .footer-main-pro .footer-main-pro__midwing-right {
        flex: none;
    }

    .footer-main-pro .footer-main-pro__midwing-right {
        justify-content: center;
    }
}

@media (min-width: 576px) {
    .footer-main-pro .footer-main-pro__qrblock {
        max-width: none;
    }
}


/* ====================================================================
   解决方案页 .page-solution
   ==================================================================== */
.page-solution {
    --sol-radius: 14px;
    --sol-radius-sm: 10px;
}

/* 课程页统一圆角：对齐首页卡片风格，排除 banner / tab 区域 */
.page-solution .rounded,
.page-solution .rounded-sm,
.page-solution .service-item,
.page-solution .sol-mode-banner,
.page-solution .sol-advantage-card,
.page-solution .sol-flow-card,
.page-solution .sol-protect-card,
.page-solution .sol-step-card,
.page-solution .sol-guarantee-card,
.page-solution .sol-compare-table {
    border-radius: var(--sol-radius) !important;
}

/* 全局模块间距：增加呼吸感 */
.page-solution .container-xxl.py-5,
.page-solution .container-fluid.py-5 {
    padding-top: 5rem !important;
    padding-bottom: 5rem !important;
}

@media (min-width: 768px) {
    .page-solution .container-xxl.py-5,
    .page-solution .container-fluid.py-5 {
        padding-top: 6.5rem !important;
        padding-bottom: 6.5rem !important;
    }
}

@media (min-width: 992px) {
    .page-solution .container-xxl.py-5,
    .page-solution .container-fluid.py-5 {
        padding-top: 7.5rem !important;
        padding-bottom: 7.5rem !important;
    }
}

/* 标题与内容间距 */
.page-solution .section-title {
    margin-bottom: 0.75rem;
}

.page-solution h1.mb-5 {
    margin-bottom: 3.5rem !important;
}

.page-solution h1.mb-3 {
    margin-bottom: 1.25rem !important;
}

.page-solution .text-muted.mb-5 {
    margin-bottom: 3.5rem !important;
}

/* 子模块标题间距 */
.page-solution h3.text-primary.mb-4 {
    margin-bottom: 2rem !important;
    margin-top: 1rem;
}

.page-solution .float-customer-service,
.page-solution .back-to-top {
    border-radius: var(--sol-radius) !important;
}

.page-solution .service-item {
    border-radius: var(--sol-radius);
    overflow: hidden;
}

/* 痛点六宫格：与首页 .guarantee-cards-row 一致，悬停上移不裁切、无额外投影 */
.page-solution .guarantee-cards-row .service-item {
    overflow: visible;
    box-shadow: none !important;
}

/* --- 模块一：痛点卡片已改用 .service-item，与首页保障区悬停一致 --- */

/* --- 模块一：模式横幅 --- */
.sol-mode-banner {
    background: linear-gradient(135deg, var(--primary) 0%, #0077cc 100%);
    border-radius: var(--sol-radius);
    padding: 2.5rem 2rem;
}

/* 我们的模式区域 */
.sol-mode-intro {
    padding: 1.5rem 0;
}

/* 我们的模式：各条之间等间距（无分割线） */
.sol-mode-item-list {
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

.sol-mode-item-list .sol-mode-item {
    margin-bottom: 0 !important;
    /* 长文案行（卫生）图标与右侧整块文案垂直居中，三枚图标视觉间距更匀 */
    align-items: center;
}

.sol-mode-item-list .sol-mode-item > div:last-child {
    min-width: 0;
    flex: 1 1 auto;
}

/* 为第四条（安全）增加与上一条的垂直间距 14px，保持与其它项视觉一致 */
.sol-mode-item-list .sol-mode-item:nth-child(4) {
    margin-top: 14px;
}

.page-solution .sol-mode-item h5 {
    margin-bottom: 0.6rem;
    font-size: 18px;
}

.sol-mode-item p {
    line-height: 1.75;
}

/* 我们的模式：右侧图与容器内容区左右对齐，展示高度在约 16:9 基础上 +34px（cover） */
.page-solution .sol-mode-intro-photo-wrap {
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    margin-right: 0;
    /* when the row stretches, make the photo wrapper fill column height */
    height: 100%;
    padding-bottom: 0;
}

.page-solution .sol-mode-intro-photo-img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}

/* --- 模块一：优势卡片 --- */
.sol-advantage-card {
    background: #fff;
    border-radius: var(--sol-radius);
    padding: 2rem 1.5rem;
    border-left: 4px solid var(--primary);
    box-shadow: 0 2px 12px rgba(0, 0, 0, .06);
    transition: transform .35s ease, box-shadow .35s ease;
}

.sol-advantage-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 8px 28px rgba(0, 174, 255, .13);
}

.sol-advantage-icon {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: var(--light);
    color: var(--primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.4rem;
    margin-bottom: 1rem;
}

.sol-advantage-card h5 {
    color: var(--dark);
    font-weight: 700;
    margin-bottom: 0.6rem;
}

.sol-advantage-card p {
    color: #555;
    line-height: 1.7;
    margin-bottom: 0;
}

/* --- 模块二：流程卡片 --- */
.sol-flow-card {
    background: #fff;
    border-radius: var(--sol-radius);
    /* 无顶部 padding：图示顶贴卡片，步骤圆标叠在卡片与图之上（勿对整卡 overflow:hidden，否则会裁切圆标） */
    padding: 0;
    position: relative;
    z-index: 0;
    box-shadow: 0 2px 16px rgba(0, 0, 0, .06);
    transition: transform .35s ease, box-shadow .35s ease;
}

/* 步骤序号：叠在卡片与图片之上，不被裁切 */
.sol-flow-card .sol-flow-step {
    z-index: 2;
}

/* 流程图示：与卡片同宽、顶无白边；仅上圆角与卡片一致 */
.sol-flow-card__media {
    display: block;
    width: 100%;
    height: 180px;
    object-fit: cover;
    margin: 0;
    position: relative;
    z-index: 0;
    border-top-left-radius: var(--sol-radius);
    border-top-right-radius: var(--sol-radius);
}

/* 标题与说明仅在正文区保留左右内边距；下圆角与卡片一致；上内边距在 1rem 基础上加大 15px，拉开图示与标题间距 */
.sol-flow-card__body {
    padding: calc(1rem + 15px) 1.5rem 1.75rem;
    text-align: center;
    border-bottom-left-radius: var(--sol-radius);
    border-bottom-right-radius: var(--sol-radius);
}

.sol-flow-card .pt-4 {
    padding-top: 2rem !important;
}

.sol-flow-card i.fa-3x {
    margin-bottom: 1.5rem !important;
}

.sol-flow-card h4 {
    font-size: 20px;
    margin-bottom: 1.25rem;
}

.sol-flow-card p {
    font-size: 0.95rem;
}

.sol-flow-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 10px 30px rgba(0, 174, 255, .14);
}

.sol-flow-step-num {
    position: absolute;
    top: -18px;
    left: 50%;
    transform: translateX(-50%);
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--primary);
    color: #fff;
    font-weight: 800;
    font-size: 1.1rem;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 12px rgba(0, 174, 255, .35);
}

.sol-flow-icon-wrap {
    margin-bottom: 1rem;
    margin-top: 0.5rem;
}

.sol-flow-card p {
    color: #555;
    line-height: 1.7;
    margin-bottom: 0;
}

.sol-flow-dot {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: var(--primary);
    flex-shrink: 0;
}

.sol-flow-line {
    width: 180px;
    height: 3px;
    background: linear-gradient(90deg, var(--primary), rgba(0, 174, 255, .25));
    flex-shrink: 0;
}

/* --- 模块三：四重防护 --- */
.sol-protect-card {
    background: #fff;
    border-radius: var(--sol-radius);
    padding: 2.25rem 1.75rem 2rem;
    position: relative;
    border-top: 3px solid var(--primary);
    box-shadow: none;
    transition: transform .35s ease;
}

.sol-protect-card:hover {
    transform: translateY(-6px);
}

.sol-protect-badge {
    display: inline-block;
    background: var(--primary);
    color: #fff;
    font-size: 16px;
    font-weight: 700;
    padding: 0.35rem 1rem;
    border-radius: 999px;
    margin-bottom: 1.25rem;
    letter-spacing: 0.05em;
}

.sol-protect-card h5 {
    font-size: 20px;
    font-weight: 700;
    margin-bottom: 1rem;
}

.sol-protect-card p {
    color: #555;
    line-height: 1.8;
    margin-bottom: 0;
    font-size: 16px;
}

/* 覆盖 Bootstrap .small，保证四重卫生防护正文为 16px */
.sol-protect-card p.small {
    font-size: 16px;
}

/* --- 模块三：九步流程 --- */
/* 九步全流程：模块大标题不改；卡片蓝字标题 18px；灰色说明 16px；圆标与序号略大于原 40px 以配字号 */
.sol-nine-steps .sol-step-num {
    width: 46px;
    height: 46px;
    min-width: 46px;
    font-size: 17px;
    font-weight: 700;
    line-height: 1;
}

.sol-nine-steps .sol-step-body h6 {
    font-size: 18px;
    font-weight: 700;
}

.sol-nine-steps .sol-step-body p,
.sol-nine-steps .sol-step-body p.small {
    font-size: 16px;
}

.sol-step-item {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    background: #fff;
    border-radius: var(--sol-radius-sm);
    padding: 1.35rem 1.5rem;
    box-shadow: 0 1px 6px rgba(0, 0, 0, .05);
    transition: transform .3s ease, box-shadow .3s ease;
    height: 100%;
}

.sol-step-item:hover {
    transform: translateY(-4px);
    box-shadow: 0 6px 20px rgba(0, 174, 255, .1);
}

.sol-step-num-circle {
    flex-shrink: 0;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: var(--light);
    color: var(--primary);
    font-weight: 800;
    font-size: 0.95rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px solid var(--primary);
    margin-top: 2px;
}

.sol-step-body h6 {
    margin-bottom: 0.5rem;
    font-weight: 700;
    color: var(--dark);
    font-size: 0.98rem;
}

.sol-step-body p {
    margin-bottom: 0;
    color: #666;
    font-size: 0.9rem;
    line-height: 1.7;
}

/* --- 模块三：多重保障卡片 --- */
.sol-guarantee-card {
    overflow: visible;
    box-shadow: none !important;
    padding: 2rem 1.5rem !important;
    transition: transform .4s ease, box-shadow .4s ease;
}

.sol-guarantee-card .p-4 {
    padding: 1.75rem !important;
}

.sol-guarantee-card i.fa-3x {
    margin-bottom: 1.5rem !important;
}

.sol-guarantee-card h5 {
    margin-bottom: 1rem;
}

.sol-guarantee-card p {
    line-height: 1.75;
}

/* --- 模块四：模式对比表格 --- */
.sol-compare-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    border-radius: var(--sol-radius);
    /* 与流程卡 .sol-flow-card 默认阴影一致 */
    box-shadow: 0 2px 16px rgba(0, 0, 0, .06);
}

.sol-compare-table {
    width: 100%;
    min-width: 640px;
    border-collapse: separate;
    border-spacing: 0;
    background: #fff;
    border-radius: var(--sol-radius);
    overflow: hidden;
    /* 与「10秒完成…」流程卡 .sol-flow-card 默认阴影一致（不用 Bootstrap .shadow） */
    box-shadow: 0 2px 16px rgba(0, 0, 0, .06);
}

.sol-compare-table thead {
    background: var(--dark);
    color: #fff;
}

.sol-compare-table th {
    padding: 1.25rem 1.5rem;
    font-weight: 700;
    font-size: 20px;
    text-align: center;
    white-space: nowrap;
    border: none;
}

.sol-compare-th-ours {
    background: var(--primary) !important;
    color: #fff !important;
    font-size: 20px !important;
    letter-spacing: 0.04em;
}

.sol-compare-table td {
    padding: 1.15rem 1.5rem;
    font-size: 16px;
    color: #555;
    text-align: center;
    border-bottom: 1px solid #f0f0f0;
    vertical-align: middle;
    line-height: 1.6;
}

/* 表体：第一列行标题保持与 td 一致（16px）；其余列正文 14px（含 small / strong） */
.sol-compare-table tbody td:not(:first-child),
.sol-compare-table tbody td:not(:first-child) small,
.sol-compare-table tbody td:not(:first-child) small strong {
    font-size: 14px;
}

.sol-compare-table tbody tr:last-child td {
    border-bottom: none;
}

.sol-compare-table tbody tr:hover {
    background: rgba(0, 174, 255, .04);
}

.sol-compare-feature {
    font-weight: 700;
    color: var(--dark) !important;
    text-align: left !important;
    white-space: nowrap;
}

.sol-compare-highlight {
    color: var(--primary) !important;
    font-weight: 600;
    background: rgba(0, 174, 255, .06);
}

/* 高亮「校内送洗」列 */
.sol-highlight-col {
    background: rgba(0, 174, 255, .08) !important;
}

.sol-compare-table thead .sol-highlight-col {
    background: var(--primary) !important;
    font-weight: 700;
}

.sol-compare-table tbody .sol-highlight-col {
    background: rgba(0, 174, 255, .06);
    color: var(--dark);
}

.sol-compare-table tbody .sol-highlight-col strong {
    color: var(--primary);
}

/* 九步流程卡片交互 */
.sol-step-card {
    transition: transform .3s ease, box-shadow .3s ease;
    border-color: #e9ecef !important;
}

.sol-step-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 6px 20px rgba(0, 174, 255, .1);
    border-color: var(--primary) !important;
}

.sol-guarantee-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 12px 32px rgba(0, 174, 255, .12);
}

@media (max-width: 767.98px) {
    .sol-compare-table th,
    .sol-compare-table td {
        padding: 0.7rem 0.8rem;
    }
}


/* ====================================================================
   企业动态页、成功案例页（.page-news / .page-cases）
   ==================================================================== */
.page-news {
    --news-radius: 14px;
    --news-radius-sm: 10px;
}

/* 分页切换后 scrollIntoView 时，避免首条被固定顶栏遮挡 */
.page-news #newsCardList,
.page-news #casesCardList {
    scroll-margin-top: 5.5rem;
}

@media (min-width: 992px) {
    .page-news #newsCardList,
    .page-news #casesCardList {
        scroll-margin-top: 6rem;
    }
}

/* 全局模块间距 */
.page-news .container-xxl.py-5 {
    padding-top: 5rem !important;
    padding-bottom: 5rem !important;
}

@media (min-width: 768px) {
    .page-news .container-xxl.py-5 {
        padding-top: 6rem !important;
        padding-bottom: 6rem !important;
    }
}

/* 关于我们：主区块与成功案例/企业动态相同上下留白（container-xxl py-5） */
body.page-contact .contact-main-section > .container-xxl.py-5 {
    padding-top: 5rem !important;
    padding-bottom: 5rem !important;
}

@media (min-width: 768px) {
    body.page-contact .contact-main-section > .container-xxl.py-5 {
        padding-top: 6rem !important;
        padding-bottom: 6rem !important;
    }
}

/* 关于我们页 · 发明专利证书模块（与成功案例/企业动态等内页 container-xxl py-5 留白一致） */
body.page-contact .contact-cert-section > .container-xxl.py-5 {
    padding-top: 5rem !important;
    padding-bottom: 5rem !important;
}

@media (min-width: 768px) {
    body.page-contact .contact-cert-section > .container-xxl.py-5 {
        padding-top: 6rem !important;
        padding-bottom: 6rem !important;
    }
}

body.page-contact .contact-cert-section .section-title {
    margin-bottom: 1rem;
}

body.page-contact .contact-cert-carousel {
    position: relative;
}

/* Cover Flow：居中证书大且清晰，两侧缩小、变淡、轻模糊 */
body.page-contact .contact-cert-stage-wrap {
    position: relative;
    padding: 2rem 0.75rem 3rem;
    overflow: hidden;
}

@media (min-width: 992px) {
    body.page-contact .contact-cert-stage-wrap {
        padding: 2.25rem 1rem 3.25rem;
    }
}

body.page-contact .contact-cert-carousel .owl-stage-outer {
    overflow: visible;
}

body.page-contact .contact-cert-carousel .owl-item {
    transition: transform 0.55s ease, opacity 0.55s ease, filter 0.55s ease;
    transform: scale(0.66);
    opacity: 0.38;
    filter: blur(2px);
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
}

body.page-contact .contact-cert-carousel .owl-item.active {
    opacity: 0.5;
}

body.page-contact .contact-cert-carousel .owl-item.center {
    transform: scale(1);
    opacity: 1;
    filter: none;
    z-index: 4;
}

body.page-contact .contact-cert-card {
    max-width: 260px;
    margin: 0 auto;
    border-radius: 12px;
    overflow: hidden;
    background: #fff;
    box-shadow: 0 14px 42px rgba(24, 29, 56, 0.12);
    border: 1px solid rgba(24, 29, 56, 0.06);
}

body.page-contact .contact-cert-carousel .owl-item.center .contact-cert-card {
    max-width: 300px;
    box-shadow: 0 22px 56px rgba(24, 29, 56, 0.16);
}

body.page-contact .contact-cert-card img {
    display: block;
    width: 100%;
    height: auto;
    vertical-align: middle;
    object-fit: contain;
    background: #faf8f2;
}

body.page-contact .contact-cert-carousel .owl-nav {
    position: absolute;
    left: 0;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    justify-content: space-between;
    pointer-events: none;
    z-index: 6;
    padding: 0 0.25rem;
}

body.page-contact .contact-cert-carousel .owl-nav button.owl-prev,
body.page-contact .contact-cert-carousel .owl-nav button.owl-next {
    pointer-events: auto;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: #fff !important;
    color: var(--primary) !important;
    box-shadow: 0 6px 20px rgba(24, 29, 56, 0.12);
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    margin: 0 !important;
    font-size: 1rem !important;
}

body.page-contact .contact-cert-carousel .owl-nav button.owl-prev:hover,
body.page-contact .contact-cert-carousel .owl-nav button.owl-next:hover {
    background: var(--primary) !important;
    color: #fff !important;
}

body.page-contact .contact-cert-carousel .owl-nav .owl-prev.disabled,
body.page-contact .contact-cert-carousel .owl-nav .owl-next.disabled {
    opacity: 0.35;
}

body.page-contact .contact-cert-carousel .owl-dots {
    margin-top: 1.25rem;
}

body.page-contact .contact-cert-carousel .owl-dot span {
    background: rgba(0, 174, 255, 0.28);
}

body.page-contact .contact-cert-carousel .owl-dot.active span,
body.page-contact .contact-cert-carousel .owl-dot:hover span {
    background: var(--primary);
}

/* CONTACT 装饰线：使用全站 .section-title 规则，与首页 About 保持一致。 */

/* 在关于我们页恢复与首页 About 相同的装饰线显示：
   - 保持 h6.section-title 为白底（bg-white）
   - 为标题建立 isolation 层（避免父级背景/动画遮挡伪元素）
   - 伪元素置于标题下方（z-index:0），标题置于伪元素之上（z-index:1） */
body.page-contact .contact-main-panel .contact-info-wrap {
    overflow: visible;
}

body.page-contact .contact-main-panel .section-title {
    position: relative;
    isolation: isolate;
    z-index: 1;
}

body.page-contact .contact-main-panel .section-title::before,
body.page-contact .contact-main-panel .section-title::after {
    z-index: 0;
}

/* Contact pages use the global .section-title styles (same as About module).
   Removed custom decorative-line overrides to restore consistent behavior. */
   body.page-contact .contact-main-panel .contact-info-wrap {
    position: relative;
    overflow: visible;
 }
 /* 标题：按文字宽度内联显示，伪元素相对于标题计算 left = 100% + 16px */
body.page-contact .contact-main-panel .section-title {
    display: inline-block !important;
    white-space: nowrap !important;
    /* 与首页 About 文案列相同：小标题与主标题之间 1rem（联系页 h6 在 .contact-info-wrap 内，需与 .about-text-col h6 规则一致） */
    margin: 0 0 1rem 0 !important;
    background: transparent !important;
    color: var(--primary) !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    z-index: 2 !important;
}

body.page-contact .contact-main-panel .section-title::before,
body.page-contact .contact-main-panel .section-title::after {
    content: "" !important;
    position: absolute !important;
    left: calc(100% + 16px) !important; /* 始终距离文字 16px */
    background: var(--primary) !important;
    /* 保证上下两条装饰线粗细一致，视觉统一 */
    height: 2px !important;
    border-radius: 2px !important;
    z-index: 1 !important;
    pointer-events: none !important;
}

/* 两条装饰线的长度与垂直位置（可按需微调） */
body.page-contact .contact-main-panel .section-title::before { top: 0.35em !important; width: 36px !important; }
body.page-contact .contact-main-panel .section-title::after  { top: 0.75em !important; width: 90px !important; }

@media (max-width: 767.98px) {
    body.page-contact .contact-main-panel .contact-info-wrap { padding-right: 12px; }
    body.page-contact .contact-main-panel .section-title::before { width: 24px !important; top: 0.36em !important; left: calc(100% + 12px) !important; }
    body.page-contact .contact-main-panel .section-title::after  { width: 56px !important; top: 0.72em !important; left: calc(100% + 12px) !important; }
}
/* 使用首页 About 的样式：移除 contact 页专有覆盖，直接复用 .about-text-col 与 .section-title 的全局规则。
   如需微调，请在上面的 contact-info-wrap / section-title 块中添加覆盖 */

/* 浮动按钮圆角 */
.page-news .float-customer-service,
.page-news .back-to-top {
    border-radius: var(--news-radius) !important;
}

/* --- 标签页导航 --- */
.news-tabs-wrapper {
    margin-bottom: 3.5rem;
}

.news-tabs {
    background: #fff;
    border-radius: 999px;
    padding: 6px;
    box-shadow: 0 2px 16px rgba(0, 0, 0, .08);
    gap: 0;
}

.news-tabs .nav-link {
    position: relative;
    padding: 0.85rem 2.5rem;
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--dark);
    background: transparent;
    border: none;
    border-radius: 999px;
    transition: all .3s ease;
}

.news-tabs .nav-link:hover {
    color: var(--primary);
}

.news-tabs .nav-link.active {
    color: #fff;
    background: var(--primary);
}

.news-tabs .nav-link.active::after {
    content: "";
    position: absolute;
    bottom: -12px;
    left: 50%;
    transform: translateX(-50%);
    width: 40px;
    height: 3px;
    background: var(--primary);
    border-radius: 2px;
}

@media (max-width: 575.98px) {
    .news-tabs .nav-link {
        padding: 0.7rem 1.5rem;
        font-size: 0.95rem;
    }
}

/* --- 新闻/案例卡片 --- */
.news-card {
    background: #fff;
    border-radius: var(--news-radius);
    overflow: hidden;
    box-shadow: 0 2px 16px rgba(0, 0, 0, .06);
    transition: transform .4s ease, box-shadow .4s ease;
    display: flex;
    flex-direction: column;
}

.news-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 12px 36px rgba(0, 174, 255, .15);
}

.news-card-img {
    position: relative;
    overflow: hidden;
    aspect-ratio: 16 / 10;
}

.news-card-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .5s ease;
}

.news-card:hover .news-card-img img {
    transform: scale(1.08);
}

.news-card-date {
    position: absolute;
    top: 1rem;
    left: 1rem;
    background: var(--primary);
    color: #fff;
    font-size: 0.8rem;
    font-weight: 600;
    padding: 0.35rem 0.9rem;
    border-radius: 999px;
}

.news-card-tag {
    position: absolute;
    top: 1rem;
    left: 1rem;
    background: var(--dark);
    color: #fff;
    font-size: 0.8rem;
    font-weight: 600;
    padding: 0.35rem 0.9rem;
    border-radius: 999px;
}

.news-card-body {
    padding: 1.75rem;
    display: flex;
    flex-direction: column;
    flex-grow: 1;
}

.news-card-title {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--dark);
    margin-bottom: 1rem;
    line-height: 1.5;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.news-card-text {
    color: #666;
    font-size: 0.92rem;
    line-height: 1.75;
    margin-bottom: 1.25rem;
    flex-grow: 1;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.news-card-link {
    color: var(--primary);
    font-weight: 600;
    font-size: 0.9rem;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    transition: color .3s ease;
}

.news-card-link:hover {
    color: var(--dark);
}

.news-card-link i {
    transition: transform .3s ease;
}

.news-card-link:hover i {
    transform: translateX(4px);
}

/* 案例卡片统计数据 */
.news-card-stats {
    display: flex;
    gap: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid #f0f0f0;
    margin-top: auto;
}

.news-card-stats span {
    font-size: 0.85rem;
    color: #666;
    display: inline-flex;
    align-items: center;
}

/* 响应式调整 */
/* 横向卡片：仅企业动态页（成功案例页 body 也含 .page-news，故排除 .page-cases） */
@media (min-width: 768px) {
    body.page-news:not(.page-cases) .news-card {
        flex-direction: row;
        gap: 1.5rem;
        align-items: stretch;
    }

    body.page-news:not(.page-cases) .news-card-img {
        flex: 0 0 42%;
        align-self: stretch;
        min-height: 0;
        aspect-ratio: unset;
        /* 与右侧文案列等高，图片铺满左侧，消除底部白边 */
    }

    body.page-news:not(.page-cases) .news-card-img img {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

    body.page-news:not(.page-cases) .news-card-body {
        padding: 2rem;
        display: flex;
        flex-direction: column;
        justify-content: flex-start;
    }
}

/* 企业动态：字号、日期位置、底部「阅读更多」按钮（不影响成功案例页） */
body.page-news:not(.page-cases) .news-card-title {
    font-size: 20px;
    margin-bottom: 0.35rem;
    line-height: 1.45;
}

body.page-news:not(.page-cases) .news-card-published {
    display: block;
    color: #888;
    font-size: 16px;
    font-weight: 500;
    margin-bottom: 0.75rem;
}

body.page-news:not(.page-cases) .news-card-text {
    font-size: 16px;
    line-height: 1.75;
    /* 固定为三行高度，超出裁切且不显示省略号（不使用 line-clamp） */
    display: block;
    -webkit-line-clamp: unset;
    -webkit-box-orient: unset;
    overflow: hidden;
    max-height: calc(1.75em * 3);
    text-overflow: clip;
}

body.page-news:not(.page-cases) .news-card-actions {
    margin-top: auto;
    padding-top: 0.75rem;
    align-self: flex-start;
}

body.page-news:not(.page-cases) .news-card-actions .btn,
body.page-news:not(.page-cases) .news-card-readmore {
    padding: 0.5rem 0.9rem;
    border-radius: 10px;
    font-weight: 700;
    box-shadow: 0 6px 18px rgba(0, 174, 255, .08);
}

body.page-news:not(.page-cases) .news-card-readmore i {
    transition: transform .25s ease;
}

body.page-news:not(.page-cases) .news-card-readmore:hover i {
    transform: translateX(4px);
}

/* 企业动态 / 成功案例 · 分页（与主色、圆角、留白统一；body 含 .page-news 即可） */
body.page-news .news-pagination {
    --news-pg-muted: #e8ecef;
    --news-pg-ink: #333;
}

body.page-news .news-pagination__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.5rem 0.75rem;
    margin-top: 4.25rem;
    padding-top: 0;
    border: none;
}

@media (min-width: 768px) {
    body.page-news .news-pagination__inner {
        margin-top: 6rem;
    }
}

body.page-news .news-pg-btn {
    width: 2.5rem;
    height: 2.5rem;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: var(--news-pg-muted);
    color: #6c757d;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background .2s ease, color .2s ease, opacity .2s ease;
}

body.page-news .news-pg-btn:not(:disabled):hover {
    background: #dde3e8;
    color: var(--dark);
}

body.page-news .news-pg-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

body.page-news .news-pg-pages li {
    list-style: none;
}

body.page-news .news-pg-num {
    min-width: 2.5rem;
    height: 2.5rem;
    padding: 0 0.35rem;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: var(--news-pg-ink);
    font-weight: 600;
    font-size: 0.95rem;
    line-height: 1;
    transition: background .2s ease, color .2s ease;
}

body.page-news .news-pg-num:hover:not(.is-active) {
    background: rgba(0, 174, 255, .1);
    color: var(--primary);
}

body.page-news .news-pg-num.is-active {
    background: var(--primary);
    color: #fff;
    cursor: default;
}

body.page-news .news-pg-ellipsis {
    padding: 0 0.15rem;
    color: #999;
    font-weight: 600;
    user-select: none;
}

body.page-news .news-pg-jump__label {
    color: var(--dark);
    font-size: 0.95rem;
    white-space: nowrap;
}

body.page-news .news-pg-jump__input {
    width: 3.25rem;
    max-width: 5rem;
    padding: 0.35rem 0.4rem;
    text-align: center;
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--dark);
    border: 1px solid #e0e4e8;
    border-radius: 10px;
    background: var(--news-pg-muted);
}

body.page-news .news-pg-jump__input:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 2px rgba(0, 174, 255, .2);
}

/* 成功案例页：卡片正文字号；学生/件统计沿用默认；左上角地区标签主色蓝（banner 标题与其他内页共用 display-3） */
body.page-cases .news-card-text {
    font-size: 16px;
}

body.page-cases .news-card-tag {
    background: var(--primary);
    color: #fff;
}

@media (max-width: 767.98px) {
    .news-card-body {
        padding: 1.25rem;
    }

    .news-card-title {
        font-size: 1rem;
    }

    .news-card-text {
        font-size: 0.88rem;
    }

    .news-card-stats {
        gap: 1rem;
    }

    body.page-cases .news-card-text {
        font-size: 16px;
    }
}