:root{
  --teal-50:#F0FDFA; --teal-100:#CCFBF1; --teal-200:#99F6E4; --teal-300:#5EEAD4; --teal-500:#14B8A6; --teal-600:#0D9488; --teal-700:#0F766E;
  --orange-500:#F97316; --orange-600:#EA580C; --orange-50:#FFF7ED;
  --slate-50:#F8FAFC; --slate-100:#F1F5F9; --slate-200:#E2E8F0; --slate-300:#CBD5E1; --slate-400:#94A3B8; --slate-500:#64748B; --slate-600:#475569; --slate-700:#334155; --slate-800:#1E293B; --slate-900:#0F172A;
  --radius-sm:8px; --radius:12px; --radius-lg:20px; --radius-xl:28px;
  --shadow-sm:0 1px 2px rgba(15,23,42,.05);
  --shadow:0 4px 14px rgba(15,23,42,.06);
  --shadow-lg:0 12px 32px rgba(15,23,42,.08);
}
*{box-sizing:border-box; margin:0; padding:0;}
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif; color:var(--slate-800); background:var(--slate-50); font-size:14px; line-height:1.6;}
.wrap{max-width:1320px; margin:0 auto; padding:0 32px;}
.container{max-width:1280px; margin:0 auto;}

h2.section-title{font-size:22px; font-weight:700; color:var(--slate-900); margin:48px 0 20px; display:flex; align-items:center; gap:12px;}
h2.section-title::before{content:""; width:5px; height:22px; background:var(--teal-600); border-radius:3px;}
h2.section-title .badge{font-size:11px; padding:3px 10px; background:var(--orange-50); color:var(--orange-600); border-radius:99px; font-weight:500;}
.note{color:var(--slate-500); font-size:12px; margin:-12px 0 16px;}

