/* ========== 字体（自托管，子集化） ========== */
@font-face{font-family:"GD Serif SC";src:url(fonts/serif-sc-regular.woff2) format("woff2");font-weight:400 500;font-display:swap}
@font-face{font-family:"GD Serif SC";src:url(fonts/serif-sc-bold.woff2) format("woff2");font-weight:600 800;font-display:swap}
@font-face{font-family:"Newsreader";src:url(fonts/newsreader.woff2) format("woff2");font-weight:300 600;font-display:swap}
@font-face{font-family:"Newsreader";src:url(fonts/newsreader-italic.woff2) format("woff2");font-weight:300 600;font-style:italic;font-display:swap}
@font-face{font-family:"Inter";src:url(fonts/inter.woff2) format("woff2");font-weight:300 700;font-display:swap}

:root{
  --bg:#F5F1EA; --bg-2:#EFE9DF; --paper:#FBF9F5; --ink:#1F1E1C; --ink-2:#4A4740; --mute:#8A857A;
  --line:rgba(31,30,28,.10); --accent:#C96442; --accent-2:#E08A68; --dark:#1C1B19;
  --serif:"Newsreader","GD Serif SC","Source Han Serif SC","Noto Serif CJK SC","Songti SC","STSong",serif;
  --sans:"Inter",-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --ease:cubic-bezier(.2,.7,.1,1); --r:18px;
  --wrap:1200px; --pad:clamp(20px,5vw,56px);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:80px}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.75;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
::selection{background:var(--accent);color:#fff}
a{color:inherit;text-decoration:none}
img,video{max-width:100%;display:block}
h1,h2,h3,h4{font-family:var(--serif);font-weight:500;letter-spacing:-.01em;margin:0;color:var(--ink)}
p{margin:0 0 1em;color:var(--ink-2)}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--pad)}
.accent{color:var(--accent)}
.eyebrow{font-family:var(--sans);font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 22px;font-weight:500}
.eyebrow--light{color:var(--accent-2)}
.h2{font-size:clamp(32px,4.6vw,58px);line-height:1.22;margin-bottom:28px}
.h3{font-size:clamp(40px,5vw,64px);line-height:1.05;font-family:"Newsreader",var(--serif);font-weight:400;letter-spacing:-.02em}
.lead{font-size:clamp(17px,1.5vw,20px);line-height:1.85}
.fine{font-size:13px;color:var(--mute);margin-top:40px}
[data-todo]{outline:1px dashed rgba(201,100,66,.0);}
@media(max-width:640px){.hide-sm{display:none}}

/* ========== 按钮 ========== */
.btn{display:inline-flex;align-items:center;gap:10px;height:48px;padding:0 24px;border-radius:999px;font-size:15px;font-weight:500;
  transition:transform .4s var(--ease),background .3s,color .3s,box-shadow .4s var(--ease),border-color .3s;white-space:nowrap}
.btn .arrow{display:inline-block;transition:transform .4s var(--ease)}
.btn:hover .arrow{transform:translateX(4px)}
.btn--primary{background:var(--ink);color:var(--bg)}
.btn--primary:hover{background:var(--accent);transform:translateY(-2px);box-shadow:0 12px 30px -12px rgba(201,100,66,.6)}
.btn--ghost{border:1px solid var(--line);background:rgba(255,255,255,.35)}
.btn--ghost:hover{border-color:var(--ink);background:var(--ink);color:var(--bg)}
.btn--link{padding:0 4px;height:auto;color:var(--ink);position:relative}
.btn--link::after{content:"";position:absolute;left:4px;right:4px;bottom:-4px;height:1px;background:currentColor;transform:scaleX(.3);transform-origin:left;transition:transform .5s var(--ease)}
.btn--link:hover{color:var(--accent)}
.btn--link:hover::after{transform:scaleX(1)}

/* ========== 导航（吸顶 · 半透明毛玻璃） ========== */
.nav{position:fixed;inset:0 0 auto 0;z-index:50;transition:background .4s,box-shadow .4s,backdrop-filter .4s}
.nav__inner{max-width:var(--wrap);margin:0 auto;padding:0 var(--pad);height:72px;display:flex;align-items:center;gap:32px;transition:height .4s var(--ease)}
.nav.is-scrolled{background:rgba(245,241,234,.72);-webkit-backdrop-filter:saturate(1.6) blur(18px);backdrop-filter:saturate(1.6) blur(18px);box-shadow:0 1px 0 var(--line)}
.nav.is-scrolled .nav__inner{height:60px}
.brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:16px}
.brand__mark{width:30px;height:30px;border-radius:9px;background:var(--accent);color:#fff;display:grid;place-items:center;font-family:"Newsreader",serif;font-size:19px;font-weight:500;transition:transform .6s var(--ease)}
.brand:hover .brand__mark{transform:rotate(-12deg) scale(1.06)}
.brand__name em{font-style:normal;font-family:"Newsreader",serif;font-weight:400;color:var(--mute);margin-left:8px;font-size:15px}
.nav__links{display:flex;gap:28px;margin-left:auto;font-size:14.5px;color:var(--ink-2)}
.nav__links a{position:relative;padding:4px 0;transition:color .3s}
.nav__links a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:right;transition:transform .45s var(--ease)}
.nav__links a:hover,.nav__links a.is-active{color:var(--ink)}
.nav__links a:hover::after,.nav__links a.is-active::after{transform:scaleX(1);transform-origin:left}
.nav__cta{height:40px;padding:0 18px;font-size:14px}
.nav__toggle{display:none;margin-left:auto;width:40px;height:40px;border:0;background:none;position:relative;cursor:pointer}
.nav__toggle span{position:absolute;left:10px;right:10px;height:1.5px;background:var(--ink);transition:transform .4s var(--ease)}
.nav__toggle span:first-child{top:16px}.nav__toggle span:last-child{top:23px}
.nav.is-open .nav__toggle span:first-child{transform:translateY(3.5px) rotate(45deg)}
.nav.is-open .nav__toggle span:last-child{transform:translateY(-3.5px) rotate(-45deg)}
@media(max-width:960px){
  .nav__cta{display:none}
  .nav__toggle{display:block}
  .nav__links{position:fixed;inset:60px 0 auto 0;flex-direction:column;gap:0;padding:8px var(--pad) 24px;background:rgba(245,241,234,.96);
    -webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 20px 40px -20px rgba(0,0,0,.15);
    transform:translateY(-12px);opacity:0;pointer-events:none;transition:opacity .35s,transform .45s var(--ease)}
  .nav__links a{padding:14px 0;border-bottom:1px solid var(--line);font-size:17px}
  .nav.is-open{background:rgba(245,241,234,.96)}
  .nav.is-open .nav__links{opacity:1;transform:none;pointer-events:auto}
}

/* ========== 滚动渐显 ========== */
.reveal{opacity:0;transform:translateY(28px);transition:opacity 1s var(--ease),transform 1.1s var(--ease);transition-delay:var(--d,0s)}
.reveal.is-in{opacity:1;transform:none}
.no-js .reveal{opacity:1;transform:none}

/* ========== 首屏 ========== */
.hero{position:relative;min-height:100vh;min-height:100svh;padding:140px 0 90px;display:flex;align-items:center;overflow:hidden}
.hero::before{content:"";position:absolute;inset:-20% -10% auto auto;width:70vw;height:70vw;max-width:900px;max-height:900px;
  background:radial-gradient(closest-side,rgba(224,138,104,.22),transparent 70%);pointer-events:none}
.hero__grid{display:grid;grid-template-columns:1.05fr 1fr;gap:64px;align-items:center;width:100%}
.hero__title{font-size:clamp(30px,4.4vw,66px);line-height:1.16;font-weight:500;letter-spacing:-.02em;margin-bottom:28px}
.hero__title .accent{font-weight:600}
.hero__lead{font-size:clamp(17px,1.45vw,20px);max-width:34em;margin-bottom:36px}
.hero__actions{display:flex;gap:28px;align-items:center;flex-wrap:wrap}
.hero__meta{display:flex;gap:40px;margin:56px 0 0;padding-top:28px;border-top:1px solid var(--line)}
.hero__meta dt{font-family:var(--serif);font-size:18px;color:var(--ink)}
.hero__meta dd{margin:2px 0 0;font-size:13.5px;color:var(--mute)}
.hero__demo{position:relative;perspective:1200px}
.hero__demo .glow{position:absolute;inset:10% 5%;background:radial-gradient(closest-side,rgba(201,100,66,.28),transparent);filter:blur(40px);z-index:0}
.scroll-hint{position:absolute;left:50%;bottom:28px;width:22px;height:36px;border:1.5px solid rgba(31,30,28,.25);border-radius:12px;transform:translateX(-50%)}
.scroll-hint span{position:absolute;left:50%;top:7px;width:3px;height:7px;margin-left:-1.5px;border-radius:2px;background:var(--ink-2);animation:hint 2s var(--ease) infinite}
@keyframes hint{0%{opacity:0;transform:translateY(0)}30%{opacity:1}100%{opacity:0;transform:translateY(12px)}}
@media(max-width:960px){
  .hero{padding:110px 0 70px;min-height:auto}
  .hero__grid{grid-template-columns:1fr;gap:56px}
  .hero__meta{gap:24px;flex-wrap:wrap}
  .scroll-hint{display:none}
}

/* ========== 模拟产品窗口 ========== */
.win{position:relative;z-index:1;background:var(--paper);border-radius:16px;border:1px solid rgba(31,30,28,.08);
  box-shadow:0 1px 0 rgba(255,255,255,.8) inset,0 40px 80px -30px rgba(60,40,20,.28),0 12px 24px -12px rgba(60,40,20,.12);
  overflow:hidden;will-change:transform;transition:transform .8s var(--ease)}
