:root { --bocchi-purple:#7180ff; --bocchi-ink:#171331; --bocchi-blush:#8f9bff; --bocchi-p:0; --bocchi-bg-p:0; --bocchi-copy:0; --bocchi-turn-start:0; --bocchi-turn:0; --bocchi-present:0; --bridge-x:0vw; --bridge-y:25vh; --hero-motion-opacity:0; --hero-p:0; --hero-title-exit:0; --hero-exit:0; --hero-base:1; }
body.c2-palmer-page { background:var(--bocchi-purple); }
/* Lumi sleeping loader: registered animation inside the asset, no floating image. */
.c2-palmer-page .nc1-charge-stage[data-lumi-sleep] { width:min(360px,78vw); }
.nc1-sleep-picture { display:block; width:100%; margin-bottom:22px; }
.c2-palmer-page [data-lumi-sleep] .nc1-charge-lumi,
.c2-palmer-page .nc1-boot.is-done [data-lumi-sleep] .nc1-charge-lumi { animation:none; transform:none; translate:none; filter:none; margin:0; transition:none; }
[data-lumi-sleep] .nc1-charge-zap { display:none; }
.c2-palmer-page [data-lumi-sleep] .nc1-charge-battery { width:148px; height:24px; border-color:#9290bd; border-radius:6px; rotate:0deg; }
[data-lumi-sleep] .nc1-charge-battery::before { display:none; }
[data-lumi-sleep] .nc1-charge-battery::after { background:#9290bd; rotate:0deg; }
.c2-palmer-page [data-lumi-sleep] p { width:148px; font-size:9px; margin-top:12px; rotate:0deg; }
.c2-palmer-page .nc1-boot { z-index:1000; gap:0; overflow:hidden; background:#fffafd; }
.c2-palmer-page .nc1-boot-word,
.c2-palmer-page .nc1-boot-bar { display:none; }
.nc1-charge-stage { position:relative; width:min(260px,30vw); display:flex; flex-direction:column; align-items:center; color:#542323; }
.c2-palmer-page .nc1-charge-lumi { display:block; width:100%; max-width:none; height:auto; margin-bottom:clamp(-6px,-.6vw,-2px); transform-origin:42% 76%; animation:nc1-charge-breathe 1.55s cubic-bezier(.45,0,.55,1) infinite,nc1-charge-glow 1.15s steps(2,end) infinite; }
.nc1-charge-zap { position:absolute; z-index:3; color:#7180ff; font:900 clamp(18px,2.2vw,32px)/1 ui-monospace,monospace; opacity:0; filter:drop-shadow(0 0 7px rgba(113,128,255,.45)); pointer-events:none; animation:nc1-charge-zap 1.15s ease-out infinite; }
.nc1-charge-zap.z1 { left:29%; top:46%; rotate:-14deg; }.nc1-charge-zap.z2 { left:43%; top:24%; animation-delay:-.38s; rotate:10deg; }.nc1-charge-zap.z3 { left:54%; top:48%; animation-delay:-.76s; rotate:-8deg; }
.nc1-charge-battery { --charge:0%; position:relative; width:clamp(118px,14vw,174px); height:clamp(23px,2.55vw,31px); padding:3px; border:2px solid #542323; border-radius:5px; background:#fffafd; box-shadow:none; overflow:visible; rotate:-.55deg; }
.nc1-charge-battery::before { content:""; position:absolute; inset:1px -1px -1px 1px; z-index:3; border:1px solid rgba(84,35,35,.38); border-radius:4px 6px 5px 3px; rotate:.8deg; pointer-events:none; }
.nc1-charge-battery::after { content:""; position:absolute; left:100%; top:50%; width:7px; height:42%; translate:2px -48%; rotate:2deg; border-radius:1px 3px 2px 0; background:#542323; }
.nc1-charge-battery i { position:absolute; inset:3px; width:calc(var(--charge) - 6px); max-width:calc(100% - 6px); min-width:0; border-radius:2px; background:#7180ff; transition:width .08s linear; }
.nc1-charge-battery span { position:relative; z-index:2; float:left; width:16.666%; height:100%; border-right:1px solid #fffafd; transform:skewY(calc((var(--rough-i, 0) - 2) * .45deg)); pointer-events:none; }
.nc1-charge-battery span:nth-of-type(1){--rough-i:0}.nc1-charge-battery span:nth-of-type(2){--rough-i:4}.nc1-charge-battery span:nth-of-type(3){--rough-i:1}.nc1-charge-battery span:nth-of-type(4){--rough-i:5}.nc1-charge-battery span:nth-of-type(5){--rough-i:2}.nc1-charge-battery span:nth-of-type(6){--rough-i:3}
.nc1-charge-battery span:last-child { border-right:0; }
.nc1-charge-stage p { width:clamp(118px,14vw,174px); margin:10px 0 0; display:flex; justify-content:space-between; color:#7180ff; font:600 8px/1 var(--nc1-font,Inter,sans-serif); letter-spacing:.14em; rotate:.45deg; }
.nc1-charge-stage p b { font:inherit; letter-spacing:.08em; }
.nc1-boot.is-done .nc1-charge-lumi { animation:none; translate:0 7px; transition:translate .35s cubic-bezier(.22,1,.36,1); }
@keyframes nc1-charge-breathe { 0%,100%{transform:translateY(2px) scale(.997)} 50%{transform:translateY(-3px) scale(1.003)} }
@keyframes nc1-charge-zap { 0%,18%{opacity:0;transform:translateY(8px) scale(.7)}30%,55%{opacity:1;transform:translateY(0) scale(1)}72%,100%{opacity:0;transform:translateY(-9px) scale(.8)} }
@keyframes nc1-charge-glow { 0%,78%,100%{filter:none}82%,94%{filter:drop-shadow(0 0 9px rgba(113,128,255,.22))} }
body.c2-palmer-page .nc1-bt-cta,
body.c2-palmer-page .opt-id { display:none!important; }
body.c2-palmer-page > .palmer-flow,
body.c2-palmer-page > .palmer2-flow,
body.c2-palmer-page > .nc1-backed { display:none !important; }
body.c2-palmer-page > .bocchi-rebuild ~ main,
body.c2-palmer-page > .bocchi-rebuild ~ section,
body.c2-palmer-page > .bocchi-rebuild ~ footer,
body.c2-palmer-page > .bocchi-rebuild ~ .nc1-game-shell,
body.c2-palmer-page > .bocchi-rebuild ~ .nc1-world,
body.c2-palmer-page > .bocchi-rebuild ~ .nc1-cta,
body.c2-palmer-page > .bocchi-rebuild ~ .nc1-faq { display:none !important; }
.bocchi-rebuild,.bocchi-rebuild * { box-sizing:border-box; }
.bocchi-rebuild { position:relative; z-index:3; margin:-100svh 0 0; color:var(--bocchi-ink); font-family:var(--nc1-font,Inter,sans-serif); background:transparent; }
.bocchi-hero-track { position:relative; z-index:2; height:135svh; background:transparent; overflow-x:clip; } /* 0904 kit：同 option3，hero 装饰弧出视口撑宽 scrollWidth，只横向 clip */
.bocchi-hero-track .nc1-herowrap { position:sticky; top:0; height:100svh; overflow:visible; }
.bocchi-hero-track .nc1-hero { height:100svh; min-height:100svh; overflow:visible; background:transparent; }
/* Reference behavior: the transplanted field is the only background during
   the handoff. It owns exactly two independent circles; the retired third
   Hero ring has been removed from the markup instead of being covered. */
.bocchi-bg-fly {
  position:fixed; left:0; width:100%; z-index:1; overflow:hidden;
  pointer-events:none; visibility:hidden; --nc1-field-hi:#8390ff;
}
body.bocchi-bg-flying .bocchi-bg-fly { visibility:visible; }
body.bocchi-bg-flying .nc1-hero > .nc1-field-arc.a1,
body.bocchi-bg-flying .nc1-hero > .nc1-field-arc.a2,
body.bocchi-bg-flying .nc1-hero > .nc1-bg-mark { visibility:hidden; }
.bocchi-bg-fly.is-parked { position:absolute; }
.bocchi-bg-fly .nc1-field-arc,
.bocchi-bg-fly .nc1-bg-mark { z-index:0!important; will-change:translate; }
.bocchi-hero-track .nc1-bt-title {
  translate:0 calc(var(--hero-title-exit) * -46vh);
  opacity:calc(1 - var(--hero-title-exit));
  will-change:translate,opacity;
}
body.nc1.is-ready .bocchi-hero-track .nc1-hperson,
body.nc1.is-ready .bocchi-hero-track .nc1-hstage { opacity:var(--hero-base); transition:none; }
.bocchi-scroll-cue { position:absolute; z-index:8; left:50%; bottom:clamp(18px,3vh,36px); translate:-50% 0; display:flex; flex-direction:column; align-items:center; gap:10px; color:#fff; pointer-events:none; }
/* 0904 mira · 小鼠标 glyph：22×34 圆角框（1.5px 白描边 .8，无填充），4px 白点 1.6s 上下缓动循环 */
.bocchi-scroll-cue i.mouse { position:relative; display:block; width:22px; height:34px; box-sizing:border-box; border:1.5px solid rgba(255,255,255,.8); border-radius:11px; background:none; }
.bocchi-scroll-cue i.mouse b { position:absolute; left:50%; top:7px; width:4px; height:4px; margin-left:-2px; border-radius:50%; background:#fff; animation:bocchi-mouse 1.6s ease-in-out infinite; }
@keyframes bocchi-mouse { 0%, 100% { top:7px; } 50% { top:19px; } }
.bocchi-scroll-cue.is-bridge { position:absolute; opacity:var(--cue-o,1); transition:opacity .25s ease; }
@media (prefers-reduced-motion:reduce) { .bocchi-scroll-cue i.mouse b { animation:none; top:13px; } }
.bocchi-bridge { height:165svh; background:transparent; }
.bocchi-bridge-sticky { position:sticky; z-index:12; top:0; min-height:100svh; overflow:visible; background:transparent; isolation:isolate; } /* 0905 Lill：Lumi 必须跨过章节边界完整露出双腿，不被下一章的矩形底切断。 */
.bocchi-lumi-sequence { position:absolute; z-index:3; inset:0; pointer-events:none; translate:var(--bridge-x) var(--bridge-y); }
.bocchi-lumi-sequence[hidden] { display:none!important; }
.bocchi-lumi-frame { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; object-position:50% 100%; visibility:hidden; opacity:1; filter:none; mix-blend-mode:normal; transform-origin:50% 65%; }
.bocchi-lumi-sequence[data-frame="1"] .frame-1,
.bocchi-lumi-sequence[data-frame="2"] .frame-2,
.bocchi-lumi-sequence[data-frame="4"] .frame-4,
.bocchi-lumi-sequence[data-frame="5"] .frame-5,
.bocchi-lumi-sequence[data-frame="6"] .frame-6 { visibility:visible; }
.bocchi-lumi-sequence .frame-1 { scale:1.14; translate:0 0; }
.bocchi-lumi-sequence .frame-2 { scale:1.12; translate:-1vw 1vh; }
.bocchi-lumi-sequence .frame-4 { scale:1.08; translate:-6vw 6vh; rotate:-2deg; }
.bocchi-lumi-sequence .frame-5 { scale:1.11; translate:-5vw 3vh; rotate:-2deg; transform:scaleX(-1); }
.bocchi-lumi-sequence .frame-6 { scale:1.11; translate:-5vw 3vh; rotate:-3deg; transform:scaleX(-1); }
.bocchi-bridge-sticky::before,
.bocchi-bridge-sticky::after { content:none!important; display:none!important; }

/* Section 1 is one continuous Hero canvas. The fixed nav belongs to that
   purple field and only changes treatment after the real Section 2 edge. */
body.c2-palmer-page .nc1-nav {
  height:clamp(68px,5vw,88px)!important;
  min-height:clamp(68px,5vw,88px)!important;
  box-sizing:border-box!important;
  padding-top:0!important;
  padding-bottom:0!important;
  background:transparent!important;
  border-bottom-color:transparent!important;
  color:#fff!important;
  box-shadow:none!important;
}
/* This mark is retired. The wordmark and bar keep one fixed optical size in
   both scroll states, so toggling .is-stuck cannot contract the navigation. */
body.c2-palmer-page .nc1-nav-logo .awm { display:none!important; }
body.c2-palmer-page .nc1-nav-logo .wm,
body.c2-palmer-page .nc1-nav:not(.is-stuck) .nc1-nav-logo .wm,
body.c2-palmer-page .nc1-nav.is-stuck .nc1-nav-logo .wm {
  font-size:clamp(12px,1.06vw,16px)!important;
  line-height:1!important;
}
body.c2-palmer-page .nc1-nav .nc1-nav-logo,
body.c2-palmer-page .nc1-nav .nc1-nav-links,
body.c2-palmer-page .nc1-nav .nc1-nav-links a,
body.c2-palmer-page .nc1-nav .nc1-dd-trigger { color:#fff!important; }
body.c2-palmer-page .nc1-nav .nc1-nav-login { color:#fff!important; background:rgba(255,255,255,.14)!important; }
body.c2-palmer-page .nc1-nav .nc1-lang { background:rgba(255,255,255,.14)!important; }
body.c2-palmer-page .nc1-nav .nc1-lang button { color:#fff!important; }
body.c2-palmer-page .nc1-nav .nc1-lang button.is-on { color:#fff!important; background:var(--bocchi-ink)!important; }
body.c2-palmer-page .nc1-nav .nc1-nav-cta { display:none!important; }
body.c2-palmer-page .nc1-nav.is-section-two {
  background:transparent!important;
  border-bottom-color:transparent!important;
  color:#fff!important;
}
body.c2-palmer-page .nc1-nav.is-section-two .nc1-nav-logo,
body.c2-palmer-page .nc1-nav.is-section-two .nc1-nav-links,
body.c2-palmer-page .nc1-nav.is-section-two .nc1-nav-links a,
body.c2-palmer-page .nc1-nav.is-section-two .nc1-dd-trigger { color:#fff!important; }
body.c2-palmer-page .nc1-nav.is-section-two .nc1-nav-cta { display:none!important; }
/* The Memed window opens directly underneath the fixed bar. Keep the bar's
   geometry and transparent treatment intact, but flip its foreground to the
   deep brand violet while that pale surface is visible. */
body.c2-palmer-page .nc1-nav.is-on-light,
body.c2-palmer-page .nc1-nav.is-section-two.is-on-light { color:#7180ff!important; }
body.c2-palmer-page .nc1-nav.is-on-light .nc1-nav-logo,
body.c2-palmer-page .nc1-nav.is-on-light .nc1-nav-links,
body.c2-palmer-page .nc1-nav.is-on-light .nc1-nav-links a,
body.c2-palmer-page .nc1-nav.is-on-light .nc1-dd-trigger,
body.c2-palmer-page .nc1-nav.is-section-two.is-on-light .nc1-nav-logo,
body.c2-palmer-page .nc1-nav.is-section-two.is-on-light .nc1-nav-links,
body.c2-palmer-page .nc1-nav.is-section-two.is-on-light .nc1-nav-links a,
body.c2-palmer-page .nc1-nav.is-section-two.is-on-light .nc1-dd-trigger { color:#7180ff!important; } /* 0903 mira · 浅底上一律品牌紫，不用深紫 */
body.c2-palmer-page .nc1-nav.is-on-light .nc1-nav-login { color:#7180ff!important; background:rgba(113,128,255,.12)!important; }
body.c2-palmer-page .nc1-nav.is-on-light .nc1-lang { background:rgba(113,128,255,.12)!important; }
body.c2-palmer-page .nc1-nav.is-on-light .nc1-lang button { color:#7180ff!important; }
body.c2-palmer-page .nc1-nav.is-on-light .nc1-lang button.is-on { color:#fff!important; background:#7180ff!important; }
.bocchi-chapter { position:absolute; z-index:5; top:clamp(46px,5vw,76px); left:clamp(34px,4vw,68px); right:clamp(34px,4vw,68px); display:flex; justify-content:space-between; color:#fff; font:700 10px/1 ui-monospace,monospace; letter-spacing:.17em; opacity:clamp(.25,calc(.25 + var(--bocchi-p)),1); }
.bocchi-about-copy { position:relative; z-index:4; min-height:100svh; width:fit-content; box-sizing:border-box; padding:clamp(116px,15vh,180px) clamp(34px,4vw,68px) clamp(74px,8vh,110px) 44vw; display:flex; flex-direction:column; justify-content:center; align-items:flex-start; color:#fff; pointer-events:none; translate:0 var(--bocchi-copy-y,7vh); will-change:translate; } /* 0905 Lill：标题与图表和 Lumi 共用下落时间轴，末段从底部带入下一章。 */
.bocchi-about-copy>p { margin:0 0 28px; font:700 11px/1 ui-monospace,monospace; letter-spacing:.16em; opacity:var(--bocchi-copy); translate:0 calc((1 - var(--bocchi-copy))*18px); }
.bocchi-about-copy h2 { width:fit-content; max-width:min(940px,45vw); margin:0; color:#fff; font-size:clamp(48px,4vw,78px); font-weight:800; line-height:.88; letter-spacing:-.065em; }
.bocchi-about-copy h2 span { display:block; }
.bocchi-about-copy h2 span:first-child,.bocchi-about-copy h2 span:last-child { white-space:nowrap; }
.bocchi-about-copy h2 span:first-child { translate:calc((1 - var(--bocchi-copy))*-8vw) 0; opacity:var(--bocchi-copy); }
.bocchi-about-copy h2 span:last-child { margin-left:0; translate:calc((1 - var(--bocchi-copy))*9vw) 0; opacity:var(--bocchi-copy); }
.bocchi-about-copy h2 strong { font-weight:800; }
.bocchi-about-foot { width:0; min-width:100%; margin:clamp(34px,5vh,62px) 0 0 0; /* 0904 kit：width:0+min-width:100% = 副句宽度恰好等于 H2 宽，不许超过抬头 */ /* 0904 mira · 副标题左缘对齐 H2（option2 的 -5vw 撤掉） */ opacity:clamp(0,calc((var(--bocchi-copy) - .45)*2.2),1); translate:0 calc((1 - var(--bocchi-copy))*28px); }
.bocchi-about-foot p { margin:0 0 24px; font-size:clamp(20px,1.75vw,28px); line-height:1.35; }
.bocchi-screen-meta { position:absolute; z-index:5; left:clamp(34px,4vw,68px); right:clamp(34px,4vw,68px); bottom:clamp(34px,4vw,62px); display:flex; justify-content:space-between; padding-top:13px; border-top:0; color:#fff; font:700 9px/1 ui-monospace,monospace; letter-spacing:.14em; opacity:clamp(.35,calc(.35 + var(--bocchi-p)),1); }
.bocchi-screen-meta { justify-content:flex-end; }

/* 0905 Lill · 角色系统图并入标题段，跟标题一起出现；Lumi 原下落轨迹不变。 */
.bocchi-system-map {
  --line:rgba(255,255,255,.78);
  position:relative; width:min(600px,45vw); margin-top:clamp(26px,3.5vh,42px);
  box-sizing:border-box; padding:clamp(18px,1.6vw,24px) clamp(20px,2vw,30px);
  border-radius:clamp(18px,1.5vw,22px);
  background:linear-gradient(145deg,rgba(255,255,255,.095),rgba(255,255,255,.035));
  -webkit-backdrop-filter:blur(16px) saturate(1.04); backdrop-filter:blur(16px) saturate(1.04);
  box-shadow:none;
  translate:0 calc((1 - var(--bocchi-copy))*24px);
  display:grid; grid-template-columns:repeat(3,1fr); justify-items:center;
  color:#fff; opacity:var(--bocchi-copy); pointer-events:none;
}
.bocchi-system-node,.bocchi-system-traits span {
  display:flex; align-items:center; justify-content:center; text-align:center;
  font:700 clamp(11px,1vw,14px)/1 ui-monospace,"SF Mono",Menlo,monospace;
  letter-spacing:.15em; text-shadow:none;
}
.bocchi-system-node { min-height:42px; padding:0 22px; border:1px solid rgba(255,255,255,.46); border-radius:999px; background:rgba(255,255,255,.07); box-shadow:none; }
.bocchi-system-node.is-identity { grid-column:1/-1; }
.bocchi-system-branches,.bocchi-system-merge { grid-column:1/-1; position:relative; width:66.666%; height:38px; }
.bocchi-system-branches i,.bocchi-system-merge i,.bocchi-system-spine { position:absolute; display:block; background:var(--line); transform-origin:50% 0; }
.bocchi-system-branches i:nth-child(1),.bocchi-system-merge i:nth-child(1) { left:50%; top:0; width:1px; height:15px; }
.bocchi-system-branches i:nth-child(2),.bocchi-system-merge i:nth-child(2) { left:0; right:0; top:14px; height:1px; }
.bocchi-system-branches i:nth-child(3),.bocchi-system-merge i:nth-child(3) { left:0; top:14px; width:1px; height:24px; }
.bocchi-system-branches i:nth-child(4),.bocchi-system-merge i:nth-child(4) { right:0; top:14px; width:1px; height:24px; }
.bocchi-system-traits { grid-column:1/-1; width:100%; display:grid; grid-template-columns:repeat(3,1fr); }
.bocchi-system-traits span { min-height:42px; font-weight:800; color:rgba(255,255,255,.96); }
.bocchi-system-merge { rotate:180deg; }
.bocchi-system-node.is-studio { grid-column:1/-1; }
.bocchi-system-spine { position:relative; grid-column:1/-1; width:1px; height:26px; }
.bocchi-system-node.is-result { grid-column:1/-1; min-height:48px; padding-inline:28px; color:#6675ef; background:rgba(255,255,255,.94); border-color:transparent; box-shadow:none; text-shadow:none; font-size:clamp(13px,1.15vw,18px); }
@media(max-width:760px){
  .bocchi-system-map{width:88vw}
}
@media(max-width:1100px){.bocchi-about-copy h2 span:first-child,.bocchi-about-copy h2 span:last-child{white-space:normal}}
@media(max-width:760px){ .nc1-charge-stage{width:44vw}.c2-palmer-page .nc1-charge-lumi{width:100%}.bocchi-about-copy{width:100%;padding-inline:22px;justify-content:flex-start;padding-top:20vh}.bocchi-about-copy h2{width:100%;max-width:none;font-size:clamp(44px,13vw,72px)}.bocchi-about-copy h2 span:last-child{margin-left:0}.bocchi-about-foot{width:0;min-width:100%;margin:26px 0 0 0}.bocchi-screen-meta span:last-child{display:none} }
@media(prefers-reduced-motion:reduce){ :root{--bocchi-p:1}.bocchi-bg-fly{display:none} }

/* 0903 mira · #offers（SECTION 03 两个 option 的手机/平板 mock）整段撤了，样式随之清空 */

  .mm-run { --field:#7180ff; --field-hi:#8390ff; --lav-1:#8390ff; --lav-2:#8a96ff; --lav-3:#8f9bff; --ink:#241c4e; --violet:#4653c6; --white:#fff; --font:"Proxima Nova","proxima-nova","Inter",-apple-system,sans-serif; --mono:ui-monospace,"SF Mono",Menlo,monospace; --ease:cubic-bezier(.22,1,.36,1); --ease-cam:cubic-bezier(.65,0,.35,1); --ease-wipe:cubic-bezier(.85,0,.15,1); --frame:clamp(10px,1vw,14px); --win-r:clamp(14px,1.4vw,20px); position:relative; height:630vh; }
  .mm-stage {
    position: sticky; top: 0; min-height: 100vh; overflow: clip;
    background: var(--field); /* = c1 About 的 #7180FF，About 滚出紫接紫 */
    color: var(--ink); font-family: var(--font); font-size: 16px; line-height: 1.6;
  }
  .mm-stage[data-state="try"].mm-lumi { cursor: grab; }
  .mm-stage[data-state="try"].mm-lumi.is-dragging { cursor: grabbing; }

  /* ---------- 内窗：memed .l-frame 的圆角内窗，紫场收成外框 ----------
     静止 = clip 到 0（不可见）；about / try = inset(--frame round --win-r)
     从中心开出来，1s cubic.inOut = 他家 camera.position 那条曲线。
     hero 子树被 content-box 复位，窗内自己的件全部回 border-box。 */
  .mm-win, .mm-win *, .mm-win *::before, .mm-win *::after { box-sizing: border-box; }
  .mm-win {
    position: absolute; inset: 0; z-index: 8; overflow: hidden;
    background: #8390ff; pointer-events: none; /* 0903 mira · 窗底不用刺白，淡紫白 */
    clip-path: inset(50% 50% round var(--win-r));
    transition: clip-path 1s var(--ease-cam);
  }
  /* r2：field 态窗不开（紫接紫接住 c1 About 离场）。opt1：div1 / div2
     分隔幕两态窗也收死（整场翻回紫 = moonstudio 白↔黑翻场的我们版），
     只有四个内容态开窗 —— 开窗动画本身就是「下一章从巨字身上盖过去」 */
  /* 0903 mira r3：她「打开的那个动效不要消失」—— 开窗照 option2 原样：1s 开到 14px 紫框，框留着；
     收窗 = 不在名单里就回基础值，同一条 transition 合拢回紫场 */
  .mm-stage[data-state="s1"] .mm-win,
  .mm-stage[data-state="s2"] .mm-win,
  .mm-stage[data-state="s3"] .mm-win,
  .mm-stage[data-state="try"] .mm-win { clip-path: inset(var(--frame) round var(--win-r)); }
  /* 0903 mira r5：lumi / div2 两态并进 api 一屏，样式见文件尾 mm-api 段 */
  .mm-win h2, .mm-win p { margin: 0; }

  /* 空心 ANIWAFFLE 水印横向漂（memed 背后那行空心 MEMED）：
     hero 底纹字母的延续，白窗上走 lav-1 描边 tone-on-tone，线性匀速。 */
  .mm-wm {
    position: absolute; left: 0; top: 50%; z-index: 1; margin: 0;
    transform: translateY(-50%); white-space: nowrap; pointer-events: none;
    font-size: 21vw; font-weight: 900; line-height: 0.8; letter-spacing: -0.015em;
    text-transform: uppercase; color: transparent;
    -webkit-text-stroke: clamp(1.5px, 0.16vw, 2.5px) #8390ff; /* 0903 mira · 水印再淡一档，别跟图打架 */
  }
  .mm-wm span { display: inline-block; padding-right: 0.25em; animation: mm-drift 42s linear infinite; }
  @keyframes mm-drift { to { transform: translateX(-100%); } }

  /* ---------- Lumi 替身：基准盒 800×1000（1600×2000 的一半），位形全走
     transform（js 每帧写 translate + scale）。三具身体叠在同一个盒里：
     turn 帧 / sayhi idle（底图 + 闭眼 + 两档嘴贴片）/ 其他角色全身。 ---------- */
  .mm-actor {
    position: absolute; left: 0; top: 0; z-index: 3; width: 800px; height: 1000px;
    transform-origin: 0 0; will-change: transform; opacity: 0;
    transition: opacity 0.3s ease; pointer-events: none;
  }
  .mm-actor .mm-body { position: absolute; inset: 0; opacity: 0; transition: opacity 0.4s ease; }
  .mm-actor .mm-body.on { opacity: 1; }
  .mm-actor img { position: absolute; left: 0; top: 0; width: 100%; height: 100%; display: block; }
  /* idle：呼吸只位移不缩放（iris 规格），贴片 opacity 切 */
  .mm-idle { animation: mm-breathe 4.4s ease-in-out infinite; }
  .mm-idle .patch { opacity: 0; }
  .mm-idle.is-blink .p-eyes, .mm-idle.m-half .p-half, .mm-idle.m-open .p-open { opacity: 1; }
  @keyframes mm-breathe { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-0.7%); } }
  /* 其他角色：1024×1536 画布，按高度塞进盒子（鞋底 1440/1536 → 离盒底 6%） */
  .mm-alt img { left: 50%; width: auto; height: 100%; transform: translateX(-50%); }

  /* ---------- 第三章内容层（r2b：亮相拍砍了 ——「这一章就是直接介绍我们的
     东西」）。三态 = three lives，一态一个，文案盒沿用 memed 擦入语言；
     s2 镜像（文案去右，Lumi 去左）。 ---------- */
  .mm-try-bg, .mm-try-fg {
    position: absolute; inset: 0; opacity: 0; visibility: hidden;
    transition: opacity 0.5s ease, visibility 0s linear 0.5s;
  }
  .mm-try-bg { z-index: 2; }
  .mm-try-fg { z-index: 4; }
  .mm-stage[data-state="try"] .mm-try-bg,
  .mm-stage[data-state="try"] .mm-try-fg { opacity: 1; visibility: visible; transition: opacity 0.5s ease, visibility 0s; }

  /* 0904 mira r6 · memed r2b 的三态文案 + 擦入原样放回（她：交互动效都要保留） */
  .mm-live {
    position: absolute; inset: 0; z-index: 4; pointer-events: none;
    opacity: 0; visibility: hidden;
    transition: opacity 0.5s ease, visibility 0s linear 0.5s;
  }
  .mm-stage[data-state="s1"] .mm-l1,
  .mm-stage[data-state="s2"] .mm-l2,
  .mm-stage[data-state="s3"] .mm-l3 { opacity: 1; visibility: visible; transition: opacity 0.5s ease, visibility 0s; }
  .mm-live-row {
    position: absolute; left: 6.5vw; top: 55%; transform: translateY(-50%);
    display: grid; justify-items: start; gap: 1.6vh; max-width: 46vw;
  }
  .mm-l2 .mm-live-row { left: auto; right: 6.5vw; } /* s2 镜像 */
  .mm-live-eyebrow { margin: 0; font-family: var(--mono); font-size: 10px; letter-spacing: 0.26em; text-transform: uppercase; color: var(--violet); }
  .mm-num { margin: 0; font-weight: 900; line-height: 0.86; letter-spacing: -0.02em; font-size: 4.6vw; color: var(--field); clip-path: inset(0 100% 0 0); }
  .mm-stage[data-state="s1"] .mm-l1 .mm-num,
  .mm-stage[data-state="s2"] .mm-l2 .mm-num,
  .mm-stage[data-state="s3"] .mm-l3 .mm-num { clip-path: inset(0 0 0 0); transition: clip-path 1s 0s var(--ease-wipe); }
  .mm-hollow {
    font-weight: 900; line-height: 0.86; letter-spacing: -0.02em; text-transform: uppercase;
    color: transparent; -webkit-text-stroke: clamp(1.5px, 0.18vw, 3px) var(--field);
  }
  .mm-catch { font-size: 2.35vw; font-weight: 800; line-height: 1; letter-spacing: -0.02em; margin: 0; }
  .mm-sub { font-size: 1.02vw; font-weight: 600; line-height: 1.25; letter-spacing: -0.005em; margin: 0; }
  .mm-catch .l, .mm-sub .l {
    position: relative; display: flex; align-items: center; width: max-content; max-width: 100%;
    background: var(--lav-3); color: var(--field);
    height: 1.55em; padding: 0 0.42em; margin-top: 1px;
    clip-path: inset(0 100% 0 0);
  }
  .mm-sub .l { color: var(--ink); height: 1.7em; padding: 0 0.6em; }
  .mm-catch .l::after, .mm-sub .l::after {
    content: ""; position: absolute; inset: 0; background: var(--field);
    transform: scaleX(1); transform-origin: 100% 0;
  }
  .mm-stage[data-state="s1"] .mm-l1 :is(.mm-catch, .mm-sub) .l,
  .mm-stage[data-state="s2"] .mm-l2 :is(.mm-catch, .mm-sub) .l,
  .mm-stage[data-state="s3"] .mm-l3 :is(.mm-catch, .mm-sub) .l {
    clip-path: inset(0 0 0 0);
    transition: clip-path 0.8s calc(0.1s + var(--i, 0) * 0.1s) var(--ease-wipe);
  }
  .mm-stage[data-state="s1"] .mm-l1 :is(.mm-catch, .mm-sub) .l::after,
  .mm-stage[data-state="s2"] .mm-l2 :is(.mm-catch, .mm-sub) .l::after,
  .mm-stage[data-state="s3"] .mm-l3 :is(.mm-catch, .mm-sub) .l::after {
    transform: scaleX(0);
    transition: transform 0.8s calc(0.9s + var(--i, 0) * 0.1s) var(--ease-wipe);
  }
  .mm-stage:not([data-state="s1"]) .mm-l1 .mm-num, .mm-stage:not([data-state="s1"]) .mm-l1 .l,
  .mm-stage:not([data-state="s2"]) .mm-l2 .mm-num, .mm-stage:not([data-state="s2"]) .mm-l2 .l,
  .mm-stage:not([data-state="s3"]) .mm-l3 .mm-num, .mm-stage:not([data-state="s3"]) .mm-l3 .l { transition: clip-path 0s 0.5s; }
  .mm-stage:not([data-state="s1"]) .mm-l1 .l::after,
  .mm-stage:not([data-state="s2"]) .mm-l2 .l::after,
  .mm-stage:not([data-state="s3"]) .mm-l3 .l::after { transition: transform 0s 0.5s; }

  .mm-turn-word {
    position: absolute; left: 50%; margin: 0; font-size: 16vw; white-space: nowrap;
    transform: translateX(-50%);
    clip-path: inset(0 100% 0 0);
  }
  .mm-turn-word.t { top: -0.08em; }
  .mm-turn-word.b { bottom: -0.1em; }
  .mm-stage[data-state="try"] .mm-turn-word { clip-path: inset(0 0 0 0); transition: clip-path 1s 0.4s var(--ease-wipe); }
  .mm-stage[data-state="try"] .mm-turn-word.b { transition-delay: 0.55s; }
  .mm-stage:not([data-state="try"]) .mm-turn-word { transition: clip-path 0s 0.5s; }
  /* 转盘环：虚线（唯一允许的描边）椭圆，压在框底附近，半截被框吃掉 */
  .mm-ring {
    position: absolute; left: 50%; bottom: calc(var(--frame) - 0.8vh);
    width: 46vw; height: 9vh; transform: translateX(-50%);
    border: 2px dashed var(--field); border-radius: 50%; opacity: 0.7;
  }
  .mm-ring::before, .mm-ring::after {
    content: ""; position: absolute; top: 50%; width: 0.9vw; height: 0.9vw; margin-top: -0.45vw;
    border-radius: 50%; background: var(--field);
    animation: mm-ring-dot 3.2s var(--ease-cam) infinite alternate;
  }
  .mm-ring::before { left: -0.45vw; }
  .mm-ring::after { right: -0.45vw; animation-delay: -1.6s; }
  @keyframes mm-ring-dot { from { transform: translateY(-1.2vh) scale(0.8); } to { transform: translateY(1.2vh) scale(1); } }
  .mm-pill {
    position: absolute; left: 50%; bottom: calc(var(--frame) + 3.2vh); transform: translateX(-50%);
    padding: 0 16px; height: 34px; display: flex; align-items: center; gap: 10px;
    border-radius: 100vw; background: var(--lav-3); color: var(--ink);
    font-family: var(--mono); font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase;
    white-space: nowrap; transition: opacity 0.3s ease;
  }
  .mm-pill i { font-style: normal; color: var(--field); font-weight: 700; }
  .mm-stage:not(.mm-lumi) .mm-pill, .mm-stage:not(.mm-lumi) .mm-ring { opacity: 0; }

  /* ---------- 常驻件（memed 的位置）：静止态全部隐藏，进 about 淡入 ---------- */
  .mm-ui { position: absolute; inset: 0; z-index: 5; opacity: 0; visibility: hidden; transition: opacity 0.5s ease, visibility 0s linear 0.5s; }
  .mm-stage[data-state="s1"] .mm-ui,
  .mm-stage[data-state="s2"] .mm-ui,
  .mm-stage[data-state="s3"] .mm-ui,
  .mm-stage[data-state="try"] .mm-ui { opacity: 1; visibility: visible; transition: opacity 0.5s ease 0.35s, visibility 0s; }
  .mm-ui button { font: inherit; border: 0; padding: 0; margin: 0; background: none; cursor: pointer; pointer-events: auto; color: inherit; }
  .mm-mono { font-family: var(--mono); font-size: 10px; letter-spacing: 0.26em; text-transform: uppercase; color: var(--field); }
  /* 左侧 SCROLL 竖指示 + 一根细线 */
  .mm-scroll {
    position: absolute; left: calc(var(--frame) + 1.6vw); top: 50%;
    display: grid; justify-items: center; gap: 12px; transform: translate(-50%, -50%);
  }
  .mm-scroll span { writing-mode: vertical-rl; transform: rotate(180deg); }
  .mm-scroll i { display: block; width: 1px; height: 48px; background: var(--field); overflow: hidden; }
  .mm-scroll i::after { content: ""; display: block; width: 100%; height: 50%; background: var(--white); animation: mm-scroll-tick 1.8s var(--ease-cam) infinite; }
  @keyframes mm-scroll-tick { from { transform: translateY(-100%); } to { transform: translateY(200%); } }
  /* 右侧角色列：SELECTED / + 圆头像（实底 lav-3 圆，无描边；选中 = 满透明 + lav-1） */
  .mm-cast {
    position: absolute; right: calc(var(--frame) + 1.6vw); top: 50%;
    transform: translateY(-50%); display: grid; justify-items: center; gap: 10px;
  }
  .mm-cast .lab { writing-mode: vertical-rl; transform: rotate(180deg); margin-bottom: 8px; }
  .mm-cast button {
    position: relative; width: clamp(38px, 3.2vw, 48px); height: clamp(38px, 3.2vw, 48px);
    border-radius: 50%; overflow: hidden; background: var(--lav-3);
    opacity: 0.5; transition: opacity 0.2s ease, transform 0.25s var(--ease), background 0.2s ease;
  }
  .mm-cast button img { position: absolute; left: 50%; top: 0; width: 300%; height: auto; transform: translate(-50%, -6.5%); }
  .mm-cast button.on { opacity: 1; background: var(--lav-1); transform: scale(1.12); }
  @media (hover: hover) { .mm-cast button:hover { opacity: 1; } }
  .mm-cast button:focus-visible { outline: 2px solid var(--field); outline-offset: 3px; }
  /* m2：左下 DISPLAYED CHARACTER 标签整个删了（她：这块可以没有） */
  /* 右下 NEXT：圆形实底紫钮（memed 的 starburst 贴纸章封禁） */
  .mm-next { position: absolute; right: calc(var(--frame) + 1.6vw); bottom: calc(var(--frame) + 2.4vh); display: grid; justify-items: center; gap: 8px; }
  .mm-next button {
    width: clamp(48px, 4vw, 60px); height: clamp(48px, 4vw, 60px); border-radius: 50%;
    background: var(--field); color: var(--white); display: grid; place-items: center;
    transition: transform 0.25s var(--ease), background 0.2s ease;
  }
  .mm-next button svg { width: 42%; height: 42%; display: block; }
  @media (hover: hover) { .mm-next button:hover { transform: translateY(-3px); background: var(--violet); } }
  .mm-next button:focus-visible { outline: 2px solid var(--field); outline-offset: 3px; }

  /* ---------- 0901 r2 · ?frame=0 对照：紫场铺满不收框（body.mm-noframe） ----------
     同一套 DOM 只切 body class。内窗透明、不开窗（交叉淡），常驻件 / 文案盒 /
     空心字转成紫场语言；位置不动（--frame 照旧），两版只差色和框。 */
  body.mm-noframe .mm-win { background: transparent; clip-path: none; transition: opacity 0.5s ease; }
  /* opt1：noframe 没有窗可收 —— 分隔幕两态改成整层交叉淡出，巨字才站得干净 */
  body.mm-noframe .mm-stage[data-state="div1"] .mm-win,
  body.mm-noframe .mm-stage[data-state="div2"] .mm-win { opacity: 0; }
  body.mm-noframe .mm-wm { opacity: 0; -webkit-text-stroke-color: var(--field-hi); transition: opacity 0.5s ease; }
  body.mm-noframe .mm-stage[data-state="s1"] .mm-wm,
  body.mm-noframe .mm-stage[data-state="s2"] .mm-wm,
  body.mm-noframe .mm-stage[data-state="s3"] .mm-wm,
  body.mm-noframe .mm-stage[data-state="try"] .mm-wm { opacity: 1; transition-delay: 0.35s; }
  body.mm-noframe .mm-hollow { -webkit-text-stroke-color: var(--white); }
  body.mm-noframe .mm-num { color: var(--white); } /* 实心大字在紫场 = 白实心 */
  body.mm-noframe .mm-catch .l { background: var(--white); color: var(--field); }
  body.mm-noframe .mm-sub .l { background: var(--white); color: var(--ink); }
  body.mm-noframe .mm-catch .l::after, body.mm-noframe .mm-sub .l::after { background: var(--violet); }
  body.mm-noframe .mm-ring { border-color: var(--white); }
  body.mm-noframe .mm-ring::before, body.mm-noframe .mm-ring::after { background: var(--white); }
  body.mm-noframe .mm-pill { background: var(--white); }
  body.mm-noframe .mm-mono { color: var(--white); }
  body.mm-noframe .mm-scroll i { background: var(--white); }
  body.mm-noframe .mm-scroll i::after { background: var(--field); }
  body.mm-noframe .mm-cast button { background: var(--field-hi); }
  body.mm-noframe .mm-cast button.on { background: var(--white); }
  body.mm-noframe .mm-next button { background: var(--white); color: var(--field); }
  @media (hover: hover) { body.mm-noframe .mm-next button:hover { background: var(--lav-1); } }
  body.mm-noframe .mm-cast button:focus-visible, body.mm-noframe .mm-next button:focus-visible { outline-color: var(--white); }
  body.mm-noframe .opt-id::after { content: " · FRAME 0"; }

  /* ---------- r2b · 三态的动作身体：s1 cheer / s2 拿故事板（原 works 卡里的
     那两张图升级成舞台主角），s3 用 sayhi idle + 伙伴层。图不是满幅立绘，
     按高度坐进盒子、底边贴盒底，呼吸同 idle（只位移不缩放）。 ---------- */
  .mm-act1, .mm-act2 { animation: mm-breathe 4.4s ease-in-out infinite; }
  .mm-act1 img, .mm-act2 img { left: 50%; top: auto; bottom: 0; width: auto; height: 94%; transform: translateX(-50%); }

  /* 0903 mira · opt4 三态右栏视觉，样式见文件尾 mm-vis 段 */

  /* 0903 · turn interaction now closes the whole page, after CTA. It sits on
     the page itself: no inner frame, watermark, or decorative TURN words. */
  body.c2-palmer-page .bottom-turn { position:relative; z-index:8; height:100svh; min-height:680px; box-sizing:border-box; overflow:hidden; display:grid!important; grid-template-rows:auto minmax(0,1fr); justify-items:center; padding:clamp(76px,8vh,104px) 4vw 0; background:#fff; color:#241c4e; font-family:var(--font,"Proxima Nova","Inter",sans-serif); }
  .bottom-turn>header { position:relative; z-index:3; text-align:center; pointer-events:none; }.bottom-turn>header p{margin:0 0 13px;color:#7180ff;font:750 clamp(8px,.72vw,11px)/1 ui-monospace,"SF Mono",Menlo,monospace;letter-spacing:.22em;text-transform:uppercase}.bottom-turn>header h2{margin:0;font-size:clamp(54px,7vw,118px);font-weight:850;line-height:.82;letter-spacing:-.06em}
  .bottom-turn-stage { position:relative; align-self:stretch; width:min(76vw,980px); height:100%; min-height:0; display:grid; place-items:end center; cursor:grab; outline:none; touch-action:none; user-select:none; -webkit-user-select:none; }.bottom-turn-stage.is-dragging{cursor:grabbing}.bottom-turn-stage:focus-visible::after{content:"";position:absolute;inset:5% 12% 3%;border:2px solid #7180ff;border-radius:50%;pointer-events:none}
  .bottom-turn-stage>img { position:absolute; z-index:2; left:50%; bottom:-3%; translate:-50% 0; width:auto; height:98%; max-width:none; pointer-events:none; filter:drop-shadow(0 20px 24px rgba(36,28,78,.08)); }
  .bottom-turn-ring { position:absolute; z-index:1; left:50%; bottom:2.5%; translate:-50% 0; width:70%; height:10%; border:2px dashed rgba(113,128,255,.55); border-radius:50%; }.bottom-turn-ring::before,.bottom-turn-ring::after{content:"";position:absolute;top:50%;width:13px;aspect-ratio:1;margin-top:-6px;border-radius:50%;background:#8390ff}.bottom-turn-ring::before{left:-7px}.bottom-turn-ring::after{right:-7px}
  .bottom-turn-stage>p { position:absolute; z-index:4; left:50%; bottom:4%; translate:-50% 0; margin:0; height:38px; display:flex;align-items:center;gap:10px;padding:0 19px;border-radius:999px;background:#8f9bff;color:#241c4e;font:700 clamp(9px,.72vw,11px)/1 ui-monospace,"SF Mono",Menlo,monospace;letter-spacing:.15em;text-transform:uppercase;white-space:nowrap;pointer-events:none}.bottom-turn-stage>p span{color:#7180ff;font-size:15px}
  @media(max-width:700px){.bottom-turn{padding-top:82px}.bottom-turn-stage{width:118vw;height:76vh}.bottom-turn-stage>img{height:98%}.bottom-turn-ring{width:66%}}
  @media(prefers-reduced-motion:reduce){.bottom-turn-stage>img{transition:none!important}}

  .o1-div { position: absolute; inset: 0; z-index: 4; display: grid; place-items: center;
    opacity: 0; visibility: hidden; transition: opacity 0.5s ease, visibility 0s linear 0.5s; }
  .mm-stage[data-state="div1"] .o1-d1 { opacity: 1; visibility: visible; transition: opacity 0.5s ease, visibility 0s; }
  .o1-div p { margin: 0; display: flex; align-items: center; gap: clamp(18px, 2.4vw, 44px);
    color: #fff; font-weight: 900; font-size: clamp(52px, 8.6vw, 148px); line-height: 0.9;
    letter-spacing: -0.02em; text-transform: uppercase; white-space: nowrap; }
  .o1-d1 p { width:min(940px,82vw); font-size:clamp(24px,2.2vw,34px); font-weight:400; line-height:1.35; letter-spacing:-.015em; text-align:center; text-transform:none; white-space:normal; }
  .o1-d1 p span { display:block; opacity:0; clip-path:inset(0 0 100% 0); transform:translateY(28px); transition:opacity .65s .24s var(--ease),clip-path .9s .2s var(--ease-wipe),transform .9s .2s var(--ease); }
  .o1-d1 .o1-eyebrow { opacity:0; transform:translateY(14px); transition:opacity .5s .08s var(--ease),transform .65s .08s var(--ease); }
  .mm-stage[data-state="div1"] .o1-d1 p span { opacity:1; clip-path:inset(0 0 0 0); transform:translateY(0); }
  .mm-stage[data-state="div1"] .o1-d1 .o1-eyebrow { opacity:1; transform:translateY(0); }

  @media (max-width: 1024px) {
    .o1-div p { font-size: clamp(40px, 9.4vw, 96px); }
    .o1-d1 p { width:min(820px,86vw); font-size:clamp(23px,3.2vw,32px); line-height:1.4; }
  }
  @media (max-width: 760px) {
    .o1-rail { right: 9px; }
    .o1-rail i { height: 160px; }
    .o1-chapter span:last-child, .o1-bridge-meta span:last-child { display: none; }
  }
  @media (prefers-reduced-motion: reduce) {
    .o1-w, .o1-div, .o1-rail { transition: none !important; }
    .o1-bridge { height: 100vh; }
    .o1-bridge-lumi img { opacity: 0; }
    .o1-bridge-lumi .f6 { opacity: 1; scale: 0.94; }
    .o1-inkrun { height: 100vh; }
    .o1-w, .o1-w.on { color: inherit; }
    body.nc1 .o1-inkrun .nc1-about-card .row { opacity: 1; }
  }
/* 0903 mira · 文件尾原有一对误带的 </style></head>，会吞掉后面第一条规则，清掉 */

/* ======================================================================
   0903 mira · opt4 · FOR DEVELOPERS · Round 3（xodex Our services 机制）
   紫场起，每个 .xo-band 进视口 → .is-lit：底色 tween 到淡紫 #8390ff（实色过渡），
   字色晚一拍跟（正文白 → 墨，标题白 → 墨 → 紫）；标题按行从遮罩升起。
   三条陈述 = 巨字 #7180ff + 一句墨正文 .8，左右错落。无图无 bullet 无代码。
   ====================================================================== */
.dv, .p3-foot { --p3-field:#7180ff; --p3-violet:#4653c6; --p3-ink:#171331; --p3-lav:#8f9bff; --p3-lav-2:#8390ff; --p3-blush:#8f9bff; --p3-ease:cubic-bezier(.22,1,.36,1); --p3-mono:ui-monospace,"SF Mono",Menlo,monospace; --p3-pad:clamp(24px,6vw,96px); font-family:var(--nc1-font,Inter,sans-serif); -webkit-font-smoothing:antialiased; }
.dv { position:relative; z-index:10; }
.dv-in { max-width:1280px; margin:0 auto; }
.xo { --xo-dark:#7180ff; --xo-light:#8390ff; background:var(--xo-dark); padding:0; }
.xo-band { position:relative; padding:clamp(40px,6vh,80px) var(--p3-pad); background:var(--xo-dark); color:var(--dv-ink);
  --dv-ink:#fff; --dv-title:#fff; --dv-hair:rgba(255,255,255,.3); --dv-btn-bg:#fff; --dv-btn-fg:var(--xo-dark); --dv-wm:rgba(255,255,255,.2); --xo-tc:.2s ease .04s; }
.xo-band.is-lit { background:var(--xo-light); --dv-ink:#171331; --dv-title:#7180ff; --dv-hair:rgba(23,19,49,.18); --dv-btn-bg:#7180ff; --dv-btn-fg:#fff; --dv-wm:rgba(113,128,255,.22); }
.xo-band-head { padding-top:clamp(120px,15vh,170px); padding-bottom:clamp(56px,9vh,110px); overflow:clip; }
.xo-band-cta { padding-top:clamp(56px,9vh,110px); padding-bottom:clamp(80px,12vh,140px); }
/* 一块材料一起换色，字和底解耦（正文 .2s 早交接，标题多一站墨再转紫，中段不留白帧） */
.xo-band, .xo-band *, .xo-band *::before, .xo-band *::after { transition-property:background-color,color,border-color,-webkit-text-stroke-color; transition-duration:.5s,.2s,.5s,.5s; transition-delay:0s,.04s,0s,0s; transition-timing-function:ease; }
@keyframes xo-title { 0%, 6% { color:#fff; } 22%, 70% { color:#171331; } 100% { color:#7180ff; } }
/* 段头 */
.dv-head { position:relative; z-index:1; max-width:52rem; margin:0 auto; text-align:center; }
.dv-eyebrow { margin:0; color:var(--dv-title); font:700 10px/1 var(--p3-mono); letter-spacing:.24em; text-transform:uppercase; }
.dv-head h2 { margin:18px 0 0; color:var(--dv-title); font-size:clamp(38px,4.6vw,72px); font-weight:800; line-height:1; letter-spacing:-.04em; }
.dv-lead { max-width:36em; margin:22px auto 0; color:var(--dv-ink); font-size:clamp(15px,1.15vw,18px); line-height:1.55; }
.xo-wm { position:absolute; right:-.06em; top:.02em; margin:0; z-index:0; pointer-events:none; color:transparent; -webkit-text-stroke:clamp(1.5px,.16vw,2.5px) var(--dv-wm); font-size:clamp(160px,22vw,340px); font-weight:900; line-height:.8; letter-spacing:-.03em; }
/* 标题按行升起 */
.xo-line { display:block; overflow:clip; padding-bottom:.06em; margin-bottom:-.06em; }
.xo-line-in { display:block; transform:translateY(112%); transition:transform .9s var(--p3-ease) calc(var(--i,0) * 90ms); }
.xo-band .xo-line-in { transition-property:transform; }
.is-lit .xo-line-in { transform:none; }
/* 其余件轻升 */
.xo-band .dv-cta > * + * { --d:.35s; }
.xo-band.is-lit :is(.dv-eyebrow, .dv-cta > *) { opacity:1; transform:none; }
/* CTA */
.dv-cta { display:flex; flex-wrap:wrap; justify-content:flex-start; align-items:center; gap:12px 22px; margin-top:clamp(28px,5vh,56px); }
.dv-btn { display:inline-flex; align-items:center; min-height:48px; padding:0 26px; border-radius:999px; background:var(--dv-btn-bg); color:var(--dv-btn-fg); font-size:14px; font-weight:700; text-decoration:none; transition:background-color .5s ease, color .2s ease .04s, translate .2s var(--p3-ease); }
.dv-link { color:var(--dv-ink); font-size:14px; font-weight:600; text-decoration:underline; text-underline-offset:5px; text-decoration-color:var(--dv-hair); }
@media (hover:hover) { .dv-btn:hover { translate:0 -1px; background:var(--p3-violet); color:#fff; } .dv-link:hover { text-decoration-color:var(--dv-ink); } }
.dv-btn:focus-visible, .dv-link:focus-visible { outline:2px solid var(--p3-field); outline-offset:3px; }
/* 页脚：淡紫静场，一根虚线发丝 */
.p3-foot { position:relative; z-index:10; background:#7180ff; color:#fff; padding:0 var(--p3-pad) clamp(28px,4vh,40px); } /* 页脚回紫：story 段钉着的 Lumi 走到底是「进到页脚后面」，不是悬空切口 */
.p3-foot-in { max-width:1240px; margin:0 auto; display:flex; flex-wrap:wrap; align-items:center; gap:16px 32px; padding-top:28px; border-top:1.5px dashed rgba(255,255,255,.35); }
.p3-foot-wm { color:#fff; font-size:18px; font-weight:800; letter-spacing:-.02em; text-decoration:none; }
.p3-foot-nav { display:flex; flex-wrap:wrap; gap:8px 22px; margin-inline:auto; }
.p3-foot-nav a, .p3-foot-copy { color:#fff; font-size:13px; font-weight:500; text-decoration:none; opacity:.78; transition:opacity .16s ease; }
.p3-foot-lang { display:inline-flex; gap:2px; padding:2px; border-radius:999px; background:rgba(255,255,255,.16); }
.p3-foot-lang button { min-width:38px; padding:6px 10px; border:0; border-radius:999px; background:transparent; color:#fff; font:600 11px/1 var(--nc1-font,Inter,sans-serif); letter-spacing:.08em; cursor:pointer; opacity:.8; transition:background .16s ease, opacity .16s ease; }
.p3-foot-lang button.is-on { background:#fff; color:var(--p3-field); opacity:1; }
.p3-foot-copy { opacity:.6; }
@media (hover:hover) { .p3-foot-nav a:hover { opacity:1; } .p3-foot-lang button:not(.is-on):hover { opacity:1; } }
/* JA：H2 由字典直接换成日文；日文排版收字距 */
.dv-ja { display:none; }
html[data-lang="ja"] .dv, html[data-lang="ja"] .p3-foot, html[data-lang="ja"] .mm-lumi-say { font-family:"Noto Sans JP",var(--nc1-font,Inter,sans-serif); line-break:strict; }
html[data-lang="ja"] .dv-head h2 { font-size:clamp(32px,3.7vw,56px); }
/* 断点 */

/* 0903 mira · 页脚放在 Meet Lumi 之后，被上面「main 之后全隐藏」那条盖住了，放出来 */
body.c2-palmer-page > #p3Foot { display:block!important; }

/* ======================================================================
   0904 mira r8 · API 一屏 = cultfz PEOPLE REACTIONS：紫场 → Lumi 一句 → HOW YOU SHIP 从遮罩升起并留住
   → 三张白卡逐张飞进来叠在字上（rest 0 / -8 / 8deg）。进度 --b-* / --c1..3 由 js 按滚动写。
   ====================================================================== */
.mm-stage { --b-lumiA:0; --b-lineOut:0; --b-wordIn:0; --c1:0; --c2:0; --c3:0; }
.mm-lumiscreen { position:absolute; inset:0; z-index:3; opacity:0; visibility:hidden; pointer-events:none; overflow:clip; }
.mm-stage[data-state="api"] .mm-lumiscreen { opacity:1; visibility:visible; z-index:6; } /* 0904 kit：过场层要压在 .o1-d2 巨字（z 4）之上，否则白色巨字盖住卡上的紫字，看起来像缺笔 */
.mm-lumi-art { position:absolute; left:56%; bottom:0; width:auto; height:86vh; max-width:none; opacity:calc(var(--b-lumiA) * (1 - var(--b-lineOut))); translate:0 calc((1 - var(--b-lumiA)) * 10vh + var(--b-lineOut) * 6vh); }
.mm-lumi-say { position:absolute; left:7vw; top:50%; max-width:30vw; color:#fff; opacity:calc(var(--b-lumiA) * var(--b-lumiA) * (1 - var(--b-lineOut))); translate:0 calc(-50% + (1 - var(--b-lumiA)) * 18px - var(--b-lineOut) * 14px); }
.mm-lumi-who { display:block; margin-bottom:18px; font:700 10px/1 var(--mono); letter-spacing:.26em; text-transform:uppercase; opacity:.8; }
.mm-lumi-say p { margin:0; font-size:clamp(22px,2vw,32px); font-weight:600; line-height:1.25; letter-spacing:-.015em; }
.mm-stage[data-state="api"] .o1-d2 { opacity:var(--b-wordIn); visibility:visible; transition:none; }
.o1-d2 p { overflow:clip; }
.o1-d2 p span { display:block; transform:translateY(calc((1 - var(--b-wordIn)) * 112%)); }
/* 卡叠：从视口底 120vh 外带 14deg 余转飞进，落到各自 rest 位；旋转是唯一花样 */
.mm-stack { position:absolute; inset:0; z-index:5; display:grid; place-items:center; pointer-events:none; }
.mm-stack-card { position:absolute; width:min(34vw,440px); min-height:min(300px,36vh); pointer-events:auto; transform:translate(calc(var(--dx) + (1 - var(--c)) * var(--fx)), calc(var(--dy) + (1 - var(--c)) * 120vh)) rotate(calc(var(--r) + (1 - var(--c)) * 14deg)); opacity:clamp(0, calc(var(--c) * 4), 1); will-change:transform; }
/* 收尾 CTA：淡紫静场 + 弧（真正的 API 段来了替换） */
.aw-arcs { --aw-field-hi:#8390ff; }
.aw-arc { position:absolute; border-radius:50%; pointer-events:none; z-index:0; }
.aw-arc.a1 { width:46vw; height:46vw; left:-13vw; top:30vh; border:1.5vw solid var(--aw-field-hi); }
.aw-arc.a2 { width:30vw; height:30vw; right:-9vw; top:-6vw; background:var(--aw-field-hi); }
.aw-arc.a3 { width:62vw; height:62vw; right:-18vw; bottom:-30vw; border:1.2vw solid var(--aw-field-hi); }
.dv-tail { position:relative; overflow:clip; background:#8390ff; padding:clamp(72px,10vh,120px) var(--p3-pad); }
.dv-tail .dv-in { position:relative; z-index:1; }
.dv-tail .dv-cta { justify-content:center; margin-top:0; }
.dv-tail .dv-btn { background:#7180ff; color:#fff; }
.dv-tail .dv-link { color:#171331; text-decoration-color:rgba(23,19,49,.3); }
@media (max-width:1024px) {
  .mm-lumi-art { left:50%; translate:-50% calc((1 - var(--b-lumiA)) * 10vh + var(--b-lineOut) * 6vh); height:60vh; }
  .mm-lumi-say { top:16vh; max-width:80vw; translate:0 calc((1 - var(--b-lumiA)) * 18px - var(--b-lineOut) * 14px); }
  .mm-stack-card { width:min(78vw,420px); min-height:min(260px,32vh); }
}
@media (max-width:700px) {
  .mm-lumi-art { height:52vh; }
  .mm-lumi-say p { font-size:6vw; }
  .mm-stack-card { width:82vw; min-height:0; padding:20px; }
}

/* 白卡 */
.dv-card { min-height:min(300px,40vh); box-sizing:border-box; padding:clamp(24px,2.2vw,32px); border-radius:clamp(18px,1.8vw,24px); background:#fff; color:#171331; display:flex; flex-direction:column; justify-content:space-between; gap:36px; }
.dv-card-index { color:#7180ff; font:700 11px/1 var(--p3-mono,ui-monospace,monospace); letter-spacing:.22em; }
.dv-card h3 { margin:0; color:#7180ff; font-size:clamp(22px,1.9vw,30px); font-weight:700; line-height:1.12; letter-spacing:-.025em; text-wrap:balance; }
.dv-card p { margin:12px 0 0; max-width:34em; color:rgba(23,19,49,.8); font-size:clamp(14px,1.02vw,16px); line-height:1.55; }
/* 收尾 CTA：淡紫静场 + 弧 */
.dv-tail { position:relative; overflow:clip; background:#8390ff; padding:clamp(72px,10vh,120px) var(--p3-pad); }
.dv-tail .dv-in { position:relative; z-index:1; }
.dv-tail .dv-cta { justify-content:center; margin-top:0; }
.dv-tail .dv-btn { background:#7180ff; color:#fff; }
.dv-tail .dv-link { color:#171331; text-decoration-color:rgba(23,19,49,.3); }
@media (max-width:1024px) {
  .mm-lumi-art { left:50%; translate:-50% calc((1 - var(--b-lumiA)) * 10vh + var(--b-lineOut) * 6vh); height:60vh; }
  .mm-lumi-say { top:16vh; max-width:80vw; translate:0 calc((1 - var(--b-lumiA)) * 18px - var(--b-lineOut) * 14px); }
  .mm-api-head { top:12vh; width:82vw; }
  .mm-api-head h2 { font-size:clamp(30px,4.6vw,48px); }
  .mm-api-lumi { left:50%; bottom:-6vh; height:50vh; translate:-50% calc((1 - var(--b-lumiB)) * 42vh); }
  .mm-api-cards { right:7vw; width:86vw; }
  .mm-api-cards .dv-card { min-height:0; gap:28px; }
}
@media (max-width:700px) {
  .mm-lumi-art { height:52vh; }
  .mm-lumi-say p { font-size:6vw; }
  .mm-api-head h2 { font-size:8vw; }
  .mm-api-lumi { height:42vh; }
  .mm-api-cards .dv-card { padding:22px; border-radius:18px; }
}

/* ======================================================================
   0904 mira r6 · 舞台 = option2 原版编排（右左右 + 擦入 + 转身过桥 + SCROLL/SELECTED/NEXT + 水印），
   只换底（紫场）和画（iris 三张 half-body）。?stage=lumi 默认 / ?stage=glass 文案坐透白面板。
   ====================================================================== */
.mm-stage[data-state="close"] .mm-actor, .mm-stage[data-state="api"] .mm-actor { opacity:0!important; visibility:hidden!important; pointer-events:none; }
.mm-run { --mv-ground:#7b89ff; }
.mm-win { background:var(--mv-ground); } /* 窗底 = 紫场，比框深一线，开窗还看得见 */
.mm-wm { -webkit-text-stroke-color:rgba(255,255,255,.14); }
/* 紫场上的文案语言（= 原 ?frame=0 那套）：序号白实心、主句白盒紫字、正文白盒墨字、擦块深紫 */
.mm-run .mm-live-eyebrow { color:rgba(255,255,255,.8); }
.mm-run .mm-num { color:#fff; }
.mm-run .mm-catch .l { background:#fff; color:var(--field); }
.mm-run .mm-sub .l { background:#fff; color:var(--ink); }
.mm-run .mm-catch .l::after, .mm-run .mm-sub .l::after { background:var(--violet); }
/* 常驻件翻白 */
.mm-run .mm-mono { color:#fff; }
.mm-run .mm-scroll i { background:rgba(255,255,255,.9); }
.mm-run .mm-scroll i::after { background:var(--mv-ground); }
.mm-run .mm-cast button { background:var(--field-hi); opacity:.6; }
.mm-run .mm-cast button.on { background:#fff; opacity:1; }
.mm-run .mm-next button { background:#fff; color:var(--field); }
@media (hover:hover) { .mm-run .mm-next button:hover { background:var(--lav-1); } }
/* iris 的 half-body：坐大、从窗底出血（过场屏那种），转身帧仍是 4:5 满盒 */
.mm-act1 img, .mm-act2 img, .mm-idle img { position:absolute; left:50%; top:auto; bottom:-14%; width:auto; height:114%; transform:translateX(-50%); }
.mm-idle { animation:mm-breathe 4.4s ease-in-out infinite; }
/* glass：文案坐进透白面板（blur 不上色、无描边） */
html[data-stage="glass"] .mm-live-row { padding:clamp(22px,2.2vw,32px) clamp(24px,2.4vw,34px); border-radius:24px; background:rgba(255,255,255,.16); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); }
html[data-stage="glass"] .mm-run .mm-catch .l { background:rgba(255,255,255,.22); color:#fff; }
html[data-stage="glass"] .mm-run .mm-sub .l { background:rgba(255,255,255,.12); color:#fff; }
html[data-stage="glass"] .mm-run .mm-catch .l::after, html[data-stage="glass"] .mm-run .mm-sub .l::after { background:#fff; }
/* 窄窗：文案上、人下（原版 narrow 不镜像） */
@media (max-width:1024px) {
  .mm-live-row, .mm-l2 .mm-live-row { left:7vw; right:auto; top:calc(var(--frame) + 10vh); transform:none; max-width:82vw; gap:1.4vh; }
  .mm-catch { font-size:3.6vw; } .mm-sub { font-size:1.7vw; } .mm-num { font-size:7vw; }
}
@media (max-width:700px) {
  .mm-live-row, .mm-l2 .mm-live-row { top:calc(var(--frame) + 9vh); max-width:86vw; }
  .mm-catch { font-size:6vw; } .mm-sub { font-size:2.9vw; } .mm-num { font-size:12vw; }
  .mm-cast, .mm-next { display:none; } /* 手机上人占满宽，NEXT 会压在她身上；滚动本来就顺 */
}

/* ======================================================================
   0904 mira r7 · 三态视觉 = option2 的场景插画软边图版 + option2 的进出场（位移 8vw + 缩放 .965 + 内侧擦入 22%）
   右左右交替：01 / 03 在右、贴右缘出血，02 在左、贴左缘出血。替身（含转身过桥）在三态里不上台。
   ====================================================================== */
.mm-stage[data-state="s1"] .mm-actor, .mm-stage[data-state="s2"] .mm-actor, .mm-stage[data-state="s3"] .mm-actor { opacity:0!important; visibility:hidden!important; pointer-events:none; }
.offer-visual { position:absolute; z-index:7; top:51%; right:-1vw; width:min(58vw,1040px); margin:0; opacity:0; visibility:hidden; pointer-events:none; transform:translate3d(8vw,-48%,0) scale(.965); clip-path:inset(0 0 0 22% round 28px 0 0 28px); transition:opacity .35s ease, transform .8s var(--ease), clip-path .6s var(--ease-wipe), visibility 0s linear .8s; }
.offer-visual.is-left { right:auto; left:3vw; transform:translate3d(-8vw,-48%,0) scale(.965); clip-path:inset(0 22% 0 0 round 28px); } /* 02 收进 3vw，SCROLL 轨道标签不压在图版上 */
.offer-visual > img { display:block; width:100%; height:auto; max-height:86vh; object-fit:contain; object-position:right center; border-radius:28px 0 0 28px; animation:offer-scene-float 7.2s 1.2s ease-in-out infinite; }
.offer-visual.is-left > img { object-position:left center; border-radius:28px; }
.offer-visual.offer-visual-chibi { right:2vw; width:min(48vw,760px); }
.offer-visual.offer-visual-chibi > img { max-height:82vh; border-radius:0; object-position:center; animation:offer-chibi-float 5.8s 1s ease-in-out infinite; }
/* 02 = iris 竖版手机图版（676×985 自带淡紫边）：图版按手机比例定尺寸，贴左缘出血 */
.offer-visual.offer-visual-world { width:auto; }
.offer-visual-world > img { height:min(84vh,52vw); width:auto; max-height:none; }
.mm-stage[data-state="s1"] .offer-visual-live, .mm-stage[data-state="s3"] .offer-visual-call { opacity:1; visibility:visible; transform:translate3d(0,-48%,0) scale(1); clip-path:inset(0 0 0 0 round 28px 0 0 28px); transition:opacity .42s .1s ease, transform 1.05s .04s var(--ease), clip-path 1s .04s var(--ease-wipe), visibility 0s; }
.mm-stage[data-state="s2"] .offer-visual-world { opacity:1; visibility:visible; transform:translate3d(0,-48%,0) scale(1); clip-path:inset(0 0 0 0 round 28px); transition:opacity .42s .1s ease, transform 1.05s .04s var(--ease), clip-path 1s .04s var(--ease-wipe), visibility 0s; }
@keyframes offer-scene-float { 0%, 100% { translate:0 2px; } 50% { translate:0 -5px; } }
@keyframes offer-chibi-float { 0%, 100% { translate:0 3px; } 50% { translate:0 -7px; } }
.mm-run .mm-live-row { max-width:36vw; }
@media (max-width:1024px) {
  .offer-visual, .offer-visual.is-left { left:auto; right:-4vw; top:auto; bottom:calc(var(--frame) + 4vh); width:90vw; transform:translate3d(6vw,0,0) scale(.965); clip-path:inset(0 0 0 22% round 24px 0 0 24px); }
  .offer-visual.is-left > img { object-position:right center; border-radius:24px 0 0 24px; }
  .mm-stage[data-state="s1"] .offer-visual-live, .mm-stage[data-state="s2"] .offer-visual-world, .mm-stage[data-state="s3"] .offer-visual-call { transform:translate3d(0,0,0) scale(1); clip-path:inset(0 0 0 0 round 24px 0 0 24px); }
  .offer-visual > img { max-height:44vh; }
  .offer-visual.offer-visual-world { width:auto; right:-2vw; }
  .offer-visual-world > img { height:50vh; }
  .offer-visual.offer-visual-chibi { right:2vw; width:72vw; }
  .offer-visual.offer-visual-chibi > img { max-height:56vh; }
  .mm-run .mm-live-row, .mm-run .mm-l2 .mm-live-row { max-width:82vw; }
  .mm-cast { display:none; } /* 窄窗 SELECTED 头像压到图版，收掉 */
}
@media (max-width:700px) { .offer-visual, .offer-visual.is-left { width:100vw; right:-6vw; } .offer-visual.offer-visual-world { width:auto; } .offer-visual-world > img { height:42vh; } .offer-visual > img { max-height:40vh; border-radius:18px 0 0 18px; } .offer-visual > img.is-phone { height:40vh; } .offer-visual.offer-visual-chibi { right:0; width:82vw; } .offer-visual.offer-visual-chibi > img { max-height:44vh; border-radius:0; } }
@media (prefers-reduced-motion:reduce) { .offer-visual > img { animation:none; } }

.mm-ui { z-index:9; } /* SCROLL / NEXT 压在图版之上 */

/* ======================================================================
   0904 mira · FOR DEVELOPERS · Round 4（ElevenLabs / fish 的 API 区清晰度）
   淡紫场 + 暗纹弧；一种形状学一次：左栏 tag / H3 / 一句 / 三条 fact（粗头 + 一行），右栏真代码（墨色面板 mono 13）
   或扁平示意（白卡、无描边）。进场只有一次上浮。
   ====================================================================== */
.api { position:relative; overflow:clip; background:#8390ff; color:#171331; padding:clamp(88px,12vh,150px) var(--p3-pad) clamp(72px,10vh,120px); }
.api .aw-arc { opacity:.9; }
.api-in { position:relative; z-index:1; max-width:1240px; margin:0 auto; }
.api-tag { margin:0; color:#7180ff; font:700 10px/1 var(--p3-mono); letter-spacing:.24em; text-transform:uppercase; }
.api-mono { font:700 9px/1 var(--p3-mono); letter-spacing:.2em; text-transform:uppercase; color:#7180ff; }
.api-head { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; gap:32px; padding-bottom:clamp(40px,6vh,64px); }
.api-head h2 { margin:18px 0 0; max-width:14em; color:#7180ff; font-size:clamp(36px,4vw,60px); font-weight:800; line-height:1.02; letter-spacing:-.035em; text-wrap:balance; }
.api-line { margin:16px 0 0; max-width:36em; color:rgba(23,19,49,.8); font-size:clamp(15px,1.1vw,17px); line-height:1.55; }
.api-head .api-line { margin-top:20px; }
.api-minor { display:inline-flex; align-items:center; min-height:44px; padding:0 20px; border-radius:999px; background:#fff; color:#7180ff; font-size:14px; font-weight:700; text-decoration:none; transition:background .16s ease, translate .2s var(--p3-ease); }
.api-minor:hover { background:#8f9bff; translate:0 -1px; }
/* 一行 = 一个 block */
.api-row { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.05fr); gap:clamp(32px,5vw,80px); align-items:center; padding:clamp(48px,7vh,88px) 0; border-top:1.5px dashed rgba(113,128,255,.38); }
.api-copy h3 { margin:16px 0 0; color:#7180ff; font-size:clamp(26px,2.4vw,38px); font-weight:700; line-height:1.1; letter-spacing:-.025em; text-wrap:balance; }
.api-copy .api-line { max-width:30em; }
.api-facts { list-style:none; margin:24px 0 0; padding:0; }
.api-fact { display:grid; grid-template-columns:minmax(7em,11em) 1fr; gap:12px 18px; padding:12px 0; border-top:1.5px dashed rgba(113,128,255,.28); }
.api-fact:last-child { border-bottom:1.5px dashed rgba(113,128,255,.28); }
.api-fact b { font-size:14px; font-weight:700; line-height:1.4; letter-spacing:-.005em; overflow-wrap:anywhere; }
.api-fact span { font-size:14px; line-height:1.45; color:rgba(23,19,49,.74); }
.api-copy .api-minor { margin-top:22px; }
.api-side { min-width:0; display:grid; gap:14px; }
/* 代码：墨面板，mono 13 */
.api-code { margin:0; padding:clamp(20px,2vw,28px); overflow:auto; border-radius:20px; background:#171331; color:rgba(255,255,255,.9); font:500 13px/1.7 var(--p3-mono); scrollbar-width:none; }
.api-code::-webkit-scrollbar { display:none; }
.api-code code { white-space:pre; }
.api-code em { font-style:normal; color:#aab3ff; }
.api-code b { font-weight:500; color:#c9c2ff; }
.api-code i { font-style:normal; color:rgba(255,255,255,.5); }
.api-agentcard { display:grid; gap:6px; justify-items:center; padding:16px 18px; border:1.5px dashed rgba(113,128,255,.5); border-radius:16px; text-align:center; }
.api-agentcard code { font:600 12px/1.4 var(--p3-mono); color:#4653c6; }
.api-agentcard small { font-size:12px; color:rgba(23,19,49,.72); }
/* 示意：白卡，无描边 */
.api-ill { position:relative; border-radius:20px; background:#fff; padding:clamp(18px,1.8vw,24px); }
.api-turn { display:grid; gap:6px; }
.api-turn + .api-turn { margin-top:12px; }
.api-turn p { margin:0; padding:10px 12px; border-radius:12px; background:#8f9bff; font-size:14px; line-height:1.45; max-width:24em; }
.api-turn p[lang="ja"] { font-family:"Noto Sans JP",var(--nc1-font,Inter,sans-serif); }
.api-turn.is-agent p { background:#8390ff; color:#4653c6; }
.api-chip { justify-self:start; padding:5px 8px; border-radius:999px; background:#8f9bff; font:700 8px/1 var(--p3-mono); letter-spacing:.14em; text-transform:uppercase; color:#7180ff; }
.api-talk { padding-right:clamp(90px,7vw,110px); }
.api-face { position:absolute; right:clamp(18px,1.8vw,24px); top:clamp(18px,1.8vw,24px); display:grid; justify-items:center; gap:6px; }
.api-face img { width:48px; height:48px; border-radius:50%; object-fit:cover; object-position:50% 4%; background:#8390ff; scale:1; }
/* 价格：两根对一根，无数字 */
.api-price { display:grid; grid-template-columns:1fr 1fr; gap:24px; align-items:end; min-height:260px; }
.api-price-col { display:grid; gap:14px; align-content:end; }
.api-price-label { font-size:13px; font-weight:600; color:rgba(23,19,49,.74); }
.api-bars { display:grid; gap:8px; align-content:end; }
.api-bars i { display:flex; align-items:center; padding:0 14px; height:72px; border-radius:12px; background:#8390ff; font-style:normal; }
.api-bars i span { font:700 9px/1 var(--p3-mono); letter-spacing:.2em; color:#4653c6; }
.api-bars .b-both { height:88px; background:#7180ff; }
.api-bars .b-both span { color:#fff; }
/* review：BASE / CANDIDATE */
.api-review { display:grid; gap:12px; }
.api-rcard { display:grid; gap:6px; padding:14px 16px; border-radius:14px; background:#8f9bff; }
.api-field { font:700 8px/1 var(--p3-mono); letter-spacing:.18em; color:rgba(23,19,49,.5); }
.api-rcard p { margin:0; font-size:13px; line-height:1.45; }
.api-rcard p.is-muted { color:rgba(23,19,49,.55); }
.api-rcard p.is-diff { padding:6px 8px; border-radius:8px; background:#8390ff; color:#4653c6; }
.api-rfoot { display:flex; align-items:center; justify-content:space-between; gap:12px; padding-top:12px; border-top:1.5px dashed rgba(113,128,255,.35); font-size:13px; }
.api-rfoot b { padding:9px 16px; border-radius:999px; background:#8390ff; color:#4653c6; font:700 9px/1 var(--p3-mono); letter-spacing:.18em; }
/* next：IMAGE → 三块 tile，一根发丝 */
.api-next { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:18px; }
.api-thumb { display:grid; justify-items:center; gap:8px; }
.api-thumb img { width:72px; height:72px; border-radius:18px; object-fit:cover; object-position:50% 6%; background:#8390ff; }
.api-hair { height:1.5px; border-top:1.5px dashed rgba(113,128,255,.5); }
.api-tiles { display:grid; gap:8px; }
.api-tiles div { display:grid; gap:4px; min-width:150px; padding:10px 12px; border-radius:12px; background:#8f9bff; }
.api-tiles small { font-size:12px; line-height:1.35; color:rgba(23,19,49,.74); }
/* close */
.api-close { display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:12px 22px; padding-top:clamp(56px,8vh,96px); border-top:1.5px dashed rgba(113,128,255,.38); }
.api .dv-btn { background:#7180ff; color:#fff; }
.api .dv-link { color:#171331; text-decoration-color:rgba(23,19,49,.3); }
/* 进场：一次上浮 */
[data-rise] { opacity:0; transform:translateY(22px); transition:opacity .6s ease, transform .9s var(--p3-ease); }
[data-rise].is-in { opacity:1; transform:none; }
/* JA */
html[data-lang="ja"] .api { font-family:"Noto Sans JP",var(--nc1-font,Inter,sans-serif); line-break:strict; }
html[data-lang="ja"] .api-head h2 { font-size:clamp(30px,3.4vw,50px); line-height:1.18; letter-spacing:-.01em; }
html[data-lang="ja"] .api-copy h3 { font-size:clamp(22px,2vw,32px); line-height:1.25; letter-spacing:-.01em; }
html[data-lang="ja"] .api-tag { letter-spacing:.12em; }
@media (max-width:1024px) {
  .api-row { grid-template-columns:1fr; gap:28px; }
  .api-head { grid-template-columns:1fr; align-items:start; }
  .api-price { min-height:0; }
}
@media (max-width:700px) {
  .api-fact { grid-template-columns:1fr; gap:4px; }
  .api-next { grid-template-columns:1fr; justify-items:start; }
  .api-hair { width:100%; }
  .api-tiles { width:100%; }
  .api-talk { padding-right:clamp(18px,1.8vw,24px); }
  .api-face { position:static; justify-items:start; grid-auto-flow:column; align-items:center; margin-top:12px; }
  .api-code { font-size:12px; }
}
@media (prefers-reduced-motion:reduce) { [data-rise] { opacity:1; transform:none; transition:none; } }
/* JA 切换时站点级字体规则会把代码面板也换成 Noto Sans JP，代码和 mono 标签钉回 mono */
html[data-lang="ja"] .api-code, html[data-lang="ja"] .api-code *, html[data-lang="ja"] .api-mono, html[data-lang="ja"] .api-agentcard code, html[data-lang="ja"] .api-chip, html[data-lang="ja"] .api-field, html[data-lang="ja"] .api-bars i span, html[data-lang="ja"] .api-rfoot b { font-family:var(--p3-mono)!important; }

/* 0904 kit：她要透白材质不要白卡；字放大、卡顶留白压掉、序号和标题贴着排 */
.mm-stack .mm-stack-card { width:min(36vw,500px); min-height:0; padding:clamp(24px,2.4vw,36px) clamp(26px,2.6vw,40px); gap:16px; justify-content:flex-start; background:rgba(255,255,255,.16); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); color:#fff; }
.mm-stack .mm-stack-card .dv-card-index { color:rgba(255,255,255,.72); }
.mm-stack .mm-stack-card h3 { color:#fff; font-size:clamp(26px,2.3vw,38px); line-height:1.08; }
.mm-stack .mm-stack-card p { margin-top:10px; max-width:none; color:rgba(255,255,255,.86); font-size:clamp(14px,1.08vw,17px); line-height:1.5; }
@media(max-width:1180px){ .mm-stack .mm-stack-card { width:min(62vw,520px); } }
@media(max-width:767px){ .mm-stack .mm-stack-card { width:84vw; padding:22px 24px; } .mm-stack .mm-stack-card h3 { font-size:24px; } .mm-stack .mm-stack-card:nth-child(1){--dx:-2vw!important;--dy:-26vh!important;--r:-4deg!important} .mm-stack .mm-stack-card:nth-child(2){--dx:0vw!important;--dy:0vh!important} .mm-stack .mm-stack-card:nth-child(3){--dx:2vw!important;--dy:26vh!important;--r:4deg!important} }

/* ======================================================================
   0904 lill · r9 · 她：「把人家的排版和交互动效抄过来，把我们的内容放进去」
   （1）Lumi 过场屏 → Start creating（download 页）（2）舞台三态文案去白盒、白字、收间距
   （3）毛玻璃上下一致：舞台序号 chip / SCROLL / SELECTED / NEXT / bridge 角标（4）HOW YOU SHIP 只留巨字 + 地面紫 → 淡紫
   （5）FOR DEVELOPERS = neuralflowtemplate home-v2 literal port（nf-*）
   ====================================================================== */
/* --- 3. glass：同一配方 rgba(255,255,255,.16) + blur 18，无描边，白字 --- */
.bocchi-screen-meta { padding-top:0; }
.bocchi-screen-meta span { display:inline-flex; align-items:center; height:30px; padding:0 13px; border-radius:999px; background:rgba(255,255,255,.16); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); color:#fff; }
.mm-run .mm-num { display:inline-flex; align-items:center; height:28px; padding:0 12px; border-radius:999px; background:rgba(255,255,255,.16); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); font:700 10px/1 var(--mono); letter-spacing:.2em; color:rgba(255,255,255,.7); clip-path:inset(0 100% 0 0 round 999px); }
.mm-stage[data-state="s1"] .mm-l1 .mm-num, .mm-stage[data-state="s2"] .mm-l2 .mm-num, .mm-stage[data-state="s3"] .mm-l3 .mm-num { clip-path:inset(0 0 0 0 round 999px); }
.mm-run .mm-scroll { display:flex; flex-direction:column; align-items:center; gap:12px; width:36px; padding:14px 0 12px; border-radius:999px; background:rgba(255,255,255,.16); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); }
.mm-run .mm-cast button { background:rgba(255,255,255,.16); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); opacity:.7; }
.mm-run .mm-cast button.on { background:rgba(255,255,255,.3); opacity:1; }
.mm-run .mm-next button { background:rgba(255,255,255,.16); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); color:#fff; }
@media (hover:hover) { .mm-run .mm-next button:hover { background:rgba(255,255,255,.3); color:#fff; } }

/* --- 2. 三态文案：不坐白盒，白字直接在紫窗上；显现 = 从下往上的 clip 升起（保留 memed 的逐行错拍）；文案列放宽、字放大，图版贴上来 --- */
.mm-run .mm-catch .l, .mm-run .mm-sub .l { background:transparent; color:#fff; height:auto; padding:0 0 .08em; margin-top:0; clip-path:inset(100% 0 -1px 0); }
.mm-run .mm-sub .l { color:rgba(255,255,255,.85); }
.mm-run .mm-catch .l::after, .mm-run .mm-sub .l::after { content:none; }
.mm-run .mm-live-eyebrow { color:rgba(255,255,255,.7); }
.mm-run .mm-live-row { max-width:44vw; gap:1.3vh; }
.mm-run .mm-catch { font-size:2.7vw; line-height:1.08; }
.mm-run .mm-sub { font-size:1.18vw; line-height:1.35; font-weight:500; }
.mm-run .mm-l2 .mm-live-row { left:44vw; right:auto; }

/* --- 1. Start creating：上半 Lumi 横躺飘着（轻浮动），下半 FOR CREATORS / Start creating / 一句 / 两个 CTA，底居中小鼠标；scrub 显现（--b-lumiA）再淡出（--b-startOut） --- */
.mm-stage { --b-startOut:0; }
.mm-stage[data-state="api"] .mm-lumiscreen { opacity:calc(1 - var(--b-startOut)); }
.mm-stage[data-state="api"].is-start-live .mm-start-cta a { pointer-events:auto; }
.mm-lumi-art { left:50%; top:5vh; bottom:auto; width:auto; height:46vh; max-width:none; opacity:var(--b-lumiA); translate:-50% calc((1 - var(--b-lumiA)) * 8vh); animation:mm-start-float 6s ease-in-out infinite; }
@keyframes mm-start-float { 0%, 100% { margin-top:0; } 50% { margin-top:-1.4vh; } }
.mm-start { position:absolute; left:50%; top:56vh; width:min(88vw,720px); translate:-50% calc((1 - var(--b-lumiA)) * 18px); opacity:calc(var(--b-lumiA) * var(--b-lumiA)); text-align:center; color:#fff; font-family:var(--font); }
.mm-start-eyebrow { margin:0 0 18px; font:700 11px/1 var(--mono); letter-spacing:.16em; text-transform:uppercase; opacity:.8; }
.mm-start-h { margin:0; font-size:clamp(44px,5.4vw,84px); font-weight:800; line-height:.92; letter-spacing:-.05em; color:#fff; }
.mm-start-line { margin:20px 0 0; font-size:clamp(16px,1.35vw,21px); line-height:1.4; opacity:.88; }
.mm-start-cta { display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:14px 26px; margin-top:30px; }
.mm-start-cta a { pointer-events:none; }
.mm-start-btn { display:inline-flex; align-items:center; min-height:50px; padding:0 28px; border-radius:999px; background:#fff; color:#7180ff; font-size:15px; font-weight:700; text-decoration:none; transition:transform .25s var(--ease), background .2s ease; }
.mm-start-btn:hover { transform:translateY(-2px); background:#8f9bff; }
.mm-start-link { color:#fff; font-size:15px; font-weight:600; text-decoration:underline; text-underline-offset:5px; text-decoration-color:rgba(255,255,255,.45); transition:text-decoration-color .2s ease; }
.mm-start-link:hover { text-decoration-color:#fff; }
.bocchi-scroll-cue.is-start { position:absolute; opacity:var(--b-lumiA); }
html[data-lang="ja"] .mm-start { font-family:"Noto Sans JP",var(--nc1-font,Inter,sans-serif); }
html[data-lang="ja"] .mm-start-h { font-size:clamp(38px,4.6vw,72px); line-height:1.15; letter-spacing:-.02em; }

/* --- 4. HOW YOU SHIP：r9b 照 kit 原样 —— 巨字升起停住，三张玻璃卡飞进叠上（.mm-stack 样式仍在上面 r8 段 + 文件尾 kit 段），API 段直接接在后面 --- */

@media (max-width:1024px) {
  .mm-lumi-art { left:50%; top:calc(clamp(68px,5vw,88px) + 8vh); height:36vh; translate:-50% calc((1 - var(--b-lumiA)) * 8vh); }
  .mm-start { top:60vh; }
  .mm-run .mm-catch { font-size:3.8vw; } .mm-run .mm-sub { font-size:1.9vw; }
  .mm-run .mm-live-row, .mm-run .mm-l2 .mm-live-row { left:7vw; right:auto; max-width:82vw; }
}
@media (max-width:700px) {
  .mm-lumi-art { top:11vh; height:30vh; }
  .mm-start { top:46vh; width:88vw; }
  .mm-start-h { font-size:12vw; }
  .mm-run .mm-catch { font-size:6.2vw; } .mm-run .mm-sub { font-size:3.2vw; }
  .bocchi-screen-meta span { height:26px; padding:0 10px; }
}
@media (prefers-reduced-motion:reduce) { .mm-lumi-art { animation:none; } }

/* --- 5. nf = neuralflowtemplate.webflow.io/home-pages/home-v2 · 值全部从他家页面在无头 Chrome 里读 computed style（1440 / 990 / 767 / 479）：
   body                       16px / 24px / 500 / letter-spacing -0.54px
   section.section            padding 160 / 160（990: 120 / 120 · 767: 80 / 80 · 479: 70 / 70）；.bottom-medium padding-bottom 100（767: 60 · 479: 50）
   .container-default         max-width 1313 + padding 24（990: 20 · 767/479: max-width 600 + padding 16）
   .mg-bottom-large           40（767/479: 36）；.title-grid auto auto · gap 24 · space-between · center（479: 1 col 居中）
   .subtitle                  16px / 20px / 600 / -0.54px / uppercase · margin-bottom 10（767/479: 14px / 17.5px · mb 8）
   h2.display-9               58px / 1.115em (64.67px) / 600 / -2.16px（990: 48 · 767: 34 · 479: 30）
   .primary-button            padding 12 24 · 16px / 20px / 500 · gap 8 · radius 300 · 高 46（≤767: padding 12 20）；.item-icon-right max-width 14（14×6 箭头）
   .accordion-item-wrapper._03  padding 24 / 24 · grid 1fr 1fr · gap 24 / 20 · border-top+bottom 1px · margin-bottom -1（990: col-gap 20 · 767/479: padding 32 / 32 · 1 col · gap 14）
   .accordio-body-flex        flex column · space-between · row-gap 40（990: 24 · max-width 436 · 767: 16 · max-width 490 · padding-right 54 · 479: 8）
   h3.display-7（行标题）      32px / 40px / 600 / -1.08px（990: 30 / 37.5 · ≤767: 24 / 30）
   .mg-top-4x-extra-small     8（≤767: 4）；.inner-container._430px 430；p 16px / 24px / 500 / -0.54px
   .display-6（01/ 序号）      26px / 32.5px / 600 / -0.9px（≤767: 22 / 27.5）；≤990 order -9999（跳到标题上方）
   .grid-2-columns._1fr-auto  1fr 44px · col-gap 44（990: 24 · ≤767: 1 col · gap 14）
   .image-wrapper.br-small    radius 24（990: 20 · 767: 12 · 479: 6）；1440 图槽 533 × 194
   .secondary-button-icon     44 × 44 · radius 300 · 竖向居中于图槽（≤767: 40 × 40 · absolute top 24 right 0）
   .bg-section-secondary      padding 140 / 140 · radius 64（990: 120 · 54 · 767: 80 · 28 · 479: 70 · 16）；标题组 mb 40（≤767: 8）
   grid auto-1-fr             300px 1fr · gap 24（≤767: 1 col · gap 32）；p 16 / 24 max 300；.stat-grid-col mt 40 · column · gap 40（990: gap 24 · ≤767: mt 32 · row · gap 16 · 居中）
   .display-4（stat 标签）      20px / 25px / 500 / -0.6px（≤767: 18 / 22.5）
   大图 .image-wrapper          radius 32 · 941 × 466（990: 24 · 767: 16 · 479: 8）；.card-inside-image max-width 306 · radius 24 · inset 30 30 auto auto
                              （990: max-width 60% · bottom 16 right 16 · radius 20 · 767: static · width 42% · margin-left 16 · radius 12 · 479: width 100% · mt 24 · radius 6）
   benefits .grid-3-columns   403 × 3 · gap 28 / 60（≤990: 1 col · row-gap 20 · 卡变 图左 文右 · row-gap 8 · 479: 1 col · 图在最后 mt 16 · row-gap 32）
   .display-5（卡序号）        24px / 30px / 600 / -0.72px（≤767: 20 / 25）；卡 .display-6 标题 26 / 32.5（≤767: 22 / 27.5）；p mt 8（≤767: 4）· inner 320
   .cta-section.v2            padding 207 / 207 · radius 64（990: 120 · 54 · 767: 80 · 28 · 479: 70 · 16）；inner 750 居中；p mt 12（≤767: 8）；按钮组 mt 18 · gap 14 / 8
   .secondary-button（cta）    padding 12 24 · 16px / 20px / 500 / -0.54px · uppercase · radius 300 · 高 46（≤767: padding 12 20）
   只换：字体（我们的 --nc1-font）、颜色（淡紫地 #8390ff / 白 tile / 紫标题 #7180ff / 墨正文 #171331 / 紫带）、实线发丝 → 1.5px 虚线、去阴影去描边。--- */
.nf { position:relative; overflow:clip; background:#8390ff; color:#171331; font-family:var(--nc1-font,Inter,sans-serif); font-size:16px; line-height:24px; font-weight:500; letter-spacing:-.54px; }
.nf .aw-arc { opacity:.9; }
.nf > section { position:relative; z-index:1; }
.nf h2, .nf h3, .nf p { margin:0; }
.nf-section { padding-top:160px; padding-bottom:160px; }
.nf-section.nf-bottom-medium { padding-bottom:100px; }
.nf-container { max-width:1313px; padding-right:24px; padding-left:24px; margin-left:auto; margin-right:auto; }
.nf-mg-bottom-large { margin-bottom:40px; }
.nf-mg-bottom-10 { margin-bottom:10px; }
.nf-mg-top-8 { margin-top:8px; }
.nf-mg-top-12 { margin-top:12px; }
.nf-mg-top-18 { margin-top:18px; }
.nf-title-grid { display:grid; grid-column-gap:24px; grid-row-gap:24px; grid-template-columns:auto auto; justify-content:space-between; align-items:center; }
.nf-title-grid > .nf-buttons-row { align-self:end; } /* 他家按钮 w-node 贴标题组底边（1440 实测 top 48 = 95 - 46 - 1） */
.nf-subtitle { font-size:16px; line-height:20px; font-weight:600; letter-spacing:-.54px; text-transform:uppercase; color:#7180ff; }
.nf-subtitle::before { content:"/ "; } .nf-subtitle::after { content:" /"; }
.nf-subtitle.nf-center { text-align:center; }
.nf-subtitle.nf-light { color:#fff; }
.nf-display-9 { color:#7180ff; font-size:58px; line-height:1.115em; letter-spacing:-2.16px; font-weight:600; }
.nf-display-7 { color:#7180ff; font-size:32px; line-height:1.25em; letter-spacing:-1.08px; font-weight:600; }
.nf-display-6 { font-size:26px; line-height:1.25em; letter-spacing:-.9px; }
.nf-display-5 { font-size:24px; line-height:1.25em; letter-spacing:-.72px; }
.nf-display-4 { font-size:20px; line-height:1.25em; letter-spacing:-.6px; }
.nf-strong { font-weight:600; }
.nf-mid { font-weight:500; }
.nf-text-titles, h3.nf-display-6 { color:#7180ff; }
.nf-text-700 { color:rgba(23,19,49,.8); }
.nf-text-light { color:#fff; }
.nf-text-center { text-align:center; }
.nf-text-left { text-align:left; }
.nf-inner-300 { max-width:300px; } .nf-inner-320 { max-width:320px; } .nf-inner-430 { max-width:430px; } .nf-inner-590 { max-width:590px; } .nf-inner-750 { max-width:750px; } .nf-inner-800 { max-width:800px; } .nf-inner-835 { max-width:835px; }
.nf-center { margin-left:auto; margin-right:auto; }
.nf-wh100 { width:100%; height:100%; }
.nf-height-100 { height:100%; }
.nf-position-relative { position:relative; }
.nf-z-index-1 { position:relative; z-index:1; }
.nf-flex-vertical { display:flex; flex-direction:column; align-items:stretch; }
.nf-space-between { justify-content:space-between; }
/* 按钮（IX2：主按钮 hover 箭头 +3px 500ms ease · 回 300ms；次按钮 hover .button-bg 0 → 100% outQuart 500ms · 回 outExpo；两者 scale3d(.97,.97,1.01) · color .3s） */
.nf-buttons-row { display:flex; flex-flow:wrap; justify-content:center; align-items:center; grid-column-gap:14px; grid-row-gap:8px; }
.nf-buttons-row.nf-left { justify-content:flex-start; }
.nf-primary-button, .nf-secondary-button { position:relative; display:flex; border:1px solid transparent; justify-content:center; align-items:center; grid-column-gap:8px; padding:12px 24px; border-radius:300px; font-size:16px; line-height:20px; font-weight:500; letter-spacing:-.54px; text-align:center; text-decoration:none; overflow:hidden; transform-style:preserve-3d; transition:color .3s, transform .3s; }
.nf-primary-button { background:#7180ff; color:#fff; }
.nf-primary-button:hover { color:#fff; transform:scale3d(.97,.97,1.01); }
.nf-secondary-button { background:#fff; color:#7180ff; }
.nf-secondary-button:hover { color:#fff; transform:scale3d(.97,.97,1.01); }
.nf-secondary-button.nf-dark { background:rgba(255,255,255,.16); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); color:#fff; text-transform:uppercase; }
.nf-secondary-button.nf-dark:hover { color:#7180ff; }
.nf-btn-text { position:relative; z-index:1; }
.nf-button-bg { position:absolute; inset:0; width:0; display:flex; overflow:hidden; background:#7180ff; transition:width .5s cubic-bezier(.19,1,.22,1); }
.nf-secondary-button.nf-dark .nf-button-bg { background:#fff; }
.nf-secondary-button:hover .nf-button-bg { width:100%; transition:width .5s cubic-bezier(.165,.84,.44,1); }
.nf-item-icon-right { position:relative; z-index:1; max-width:14px; transition:transform .3s ease; }
.nf-primary-button:hover .nf-item-icon-right { transform:translate3d(3px,0,0); transition:transform .5s ease; }
.nf-arrow-wrapper { position:relative; padding:2px 0; }
.nf-arrow-line { width:100%; min-width:14px; height:2px; background:#fff; }
.nf-arrow-head-top, .nf-arrow-head-bottom { position:absolute; right:-3px; width:9px; height:2px; background:#fff; }
.nf-arrow-head-top { top:-.5px; transform:rotate(42deg); }
.nf-arrow-head-bottom { bottom:-.5px; transform:rotate(-42deg); }
/* 行 = accordion-item-wrapper._03（hover：整行 +3px · 标题变浅 · 图 1.025 · 圆箭头填色，300ms ease） */
.nf-accordion-item { position:relative; display:grid; grid-template-columns:1fr 1fr; grid-column-gap:24px; grid-row-gap:20px; justify-content:space-between; align-items:center; padding:24px 0; margin-bottom:-1px; border-top:1px dashed rgba(113,128,255,.5); border-bottom:1px dashed rgba(113,128,255,.5); color:inherit; text-decoration:none; cursor:pointer; transform-style:preserve-3d; transition:transform .3s; }
.nf-accordion-item:hover { transform:translate3d(3px,0,.01px); }
.nf-accordio-body { display:flex; flex-flow:column; justify-content:space-between; grid-row-gap:40px; overflow:hidden; }
.nf-accordion-heading { display:flex; align-items:center; grid-column-gap:10px; }
.nf-heading-title { transition:color .3s ease; }
.nf-accordion-item:hover .nf-heading-title { color:#aab3ff; }
.nf-grid-2 { display:grid; grid-template-columns:1fr 1fr; grid-column-gap:24px; grid-row-gap:24px; align-items:start; }
.nf-grid-2.nf-1fr-auto { grid-template-columns:1fr 44px; grid-column-gap:44px; align-items:start; }
.nf-grid-2.nf-auto-1fr { grid-template-columns:auto 1fr; }
.nf-image-wrapper { position:relative; overflow:hidden; border-radius:32px; }
.nf-image-wrapper.nf-br-small { border-radius:24px; }
.nf-image { aspect-ratio:533 / 194; transition:transform .3s ease; } /* 他家图槽 1440 = 533 × 194，按比例缩 */
.nf-accordion-item:hover .nf-image { transform:scale3d(1.025,1.025,1.01); }
.nf-image .api-code { position:absolute; inset:0; overflow:auto; padding:14px 18px; border-radius:0; font-size:11px; line-height:1.5; } /* 代码坐进图槽，长的在槽里滚 */
.nf-arrow-right-wrapper { align-self:center; }
.nf-secondary-button-icon { display:flex; justify-content:center; align-items:center; width:44px; min-width:44px; height:44px; min-height:44px; border-radius:300px; background:#fff; color:#7180ff; font-size:16px; line-height:1.115em; transition:transform .3s, background-color .3s ease, color .3s ease; }
.nf-secondary-button-icon svg { width:16px; height:16px; display:block; }
.nf-accordion-item:hover .nf-secondary-button-icon { background:#7180ff; color:#fff; }
/* 次级圆角段 = bg-section-secondary.br-extra-large.top-bottom-extra-large */
.nf-bg-secondary { background:#fff; }
.nf-br-extra-large { border-radius:64px; }
.nf-top-bottom-extra-large { padding-top:140px; padding-bottom:140px; }
.nf-stat-grid-col { display:flex; flex-flow:column; grid-row-gap:40px; margin-top:40px; }
.nf-stat-sub { margin-top:0; max-width:300px; font-size:16px; line-height:24px; color:rgba(23,19,49,.8); }
.nf-big { display:grid; align-items:center; justify-items:start; aspect-ratio:835 / 598; padding:40px; background:#8390ff; } /* 他家大图 835 × 598；对话卡居中偏左填满图槽 */
.nf-grid-2.nf-auto-1fr > div:first-child { align-self:stretch; } /* 他家左列 w-node 撑满行高，stat 贴底 */
.nf-big .api-ill { width:62%; padding:0; background:transparent; }
.nf-big .api-turn + .api-turn { margin-top:18px; }
.nf-big .api-turn { gap:8px; }
.nf-agent-row { display:flex; align-items:flex-end; gap:14px; }
.nf-bust { flex:none; width:88px; height:88px; border-radius:50%; object-fit:cover; object-position:50% 4%; background:#fff; }
.nf-big .api-talk { padding-right:0; }
.nf-big .api-turn p { max-width:none; padding:14px 18px; border-radius:16px; background:#fff; font-size:18px; line-height:1.45; }
.nf-big .api-turn.is-agent p { background:#7180ff; color:#fff; }
.nf-big .api-turn.is-agent .api-chip { background:#fff; }
.nf-card-inside-image { position:absolute; inset:30px 30px auto auto; max-width:306px; overflow:hidden; border-radius:24px; background:#fff; padding:20px; }
.nf-cii-head { margin-bottom:12px; font-size:16px; line-height:20px; font-weight:600; color:#171331; }
.nf-cii-row { display:flex; align-items:flex-start; gap:12px; }
.nf-cii-row img { flex:none; width:44px; height:44px; border-radius:50%; object-fit:cover; object-position:50% 4%; background:#8390ff; }
.nf-cii-row p { margin:8px 0 0; font-size:14px; line-height:20px; color:rgba(23,19,49,.8); }
/* benefits = grid-3-columns.gap-col-28px-row-60px · center-image-grid（row-gap 20） */
.nf-grid-3 { display:grid; grid-template-columns:1fr 1fr 1fr; grid-column-gap:28px; grid-row-gap:60px; }
.nf-center-image-grid { display:grid; grid-template-columns:1fr; grid-row-gap:20px; }
.nf-tile { display:flex; align-items:center; aspect-ratio:403 / 350; padding:24px; background:#fff; } /* 他家卡图 403 × 350 */
.nf-tile .api-ill { width:100%; padding:0; background:transparent; }
.nf-tile .api-price { min-height:200px; }
.nf-tile .api-tiles div { min-width:0; }
/* cta = cta-section.v2（黑 → 紫；按钮 = 透白玻璃药丸，大写） */
.nf-cta-section { position:relative; overflow:hidden; border-radius:64px; padding-top:207px; padding-bottom:207px; background:#7180ff; color:#fff; }
.nf-cta-section p { color:rgba(255,255,255,.85); }
/* 进场 = IX2 SCROLL_INTO_VIEW：opacity .01 → 1 + y 10% → 0，500ms ease，delay = data-nf-delay */
[data-nf] { opacity:0; transform:translate3d(0,10%,0); }
[data-nf].is-in { opacity:1; transform:none; transition:opacity .5s ease var(--nf-d,200ms), transform .5s ease var(--nf-d,200ms); }
@media (prefers-reduced-motion:reduce) { [data-nf] { opacity:1; transform:none; transition:none; } }
/* JA：只换字体家族，尺寸不动 */
html[data-lang="ja"] .nf { letter-spacing:0; }
html[data-lang="ja"] .nf-display-9 { line-height:1.2; letter-spacing:-.02em; }
html[data-lang="ja"] .nf-display-7 { line-height:1.3; letter-spacing:-.01em; }
html[data-lang="ja"] .nf-display-6, html[data-lang="ja"] .nf-display-5, html[data-lang="ja"] .nf-display-4, html[data-lang="ja"] .nf-subtitle { letter-spacing:0; }
/* 断点 = 他家 991 / 767 / 479，值 = 在 990 / 767 / 479 读到的 computed */
@media (max-width:991px) {
  .nf-section { padding-top:120px; padding-bottom:120px; }
  .nf-container { padding-left:20px; padding-right:20px; }
  .nf-display-9 { font-size:48px; }
  .nf-display-7 { font-size:30px; }
  .nf-accordion-item { grid-column-gap:20px; grid-row-gap:20px; }
  .nf-accordio-body { max-width:436px; grid-row-gap:24px; }
  .nf-accordio-body .nf-display-6.nf-text-titles { order:-9999; }
  .nf-grid-2.nf-1fr-auto { grid-column-gap:24px; }
  .nf-image-wrapper.nf-br-small { border-radius:20px; }
  .nf-image-wrapper { border-radius:24px; }
  .nf-br-extra-large { border-radius:54px; }
  .nf-top-bottom-extra-large { padding-top:120px; padding-bottom:120px; }
  .nf-stat-grid-col { grid-row-gap:24px; }
  .nf-card-inside-image { max-width:60%; top:auto; bottom:16px; right:16px; border-radius:20px; }
  .nf-grid-3 { grid-template-columns:1fr; grid-row-gap:20px; }
  .nf-center-image-grid { grid-template-columns:1fr 1fr; grid-template-areas:"img idx" "img title" "img ."; grid-row-gap:8px; grid-column-gap:20px; align-content:start; }
  .nf-center-image-grid > .nf-text-left { grid-area:idx; }
  .nf-center-image-grid > .nf-tile { grid-area:img; align-self:start; }
  .nf-center-image-grid > .nf-inner-320 { grid-area:title; }
  .nf-cta-section { padding-top:120px; padding-bottom:120px; border-radius:54px; }
}
@media (max-width:767px) {
  .nf-section { padding-top:80px; padding-bottom:80px; }
  .nf-section.nf-bottom-medium { padding-bottom:60px; }
  .nf-container { max-width:600px; padding-left:16px; padding-right:16px; }
  .nf-mg-bottom-large { margin-bottom:36px; }
  .nf-mg-bottom-10 { margin-bottom:8px; }
  .nf-mg-top-8 { margin-top:4px; }
  .nf-mg-top-12 { margin-top:8px; }
  .nf-subtitle { font-size:14px; line-height:17.5px; }
  .nf-display-9 { font-size:34px; }
  .nf-display-7 { font-size:24px; }
  .nf-display-6 { font-size:22px; }
  .nf-display-5 { font-size:20px; }
  .nf-display-4 { font-size:18px; }
  .nf-buttons-row { grid-column-gap:8px; grid-row-gap:8px; }
  .nf-primary-button, .nf-secondary-button { padding:12px 20px; }
  .nf-accordion-item { padding:32px 0; grid-template-columns:1fr; grid-column-gap:14px; grid-row-gap:14px; }
  .nf-accordio-body { max-width:490px; padding-right:54px; grid-row-gap:16px; }
  .nf-arrow-right-wrapper { position:absolute; top:24px; right:0; }
  .nf-grid-2.nf-1fr-auto { grid-template-columns:1fr; grid-column-gap:14px; grid-row-gap:14px; }
  .nf-image-wrapper.nf-br-small { border-radius:12px; }
  .nf-image-wrapper { border-radius:16px; }
  .nf-secondary-button-icon { width:40px; min-width:40px; height:40px; min-height:40px; }
  .nf-br-extra-large { border-radius:28px; }
  .nf-top-bottom-extra-large { padding-top:80px; padding-bottom:80px; }
  .nf-bg-secondary .nf-mg-bottom-large:first-child { margin-bottom:8px; }
  .nf-grid-2.nf-auto-1fr { grid-template-columns:1fr; grid-column-gap:32px; grid-row-gap:32px; }
  .nf-inner-300 { max-width:none; }
  .nf-stat-grid-col { flex-flow:row; justify-content:center; grid-column-gap:16px; grid-row-gap:16px; margin-top:32px; text-align:center; }
  .nf-stat-sub { margin-left:auto; margin-right:auto; }
  .nf-position-relative.nf-wh100 { display:flex; }
  .nf-card-inside-image { position:static; flex:none; width:42%; max-width:306px; margin-left:16px; border-radius:12px; }
  .nf-big { aspect-ratio:auto; min-height:226px; padding:20px; }
  .nf-big .api-ill { width:100%; }
  .nf-big .api-turn p { font-size:15px; padding:10px 12px; }
  .nf-bust { width:56px; height:56px; }
  .nf-center-image-grid { grid-column-gap:14px; }
  .nf-cta-section { padding-top:80px; padding-bottom:80px; border-radius:28px; }
}
@media (max-width:479px) {
  .nf-section { padding-top:70px; padding-bottom:70px; }
  .nf-section.nf-bottom-medium { padding-bottom:50px; }
  .nf-display-9 { font-size:30px; }
  .nf-title-grid { grid-template-columns:1fr; justify-items:center; text-align:center; }
  .nf-title-grid .nf-buttons-row.nf-left { justify-content:center; }
  .nf-accordio-body { grid-row-gap:8px; }
  .nf-image-wrapper.nf-br-small { border-radius:6px; }
  .nf-image-wrapper { border-radius:8px; }
  .nf-br-extra-large { border-radius:16px; }
  .nf-top-bottom-extra-large { padding-top:70px; padding-bottom:70px; }
  .nf-position-relative.nf-wh100 { flex-direction:column; }
  .nf-card-inside-image { width:100%; max-width:none; margin:24px 0 0; border-radius:6px; }
  .nf-grid-3 { grid-row-gap:32px; }
  .nf-center-image-grid { grid-template-columns:1fr; grid-template-areas:"idx" "title" "img"; grid-row-gap:8px; }
  .nf-center-image-grid > .nf-tile { margin-top:16px; min-height:0; }
  .nf-tile .api-next { grid-template-columns:1fr; justify-items:start; }
  .nf-tile .api-hair { width:100%; }
  .nf-tile .api-tiles { width:100%; }
  .nf-cta-section { padding-top:70px; padding-bottom:70px; border-radius:16px; }
}
/* r9 校准：三态图版再贴近文案（1440 下正文右缘到图版左缘 ≈ 6vw）；Start 页 Lumi 再横一档；对话卡气泡放大 */
@media (min-width:1025px) { .offer-visual { width:min(62vw,1120px); } .mm-run .mm-sub { font-size:1.22vw; } }
@media (min-width:1025px) { .mm-lumi-art { top:calc(clamp(68px,5vw,88px) + 8vh); height:40vh; } .mm-start { top:61vh; } } /* 手最高点在导航下 8vh */


/* ======================================================================
   0904 lill · r10 · 她：「一是圆角，二是整个都用毛玻璃：整个毛玻璃 cover 紫色的背景，毛玻璃稍微浅一点。One Agent ID 三个不强调了，
   直接 Our advantages，要讲 AI native。footer / Q&A 都要弄。不要浅紫，用深紫和它的变化；水印那个浅紫合适，绝不是带白的。」
   → 全页只剩三档紫：#7180ff 地 / #8390ff 水印档 / #8f9bff 再浅一档（弧、纹）。开发者半页 = 紫地上的大圆角玻璃板：
   板 rgba(255,255,255,.22) + blur 22（比舞台卡 .16 浅一档），圆角 = 他家 br-extra-large 64，内缩 = 他家容器边距；
   板内两档玻璃：板 .22 / 卡与 CTA 带 .16。字白、正文白 .85、眉题白 .7、发丝白 .3 虚线、代码面板留墨、主钮白底紫字、次钮玻璃。
   ====================================================================== */
.nf { background:#7180ff; color:#fff; padding:0 0 clamp(80px,10vh,140px); }
.nf .aw-arc { opacity:1; }
.aw-arcs { --aw-field-hi:#8390ff; }
/* 玻璃板：max-width 1313 + 容器边距（1440 = 63.5 / 990 = 20 / ≤767 = 16），圆角 64 / 54 / 28 / 16，内 padding 64 / 40 / 24 / 16 */
.nf-sheet { position:relative; z-index:1; box-sizing:border-box; max-width:1313px; margin:0 24px; padding:160px 64px; border-radius:64px; background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }
@media (min-width:1362px) { .nf-sheet { margin-left:auto; margin-right:auto; } }
.nf-sheet + .nf-sheet { margin-top:clamp(40px,6vh,80px); }
.nf > .nf-sheet:first-of-type { margin-top:clamp(80px,12vh,160px); }
.nf-adv { padding-top:100px; }
/* 字：白 */
.nf-display-9, .nf-display-7, .nf-text-titles, h3.nf-display-6, .nf-heading-title { color:#fff; }
.nf p, .nf-text-700, .nf-stat-sub { color:rgba(255,255,255,.85); }
.nf-subtitle { color:rgba(255,255,255,.7); }
.nf-subtitle.nf-plain::before, .nf-subtitle.nf-plain::after { content:none; }
/* 钮：主 = 白底紫字（箭头紫）；次 = .16 玻璃白字，hover 白底擦满紫字 */
.nf-primary-button { background:#fff; color:#7180ff; }
.nf-primary-button:hover { color:#7180ff; }
.nf-arrow-line, .nf-arrow-head-top, .nf-arrow-head-bottom { background:#7180ff; }
.nf-secondary-button, .nf-secondary-button.nf-dark { background:rgba(255,255,255,.16); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); color:#fff; }
.nf-secondary-button:hover, .nf-secondary-button.nf-dark:hover { color:#7180ff; }
.nf-button-bg, .nf-secondary-button.nf-dark .nf-button-bg { background:#fff; }
.nf-secondary-button-icon { background:rgba(255,255,255,.16); color:#fff; }
.nf-accordion-item:hover .nf-secondary-button-icon { background:#fff; color:#7180ff; }
/* 卡 tile = .16 玻璃 */
.nf-tile { background:rgba(255,255,255,.16); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); }
.nf-image-wrapper.nf-tile { overflow:hidden; }
/* mock 全部翻白：chip = 透白 .16 无 blur（玻璃只两档，chip 不再加一档），强调块 = 白底紫字 */
.nf .api-ill { color:#fff; }
.nf .api-mono, .nf .api-field { color:rgba(255,255,255,.7); }
.nf .api-chip { background:rgba(255,255,255,.16); color:#fff; }
.nf .api-chip.is-lit { background:#fff; color:#7180ff; }
.nf .api-turn p { background:rgba(255,255,255,.16); color:#fff; max-width:none; font-size:15px; line-height:1.45; }
.nf .api-turn.is-agent p { background:#fff; color:#7180ff; }
.nf .api-face img, .nf .api-thumb img, .nf-sdk-stage img { background:rgba(255,255,255,.16); }
.nf .api-price-label { color:rgba(255,255,255,.8); }
.nf .api-bars i { background:rgba(255,255,255,.16); }
.nf .api-bars i span { color:#fff; }
.nf .api-bars .b-both { background:#fff; }
.nf .api-bars .b-both span { color:#7180ff; }
.nf .api-rcard { background:rgba(255,255,255,.16); }
.nf .api-rcard p { color:#fff; }
.nf .api-rcard p.is-muted { color:rgba(255,255,255,.6); }
.nf .api-rcard p.is-diff { background:#fff; color:#7180ff; }
.nf .api-rfoot { border-top-color:rgba(255,255,255,.3); color:rgba(255,255,255,.85); }
.nf .api-rfoot b { background:#fff; color:#7180ff; }
.nf .api-hair { border-top-color:rgba(255,255,255,.4); }
.nf .api-tiles div { background:rgba(255,255,255,.16); }
.nf .api-tiles div .api-mono { color:#fff; }
.nf .api-next { position:relative; }
.nf-next-tag { position:absolute; right:0; top:0; }
.nf .api-talk.nf-talk3 { padding-right:clamp(70px,6vw,90px); }
.nf .api-face { right:0; top:0; }
.nf-langs { display:flex; gap:6px; margin-top:2px; }
/* 01 AI native：FACE / VOICE 两 chip 同一个 happy → 发丝 → LIVE → ASR / LLM / TTS（无数字、无波形） */
.nf-ai { display:grid; justify-items:center; gap:12px; width:100%; }
.nf-ai-row { display:flex; gap:14px; }
.nf-ai-chip { display:flex; align-items:center; gap:10px; padding:10px 14px; border-radius:12px; background:rgba(255,255,255,.16); }
.nf-ai-chip .api-chip { background:#fff; color:#7180ff; }
.nf-ai-hair { width:1.5px; height:22px; border-left:1.5px dashed rgba(255,255,255,.5); }
.nf-ai-live .api-mono { display:inline-block; padding:8px 14px; border-radius:999px; background:#fff; color:#7180ff; font-size:10px; letter-spacing:.24em; }
.nf-ai-lat { display:flex; gap:18px; margin-top:4px; }
/* 04 Avatar in the SDK：mono 一行 → 发丝 → 舞台（脸 + 四个标签） */
.nf-sdk { display:grid; grid-template-columns:auto auto 1fr; align-items:center; gap:14px; width:100%; }
.nf-sdk-code { font:600 12px/1.4 var(--p3-mono); color:#fff; white-space:nowrap; }
.nf-sdk-hair { height:1.5px; min-width:22px; border-top:1.5px dashed rgba(255,255,255,.5); }
.nf-sdk-stage { display:grid; justify-items:center; gap:10px; padding:14px 12px; border-radius:14px; background:rgba(255,255,255,.16); }
.nf-sdk-stage img { width:64px; height:64px; border-radius:50%; object-fit:cover; object-position:50% 4%; }
.nf-sdk-labels { display:grid; grid-template-columns:1fr 1fr; gap:6px 12px; justify-items:center; }
.nf-sdk-labels .api-mono { font-size:8px; letter-spacing:.16em; }
/* CTA 带（他家 cta-section）= .16 玻璃在板内 */
.nf-cta-section { margin-top:160px; background:rgba(255,255,255,.16); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); }
/* FAQ：眉题 + H2 左、手风琴右（他家 accordion-item-wrapper._01：padding 32 / 32 · auto 1fr auto · gap 20 · 底线）；一次只开一个，chevron 转 90°，高度用 grid 0fr → 1fr 补间 */
.nf-faq-grid { display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); grid-column-gap:64px; grid-row-gap:40px; align-items:start; }
.nf-faq-head { position:sticky; top:120px; }
.nf-faq-more { margin-top:32px; font-size:16px; line-height:24px; }
.nf-acc { border-bottom:1px dashed rgba(255,255,255,.3); }
.nf-acc:first-child { border-top:1px dashed rgba(255,255,255,.3); }
.nf-acc-btn { display:grid; grid-template-columns:auto 1fr auto; grid-column-gap:20px; grid-row-gap:20px; align-items:start; width:100%; padding:32px 0; margin:0; border:0; background:none; color:#fff; font:inherit; text-align:left; cursor:pointer; transform-style:preserve-3d; transition:transform .3s; }
.nf-acc-btn:hover { transform:translate3d(3px,0,.01px); }
.nf-acc-btn:focus-visible { outline:2px solid #fff; outline-offset:4px; border-radius:8px; }
.nf-acc-btn .nf-display-6 { min-width:3em; }
.nf-acc-q { margin:0; font-size:26px; line-height:1.25em; letter-spacing:-.9px; font-weight:600; transition:color .3s ease; }
.nf-acc-btn:hover .nf-acc-q { color:#fff; }
.nf-acc-btn .nf-secondary-button-icon { transition:transform .3s ease, background-color .3s ease, color .3s ease; }
.nf-acc-btn:hover .nf-secondary-button-icon, .nf-acc.is-open .nf-secondary-button-icon { background:#fff; color:#7180ff; }
.nf-acc.is-open .nf-secondary-button-icon { transform:rotate(90deg); }
.nf-acc-a { display:grid; grid-template-rows:0fr; transition:grid-template-rows .4s cubic-bezier(.22,1,.36,1); }
.nf-acc-a-in { overflow:hidden; }
.nf-acc-a p { max-width:36em; margin:0; padding:0 0 32px calc(3em + 20px); font-size:16px; line-height:24px; opacity:0; transform:translateY(6px); transition:opacity .3s ease, transform .4s cubic-bezier(.22,1,.36,1); }
.nf-acc.is-open .nf-acc-a { grid-template-rows:1fr; }
.nf-acc.is-open .nf-acc-a p { opacity:1; transform:none; }
/* 链接（他家 .link：16 / 1.25 · color .3s；.mid 500；.accent 深 → 我们白，hover 白 .7） */
.nf-link { color:rgba(255,255,255,.85); font-size:16px; line-height:1.25em; font-weight:500; text-decoration:none; transition:color .3s; }
.nf-link:hover { color:#fff; }
.nf-link.nf-accent { color:#fff; text-decoration:underline; text-underline-offset:4px; text-decoration-color:rgba(255,255,255,.4); }
.nf-link.nf-accent:hover { text-decoration-color:#fff; }
.nf-link.nf-inline { font-size:inherit; line-height:inherit; }
/* 页脚 = 他家 footer-wrapper：padding 100 / 40 · 顶圆角 64 · 玻璃板 .22；top 栅格 auto minmax(613px,1fr) gap 142（≥1440）/ 32 · 底线；底行 padding-top 40 */
body.c2-palmer-page > #p3Foot.nf-footer { display:block!important; position:relative; z-index:10; margin:0 24px; max-width:1313px; box-sizing:border-box; padding:100px 64px 40px; border-radius:64px 64px 0 0; background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); color:#fff; overflow:hidden; }
@media (min-width:1362px) { body.c2-palmer-page > #p3Foot.nf-footer { margin-left:auto; margin-right:auto; } }
body.c2-palmer-page > .bocchi-rebuild ~ .nf-footer-ground { display:block!important; }
.nf-footer .nf-container { max-width:none; padding:0; }
.nf-foot-top { display:grid; grid-template-columns:auto minmax(613px,1fr); grid-column-gap:142px; grid-row-gap:32px; padding-bottom:100px; border-bottom:1px dashed rgba(255,255,255,.3); }
.nf-inner-294 { max-width:294px; }
.nf-inner-745 { max-width:745px; }
.nf-logo-link { display:inline-block; color:#fff; font-size:22px; font-weight:800; letter-spacing:-.03em; text-decoration:none; }
.nf-footer p { margin:0; color:rgba(255,255,255,.85); font-size:16px; line-height:24px; }
.nf-foot-lumi { display:flex; align-items:center; gap:10px; margin-top:24px; }
.nf-foot-lumi img { width:32px; height:32px; border-radius:50%; object-fit:cover; object-position:50% 4%; background:rgba(255,255,255,.16); }
.nf-foot-lumi span { font-size:14px; line-height:20px; color:rgba(255,255,255,.7); }
.nf-footer-menu { display:flex; justify-content:space-between; align-items:stretch; grid-column-gap:24px; grid-row-gap:40px; }
.nf-menu-col { width:100%; min-width:114px; max-width:158px; }
.nf-mg-bottom-small { margin-bottom:18px; }
.nf-list-wrapper { display:flex; flex-direction:column; grid-row-gap:14px; margin:0; padding:0; list-style:none; line-height:1.25em; }
.nf-foot-bottom { display:flex; justify-content:space-between; align-items:center; grid-column-gap:20px; grid-row-gap:20px; padding-top:40px; }
.nf-foot-small { display:flex; align-items:center; gap:24px; }
.nf-footer .p3-foot-lang { background:rgba(255,255,255,.16); }
.nf-footer .p3-foot-lang button.is-on { background:#fff; color:#7180ff; }
/* 页脚下面的紫地 + 舞台旧规则清场 */
.nf-footer .p3-foot-in { display:none; }
html[data-lang="ja"] .nf-acc-q { letter-spacing:0; line-height:1.4; }
html[data-lang="ja"] .nf-sdk-code, html[data-lang="ja"] .nf-ai .api-mono, html[data-lang="ja"] .nf-sdk-labels .api-mono { font-family:var(--p3-mono)!important; }
/* 断点 = 他家 991 / 767 / 479 */
@media (max-width:991px) {
  .nf-sheet { margin:0 20px; padding:120px 40px; border-radius:54px; }
  .nf-adv { padding-top:80px; }
  .nf-cta-section { margin-top:120px; }
  .nf-faq-grid { grid-template-columns:1fr; }
  .nf-faq-head { position:static; }
  body.c2-palmer-page > #p3Foot.nf-footer { margin:0 20px; padding:80px 40px 40px; border-radius:54px 54px 0 0; }
  .nf-foot-top { grid-column-gap:20px; grid-row-gap:20px; grid-template-columns:auto minmax(440px,1fr); }
  .nf-footer-menu { grid-column-gap:20px; max-width:750px; }
  .nf-acc-btn { grid-column-gap:14px; grid-row-gap:16px; }
}
@media (max-width:767px) {
  .nf-sheet { margin:0 16px; padding:80px 24px; border-radius:28px; }
  .nf-adv { padding-top:60px; }
  .nf-cta-section { margin-top:80px; }
  .nf-acc-btn { padding:40px 0; grid-row-gap:14px; }
  .nf-acc-q { font-size:22px; }
  .nf-acc-a p { padding-left:0; }
  body.c2-palmer-page > #p3Foot.nf-footer { margin:0 16px; padding:80px 24px 40px; border-radius:28px 28px 0 0; }
  .nf-foot-top { padding-bottom:80px; grid-column-gap:32px; grid-row-gap:32px; grid-template-columns:auto; }
  .nf-footer-menu { grid-row-gap:32px; flex-wrap:wrap; }
  .nf-menu-col { max-width:none; width:calc(50% - 10px); }
  .nf-list-wrapper { grid-row-gap:10px; }
  .nf-foot-bottom { padding-top:56px; flex-flow:column; text-align:center; grid-row-gap:8px; }
  .nf-sdk { grid-template-columns:1fr; justify-items:start; }
  .nf-sdk-hair { width:100%; }
}
@media (max-width:479px) {
  .nf-sheet { padding:70px 16px; border-radius:16px; }
  .nf-acc-btn { padding:32px 0; grid-template-columns:1fr auto; grid-row-gap:8px; }
  .nf-acc-btn .nf-display-6 { grid-column:1 / -1; min-width:0; }
  body.c2-palmer-page > #p3Foot.nf-footer { padding:70px 16px 40px; border-radius:16px 16px 0 0; }
  .nf-footer-menu { flex-flow:column; }
  .nf-menu-col { width:100%; }
  .nf-foot-small { flex-wrap:wrap; justify-content:center; gap:14px; }
  .nf-ai-row { flex-direction:column; }
}
@media (prefers-reduced-motion:reduce) { .nf-acc-a, .nf-acc-a p, .nf-acc-btn { transition:none; } }
/* r10 校准：页脚顶栅格 gap 照他家 = 32，≥1440 才 142（1024 左栏被挤成 149px）；tile 里的 mono 标签 9 → 10px 好认一点 */
.nf-foot-top { grid-column-gap:32px; }
@media (min-width:1440px) { .nf-foot-top { grid-column-gap:142px; } }
.nf-tile .api-mono { font-size:10px; }

/* ======================================================================
   0904 lill r3 · 她这轮三条：
   1. 舞台三态图版的淡紫底在紫场上「不 make sense」→ 图版改毛玻璃（.22 + blur 22，圆角照旧），画抠成 alpha 放在玻璃上；
      文案块在图版旁的空余区里居中（块本身左对齐）。
   2. Start creating 页照 Moondrop 吉祥物海报：巨字 LUMI 压底 → 戴耳机 Lumi 半身居中 → 前面一条横贯毛玻璃带装文案。
   3. Developer 板：眉题挪到板上方紫地居中、H2 + quickstart 居中；板底改成舞台窗那支紫（#7b89ff，扁平），卡变玻璃；
      暗纹弧连续穿过板边；卡里的 mock 用深紫玻璃 chip + 白字提高可读。
   ====================================================================== */
/* --- 1. 舞台图版 = 玻璃 --- */
.mm-run { --plate-pad:clamp(18px,2vw,30px); --p1w:min(58vw,1040px); --p2w:min(38vw,560px); }
.offer-visual, .offer-visual.is-left, .offer-visual.offer-visual-chibi { display:grid; place-items:center; padding:var(--plate-pad); box-sizing:border-box; background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }
.offer-visual.offer-visual-chibi { right:-1vw; width:var(--p1w); }
.offer-visual.is-left { width:var(--p2w); }
.offer-visual.offer-visual-world { width:var(--p2w); }
.offer-visual > img, .offer-visual.is-left > img, .offer-visual.offer-visual-chibi > img, .offer-visual-world > img { width:100%; height:auto; max-height:calc(100vh - 2 * var(--frame) - 2 * var(--plate-pad) - 14vh); border-radius:0; object-fit:contain; object-position:center; }
.offer-visual.offer-visual-chibi > img { max-height:calc(100vh - 2 * var(--frame) - 2 * var(--plate-pad) - 22vh); }
/* 文案块：在图版旁的空余区（框边 ↔ 图版边）里居中，块内左对齐；列 minmax(0,max-content) 不会被挤出去 */
.mm-run .mm-live-row, .mm-run .mm-l2 .mm-live-row { top:51%; transform:translateY(-48%); max-width:none; display:grid; grid-template-columns:minmax(0,max-content); justify-content:center; justify-items:start; gap:1.3vh; padding:0 2.5vw; box-sizing:border-box; }
.mm-run .mm-l1 .mm-live-row, .mm-run .mm-l3 .mm-live-row { left:var(--frame); right:calc(var(--p1w) - 1vw); }
.mm-run .mm-l2 .mm-live-row { left:calc(3vw + var(--p2w)); right:var(--frame); }
.mm-run .mm-catch .l, .mm-run .mm-sub .l { max-width:100%; }
@media (max-width:1024px) {
  .offer-visual, .offer-visual.is-left, .offer-visual.offer-visual-chibi, .offer-visual.offer-visual-world { left:auto; right:-4vw; width:90vw; padding:clamp(16px,2.4vw,24px); }
  .offer-visual > img, .offer-visual.is-left > img, .offer-visual.offer-visual-chibi > img, .offer-visual-world > img { max-height:40vh; }
  .mm-run .mm-live-row, .mm-run .mm-l1 .mm-live-row, .mm-run .mm-l2 .mm-live-row, .mm-run .mm-l3 .mm-live-row { left:var(--frame); right:var(--frame); top:calc(var(--frame) + 9vh); transform:none; max-width:none; padding:0 6vw; }
}
@media (max-width:700px) {
  .offer-visual, .offer-visual.is-left, .offer-visual.offer-visual-chibi, .offer-visual.offer-visual-world { right:-6vw; width:100vw; }
  .offer-visual > img, .offer-visual.is-left > img, .offer-visual.offer-visual-chibi > img, .offer-visual-world > img { max-height:36vh; }
  .mm-run .mm-live-row, .mm-run .mm-l1 .mm-live-row, .mm-run .mm-l2 .mm-live-row, .mm-run .mm-l3 .mm-live-row { top:calc(var(--frame) + 8vh); padding:0 5vw; }
}

/* --- 2. Start creating = 海报：巨字压底 / 半身居中 / 玻璃带在前 --- */
.mm-lumiscreen { --band-h:22vh; --band-b:clamp(64px,9vh,92px); }
.mm-start-word { position:absolute; z-index:1; left:50%; top:1vh; margin:0; translate:-50% calc((1 - var(--b-lumiA)) * 4vh); font-family:var(--font); font-weight:900; font-size:66vh; line-height:.8; letter-spacing:-.02em; text-transform:uppercase; white-space:nowrap; color:#8390ff; opacity:var(--b-lumiA); pointer-events:none; user-select:none; }
.mm-lumi-art { z-index:2; left:50%; top:auto; bottom:calc(var(--band-b) + 10vh); width:auto; height:72vh; max-width:none; opacity:var(--b-lumiA); translate:-50% calc((1 - var(--b-lumiA)) * 8vh); animation:mm-start-bob 6s ease-in-out infinite; }
@keyframes mm-start-bob { 0%, 100% { margin-bottom:0; } 50% { margin-bottom:1.4vh; } }
.mm-start { z-index:3; left:0; right:0; top:auto; bottom:var(--band-b); width:auto; min-height:var(--band-h); box-sizing:border-box; display:grid; align-items:center; padding:clamp(28px,4vh,44px) clamp(24px,5vw,80px); translate:0 calc((1 - var(--b-lumiA)) * 18px); text-align:left; background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }
.mm-start-in { width:min(100%,1180px); margin:0 auto; display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); align-items:center; gap:24px clamp(32px,5vw,96px); }
.mm-start-lead .mm-start-eyebrow { margin:0 0 14px; }
.mm-start-h { font-size:clamp(40px,4.6vw,68px); line-height:.95; }
.mm-start-side { display:grid; gap:18px; justify-items:start; }
.mm-start-line { margin:0; font-size:clamp(15px,1.2vw,19px); }
.mm-start-cta { margin:0; justify-content:flex-start; }
.mm-start-corner { position:absolute; margin:0; padding:14px 18px; font:700 9px/1 var(--mono); letter-spacing:.24em; text-transform:uppercase; color:rgba(255,255,255,.7); pointer-events:none; }
.mm-start-corner.tl { left:0; top:0; } .mm-start-corner.tr { right:0; top:0; } .mm-start-corner.bl { left:0; bottom:0; } .mm-start-corner.br { right:0; bottom:0; }
html[data-lang="ja"] .mm-start-h { font-size:clamp(34px,4vw,60px); line-height:1.1; }
@media (max-width:1024px) {
  .mm-lumiscreen { --band-b:clamp(56px,8vh,80px); }
  .mm-start-word { top:calc(clamp(68px,5vw,88px) + 2vh); font-size:min(40vw,52vh); }
  .mm-lumi-art { top:auto; bottom:calc(var(--band-b) + 8vh); height:54vh; }
  .mm-start { top:auto; min-height:0; padding:28px 24px; }
  .mm-start-in { grid-template-columns:1fr; gap:16px; }
  .mm-start-corner.tr, .mm-start-corner.bl { display:none; }
}
@media (max-width:700px) {
  .mm-start-word { font-size:min(44vw,40vh); }
  .mm-lumi-art { top:auto; height:46vh; }
  .mm-start { top:auto; width:auto; padding:26px 20px 30px; }
  .mm-start-h { font-size:10vw; }
  .mm-start-lead .mm-start-eyebrow { margin-bottom:10px; }
  .mm-start-corner { padding:10px 12px; }
}
@media (prefers-reduced-motion:reduce) { .mm-lumi-art { animation:none; } }

/* --- 3. Developer 板 --- */
/* 板底 = 舞台窗那支紫（扁平），弧画在板底之上、内容之下：.nf 立 stacking context，板不再 z 1，板底走 ::before z -1，板内一级子元素 z 1 */
.nf { isolation:isolate; }
.nf .aw-arc { z-index:0; opacity:1; }
.nf-sheet { z-index:auto; background:none; -webkit-backdrop-filter:none; backdrop-filter:none; }
.nf-sheet::before { content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit; background:#7b89ff; }
.nf-sheet > * { position:relative; z-index:1; }
/* 眉题出板，紫地上居中；H2 + quickstart 居中，H2 限宽两行 */
.nf-eyebrow-out { position:relative; z-index:1; padding-top:clamp(80px,12vh,160px); margin-bottom:24px; text-align:center; }
.nf-eyebrow-out .nf-subtitle { color:rgba(255,255,255,.8); }
.nf > .nf-sheet:first-of-type { margin-top:0; }
.nf-head-center { display:grid; justify-items:center; gap:28px; text-align:center; }
.nf-head-h { margin:0; max-width:13.2em; text-wrap:balance; }
/* 卡 = 玻璃 .22 */
.nf-tile { background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }
/* mock 可读性：底 chip 一律深紫玻璃（--violet .42）+ 白字，mono 提到 11，发丝 .6；原有白色强调件（LIVE / VOICE + AVATAR / JA EN / diff / PUBLISH）不动 */
.nf .api-chip, .nf-ai-chip, .nf .api-bars i, .nf .api-rcard, .nf .api-tiles div, .nf-sdk-stage, .nf .api-turn p, .nf .api-face img, .nf .api-thumb img, .nf-sdk-stage img { background:rgba(70,83,198,.42); }
.nf .nf-ai-chip .api-chip { background:#fff; color:#7180ff; }
.nf .api-mono, .nf .api-field { color:rgba(255,255,255,.92); }
.nf-tile .api-mono { font-size:11px; }
.nf .api-chip { font-size:9px; padding:6px 9px; }
.nf .api-price-label, .nf .api-rcard p.is-muted, .nf .api-rfoot, .nf .api-tiles small { color:rgba(255,255,255,.92); }
.nf .api-rcard p.is-muted { opacity:.85; }
.nf-ai-hair, .nf-sdk-hair, .nf .api-hair { border-color:rgba(255,255,255,.6); }
.nf .api-rfoot { border-top-color:rgba(255,255,255,.5); }
.nf-sdk-labels .api-mono { font-size:9px; }
@media (max-width:991px) { .nf-eyebrow-out { padding-top:clamp(64px,10vh,120px); } }
@media (max-width:767px) { .nf-eyebrow-out { padding-top:56px; margin-bottom:18px; } .nf-head-center { gap:22px; } }
/* r3 校准：LIVE 白 chip 的字回紫；06 卡 NEXT 标签让开 RIG；SDK 舞台四标签不折行；巨字下压 6vh、半身只压进带 6vh（白裙透过玻璃的糊影收小）；03 玻璃板矮一档让开 NEXT；窗水印描边 .14 → .18，玻璃后面看得见字 */
.nf .nf-ai-live .api-mono { color:#7180ff; }
.nf .api-next { padding-top:26px; }
.nf-sdk-labels { grid-template-columns:auto auto; }
.nf-sdk-labels .api-mono { white-space:nowrap; font-size:8px; }
.mm-start-word { top:6vh; }
.mm-lumi-art { bottom:calc(var(--band-b) + var(--band-h) - 6vh); }
.offer-visual.offer-visual-chibi > img { max-height:calc(100vh - 2 * var(--frame) - 2 * var(--plate-pad) - 26vh); }
.mm-wm { -webkit-text-stroke-color:rgba(255,255,255,.18); }
@media (max-width:1024px) { .mm-lumi-art { bottom:calc(var(--band-b) + 14vh); } }
/* r3 校准 2：窄窗玻璃带顶部让开四角小字；01 卡 FACE / VOICE 两 chip 在 ≤1200 允许折行不再被切 */
@media (max-width:1024px) { .mm-start { padding-top:44px; padding-bottom:36px; } }
@media (max-width:700px) { .mm-start { padding-top:42px; } }
@media (max-width:1200px) { .nf-ai-row { flex-wrap:wrap; justify-content:center; } }
/* r3 校准 3：03 玻璃板在窄窗也只能到 40vh / 36vh（上面那条 -26vh 的写法在 1024 会压到文案） */
@media (max-width:1024px) { .offer-visual.offer-visual-chibi > img { max-height:40vh; } }
@media (max-width:700px) { .offer-visual.offer-visual-chibi > img { max-height:36vh; } }
/* r3 · iris 素材接入：01 = offer-live-v4-alpha.webp，03 = offer-plush-v1-alpha.webp（3:2 画布，左 26% 空白，内容中心在 61.4%）
   → 03 的图按高定尺（--ph），左对齐 + margin-left 把内容中心推到玻璃板中心；耳机 Lumi = lumi-headphones-01.webp（底边直切，藏在带后） */
.offer-visual.offer-visual-chibi { --ph:min(calc((var(--p1w) - 2 * var(--plate-pad)) * .72), calc(86vh - 2 * var(--frame) - 2 * var(--plate-pad))); }
.offer-visual.offer-visual-chibi > img { width:auto; height:var(--ph); max-height:none; max-width:none; justify-self:start; margin-left:calc(50% - var(--ph) * .92); animation:offer-scene-float 7.2s 1.2s ease-in-out infinite; }
@media (max-width:1024px) { .offer-visual.offer-visual-chibi { --ph:40vh; } .offer-visual.offer-visual-chibi > img { height:var(--ph); max-height:none; } }
@media (max-width:700px) { .offer-visual.offer-visual-chibi { --ph:36vh; } .offer-visual.offer-visual-chibi > img { height:var(--ph); max-height:none; } }

/* ======================================================================
   0904 lill r3b
   1. 顶边 5px 粉条 = c1 的 .nc1-preloader 八段粉块（fixed z 300）：boot 完只是 scaleY(0)，合成器仍在画这层，
      和舞台上新加的 backdrop-filter 图层叠一起就在顶边漏出一条 4–5px。修根：is-ready 后过渡结束把整层 visibility:hidden。
   2. Start creating 玻璃带：blur 降到 12（白裙糊影收敛），?band=solid = 平 #8390ff 条对比。
   ====================================================================== */
body.nc1.is-ready .nc1-preloader { visibility:hidden; transition:visibility 0s linear 1.3s; }
.mm-lumiscreen { --band-blur:12px; }
.mm-start { -webkit-backdrop-filter:blur(var(--band-blur)); backdrop-filter:blur(var(--band-blur)); }

/* 0904 lill r3c · 两道幕（WHAT WE OFFER / MEET THE API）顶一条眉题，和 developer 板上方那条 nf-subtitle 同一套：16/20 · 600 · -.54px · 斜杠 · 白 .8 · 到巨字 24px；
   d1 随整幕 opacity 进出，d2 跟 --b-wordIn 一起升起 */
.o1-div { grid-auto-rows:max-content; align-content:center; justify-items:center; row-gap:24px; }
.o1-eyebrow { color:rgba(255,255,255,.8); }
.o1-eyebrow, .o1-eyebrow.nf-subtitle { font-size:16px; line-height:20px; font-weight:600; letter-spacing:-.54px; text-transform:uppercase; }
html[data-lang="ja"] .o1-eyebrow { letter-spacing:0; }
.o1-d2 .o1-eyebrow { opacity:var(--b-wordIn); transform:translateY(calc((1 - var(--b-wordIn)) * 24px)); }
@media (max-width:767px) { .o1-eyebrow, .o1-eyebrow.nf-subtitle { font-size:14px; line-height:17.5px; } .o1-div { row-gap:18px; } }

/* 0904 lill r3c · 她（s2 窄窗）：「这个应该再往右边吧，都叠在一起了」→ 图版永不压左右轨：
   左轨中心 --rail-c = SCROLL 药丸自己的定位值（frame + 1.6vw），图版左边 = 轨右缘（+18px 半宽）+ 3vw；右轨同理（SELECTED / NEXT 最宽 clamp(48px,4vw,60px)）。
   01 / 03 不再溢出右边，四角圆；文案块在「轨内缘 ↔ 图版边」之间重新居中。 */
.mm-run { --rail-c:calc(var(--frame) + 1.6vw); --rail-l:calc(var(--rail-c) + 18px + 3vw); --rail-r:calc(var(--rail-c) + clamp(48px,4vw,60px) + 3vw); }
.mm-run .mm-scroll { left:var(--rail-c); }
.mm-run .mm-cast, .mm-run .mm-next { right:var(--rail-c); }
.offer-visual, .offer-visual.offer-visual-chibi { left:auto; right:var(--rail-r); width:var(--p1w); clip-path:inset(0 0 0 22% round 28px); }
.offer-visual.is-left, .offer-visual.offer-visual-world { left:var(--rail-l); right:auto; width:var(--p2w); clip-path:inset(0 22% 0 0 round 28px); }
.mm-stage[data-state="s1"] .offer-visual-live, .mm-stage[data-state="s3"] .offer-visual-call { clip-path:inset(0 0 0 0 round 28px); }
.mm-run .mm-l1 .mm-live-row, .mm-run .mm-l3 .mm-live-row { left:var(--rail-l); right:calc(var(--rail-r) + var(--p1w)); }
.mm-run .mm-l2 .mm-live-row { left:calc(var(--rail-l) + var(--p2w)); right:var(--rail-r); }
@media (max-width:1024px) {
  .offer-visual, .offer-visual.is-left, .offer-visual.offer-visual-chibi, .offer-visual.offer-visual-world { left:var(--rail-l); right:var(--rail-r); width:auto; clip-path:inset(0 0 0 22% round 24px); }
  .mm-stage[data-state="s1"] .offer-visual-live, .mm-stage[data-state="s2"] .offer-visual-world, .mm-stage[data-state="s3"] .offer-visual-call { clip-path:inset(0 0 0 0 round 24px); }
  .mm-run .mm-live-row, .mm-run .mm-l1 .mm-live-row, .mm-run .mm-l2 .mm-live-row, .mm-run .mm-l3 .mm-live-row { left:var(--rail-l); right:var(--rail-r); padding:0 2vw; }
}
@media (max-width:700px) {
  .offer-visual, .offer-visual.is-left, .offer-visual.offer-visual-chibi, .offer-visual.offer-visual-world { right:calc(var(--frame) + 3vw); }
  .mm-run .mm-live-row, .mm-run .mm-l1 .mm-live-row, .mm-run .mm-l2 .mm-live-row, .mm-run .mm-l3 .mm-live-row { right:calc(var(--frame) + 3vw); }
}

/* ======================================================================
   0904 lill r3c · Start creating 屏挪到页末 + 页脚并进来 + 弧不再被段边切
   她：「这个要更大一些，然后这个放到最下面吧，API 本质上也是让他们用这个」「后面是 aniwaffle 吧，这块和 footer 连在一起」「这块还是被切了，应该是没有边界的」
   ====================================================================== */
/* 段：普通 in-flow 100vh，紫地（.nf 的底），进屏一次显现；舞台里的 --font/--mono/--ease 在这里补一份 */
.aw-start.mm-lumiscreen { position:relative; inset:auto; z-index:1; min-height:100vh; opacity:1; visibility:visible; pointer-events:auto; overflow:clip;
  --font:"Proxima Nova","proxima-nova","Inter",-apple-system,sans-serif; --mono:ui-monospace,"SF Mono",Menlo,monospace; --ease:cubic-bezier(.22,1,.36,1);
  --b-lumiA:0; --band-b:0; --band-h:22vh; }
.aw-start.is-in { --b-lumiA:1; }
.aw-start .mm-start-word, .aw-start .mm-lumi-art, .aw-start .mm-start { transition:opacity .9s var(--ease), translate .9s var(--ease); }
.aw-start .mm-start-cta a { pointer-events:auto; }
/* 巨字 ANIWAFFLE：一行，两侧溢出，字被她挡一部分没关系 */
.aw-start .mm-start-word { top:10vh; font-size:24vw; letter-spacing:-.03em; }
/* 半身 92vh：底边藏在带里（带贴段底 0–22vh），顶到 2vh，呆毛不出画 */
.aw-start .mm-lumi-art { height:92vh; bottom:6vh; }
.aw-start .mm-start { bottom:0; }
/* 页脚并进 .nf：不再是玻璃板，紫地直连，带下面就是栏目 */
.nf { padding-bottom:0; }
.nf > #p3Foot.nf-footer { display:block!important; position:relative; z-index:1; box-sizing:border-box; max-width:1313px; margin:0 auto; padding:72px 64px 40px; border-radius:0; background:none; -webkit-backdrop-filter:none; backdrop-filter:none; color:#fff; overflow:visible; }
.nf > #p3Foot .nf-foot-top { padding-bottom:72px; }
/* 弧：a2 实心圆整个收进段内（top 不再是负值，段顶不切它）；a3 在段底出画 = 页尾，天然无边 */
.nf .aw-arc.a2 { top:clamp(24px,4vh,48px); }
@media (max-width:1024px) {
  .aw-start.mm-lumiscreen { --band-h:auto; }
  .aw-start .mm-start-word { top:calc(clamp(68px,5vw,88px) + 4vh); font-size:26vw; }
  .aw-start .mm-lumi-art { height:60vh; bottom:30vh; }
  .aw-start .mm-start { bottom:0; }
}
@media (max-width:991px) { .nf > #p3Foot.nf-footer { margin:0; padding:64px 40px 40px; border-radius:0; } }
@media (max-width:767px) { .nf > #p3Foot.nf-footer { margin:0; padding:56px 24px 40px; border-radius:0; } .nf > #p3Foot .nf-foot-top { padding-bottom:56px; } }
@media (max-width:700px) {
  .aw-start .mm-start-word { font-size:28vw; }
  .aw-start .mm-lumi-art { height:50vh; bottom:24vh; }
}
@media (max-width:479px) { .nf > #p3Foot.nf-footer { padding:56px 16px 40px; border-radius:0; } }
/* r3c 校准：① 01/03 文案在轨内缘 ↔ 图版之间放不下就得换行，不能钻到玻璃板下面 —— .l 原来 width:max-content 让格子项最小宽 = 整行宽，改 auto 让它跟着列宽折行；
   图版 01/03 收到 52vw 给文案留 4 行宽度；② 页末 Start 屏拉到 114vh：92vh 半身顶 5vh、底压进带 5vh，白裙透过带的糊影只剩带顶一线；③ a3 圆环挪到更右下，少穿页脚栏目 */
.mm-run { --p1w:min(52vw,940px); }
.mm-run .mm-catch .l, .mm-run .mm-sub .l { width:auto; }
.mm-run .mm-live-row > * { min-width:0; max-width:100%; }
.mm-run .mm-live-row, .mm-run .mm-l2 .mm-live-row { padding:0 1vw; }
.aw-start.mm-lumiscreen { min-height:114vh; }
.aw-start .mm-start-word { top:8vh; }
.aw-start .mm-lumi-art { height:92vh; bottom:17vh; }
.nf .aw-arc.a3 { right:-38vw; bottom:-34vw; }
@media (max-width:1024px) {
  .aw-start.mm-lumiscreen { min-height:100vh; }
  .aw-start .mm-lumi-art { height:60vh; bottom:34vh; }
  .mm-run .mm-live-row, .mm-run .mm-l1 .mm-live-row, .mm-run .mm-l2 .mm-live-row, .mm-run .mm-l3 .mm-live-row { padding:0 2vw; }
}
@media (max-width:700px) { .aw-start .mm-lumi-art { height:50vh; bottom:26vh; } }
/* r3c 校准：弧改透白 .13（在 #7180ff 场上算出来正好 = #8390ff，在 #7b89ff 板上自动亮一档），同一根线跨过板边两边看起来才一样重；实色 #8390ff 在板上几乎消失，她看到的「被切」就是这个 */
.nf .aw-arc.a1, .nf .aw-arc.a3 { border-color:rgba(255,255,255,.13); }
.nf .aw-arc.a2 { background:rgba(255,255,255,.13); }
/* r3c 校准：`.nf > section { z-index:1 }`（0,1,1）一直压着 `.nf-sheet { z-index:auto }`，板还是自己一个 stacking context、弧被板底盖住 —— 这才是她看到的「被切」。补一条更高特异性的 */
.nf > section.nf-sheet { z-index:auto; }
/* r3d · 页末巨字 ANIWAFFLE 变近白：赢的是 `.nf p { color:rgba(255,255,255,.85) }`（0,1,1）压过 `.mm-start-word`（0,1,0）。装饰字 = 主体后面安静的暗纹，回 #8390ff 扁平 */
.nf .aw-start p.mm-start-word { color:#8390ff; }

/* r3e · 页末巨字两行叠排 ANIMATED / WAFFLE（各自定字号让两行都铺到 ~85vw，不出画），行高 .82，块在上半屏压在她头肩后；
   Lumi 往下沉：底边压进带 13vh（原 5vh），段高 114 → 116vh 让 92vh 的她顶留 15vh、呆毛不出画 */
.aw-start .mm-start-word { top:5vh; display:grid; justify-items:center; line-height:.82; letter-spacing:-.03em; white-space:nowrap; font-size:0; }
.aw-start .mm-start-word span { display:block; }
.aw-start .mm-start-word .w1 { font-size:16.6vw; }
.aw-start .mm-start-word .w2 { font-size:22.6vw; }
.aw-start.mm-lumiscreen { min-height:116vh; }
.aw-start .mm-lumi-art { bottom:9vh; }
@media (max-width:1024px) {
  .aw-start .mm-start-word { top:calc(clamp(68px,5vw,88px) + 2vh); }
  .aw-start .mm-start-word .w1 { font-size:16.6vw; }
  .aw-start .mm-start-word .w2 { font-size:22.6vw; }
  .aw-start.mm-lumiscreen { min-height:100vh; }
  .aw-start .mm-lumi-art { bottom:26vh; }
}
@media (max-width:700px) { .aw-start .mm-lumi-art { bottom:16vh; } }
/* r3e 校准（量过 rest 位）：1440 底压进带 13vh、顶 17vh；1024 压 12vh；390 压 12vh */
.aw-start .mm-lumi-art { bottom:7vh; }
@media (max-width:1024px) { .aw-start .mm-lumi-art { bottom:19vh; } }
@media (max-width:700px) { .aw-start .mm-lumi-art { bottom:14vh; } }

/* ======================================================================
   0904 lill r4 · 幕 = FOR DEVELOPERS 巨字；三张玻璃卡撤；幕以下动效统一：
   一条 cubic-bezier(.22,1,.36,1)、.8s，[data-nf] 升起 28px + 淡入，六卡多一档 ±4° 旋转落到 0（--nf-r），错拍由 js 写 --nf-d。
   ====================================================================== */
.mm-stack { display:none; }
.nf [data-nf] { opacity:0; transform:translate3d(0,28px,0) rotate(var(--nf-r,0deg)); transform-origin:50% 100%; will-change:transform,opacity; }
.nf [data-nf].is-in { opacity:1; transform:translate3d(0,0,0) rotate(0deg); transition:opacity .8s cubic-bezier(.22,1,.36,1) var(--nf-d,0ms), transform .8s cubic-bezier(.22,1,.36,1) var(--nf-d,0ms); }
.nf-grid-3 > [data-nf] { transform:translate3d(0,48px,0) rotate(var(--nf-r,0deg)); }
.nf-acc[data-nf] { transform:translate3d(0,20px,0); }
.aw-start .mm-start-word, .aw-start .mm-lumi-art, .aw-start .mm-start { transition-duration:.8s; }
@media (prefers-reduced-motion:reduce) {
  .nf [data-nf], .nf [data-nf].is-in, .nf-grid-3 > [data-nf], .nf-acc[data-nf] { opacity:1; transform:none; transition:none; }
  .aw-start .mm-start-word, .aw-start .mm-lumi-art, .aw-start .mm-start { transition:none; }
}

/* ======================================================================
   0904 lill r5 · developer 半页 九屏（quill Round 8 / Dave「Script for a Voice」折进我们的 format）
   板 = 舞台窗紫 #7b89ff；字白；图形白 + 透白；OURS 强调 = 白；代码面板墨 #241c4e（唯一墨色面积）。
   全半页唯一图标 = 播放键圆。方括号 = 区块标记 / CTA / demo 输入。每屏 min-height 100vh、三层字级、大留白。
   ====================================================================== */
.nf > .nf-sheet.dv-board { margin-top:7vh; padding-top:clamp(24px,4vh,48px); padding-bottom:clamp(40px,8vh,96px); }
.dv-board { --dv-mono:ui-monospace,"SF Mono",Menlo,monospace; --dv-ease:cubic-bezier(.22,1,.36,1); --dv-white:#fff; --dv-w85:rgba(255,255,255,.85); --dv-w6:rgba(255,255,255,.6); --dv-w4:rgba(255,255,255,.4); --dv-w16:rgba(255,255,255,.16); --dv-ink:#241c4e; }
.dv-screen { position:relative; min-height:100vh; box-sizing:border-box; display:grid; align-content:center; gap:clamp(36px,6vh,64px); padding:clamp(72px,12vh,120px) 0 clamp(56px,9vh,96px); }
.dv-screen + .dv-screen { border-top:1px dashed rgba(255,255,255,.18); }
/* 三层：display / body / footnote，间距要一眼数得出三件 */
.dv-marker { position:absolute; left:0; top:clamp(28px,5vh,52px); font:700 11px/1 var(--dv-mono); letter-spacing:.24em; color:var(--dv-w6); }
.dv-marker-static { position:static; display:block; margin-bottom:22px; }
.dv-copy { max-width:15em; }
.dv-display { margin:0; color:#fff; font-size:clamp(36px,4.2vw,60px); line-height:1.08; letter-spacing:-.035em; font-weight:600; text-wrap:balance; }
.dv-display .dv-l { display:block; }
.dv-body { margin:clamp(20px,3vh,28px) 0 0; max-width:30em; color:var(--dv-w85); font-size:clamp(17px,1.35vw,21px); line-height:1.45; font-weight:500; }
.dv-foot { margin:0; color:var(--dv-w6); font-size:14px; line-height:1.5; }
.dv-mono { font:700 10px/1 var(--dv-mono); letter-spacing:.22em; text-transform:uppercase; color:var(--dv-w6); }
.dv-ph { display:inline-block; margin-top:14px; color:var(--dv-w4); }
.dv-figure { margin:0; max-width:1040px; }
.dv-cols { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.05fr); gap:clamp(32px,5vw,80px); align-items:center; }
/* CTA：方括号做标签，无箭头；白底紫字 / 玻璃 / 纯文字 */
.dv-cta { display:inline-flex; align-items:center; min-height:46px; padding:0 22px; border-radius:999px; font:600 15px/1 var(--dv-mono); letter-spacing:.02em; text-decoration:none; transition:transform .25s var(--dv-ease), background .2s ease, color .2s ease; }
.dv-cta:hover { transform:translateY(-2px); }
.dv-cta-white { background:#fff; color:#7180ff; }
.dv-cta-white:hover { background:#e3e0ff; }
.dv-cta-glass { background:var(--dv-w16); color:#fff; }
.dv-cta-glass:hover { background:#fff; color:#7180ff; }
.dv-cta-text { padding:0 6px; color:#fff; }
.dv-cta-text:hover { color:#e3e0ff; }
.dv-cta-sm { min-height:38px; padding:0 16px; font-size:12px; letter-spacing:.12em; }
.dv-cta-corner { position:absolute; right:0; top:clamp(16px,3.6vh,40px); }
/* 播放键：全半页唯一图标，一个圆，处处相同 */
.dv-play { flex:none; width:44px; height:44px; padding:0; border:0; border-radius:50%; background:#fff; color:#7180ff; cursor:pointer; display:grid; place-items:center; transition:transform .25s var(--dv-ease), background .2s ease; }
.dv-play:hover { transform:scale(1.06); }
.dv-play:focus-visible { outline:2px solid #fff; outline-offset:3px; }
.dv-play i { display:block; width:0; height:0; margin-left:3px; border-style:solid; border-width:7px 0 7px 12px; border-color:transparent transparent transparent currentColor; }
.dv-play.is-playing i { width:12px; height:14px; margin-left:0; border:0; background:linear-gradient(90deg, currentColor 0 4px, transparent 4px 8px, currentColor 8px 12px); }
/* 波形：真信号 svg，进场从左到右画出来，播放时白色进度盖上 */
.dv-wave { position:relative; display:block; height:40px; min-width:0; clip-path:inset(0 100% 0 0); transition:clip-path 1.2s var(--dv-ease); }
.dv-wave svg { display:block; width:100%; height:100%; overflow:visible; }
.dv-wave .w-base { fill:rgba(255,255,255,.42); }
.dv-wave .w-fill { fill:#fff; clip-path:inset(0 calc(100% - var(--p,0%)) 0 0); }
.dv-wave.is-in, [data-nf].is-in .dv-wave { clip-path:inset(0 0 0 0); }
.dv-wave-lg { height:96px; }
.dv-wave-md { height:64px; }
.dv-wave-mini { height:14px; width:40px; flex:none; clip-path:none; }
.dv-wave-mini .w-base { fill:currentColor; opacity:.7; }
.dv-wave-mini .w-fill { display:none; }
/* [VOICE] 四个播放行 2×2 */
.dv-playgrid { display:grid; grid-template-columns:1fr 1fr; gap:22px clamp(32px,4vw,64px); }
.dv-play-row { display:grid; grid-template-columns:auto auto minmax(0,1fr); align-items:center; gap:16px; }
.dv-play-row .dv-mono { white-space:nowrap; color:var(--dv-w85); }
/* [TAGS] 输入行 / 大波形 / 标签行 */
.dv-tagdemo { display:grid; gap:24px; }
.dv-input { padding:16px 18px; border:1px dashed rgba(255,255,255,.45); border-radius:14px; font:500 15px/1.5 var(--dv-mono); color:#fff; }
.dv-input-tag { font-weight:700; color:#e3e0ff; }
.dv-bigwave { display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; gap:20px; }
.dv-tagrow { display:flex; flex-wrap:wrap; gap:10px; }
.dv-tag { display:inline-flex; align-items:center; gap:10px; min-height:40px; padding:0 14px 0 12px; border:0; border-radius:10px; background:var(--dv-w16); color:#fff; font:600 13px/1 var(--dv-mono); letter-spacing:.02em; cursor:pointer; transition:background .2s ease, color .2s ease, transform .25s var(--dv-ease); }
.dv-tag:hover { transform:translateY(-1px); background:rgba(255,255,255,.26); }
.dv-tag.is-on { background:#fff; color:#7180ff; }
.dv-tag:focus-visible { outline:2px solid #fff; outline-offset:3px; }
/* [FACE] 标签 → 发丝 → 波形 → 发丝 → Lumi（唯一角色位） */
.dv-facefig { display:grid; grid-template-columns:auto minmax(28px,1fr) minmax(0,3fr) minmax(28px,1fr) auto; align-items:center; gap:0; }
.dv-facefig .dv-ph { grid-column:1 / -1; }
.dv-face-tag { min-height:44px; }
.dv-hair { display:block; height:0; border-top:1px dashed rgba(255,255,255,.5); margin:0 12px; }
.dv-lumi { position:relative; width:clamp(120px,14vw,200px); aspect-ratio:1; border-radius:50%; overflow:hidden; background:var(--dv-w16); }
.dv-lumi img { position:absolute; left:50%; top:-3%; width:150%; height:auto; translate:-50% 0; }
.dv-lumi .l-mouth, .dv-lumi .l-blink { opacity:0; }
.dv-lumi[data-mouth="2"] .m2, .dv-lumi[data-mouth="3"] .m3, .dv-lumi[data-blink="1"] .b1, .dv-lumi[data-blink="2"] .b2 { opacity:1; }
.dv-lumi.is-talking { animation:dv-bob 1.1s ease-in-out infinite; }
@keyframes dv-bob { 0%,100% { translate:0 0; } 50% { translate:0 -4px; } }
/* [BREATH] 频谱对：同一尺、同一条虚线截止 */
.dv-breathfig { display:grid; gap:32px; }
.dv-specs { display:grid; grid-template-columns:1fr 1fr; gap:clamp(20px,3vw,40px); }
.dv-spec { display:grid; grid-template-columns:auto minmax(0,1fr); grid-template-rows:auto auto; gap:8px 10px; }
.dv-spec-axis { display:flex; flex-direction:column; justify-content:space-between; align-items:flex-end; font-size:9px; color:var(--dv-w4); padding:2px 0; }
.dv-spec-plot { position:relative; aspect-ratio:880 / 448; background:rgba(255,255,255,.06); border-radius:10px; overflow:hidden; }
.dv-spec-plot canvas { display:block; width:100%; height:100%; clip-path:inset(100% 0 0 0); transition:clip-path 1.4s var(--dv-ease); }
[data-nf].is-in .dv-spec-plot canvas { clip-path:inset(0 0 0 0); }
.dv-cut { position:absolute; left:0; right:0; top:50%; height:0; border-top:1.5px dashed rgba(255,255,255,.75); }
.dv-cut .dv-mono { position:absolute; right:12px; top:8px; color:#fff; font-size:9px; }
.dv-spec.is-ours .dv-cut .dv-mono { top:auto; bottom:8px; }
.dv-spec-lab { grid-column:2; color:var(--dv-w6); }
.dv-spec.is-ours .dv-spec-lab { color:#fff; }
/* [ROOM] 往返图：虚线流动，ours 快得多且不出框 */
.dv-diagram { display:block; width:100%; max-width:960px; height:auto; }
.dv-svg-box { fill:none; stroke:rgba(255,255,255,.55); stroke-width:1.5; stroke-dasharray:6 6; }
.dv-svg-box.is-ours { stroke:#fff; stroke-dasharray:none; stroke-width:2; }
.dv-svg-txt { fill:#fff; font:600 15px var(--dv-mono); }
.dv-svg-lab { fill:rgba(255,255,255,.6); font:700 11px var(--dv-mono); letter-spacing:.18em; text-transform:uppercase; }
.dv-svg-lab.is-ours { fill:#fff; }
.dv-flow { fill:none; stroke:rgba(255,255,255,.7); stroke-width:2; stroke-dasharray:8 8; stroke-linecap:round; }
.dv-flow-ours { stroke:#fff; stroke-width:2.5; }
[data-nf].is-in .dv-flow-cloud { animation:dv-dash 2.6s linear infinite; }
[data-nf].is-in .dv-flow-ours { animation:dv-dash .7s linear infinite; }
.dv-flow-back { animation-direction:reverse!important; }
@keyframes dv-dash { to { stroke-dashoffset:-32; } }
/* [METER] 两张柱图同形同齐，OURS 白 */
.dv-charts { display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,4vw,64px); }
.dv-chart-t { margin:0 0 22px; color:#fff; font-size:clamp(17px,1.3vw,20px); font-weight:600; letter-spacing:-.01em; }
.dv-bars { display:grid; gap:14px; }
.dv-bar { display:grid; grid-template-columns:minmax(120px,9.5em) minmax(0,1fr) auto; align-items:center; gap:14px; }
.dv-bar .dv-mono { color:var(--dv-w6); font-size:9px; }
.dv-bar i { display:block; height:18px; border-radius:4px; background:rgba(255,255,255,.35); transform:scaleX(0); transform-origin:0 50%; width:calc(var(--v) * 100%); transition:transform .9s var(--dv-ease); }
.dv-bar b { color:var(--dv-w6); font-size:10px; letter-spacing:.06em; }
.dv-bar.is-ours .dv-mono, .dv-bar.is-ours b { color:#fff; }
.dv-bar.is-ours i { background:#fff; }
[data-nf].is-in .dv-bar i { transform:scaleX(1); }
.dv-bar:nth-child(2) i { transition-delay:.1s; } .dv-bar:nth-child(3) i { transition-delay:.2s; } .dv-bar:nth-child(4) i { transition-delay:.3s; }
/* [IMPROVE] 一张静帧：BASE / CANDIDATE，PRESERVE / CHANGE chip，PUBLISH 静置 */
.dv-still { display:grid; gap:12px; }
.dv-rcard { display:grid; gap:8px; padding:16px 18px; border-radius:14px; background:rgba(70,83,198,.42); color:#fff; }
.dv-rcard .dv-mono { color:rgba(255,255,255,.92); }
.dv-rcard .dv-field { color:var(--dv-w6); font-size:8px; }
.dv-rcard p { margin:0; font-size:14px; line-height:1.45; }
.dv-rcard p.is-muted { color:var(--dv-w6); }
.dv-diffrow { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; }
.dv-rcard p.is-diff { padding:6px 8px; border-radius:8px; background:#fff; color:#7180ff; }
.dv-chips { display:inline-flex; gap:6px; }
.dv-chip { display:inline-block; padding:6px 9px; border-radius:999px; background:var(--dv-w16); color:#fff; font:700 9px/1 var(--dv-mono); letter-spacing:.14em; rotate:-4deg; opacity:0; transition:rotate .8s var(--dv-ease) .5s, opacity .8s var(--dv-ease) .5s; }
.dv-chip.is-on { background:#fff; color:#7180ff; rotate:4deg; }
[data-nf].is-in .dv-chip { rotate:0deg; opacity:1; }
.dv-rfoot { display:flex; align-items:center; justify-content:space-between; gap:12px; padding-top:12px; border-top:1px dashed rgba(255,255,255,.4); color:var(--dv-w85); font-size:14px; }
.dv-foot-road { margin-top:clamp(28px,5vh,44px); }
.dv-foot-road .dv-mono { margin-right:8px; color:var(--dv-w4); }
/* close：一句 + 两个方括号按钮，不是带 */
.dv-close { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:20px 32px; margin-top:clamp(28px,6vh,64px); padding-top:clamp(28px,5vh,48px); border-top:1px dashed rgba(255,255,255,.18); }
.dv-close-line { margin:0; color:#fff; font-size:clamp(28px,3vw,44px); font-weight:600; letter-spacing:-.03em; }
.dv-close-ctas { display:flex; flex-wrap:wrap; align-items:center; gap:12px 20px; }
/* 代码面板：唯一墨色面积 */
.dv-code { margin:0; padding:clamp(20px,2vw,28px); overflow:auto; border-radius:20px; background:var(--dv-ink); color:rgba(255,255,255,.9); font:500 13px/1.7 var(--dv-mono); scrollbar-width:none; }
.dv-code::-webkit-scrollbar { display:none; }
.dv-code code { white-space:pre; }
.dv-code i { font-style:normal; color:#aab3ff; }
.dv-code b { font-weight:500; color:#c9c2ff; }
.dv-code em { font-style:normal; color:#e3e0ff; }
/* JA */
html[data-lang="ja"] .dv-display { font-size:clamp(30px,3.6vw,52px); line-height:1.25; letter-spacing:0; }
html[data-lang="ja"] .dv-body { line-height:1.7; }
html[data-lang="ja"] .dv-input span { font-family:"Noto Sans JP",var(--nc1-font,Inter,sans-serif); }
/* 断点 */
@media (max-width:1024px) {
  .dv-cols { grid-template-columns:1fr; }
  .dv-cta-corner { position:static; justify-self:start; order:9; }
  .dv-agent { grid-auto-flow:row; }
}
@media (max-width:767px) {
  .dv-screen { min-height:0; padding:clamp(56px,10vh,80px) 0 clamp(40px,7vh,64px); gap:32px; }
  .dv-playgrid, .dv-specs, .dv-charts { grid-template-columns:1fr; }
  .dv-facefig { grid-template-columns:auto minmax(0,1fr); grid-template-rows:auto auto; }
  .dv-facefig .dv-hair { display:none; }
  .dv-facefig .dv-wave-md { grid-column:1 / -1; order:3; }
  .dv-lumi { justify-self:end; }
  .dv-bar { grid-template-columns:minmax(96px,7em) minmax(0,1fr) auto; }
  .dv-close { flex-direction:column; align-items:flex-start; }
  .dv-code { font-size:11px; }
}
@media (prefers-reduced-motion:reduce) {
  .dv-wave, .dv-spec-plot canvas, .dv-bar i, .dv-chip { transition:none; clip-path:none; transform:none; rotate:0deg; opacity:1; }
  .dv-flow-cloud, .dv-flow-ours, .dv-lumi.is-talking { animation:none!important; }
}
/* r5 校准：文案列 15em 是按 body 字号算的（240px），display 被挤成一列一词 → 列宽回 720px、display 自限 12.5em；marker / 角上 CTA 让开固定 nav */
.dv-copy { max-width:720px; }
.dv-display { max-width:12.5em; }
.dv-screen { padding-top:clamp(120px,16vh,160px); }
.dv-marker { top:clamp(72px,9vh,96px); }
.dv-cta-corner { top:clamp(64px,8vh,88px); }
.dv-chart-t { margin-bottom:28px; }
@media (max-width:767px) { .dv-screen { padding-top:clamp(88px,12vh,120px); } .dv-marker { top:clamp(56px,7vh,72px); } }

/* ======================================================================
   0904 lill r5b · 她：「排布不应该只是左右，上下也可以…要做分区…配色 stay 在紫色，看透明的浅色怎么 play，白色慎用…背景也按照 title 的分区」
   板拆掉：九屏各自是满幅 zone，上下叠；地交替 紫场 → 透白 sheet(.16, 左上大圆角) → 紫场…，[BREATH] 唯一白 sheet；
   每 zone ≥100vh，marker + 标题在 zone 顶，文案居中，图在文案下方（满宽或居中量尺）。透明度分三档：.08 / .16 / .28。
   ====================================================================== */
.nf > .nf-sheet.dv-board { max-width:none; margin:7vh 0 0; padding:0; border-radius:0; }
.nf-sheet.dv-board::before { display:none; }
.dv-board { --gx:max(24px,calc(50vw - 600px)); --dv-r:clamp(40px,6vw,88px); }
.dv-screen { --zone-fg:#fff; min-height:100vh; padding:clamp(120px,16vh,168px) var(--gx) clamp(72px,11vh,120px); gap:clamp(40px,6vh,64px); align-content:start; justify-items:center; text-align:center; border-top:0; }
.dv-screen + .dv-screen { border-top:0; }
.dv-z-sheet { background:rgba(255,255,255,.16); border-radius:var(--dv-r) 0 0 0; }
.dv-z-white { background:#fff; border-radius:var(--dv-r) 0 0 0; --zone-fg:#7180ff; color:#7180ff; }
.dv-marker { left:var(--gx); }
.dv-cta-corner { right:var(--gx); }
.dv-copy { max-width:760px; margin:0 auto; }
.dv-display { margin:0 auto; max-width:13em; }
.dv-body { margin-left:auto; margin-right:auto; max-width:32em; }
.dv-foot { max-width:36em; }
.dv-cols { grid-template-columns:1fr; justify-items:center; gap:clamp(40px,6vh,64px); width:100%; }
.dv-cols .dv-copy { text-align:center; }
.dv-figure { width:100%; max-width:1040px; margin:0 auto; text-align:left; }
.dv-code-fig { max-width:760px; }
.dv-playgrid { max-width:960px; }
.dv-still { max-width:720px; }
.dv-foot-road { text-align:center; }
.dv-close { width:100%; max-width:1040px; justify-content:center; flex-direction:column; gap:24px; margin-top:clamp(40px,8vh,80px); padding-top:clamp(32px,6vh,56px); text-align:center; }
.dv-close-ctas { justify-content:center; }
/* 白 zone：全部翻紫，播放键翻成紫圆白三角 */
.dv-z-white .dv-marker { color:rgba(113,128,255,.7); }
.dv-z-white .dv-display { color:#7180ff; }
.dv-z-white .dv-body { color:rgba(70,83,198,.9); }
.dv-z-white .dv-foot { color:rgba(113,128,255,.75); }
.dv-z-white .dv-mono { color:rgba(113,128,255,.7); }
.dv-z-white .dv-play { background:#7180ff; color:#fff; }
.dv-z-white .dv-wave .w-base { fill:rgba(113,128,255,.35); }
.dv-z-white .dv-wave .w-fill { fill:#7180ff; }
.dv-z-white .dv-spec-plot { background:rgba(113,128,255,.06); }
.dv-z-white .dv-cut { border-top-color:rgba(113,128,255,.8); }
.dv-z-white .dv-cut .dv-mono { color:#7180ff; }
.dv-z-white .dv-spec-lab { color:rgba(113,128,255,.6); }
.dv-z-white .dv-spec.is-ours .dv-spec-lab { color:#7180ff; }
.dv-z-white .dv-spec-axis { color:rgba(113,128,255,.5); }
/* sheet zone 上的图形再降一档透明，免得白上白糊掉 */
.dv-z-sheet .dv-tag { background:rgba(255,255,255,.2); }
.dv-z-sheet .dv-lumi { background:rgba(255,255,255,.2); }
.dv-z-sheet .dv-bar i { background:rgba(255,255,255,.4); }
.dv-z-sheet .dv-play-row .dv-mono { color:#fff; }
.dv-z-sheet .dv-cta-glass { background:rgba(255,255,255,.22); }
/* [FACE] 横排件在居中量尺里 */
.dv-facefig { max-width:960px; }
@media (max-width:1024px) { .dv-cta-corner { position:absolute; } }
@media (max-width:767px) {
  .dv-screen { padding-top:clamp(96px,13vh,128px); }
  .dv-z-sheet, .dv-z-white { border-radius:36px 0 0 0; }
  .dv-cta-corner { position:static; }
}
/* r5b 校准：纯白 sheet 会把固定 nav 的白字吃掉（nav 没有换色逻辑），[BREATH] 改成最重的一档透白 .28（白色「慎用」= 先不用）；
   sheet 上的 is-on 标签要保持白底；柱图加粗一档；FAQ 板也改成满幅 sheet，和上面九个 zone 同一套（IMPROVE 紫 → FAQ sheet → START 紫） */
.dv-z-strong { background:rgba(255,255,255,.28); }
.dv-z-sheet .dv-tag.is-on { background:#fff; color:#7180ff; }
.dv-bar i { height:26px; border-radius:6px; }
.dv-bars { gap:16px; }
.dv-bar .dv-mono { font-size:10px; }
.dv-chart-t { margin-bottom:26px; }
.nf > section.nf-sheet.nf-faq { max-width:none; margin:0; border-radius:var(--dv-r,64px) 0 0 0; background:rgba(255,255,255,.16); padding-left:max(24px,calc(50vw - 600px)); padding-right:max(24px,calc(50vw - 600px)); }
.nf-sheet.nf-faq::before { display:none; }
@media (max-width:767px) { .nf > section.nf-sheet.nf-faq { border-radius:36px 0 0 0; } }

/* ======================================================================
   0904 lill r6 · fish.audio 骨架（refs/fish-audio/fish-home.html 真值）：
   section = max-w 1172 居中 · py-16（首段 pt-32）· flex-col gap-8；H2 36/42 左上，副句 16/24 gap-4；图满容器宽在下。
   hero plate = rounded-24 + 居中白面板 max-w 832 h 320；音频卡 = rounded-20 + 底部胶囊 py-10 pl-20 pr-12 + 48 圆播放键；bento 卡 = rounded-20，图上文下（18/26 标题 + 16/24 一句），2-up 再 wide。
   我们的：紫场，zone 交替 紫 / 透白 .12，plate 比地亮一档（.16 on 紫 / .28 on sheet），无边框无阴影。旧 .dv-screen 规则不再匹配（类名换 .dv-sec）。
   ====================================================================== */
.dv-board { --dv-plate:rgba(255,255,255,.16); --dv-plate-2:rgba(255,255,255,.28); }
.dv-sec { position:relative; padding:64px 16px; }
.dv-sec-first { padding-top:128px; }
.dv-z-sheet { background:rgba(255,255,255,.12); border-radius:0; --dv-plate:rgba(255,255,255,.28); --dv-plate-2:rgba(255,255,255,.4); }
.dv-z-field { background:none; }
.dv-in { width:100%; max-width:1172px; margin:0 auto; display:flex; flex-direction:column; gap:32px; text-align:left; }
.dv-head { display:flex; flex-direction:column; gap:16px; }
.dv-head-row { flex-direction:row; align-items:flex-end; justify-content:space-between; gap:24px; }
.dv-head-copy { display:flex; flex-direction:column; gap:16px; }
.dv-marker { position:static; display:block; margin:0; font:700 11px/1 var(--dv-mono); letter-spacing:.24em; color:var(--dv-w6); }
.dv-h2 { margin:0; max-width:749px; color:#fff; font-size:36px; line-height:42px; font-weight:600; letter-spacing:-.02em; text-wrap:balance; }
.dv-h2 .dv-l { display:inline; }
.dv-sub { margin:0; max-width:749px; color:var(--dv-w85); font-size:16px; line-height:24px; font-weight:500; }
.dv-foot { margin:0; color:var(--dv-w6); font-size:14px; line-height:20px; }
/* plate：图坐在圆角板上，比地亮一档 */
.dv-fig { margin:0; width:100%; max-width:none; }
.dv-plate { box-sizing:border-box; border-radius:24px; background:var(--dv-plate); padding:24px; }
.dv-plate-ink { background:var(--dv-ink); padding:0; overflow:hidden; }
.dv-plate-ink .dv-code { border-radius:0; }
/* [VOICE] 四张音频卡：rounded-20，点状波形条居中，底部胶囊 caption + 48 圆播放键 */
.dv-cards4 { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; }
.dv-acard { position:relative; display:flex; flex-direction:column; justify-content:space-between; min-height:300px; padding:16px; border-radius:20px; }
.dv-acard-strip { flex:1; display:grid; place-items:center; padding:0 16px; }
.dv-wave-dots { height:56px; width:100%; }
.dv-wave-dots .w-base { fill:rgba(255,255,255,.55); }
.dv-acard-bar { display:flex; align-items:center; gap:12px; padding:10px 12px 10px 20px; border-radius:999px; background:rgba(255,255,255,.12); }
.dv-acard-bar .dv-mono { flex:1; margin:0; color:#fff; font-size:11px; }
.dv-acard-bar .dv-play { width:48px; height:48px; }
/* [TAGS] hero plate：大波形在顶，居中白面板 max-w 832（fish 320 高，我们按内容） */
.dv-heroplate { display:grid; gap:24px; padding:32px 24px 40px; }
.dv-heroplate-top { display:grid; grid-template-columns:minmax(0,1fr); padding:0 8px; }
.dv-panel { width:100%; max-width:832px; margin:0 auto; display:grid; grid-template-columns:276px minmax(0,1fr); border-radius:24px; background:#fff; color:#241c4e; overflow:hidden; }
.dv-panel-list { display:flex; flex-direction:column; gap:6px; padding:16px 12px; border-right:1px dashed rgba(113,128,255,.35); }
.dv-panel .dv-tag { justify-content:flex-start; width:100%; min-height:44px; padding:0 12px; border-radius:12px; background:transparent; color:rgba(36,28,78,.7); font-size:13px; }
.dv-panel .dv-tag:hover { background:rgba(113,128,255,.08); transform:none; }
.dv-panel .dv-tag.is-on { background:rgba(113,128,255,.14); color:#7180ff; }
.dv-panel .dv-wave-mini .w-base { fill:currentColor; }
.dv-panel-list-foot { margin-top:auto; padding:18px 12px 6px; color:rgba(36,28,78,.45); }
.dv-panel-main { display:flex; flex-direction:column; min-height:320px; padding:20px 20px 12px; }
.dv-panel-label { font-size:15px; font-weight:600; color:rgba(36,28,78,.55); }
.dv-line { flex:1; margin:12px 0 0; font-size:16px; line-height:24px; color:#241c4e; }
.dv-line-tag { display:inline-block; margin-right:4px; padding:1px 6px; border-radius:6px; background:rgba(113,128,255,.14); color:#7180ff; font:600 14px/22px var(--dv-mono); }
.dv-panel-foot { display:flex; align-items:center; justify-content:space-between; gap:12px; padding-top:12px; }
.dv-panel-foot .dv-mono { color:rgba(36,28,78,.45); }
.dv-panel .dv-play { background:#7180ff; color:#fff; }
/* [FACE] 满宽 plate 横排 */
.dv-facefig { display:grid; grid-template-columns:auto minmax(28px,1fr) minmax(0,3fr) minmax(28px,1fr) auto; align-items:center; padding:32px; }
.dv-facefig .dv-ph { grid-column:1 / -1; margin-top:20px; }
/* [BREATH] 满宽 plate */
.dv-breathfig { display:grid; gap:28px; padding:32px; }
/* bento：2-up 再 wide；卡 = rounded-20，图上文下 */
.dv-bento { display:flex; flex-direction:column; gap:24px; }
.dv-bento-row { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.dv-bcard { display:flex; flex-direction:column; gap:24px; min-height:568px; padding:24px; border-radius:20px; }
.dv-bcard-wide { min-height:0; }
.dv-bcard-fig { flex:1; display:flex; flex-direction:column; justify-content:center; min-width:0; }
.dv-bcard-text { display:flex; flex-direction:column; gap:6px; }
.dv-bcard-text .dv-marker { margin-bottom:6px; }
.dv-bcard-t { margin:0; color:#fff; font-size:18px; line-height:26px; font-weight:600; letter-spacing:.01em; }
.dv-bcard-l { margin:0; color:var(--dv-w85); font-size:16px; line-height:24px; text-wrap:balance; }
.dv-bcard-text .dv-foot { margin-top:6px; }
.dv-bcard .dv-diagram { max-width:none; }
.dv-charts { display:grid; grid-template-columns:1fr 1fr; gap:40px; }
.dv-bar { grid-template-columns:minmax(0,11em) minmax(0,1fr) auto; }
.dv-bar .dv-mono { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dv-still { gap:12px; }
/* close */
.dv-sec-close { padding:48px 16px 80px; }
.dv-close { flex-direction:row; align-items:center; justify-content:space-between; margin:0; padding:0; border-top:0; text-align:left; }
.dv-close-line { font-size:36px; line-height:42px; }
/* FAQ zone 跟着 fish 容器 */
.nf > section.nf-sheet.nf-faq { background:rgba(255,255,255,.12); border-radius:0; padding:64px 16px; }
.nf-faq > .nf-faq-grid { max-width:1172px; margin:0 auto; }
/* 幕 → [AGENT] 呼吸 */
.nf > .nf-sheet.dv-board { margin-top:0; }
/* JA */
html[data-lang="ja"] .dv-h2 { font-size:32px; line-height:1.4; letter-spacing:0; }
html[data-lang="ja"] .dv-line span { font-family:"Noto Sans JP",var(--nc1-font,Inter,sans-serif); }
/* 断点 */
@media (max-width:1200px) { .dv-sec { padding-left:24px; padding-right:24px; } }
@media (max-width:1024px) {
  .dv-cards4 { grid-template-columns:1fr 1fr; }
  .dv-bento-row { grid-template-columns:1fr; }
  .dv-bcard { min-height:0; }
  .dv-panel { grid-template-columns:220px minmax(0,1fr); }
}
@media (max-width:767px) {
  .dv-sec { padding:32px 16px; }
  .dv-sec-first { padding-top:80px; }
  .dv-in { gap:24px; }
  .dv-h2 { font-size:24px; line-height:32px; }
  .dv-cards4 { grid-template-columns:1fr 1fr; gap:12px; }
  .dv-acard { min-height:220px; padding:12px; }
  .dv-acard-bar { padding:6px 6px 6px 14px; }
  .dv-acard-bar .dv-play { width:40px; height:40px; }
  .dv-panel { grid-template-columns:1fr; }
  .dv-panel-list { flex-direction:row; flex-wrap:wrap; border-right:0; border-bottom:1px dashed rgba(113,128,255,.35); }
  .dv-panel .dv-tag { width:auto; min-height:38px; }
  .dv-panel-list-foot { width:100%; padding:8px 4px 0; }
  .dv-panel-main { min-height:0; }
  .dv-facefig { grid-template-columns:auto minmax(0,1fr); padding:20px; }
  .dv-charts { grid-template-columns:1fr; gap:28px; }
  .dv-bar { grid-template-columns:minmax(0,7.5em) minmax(0,1fr) auto; }
  .dv-bar .dv-mono { font-size:9px; letter-spacing:.14em; }
  .dv-close { flex-direction:column; align-items:flex-start; }
  .dv-close-line { font-size:28px; line-height:34px; }
  .dv-head-row { flex-direction:column; align-items:flex-start; }
  .dv-plate { padding:16px; border-radius:20px; }
  .dv-heroplate { padding:20px 12px 24px; }
}
/* r6 校准：旧 option2 时代的 .dv-head / .dv-head h2（居中 + 72px）特异性压过 .dv-h2 → 提特异性压回 fish 的 36/42 左对齐；角上 CTA 不折行；bento 里 svg 字放大一档；390 音频卡标签不折行 */
.dv-sec .dv-head, .dv-sec .dv-head-copy { max-width:none; margin:0; text-align:left; }
.dv-sec .dv-head h2.dv-h2 { margin:0; max-width:749px; color:#fff; font-size:36px; line-height:42px; font-weight:600; letter-spacing:-.02em; }
html[data-lang="ja"] .dv-sec .dv-head h2.dv-h2 { font-size:32px; line-height:1.4; letter-spacing:0; }
.dv-head-row .dv-cta { white-space:nowrap; flex:none; }
.dv-bcard .dv-svg-txt { font-size:22px; }
.dv-bcard .dv-svg-lab { font-size:15px; letter-spacing:.14em; }
.dv-bcard .dv-svg-box { stroke-width:2; }
.dv-bcard .dv-flow { stroke-width:3; }
.dv-acard-bar .dv-mono { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
@media (max-width:767px) { .dv-sec .dv-head h2.dv-h2 { font-size:26px; line-height:32px; } .dv-acard-bar .dv-mono { font-size:9px; letter-spacing:.12em; } .dv-bcard .dv-svg-txt { font-size:30px; } .dv-bcard .dv-svg-lab { font-size:20px; } }
/* r6b · ① [TAGS] 白面板里的台词被 `.nf p { color: 白 .85 }` 盖成白字 → 提特异性回墨色，18/28；② [ROOM] 往返图改竖排 520 宽版给卡（1:1 渲染，字 11–13 mono，框 1px 发丝，虚线流保留） */
.dv-panel p.dv-line { color:#241c4e; font-size:18px; line-height:28px; }
.dv-panel p.dv-line span { color:#241c4e; }
.dv-line-tag { font-size:15px; line-height:24px; padding:2px 8px; vertical-align:baseline; }
.dv-bcard .dv-diagram-v { width:100%; max-width:none; height:auto; }
.dv-bcard .dv-diagram-v .dv-svg-txt { font-size:13px; font-weight:600; }
.dv-bcard .dv-diagram-v .dv-svg-lab { font-size:11px; letter-spacing:.16em; }
.dv-bcard .dv-diagram-v .dv-svg-box { stroke-width:1; stroke-dasharray:5 5; }
.dv-bcard .dv-diagram-v .dv-svg-box.is-ours { stroke-width:1.5; stroke-dasharray:none; }
.dv-bcard .dv-diagram-v .dv-flow { stroke-width:2; stroke-dasharray:6 6; }
.dv-bcard .dv-diagram-v .dv-flow-ours { stroke-width:2.5; }
#dvRoom .dv-bcard-fig { padding:24px 0; }
@media (max-width:767px) { .dv-bcard .dv-diagram-v .dv-svg-txt { font-size:16px; } .dv-bcard .dv-diagram-v .dv-svg-lab { font-size:13px; } }
/* r6b 顺手：close 段的 .dv-close 把 .dv-in 的 margin:auto 盖掉了，贴到左边 16px → 回 1172 容器 */
.dv-in.dv-close { max-width:1172px; margin:0 auto; }

/* ======================================================================
   0904 mira r7 · 她看 r6：「太密了、分层差一点、动效没跟上」。
   分层：紫地 #7180ff 就是页面；图全部坐纯白 plate（她解禁白色），墨字 #241c4e，紫 = 播放键 / 激活 / OURS，淡紫 #e3e0ff = 次级 chip / 未激活柱；透白 sheet 撤，zone 节奏 = 白板落在紫地。
   密度：H2 44/52 · 副句 18/28 · head→plate 44 · 段 96/96（首段 160）· plate 内 40；bento 拆成 [ROOM] [METER] [IMPROVE] 各自一屏。
   动效：一条 cubic-bezier(.22,1,.36,1)、.8s、进视口 .35 才起、只一次；每张图的入场演它自己的主张（VOICE 成对画、TAGS 形变、FACE 发丝从标签向外点亮、BREATH 三拍、ROOM 两颗点、METER 先短后长、IMPROVE 盖卡）。
   ====================================================================== */
.dv-board { --dv-ink:#241c4e; --dv-ink6:rgba(36,28,78,.62); --dv-ink45:rgba(36,28,78,.45); --dv-lav:#e3e0ff; --dv-lav2:#f1efff; --dv-pur:#7180ff; --dv-pur40:rgba(113,128,255,.42); --dv-ease:cubic-bezier(.22,1,.36,1); }
/* zones：只剩紫地 */
.dv-board .dv-sec, .dv-board .dv-z-sheet, .dv-board .dv-z-field, .dv-board .dv-z-strong { background:none; border-radius:0; }
.dv-board .dv-sec { padding:96px 24px; }
.dv-board .dv-sec-first { padding-top:160px; }
.dv-board .dv-sec-close { padding:48px 24px 128px; }
.dv-board .dv-in { gap:44px; }
.dv-board .dv-head, .dv-board .dv-head-copy { gap:16px; }
.dv-board .dv-head-row { gap:32px; }
.dv-sec .dv-head h2.dv-h2 { font-size:44px; line-height:52px; max-width:760px; letter-spacing:-.024em; }
.dv-board .dv-sub { font-size:18px; line-height:28px; max-width:600px; }
.dv-board .dv-foot { margin-top:-16px; font-size:14px; line-height:20px; }
.dv-board .dv-marker { color:rgba(255,255,255,.72); }
html[data-lang="ja"] .dv-sec .dv-head h2.dv-h2 { font-size:38px; line-height:1.4; letter-spacing:0; }
html[data-lang="ja"] .dv-board .dv-sub { line-height:1.75; }
/* plate：纯白，墨字，紫 = 动作 / 激活 / OURS */
.dv-board .dv-plate { background:#fff; color:var(--dv-ink); border-radius:24px; padding:40px; }
.dv-board .dv-plate-ink { background:var(--dv-ink); color:#fff; padding:0; }
.nf .dv-plate p { color:var(--dv-ink); }
.dv-plate .dv-mono { color:var(--dv-ink6); }
.dv-plate .dv-ph { color:var(--dv-ink45); }
.dv-plate .dv-play, .dv-panel .dv-play { background:var(--dv-pur); color:#fff; }
.dv-plate .dv-play:hover { background:#5f6ff0; }
.dv-plate .dv-play:active { transform:scale(.96); }
.dv-plate .dv-play:focus-visible { outline:2px solid var(--dv-pur); outline-offset:3px; }
.dv-plate .dv-wave .w-base { fill:var(--dv-pur40); }
.dv-plate .dv-wave .w-fill { fill:var(--dv-pur); }
.dv-plate .dv-wave-dots .w-base { fill:var(--dv-pur40); }
/* 图的入场：plate 本身升起不带延迟（错拍留给 head），内部动效从 is-in 起算 */
.dv-board [data-dv-anim] { --nf-d:0ms; }
/* ---- [VOICE] 四卡：REF 先画，CLONED 跟着照拍画 ---- */
.dv-board .dv-cards4 { gap:24px; }
.dv-board .dv-acard { min-height:320px; padding:20px; border-radius:24px; opacity:0; translate:0 18px; transition:opacity .8s var(--dv-ease), translate .8s var(--dv-ease); }
.dv-board .dv-acard:nth-child(2) { transition-delay:.08s; } .dv-board .dv-acard:nth-child(3) { transition-delay:.16s; } .dv-board .dv-acard:nth-child(4) { transition-delay:.24s; }
.dv-board .dv-cards4.is-in .dv-acard { opacity:1; translate:0 0; }
.dv-board .dv-acard-strip { padding:12px 8px 0; }
.dv-board .dv-wave-dots { height:64px; }
.dv-plate .dv-acard-bar, .dv-board .dv-acard-bar { background:var(--dv-lav2); padding:8px 8px 8px 20px; }
.dv-plate .dv-acard-bar .dv-mono { color:var(--dv-ink6); font-size:11px; }
.dv-board .dv-cards4 .dv-wave { transition-duration:1.1s; }
.dv-board .dv-cards4 .dv-acard:nth-child(1) .dv-wave { transition-delay:.35s; }
.dv-board .dv-cards4 .dv-acard:nth-child(3) .dv-wave { transition-delay:.55s; }
.dv-board .dv-cards4 .dv-acard:nth-child(2) .dv-wave { transition-delay:1.45s; }
.dv-board .dv-cards4 .dv-acard:nth-child(4) .dv-wave { transition-delay:1.65s; }
/* ---- [TAGS] 白 plate 上的产品窗：虚线框（唯一允许的框），激活行 = 一枚淡紫药丸滑动 ---- */
.dv-board .dv-heroplate { gap:36px; padding:40px; }
.dv-board .dv-heroplate-top { padding:0; }
.dv-board .dv-wave-lg { height:104px; }
#dvTagWave rect { transition:height .6s var(--dv-ease), y .6s var(--dv-ease); }
.dv-board .dv-panel { max-width:none; background:none; color:var(--dv-ink); border-radius:16px; border:1px dashed var(--dv-pur40); grid-template-columns:288px minmax(0,1fr); overflow:visible; }
.dv-board .dv-panel-list { position:relative; padding:16px; gap:4px; border-right:1px dashed var(--dv-pur40); }
.dv-tag-pill { position:absolute; left:16px; top:16px; width:calc(100% - 32px); height:44px; border-radius:12px; background:var(--dv-lav); opacity:0; pointer-events:none; transition:top .45s var(--dv-ease), left .45s var(--dv-ease), width .45s var(--dv-ease), height .45s var(--dv-ease), opacity .3s ease; }
.dv-tag-pill.is-set { opacity:1; }
.dv-board .dv-panel .dv-tag { position:relative; z-index:1; background:transparent; color:var(--dv-ink6); font-size:13px; min-height:44px; border-radius:12px; transition:color .25s ease, background .2s ease; }
.dv-board .dv-panel .dv-tag:hover { background:rgba(113,128,255,.06); transform:none; }
.dv-board .dv-panel .dv-tag.is-on { background:transparent; color:var(--dv-pur); }
.dv-board .dv-panel .dv-tag:focus-visible { outline:2px solid var(--dv-pur); outline-offset:-2px; }
.dv-board .dv-panel-list-foot { color:var(--dv-ink45); }
.dv-board .dv-panel-main { padding:28px 28px 20px; min-height:320px; }
.dv-board .dv-panel-label { color:var(--dv-ink6); font-size:14px; font-weight:600; }
.dv-board .dv-panel p.dv-line { font-size:20px; line-height:32px; margin-top:12px; }
.dv-board .dv-line-tag { position:relative; overflow:hidden; isolation:isolate; background:var(--dv-lav); color:var(--dv-pur); font-size:15px; line-height:24px; padding:3px 9px; border-radius:8px; transition:transform .3s var(--dv-ease); }
.dv-board .dv-line-tag::after { content:""; position:absolute; inset:0; z-index:1; background:var(--dv-pur); transform:translateX(-102%); }
.dv-board .dv-line-tag.is-swap { transform:scale(1.05); }
.dv-board .dv-line-tag.is-swap::after { animation:dv-sweep .55s var(--dv-ease); }
@keyframes dv-sweep { 0% { transform:translateX(-102%); } 45% { transform:translateX(0); } 100% { transform:translateX(102%); } }
.dv-board .dv-panel-foot .dv-mono { color:var(--dv-ink45); }
/* ---- [FACE] 标签 → 发丝 → 波形 → 发丝 → Lumi：入场按这个顺序，播放时发丝从标签向外点亮 ---- */
.dv-board .dv-facefig { padding:40px; }
.dv-board .dv-plate .dv-tag.dv-face-tag, .dv-board .dv-plate .dv-tag.dv-face-tag.is-on { background:var(--dv-pur); color:#fff; min-height:44px; padding:0 16px; border-radius:12px; }
.dv-board .dv-plate .dv-tag.dv-face-tag:hover { background:#5f6ff0; }
.dv-board .dv-plate .dv-tag.dv-face-tag:focus-visible { outline:2px solid var(--dv-pur); outline-offset:3px; }
.dv-board .dv-plate .dv-hair { position:relative; border-top:1px dashed var(--dv-pur40); margin:0 16px; }
.dv-board .dv-plate .dv-hair::after { content:""; position:absolute; left:0; right:0; top:-1.5px; height:0; border-top:2px solid var(--dv-pur); transform:scaleX(0); transform-origin:0 50%; transition:transform .5s var(--dv-ease); }
.dv-board .dv-facefig.is-live .dv-hair::after { transform:scaleX(1); }
.dv-board .dv-facefig.is-live i.dv-hair:nth-of-type(2)::after { transition-delay:.2s; }
.dv-board .dv-facefig:not(.is-live) i.dv-hair:nth-of-type(1)::after { transition-delay:.2s; }
.dv-board .dv-plate .dv-lumi { width:200px; background:var(--dv-lav); }
.dv-board .dv-facefig .dv-face-tag, .dv-board .dv-facefig .dv-lumi { opacity:0; scale:.9; transition:opacity .6s var(--dv-ease), scale .6s var(--dv-ease), background .2s ease; }
.dv-board .dv-facefig.is-in .dv-face-tag { opacity:1; scale:1; }
.dv-board .dv-facefig.is-in .dv-lumi { opacity:1; scale:1; transition-delay:1.3s; }
.dv-board .dv-facefig .dv-hair { transform:scaleX(0); transform-origin:0 50%; transition:transform .5s var(--dv-ease); }
.dv-board .dv-facefig.is-in .dv-hair { transform:scaleX(1); }
.dv-board .dv-facefig.is-in i.dv-hair:nth-of-type(1) { transition-delay:.3s; }
.dv-board .dv-facefig.is-in .dv-wave { transition-delay:.55s; }
.dv-board .dv-facefig.is-in i.dv-hair:nth-of-type(2) { transition-delay:1.1s; }
.dv-board .dv-facefig .dv-ph { margin-top:24px; }
/* ---- [BREATH] 三拍：左频谱从左往右画 → 虚线截止线横穿两张 → 右频谱在线以上填满（主张就在这一拍） ---- */
.dv-board .dv-breathfig { padding:40px; gap:32px; }
.dv-board .dv-bigwave { gap:24px; }
.dv-board .dv-specs { gap:32px; }
.dv-board .dv-spec { gap:10px 12px; }
.dv-board .dv-spec-plot { background:var(--dv-lav2); border-radius:12px; }
.dv-board .dv-spec-axis { color:var(--dv-ink45); font-size:10px; }
.dv-plate .dv-spec-lab { color:var(--dv-ink6); }
.dv-plate .dv-spec.is-ours .dv-spec-lab { color:var(--dv-pur); }
.dv-board .dv-cut { border-top:1.5px dashed var(--dv-pur); transform:scaleX(0); transform-origin:0 50%; transition:transform .8s var(--dv-ease); }
.dv-plate .dv-cut .dv-mono { color:var(--dv-pur); font-size:10px; opacity:0; transition:opacity .4s ease; }
.dv-board .dv-breathfig .dv-spec-plot canvas { clip-path:inset(0 100% 0 0); transition:clip-path 1.2s var(--dv-ease); }
.dv-board .dv-breathfig .dv-spec.is-ours .dv-spec-plot canvas { clip-path:inset(var(--cut,50%) 100% 0 0); }
.dv-board .dv-breathfig.is-s1 .dv-spec-plot canvas { clip-path:inset(0 0 0 0); }
.dv-board .dv-breathfig.is-s1 .dv-spec.is-ours .dv-spec-plot canvas { clip-path:inset(var(--cut,50%) 0 0 0); }
.dv-board .dv-breathfig.is-s2 .dv-cut { transform:scaleX(1); }
.dv-board .dv-breathfig.is-s2 .dv-spec.is-ours .dv-cut { transition-delay:.4s; }
.dv-board .dv-breathfig.is-s2 .dv-cut .dv-mono { opacity:1; transition-delay:.75s; }
.dv-board .dv-breathfig.is-s2 .dv-spec.is-ours .dv-cut .dv-mono { transition-delay:1.1s; }
.dv-board .dv-breathfig.is-s3 .dv-spec.is-ours .dv-spec-plot canvas { clip-path:inset(0 0 0 0); transition-duration:1s; }
/* ---- [ROOM] 往返图：云端一颗点慢慢出去再回来，ours 一颗点在盒子里快跑 ---- */
.dv-board .dv-roomfig { display:grid; justify-items:center; padding:40px; }
.dv-board .dv-roomfig .dv-diagram { width:100%; max-width:720px; height:auto; }
.dv-plate .dv-svg-box { stroke:var(--dv-pur40); stroke-width:1; stroke-dasharray:5 5; }
.dv-plate .dv-svg-box.is-ours { stroke:var(--dv-pur); stroke-width:1.5; stroke-dasharray:none; }
.dv-plate .dv-svg-txt { fill:var(--dv-ink); font-size:13px; font-weight:600; }
.dv-plate .dv-svg-lab { fill:var(--dv-ink6); font-size:11px; letter-spacing:.16em; }
.dv-plate .dv-svg-lab.is-ours { fill:var(--dv-pur); }
.dv-plate .dv-flow { stroke:var(--dv-pur40); stroke-width:2; stroke-dasharray:6 6; }
.dv-plate .dv-flow-ours { stroke:var(--dv-pur); stroke-width:2.5; }
.dv-board [data-nf].is-in .dv-flow-cloud { animation-duration:3.8s; }
.dv-dot { fill:var(--dv-pur); opacity:0; transition:opacity .4s ease .9s; }
.dv-dot-cloud { opacity:0; }
.dv-board .dv-roomfig.is-in .dv-dot { opacity:1; }
.dv-board .dv-roomfig.is-in .dv-dot-cloud { opacity:.7; }
/* ---- [METER] OURS 紫柱先落且短，其余淡紫一根根长出来；数值在柱落定后才出现 ---- */
.dv-board .dv-charts { display:grid; grid-template-columns:1fr 1fr; gap:48px 64px; padding:40px; }
.dv-plate .dv-chart-t { margin:0 0 28px; color:var(--dv-ink); font-size:20px; line-height:28px; font-weight:600; letter-spacing:-.01em; }
.dv-board .dv-bars { gap:16px; }
.dv-board .dv-bar { grid-template-columns:minmax(0,12em) minmax(0,1fr) auto; gap:16px; }
.dv-plate .dv-bar .dv-mono { font-size:12px; letter-spacing:.14em; color:var(--dv-ink6); }
.dv-plate .dv-bar b { font-size:12px; letter-spacing:.06em; color:var(--dv-ink6); opacity:0; transition:opacity .4s ease; }
.dv-plate .dv-bar i { height:32px; border-radius:8px; background:var(--dv-lav); transition:transform .9s var(--dv-ease); }
.dv-plate .dv-bar.is-ours .dv-mono, .dv-plate .dv-bar.is-ours b { color:var(--dv-pur); }
.dv-plate .dv-bar.is-ours i { background:var(--dv-pur); }
.dv-board .dv-charts .dv-bar:nth-child(1) i { transition:transform .6s var(--dv-ease) .15s; }
.dv-board .dv-charts .dv-bar:nth-child(2) i { transition-delay:.85s; }
.dv-board .dv-charts .dv-bar:nth-child(3) i { transition-delay:1.15s; }
.dv-board .dv-charts .dv-bar:nth-child(4) i { transition-delay:1.45s; }
.dv-board .dv-charts.is-in .dv-bar b { opacity:1; }
.dv-board .dv-charts.is-in .dv-bar:nth-child(1) b { transition-delay:.7s; }
.dv-board .dv-charts.is-in .dv-bar:nth-child(2) b { transition-delay:1.6s; }
.dv-board .dv-charts.is-in .dv-bar:nth-child(3) b { transition-delay:1.9s; }
.dv-board .dv-charts.is-in .dv-bar:nth-child(4) b { transition-delay:2.2s; }
.dv-board .dv-charts .dv-ph { margin-top:20px; }
/* ---- [IMPROVE] BASE 先在，CANDIDATE 滑进来盖在上面，改动那行擦亮，PRESERVE / CHANGE 落定 ---- */
.dv-board .dv-improvefig { padding:40px; }
.dv-board .dv-improvefig .dv-still { max-width:720px; width:100%; margin:0 auto; gap:0; }
.dv-plate .dv-rcard { background:var(--dv-lav2); color:var(--dv-ink); border-radius:16px; padding:20px 24px 22px; gap:8px; }
.dv-plate .dv-rcard .dv-mono { color:var(--dv-ink6); }
.dv-plate .dv-rcard .dv-field { color:var(--dv-ink45); font-size:8px; }
.dv-plate .dv-rcard p { font-size:15px; line-height:1.5; color:var(--dv-ink); }
.dv-plate .dv-rcard p.is-muted { color:var(--dv-ink45); }
.dv-plate .dv-rcard.is-cand { position:relative; z-index:1; margin-top:-14px; background:var(--dv-lav); opacity:0; translate:0 -20px; transition:opacity .7s var(--dv-ease) .55s, translate .7s var(--dv-ease) .55s; }
.dv-board .dv-improvefig.is-in .dv-rcard.is-cand { opacity:1; translate:0 0; }
.dv-plate .dv-rcard p.is-diff { position:relative; isolation:isolate; background:none; color:var(--dv-ink); padding:6px 10px; border-radius:8px; transition:color .25s ease 1.35s; }
.dv-plate .dv-rcard p.is-diff::before { content:""; position:absolute; inset:0; z-index:-1; border-radius:8px; background:var(--dv-pur); transform:scaleX(0); transform-origin:0 50%; transition:transform .55s var(--dv-ease) 1.2s; }
.dv-board .dv-improvefig.is-in .dv-rcard p.is-diff { color:#fff; }
.dv-board .dv-improvefig.is-in .dv-rcard p.is-diff::before { transform:scaleX(1); }
.dv-plate .dv-chip { background:rgba(113,128,255,.18); color:var(--dv-ink); rotate:-6deg; translate:0 8px; opacity:0; transition:rotate .7s var(--dv-ease) 1.65s, translate .7s var(--dv-ease) 1.65s, opacity .5s ease 1.65s; }
.dv-plate .dv-chip.is-on { background:var(--dv-pur); color:#fff; rotate:6deg; transition-delay:1.8s; }
.dv-board .dv-improvefig.is-in .dv-chip { rotate:0deg; translate:0 0; opacity:1; }
.dv-plate .dv-rfoot { margin-top:20px; padding-top:20px; border-top:1px dashed var(--dv-pur40); color:var(--dv-ink6); font-size:15px; }
.dv-plate .dv-rfoot .dv-cta-white { background:var(--dv-lav); color:var(--dv-pur); }
.dv-plate .dv-rfoot .dv-cta-white:hover { background:var(--dv-pur); color:#fff; }
.dv-board .dv-foot-road { text-align:left; }
.dv-board .dv-foot-road .dv-mono { color:rgba(255,255,255,.5); }
/* ---- close ---- */
.dv-board .dv-close-line { font-size:44px; line-height:52px; letter-spacing:-.024em; }
/* ---- 固定 nav 过白 plate：整条 nav 垫一块同色紫，白字不会消失（plate 在 1172 容器里，nav 左右两组链接都跨进容器） ---- */
body.c2-palmer-page .nc1-nav.is-over-plate { background:#7180ff!important; }
body.c2-palmer-page .nc1-nav { transition:background .25s ease; }
/* ---- 断点 ---- */
@media (max-width:1024px) {
  .dv-board .dv-sec { padding:80px 24px; }
  .dv-board .dv-sec-first { padding-top:136px; }
  .dv-board .dv-in { gap:36px; }
  .dv-sec .dv-head h2.dv-h2 { font-size:40px; line-height:48px; }
  .dv-board .dv-plate { padding:32px; }
  .dv-board .dv-charts { grid-template-columns:1fr; gap:40px; }
  .dv-board .dv-panel { grid-template-columns:240px minmax(0,1fr); }
  .dv-board .dv-plate .dv-lumi { width:160px; }
  .nf-faq > .nf-faq-grid { grid-template-columns:1fr; }
  .nf-faq-head { position:static; }
}
@media (max-width:767px) {
  .dv-board .dv-sec { padding:64px 16px; }
  .dv-board .dv-sec-first { padding-top:112px; }
  .dv-board .dv-sec-close { padding:32px 16px 96px; }
  .dv-board .dv-in { gap:28px; }
  .dv-board .dv-head, .dv-board .dv-head-copy { gap:12px; }
  .dv-sec .dv-head h2.dv-h2 { font-size:30px; line-height:36px; }
  html[data-lang="ja"] .dv-sec .dv-head h2.dv-h2 { font-size:26px; }
  .dv-board .dv-sub { font-size:16px; line-height:24px; }
  .dv-board .dv-foot { margin-top:-8px; }
  .dv-board .dv-plate { padding:20px; border-radius:20px; }
  .dv-board .dv-cards4 { gap:12px; }
  .dv-board .dv-acard { min-height:200px; padding:14px; border-radius:18px; }
  .dv-board .dv-acard-strip { padding:8px 4px 0; }
  .dv-board .dv-wave-dots { height:48px; }
  .dv-board .dv-acard-bar { padding:6px 6px 6px 14px; }
  .dv-board .dv-heroplate { gap:24px; padding:20px 16px; }
  .dv-board .dv-wave-lg { height:72px; }
  .dv-board .dv-panel { grid-template-columns:1fr; }
  .dv-board .dv-panel-list { padding:12px; gap:4px; border-right:0; border-bottom:1px dashed var(--dv-pur40); }
  .dv-board .dv-panel .dv-tag { min-height:38px; border-radius:10px; }
  .dv-board .dv-panel-main { padding:20px 16px 12px; min-height:0; }
  .dv-board .dv-panel p.dv-line { font-size:17px; line-height:26px; }
  .dv-board .dv-facefig { padding:20px; }
  .dv-board .dv-plate .dv-lumi { width:120px; }
  .dv-board .dv-breathfig { padding:20px; gap:24px; }
  .dv-board .dv-specs { gap:24px; }
  .dv-board .dv-roomfig { padding:20px 12px; }
  .dv-board .dv-charts { padding:20px; gap:32px; }
  .dv-board .dv-bar { grid-template-columns:minmax(0,7em) minmax(0,1fr) auto; gap:12px; }
  .dv-plate .dv-bar .dv-mono { font-size:10px; letter-spacing:.12em; }
  .dv-plate .dv-bar i { height:24px; border-radius:6px; }
  .dv-board .dv-improvefig { padding:20px; }
  .dv-plate .dv-rcard { padding:16px 18px; }
  .dv-board .dv-close-line { font-size:30px; line-height:36px; }
}
/* ---- 减动效：一切静止在终态 ---- */
@media (prefers-reduced-motion:reduce) {
  .dv-board .dv-acard, .dv-board .dv-facefig .dv-face-tag, .dv-board .dv-facefig .dv-lumi, .dv-board .dv-facefig .dv-hair, .dv-plate .dv-rcard.is-cand, .dv-plate .dv-chip, .dv-plate .dv-bar b, .dv-dot { opacity:1; translate:0 0; scale:1; rotate:0deg; transform:none; transition:none; }
  .dv-board .dv-breathfig .dv-spec-plot canvas, .dv-board .dv-breathfig .dv-spec.is-ours .dv-spec-plot canvas { clip-path:none; transition:none; }
  .dv-board .dv-cut { transform:none; transition:none; }
  .dv-plate .dv-cut .dv-mono { opacity:1; }
  .dv-plate .dv-rcard p.is-diff { color:#fff; }
  .dv-plate .dv-rcard p.is-diff::before { transform:none; transition:none; }
  .dv-tag-pill { transition:none; }
  #dvTagWave rect { transition:none; }
  .dv-board .dv-line-tag.is-swap::after { animation:none; }
  .dv-dot-cloud { opacity:.7; }
}
/* r7 校准（截图后）：① JA 的 VOICE 两句各占一行（「そ」孤字）；② 390 往返图字号放大一档（1:1 缩到 330 时 13px 变 8px）；③ 390 柱图标签允许折行，不截成 ON-DEVI… */
.dv-h2 .dv-l { display:block; }
@media (max-width:767px) {
  .dv-plate .dv-svg-txt { font-size:18px; }
  .dv-plate .dv-svg-lab { font-size:15px; letter-spacing:.12em; }
  .dv-plate .dv-svg-box { stroke-width:1.5; }
  .dv-plate .dv-bar .dv-mono { white-space:normal; overflow:visible; line-height:1.3; }
}

/* ======================================================================
   0904 mira r8 · 她看 r7：
   ① 「背后肯定还是要有那个透明的那个框吧」→ 每个 zone 的 .dv-in 就是透白 sheet（.14 · 圆角 32 · 无边框 · 内距 48），文案坐在 sheet 上、白 plate 之上；r7 的白 plate 原样保留。
   ② 「这个 wave 也太丑了」→ 波形改成发丝竖线（1.25px · 紫 .55 · 2.75px 间距 · 以中线镜像 · 圆头），像音频信号不像柱状图；VOICE 卡通铺到卡边、底下一条淡中线；播放进度 = 走过的发丝变实紫。样本 = 真 JSON 360 桶。
   ③ sound-stories home-b 的 .ripple-effect → FOR DEVELOPERS 巨字后面（三环 1352 · 从字心外扩 3.6s · 错 1.2s · 末三分之一淡出 · 循环）；VOICE 播放键后面一个小的（三环 · 1.6s · 每按一次一趟）。
   ④ seven-nine 版式（refs/seven-nine/studies-style-0.css 真值）：眉题 = 1px 描边药丸 12px 大写（--radius--tag 32）→ 32（--spacing--xx-small）→ 一整句粗体段落标题 52/1.1 占 ~64% 宽（h2 52/60 -3px）→ 大留白 → 图；section-padding--medium 120 = sheet 与 sheet 之间；
      进场：标题按词从下滑入 + 淡入、图升 40px、同 zone 内每件错 80ms、.9s ease-out（他家 IX 只读到 .7s opacity，位移取 brief 值）。
   ⑤ [AGENT] = seven-nine home 首块：chip 浮左上、句子绕排、右上 READ THE QUICKSTART ↗（quill Round 9）。
   ⑥ FAQ 回 lill 的 neuralflow 手风琴（r7 的白行撤），坐同一张透白 sheet；⑦ 页末巨字 ANI / WAFFLE；⑧ Start 带撤毛玻璃，改平的透白 .2。
   ====================================================================== */
.dv-board { --dv-sheet:rgba(255,255,255,.14); --sn-ease:cubic-bezier(.22,1,.36,1); --dv-font:var(--font,"Proxima Nova","proxima-nova","Inter",-apple-system,sans-serif); }
/* ---- ① sheet 节奏：section 上下各 60 = sheet 间 120；首段顶 140；sheet 内距 48 ---- */
.dv-board .dv-sec { padding:60px 24px; }
.dv-board .dv-sec-first { padding-top:140px; }
.dv-board .dv-sec-close { padding:60px 24px 128px; }
.dv-board .dv-sec .dv-in { box-sizing:border-box; background:var(--dv-sheet); border-radius:32px; padding:48px; gap:0; }
.dv-board .dv-sec-close .dv-in.dv-close { background:none; border-radius:0; padding:0; }
/* ---- ④ 眉题 chip → 32 → 标题 → 24 → 副句；head → 图 128（他家 4-column-gap 160 / 64 两档，sheet 里取 4×32）；图 → 脚注 32 ---- */
.dv-board .dv-head, .dv-board .dv-head-copy { gap:0; }
.dv-board .dv-in > .dv-head { margin-bottom:128px; }
.dv-board .dv-marker, .nf-faq .dv-marker { display:inline-flex; align-self:flex-start; align-items:center; box-sizing:border-box; height:24px; margin:0 0 32px; padding:0 9px; border:1px solid rgba(255,255,255,.72); border-radius:32px; font:600 12px/1 var(--dv-font); letter-spacing:.02em; text-transform:uppercase; color:#fff; white-space:nowrap; }
.dv-board .dv-sub { margin-top:24px; font-size:18px; line-height:28px; max-width:34em; }
.dv-board .dv-foot { margin-top:32px; }
.dv-board .dv-foot-road { margin-top:32px; }
.dv-sec .dv-head h2.dv-h2 { font-size:52px; line-height:1.1; letter-spacing:-.03em; font-weight:700; max-width:64%; color:#fff; }
.dv-h2 .dv-l { display:inline; }
html[data-lang="ja"] .dv-h2 .dv-l { display:block; }
html[data-lang="ja"] .dv-sec .dv-head h2.dv-h2 { font-size:40px; line-height:1.4; letter-spacing:0; max-width:80%; }
/* 标题按词从下滑入：每词一层 overflow clip 的壳，里层从 110% 升到 0；壳留 .16em 底距给降部（g y p），margin 抵回 */
.dv-sec .dv-head h2.dv-h2[data-nf] { opacity:1; transform:none; transition:none; }
.dv-h2 .dv-w { display:inline-block; overflow:clip; vertical-align:top; padding:.04em 0 .18em; margin:-.04em 0 -.18em; }
.dv-h2 .dv-w > span { display:inline-block; transform:translateY(112%); opacity:0; transition:transform .9s var(--sn-ease) var(--wd,0ms), opacity .5s ease var(--wd,0ms); }
.dv-h2.is-in .dv-w > span { transform:none; opacity:1; }
/* 图升 40px，其余件 .9s ease-out，错拍由 js 写 --nf-d（80ms 一拍） */
.dv-board [data-nf].is-in { transition:opacity .9s var(--sn-ease) var(--nf-d,0ms), transform .9s var(--sn-ease) var(--nf-d,0ms); }
.dv-board .dv-fig[data-nf], .dv-board .dv-cards4[data-nf] { transform:translate3d(0,40px,0); }
.dv-board .dv-fig[data-nf].is-in, .dv-board .dv-cards4[data-nf].is-in { transform:none; }
/* ---- ⑤ [AGENT]：chip 浮左（他家 .p_studies text-indent 的效果），句子绕排；右上链接 = 他家 cta_tertiary（大写 · 下划线 1px · 箭头字形） ---- */
.dv-board .dv-head-sn { display:flex; flex-direction:row; align-items:flex-start; justify-content:space-between; gap:32px; }
.dv-board .dv-head-copy-sn { display:block; max-width:64%; } /* r8b：药丸撤，句子顶格 */
.dv-board .dv-marker-float { float:left; margin:16px 24px 0 0; }
html[data-lang="ja"] .dv-board .dv-marker-float { margin-top:15px; }
.dv-board .dv-head-copy-sn h2.dv-h2 { max-width:none; }
.dv-link-sn { flex:none; margin-top:18px; color:#fff; font:600 15px/20px var(--dv-font); letter-spacing:-.01em; text-transform:uppercase; text-decoration:underline; text-underline-offset:6px; text-decoration-thickness:1px; text-decoration-color:rgba(255,255,255,.55); white-space:nowrap; transition:text-decoration-color .25s ease, color .25s ease; }
.dv-link-sn:hover { text-decoration-color:#fff; }
.dv-link-sn:focus-visible { outline:2px solid #fff; outline-offset:4px; border-radius:4px; }
.dv-plate-ink .dv-code-cap { display:block; padding:20px 24px 0; color:rgba(255,255,255,.55); font-size:11px; letter-spacing:.14em; text-transform:uppercase; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dv-plate-ink .dv-code-cap + .dv-code { padding-top:14px; }
/* ---- ② 发丝波形 ---- */
.dv-wave { height:64px; }
.dv-wave svg { overflow:visible; }
.dv-wave .w-mid { stroke:rgba(113,128,255,.16); stroke-width:1; }
.dv-plate .dv-wave .w-base, .dv-board .dv-wave .w-base { fill:none; stroke:rgba(113,128,255,.55); stroke-width:1.25; stroke-linecap:round; }
.dv-plate .dv-wave .w-fill, .dv-board .dv-wave .w-fill { fill:none; stroke:#7180ff; stroke-width:1.25; stroke-linecap:round; }
.dv-wave-mini { width:56px; height:16px; }
.dv-wave-mini .w-base { stroke:currentColor; stroke-width:1; opacity:.5; }
.dv-wave-mini .w-mid { display:none; }
.dv-wave-mini .w-fill { display:none; }
.dv-board .dv-wave-lg { height:112px; }
.dv-board .dv-wave-md { height:72px; }
#dvTagWave rect { transition:none; }
/* VOICE 卡：波形通铺到卡边（strip 抵掉卡内距、顶部圆角随卡），中线在 svg 里一起画 */
.dv-board .dv-acard { padding:0 20px 20px; }
.dv-board .dv-acard-strip { display:grid; align-items:center; margin:0 -20px; padding:0; border-radius:24px 24px 0 0; overflow:hidden; }
.dv-board .dv-wave-dots { height:128px; width:100%; }
.dv-board .dv-cards4 .dv-wave-dots .w-mid { stroke:rgba(113,128,255,.2); }
/* ---- ③ 涟漪 · 幕后（r8b 重做 = sound-stories .wave-big 原方）：环 = padding 1px 的竖向渐变（白 .5 → .2 → .05 → .2 → .5，上下亮两侧淡）+ 内盘场紫；
   三环 1352，0 → 1 缩放 3.5s、错 1.2s、末三分之一淡出、循环；中心一枚软光盘（白 .06）随每环起步脉动一次；眉题坐在环心之上 ---- */
.o1-d2 { isolation:isolate; }
.o1-d2 .o1-eyebrow { position:relative; z-index:4; }
@keyframes dv-rip-scale { from { transform:scale(0); } to { transform:scale(1); } }
@keyframes dv-rip-fade { 0% { opacity:1; } 66% { opacity:1; } 100% { opacity:0; } }
/* 涟漪 · VOICE 播放键后：三环 140px，1.6s 一趟，按一次跑一次 */
.dv-board .dv-cards4 .dv-play { position:relative; isolation:isolate; overflow:visible; }
.dv-board .dv-cards4 .dv-play > i { position:relative; z-index:1; }
.dv-rip { position:absolute; inset:0; z-index:0; display:grid; place-items:center; pointer-events:none; }
.dv-rip b { display:block; position:absolute; width:150px; aspect-ratio:1; border-radius:50%; transform:scale(0); opacity:0; background:linear-gradient(rgba(113,128,255,.7), rgba(113,128,255,.28) 50%, rgba(113,128,255,.08) 75%, rgba(113,128,255,.28) 88%, rgba(113,128,255,.7)); -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 1.6px), #000 calc(100% - .6px)); mask:radial-gradient(farthest-side, transparent calc(100% - 1.6px), #000 calc(100% - .6px)); }
.dv-play.is-rip .dv-rip b { animation:dv-rip-scale 1.6s cubic-bezier(.16,.84,.3,1) both, dv-rip-fade 1.6s linear both; }
.dv-play.is-rip .dv-rip b:nth-child(2) { animation-delay:.22s; }
.dv-play.is-rip .dv-rip b:nth-child(3) { animation-delay:.44s; }
/* ---- ⑥ FAQ：lill 的手风琴回来，坐同一张 sheet；head 同 zone 标题尺 ---- */
.nf > section.nf-sheet.nf-faq { background:none; border-radius:0; padding:60px 24px 128px; }
.nf-faq > .nf-faq-grid { box-sizing:border-box; max-width:1172px; margin:0 auto; padding:48px; background:var(--dv-sheet,rgba(255,255,255,.14)); border-radius:32px; grid-column-gap:64px; }
.nf-faq-head .nf-display-9 { color:#fff; font-size:52px; line-height:1.1; letter-spacing:-.03em; font-weight:700; }
html[data-lang="ja"] .nf-faq-head .nf-display-9 { font-size:40px; line-height:1.4; letter-spacing:0; }
.nf-faq-head .dv-marker-static { margin-bottom:32px; }
.nf-faq-more { color:rgba(255,255,255,.85); }
.nf-acc .nf-acc-q { color:#fff; }
/* ---- ⑦ 页末巨字 ANI / WAFFLE：上行放大一档 + 字距撑宽，块才压得平 ---- */
.aw-start .mm-start-word .w1 { font-size:30vw; letter-spacing:.1em; padding-left:.1em; }
.aw-start .mm-start-word .w2 { font-size:22.6vw; letter-spacing:-.03em; }
/* ---- ⑧ Start 带：撤 blur，平的透白 .2，白裙不再糊进来 ---- */
/* r8b · 她：「Lumi 要在后面吧」→ Lumi 回 r3e（92vh、沉进带里 16vh，裙摆的直切藏在带后，带在前）；
   白字压白裙的可读性另解：右列（副句 + 两个 CTA）后面垫一块平的紫透底（场紫 .58，圆角 20），不用 blur，带本身仍是透白 .2 */
.aw-start .mm-lumi-art { height:92vh; bottom:6vh; }
.aw-start .mm-start { z-index:3; }
/* r8d · 她：「这也是毛玻璃的，比较好看，也能遮得住那个 Lumi」→ 带回毛玻璃（白 .2 + blur 22，无边框），右列的紫透垫撤，改同一配方第二层玻璃（白 .16 + blur 22） */
.aw-start .mm-start, .mm-start { background:rgba(255,255,255,.2); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }
.mm-lumiscreen { --band-blur:22px; }
.aw-start .mm-start-side { position:relative; padding:20px 24px; border-radius:20px; background:rgba(255,255,255,.16); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }
@media (max-width:767px) { .aw-start .mm-start-side { padding:16px 18px; } }
/* （r8 的撤 blur 两行已被 r8d 末尾的毛玻璃规则取代） */
/* ---- 断点 ---- */
@media (max-width:1024px) {
  .dv-board .dv-sec { padding:48px 24px; }
  .dv-board .dv-sec-first { padding-top:128px; }
  .dv-board .dv-sec .dv-in { padding:32px; border-radius:28px; }
  .dv-board .dv-in > .dv-head { margin-bottom:80px; }
  .dv-board .dv-marker { margin-bottom:24px; }
  .dv-sec .dv-head h2.dv-h2 { font-size:44px; line-height:1.1; max-width:80%; }
  .dv-board .dv-head-copy-sn { max-width:78%; }
  .dv-board .dv-wave-dots { height:112px; }
  .nf-faq > .nf-faq-grid { padding:32px; border-radius:28px; }
  .nf-faq-head .nf-display-9 { font-size:44px; }
  .aw-start .mm-start-word .w1 { font-size:32vw; }
  .aw-start .mm-start-word .w2 { font-size:26vw; }
}
@media (max-width:767px) {
  .dv-board .dv-sec { padding:24px 16px; }
  .dv-board .dv-sec-first { padding-top:104px; }
  .dv-board .dv-sec-close { padding:24px 16px 96px; }
  .dv-board .dv-sec .dv-in { padding:20px; border-radius:24px; }
  .dv-board .dv-in > .dv-head { margin-bottom:40px; }
  .dv-board .dv-marker { margin-bottom:20px; height:22px; font-size:11px; }
  .dv-sec .dv-head h2.dv-h2 { font-size:32px; line-height:1.1; max-width:none; }
  html[data-lang="ja"] .dv-sec .dv-head h2.dv-h2 { font-size:26px; max-width:none; }
  .dv-board .dv-sub { margin-top:16px; font-size:16px; line-height:24px; }
  .dv-board .dv-foot { margin-top:20px; }
  .dv-board .dv-head-sn { flex-direction:column; gap:20px; }
  .dv-board .dv-head-copy-sn { max-width:none; }
  .dv-board .dv-marker-float { float:none; display:inline-flex; margin:0 0 20px; }
  .dv-plate-ink .dv-code-cap { padding:16px 16px 0; font-size:10px; }
  .dv-link-sn { margin-top:0; }
  .dv-board .dv-cards4 { grid-template-columns:repeat(2,minmax(0,1fr)); } /* 1fr 1fr 的 auto 最小宽被胶囊行撑到 189，两张卡溢出 sheet 13px */
  .dv-board .dv-acard { padding:0 14px 14px; }
  .dv-board .dv-acard-bar { padding:4px 4px 4px 10px; gap:6px; }
  .dv-board .dv-acard-bar .dv-play { width:36px; height:36px; }
  .dv-plate .dv-acard-bar .dv-mono { font-size:9px; letter-spacing:.03em; min-width:0; }
  .dv-board .dv-acard-strip { margin:0 -14px; border-radius:18px 18px 0 0; }
  .dv-board .dv-wave-dots { height:88px; }
  .dv-board .dv-wave-lg { height:72px; }
  .dv-rip b { width:110px; }
  .nf > section.nf-sheet.nf-faq { padding:24px 16px 96px; }
  .nf-faq > .nf-faq-grid { padding:20px; border-radius:24px; }
  .nf-faq-head .nf-display-9 { font-size:32px; line-height:1.1; }
  .nf-faq-head .dv-marker-static { margin-bottom:20px; }
  .aw-start .mm-start-word .w1 { font-size:34vw; }
  .aw-start .mm-start-word .w2 { font-size:28vw; }
}
@media (prefers-reduced-motion:reduce) {
  .dv-h2 .dv-w > span { transform:none; opacity:1; transition:none; }
  .dv-board .dv-fig[data-nf], .dv-board .dv-cards4[data-nf] { transform:none; }
  .dv-play.is-rip .dv-rip b { animation:none; }
}

/* ======================================================================
   0904 mira r8c
   ① 「developer 上来之后，这页应该是往上滑的」→ dictation-landing index-v2 的 lesa 机制（.pin sticky 100vh + 下一段普通流上盖）：
      舞台跑道 +1VH（js RELEASE 7.7），#developers 负外距 -100vh、z 压在舞台之上，随滚动从底下升上来盖住 FOR DEVELOPERS 幕；
      板 = 1320 宽、顶角 32 的场紫实底（盖住涟漪），首块透白框贴板顶 = 升起时的那层皮；.nf 前 100vh 透明，两侧的涟漪一直跑到被盖住。
   ② 「边框就是背景框，再宽一些」→ 框 1320（视口两侧各留 60），内容仍 1172 居中（框内距 74）；1024 两侧 32。
   ③ [DECK] 前沿散点（Dave p2）：轴描画 → 灰点依次弹出 → 虚线前沿画出 → 线上淡区 → OURS 带箭头最后落。
   ====================================================================== */
body.c2-palmer-page .dv.nf { position:relative; z-index:10; margin-top:-100vh; background:none; }
body.c2-palmer-page .dv.nf::before { content:""; position:absolute; left:0; right:0; top:100vh; bottom:0; z-index:-1; background:#7180ff; }
.nf > .nf-sheet.dv-board { max-width:1320px; margin:0 auto; padding:0; border-radius:32px 32px 0 0; background:#7180ff; }
.dv-board .dv-sec { padding:60px 0; }
.dv-board .dv-sec-first { padding-top:0; }
.dv-board .dv-sec-close { padding:60px 74px 128px; }
.dv-board .dv-in { max-width:none; }
.dv-board .dv-sec .dv-in { padding:48px 74px; }
.dv-in.dv-close { max-width:none; }
.nf > section.nf-sheet.nf-faq { padding:60px 60px 128px; }
.nf-faq > .nf-faq-grid { max-width:1320px; padding:48px 74px; }
/* ---- [DECK] ---- */
.dv-board .dv-deckfig { padding:40px 40px 32px; }
.dv-deck { display:block; width:100%; max-width:960px; height:auto; margin:0 auto; overflow:visible; font-family:var(--dv-font); }
.dk-lab { fill:var(--dv-ink6); font:600 11px var(--dv-mono); letter-spacing:.16em; }
.dk-better { fill:var(--dv-ink45); }
.dk-name { fill:var(--dv-ink); font:500 13px var(--dv-font); letter-spacing:0; }
.dk-axis { fill:none; stroke:var(--dv-ink45); stroke-width:1; stroke-linecap:round; stroke-linejoin:round; stroke-dasharray:1; stroke-dashoffset:1; transition:stroke-dashoffset .9s var(--dv-ease); }
.dk-frontier { fill:none; stroke:var(--dv-pur40); stroke-width:1.5; stroke-dasharray:7 6; stroke-linecap:round; clip-path:inset(0 100% 0 0); transition:clip-path 1.2s var(--dv-ease) 1.1s; }
.dk-flab { opacity:0; transition:opacity .4s ease 2.2s; }
.dk-region { fill:rgba(113,128,255,.06); opacity:0; transition:opacity .8s ease 1.8s; }
.dk-dot { fill:#d9d6ff; }
.dk-pt { transform-box:fill-box; transform-origin:center; scale:0; opacity:0; transition:scale .5s var(--dv-ease) calc(.55s + var(--i) * .12s), opacity .3s ease calc(.55s + var(--i) * .12s); }
.dk-arrow { fill:none; stroke:var(--dv-pur); stroke-width:1.5; stroke-dasharray:.03 .02; stroke-linecap:round; stroke-linejoin:round; opacity:0; transition:opacity .3s ease 2.4s; }
.dk-outside { fill:var(--dv-pur); opacity:0; transition:opacity .4s ease 3s; }
.dk-ours circle { fill:var(--dv-pur); }
.dk-ours { transform-box:fill-box; transform-origin:center; scale:0; opacity:0; transition:scale .6s cubic-bezier(.34,1.56,.64,1) 2.7s, opacity .3s ease 2.7s; }
.dk-ours-name { fill:var(--dv-pur); font-weight:700; letter-spacing:.06em; }
.dv-deckfig.is-in .dk-axis { stroke-dashoffset:0; }
.dv-deckfig.is-in .dk-frontier { clip-path:inset(0 0 0 0); }
.dv-deckfig.is-in .dk-flab, .dv-deckfig.is-in .dk-region, .dv-deckfig.is-in .dk-arrow, .dv-deckfig.is-in .dk-outside, .dv-deckfig.is-in .dk-pt, .dv-deckfig.is-in .dk-ours { opacity:1; }
.dv-deckfig.is-in .dk-pt, .dv-deckfig.is-in .dk-ours { scale:1; }
.dv-deck-legend { display:flex; flex-wrap:wrap; justify-content:center; gap:12px 28px; margin-top:24px; color:var(--dv-ink6); font-size:11px; }
.dv-deck-legend > span { display:inline-flex; align-items:center; gap:8px; }
.dv-deck-legend i { display:block; width:10px; height:10px; border-radius:50%; }
.dv-deck-legend .lg-ours { background:var(--dv-pur); }
.dv-deck-legend .lg-other { background:#d9d6ff; }
.dv-deck-legend .lg-front { width:22px; height:0; border-radius:0; border-top:1.5px dashed var(--dv-pur40); }
.dv-deckfig .dv-ph { display:block; margin-top:16px; }
html[data-lang="ja"] .dk-lab { font-family:"Noto Sans JP",var(--dv-font); letter-spacing:.08em; }
html[data-lang="ja"] .dk-name { font-family:"Noto Sans JP",var(--dv-font); }
@media (max-width:1024px) {
  .nf > .nf-sheet.dv-board { max-width:none; margin:0 32px; border-radius:28px 28px 0 0; }
  .dv-board .dv-sec { padding:48px 0; }
  .dv-board .dv-sec .dv-in { padding:32px 40px; }
  .dv-board .dv-sec-close { padding:48px 40px 128px; }
  .nf > section.nf-sheet.nf-faq { padding:48px 32px 128px; }
  .nf-faq > .nf-faq-grid { padding:32px 40px; }
  .dv-board .dv-deckfig { padding:32px 24px 24px; }
  .dk-name { font-size:15px; } .dk-lab { font-size:12px; }
}
@media (max-width:767px) {
  .nf > .nf-sheet.dv-board { margin:0 16px; border-radius:24px 24px 0 0; }
  .dv-board .dv-sec { padding:24px 0; }
  .dv-board .dv-sec .dv-in { padding:20px; }
  .dv-board .dv-sec-close { padding:24px 20px 96px; }
  .nf > section.nf-sheet.nf-faq { padding:24px 16px 96px; }
  .nf-faq > .nf-faq-grid { padding:20px; }
  .dv-board .dv-deckfig { padding:16px 8px 16px; }
  .dk-name { font-size:22px; } .dk-lab { font-size:16px; letter-spacing:.1em; }
  .dk-dot { r:9px; } .dk-ours circle { r:16px; }
  .dv-deck-legend { gap:8px 18px; }
}
@media (prefers-reduced-motion:reduce) {
  .dk-axis { stroke-dashoffset:0; transition:none; } .dk-frontier { clip-path:none; transition:none; }
  .dk-flab, .dk-region, .dk-arrow, .dk-outside, .dk-pt, .dk-ours { opacity:1; scale:1; transition:none; }
}

/* r8d · 她：「还是要半透明的吧，或者毛玻璃」→ 上滑的板本身就是透白框（白 .14 平底，无 blur：blur 在涟漪上没差别，平底和 zone 框同一套），顶角 32；
   板底再垫一层场紫，透明度 --b-cover 由 js 按上滑进度写：升起前三分之二透明（涟漪 / 眉题从皮下透出来），眉题走到头行下面那段（.55–.85）淡成实底，落定后不透 */
.nf > .nf-sheet.dv-board { position:relative; isolation:isolate; background:rgb(113 128 255 / var(--b-cover, 1)); }
.nf-sheet.dv-board::before { content:""; display:block; position:absolute; inset:0; z-index:-1; border-radius:inherit; background:rgba(255,255,255,.14); }


/* ======================================================================
   0905 mira · option6 = option5 的内容排布 × option4 r8d 的版式元件（她：「根据 Option 5 的内容排布，换成 Option 4 的版式试试看。上下风格要稍微统一一点」「这个线可能不好」）。
   上面 option4 的全部规则原样保留（sheet .14 / 白 plate / 药丸眉题 / 52·18·44 字阶 / r4 动效 / 幕上滑 / 九个 demo 的入场），这一段只做 seven-nine 骨架落到这套材质上的排版：
   巨字段头 · 三拍叠字 · 编号行 plate · 三卡 / 四卡 · 200vh 影院 · 跑马灯 · 插画白板；seven-nine 的满幅分隔线 / 零圆角 / 大字 tag 列 / off-white 图板全部不进来。
   ====================================================================== */
.o6 .dv-board { --o6-ink-line:rgba(36,28,78,.14); }
.o6 figure { margin:0; }
/* ---- 通用：dv-h2 在 .dv-head 之外也走按词升起（不再淡入位移）；巨字 / 三拍 / 大写 / 段落式 H2 四档 ---- */
.o6 .dv-board .dv-h2[data-nf], .o6 .dv-board .dv-h2[data-nf].is-in { opacity:1; transform:none; transition:none; }
.o6 .dv-board .dv-h2 { color:#fff; font-family:var(--dv-font); }
.o6 .dv-board h2.dv-h2.o6-giant, .o6 .dv-board h3.dv-h2.o6-giant, .o6 .dv-sec .dv-head h2.dv-h2.o6-giant { margin:0; max-width:none; font-size:clamp(44px,7.8vw,112px); line-height:.92; font-weight:700; letter-spacing:-.035em; text-transform:uppercase; text-wrap:balance; }
.o6 .dv-board .o6-giant.is-center { text-align:center; margin-left:auto; margin-right:auto; }
.o6 .dv-board .o6-giant-right { text-align:right; flex:1; }
.o6 .dv-board .dv-h2.o6-caps { margin:0; max-width:none; font-size:44px; line-height:52px; font-weight:700; letter-spacing:-.024em; text-transform:uppercase; }
.o6 .dv-board .dv-h2.o6-caps .dv-l { display:block; }
.o6 .dv-board .dv-h2.o6-caps-lg { font-size:clamp(36px,4.4vw,64px); line-height:1.04; letter-spacing:-.035em; max-width:14em; }
.o6 .dv-board .dv-h2.o6-manifesto { margin:0 0 96px; max-width:1028px; font-size:44px; line-height:52px; font-weight:700; letter-spacing:-.024em; text-transform:uppercase; }
.o6 .dv-sec .dv-head h2.dv-h2.o6-h2-para { font-size:40px; line-height:48px; letter-spacing:-.024em; max-width:64%; }
.o6 .dv-board .dv-h2.o6-h3 { margin:0; max-width:34em; font-size:28px; line-height:36px; font-weight:600; letter-spacing:-.02em; }
.o6 .dv-board .o6-center-line { margin:96px auto 0; text-align:center; max-width:30em; }
html[data-lang="ja"] .o6 .dv-board h2.dv-h2.o6-giant, html[data-lang="ja"] .o6 .dv-board h3.dv-h2.o6-giant, html[data-lang="ja"] .o6 .dv-sec .dv-head h2.dv-h2.o6-giant { font-size:clamp(36px,5.8vw,84px); line-height:1.12; letter-spacing:0; }
html[data-lang="ja"] .o6 .dv-board .dv-h2.o6-caps, html[data-lang="ja"] .o6 .dv-board .dv-h2.o6-manifesto { font-size:34px; line-height:1.45; letter-spacing:0; }
html[data-lang="ja"] .o6 .dv-board .dv-h2.o6-caps-lg { font-size:clamp(30px,3.6vw,52px); line-height:1.3; }
html[data-lang="ja"] .o6 .dv-sec .dv-head h2.dv-h2.o6-h2-para { font-size:32px; line-height:1.5; max-width:80%; }
html[data-lang="ja"] .o6 .dv-board .dv-h2.o6-h3 { font-size:24px; line-height:1.6; letter-spacing:0; }
/* ---- 头行：居中变体；右上链接 = option4 的 dv-link-sn，箭头单独一个字形（p6.link.* 不带箭头） ---- */
.o6 .dv-board .dv-head.o6-center { align-items:center; text-align:center; }
.o6 .dv-board .dv-head.o6-center .dv-marker { align-self:center; }
.o6 .dv-link-sn { display:inline-flex; align-items:baseline; gap:6px; }
.o6 .dv-link-sn .o6-arr { font-style:normal; font-weight:600; transition:translate .3s var(--dv-ease); }
.o6 .dv-link-sn:hover .o6-arr { translate:2px -2px; }
.o6 .dv-link-sn.is-ink { color:var(--dv-ink); text-decoration-color:rgba(36,28,78,.3); margin:0; }
.o6 .dv-link-sn.is-ink:hover { text-decoration-color:var(--dv-ink); }
.o6 .dv-link-sn.is-small { font-size:13px; line-height:18px; }
.o6 .dv-link-sn.is-ink:focus-visible { outline-color:var(--dv-pur); }
/* ---- 眉题药丸：白 plate 上的墨色变体；成组 tags ---- */
.o6 .dv-board .dv-marker.is-ink { margin:0; border-color:rgba(36,28,78,.28); color:var(--dv-ink); }
.o6 .o6-tags { display:flex; flex-wrap:wrap; gap:8px; }
.o6 .o6-tags .dv-marker { margin:0; }
/* ---- 插画板：白 plate 圆角 24（卡里套的一层 = 淡紫 16）；iris 没到的位置留 lill 的 .sn-ph 标签 ---- */
.o6 .o6-ill { position:relative; display:grid; place-items:center; padding:24px; border-radius:24px; background:#fff; overflow:hidden; }
.o6 .o6-ill .sn-ph { position:absolute; inset:0; display:grid; place-items:center; padding:24px; text-align:center; }
.o6 .o6-ill .sn-ph-lab { max-width:22em; font:600 11px/1.7 var(--dv-mono); letter-spacing:.14em; text-transform:uppercase; color:var(--dv-ink45); }
.o6 .o6-ill.has-img .sn-ph { display:none; }
.o6 .o6-ill img { display:block; width:100%; height:100%; object-fit:contain; object-position:50% 50%; }
.o6 .o6-ill.is-inner { border-radius:16px; background:var(--dv-lav2); padding:16px; }
.o6 .o6-ill.is-inner .sn-ph-lab { color:rgba(36,28,78,.5); }
.o6 .o6-ill-hero { aspect-ratio:17 / 9; }
.o6 .o6-ill-hero img { object-position:50% 100%; }
.o6 .o6-ill-desk { aspect-ratio:590 / 350; }
.o6 .o6-ill-tall { aspect-ratio:896 / 1240; }
.o6 .o6-ill.is-square { aspect-ratio:1; }
.o6 .o6-ill-portrait { aspect-ratio:4 / 5; }
.o6 .o6-ill-face { width:min(100%,520px); aspect-ratio:5 / 6; margin:0 auto; }
.o6 .o6-ill-mq { aspect-ratio:664 / 860; padding:16px; }
/* ---- 1.1 HERO：上 = 三拍叠字｜白图板；下 = 头句 52/1.1 绕排 + 右上链接（首块贴板顶，r8c/r8d 升起时的那层皮） ---- */
/* r1b · 板滑到顶落定时 sheet 顶边 = 视口顶（在固定 nav 底下），首块顶内距 = nav 72 + 56，三拍字离 nav 底 ≥ 24 */
.o6 .dv-board .dv-sec-first .dv-in { padding-top:128px; }
/* ---- 1.2 SDK：sheet 里压一束横线波形，四张白 plate 浮在上面 ---- */
.o6 .dv-board .o6-sdk { position:relative; overflow:clip; padding-top:96px; padding-bottom:96px; }
.o6 .o6-bgwave { position:absolute; left:0; right:0; top:16px; bottom:16px; z-index:0; pointer-events:none; }
.o6 .o6-wave-bg { width:100%; height:100%; clip-path:none; --wl-rgb:255,255,255; }
.o6 .o6-sdk-grid { position:relative; z-index:1; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; }
.o6 .dv-board .dv-plate.o6-pkg { display:flex; flex-direction:column; gap:18px; min-height:200px; padding:28px 28px 24px; }
.o6 .o6-pkg-name { font:600 15px/1.3 var(--dv-mono); letter-spacing:0; text-transform:none; color:var(--dv-pur); word-break:break-all; }
.o6 .dv-plate .o6-pkg-name { color:var(--dv-pur); }
.o6 .o6-pkg .dv-marker { margin-top:auto; }
.o6 .nf .dv-plate p.o6-pkg-line, .o6 .dv-plate .o6-pkg-line { margin:0; font-size:16px; line-height:24px; color:var(--dv-ink); }
/* ---- 1.3 APPROACH：宣言块 → 小图板｜眉题 + 一段 + 链接 ---- */
.o6 .o6-approach { display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:64px; align-items:start; }
.o6 .o6-approach-copy { display:flex; flex-direction:column; align-items:flex-start; }
.o6 .o6-approach-copy .dv-sub { margin-top:0; max-width:34em; }
.o6 .o6-approach-copy .dv-link-sn { margin-top:32px; }
/* ---- 1.5 MORE THAN A VOICE：三张白 plate 卡，卡里淡紫图板，卡脚墨字 ---- */
.o6 .o6-cards3 { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.o6 .dv-board .dv-plate.o6-card { display:flex; flex-direction:column; gap:20px; padding:16px 16px 20px; }
.o6 .o6-card-cap { display:flex; flex-wrap:wrap; align-items:baseline; gap:0 8px; margin:0; padding:0 8px; font-size:16px; line-height:24px; }
.o6 .nf .dv-plate p.o6-card-cap { color:var(--dv-ink6); }
.o6 .o6-card-cap b { font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--dv-ink); }
.o6 .o6-card-cap b::after { content:"·"; margin-left:8px; color:var(--dv-pur); }
.o6 .o6-dot { display:none; }
/* ---- 1.6 FIRST CONVERSATION：编号行 = 白 plate；(01) mono 紫 + 标题 | 段 | 图 ---- */
.o6 .o6-rows { display:flex; flex-direction:column; gap:24px; }
.o6 .dv-board .dv-plate.o6-row { display:grid; grid-template-columns:minmax(0,2.6fr) minmax(0,3fr) minmax(0,6fr); grid-template-rows:auto minmax(0,1fr); gap:0 32px; align-items:start; padding:32px; }
.o6 .o6-num, .o6 .dv-plate .o6-num { font:600 13px/1 var(--dv-mono); letter-spacing:.14em; color:var(--dv-pur); }
.o6 .o6-row .o6-num { grid-row:1; }
.o6 .o6-row-h { margin:0; grid-column:1; grid-row:2; align-self:start; font-size:24px; line-height:30px; font-weight:700; letter-spacing:-.02em; color:var(--dv-ink); }
.o6 .o6-row .o6-num + .o6-row-h { margin-top:16px; }
.o6 .o6-row-b, .o6 .nf .dv-plate p.o6-row-b { grid-column:2; grid-row:1 / span 2; margin:0; font-size:16px; line-height:26px; color:var(--dv-ink); }
.o6 .o6-row-b p { margin:0; }
.o6 .o6-row-foot { margin-top:20px!important; color:var(--dv-ink6)!important; font-size:14px; line-height:20px; }
.o6 .o6-row-foot .dv-mono { margin-right:8px; color:var(--dv-pur); }
.o6 .o6-row-fig { grid-column:3; grid-row:1 / span 2; min-width:0; }
.o6 .dv-board .o6-row-fig .dv-plate.dv-plate-ink { border-radius:16px; padding:0; }
.o6 .o6-codefig .dv-code { font-size:12px; line-height:1.7; padding:20px 24px 24px; }
.o6 .o6-codefig .dv-code-cap { padding:18px 24px 0; }
.o6 .dv-board .o6-row-fig .dv-improvefig { padding:0; }
.o6 .dv-board .o6-row-fig .dv-improvefig .dv-still { max-width:none; }
/* ---- 1.7 THE LIVE FACE：左 眉题 + 一句｜中 大白图板｜右 五张白缩略 ---- */
.o6 .o6-face { display:grid; grid-template-columns:216px minmax(0,1fr) 108px; gap:32px; align-items:center; }
.o6 .o6-face-panes { grid-column:1 / 3; display:grid; }
.o6 .o6-face-pane { grid-area:1 / 1; display:grid; grid-template-columns:216px minmax(0,1fr); gap:32px; align-items:center; opacity:0; visibility:hidden; transition:opacity .6s var(--dv-ease), visibility 0s .6s; }
.o6 .o6-face-pane.w--tab-active { opacity:1; visibility:visible; transition:opacity .6s var(--dv-ease); }
.o6 .o6-face-copy { display:flex; flex-direction:column; align-items:flex-start; }
.o6 .o6-face-copy .dv-marker { margin:0 0 20px; }
.o6 .o6-face-copy .dv-sub { margin:0; }
.o6 .o6-face-thumbs { grid-column:3; display:flex; flex-direction:column; gap:12px; }
.o6 .o6-thumb { padding:0; border:0; background:none; cursor:pointer; opacity:.42; transition:opacity .3s ease, transform .3s var(--dv-ease); }
.o6 .o6-thumb:hover { opacity:.8; }
.o6 .o6-thumb.w--current { opacity:1; }
.o6 .o6-thumb:active { transform:scale(.97); }
.o6 .o6-thumb:focus-visible { outline:2px solid #fff; outline-offset:3px; border-radius:14px; }
.o6 .dv-board .dv-plate.o6-thumb-plate { display:grid; place-items:center; width:108px; aspect-ratio:5 / 6; padding:8px; border-radius:14px; }
.o6 .o6-thumb-plate .sn-ph-lab { font:600 9px/1.5 var(--dv-mono); letter-spacing:.08em; text-transform:uppercase; color:var(--dv-ink45); text-align:center; }
/* ---- 1.8 [VOICE]：左 大写两行 + 底块｜右 四卡 2 × 2；r1b · 播放键涟漪只在自己的卡里跑（卡 overflow hidden，圆角照卡）---- */
.o6 .dv-board .dv-acard { overflow:hidden; }
.o6 .o6-voice { display:grid; grid-template-columns:minmax(0,5fr) minmax(0,6fr); gap:64px; align-items:stretch; }
.o6 .o6-voice-copy { display:flex; flex-direction:column; align-items:flex-start; }
.o6 .o6-voice-bottom { display:flex; flex-direction:column; align-items:flex-start; margin-top:auto; padding-top:64px; }
.o6 .o6-voice-bottom .dv-sub { margin-top:0; }
.o6 .o6-voice-bottom .dv-foot { margin-top:12px; }
.o6 .o6-voice-bottom .dv-link-sn { margin-top:32px; }
.o6 .dv-board .dv-cards4.o6-cards2 { grid-template-columns:1fr 1fr; gap:20px; }
/* ---- 1.9 / 2.9 CTA：坐进 sheet 的一行 ---- */
/* CTA = 居中一叠（问句 → 两个方括号按钮），旧 option2 的 .dv-cta 上外距 clamp(28px,5vh,56px) 在这里清掉 */
.o6 .dv-board .dv-in.o6-cta { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:32px; text-align:center; }
.o6 .o6-cta .dv-close-ctas { justify-content:center; gap:12px 20px; }
.o6 .o6-cta .dv-cta { margin-top:0; }
/* ---- 2.1 ENGINE：大写 H1 → 竖图板｜一段 + 链接 → 底行 眉题 + 一句｜巨字 ---- */
.o6 .o6-engine-grid { display:grid; grid-template-columns:minmax(0,4fr) minmax(0,3fr) minmax(0,5fr); gap:32px; align-items:start; margin-top:64px; }
.o6 .o6-engine-grid .o6-ill-portrait { grid-column:2; }
.o6 .o6-engine-copy { grid-column:3; display:flex; flex-direction:column; align-items:flex-start; justify-content:space-between; gap:48px; align-self:stretch; }
.o6 .o6-engine-copy .dv-sub { margin-top:0; max-width:none; }
.o6 .o6-engine-bottom { display:flex; align-items:flex-end; justify-content:space-between; gap:48px; margin-top:120px; }
.o6 .o6-engine-method { display:flex; flex-direction:column; align-items:flex-start; max-width:332px; }
.o6 .o6-engine-method .dv-marker { margin-bottom:20px; }
.o6 .o6-engine-method .dv-sub { margin-top:0; }
/* ---- 2.3 START HERE：竖图板｜白列表卡｜两段 + 链接 ---- */
.o6 .o6-start { display:grid; grid-template-columns:minmax(0,3.5fr) minmax(0,4fr) minmax(0,4.5fr); gap:32px; align-items:start; }
.o6 .dv-board .dv-plate.o6-widget { display:flex; flex-direction:column; gap:20px; padding:28px; }
.o6 .o6-widget-top { display:flex; align-items:center; justify-content:space-between; gap:20px; }
.o6 .o6-widget-t { font-size:20px; line-height:28px; font-weight:700; letter-spacing:-.02em; color:var(--dv-ink); }
.o6 .o6-widget-list { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; }
.o6 .o6-widget-list li { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:16px; padding:18px 0; border-top:1px dashed var(--dv-pur40); }
.o6 .o6-widget-list li:last-child { padding-bottom:4px; }
.o6 .o6-widget-item { display:flex; flex-direction:column; gap:4px; min-width:0; }
.o6 .o6-widget-item b { font-size:13px; line-height:18px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--dv-ink); }
.o6 .o6-widget-item span { font-size:14px; line-height:20px; color:var(--dv-ink6); }
.o6 .o6-code { font:500 12px/18px var(--dv-mono); color:var(--dv-ink6); overflow-wrap:anywhere; }
.o6 .o6-widget-arr { color:var(--dv-pur); font-size:14px; font-weight:600; }
.o6 .o6-start-copy { display:flex; flex-direction:column; align-items:flex-start; }
.o6 .o6-start-copy .dv-sub { margin-top:0; max-width:none; }
.o6 .o6-start-copy .dv-sub + .dv-sub { margin-top:20px; }
.o6 .o6-start-copy .dv-link-sn { margin-top:32px; }
/* ---- 2.4 THE FACTS：左 三行 plate（hover / focus 换右图）｜右 一张 plate 三束线 ---- */
.o6 .o6-facts { display:grid; grid-template-columns:minmax(0,8fr) minmax(0,4fr); gap:32px; align-items:start; }
.o6 .o6-facts-rows { gap:16px; }
.o6 .dv-board .dv-plate.o6-row.o6-fact { grid-template-columns:56px minmax(0,3fr) minmax(0,6fr); gap:24px; padding:28px 32px; cursor:default; transition:background .25s ease; }
.o6 .o6-fact:focus-visible { outline:2px solid #fff; outline-offset:3px; }
.o6 .o6-fact .o6-num { margin-top:6px; }
.o6 .o6-fact-label { grid-column:2; grid-row:1; margin:0; padding-top:4px; font-size:13px; line-height:18px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--dv-ink6); transition:color .25s ease; }
.o6 .o6-fact.is-hot .o6-fact-label, .o6 .o6-fact.is-hot .o6-num { color:var(--dv-pur); }
.o6 .o6-fact-val { grid-column:3; grid-row:1; display:flex; flex-direction:column; gap:12px; }
.o6 .o6-fact-big { display:flex; align-items:baseline; gap:10px; font-size:28px; line-height:1.1; font-weight:700; letter-spacing:-.02em; color:var(--dv-ink); }
.o6 .dv-plate .o6-unit { font-size:11px; letter-spacing:.14em; color:var(--dv-ink6); }
.o6 .nf .dv-plate .o6-fact-val p { margin:0; font-size:16px; line-height:24px; color:var(--dv-ink); }
.o6 .dv-board .dv-plate.o6-strips { position:sticky; top:104px; aspect-ratio:4 / 3; padding:32px; }
.o6 .o6-strip { position:absolute; inset:32px; opacity:0; transition:opacity .45s var(--dv-ease); }
.o6 .o6-strip.is-show { opacity:1; }
.o6 .o6-strip .dv-wave { width:100%; height:100%; clip-path:none; }
.o6 .o6-strip .dv-mono { position:absolute; left:0; bottom:0; color:var(--dv-ink6); }
/* ---- 2.5 CINEMA：200vh 段，sheet 就是影院（sticky 100vh，圆角 32），iris 大 Lumi 虚在后；三拍字；居中白框 = [FACE] plate ---- */
.o6 .dv-board .dv-sec.o6-cine-sec .dv-in { height:200vh; padding:0; background:none; border-radius:0; }
.o6 .o6-cine { position:sticky; top:0; height:100vh; border-radius:32px; background:var(--dv-sheet); overflow:clip; isolation:isolate; }
.o6 .o6-cine-bg { position:absolute; inset:0; z-index:0; width:100%; height:100%; object-fit:cover; object-position:50% 18%; opacity:.4; filter:blur(12px) saturate(.9); transform:scale(1.08); pointer-events:none; }
.o6 .o6-cine-words { position:absolute; inset:0; z-index:1; display:flex; justify-content:space-between; align-items:flex-start; padding:12vh 74px 0; pointer-events:none; }
.o6 .o6-cw { overflow:hidden; }
.o6 .o6-cw.is-center { position:absolute; left:50%; translate:-50% 0; }
.o6 .o6-cw-in { font-family:var(--dv-font); font-size:clamp(40px,5.6vw,80px); line-height:1; font-weight:700; letter-spacing:-.035em; text-transform:uppercase; color:#fff; transform:translateY(105%); will-change:transform; }
.o6 .o6-cine-overlay { position:absolute; inset:0; z-index:2; }
.o6 .o6-cine-small { position:absolute; inset:0; margin:auto; width:min(64%,760px); height:fit-content; transform-origin:50% 50%; will-change:transform; }
.o6 .dv-board .dv-plate.dv-facefig.o6-cineframe { padding:24px 32px; width:100%; }
.o6 .dv-board .o6-cineframe .dv-lumi { width:180px; }
.o6 .o6-cine-inner { position:absolute; inset:0; margin:auto; width:min(64%,760px); height:var(--ih,40%); display:flex; flex-direction:column; justify-content:space-between; align-items:center; text-align:center; opacity:0; pointer-events:none; }
.o6 .o6-cine-cap .dv-marker { margin:0; }
.o6 .o6-cine-line { display:flex; flex-direction:column; align-items:center; }
.o6 .o6-cine-line .dv-sub { margin:0; max-width:30em; }
.o6 .o6-cine-line .dv-foot { margin-top:8px; }
/* ---- 2.7 UNDER THE HOOD：三行 6 / 3 / 3（白 plate 图｜段 + 药丸｜方括号 mono 大标），行间只留 48 ---- */
.o6 .o6-hood { display:flex; flex-direction:column; gap:48px; }
.o6 .o6-hood-row { display:grid; grid-template-columns:minmax(0,6fr) minmax(0,3fr) minmax(0,3fr); gap:32px; align-items:start; }
.o6 .o6-hood-copy { display:flex; flex-direction:column; align-items:flex-start; gap:28px; padding-top:8px; }
.o6 .o6-hood-copy .dv-sub { margin-top:0; }
.o6 .o6-hood-mark { margin:0; padding-top:8px; text-align:right; font:600 clamp(22px,2.2vw,30px)/1.1 var(--dv-mono); letter-spacing:.02em; color:#fff; }
.o6 .dv-board .o6-hood-row .dv-charts { grid-template-columns:1fr; gap:36px; }
.o6 .dv-board .o6-hood-row .dv-roomfig .dv-diagram { max-width:none; }
.o6 .dv-board .o6-hood-row .dv-deckfig { padding:32px 24px 24px; }
/* ---- 2.8 BEHIND THE CHARACTER：跑马灯贴 sheet 两边跑；卡 = 白 plate 套图板，卡脚白 / 白 .6 ---- */
.o6 .o6-marquee { margin:0 -74px; padding:0; overflow:hidden; -webkit-mask:linear-gradient(90deg, transparent, #000 74px, #000 calc(100% - 74px), transparent); mask:linear-gradient(90deg, transparent, #000 74px, #000 calc(100% - 74px), transparent); }
.o6 .o6-marquee-track { display:flex; width:max-content; animation:o6-mq 32s linear infinite; }
.o6 .o6-marquee:hover .o6-marquee-track { animation-play-state:paused; }
.o6 .o6-marquee-set { display:flex; flex:none; gap:48px; padding-right:48px; }
@keyframes o6-mq { to { transform:translateX(-33.3333%); } }
.o6 .o6-mcard { display:flex; flex-direction:column; gap:16px; width:296px; }
.o6 .o6-mcard-cap { display:flex; flex-direction:column; gap:2px; margin:0; padding:0 4px; font-size:16px; line-height:24px; }
.o6 .o6-mcard-cap b { font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:#fff; }
.o6 .o6-mcard-cap span { color:rgba(255,255,255,.6); }
.o6 .o6-behind-close { display:flex; flex-direction:column; align-items:center; gap:32px; margin:96px auto 0; text-align:center; }
.o6 .o6-behind-close .o6-h3 { text-align:center; }
.o6 .dv-board .o6-behind .dv-in > .dv-head, .o6 .dv-board .o6-behind > .dv-head { margin-bottom:96px; }

/* ---- iris 素材落位规则（0905 coordinator）：套图（三卡 / 跑马灯四张）同尺同头位 → width 100% + contain、不做单图位移；desk 左右下出血 = cover 贴底；laptop 左右出血；AGENT ID 卡贴底；listen A → B 硬切呼吸（2400 / 1600ms）；LIP SYNC 标 = HTML mono ---- */
.o6 .o6-ill-desk { padding:0; }
.o6 .o6-ill-desk img { object-fit:cover; object-position:50% 100%; }
.o6 .o6-ill-laptop { padding:24px 0 0; }
.o6 .o6-ill-laptop img { width:100%; height:100%; object-fit:contain; object-position:50% 100%; }
.o6 .o6-ill-agent { padding:16px 16px 0; }
.o6 .o6-ill-agent img { object-position:50% 100%; }
.o6 .o6-ill-listen img { position:absolute; inset:24px; width:auto; height:auto; max-width:calc(100% - 48px); max-height:calc(100% - 48px); margin:auto; }
.o6 .o6-ill-listen .o6-breath-b { opacity:0; animation:o6-breath 4s steps(1,end) infinite; }
@keyframes o6-breath { 0%, 59.9% { opacity:0; } 60%, 100% { opacity:1; } }
.o6 .o6-lipsync { position:absolute; left:20px; top:18px; z-index:1; font-size:10px; letter-spacing:.2em; color:var(--dv-pur); opacity:.75; }
@media (prefers-reduced-motion:reduce) { .o6 .o6-ill-listen .o6-breath-b { animation:none; } }
/* ---- 横线波形：canvas 铺满 .dv-wave；颜色 = --wl-rgb（紫地白 / 白 plate 紫），进场仍从左往右画出（clip-path 沿用） ---- */
.dv-wave canvas { display:block; width:100%; height:100%; }
.o6 [data-dv-anim].is-in .dv-wave { clip-path:inset(0 0 0 0); }
.dv-wave { --wl-rgb:255,255,255; }
.dv-plate .dv-wave, .dv-board .dv-plate .dv-wave { --wl-rgb:113,128,255; }
/* r1b · TAGS 列迷你波形 = 一根发丝（紫 .55，激活行紫 1），不再是线束 */
.dv-panel .dv-tag .dv-wave-mini { --wl-rgb:113,128,255; width:56px; height:16px; clip-path:none; }
.dv-board .dv-wave-dots { height:128px; }
.dv-board .dv-wave-lg { height:112px; }
.dv-board .dv-wave-md { height:72px; }
/* ---- 断点 ---- */
@media (max-width:1024px) {
  .o6 .dv-board .dv-sec-first .dv-in { padding-top:112px; }
  .o6 .dv-board .dv-h2.o6-manifesto { margin-bottom:64px; font-size:36px; line-height:44px; }
  .o6 .dv-board .dv-h2.o6-caps { font-size:36px; line-height:44px; }
  .o6 .dv-sec .dv-head h2.dv-h2.o6-h2-para { font-size:32px; line-height:40px; max-width:80%; }
  .o6 .o6-sdk-grid { grid-template-columns:1fr 1fr; gap:16px; }
  .o6 .dv-board .dv-plate.o6-pkg { min-height:0; padding:24px; }
  .o6 .o6-approach { grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:32px; }
  .o6 .o6-cards3 { gap:16px; }
  .o6 .dv-board .dv-plate.o6-row { grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:24px; padding:28px; }
  .o6 .o6-row-b, .o6 .nf .dv-plate p.o6-row-b { grid-column:2; grid-row:1 / span 2; }
  .o6 .o6-row-fig { grid-column:1 / -1; grid-row:3; margin-top:8px; }
  .o6 .o6-row-fig .o6-ill.is-square { max-width:520px; }
  .o6 .o6-face { grid-template-columns:minmax(0,1fr); gap:32px; }
  .o6 .o6-face-panes { grid-column:1; }
  .o6 .o6-face-pane { grid-template-columns:200px minmax(0,1fr); }
  .o6 .o6-face-thumbs { grid-column:1; flex-direction:row; justify-content:center; }
  .o6 .dv-board .dv-plate.o6-thumb-plate { width:88px; }
  .o6 .o6-voice { grid-template-columns:minmax(0,1fr); gap:48px; }
  .o6 .o6-voice-bottom { padding-top:40px; }
  .o6 .o6-engine-grid { grid-template-columns:minmax(0,4fr) minmax(0,7fr); gap:32px; }
  .o6 .o6-engine-grid .o6-ill-portrait { grid-column:1; }
  .o6 .o6-engine-copy { grid-column:2; }
  .o6 .o6-engine-bottom { margin-top:80px; gap:32px; }
  .o6 .o6-start { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .o6 .o6-start .o6-ill-portrait { display:none; }
  .o6 .o6-facts { grid-template-columns:minmax(0,1fr); }
  .o6 .dv-board .dv-plate.o6-strips { position:static; aspect-ratio:3 / 1; }
  .o6 .o6-cine-words { padding-left:40px; padding-right:40px; }
  .o6 .o6-cine-small, .o6 .o6-cine-inner { width:min(78%,760px); }
  .o6 .o6-hood-row { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .o6 .o6-hood-row .dv-fig { grid-column:1 / -1; }
  .o6 .o6-hood-mark { text-align:left; }
  .o6 .o6-marquee { margin:0 -40px; -webkit-mask:linear-gradient(90deg, transparent, #000 40px, #000 calc(100% - 40px), transparent); mask:linear-gradient(90deg, transparent, #000 40px, #000 calc(100% - 40px), transparent); }
  .o6 .o6-mcard { width:240px; }
  .o6 .o6-center-line, .o6 .o6-behind-close { margin-top:64px; }
}
@media (max-width:767px) {
  .o6 .dv-board .dv-sec-first .dv-in { padding-top:96px; }
  .o6 .dv-board .dv-h2.o6-manifesto { margin-bottom:40px; font-size:26px; line-height:32px; }
  .o6 .dv-board .dv-h2.o6-caps { font-size:28px; line-height:34px; }
  .o6 .dv-board .dv-h2.o6-caps-lg { font-size:32px; line-height:1.05; }
  .o6 .dv-sec .dv-head h2.dv-h2.o6-h2-para { font-size:24px; line-height:32px; max-width:none; }
  .o6 .dv-board .dv-h2.o6-h3 { font-size:22px; line-height:30px; }
  .o6 .o6-sdk-grid { grid-template-columns:1fr; gap:12px; }
  .o6 .dv-board .dv-plate.o6-pkg { padding:20px; gap:14px; }
  .o6 .o6-approach { grid-template-columns:minmax(0,1fr); gap:24px; }
  .o6 .o6-cards3 { grid-template-columns:minmax(0,1fr); gap:12px; }
  .o6 .dv-board .dv-plate.o6-card { flex-direction:row; align-items:center; gap:16px; padding:12px 16px 12px 12px; }
  .o6 .o6-card .o6-ill-tall { width:96px; flex:none; aspect-ratio:1; padding:8px; }
  .o6 .o6-card-cap { padding:0; flex-direction:column; gap:2px; }
  .o6 .dv-board .dv-plate.o6-row { grid-template-columns:minmax(0,1fr); gap:16px; padding:20px; }
  .o6 .o6-row-h { font-size:20px; line-height:26px; }
  .o6 .o6-row .o6-num + .o6-row-h { margin-top:10px; }
  .o6 .o6-row-b, .o6 .nf .dv-plate p.o6-row-b { grid-column:1; grid-row:auto; font-size:15px; line-height:24px; }
  .o6 .o6-row-fig { grid-column:1; grid-row:auto; margin-top:4px; }
  .o6 .o6-codefig .dv-code { font-size:11px; padding:16px; }
  .o6 .o6-face { gap:20px; }
  .o6 .o6-face-pane { grid-template-columns:minmax(0,1fr); gap:20px; }
  .o6 .o6-face-copy { order:2; }
  .o6 .o6-face-thumbs { gap:8px; }
  .o6 .dv-board .dv-plate.o6-thumb-plate { width:56px; padding:4px; border-radius:10px; }
  .o6 .o6-thumb-plate .sn-ph-lab { font-size:7px; letter-spacing:.04em; }
  .o6 .o6-center-line, .o6 .o6-behind-close { margin-top:40px; }
  .o6 .o6-voice { gap:32px; }
  .o6 .dv-board .dv-cards4.o6-cards2 { gap:12px; }
  .o6 .dv-board .dv-in.o6-cta { align-items:flex-start; gap:24px; text-align:left; }
  .o6 .o6-cta .dv-close-ctas { flex-direction:column; align-items:flex-start; justify-content:flex-start; gap:10px; }
  .o6 .o6-cta .dv-cta-text { padding-left:22px; }
  .o6 .o6-engine-grid { grid-template-columns:minmax(0,1fr); gap:20px; margin-top:32px; }
  .o6 .o6-engine-grid .o6-ill-portrait { width:min(100%,260px); }
  .o6 .o6-engine-copy { grid-column:1; gap:24px; }
  .o6 .o6-engine-bottom { flex-direction:column; align-items:flex-start; margin-top:48px; gap:24px; }
  .o6 .dv-board .o6-giant-right { text-align:left; }
  .o6 .o6-start { grid-template-columns:minmax(0,1fr); gap:20px; }
  .o6 .dv-board .dv-plate.o6-widget { padding:20px; }
  .o6 .o6-widget-list li { padding:14px 0; gap:12px; }
  .o6 .dv-board .dv-plate.o6-row.o6-fact { grid-template-columns:auto minmax(0,1fr); gap:12px 16px; padding:20px; }
  .o6 .o6-fact-val { grid-column:1 / -1; grid-row:2; }
  .o6 .o6-fact-big { font-size:24px; }
  .o6 .dv-board .dv-plate.o6-strips { aspect-ratio:2 / 1; padding:20px; }
  .o6 .o6-strip { inset:20px; }
  .o6 .o6-cine { border-radius:24px; }
  .o6 .o6-cine-words { padding:10vh 20px 0; }
  .o6 .o6-cw-in { font-size:clamp(22px,6.4vw,40px); }
  .o6 .o6-cine-small, .o6 .o6-cine-inner { width:88%; }
  .o6 .dv-board .dv-plate.dv-facefig.o6-cineframe { grid-template-columns:auto minmax(0,1fr); grid-template-rows:auto auto; padding:16px; gap:12px 16px; }
  .o6 .dv-board .o6-cineframe .dv-hair { display:none; }
  .o6 .dv-board .o6-cineframe .dv-wave-md { grid-column:1 / -1; order:3; }
  .o6 .dv-board .o6-cineframe .dv-lumi { width:112px; justify-self:end; }
  .o6 .dv-board .o6-cineframe .dv-ph { grid-column:1 / -1; order:4; margin-top:8px; }
  .o6 .o6-hood { gap:32px; }
  .o6 .o6-hood-row { grid-template-columns:minmax(0,1fr); gap:16px; }
  .o6 .o6-hood-copy { gap:16px; padding-top:0; }
  .o6 .o6-hood-mark { order:-1; padding-top:0; font-size:20px; }
  .o6 .o6-marquee { margin:0 -20px; -webkit-mask:linear-gradient(90deg, transparent, #000 20px, #000 calc(100% - 20px), transparent); mask:linear-gradient(90deg, transparent, #000 20px, #000 calc(100% - 20px), transparent); }
  .o6 .o6-mcard { width:200px; }
  .o6 .o6-marquee-set { gap:24px; padding-right:24px; }
  .o6 .dv-board .o6-behind .dv-in > .dv-head, .o6 .dv-board .o6-behind > .dv-head { margin-bottom:40px; }
  .dv-board .dv-wave-dots { height:88px; }
  .dv-board .dv-wave-lg { height:72px; }
}
@media (prefers-reduced-motion:reduce) {
  .o6 .o6-marquee-track { animation:none; }
  .o6 .o6-cw-in { transform:none; }
  .o6 .o6-cine-inner { opacity:1; --ih:66%; }
  .o6 .o6-cine-small { transform:none!important; }
}
/* 0905 lill r3b · 她：「中间底下怎么还有一片？」→ 板本体的透白层撤，板只做透明容器，sheet 各自带色；两块 sheet 之间只露纯场紫（板 1 / 板 2 同） */
.nf > .nf-sheet.dv-board::before { display: none; }
/* ---- 0905 lill r10 · 线束 + 中央圆钮（refs/voice-lines-0905/ref-1）：播放键压在线束正中，一圈发丝细环；线色近端浅紫 → 远端深紫 ---- */
.dv-bundle { position: relative; display: block; }
.dv-bundle > .dv-play { position: absolute; left: 50%; top: 50%; translate: -50% -50%; }
.dv-bundle > .dv-play::before { content: ""; position: absolute; inset: -7px; border-radius: 50%; border: 1px solid rgba(113, 128, 255, .35); pointer-events: none; }
.dv-board .dv-bundle.dv-heroplate-top { padding: 0; }
.dv-board .dv-bundle.dv-heroplate-top .dv-wave-lg { height: 128px; }
.dv-board .dv-bundle.dv-bigwave .dv-wave-lg { height: 120px; }
.dv-board .dv-acard-strip.dv-bundle { padding: 12px 8px 0; }
.dv-board .dv-acard-strip.dv-bundle .dv-play { width: 44px; height: 44px; translate: -50% calc(-50% + 6px); }
.dv-plate .dv-wave, .dv-board .dv-plate .dv-wave { --wl-rgb: 201, 194, 255; --wl-rgb2: 70, 83, 198; }
.dv-wave { --wl-rgb: 255, 255, 255; --wl-rgb2: 227, 224, 255; }
.dv-panel .dv-tag .dv-wave-mini { --wl-rgb: 113, 128, 255; --wl-rgb2: 113, 128, 255; }
/* r10b · [VOICE] 卡：线束铺满条带高度，圆钮就落在线束正中 */
.dv-board .dv-acard-strip.dv-bundle { display: grid; place-items: center; padding: 8px; }
.dv-board .dv-acard-strip.dv-bundle .dv-wave-dots { width: 100%; height: 100%; min-height: 128px; }
.dv-board .dv-acard-strip.dv-bundle .dv-play { translate: -50% -50%; }
.dv-board .dv-acard-strip.dv-bundle { display: block; min-height: 220px; }
.dv-board .dv-acard-strip.dv-bundle .dv-wave-dots { position: absolute; inset: 12px 8px; width: auto; height: auto; min-height: 0; }
.dv-board .dv-cards4 .dv-acard-strip.dv-bundle > .dv-play { position: absolute; left: 50%; top: 50%; translate: -50% -50%; }   /* 压过 r8 涟漪那条 position:relative */

/* 0905 Iris × Lill · 02/03 视觉小说对白：逐字、选项、选择后的 Lumi 反应。 */
.offer-visual-world { pointer-events:auto; overflow:hidden; }
.offer-visual-world > img { transition:filter .45s var(--ease),scale .55s var(--ease); }
.vn-dialogue { position:absolute; z-index:3; left:7%; right:7%; bottom:4.5%; box-sizing:border-box; padding:clamp(13px,1.3vw,18px); border:1px solid rgba(124,105,180,.22); border-radius:clamp(14px,1.4vw,20px); background:rgba(255,248,255,.9); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); color:#302451; box-shadow:0 14px 36px -26px rgba(47,32,93,.45); }
.vn-name { margin:0 0 6px; color:#7180ff; font:800 clamp(9px,.75vw,11px)/1 ui-monospace,"SF Mono",Menlo,monospace; letter-spacing:.18em; }
.vn-line { min-height:2.7em; margin:0; font-size:clamp(12px,.92vw,15px); font-weight:650; line-height:1.35; }
.vn-line::after { content:""; display:inline-block; width:5px; height:1em; margin-left:3px; vertical-align:-.12em; border-radius:2px; background:#7180ff; animation:vn-caret .72s steps(1) infinite; }
.vn-choices { display:grid; gap:7px; margin-top:11px; opacity:0; translate:0 10px; transition:opacity .4s var(--ease),translate .5s var(--ease); pointer-events:none; }
.vn-world-ready .vn-choices { opacity:1; translate:0 0; pointer-events:auto; }
.vn-choices button { position:relative; width:100%; min-height:34px; padding:7px 34px 7px 12px; border:1px solid rgba(113,128,255,.27); border-radius:10px; background:rgba(255,255,255,.72); color:#413568; font:700 clamp(10px,.78vw,13px)/1.25 inherit; text-align:left; cursor:pointer; transition:background .2s ease,border-color .2s ease,translate .2s ease; }
.vn-choices button::after { content:"›"; position:absolute; right:13px; top:50%; translate:0 -50%; color:#7180ff; font-size:18px; }
.vn-choices button:hover,.vn-choices button:focus-visible { background:#fff; border-color:#7180ff; translate:3px 0; outline:none; }
.vn-choices button.is-selected { color:#fff; background:#7180ff; border-color:#7180ff; }
.vn-choices button.is-selected::after { color:#fff; }
.vn-react { position:absolute; right:18px; top:-20px; display:grid; place-items:center; width:40px; aspect-ratio:1; border-radius:50%; background:#fff; color:#ff82b6; font-size:24px; opacity:0; scale:.4; rotate:-12deg; }
.vn-world-reacted .vn-react { animation:vn-heart .75s var(--ease) both; }
.vn-world-reacted > img { animation:vn-lumi-react .7s var(--ease) both,offer-scene-float 7.2s 1s ease-in-out infinite; }
@keyframes vn-caret { 50%{opacity:0} }
@keyframes vn-heart { 0%{opacity:0;scale:.4;translate:0 10px} 55%{opacity:1;scale:1.18;translate:0 -5px} 100%{opacity:1;scale:1;translate:0 0} }
@keyframes vn-lumi-react { 0%,100%{scale:1;translate:0 0} 45%{scale:1.025;translate:0 -8px} }
@media(max-width:1024px){.vn-dialogue{left:5%;right:5%;bottom:4%;padding:11px}.vn-line{font-size:12px}.vn-choices{gap:5px;margin-top:8px}.vn-choices button{min-height:30px;font-size:10px}}
@media(prefers-reduced-motion:reduce){.vn-line::after,.vn-world-reacted .vn-react,.vn-world-reacted > img{animation:none}.vn-world-reacted .vn-react{opacity:1;scale:1}}

/* 0906 Lill × Iris · Creator visuals QA：真实裁图圆角；02 回到完整手机游戏框；人物位图不做整体漂浮/缩放。 */
.offer-visual-live > img {
  border-radius:34px; clip-path:inset(2px round 34px); scale:1.006;
}
.offer-visual.offer-visual-world,
.offer-visual.offer-visual-world.is-left {
  width:min(38vw,620px); padding:0; overflow:visible; border-radius:0;
  background:none; -webkit-backdrop-filter:none; backdrop-filter:none;
}
.offer-visual-world > img {
  display:block; width:100%; height:auto; max-height:88vh; object-fit:contain;
  border-radius:0; clip-path:none; animation:none!important; transition:none;
}
.offer-visual-world .vn-dialogue {
  left:9%; right:9%; bottom:6.5%; padding:10px 12px 11px;
  border:1px solid rgba(124,105,180,.2); border-radius:16px;
  background:rgba(255,248,255,.88); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
  box-shadow:none;
}
.offer-visual-world .vn-name { margin-bottom:4px; }
.offer-visual-world .vn-line { min-height:2.4em; font-size:12px; }
.offer-visual-world .vn-choices { gap:5px; margin-top:7px; }
.offer-visual-world .vn-choices button { min-height:29px; padding:6px 30px 6px 10px; font-size:10px; border-radius:9px; }
.vn-world-reacted > img { animation:none!important; scale:1!important; translate:0!important; }
.offer-visual.offer-visual-personas {
  padding:0; overflow:hidden; border-radius:34px;
  background:rgba(255,255,255,.22);
  -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px);
}
.offer-visual-personas > img {
  display:block; width:100%; height:100%; object-fit:cover; object-position:center;
  border-radius:inherit; clip-path:inset(1px round 33px);
  animation:none!important; scale:1.004;
}
@media(max-width:1024px){
  .offer-visual.offer-visual-world,.offer-visual.offer-visual-world.is-left{width:min(48vw,560px)}
}
@media(max-width:700px){
  .offer-visual.offer-visual-world,.offer-visual.offer-visual-world.is-left{width:min(78vw,430px);right:var(--rail-r);left:auto}
  .offer-visual-world .vn-dialogue{left:8.5%;right:8.5%;bottom:6%;padding:8px 9px}
  .offer-visual-world .vn-line{font-size:10px}
}

/* 0905 Lill · developer 与 creator 整章对调后的独立开发者入口。 */
.developer-intro-swap { position:relative; z-index:8; min-height:145svh; box-sizing:border-box; display:grid; place-items:center; overflow:clip; background:#7180ff; color:#fff; isolation:isolate; }
.developer-intro-watermark {
  position:absolute; z-index:0; left:50%; top:58%; translate:-50% -50%;
  width:max-content; color:transparent; font-size:clamp(132px,19vw,340px);
  font-weight:800; line-height:.78; letter-spacing:-.075em; white-space:nowrap; pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.025) 0%,rgba(255,255,255,.09) 38%,rgba(255,255,255,.075) 62%,rgba(255,255,255,.012) 100%);
  -webkit-background-clip:text; background-clip:text;
  -webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 13%,#000 87%,transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0%,#000 13%,#000 87%,transparent 100%);
  opacity:calc(.48 + (1 - var(--developer-label,0)) * .22);
  transition:opacity .7s cubic-bezier(.22,1,.36,1);
}
.developer-intro-title {
  position:relative; z-index:2; width:min(88vw,1100px); margin:24svh auto 0;
  color:#fff; font-size:clamp(48px,4vw,78px); font-weight:800; line-height:.88;
  letter-spacing:-.065em; text-align:center; text-transform:none; text-wrap:balance;
  opacity:var(--developer-label,0); translate:0 calc((1 - var(--developer-label,0))*18px);
}
.mm-run .mm-catch {
  font-family:var(--nc1-font,Inter,sans-serif); font-size:clamp(48px,4vw,78px);
  font-weight:800; line-height:.88; letter-spacing:-.065em; text-transform:none; text-wrap:balance;
}
body.c2-palmer-page .developer-intro-swap + .dv.nf { margin-top:0; }
body.c2-palmer-page .developer-intro-swap + .dv.nf::before { top:0; }
@media(max-width:760px){
  .developer-intro-watermark{top:60%;font-size:clamp(88px,24vw,180px)}
  .developer-intro-title{width:calc(100% - 44px);margin-top:22svh;font-size:clamp(44px,13vw,72px);line-height:.92}
  .mm-run .mm-catch{font-size:clamp(40px,10vw,64px);line-height:.94}
}
@media(prefers-reduced-motion:reduce){.developer-intro-title{opacity:1;translate:0 0}}

/* ======================================================================
   0905 lill r5 · Voice API 板 = coodebox 真码 port（refs/coodebox/coodebox.webflow.shared.css 对应规则逐条搬，只换 token）
   coodebox 变量 → 我们：natural-01 底 → 淡紫 #e3e0ff（--dv-lav）；white 卡 → 白 plate；color-01 橙 → 紫 #7180ff；natural-04 墨 → --dv-ink；
   gap-12 60 / gap-15 100 / padding-08 60 / padding-05 40 / padding-07 60 / radius-04 20 / radius-03 16 原值；box-shadow 全去；.label 边框去（卡 / chip 无外框）。
   ====================================================================== */
.o6 .dv-board .dv-sec.o8 { padding:60px 0; }
.o6 .dv-board .dv-sec.o8 .dv-in.container { position:relative; z-index:5; width:100%; }
/* ---- .section-title-wrapper / .label（eyebrow chip：斜杠小 icon + 大写小字）/ .section-title / .section-subtitle ---- */
.o8 .section-title-wrapper { display:flex; flex-flow:column; align-items:flex-start; gap:20px; }
.o8 .section-title-wrapper.problem { max-width:500px; }
.o8 .label { display:flex; justify-content:center; align-items:center; gap:10px; padding:8px 10px; border-radius:8px; background:rgba(255,255,255,.14); }
.o8 .label-icon { display:flex; justify-content:center; align-items:flex-end; width:2px; height:11px; border-radius:100px; background:rgba(255,255,255,.35); transform:rotate(30deg); }
.o8 .label-icon-inner { width:100%; height:100%; border-radius:100px; background:#fff; }
.o8 .label-text, .nf .o8 p.label-text { margin:0; color:rgba(255,255,255,.85); font:700 11px/1 var(--dv-mono); letter-spacing:.2em; text-transform:uppercase; }
.o6 .dv-board .o8 h2.section-title { margin:0; max-width:none; }
.o6 .dv-board .o8 .section-title.feature { max-width:500px; }
.o6 .dv-board .o8 .section-subtitle { margin:0; }
.o6 .dv-board .o8 .section-subtitle.problem { max-width:480px; }
.o6 .dv-board .o8 .section-subtitle.feature { max-width:475px; }
.o6 .dv-board .o8 .section-title-wrapper .dv-foot { margin:-4px 0 0; }
/* ---- ① problem-solving ---- */
.o8.problem-solving-section { overflow:hidden; }
.o8 .problem-solving-content-wrap { position:relative; display:flex; justify-content:space-between; gap:60px; }
.o8 .problem-solving-tabs { position:static; width:50%; max-width:822px; }
.o8 .problem-solving-tab-menu { position:absolute; bottom:0; left:0; display:flex; flex-flow:column; align-items:flex-start; gap:16px; }
.o8 .problem-solving-tab-link { position:relative; display:inline-block; padding:0 0 0 30px; background:none; color:#fff; opacity:.6; text-decoration:none; font-size:16px; line-height:1.3; font-weight:600; letter-spacing:-.01em; cursor:pointer; transition:opacity .3s ease; }
.o8 .problem-solving-tab-link:hover { opacity:.85; }
.o8 .problem-solving-tab-link.w--current { opacity:1; }
/* 原站 icon = 8×8 圆角方（Container (3)/(4).svg），灰 → 橙；我们：白 .45 → 紫 */
.o8 .problem-solving-tab-link::before { content:""; position:absolute; left:0; top:50%; width:8px; height:8px; margin-top:-4px; border-radius:2.08px; background:rgba(255,255,255,.45); transition:background .3s ease; }
.o8 .problem-solving-tab-link.w--current::before { background:#c9c2ff; }
.o8 .problem-solving-tab-link:focus-visible { outline:2px solid #fff; outline-offset:4px; border-radius:4px; }
.o8 .w-tab-content { position:relative; display:block; overflow:hidden; }
.o8 .w-tab-pane { display:none; position:relative; }
.o8 .w-tab-pane.w--tab-active { display:block; }
/* Webflow tabs 淡入淡出：in 300 / out 100（js 切 .is-fading） */
.o8 .w-tab-pane { opacity:1; transition:opacity .3s ease; }
.o8 .w-tab-pane.is-out { opacity:0; transition:opacity .1s ease; }
.o8 .w-tab-pane.is-pre { opacity:0; transition:none; }
.o6 .dv-board .o8 .problem-solving-content { position:relative; isolation:isolate; display:flex; flex-flow:column; justify-content:flex-end; align-items:center; gap:120px; height:685px; padding:60px 40px 40px; border-radius:20px; background:var(--dv-lav); color:var(--dv-ink); overflow:hidden; }
.o8 .o8-tile-bg { position:absolute; inset:-4% -2%; z-index:0; width:104%; height:108%; pointer-events:none; }
.o8 .o8-tile-bg path { fill:none; stroke:var(--dv-pur); stroke-width:1.6; stroke-linecap:round; opacity:calc(var(--o) * .55); }
.o8 .problem-solving-content > :not(.o8-tile-bg) { position:relative; z-index:1; }
.o6 .dv-board .o8 .problem-solving-card.dv-plate { display:flex; flex-flow:column; align-items:flex-start; gap:60px; width:100%; max-width:430px; padding:30px; border-radius:16px; background:#fff; }
.o6 .dv-board .o8 .problem-solving-card.dv-plate { gap:20px; }   /* 原站 gap-12 是给图 + 说明两段的；我们卡里只有一张图，收到 20 */
.o8 .o8-glass { display:grid; grid-template-columns:1fr 1fr; gap:16px; width:100%; padding:16px; border-radius:20px; background:rgba(255,255,255,.28); -webkit-backdrop-filter:blur(22px) saturate(1.1); backdrop-filter:blur(22px) saturate(1.1); }
.o8 .o8-glass .problem-solving-card { max-width:none; min-width:0; }
.nf .o8 p.problem-solving-card-title { margin:0 0 16px; color:var(--dv-ink); font-size:16px; line-height:22px; font-weight:600; letter-spacing:-.01em; }
.o8 .problem-solving-card .dv-bars { display:grid; gap:12px; width:100%; }
.o8 .problem-solving-card .dv-bar { grid-template-columns:minmax(84px,7.5em) minmax(0,1fr) auto; gap:10px; }
.o8 .problem-solving-card .dv-bar .dv-mono { font-size:8.5px; letter-spacing:.12em; }
.o8 .problem-solving-card .dv-bar i { height:20px; border-radius:6px; }
.o8 .problem-solving-card .dv-ph { margin-top:8px; font-size:9px; }
.o8 .problem-solving-content-title-wrap { display:flex; flex-flow:column; align-items:flex-start; gap:8px; width:100%; }
.nf .o8 p.problem-solving-content-title { margin:0; color:var(--dv-ink); font-size:16px; line-height:22px; font-weight:600; }
.nf .o8 p.problem-solving-content-subtitle { margin:0; max-width:500px; color:var(--dv-ink6); font-size:14px; line-height:20px; }
/* Tab 2 = DECK 卡：整卡宽，图字按半栏放大 */
.o6 .dv-board .o8 .problem-solving-card.o8-deckcard { max-width:none; padding:24px 24px 20px; margin:0; }
.o8 .o8-deckcard .dv-deck { max-width:none; }
.o8 .o8-deckcard .dk-name { fill:var(--dv-ink6); font:500 22px var(--dv-font); }
.o8 .o8-deckcard .dk-ours-name { fill:var(--dv-pur); font-weight:700; letter-spacing:.06em; }
.o8 .o8-deckcard .dk-lab { font-size:17px; letter-spacing:.14em; }
.o8 .o8-deckcard .dk-dot { r:9px; } .o8 .o8-deckcard .dk-ours circle { r:16px; }
.o8 .o8-deckcard .dv-deck-legend { margin-top:16px; font-size:10px; }
/* ---- ② feature-scroll ---- */
.o8 .feature-scroll-wrapper { position:relative; display:flex; align-items:flex-start; gap:100px; }
.o8 .feature-scroll-left { position:sticky; top:50px; display:flex; flex-flow:column; width:100%; max-width:800px; transition:translate .7s var(--dv-ease); }
.o8[data-step="1"] .feature-scroll-left { translate:calc(100% + 100px) 0; }   /* 左右交替：第二项时图列整体挪到右栏（原站没有这条，她要的） */
.o8 .feature-image-wrapper { position:relative; display:flex; justify-content:center; align-items:center; width:100%; max-width:800px; height:700px; padding:40px; border-radius:20px; background:var(--dv-lav); overflow:hidden; box-sizing:border-box; transition:opacity .5s ease; }
.o8 .feature-image-wrapper.scroll-01 { z-index:3; width:100%; opacity:1; }
.o8 .feature-image-wrapper.scroll-02 { z-index:2; width:100%; position:absolute; inset:0; opacity:0; }
.o8 .feature-image-wrapper.scroll-03 { z-index:1; position:absolute; inset:0; opacity:0; }
.o8[data-step="1"] .feature-image-wrapper.scroll-01, .o8[data-step="2"] .feature-image-wrapper.scroll-01 { opacity:0; }
.o8[data-step="1"] .feature-image-wrapper.scroll-02 { opacity:1; }
.o8[data-step="2"] .feature-image-wrapper.scroll-03 { opacity:1; }
.o8 .feature-image-wrapper.lp-01 { display:none; }
.o8 .feature-image-wrapper > * { width:100%; max-height:100%; }
.o8 .feature-scroll-right { display:flex; flex-flow:column; gap:500px; width:100%; padding:220px 0; }
.o8 .single-feature { display:flex; align-items:center; justify-content:flex-end; gap:100px; width:100%; }
.o8 .single-feature.scroll-02 { justify-content:flex-start; }
.o8 .feature-content { display:flex; flex-flow:column; align-items:flex-start; gap:36px; width:36%; max-width:560px; }
.o8 .feature-content.scroll { width:100%; }
.o8 .feature-content .dv-link-sn { margin:0; }
/* 图叠里的三张：四卡 2×2 收矮；TAGS 面板走窄版；都居中 */
.o6 .dv-board .o8 .feature-image-wrapper .dv-cards4.o6-cards2 { gap:16px; }
.o6 .dv-board .o8 .feature-image-wrapper .dv-acard { min-height:0; padding:12px; }
.o6 .dv-board .o8 .feature-image-wrapper .dv-acard-strip.dv-bundle { min-height:190px; }
.o6 .dv-board .o8 .feature-image-wrapper .dv-plate.dv-heroplate { padding:24px 20px 28px; }
.o6 .dv-board .o8 .feature-image-wrapper .dv-bundle.dv-heroplate-top .dv-wave-lg { height:96px; }
.o6 .dv-board .o8 .feature-image-wrapper .dv-panel { grid-template-columns:minmax(0,1fr); }
.o6 .dv-board .o8 .feature-image-wrapper .dv-panel-list { flex-direction:row; flex-wrap:wrap; gap:4px; padding:12px; border-right:0; border-bottom:1px dashed var(--dv-pur40); }
.o6 .dv-board .o8 .feature-image-wrapper .dv-panel .dv-tag { width:auto; min-height:38px; border-radius:10px; }
.o6 .dv-board .o8 .feature-image-wrapper .dv-panel-list-foot { width:100%; margin-top:0; padding:8px 4px 0; }
.o6 .dv-board .o8 .feature-image-wrapper .dv-panel-main { padding:20px 20px 14px; min-height:0; }
.o6 .dv-board .o8 .feature-image-wrapper .dv-panel p.dv-line { font-size:18px; line-height:28px; }
.o6 .dv-board .o8 .feature-image-wrapper .dv-panel-foot { padding-top:20px; }
.o6 .dv-board .o8 .feature-image-wrapper .dv-plate.dv-breathfig { padding:28px 24px; gap:24px; }
/* ---- 入场（IX2 slide-left-global：opacity 0→1，x -100→0，.6s，delay .2；slide-right-global：x 100→0，delay .3；≤991 不动） ---- */
@media (min-width:992px) {
  .o8 .slide-left-global { opacity:0; translate:-100px 0; transition:opacity .6s ease .2s, translate .6s ease .2s; }
  .o8 .slide-right-global { opacity:0; translate:100px 0; transition:opacity .6s ease .3s, translate .6s ease .3s; }
  .o8 .slide-left-global.is-in, .o8 .slide-right-global.is-in { opacity:1; translate:0 0; }
  .o8 .feature-scroll-left.slide-left-global.is-in { transition:opacity .6s ease .2s, translate .7s var(--dv-ease); }
}
/* ---- ③ IT'S LOCAL 两张白卡（不动） ---- */
.o6 .dv-board .dv-head.o6-center .dv-h2, .o6 .dv-board .dv-head.o6-center .dv-sub { text-align:center; margin-left:auto; margin-right:auto; }
.o6 .dv-board .dv-sec.o8-local { padding:60px 0; }
.o8-local-grid { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.o6 .dv-board .dv-plate.dv-roomfig.o8-room { display:flex; flex-direction:column; justify-items:stretch; gap:20px; padding:32px 32px 28px; }
.o8-room .dv-diagram { max-width:none; }
.o8-room-cap { margin:0; font-size:14px; line-height:20px; color:var(--dv-ink6); }
.o8-room.is-ours .o8-room-cap { color:var(--dv-ink); }
/* ---- 断点（原站 991 / 767 / 479） ---- */
@media (max-width:991px) {
  .o8 .problem-solving-content-wrap { flex-flow:column; }
  .o8 .problem-solving-tabs { width:100%; max-width:none; }
  .o8 .problem-solving-tab-menu { position:relative; display:grid; grid-template-columns:1fr 1fr; grid-template-rows:auto auto; gap:16px; }
  .o6 .dv-board .o8 .problem-solving-content { height:auto; gap:60px; }
  .o8 .problem-solving-tab-content { margin-top:40px; }
  .o8 .single-feature { flex-flow:column-reverse; }
  .o8 .feature-image-wrapper { width:100%; height:500px; }
  .o8 .feature-content { width:100%; max-width:none; }
  .o8 .feature-scroll-right { gap:200px; padding:100px 0; }
  .o8 .feature-scroll-wrapper { gap:40px; }
  .o8[data-step="1"] .feature-scroll-left { translate:calc(100% + 40px) 0; }
  .o8 .feature-scroll-left { max-width:none; }
  .o8-local-grid { gap:16px; }
  .o6 .dv-board .dv-plate.dv-roomfig.o8-room { padding:24px 24px 20px; }
}
@media (max-width:767px) {
  .o8 .feature-image-wrapper { height:auto; min-height:0; padding:16px; }
  .o8 .feature-scroll-right { gap:80px; padding:0; }
  .o8 .feature-scroll-left { display:none; }
  .o8 .feature-image-wrapper.lp-01 { display:flex; }
  .o8 .feature-image-wrapper.lp-01 .feature-image-wrapper { position:relative; inset:auto; opacity:1; padding:0; background:none; }
  .o8 .single-feature { gap:24px; }
  .o8 .o8-glass { grid-template-columns:1fr; gap:12px; padding:12px; }
  .o6 .dv-board .o8 .problem-solving-content { padding:20px 16px 20px; gap:28px; border-radius:20px; }
  .o6 .dv-board .o8 .problem-solving-card.dv-plate { padding:18px 16px 16px; }
  .o6 .dv-board .o8 .problem-solving-card.o8-deckcard { padding:12px 8px 12px; }
  .o8 .o8-deckcard .dk-name { font-size:28px; } .o8 .o8-deckcard .dk-lab { font-size:22px; }
  .o8-local-grid { grid-template-columns:1fr; gap:12px; }
  .o6 .dv-board .dv-plate.dv-roomfig.o8-room { padding:20px 16px 18px; }
}
@media (max-width:479px) {
  .o8 .problem-solving-tab-menu { grid-template-columns:1fr; }
  .o8 .problem-solving-tab-link { padding-left:20px; }
  .o8 .problem-solving-tab-link::before { top:9px; margin-top:0; }
}
@media (prefers-reduced-motion:reduce) {
  .o8 .feature-scroll-left, .o8 .feature-image-wrapper, .o8 .w-tab-pane, .o8 .slide-left-global, .o8 .slide-right-global { transition:none; }
}
/* r5b · 自查修：① 左右交替要真的交替 → wrapper 改成两列同格叠放（左 sticky 图列占半宽，右列满宽，item 靠 justify 落左 / 落右），第二项时图列平移到右半；
   入场 .is-in 的 translate:0 会盖掉平移 → 提特异性。② sticky top 50 → 96（我们 nav 72）。 */
.o8 .feature-scroll-wrapper { display:grid; grid-template-columns:minmax(0,1fr); gap:0; }
.o8 .feature-scroll-left, .o8 .feature-scroll-right { grid-area:1 / 1; }
.o8 .feature-scroll-left { top:96px; width:calc(50% - 50px); max-width:none; }
.o8 .feature-content.scroll { width:calc(50% - 50px); }
.o8 .single-feature.scroll-01, .o8 .single-feature.scroll-03 { justify-content:flex-end; }
.o8 .single-feature.scroll-02 { justify-content:flex-start; }
.o8[data-step="1"] .feature-scroll-left, .o8[data-step="1"] .feature-scroll-left.slide-left-global.is-in { translate:calc(100% + 100px) 0; }
@media (max-width:991px) {
  .o8 .feature-scroll-left { top:80px; width:calc(50% - 20px); }
  .o8 .feature-content.scroll { width:calc(50% - 20px); }
  .o8[data-step="1"] .feature-scroll-left, .o8[data-step="1"] .feature-scroll-left.slide-left-global.is-in { translate:calc(100% + 40px) 0; }
}
@media (max-width:767px) {
  .o8 .feature-scroll-wrapper { display:block; }
  .o8 .feature-content.scroll { width:100%; }
}
/* r5c · 半栏白卡里柱轨被 minmax(84px,7.5em) 的标签列吃掉 → 标签列按内容宽，柱轨才有长度 */
.o8 .problem-solving-card .dv-bar { grid-template-columns:auto minmax(0,1fr) auto; }
.o6 .dv-board .o8 .o8-glass .problem-solving-card.dv-plate { padding:24px 22px 20px; }
/* r5d · 她：#snMeter 回居中排法：eyebrow + h2 + 副句居中裸放在紫底上，下面才是淡紫大圆角块（guide 左上）> 磨砂面板 > 两张白卡。
   DOM 不动（still .problem-solving-content-wrap > title-wrapper + .w-tabs），只改排法：wrap 变 column；淡紫底和波浪线搬到 .problem-solving-tabs 上，pane 里的 content 透明。tabs 点切照旧。 */
.o8.o8-center .problem-solving-content-wrap { flex-flow:column; align-items:center; gap:48px; }
.o8.o8-center .section-title-wrapper.problem { max-width:760px; align-items:center; text-align:center; }
.o6 .dv-board .o8.o8-center .section-subtitle.problem { max-width:600px; }
.o6 .dv-board .o8.o8-center h2.section-title { text-align:center; }
.o8.o8-center .problem-solving-tabs { position:relative; isolation:isolate; width:100%; max-width:none; padding:32px 40px 40px; border-radius:20px; background:var(--dv-lav); color:var(--dv-ink); overflow:hidden; }
.o8.o8-center .problem-solving-tabs > :not(.o8-tile-bg) { position:relative; z-index:1; }
.o8.o8-center .problem-solving-tab-menu { position:relative; bottom:auto; left:auto; margin-bottom:28px; }
.o8.o8-center .problem-solving-tab-link { color:var(--dv-ink); }
.o8.o8-center .problem-solving-tab-link::before { background:rgba(36,28,78,.3); }
.o8.o8-center .problem-solving-tab-link.w--current::before { background:var(--dv-pur); }
.o8.o8-center .problem-solving-tab-link:focus-visible { outline-color:var(--dv-pur); }
.o6 .dv-board .o8.o8-center .problem-solving-content { height:auto; padding:0; gap:32px; border-radius:0; background:none; overflow:visible; }
.o8.o8-center .o8-glass { max-width:960px; }
.o6 .dv-board .o8.o8-center .problem-solving-card.o8-deckcard { max-width:960px; }
.o8.o8-center .problem-solving-content-title-wrap { max-width:960px; }
@media (max-width:991px) {
  .o8.o8-center .problem-solving-tabs { padding:24px 24px 28px; }
  .o8.o8-center .problem-solving-tab-content { margin-top:0; }
}
@media (max-width:767px) {
  .o8.o8-center .problem-solving-content-wrap { gap:32px; }
  .o8.o8-center .problem-solving-tabs { padding:16px 16px 20px; }
  .o8.o8-center .problem-solving-tab-menu { margin-bottom:20px; }
  .o6 .dv-board .o8.o8-center .problem-solving-content { padding:0; }
}
/* r5e · DECK 卡回到整幅宽，半栏时放大的字号 / 点径撤回原尺 */
.o8.o8-center .o8-deckcard .dk-name { font-size:13px; }
.o8.o8-center .o8-deckcard .dk-lab { font-size:11px; letter-spacing:.16em; }
.o8.o8-center .o8-deckcard .dk-dot { r:6px; } .o8.o8-center .o8-deckcard .dk-ours circle { r:12px; }
@media (max-width:767px) { .o8.o8-center .o8-deckcard .dk-name { font-size:24px; } .o8.o8-center .o8-deckcard .dk-lab { font-size:19px; } .o8.o8-center .o8-deckcard .dk-dot { r:9px; } .o8.o8-center .o8-deckcard .dk-ours circle { r:16px; } }
/* r5f · 她：① It's local 并进 feature 块当第四项；② 图叠外层淡紫底撤，透明，白卡直接落紫底；③ 图叠整段钉住、文案一项项换。
   ③ 核过：sticky 祖先只有 .nf 的 overflow:clip（clip 不建滚动容器，不杀 sticky）；-right 每项之间 gap 500 + 上下 pad 220 原值，pin 距离够。切换改按「哪项文案在视口中线」，四项一一对应。 */
.o8 .feature-image-wrapper { padding:0; background:none; }
.o8 .feature-image-wrapper.scroll-04 { z-index:0; position:absolute; inset:0; opacity:0; }
.o8[data-step="3"] .feature-image-wrapper.scroll-01 { opacity:0; }
.o8[data-step="3"] .feature-image-wrapper.scroll-04 { opacity:1; }
.o8 .single-feature.scroll-04 { justify-content:flex-start; }
.o8[data-step="3"] .feature-scroll-left, .o8[data-step="3"] .feature-scroll-left.slide-left-global.is-in { translate:calc(100% + 100px) 0; }
.o8 .o8-local-grid { grid-template-columns:1fr; gap:16px; width:100%; }
.o6 .dv-board .o8 .feature-image-wrapper .dv-plate.dv-roomfig.o8-room { padding:28px 28px 24px; }
@media (max-width:991px) { .o8[data-step="3"] .feature-scroll-left, .o8[data-step="3"] .feature-scroll-left.slide-left-global.is-in { translate:calc(100% + 40px) 0; } }
@media (max-width:767px) { .o8 .feature-image-wrapper.lp-01 .feature-image-wrapper { padding:0; } .o8 .o8-local-grid { gap:12px; } }
/* r5g · 她：① Voice API 板外层那圈浅一档的圆角 sheet 去掉，标题直接落 hero 紫（sheet 是整板共用一层，只能整板透明：meter / feature / CTA 一起落紫底，feature 本来就要透明）；
   ② 两张白卡后面的磨砂面板去掉，白卡直接放在淡紫波浪块上（DOM 留着，只把底和 blur 撤） */
.nf.o6 > .nf-sheet.dv-board, .nf.o6 > .nf-sheet.dv-board::before { background:none; }
.o8 .o8-glass { padding:0; gap:20px; background:none; -webkit-backdrop-filter:none; backdrop-filter:none; }
.o6 .dv-board .o8.o8-center .o8-glass .problem-solving-card.dv-plate { padding:28px 28px 24px; }
/* r5j · 她：整页编舞取消，回到 is-parked；章的两层实底和 .aw-arc 都原样保留（r5h 那几条撤）。
   幕布屏：停住后实心圆淡成描边环（同 a1 的 1.5vw 线），巨字水印淡出。 */
.bocchi-bg-fly .nc1-field-arc.a2 { box-sizing:border-box; border:1.5vw solid var(--nc1-field-hi); transition:background-color .6s ease; }
.bocchi-bg-fly.is-hollow .nc1-field-arc.a2 { background-color:transparent; }
.bocchi-bg-fly .nc1-bg-mark { opacity:var(--fly-mark-o, 1); }
/* r5i · 她：meter 段外那层浅一档圆角 sheet 去掉 → 其实是 .dv-board .dv-sec .dv-in 的透白 .14 底；o8 两段（meter / feature）撤，CTA 那段不动 */
.o6 .dv-board .dv-sec.o8 > .dv-in { background:none; border-radius:0; }
/* r5k · kit 校正：图叠外那层淡紫圆角底是原站 .feature-image-wrapper 自己的底 → 保留（r5f 那条撤）；去掉的只是 section 外那层 sheet（r5i 已撤）。字裸放无底。 */
.o8 .feature-image-wrapper { padding:40px; background:var(--dv-lav); }
.o8 .feature-image-wrapper.lp-01 { background:none; padding:0; }
@media (max-width:767px) { .o8 .feature-image-wrapper.lp-01 .feature-image-wrapper { padding:16px; background:var(--dv-lav); } }
/* r5l · 第四项居中时 sticky 已到容器底开始走（差 51px）→ 右列底 pad 220 → 320，四项都钉在 96 */
.o8 .feature-scroll-right { padding-bottom:320px; }
@media (max-width:991px) { .o8 .feature-scroll-right { padding-bottom:200px; } }
@media (max-width:767px) { .o8 .feature-scroll-right { padding-bottom:0; } }
@media (max-width:991px) { .o8 .feature-scroll-right { padding-top:200px; } }   /* r5l · ≤991 第一项居中时 sticky 还没接上（180 vs 80）→ 顶 pad 100 → 200 */
/* r5n · 她：图叠的底和 meter 的淡紫块都改毛玻璃（Liquid Glass：blur + 透白低 alpha，无边框无阴影），hero 紫和背景圆环透过来；
   波浪纹她喜欢 → 留在玻璃里当一层纹理（低 alpha 紫线，pointer-events none，z 在白卡下），meter 和 feature 四张图叠同款。白卡照旧实白。 */
.o8.o8-center .problem-solving-tabs { background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(24px) saturate(1.05); backdrop-filter:blur(24px) saturate(1.05); }
.o8 .feature-image-wrapper { background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(24px) saturate(1.05); backdrop-filter:blur(24px) saturate(1.05); isolation:isolate; }
.o8 .feature-image-wrapper.lp-01 { background:none; -webkit-backdrop-filter:none; backdrop-filter:none; }
.o8 .feature-image-wrapper > .o8-tile-bg { position:absolute; inset:-4% -2%; width:104%; height:108%; max-height:none; z-index:0; }
.o8 .feature-image-wrapper > :not(.o8-tile-bg) { position:relative; z-index:1; }
.o8 .o8-tile-bg path { stroke:#4653c6; opacity:calc(var(--o) * .32); }
.o8.o8-center .problem-solving-tab-link { color:#1c1740; }
.o8.o8-center .problem-solving-tab-link::before { background:rgba(28,23,64,.35); }
.nf .o8 p.problem-solving-content-title { color:#1c1740; }
.nf .o8 p.problem-solving-content-subtitle { color:rgba(28,23,64,.72); }
@media (max-width:767px) { .o8 .feature-image-wrapper.lp-01 .feature-image-wrapper { background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(24px); backdrop-filter:blur(24px); } }

/* r6 · 重建 #snFeat：照 Coodebox 的 feature-scroll 几何与滚动机制。
   左侧始终 sticky，不再奇偶横跳；右侧按 500px 节奏自然滚动；四张图连续交叉淡入。 */
#snFeat.o8 > .container { width:100%; max-width:none; margin:0; padding:0 24px; box-sizing:border-box; }
#snFeat.o8 .feature-scroll-wrapper {
  position:relative; display:grid; grid-template-columns:minmax(0,800px) minmax(360px,560px);
  justify-content:space-between; align-items:start; gap:100px; height:300svh;
}
#snFeat.o8 .feature-scroll-left,
#snFeat.o8 .feature-scroll-left.slide-left-global.is-in,
#snFeat.o8[data-step] .feature-scroll-left,
#snFeat.o8[data-step] .feature-scroll-left.slide-left-global.is-in {
  position:sticky; grid-column:1; grid-row:1; top:max(50px,calc((100svh - 700px)/2)); display:flex; flex-flow:column;
  width:100%; max-width:800px; min-width:0; opacity:1; translate:0 0;
}
#snFeat.o8 .feature-image-wrapper {
  display:flex; align-items:center; justify-content:center; width:100%; max-width:800px;
  height:700px; aspect-ratio:auto; padding:60px; border-radius:20px; box-sizing:border-box; overflow:hidden;
  background:
    radial-gradient(circle at 28% 42%,rgba(255,205,225,.23),transparent 43%),
    radial-gradient(circle at 76% 38%,rgba(201,205,255,.26),transparent 48%),
    rgba(255,255,255,.18);
  -webkit-backdrop-filter:blur(22px) saturate(1.06); backdrop-filter:blur(22px) saturate(1.06);
  transition:opacity .18s cubic-bezier(.22,1,.36,1); transform:none;
}
#snFeat.o8 .feature-image-wrapper > .o8-tile-bg { display:none; }
#snFeat.o8 .feature-image-wrapper.lp-01 { display:none; }
#snFeat.o8 .feature-scroll-left > .feature-image-wrapper > :not(.o8-tile-bg) {
  width:100%; max-width:100%; max-height:100%; box-sizing:border-box;
}
#snFeat.o8 .feature-scroll-left > .feature-image-wrapper .dv-panel { overflow:hidden; }
#snFeat.o8 .feature-scroll-left > .feature-image-wrapper .dv-cards4,
#snFeat.o8 .feature-scroll-left > .feature-image-wrapper .dv-heroplate,
#snFeat.o8 .feature-scroll-left > .feature-image-wrapper .dv-breathfig,
#snFeat.o8 .feature-scroll-left > .feature-image-wrapper .o8-local-grid { height:100%; }
.voice-proof { display:flex; flex-direction:column; justify-content:center; gap:28px; height:100%; margin:0; color:var(--dv-ink); }
.voice-proof-stage { position:relative; display:grid; grid-template-columns:1fr 1fr; gap:72px; padding:28px; border-radius:20px; background:#fff; }
.voice-proof-stage::after { content:""; position:absolute; left:50%; top:50%; width:72px; height:1px; translate:-50% -50%; background:rgba(113,128,255,.2); }
.voice-proof-side { display:flex; flex-direction:column; gap:20px; min-width:0; }
.voice-proof-side header { display:flex; align-items:center; gap:10px; color:var(--dv-ink45); font:600 9px/1 var(--dv-mono); letter-spacing:.18em; white-space:nowrap; }
.voice-proof-side header i { flex:1; height:1px; background:rgba(36,28,78,.12); }
.voice-proof-row { display:grid; grid-template-columns:34px 72px minmax(0,1fr); align-items:center; gap:10px; min-width:0; }
.voice-proof-row .dv-play { width:34px; height:34px; }
.voice-proof-row > .dv-mono { color:var(--dv-ink6); font-size:9px; letter-spacing:.14em; white-space:nowrap; }
.voice-proof-row .dv-wave-dots { width:100%; height:42px; min-height:0; }
.voice-proof-verify { position:absolute; z-index:3; left:50%; top:50%; width:54px; height:54px; translate:-50% -50%; }
.voice-proof-notes { display:grid; grid-template-columns:1fr 1fr; gap:72px; padding:0 8px; }
.voice-proof-notes p { display:flex; flex-direction:column; gap:7px; margin:0; }
.voice-proof-notes strong { color:#fff; font-size:16px; line-height:1.25; font-weight:700; }
.voice-proof-notes span { color:rgba(255,255,255,.68); font-size:12px; line-height:1.4; }
#snFeat.o8 .feature-image-wrapper.scroll-01 { position:relative; inset:auto; z-index:4; opacity:0; visibility:hidden; }
#snFeat.o8 .feature-image-wrapper.scroll-02 { position:absolute; inset:0; z-index:3; opacity:0; visibility:hidden; }
#snFeat.o8 .feature-image-wrapper.scroll-03 { position:absolute; inset:0; z-index:2; opacity:0; visibility:hidden; }
#snFeat.o8 .feature-image-wrapper.scroll-04 { position:absolute; inset:0; z-index:1; opacity:0; visibility:hidden; }
#snFeat.o8[data-step="0"] .feature-image-wrapper.scroll-01,
#snFeat.o8[data-step="1"] .feature-image-wrapper.scroll-02,
#snFeat.o8[data-step="2"] .feature-image-wrapper.scroll-03,
#snFeat.o8[data-step="3"] .feature-image-wrapper.scroll-04 { opacity:1; visibility:visible; }
#snFeat.o8 .feature-scroll-left > .feature-image-wrapper.scroll-04 { display:none; }
#snFeat.o8 .feature-scroll-right {
  position:sticky; grid-column:2; grid-row:1; top:0; display:block; width:100%; min-width:0;
  height:100svh; padding:0; opacity:1; translate:0 0;
}
#snFeat.o8 .single-feature,
#snFeat.o8 .single-feature.scroll-01,
#snFeat.o8 .single-feature.scroll-02,
#snFeat.o8 .single-feature.scroll-03,
#snFeat.o8 .single-feature.scroll-04 {
  position:absolute; inset:0; display:flex; align-items:center; justify-content:flex-end;
  width:100%; min-height:0; opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .24s cubic-bezier(.22,1,.36,1);
}
#snFeat.o8[data-step="0"] .single-feature.scroll-01,
#snFeat.o8[data-step="1"] .single-feature.scroll-02,
#snFeat.o8[data-step="2"] .single-feature.scroll-03 { opacity:1; visibility:visible; pointer-events:auto; }
#snFeat.o8 .single-feature.scroll-04 { display:none; }
#snFeat.o8 .feature-content,
#snFeat.o8 .feature-content.scroll { display:flex; flex-flow:column; align-items:flex-start; gap:36px; width:100%; max-width:560px; }
#snFeat.o8 .section-title-wrapper { width:100%; }
.nf #snFeat.o8 h2.section-title.feature {
  max-width:560px; margin:0; font-family:var(--dv-font);
  font-size:44px; line-height:1.1; letter-spacing:-.03em; font-weight:700; text-transform:none;
}
.nf #snFeat.o8 p.section-subtitle.feature {
  max-width:475px; margin:0; font-size:16px; line-height:1.65; font-weight:300; letter-spacing:0;
}
#snFeat.o8 .feature-content .dv-foot { margin-top:0; }

@media (max-width:991px) {
  #snFeat.o8 > .container { width:100%; padding-inline:24px; }
  #snFeat.o8 .feature-scroll-wrapper { grid-template-columns:minmax(0,1fr) minmax(320px,.8fr); gap:40px; }
  #snFeat.o8 .feature-scroll-left,
  #snFeat.o8 .feature-scroll-left.slide-left-global.is-in,
  #snFeat.o8[data-step] .feature-scroll-left,
  #snFeat.o8[data-step] .feature-scroll-left.slide-left-global.is-in { top:max(50px,calc((100svh - 500px)/2)); width:100%; }
  #snFeat.o8 .feature-image-wrapper { height:500px; aspect-ratio:auto; padding:32px; }
  #snFeat.o8 .feature-scroll-right { height:100svh; padding:0; }
  .nf #snFeat.o8 h2.section-title.feature { font-size:36px; }
  .voice-proof-stage { gap:52px; padding:22px 18px; }
  .voice-proof-row { grid-template-columns:30px 58px minmax(0,1fr); gap:7px; }
  .voice-proof-row .dv-play { width:30px; height:30px; }
  .voice-proof-notes { gap:40px; }
}
@media (max-width:767px) {
  #snFeat.o8 > .container { width:100%; padding-inline:16px; }
  #snFeat.o8 .feature-scroll-wrapper { display:block; height:auto; }
  #snFeat.o8 .feature-scroll-left { display:none; }
  #snFeat.o8 .feature-scroll-right { position:relative; top:auto; display:flex; flex-direction:column; gap:80px; height:auto; padding:0; }
  #snFeat.o8 .single-feature { position:relative; inset:auto; flex-flow:column-reverse; align-items:stretch; gap:24px; opacity:1; visibility:visible; pointer-events:auto; }
  #snFeat.o8 .feature-image-wrapper.lp-01 {
    display:flex; width:100%; height:auto; aspect-ratio:auto; padding:0;
    background:none; -webkit-backdrop-filter:none; backdrop-filter:none;
  }
  #snFeat.o8 .feature-image-wrapper.lp-01 > .feature-image-wrapper { position:relative; inset:auto; height:400px; min-height:0; aspect-ratio:auto; padding:24px; opacity:1; }
  .nf #snFeat.o8 h2.section-title.feature { font-size:30px; line-height:1.15; letter-spacing:-.025em; }
  .voice-proof { gap:20px; }
  .voice-proof-stage { grid-template-columns:1fr; gap:26px; padding:20px; }
  .voice-proof-stage::after,.voice-proof-verify { display:none; }
  .voice-proof-notes { grid-template-columns:1fr; gap:14px; padding:0 4px; }
}
@media (prefers-reduced-motion:reduce) {
  #snFeat.o8 .feature-image-wrapper { transition:none; }
}
/* r5n-b · <use> 影子树里吃不到文档 CSS → 波浪线的 fill/stroke/opacity 直接写成 symbol 里的呈现属性；这里只留 svg 层级 */
.o8 .o8-tile-bg { fill:none; }
/* r5p · 她：条形图专业度。① 标签列定宽（两卡同宽），柱从同一起跑线起，OURS 行改 US；② 别家改 CLOUD TTS A/B/C（与 It's local 用词统一）；
   ③ 玻璃上的字走白 / 浅紫，卡里照旧墨色；④ 同比例尺同行高，数值常显贴柱右缘，US 柱 + 数值 hero 紫、其余浅紫，起跑线一条发丝；图注小字右对齐；⑤ 卡标题居中。 */
.o8 .problem-solving-card .dv-bars { gap:14px; }
.o8 .problem-solving-card .dv-bar { grid-template-columns:7.5em minmax(0,1fr); gap:12px; align-items:center; }
.o8 .problem-solving-card .dv-bar .dv-mono { font-size:10px; letter-spacing:.14em; color:var(--dv-ink6); white-space:nowrap; overflow:visible; }
.o8 .problem-solving-card .dv-bar-track { position:relative; display:flex; align-items:center; gap:8px; min-width:0; padding-left:1px; }
.o8 .problem-solving-card .dv-bar-track::before { content:""; position:absolute; left:0; top:-7px; bottom:-7px; width:1px; background:rgba(36,28,78,.16); }   /* 起跑线：逐行相接成一条发丝 */
.o8 .problem-solving-card .dv-bar:first-child .dv-bar-track::before { top:0; }
.o8 .problem-solving-card .dv-bar:last-child .dv-bar-track::before { bottom:0; }
.o8 .problem-solving-card .dv-bar i { flex:none; width:calc(var(--v) * (100% - 3.6em)); height:22px; border-radius:0 6px 6px 0; background:var(--dv-lav); transform:scaleX(0); transform-origin:0 50%; transition:transform .9s var(--dv-ease); }
.o8 .problem-solving-card .dv-bar b { opacity:1; font-size:11px; letter-spacing:.04em; color:var(--dv-ink6); white-space:nowrap; transition:none; }
.o8 .problem-solving-card .dv-bar.is-ours .dv-mono, .o8 .problem-solving-card .dv-bar.is-ours b { color:var(--dv-pur); font-weight:700; }
.o8 .problem-solving-card .dv-bar.is-ours i { background:var(--dv-pur); }
.o8 [data-nf].is-in .problem-solving-card .dv-bar i, .o8 .problem-solving-card.is-in .dv-bar i { transform:scaleX(1); }
.nf .o8 p.problem-solving-card-title { width:100%; text-align:center; margin-bottom:22px; color:var(--dv-pur); }
.o6 .dv-board .o8 .o8-glass .problem-solving-card.dv-plate { height:100%; box-sizing:border-box; }
.o8 .problem-solving-card .dv-ph.o8-cap { display:block; width:100%; margin-top:18px; text-align:right; font-size:9px; letter-spacing:.14em; text-transform:none; color:var(--dv-ink45); }
/* 玻璃上的字：guide / 卡下小标题 + 说明 → 白 / 浅紫 */
.o8.o8-center .problem-solving-tab-link { color:#fff; }
.o8.o8-center .problem-solving-tab-link::before { background:rgba(255,255,255,.45); }
.o8.o8-center .problem-solving-tab-link.w--current::before { background:#e3e0ff; }
.o8.o8-center .problem-solving-tab-link:focus-visible { outline-color:#fff; }
.nf .o8 p.problem-solving-content-title { color:#fff; }
.nf .o8 p.problem-solving-content-subtitle { color:#e3e0ff; }
@media (max-width:767px) {
  .o8 .problem-solving-card .dv-bar { grid-template-columns:6.5em minmax(0,1fr); gap:10px; }
  .o8 .problem-solving-card .dv-bar .dv-mono { font-size:9px; letter-spacing:.1em; }
  .o8 .problem-solving-card .dv-bar i { height:18px; }
}
/* r5q · ① meter 标题区：无 eyebrow 无副句，h2 = o6-caps 全大写居中，下面直接接玻璃块；② 幕布屏抬头「/ IT STARTS WITH THE VOICE. /」提到 h2 同级 display 大写；③ 数值不转大写、标签列再收一点 */
.o6 .dv-board .o8.o8-center .section-title-wrapper.problem { max-width:none; }
.o6 .dv-board .o8.o8-center h2.section-title.o6-caps { text-align:center; }
.o8.o8-center .problem-solving-content-wrap { gap:40px; }
html[data-lang="ja"] .developer-intro-title { font-size:clamp(40px,3.5vw,66px); line-height:1.16; letter-spacing:-.03em; }
.nf #snMeter.o8 h2.section-title.dv-h2 {
  max-width:900px; margin:0 auto; color:#fff; font-family:var(--dv-font);
  font-size:44px; line-height:1.1; font-weight:700; letter-spacing:-.03em;
  text-align:center; text-transform:none; text-wrap:balance;
}
@media(max-width:991px){.nf #snMeter.o8 h2.section-title.dv-h2{font-size:36px}}
@media(max-width:767px){.nf #snMeter.o8 h2.section-title.dv-h2{font-size:30px;line-height:1.15}}
.o8 .problem-solving-card .dv-bar { grid-template-columns:6.5em minmax(0,1fr); }
.o8 .problem-solving-card .dv-bar b { text-transform:none; }
/* r5r lill · [VOICE API] 图重做：白卡撑满玻璃块（tile pad 40 → 24），REFERENCE / CLONED 上下两块，四条波形整宽、9 根线 56 高、白卡上走紫；中间「证明」大键 64；图注两栏 EN 大字 + 日 / 中小字 + 英文小注。 */
.o8 .feature-image-wrapper.scroll-01 { padding:24px; }
.o8 .voice-proof { gap:22px; width:100%; }
.o8 .voice-proof-stage { display:flex; flex-direction:column; gap:18px; padding:24px 24px 26px; border-radius:20px; background:#fff; }
.o8 .voice-proof-stage::after { display:none; }
.o8 .voice-proof-side { gap:14px; }
.o8 .voice-proof-side header { font-size:10px; letter-spacing:.2em; color:var(--dv-ink45); }
.o8 .voice-proof-side.is-cloned header span:first-child { color:var(--dv-pur); }
.o8 .voice-proof-row { grid-template-columns:40px 92px minmax(0,1fr); gap:12px; padding:4px 0; border-radius:12px; transition:background .25s ease; }
.o8 .voice-proof-row .dv-play { width:40px; height:40px; background:var(--dv-lav); color:var(--dv-pur); }
.o8 .voice-proof-row .dv-play:hover, .o8 .voice-proof-row .dv-play.is-playing { background:var(--dv-pur); color:#fff; }
.o8 .voice-proof-row > .dv-mono { font-size:10px; letter-spacing:.16em; color:var(--dv-ink6); }
.o8 .voice-proof-row .dv-wave-dots { width:100%; height:56px; min-height:0; clip-path:none; --wl-rgb:201,194,255; --wl-rgb2:70,83,198; }
.o8 .voice-proof-row.is-live { background:var(--dv-lav2); }
.o8 .voice-proof-row.is-live > .dv-mono { color:var(--dv-pur); font-weight:700; }
.o8 .voice-proof-mid { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:16px; }
.o8 .voice-proof-mid > i { height:1px; background:rgba(36,28,78,.12); }
.o8 .voice-proof-verify { position:static; translate:none; width:64px; height:64px; background:var(--dv-pur); color:#fff; }
.o8 .voice-proof-verify::before { content:""; position:absolute; inset:-8px; border-radius:50%; border:1px solid rgba(113,128,255,.35); pointer-events:none; }
.o8 .voice-proof-verify.is-seq { box-shadow:none; background:#5f6ff0; }
.o8 .voice-proof-notes { gap:24px; padding:0 4px; }
.o8 .voice-proof-notes p { gap:4px; }
.o8 .voice-proof-notes strong { font-size:17px; line-height:1.3; }
.o8 .voice-proof-notes em { font-style:normal; color:#e3e0ff; font-size:12px; line-height:1.5; }
.o8 .voice-proof-notes em[data-i18n$=".b2"] { font-family:"Noto Sans JP",var(--nc1-font,Inter,sans-serif); }
.o8 .voice-proof-notes span { display:block; margin-top:4px; color:rgba(255,255,255,.62); font-size:11px; line-height:1.4; }
@media (max-width:991px) { .o8 .voice-proof-row { grid-template-columns:36px 80px minmax(0,1fr); } .o8 .voice-proof-row .dv-wave-dots { height:48px; } }
@media (max-width:767px) { .o8 .voice-proof-stage { padding:18px 16px 20px; gap:14px; } .o8 .voice-proof-verify { display:inline-grid; width:52px; height:52px; } .o8 .voice-proof-notes { grid-template-columns:1fr; gap:14px; } .o8 .voice-proof-row { grid-template-columns:34px 72px minmax(0,1fr); gap:8px; } .o8 .voice-proof-row .dv-wave-dots { height:40px; } }

/* ======================================================================
   0906 lill r6 · Voice API 板六段同一竖排（她：「下面图是大的，上面是 title」）
   每段 = .o9-head（居中 o6-caps 标题 + 副句）→ .o9-tile（全宽毛玻璃：透白 .22 + blur 24，波浪纹 <use>）→ 白 .dv-plate 卡。
   coodebox sticky 图叠撤；一段一段顺着滚。字裸放紫底；卡无外框无阴影；hero 紫只做小面积。
   ====================================================================== */
.o6 .dv-board .dv-sec.o9 { padding:64px 0; }
.o6 .dv-board .dv-sec.o9 > .dv-in { background:none; border-radius:0; }
.o9-head { display:flex; flex-direction:column; align-items:center; gap:18px; margin-bottom:40px; text-align:center; }
.o6 .dv-board .o9-head h2.dv-h2.o6-caps { text-align:center; max-width:24ch; }
.o6 .dv-board .o9-head .dv-sub { margin:0; max-width:640px; text-align:center; }
.o9-tile { position:relative; isolation:isolate; box-sizing:border-box; width:100%; padding:32px; border-radius:24px; background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(24px) saturate(1.05); backdrop-filter:blur(24px) saturate(1.05); overflow:hidden; }
.o9-tile > .o8-tile-bg { position:absolute; inset:-4% -2%; z-index:0; width:104%; height:108%; pointer-events:none; fill:none; }
.o9-tile > :not(.o8-tile-bg) { position:relative; z-index:1; }
.o9-tile-in { display:grid; gap:24px; margin:0; }
.o9-cols-2 { grid-template-columns:1fr 1fr; align-items:stretch; }
.o6 .dv-board .o9-tile .dv-plate { margin:0; padding:32px; border-radius:20px; background:#fff; color:var(--dv-ink); box-sizing:border-box; }
/* ---- meter：两张条形图（条形图规则沿用 .o8 .problem-solving-card 那组，tile-in 带 o8 作用域） ---- */
.o9-tile.is-in .problem-solving-card .dv-bar i { transform:scaleX(1); }
.o6 .dv-board .o9-meter .o8 .problem-solving-card.dv-plate { display:block; height:100%; padding:32px 32px 28px; }
/* ---- deck：整幅 ---- */
.o6 .dv-board .o9-tile .dv-plate.o9-deckcard { padding:32px 40px 28px; }
.o9-deckcard .dv-deck { max-width:none; }
.o9-deckcard .dk-name { fill:var(--dv-ink6); font:500 13px var(--dv-font); }
.o9-deckcard .dk-ours-name { fill:var(--dv-pur); font-weight:700; letter-spacing:.06em; }
/* ---- voice：A 参考卡 | 证明大键 | B 克隆卡 ---- */
.o9-voice { grid-template-columns:1fr auto 1fr; align-items:stretch; gap:20px; }
.o6 .dv-board .o9-tile .dv-plate.voice-proof-side { display:flex; flex-direction:column; gap:16px; min-width:0; padding:28px 28px 24px; }
.o9-voice .voice-proof-side header { display:flex; align-items:center; gap:10px; color:var(--dv-ink45); font:600 10px/1 var(--dv-mono); letter-spacing:.2em; white-space:nowrap; }
.o9-voice .voice-proof-side header i { flex:1; height:1px; background:rgba(36,28,78,.12); }
.o9-voice .voice-proof-side.is-cloned header span:first-child { color:var(--dv-pur); }
.o9-voice .voice-proof-row { display:grid; grid-template-columns:40px 96px minmax(0,1fr); align-items:center; gap:12px; padding:6px 0; border-radius:12px; transition:background .25s ease; }
.o9-voice .voice-proof-row .dv-play { width:40px; height:40px; background:var(--dv-lav); color:var(--dv-pur); }
.o9-voice .voice-proof-row .dv-play:hover, .o9-voice .voice-proof-row .dv-play.is-playing { background:var(--dv-pur); color:#fff; }
.o9-voice .voice-proof-row > .dv-mono { font-size:10px; letter-spacing:.16em; color:var(--dv-ink6); white-space:nowrap; }
.o9-voice .voice-proof-row .dv-wave-dots { width:100%; height:64px; min-height:0; clip-path:none; --wl-rgb:201,194,255; --wl-rgb2:70,83,198; }
.o9-voice .voice-proof-row.is-live { background:var(--dv-lav2); }
.o9-voice .voice-proof-row.is-live > .dv-mono { color:var(--dv-pur); font-weight:700; }
.o9-voice .voice-proof-note { display:flex; flex-direction:column; gap:3px; margin:auto 0 0; padding-top:18px; border-top:1px dashed var(--dv-pur40); }
.o9-voice .voice-proof-note strong { color:var(--dv-ink); font-size:17px; line-height:1.3; font-weight:700; }
.o9-voice .voice-proof-note em { font-style:normal; color:var(--dv-ink6); font-size:12px; line-height:1.5; }
.o9-voice .voice-proof-note em[data-i18n$=".b2"] { font-family:"Noto Sans JP",var(--nc1-font,Inter,sans-serif); }
.o9-voice .voice-proof-note span { display:block; margin-top:4px; color:var(--dv-ink45); font-size:11px; line-height:1.4; }
.o9-voice .voice-proof-mid { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; padding:0 4px; }
.o9-voice .voice-proof-mid > i { flex:1; width:1px; background:rgba(255,255,255,.4); }
.o9-voice .voice-proof-verify { position:static; translate:none; width:64px; height:64px; background:var(--dv-pur); color:#fff; }
.o9-voice .voice-proof-verify::before { content:""; position:absolute; inset:-8px; border-radius:50%; border:1px solid rgba(255,255,255,.55); pointer-events:none; }
.o9-voice .voice-proof-verify.is-seq { background:#5f6ff0; }
/* ---- tags：句子 + 内联 [tag] 在上，播放键句尾，波形，下面一排 tag（点换 take） ---- */
.o6 .dv-board .o9-tile .dv-plate.o9-tags { display:flex; flex-direction:column; gap:20px; padding:28px 32px 28px; }
.o9-tags-top { display:flex; align-items:baseline; justify-content:space-between; gap:16px; }
.o9-tags .dv-panel-label { color:var(--dv-ink6); font-size:14px; font-weight:600; }
.o9-tags-top .dv-mono { color:var(--dv-ink45); font-size:10px; letter-spacing:.16em; }
.o9-tags-line-row { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:24px; }
.o6 .nf .o9-tags p.dv-line.o9-tags-line { margin:0; color:var(--dv-ink); font-size:clamp(20px,1.9vw,28px); line-height:1.4; font-weight:600; letter-spacing:-.01em; }
.o6 .nf .o9-tags p.dv-line.o9-tags-line span { color:var(--dv-ink); }
.o9-tags .dv-line-tag { font-size:clamp(15px,1.3vw,19px); line-height:1.35; padding:3px 10px; vertical-align:baseline; }
.o9-tags .o9-tags-play { width:56px; height:56px; background:var(--dv-pur); color:#fff; }
.o9-tags-wave { --wl-rgb:201,194,255; --wl-rgb2:70,83,198; }
.o9-tags-wave .dv-wave-lg { height:112px; clip-path:none; }
.o6 .dv-board .o9-tags .dv-panel { display:block; max-width:none; border:0; border-radius:0; background:none; overflow:visible; }
.o6 .dv-board .o9-tags .dv-panel-list { position:relative; display:flex; flex-direction:row; flex-wrap:wrap; align-items:center; gap:8px; padding:18px 0 0; border:0; border-top:1px dashed var(--dv-pur40); }
.o6 .dv-board .o9-tags .dv-panel .dv-tag { width:auto; min-height:40px; padding:0 14px 0 12px; border-radius:12px; background:var(--dv-lav2); color:var(--dv-ink6); }
.o6 .dv-board .o9-tags .dv-panel .dv-tag:hover { background:var(--dv-lav); }
.o6 .dv-board .o9-tags .dv-panel .dv-tag.is-on { background:var(--dv-lav); color:var(--dv-pur); }
.o6 .dv-board .o9-tags .dv-panel-list-foot { width:auto; margin-left:auto; padding:0; color:var(--dv-ink45); }
.o9-tags .dv-tag-pill { display:none; }   /* 底下的药丸滑块在横排 chip 里不需要，chip 自己变色 */
/* ---- breath：波形 + 播放键在上，频谱对整宽两张 ---- */
.o6 .dv-board .o9-tile .dv-plate.o9-breath { display:grid; gap:28px; padding:28px 32px 28px; }
.o9-breath .dv-bigwave .dv-wave-lg { height:128px; }
.o9-breath .dv-specs { gap:32px; }
/* ---- local：两张往返卡 ---- */
.o6 .dv-board .o9-tile .dv-plate.dv-roomfig.o9-room { display:flex; flex-direction:column; gap:20px; padding:32px 32px 28px; }
.o9-room .dv-diagram { max-width:none; }
.o8-room-cap { margin:0; font-size:14px; line-height:20px; color:var(--dv-ink6); }
.o9-room.is-ours .o8-room-cap { color:var(--dv-ink); }
/* ---- 断点 ---- */
@media (max-width:991px) {
  .o6 .dv-board .dv-sec.o9 { padding:48px 0; }
  .o9-head { margin-bottom:28px; }
  .o9-tile { padding:20px; border-radius:20px; }
  .o9-tile-in, .o9-voice { gap:16px; }
  .o6 .dv-board .o9-tile .dv-plate { padding:24px; }
  .o9-voice { grid-template-columns:1fr; }
  .o9-voice .voice-proof-mid { flex-direction:row; padding:4px 0; }
  .o9-voice .voice-proof-mid > i { width:auto; height:1px; }
  .o9-voice .voice-proof-row { grid-template-columns:36px 84px minmax(0,1fr); }
  .o9-tags-line-row { grid-template-columns:minmax(0,1fr); }
  .o9-tags .o9-tags-play { justify-self:start; }
}
@media (max-width:767px) {
  .o9-cols-2 { grid-template-columns:1fr; }
  .o9-tile { padding:12px; border-radius:18px; }
  .o6 .dv-board .o9-tile .dv-plate, .o6 .dv-board .o9-tile .dv-plate.voice-proof-side, .o6 .dv-board .o9-tile .dv-plate.o9-tags, .o6 .dv-board .o9-tile .dv-plate.o9-breath, .o6 .dv-board .o9-tile .dv-plate.dv-roomfig.o9-room, .o6 .dv-board .o9-meter .o8 .problem-solving-card.dv-plate { padding:18px 16px 18px; }
  .o6 .dv-board .o9-tile .dv-plate.o9-deckcard { padding:12px 6px 12px; }
  .o9-deckcard .dk-name { font-size:24px; } .o9-deckcard .dk-lab { font-size:19px; } .o9-deckcard .dk-dot { r:9px; } .o9-deckcard .dk-ours circle { r:16px; }
  .o9-voice .voice-proof-row { grid-template-columns:34px 76px minmax(0,1fr); gap:8px; }
  .o9-voice .voice-proof-row .dv-wave-dots { height:44px; }
  .o9-voice .voice-proof-verify { width:52px; height:52px; }
  .o9-tags-wave .dv-wave-lg { height:80px; }
  .o9-breath .dv-specs { grid-template-columns:1fr; gap:20px; }
  .o9-breath .dv-bigwave .dv-wave-lg { height:88px; }
}
/* r6b · .o6 和 .nf 是同一元素，`.o6 .nf …` 永远不匹配 → 句子字号用 `.nf .o9-tags …`；meter 卡标题回墨色 */
.nf .o9-tags p.dv-line.o9-tags-line { margin:0; color:var(--dv-ink); font-size:clamp(20px,1.9vw,28px); line-height:1.4; font-weight:600; letter-spacing:-.01em; }
.nf .o9-tags p.dv-line.o9-tags-line span { color:var(--dv-ink); font-size:inherit; }
.nf .o9-meter p.problem-solving-card-title { color:var(--dv-ink); }
.o9-tags .dv-panel-list-foot { text-transform:uppercase; font-size:9px; }
/* r6c · 她：① Voice 图上下叠（REFERENCE 上 / CLONED 下，各整宽），证明大键在两卡之间、连接线横向；② 卡里注脚撤；
   ③ meter 起到 CTA 的 h2 改句首大写（只去 text-transform，源文案不动）；④ 板底三件（实心圆 / 两只环）克制的持续运动：js 写 --bg-* 变量，这里只接变量；环加一段稍亮的弧让自转看得见；
   ⑤ deck 散点 hover tooltip：深墨底 + 浅紫字 mono，无边框无阴影，点上方居中；Ours 点 hover 略放大。 */
.o9-voice.is-stack { grid-template-columns:1fr; gap:16px; }
.o9-voice.is-stack .voice-proof-mid { flex-direction:row; padding:6px 0; }
.o9-voice.is-stack .voice-proof-mid > i { flex:1; width:auto; height:1px; }
.o6 .dv-board .o9-head h2.dv-h2.o6-caps, .o6 .dv-board #snCta1 .dv-h2.o6-caps { text-transform:none; letter-spacing:-.024em; max-width:26ch; }
.o6 .dv-board .o9-head h2.dv-h2.o6-caps .dv-l { display:inline; }
/* 背景件：位移 / 自转走变量，transform 只在 js 写；reduced-motion 时 js 不跑 */
.nf.o6 > .aw-arc { will-change:transform; transform:translate3d(var(--bg-x,0px), var(--bg-y,0px), 0) rotate(var(--bg-r,0deg)) scale(var(--bg-s,1)); }
.nf.o6 > .aw-arc.a1, .nf.o6 > .aw-arc.a3 { border-top-color:rgba(255,255,255,.26); border-right-color:rgba(255,255,255,.17); }
/* deck tooltip */
.o9-deckcard { position:relative; }
.o9-deckcard .dk-hit { cursor:pointer; outline:none; }
.o9-deckcard .dk-hit:focus-visible circle { stroke:var(--dv-pur); stroke-width:3; }
.dv-deckfig.is-in .dk-ours { transition:scale .25s var(--dv-ease), opacity .3s ease 2.7s; }
.dv-deckfig.is-in .dk-ours:hover, .dv-deckfig.is-in .dk-ours.is-hot { scale:1.15; }
.dv-deckfig.is-in .dk-pt:hover .dk-dot, .dv-deckfig.is-in .dk-pt.is-hot .dk-dot { fill:#b9b3ff; }
.dk-tip { position:absolute; z-index:5; left:0; top:0; padding:7px 10px; border-radius:8px; background:var(--dv-ink); color:#e3e0ff; font:600 11px/1.3 var(--dv-mono); letter-spacing:.04em; white-space:nowrap; pointer-events:none; opacity:0; translate:-50% calc(-100% - 12px); transition:opacity .16s ease, translate .16s var(--dv-ease); }
.dk-tip.is-on { opacity:1; }
.dk-tip.is-flip-l { translate:0 calc(-100% - 12px); }
.dk-tip.is-flip-r { translate:-100% calc(-100% - 12px); }
.dk-tip.is-below { translate:-50% 14px; }
@media (max-width:767px) { .dk-tip { font-size:10px; white-space:normal; max-width:70vw; } }
@media (prefers-reduced-motion:reduce) { .dv-deckfig.is-in .dk-ours { transition:none; } .dk-tip { transition:none; } }

/* ======================================================================
   0906 lill r7 · 她：「今天改的全部套成 option4 的动效和设计，内容用现在改好的」
   ① 幕布 .o1-d1：option5 后加的小字副句样式 + 逐字 wipe 撤，回 option4 的整幕淡入；句子用 bridge h2 同款 display（同字体 / 800 / clamp(48,4vw,78) / .88 / -.065em / 白），居中。
   ② 第二道幕 .o1-d2 眉题（It starts with the voice.）提到 h2 级 display，斜杠保留；进出仍是 option4 的 --b-wordIn 升起。
   ③ 板回 option4 r8e 材质：白 plate 直接坐紫地，无玻璃 / 波浪；meter 条形图、voice 上下两卡、tags、双卡 room 的规则从 .o9-tile 作用域挪出来。
   ====================================================================== */
.o1-d1 p { width:min(940px,82vw); display:block; margin:0; color:#fff; font-size:clamp(48px,4vw,78px); font-weight:800; line-height:.92; letter-spacing:-.065em; text-align:center; text-transform:none; white-space:normal; text-wrap:balance; }
.o1-d1 p span, .mm-stage[data-state="div1"] .o1-d1 p span { display:inline; opacity:1; clip-path:none; transform:none; transition:none; }
.o1-d1 .o1-eyebrow, .mm-stage[data-state="div1"] .o1-d1 .o1-eyebrow { opacity:1; transform:none; transition:none; }
.o1-d2 .o1-eyebrow, .o1-d2 .o1-eyebrow.nf-subtitle { font-size:clamp(28px,3.1vw,44px); line-height:1.18; font-weight:700; letter-spacing:-.024em; color:#fff; padding:0 24px; text-wrap:balance; }
html[data-lang="ja"] .o1-d1 p { font-size:clamp(34px,3vw,56px); letter-spacing:0; line-height:1.3; }
html[data-lang="ja"] .o1-d2 .o1-eyebrow { font-size:clamp(24px,2.6vw,34px); line-height:1.45; letter-spacing:0; }
/* ---- meter：option4 的 .dv-charts 两栏 + 我们的专业版条形图 ---- */
.dv-board .dv-charts.is-pro { display:grid; grid-template-columns:1fr 1fr; gap:40px 56px; padding:36px 40px 32px; }
.dv-charts.is-pro .dv-chart { display:flex; flex-direction:column; min-width:0; }
.dv-plate.dv-charts.is-pro .dv-chart-t, .dv-board .dv-charts.is-pro .dv-chart-t { margin:0 0 22px; text-align:center; color:var(--dv-ink); font-size:17px; line-height:24px; font-weight:600; }
.dv-charts.is-pro .dv-bars { display:grid; gap:14px; width:100%; }
.dv-board .dv-charts.is-pro .dv-bar { display:grid; grid-template-columns:6.5em minmax(0,1fr); gap:12px; align-items:center; }
.dv-plate.dv-charts.is-pro .dv-bar .dv-mono { font-size:10px; letter-spacing:.14em; color:var(--dv-ink6); white-space:nowrap; overflow:visible; }
.dv-charts.is-pro .dv-bar-track { position:relative; display:flex; align-items:center; gap:8px; min-width:0; padding-left:1px; }
.dv-charts.is-pro .dv-bar-track::before { content:""; position:absolute; left:0; top:-7px; bottom:-7px; width:1px; background:rgba(36,28,78,.16); }
.dv-charts.is-pro .dv-bar:first-child .dv-bar-track::before { top:0; }
.dv-charts.is-pro .dv-bar:last-child .dv-bar-track::before { bottom:0; }
.dv-plate.dv-charts.is-pro .dv-bar i, .dv-board .dv-charts.is-pro .dv-bar i { flex:none; width:calc(var(--v) * (100% - 3.6em)); height:22px; border-radius:0 6px 6px 0; background:var(--dv-lav); transform:scaleX(0); transform-origin:0 50%; transition:transform .9s var(--dv-ease); }
.dv-plate.dv-charts.is-pro .dv-bar b { opacity:1; font-size:11px; letter-spacing:.04em; color:var(--dv-ink6); white-space:nowrap; text-transform:none; transition:none; }
.dv-plate.dv-charts.is-pro .dv-bar.is-ours .dv-mono, .dv-plate.dv-charts.is-pro .dv-bar.is-ours b { color:var(--dv-pur); font-weight:700; }
.dv-plate.dv-charts.is-pro .dv-bar.is-ours i { background:var(--dv-pur); }
.dv-board .dv-charts.is-pro.is-in .dv-bar i { transform:scaleX(1); }
.dv-plate.dv-charts.is-pro .dv-ph.is-cap, .dv-charts.is-pro .dv-ph.is-cap { display:block; margin-top:18px; text-align:right; font-size:9px; letter-spacing:.14em; text-transform:none; color:var(--dv-ink45); }
/* ---- deck ---- */
.o6 .dv-board .dv-plate.dv-deckfig.o9-deckcard { padding:32px 40px 28px; }
/* ---- voice：两张白卡上下叠（.o9-voice.is-stack 的排法沿用），plate 本体样式从 tile 作用域挪出 ---- */
.o6 .dv-board .voice-proof .dv-plate.voice-proof-side { display:flex; flex-direction:column; gap:16px; min-width:0; margin:0; padding:28px 32px 24px; border-radius:24px; background:#fff; color:var(--dv-ink); box-sizing:border-box; }
.o9-voice .voice-proof-mid > i { background:rgba(255,255,255,.4); }
/* ---- tags ---- */
.o6 .dv-board .dv-plate.o9-tags { display:flex; flex-direction:column; gap:20px; padding:28px 32px 28px; }
/* ---- room：两卡并排 ---- */
.dv-cols2 { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.o6 .dv-board .dv-plate.dv-roomfig.o9-room { display:flex; flex-direction:column; justify-items:stretch; gap:20px; padding:32px 32px 28px; }
@media (max-width:991px) {
  .dv-board .dv-charts.is-pro { grid-template-columns:1fr; gap:32px; padding:28px; }
  .dv-cols2 { gap:16px; }
}
@media (max-width:767px) {
  .dv-board .dv-charts.is-pro { padding:20px 16px; }
  .dv-board .dv-charts.is-pro .dv-bar { grid-template-columns:6em minmax(0,1fr); gap:10px; }
  .dv-cols2 { grid-template-columns:1fr; gap:12px; }
  .o6 .dv-board .voice-proof .dv-plate.voice-proof-side, .o6 .dv-board .dv-plate.o9-tags, .o6 .dv-board .dv-plate.dv-roomfig.o9-room { padding:18px 16px; }
  .o6 .dv-board .dv-plate.dv-deckfig.o9-deckcard { padding:12px 6px; }
}
/* r7b · Voice 拆两段（03 voice cloning / 04 cross-language）：一张白 plate 里两步竖排，步号紫 mono、标签 mono、整宽波形、行尾播放键；中间流向行 = 发丝 + 证明大键 + 「↓ same voice · new words」 */
.o6 .dv-board .dv-plate.voice-proof.vp-flow { display:flex; flex-direction:column; gap:14px; padding:28px 32px 28px; }
.vp-flow .vp-step { display:grid; grid-template-columns:44px minmax(0,1fr) 48px; align-items:center; gap:16px; padding:8px 10px; border-radius:14px; transition:background .25s ease; }
.vp-flow .vp-step.is-live { background:var(--dv-lav2); }
.dv-plate .vp-flow .vp-num { font:700 14px/1 var(--dv-mono); letter-spacing:.06em; color:var(--dv-pur); }
.vp-flow .vp-body { display:flex; flex-direction:column; gap:6px; min-width:0; }
.dv-plate .vp-flow .vp-lab { font-size:10px; letter-spacing:.16em; color:var(--dv-ink6); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.vp-flow .vp-step.is-live .vp-lab { color:var(--dv-pur); }
.vp-flow .dv-wave-dots { width:100%; height:72px; min-height:0; clip-path:none; --wl-rgb:201,194,255; --wl-rgb2:70,83,198; }
.vp-flow .vp-step .dv-play { width:48px; height:48px; background:var(--dv-lav); color:var(--dv-pur); }
.vp-flow .vp-step .dv-play:hover, .vp-flow .vp-step .dv-play.is-playing { background:var(--dv-pur); color:#fff; }
.vp-flow .vp-link { display:flex; align-items:center; gap:16px; padding:2px 10px; }
.vp-flow .vp-link > i { flex:1; height:1px; background:rgba(36,28,78,.14); }
.vp-flow .voice-proof-verify { position:static; translate:none; width:56px; height:56px; background:var(--dv-pur); color:#fff; }
.vp-flow .voice-proof-verify::before { content:""; position:absolute; inset:-7px; border-radius:50%; border:1px solid rgba(113,128,255,.35); pointer-events:none; }
.vp-flow .voice-proof-verify.is-seq { background:#5f6ff0; }
.dv-plate .vp-flow .vp-rel { font-size:10px; letter-spacing:.16em; color:var(--dv-ink6); white-space:nowrap; }
.vp-flow .vp-rel b { color:var(--dv-pur); font-weight:700; }
@media (max-width:767px) {
  .o6 .dv-board .dv-plate.voice-proof.vp-flow { padding:18px 14px; gap:10px; }
  .vp-flow .vp-step { grid-template-columns:32px minmax(0,1fr) 40px; gap:10px; padding:6px 4px; }
  .vp-flow .vp-step .dv-play { width:40px; height:40px; }
  .vp-flow .dv-wave-dots { height:52px; }
  .vp-flow .vp-link { flex-wrap:wrap; justify-content:center; }
  .vp-flow .vp-link > i { display:none; }
  .dv-plate .vp-flow .vp-lab { white-space:normal; }
}
/* r7c · 回 option4 的板上滑盖幕机制：板底 = 场紫 × --b-cover（r5g 那条 background:none 把它杀了，幕眉题会透到 meter 上）。板和页同一支紫，看不出 sheet。 */
.nf.o6 > .nf-sheet.dv-board { background:rgb(113 128 255 / var(--b-cover, 1)); }
/* r7e · ① 03 voice cloning / 04 cross-language 并列一行两栏：栏内 head 在上、白卡 margin-top:auto 底对齐；卡按半宽缩（波形 56 / 步键 40 / 大键 48 / 字 9px）。
   ② developer 板 meter → local 每段外那层透白 .14 圆角底板（.dv-sec > .dv-in 的底）撤，眉题 / 标题 / 白卡直接坐紫地，段间只留间距；白卡下的椭圆细线（背景环）不动。 */
.o6 .dv-board .dv-sec.dv-z-field > .dv-in { background:none; border-radius:0; }
.dv-pair2 { display:grid; grid-template-columns:1fr 1fr; gap:32px; align-items:stretch; }
.dv-pair-col { display:flex; flex-direction:column; gap:32px; min-width:0; }
.dv-pair-col > .dv-fig, .dv-pair-col > .dv-foot { margin-top:auto; }
.dv-pair-col > .dv-fig + .dv-foot { margin-top:0; }
.dv-pair-col .dv-h2 { font-size:32px; line-height:38px; }
.dv-pair-col .dv-sub { font-size:16px; line-height:24px; }
.o6 .dv-board .dv-pair-col .dv-plate.voice-proof.vp-flow { padding:20px 22px 20px; gap:10px; }
.dv-pair-col .vp-flow .vp-step { grid-template-columns:32px minmax(0,1fr) 40px; gap:12px; padding:6px 6px; }
.dv-pair-col .vp-flow .vp-step .dv-play { width:40px; height:40px; }
.dv-plate .dv-pair-col .vp-num, .dv-pair-col .dv-plate .vp-num { font-size:12px; }
.dv-pair-col .dv-plate .vp-lab, .dv-pair-col .dv-plate .vp-rel { font-size:9px; letter-spacing:.14em; }
.dv-pair-col .vp-flow .dv-wave-dots { height:56px; }
.dv-pair-col .vp-flow .voice-proof-verify { width:48px; height:48px; }
.dv-pair-col .vp-flow .vp-link { gap:12px; }
html[data-lang="ja"] .dv-pair-col .dv-h2 { font-size:28px; line-height:1.4; }
@media (max-width:991px) { .dv-pair2 { grid-template-columns:1fr; gap:56px; } .dv-pair-col > .dv-fig { margin-top:0; } }
/* r7g 她（Creator 舞台三态）：① 眉题撤（DOM 已删）；② 三态标题统一 h2 档（40px，和板内 h2 同档），列收窄折 2–3 行，紧挨图版；③ 02 手机缩小并套同款玻璃图版；④ 03 副句撤。 */
.mm-run .mm-catch { font-size:40px; line-height:1.08; letter-spacing:-.024em; }
.mm-run .mm-catch .l { height:1.3em; padding:0 .38em; }
.mm-run .mm-l1 .mm-live-row, .mm-run .mm-l3 .mm-live-row { justify-content:end; padding-right:2vw; }
.mm-run .mm-l2 .mm-live-row { left:calc(3vw + 27vw); justify-content:start; padding-left:2vw; max-width:none; }
.mm-run .mm-l2 .mm-live-row .mm-catch { max-width:44vw; }
/* 02：手机缩小（高 62vh 以内、宽 ≤ 20vw），图版按手机来，和 01 / 03 同款透白 .22 + blur 22 */
.offer-visual.offer-visual-world { width:auto; display:grid; place-items:center; padding:var(--plate-pad); background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }
.offer-visual-world > img, .offer-visual.is-left.offer-visual-world > img { width:auto; height:min(62vh,30vw); max-height:none; }
@media (max-width:1024px) {
  .mm-run .mm-catch { font-size:clamp(26px,4.2vw,34px); }
  .mm-run .mm-l2 .mm-live-row { left:var(--frame); padding-left:6vw; }
  .mm-run .mm-l2 .mm-live-row .mm-catch { max-width:none; }
  .mm-run .mm-l1 .mm-live-row, .mm-run .mm-l3 .mm-live-row { justify-content:start; padding-right:6vw; }
  .offer-visual.offer-visual-world { width:90vw; }
  .offer-visual-world > img, .offer-visual.is-left.offer-visual-world > img { height:40vh; }
}
/* r7h 她：① 幕布抬头句首大写；② meter 两张白卡并排、head 居中；③ 板内所有段 head 居中（眉题 chip 已从 DOM 删；option4 逐项升起入场不动）；④ deck 新标题走 p6.deck.h2 */
.o1-d2 .o1-eyebrow, .o1-d2 .o1-eyebrow.nf-subtitle { text-transform:none; }
.o6 .dv-board .dv-sec.dv-z-field .dv-head, .o6 .dv-board .dv-pair-col .dv-head { align-items:center; text-align:center; }
.o6 .dv-board .dv-sec.dv-z-field .dv-head h2.dv-h2, .o6 .dv-board .dv-sec.dv-z-field .dv-head .dv-sub { margin-left:auto; margin-right:auto; text-align:center; }
.o6 .dv-board .dv-sec.dv-z-field .dv-foot { text-align:center; margin-left:auto; margin-right:auto; }
.dv-board .dv-charts.is-pro.dv-chart-card { display:block; padding:32px 32px 28px; }
.dv-meter-cards { align-items:stretch; }
/* r7g-b · 自查修：① 03 标题各行在 .l 里换行叠在一起 → 行不换行、字号 clamp(30px,2.7vw,40px)、行区左右留白收一点；② 02 图版被 vn 层那条 (0,3,0) 的 background:none / padding:0 压住 → 提特异性；文案列挪到图版右侧 */
.mm-run .mm-catch { font-size:clamp(30px,2.7vw,40px); }
.mm-run .mm-catch .l { white-space:nowrap; max-width:none; }
.mm-run .mm-live-row, .mm-run .mm-l2 .mm-live-row { padding:0 1.5vw; }
.mm-run .offer-visual.offer-visual-world, .mm-run .offer-visual.offer-visual-world.is-left { width:auto; padding:var(--plate-pad); overflow:hidden; border-radius:28px; background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }
.mm-run .offer-visual.offer-visual-world > img { width:auto; height:min(62vh,30vw); max-height:none; }
.mm-run .mm-l2 .mm-live-row { left:37vw; }
@media (max-width:1024px) { .mm-run .offer-visual.offer-visual-world, .mm-run .offer-visual.offer-visual-world.is-left { width:90vw; } .mm-run .offer-visual.offer-visual-world > img { height:40vh; } .mm-run .mm-l2 .mm-live-row { left:var(--frame); } .mm-run .mm-catch .l { white-space:normal; } }
/* r7g-c · 03 标题右缘压到图版下 → 字号 clamp(28px,2.5vw,36px)，01 / 03 文案区右缘留在图版外 3vw */
.mm-run .mm-catch { font-size:clamp(28px,2.5vw,36px); }
.mm-run .mm-l1 .mm-live-row, .mm-run .mm-l3 .mm-live-row { right:calc(var(--p1w) + 2vw); }
/* r7g-d · 图版实宽 = p1w + 2×plate-pad（padding 在外），文案区右缘按实宽让开；字号 34 */
.mm-run .mm-catch { font-size:clamp(26px,2.36vw,34px); }
.mm-run .mm-l1 .mm-live-row, .mm-run .mm-l3 .mm-live-row { right:calc(var(--p1w) + 2 * var(--plate-pad) + 1vw); }
/* r7g-e · 文案列显式定宽 = 视口 − 图版实宽 − 边距，行 pill 允许自增高换行（不再 nowrap + 定高叠字） */
.mm-run .mm-l1 .mm-live-row, .mm-run .mm-l3 .mm-live-row { left:var(--frame); right:auto; width:calc(100vw - var(--p1w) - 2 * var(--plate-pad) - var(--frame) - 1vw); max-width:none; }
.mm-run .mm-catch { max-width:100%; }
.mm-run .mm-catch .l { white-space:normal; height:auto; min-height:1.3em; padding:.08em .38em; max-width:100%; }
@media (max-width:1024px) { .mm-run .mm-l1 .mm-live-row, .mm-run .mm-l3 .mm-live-row { width:auto; right:var(--frame); } }
/* r7g-f · 带 var(--plate-pad) 的 calc 在这里算不出来（宽度回落 auto），改用视口数：图版实际左缘 ≈ 38.4vw → 文案区右缘 63vw；超宽屏图版封 1040 时按 px */
.mm-run .mm-l1 .mm-live-row, .mm-run .mm-l3 .mm-live-row { left:var(--frame); right:63vw; width:auto; }
@media (min-width:1800px) { .mm-run .mm-l1 .mm-live-row, .mm-run .mm-l3 .mm-live-row { right:1130px; } }
@media (max-width:1024px) { .mm-run .mm-l1 .mm-live-row, .mm-run .mm-l3 .mm-live-row { right:var(--frame); } }
/* r7i · tags：居中竖排 = chip 排 → 说话泡泡（浅紫实底 + 左下小尾巴，句首内联 tag，播放键在泡泡右侧）→ 整宽波形，同一张白卡 */
.o6 .dv-board .dv-plate.o9-tags.tg-bubblefig { display:flex; flex-direction:column; align-items:center; gap:22px; padding:28px 32px 24px; }
.o6 .dv-board .tg-bubblefig .dv-panel-list.tg-row { justify-content:center; padding:0; border:0; gap:8px; }
.tg-bubble { position:relative; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:20px; width:100%; max-width:920px; padding:22px 24px 22px 28px; border-radius:22px; background:var(--dv-lav2); }
.tg-bubble::after { content:""; position:absolute; left:40px; bottom:-14px; width:26px; height:26px; background:var(--dv-lav2); border-radius:0 0 6px 0; transform:rotate(45deg) skew(8deg,8deg); }
.nf .tg-bubblefig p.dv-line.tg-line { margin:0; color:var(--dv-ink); font-size:clamp(18px,1.6vw,24px); line-height:1.45; font-weight:600; letter-spacing:-.01em; }
.nf .tg-bubblefig p.dv-line.tg-line span { color:var(--dv-ink); font-size:inherit; }
.tg-bubblefig .dv-line-tag { font-size:clamp(14px,1.15vw,17px); line-height:1.35; padding:3px 9px; background:#fff; }
.tg-bubblefig .tg-play { width:52px; height:52px; background:var(--dv-pur); color:#fff; }
.tg-bubblefig .tg-wave { width:100%; margin-top:6px; }
.tg-bubblefig .tg-wave .dv-wave-lg { height:104px; }
@media (max-width:767px) {
  .o6 .dv-board .dv-plate.o9-tags.tg-bubblefig { padding:18px 14px 16px; gap:16px; }
  .tg-bubble { grid-template-columns:minmax(0,1fr); padding:16px 16px 14px 18px; gap:12px; }
  .tg-bubblefig .tg-play { width:44px; height:44px; justify-self:end; }
  .tg-bubblefig .tg-wave .dv-wave-lg { height:72px; }
}
/* r7j · ① 白卡后的毛玻璃块加回（r5o 的层级：标题裸放紫上 → .o9-tile 玻璃 + 波浪纹 → 白卡；外层 sheet 仍无）；② 幕布眉题随板上滑淡出（--b-wordOut），不再透进 meter；
   ③ voice 一行：两卡 ≤470 宽居中、间距 56；连接件 = 细线 + ↓ 不是播放键；④ 板内白卡上的小标签全部走站点字体（不再出现等宽体），字距保留。 */
.mm-stage[data-state="api"] .o1-d2 { opacity:calc(var(--b-wordIn) * (1 - var(--b-wordOut, 0))); }
.o9-tile { margin:0; }
.dv-pair-col > .o9-tile { margin-top:auto; }
.dv-pair2 { grid-template-columns:repeat(2, minmax(0, 470px)); justify-content:center; gap:56px; }
.o6 .dv-board .o9-tile .dv-plate.voice-proof.vp-flow { padding:22px 22px 20px; }
.vp-flow .vp-link { gap:12px; padding:2px 6px; }
.vp-flow .vp-chev { position:relative; flex:none; width:22px; height:22px; }
.vp-flow .vp-chev::before { content:""; position:absolute; left:50%; top:0; width:1px; height:12px; background:rgba(36,28,78,.35); translate:-50% 0; }
.vp-flow .vp-chev::after { content:""; position:absolute; left:50%; top:9px; width:8px; height:8px; border-right:1.5px solid rgba(36,28,78,.55); border-bottom:1.5px solid rgba(36,28,78,.55); transform:translateX(-50%) rotate(45deg); }
.vp-flow .vp-rel b { display:none; }
/* 站点字体统一：白卡上的 mono 标签 / 数字 / 图内文字 */
.o6 .dv-board .dv-plate .dv-mono, .o6 .dv-board .dv-plate .vp-num, .o6 .dv-board .dv-plate .vp-lab, .o6 .dv-board .dv-plate .vp-rel, .o6 .dv-board .dv-plate .dv-tag, .o6 .dv-board .dv-plate .dv-line-tag, .o6 .dv-board .dv-plate .dv-bar b, .o6 .dv-board .dv-plate .dv-chart-t, .o6 .dv-board .dv-plate .dv-ph { font-family:var(--dv-font); }
.o6 .dv-board .dv-plate .dk-lab, .o6 .dv-board .dv-plate .dk-name, .o6 .dv-board .dv-plate .dv-svg-lab, .o6 .dv-board .dv-plate .dv-svg-txt, .o6 .dv-board .dv-plate .dv-spec-axis, .o6 .dv-board .dv-plate .dv-spec-lab, .o6 .dv-board .dv-plate .dv-cut .dv-mono { font-family:var(--dv-font); }
.o6 .dv-board .dv-plate .dv-mono, .o6 .dv-board .dv-plate .vp-lab, .o6 .dv-board .dv-plate .vp-rel { font-weight:700; letter-spacing:.14em; }

/* 0906 r7k · Real-time response: no shared tinted slab. Each chart owns its glass. */
#snMeter .o9-meter {
  padding:0;
  border-radius:0;
  background:transparent;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
  overflow:visible;
}
#snMeter .o9-meter > .o8-tile-bg { display:none; }
#snMeter .dv-meter-cards { gap:24px; }
.o6 .dv-board #snMeter .dv-chart-card {
  background:rgba(255,255,255,.26);
  border:1px solid rgba(255,255,255,.32);
  border-radius:24px;
  box-shadow:0 18px 44px rgba(64,70,170,.09), inset 0 1px 0 rgba(255,255,255,.38);
  -webkit-backdrop-filter:blur(24px) saturate(1.08);
  backdrop-filter:blur(24px) saturate(1.08);
}
@media (max-width:767px) {
  #snMeter .dv-meter-cards { gap:16px; }
}

/* 0906 r7l · Voice pair spans the same full rail as meter; headings breathe in two lines. */
.o6 .dv-board .dv-in.dv-pair2 {
  grid-template-columns:repeat(2, minmax(0, 1fr));
  column-gap:24px;
}
.o6 .dv-board .dv-pair2 .dv-head h2.dv-h2 {
  width:100%;
  max-width:21ch;
  margin-inline:auto;
  text-wrap:balance;
}
@media (max-width:991px) {
  .o6 .dv-board .dv-in.dv-pair2 { grid-template-columns:minmax(0, 1fr); }
}

/* 0906 r7m · FOR CREATORS curtain headline: two lines on desktop. */
@media (min-width:992px) {
  .o1-d1 p { width:min(1180px,92vw); }
}

/* 0906 r7u · Creator 02 becomes a real character-game screen. */
.offer-visual-world { --vn-inset:var(--plate-pad); }
.mm-stage[data-state="s2"] .offer-visual-world { pointer-events:auto; }
.offer-visual-world .vn-hud,
.offer-visual-world .vn-dialogue,
.offer-visual-world .vn-stats,
.offer-visual-world .vn-choices { position:absolute; z-index:3; box-sizing:border-box; }
.offer-visual-world .vn-hud {
  top:calc(var(--vn-inset) + 5.8%); left:calc(var(--vn-inset) + 8%); right:calc(var(--vn-inset) + 8%);
  display:grid; gap:7px; padding:9px 11px; border-radius:12px;
  background:rgba(255,250,255,.88); border:1px solid rgba(104,88,177,.18);
  -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px);
  color:#342956; box-shadow:0 10px 26px rgba(53,40,105,.10);
}
.vn-goal { display:flex; align-items:center; gap:9px; font-size:10px; line-height:1.2; }
.vn-goal strong { font-weight:800; }
.vn-day { flex:none; padding:4px 6px; border-radius:6px; background:#7180ff; color:#fff; font-size:8px; font-weight:800; letter-spacing:.08em; }
.vn-energy { height:6px; overflow:hidden; border-radius:99px; background:rgba(113,128,255,.16); }
.vn-energy i { display:block; width:72%; height:100%; border-radius:inherit; background:linear-gradient(90deg,#ff9bc8,#8a91ff); transition:width .55s var(--ease); }
.offer-visual-world .vn-dialogue {
  left:calc(var(--vn-inset) + 8%); right:calc(var(--vn-inset) + 8%); bottom:calc(var(--vn-inset) + 20.5%);
  padding:10px 12px; border-radius:12px; background:rgba(255,250,255,.92); border:1px solid rgba(104,88,177,.18);
  -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px); box-shadow:0 10px 24px rgba(53,40,105,.12);
}
.offer-visual-world .vn-name { margin:0 0 4px; color:#7180ff; font:800 8px/1 var(--font); letter-spacing:.14em; }
.offer-visual-world .vn-line { min-height:2.5em; margin:0; color:#342956; font-size:10px; line-height:1.28; font-weight:700; }
.offer-visual-world .vn-stats {
  left:calc(var(--vn-inset) + 8%); right:calc(var(--vn-inset) + 8%); bottom:calc(var(--vn-inset) + 13.7%);
  display:grid; grid-template-columns:repeat(3,1fr); gap:5px;
}
.vn-stats span { padding:5px 3px; border-radius:8px; background:rgba(255,255,255,.88); border:1px solid rgba(113,128,255,.18); color:#5b507c; font-size:7px; font-weight:700; text-align:center; }
.vn-stats b { display:block; margin-bottom:1px; color:#7180ff; font-size:11px; }
.offer-visual-world .vn-choices {
  left:calc(var(--vn-inset) + 8%); right:calc(var(--vn-inset) + 8%); bottom:calc(var(--vn-inset) + 5.5%);
  display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin:0; opacity:1; translate:none; pointer-events:auto;
}
.offer-visual-world .vn-choices button {
  display:grid; place-items:center; gap:2px; min-width:0; min-height:38px; padding:5px 3px; border-radius:11px;
  border:1px solid rgba(113,128,255,.26); background:rgba(255,250,255,.94); color:#413568;
  font:800 8px/1 var(--font); text-align:center; cursor:pointer; box-shadow:0 6px 15px rgba(57,44,114,.09);
  transition:transform .22s var(--ease),background .22s ease,color .22s ease,border-color .22s ease;
}
.offer-visual-world .vn-choices button::after { display:none; }
.offer-visual-world .vn-choices button i { font-style:normal; color:#7180ff; font-size:13px; }
.offer-visual-world .vn-choices button:hover,
.offer-visual-world .vn-choices button:focus-visible { transform:translateY(-2px); background:#fff; border-color:#7180ff; outline:none; }
.offer-visual-world .vn-choices button.is-selected { color:#fff; background:#7180ff; border-color:#7180ff; transform:translateY(-2px); }
.offer-visual-world .vn-choices button.is-selected i { color:#fff; }
.vn-world-reacted > img { filter:saturate(1.04) brightness(1.02); }
@media (min-width:1025px) {
  .mm-run .offer-visual.offer-visual-world,
  .mm-run .offer-visual.offer-visual-world.is-left { left:21vw; }
}
.o6 .dv-board .dv-plate .vp-num { font-weight:800; letter-spacing:.04em; }
@media (max-width:991px) { .dv-pair2 { grid-template-columns:minmax(0,1fr); } }
/* r7j-b · 两栏卡顶对齐：栏 display:contents，head 进第 1 行、玻璃块进第 2 行（第 2 行拉伸 → 两块等高）；h2 30/36 */
.dv-pair2 { grid-template-rows:auto auto; align-items:stretch; }
.dv-pair-col { display:contents; }
.dv-pair-col > .dv-head { grid-row:1; align-self:end; }
.dv-pair-col > .o9-tile { grid-row:2; margin-top:0; }
#snVoice > .dv-head, #snVoice > .o9-tile { grid-column:1; }
#snXlang > .dv-head, #snXlang > .o9-tile { grid-column:2; }
.dv-pair-col .dv-h2 { font-size:30px; line-height:36px; }
.o6 .dv-board .dv-pair2 .o9-tile { display:flex; flex-direction:column; }
.o6 .dv-board .dv-pair2 .o9-tile > .dv-plate { flex:1; }
@media (max-width:991px) { .dv-pair2 { grid-template-rows:auto; } #snVoice > .dv-head, #snVoice > .o9-tile, #snXlang > .dv-head, #snXlang > .o9-tile { grid-column:1; grid-row:auto; } }
/* r7j-c · 两栏间距被 .dv-board .dv-in 的 gap 压掉 → 提特异性：列距 56、行距 32 */
.o6 .dv-board .dv-in.dv-pair2 { column-gap:56px; row-gap:32px; }
/* r7m · ① 全站只用站点字体：板内 --dv-mono 直接指向 --dv-font（所有 font:… var(--dv-mono) 的标签 / 数字 / tooltip / 图注一并换），舞台 --mono 同理；
   ② breath 图注句首大写；③ it's local 重画：线性图标走 currentColor、两段行程虚线 + 小圆点往返（3.6s）、OURS 框内自转（3.2s） */
.o6 .dv-board, .dv-board .dv-plate, .dk-tip { --dv-mono:var(--dv-font); }
.mm-run { --mono:var(--font); }
.dk-tip { font-family:var(--dv-font); font-weight:700; letter-spacing:.06em; }
.o6 .dv-board .dv-plate .dv-spec-lab { text-transform:none; letter-spacing:.02em; font-size:12px; font-weight:600; }
.o6 .dv-board .dv-plate .dv-cut .dv-mono { font-family:var(--dv-font); }
.o6 .dv-board .dv-breathfig .dv-proof-mark { width:max-content; padding:5px 9px; border:1px solid rgba(113,128,255,.28); border-radius:999px; color:var(--dv-pur); font:700 11px/1 var(--dv-font); letter-spacing:.12em; }
.o6 .dv-board .dv-breathfig .dv-proof-note { margin:0; max-width:92ch; color:var(--dv-ink6); font:500 13px/1.65 var(--dv-font); }
.o6 .dv-board .dv-breathfig .dv-proof-note strong { color:var(--dv-ink); font-weight:700; }
/* local */
.rt-diagram { display:block; width:100%; height:auto; color:var(--dv-ink6); }
.rt-icon { fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.rt-icon .rt-screen { stroke:none; fill:rgba(113,128,255,.10); }
.rt-icon .rt-led { fill:var(--dv-pur); stroke:none; }
.rt-icon .rt-lines { stroke:rgba(36,28,78,.28); }
.rt-icon.is-ours { color:var(--dv-pur); }
.rt-icon.is-ours .rt-screen { fill:rgba(113,128,255,.16); }
.rt-box { fill:rgba(113,128,255,.06); stroke:var(--dv-pur); stroke-width:1.5; }
.rt-path { fill:none; stroke:rgba(36,28,78,.28); stroke-width:1.5; stroke-dasharray:5 6; stroke-linecap:round; }
.rt-path.is-ours { stroke:var(--dv-pur40); }
.rt-arrow { fill:none; stroke:rgba(36,28,78,.4); stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.rt-dot { fill:var(--dv-ink6); }
.rt-dot.is-back { fill:rgba(36,28,78,.45); }
.rt-dot.is-ours { fill:var(--dv-pur); }
.rt-lab { fill:var(--dv-ink); font:700 11px var(--dv-font); letter-spacing:.12em; text-transform:uppercase; }
.rt-lab.is-dim { fill:var(--dv-ink45); font-weight:600; letter-spacing:.1em; }
.o9-room.is-ours .rt-lab:not(.is-dim) { fill:var(--dv-pur); }
.o6 .dv-board .dv-plate.dv-roomfig.o9-room { gap:18px; padding:28px 32px 26px; }
.o8-room-cap { font-size:15px; line-height:22px; color:var(--dv-ink6); }
.o9-room.is-ours .o8-room-cap { color:var(--dv-ink); }
@media (prefers-reduced-motion:reduce) { .rt-dot { display:none; } }

/* 0906 r7n · Creator 三屏排版统一：编号与标题同轴；标题升一级；02 图文整体右移；03 复用 01 的列。 */
@media (min-width:1025px) {
  .mm-run .mm-live-row,
  .mm-run .mm-l2 .mm-live-row {
    top:50%;
    transform:translateY(-50%);
    padding:0;
    gap:16px;
    justify-content:center;
    justify-items:start;
  }
  .mm-run .mm-catch {
    font-size:clamp(40px,3vw,48px);
    line-height:1.06;
    letter-spacing:-.032em;
  }
  .mm-run .mm-catch .l {
    min-height:0;
    padding:.04em 0 .09em;
  }
  .mm-run .mm-num {
    height:30px;
    padding:0 13px;
    margin:0;
    font-size:11px;
    align-self:start;
  }
  .mm-run .mm-l1 .mm-live-row,
  .mm-run .mm-l3 .mm-live-row {
    left:5vw;
    right:auto;
    width:34vw;
  }
  .mm-run .offer-visual.offer-visual-world,
  .mm-run .offer-visual.offer-visual-world.is-left {
    left:5.5vw;
    right:auto;
  }
  .mm-run .mm-l2 .mm-live-row {
    left:43vw;
    right:5vw;
    width:auto;
  }
  .mm-run .mm-l2 .mm-live-row .mm-catch {
    max-width:48vw;
  }
}

/* 0906 r7o · Developer 幕与 Creator 幕使用同一套 eyebrow + display title 层级。 */
.o1-d2 .o1-eyebrow,
.o1-d2 .o1-eyebrow.nf-subtitle {
  position:relative;
  z-index:4;
  padding:0;
  color:rgba(255,255,255,.8);
  font-size:16px;
  line-height:20px;
  font-weight:600;
  letter-spacing:-.54px;
  text-transform:uppercase;
  text-wrap:normal;
}
.o1-d2 p.o1-title {
  position:relative;
  z-index:4;
  display:block;
  width:min(940px,82vw);
  margin:0;
  overflow:visible;
  color:#fff;
  font-size:clamp(48px,4vw,78px);
  font-weight:800;
  line-height:.92;
  letter-spacing:-.065em;
  text-align:center;
  text-transform:none;
  white-space:normal;
  text-wrap:balance;
}
.o1-d2 p.o1-title span {
  display:inline;
  transform:translateY(calc((1 - var(--b-wordIn)) * 112%));
}
@media (max-width:767px) {
  .o1-d2 .o1-eyebrow,
  .o1-d2 .o1-eyebrow.nf-subtitle { font-size:14px; line-height:17.5px; }
  .o1-d2 p.o1-title { width:min(86vw,820px); font-size:clamp(44px,12vw,72px); line-height:.94; }
}

/* 0906 r7p · Creator 01：撤掉边缘角色选择器，图右移、文案左收。 */
.mm-run .mm-cast { display:none!important; }
@media (min-width:1025px) {
  .mm-run .offer-visual.offer-visual-live {
    left:auto;
    right:1.5vw;
  }
  .mm-run .mm-l1 .mm-live-row {
    left:3vw;
  }
}

/* 0906 r7q · Creator 02：清理角色画面后，手机放大并向画面中部推进。 */
@media (min-width:1025px) {
  .mm-run .offer-visual.offer-visual-world,
  .mm-run .offer-visual.offer-visual-world.is-left {
    left:11vw;
  }
  .mm-run .offer-visual.offer-visual-world > img {
    height:min(68vh,34vw);
  }
}

/* 0906 r7u-final · Keep the interactive phone close to the centre axis. */
@media (min-width:1025px) {
  .mm-run .offer-visual.offer-visual-world,
  .mm-run .offer-visual.offer-visual-world.is-left { left:21vw; }
}

/* 0906 rex r7v · Remove the full developer-board colour plate. It was
   covering the continuous page arcs at section boundaries. */
.nf.o6 > .nf-sheet.dv-board,
.nf > .nf-sheet.dv-board {
  background:transparent;
}

/* 0906 r7w · Meter hierarchy: transparent chapter → one tinted glass frame → two white cards. */
#snMeter .o9-meter {
  padding:32px;
  border-radius:24px;
  background:rgba(255,255,255,.22);
  -webkit-backdrop-filter:blur(24px) saturate(1.05);
  backdrop-filter:blur(24px) saturate(1.05);
  overflow:hidden;
}
#snMeter .o9-meter > .o8-tile-bg { display:block; }
.o6 .dv-board #snMeter .dv-chart-card {
  background:#fff;
  border:0;
  border-radius:20px;
  box-shadow:none;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}
@media (max-width:767px) {
  #snMeter .o9-meter { padding:16px; border-radius:20px; }
}

/* 0906 r7x · Creator 01 optical alignment. */
@media (min-width:1025px) {
  .mm-run .offer-visual.offer-visual-live { right:3.5vw; }
}

/* 0906 mira r7y · A clearer outside-vs-local systems drawing. */
#snLocal .rt-diagram { min-height:230px; }
#snLocal .rt-node > rect { fill:rgba(113,128,255,.035); stroke:rgba(36,28,78,.15); stroke-width:1.25; }
#snLocal .rt-node-server > rect { fill:rgba(113,128,255,.055); }
#snLocal .rt-packets g > rect { fill:rgba(113,128,255,.08); stroke:rgba(113,128,255,.26); stroke-width:1; }
#snLocal .rt-packets path { fill:none; stroke:var(--dv-pur); stroke-width:1.2; stroke-linecap:round; }
#snLocal .rt-mini { fill:var(--dv-ink6); font:700 9px var(--dv-font); letter-spacing:.06em; text-transform:uppercase; }
#snLocal .rt-route { fill:var(--dv-ink45); font:700 8px var(--dv-font); letter-spacing:.12em; }
#snLocal .rt-path { stroke-width:1.8; stroke-dasharray:6 7; }
#snLocal .rt-arrow { stroke-width:1.8; }
#snLocal .rt-box { fill:rgba(113,128,255,.055); stroke:rgba(113,128,255,.54); stroke-width:1.5; }
#snLocal .rt-local-head rect { fill:rgba(113,128,255,.10); }
#snLocal .rt-local-head circle { fill:var(--dv-pur); }
#snLocal .rt-chip rect,
#snLocal .rt-lock rect { fill:#fff; stroke:rgba(113,128,255,.42); stroke-width:1.4; }
#snLocal .rt-chip path,
#snLocal .rt-lock path { fill:none; stroke:var(--dv-pur); stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
#snLocal .rt-local .rt-path.is-ours { stroke:rgba(113,128,255,.55); stroke-width:1.8; }
#snLocal .o9-room-cap { min-height:44px; font-size:15px; line-height:22px; }

/* 0906 r7l-final · Voice pair follows the full-width meter rail. */
.o6 .dv-board .dv-in.dv-pair2 {
  grid-template-columns:repeat(2, minmax(0, 1fr));
  column-gap:24px;
}
.o6 .dv-board .dv-pair2 .dv-head h2.dv-h2 {
  width:100%;
  max-width:21ch;
  margin-inline:auto;
  text-wrap:balance;
}
@media (max-width:991px) {
  .o6 .dv-board .dv-in.dv-pair2 { grid-template-columns:minmax(0, 1fr); }
}

/* 0906 r8a · Creator 02: a larger, legible interactive phone. */
.mm-run .offer-visual.offer-visual-world,
.mm-run .offer-visual.offer-visual-world.is-left {
  --plate-pad:10px;
  box-sizing:border-box;
  padding:var(--plate-pad);
  overflow:hidden;
  border:2px solid rgba(255,255,255,.72);
  border-radius:42px;
  background:linear-gradient(145deg,rgba(255,255,255,.58),rgba(210,215,255,.42));
  box-shadow:0 24px 70px rgba(48,55,143,.20),inset 0 0 0 1px rgba(75,63,137,.18);
}
.mm-run .offer-visual.offer-visual-world::after {
  content:"";
  position:absolute;
  z-index:5;
  top:17px;
  left:50%;
  width:72px;
  height:7px;
  translate:-50% 0;
  border-radius:99px;
  background:rgba(53,41,86,.30);
  pointer-events:none;
}
.mm-run .offer-visual.offer-visual-world > img,
.mm-run .offer-visual.is-left.offer-visual-world > img {
  width:auto;
  height:min(78vh,40vw);
  max-height:none;
  border-radius:32px;
  clip-path:inset(0 round 32px);
  object-fit:cover;
}
@media (min-width:1025px) {
  .mm-run .offer-visual.offer-visual-world,
  .mm-run .offer-visual.offer-visual-world.is-left { left:7vw; right:auto; }
  .mm-run .mm-l2 .mm-live-row { left:48vw; }
}
@media (max-width:1024px) {
  .mm-run .offer-visual.offer-visual-world,
  .mm-run .offer-visual.offer-visual-world.is-left { width:auto; padding:8px; border-radius:34px; }
  .mm-run .offer-visual.offer-visual-world > img,
  .mm-run .offer-visual.is-left.offer-visual-world > img { height:min(58vh,72vw); border-radius:27px; clip-path:inset(0 round 27px); }
  .mm-run .offer-visual.offer-visual-world::after { top:14px; width:56px; height:6px; }
}

/* 0906 r8b · Creator 03 uses the supplied “anyone can build” system scene. */
.mm-run .offer-visual.offer-visual-system {
  padding:clamp(14px,1.5vw,24px);
  overflow:hidden;
  border-radius:34px;
}
.mm-run .offer-visual.offer-visual-system > img {
  display:block;
  width:100%;
  height:auto;
  max-width:100%;
  max-height:calc(100vh - 2 * var(--frame) - 12vh);
  margin:0;
  justify-self:center;
  object-fit:contain;
  object-position:center;
  border-radius:22px;
  animation:offer-scene-float 7.2s 1.2s ease-in-out infinite;
}

/* 0906 r8c · Developer chapters: one large, clean glass cover per section.
   The heading and proof now live inside the same cover; decorative wave lines
   and the redundant inner glass layer are removed. */
.o6 .dv-board .dv-sec.dv-z-field {
  box-sizing:border-box;
  padding:32px clamp(24px,4vw,60px);
}
.o6 .dv-board .dv-sec.dv-z-field > .dv-in {
  width:min(1320px,100%);
  max-width:1320px;
  margin-inline:auto;
  padding:clamp(52px,5vw,78px) clamp(34px,5vw,74px);
  gap:clamp(40px,4vw,60px);
  border:0;
  border-radius:32px;
  background:rgba(255,255,255,.18);
  -webkit-backdrop-filter:blur(26px) saturate(1.04);
  backdrop-filter:blur(26px) saturate(1.04);
  box-shadow:none;
  overflow:hidden;
}
.o6 .dv-board .dv-sec.dv-z-field .dv-head {
  margin:0;
}
.o6 .dv-board .dv-sec.dv-z-field .o9-tile,
.o6 .dv-board #snMeter .o9-meter {
  width:100%;
  margin:0;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
  box-shadow:none;
  overflow:visible;
}
.o6 .dv-board .dv-sec.dv-z-field .o9-tile > .o8-tile-bg,
.o6 .dv-board #snMeter .o9-meter > .o8-tile-bg {
  display:none;
}
.o6 .dv-board #snMeter .dv-meter-cards { gap:24px; }
.o6 .dv-board #snMeter .dv-chart-card,
.o6 .dv-board #snDeck .o9-deckcard {
  width:100%;
}
@media (max-width:767px) {
  .o6 .dv-board .dv-sec.dv-z-field { padding:18px 14px; }
  .o6 .dv-board .dv-sec.dv-z-field > .dv-in {
    padding:34px 18px;
    gap:30px;
    border-radius:24px;
  }
}

/* ===== reframe 0906 ===== */
/* 首页 API 段 reframe（brief：refs/HOMEPAGE-API-REFRAME-0906.md），r2 = quill v3 文案 + iris 动效件接入。
   Block 1 Voice = brandze Key Features（骨架在 css/js aw-keyfeat-0906；tabs 交互改走 iris 的 bmTabs，aw-keyfeat 的 [data-kf-tabs] 不再挂这块）。
   Block 2 Avatar = brandze How it works 真码 port：
     .home-prosses-item-top-box    → .rf-bento-top     grid 1fr 1fr，gap 24
     .home-prosses-item-bottom-box → .rf-bento-bottom  grid 1fr 1fr 1fr，margin-top 24
     .home-prosess-item-box        → .rf-card          padding 40 / radius 24 / min-height 350 / overflow hidden
     .home-prosess-item-left-content → .rf-lead        icon + 标题横排（≤991 竖排）
     .home-prosess-item-title-two  → .rf-card-center   居中标题 + 两行 + 面板
     lottie 面板                   → .bm-body[data-bm]  iris bmMount 注入 .bm-stage（xMidYMid meet，随面板伸缩）
   去掉的：卡底渐变 → 纯白；5px 白外框、阴影、点阵纹、云图全无；唯一虚线 = file 卡里 iris 画的落区。
   iris 的 CSS 原样接在本块末尾（bm- 前缀，含 .bm-stage > svg 子选择器，别改成后代选择器，stop 卡会坏）。 */
.rf { position:relative; }
.rf > .bm-bg { position:absolute; inset:0; z-index:0; pointer-events:none; overflow:hidden; }
.o6 .dv-board .dv-sec.dv-z-field.rf > .dv-in { position:relative; z-index:1; }

/* --- Block 1 补丁 --- */
.rf .kf-chip.is-on { background:var(--dv-lav,#e3e0ff); color:var(--dv-ink,#241c4e); }
.rf .kf-chip.is-on:hover { background:#d8d4ff; color:var(--dv-ink,#241c4e); }
.rf .kf-btnbox { margin-top:clamp(22px,2.6vw,36px); }
.rf .kf-link { display:inline-flex; align-items:center; gap:8px; margin:0; padding:0; border:0; background:none; color:#fff; font-family:inherit; font-size:16px; line-height:24px; font-weight:600; letter-spacing:-.005em; text-decoration:none; cursor:pointer; transition:color .18s ease; }
.rf .kf-link:hover { color:var(--dv-lav,#e3e0ff); }
.rf .kf-link:focus-visible { outline:2px solid #fff; outline-offset:4px; border-radius:4px; }
.rf .kf-link svg { width:18px; height:18px; flex:none; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; transition:transform .18s cubic-bezier(.22,1,.36,1); }
.rf .kf-link:hover svg { transform:translateX(3px); }
/* pane 的显隐交给 iris 的 .bm-pane 状态（is-live / is-fade / is-enter / is-enter-run），aw-keyfeat 的 opacity 0 底子在这块关掉；
   tab 壳的入场走 iris 的 [data-bm-enter]，aw-keyfeat 那条 data-kf-in 不再用 */
.rf .kf-pane { opacity:1; transition:none; }
.rf .kf-panes { position:relative; }

/* --- 收尾行（两块共用，v3）：FIXED 收尾句 → 主 CTA + 两条次级文字链一行，整体居中 --- */
.rf-closer { display:flex; flex-direction:column; align-items:center; gap:28px; }
.rf-closer-row { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:16px 32px; }
.o6 .dv-board .rf-closer .rf-closer-h { margin:0; max-width:18ch; text-align:center; }
.o6 .dv-board .rf-closer .rf-primary { margin:0; min-height:48px; padding:0 26px; font-size:15px; font-weight:600; }
.rf-links { display:flex; flex-wrap:wrap; align-items:center; gap:8px 24px; }
.rf-link { display:inline-flex; align-items:center; gap:6px; color:rgba(255,255,255,.86); font-size:15px; line-height:22px; font-weight:600; text-decoration:none; transition:color .18s ease; }
.rf-link:hover { color:#fff; }
.rf-link:focus-visible { outline:2px solid #fff; outline-offset:4px; border-radius:4px; }
.rf-link svg { width:16px; height:16px; flex:none; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; transition:transform .18s cubic-bezier(.22,1,.36,1); }
.rf-link:hover svg { transform:translateX(3px); }

/* --- Block 2 · bento --- */
.rf-bento { display:grid; gap:24px; }
.rf-bento-top { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.rf-bento-bottom { display:grid; grid-template-columns:1fr 1fr 1fr; gap:24px; }
.o6 .dv-board .rf-card { position:relative; z-index:1; display:flex; flex-direction:column; gap:28px; min-height:350px; margin:0; padding:40px; border:0; border-radius:24px; background:#fff; color:var(--dv-ink); box-shadow:none; overflow:hidden; }
.rf-lead { display:flex; align-items:center; gap:24px; }
.rf-icon { flex:none; display:block; width:56px; height:56px; color:var(--dv-pur,#7180ff); }
.rf-icon svg { display:block; width:100%; height:100%; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.rf-title { display:flex; flex-direction:column; gap:8px; min-width:0; }
.rf-no { display:block; color:var(--dv-pur,#7180ff); font-size:13px; line-height:16px; font-weight:700; letter-spacing:.04em; }
.rf-h3 { margin:0; color:var(--dv-ink); font-size:28px; line-height:34px; font-weight:700; letter-spacing:-.02em; text-wrap:balance; }
.rf-h4 { margin:0; color:var(--dv-ink); font-size:22px; line-height:28px; font-weight:700; letter-spacing:-.015em; text-wrap:balance; }
.rf-b { margin:0; color:var(--dv-ink6); font-size:16px; line-height:24px; font-weight:500; }
.rf-b + .rf-b { margin-top:-2px; }
.rf-card-center .rf-title, .rf-card-sm .rf-title { align-items:center; align-self:center; max-width:36ch; text-align:center; }
/* iris 面板：.bm-body 是透明容器，.bm-stage 自带淡紫底 + radius 16；在卡里占满余下高度 */
.rf .bm-body { flex:1 1 auto; margin-top:0; min-height:200px; }
.rf-card-sm .bm-body { min-height:176px; }

@media (max-width:991px) {
  .rf-bento-top, .rf-bento-bottom { grid-template-columns:1fr; }
  .o6 .dv-board .rf-card { min-height:0; padding:32px; gap:24px; }
  .rf-lead { flex-direction:column; align-items:flex-start; gap:16px; }
  .rf .bm-body, .rf-card-sm .bm-body { min-height:200px; }
}
@media (max-width:767px) {
  .o6 .dv-board .rf-card { padding:24px 20px; gap:20px; border-radius:20px; }
  .rf-h3 { font-size:24px; line-height:30px; }
  .rf-h4 { font-size:20px; line-height:26px; }
  .rf-b { font-size:15px; line-height:22px; }
  .rf-card-center .rf-title, .rf-card-sm .rf-title { align-items:flex-start; align-self:auto; max-width:none; text-align:left; }
  .rf .bm-body, .rf-card-sm .bm-body { min-height:184px; }
  .rf-closer { align-items:flex-start; gap:20px; }
  .o6 .dv-board .rf-closer .rf-closer-h { text-align:left; }
  .rf-closer-row { justify-content:flex-start; gap:14px 24px; }
  .rf-links { gap:8px 18px; }
  .rf .kf-link { font-size:15px; }
}
@media (prefers-reduced-motion:reduce) {
  .rf .kf-link svg, .rf-link svg { transition:none; }
}

/* Block 1 pane 3 · 往返图在首页的样式作用域：mira r7y 那套写在 #snLocal（voice-api.html 的段 id）下，首页容器是 .kf-rooms，
   同一套规则按容器再挂一次（节点方框原来在首页落成黑色实底，就是缺这段）。 */
.kf-rooms .rt-diagram { min-height:230px; }
.kf-rooms .rt-node > rect { fill:rgba(113,128,255,.035); stroke:rgba(36,28,78,.15); stroke-width:1.25; }
.kf-rooms .rt-node-server > rect { fill:rgba(113,128,255,.055); }
.kf-rooms .rt-packets g > rect { fill:rgba(113,128,255,.08); stroke:rgba(113,128,255,.26); stroke-width:1; }
.kf-rooms .rt-packets path { fill:none; stroke:var(--dv-pur); stroke-width:1.2; stroke-linecap:round; }
.kf-rooms .rt-mini { fill:var(--dv-ink6); font:700 9px var(--dv-font); letter-spacing:.06em; text-transform:uppercase; }
.kf-rooms .rt-route { fill:var(--dv-ink45); font:700 8px var(--dv-font); letter-spacing:.12em; }
.kf-rooms .rt-path { stroke-width:1.8; stroke-dasharray:6 7; }
.kf-rooms .rt-arrow { stroke-width:1.8; }
.kf-rooms .rt-box { fill:rgba(113,128,255,.055); stroke:rgba(113,128,255,.54); stroke-width:1.5; }
.kf-rooms .rt-local-head rect { fill:rgba(113,128,255,.10); }
.kf-rooms .rt-local-head circle { fill:var(--dv-pur); }
.kf-rooms .rt-chip rect,
.kf-rooms .rt-lock rect { fill:#fff; stroke:rgba(113,128,255,.42); stroke-width:1.4; }
.kf-rooms .rt-chip path,
.kf-rooms .rt-lock path { fill:none; stroke:var(--dv-pur); stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.kf-rooms .rt-local .rt-path.is-ours { stroke:rgba(113,128,255,.55); stroke-width:1.8; }
.kf-rooms .o9-room-cap { min-height:44px; font-size:15px; line-height:22px; }

/* ---------- iris · _iris/bento-motion-0906.html #bm-css，原样搬入（kit 页面 chrome 未搬）。 ---------- */

/* ================= tokens (lifted from option-c2-palmer-option6.css) ===== */
.bm-scope{
  --bm-pur:#7180ff;
  --bm-pur-deep:#5361e6;
  --bm-ink:#241c4e;
  --bm-ink2:rgba(36,28,78,.72);
  --bm-ink3:rgba(36,28,78,.48);
  --bm-ink4:rgba(36,28,78,.30);
  --bm-lav:#e3e0ff;
  --bm-lav2:#f1efff;
  --bm-line:#c9c2ff;
  --bm-white:#fff;
  --bm-font:"Proxima Nova","proxima-nova","Inter",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;
  --bm-ease:cubic-bezier(.22,1,.36,1);
  --bm-quart:cubic-bezier(.165,.84,.44,1);
  font-family:var(--bm-font);
}

/* ================= background layer ==================================== */
.bm-bg{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;border-radius:inherit;}
.bm-bgo{position:absolute;transform:translate3d(0,var(--py,0px),0);will-change:transform;}
.bm-bgd{display:block;width:100%;height:100%;animation:var(--drift) var(--dur,78s) linear infinite;will-change:transform;}
.bm-bgs{display:block;width:100%;height:100%;border-radius:50%;animation:var(--spin) var(--sdur,240s) linear infinite;will-change:transform;}
.bm-bgs.is-ring{border:clamp(8px,1.05vw,15px) solid rgba(255,255,255,.13);}
.bm-bgs.is-disc{background:rgba(255,255,255,.085);}
@keyframes bm-drift-a{0%{transform:translate3d(0,0,0)}25%{transform:translate3d(2.2%,-1.5%,0)}50%{transform:translate3d(-1.3%,-2.8%,0)}75%{transform:translate3d(-2.4%,1.1%,0)}100%{transform:translate3d(0,0,0)}}
@keyframes bm-drift-b{0%{transform:translate3d(0,0,0)}20%{transform:translate3d(-2.6%,1.8%,0)}55%{transform:translate3d(1.7%,3%,0)}80%{transform:translate3d(2.5%,-1.2%,0)}100%{transform:translate3d(0,0,0)}}
@keyframes bm-drift-c{0%{transform:translate3d(0,0,0)}30%{transform:translate3d(1.4%,2.4%,0)}60%{transform:translate3d(-2.8%,.6%,0)}85%{transform:translate3d(-.9%,-2.2%,0)}100%{transform:translate3d(0,0,0)}}
/* the scaleY keeps the rotation just barely readable on a circle */
@keyframes bm-spin{from{transform:rotate(0deg) scaleY(.945)}to{transform:rotate(360deg) scaleY(.945)}}
@keyframes bm-spin-r{from{transform:rotate(360deg) scaleY(.955)}to{transform:rotate(0deg) scaleY(.955)}}

/* ================= entrance ============================================ */
[data-bm-enter]{
  opacity:0;transform:translateY(40px);filter:blur(8px);
  transition:opacity .7s var(--bm-quart),transform .7s var(--bm-quart),filter .7s var(--bm-quart);
  will-change:opacity,transform,filter;
}
[data-bm-enter].bm-in{opacity:1;transform:none;filter:blur(0px);}

.bm-ln{display:block;overflow:hidden;padding-bottom:.1em;margin-bottom:-.1em;}
.bm-ln > .bm-ln-i{display:block;transform:translateY(100%);transition:transform .8s var(--bm-quart);will-change:transform;}
[data-bm-lines].bm-in .bm-ln > .bm-ln-i{transform:translateY(0);}
.bm-w{display:inline;}

/* ================= tabs ================================================ */
.bm-pane{display:none;}
.bm-pane.is-live{display:block;}
.bm-pane.is-fade{opacity:0;transition:opacity .1s linear;}
.bm-pane.is-enter{opacity:0;transform:translateY(8px);}
.bm-pane.is-enter-run{opacity:1;transform:translateY(0);transition:opacity .3s var(--bm-ease),transform .3s var(--bm-ease);}

/* ================= card shell ========================================== */
.bm-card{
  box-sizing:border-box;background:var(--bm-white);border:0;border-radius:24px;
  padding:28px;display:flex;flex-direction:column;color:var(--bm-ink);
}
.bm-card-sm{padding:24px;border-radius:20px;}
.bm-card-h{display:flex;gap:14px;align-items:flex-start;}
.bm-card-h .bm-ico{flex:none;width:22px;height:22px;color:var(--bm-pur);margin-top:2px;}
.bm-card-h h3{margin:0;font-size:21px;line-height:1.18;font-weight:700;letter-spacing:-.02em;}
.bm-card-h p{margin:5px 0 0;font-size:14px;line-height:1.5;color:var(--bm-ink2);max-width:44ch;}
.bm-card-sm .bm-card-h{display:block;}
.bm-card-sm .bm-card-h h3{font-size:17px;letter-spacing:-.015em;}
.bm-card-sm .bm-card-h p{font-size:13.5px;line-height:1.5;}
.bm-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:12px;margin-top:12px;}

/* ================= stage =============================================== */
.bm-stage{position:relative;flex:1 1 auto;min-height:0;background:var(--bm-lav2);border-radius:16px;overflow:hidden;}
.bm-stage > svg{display:block;width:100%;height:100%;}
.bm-tag{
  position:absolute;left:14px;top:12px;z-index:2;
  display:inline-flex;align-items:center;height:24px;padding:0 11px;border-radius:100px;
  background:var(--bm-lav);color:var(--bm-pur-deep);
  font-size:10.5px;font-weight:700;letter-spacing:.1em;
}

/* ---- file ---- */
.bm-zone-fill{fill:var(--bm-lav);}
.bm-zone{fill:none;stroke:var(--bm-line);stroke-width:1.6;stroke-dasharray:8 8;}
.bm-zone-hot{fill:none;stroke:var(--bm-pur);stroke-width:1.8;stroke-dasharray:8 8;}
.bm-file-body{fill:#fff;}
.bm-file-fold{fill:var(--bm-lav);}
.bm-file-line{fill:var(--bm-lav);}
.bm-file-name{fill:var(--bm-ink3);font-family:var(--bm-font);font-size:12px;font-weight:700;letter-spacing:.1em;text-anchor:middle;}
.bm-chips{list-style:none;margin:0;padding:0;display:flex;gap:8px;flex:none;}
.bm-chip{
  display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 14px;border-radius:100px;
  background:var(--bm-lav2);
  color:rgba(36,28,78,calc(.40 + var(--on,0) * .60));
  font-size:12.5px;font-weight:700;letter-spacing:.01em;
}
.bm-chip svg{width:12px;height:12px;flex:none;color:var(--bm-pur);opacity:var(--on,0);transform:scale(calc(.5 + var(--on,0)*.5));}

/* ---- figure (shared drawing language with _iris/char-howitworks.html) ---- */
.bm-bone{fill:none;stroke:var(--bm-pur);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;}
.bm-joint{fill:var(--bm-pur);}
.bm-lm{fill:var(--bm-line);}
.bm-face{fill:#fff;}
.bm-blush{fill:#d6d1ff;}
.bm-eye{fill:var(--bm-ink);}
.bm-mouth{fill:var(--bm-ink);}
.bm-dot{fill:var(--bm-line);}
.bm-dot.is-lit{fill:var(--bm-pur);}
.bm-spark{fill:var(--bm-pur);}

/* ---- rails ---- */
.bm-rails{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:14px;flex:none;}
.bm-rail{display:block;}
.bm-rail-top{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.bm-rail b{font-size:12px;font-weight:700;letter-spacing:.02em;color:rgba(36,28,78,calc(.42 + var(--fill,0)*.42));}
.bm-rail svg{width:12px;height:12px;color:var(--bm-pur);opacity:var(--tick,0);transform:scale(calc(.5 + var(--tick,0)*.5));}
.bm-rail-t{display:block;margin-top:8px;height:2px;border-radius:2px;background:var(--bm-lav);overflow:hidden;}
.bm-rail-t i{display:block;height:100%;width:calc(var(--fill,0) * 100%);background:var(--bm-pur);border-radius:2px;}

/* ---- typed line ---- */
.bm-type{
  position:absolute;left:16px;right:16px;top:13px;margin:0;z-index:2;
  font-size:13.5px;line-height:1.55;font-weight:600;letter-spacing:-.005em;color:var(--bm-ink);
  min-height:2.9em;
}
.bm-type b{font-weight:600;}
.bm-caret{display:inline-block;width:2px;height:1em;margin-left:2px;vertical-align:-.14em;border-radius:1px;background:var(--bm-pur);opacity:var(--caret,0);}
.bm-ring-c{fill:none;stroke:var(--bm-pur);stroke-width:1.3;}

/* ---- listen row ---- */
.bm-listen{position:absolute;left:16px;right:16px;bottom:20px;z-index:2;display:flex;align-items:center;gap:12px;}
.bm-eyeg{flex:none;width:58px;height:38px;color:var(--bm-pur);}
.bm-eye-o{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;}
.bm-eye-p{fill:currentColor;}
.bm-wave{flex:1 1 auto;display:flex;align-items:center;justify-content:space-between;height:30px;}
.bm-wave span{flex:none;width:3px;border-radius:3px;background:var(--bm-pur);height:max(3px,calc(var(--h,.06) * 30px));}
.bm-wave.is-listening span{background:var(--bm-line);}
.bm-listen-l{
  position:absolute;right:0;top:-16px;
  font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--bm-pur);
  opacity:var(--wait,0);
}

@media (prefers-reduced-motion:reduce){
  .bm-scope *{animation:none !important;transition:none !important;}
  [data-bm-enter]{opacity:1;transform:none;filter:none;}
  .bm-ln > .bm-ln-i{transform:none;}
}

/* ===== reframe 0906 r3 (lill) ===== */
/* 她看 r2：章节分不清、tab 屏 confused、段头太低、背景大圈压透白板边、幕布缺 CTA 和滚动提示。
   r3：三章各一块透白 sheet（材质就是 .dv-z-field > .dv-in 那层，顶内距压下来让段头贴板顶），章间 .rf-gap 纯紫地 ≥120，
   背景圈 / 圆盘只在 .rf-gap 里（bmBackground items + overflow hidden，永不压板边）；#developers 的 a1 / a2 弧在 .o6 下撤。
   章 1 = elevenlabs 段头两栏 + 2 大卡 + 3 小卡（fish 功能卡）；章 2 = elevenlabs API 行；章 3 = r2 bento；收尾板三章共用。 */

/* --- 幕布：两个按钮 + 小鼠标滚动提示（都在 .o1-d2 的 sticky 框里，不推版） --- */
.o1-d2 .o1-cta { position:relative; z-index:4; display:flex; flex-wrap:wrap; justify-content:center; gap:12px; margin-top:8px; pointer-events:auto; opacity:var(--b-wordIn,0); transform:translateY(calc((1 - var(--b-wordIn,0)) * 24px)); }
.o1-btn { display:inline-flex; align-items:center; justify-content:center; min-height:46px; padding:0 22px; border-radius:999px; font-family:var(--font,"Proxima Nova","proxima-nova","Inter",-apple-system,sans-serif); font-size:15px; line-height:1; font-weight:600; letter-spacing:-.005em; text-decoration:none; transition:background .18s ease,color .18s ease,transform .25s cubic-bezier(.22,1,.36,1); }
.o1-btn:hover { transform:translateY(-2px); }
.o1-btn:focus-visible { outline:2px solid #fff; outline-offset:3px; }
.o1-btn-white { background:#fff; color:#7180ff; }
.o1-btn-white:hover { background:#e3e0ff; color:#7180ff; }
.o1-btn-glass { background:rgba(255,255,255,.16); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); color:#fff; }
.o1-btn-glass:hover { background:#fff; color:#7180ff; }
.o1-cue { position:absolute; left:50%; bottom:clamp(20px,4vh,40px); z-index:4; display:flex; flex-direction:column; align-items:center; gap:10px; color:rgba(255,255,255,.7); transform:translateX(-50%); opacity:var(--b-wordIn,0); pointer-events:none; }
.o1-mouse { position:relative; display:block; width:22px; height:34px; box-sizing:border-box; border:1.5px solid currentColor; border-radius:11px; background:none; }
.o1-mouse i { position:absolute; left:50%; top:6px; width:4px; height:4px; margin-left:-2px; border-radius:50%; background:currentColor; animation:o1-wheel 2s cubic-bezier(.22,1,.36,1) infinite; }
@keyframes o1-wheel { 0% { transform:translateY(0); opacity:0; } 18% { opacity:1; } 72% { transform:translateY(13px); opacity:1; } 100% { transform:translateY(15px); opacity:0; } }
.o1-cue-t { font-family:var(--font,"Proxima Nova","proxima-nova","Inter",-apple-system,sans-serif); font-size:12px; line-height:16px; font-weight:600; letter-spacing:.02em; }
@media (prefers-reduced-motion:reduce) { .o1-mouse i { animation:none; top:12px; opacity:1; } }

/* --- 板：章 = 段，材质 = .dv-in；段自身不再带上下内距，章间由 .rf-gap 撑开 --- */
.o6#developers > .aw-arc.a1, .o6#developers > .aw-arc.a2 { display:none; }
.o6 .dv-board .dv-sec.dv-z-field.rf-ch { padding-top:0; padding-bottom:0; }
.o6 .dv-board .dv-sec.dv-z-field.rf-ch.dv-sec-first { padding-top:32px; }
.o6 .dv-board .dv-sec.dv-z-field.rf-ch > .dv-in { display:flex; flex-direction:column; align-items:stretch; gap:clamp(28px,3vw,40px); padding:clamp(28px,2.6vw,36px) clamp(34px,5vw,74px) clamp(44px,4.2vw,60px); }
.rf-gap { position:relative; height:clamp(120px,12.5vw,180px); overflow:hidden; pointer-events:none; }
.rf-gap > .bm-bg { border-radius:0; }
.rf-eyebrow { display:inline-flex; align-items:center; align-self:flex-start; height:28px; padding:0 12px; border-radius:999px; background:#fff; color:#7180ff; font-size:12px; line-height:16px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; white-space:nowrap; }
.rf-local .rf-eyebrow { background:#e3e0ff; color:#241c4e; }
.rf-avatar .rf-eyebrow { background:#4653c6; color:#fff; }
.rf-close .rf-eyebrow { background:rgba(255,255,255,.16); color:#fff; }
html[data-lang="ja"] .rf-eyebrow { letter-spacing:.04em; }

/* --- 段头两栏（elevenlabs：左 H2 + 圆角主按钮 / 右一段说明） --- */
.rf-head { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:24px clamp(32px,4vw,64px); align-items:start; }
.rf-head-l { display:flex; flex-direction:column; align-items:flex-start; gap:clamp(20px,2.2vw,28px); }
.o6 .dv-board .rf-head .dv-h2 { margin:0; max-width:15em; font-size:clamp(32px,3.1vw,44px); line-height:1.08; font-weight:700; letter-spacing:-.03em; text-align:left; text-wrap:balance; }
.o6 .dv-board .rf-head .dv-sub { margin:0; max-width:34em; padding-top:.3em; font-size:18px; line-height:28px; color:rgba(255,255,255,.85); text-align:left; }
.o6 .dv-board .rf-head .rf-primary { margin:0; min-height:46px; padding:0 22px; font-size:15px; font-weight:600; }
html[data-lang="ja"] .o6 .dv-board .rf-head .dv-h2 { font-size:clamp(26px,2.4vw,36px); line-height:1.3; letter-spacing:0; }

/* --- 章 1 · 2 大白卡（elevenlabs：卡内一块淡紫 stage 放演示件，底部小灰标题 + 一句） --- */
.rf-big { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.o6 .dv-board .dv-plate.rf-bigcard { display:flex; flex-direction:column; gap:22px; margin:0; padding:20px 20px 28px; border:0; border-radius:24px; background:#fff; color:var(--dv-ink); box-shadow:none; overflow:hidden; }
.rf-stage { flex:1 1 auto; display:flex; flex-direction:column; justify-content:center; min-height:320px; padding:24px 22px; border-radius:16px; background:var(--dv-lav2,#f1efff); }
.o6 .dv-board .rf-stage .dv-plate { margin:0; padding:0; border:0; border-radius:0; background:none; box-shadow:none; }
.rf-cap { display:flex; flex-direction:column; gap:6px; padding:0 6px; }
.rf-cap-t { margin:0; color:var(--dv-ink6); font-size:15px; line-height:22px; font-weight:600; }
.rf-cap-b { margin:0; color:var(--dv-ink); font-size:18px; line-height:26px; font-weight:600; letter-spacing:-.01em; }
/* --- 章 1 · 3 小白卡（fish：淡紫 icon 方 40 / 圆角 10，无描边；标题 18 / 26；一句 16 / 24） --- */
.rf-small { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.o6 .dv-board .dv-plate.rf-smcard { display:flex; flex-direction:column; align-items:flex-start; gap:0; margin:0; padding:28px; border:0; border-radius:24px; background:#fff; color:var(--dv-ink); box-shadow:none; }
.rf-ibox { display:grid; place-items:center; width:40px; height:40px; border-radius:10px; background:#e3e0ff; color:#7180ff; }
.rf-ibox svg { display:block; width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; overflow:visible; }
.rf-sm-t { margin:22px 0 0; color:var(--dv-ink); font-size:18px; line-height:26px; font-weight:700; letter-spacing:-.01em; }
.rf-sm-b { margin:6px 0 0; color:var(--dv-ink6); font-size:16px; line-height:24px; font-weight:500; }
.rf-more { display:flex; justify-content:flex-end; }

/* --- 章 2 · elevenlabs API 行：左 = 往返图两张一块白 plate，右 = 三行 fact（发丝线分隔，无外框） --- */
.rf-split { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); gap:16px clamp(24px,3.4vw,48px); align-items:stretch; }
.o6 .dv-board .dv-plate.rf-roomplate { display:flex; flex-direction:column; gap:0; margin:0; padding:20px 24px; border:0; border-radius:24px; background:#fff; color:var(--dv-ink); box-shadow:none; }
.rf-roomplate .kf-rooms { display:grid; gap:0; }
.o6 .dv-board .rf-roomplate .kf-rooms .dv-plate { margin:0; padding:14px 0; border:0; border-radius:0; background:none; box-shadow:none; }
.o6 .dv-board .rf-roomplate .kf-rooms .dv-plate + .dv-plate { border-top:1px solid var(--o6-ink-line,rgba(36,28,78,.14)); }
.rf-facts { display:flex; flex-direction:column; justify-content:center; }
.rf-fact { display:grid; grid-template-columns:minmax(6.5em,8.5em) minmax(0,1fr); gap:6px 24px; padding:22px 0; }
.rf-fact + .rf-fact { border-top:1px solid rgba(255,255,255,.28); }
.rf-fact-l { margin:0; color:#fff; font-size:16px; line-height:24px; font-weight:700; }
.rf-fact-b { margin:0; color:rgba(255,255,255,.85); font-size:16px; line-height:24px; font-weight:500; }
.rf-fact-note { margin:14px 0 0; color:rgba(255,255,255,.7); font-size:13px; line-height:18px; font-weight:500; }

/* --- 收尾板：一句 + 主按钮 + 次按钮 + docs 文字链，居中 --- */
.o6 .dv-board .dv-sec.dv-z-field.rf-close > .dv-in { align-items:center; text-align:center; gap:24px; padding-top:clamp(36px,3.6vw,48px); padding-bottom:clamp(40px,4vw,56px); }
.rf-close .rf-eyebrow { align-self:center; }
.o6 .dv-board .rf-close .dv-h2 { margin:0; max-width:20ch; font-size:clamp(30px,3.4vw,48px); line-height:1.06; font-weight:700; letter-spacing:-.03em; text-align:center; text-wrap:balance; }
html[data-lang="ja"] .o6 .dv-board .rf-close .dv-h2 { font-size:clamp(24px,2.6vw,36px); line-height:1.3; letter-spacing:0; }
.rf-close-row { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:12px 16px; }
.o6 .dv-board .rf-close-row .dv-cta { margin:0; min-height:46px; padding:0 22px; font-size:15px; font-weight:600; }
.rf-close-row .rf-link { margin-left:8px; }

/* --- 断点 --- */
@media (max-width:991px) {
  .rf-head { grid-template-columns:1fr; gap:20px; }
  .o6 .dv-board .rf-head .dv-sub { padding-top:0; }
  .rf-big, .rf-small, .rf-split { grid-template-columns:1fr; }
  .rf-fact { grid-template-columns:1fr; gap:4px; padding:18px 0; }
}
@media (max-width:767px) {
  .o1-btn { min-height:42px; padding:0 18px; font-size:14px; }
  .o6 .dv-board .dv-sec.dv-z-field.rf-ch > .dv-in { gap:24px; padding:24px 18px 34px; }
  .o6 .dv-board .dv-sec.dv-z-field.rf-ch.dv-sec-first { padding-top:18px; }
  .rf-gap { height:120px; }
  .o6 .dv-board .rf-head .dv-h2 { font-size:30px; }
  .o6 .dv-board .rf-head .dv-sub { font-size:16px; line-height:24px; }
  .o6 .dv-board .dv-plate.rf-bigcard { gap:18px; padding:14px 14px 22px; border-radius:20px; }
  .rf-stage { min-height:0; padding:16px 12px; }
  .rf-cap-b { font-size:17px; line-height:24px; }
  .o6 .dv-board .dv-plate.rf-smcard { padding:22px 20px; border-radius:20px; }
  .rf-sm-t { margin-top:18px; }
  .o6 .dv-board .dv-plate.rf-roomplate { padding:12px 16px; border-radius:20px; }
  .o6 .dv-board .rf-close-row .dv-cta { min-height:42px; padding:0 18px; font-size:14px; }
  .rf-close-row .rf-link { margin-left:0; flex-basis:100%; justify-content:center; }
}
/* r3 校准：标签条进白卡 stage 后 5 个 chip 折成 2+2+1 太碎 → chip 收窄成 3+2 */
.o6 .dv-board .rf-stage .tg-bubblefig .dv-panel-list.tg-row { gap:6px 8px; }
.o6 .dv-board .rf-stage .o9-tags .dv-panel .dv-tag { min-height:36px; padding:0 12px 0 10px; font-size:12.5px; }
.o6 .dv-board .rf-stage .dv-panel .dv-tag .dv-wave-mini { width:44px; }
@media (max-width:767px) { .o6 .dv-board .rf-stage .o9-tags .dv-panel .dv-tag { padding:0 10px 0 8px; font-size:12px; } .o6 .dv-board .rf-stage .dv-panel .dv-tag .dv-wave-mini { width:36px; } }
/* r3 校准 2：stage 里 panel 只有 374 宽（fig 438），chip 再收一档到 3+2 */
.o6 .dv-board .rf-stage .o9-tags .dv-panel.o9-tags-panel { width:100%; max-width:none; margin-left:0; margin-right:0; }
.o6 .dv-board .rf-stage .o9-tags .dv-panel .dv-tag { padding:0 10px 0 8px; font-size:12px; }
.o6 .dv-board .rf-stage .dv-panel .dv-tag .dv-wave-mini { width:36px; }
/* ===== reframe 0906 r4 (lill) · quill v4 文案落位 ===== */
/* 克隆卡两行标签改 sentence-case（Reference / Cloned），不再大写不再放字距；连接行只留线 + 箭头 */
.o6 .dv-board .rf-stage .vp-flow .vp-lab.rf-lab { font-size:13px; line-height:18px; font-weight:600; letter-spacing:0; text-transform:none; color:var(--dv-ink6); }
.o6 .dv-board .rf-stage .vp-flow .vp-step.is-live .vp-lab.rf-lab { color:var(--dv-pur); }
/* 章 2 段头：H2 下面一句 FIXED body（左栏），按钮再下 */
.o6 .dv-board .rf-head .rf-body { margin:0; max-width:28em; color:rgba(255,255,255,.85); font-size:18px; line-height:28px; font-weight:500; text-align:left; }
/* fact 行 = elevenlabs API 行：标签 / 数字 / 一句 上下叠；「sample」字压淡 */
.rf-fact { display:flex; flex-direction:column; gap:4px; padding:20px 0; }
.rf-fact-n { margin:0; color:#fff; font-size:15px; line-height:22px; font-weight:600; }
.rf-fact-n .rf-mute { color:rgba(255,255,255,.55); font-weight:500; }
.rf-fact-b { margin-top:2px; }
/* 标签演示句：标签在句中，句子 ink、标签淡紫 */
.o6 .nf .o9-tags p.dv-line.o9-tags-line .tg-pre, .o6 .nf .o9-tags p.dv-line.o9-tags-line .tg-post { color:var(--dv-ink); }
@media (max-width:767px) { .o6 .dv-board .rf-head .rf-body { font-size:16px; line-height:24px; } .rf-fact { padding:16px 0; } }

/* ===== reframe 0906 r5 (lill) · iris 幕布涟漪 → 章节背景圈接手（_iris/curtain-ripple-handoff-0906.html） ===== */
/* 幕上的 .dv-ripple 元素规则整套撤（dv-rip-scale / dv-rip-fade 两条 keyframes 留给播放键的 .dv-rip）。
   层 = .bm-rh（position / z 由 js 写 inline：fixed、z 0，落在板底之上、各章 sheet 之下）。同一批 circle：幕上按 sound-stories 节拍外扩，板上滑后相位钉住、
   圆心 / 半径 / 描边 / 透明度按滚动插值到各自 .rf-gap 带内的背景位（整个坐在带里，不碰板边）。 */
/* r6：层不再裁（parked 后环可以出视口高度）；is-parked = absolute 钉板顶跟板走，同 .bocchi-bg-fly.is-parked */
.bm-rh { pointer-events:none; overflow:visible; }
.bm-rh.is-parked { position:absolute; }
.bm-rh svg { display:block; width:100%; height:100%; overflow:visible; }
.bm-rh circle { vector-effect:non-scaling-stroke; }
/* ===== reframe 0906 r7 (lill) · 板宽对齐 FAQ ===== */
/* 她：「上面介绍的这个部分应该跟下面 Q&A 一样宽，整个页面要变宽，图和字有更多空间。」
   FAQ 的 sheet = .nf-faq-grid：1440 下 60–1380（1320 宽、圆角 32、内距 48/74）；430 下 16–414（398、圆角 24、内距 20）。
   章节 sheet 原来 118–1322（段两侧还垫了 57.6）→ 段两侧内距归零，.dv-in 撑满板宽，内距照 FAQ 的 74 / 20；空间多了字阶上一档、卡里的 stage 加高、纵向节奏同比放大。 */
.o6 .dv-board .dv-sec.dv-z-field.rf-ch { padding-left:0; padding-right:0; }
.o6 .dv-board .dv-sec.dv-z-field.rf-ch > .dv-in { width:100%; max-width:none; padding:clamp(28px,2.6vw,40px) 74px clamp(48px,4.6vw,68px); gap:clamp(32px,3.4vw,48px); }
.o6 .dv-board .rf-head .dv-h2 { font-size:clamp(36px,3.6vw,52px); }
.o6 .dv-board .rf-head .dv-sub { max-width:36em; font-size:19px; line-height:30px; }
.o6 .dv-board .rf-head .rf-body { font-size:19px; line-height:30px; }
.rf-head { gap:24px clamp(40px,5vw,80px); }
.rf-big, .rf-small { gap:20px; }
.o6 .dv-board .dv-plate.rf-bigcard { padding:24px 24px 32px; gap:24px; }
.rf-stage { min-height:400px; padding:32px 36px; }
.rf-cap-b { font-size:20px; line-height:28px; }
.o6 .dv-board .dv-plate.rf-smcard { padding:32px; }
.rf-split { gap:20px clamp(32px,4vw,64px); }
.o6 .dv-board .dv-plate.rf-roomplate { padding:28px 32px; }
.o6 .dv-board .rf-roomplate .kf-rooms .dv-plate { padding:18px 0; }
.rf-fact { padding:26px 0; }
.rf-fact-n { font-size:16px; line-height:24px; }
.rf-fact-b, .rf-fact-l { font-size:17px; line-height:26px; }
.rf-bento, .rf-bento-top, .rf-bento-bottom { gap:20px; }
.rf .bm-body { min-height:240px; }
.rf-card-sm .bm-body { min-height:200px; }
.o6 .dv-board .rf-close .dv-h2 { font-size:clamp(34px,3.8vw,56px); }
@media (max-width:991px) {
  .o6 .dv-board .dv-sec.dv-z-field.rf-ch > .dv-in { padding-left:40px; padding-right:40px; }
}
@media (max-width:767px) {
  .o6 .dv-board .dv-sec.dv-z-field.rf-ch > .dv-in { padding:24px 20px 34px; gap:24px; }
  .o6 .dv-board .rf-head .dv-h2 { font-size:30px; }
  .o6 .dv-board .rf-head .dv-sub, .o6 .dv-board .rf-head .rf-body { font-size:16px; line-height:24px; }
  .rf-big, .rf-small, .rf-bento, .rf-bento-top, .rf-bento-bottom { gap:16px; }
  .o6 .dv-board .dv-plate.rf-bigcard { padding:14px 14px 22px; gap:18px; }
  .rf-stage { min-height:0; padding:16px 12px; }
  .rf-cap-b { font-size:17px; line-height:24px; }
  .o6 .dv-board .dv-plate.rf-smcard { padding:22px 20px; }
  .o6 .dv-board .dv-plate.rf-roomplate { padding:12px 16px; }
  .rf-fact { padding:16px 0; }
  .rf-fact-n { font-size:15px; line-height:22px; }
  .rf-fact-b, .rf-fact-l { font-size:16px; line-height:24px; }
  .rf .bm-body, .rf-card-sm .bm-body { min-height:184px; }
}
/* ===== r7b (lill) · 版面变宽后板里的画也放大：clone 行 / 标签卡 / 往返图 / bento stage 都撑满各自的 plate，等比不拉伸 ===== */
.rf-stage { justify-content:stretch; }
.o6 .dv-board .rf-stage .dv-plate.voice-proof.vp-flow { flex:1 1 auto; justify-content:space-evenly; gap:20px; }
.rf-stage .vp-flow .vp-step { grid-template-columns:52px minmax(0,1fr) 56px; gap:20px; padding:14px 16px; border-radius:18px; }
.rf-stage .vp-flow .dv-wave-dots { height:116px; }
.rf-stage .vp-flow .vp-step .dv-play { width:56px; height:56px; }
.o6 .dv-board .rf-stage .dv-plate .vp-num { font-size:15px; }
.o6 .dv-board .rf-stage .vp-flow .vp-lab.rf-lab { font-size:15px; line-height:22px; }
.o6 .dv-board .rf-stage .o9-tags.tg-bubblefig { flex:1 1 auto; display:flex; flex-direction:column; justify-content:space-evenly; gap:22px; }
.o6 .dv-board .rf-stage .o9-tags .dv-panel .dv-tag { min-height:42px; padding:0 14px 0 12px; font-size:14px; border-radius:13px; }
.o6 .dv-board .rf-stage .dv-panel .dv-tag .dv-wave-mini { width:48px; height:18px; }
.o6 .dv-board .rf-stage .tg-bubblefig .dv-panel-list.tg-row { gap:8px 10px; }
.o6 .dv-board .rf-stage .tg-bubble { max-width:none; padding:26px 28px 26px 32px; }
.nf .rf-stage .tg-bubblefig p.dv-line.tg-line { font-size:clamp(22px,2vw,30px); line-height:1.4; }
.rf-stage .tg-bubblefig .dv-line-tag { font-size:clamp(17px,1.4vw,21px); padding:4px 11px; }
.rf-stage .tg-bubblefig .tg-play { width:60px; height:60px; }
.rf-stage .tg-bubblefig .tg-wave { margin-top:0; }
.rf-stage .tg-bubblefig .tg-wave .dv-wave-lg { height:150px; }
.rf-roomplate .kf-rooms .rt-diagram { min-height:300px; }
.rf-roomplate .kf-rooms .o9-room-cap { font-size:16px; line-height:24px; }
.rf .bm-body { min-height:280px; }
.rf-card-sm .bm-body { min-height:220px; }
@media (max-width:767px) {
  .o6 .dv-board .rf-stage .dv-plate.voice-proof.vp-flow { gap:10px; }
  .rf-stage .vp-flow .vp-step { grid-template-columns:32px minmax(0,1fr) 40px; gap:10px; padding:6px 4px; }
  .rf-stage .vp-flow .dv-wave-dots { height:64px; }
  .rf-stage .vp-flow .vp-step .dv-play { width:40px; height:40px; }
  .o6 .dv-board .rf-stage .dv-plate .vp-num, .o6 .dv-board .rf-stage .vp-flow .vp-lab.rf-lab { font-size:13px; }
  .o6 .dv-board .rf-stage .o9-tags .dv-panel .dv-tag { min-height:36px; padding:0 10px 0 8px; font-size:12px; }
  .o6 .dv-board .rf-stage .dv-panel .dv-tag .dv-wave-mini { width:36px; height:16px; }
  .o6 .dv-board .rf-stage .tg-bubble { padding:16px 16px 14px 18px; }
  .nf .rf-stage .tg-bubblefig p.dv-line.tg-line { font-size:20px; }
  .rf-stage .tg-bubblefig .dv-line-tag { font-size:15px; padding:3px 9px; }
  .rf-stage .tg-bubblefig .tg-play { width:44px; height:44px; }
  .rf-stage .tg-bubblefig .tg-wave .dv-wave-lg { height:80px; }
  .rf-roomplate .kf-rooms .rt-diagram { min-height:0; }
  .rf .bm-body, .rf-card-sm .bm-body { min-height:184px; }
}
/* ===== r7c (lill) · clone 卡两行 / 标签卡大波形撑满 plate ===== */
/* 行只有 392 宽：stage 36 + figure 32 两层横向内距把 456 吃成 392，波形只剩 212。figure 内距归零、行两侧归零（is-live 底色用负外距补回），stage 横向内距收到 24：波形 212 → 380（1440），标签大波形同宽。 */
.rf-stage { padding-left:24px; padding-right:24px; }
.o6 .dv-board .rf-stage .dv-plate.voice-proof.vp-flow { padding:0; }
.rf-stage .vp-flow .vp-step { padding:14px 12px; margin:0 -12px; }
.rf-stage .vp-flow .vp-link { padding:2px 0; }
.o6 .dv-board .rf-stage .o9-tags.tg-bubblefig { padding:0; }
.rf-stage .tg-bubblefig .tg-wave, .rf-stage .tg-bubblefig .tg-wave .dv-wave-lg { width:100%; }
@media (max-width:767px) { .rf-stage { padding-left:14px; padding-right:14px; } .rf-stage .vp-flow .vp-step { padding:6px 4px; margin:0 -4px; } }

/* ===== r10 (lill) · A/B 克隆卡：行标签 sentence case、行间只一枚 chevron、交接高亮 ===== */
.o6 .dv-board .dv-plate .vp-lab.vp-plain, .o6 .dv-board .dv-pair-col .dv-plate .vp-lab.vp-plain { font-size:15px; line-height:22px; font-weight:600; letter-spacing:0; text-transform:none; color:var(--dv-ink6); }
.o6 .dv-board .dv-plate .vp-step.is-live .vp-lab.vp-plain { color:var(--dv-pur); }
.vp-flow .vp-link { justify-content:center; gap:0; padding:0; }
.vp-flow .vp-link > i:not(.vp-chev) { display:none; }
.vp-flow .vp-chev { display:grid; place-items:center; width:28px; height:28px; }
.vp-flow .vp-chev::before, .vp-flow .vp-chev::after { content:none; }
.vp-flow .vp-chev svg { display:block; width:22px; height:22px; fill:none; stroke:rgba(36,28,78,.5); stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; transition:stroke .2s ease, transform .3s cubic-bezier(.22,1,.36,1); }
.vp-flow.is-handoff .vp-chev svg { stroke:var(--dv-pur); transform:translateY(3px); }

/* ===== r11 (lill) · It breathes. 板：只剩两张频谱并排 + 英文说明（quill breath-block-captions-0906） ===== */
.o6 .dv-board .dv-breathfig { gap:20px; }
.o6 .dv-board .dv-breathfig .dv-specs { width:100%; }
.o6 .dv-board .dv-plate .dv-spec-lab { font-size:14px; line-height:20px; letter-spacing:0; text-transform:none; font-weight:600; color:var(--dv-ink6); }
.o6 .dv-board .dv-plate .dv-cut .dv-mono { font-size:12px; letter-spacing:0; text-transform:none; font-weight:700; }
.o6 .dv-board .dv-plate .dv-spec-axis { letter-spacing:0; text-transform:none; font-size:11px; font-weight:600; }
.o6 .dv-board .dv-breathfig .dv-breath-note { margin:0; max-width:none; color:var(--dv-ink); font:500 16px/24px var(--dv-font); }
@media (max-width:767px) { .o6 .dv-board .dv-breathfig .dv-breath-note { font-size:15px; line-height:22px; } }

/* ===== r13 (lill) · Start creating 屏：玻璃带通栏 / 内容右移 / 装饰字撤 / 右弧撤 / 水印下移 ===== */
.aw-start .mm-start { left:0; right:0; width:auto; border-radius:0; translate:0 calc((1 - var(--b-lumiA)) * 18px); padding-left:0; padding-right:0; }
.aw-start .mm-start-in { width:min(100%,1180px); margin:0 auto; padding-left:clamp(48px,9vw,140px); padding-right:clamp(24px,4vw,60px); box-sizing:border-box; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); }
.aw-start .mm-start-cta { justify-content:flex-end; }
.aw-start .mm-start-side { justify-self:end; width:auto; }
.nf.o6 > .aw-arc.a3, .nf > .aw-arc.a3 { display:none; }
.aw-start .mm-start-word { top:38vh; }
@media (max-width:1024px) { .aw-start .mm-start { width:auto; border-radius:0; } .aw-start .mm-start-in { padding-left:clamp(32px,7vw,80px); } .aw-start .mm-start-word { top:calc(clamp(68px,5vw,88px) + 34vh); } }
@media (max-width:700px) { .aw-start .mm-start { width:auto; border-radius:0; } .aw-start .mm-start-in { padding-left:24px; padding-right:24px; } .aw-start .mm-start-cta { justify-content:flex-start; } .aw-start .mm-start-side { justify-self:stretch; } }

/* ===== r18 (lill) · 幕布字灰掉的根因：.o1-d2 整层 opacity = --b-wordIn，眉题 / 按钮自己又各乘一次 --b-wordIn（0.5 × 0.5 = 0.25 的灰），
   加上 NEXT 键落点 = RELEASE + .05VH 正好停在 wordIn 半途，于是就停在灰态；眉题本身还是白 .8。
   改：只保留整层这一条 0 → 1 ramp（子元素只做位移，opacity 恒 1），眉题纯白，ramp 缩到 api 屏前 .18 就走完（停在哪都是满白）。 ===== */
.o1-d2 .o1-eyebrow { opacity:1; color:#fff; }
.o1-d2 .o1-cta { opacity:1; }
.o1-d2 .o1-cue { opacity:1; }
.av-cur__eyebrow, .av-curtain .av-cur__eyebrow { color:#fff; }
/* r18 校准：眉题 span 仍被 .nf-subtitle 那条 .7 / .8 盖住（多行规则）→ 提特异性钉成纯白 */
.mm-stage .o1-d2 .o1-eyebrow, .mm-stage .o1-d2 .o1-eyebrow.nf-subtitle, .mm-stage .o1-d2 .o1-eyebrow span { color:#fff; }

/* ===== r19 (lill) · A/B 卡：标题在板顶居中（墨色，比行标签大一档），板下句子撤 ===== */
.vp-title { margin:0 0 4px; color:var(--dv-ink,#241c4e); font-family:var(--dv-font); font-size:18px; line-height:24px; font-weight:700; letter-spacing:-.01em; text-align:center; text-transform:none; }
.o6 .dv-board .dv-plate .vp-title, .nf .dv-plate h3.vp-title { color:var(--dv-ink,#241c4e); }
.o6 .dv-board .rf-stage .dv-plate.voice-proof.vp-flow { justify-content:center; }
.o6 .dv-board .rf-stage .vp-title { font-size:20px; line-height:28px; margin-bottom:8px; }

/* r32c (lill) · A/B 卡标题「Voice cloning」/「Same voice, another language」用行号同款淡紫（--dv-pur），字号字重不变 */
.o6 .dv-board .dv-plate .vp-title, .nf .dv-plate h3.vp-title, .vp-title { color:var(--dv-pur,#7180ff); }
