/* ============================================================
   ujoffshore.com · sections.css —— 通用板块样式（页面代理/构建共用层）
   与 render.py 板块渲染器一一对应：hero-in / fc / zig / pc / stat
   / stp / tl / tab / fq / prc / chip / qt / tbl / gl / tm / fm
   / rel / intro / info / mid-banner
   移动优先；页面级差异化由 css/page-xxx.css 完成
   ============================================================ */

/* ---------- 内页横幅 hero（4 种变体） ---------- */
.hero-in{position:relative;overflow:hidden;background:var(--c-cream-wash)}
.hero-kicker{display:inline-flex;align-items:center;gap:.6em;font-size:.86rem;letter-spacing:.26em;color:var(--c-accent);font-weight:700;margin-bottom:1.1em}
.hero-kicker::before{content:"";width:30px;height:2px;background:var(--c-pink);border-radius:2px}
.hero-in-title{font-size:clamp(1.9rem,4.2vw,3.1rem);letter-spacing:.04em}
.hero-in-sub{color:var(--c-ink-soft);max-width:640px;font-size:1.04rem;margin:1em 0 0}
.hero-in-tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:1.2em}
.hero-in-tags span{font-size:.82rem;font-weight:600;letter-spacing:.08em;padding:.4em 1.1em;border-radius:var(--r-full);border:1.5px dashed var(--c-pink);color:var(--c-pink-deep);background:var(--c-white)}
.hero-in-cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:1.7em}
.hero-contact-line{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:1.4em;font-size:.92rem;color:var(--c-ink-soft)}
.hero-contact-line a{color:var(--c-pink-deep);font-weight:600}