.win__bar{display:flex;align-items:center;gap:7px;height:40px;padding:0 16px;border-bottom:1px solid var(--line);background:rgba(239,233,223,.6);font-size:12.5px;color:var(--mute)}
.win__bar i{width:10px;height:10px;border-radius:50%;background:#E2DACD}
.win__bar i:first-child{background:#E8A58D}
.win__bar span{margin-left:10px;font-family:var(--sans)}
.win__bar .live{margin-left:auto;font-weight:500;font-size:11px;color:var(--accent);background:rgba(201,100,66,.1);padding:2px 8px;border-radius:99px}
.win__body{position:relative;padding:22px}
.win__media{display:none;width:100%;height:auto;border-radius:10px}
.win__body.has-media>*:not(.win__media){display:none}
.win__body.has-media .win__media{display:block}

.chat{display:flex;flex-direction:column;gap:14px;min-height:170px}
.msg{font-size:14.5px;line-height:1.7;opacity:0;transform:translateY(8px);transition:opacity .5s var(--ease),transform .6s var(--ease)}
.msg.on{opacity:1;transform:none}
.msg--user{align-self:flex-end;max-width:85%;background:var(--ink);color:#F3EEE6;padding:10px 16px;border-radius:16px 16px 4px 16px}
.msg--ai{display:flex;gap:10px;align-items:flex-start;color:var(--ink-2)}
.ai-badge{flex:none;width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:10.5px;font-weight:700;color:#fff;
  background:linear-gradient(135deg,var(--accent),#E9A27F);box-shadow:0 4px 12px -4px rgba(201,100,66,.6)}
.msg--ai.thinking .ai-badge{animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{50%{transform:scale(.9);box-shadow:0 0 0 6px rgba(201,100,66,.12)}}
.caret{display:inline-block;width:2px;height:1.05em;background:currentColor;vertical-align:-2px;margin-left:2px;opacity:0}
.typing .caret{opacity:1;animation:blink .9s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px}
.dcard{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;opacity:0;transform:translateY(12px) scale(.97);
  transition:opacity .5s var(--ease),transform .7s var(--ease)}
.dcard.on{opacity:1;transform:none}
.dcard small{display:block;font-size:11.5px;color:var(--mute)}
.dcard strong{display:block;font-family:"Newsreader",serif;font-weight:500;font-size:30px;line-height:1.2;color:var(--ink)}
.dcard em{font-style:normal;font-size:11.5px;color:var(--ink-2)}
.dcard--accent{background:linear-gradient(160deg,#fff,#FBEDE6);border-color:rgba(201,100,66,.25)}
.dcard--accent strong{color:var(--accent)}
.demo__foot,.panel__foot{display:flex;justify-content:space-between;align-items:center;margin-top:16px}
.note{font-size:11px;color:var(--mute)}
.mini-btn{font:500 12.5px var(--sans);border:0;border-radius:99px;padding:8px 16px;background:var(--ink);color:#fff;transition:transform .2s,background .3s;opacity:.35}
.mini-btn.on{opacity:1}
.mini-btn.press{transform:scale(.93);background:var(--accent)}
.cursor{position:absolute;left:0;top:0;width:20px;height:20px;z-index:5;pointer-events:none;opacity:0;
  transition:transform 1.1s cubic-bezier(.6,.05,.2,1),opacity .4s;filter:drop-shadow(0 3px 4px rgba(0,0,0,.25))}
.cursor svg{width:100%;height:100%;fill:var(--ink);stroke:#fff;stroke-width:1.5}
.cursor.click::after{content:"";position:absolute;left:-10px;top:-10px;width:24px;height:24px;border-radius:50%;border:2px solid var(--accent);animation:ripple .6s var(--ease) forwards}
@keyframes ripple{from{transform:scale(.3);opacity:1}to{transform:scale(1.6);opacity:0}}
.float-chip{position:absolute;z-index:2;font-size:12.5px;padding:8px 14px;border-radius:99px;background:rgba(255,255,255,.82);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(31,30,28,.06);box-shadow:0 14px 30px -14px rgba(60,40,20,.35);
  display:flex;align-items:center;gap:8px;white-space:nowrap;will-change:transform;transition:transform .8s var(--ease)}
.float-chip .dot{width:7px;height:7px;border-radius:50%;background:#5BA471;box-shadow:0 0 0 4px rgba(91,164,113,.15)}
.chip-a{left:-28px;bottom:54px}.chip-b{right:-16px;top:-16px;color:var(--accent)}
@media(max-width:640px){.chip-a{left:8px;bottom:-18px}.chip-b{right:8px}.cards strong{font-size:24px}.win__body{padding:16px}}

/* ========== 通用板块 ========== */
.section{padding:clamp(96px,13vw,170px) 0}
.section--alt{background:var(--bg-2)}
.sec-head{margin-bottom:64px}
.sec-head--row{display:flex;justify-content:space-between;align-items:flex-end;gap:40px}
.sec-head__aside{max-width:18em;font-size:14px;color:var(--mute)}
@media(max-width:760px){.sec-head--row{display:block}}

/* 关于我 */
.about{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(40px,7vw,110px);align-items:center}
.about__photo{margin:0}
.about__photo figcaption{margin-top:16px;font-size:13.5px;color:var(--mute)}
.ph{display:grid;place-items:center;border-radius:var(--r);background:
  repeating-linear-gradient(135deg,rgba(31,30,28,.035) 0 12px,transparent 12px 24px),linear-gradient(160deg,#E9E1D4,#DDD3C3);
  color:var(--mute);text-align:center;font-size:15px;transition:transform 1.2s var(--ease)}
.ph small{font-size:12px}
.ph--portrait{aspect-ratio:4/5}
.about__photo:hover .ph{transform:scale(1.015)}
.facts{list-style:none;display:flex;gap:44px;padding:32px 0 0;margin:36px 0 0;border-top:1px solid var(--line)}
.facts strong{display:block;font-family:var(--serif);font-weight:500;font-size:34px;color:var(--ink);line-height:1.2}
.facts span{font-size:13.5px;color:var(--mute)}
@media(max-width:860px){.about{grid-template-columns:1fr}.about__photo{max-width:420px}.facts{gap:28px;flex-wrap:wrap}}

/* 课程 */
.course-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.course{position:relative;background:var(--paper);border:1px solid var(--line);border-radius:22px;padding:clamp(30px,4vw,52px);
  transition:transform .6s var(--ease),box-shadow .6s var(--ease),border-color .4s,opacity 1s var(--ease)}
.course:hover{transform:translateY(-6px);box-shadow:0 30px 60px -30px rgba(60,40,20,.3);border-color:rgba(201,100,66,.3)}
.course__no{font-family:"Newsreader",serif;font-style:italic;font-size:54px;line-height:1;color:var(--accent);display:block;margin-bottom:28px;transition:transform .6s var(--ease)}
.course:hover .course__no{transform:translateX(6px)}
.course h3{font-size:clamp(26px,2.6vw,34px);margin-bottom:14px}
.course ul{list-style:none;padding:0;margin:28px 0 0;border-top:1px solid var(--line)}
.course li{padding:14px 0;border-bottom:1px solid var(--line);font-size:15.5px;display:flex;align-items:center;gap:12px;transition:padding .4s var(--ease),color .3s}
.course li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);opacity:.5;transition:opacity .3s}
.course li:hover{padding-left:6px;color:var(--ink)}
.course li:hover::before{opacity:1}
@media(max-width:860px){.course-grid{grid-template-columns:1fr}}

/* 作品卡片 */
.work-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:40px}
.work{position:relative;display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line);border-radius:20px;overflow:hidden;
  transition:transform .6s var(--ease),box-shadow .6s var(--ease),border-color .4s,opacity 1s var(--ease);isolation:isolate}
.work::before{content:"";position:absolute;inset:0;z-index:-1;opacity:0;transition:opacity .5s;
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(201,100,66,.10),transparent 60%)}
.work:hover{transform:translateY(-8px);box-shadow:0 40px 70px -36px rgba(60,40,20,.38);border-color:rgba(201,100,66,.28)}
.work:hover::before{opacity:1}
.work__shot{position:relative;aspect-ratio:16/10;background:linear-gradient(160deg,#EDE6DA,#E2D9CA);overflow:hidden}
.shot-label{position:absolute;right:12px;bottom:10px;font-size:11px;color:var(--mute);background:rgba(255,255,255,.7);padding:2px 8px;border-radius:99px}
.mock{position:absolute;inset:16% 12% -10%;background:#fff;border-radius:12px 12px 0 0;box-shadow:0 20px 40px -20px rgba(60,40,20,.35);padding:14px;
  transition:transform .9s var(--ease)}
.work:hover .mock{transform:translateY(-6%) scale(1.03) rotate(-.6deg)}
.mock--table{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-content:start}
.mock--table i{height:12px;border-radius:4px;background:rgba(31,30,28,.07)}
.mock--table i:nth-child(odd){background:rgba(201,100,66,.18)}
.mock--chart{display:flex;align-items:flex-end;gap:10px;padding-bottom:30px}
.mock--chart i{flex:1;height:var(--h);border-radius:5px 5px 2px 2px;background:linear-gradient(180deg,var(--accent-2),var(--accent));opacity:.85;transform-origin:bottom;transition:transform .9s var(--ease)}
.work:hover .mock--chart i{transform:scaleY(1.08)}
.mock--chat{display:flex;flex-direction:column;gap:10px}
.mock--chat i{height:22px;border-radius:10px;background:rgba(31,30,28,.07);width:70%}
.mock--chat i:nth-child(2){align-self:flex-end;background:var(--ink);opacity:.85;width:55%}
.mock--chat i:nth-child(3){width:80%;background:rgba(201,100,66,.16)}
.work__body{padding:26px 26px 28px;display:flex;flex-direction:column;flex:1}
.work h4{font-size:22px;margin-bottom:10px}
.work p{font-size:15px;flex:1}
.work__link{font-size:14px;font-weight:500;color:var(--ink);display:inline-flex;gap:8px;align-items:center;transition:color .3s}
.work__link .arrow{transition:transform .45s var(--ease)}
.work:hover .work__link{color:var(--accent)}
.work:hover .work__link .arrow{transform:translate(3px,-3px)}
@media(max-width:960px){.work-grid{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.work-grid{grid-template-columns:1fr}}

/* 视频号（深色） */
.section--dark{background:var(--dark);color:#EDE7DC}
.section--dark .h2{color:#F5F1EA}
.section--dark p{color:#BDB5A8}
.section--dark strong{color:#F5F1EA}
.video{display:grid;grid-template-columns:1.3fr .7fr;gap:80px;align-items:center}
.video__stats{display:flex;gap:56px;margin-top:40px;padding-top:28px;border-top:1px solid rgba(255,255,255,.1)}
.video__stats strong{display:block;font-family:"Newsreader",serif;font-weight:400;font-size:48px;line-height:1.1}
.video__stats span{font-size:13.5px;color:#8F887C}
.qr{text-align:center}
.qr__box{width:min(260px,70vw);aspect-ratio:1;margin:0 auto 18px;border-radius:24px;background:#F5F1EA;color:var(--mute);display:grid;place-items:center;font-size:14px;
  box-shadow:0 0 0 10px rgba(255,255,255,.04),0 40px 80px -30px rgba(201,100,66,.5);transition:transform .7s var(--ease)}
.qr:hover .qr__box{transform:translateY(-6px) rotate(-1.5deg)}
.qr p{font-size:14px}
@media(max-width:860px){.video{grid-template-columns:1fr;gap:56px}}

/* 社区 */
.community{text-align:center;max-width:760px}
.community .lead{margin:0 auto 36px;max-width:32em}

/* 联系 */
.contact{display:grid;grid-template-columns:1fr 1fr;gap:64px}
.contact__list{margin:0}
.contact__list div{display:grid;grid-template-columns:88px 1fr;gap:20px;padding:20px 0;border-bottom:1px solid var(--line);transition:padding .4s var(--ease)}
.contact__list div:first-child{border-top:1px solid var(--line)}
.contact__list div:hover{padding-left:8px}
.contact__list dt{font-size:13.5px;color:var(--mute);padding-top:2px}
.contact__list dd{margin:0;font-size:17px;color:var(--ink)}
@media(max-width:860px){.contact{grid-template-columns:1fr;gap:24px}}

/* 页脚 */
.footer{padding:40px 0 calc(40px + env(safe-area-inset-bottom));border-top:1px solid var(--line);font-size:13.5px;color:var(--mute)}
.footer__inner{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.footer__brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:500;margin-right:auto}
.footer__brand .brand__mark{width:24px;height:24px;font-size:15px;border-radius:7px}
.footer p{margin:0;color:inherit}
.footer .icp a{color:inherit;text-decoration:none}
.footer .icp a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:2px}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .reveal{opacity:1;transform:none}
}

/* ========== 标签 ========== */
.tag{display:inline-block;font-size:12px;font-weight:500;letter-spacing:.08em;color:#fff;background:var(--accent);padding:4px 12px;border-radius:99px;margin-bottom:22px}
.tag--soft{background:rgba(201,100,66,.12);color:var(--accent)}
.tag--ok{background:rgba(91,122,100,.14);color:#3F5D4A}

/* ========== 首页：GD-DentOS 旗舰入口卡片 ========== */
.feature{position:relative;display:grid;grid-template-columns:.9fr 1.1fr;gap:40px;align-items:center;overflow:hidden;isolation:isolate;
  padding:clamp(32px,5vw,64px);border-radius:28px;background:linear-gradient(150deg,#FBF9F5 0%,#F3ECE1 100%);border:1px solid var(--line);
  transition:transform .7s var(--ease),box-shadow .7s var(--ease),border-color .4s,opacity 1s var(--ease)}
.feature::before{content:"";position:absolute;inset:0;z-index:-1;opacity:0;transition:opacity .6s;
  background:radial-gradient(600px circle at var(--mx,70%) var(--my,50%),rgba(201,100,66,.13),transparent 60%)}
.feature:hover{transform:translateY(-6px);box-shadow:0 50px 90px -50px rgba(60,40,20,.45);border-color:rgba(201,100,66,.28)}
.feature:hover::before{opacity:1}
.feature .h3{margin-bottom:18px}
.feature__copy p{font-size:16.5px;max-width:28em}
.feature__more{display:inline-flex;gap:10px;align-items:center;margin-top:14px;font-weight:500;font-size:15px;color:var(--ink);transition:color .3s}
.feature__more .arrow{transition:transform .45s var(--ease)}
.feature:hover .feature__more{color:var(--accent)}
.feature:hover .feature__more .arrow{transform:translateX(6px)}
.feature__visual{perspective:1400px}
.mini-ipad{aspect-ratio:4/3;border-radius:7%/9.3%;padding:2.4%;background:#0E0E10;
  box-shadow:0 0 0 2px #C9C9CE,0 0 0 3px #EDEDF0,0 50px 80px -40px rgba(40,30,20,.5);
  transform:rotateY(-14deg) rotateX(8deg) rotateZ(1.5deg) translateZ(0);transition:transform 1.1s var(--ease)}
.feature:hover .mini-ipad{transform:rotateY(-6deg) rotateX(4deg) rotateZ(0) translateY(-6px) scale(1.02)}
.mini-ipad__screen{height:100%;border-radius:4.6%/6.1%;background:linear-gradient(180deg,#FDFCFA,#F6F2EC);overflow:hidden;padding:4%;display:flex;flex-direction:column;gap:5%;container-type:inline-size}
.mi-top{display:flex;justify-content:space-between;align-items:center;font-size:3.4cqw}
.mi-top b{font-family:"Newsreader",serif;font-weight:500;color:var(--ink)}
.mi-pill{display:flex;align-items:center;gap:1.2cqw;font-size:2.4cqw;color:var(--accent);background:rgba(201,100,66,.1);padding:.6cqw 2cqw;border-radius:9cqw}
.mi-pill i{width:1.4cqw;height:1.4cqw;border-radius:50%;background:#5BA471}
.mi-tabs{display:flex;gap:2cqw}
.mi-tabs i{height:4.4cqw;flex:1;border-radius:9cqw;background:rgba(31,30,28,.06)}
.mi-tabs i.on{background:var(--ink)}
.mi-main{flex:1;display:grid;grid-template-columns:1.1fr 1fr;gap:3cqw}
.mi-chat{display:flex;flex-direction:column;gap:2.4cqw}
.mi-q{align-self:flex-end;width:70%;height:6cqw;border-radius:3cqw 3cqw 1cqw 3cqw;background:var(--ink)}
.mi-a{display:flex;flex-direction:column;gap:1.6cqw;padding:3cqw;border-radius:2.4cqw;background:#fff;border:1px solid var(--line)}
.mi-a em{height:1.8cqw;border-radius:2cqw;background:rgba(31,30,28,.09);transform-origin:left;animation:miLine 3.6s var(--ease) infinite}
.mi-a em:nth-child(2){width:85%;animation-delay:.25s}.mi-a em:nth-child(3){width:60%;animation-delay:.5s;background:rgba(201,100,66,.25)}
@keyframes miLine{0%{transform:scaleX(0)}35%,100%{transform:scaleX(1)}}
.mi-dots{display:flex;gap:1.2cqw;padding-left:1cqw}
.mi-dots i{width:1.6cqw;height:1.6cqw;border-radius:50%;background:var(--accent);opacity:.3;animation:dots 1.2s ease-in-out infinite}
.mi-dots i:nth-child(2){animation-delay:.15s}.mi-dots i:nth-child(3){animation-delay:.3s}
@keyframes dots{40%{opacity:1;transform:translateY(-.6cqw)}}
.mi-cards{display:grid;grid-template-columns:1fr 1fr;gap:2cqw;align-content:start}
.mi-cards span{height:11cqw;border-radius:2.4cqw;background:#fff;border:1px solid var(--line)}
.mi-cards span.acc{background:linear-gradient(160deg,#fff,#FBE7DD)}
.mi-bars{grid-column:span 2;height:13cqw;display:flex;align-items:flex-end;gap:1.6cqw;padding:2cqw;border-radius:2.4cqw;background:#fff;border:1px solid var(--line)}
.mi-bars i{flex:1;border-radius:1cqw;background:linear-gradient(180deg,var(--accent-2),var(--accent));transform-origin:bottom;animation:miBar 3.6s var(--ease) infinite}
.mi-bars i:nth-child(1){height:45%}.mi-bars i:nth-child(2){height:75%;animation-delay:.1s}.mi-bars i:nth-child(3){height:55%;animation-delay:.2s}.mi-bars i:nth-child(4){height:90%;animation-delay:.3s}.mi-bars i:nth-child(5){height:65%;animation-delay:.4s}
@keyframes miBar{0%{transform:scaleY(.15)}40%,100%{transform:scaleY(1)}}
.feature + .work-grid{margin-top:24px}
@media(max-width:860px){.feature{grid-template-columns:1fr;gap:36px}.mini-ipad{transform:rotateY(-8deg) rotateX(6deg)}}

/* ======================================================================
   详情页（/gd-dentos/、/tools/xxx/）
   ====================================================================== */
.p-hero{position:relative;padding:150px 0 40px;overflow:hidden;text-align:center}
.p-hero::before{content:"";position:absolute;left:50%;top:-10%;width:1100px;height:900px;transform:translateX(-50%);
  background:radial-gradient(closest-side,rgba(224,138,104,.20),transparent 70%);pointer-events:none}
.crumb{display:inline-flex;gap:8px;font-size:13.5px;color:var(--mute);margin-bottom:28px}
.crumb a{transition:color .3s}.crumb a:hover{color:var(--accent)}
.p-hero__title{font-family:"Newsreader",var(--serif);font-size:clamp(56px,9vw,128px);line-height:.98;font-weight:400;letter-spacing:-.035em;margin-bottom:26px}
.p-hero__title .it{font-style:italic;color:var(--accent)}
.p-hero__sub{font-family:var(--serif);font-size:clamp(20px,2.3vw,30px);line-height:1.5;color:var(--ink);max-width:22em;margin:0 auto 18px}
.p-hero__lead{max-width:36em;margin:0 auto 40px;font-size:16.5px}
.p-hero__actions{display:flex;gap:24px;justify-content:center;align-items:center;flex-wrap:wrap}

/* ---------- iPad 外框（CSS 绘制） ---------- */
.stage{position:relative;max-width:1080px;margin:72px auto 0;padding:0 var(--pad);perspective:2000px}
.stage::after{content:"";position:absolute;left:12%;right:12%;bottom:-40px;height:80px;background:radial-gradient(closest-side,rgba(60,40,20,.28),transparent);filter:blur(18px);z-index:-1}
.ipad{position:relative;aspect-ratio:4/3;border-radius:46px;padding:20px;background:#0D0D0F;
  box-shadow:0 0 0 1.5px #B8B8BE,0 0 0 4px #E8E8EC,0 0 0 5px #C6C6CC,
    inset 0 0 0 1px rgba(255,255,255,.06),0 80px 120px -60px rgba(50,35,20,.55),0 30px 60px -30px rgba(50,35,20,.3);
  transform:rotateX(var(--rx,10deg)) rotateY(var(--ry,0deg)) translateZ(0);transform-style:preserve-3d;
  transition:transform 1.2s var(--ease);will-change:transform}
.ipad::before{content:"";position:absolute;top:9px;left:50%;width:7px;height:7px;margin-left:-3.5px;border-radius:50%;background:#1d1d22;box-shadow:inset 0 0 0 1.5px #2a2a33}
.ipad::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(115deg,rgba(255,255,255,.10) 0%,rgba(255,255,255,0) 38%)}
.ipad__btn{position:absolute;top:-4px;right:90px;width:44px;height:4px;border-radius:3px 3px 0 0;background:#C6C6CC}
.ipad.is-in{--rx:4deg}
.screen{position:relative;height:100%;border-radius:28px;overflow:hidden;background:linear-gradient(180deg,#FEFDFB 0%,#F7F3ED 100%);container-type:inline-size}
.screen__glare{position:absolute;inset:0;pointer-events:none;z-index:4;background:linear-gradient(125deg,rgba(255,255,255,.35),rgba(255,255,255,0) 30%);mix-blend-mode:soft-light}
.screen .media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:none;z-index:3}
.screen.has-media .media{display:block}
.float{position:absolute;z-index:3;font-size:13px;padding:9px 15px;border-radius:99px;background:rgba(255,255,255,.85);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(31,30,28,.06);box-shadow:0 18px 40px -18px rgba(60,40,20,.4);
  display:flex;gap:8px;align-items:center;white-space:nowrap;will-change:transform;transition:transform .9s var(--ease)}
.float .dot{width:7px;height:7px;border-radius:50%;background:#5BA471;box-shadow:0 0 0 4px rgba(91,164,113,.15)}
.float--a{left:-10px;top:22%}.float--b{right:-16px;top:56%;color:var(--accent)}.float--c{left:8%;bottom:-22px}

/* ---------- iPad 屏幕里的应用（单位 cqw，随屏幕等比缩放） ---------- */
.app{height:100%;display:grid;grid-template-rows:auto auto 1fr auto;padding:2.6cqw 3cqw 2.2cqw;gap:1.8cqw;font-size:1.45cqw;line-height:1.65;color:var(--ink-2)}
.app__top{display:flex;align-items:center;gap:1.2cqw}
.app__logo{width:3.4cqw;height:3.4cqw;border-radius:1cqw;background:var(--ink);color:#fff;display:grid;place-items:center;font:600 1.2cqw var(--sans)}
.app__name{font-family:"Newsreader",serif;font-size:2cqw;color:var(--ink);font-weight:500}
.app__status{margin-left:auto;display:flex;align-items:center;gap:.8cqw;font-size:1.2cqw;color:var(--accent);background:rgba(201,100,66,.09);padding:.4cqw 1.3cqw;border-radius:9cqw}
.app__status i{width:.8cqw;height:.8cqw;border-radius:50%;background:#5BA471;animation:pulse2 1.8s ease-in-out infinite}
@keyframes pulse2{50%{box-shadow:0 0 0 .6cqw rgba(91,164,113,.18)}}
.tabs{position:relative;display:flex;gap:.4cqw;padding:.5cqw;border-radius:9cqw;background:rgba(31,30,28,.05);width:max-content;max-width:100%}
.tabs button{position:relative;z-index:1;border:0;background:none;font:500 1.35cqw var(--sans);color:var(--ink-2);padding:.9cqw 2.2cqw;border-radius:9cqw;cursor:pointer;transition:color .4s;white-space:nowrap}
.tabs button[aria-selected="true"]{color:#fff}
.tabs button:not([aria-selected="true"]):hover{color:var(--ink)}
.tabs__pill{position:absolute;z-index:0;top:.5cqw;bottom:.5cqw;left:0;border-radius:9cqw;background:var(--ink);box-shadow:0 .6cqw 1.6cqw -.6cqw rgba(0,0,0,.4);transition:transform .6s var(--ease),width .6s var(--ease)}
.app__main{display:grid;grid-template-columns:1.15fr 1fr;gap:2.4cqw;min-height:0}
.convo{display:flex;flex-direction:column;gap:1.6cqw;min-height:0}
.bubble-q{align-self:flex-end;max-width:85%;background:var(--ink);color:#F3EEE6;padding:1.1cqw 1.8cqw;border-radius:1.8cqw 1.8cqw .5cqw 1.8cqw;min-height:4cqw}
.bubble-a{display:flex;gap:1.2cqw;align-items:flex-start;padding:1.6cqw 1.8cqw;border-radius:1.6cqw;background:#fff;border:1px solid var(--line);box-shadow:0 1cqw 3cqw -2cqw rgba(60,40,20,.25);min-height:12cqw}
.bubble-a .ai-badge{width:3cqw;height:3cqw;border-radius:.9cqw;font-size:1.1cqw}
.bubble-a.thinking .ai-badge{animation:pulse 1.2s ease-in-out infinite}
.think{display:none;gap:.6cqw;padding-top:1cqw}
.bubble-a.thinking .think{display:flex}
.think i{width:.8cqw;height:.8cqw;border-radius:50%;background:var(--accent);opacity:.3;animation:dots 1.2s ease-in-out infinite}
.think i:nth-child(2){animation-delay:.15s}.think i:nth-child(3){animation-delay:.3s}
.src{display:flex;gap:.8cqw;flex-wrap:wrap}
.src span{font-size:1.1cqw;padding:.3cqw 1cqw;border-radius:9cqw;border:1px solid var(--line);background:rgba(255,255,255,.7);opacity:0;transform:translateY(.6cqw);transition:all .5s var(--ease)}
.src.on span{opacity:1;transform:none}
.src.on span:nth-child(2){transition-delay:.1s}.src.on span:nth-child(3){transition-delay:.2s}
.metrics{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1.2cqw;align-content:start}
.metric{background:#fff;border:1px solid var(--line);border-radius:1.4cqw;padding:1.3cqw 1.4cqw;opacity:0;transform:translateY(1.2cqw) scale(.97);transition:opacity .5s var(--ease),transform .7s var(--ease)}
.metric.on{opacity:1;transform:none}
.metric small{display:block;font-size:1.1cqw;color:var(--mute)}
.metric strong{display:block;font-family:"Newsreader",serif;font-weight:500;font-size:3.2cqw;line-height:1.15;color:var(--ink)}
.metric em{font-style:normal;font-size:1.05cqw}
.metric.acc{background:linear-gradient(160deg,#fff,#FBEDE6);border-color:rgba(201,100,66,.25)}
.metric.acc strong{color:var(--accent)}
.chart{grid-column:1/-1;background:#fff;border:1px solid var(--line);border-radius:1.4cqw;padding:1.4cqw 1.6cqw;opacity:0;transition:opacity .6s .2s}
.chart.on{opacity:1}
.chart__h{display:flex;justify-content:space-between;font-size:1.1cqw;color:var(--mute);margin-bottom:1cqw}
.chart__bars{display:flex;align-items:flex-end;gap:1cqw;height:9cqw}
.chart__bars i{flex:1;height:var(--h,10%);border-radius:.6cqw .6cqw .2cqw .2cqw;background:linear-gradient(180deg,#EAB59C,var(--accent));transform:scaleY(0);transform-origin:bottom;transition:transform .9s var(--ease),height .9s var(--ease)}
.chart.on .chart__bars i{transform:scaleY(1)}
.chart__bars i:nth-child(2){transition-delay:.05s}.chart__bars i:nth-child(3){transition-delay:.1s}.chart__bars i:nth-child(4){transition-delay:.15s}.chart__bars i:nth-child(5){transition-delay:.2s}.chart__bars i:nth-child(6){transition-delay:.25s}
.app__foot{display:flex;justify-content:space-between;align-items:center;font-size:1.1cqw;color:var(--mute)}
.app__foot button{font:500 1.2cqw var(--sans);border:0;border-radius:9cqw;padding:.8cqw 1.8cqw;background:var(--accent);color:#fff;cursor:pointer;transition:transform .2s,box-shadow .3s}
.app__foot button:hover{box-shadow:0 .8cqw 2cqw -.8cqw rgba(201,100,66,.8)}
.app__foot button:active{transform:scale(.95)}
.tap{position:absolute;z-index:5;width:5cqw;height:5cqw;margin:-2.5cqw 0 0 -2.5cqw;border-radius:50%;background:rgba(201,100,66,.25);border:2px solid rgba(201,100,66,.6);pointer-events:none;opacity:0;transform:scale(.4)}
.tap.go{animation:tap .7s var(--ease)}
@keyframes tap{0%{opacity:0;transform:scale(.4)}30%{opacity:1}100%{opacity:0;transform:scale(1.4)}}
.app__toast{position:absolute;left:50%;bottom:3cqw;z-index:5;transform:translate(-50%,2cqw);opacity:0;font-size:1.3cqw;background:var(--ink);color:#fff;padding:1cqw 2cqw;border-radius:1.2cqw;transition:all .5s var(--ease)}
.app__toast.on{opacity:1;transform:translate(-50%,0)}
.hint{text-align:center;margin-top:44px;font-size:13.5px;color:var(--mute)}
.hint b{color:var(--accent);font-weight:500}

@media(max-width:760px){
  .p-hero{padding:120px 0 20px}
  .stage{margin-top:48px;padding:0 16px}
  .ipad{aspect-ratio:3/4.1;border-radius:34px;padding:13px}
  .ipad.is-in{--rx:3deg}
  .ipad__btn{right:auto;left:-4px;top:80px;width:4px;height:36px;border-radius:3px 0 0 3px}
  .screen{border-radius:22px}
  .app{font-size:3.5cqw;padding:5cqw 4.4cqw 4cqw;gap:3.4cqw;grid-template-rows:auto auto 1fr auto}
  .app__logo{width:7cqw;height:7cqw;border-radius:2cqw;font-size:2.6cqw}
  .app__name{font-size:4.6cqw}
  .app__status{font-size:2.8cqw;padding:.8cqw 2.6cqw;gap:1.4cqw}.app__status i{width:1.8cqw;height:1.8cqw}
  .tabs{width:100%;padding:1cqw;gap:0}
  .tabs button{flex:1;font-size:3.1cqw;padding:2cqw 0}
  .tabs__pill{top:1cqw;bottom:1cqw}
  .app__main{grid-template-columns:1fr;gap:3.4cqw}
  .convo{gap:2.6cqw}
  .bubble-q{padding:2.2cqw 3.4cqw;border-radius:3.6cqw 3.6cqw 1cqw 3.6cqw;min-height:8cqw}
  .bubble-a{padding:3cqw 3.2cqw;border-radius:3.2cqw;gap:2.4cqw;min-height:30cqw}
  .bubble-a .ai-badge{width:6.4cqw;height:6.4cqw;font-size:2.4cqw;border-radius:2cqw}
  .think i{width:1.8cqw;height:1.8cqw}
  .src span{font-size:2.6cqw;padding:.6cqw 2.2cqw}
  .metrics{gap:2.4cqw}
  .metric{padding:2.6cqw;border-radius:3cqw}
  .metric small,.metric em{font-size:2.6cqw}
  .metric strong{font-size:7cqw}
  .chart{padding:3cqw;border-radius:3cqw}
  .chart__h{font-size:2.6cqw}
  .chart__bars{height:16cqw;gap:2cqw}
  .app__foot{font-size:2.6cqw}.app__foot button{font-size:2.9cqw;padding:1.8cqw 3.6cqw}
  .app__toast{font-size:3cqw;padding:2cqw 4cqw;border-radius:2.4cqw}
  .float{font-size:12px;padding:7px 12px}
  .float--a{left:12px;top:-18px}.float--b{right:0;top:auto;bottom:24%}.float--c{display:none}
}

/* ---------- 滚动叙事：左侧文字逐段滚动，右侧画面吸顶切换 ---------- */
.story{padding:clamp(110px,14vw,200px) 0 60px}
.story__grid{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(40px,6vw,96px)}
.story__steps{padding:10vh 0 20vh}
.chapter{min-height:72vh;display:flex;flex-direction:column;justify-content:center;opacity:.28;transition:opacity .8s var(--ease)}
.chapter.is-active{opacity:1}
.chapter__no{font-family:"Newsreader",serif;font-style:italic;font-size:22px;color:var(--accent);margin-bottom:16px}
.chapter h3{font-size:clamp(30px,3.4vw,46px);line-height:1.25;margin-bottom:20px}
.chapter p{font-size:17px;max-width:26em}
.chapter ul{list-style:none;padding:0;margin:14px 0 0}
.chapter li{padding:8px 0 8px 22px;position:relative;font-size:15.5px;color:var(--ink-2)}
.chapter li::before{content:"";position:absolute;left:0;top:19px;width:10px;height:1px;background:var(--accent)}
.chapter .shot-m{display:none}
.story__visual{position:sticky;top:0;height:100vh;display:flex;align-items:center}
.vframe{position:relative;width:100%;aspect-ratio:4/3;border-radius:28px;padding:12px;background:#0D0D0F;
  box-shadow:0 0 0 1.5px #B8B8BE,0 0 0 3.5px #E8E8EC,0 60px 100px -50px rgba(50,35,20,.5)}
.vframe__screen{position:relative;height:100%;border-radius:18px;overflow:hidden;background:#F7F3ED}
.vshot{position:absolute;inset:0;opacity:0;transform:scale(1.04);transition:opacity .9s var(--ease),transform 1.4s var(--ease)}
.vshot.is-active{opacity:1;transform:none}
.vshot img,.vshot video{width:100%;height:100%;object-fit:cover}
.shot-ph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--mute);font-size:14px;text-align:center;
  background:repeating-linear-gradient(135deg,rgba(31,30,28,.03) 0 14px,transparent 14px 28px),linear-gradient(160deg,var(--c1,#F4EEE5),var(--c2,#E7DDCE))}
.shot-ph b{font-family:"Newsreader",var(--serif);font-weight:400;font-size:44px;color:var(--ink);opacity:.8}
.shot-ph small{font-size:12px}
.progress{position:absolute;right:-28px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:10px}
.progress i{width:4px;height:22px;border-radius:4px;background:rgba(31,30,28,.12);transition:background .5s,height .5s var(--ease)}
.progress i.is-active{background:var(--accent);height:40px}
@media(max-width:900px){
  .story__grid{grid-template-columns:1fr}
  .story__visual{display:none}
  .story__steps{padding:0}
  .chapter{min-height:0;opacity:1;padding:56px 0;border-top:1px solid var(--line)}
  .chapter .shot-m{display:block;position:relative;aspect-ratio:4/3;margin-top:28px;border-radius:20px;overflow:hidden;box-shadow:0 0 0 8px #0D0D0F,0 0 0 9.5px #C6C6CC,0 40px 60px -40px rgba(50,35,20,.5);margin:36px 10px 0}
}

/* ---------- 截图墙 ---------- */
.gallery{display:grid;grid-template-columns:1.4fr 1fr;grid-template-rows:auto auto;gap:24px}
.gallery figure{margin:0;position:relative;border-radius:22px;overflow:hidden;aspect-ratio:4/3;border:1px solid var(--line);transition:transform .8s var(--ease),box-shadow .8s var(--ease)}
.gallery figure:first-child{grid-row:span 2;aspect-ratio:auto}
.gallery figure:hover{transform:translateY(-6px);box-shadow:0 40px 70px -40px rgba(60,40,20,.4)}
.gallery figure .shot-ph{transition:transform 1.2s var(--ease)}
.gallery figure:hover .shot-ph{transform:scale(1.03)}
.gallery figcaption{position:absolute;left:18px;bottom:16px;font-size:13px;background:rgba(255,255,255,.8);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:5px 12px;border-radius:99px;color:var(--ink-2)}
@media(max-width:760px){.gallery{grid-template-columns:1fr}.gallery figure:first-child{grid-row:auto;aspect-ratio:4/3}}

/* ---------- 理念三栏 ---------- */
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--line)}
.trio div{padding:40px 32px 0 0}
.trio div+div{padding-left:32px;border-left:1px solid var(--line)}
.trio h4{font-size:24px;margin-bottom:12px}
.trio p{font-size:15.5px}
@media(max-width:760px){.trio{grid-template-columns:1fr}.trio div,.trio div+div{padding:28px 0;border-left:0;border-bottom:1px solid var(--line)}}

/* ---------- 尾部 CTA ---------- */
.p-cta{text-align:center;padding:clamp(100px,13vw,180px) 0}
.p-cta .h2{max-width:14em;margin-left:auto;margin-right:auto}
.p-cta p{max-width:30em;margin:0 auto 36px}
.more-tools{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:56px}
.more-tools a{font-size:14px;padding:10px 18px;border-radius:99px;border:1px solid var(--line);transition:all .4s var(--ease)}
.more-tools a:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}
.ipad.live{transition:transform .2s linear}

/* ---- 细节修正 ---- */
.nw{white-space:nowrap}
.about__h{font-size:clamp(28px,3.6vw,48px)}
.chapter h3{font-size:clamp(28px,2.8vw,40px)}
.p-hero{padding-top:128px}
.stage{margin-top:60px}
.bubble-q:empty,.bubble-q:has(.t-q:empty){opacity:0}
.bubble-q{transition:opacity .3s}
@media(min-width:761px){
  .app{font-size:1.7cqw;padding:3cqw 3.4cqw 2.6cqw;gap:2.4cqw}
  .tabs button{font-size:1.55cqw;padding:1.1cqw 2.6cqw}
  .app__main{grid-template-columns:1.1fr 1fr;gap:2.8cqw}
  .convo{gap:2cqw}
  .bubble-a{min-height:17cqw;padding:2cqw 2.2cqw}
  .metrics{grid-template-rows:auto 1fr;gap:1.4cqw}
  .metric{padding:1.6cqw}
  .metric small,.metric em{font-size:1.25cqw}
  .metric strong{font-size:3.8cqw}
  .chart{display:flex;flex-direction:column}
  .chart__h{font-size:1.25cqw}
  .chart__bars{flex:1;height:auto;min-height:12cqw}
  .src span{font-size:1.25cqw;padding:.4cqw 1.2cqw}
  .app__foot{font-size:1.2cqw}.app__foot button{font-size:1.35cqw;padding:1cqw 2.2cqw}
}
@media(max-width:640px){.hero__title{font-size:clamp(28px,8.4vw,40px)}}
.stage{text-align:left}
@media(min-width:761px){.bubble-a{min-height:22cqw}.metrics{grid-template-rows:auto 1fr}.chart{min-height:20cqw}}
.metric.dim{opacity:.35}

/* ======================================================================
   GD-DentOS：核心 + 模块
   ====================================================================== */
.app__plug{font-size:1.15cqw;color:var(--mute);border:1px solid var(--line);padding:.2cqw 1cqw;border-radius:9cqw;margin-left:.6cqw}
@media(max-width:760px){.app__plug{font-size:2.6cqw;padding:.4cqw 2cqw}}
.plug-badge{position:absolute;left:12px;top:12px;font-size:11px;color:var(--accent);background:rgba(255,255,255,.8);padding:2px 9px;border-radius:99px;font-weight:500}

/* 主系统三栏 */
.sys{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.sys__item{padding:36px 32px;border-radius:22px;background:var(--paper);border:1px solid var(--line);transition:transform .6s var(--ease),box-shadow .6s var(--ease),border-color .4s,opacity 1s var(--ease)}
.sys__item:hover{transform:translateY(-6px);box-shadow:0 30px 60px -34px rgba(60,40,20,.35);border-color:rgba(201,100,66,.28)}
.sys__icon{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:rgba(201,100,66,.1);color:var(--accent);font-size:20px;margin-bottom:26px;transition:transform .6s var(--ease)}
.sys__item:hover .sys__icon{transform:rotate(-8deg) scale(1.08)}
.sys__item h3{font-size:26px;margin-bottom:10px}
.sys__item p{font-size:15.5px;margin:0}
@media(max-width:860px){.sys{grid-template-columns:1fr}}

/* 模块网格 */
.plug-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.plug{position:relative;display:flex;flex-direction:column;padding:30px 28px;border-radius:22px;background:var(--paper);border:1px solid var(--line);isolation:isolate;overflow:hidden;
  transition:transform .6s var(--ease),box-shadow .6s var(--ease),border-color .4s,opacity 1s var(--ease)}
.plug::before{content:"";position:absolute;inset:0;z-index:-1;opacity:0;transition:opacity .5s;background:radial-gradient(380px circle at var(--mx,50%) var(--my,50%),rgba(201,100,66,.10),transparent 60%)}
.plug:hover{transform:translateY(-6px);box-shadow:0 34px 60px -36px rgba(60,40,20,.38);border-color:rgba(201,100,66,.28)}
.plug:hover::before{opacity:1}
.plug__top{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px}
.plug__top .tag{margin:0}
.plug__icon{display:grid;place-items:center;width:44px;height:44px;border-radius:13px;background:#fff;border:1px solid var(--line);font-family:var(--serif);font-size:19px;color:var(--ink);transition:transform .6s var(--ease),background .4s,color .4s}
.plug:hover .plug__icon{transform:translateY(-3px) rotate(-6deg);background:var(--accent);color:#fff;border-color:transparent}
.plug h3{font-size:23px;margin-bottom:10px}
.plug p{font-size:15px;flex:1}
.plug--main{grid-column:span 2;grid-row:span 2;padding:44px 42px;background:linear-gradient(150deg,#FFFDF9,#F6EADF)}
.plug--main .plug__icon{width:58px;height:58px;font-size:24px;background:var(--accent);color:#fff;border-color:transparent}
.plug--main h3{font-size:clamp(30px,3.4vw,44px)}
.plug--main p{font-size:17px;max-width:26em;flex:0}
.plug__feats{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:0;margin:22px 0 30px;flex:1;align-content:start}
.plug__feats li{padding:14px 16px;border-radius:14px;background:rgba(255,255,255,.75);border:1px solid var(--line);font-size:15px;transition:transform .5s var(--ease),border-color .3s}
.plug__feats li:hover{transform:translateX(4px);border-color:rgba(201,100,66,.35)}
.plug .work__link{margin-top:6px}
.plug:hover .work__link{color:var(--accent)}
.plug:hover .work__link .arrow{transform:translate(3px,-3px)}
.plug--more{border-style:dashed;background:transparent;justify-content:center;text-align:center;align-items:center}
.plug--more .plug__icon{margin-bottom:18px}
@media(max-width:960px){.plug-grid{grid-template-columns:1fr 1fr}.plug--main{grid-column:span 2;grid-row:auto}}
@media(max-width:600px){.plug-grid{grid-template-columns:1fr}.plug--main{grid-column:auto;padding:34px 28px}.plug__feats{grid-template-columns:1fr 1fr}}

/* 模块化：开关 + iPad 模块增减 */
.modular{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(40px,6vw,90px);align-items:center}
.toggles{list-style:none;padding:0;margin:36px 0 0;border-top:1px solid var(--line)}
.toggles li{display:flex;align-items:center;gap:16px;padding:16px 0;border-bottom:1px solid var(--line)}
.tg-name{flex:1;display:flex;flex-direction:column}
.tg-name b{font-weight:500;color:var(--ink);font-size:16px}
.tg-name small{font-size:13px;color:var(--mute)}
.toggles em{font-style:normal;font-size:12px;color:var(--mute)}
.switch{position:relative;flex:none;width:50px;height:30px;border-radius:99px;border:0;background:rgba(31,30,28,.14);cursor:pointer;padding:0;transition:background .4s var(--ease)}
.switch::after{content:"";position:absolute;left:3px;top:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.18);transition:transform .45s var(--ease)}
.switch.on{background:var(--accent)}
.switch.on::after{transform:translateX(20px)}
.switch:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.is-core .switch{opacity:.5;cursor:default}
.ipad--sm{border-radius:38px;padding:16px}
.ipad--sm .screen{border-radius:24px}
.dash{height:100%;display:flex;flex-direction:column;padding:3.4cqw;gap:3cqw}
.dash__top{display:flex;align-items:center;gap:1.6cqw}
.dash .app__logo{width:5cqw;height:5cqw;font-size:2cqw;border-radius:1.4cqw}
.dash .app__name{font-size:2.8cqw}
.dash__count{margin-left:auto;font-size:1.9cqw;color:var(--mute)}
.dash__count b{color:var(--accent);font-family:"Newsreader",serif;font-size:2.8cqw;font-weight:500}
.mods{display:grid;grid-template-columns:repeat(3,1fr);gap:2cqw;align-content:start}
.mod{display:flex;flex-direction:column;gap:.6cqw;padding:2.4cqw;border-radius:2.4cqw;background:#fff;border:1px solid var(--line);box-shadow:0 1.2cqw 3cqw -2.4cqw rgba(60,40,20,.3);
  transition:opacity .45s var(--ease),transform .6s var(--ease)}
.mod i{font-style:normal;display:grid;place-items:center;width:5cqw;height:5cqw;border-radius:1.4cqw;background:rgba(201,100,66,.1);color:var(--accent);font-family:var(--serif);font-size:2.2cqw;margin-bottom:1.2cqw}
.mod b{font-weight:500;font-size:2cqw;color:var(--ink)}
.mod small{font-size:1.6cqw;color:var(--mute)}
.mod--core{background:linear-gradient(160deg,#fff,#F6EFE6)}
.mod--core i{background:var(--ink);color:#fff}
.mod.off{display:none}
.mod.enter{opacity:0;transform:scale(.85) translateY(2cqw)}
.mod.leave{opacity:0;transform:scale(.85)}
@media(max-width:860px){.modular{grid-template-columns:1fr}}
@media(max-width:760px){
  .ipad--sm{aspect-ratio:4/3;border-radius:26px;padding:10px}
  .ipad--sm .screen{border-radius:17px}
  .ipad--sm .ipad__btn{display:none}
  .dash{padding:4cqw;gap:3cqw}
  .mods{gap:2.4cqw}
  .mod{padding:2.6cqw}
  .mod b{font-size:2.8cqw}.mod small{font-size:2.3cqw}
  .dash__count{font-size:2.6cqw}
}

/* ===== GD-DentOS 真实内容：logo / 开源板块 / 核心功能 / 模块 ===== */
.p-hero__logo{display:block;width:72px;height:72px;margin:0 auto 10px;padding:12px;border-radius:22px;background:var(--paper);border:1px solid var(--line);box-shadow:0 18px 40px -26px rgba(60,40,20,.45)}
.p-hero__sign{font-family:"Newsreader",var(--serif);font-style:italic;font-size:16px;color:var(--mute);margin:-4px auto 28px}
.app__logo img{width:78%;height:78%;display:block}
.bubble-a .ai-badge:not(.is-ai){background:var(--ink) url(/_home/img/dentos-mark-light.svg) center/74% no-repeat}
.tabs{overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}
@media(max-width:640px){.tabs button{flex:none;padding:2cqw 3.4cqw}}
.core-list{list-style:none;margin:0 0 36px;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.core-list li{font-size:15px;padding:9px 18px;border-radius:99px;background:var(--paper);border:1px solid var(--line);color:var(--ink);transition:transform .4s var(--ease),border-color .4s,color .4s}
.core-list li:hover{transform:translateY(-3px);border-color:var(--accent);color:var(--accent)}
.sys__item h3 small{font-family:var(--sans);font-size:12px;font-weight:500;color:var(--accent);background:rgba(201,100,66,.1);padding:2px 9px;border-radius:99px;vertical-align:middle;margin-left:6px}
.cbct-line{margin:28px 0 0;font-size:14.5px;color:var(--ink-2)}
.cbct-line span{color:var(--mute);margin-left:10px}
.cbct-line span::before{content:"—— "}
/* 开源板块 */
.os{position:relative;overflow:hidden}
.os::before{content:"";position:absolute;width:780px;height:780px;right:-220px;top:-260px;border-radius:50%;background:radial-gradient(circle,rgba(201,100,66,.28),transparent 62%);pointer-events:none}
.os__inner{position:relative;display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(40px,6vw,96px);align-items:center}
.os .eyebrow{color:#E79A7C}
.os__facts{list-style:none;padding:0;margin:34px 0 26px;display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.os__facts li{padding:20px 20px 18px;border-radius:18px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);transition:transform .5s var(--ease),border-color .4s,background .4s}
.os__facts li:hover{transform:translateY(-4px);border-color:rgba(231,154,124,.5);background:rgba(255,255,255,.08)}
.os__facts b{display:block;font-family:"Newsreader",var(--serif);font-weight:500;font-size:22px;color:#F5F1EA;margin-bottom:4px}
.os__facts span{font-size:14px;color:#BDB5A8;line-height:1.6}
.os__facts a{color:#E79A7C;border-bottom:1px solid currentColor}
.os__btns{display:flex;gap:14px;flex-wrap:wrap;margin-top:28px}
.os__btn{background:#F5F1EA;color:var(--ink);gap:10px}
.os__btn svg{width:18px;height:18px}
.os__btn:hover{background:var(--accent);color:#fff;transform:translateY(-2px);box-shadow:0 12px 30px -12px rgba(201,100,66,.7)}
.os__btn--alt{background:transparent;color:#F5F1EA;border:1px solid rgba(255,255,255,.28)}
.os__g{display:grid;place-items:center;width:18px;height:18px;border-radius:5px;background:#C71D23;color:#fff;font:700 11px var(--sans)}
.os__repo{margin-top:18px;font-size:13px;color:#8F887C !important;font-family:"Inter",var(--sans);word-break:break-all}
.os__card{border-radius:28px;background:var(--paper);padding:38px 34px 30px;box-shadow:0 50px 100px -50px rgba(0,0,0,.6);transition:transform .6s var(--ease)}
.os__card:hover{transform:translateY(-6px) rotate(-.5deg)}
.os__logo{display:grid;place-items:center;padding:8px 0 22px;border-bottom:1px solid var(--line)}
.os__logo img{width:min(220px,60%);height:auto;transition:transform .8s var(--ease)}
.os__card:hover .os__logo img{transform:scale(1.04)}
.os__meta{margin:18px 0 0;display:grid;gap:2px}
.os__meta div{display:flex;justify-content:space-between;gap:16px;padding:9px 0;border-bottom:1px dashed var(--line);font-size:14.5px}
.os__meta div:last-child{border-bottom:0}
.os__meta dt{color:var(--mute)}.os__meta dd{margin:0;color:var(--ink);font-weight:500;text-align:right}
@media(max-width:900px){.os__inner{grid-template-columns:1fr}.os__facts{grid-template-columns:1fr}}
/* 模块卡片 */
.plug-grid--mods .plug--wide{grid-row:auto}
.plug .disclaim{font-size:14px;color:var(--mute)}
.tg-tag{font-style:normal;font-size:11px;font-weight:500;color:var(--accent);background:rgba(201,100,66,.1);padding:1px 8px;border-radius:99px;margin-left:6px;vertical-align:middle}
.mods{grid-template-columns:repeat(4,1fr);gap:1.6cqw}
.mod{padding:1.8cqw}
.mod i{width:4.2cqw;height:4.2cqw;font-size:1.9cqw;margin-bottom:.6cqw}
.mod b{font-size:1.8cqw}.mod small{font-size:1.4cqw}
@media(max-width:860px){.mods{grid-template-columns:repeat(3,1fr)}.mod b{font-size:2.6cqw}.mod small{font-size:2cqw}.mod i{width:5.6cqw;height:5.6cqw;font-size:2.6cqw}}
.modular__note{text-align:center;font-size:12.5px;color:var(--mute);margin-top:18px}
.p-cta__btns{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
.p-cta__sign{font-family:"Newsreader",var(--serif);font-style:italic;color:var(--mute);margin-top:26px !important;font-size:15px}
.p-cta .lead a{color:var(--accent);border-bottom:1px solid currentColor}
/* 首页 GD-DentOS 卡片 logo */
.feature__title{display:flex;align-items:center;gap:14px}
.feature__title img{width:52px;height:52px;padding:8px;border-radius:16px;background:#fff;border:1px solid var(--line);transition:transform .6s var(--ease)}
.feature:hover .feature__title img{transform:rotate(-8deg) scale(1.06)}
.mi-top b{display:flex;align-items:center;gap:1.4cqw}
.mi-top b img{width:4.6cqw;height:4.6cqw}
.feature__sign{font-family:"Newsreader",var(--serif);font-style:italic;font-size:14.5px;color:var(--mute);margin-top:-4px}
.tag--inline{font-size:11px;padding:2px 9px;margin:0 0 0 6px;vertical-align:middle;letter-spacing:.04em}
.p-hero__mark{display:inline-block;width:.62em;height:.62em;padding:.08em;margin-right:.16em;vertical-align:.02em;border-radius:.18em;background:var(--paper);border:1px solid var(--line);box-shadow:0 18px 40px -26px rgba(60,40,20,.45);transition:transform .8s var(--ease)}
.p-hero__title:hover .p-hero__mark{transform:rotate(-8deg)}
.sign{display:inline-block;margin-top:8px;font-family:"Newsreader",var(--serif);font-style:italic;color:var(--mute);font-size:.95em}
.emdash{font-family:var(--serif);font-style:normal;letter-spacing:-.05em;margin:0 .2em}
@media(min-width:961px){.plug-grid--mods .plug--wide{grid-column:1/-1}.plug-grid--mods .plug--wide .plug__feats{grid-template-columns:repeat(4,1fr);max-width:760px}}

/* ===== 业务介绍 ===== */
.biz__head{align-items:flex-end}
.biz__aside{font-family:"Newsreader",var(--serif);font-size:clamp(18px,1.6vw,22px);color:var(--ink-2);margin:0 0 34px;padding-left:22px;border-left:1px solid var(--accent)}
.biz-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:20px;counter-reset:none}
.biz{position:relative;overflow:hidden;background:var(--paper);border:1px solid var(--line);border-radius:24px;padding:clamp(30px,3vw,42px) clamp(28px,2.8vw,40px) clamp(34px,3.4vw,46px);
  display:flex;flex-direction:column;min-height:340px;transition:transform .7s var(--ease),box-shadow .7s var(--ease),border-color .5s,opacity 1s var(--ease);transition-delay:0s,0s,0s,var(--d,0s)}
.biz::before{content:"";position:absolute;left:0;top:0;height:2px;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ease)}
.biz:hover{transform:translateY(-8px);box-shadow:0 40px 80px -44px rgba(60,40,20,.38),0 10px 24px -18px rgba(60,40,20,.2);border-color:rgba(201,100,66,.28)}
.biz:hover::before{transform:scaleX(1)}
.biz__top{display:flex;justify-content:space-between;align-items:flex-start}
.biz__no{font-family:"Newsreader",serif;font-style:italic;font-weight:400;font-size:clamp(52px,5vw,72px);line-height:.9;color:var(--accent);letter-spacing:-.02em;transition:transform .7s var(--ease)}
.biz:hover .biz__no{transform:translateX(6px)}
.biz__ic,.ben__ic{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.6);color:var(--ink-2);transition:color .4s,border-color .4s,background .4s}
.biz__ic svg,.ben__ic svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.biz:hover .biz__ic{color:var(--accent);border-color:rgba(201,100,66,.35);background:rgba(201,100,66,.06)}
.biz__en{margin:56px 0 10px;font-family:"Newsreader",serif;font-style:italic;font-size:14px;letter-spacing:.04em;color:var(--mute)}
.biz h3{font-size:clamp(23px,2vw,28px);line-height:1.35;margin-bottom:16px}
.biz h3 a{color:inherit;text-decoration:none;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .5s var(--ease)}
.biz h3 a:hover{background-size:100% 1px}
.biz__p{font-size:15.5px;line-height:1.95;color:var(--ink-2);margin:0}
.biz__link{white-space:nowrap;color:var(--accent);text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
@media(max-width:960px){.biz-grid{grid-template-columns:1fr}.biz{min-height:0}.biz__en{margin-top:36px}}

/* ===== 学习社群 ===== */
.comm__head{max-width:980px;margin-bottom:clamp(56px,7vw,96px)}
.comm__accent{color:var(--ink-2)}
.comm-grid{display:grid;grid-template-columns:6fr 7fr;gap:clamp(40px,6vw,96px);align-items:start}
.comm-block__h{display:flex;align-items:baseline;gap:14px;font-size:clamp(24px,2.2vw,30px);margin-bottom:26px}
.comm-block__k{font-family:"Newsreader",serif;font-style:italic;font-weight:400;font-size:.72em;color:var(--accent)}
.aud{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.aud li{display:grid;grid-template-columns:44px 1fr;gap:12px;align-items:baseline;padding:22px 0;border-bottom:1px solid var(--line);font-size:16.5px;line-height:1.7;color:var(--ink);
  transition:padding .5s var(--ease),opacity 1s var(--ease),transform 1.1s var(--ease);transition-delay:0s,var(--d,0s),var(--d,0s)}
.aud li:hover{padding-left:8px}
.aud__no{font-family:"Newsreader",serif;font-style:italic;font-size:15px;color:var(--mute);transition:color .3s}
.aud li:hover .aud__no{color:var(--accent)}
.ben-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:16px}
.ben{background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:26px 26px 28px;min-height:178px;display:flex;flex-direction:column;justify-content:flex-start;gap:30px;
  transition:transform .7s var(--ease),box-shadow .7s var(--ease),border-color .5s,opacity 1s var(--ease);transition-delay:0s,0s,0s,var(--d,0s)}
.ben:hover{transform:translateY(-6px);box-shadow:0 30px 60px -36px rgba(60,40,20,.32);border-color:rgba(201,100,66,.28)}
.ben:hover .ben__ic{color:var(--accent);border-color:rgba(201,100,66,.35);background:rgba(201,100,66,.06)}
.ben p{margin:0;font-family:var(--serif);font-size:clamp(17px,1.45vw,19px);line-height:1.6;color:var(--ink)}
.comm-join{margin-top:clamp(56px,6vw,80px);position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap;
  padding:clamp(34px,4vw,52px) clamp(30px,4.4vw,60px);border-radius:28px;background:var(--dark);color:#EDE7DC}
.comm-join::after{content:"";position:absolute;right:-120px;top:-160px;width:420px;height:420px;border-radius:50%;background:radial-gradient(closest-side,rgba(201,100,66,.28),transparent);pointer-events:none}
.comm-join__copy{position:relative;z-index:1}
.comm-join__k{font-size:13px;letter-spacing:.14em;color:#9D968A;margin:0 0 10px}
.comm-join__t{font-family:var(--serif);font-size:clamp(21px,2.2vw,30px);color:#F5F1EA;margin:0;line-height:1.55}
.remark{color:var(--accent-2);white-space:nowrap}
.comm-join__btn{position:relative;z-index:1;background:#F5F1EA;color:var(--ink);border:0}
.comm-join__btn:hover{background:#fff}
.comm-note{margin:22px 0 0;font-size:13.5px;color:var(--mute);text-align:center}
@media(max-width:900px){.comm-grid{grid-template-columns:1fr}}
@media(max-width:640px){.ben-grid{grid-template-columns:1fr}.ben{min-height:0;flex-direction:row;align-items:center;gap:18px;padding:20px 22px}.ben__ic{flex:none}
  .comm-join__btn{width:100%;justify-content:center}.aud li{font-size:15.5px;padding:18px 0}
  #business .h2,#community .h2{font-size:clamp(23px,6.5vw,32px)}}
/* ===== 联系 · 微信二维码卡片 ===== */
.contact{align-items:start}
.contact__main .h2{margin-bottom:40px}
.contact__list a{color:var(--accent);text-decoration:none}
.contact__list a:hover{text-decoration:underline;text-underline-offset:4px}
.wxcard{margin:0;justify-self:end;width:min(400px,100%);background:var(--paper);border:1px solid rgba(31,30,28,.09);border-radius:26px;
  padding:clamp(30px,3.4vw,44px) clamp(28px,3.2vw,42px) clamp(28px,3vw,36px);text-align:center;scroll-margin-top:96px;
  box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 40px 80px -48px rgba(60,40,20,.35),0 12px 24px -18px rgba(60,40,20,.18)}
.wxcard__eyebrow{font-family:"Newsreader",serif;font-style:italic;font-size:14px;letter-spacing:.06em;color:var(--accent);margin:0 0 10px}
.wxcard__title{font-family:var(--serif);font-size:clamp(22px,2.1vw,27px);font-weight:600;line-height:1.35;margin:0 0 26px;color:var(--ink)}
.wxcard__qr{position:relative;width:min(260px,100%);margin:0 auto;padding:14px;background:#fff;border-radius:18px;border:1px solid rgba(31,30,28,.08)}
.wxcard__qr img{display:block;width:100%;height:auto;aspect-ratio:1}
.wxcard__cap{margin-top:26px;padding-top:22px;border-top:1px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:8px}
.wxcard__k{font-size:13px;letter-spacing:.12em;color:var(--mute)}
.wxcard__remark{font-family:var(--serif);font-size:19px;color:var(--ink);padding:6px 18px;border:1px solid rgba(201,100,66,.35);border-radius:99px;background:rgba(201,100,66,.06)}
.wxcard__remark::before{content:"「";color:var(--accent)}.wxcard__remark::after{content:"」";color:var(--accent)}
.wxcard__hint{font-size:12.5px;color:var(--mute);margin-top:4px}
@media(max-width:860px){.contact{grid-template-columns:1fr;gap:48px}.wxcard{justify-self:center}}

/* ===== 联系：微信 + 视频号 双卡 ===== */
.contact{grid-template-columns:1fr;gap:clamp(56px,6vw,88px)}
.contact__main{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr;column-gap:64px;align-items:start}
.contact__main .eyebrow,.contact__main .h2{grid-column:1}
.contact__main .contact__list{grid-column:2;grid-row:1 / span 2}
.qr-pair{display:grid;grid-template-columns:repeat(2,minmax(0,400px));justify-content:center;gap:clamp(20px,3vw,40px)}
.qr-pair .wxcard{justify-self:stretch;width:auto;display:flex;flex-direction:column;align-items:center}
.qr-pair .wxcard__qr{width:min(268px,100%)}
.qr-pair .wxcard__cap{margin-top:auto;padding-top:22px;width:100%}
.wxcard--sph .wxcard__qr img{border-radius:8px}
.wxcard__remark--plain{font-size:16px;letter-spacing:.04em;border-color:var(--line);background:rgba(255,255,255,.5)}
.wxcard__remark--plain::before,.wxcard__remark--plain::after{content:none}
.qr__box--img{background:#fff;padding:12px;overflow:hidden}
.qr__box--img img{display:block;width:100%;height:100%;object-fit:contain;border-radius:12px}
@media(max-width:860px){.contact__main{grid-template-columns:1fr;gap:0}.contact__main .contact__list{grid-column:1;grid-row:auto;margin-top:8px}
  .qr-pair{grid-template-columns:minmax(0,400px)}}
/* 双卡逐行对齐：subgrid 共用行高 */
.qr-pair{grid-auto-rows:auto;row-gap:0}
.qr-pair .wxcard{display:grid;grid-row:span 4;grid-template-rows:subgrid;row-gap:0;justify-items:center;align-items:start}
.qr-pair .wxcard__eyebrow{margin:0 0 10px;align-self:end}
.qr-pair .wxcard__title{margin:0 0 26px}
.qr-pair .wxcard__qr{box-sizing:border-box;width:268px;max-width:100%;aspect-ratio:1;padding:14px}
.qr-pair .wxcard__qr img{width:100%;height:100%;object-fit:contain}
.qr-pair .wxcard__cap{margin-top:26px;padding-top:22px;width:100%;display:grid;grid-template-rows:20px 40px 20px;row-gap:10px;justify-items:center;align-items:center}
.qr-pair .wxcard__k,.qr-pair .wxcard__hint{line-height:20px;margin:0}
.qr-pair .wxcard__remark{box-sizing:border-box;height:40px;line-height:26px;font-size:17px;padding:6px 18px}
@media(max-width:860px){.qr-pair{row-gap:0}.qr-pair .wxcard+.wxcard{margin-top:24px}}
@supports not (grid-template-rows:subgrid){.qr-pair .wxcard{display:flex;flex-direction:column;align-items:center}.qr-pair .wxcard__title{min-height:2.7em}}

/* ===== 关于我：我做过的事 ===== */
.about__p2{font-size:16.5px;line-height:1.9;color:var(--ink-2);margin-top:14px}
.facts strong small{font-size:.5em;margin-left:2px;color:var(--ink-2)}
.tl{margin-top:clamp(72px,9vw,128px);display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(40px,7vw,110px);align-items:start}
.tl__head{position:sticky;top:120px}
.tl__en{font-family:"Newsreader",serif;font-style:italic;font-size:15px;color:var(--accent);margin:0 0 10px}
.tl__h{font-size:clamp(28px,3vw,40px);line-height:1.25}
.tl__list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.tl__item{display:grid;grid-template-columns:84px 1fr;gap:20px;align-items:baseline;padding:20px 0;border-bottom:1px solid var(--line);
  transition:padding .5s var(--ease),opacity 1s var(--ease),transform 1.1s var(--ease);transition-delay:0s,var(--d,0s),var(--d,0s)}
.tl__item:hover{padding-left:8px}
.tl__k{font-family:"Newsreader",var(--serif);font-size:15px;color:var(--mute);letter-spacing:.04em;transition:color .3s}
.tl__item:hover .tl__k{color:var(--accent)}
.tl__item:nth-child(-n+2) .tl__k{font-style:italic;font-size:19px;color:var(--accent)}
.tl__t{font-family:var(--serif);font-size:clamp(17px,1.5vw,20px);color:var(--ink);line-height:1.55}
.tl__t a{color:inherit;text-decoration:none;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .5s var(--ease)}
.tl__t a:hover{background-size:100% 1px}
.tl__sub{display:block;margin-top:6px;font-family:var(--sans);font-size:14px;color:var(--mute);line-height:1.7}
.tl__t .tag--inline{font-family:var(--sans)}
@media(max-width:860px){.tl{grid-template-columns:1fr;gap:28px}.tl__head{position:static}.tl__item{grid-template-columns:56px 1fr;gap:14px;padding:17px 0}}
@media(max-width:640px){.facts{gap:22px;flex-wrap:nowrap}.facts strong{font-size:26px}.facts span{font-size:12px}}

/* 关于我 · 形象照 */
.about__img{position:relative;aspect-ratio:4/5;border-radius:var(--r);overflow:hidden;background:#D6C6B9;
  box-shadow:0 1px 2px rgba(31,30,28,.06),0 24px 60px -28px rgba(80,58,40,.38)}
.about__img::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(31,30,28,.06);pointer-events:none}
.about__img img{display:block;width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.about__photo:hover .about__img img{transform:scale(1.015)}

/* 三卡（微信 / 视频号 / 抖音）*/
.qr-trio{grid-template-columns:repeat(3,minmax(0,380px))}
.qr-trio .wxcard{padding-left:clamp(20px,2.2vw,36px);padding-right:clamp(20px,2.2vw,36px)}
.qr-trio .wxcard__qr{width:min(260px,100%)}
.wxcard__qr picture{display:block;width:100%;height:100%}
.wxcard--dy .wxcard__qr img{border-radius:50%}
@media(max-width:1080px){
  .qr-trio{grid-template-columns:repeat(2,minmax(0,380px))}
  .qr-trio .wxcard--dy{grid-column:1 / -1;justify-self:center;width:calc((100% - clamp(20px,3vw,40px))/2);margin-top:clamp(20px,3vw,40px)}}
@media(max-width:860px){
  .qr-trio{grid-template-columns:minmax(0,400px)}
  .qr-trio .wxcard--dy{grid-column:auto;width:auto;justify-self:stretch;margin-top:24px}}

/* 三卡顺序：桌面 视频号 / 微信 / 抖音；中屏 微信居中独占一排；手机 微信 / 视频号 / 抖音（DOM 顺序）*/
.qr-trio>#channels{grid-column:1;grid-row:1 / span 4}
.qr-trio>#wechat{grid-column:2;grid-row:1 / span 4}
.qr-trio>#douyin{grid-column:3;grid-row:1 / span 4}
@media(max-width:1080px){
  .qr-trio>#wechat{grid-column:1 / -1;grid-row:1 / span 4;justify-self:center;width:calc((100% - clamp(20px,3vw,40px))/2)}
  .qr-trio>#channels{grid-column:1;grid-row:5 / span 4;margin-top:clamp(20px,3vw,40px)}
  .qr-trio>#douyin{grid-column:2;grid-row:5 / span 4;justify-self:stretch;width:auto;margin-top:clamp(20px,3vw,40px)}}
@media(max-width:860px){
  .qr-trio>#wechat,.qr-trio>#channels,.qr-trio>#douyin{grid-column:1;grid-row:auto / span 4;justify-self:stretch;width:auto}
  .qr-trio>#wechat{margin-top:0}.qr-trio>#channels,.qr-trio>#douyin{margin-top:24px}}

/* ========== v24 整体打磨 ========== */
/* 对比度：浅底上的次要文字加深一档（约 4.7:1），深色区单独提亮 */
:root{--mute:#736E64}
.section--dark{--mute:#A39B8E}
/* 中文排版：标题均衡换行，正文避免末行孤字 */
h1,h2,h3,.h2,.hero__title{text-wrap:balance}
p,li,dd,figcaption,.tl__t,.tl__sub{text-wrap:pretty}
.nobr{white-space:nowrap}
/* 首屏演示：浮标不再压住窗口标题栏和数据卡 */
.chip-b{top:-40px;right:-18px}
.chip-a{bottom:-22px;left:-30px}
@media(max-width:640px){.chip-b{top:-38px;right:8px}.chip-a{left:8px;bottom:-20px}}
/* 首屏演示：循环重播前先淡出，避免整窗突然清空 */
.win__body .chat,.win__body .cards,.win__body .mini-btn{transition:opacity .45s var(--ease)}
.win__body.is-fading .chat,.win__body.is-fading .cards,.win__body.is-fading .mini-btn{opacity:0}
/* 模块卡片：不在公开页面显示“截图占位”字样 */
.shot-label{display:none}
/* 业务介绍：右侧引导语与标题底线对齐 */
.biz__aside{margin-bottom:10px}
/* 键盘可达：统一的焦点样式 */
a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}
.btn:focus-visible{outline-offset:4px;border-radius:99px}

/* ========== v25 模块手绘示意图 ========== */
.work__img{position:absolute;inset:0;display:block}
.work__img img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 50%;mix-blend-mode:multiply;
  transform:scale(1.04);transition:transform 1.1s var(--ease),filter .6s var(--ease)}
.work:hover .work__img img{transform:scale(1.085);filter:brightness(1.03) saturate(1.05)}
.work__shot .plug-badge{z-index:1}
.feature__img{display:block}
.feature__img img{display:block;width:112%;max-width:none;height:auto;margin:-3% -6%;mix-blend-mode:multiply;
  transition:transform 1.2s var(--ease);transform-origin:50% 60%}
.feature:hover .feature__img img{transform:translateY(-6px) scale(1.02)}
@media(max-width:860px){.feature__img img{width:108%;margin:-3% -4%}}
@media(prefers-reduced-motion:reduce){.work__img img,.feature__img img{transition:none}}
.work__img img{object-fit:cover;transform:scale(1.0)}
.work:hover .work__img img{transform:scale(1.045)}
.work__shot:has(.work__img){background:linear-gradient(160deg,#F3EEE6,#EAE2D5)}
.work__img img{object-fit:contain;transform:scale(1.02)}
.work:hover .work__img img{transform:scale(1.06)}
.feature__visual:has(.feature__img){perspective:none;mix-blend-mode:multiply}