/* ========== 顶部导航 ========== */
.nav{background:#fff; border-bottom:1px solid var(--slate-100); padding:0 32px; display:flex; align-items:center; height:68px;}
.nav-logo{font-size:19px; font-weight:800; color:var(--teal-700); letter-spacing:.5px; margin-right:auto; white-space:nowrap;}
.nav-menu{display:flex; gap:4px;}
.nav-menu a{padding:8px 16px; color:var(--slate-600); font-size:14px; font-weight:500; text-decoration:none; border-radius:8px; transition:all .2s;}
.nav-menu a.active,.nav-menu a:hover{color:var(--teal-700); background:var(--teal-50);}
.nav-cta{background:var(--orange-500); color:#fff; padding:9px 18px; border-radius:99px; font-size:13px; font-weight:600; margin-left:12px;}

/* ========== 1. 首页 ========== */
/* Home Hero：文字层是真实 DOM（H1 可抓取 / 可选中 / 随屏幕缩放清晰）
   主视觉是纯氛围图（唇齿特写，不含文字、不含完整人像），不承载任何事实信息 */
.home-hero{position:relative; width:100%; overflow:hidden;
  /* 深青底：左侧最暗托住文字，右侧稍亮与主视觉图的深青底色自然衔接 */
  background:radial-gradient(126% 132% at 80% 44%,
    #0E5B55 0%, #0A4742 32%, #073430 64%, #052321 100%);
  min-height:clamp(420px, 60vh, 596px); display:flex; align-items:center;}
/* 主视觉：唇齿特写，横向构图，右置 64% 宽（图片 1.66:1 与容器近乎同比，几乎不裁切）。
   两层 mask 取交集：① 102deg 横向从左溶入深青底，完全显示点须早于牙齿左端；
   ② 顶部 9% 纵向渐隐 —— 图片顶边就是裁切边（上方皮肤块），不软化会在深青底上"凸"出来一块 */
.home-hero .hero-img{position:absolute; z-index:0; top:0; right:0; bottom:0;
  width:64%; height:100%;
  object-fit:cover; object-position:50% 50%;
  -webkit-mask-image:linear-gradient(102deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.42) 10%, #000 30%),
                     linear-gradient(180deg, rgba(0,0,0,0) 0%, #000 9%);
  -webkit-mask-composite:source-in;
  mask-image:linear-gradient(102deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.42) 10%, #000 30%),
              linear-gradient(180deg, rgba(0,0,0,0) 0%, #000 9%);
  mask-composite:intersect;}
.home-hero .hero-carousel{position:absolute; inset:0; z-index:0;}
.home-hero .hero-carousel img{position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; filter:blur(26px) saturate(1.05) brightness(.9); transform:scale(1.12);}
/* 遮罩分两层背景：① 底部 16% 压暗，让主视觉下沿溶进深青底而不是硬切一刀；
   ② 横向渐变只在左侧加强以保证文字对比度，56% 之后基本放行，让牙齿保持明亮清晰 */
.home-hero .hero-veil{position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(180deg, rgba(7,40,37,0) 84%, rgba(7,40,37,.62) 100%),
    linear-gradient(97deg, rgba(7,40,37,.94) 0%, rgba(7,40,37,.88) 26%,
    rgba(8,48,44,.55) 40%, rgba(8,48,44,.14) 56%, rgba(8,48,44,0) 64%);}
.home-hero .hero-glow{position:absolute; z-index:1; pointer-events:none;
  right:-14%; top:-46%; width:66%; height:190%;
  background:radial-gradient(closest-side, rgba(217,235,234,.22), rgba(217,235,234,0) 74%);}
.home-hero .hero-inner{position:relative; z-index:2; width:100%;
  padding:82px 32px 66px; box-sizing:border-box;}
.hero-eyebrow{display:inline-flex; align-items:center; gap:9px;
  font-size:12.5px; font-weight:600; letter-spacing:1.6px;
  color:#BFE4DF; margin:0 0 20px;}
.hero-eyebrow::before{content:""; width:22px; height:2px; border-radius:2px;
  background:var(--orange-500);}
.hero-title{margin:0 0 18px; font-size:clamp(28px, 4.2vw, 46px); font-weight:800;
  line-height:1.24; color:#fff; letter-spacing:.5px;}
.hero-title em{font-style:normal; color:#D9EBEA;}
/* 四个短语各自成块 ⇒ 手机端只在「·」处换行，不会把「真实评价」拆两行 */
.hero-sub{margin:0; font-size:15px; line-height:1.8; color:rgba(255,255,255,.76);}
.hero-sub span{display:inline-block;}
.hero-sub i{font-style:normal; opacity:.45; margin:0 7px;}
.hero-actions{display:flex; flex-wrap:wrap; gap:12px; margin:30px 0 0;}
.hero-stats{display:flex; flex-wrap:wrap; gap:14px 38px; list-style:none;
  margin:42px 0 0; padding:22px 0 0; border-top:1px solid rgba(255,255,255,.15);}
.hero-stats li{display:flex; flex-direction:column; gap:4px;}
.hero-stats li b{font-size:19px; font-weight:800; color:#fff; letter-spacing:.3px;}
.hero-stats li span{font-size:11.5px; color:rgba(255,255,255,.58); letter-spacing:.6px;}
@media (max-width:768px){
  .home-hero{min-height:auto; display:block;}
  /* 手机端改「上图下文」：唇齿特写是横向构图，窄屏铺满当背景只会剩一条牙缝（读不出是嘴），
     所以裁成顶部笑容带完整露出牙列，下沿渐隐溶进深青底，文字整体落到图片下方 */
  .home-hero .hero-img{position:relative; top:auto; right:auto; bottom:auto;
    display:block; width:100%; height:198px;
    object-fit:cover; object-position:50% 34%; opacity:1;
    -webkit-mask-image:linear-gradient(180deg, #000 0%, #000 58%, rgba(0,0,0,0) 92%);
    mask-image:linear-gradient(180deg, #000 0%, #000 58%, rgba(0,0,0,0) 92%);}
  .home-hero .hero-veil{background:linear-gradient(180deg,
    rgba(7,40,37,0) 0%, rgba(7,40,37,.45) 26%, rgba(7,40,37,.62) 36%, rgba(7,40,37,.9) 100%);}
  .home-hero .hero-inner{padding:6px 20px 44px;}
  .hero-eyebrow{font-size:11.5px; letter-spacing:1.2px; margin-bottom:14px;}
  .hero-title{margin-bottom:14px; line-height:1.3;}
  .hero-sub{font-size:13.5px; line-height:1.75;}
  .hero-actions{margin-top:22px;}
  .hero-actions .btn{padding:12px 22px; font-size:14px;}
  .hero-stats{gap:12px 22px; margin-top:30px; padding-top:18px;}
  .hero-stats li b{font-size:16px;}
  .hero-stats li span{font-size:10.5px;}
}
.btn{display:inline-flex; align-items:center; gap:8px; padding:14px 28px; border-radius:99px; font-size:15px; font-weight:600; text-decoration:none; transition:all .2s; border:none; cursor:pointer;}
.btn-primary{background:var(--orange-500); color:#fff; box-shadow:0 6px 20px rgba(249,115,22,.4);}
.btn-primary:hover{background:var(--orange-600); transform:translateY(-2px);}
.btn-ghost{background:rgba(255,255,255,.15); color:#fff; border:1.5px solid rgba(255,255,255,.3); backdrop-filter:blur(8px);}
.btn-ghost:hover{background:rgba(255,255,255,.25);}

/* 区块标题 */
.sec-head{text-align:center; margin:80px 0 48px;}
.sec-head .eyebrow{display:inline-block; padding:5px 14px; background:var(--teal-50); color:var(--teal-700); border-radius:99px; font-size:12px; font-weight:600; letter-spacing:1px; margin-bottom:12px;}
.sec-head h2{font-size:36px; font-weight:800; color:var(--slate-900); margin-bottom:10px;}
.sec-head p{color:var(--slate-500); font-size:15px;}

/* 服务项目 - 大分类 */
.svc-tabs{display:flex; gap:12px; justify-content:center; margin-bottom:24px; flex-wrap:wrap;}
.svc-tabs .tab{padding:12px 22px; background:#fff; border:2px solid var(--slate-200); border-radius:99px; font-size:14px; font-weight:600; color:var(--slate-600); cursor:pointer; transition:all .2s;}
.svc-tabs .tab.active{background:var(--teal-600); color:#fff; border-color:var(--teal-600); box-shadow:0 4px 14px rgba(13,148,136,.3);}

/* 细分分类 */
.svc-subtabs{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:32px; padding-bottom:24px; border-bottom:1px dashed var(--slate-200);}
.svc-subtabs .stab{padding:7px 16px; background:var(--slate-100); color:var(--slate-600); border-radius:99px; font-size:13px; font-weight:500; cursor:pointer;}
.svc-subtabs .stab.active{background:var(--teal-50); color:var(--teal-700); font-weight:600;}

/* 服务卡片 */
.svc-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:20px;}
/* 参考价说明（医疗合规：明示价格为参考起价，以面诊方案为准） */
/* 价格与费用说明模块（2026-10-27 第二轮：由单段文案升级为结构化要点，
   内容来自 site_config.price_note，静态兜底 / SSR / JS 三处输出一致） */
.svc-price-note{margin:26px 0 0; padding:22px 24px; background:#F1F8F8; border-left:3px solid var(--teal-500); border-radius:0 8px 8px 0; font-size:13px; color:var(--slate-600); line-height:1.78;}
.svc-price-note .pn-lead{margin:0 0 14px; font-size:13.5px; color:var(--slate-700);}
.svc-price-note .pn-list{margin:0; padding:0; list-style:none; display:grid; gap:10px;}
.svc-price-note .pn-list li{position:relative; padding-left:15px;}
.svc-price-note .pn-list li::before{content:""; position:absolute; left:0; top:8px; width:5px; height:5px; border-radius:50%; background:var(--teal-500);}
.svc-price-note .pn-list b{color:var(--slate-800); font-weight:700;}
@media (max-width:768px){.svc-price-note{padding:18px 18px;}}
.svc-card{background:#fff; border-radius:var(--radius-lg); padding:30px; border:1px solid var(--slate-200); transition:all .25s; position:relative; overflow:hidden;}
.svc-card::before{content:""; position:absolute; top:0; left:0; right:0; height:3px; background:linear-gradient(90deg,var(--teal-500),var(--teal-300)); transform:scaleX(0); transform-origin:left; transition:transform .3s;}
.svc-card:hover{transform:translateY(-4px); box-shadow:var(--shadow-lg); border-color:var(--teal-200);}
.svc-card:hover::before{transform:scaleX(1);}
.svc-icon{width:84px; height:84px; border-radius:14px; background:var(--teal-50); display:flex; align-items:center; justify-content:center; margin-bottom:20px; overflow:hidden;}
.svc-icon img{width:100%; height:100%; object-fit:cover; border-radius:14px;}
.svc-card h3, .svc-card h4{font-size:17px; font-weight:700; color:var(--slate-900); margin-bottom:8px;}
.svc-card p{color:var(--slate-500); font-size:14px; line-height:1.8; margin-bottom:14px;}
.svc-card .price{color:var(--orange-500); font-size:14px; font-weight:600; margin-bottom:10px;}
.svc-card .price s{color:var(--slate-400); font-weight:400; margin-left:6px; font-size:12px;}
.svc-link{display:inline-block; font-size:13px; color:var(--teal-600); font-weight:600; text-decoration:none; transition:color .2s;}
.svc-link:hover{color:var(--teal-700);}

/* 医生团队 - 卡片压缩版 */
.dr-section{background:var(--slate-50); padding:80px 32px; margin:80px 0 0;}
.dr-section .container{max-width:1280px; margin:0 auto;}
.dr-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:20px; margin-top:48px;}

/* 首页医生横向滑动（PC 4 列可见 / 移动端单卡，箭头翻页；无溢出时箭头隐藏） */
.dr-carousel{position:relative; margin-top:48px;}
.dr-carousel .dr-grid{display:flex; gap:20px; margin-top:0; overflow-x:auto; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; scrollbar-width:none;}
.dr-carousel .dr-grid::-webkit-scrollbar{display:none;}
.dr-carousel .drc{flex:0 0 calc((100% - 60px) / 4); scroll-snap-align:start;}
.dr-nav{position:absolute; top:120px; transform:translateY(-50%); width:42px; height:42px; border-radius:50%; border:1px solid var(--slate-200); background:#fff; color:var(--teal-700); font-size:18px; line-height:1; cursor:pointer; box-shadow:var(--shadow); z-index:5; display:none; align-items:center; justify-content:center; padding:0;}
.dr-carousel.has-overflow .dr-nav:not(:disabled){display:flex;}
.dr-nav.dr-prev{left:-16px;}
.dr-nav.dr-next{right:-16px;}
.dr-nav:hover{background:var(--teal-600); border-color:var(--teal-600); color:#fff;}

/* 门诊介绍 - 关于我们（PC 左文右图，移动端图片在上文字在下）
   旧版 `1.2fr/1fr` + `align-items:center` + 配图固定 240px 高：
   正文 1600 余字把左栏撑到 1400px，240px 的配图被垂直居中，右侧留下近千像素空白。
   现改为「左文右图顶对齐 + 右列 sticky 跟随 + 配图下挂信息条」，
   长文滚动时配图常驻视口，右列有图有信息，不再是一张孤零零的小图。 */
.about-intro-grid{display:grid; grid-template-columns:minmax(0,1fr) 384px; gap:44px; align-items:start;}

/* 右列整体 sticky：容器高 = 正文高，滚动期间配图与信息条一起跟随 */
.about-intro-side{position:sticky; top:92px; display:flex; flex-direction:column; gap:14px;}
.about-intro-side .ais-photo{border-radius:var(--radius); overflow:hidden; aspect-ratio:4/3; background:var(--slate-100);}
.about-intro-side .ais-photo img{display:block; width:100%; height:100%; object-fit:cover;}
.about-intro-side .ais-facts{background:var(--slate-50); border:1px solid var(--slate-100); border-radius:var(--radius); padding:16px 18px; display:flex; flex-direction:column; gap:11px;}
.about-intro-side .ais-row{display:flex; gap:10px; font-size:12.5px; line-height:1.62;}
.about-intro-side .ais-row span{flex:0 0 60px; color:var(--slate-500);}
.about-intro-side .ais-row b{flex:1; min-width:0; color:var(--slate-800); font-weight:600;}

/* 长文读感：首段做导语块，段间距 14→19px（数据里的 p 带 inline margin，需 !important 才压得住） */
#aboutIntroText{font-size:14.5px; line-height:2;}
#aboutIntroText > p{margin-bottom:19px !important;}
#aboutIntroText > p:last-child{margin-bottom:0 !important;}
#aboutIntroText > p:first-child{padding:16px 18px; background:var(--teal-50); border-left:3px solid var(--teal-600); border-radius:0 8px 8px 0; color:var(--slate-700);}

/* 医生团队列表卡片（大头像版） */
.drc{background:#fff; border-radius:var(--radius-lg); box-shadow:var(--shadow); overflow:hidden; transition:all .25s; display:flex; flex-direction:column;}
.drc:hover{transform:translateY(-4px); box-shadow:var(--shadow-lg);}
.drc-photo{height:240px; position:relative; overflow:hidden; border-radius:var(--radius-lg) var(--radius-lg) 0 0;}
.drc-photo img{width:100%; height:100%; object-fit:cover;}
.drc-photo .avatar-circle{position:absolute; bottom:-48px; left:50%; transform:translateX(-50%); width:96px; height:96px; border-radius:50%; background:#fff; display:flex; align-items:center; justify-content:center; box-shadow:0 6px 20px rgba(0,0,0,.08); z-index:2; overflow:hidden;}
.avatar-circle img{width:100%; height:100%; object-fit:cover; border-radius:50%;}
.drc-body{padding:20px 18px; text-align:center; display:flex; flex-direction:column; flex:1;}
.drc-body h3, .drc-body h4{font-size:17px; font-weight:700; color:var(--slate-900); margin-bottom:3px;}
.drc-body .title{font-size:12px; color:var(--teal-600); font-weight:600; margin-bottom:10px;}
.drc-body .tags{display:flex; gap:4px; flex-wrap:wrap; justify-content:center; margin-bottom:10px;}
.drc-body .tag{padding:2px 8px; background:var(--teal-50); color:var(--teal-700); border-radius:99px; font-size:10px; font-weight:500;}
.drc-body .meta{display:flex; gap:10px; font-size:11px; color:var(--slate-500); margin-bottom:12px; padding-top:8px; border-top:1px dashed var(--slate-200); justify-content:center;}
.drc-body .meta .m{display:flex; align-items:center; gap:3px;}
.drc-body .meta svg{width:11px; height:11px; stroke:var(--teal-500); fill:none; stroke-width:2;}
.drc-actions{display:flex; gap:6px; margin-top:auto;}
.drc-actions .btn{flex:1; justify-content:center; padding:7px 10px; font-size:12px; border-radius:99px;}
.drc-actions .btn-1{background:var(--orange-500); color:#fff;}
.drc-actions .btn-2{background:#fff; color:var(--teal-600); border:1px solid var(--teal-200);}

/* ===== 预约看牙 CTA ===== */
.booking-band{background:linear-gradient(135deg,#0D9488 0%,#14B8A6 100%); margin:80px 0 0; padding:64px 32px; color:#fff; position:relative; overflow:hidden;}
.booking-band::before{content:""; position:absolute; top:-80px; right:-80px; width:280px; height:280px; border-radius:50%; background:rgba(255,255,255,.05);}
.booking-band .container{max-width:1280px; margin:0 auto; display:grid; grid-template-columns:1.3fr 1fr; gap:48px; align-items:center; position:relative; z-index:1;}
.booking-band h2{font-size:32px; font-weight:800; line-height:1.3; margin-bottom:14px;}
.booking-band p{opacity:.92; font-size:15px; margin-bottom:24px;}
.booking-band .features{display:flex; gap:20px; flex-wrap:wrap; margin-bottom:24px;}
.booking-band .feat{display:flex; align-items:center; gap:8px; font-size:13px; opacity:.95;}
.booking-band .feat::before{content:"\2713"; width:18px; height:18px; border-radius:50%; background:rgba(255,255,255,.2); display:inline-flex; align-items:center; justify-content:center; font-size:11px; font-weight:700;}
.booking-form{background:rgba(255,255,255,.12); backdrop-filter:blur(12px); border:1px solid rgba(255,255,255,.2); border-radius:var(--radius-lg); padding:28px;}
.booking-form h3, .booking-form h4{font-size:16px; margin-bottom:18px; font-weight:600;}
.booking-form .row{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:10px;}
.booking-form input,.booking-form select{width:100%; padding:11px 14px; background:rgba(255,255,255,.95); border:none; border-radius:8px; color:var(--slate-800); font-size:13px; font-family:inherit;}
.booking-form input::placeholder{color:var(--slate-400);}
.booking-form .submit{width:100%; padding:13px; background:var(--orange-500); color:#fff; border:none; border-radius:99px; font-size:14px; font-weight:700; cursor:pointer; margin-top:6px;}
.booking-form .submit:hover{background:var(--orange-600);}

/* ===== 新闻动态（首页底部） ===== */
.news-section{padding:80px 32px; background:#fff;}
.news-section .container{max-width:1280px; margin:0 auto;}
.news-head{display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:32px;}
.news-head .left h2{font-size:32px; font-weight:800; color:var(--slate-900); margin-bottom:4px;}
.news-head .left p{color:var(--slate-500); font-size:14px;}
.news-head a.more{color:var(--teal-600); font-size:13px; font-weight:600; text-decoration:none;}
.news-head a.more:hover{text-decoration:underline;}
.news-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:24px;}
.news-card{background:#fff; border-radius:var(--radius-lg); border:1px solid var(--slate-200); overflow:hidden; transition:all .25s; cursor:pointer;}
.news-card:hover{box-shadow:var(--shadow-lg); transform:translateY(-2px); border-color:var(--teal-200);}
.news-thumb{height:200px; position:relative; overflow:hidden;}
.news-thumb img{width:100%; height:100%; object-fit:cover;}
.news-thumb .cat{position:absolute; top:14px; left:14px; padding:4px 12px; background:rgba(255,255,255,.95); color:var(--teal-700); font-size:11px; font-weight:600; border-radius:99px;}
.news-thumb.news-2 .cat{background:rgba(249,115,22,.95); color:#fff;}
.news-body{padding:20px 22px 22px;}
.news-body h3, .news-body h4{font-size:17px; font-weight:700; color:var(--slate-900); margin-bottom:8px; line-height:1.4;}
.news-body p.excerpt{color:var(--slate-500); font-size:13px; line-height:1.6; margin-bottom:14px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;}
.news-meta{display:flex; align-items:center; justify-content:space-between; padding-top:12px; border-top:1px dashed var(--slate-200); font-size:12px; color:var(--slate-400);}
.news-meta .tag{padding:2px 8px; background:var(--teal-50); color:var(--teal-700); border-radius:4px; font-size:11px; font-weight:500;}
.news-meta .tag.cat2{background:var(--orange-50); color:var(--orange-600);}

/* ========== 2. 服务项目 - 详情页 ========== */
.page-banner{position:relative; overflow:hidden;}
.page-banner .banner-img{width:100%; display:block; max-height:400px; object-fit:cover;}
/* doctors.html banner 与其他内页一致挂 body 下全宽，无需负 margin 抵消 */

.detail-tabs{display:flex; gap:0; background:#fff; border-bottom:1px solid var(--slate-200); padding:0 32px; overflow-x:auto;}
.detail-tabs .dtab{padding:18px 24px; color:var(--slate-500); font-size:14px; font-weight:600; cursor:pointer; border-bottom:3px solid transparent; white-space:nowrap;}
.detail-tabs .dtab.active{color:var(--teal-700); border-bottom-color:var(--teal-600);}

.detail-cat{padding:48px 32px 24px; background:var(--slate-50);}
.detail-cat .container{max-width:1280px; margin:0 auto;}
.detail-cat h3{font-size:22px; font-weight:700; color:var(--slate-900); margin-bottom:6px; display:flex; align-items:center; gap:10px;}
.detail-cat h3::before{content:""; width:4px; height:20px; background:var(--orange-500); border-radius:2px;}
.detail-cat p{color:var(--slate-500); font-size:14px; margin-bottom:20px;}

.subcat-pills{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:24px;}
.subcat-pills .pill{padding:8px 18px; background:#fff; border:1.5px solid var(--slate-200); border-radius:99px; font-size:13px; font-weight:500; color:var(--slate-600); cursor:pointer;}
.subcat-pills .pill.active{background:var(--teal-600); color:#fff; border-color:var(--teal-600);}

.service-detail-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:20px;}
.svc-detail{background:#fff; border-radius:var(--radius-lg); overflow:hidden; border:1px solid var(--slate-200); display:flex;}
.svc-detail-img{width:160px; position:relative; flex-shrink:0; overflow:hidden;}
.svc-detail-img img{width:100%; height:100%; object-fit:cover;}
.svc-detail-img .thumb-tag{position:absolute; top:10px; left:10px; right:10px; padding:3px 6px; background:var(--orange-500); color:#fff; font-size:10px; font-weight:700; border-radius:4px; text-align:center; line-height:1.3;}
.svc-detail-body{padding:20px; flex:1; display:flex; flex-direction:column;}
.svc-detail-body h4{font-size:17px; font-weight:700; color:var(--slate-900); margin-bottom:6px;}
.svc-detail-body p{color:var(--slate-500); font-size:13px; line-height:1.6; margin-bottom:10px; flex:1;}
.svc-detail-foot{display:flex; align-items:center; justify-content:space-between; padding-top:10px; border-top:1px dashed var(--slate-200);}
.svc-detail-foot .price{color:var(--orange-500); font-weight:700; font-size:14px;}
.svc-detail-foot .price s{color:var(--slate-400); font-weight:400; margin-left:4px; font-size:12px;}
.svc-detail-foot .link{color:var(--teal-600); font-size:12px; font-weight:600; text-decoration:none;}

/* ========== 3. 医生团队 - 详细介绍页 ========== */
.doctor-detail-page{padding:48px 32px; background:var(--slate-50); min-height:600px;}
.doctor-detail-page .container{max-width:1280px; margin:0 auto;}

.dd-grid{display:grid; grid-template-columns:320px 1fr; gap:32px; align-items:start;}
.dd-side{background:#fff; border-radius:var(--radius-lg); padding:32px 24px; box-shadow:var(--shadow); position:sticky; top:24px;}
.dd-avatar{width:100%; aspect-ratio:3/2; border-radius:var(--radius-lg); margin-bottom:16px; overflow:hidden;}
.dd-avatar img{width:100%; height:100%; object-fit:cover; border-radius:var(--radius-lg);}
.dd-side h2{font-size:22px; font-weight:800; color:var(--slate-900); margin-bottom:4px;}
.dd-side .title{color:var(--teal-600); font-size:14px; font-weight:600; margin-bottom:14px;}
.dd-side .tags{display:flex; flex-wrap:wrap; gap:6px; margin-bottom:16px;}
.dd-side .tag{padding:4px 10px; background:var(--teal-50); color:var(--teal-700); border-radius:99px; font-size:11px; font-weight:500;}
.dd-side .cert{background:var(--slate-50); padding:10px 12px; border-radius:8px; font-size:11px; color:var(--slate-500); margin-bottom:14px;}
.dd-side .cert strong{color:var(--slate-700);}
.dd-side .meta-row{display:flex; gap:14px; padding-top:14px; border-top:1px dashed var(--slate-200); margin-bottom:18px;}
.dd-side .mr{display:flex; align-items:center; gap:5px; font-size:12px; color:var(--slate-500);}
.dd-side .mr svg{width:14px; height:14px; stroke:var(--teal-500); fill:none; stroke-width:2;}
.dd-side .actions{display:flex; flex-direction:column; gap:8px;}
.dd-side .actions .btn{justify-content:center; padding:11px; font-size:13px;}

.dd-content > section{background:#fff; border-radius:var(--radius-lg); padding:32px; box-shadow:var(--shadow); margin-bottom:20px;}
.dd-content h3{font-size:18px; font-weight:700; color:var(--slate-900); margin-bottom:18px; padding-bottom:12px; border-bottom:2px solid var(--teal-50); position:relative;}
.dd-content h3::after{content:""; position:absolute; bottom:-2px; left:0; width:60px; height:2px; background:var(--teal-600);}

.dd-bio{color:var(--slate-600); font-size:14px; line-height:1.85;}
.dd-bio p{margin-bottom:10px;}

.dd-skills{display:grid; grid-template-columns:repeat(2,1fr); gap:10px;}
.dd-skill{background:var(--slate-50); padding:12px 14px; border-radius:8px; border-left:3px solid var(--teal-500);}
.dd-skill .sk{font-size:13px; font-weight:600; color:var(--slate-800); margin-bottom:2px;}
.dd-skill .lv{font-size:11px; color:var(--teal-600);}

.dd-timeline{position:relative; padding-left:24px;}
.dd-timeline::before{content:""; position:absolute; left:6px; top:6px; bottom:6px; width:2px; background:var(--teal-100);}
.tl-item{position:relative; padding-bottom:18px;}
.tl-item::before{content:""; position:absolute; left:-22px; top:5px; width:12px; height:12px; border-radius:50%; background:var(--teal-600); border:2px solid #fff; box-shadow:0 0 0 2px var(--teal-100);}
.tl-item .yr{font-size:12px; color:var(--teal-600); font-weight:700; margin-bottom:3px;}
.tl-item .ev{font-size:13px; color:var(--slate-700);}

.dd-cases{display:grid; grid-template-columns:repeat(3,1fr); gap:14px;}
.dd-case{background:var(--slate-50); border-radius:10px; overflow:hidden;}
.dd-case-img{height:120px; overflow:hidden;}
.dd-case-img img{width:100%; height:100%; object-fit:cover;}
.dd-case-body{padding:12px 14px;}
.dd-case-body h5{font-size:13px; font-weight:700; color:var(--slate-800); margin-bottom:3px;}
.dd-case-body p{font-size:11px; color:var(--slate-500);}

/* ========== 4. AI 诊断页 ========== */
.ai-banner{position:relative; overflow:hidden;}
.ai-banner .banner-img{width:100%; display:block;}

.ai-main{padding:64px 32px; background:var(--slate-50);}
.ai-main .container{max-width:1100px; margin:0 auto;}
.ai-grid{display:grid; grid-template-columns:1fr 1fr; gap:24px;}
.ai-panel{background:#fff; border-radius:var(--radius-lg); padding:32px; box-shadow:var(--shadow);}
.ai-panel h3{font-size:18px; font-weight:700; color:var(--slate-900); margin-bottom:18px; display:flex; align-items:center; gap:10px;}
.ai-panel h3 .ico{width:32px; height:32px; border-radius:8px; background:var(--teal-50); display:flex; align-items:center; justify-content:center; color:var(--teal-600); font-size:16px;}

.symptom-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:18px;}
.symptom-grid label{display:flex; align-items:center; gap:6px; padding:10px 12px; background:var(--slate-50); border:1.5px solid var(--slate-200); border-radius:8px; font-size:12px; cursor:pointer; transition:all .2s;}
.symptom-grid label.on{background:var(--teal-50); border-color:var(--teal-500); color:var(--teal-700); font-weight:600;}
.symptom-grid input{display:none;}

.upload-zone{border:2px dashed var(--slate-300); border-radius:var(--radius); padding:24px; text-align:center; color:var(--slate-500); margin-bottom:18px; transition:all .2s;}
.upload-zone:hover{border-color:var(--teal-500); background:var(--teal-50); color:var(--teal-600);}
.upload-zone .ico{font-size:32px; margin-bottom:6px;}

textarea{width:100%; padding:12px 14px; border:1.5px solid var(--slate-200); border-radius:8px; font-family:inherit; font-size:13px; resize:vertical; min-height:80px; margin-bottom:14px;}
textarea:focus{outline:none; border-color:var(--teal-500);}

.btn-ai{width:100%; padding:14px; background:linear-gradient(135deg,var(--teal-600),var(--teal-500)); color:#fff; border:none; border-radius:99px; font-size:15px; font-weight:700; cursor:pointer;}
.btn-ai:hover{transform:translateY(-1px); box-shadow:0 6px 20px rgba(13,148,136,.3);}

.ai-result-head{display:flex; align-items:center; gap:12px; padding-bottom:14px; border-bottom:1px solid var(--slate-100); margin-bottom:16px;}
.ai-result-head .ribbon{padding:4px 12px; background:var(--orange-50); color:var(--orange-600); border-radius:99px; font-size:11px; font-weight:700;}
.ai-result-head .time{color:var(--slate-400); font-size:11px; margin-left:auto;}

.ai-result-body{color:var(--slate-700); font-size:14px; line-height:1.85;}
.ai-result-body h5{font-size:13px; color:var(--slate-500); font-weight:600; margin:14px 0 6px; text-transform:uppercase; letter-spacing:.5px;}
.ai-result-body p{margin-bottom:8px;}

.dept-tag{display:inline-block; padding:5px 14px; background:var(--teal-50); color:var(--teal-700); border-radius:99px; font-size:12px; font-weight:600; margin:2px;}

.ai-disclaimer{background:#FEF3C7; border-left:3px solid #F59E0B; padding:10px 14px; border-radius:6px; font-size:11px; color:#92400E; margin-top:14px;}

/* AI 模型说明 */
.ai-engine{padding:48px 32px; background:#fff; text-align:center;}
.ai-engine .container{max-width:900px; margin:0 auto;}
.ai-engine h2{font-size:26px; font-weight:800; color:var(--slate-900); margin-bottom:12px;}
.ai-engine p{color:var(--slate-500); font-size:14px; max-width:680px; margin:0 auto 24px;}
.ai-models{display:flex; gap:14px; justify-content:center; flex-wrap:wrap;}
.ai-model{background:var(--slate-50); border:1px solid var(--slate-200); border-radius:12px; padding:14px 22px; display:flex; align-items:center; gap:10px;}
.ai-model .badge{width:32px; height:32px; border-radius:8px; background:linear-gradient(135deg,var(--teal-500),var(--teal-300)); display:flex; align-items:center; justify-content:center; color:#fff; font-weight:700; font-size:14px;}
.ai-model .name{font-size:13px; font-weight:600; color:var(--slate-700);}

/* ========== 5. 联系我们 ========== */
.contact-page{padding:48px 32px; background:var(--slate-50); min-height:600px;}
.contact-page .container{max-width:1280px; margin:0 auto; display:grid; grid-template-columns:1fr 1.3fr; gap:32px; align-items:stretch;}

.contact-info-card{background:#fff; border-radius:var(--radius-lg); padding:28px; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:22px;}
.cinfo-row{display:flex; gap:14px; align-items:flex-start;}
.cinfo-row .ico{width:44px; height:44px; border-radius:50%; background:var(--teal-50); color:var(--teal-600); display:flex; align-items:center; justify-content:center; font-size:20px; flex-shrink:0;}
.cinfo-row h3, .cinfo-row h4{font-size:15px; font-weight:700; color:var(--slate-900); margin-bottom:3px;}
.cinfo-row p{font-size:13px; color:var(--slate-500); line-height:1.6;}
.qr-card{margin-top:auto; padding:18px; background:var(--slate-50); border-radius:var(--radius); text-align:center;}
.qr-card .qr-placeholder{width:110px; height:110px; background:#fff; border:1px dashed var(--slate-300); border-radius:8px; margin:0 auto 10px; display:flex; align-items:center; justify-content:center; color:var(--slate-400); font-size:11px;}
.qr-card p{font-size:12px; color:var(--slate-500);}

.nav-image-card{background:#fff; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow); display:flex; flex-direction:column;}
.nav-image-mock{flex:1; min-height:360px; background:linear-gradient(180deg,#E6FFFA 0%,#CCFBF1 50%,#B2F5EA 100%); position:relative; display:flex; align-items:center; justify-content:center; overflow:hidden;}
.nav-image-mock .road{position:absolute; background:#fff; border:1px solid rgba(148,163,184,.25); border-radius:3px;}
.nav-image-mock .road-h1{height:6px; top:32%; left:5%; right:15%;}
.nav-image-mock .road-h2{height:6px; top:66%; left:20%; right:5%;}
.nav-image-mock .road-v1{width:6px; left:30%; top:10%; bottom:15%;}
.nav-image-mock .road-v2{width:6px; left:70%; top:20%; bottom:5%;}
.nav-image-mock .pin{position:absolute; top:30%; left:28%; width:36px; height:36px; background:var(--orange-500); border-radius:50% 50% 50% 0; transform:rotate(-45deg); box-shadow:0 4px 12px rgba(249,115,22,.4); display:flex; align-items:center; justify-content:center;}
.nav-image-mock .pin::after{content:""; width:14px; height:14px; background:#fff; border-radius:50%;}
.nav-image-mock .pin-label{position:absolute; top:20%; left:20%; background:var(--slate-900); color:#fff; font-size:12px; font-weight:600; padding:5px 12px; border-radius:6px; white-space:nowrap; box-shadow:0 4px 10px rgba(0,0,0,.15);}
.nav-image-mock .pin-label::after{content:""; position:absolute; bottom:-5px; left:50%; transform:translateX(-50%); border-left:5px solid transparent; border-right:5px solid transparent; border-top:5px solid var(--slate-900);}
.nav-image-mock .compass{position:absolute; top:14px; right:14px; width:36px; height:36px; border-radius:50%; border:2px solid rgba(148,163,184,.4); background:rgba(255,255,255,.85); display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; color:var(--teal-700);}
.nav-image-mock .scale-bar{position:absolute; bottom:16px; left:16px; display:flex; align-items:center; gap:6px; font-size:11px; color:var(--slate-500);}
.nav-image-mock .scale-bar .bar{width:60px; height:4px; background:var(--slate-400); border-radius:2px;}
.nav-image-caption{padding:14px 20px; font-size:12px; color:var(--slate-500); text-align:center; border-top:1px solid var(--slate-100);}
/* 后台上传导航示意图后：隐藏 CSS 装饰元素，整块显示上传图片 */
.nav-image-mock.has-img{background:#fff;}
.nav-image-mock.has-img > div{display:none;}
.nav-image-mock.has-img > img{display:block !important; width:100%; height:100%; object-fit:cover;}
.nav-image-actions{padding:0 20px 20px; display:flex; gap:12px;}
.nav-image-actions .btn{flex:1; justify-content:center; font-size:14px;}

/* ========== 服务详情页 ========== */
.sd-page{padding:64px 32px; background:var(--slate-50); min-height:600px;}
.sd-page .container{max-width:1280px; margin:0 auto;}
.sd-grid{display:grid; grid-template-columns:1.4fr 1fr; gap:32px; align-items:start;}
.sd-main{background:#fff; border-radius:var(--radius-lg); box-shadow:var(--shadow); overflow:hidden;}
.sd-main-img{aspect-ratio:1/1; height:auto; overflow:hidden; position:relative;}
.sd-main-img img{width:100%; height:100%; object-fit:cover;}
.sd-main-img .tag{position:absolute; top:16px; left:16px; padding:5px 12px; background:var(--orange-500); color:#fff; font-size:11px; font-weight:700; border-radius:99px;}
.sd-main-body{padding:32px;}
.sd-main-body h1{font-size:28px; font-weight:800; color:var(--slate-900); margin-bottom:10px;}
.sd-main-body .lead{color:var(--slate-500); font-size:15px; line-height:1.7; margin-bottom:24px;}
.sd-block{margin-bottom:28px;}
.sd-block h3{font-size:17px; font-weight:700; color:var(--slate-900); margin-bottom:12px; display:flex; align-items:center; gap:8px;}
.sd-block h3::before{content:""; width:4px; height:18px; background:var(--teal-600); border-radius:2px;}
.sd-block p,.sd-block li{color:var(--slate-600); font-size:14px; line-height:1.85;}
.sd-block ul{margin-left:20px;}
.sd-block li{margin-bottom:6px;}

/* ---------------------------------------------------------------- 正文区块兜底
   .sd-block 的样式**实际从未生效过**：富文本白名单（ssr.py::_clean_children 的
   `ch.attrs = {}` 与 geo-banner.js::clean() 的 removeAttribute 循环）会把所有
   div 的 class 属性清空，`<div class="sd-block">` 到了浏览器里就是裸 `<div>`。
   而竖条是靠 `.sd-block h3::before` 生成的 —— 命中不了这个类，22 项服务正文的
   小标题就全部丢了竖条，小节之间也没有 28px 间距。
   ⚠️ 选择器层级不能写成 `.sd-main-body > div` —— 真实结构比它**多一层**：
      .sd-main-body 内先有 <h1> 与 .lead，正文包在 `<div class="sd-body">` 里，
      剥掉 class 的区块 div 是 **.sd-body 的直接子级**，即 .sd-main-body > .sd-body > div。
      实测 `.sd-main-body > div > h3` 命中 0 个元素、竖条 content 仍是 none。
   故这里以 .sd-body 为锚（后端 ssr.py 与前端 geo-banner.js 都以它为正文容器），
   同时保留 .sd-main-body 作用域限定 —— 二者都只服务详情页，不会外溢到其他页面。
   权重说明：`.sd-main-body .sd-body > div > h3` 为 (0,3,1)，高于 425 行那组
   `.sd-main-body h3` 的 (0,1,1)，无需 !important 即可稳定生效。 */
.sd-main-body .sd-body > div{margin-bottom:28px;}
.sd-main-body .sd-body > div > h3{font-size:17px; font-weight:700; color:var(--slate-900); margin:0 0 12px; display:flex; align-items:center; gap:8px;}
.sd-main-body .sd-body > div > h3::before{content:""; flex:none; width:4px; height:18px; background:var(--teal-600); border-radius:2px;}
.sd-main-body .sd-body > div > p,
.sd-main-body .sd-body > div > ul > li,
.sd-main-body .sd-body > div > ol > li{color:var(--slate-600); font-size:14px; line-height:1.85;}
.sd-main-body .sd-body > div > ul{margin-left:20px;}
.sd-main-body .sd-body > div > ol{margin-left:20px;}
.sd-main-body .sd-body > div > ul > li,
.sd-main-body .sd-body > div > ol > li{margin-bottom:6px;}
.sd-main-body .sd-body > div:last-child{margin-bottom:0;}
.sd-main-body .sd-body > div > h3 + p{margin-top:0;}
/* ---- 段落/表格间距（两处锚点都要覆盖，缺一即漏） ----
   全局 reset 是 `*{margin:0;padding:0}`（第 10 行），所有 p 的段间距都被清零；
   而 447-463 行那组容器正文规则只给 `.nd-article .nd-body p` 补了 16px 下边距，
   **漏了整个 .sd-main-body** —— 后果不是「间距小一点」，而是多个段落上下紧贴、
   视觉上并成一整块（22 项服务正文普遍是「导语 + 多处问答」，全部受影响）。
   实测线上真实结构有**两个**段落落点，用单条 `> div > p` 只能覆盖后者：
     ① .sd-body > p            —— 导语（正文第一段，直系在容器下，不在任何 div 内）
     ② .sd-body > div > p      —— 区块内段落
   遗漏 ① 时，导语会与首个区块标题紧贴。故两层都写。
   表格同理：区块内的表格（对比表、费用构成表）需要与后续段落拉开距离。 */
.sd-main-body .sd-body > p,
.sd-main-body .sd-body > div > p{margin-bottom:16px;}
.sd-main-body .sd-body > p:last-child,
.sd-main-body .sd-body > div > p:last-child{margin-bottom:0;}
.sd-main-body .sd-body > div > table{margin-bottom:16px;}
.sd-main-body .sd-body > div > table:last-child{margin-bottom:0;}
.sd-flow{display:flex; gap:8px; margin-top:10px;}
.sd-flow .step{flex:1; background:var(--slate-50); border-radius:10px; padding:14px 10px; text-align:center;}
.sd-flow .step .num{width:24px; height:24px; border-radius:50%; background:var(--teal-600); color:#fff; font-size:12px; font-weight:700; display:inline-flex; align-items:center; justify-content:center; margin-bottom:8px;}
.sd-flow .step .txt{font-size:12px; color:var(--slate-700); font-weight:600;}
.sd-side{position:sticky; top:24px; display:flex; flex-direction:column; gap:16px;}
.sd-cta{background:#fff; border-radius:var(--radius-lg); box-shadow:var(--shadow); padding:24px;}
.sd-cta h4{font-size:16px; font-weight:700; color:var(--slate-900); margin-bottom:10px;}
.sd-cta p{color:var(--slate-500); font-size:13px; margin-bottom:14px; line-height:1.6;}
.sd-cta .btn{width:100%; justify-content:center; margin-bottom:8px;}
.sd-cta .hint{font-size:11px; color:var(--slate-400); text-align:center;}
.sd-info{background:#fff; border-radius:var(--radius-lg); box-shadow:var(--shadow); padding:20px;}
.sd-info h4{font-size:14px; font-weight:700; margin-bottom:10px; color:var(--slate-900);}
.sd-info .row{display:flex; gap:10px; font-size:12px; color:var(--slate-500); margin-bottom:8px;}
.sd-info .row svg{width:14px; height:14px; stroke:var(--teal-500); fill:none; stroke-width:2; flex-shrink:0;}

/* 医生详情页胶囊标签 */
.dr-pills{display:flex; gap:12px; flex-wrap:wrap;}
.dr-pill{padding:12px 22px; background:#fff; border:2px solid var(--slate-200); border-radius:99px; font-size:14px; font-weight:600; color:var(--slate-600); cursor:pointer; transition:all .2s; box-shadow:var(--shadow-sm);}
.dr-pill.active{background:var(--teal-600); color:#fff; border-color:var(--teal-600); box-shadow:0 4px 14px rgba(13,148,136,.3);}
.dr-pill:hover:not(.active){border-color:var(--teal-300); color:var(--teal-700);}

/* 门诊介绍页 */
.clinic-page{padding:48px 32px; background:var(--slate-50);}
.clinic-page .container{max-width:1280px; margin:0 auto;}
.clinic-cert-card{background:#fff; border-radius:var(--radius-lg); padding:32px; box-shadow:var(--shadow); display:flex; align-items:center; gap:24px; margin-bottom:32px;}
.clinic-cert-card .cert-icon{width:72px; height:72px; border-radius:50%; background:var(--teal-50); display:flex; align-items:center; justify-content:center; font-size:36px; flex-shrink:0;}
.clinic-cert-card .cert-body{flex:1;}
.clinic-cert-card h1, .clinic-cert-card h2{font-size:24px; font-weight:800; color:var(--slate-900); margin-bottom:6px;}
.clinic-cert-card p{color:var(--slate-500); font-size:13px; margin-bottom:3px;}
.clinic-cert-card .cert-badge{background:var(--teal-600); color:#fff; padding:12px 18px; border-radius:12px; text-align:center;}
.clinic-cert-card .cert-badge div{font-size:18px; font-weight:800;}
.clinic-cert-card .cert-badge small{font-size:11px; opacity:.85;}
.clinic-section{background:#fff; border-radius:var(--radius-lg); padding:32px; box-shadow:var(--shadow); margin-bottom:24px;}
.clinic-section h2, .clinic-section h3{font-size:18px; font-weight:700; color:var(--slate-900); margin-bottom:20px; padding-bottom:12px; border-bottom:2px solid var(--teal-50); position:relative;}
.clinic-section h2::after, .clinic-section h3::after{content:""; position:absolute; bottom:-2px; left:0; width:60px; height:2px; background:var(--teal-600);}
/* 门诊环境图集
   旧版 `1.6fr/1fr` 两列 + 主图固定 320px 高：右侧 11 张按 2 列铺开共 1110px，
   左侧因此在主图下方空出近 800px，末行缩略图还会溢出卡片边界。
   现改为「通栏主图 + 4 列等高」：`.cg-side` 用 display:contents 把 11 个子项
   提升到与主图同一层参与 flex 布局 —— DOM 结构由 SSR/JS 生成，这样不必两处同改。
   末行不足 4 张时 flex-grow 自动补满，不留空洞。 */
.clinic-gallery{display:flex; flex-wrap:wrap; gap:14px;}
.clinic-gallery .cg-main{flex:0 0 100%; height:auto; aspect-ratio:1216/350; border-radius:var(--radius); position:relative; overflow:hidden;}
.clinic-gallery .cg-main img{display:block; width:100%; height:100%; object-fit:cover;}
.clinic-gallery .cg-main span{position:absolute; bottom:16px; left:16px; background:rgba(255,255,255,.92); color:var(--slate-700); font-size:12.5px; padding:7px 14px; border-radius:99px; font-weight:600; backdrop-filter:blur(4px);}
.clinic-gallery .cg-side{display:contents;}
.clinic-gallery .cg-item{flex:1 1 calc(25% - 11px); min-width:0; height:196px; border-radius:var(--radius); position:relative; overflow:hidden;}
.clinic-gallery .cg-item img{display:block; width:100%; height:100%; object-fit:cover; transition:transform .45s ease;}
.clinic-gallery .cg-item:hover img{transform:scale(1.045);}
.clinic-gallery .cg-item span{position:absolute; bottom:10px; left:10px; right:10px; background:rgba(255,255,255,.92); color:var(--slate-700); font-size:11.5px; padding:5px 8px; border-radius:6px; text-align:center; font-weight:600;}
.clinic-values{display:grid; grid-template-columns:repeat(3,1fr); gap:20px;}
.clinic-values .cv-card{background:var(--slate-50); border-radius:var(--radius); padding:24px; text-align:center;}
.clinic-values .cv-ico{width:52px; height:52px; border-radius:50%; background:#fff; display:flex; align-items:center; justify-content:center; font-size:24px; margin:0 auto 12px; box-shadow:var(--shadow-sm);}
.clinic-values h4{font-size:15px; font-weight:700; color:var(--slate-900); margin-bottom:6px;}
/* 全站 h4→h3 后，卡片标题被 `.clinic-section h3` 的下边框与 60px 青色短线命中，
   看起来像"缩小版区块标题"。这里显式复位，卡片标题回归纯文字。 */
.clinic-values h3{font-size:15px; font-weight:700; color:var(--slate-900); margin:0 0 6px; padding:0; border-bottom:0;}
.clinic-values h3::after{content:none; display:none;}
.clinic-values p{font-size:13px; color:var(--slate-500); line-height:1.6;}
.clinic-timeline{display:grid; grid-template-columns:repeat(4,1fr); gap:16px;}
.clinic-timeline .clt-item{position:relative; padding-left:24px; border-left:2px solid var(--teal-100);}
.clinic-timeline .clt-dot{position:absolute; left:-7px; top:4px; width:12px; height:12px; border-radius:50%; background:var(--teal-600); border:2px solid #fff; box-shadow:0 0 0 2px var(--teal-100);}
.clinic-timeline .clt-year{font-size:12px; color:var(--teal-600); font-weight:700; margin-bottom:4px;}
.clinic-timeline .clt-title{font-size:13px; color:var(--slate-700); font-weight:600; line-height:1.5;}
.clinic-address{display:grid; grid-template-columns:1fr 1.2fr; gap:24px; align-items:start;}
.clinic-address .addr-info{display:flex; flex-direction:column; gap:14px;}
.clinic-address .addr-row{font-size:14px; color:var(--slate-600); line-height:1.7;}
.clinic-address .addr-row strong{display:block; color:var(--slate-900); font-size:13px; margin-bottom:2px;}

/* 新闻列表页 */
.news-list-page{padding:48px 32px; background:var(--slate-50); min-height:500px;}
.news-list-page .container{max-width:1280px; margin:0 auto;}
.news-filter{display:flex; gap:10px; margin-bottom:28px; flex-wrap:wrap;}
.news-filter .nf-item{padding:9px 18px; background:#fff; border:1.5px solid var(--slate-200); border-radius:99px; font-size:13px; font-weight:500; color:var(--slate-600); cursor:pointer;}
.news-filter .nf-item.active{background:var(--teal-600); color:#fff; border-color:var(--teal-600);}
.news-list{display:flex; flex-direction:column; gap:16px; margin-bottom:32px;}
.news-list-item{background:#fff; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow); display:flex; transition:all .2s; border:1px solid var(--slate-200);}
.news-list-item:hover{transform:translateY(-2px); box-shadow:var(--shadow-lg); border-color:var(--teal-200);}
.news-list-item .nli-thumb{width:220px; position:relative; flex-shrink:0; overflow:hidden;}
.news-list-item .nli-thumb img{width:100%; height:100%; object-fit:cover;}
.news-list-item .nli-thumb.nli-thumb-2 img{filter:none;}
.news-list-item .nli-thumb .nli-cat{position:absolute; top:14px; left:14px; padding:4px 12px; background:rgba(255,255,255,.95); color:var(--teal-700); font-size:11px; font-weight:600; border-radius:99px;}
.news-list-item .nli-body{padding:22px 26px; flex:1; display:flex; flex-direction:column;}
.news-list-item .nli-body h3, .news-list-item .nli-body h4{font-size:18px; font-weight:700; color:var(--slate-900); margin-bottom:8px;}
.news-list-item .nli-body p{color:var(--slate-500); font-size:13px; line-height:1.7; margin-bottom:12px; flex:1;}
.news-list-item .nli-meta{display:flex; gap:16px; font-size:12px; color:var(--slate-400);}
.news-pagination{display:flex; justify-content:center; gap:8px;}
.news-pagination .np-num, .news-pagination .np-btn{width:36px; height:36px; display:flex; align-items:center; justify-content:center; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; background:#fff; border:1px solid var(--slate-200); color:var(--slate-600);}
.news-pagination .np-num.active{background:var(--teal-600); color:#fff; border-color:var(--teal-600);}
.news-pagination .np-btn{width:auto; padding:0 14px;}
.news-pagination .np-btn.disabled{opacity:.4; cursor:not-allowed;}

/* 新闻详情页 */
.news-detail-page{padding:48px 32px; background:var(--slate-50); min-height:500px;}
.news-detail-page .container{max-width:1100px; margin:0 auto;}
.nd-grid{display:grid; grid-template-columns:1fr 320px; gap:32px; align-items:start;}
.nd-article{background:#fff; border-radius:var(--radius-lg); padding:36px; box-shadow:var(--shadow);}
.nd-article .nd-cat{display:inline-block; padding:4px 12px; background:var(--teal-50); color:var(--teal-700); border-radius:99px; font-size:11px; font-weight:700; margin-bottom:12px;}
.nd-article h1{font-size:28px; font-weight:800; color:var(--slate-900); margin-bottom:14px; line-height:1.3;}
.nd-article .nd-meta{display:flex; gap:16px; font-size:12px; color:var(--slate-400); margin-bottom:24px; padding-bottom:16px; border-bottom:1px solid var(--slate-100);}
.nd-article .nd-feature-img{height:280px; border-radius:var(--radius); overflow:hidden; position:relative; margin-bottom:24px;}
.nd-article .nd-feature-img img{width:100%; height:100%; object-fit:cover;}
.nd-article .nd-feature-img span{position:absolute; bottom:14px; left:14px; background:rgba(255,255,255,.9); color:var(--slate-700); font-size:12px; padding:6px 12px; border-radius:99px; font-weight:600;}
.nd-article .nd-body{font-size:15px; color:var(--slate-700); line-height:1.85;}
.nd-article .nd-body p{margin-bottom:16px;}
.nd-article .nd-body h4{font-size:17px; font-weight:700; color:var(--slate-900); margin:24px 0 12px;}
/* 富文本正文结构化排版（后台 RTE / GEO 内容）：标题层级 + 对比表格 + 列表 + 内链 */
.nd-article .nd-body h2, .sd-main-body h2{font-size:21px; font-weight:800; color:var(--slate-900); margin:30px 0 14px; padding-left:12px; border-left:4px solid var(--teal-500, #14b8a6); line-height:1.45;}
.nd-article .nd-body h3, .sd-main-body h3{font-size:17px; font-weight:700; color:var(--slate-900); margin:24px 0 12px; line-height:1.5;}
.nd-article .nd-body h4, .sd-main-body h4{font-size:16px; font-weight:700; color:var(--slate-800, #1e293b); margin:20px 0 10px;}
.nd-article .nd-body ul, .sd-main-body ul{margin:0 0 16px; padding-left:22px; list-style:disc;}
.nd-article .nd-body ol, .sd-main-body ol{margin:0 0 16px; padding-left:22px; list-style:decimal;}
.nd-article .nd-body li, .sd-main-body li{margin-bottom:8px; line-height:1.8;}
.nd-article .nd-body table, .sd-main-body table{width:100%; border-collapse:collapse; margin:18px 0; font-size:14px;}
.nd-article .nd-body th, .sd-main-body th{background:var(--teal-50, #e6fffb); color:var(--slate-900); font-weight:700; text-align:left;}
.nd-article .nd-body th, .nd-article .nd-body td, .sd-main-body th, .sd-main-body td{border:1px solid var(--slate-200, #e2e8f0); padding:10px 12px; line-height:1.6; vertical-align:top;}
.nd-article .nd-body tbody tr:nth-child(even), .sd-main-body tbody tr:nth-child(even){background:var(--slate-50, #f8fafc);}
.nd-article .nd-body a, .sd-main-body a{color:var(--teal-700, #0f766e); font-weight:600; text-decoration:none; border-bottom:1px solid var(--teal-200, #99f6e4);}
.nd-article .nd-body a:hover, .sd-main-body a:hover{color:var(--teal-800, #115e59);}
.nd-article .nd-body blockquote, .sd-main-body blockquote{border-left:4px solid var(--teal-200, #99f6e4); background:var(--teal-50, #e6fffb); padding:14px 18px; border-radius:0 10px 10px 0; margin:18px 0; color:var(--teal-800, #115e59);}
.nd-article .nd-quote{background:var(--teal-50); border-left:4px solid var(--teal-500); padding:18px 20px; border-radius:0 12px 12px 0; font-style:italic; color:var(--teal-800); margin:20px 0; font-size:15px;}
.nd-article .nd-quote cite{display:block; margin-top:10px; font-style:normal; font-size:12px; color:var(--teal-600); font-weight:600;}
.nd-article .nd-share{display:flex; align-items:center; gap:10px; margin-top:28px; padding-top:20px; border-top:1px solid var(--slate-100); font-size:13px; color:var(--slate-500);}
.nd-article .nd-share-btn{padding:5px 12px; background:var(--slate-100); color:var(--slate-600); border-radius:6px; font-size:12px; font-weight:600; cursor:pointer;}
.nd-side{display:flex; flex-direction:column; gap:16px; position:sticky; top:24px;}
.nd-side-card{background:#fff; border-radius:var(--radius-lg); padding:22px; box-shadow:var(--shadow);}
.nd-side-card h4{font-size:15px; font-weight:700; color:var(--slate-900); margin-bottom:14px;}
.nd-related{display:flex; flex-direction:column; gap:12px;}
.nd-rel-item{padding-bottom:12px; border-bottom:1px dashed var(--slate-200); cursor:pointer;}
.nd-rel-item:last-child{border-bottom:none; padding-bottom:0;}
.nd-rel-cat{font-size:10px; padding:2px 8px; background:var(--teal-50); color:var(--teal-700); border-radius:4px; font-weight:600;}
.nd-rel-title{font-size:13px; color:var(--slate-700); margin-top:6px; line-height:1.5;}
.nd-side-card.nd-cta p{font-size:13px; color:var(--slate-500); line-height:1.6; margin-bottom:14px;}

/* FAQ 页 */
.faq-page{padding:48px 32px; background:var(--slate-50); min-height:500px;}
.faq-page .container{max-width:1100px; margin:0 auto;}
.faq-grid{display:grid; grid-template-columns:220px 1fr; gap:32px; align-items:start;}
.faq-sidebar{background:#fff; border-radius:var(--radius-lg); padding:16px; box-shadow:var(--shadow); position:sticky; top:24px;}
.faq-sidebar .faq-cat{padding:11px 14px; border-radius:8px; font-size:13px; font-weight:600; color:var(--slate-600); cursor:pointer; margin-bottom:4px;}
.faq-sidebar .faq-cat.active{background:var(--teal-600); color:#fff;}
.faq-main{display:flex; flex-direction:column; gap:12px;}
.faq-item{background:#fff; border-radius:var(--radius); padding:20px 24px; box-shadow:var(--shadow); border:1px solid var(--slate-200);}
.faq-item .faq-q{font-size:15px; font-weight:700; color:var(--slate-900); margin-bottom:10px; display:flex; align-items:center; gap:10px;}
.faq-item .faq-q::before{content:"Q"; width:22px; height:22px; background:var(--teal-600); color:#fff; border-radius:50%; font-size:12px; display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.faq-item .faq-a{font-size:14px; color:var(--slate-600); line-height:1.8; padding-left:32px;}
.faq-cta{background:linear-gradient(135deg,var(--teal-600),var(--teal-500)); border-radius:var(--radius-lg); padding:28px; color:#fff; text-align:center; margin-top:12px;}
.faq-cta h3, .faq-cta h4{font-size:17px; font-weight:700; margin-bottom:6px;}
.faq-cta p{font-size:13px; opacity:.9; margin-bottom:16px;}
.faq-cta .btn{background:#fff; color:var(--teal-700); border:none; margin:0 6px;}
.faq-cta .btn-ghost{background:rgba(255,255,255,.15); color:#fff; border:1px solid rgba(255,255,255,.3);}

/* ===== FAQ 交互增强 ===== */
.faq-cat .cnt{float:right; font-size:11px; font-weight:500; opacity:.6; padding-left:6px;}
.faq-cat.active .cnt{opacity:.9;}
.faq-item{cursor:default; transition:border-color .2s;}
.faq-item.open{border-color:var(--teal-300); box-shadow:0 8px 22px rgba(13,148,136,.10);}
.faq-item .faq-q{cursor:pointer; user-select:none; margin-bottom:0; transition:color .2s;}
.faq-item .faq-q:hover{color:var(--teal-700);}
.faq-item.open .faq-q{margin-bottom:10px; color:var(--teal-700);}
.faq-item .faq-q .faq-tag{margin-left:auto; padding:2px 9px; background:var(--teal-50); color:var(--teal-700); border-radius:99px; font-size:10px; font-weight:500; flex-shrink:0;}
.faq-item .faq-q .faq-toggle{width:22px; height:22px; border-radius:50%; background:var(--slate-100); color:var(--slate-500); display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:700; flex-shrink:0; transition:all .25s; line-height:1;}
.faq-item.open .faq-q .faq-toggle{background:var(--teal-600); color:#fff; transform:rotate(45deg);}
.faq-item .faq-a{display:none;}
.faq-item.open .faq-a{display:block; animation:faqSlide .3s ease;}
.faq-item.hidden{display:none;}
.faq-empty{display:none; text-align:center; padding:48px 0; color:var(--slate-400); font-size:13px; background:#fff; border:1px dashed var(--slate-200); border-radius:var(--radius);}
@keyframes faqSlide{from{opacity:0; transform:translateY(-6px);} to{opacity:1; transform:translateY(0);}}

/* ===== 前端预览版站点外壳 ===== */
.topbar{background:var(--teal-700); color:#fff; font-size:12px; text-align:center; padding:7px 16px; letter-spacing:.4px;}
.topbar b{font-weight:700;}
.site-nav{position:sticky; top:0; z-index:999; background:#fff; border-bottom:1px solid var(--slate-100); box-shadow:0 2px 12px rgba(15,23,42,.05);}
.site-nav .nav{max-width:1320px; margin:0 auto; border-bottom:none;}
.nav-phone{padding:8px 12px; border-radius:99px; border:1px solid var(--teal-100); background:var(--teal-50); transition:all .2s;}
.nav-phone:hover{background:var(--teal-100);}
/* 页脚（紧凑版：整体高度压缩约 2/3，三栏对齐规整） */
.site-footer{background:var(--slate-900); color:var(--slate-300); padding:52px 32px 28px;}
.site-footer .container{max-width:1320px; margin:0 auto; display:grid; grid-template-columns:1.4fr 1fr 1.2fr; gap:40px;}
.site-footer h4{color:#fff; font-size:15px; margin-bottom:14px; font-weight:700;}
.site-footer a{color:var(--slate-300); text-decoration:none; font-size:13px; line-height:2.1; display:block;}
.site-footer a:hover{color:var(--teal-300);}
.site-footer .footer-brand{font-size:19px; font-weight:800; color:#fff; margin-bottom:10px;}
.site-footer .footer-desc{font-size:13px; line-height:1.9; opacity:.85; margin-bottom:0;}
.site-footer .footer-bottom{border-top:1px solid rgba(148,163,184,.2); margin-top:36px; padding-top:18px; text-align:center; font-size:12px; opacity:.6; max-width:1320px; margin-left:auto; margin-right:auto;}
.site-footer .footer-icp{text-align:center; padding:6px 0 2px; font-size:12px;}
.site-footer .footer-icp a{display:inline; color:var(--slate-400); text-decoration:none; transition:color .2s;}
.site-footer .footer-icp a:hover{color:var(--teal-300);}
@media (max-width:1280px){
  /* 1280 以下容器变窄，右列收窄一点，别把正文挤成 544px 的窄条 */
  .about-intro-grid{grid-template-columns:minmax(0,1fr) 320px; gap:32px;}
}
@media (max-width:1024px){
  .nav-logo{font-size:17px;}
  .nav-menu a{padding:8px 10px; font-size:13px;}
  .nav-phone{display:none !important;}
  /* 1024 及以下「左文右图」会把正文挤到 544px、整段拉到 1800px 高，改为上下排列 */
  .about-intro-grid{grid-template-columns:1fr; gap:18px;}
  .about-intro-side{position:static; order:-1; gap:12px;}
  .about-intro-side .ais-photo{aspect-ratio:16/9;}
  .site-footer .container{grid-template-columns:1fr 1fr;}
  .booking-band .container{grid-template-columns:1fr;}
  .svc-grid{grid-template-columns:repeat(2,1fr);}
  .dr-grid{grid-template-columns:repeat(2,1fr);}
  .dr-carousel .drc{flex:0 0 calc((100% - 20px) / 2);}
  .news-grid{grid-template-columns:repeat(2,1fr);}
  .dd-grid{grid-template-columns:1fr;}
  .dd-side{position:static;}
  .sd-grid{grid-template-columns:1fr;}
  .sd-side{position:static;}
  .nd-grid{grid-template-columns:1fr;}
  .nd-side{position:static; flex-direction:row; flex-wrap:wrap;}
  .nd-side-card{flex:1; min-width:280px;}
  .contact-page .container{grid-template-columns:1fr;}
  .clinic-gallery .cg-main{aspect-ratio:16/7;}
  .clinic-gallery .cg-item{flex:1 1 calc(33.333% - 10px); height:168px;}
  .clinic-values{grid-template-columns:1fr 1fr;}
  .clinic-timeline{grid-template-columns:1fr 1fr;}
  .clinic-address{grid-template-columns:1fr;}
  .faq-grid{grid-template-columns:1fr;}
  .faq-sidebar{position:static;}
  .ai-grid{grid-template-columns:1fr;}
  .service-detail-grid{grid-template-columns:1fr;}
  .dd-cases{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:768px){
  .site-nav .nav{flex-wrap:wrap; height:auto; padding:12px 16px; gap:8px;}
  .nav-menu{order:3; width:100%; display:flex; overflow-x:auto; padding-bottom:4px;}
  .nav-menu a{white-space:nowrap;}
  .site-footer .container{grid-template-columns:1fr;}
  /* 移动端页脚精简：隐藏「快速导航」「联系我们」，只保留品牌介绍+ICP+版权 */
  .site-footer .hide-on-mobile{display:none;}
  .sec-head h2{font-size:28px;}
  /* 移动端服务分类左对齐 + 一行 2 个（首页与服务列表页通用） */
  .svc-tabs{justify-content:flex-start;}
  .svc-tabs .tab{padding:9px 16px; font-size:13px;}
  .svc-grid{grid-template-columns:repeat(2,1fr); gap:12px;}
  /* 移动端首页服务卡片：只保留标题+了解详情（隐藏摘要与价格） */
  .home-services .svc-card{padding:16px;}
  .home-services .svc-icon{width:60px; height:60px; margin-bottom:10px; border-radius:12px;}
  .home-services .svc-card h3, .home-services .svc-card h4{font-size:15px; margin-bottom:6px;}
  .home-services .svc-card p, .home-services .svc-card .price{display:none;}
  .dr-grid{grid-template-columns:1fr;}
  /* 移动端首页医生：一行展示 1 张卡片，左右滑动 + 箭头 */
  .dr-carousel .drc{flex:0 0 84%;}
  .dr-nav{width:34px; height:34px; font-size:15px; top:130px;}
  .dr-nav.dr-prev{left:2px;}
  .dr-nav.dr-next{right:2px;}
  .news-grid{grid-template-columns:1fr;}
  /* 移动端首页新闻：只展示 1 条 */
  .news-section .news-grid .news-card:nth-child(n+2){display:none;}
  /* 移动端门诊介绍：图片在上、文字在下（原来文字在前，要滚完 1600 字才见到一张图） */
  .about-intro-grid{grid-template-columns:1fr; gap:18px;}
  .about-intro-side{position:static; order:-1; gap:12px;}
  .about-intro-side .ais-photo{aspect-ratio:16/9;}
  /* 信息条改单列：小屏两列会把「主要方向」挤成竖排单字 */
  .about-intro-side .ais-facts{flex-direction:column; gap:9px; padding:14px 16px;}
  .about-intro-side .ais-row{flex:none; font-size:12.5px;}
  .about-intro-side .ais-row span{flex:0 0 58px;}
  #aboutIntroText{font-size:14px; line-height:1.95;}
  #aboutIntroText > p:first-child{padding:14px 15px;}
  /* 卡片内边距在小屏吃掉太多（390 屏正文只剩 262）：外层 .clinic-page 与卡片内边距一起收窄 */
  .clinic-page{padding:24px 14px;}
  .clinic-section{padding:20px 16px;}
  .clinic-section h2, .clinic-section h3{font-size:17px; margin-bottom:16px;}
  /* 移动端环境图集：主图 16:9、缩略图两列 */
  .clinic-gallery .cg-main{aspect-ratio:16/9;}
  .clinic-gallery .cg-item{flex:1 1 calc(50% - 7px); height:126px;}
  .news-list-item{flex-direction:column;}
  .news-list-item .nli-thumb{width:100%; height:180px;}
  .svc-detail{flex-direction:column;}
  .svc-detail-img{width:100%; height:140px;}
  .clinic-values{grid-template-columns:1fr;}
  .clinic-timeline{grid-template-columns:1fr;}
  .dd-cases{grid-template-columns:1fr;}
  .dd-skills{grid-template-columns:1fr;}
  .booking-band{padding:40px 20px;}
  .booking-band h2{font-size:24px;}
  .ai-main{padding:40px 20px;}
  .ai-panel{padding:20px;}
  .symptom-grid{grid-template-columns:1fr 1fr;}
  .nd-article{padding:24px;}
  .nd-article h1{font-size:22px;}
  .sd-main-body{padding:20px;}
  .sd-main-body h1{font-size:22px;}
  .clinic-cert-card{flex-direction:column; text-align:center;}
  /* 移动端资质卡：72px 图标 + 24px 两行标题 + 徽章竖排，一张卡要占掉近半屏，压一压 */
  .clinic-cert-card{padding:22px 16px; gap:14px;}
  .clinic-cert-card .cert-icon{width:54px; height:54px; font-size:26px;}
  .clinic-cert-card h1, .clinic-cert-card h2{font-size:19px; line-height:1.45;}
  .clinic-cert-card .cert-badge{padding:9px 16px;}
  .clinic-cert-card .cert-badge div{font-size:16px;}
  .faq-item{padding:16px;}
  .faq-item .faq-a{padding-left:0;}
  /* 富文本对比表格在小屏收窄，避免撑破正文 */
  .nd-article .nd-body table, .sd-main-body table{font-size:12px;}
  .nd-article .nd-body th, .nd-article .nd-body td, .sd-main-body th, .sd-main-body td{padding:7px 8px;}
  .nd-article .nd-body h2, .sd-main-body h2{font-size:18px; padding-left:9px;}
  .nd-article .nd-body h3, .sd-main-body h3{font-size:15.5px;}
}

/* ===== 交互增强样式 ===== */
.svc-panel{display:none;}
.svc-panel.active{display:block; animation:fadeIn .35s ease;}
.doctor-panel{display:none;}
.doctor-panel.active{display:block; animation:fadeIn .35s ease;}
.news-list-item{display:flex;}
.news-list-item.hidden{display:none;}
.svc-card{display:block;}
.svc-card.hidden{display:none;}
.nf-item,.tab,.stab,.dr-pill{cursor:pointer; user-select:none;}
.news-list-item{cursor:pointer; transition:border-color .2s, box-shadow .2s, transform .2s;}
.news-list-item:hover{transform:translateY(-3px); box-shadow:0 10px 28px rgba(15,23,42,.10);}
.ai-main .symptom-grid label{cursor:pointer;}
.ai-main .upload-zone{cursor:pointer;}
.ai-main .btn-ai:disabled{opacity:.65; cursor:wait; transform:none !important; box-shadow:none !important;}
@keyframes fadeIn{from{opacity:0; transform:translateY(8px);} to{opacity:1; transform:translateY(0);}}

/* ============ Banner 轮播（首页，数据来自后台 Banner 管理） ============ */
.hero-carousel{position:relative; width:100%; overflow:hidden; background:#0F766E;}
.hero-carousel .hero-slide{position:relative; opacity:0; transition:opacity .8s ease; position:absolute; inset:0;}
.hero-carousel .hero-slide.active{opacity:1; position:relative; inset:auto;}
.hero-carousel .hero-slide img{display:block; width:100%; height:auto; max-height:640px; object-fit:cover;}
.hero-carousel .hero-slide-caption{position:absolute; left:90px; bottom:120px; color:#fff; text-shadow:0 2px 10px rgba(0,0,0,.45);}
.hero-carousel .hero-slide-caption span{display:block; font-size:28px; font-weight:800; letter-spacing:1px;}
.hero-carousel .hero-slide-caption em{display:block; font-style:normal; font-size:15px; opacity:.92; margin-top:6px;}
.hero-carousel .hero-dots{position:absolute; left:50%; transform:translateX(-50%); bottom:22px; display:flex; gap:10px; z-index:3;}
.hero-carousel .hero-dot{width:10px; height:10px; border-radius:50%; background:rgba(255,255,255,.45); cursor:pointer; transition:all .3s;}
.hero-carousel .hero-dot.active{background:var(--orange-500); width:26px; border-radius:6px;}

/* ============ 页脚（结构对齐预览版：三栏 + ICP + 版权栏，无 GEO 模块） ============ */

@media (max-width:900px){
  .hero-carousel .hero-slide-caption{left:48px; bottom:110px;}
  .hero-carousel .hero-slide-caption span{font-size:20px;}
  /* 900 以下「左文右图」会把正文挤到 544px、整段拉到 1800px 高，直接改为上下排列 */
  .about-intro-grid{grid-template-columns:1fr; gap:18px;}
  .about-intro-side{position:static; order:-1; gap:12px;}
  .about-intro-side .ais-photo{aspect-ratio:16/9;}
}
@media (max-width:600px){
  .hero-carousel .hero-slide-caption{left:24px; bottom:96px;}
  .hero-carousel .hero-slide-caption span{font-size:16px;}
  .hero-carousel .hero-slide-caption em{font-size:12px;}
  .hero-carousel .hero-dots{bottom:14px;}
}

/* ============ 语义层级（H1 / 列表页 H2） ============ */
/* 页面 H1：整图 hero 与 banner 已把标题烤进图片，再叠一层可见 H1 会重复。
   这里用「视觉隐藏、语义保留」的标准写法——文字节点仍在 DOM 中，
   搜索引擎与读屏器都能读到，屏幕视觉零变化。 */
.sr-only{position:absolute !important; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;}
/* 列表页区块标题（服务项目 / 新闻动态 / 常见问答）*/
.list-h2{font-size:18px; font-weight:700; color:var(--slate-900); margin:0 0 18px;
  display:flex; align-items:center; justify-content:center; gap:10px; flex-wrap:wrap;}
.list-h2::before{content:""; width:4px; height:17px; background:var(--teal-600); border-radius:2px; flex:none;}
.list-h2 .cnt{font-size:12px; font-weight:500; color:var(--slate-500);}