/* banner 变体：全幅图 + 深色遮罩 + 白字 */
.hero-in-banner{min-height:clamp(430px,62vh,660px);display:flex;align-items:center;background:var(--c-ink)}
.hero-in-banner .hero-bg{position:absolute;inset:0}
.hero-in-banner .hero-bg img{width:100%;height:100%;object-fit:cover}
.hero-in-shade{position:absolute;inset:0;background:linear-gradient(100deg,rgba(56,38,32,.78) 8%,rgba(56,38,32,.52) 46%,rgba(56,38,32,.18))}
.hero-in-banner .hero-in-box{position:relative;padding-block:clamp(70px,10vh,120px)}
.hero-in-banner .hero-kicker{color:#F2C9CD}
.hero-in-banner .hero-kicker::before{background:var(--c-pink)}
.hero-in-banner .hero-in-title{color:#FFF6EA;max-width:760px}
.hero-in-banner .hero-in-sub{color:#EFE3D8}
.hero-in-banner .hero-in-tags span{border-color:rgba(255,251,245,.55);color:#FFF6EA;background:rgba(60,42,36,.35)}
.hero-in-banner .hero-contact-line{color:#EAD9C8}
.hero-in-banner .hero-contact-line a{color:#F2C9CD}

/* split 变体：左文右图 */
.hero-in-split{padding-block:clamp(56px,8vw,104px)}
.hero-split{display:grid;grid-template-columns:1fr;gap:clamp(28px,4vw,56px);align-items:center}
.hero-split-pic{margin:0;position:relative}
.hero-split-pic::before{content:"";position:absolute;inset:16px -16px -16px 16px;border:2px dashed var(--c-pink-soft);border-radius:var(--r-lg);z-index:0}
.hero-split-pic img{position:relative;z-index:1;width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:var(--r-lg);box-shadow:var(--sh-3)}
@media (min-width:900px){
  .hero-split{grid-template-columns:1.02fr .98fr}
}

/* journal 变体：手账纸感 */
.hero-in-journal{padding-block:clamp(50px,7vw,90px);background:repeating-linear-gradient(0deg,transparent 0 26px,rgba(217,140,148,.05) 26px 27px)}
.hero-journal{display:grid;grid-template-columns:1fr;gap:clamp(24px,3.4vw,44px);align-items:start}
.hj-paper{position:relative;background:var(--c-white);border-radius:8px;box-shadow:var(--sh-2);padding:clamp(30px,4vw,48px);border:1px solid var(--c-line-soft)}
.hj-paper > svg:first-child{position:absolute;top:-13px;left:26px}
.hj-paper .hero-kicker{margin-top:1.4em}
.hj-paper .hero-in-cta{margin-top:2em}
.hj-paper > svg:last-child{position:absolute;right:26px;bottom:-22px}
.hj-side{position:relative}
.hj-pic{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:var(--r-lg);box-shadow:var(--sh-2)}
.hj-note{margin-top:16px;background:var(--c-cream);border:1.5px dashed var(--c-line);border-radius:var(--r-md);padding:16px 20px;display:grid;gap:4px;font-size:.92rem;color:var(--c-ink-soft)}
.hj-note b{font-family:var(--f-serif);color:var(--c-ink);font-size:1.02rem}
@media (min-width:900px){
  .hero-journal{grid-template-columns:1.15fr .85fr}
  .hj-side{position:sticky;top:130px}
}

/* compact 变体：居中留白 + 涂鸦 */
.hero-in-compact{padding-block:clamp(64px,9vw,116px);text-align:center;background:linear-gradient(180deg,var(--c-pink-wash),var(--c-cream-wash))}
.hero-compact{position:relative}
.hc-main{max-width:820px;margin:0 auto}
.hc-main .hero-in-sub{margin-inline:auto}
.hc-main .hero-in-cta,.hc-main .hero-contact-line{justify-content:center}
.hc-side{position:absolute;inset:0;pointer-events:none}
.hc-side svg:first-child{position:absolute;top:-34px;left:6%}
.hc-side svg:last-child{position:absolute;bottom:-40px;right:8%}
@media (max-width:720px){.hc-side{display:none}}

/* ---------- 区块标题右对齐与更多链接 ---------- */
.sec-head-right{margin-left:auto;text-align:right}
.sec-head-right .sec-desc{margin-left:auto}
.sec-head-right .sec-kicker::before{display:none}
.sec-head-right .sec-kicker::after{content:"";width:26px;height:2px;background:var(--c-pink);border-radius:2px}
.sec-more{display:inline-flex;align-items:center;gap:.5em;margin-top:14px;font-weight:600;color:var(--c-pink-deep);font-size:.95rem}
.sec-more:hover{color:var(--c-brown-deep)}
.sec-more svg{transition:transform .3s var(--ease)}
.sec-more:hover svg{transform:translateX(4px)}

/* ---------- 特性卡 fc ---------- */
.fc-grid{display:grid;grid-template-columns:1fr;gap:clamp(18px,2.6vw,30px)}
.fc{position:relative;background:var(--c-white);border:1px solid var(--c-line-soft);border-radius:var(--r-lg);
  padding:clamp(24px,3vw,34px);box-shadow:var(--sh-1);
  transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.fc:hover{transform:translateY(-6px);box-shadow:var(--sh-2)}
.fc h3{font-size:1.12rem;margin:14px 0 .4em}
.fc p{color:var(--c-ink-soft);font-size:.96rem;margin:0}
.fc-more{display:inline-flex;align-items:center;gap:.4em;margin-top:14px;font-weight:600;font-size:.9rem;color:var(--c-pink-deep)}
.fc-more::after{content:"→";transition:transform .3s var(--ease)}
.fc:hover .fc-more::after{transform:translateX(4px)}
.fc-num{display:block;font-family:var(--f-serif);font-size:2rem;font-weight:700;color:var(--c-pink);line-height:1;letter-spacing:.04em}
.fc-ico,.fc-bubble{display:inline-flex;align-items:center;justify-content:center;width:58px;height:58px;border-radius:50%;
  background:var(--c-pink-wash);color:var(--c-pink-deep);transition:transform .3s var(--ease),background .3s var(--ease)}
.fc:hover .fc-ico,.fc:hover .fc-bubble{transform:rotate(-10deg) scale(1.06);background:var(--c-pink-soft)}
.fc-bubble{border-radius:18px 18px 18px 4px}
.fc-tape{padding-top:44px}
.fc-tape > svg{position:absolute;top:-11px;left:50%;transform:translateX(-50%) rotate(-2deg)}
.fc-plain{background:transparent;border:1.5px dashed var(--c-line);box-shadow:none}
.fc-plain:hover{border-color:var(--c-pink);box-shadow:none}
.fc-num-plain{color:var(--c-accent);font-size:1.5rem}
@media (min-width:640px){
  .fc-grid{grid-template-columns:repeat(2,1fr)}
}
@media (min-width:992px){
  .fc-grid-num,.fc-grid-icon,.fc-grid-tape,.fc-grid-bubble,.fc-grid-plain{grid-template-columns:repeat(3,1fr)}
}

/* ---------- 图文交错 zig ---------- */
.zig-row{display:grid;grid-template-columns:1fr;gap:clamp(22px,3.4vw,48px);align-items:center;padding-block:clamp(14px,2.4vw,30px)}
.zig-row + .zig-row{border-top:1px dashed var(--c-line)}
.zig-pic{margin:0;position:relative}
.zig-pic::after{content:"";position:absolute;right:-14px;bottom:-14px;width:70px;height:70px;border-radius:50%;background:var(--c-pink-soft);opacity:.55;z-index:0}
.zig-pic img{position:relative;z-index:1;width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:var(--r-lg);box-shadow:var(--sh-2)}
.zig-txt .sec-kicker{margin-bottom:.8em}
.zig-txt h3{font-size:clamp(1.22rem,2vw,1.5rem);margin-bottom:.55em}
.zig-txt p{color:var(--c-ink-soft)}
.zig-feats{list-style:none;padding:0;margin:14px 0 20px;display:grid;gap:8px}
.zig-feats li{position:relative;padding-left:1.7em;color:var(--c-ink)}
.zig-feats li::before{content:"";position:absolute;left:0;top:.55em;width:16px;height:16px;border-radius:50%;
  background:var(--c-pink-wash);border:2px solid var(--c-pink)}
.zig-feats li::after{content:"✓";position:absolute;left:3px;top:-1px;font-size:.72rem;color:var(--c-pink-deep);font-weight:700}
@media (min-width:860px){
  .zig-row{grid-template-columns:1fr 1fr}
  .zig-row-rev .zig-pic{order:2}
}

/* ---------- 照片卡 pc ---------- */
.pc-grid{display:grid;grid-template-columns:1fr;gap:clamp(18px,2.6vw,30px)}
.pc{position:relative;background:var(--c-white);border-radius:var(--r-md);overflow:hidden;box-shadow:var(--sh-1);
  border:1px solid var(--c-line-soft);transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.pc:hover{transform:translateY(-6px) rotate(-.4deg);box-shadow:var(--sh-2)}
.pc::before{content:"";position:absolute;top:12px;left:-34px;width:120px;height:26px;background:var(--c-pink-soft);opacity:.8;transform:rotate(-40deg);z-index:2}
.pc figure{margin:0;overflow:hidden;aspect-ratio:3/2}
.pc figure img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.pc:hover figure img{transform:scale(1.06)}
.pc-body{padding:clamp(16px,2.2vw,24px)}
.pc-body h3{font-size:1.08rem;margin-bottom:.35em}
.pc-body p{color:var(--c-ink-soft);font-size:.93rem;margin:0 0 .6em}
.pc-more{font-weight:600;font-size:.9rem;color:var(--c-pink-deep)}
@media (min-width:640px){
  .pc-grid-2{grid-template-columns:repeat(2,1fr)}
  .pc-grid-3,.pc-grid-4{grid-template-columns:repeat(2,1fr)}
}
@media (min-width:992px){
  .pc-grid-3{grid-template-columns:repeat(3,1fr)}
  .pc-grid-4{grid-template-columns:repeat(4,1fr)}
}

/* ---------- 数据带 stat ---------- */
.stat-band{background:linear-gradient(118deg,var(--c-brown-deep) 0%,var(--c-ink) 60%,#4a3a33 100%)}
.stat-band .sec-kicker{color:#F2C9CD}
.stat-band .sec-kicker::before,.stat-band .sec-kicker::after{background:var(--c-pink)}
.stat-band .sec-title{color:#FFF6EA}
.stat-band .sec-desc{color:#EAD9C8}
.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(22px,3vw,40px)}
.stat-cell{text-align:center;padding:clamp(18px,2.4vw,26px);border:1px solid rgba(255,251,245,.14);border-radius:var(--r-lg);background:rgba(255,251,245,.06)}
.stat-cell b{display:block;font-family:var(--f-serif);font-size:clamp(2rem,3.8vw,3rem);font-weight:700;color:#F2C9CD;line-height:1.05}
.stat-cell i{font-style:normal;font-size:1rem;color:var(--c-pink);margin-left:2px}
.stat-cell span{display:block;margin-top:6px;font-size:.9rem;color:#EAD9C8;letter-spacing:.06em}
.stat-note{text-align:center;color:#EAD9C8;font-size:.92rem;margin:26px auto 0;max-width:620px}
@media (min-width:820px){.stat-grid{grid-template-columns:repeat(4,1fr)}}

/* ---------- 步骤 stp ---------- */
.stp-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr;gap:20px}
.stp{position:relative;padding:24px 22px 26px;background:var(--c-white);border-radius:var(--r-lg);box-shadow:var(--sh-1);border:1px solid var(--c-line-soft)}
.stp-no{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:50%;
  background:var(--c-pink-wash);color:var(--c-pink-deep);font-family:var(--f-serif);font-weight:700;font-size:1.1rem}
.stp h3{font-size:1.08rem;margin:14px 0 .35em}
.stp p{color:var(--c-ink-soft);font-size:.94rem;margin:0}
.stp-card{background:var(--c-cream-wash);border:1.5px dashed var(--c-line);box-shadow:none}
.stp-card .stp-no{background:var(--c-white);box-shadow:var(--sh-1)}
.stp-flag{position:relative;background:var(--c-white);border-radius:var(--r-md);box-shadow:var(--sh-1);border:0;padding-top:52px;overflow:hidden}
.stp-flag::before{content:"";position:absolute;top:0;left:0;right:0;height:6px;
  background:repeating-linear-gradient(90deg,var(--c-pink) 0 26px,var(--c-pink-soft) 26px 40px)}
.stp-flag-no{position:absolute;top:18px;right:18px;font-family:var(--f-serif);font-weight:700;font-size:1.6rem;color:var(--c-pink)}
@media (min-width:640px){
  .stp-list{grid-template-columns:repeat(2,1fr)}
}
@media (min-width:992px){
  .stp-list{grid-template-columns:repeat(4,1fr)}
}
.stp-line .stp::after{content:"";position:absolute;top:50%;right:-20px;width:20px;height:2px;
  background:repeating-linear-gradient(90deg,var(--c-pink) 0 6px,transparent 6px 11px)}
.stp-line .stp:last-child::after{display:none}
@media (max-width:991px){.stp-line .stp::after{display:none}}

/* ---------- 时间轴 tl ---------- */
.tl{list-style:none;padding:0;margin:0;display:grid;gap:18px}
.tl-item{position:relative;display:grid;grid-template-columns:auto 26px 1fr;gap:12px;align-items:start}
.tl-dot{width:16px;height:16px;border-radius:50%;background:var(--c-white);border:3.5px solid var(--c-pink-deep);position:relative;z-index:1;margin-top:8px}
.tl-item::before{content:"";position:absolute;left:5px;top:22px;bottom:-18px;width:2px;background:var(--c-line)}
.tl-item:last-child::before{display:none}
.tl-time{font-family:var(--f-serif);font-weight:700;color:var(--c-pink-deep);font-size:.98rem;padding-top:6px;text-align:right;white-space:nowrap}
.tl-body{background:var(--c-cream-wash);border:1px dashed var(--c-line);border-radius:var(--r-md);padding:16px 20px}
.tl-body h3{font-size:1.05rem;margin-bottom:.25em}
.tl-body p{color:var(--c-ink-soft);font-size:.94rem;margin:0}
@media (max-width:719px){.tl-item{grid-template-columns:auto 18px 1fr}}

/* ---------- 页签 tab ---------- */
.tab{border:1.5px solid var(--c-line-soft);border-radius:var(--r-lg);background:var(--c-white);box-shadow:var(--sh-1);overflow:hidden}
.tab-btns{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;padding:18px 18px 0;background:var(--c-cream-wash);border-bottom:1.5px dashed var(--c-line)}
.tab-btns .tab-btn{border:1.5px solid var(--c-line);border-radius:var(--r-full);padding:.6em 1.5em;cursor:pointer;
  font-weight:600;color:var(--c-ink-soft);background:var(--c-white);transition:all .25s var(--ease);font-size:.95rem}
.tab-btns .tab-btn:hover{color:var(--c-pink-deep);border-color:var(--c-pink)}
.tab-btns .tab-btn.active{background:var(--c-pink-deep);border-color:var(--c-pink-deep);color:#FFF6EA;box-shadow:var(--sh-1)}
.tab-panels{padding:clamp(20px,3vw,34px)}
.tab-panel{display:none;animation:fadeIn .45s var(--ease)}
.tab-panel.active{display:block}
.tab-panel h3{font-size:1.18rem;margin-bottom:.5em}
.tab-panel p{color:var(--c-ink-soft)}
.tab-list{list-style:none;padding:0;margin:14px 0 18px;display:grid;gap:8px}
.tab-list li{position:relative;padding-left:1.8em;color:var(--c-ink)}
.tab-list li::before{content:"";position:absolute;left:0;top:.5em;width:15px;height:15px;border-radius:50%;background:var(--c-pink-wash);border:2px solid var(--c-pink)}
.tab-list li::after{content:"✓";position:absolute;left:3px;top:-1px;font-size:.7rem;color:var(--c-pink-deep);font-weight:700}
.tab-pic{margin:18px 0 0}
.tab-pic img{width:100%;aspect-ratio:16/7;object-fit:cover;border-radius:var(--r-md)}

/* ---------- 手账折叠 fq ---------- */
.fq-wrap{max-width:880px}
.fq{background:var(--c-cream-wash);border:1.5px dashed var(--c-line);border-radius:var(--r-md);overflow:hidden;transition:box-shadow .3s var(--ease)}
.fq + .fq{margin-top:14px}
.fq .fq-q{background:none;border:0;width:100%;text-align:left;cursor:pointer;padding:18px 54px 18px 24px;
  font-family:var(--f-serif);font-weight:600;font-size:1.04rem;color:var(--c-ink);position:relative;margin:0}
.fq .fq-q::after{content:"";position:absolute;right:22px;top:50%;width:12px;height:12px;margin-top:-6px;
  border-right:2.5px solid var(--c-pink-deep);border-bottom:2.5px solid var(--c-pink-deep);
  transform:rotate(45deg);transition:transform .3s var(--ease)}
.fq.open .fq-q::after{transform:rotate(-135deg)}
.fq .fq-a{max-height:0;overflow:hidden;transition:max-height .4s var(--ease)}
.fq.open .fq-a{max-height:600px}
.fq .acc-a-inner{padding:0 24px 20px;color:var(--c-ink-soft);font-size:.96rem}

/* ---------- 价格卡 prc ---------- */
.prc-grid{display:grid;grid-template-columns:1fr;gap:clamp(18px,2.6vw,28px);align-items:stretch}
.prc{position:relative;background:var(--c-white);border:1px solid var(--c-line-soft);border-radius:var(--r-lg);
  padding:clamp(26px,3vw,36px) clamp(22px,2.8vw,30px);box-shadow:var(--sh-1);
  display:flex;flex-direction:column;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.prc:hover{transform:translateY(-6px);box-shadow:var(--sh-2)}
.prc.hot{border:2px solid var(--c-pink);background:linear-gradient(165deg,var(--c-white),var(--c-pink-wash))}
.prc-hot-tag{position:absolute;top:-13px;right:22px;background:var(--c-pink-deep);color:#FFF6EA;font-size:.78rem;
  font-weight:700;letter-spacing:.1em;padding:.35em 1.1em;border-radius:var(--r-full);box-shadow:var(--sh-1)}
.prc h3{font-size:1.16rem;margin-bottom:.3em}
.prc-price{font-family:var(--f-serif);font-weight:700;color:var(--c-pink-deep);font-size:clamp(1.9rem,3vw,2.5rem);line-height:1.1;margin:.2em 0 .1em}
.prc-price i{font-style:normal;font-size:.55em;color:var(--c-ink-faint);font-family:var(--f-sans);font-weight:400}
.prc-note{color:var(--c-ink-faint);font-size:.86rem}
.prc-feats{list-style:none;padding:0;margin:18px 0 24px;flex:1}
.prc-feats li{position:relative;padding:.42em 0 .42em 1.7em;color:var(--c-ink-soft);font-size:.95rem}
.prc-feats li::before{content:"";position:absolute;left:0;top:.85em;width:9px;height:9px;border-radius:50%;background:var(--c-pink-soft)}
.prc .btn{width:100%}
.prc-foot{text-align:center;color:var(--c-ink-faint);font-size:.9rem;margin:22px 0 0}
@media (min-width:720px){.prc-grid{grid-template-columns:repeat(3,1fr)}}

/* ---------- 标签云 chip ---------- */
.chip-cloud{display:flex;flex-wrap:wrap;gap:14px;justify-content:center}
.chip{position:relative;padding:.55em 1.4em;border-radius:4px;font-weight:600;font-size:.95rem;color:var(--c-ink-soft);
  background:var(--c-cream-wash);border:1px solid var(--c-line);
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),background .25s var(--ease)}
.chip:nth-child(3n){background:var(--c-pink-wash);border-color:var(--c-pink-soft)}
.chip:nth-child(3n+1){transform:rotate(-1deg)}
.chip:nth-child(3n+2){transform:rotate(1.2deg)}
.chip:hover{transform:translateY(-3px) rotate(0);box-shadow:var(--sh-1);color:var(--c-pink-deep)}

/* ---------- 证言 qt ---------- */
.qt-grid{display:grid;grid-template-columns:1fr;gap:clamp(18px,2.6vw,28px)}
.qt{position:relative;background:var(--c-white);border-radius:var(--r-lg);border:1px solid var(--c-line-soft);
  box-shadow:var(--sh-1);padding:clamp(26px,3.2vw,38px)}
.qt::before{content:"“";position:absolute;top:-16px;left:24px;font-family:var(--f-serif);font-size:4.2rem;color:var(--c-pink);line-height:1}
.qt > svg{position:absolute;top:18px;right:18px;opacity:.8}
.qt blockquote{margin:0;font-family:var(--f-serif);font-size:1.04rem;color:var(--c-ink);line-height:1.9}
.qt figcaption{margin-top:18px;padding-top:14px;border-top:1px dashed var(--c-line);display:flex;flex-direction:column;gap:2px}
.qt figcaption b{color:var(--c-pink-deep)}
.qt figcaption span{font-size:.85rem;color:var(--c-ink-faint)}
@media (min-width:720px){.qt-grid{grid-template-columns:repeat(2,1fr)}}

/* ---------- 对比表 cmp-tbl ---------- */
.tbl-wrap{overflow-x:auto;border-radius:var(--r-lg);box-shadow:var(--sh-1);border:1px solid var(--c-line-soft);background:var(--c-white)}
.cmp-tbl{table-layout:fixed;width:100%;min-width:640px}
.cmp-tbl th{background:var(--c-pink-wash);color:var(--c-ink);font-weight:700;padding:15px 16px;text-align:center;font-family:var(--f-serif);font-size:1rem}
.cmp-tbl th:first-child{text-align:left}
.cmp-tbl td{padding:14px 16px;border-top:1px solid var(--c-line-soft);text-align:center;color:var(--c-ink-soft);font-size:.95rem}
.cmp-tbl td:first-child{text-align:left;font-weight:600;color:var(--c-ink)}
.cmp-tbl tbody tr:nth-child(even) td{background:var(--c-cream-wash)}
.cmp-tbl tbody tr:hover td{background:var(--c-pink-wash)}

/* ---------- 长廊 gl ---------- */
.gl-grid{display:grid;grid-template-columns:1fr;gap:clamp(14px,2vw,24px)}
.gl-item{position:relative;border-radius:var(--r-md);overflow:hidden;box-shadow:var(--sh-1)}
.gl-item img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .6s var(--ease)}
.gl-item:hover img{transform:scale(1.06)}
.gl-item figcaption{position:absolute;left:0;right:0;bottom:0;padding:34px 16px 12px;font-size:.88rem;font-weight:600;
  color:#FFF6EA;background:linear-gradient(transparent,rgba(56,38,32,.72))}
@media (min-width:640px){
  .gl-grid{grid-template-columns:repeat(2,1fr)}
  .gl-grid:has(> .gl-item:nth-child(5)){grid-template-columns:repeat(3,1fr)}
}
@media (min-width:992px){
  .gl-grid{grid-template-columns:repeat(4,1fr)}
}

/* ---------- 团队 tm（拍立得） ---------- */
.tm-grid{display:grid;grid-template-columns:1fr;gap:clamp(18px,2.6vw,30px)}
.tm{position:relative;background:var(--c-white);padding:16px 16px 22px;border-radius:6px;box-shadow:var(--sh-1);
  text-align:center;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.tm:hover{transform:translateY(-6px) rotate(.6deg);box-shadow:var(--sh-2)}
.tm::before{content:"";position:absolute;top:-10px;left:50%;transform:translateX(-50%) rotate(-2deg);
  width:90px;height:22px;background:var(--c-pink-soft);opacity:.85;border-radius:2px}
.tm figure{margin:0;overflow:hidden;border-radius:4px}
.tm figure img{width:100%;aspect-ratio:4/3;object-fit:cover}
.tm h3{font-family:var(--f-serif);font-size:1.1rem;margin:16px 0 .15em}
.tm > span{display:inline-block;font-size:.82rem;font-weight:700;letter-spacing:.16em;color:var(--c-accent);padding:.2em .9em;border:1px dashed var(--c-pink);border-radius:var(--r-full)}
.tm p{color:var(--c-ink-soft);font-size:.9rem;margin:12px 0 0}
@media (min-width:640px){.tm-grid{grid-template-columns:repeat(2,1fr)}}
@media (min-width:992px){.tm-grid{grid-template-columns:repeat(4,1fr)}}

/* ---------- 表单 fm ---------- */
.fm-sec{background:linear-gradient(180deg,var(--c-cream-wash),var(--c-pink-wash))}
.fm-grid{display:grid;grid-template-columns:1fr;gap:clamp(26px,4vw,56px);align-items:start}
.fm-intro .sec-kicker{margin-bottom:1em}
.fm-intro h2{font-size:clamp(1.5rem,2.8vw,2.1rem);margin-bottom:.5em}
.fm-desc{color:var(--c-ink-soft)}
.fm-contact{list-style:none;padding:0;margin:22px 0 0;display:grid;gap:10px}
.fm-contact li{display:flex;align-items:center;gap:10px;font-weight:600;color:var(--c-ink)}
.fm-contact svg{color:var(--c-pink-deep)}
.fm-points{list-style:none;padding:0;margin:22px 0 0;display:grid;gap:8px}
.fm-points li{position:relative;padding-left:1.8em;color:var(--c-ink-soft);font-size:.94rem}
.fm-points li::before{content:"";position:absolute;left:0;top:.5em;width:15px;height:15px;border-radius:50%;background:var(--c-pink-soft);border:2px solid var(--c-pink)}
.fm-points li::after{content:"✓";position:absolute;left:3px;top:-1px;font-size:.7rem;color:var(--c-pink-deep);font-weight:700}
.fm-card{background:var(--c-white);border-radius:var(--r-lg);box-shadow:var(--sh-2);border:1px solid var(--c-line-soft);padding:clamp(24px,3.4vw,38px);position:relative}
.fm-card::before{content:"";position:absolute;top:-11px;right:28px;width:96px;height:24px;background:var(--c-pink-soft);opacity:.9;border-radius:2px;transform:rotate(2deg)}
.fm-form{display:grid;grid-template-columns:1fr;gap:16px}
.fm-row{display:flex;flex-direction:column;gap:7px}
.fm-row label{font-weight:600;font-size:.93rem}
.fm-row input,.fm-row select,.fm-row textarea{border:1.5px solid var(--c-line);border-radius:var(--r-sm);padding:.72em 1em;
  background:var(--c-white);width:100%;font-size:16px;transition:border-color .25s,box-shadow .25s}
.fm-row input:focus,.fm-row select:focus,.fm-row textarea:focus{outline:none;border-color:var(--c-pink);box-shadow:0 0 0 3px var(--c-pink-wash)}
.fm-row textarea{resize:vertical;min-height:110px}
.fm-tip{font-size:.82rem;color:var(--c-ink-faint);margin:10px 0 0}
@media (min-width:720px){
  .fm-grid{grid-template-columns:.9fr 1.1fr}
  .fm-form{grid-template-columns:1fr 1fr}
  .fm-row-full{grid-column:1/-1}
}

/* ---------- 相关页 rel ---------- */
.rel-grid{display:grid;grid-template-columns:1fr;gap:clamp(18px,2.6vw,28px)}
.rel-card{display:flex;flex-direction:column;background:var(--c-white);border-radius:var(--r-lg);overflow:hidden;
  border:1px solid var(--c-line-soft);box-shadow:var(--sh-1);color:var(--c-ink);
  transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.rel-card:hover{transform:translateY(-6px);box-shadow:var(--sh-2);color:var(--c-ink)}
.rel-card img{width:100%;aspect-ratio:16/9;object-fit:cover}
.rel-body{padding:clamp(18px,2.4vw,26px);flex:1;display:flex;flex-direction:column}
.rel-body h3{font-size:1.08rem;margin-bottom:.4em}
.rel-body p{color:var(--c-ink-soft);font-size:.93rem;flex:1;margin:0 0 12px}
.rel-body span{font-weight:600;font-size:.9rem;color:var(--c-pink-deep)}
.rel-body span::after{content:" →";transition:margin .3s var(--ease)}
.rel-card:hover .rel-body span::after{margin-left:4px}
@media (min-width:640px){.rel-grid{grid-template-columns:repeat(2,1fr)}}

/* ---------- 富文本 intro ---------- */
.intro{max-width:840px;margin:0 auto}
.in-lead{font-family:var(--f-serif);font-size:clamp(1.18rem,2vw,1.5rem);line-height:1.9;color:var(--c-ink);margin-bottom:1.2em}
.in-p{color:var(--c-ink-soft);font-size:1rem}
.in-facts{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:28px}
.in-fact{background:var(--c-cream-wash);border:1px dashed var(--c-line);border-radius:var(--r-md);padding:16px 20px;text-align:center}
.in-fact b{display:block;font-family:var(--f-serif);font-size:1.5rem;color:var(--c-pink-deep)}
.in-fact span{font-size:.86rem;color:var(--c-ink-soft)}
@media (min-width:820px){.in-facts{grid-template-columns:repeat(4,1fr)}}

/* ---------- 信息行 info ---------- */
.info-grid{display:grid;grid-template-columns:1fr;gap:0}
.info-row{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:start;padding:clamp(18px,2.6vw,28px) 6px}
.info-row + .info-row{border-top:1px dashed var(--c-line)}
.info-ico{display:inline-flex;align-items:center;justify-content:center;width:54px;height:54px;border-radius:16px;
  background:var(--c-pink-wash);color:var(--c-pink-deep);transition:transform .3s var(--ease),background .3s var(--ease)}
.info-row:hover .info-ico{transform:rotate(-8deg);background:var(--c-pink-soft)}
.info-txt h3{font-size:1.1rem;margin-bottom:.3em}
.info-txt p{color:var(--c-ink-soft);font-size:.96rem;margin:0;max-width:760px}
@media (min-width:820px){.info-grid{grid-template-columns:1fr 1fr;column-gap:48px}}
@media (min-width:820px){
  .info-grid .info-row:nth-last-child(2){border-bottom:0}
  .info-grid .info-row:nth-last-child(1){border-bottom:0}
}

/* ---------- 页中横幅 mid-banner ---------- */
.mid-banner{position:relative;border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--sh-2)}
.mb-img{width:100%;aspect-ratio:16/7;object-fit:cover}
.mb-veil{position:absolute;inset:0;background:linear-gradient(96deg,rgba(56,38,32,.72),rgba(56,38,32,.16) 62%)}
.mb-txt{position:absolute;left:clamp(22px,5vw,64px);top:50%;transform:translateY(-50%);max-width:560px;color:#FFF6EA}
.mb-txt .sec-kicker{color:#F2C9CD}
.mb-txt .sec-kicker::before{background:var(--c-pink)}
.mb-txt h3{color:#FFF6EA;font-size:clamp(1.3rem,2.4vw,1.8rem)}
.mb-txt p{color:#EFE3D8;margin-bottom:1.1em}
@media (max-width:640px){.mb-txt{position:relative;transform:none;top:auto;inset:auto;padding:20px 22px;background:var(--c-ink)}}
