: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); }
  html[lang="ja"] .mm-scroll span { transform: none; }
  .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; }
.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; }
  .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; }
/* 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:none; }
.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; }
.vn-stats small { display:block; color:inherit; font:inherit; }
.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; }
.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 { 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 r8f · Closing Voice CTA shares the same horizontal measure as the
   glass sections above it. */
.o6 .dv-board #snCta1 {
  box-sizing:border-box;
  padding-left:clamp(24px,4vw,60px);
  padding-right:clamp(24px,4vw,60px);
}
.o6 .dv-board #snCta1 > .dv-in.o6-cta {
  box-sizing:border-box;
  width:min(1320px,100%);
  margin-inline:auto;
}
@media (max-width:767px) {
  .o6 .dv-board #snCta1 {
    padding-left:14px;
    padding-right:14px;
  }
}

/* 0908 lill · #snTags 那块（气泡 + 假 tag 药丸）撤，并进 #snVoicePair 的情绪矩阵；对应 CSS 一并清 */

/* 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,
  .mm-run .mm-l3 .mm-live-row {
    left:3vw;
  }
  /* Keep the text width while clearing the left scroll rail. */
  .mm-run .mm-l3 .mm-live-row {
    left:7vw;
    margin-right:-4vw;
  }
}

/* 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:0;
  border-radius:42px;
  background:rgba(255,255,255,.22);
  -webkit-backdrop-filter:blur(22px);
  backdrop-filter:blur(22px);
  box-shadow:none;
}
.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;
}
@media (min-width:1025px) {
  .mm-run .offer-visual.offer-visual-call.offer-visual-system {
    left:auto;
    right:2.5vw;
  }
}

/* 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;
  }
}

/* 0906 r8e · Final creator CTA uses the same single glass-cover language as
   the preceding sections. One clear action replaces the split destination. */
.aw-start .mm-start {
  left:50%;
  right:auto;
  bottom:clamp(28px,4vh,48px);
  width:min(1320px,calc(100% - clamp(48px,8vw,120px)));
  min-height:0;
  padding:clamp(38px,4vw,58px) clamp(34px,5vw,74px);
  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;
  translate:-50% calc((1 - var(--b-lumiA)) * 18px);
}
.aw-start .mm-start-side {
  gap:22px;
}
.aw-start .mm-start-cta {
  width:100%;
  justify-content:flex-start;
}
.aw-start .mm-start-btn {
  box-sizing:border-box;
  max-width:100%;
  white-space:nowrap;
  line-height:1.2;
  min-height:60px;
  padding:0 34px;
  gap:18px;
  border:1px solid rgba(255,255,255,.72);
  background:#fff;
  color:#6374ff;
  box-shadow:0 16px 36px -18px rgba(37,29,106,.55);
  font-size:17px;
  font-weight:800;
}
.aw-start .mm-start-btn::after {
  flex:0 0 auto;
  align-self:center;
  content:"\2192";
  font-size:22px;
  line-height:1;
  transition:transform .22s cubic-bezier(.22,1,.36,1);
}
.aw-start .mm-start-btn:hover {
  background:#fff;
  color:#4f61f0;
  transform:translateY(-3px);
  box-shadow:0 20px 42px -18px rgba(37,29,106,.68);
}
.aw-start .mm-start-btn:hover::after {
  transform:translateX(4px);
}
.aw-start .mm-start-btn:focus-visible {
  outline:3px solid rgba(255,255,255,.82);
  outline-offset:4px;
}
@media (max-width:1024px) {
  .aw-start .mm-start {
    bottom:24px;
    width:calc(100% - 48px);
    padding:34px 30px;
    border-radius:28px;
  }
}
@media (max-width:700px) {
  .aw-start .mm-start {
    bottom:16px;
    width:calc(100% - 28px);
    padding:28px 22px 30px;
    border-radius:24px;
  }
  .aw-start .mm-start-btn {
    width:100%;
    min-height:56px;
    justify-content:space-between;
    padding:0 16px;
    gap:12px;
    font-size:clamp(14px,3.8vw,17px);
  }
}

/* 0906 r8g · This closing cover is clear glass, not a milky frosted band.
   Keep one translucent layer and let the artwork remain legible behind it. */
.aw-start .mm-start {
  background:rgba(255,255,255,.12);
  -webkit-backdrop-filter:blur(10px) saturate(1.08);
  backdrop-filter:blur(10px) saturate(1.08);
}
.aw-start .mm-start-side {
  padding:0;
  border-radius:0;
  background:transparent;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}

/* 0906 r8h · One unmistakable purple creator action. */
.aw-start .mm-start-btn {
  border-color:rgba(255,255,255,.24);
  background:#7180ff;
  color:#fff;
  box-shadow:0 16px 36px -18px rgba(45,35,135,.72);
}
.aw-start .mm-start-btn:hover {
  background:#6273f4;
  color:#fff;
  box-shadow:0 20px 42px -18px rgba(45,35,135,.82);
}


/* ===== curtain + fly, ported from option6 r7 ===== */
/* 0906 r8 lill · 她把 option6 的幕布 + 涟漪→背景过渡定稿了，这里原样搬到 option5：幕布两个按钮 + 小鼠标、.bm-rh 层、#developers a1/a2 弧撤（页面只一套环）。
   option5 自己的 .dv-ripple 元素规则整套删（dv-rip-scale / dv-rip-fade 留给播放键）。 */
/* --- 幕布：两个按钮 + 小鼠标滚动提示（都在 .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; } }
.o6#developers > .aw-arc.a1, .o6#developers > .aw-arc.a2 { display:none; }
.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; }

/* ===== board width = FAQ sheet, ported idea from option6 r7 ===== */
/* 她：「上面介绍的部分要跟 Q&A 一样宽」→ option5 板里每个 sheet（#snMeter … #snLocal 的 .dv-in + #snCta1 的 .dv-in.o6-cta）对齐 .nf-faq-grid：
   1440 = 60–1380 / 圆角 32 / 内距 74；430 = 16–414 / 圆角 24 / 内距 20。段两侧内距归零，.dv-in 撑满板宽，标题上一档，纵向留白同比放大；canvas 在 load 时按新宽量。 */
.o6 .dv-board .dv-sec.dv-z-field, .o6 .dv-board #snCta1 { padding-left:0; padding-right:0; }
.o6 .dv-board .dv-sec.dv-z-field > .dv-in { width:100%; max-width:none; padding:clamp(52px,5.4vw,84px) 74px; gap:clamp(44px,4.4vw,64px); }
.o6 .dv-board #snCta1 > .dv-in.o6-cta { width:100%; max-width:none; }
.o6 .dv-board .dv-sec.dv-z-field .dv-head h2.dv-h2 { font-size:clamp(40px,4.2vw,60px); }
.o6 .dv-board .dv-sec.dv-z-field .dv-head .dv-sub { font-size:19px; line-height:30px; max-width:36em; }
.o6 .dv-board #snCta1 .dv-h2.o6-caps { font-size:clamp(36px,3.6vw,52px); }
@media (max-width:991px) {
  .o6 .dv-board .dv-sec.dv-z-field > .dv-in { padding-left:40px; padding-right:40px; }
}
@media (max-width:767px) {
  .o6 .dv-board .dv-sec.dv-z-field { padding:18px 0; }
  .o6 .dv-board #snCta1 { padding-left:0; padding-right:0; }
  .o6 .dv-board .dv-sec.dv-z-field > .dv-in { padding:34px 20px; gap:30px; }
  .o6 .dv-board .dv-sec.dv-z-field .dv-head h2.dv-h2 { font-size:32px; }
  .o6 .dv-board .dv-sec.dv-z-field .dv-head .dv-sub { font-size:16px; line-height:24px; }
  .o6 .dv-board #snCta1 .dv-h2.o6-caps { font-size:28px; }
}

/* ===== 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; } }


/* ===== r12 (lill) · Avatar API 横滚章（option5 only）· iris bm loop 样式原样搬入（option6 同一块） ===== */
/* ---------- 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;}
}

/* ---- 桥：一屏纯紫地一句，飞着的那对在这里汇拢到中央 ---- */
.av-bridge { position:relative; display:grid; place-items:center; min-height:100vh; padding:0 24px; }
.av-bridge__l { position:relative; z-index:1; margin:0; max-width:22ch; color:#fff; font-family:var(--dv-font,"Proxima Nova","proxima-nova","Inter",-apple-system,sans-serif); font-size:clamp(28px,3.1vw,44px); line-height:1.18; font-weight:700; letter-spacing:-.024em; text-align:center; text-wrap:balance; }

/* ---- 跑道 + pin + truck（blueperiod .truck 横排，改为竖滚驱动 translateX） ---- */
.av-h { position:relative; height:calc(var(--av-n,7) * 100vh + 100vh); --av-vw:100vw; }
.av-h__pin { position:sticky; top:0; height:100vh; overflow:hidden; }
.av-h__truck { display:flex; height:100%; width:calc(var(--av-n,7) * 100vw); transform:translate3d(calc(var(--av-x,0) * -1px),0,0); will-change:transform; }
.av-h__panel { position:relative; flex:none; box-sizing:border-box; width:100vw; height:100vh; overflow:hidden; display:grid; grid-template-columns:minmax(0,1fr) 44vw; align-items:center; gap:clamp(24px,4vw,64px); padding:0 clamp(24px,5vw,80px); color:#fff; font-family:var(--dv-font,"Proxima Nova","proxima-nova","Inter",-apple-system,sans-serif); }
/* 幽灵序号：暗纹压底，不是实色 */
.av-h__ghost { position:absolute; left:clamp(8px,2vw,32px); top:2vh; z-index:0; color:rgba(255,255,255,.06); font-size:28vw; line-height:.85; font-weight:900; letter-spacing:-.06em; pointer-events:none; user-select:none; }
.av-h__copy { position:relative; z-index:1; display:flex; flex-direction:column; align-items:flex-start; gap:16px; max-width:34rem; }
.av-h__step { color:rgba(255,255,255,.7); font-size:15px; line-height:20px; font-weight:700; letter-spacing:.04em; }
.av-h__t { margin:0; color:#fff; font-size:clamp(36px,4.2vw,60px); line-height:1.04; font-weight:700; letter-spacing:-.03em; text-wrap:balance; }
.av-h__b { margin:0; max-width:30em; color:rgba(255,255,255,.85); font-size:19px; line-height:30px; font-weight:500; }
.av-h__f { margin:4px 0 0; color:rgba(255,255,255,.7); font-size:15px; line-height:22px; font-weight:600; }
.av-h__f.is-code { display:inline-flex; align-items:center; min-height:34px; padding:0 12px; border-radius:10px; background:rgba(255,255,255,.14); color:#fff; font-weight:600; letter-spacing:0; }
.av-h__stage { position:relative; z-index:1; width:44vw; height:min(62vh,44vw); will-change:transform; }
.av-h__bm { height:100%; margin:0; min-height:0; }
.av-h__bm .bm-stage { min-height:0; }
.av-code { display:grid; place-items:center; height:100%; margin:0; padding:24px; border-radius:24px; background:#fff; color:var(--dv-ink,#241c4e); }
.av-code-l { font-size:clamp(18px,1.8vw,26px); line-height:1.4; font-weight:600; letter-spacing:-.01em; white-space:nowrap; }
/* 幕布 = panel 0：同 developer 幕布材质 */
.av-cur { display:grid; grid-template-columns:none; place-items:center; padding:0; }
.av-cur__rip { position:absolute; inset:0; z-index:0; overflow:hidden; pointer-events:none; }
.av-cur__rip svg { display:block; width:100%; height:100%; overflow:visible; }
.av-cur__rip circle { vector-effect:non-scaling-stroke; }
.av-cur__in { position:relative; z-index:2; display:grid; justify-items:center; row-gap:24px; padding:0 24px; }
.av-cur__eyebrow { color:rgba(255,255,255,.8); font-size:16px; line-height:20px; font-weight:600; letter-spacing:-.54px; text-transform:uppercase; }
.av-cur__title { display:block; width:min(940px,82vw); margin:0; color:#fff; font-size:clamp(48px,4vw,78px); font-weight:800; line-height:.92; letter-spacing:-.065em; text-align:center; text-wrap:balance; overflow:clip; }
.av-cur__title span { display:block; transform:translateY(calc((1 - var(--av-in,0)) * 112%)); }
.av-cur__eyebrow, .av-cur__cta { opacity:var(--av-in,0); transform:translateY(calc((1 - var(--av-in,0)) * 24px)); }
.av-cur__cue { opacity:var(--av-in,0); }
html[data-lang="ja"] .av-cur__title { font-size:clamp(34px,3vw,56px); letter-spacing:0; line-height:1.3; }
html[data-lang="ja"] .av-h__t { letter-spacing:0; line-height:1.25; }
/* indicator = blueperiod .indicator 原方（fixed → 挂在 pin 里 absolute；字体换站点字体） */
.av-ind { position:absolute; bottom:32px; left:100px; width:calc(100% - 130px); height:1px; z-index:5; pointer-events:auto; font-family:var(--dv-font,"Proxima Nova","proxima-nova","Inter",-apple-system,sans-serif); }
.av-ind__body { display:block; width:100%; height:1px; background:#fff; opacity:.4; }
.av-ind__main { display:block; overflow:hidden; position:absolute; top:0; bottom:0; left:0; margin:auto 0; height:1px; width:0; background:#fff; }
.av-ind__section { position:absolute; top:0; bottom:0; margin:auto 0; width:8px; height:8px; padding:0; border:0; background:none; cursor:pointer; transition:transform .3s ease-out; }
.av-ind__section::before { content:""; display:block; width:100%; height:100%; border-radius:50%; background:#fff; transition:transform .3s ease-out; }
.av-ind__link { position:absolute; left:50%; bottom:18px; transform:translateX(-50%); white-space:nowrap; color:#fff; font-size:16px; line-height:20px; font-weight:600; opacity:0; transition:opacity .3s ease-out; }
.av-ind__section:hover::before, .av-ind__section.is-on::before { transform:scale(2); }
.av-ind__section:hover .av-ind__link, .av-ind__section.is-on .av-ind__link { opacity:1; }
.av-ind__section:focus-visible { outline:2px solid #fff; outline-offset:6px; border-radius:50%; }
.av-ind__next { position:absolute; right:-30px; bottom:12px; display:inline-flex; align-items:center; gap:4px; color:rgba(255,255,255,.7); font-size:12px; line-height:16px; font-weight:600; letter-spacing:.02em; transform:translateX(100%); }
.av-ind__next svg { width:14px; height:14px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; animation:av-nudge 2s cubic-bezier(.22,1,.36,1) infinite; }
@keyframes av-nudge { 0%,100% { transform:translateX(0); } 50% { transform:translateX(4px); } }
.av-h.is-end .av-ind { opacity:0; transition:opacity .25s ease; }
/* 末卡：普通竖向 sheet（材质同 FAQ） */
.nf > .nf-sheet.av-end { display:flex; flex-direction:column; align-items:center; gap:24px; box-sizing:border-box; max-width:1320px; margin:0 60px; padding:clamp(48px,5vw,72px) 74px; border-radius:32px; background:rgba(255,255,255,.14); text-align:center; }
@media (min-width:1441px) { .nf > .nf-sheet.av-end { margin-left:auto; margin-right:auto; } }
.nf > .nf-sheet.av-end::before { display:none; }
.nf .av-end .dv-h2.av-end__h { margin:0; max-width:20ch; color:#fff; font-family:var(--dv-font); font-size:clamp(34px,3.8vw,56px); line-height:1.06; font-weight:700; letter-spacing:-.03em; text-wrap:balance; }
.av-end__row { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:12px 24px; }
.nf .av-end .dv-cta { margin:0; min-height:46px; padding:0 22px; font-family:var(--dv-font); font-size:15px; font-weight:600; letter-spacing:0; }
.av-end__link { display:inline-flex; align-items:center; gap:6px; color:rgba(255,255,255,.86); font-family:var(--dv-font); font-size:15px; line-height:22px; font-weight:600; text-decoration:none; }
.av-end__link svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.av-end__link:hover { color:#fff; }
.av-bridge + .av-h { margin-top:0; }
.av-end + .nf-faq { margin-top:0; }
@media (max-width:991px) {
  .av-h__panel { grid-template-columns:minmax(0,1fr); grid-template-rows:auto minmax(0,1fr); align-content:center; gap:20px; padding:10vh clamp(20px,5vw,40px) 12vh; }
  .av-h__stage { width:100%; height:min(42vh,100%); }
  .av-h__ghost { font-size:40vw; top:4vh; }
  .av-ind { left:24px; width:calc(100% - 78px); bottom:24px; }
  .av-ind__next { right:-16px; }
}
@media (max-width:767px) {
  .av-h__t { font-size:32px; }
  .av-h__b { font-size:16px; line-height:24px; }
  .av-h__f { font-size:14px; }
  .av-code-l { font-size:16px; white-space:normal; text-align:center; }
  .av-ind__link { font-size:13px; }
  .av-ind__section:not(.is-on) .av-ind__link { display:none; }
  .nf > .nf-sheet.av-end { margin:0 16px; padding:34px 20px; border-radius:24px; }
  .av-bridge__l { font-size:26px; }
}
/* reduced motion：竖向堆叠正常滚，truck 不横移 */
@media (prefers-reduced-motion:reduce) {
  .av-h { height:auto; }
  .av-h__pin { position:static; height:auto; overflow:visible; }
  .av-h__truck { display:block; width:auto; transform:none !important; }
  .av-h__panel { width:auto; height:auto; min-height:70vh; padding-top:12vh; padding-bottom:12vh; }
  .av-h__stage { transform:none !important; }
  .av-cur__title span, .av-cur__eyebrow, .av-cur__cta, .av-cur__cue { --av-in:1; }
  .av-ind { display:none; }
}
.av-h.is-static { height:auto; }
.av-h.is-static .av-h__pin { position:static; height:auto; overflow:visible; }
.av-h.is-static .av-h__truck { display:block; width:auto; transform:none !important; }
.av-h.is-static .av-h__panel { width:auto; height:auto; min-height:70vh; padding-top:12vh; padding-bottom:12vh; }
.av-h.is-static .av-ind { display:none; }

/* ===== 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; } }

/* ===== r14 (lill) · A/B 卡改 option6 卡式说明 + Voice 六段并成一块 sheet ===== */
.rf-cap { display:flex; flex-direction:column; gap:6px; padding:0 6px; }
.rf-cap-t { margin:0; color:var(--dv-ink6); font-family:var(--dv-font); font-size:15px; line-height:22px; font-weight:600; }
.rf-cap-b { margin:0; color:var(--dv-ink); font-family:var(--dv-font); font-size:20px; line-height:28px; font-weight:600; letter-spacing:-.01em; }
.dv-pair-col > .rf-cap { margin-top:-8px; }
/* 一章一块 sheet：包住 snMeter…snLocal；里面各段的 .dv-in 透白底 / 圆角 / 顶底内距撤，只留 120 的块间节奏和各自的白 plate */
.o6 .dv-board .dv-chapter { position:relative; box-sizing:border-box; margin:0; padding:clamp(52px,5.4vw,84px) 0 clamp(60px,6vw,96px); border-radius:32px; background:rgba(255,255,255,.18); -webkit-backdrop-filter:blur(26px) saturate(1.04); backdrop-filter:blur(26px) saturate(1.04); overflow:hidden; }
.o6 .dv-board .dv-chapter::before { display:none; }
.o6 .dv-board .dv-chapter > .dv-sec.dv-z-field { padding:0; }
.o6 .dv-board .dv-chapter > .dv-sec.dv-z-field + .dv-sec.dv-z-field { margin-top:120px; }
.o6 .dv-board .dv-chapter > .dv-sec.dv-z-field > .dv-in { padding-top:0; padding-bottom:0; border-radius:0; background:none; -webkit-backdrop-filter:none; backdrop-filter:none; overflow:visible; }
.o6 .dv-board .dv-chapter > .dv-sec.dv-z-field.dv-sec-first > .dv-in { padding-top:0; }
.o6 .dv-board .dv-chapter + #snCta1 { padding-top:0; margin-top:clamp(40px,6vh,80px); }
.voice-api-link-row { display:flex; justify-content:center; align-items:center; margin:clamp(32px,5vh,64px) 0 clamp(56px,9vh,112px); padding:0; background:transparent; }
.o6 .dv-board .dv-chapter .dv-pair-col { gap:24px; }
@media (max-width:991px) { .o6 .dv-board .dv-chapter > .dv-sec.dv-z-field + .dv-sec.dv-z-field { margin-top:96px; } }
@media (max-width:767px) { .o6 .dv-board .dv-chapter { padding:34px 0 40px; border-radius:24px; } .o6 .dv-board .dv-chapter > .dv-sec.dv-z-field { padding:0; } .o6 .dv-board .dv-chapter > .dv-sec.dv-z-field + .dv-sec.dv-z-field { margin-top:72px; } .rf-cap-b { font-size:17px; line-height:24px; } }

/* r14 校准：说明进白 plate 里（同 option6：stage 在上、说明在下，墨色）；章 sheet 撑满板宽（.nf-sheet 的 1313 上限撤） */
.o6 .dv-board .dv-chapter.nf-sheet { max-width:none; width:100%; margin:0; }
.o6 .dv-board .dv-plate.voice-proof.vp-flow > .rf-cap { margin-top:8px; padding:0 4px; }
.o6 .dv-board .dv-plate .rf-cap-t { color:var(--dv-ink6); }
.o6 .dv-board .dv-plate .rf-cap-b { color:var(--dv-ink); }
.nf .dv-plate .rf-cap p.rf-cap-b { color:var(--dv-ink); }
/* ===== r15 (lill) · 横滚 panel 的 bm stage 里文字一律墨色（`.nf p { color:白 }` 会盖过 iris 的 .bm-type） ===== */
.nf .av-h__bm p, .nf .av-h__bm .bm-type, .nf .av-h__bm .bm-type b { color:var(--bm-ink,#241c4e); }
.nf .av-h__bm .bm-tag { color:var(--bm-pur-deep,#5361e6); }
.nf .av-h__bm .bm-listen-l { color:var(--bm-pur,#7180ff); }
/* r15 校准：两张 A/B 卡几何逐像素相同：figure 内容顶对齐，说明块固定两行高（卡 2 说明两行，卡 1 一行，原来被居中分配挤出 14px 差） */
.o6 .dv-board .dv-chapter .dv-pair-col .dv-plate.voice-proof.vp-flow { justify-content:flex-start; }
.o6 .dv-board .dv-chapter .dv-pair-col .dv-plate.voice-proof.vp-flow > .rf-cap { margin-top:auto; min-height:86px; }

/* ===== r16 (lill) · Avatar 幕布 = Lumi 眼睛两帧；标题字样 = developer 幕布 .o1-d2 p.o1-title 原样；桥屏撤；01 幽灵序号落下 ===== */
.av-bridge { display:none; }
.av-cur { grid-template-rows:auto auto; place-items:center; align-content:center; row-gap:clamp(20px,3vh,36px); padding:0 24px; }
.av-eyes { position:relative; z-index:1; width:min(62vw,900px); aspect-ratio:1774 / 887; }
.av-eyes__f { position:absolute; inset:0; display:block; width:100%; height:100%; object-fit:contain; }
.av-eyes[data-eyes="closed"] .av-eyes__open { visibility:hidden; }
.av-eyes[data-eyes="open"] .av-eyes__closed { visibility:hidden; }
.av-cur__in { row-gap:24px; }
.av-cur__title { position:relative; z-index:4; display:block; width:min(940px,82vw); margin:0; overflow:visible; color:#fff; font-family:var(--font,"Proxima Nova","proxima-nova","Inter",-apple-system,sans-serif); 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; }
.av-cur__title span { display:inline; transform:translateY(calc((1 - var(--av-in,0)) * 112%)); }
.av-cur__eyebrow { font-family:var(--font,"Proxima Nova","proxima-nova","Inter",-apple-system,sans-serif); }
html[data-lang="ja"] .av-cur__title { font-size:clamp(34px,3vw,56px); letter-spacing:0; line-height:1.3; }
.av-eyes { opacity:var(--av-in,0); }
/* 01 幽灵序号：随幕布推出从 -40vh 落到位（--av-drop 由 js 写），之后的序号静坐 */
.av-h__panel[data-av-panel="1"] .av-h__ghost { transform:translateY(calc((1 - var(--av-drop,0)) * -40vh)); will-change:transform; }
@media (max-width:767px) { .av-eyes { width:92vw; } .av-cur__title { width:min(86vw,820px); font-size:clamp(44px,12vw,72px); line-height:.94; } }
@media (prefers-reduced-motion:reduce) { .av-eyes { --av-in:1; } .av-eyes[data-eyes] .av-eyes__open { visibility:visible; } .av-eyes[data-eyes] .av-eyes__closed { visibility:hidden; } .av-h__panel[data-av-panel="1"] .av-h__ghost { transform:none; } }

/* ===== r17 (lill) · Avatar 幕布独立一屏（sticky）+ 分段 reveal；跑道从 panel 01 滑入起；眼睛 inner 两帧同盒 ===== */
.av-curtain { position:relative; z-index:1; height:360vh; }   /* 100 到场 + 60 hold + 100 panel 01 滑入时仍钉住（sticky 到 height - 100vh）+ 100 被跑道负外距吃掉 */
.av-curtain__pin { position:sticky; top:0; height:100vh; overflow:hidden; display:grid; place-items:center; align-content:center; row-gap:clamp(20px,3vh,36px); padding:0 24px; box-sizing:border-box; }
.av-curtain .av-eyes { position:relative; z-index:1; width:min(62vw,900px); aspect-ratio:1625 / 736; border-radius:24px; overflow:hidden; opacity:1; background:none; }
.av-curtain .av-eyes__f { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center; }
.av-curtain .av-cur__in { position:relative; z-index:2; display:grid; justify-items:center; row-gap:24px; padding:0; }
.av-curtain .av-cur__title { overflow:clip; }
.av-curtain .av-cur__title span { display:block; transform:translateY(112%); transition:transform .8s cubic-bezier(.165,.84,.44,1); }
.av-curtain .av-cur__eyebrow { opacity:0; transform:translateY(24px); transition:opacity .5s cubic-bezier(.22,1,.36,1), transform .65s cubic-bezier(.22,1,.36,1); }
.av-curtain .av-cur__cta { opacity:0; transform:translateY(24px); transition:opacity .5s cubic-bezier(.22,1,.36,1) .25s, transform .65s cubic-bezier(.22,1,.36,1) .25s; pointer-events:none; }
.av-curtain .av-cur__cue { position:absolute; left:50%; bottom:clamp(20px,4vh,40px); transform:translateX(-50%); opacity:0; transition:opacity .5s ease .55s; }
.av-curtain.is-reveal .av-cur__title span { transform:translateY(0); }
.av-curtain.is-reveal .av-cur__eyebrow, .av-curtain.is-reveal .av-cur__cta { opacity:1; transform:translateY(0); }
.av-curtain.is-reveal .av-cur__cta { pointer-events:auto; }
.av-curtain.is-reveal .av-cur__cue { opacity:1; }
/* 跑道从幕布下一屏起：负外距叠在幕布 hold 的最后一屏上，panel 01 带实底从右滑入盖住幕布 */
.av-h { margin-top:-200vh; z-index:2; height:calc(var(--av-n,6) * 100vh + 100vh); }
.av-h__panel { background:#7180ff; }
.av-ind { opacity:var(--av-ind,0); transition:opacity .25s ease; }
html[data-lang="ja"] .av-curtain .av-cur__title { font-size:clamp(34px,3vw,56px); letter-spacing:0; line-height:1.3; }
@media (max-width:767px) { .av-curtain .av-eyes { width:92vw; } .av-curtain { height:340vh; } }
@media (prefers-reduced-motion:reduce) {
  .av-curtain { height:auto; } .av-curtain__pin { position:static; height:auto; min-height:100vh; }
  .av-curtain .av-cur__title span, .av-curtain .av-cur__eyebrow, .av-curtain .av-cur__cta { transform:none; opacity:1; transition:none; }
  .av-curtain .av-cur__cta { pointer-events:auto; } .av-curtain .av-cur__cue { opacity:1; }
  .av-h { margin-top:0; }
}
.av-h.is-static { margin-top:0; }

/* ===== r17b (lill) · 眼睛渐进满屏：进幕布的最后半屏 --av-grow 0→1（60vw 居中盒 → 100vw×100vh 出血、圆角 24→0，cover），满屏后才睁眼、字再从画上升起；
   字在画上要读得清 → 整帧一层扁平紫罩 #7b89ff（.25，字起来时才上，无渐变无 blur）；眨眼在满屏上继续；滚走随段释放 ===== */
.av-curtain__pin { --w0:min(62vw,900px); --av-grow:0; --av-veil:0; }
.av-curtain .av-eyes { position:absolute; left:50%; top:50%; translate:-50% -50%; width:calc(var(--w0) + (100vw - var(--w0)) * var(--av-grow)); height:calc(var(--w0) * 0.453 + (100vh - var(--w0) * 0.453) * var(--av-grow)); aspect-ratio:auto; border-radius:calc(24px * (1 - var(--av-grow))); }
.av-curtain .av-eyes::after { content:""; position:absolute; inset:0; background:#7b89ff; opacity:calc(var(--av-veil) * .35);   /* r17c：.25 → .35，标题在画上更稳 */ transition:opacity .5s ease; pointer-events:none; }
.av-curtain.is-reveal .av-curtain__pin { --av-veil:1; }
.av-curtain .av-cur__in { position:relative; z-index:3; }
@media (max-width:767px) { .av-curtain__pin { --w0:92vw; } }
@media (prefers-reduced-motion:reduce) { .av-curtain__pin { --av-grow:1; --av-veil:1; } }

/* ===== 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 盖住（多行规则），标题被 .nf p .85 盖住 → 提特异性钉成纯白 */
.mm-stage .o1-d2 .o1-eyebrow, .mm-stage .o1-d2 .o1-eyebrow.nf-subtitle, .mm-stage .o1-d2 .o1-eyebrow span { color:#fff; }
.nf .av-curtain .av-cur__eyebrow, .nf .av-curtain .av-cur__eyebrow span, .nf .av-curtain p.av-cur__title, .nf .av-curtain p.av-cur__title 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 .dv-chapter .dv-pair-col .dv-plate.voice-proof.vp-flow { justify-content:center; gap:16px; }

/* ===== r20 (lill) · 眼睛进场：淡入 + 从中心长大（无卡片上滑硬边）；终态 = 100vw 等比 contain（上下扁平紫留白，不 cover 放大）；满宽后钉住不缩 ===== */
.av-curtain .av-eyes { width:calc(var(--w0) + (100vw - var(--w0)) * var(--av-grow)); height:calc((var(--w0) + (100vw - var(--w0)) * var(--av-grow)) * 0.453); opacity:var(--av-fade,0); transform:scale(calc(.82 + .18 * var(--av-fade,0))); transform-origin:50% 50%; will-change:transform, opacity; }
.av-curtain .av-eyes__f { object-fit:contain; }
@media (prefers-reduced-motion:reduce) { .av-curtain__pin { --av-fade:1; } .av-curtain .av-eyes { transform:none; } }
/* ===== r21 (lill) · 横滚 panel = 毛玻璃（同 Start creating 带：白 .2 + blur 22），眼睛透过玻璃留在后面；panel 内 5fr / 7fr 贴近；件错拍进场 ===== */
.av-h__panel { background:rgba(255,255,255,.2); -webkit-backdrop-filter:blur(22px) saturate(1.04); backdrop-filter:blur(22px) saturate(1.04); grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:0 64px; align-items:center; justify-content:center; padding:0 clamp(32px,6vw,96px); }
.av-h__copy { justify-self:end; align-items:flex-start; max-width:30rem; text-align:left; }
.av-h__stage { justify-self:start; width:100%; max-width:44vw; height:min(62vh,44vw); }
/* 件错拍：跟 truck 位移的余量走（--av-lag 由 js 写：panel 还没到位时 1，到位 0），序号先到、标题 80ms、板 160ms（transition-delay 做错拍） */
.av-h__panel .av-h__ghost, .av-h__panel .av-h__copy, .av-h__panel .av-h__stage { transition:transform .6s cubic-bezier(.22,1,.36,1), opacity .6s cubic-bezier(.22,1,.36,1); }
.av-h__panel .av-h__copy { transition-delay:80ms; }
.av-h__panel .av-h__stage { transition-delay:160ms; }
.av-h__panel:not(.is-arrived) .av-h__ghost { transform:translateX(6vw); opacity:0; }
.av-h__panel:not(.is-arrived) .av-h__copy { transform:translateX(8vw); opacity:0; }
.av-h__panel:not(.is-arrived) .av-h__stage { transform:translateX(10vw) !important; opacity:0; }
.av-h__panel[data-av-panel="1"]:not(.is-arrived) .av-h__ghost { transform:translateX(6vw) translateY(calc((1 - var(--av-drop,0)) * -40vh)); }
@media (max-width:991px) {
  .av-h__panel { grid-template-columns:minmax(0,1fr); gap:20px; padding:10vh clamp(20px,5vw,40px) 12vh; }
  .av-h__copy { justify-self:stretch; max-width:none; }
  .av-h__stage { justify-self:stretch; max-width:none; height:min(42vh,100%); }
}
@media (prefers-reduced-motion:reduce) { .av-h__panel .av-h__ghost, .av-h__panel .av-h__copy, .av-h__panel .av-h__stage { transform:none !important; opacity:1 !important; transition:none; } }
.av-h.is-static .av-h__panel .av-h__ghost, .av-h.is-static .av-h__panel .av-h__copy, .av-h.is-static .av-h__panel .av-h__stage { transform:none !important; opacity:1 !important; }
/* r21 校准：两栏改 30rem + 44vw 定宽居中，文字列右贴 64 间距，整对在视口里左右等边（1440：131 / 131） */
@media (min-width:992px) { .av-h__panel { grid-template-columns:minmax(0,30rem) min(44vw,900px); justify-content:center; } .av-h__stage { max-width:none; width:100%; } }
/* r21 校准 2：错拍 transition 挂在 .av-h__stage 上会和逐帧写的视差 transform 打架（永远慢一拍、板飘到右边）→ 错拍改挂在 stage 的子件上，stage 本身只做视差 */
.av-h__panel .av-h__stage { transition:none; opacity:1; }
.av-h__panel:not(.is-arrived) .av-h__stage { opacity:1; }
.av-h__panel .av-h__stage > * { transition:transform .6s cubic-bezier(.22,1,.36,1) 160ms, opacity .6s cubic-bezier(.22,1,.36,1) 160ms; }
.av-h__panel:not(.is-arrived) .av-h__stage > * { transform:translateX(10vw); opacity:0; }
@media (prefers-reduced-motion:reduce) { .av-h__panel .av-h__stage > * { transform:none !important; opacity:1 !important; transition:none; } }
.av-h.is-static .av-h__panel .av-h__stage > * { transform:none !important; opacity:1 !important; }
/* ===== r21b (lill) · panel 01 落定后眼睛降到 .3（紫地回到玻璃后面，白字可读）；stage 里的件钉墨 / 淡紫，文件件加描边 ===== */
.av-curtain__pin { --av-dim:0; }
.av-curtain .av-eyes { opacity:calc(var(--av-fade,0) * (1 - .7 * var(--av-dim))); transition:opacity .6s ease; }
.nf .av-h__bm, .nf .av-h__bm .bm-stage { color:var(--bm-ink,#241c4e); }
.nf .av-h__bm .bm-file-body { fill:#fff; stroke:var(--bm-pur,#7180ff); stroke-width:1.5; }
.nf .av-h__bm .bm-file-fold, .nf .av-h__bm .bm-file-line { fill:var(--bm-line,#c9c2ff); }
.nf .av-h__bm .bm-file-name { fill:var(--bm-ink2,rgba(36,28,78,.72)); }
.nf .av-h__bm .bm-zone { stroke:var(--bm-pur,#7180ff); }
.nf .av-h__bm .bm-chip { color:rgba(36,28,78,calc(.55 + var(--on,0) * .45)); }
/* r21c：眼睛降到 .15、跑道玻璃白 .2 → .14，白字对比目标 ≥ 3 */
.av-curtain .av-eyes { opacity:calc(var(--av-fade,0) * (1 - .85 * var(--av-dim))); }
.av-h__panel { background:rgba(255,255,255,.14); }
/* r21c 校准：纯 #7180ff 对白字本身只有 3.38，任何透白 + 眼睛残影都会把它压到 3 以下 → 跑道里眼睛全隐（回幕布才回来），玻璃白 .12 */
.av-curtain .av-eyes { opacity:calc(var(--av-fade,0) * (1 - var(--av-dim))); }
.av-h__panel { background:rgba(255,255,255,.12); }
/* r21d：跑道玻璃改压暗的紫玻璃（blur 22 不变），白字对比 ≥ 3.5；幽灵序号 .06 → .08 */
.av-h__panel { background:rgba(70,83,198,.18); }
.av-h__ghost { color:rgba(255,255,255,.08); }
/* r21d 校准：1440 标题两侧 2.6–2.9 的来源 = 玻璃后面幕布自己的白字 / 按钮糊成亮雾 → 跑道里（--av-dim 1）幕布文案层随眼睛一起隐掉 */
.av-curtain .av-cur__in, .av-curtain .av-cur__cue { opacity:calc(1 - var(--av-dim)); transition:opacity .6s ease; }
.av-curtain.is-reveal .av-cur__cue { opacity:calc(1 - var(--av-dim)); }
/* r21d 校准 2：430 下幽灵序号（40vw）压在标题顶上，.08 把那一点拉到 3.3 → 窄窗回 .06 */
@media (max-width:767px) { .av-h__ghost { color:rgba(255,255,255,.06); } }
/* r21d 校准 3：430 下幽灵序号挪到 panel 底部（白 plate 后面做水印），不再压在标题上 */
@media (max-width:767px) { .av-h__ghost { top:auto; bottom:0; left:clamp(8px,2vw,32px); } .av-h__panel[data-av-panel="1"] .av-h__ghost { transform:translateY(calc((1 - var(--av-drop,0)) * -40vh)); } }

/* ===== r22 (lill) · Avatar 幕布两段：① 眼睛（满屏 → 500ms 后眼皮慢慢抬起，900ms 带 150ms 犹豫，只一次，不眨）② 往下滚紫玻璃盖上（半屏 scrub 淡入），盖住后文案冒出 ===== */
.av-curtain { height:470vh; }
@media (max-width:767px) { .av-curtain { height:450vh; } }
/* 眼皮：开眼帧在下，闭眼帧在上，闭眼帧从上睫毛线往下用 mask 抹掉（羽化 8%，是 mask 不是可见渐变） */
.av-curtain .av-eyes__open { visibility:visible; z-index:0; }
.av-curtain .av-eyes[data-eyes] .av-eyes__closed { visibility:visible; z-index:1; --lid:0%; -webkit-mask-image:linear-gradient(to bottom, #000 calc(var(--lid) - 8%), transparent var(--lid)); mask-image:linear-gradient(to bottom, #000 calc(var(--lid) - 8%), transparent var(--lid)); -webkit-mask-size:100% 100%; mask-size:100% 100%; }
.av-curtain .av-eyes[data-eyes="closed"] .av-eyes__closed { --lid:130%; }
.av-curtain .av-eyes[data-eyes="open"] .av-eyes__closed { visibility:hidden; }
/* 眼睛段不上罩 */
.av-curtain .av-eyes::after { content:none; }
/* 玻璃：同跑道 panel 的紫玻璃，随滚动淡入（--av-glass 0→1） */
.av-cur__glass { position:absolute; inset:0; z-index:2; background:rgba(70,83,198,.18); -webkit-backdrop-filter:blur(22px) saturate(1.04); backdrop-filter:blur(22px) saturate(1.04); opacity:var(--av-glass,0); pointer-events:none; }
.av-curtain .av-cur__in { z-index:3; }
/* 文案只在玻璃盖住（≥ .8）后 is-reveal 冒出；小鼠标在眼睛段常亮、玻璃上来就淡掉 */
.av-curtain .av-cur__cue { opacity:calc(var(--av-cue,0) * (1 - var(--av-dim,0))); transition:opacity .4s ease; }
.av-curtain.is-reveal .av-cur__cue { opacity:calc(var(--av-cue,0) * (1 - var(--av-dim,0))); }
@media (prefers-reduced-motion:reduce) { .av-curtain { height:auto; } .av-curtain__pin { --av-glass:1; --av-cue:1; } .av-curtain .av-eyes[data-eyes] .av-eyes__closed { visibility:hidden; } }

/* ===== r22b (lill) · 幽灵序号进标题组：序号在上、步号 + 标题在下，左对齐，序号底部压进标题顶约 1/3；整章一种玻璃（幕布文案段 / 六块 panel / 末卡 = 紫玻璃 .18 + blur 22） ===== */
.av-h__copy { position:relative; }
.av-h__panel .av-h__ghost, .av-h__panel[data-av-panel="1"] .av-h__ghost { position:relative; z-index:0; top:auto; bottom:auto; left:-.03em; display:block; margin:0 0 calc(-.33 * .85em); font-size:clamp(120px,13vw,200px); line-height:.85; color:rgba(255,255,255,.08); }
.av-h__copy > :not(.av-h__ghost) { position:relative; z-index:1; }
.av-h__panel:not(.is-arrived) .av-h__ghost { transform:translateY(-40vh); opacity:0; }
.av-h__panel.is-arrived .av-h__ghost { transform:translateY(0); opacity:1; }
.av-h__panel[data-av-panel="1"] .av-h__ghost, .av-h__panel[data-av-panel="1"]:not(.is-arrived) .av-h__ghost { transform:translateY(calc((1 - var(--av-drop,0)) * -40vh)); opacity:var(--av-drop,0); }
@media (max-width:767px) { .av-h__panel .av-h__ghost, .av-h__panel[data-av-panel="1"] .av-h__ghost { position:relative; top:auto; bottom:auto; left:-.03em; font-size:clamp(96px,26vw,140px); color:rgba(255,255,255,.08); } .av-h__panel[data-av-panel="1"] .av-h__ghost { transform:translateY(calc((1 - var(--av-drop,0)) * -40vh)); } }
.nf > .nf-sheet.av-end { background:rgba(70,83,198,.18); -webkit-backdrop-filter:blur(22px) saturate(1.04); backdrop-filter:blur(22px) saturate(1.04); }
/* r22b 校准：序号改绝对定位挂在标题组顶上，标题组顶内距 = 序号高 × .67 − (步号 20 + 间距 16) → 序号底压进标题顶正好 1/3 */
.av-h__copy { --gh:calc(clamp(120px,13vw,200px) * .85); padding-top:calc(var(--gh) * .67 - 36px); }
.av-h__panel .av-h__ghost, .av-h__panel[data-av-panel="1"] .av-h__ghost, .av-h__panel[data-av-panel="1"]:not(.is-arrived) .av-h__ghost { position:absolute; top:0; left:-.03em; margin:0; height:var(--gh); }
@media (max-width:767px) { .av-h__copy { --gh:calc(clamp(96px,26vw,140px) * .85); } .av-h__panel .av-h__ghost, .av-h__panel[data-av-panel="1"] .av-h__ghost { position:absolute; top:0; } }
/* r22b：眼睛跟玻璃 scrub 走：--av-glass 0→1 时眼睛 1→.3（同一曲线），进跑道再 .3→0（--av-dim） */
.av-curtain .av-eyes { opacity:calc(var(--av-fade,0) * (1 - .7 * var(--av-glass,0)) * (1 - var(--av-dim))); }
/* r22b 校准：眼睛 .3 时标题背后仍只 2.8–2.9（浅粉画透过玻璃仍提亮）→ 玻璃盖满时眼睛落到 .12，对比 ≥ 3.5 */
.av-curtain .av-eyes { opacity:calc(var(--av-fade,0) * (1 - .88 * var(--av-glass,0)) * (1 - var(--av-dim))); }
/* r22b 校准 2：.12 仍 3.3 → 玻璃盖满时眼睛 .06（只剩极淡的一层），对比过 3.5 */
.av-curtain .av-eyes { opacity:calc(var(--av-fade,0) * (1 - .94 * var(--av-glass,0)) * (1 - var(--av-dim))); }

/* ===== r23 (lill) · Avatar 章一个 pin 到底：玻璃一层不动、内容流动；Lumi 主角 ===== */
.av-chapter { position:relative; z-index:2; height:auto; }
.av-chapter .av-curtain__pin { position:sticky; top:0; height:100vh; overflow:hidden; display:block; padding:0; }
.av-chapter .av-curtain__hold { height:100vh; }
.av-chapter .av-h { position:relative; margin:0; z-index:auto; height:calc(var(--av-n,6) * 100vh + 100vh); background:none; }
/* 眼睛 / 玻璃 / 幕布文案：pin 里居中布局改绝对 */
.av-chapter .av-eyes { z-index:1; }
.av-chapter .av-cur__glass { z-index:2; }
.av-chapter .av-cur__in { position:absolute; left:50%; top:50%; translate:-50% -50%; width:100%; box-sizing:border-box; padding:0 24px; z-index:3; opacity:calc(1 - var(--av-out,0)); transform:translateX(calc(var(--av-out,0) * -40px)); pointer-events:none; }
.av-chapter.is-reveal .av-cur__in { pointer-events:auto; }
.av-chapter .av-cur__in[data-gone] { pointer-events:none; }
.av-chapter .av-cur__cue { z-index:3; }
/* truck：透明，只有内容；pin 不带底，玻璃在下面那一层 */
.av-chapter .av-h__truck { position:absolute; inset:0; z-index:4; pointer-events:none; }
.av-chapter .av-h__panel { background:transparent; -webkit-backdrop-filter:none; backdrop-filter:none; }
.av-chapter .av-h__copy, .av-chapter .av-h__stage { transition:none; opacity:1; will-change:transform, opacity; }
.av-chapter .av-h__panel:not(.is-arrived) .av-h__copy { transform:none; opacity:1; }
.av-chapter .av-h__panel:not(.is-arrived) .av-h__stage { transform:none !important; opacity:1; }
/* 件的错拍挂在 copy 的子件上（序号 0 / 标题块 80ms）和 stage 子件（160ms），copy / stage 本身只吃 js 的视差 + 淡出 */
.av-chapter .av-h__copy > :not(.av-h__ghost) { transition:transform .6s cubic-bezier(.22,1,.36,1) 80ms, opacity .6s cubic-bezier(.22,1,.36,1) 80ms; }
.av-chapter .av-h__panel:not(.is-arrived) .av-h__copy > :not(.av-h__ghost) { transform:translateX(6vw); opacity:0; }
.av-chapter .av-h__slot { visibility:hidden; }
.av-chapter .av-h__bm .bm-chips { display:none; }
.av-chapter .av-ind { z-index:6; opacity:var(--av-ind,0); }
/* Lumi 主角（钉在 pin，02 板位） */
.av-lumi { position:absolute; z-index:5; pointer-events:none; opacity:0; will-change:transform, opacity; }
.av-lumi.is-on { opacity:1; }
.av-lumi__box { position:absolute; left:0; top:50%; translate:0 -50%; width:78%; aspect-ratio:640 / 520; }
.av-lumi__f { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; visibility:hidden; }
.av-lumi[data-f="1"] .av-lumi__f[data-i="1"], .av-lumi[data-f="2"] .av-lumi__f[data-i="2"], .av-lumi[data-f="3"] .av-lumi__f[data-i="3"], .av-lumi[data-f="4"] .av-lumi__f[data-i="4"], .av-lumi[data-f="5"] .av-lumi__f[data-i="5"], .av-lumi[data-f="6"] .av-lumi__f[data-i="6"], .av-lumi[data-f="7"] .av-lumi__f[data-i="7"], .av-lumi[data-f="8"] .av-lumi__f[data-i="8"], .av-lumi[data-f="9"] .av-lumi__f[data-i="9"], .av-lumi[data-f="10"] .av-lumi__f[data-i="10"], .av-lumi[data-f="11"] .av-lumi__f[data-i="11"], .av-lumi[data-f="12"] .av-lumi__f[data-i="12"], .av-lumi[data-f="13"] .av-lumi__f[data-i="13"], .av-lumi[data-f="14"] .av-lumi__f[data-i="14"], .av-lumi[data-f="15"] .av-lumi__f[data-i="15"], .av-lumi[data-f="16"] .av-lumi__f[data-i="16"] { visibility:visible; }
/* 说话：嘴边涟漪（sound-stories 节拍，细白线）+ 横向细波形（bm-wave 同族，3px 竖条）从嘴的高度往右走 */
.av-speech__rings { position:absolute; left:52.3%; top:47%; width:36%; height:auto; aspect-ratio:1; translate:-50% -50%; overflow:visible; opacity:0; transition:opacity .4s ease; }
.av-speech__rings circle { fill:none; stroke:#fff; stroke-width:1.5; vector-effect:non-scaling-stroke; transform-origin:100px 100px; animation:av-ring 3.5s cubic-bezier(.2,.7,.3,1) infinite; opacity:0; }
.av-speech__rings .r2 { animation-delay:1.2s; } .av-speech__rings .r3 { animation-delay:2.4s; }
@keyframes av-ring { 0% { transform:scale(.1); opacity:0; } 8% { opacity:.9; } 66% { opacity:.9; } 100% { transform:scale(1); opacity:0; } }
.av-speech { position:absolute; left:calc(78% * .6); right:0; top:calc(50% + (47% - 50%) * .78 * 520 / 640); translate:0 -50%; height:34px; opacity:0; transition:opacity .4s ease; }
.av-lumi.is-speaking .av-speech, .av-lumi.is-speaking .av-speech__rings { opacity:1; }
.av-wave { position:absolute; inset:0; display:flex; align-items:center; justify-content:space-between; transform-origin:50% 50%; }
.av-wave i { flex:none; width:3px; height:100%; border-radius:3px; background:#fff; transform:scaleY(.12); transform-origin:50% 50%; animation:av-bar 1.15s ease-in-out infinite; animation-delay:calc(var(--i) * -.09s); }
@keyframes av-bar { 0%,100% { transform:scaleY(.14); } 22% { transform:scaleY(.9); } 48% { transform:scaleY(.35); } 70% { transform:scaleY(.7); } }
.av-listen { position:absolute; right:0; top:-22px; color:#fff; font-family:var(--dv-font); font-size:11px; line-height:16px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; opacity:0; }
/* 05：她停一下再续（波形塌平、涟漪停，Listening 冒出来），5s 一循环 */
.av-lumi.is-stall .av-wave { animation:av-stall 5s ease-in-out infinite; }
.av-lumi.is-stall .av-speech__rings { animation:av-stall-o 5s ease-in-out infinite; }
.av-lumi.is-stall .av-listen { animation:av-stall-l 5s ease-in-out infinite; }
@keyframes av-stall { 0%,52% { transform:scaleY(1); } 58%,78% { transform:scaleY(.14); } 84%,100% { transform:scaleY(1); } }
@keyframes av-stall-o { 0%,52% { opacity:1; } 58%,78% { opacity:0; } 84%,100% { opacity:1; } }
@keyframes av-stall-l { 0%,54% { opacity:0; } 60%,76% { opacity:1; } 82%,100% { opacity:0; } }
/* reduced motion / static：竖向堆叠，Lumi 静态帧进各自的板位，玻璃常在，文案常显 */
.av-chapter.is-static .av-curtain__pin { position:static; height:auto; overflow:visible; }
.av-chapter.is-static .av-curtain__hold, .av-chapter.is-static .av-h { display:none; }
.av-chapter.is-static .av-eyes { position:relative; left:auto; top:auto; translate:none; width:100%; height:auto; aspect-ratio:1625 / 736; opacity:1; transform:none; }
.av-chapter.is-static .av-cur__glass { position:absolute; opacity:1; }
.av-chapter.is-static .av-cur__in { position:relative; left:auto; top:auto; translate:none; transform:none; opacity:1; padding:48px 24px; pointer-events:auto; }
.av-chapter.is-static .av-cur__cue { display:none; }
.av-chapter.is-static .av-h__truck { position:relative; display:block; width:auto; transform:none !important; pointer-events:auto; }
.av-chapter.is-static .av-h__panel { width:auto; height:auto; min-height:70vh; padding-top:12vh; padding-bottom:12vh; }
.av-chapter.is-static .av-h__copy, .av-chapter.is-static .av-h__stage, .av-chapter.is-static .av-h__copy > *, .av-chapter.is-static .av-h__stage > * { transform:none !important; opacity:1 !important; }
.av-chapter.is-static .av-h__slot { visibility:visible; display:grid; place-items:center; }
.av-chapter.is-static .av-lumi-static { width:78%; height:auto; }
.av-chapter.is-static .av-lumi, .av-chapter.is-static .av-ind { display:none; }
@media (prefers-reduced-motion:reduce) { .av-chapter .av-curtain__pin { --av-glass:1; --av-out:0; } }
/* ===== r25 (lill) · 整章一种材质 = 站点 .nf-sheet（白 .22 + blur 22，环从后面透出来，同 FAQ）；深紫玻璃全撤。
   玻璃层 = 一层：幕布文案段是一块 sheet（FAQ 的圆角 32 / 430 = 24、边距 60 / 16），panel 01 进来时展成通栏（圆角 0），跑道全程一整块；眼睛在玻璃下归 0 ===== */
.av-chapter .av-cur__glass { background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); inset:calc(var(--av-sheet,0) * 32px) calc(var(--av-sheet,0) * 60px); border-radius:calc(var(--av-sheet,0) * 32px); }
@media (max-width:767px) { .av-chapter .av-cur__glass { inset:calc(var(--av-sheet,0) * 16px) calc(var(--av-sheet,0) * 16px); border-radius:calc(var(--av-sheet,0) * 24px); } }
.av-curtain .av-eyes { opacity:calc(var(--av-fade,0) * (1 - var(--av-glass,0)) * (1 - var(--av-dim))); }
.av-chapter .av-h__panel { background:transparent; }
.nf > .nf-sheet.av-end { background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); border-radius:32px; }
@media (max-width:767px) { .nf > .nf-sheet.av-end { border-radius:24px; } }

/* ===== r27 (lill) · A/B 块头；panel 板贴右（右边距 6vw，文字列与板间距 ≥120 且随宽度长）；Lumi 台位同右列 ===== */
#snVoicePair > .dv-in { display:flex; flex-direction:column; gap:clamp(28px,3vw,40px); }   /* 0908：矩阵板 + 克隆卡两块，间距收一档 */
#snVoicePair .dv-pair2 { width:100%; }
@media (min-width:992px) {
  .av-chapter .av-h__panel { grid-template-columns:minmax(0,30rem) min(44vw,900px); justify-content:space-between; column-gap:max(120px,8vw); padding-left:clamp(32px,6vw,96px); padding-right:6vw; }
  .av-chapter .av-h__copy { justify-self:start; }
  .av-chapter .av-h__stage { justify-self:end; }
}
/* r27b：块头第一句后硬断（<br>），第二句 1440 一行；430 允许 Any line, / any language. */
.o6 .dv-board .dv-sec .dv-head h2.dv-h2.pair-head { max-width:none; text-wrap:normal; }
@media (max-width:767px) { .pair-head__b { display:block; } }

/* ===== r28 (lill) · panel 01 拖入板 / panel 02 大 Lumi 定时变身 / 眼皮抬起组件复用 ===== */
.o6 .dv-board .dv-plate.av-drop, .nf .dv-plate.av-drop { position:relative; box-sizing:border-box; height:100%; margin:0; padding:24px; border:0; border-radius:24px; background:#fff; overflow:hidden; --dragx:110%; --dragy:-60%; --tilt:-9deg; --lit:0; --cardop:1; --eyesop:0; }
.av-drop__zone { position:absolute; left:50%; top:50%; translate:-50% -50%; width:min(46%,260px); aspect-ratio:1122 / 1402; border-radius:16px; border:1.6px dashed #c9c2ff; background:#f1efff; }
.av-drop[data-phase="land"] .av-drop__zone, .av-drop[data-phase="light"] .av-drop__zone, .av-drop[data-phase="eyes"] .av-drop__zone { border-color:#7180ff; }
.av-drop__card { position:absolute; left:50%; top:50%; width:min(46%,260px); aspect-ratio:1122 / 1402; border-radius:16px; overflow:hidden; transform:translate(calc(-50% + var(--dragx)), calc(-50% + var(--dragy))) rotate(var(--tilt)); opacity:var(--cardop); will-change:transform, opacity; transition:opacity .5s ease; }
.av-drop__card img { display:block; width:100%; height:100%; object-fit:cover; }
/* 卡上的光：六个圆点按卡本身的关节位依次亮（画的语言：粉紫关节点） */
.av-drop__glow { position:absolute; inset:0; pointer-events:none; }
.av-drop__glow i { position:absolute; width:8%; aspect-ratio:1; border-radius:50%; background:#fff; opacity:0; transform:scale(.4); transition:opacity .16s ease, transform .16s ease; }
.av-drop__glow i:nth-child(1) { left:46%; top:26%; } .av-drop__glow i:nth-child(2) { left:41%; top:36%; } .av-drop__glow i:nth-child(3) { left:52%; top:36%; } .av-drop__glow i:nth-child(4) { left:33%; top:48%; } .av-drop__glow i:nth-child(5) { left:60%; top:48%; } .av-drop__glow i:nth-child(6) { left:46%; top:70%; }
.av-drop[data-phase="light"] .av-drop__glow i, .av-drop[data-phase="eyes"] .av-drop__glow i { opacity:.9; transform:scale(1); transition-delay:calc(var(--i) * 65ms); }
.av-drop[data-phase="eyes"] .av-drop__glow i { opacity:0; }
/* 板里的眼睛：卡的位置上，卡淡下去眼睛淡上来，再眼皮抬起 */
.av-peyes { position:absolute; left:50%; top:50%; translate:-50% -50%; width:min(46%,260px); aspect-ratio:1625 / 736; border-radius:14px; overflow:hidden; opacity:var(--eyesop); transition:opacity .5s ease; }
.av-peyes__f { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.av-peyes__open { z-index:0; }
.av-peyes[data-eyes] .av-peyes__closed { z-index:1; --lid:0%; -webkit-mask-image:linear-gradient(to bottom, #000 calc(var(--lid) - 8%), transparent var(--lid)); mask-image:linear-gradient(to bottom, #000 calc(var(--lid) - 8%), transparent var(--lid)); }
.av-peyes[data-eyes="closed"] .av-peyes__closed { --lid:130%; }
.av-peyes[data-eyes="open"] .av-peyes__closed { visibility:hidden; }
/* panel 02：Lumi 62vh 高，右列 */
.av-chapter .av-h__panel[data-av-panel="2"] .av-h__stage { width:calc(62vh * 640 / 520); max-width:min(44vw,900px); height:62vh; }
.av-lumi__box { width:100%; height:100%; top:0; translate:none; }
@media (max-width:991px) { .av-chapter .av-h__panel[data-av-panel="2"] .av-h__stage { width:100%; height:min(42vh,100%); } }
@media (prefers-reduced-motion:reduce) { .av-drop { --dragx:0%; --dragy:0%; --tilt:0deg; --cardop:0; --eyesop:1; } .av-peyes[data-eyes] .av-peyes__closed { visibility:hidden; } }
/* ===== r29 (lill) · 横滚章 → Start creating → FAQ；末卡撤 ===== */
.av-chapter + .aw-start { margin-top:0; }
.aw-start + .nf-faq { margin-top:0; }
@media (max-width:991px) { .av-chapter .av-h__panel[data-av-panel="2"] .av-h__stage { max-width:none; } }

/* ===== r30 (lill) · 幕布 = lumi-life-v3 蒙太奇 canvas（同眼睛的长大 / 淡入 / 满宽 contain，比例 1440:594） ===== */
.av-curtain .av-eyes.is-montage { height:calc((var(--w0) + (100vw - var(--w0)) * var(--av-grow)) * 0.4125); background:none; }
.av-curtain .av-eyes.is-montage canvas { display:block; width:100%; height:100%; }
.av-chapter .av-curtain__hold { height:240vh; }   /* r30：+140vh 给 scrub（1.4 屏），玻璃段顺延，panel 01 仍在文案段之后 */
@media (max-width:767px) { .av-chapter .av-curtain__hold { height:240vh; } }

/* ===== r31 (lill) · panel 01 台透明 62vh（只有虚线框）、拖入→变身在原地；文字列贴近台（右缘距台 96）；02 = 活着的 Lumi（16 idle + 说话） ===== */
@media (min-width:992px) { .av-chapter .av-h__panel { grid-template-columns:minmax(0,30rem) min(44vw,900px); column-gap:96px; justify-content:end; padding-right:6vw; } .av-chapter .av-h__panel[data-av-panel="1"] .av-h__stage { width:calc(62vh * 640 / 520); max-width:min(44vw,900px); height:62vh; } }
.av-drop { position:relative; width:100%; height:100%; background:none; padding:0; border-radius:0; overflow:visible; --dragx:110%; --dragy:-60%; --tilt:-9deg; --cardop:1; --zoneop:1; --lumiop:0; }
.av-drop__zone { position:absolute; left:50%; top:50%; translate:-50% -50%; width:min(40%,240px); aspect-ratio:1122 / 1402; border-radius:16px; border:1.6px dashed rgba(255,255,255,.7); background:rgba(255,255,255,.08); opacity:var(--zoneop); transition:opacity .5s ease, border-color .3s ease; }
.av-drop[data-phase="land"] .av-drop__zone, .av-drop[data-phase="light"] .av-drop__zone { border-color:#fff; }
.av-drop__card { position:absolute; left:50%; top:50%; width:min(40%,240px); aspect-ratio:1122 / 1402; border-radius:16px; overflow:hidden; transform:translate(calc(-50% + var(--dragx)), calc(-50% + var(--dragy))) rotate(var(--tilt)); opacity:var(--cardop); transition:opacity .5s ease; }
.av-drop__lumi { position:absolute; inset:0; opacity:var(--lumiop); transition:opacity .35s ease; }
.av-lf { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; visibility:hidden; }
.av-drop[data-f="1"] .av-lf[data-i="1"], .av-drop[data-f="2"] .av-lf[data-i="2"], .av-drop[data-f="3"] .av-lf[data-i="3"], .av-drop[data-f="4"] .av-lf[data-i="4"], .av-drop[data-f="5"] .av-lf[data-i="5"], .av-drop[data-f="6"] .av-lf[data-i="6"], .av-drop[data-f="7"] .av-lf[data-i="7"], .av-drop[data-f="8"] .av-lf[data-i="8"], .av-drop[data-f="9"] .av-lf[data-i="9"], .av-drop[data-f="10"] .av-lf[data-i="10"], .av-drop[data-f="11"] .av-lf[data-i="11"], .av-drop[data-f="12"] .av-lf[data-i="12"], .av-drop[data-f="13"] .av-lf[data-i="13"], .av-drop[data-f="14"] .av-lf[data-i="14"], .av-drop[data-f="15"] .av-lf[data-i="15"], .av-drop[data-f="16"] .av-lf[data-i="16"] { visibility:visible; }
.av-peyes { display:none; }
@media (prefers-reduced-motion:reduce) { .av-drop { --cardop:0; --zoneop:0; --lumiop:1; } .av-drop[data-f] .av-lf { visibility:hidden; } .av-drop .av-lf[data-i="16"] { visibility:visible !important; } }
.av-chapter.is-static .av-drop { --cardop:0; --zoneop:0; --lumiop:1; }

/* ===== r32 (lill) · blueperiod 版式 port：变宽 section 的连续 truck；幽灵序号压段名、角色骑缝、装裱框 + 小牌、钉板贴图、一行一句文本板、大片留白 ===== */
.av-chapter .av-h__panel.bp-s { display:block; width:calc(var(--sw,1) * 100vw); height:100vh; padding:0; overflow:visible; grid-template-columns:none; }
.bp-s .av-h__copy { position:absolute; justify-self:auto; max-width:30rem; }
.bp-s .av-h__ghost { position:absolute; }
.bp-h { font-size:clamp(40px,4.6vw,66px); }
.bp-eyebrow { font-family:var(--dv-font); font-size:16px; line-height:20px; font-weight:600; letter-spacing:-.54px; text-transform:uppercase; color:#fff; }
.bp-cta { justify-content:flex-start; margin-top:8px; opacity:1; transform:none; pointer-events:auto; }
/* ---- S1 格 0 = top hero：标题块 3vw 起，活化台贴右 ---- */
.bp-hero { position:absolute; left:0; top:0; width:100vw; height:100vh; }
.bp-hero__copy { left:6vw; top:50%; translate:0 -50%; }
.bp-hero__stage { position:absolute; right:6vw; top:50%; translate:0 -50%; width:calc(62vh * 640 / 520); max-width:44vw; height:62vh; }
/* ---- S1 格 1 = top read：角色骑在 100vw 那条缝上（脚在底），文本板一行一句，右装裱框 + 细腿 ---- */
.bp-chara { position:absolute; bottom:0; z-index:3; pointer-events:none; }
.bp-chara--s1 { left:calc(100vw - 14vw); width:36vw; }
.bp-read { position:absolute; left:116vw; top:6vh; width:38vw; height:74vh; box-sizing:border-box; padding:clamp(28px,4vh,48px) clamp(24px,2.6vw,40px); background:rgba(255,255,255,.14); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); border-radius:0; display:flex; align-items:center; }
.bp-read__t { margin:0; color:#fff; font-family:var(--dv-font); font-size:clamp(17px,1.35vw,21px); line-height:2.1; font-weight:500; }
.bp-movie { position:absolute; left:160vw; top:28vh; width:40vw; height:38vh; }
.bp-movie__frame { position:relative; z-index:1; box-sizing:border-box; width:100%; height:100%; border:1.5px dashed rgba(255,255,255,.75); border-radius:0; display:grid; place-items:center; color:rgba(255,255,255,.7); font-family:var(--dv-font); font-size:14px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; background:rgba(255,255,255,.06); }
.bp-movie__leg { position:absolute; left:50%; top:100%; width:2px; height:34vh; background:rgba(255,255,255,.35); }
/* ---- 段头（S2/S3/S4）：幽灵序号从左上溢出压段名（blueperiod hl__heading） ---- */
.bp-head { left:12vw; top:16vh; }
.bp-read2 { margin:14px 0 0; color:rgba(255,255,255,.85); font-family:var(--dv-font); font-size:16px; line-height:2; font-weight:500; }
.bp-head--u .bp-h--u { padding-bottom:10px; border-bottom:2px solid #fff; display:inline-block; }
/* ---- S2 画廊：装裱框（白玻璃厚框 + 内衬）+ 顶上「\ CLICK! /」+ 左下小牌（两行：能力名 / Avatar API） ---- */
.bp-chara--s2 { left:calc(230vw + 10vw - 230vw); width:22vw; bottom:0; }
.bp-s2 .bp-chara--s2 { left:10vw; }
.bp-gallery { position:absolute; left:34vw; top:0; height:100vh; width:70vw; }
.bp-gallery--b { left:196vw; width:80vw; }
.bp-item { position:absolute; bottom:22vh; width:17vw; cursor:pointer; }
.bp-gallery .bp-item:nth-child(1) { left:0; } .bp-gallery .bp-item:nth-child(2) { left:38vw; }
.bp-gallery--b .bp-item:nth-child(1) { left:0; width:24vw; } .bp-gallery--b .bp-item:nth-child(2) { left:40vw; width:15vw; }
.bp-click { position:absolute; left:50%; bottom:calc(100% + 10px); translate:-50% 0; color:#fff; font-family:var(--dv-font); font-size:11px; font-weight:700; letter-spacing:.2em; white-space:nowrap; opacity:.85; }
.bp-frame { display:block; box-sizing:border-box; padding:clamp(10px,.9vw,16px); background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); border-radius:0; transition:transform .35s cubic-bezier(.22,1,.36,1); }
.bp-frame img { display:block; width:100%; height:auto; background:#f1efff; }
.bp-item:hover .bp-frame, .bp-item:focus-visible .bp-frame { transform:translateY(-4px); }
.bp-plaque { position:absolute; right:calc(100% + 24px); bottom:12%; display:flex; flex-direction:column; gap:2px; min-width:96px; padding:8px 12px 9px; background:#fff; color:#241c4e; font-family:var(--dv-font); }
.bp-plaque b { font-size:13px; line-height:16px; font-weight:700; }
.bp-plaque i { font-style:normal; font-size:9px; line-height:12px; font-weight:600; letter-spacing:.06em; color:rgba(36,28,78,.6); }
/* Theater 窗：顶上一条白玻璃横梁 + 深一档的窗 + 说话台 */
.bp-theater { position:absolute; left:112vw; top:10vh; width:50vw; height:84vh; }
.bp-theater__win { position:relative; width:100%; height:100%; box-sizing:border-box; border-top:16px solid rgba(255,255,255,.35); background:rgba(255,255,255,.1); overflow:hidden; }
.bp-plaque--theater { right:auto; left:calc(100% + 24px); bottom:30%; }
.bp-theater .av-lumi { position:absolute; left:6%; right:6%; top:8%; bottom:0; opacity:1; transform:none !important; pointer-events:none; }
.bp-theater .av-lumi__box { position:absolute; left:0; top:50%; translate:0 -50%; width:60%; aspect-ratio:640 / 520; height:auto; }
.bp-theater .av-speech { left:calc(60% * .6); right:0; top:calc(50% + (47% - 50%) * .6 * 520 / 640); }
.av-lumi__f { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; visibility:hidden; }
/* ---- S3 三卡（special list：等宽卡，白玻璃 + 墨字，标题条 + 图区 + 一句） ---- */
.bp-cards { position:absolute; left:52vw; top:22vh; display:flex; gap:2.2vw; }
.bp-card { width:22vw; min-height:56vh; box-sizing:border-box; display:flex; flex-direction:column; gap:14px; padding:0 0 18px; background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); border-radius:0; color:#fff; }
.bp-card__t { margin:0; padding:14px 18px; background:#fff; color:#241c4e; font-family:var(--dv-font); font-size:16px; line-height:22px; font-weight:700; }
.bp-card__art { flex:1 1 auto; margin:0 18px; min-height:28vh; }
.bp-card__art .bm-stage { min-height:26vh; }
.bp-card__b { margin:0; padding:0 18px; font-family:var(--dv-font); font-size:14px; line-height:22px; font-weight:500; color:rgba(255,255,255,.88); }
.nf .bp-card .bm-type, .nf .bp-card .bm-type b, .nf .bp-card p.bm-type { color:#241c4e; }
/* ---- S4 project：下划线大标题 + 正文左；右钉板 = 白玻璃板 + 两枚图钉 + 两张斜贴图 ---- */
.bp-s4 .bp-head { left:14vw; top:16vh; max-width:34rem; }
.bp-board { position:absolute; left:64vw; top:30vh; width:58vw; height:56vh; background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); border-radius:0; }
.bp-board__pin { position:absolute; top:-8px; width:10px; height:22px; background:#fff; border-radius:3px; }
.bp-board__pin--a { left:12%; } .bp-board__pin--b { left:56%; }
.bp-pinned { position:absolute; top:12%; display:flex; flex-direction:column; gap:10px; width:34%; }
.bp-pinned--a { left:7%; transform:rotate(-2.5deg); } .bp-pinned--b { left:54%; top:18%; transform:rotate(1.8deg); }
.bp-pinned__tag { align-self:flex-start; padding:5px 10px; background:#fff; color:#241c4e; font-family:var(--dv-font); font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; }
.bp-pinned .av-code { height:auto; padding:22px 18px; }
.bp-pinned .av-code-l { font-size:clamp(14px,1.05vw,17px); white-space:normal; text-align:center; }
/* summary 信息列 + EXIT 牌（挂在 S4 最右） */
.bp-summary { position:absolute; left:170vw; top:50%; translate:0 -50%; display:flex; flex-direction:column; gap:14px; width:32vw; }
.bp-summary__l { display:inline-flex; align-items:center; gap:8px; padding:12px 18px; background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); color:#fff; font-family:var(--dv-font); font-size:15px; font-weight:600; text-decoration:none; }
.bp-summary__l:hover { background:#fff; color:#7180ff; }
.bp-exit { position:absolute; left:210vw; bottom:0; width:6vw; height:26vh; }
.bp-exit__board { position:absolute; left:0; top:0; width:100%; aspect-ratio:87 / 80; display:grid; place-items:center; background:#fff; color:#241c4e; font-family:var(--dv-font); font-size:clamp(14px,1.1vw,18px); font-weight:800; letter-spacing:.2em; }
.bp-exit__leg { position:absolute; left:50%; top:calc(6vw * 80 / 87); bottom:0; width:3px; background:rgba(255,255,255,.5); }
/* 大图 */
.bp-lb { position:absolute; inset:0; z-index:8; display:grid; place-items:center; background:rgba(113,128,255,.78); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }
.bp-lb[hidden] { display:none; }
.bp-lb__in { display:grid; grid-template-columns:minmax(0,52vw) minmax(0,28vw); gap:32px; align-items:center; }
.bp-frame--lg { width:100%; }
.bp-lb__side h3 { margin:0 0 18px; color:#fff; font-family:var(--dv-font); font-size:32px; line-height:1.1; font-weight:700; }
.bp-expression-tabs { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 18px; }
.bp-expression-tabs button { appearance:none; border:1px solid rgba(255,255,255,.5); border-radius:999px; padding:9px 15px; background:rgba(255,255,255,.14); color:#fff; font:600 13px/1 var(--dv-font); letter-spacing:.02em; cursor:pointer; transition:background .16s ease,color .16s ease,transform .16s ease; }
.bp-expression-tabs button:hover { transform:translateY(-1px); background:rgba(255,255,255,.24); }
.bp-expression-tabs button.is-on { background:#fff; color:#7180ff; }
.bp-lb__loops .bm-body { display:none; height:34vh; }
.bp-lb__loops .bm-body.is-on { display:flex; }
.bp-lb__close { position:absolute; z-index:3; right:32px; top:max(82px,calc(env(safe-area-inset-top) + 72px)); width:48px; height:48px; border:0; border-radius:50%; background:#fff; color:#7180ff; font-size:28px; line-height:1; cursor:pointer; box-shadow:0 8px 28px rgba(36,28,78,.16); }
.bp-lb__stage,.bp-lb__mini,#bpLbImg { cursor:zoom-out; }
/* indicator 段名常显在当前段 */
.av-ind__section.is-on .av-ind__link { opacity:1; }
/* 窄窗：纵向排版每段（section 仍是 sw 屏宽，内容按 vw 缩） */
@media (max-width:767px) {
  .bp-hero__copy { left:6vw; max-width:88vw; } .bp-hero__stage { right:auto; left:50%; translate:-50% 0; top:auto; bottom:10vh; width:60vw; height:40vh; }
  .bp-hero { height:100vh; } .bp-hero__copy { top:12vh; translate:none; }
  .bp-read { left:112vw; width:60vw; top:8vh; height:52vh; } .bp-chara--s1 { width:60vw; left:calc(100vw - 16vw); }
  .bp-movie { left:184vw; width:40vw; height:26vh; }
  .bp-head { left:8vw; top:12vh; max-width:80vw; }
  .bp-gallery { left:60vw; } .bp-item { width:32vw; } .bp-gallery .bp-item:nth-child(2) { left:50vw; } .bp-gallery--b { left:200vw; } .bp-gallery--b .bp-item:nth-child(1) { width:36vw; } .bp-gallery--b .bp-item:nth-child(2) { left:52vw; width:30vw; }
  .bp-theater { left:118vw; width:70vw; top:14vh; height:70vh; }
  .bp-cards { left:8vw; top:34vh; gap:4vw; } .bp-card { width:56vw; min-height:44vh; }
  .bp-s4 .bp-head { left:8vw; } .bp-board { left:100vw; width:80vw; top:22vh; height:52vh; } .bp-summary { left:190vw; width:40vw; } .bp-exit { left:206vw; width:12vw; }
  .bp-lb__in { grid-template-columns:1fr; width:86vw; } .bp-lb__loops .bm-body { height:26vh; }
}
/* reduced motion / static：纵向堆叠，每段 100vw、内容改流式 */
.av-chapter.is-static .av-h__panel.bp-s { width:auto; height:auto; padding:10vh 6vw; }
.av-chapter.is-static .bp-s > *, .av-chapter.is-static .bp-hero, .av-chapter.is-static .bp-hero > * { position:relative; left:auto; right:auto; top:auto; bottom:auto; translate:none; transform:none !important; width:auto; height:auto; margin:0 0 32px; }
.av-chapter.is-static .bp-chara, .av-chapter.is-static .bp-movie__leg, .av-chapter.is-static .bp-exit__leg, .av-chapter.is-static .bp-board__pin { display:none; }
.av-chapter.is-static .bp-cards { display:grid; grid-template-columns:1fr; gap:24px; }
.av-chapter.is-static .bp-hero__stage { height:52vh; }
/* r32b：蒙太奇不再 scrub（钉住即自动播 2.28s，末帧钉住），幕布 runway 回到 hold + 玻璃段 */
.av-chapter .av-curtain__hold { height:100vh; }
@media (max-width:767px) { .av-chapter .av-curtain__hold { height:100vh; } }
.bp-exit__board { text-transform:uppercase; }
.bp-theater__cap { position:absolute; left:0; top:calc(100% + 12px); margin:0; color:#fff; font-family:var(--dv-font); font-size:14px; line-height:20px; font-weight:600; }
.bp-plaque i { max-width:180px; white-space:normal; }

/* 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); }
/* r32 · truck 本身不吃事件，但装裱画 / 信息列 / 按钮要能点 */
.av-h__truck .bp-item, .av-h__truck .bp-summary__l, .av-h__truck .bp-cta a { pointer-events:auto; }
/* r32 校准：S1 骑缝角色改背影（走进下一格），文本板 / Demo 框各占格 1 的左右；S2 角色让开 Voice 小牌；小牌加宽；S4 板收进格 0，信息列 + 出口在格 1 */
.bp-chara--s1 { left:97vw; width:26vw; }
.bp-read { left:108vw; width:38vw; }
.bp-movie { left:152vw; width:40vw; }
.bp-s2 .bp-chara--s2 { left:3vw; width:18vw; }
.bp-gallery { left:40vw; }
.bp-plaque { min-width:150px; max-width:190px; }
.bp-s4 .bp-head { left:8vw; }
.bp-board { left:50vw; width:44vw; top:26vh; height:58vh; }
.bp-summary { left:118vw; width:40vw; }
.bp-exit { left:190vw; }
.bp-card, .bp-read { opacity:1; transform:none; }
@media (max-width:767px) { .bp-chara--s2, .bp-s2 .bp-chara--s2 { bottom:9vh; width:30vw; left:2vw; } .bp-gallery { left:100vw; width:90vw; } .bp-gallery .bp-item:nth-child(2) { left:52vw; } .bp-board { left:100vw; width:80vw; } .bp-summary { left:186vw; width:44vw; } .bp-exit { left:190vw; } .bp-chara--s1 { left:96vw; width:44vw; } .bp-read { left:108vw; width:70vw; } .bp-movie { left:184vw; } }
/* r32 · 跑道 div 是空的却压在 sticky pin 上面吃掉点击：不吃事件 */
.av-chapter .av-h { pointer-events:none; }

/* ===== r33 (lill) · 碰撞修正：文本板内距 + 居中；拖入序列卡先走再出人；画廊定格网格 + 小牌在框下 + 两行截断；轨道底 96px 净空带；S3 卡 2 = 小 Lumi 说话台；summary 列真 port；EXIT 牌完整 ===== */
.bp-read { left:calc(100vw + 60px); width:38vw; padding:64px; align-items:center; justify-content:flex-start; }
.bp-read__t { width:100%; }
.bp-chara { bottom:96px; }
.av-ind { z-index:7; }
.bp-gallery { left:40vw; width:60vw; } .bp-gallery--b { left:196vw; width:80vw; }
.bp-item { bottom:calc(96px + 92px); }
.bp-gallery .bp-item:nth-child(1) { left:0; width:17vw; } .bp-gallery .bp-item:nth-child(2) { left:calc(17vw + 160px); width:17vw; }
.bp-gallery--b .bp-item:nth-child(1) { left:0; width:24vw; } .bp-gallery--b .bp-item:nth-child(2) { left:calc(24vw + 160px); width:15vw; }
.bp-plaque { right:auto; left:0; bottom:auto; top:calc(100% + 14px); width:max-content; min-width:150px; max-width:190px; }
.bp-plaque i { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.bp-theater { top:8vh; height:calc(92vh - 150px); }
.bp-plaque--theater { top:auto; bottom:30%; left:calc(100% + 24px); }
.bp-theater__cap { top:calc(100% + 12px); }
.bp-cards { top:16vh; } .bp-card { min-height:auto; height:calc(84vh - 110px); }
.bp-card__art--mini { display:grid; place-items:center; }
.bp-mini { position:relative; width:100%; aspect-ratio:640 / 440; }
.bp-mini__box { position:absolute; left:0; top:0; width:62%; height:100%; }
.bp-mini__f { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; visibility:hidden; }
.bp-mini[data-f="13"] .bp-mini__f[data-i="13"], .bp-mini[data-f="14"] .bp-mini__f[data-i="14"], .bp-mini[data-f="15"] .bp-mini__f[data-i="15"], .bp-mini[data-f="16"] .bp-mini__f[data-i="16"] { visibility:visible; }
.bp-mini__wave { position:absolute; left:58%; right:0; top:46%; height:32px; display:flex; align-items:center; gap:3px; }
.bp-mini__wave i { flex:1; height:4px; background:#fff; border-radius:2px; animation:bp-mini-bar 2.8s ease-in-out infinite; animation-delay:calc(var(--i) * 70ms); transform-origin:center; }
@keyframes bp-mini-bar { 0%,8% { transform:scaleY(1); } 14% { transform:scaleY(5); } 22% { transform:scaleY(2); } 30% { transform:scaleY(6); } 38% { transform:scaleY(1.5); } 46% { transform:scaleY(1); } 48%,70% { transform:scaleY(.6); opacity:.5; } 76% { transform:scaleY(4); opacity:1; } 84% { transform:scaleY(1.5); } 92% { transform:scaleY(5); } 100% { transform:scaleY(1); } }
.bp-lb__mini { display:none; width:100%; } .bp-lb__mini.is-on { display:block; }
/* S4 板收窄；summary 列 = blueperiod 的 343 宽信息列 */
.bp-board { width:42vw; }
.bp-summary { left:118vw; top:50%; translate:0 -50%; width:26vw; min-width:340px; box-sizing:border-box; padding:32px 32px 12px; gap:0; background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); }
.bp-summary__h { margin:0 0 6px; padding-bottom:12px; border-bottom:2px solid #fff; color:#fff; font-family:var(--dv-font); font-size:26px; line-height:1.1; font-weight:700; }
.bp-summary { border-radius:24px; }
.bp-summary__list { margin:0; }
.bp-summary__row { display:grid; grid-template-columns:5.5rem 1fr; align-items:center; gap:12px; padding:14px 0; border-bottom:1px solid rgba(255,255,255,.35); }
.bp-summary__row:last-child { border-bottom:0; }
.bp-summary__row dt { margin:0; color:#fff; font-family:var(--dv-font); font-size:13px; font-weight:700; letter-spacing:.02em; }
.bp-summary__row dd { margin:0; }
.bp-summary__l { display:inline-flex; align-items:center; gap:8px; padding:0; background:none; color:#fff; font-family:var(--dv-font); font-size:15px; font-weight:600; text-decoration:none; }
.bp-summary__l svg { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; transition:transform .18s cubic-bezier(.22,1,.36,1); }
.bp-summary__l:hover { background:none; color:#fff; } .bp-summary__l:hover svg { transform:translateX(4px); }
.bp-exit { left:calc(200vw - 80px - 6vw); width:6vw; min-width:86px; height:26vh; bottom:96px; }
.bp-exit__board { border:0; cursor:pointer; pointer-events:auto; }
.bp-exit__leg { bottom:0; }
@media (max-width:767px) {
  .bp-read { left:60px; width:calc(100vw - 120px); padding:32px; left:calc(100vw + 60px); height:auto; top:10vh; }
  .bp-gallery { left:100vw; width:90vw; } .bp-gallery .bp-item:nth-child(1) { width:32vw; } .bp-gallery .bp-item:nth-child(2) { left:calc(32vw + 120px); width:32vw; }
  .bp-gallery--b { left:200vw; } .bp-gallery--b .bp-item:nth-child(1) { width:36vw; } .bp-gallery--b .bp-item:nth-child(2) { left:calc(36vw + 120px); width:30vw; }
  .bp-plaque { min-width:120px; max-width:150px; }
  .bp-chara--s2, .bp-s2 .bp-chara--s2 { bottom:96px; }
  .bp-theater { top:10vh; height:calc(90vh - 160px); }
  .bp-cards { top:14vh; } .bp-card { height:calc(86vh - 120px); }
  .bp-summary { left:110vw; width:calc(100vw - 120px); min-width:0; padding:24px 24px 8px; }
  .bp-exit { left:calc(200vw - 80px - 20vw); width:20vw; }
}
/* r33 校准：出口牌离末端再进 200px（滚到接近末端就完整可见），S4 板收到 90vw；430 的 S2 画廊两排叠放、Theater 让到 195vw */
.bp-exit { left:calc(200vw - 280px - 6vw); }
.bp-board { width:40vw; }
@media (max-width:767px) {
  .bp-gallery { left:100vw; width:90vw; } .bp-gallery--b { left:100vw; width:90vw; }
  .bp-gallery--b .bp-item { bottom:auto; top:8vh; } .bp-gallery--b .bp-item:nth-child(1) { width:32vw; } .bp-gallery--b .bp-item:nth-child(2) { left:calc(32vw + 120px); width:32vw; }
  .bp-theater { left:195vw; width:70vw; }
  .bp-exit { left:calc(200vw - 200px - 20vw); }
}
/* r33 校准 2：信息列链接不带玻璃药丸（撤 backdrop）；出口牌在末端离右缘 120px */
.bp-summary__l, .bp-summary__l:hover { -webkit-backdrop-filter:none; backdrop-filter:none; }
.bp-exit { left:calc(200vw - 120px - 6vw); }
@media (max-width:767px) { .bp-exit { left:calc(200vw - 100px - 20vw); } }
@media (max-width:767px) { .bp-board { left:10vw; width:80vw; top:54vh; height:32vh; } .bp-pinned { width:40%; } .bp-pinned--b { left:52%; top:20%; } }
@media (max-width:767px) { .bp-summary { top:50%; translate:0 -50%; } }

/* ===== r34 (lill) · 蒙太奇回滚动 scrub，且不再满屏：居中 72vw（最大 1040）、1440:594、圆角 24、紫底 letterbox；进场 .82 → 1 缩放 + 淡入不变；runway 加回 1.2 屏 ===== */
.av-curtain .av-eyes.is-montage { width:min(72vw,1040px); height:auto; aspect-ratio:1440 / 594; border-radius:24px; transform:scale(calc(.82 + .18 * var(--av-fade,0))); }
@media (max-width:767px) { .av-curtain .av-eyes.is-montage { width:92vw; border-radius:16px; } }
.av-chapter .av-curtain__hold { height:220vh; }
@media (max-width:767px) { .av-chapter .av-curtain__hold { height:220vh; } }
@media (prefers-reduced-motion:reduce) { .av-curtain .av-eyes.is-montage { transform:none; } }

/* r38: registered pencil cels, transparent outside the original graphite frame. */
.av-curtain .av-eyes.is-pencil { width:calc(80vw + 20vw * var(--eye-fill,0)); height:calc(40vh + 60vh * var(--eye-fill,0)); max-width:none; aspect-ratio:auto; background:none; border-radius:0; transform:none; overflow:hidden; }
.av-curtain .av-eyes.is-pencil canvas { display:block; width:100%; height:100%; }
@media (max-width:767px) { .av-curtain .av-eyes.is-pencil { width:calc(96vw + 4vw * var(--eye-fill,0)); } }
/* ===== r35 (lill) · S1 台 78vh、她「砰的出现」：卡瞬间切走，背影 .86 → 1.04 → 1（320ms back-out）+ 关节火花散开 400ms；转身 0.7 倍时长 ===== */
.bp-hero__stage { height:78vh; width:min(48vw, calc(78vh * 640 / 520)); max-width:none; top:50%; translate:0 -50%; }
.av-drop[data-phase="alive"] .av-drop__card { transition:none; }
.av-drop[data-phase="alive"] .av-drop__lumi { transition:none; animation:av-pop .32s cubic-bezier(.34,1.56,.64,1) both; }
@keyframes av-pop { from { transform:scale(.86); } 60% { transform:scale(1.04); } to { transform:scale(1); } }
.av-drop__sparks { position:absolute; left:50%; top:50%; width:0; height:0; pointer-events:none; }
.av-drop__sparks i { position:absolute; left:-5px; top:-5px; width:10px; height:10px; border-radius:50%; background:#fff; opacity:0; transform:rotate(calc(var(--a) * 1deg)) translateX(0); }
.av-drop[data-phase="alive"] .av-drop__sparks i { animation:av-spark .4s cubic-bezier(.22,1,.36,1) both; }
@keyframes av-spark { from { opacity:.95; transform:rotate(calc(var(--a) * 1deg)) translateX(18px) scale(1); } to { opacity:0; transform:rotate(calc(var(--a) * 1deg)) translateX(120px) scale(.3); } }
/* ===== r36 (lill) · S1 一格 1.5 屏：左 = 段头 + 按钮下紧凑文本板，右 = 台，尾 = Demo 虚线框；骑缝背影撤 ===== */
.bp-hero { width:150vw; }
.bp-hero__copy { left:60px; max-width:27rem; }
.bp-read--inline { position:static; left:auto; top:auto; width:auto; max-width:27rem; height:auto; margin-top:24px; padding:22px 26px; border-radius:16px; }
.bp-read--inline .bp-read__t { font-size:clamp(16px,1.2vw,19px); line-height:1.9; }
.bp-hero__stage { right:auto; left:50vw; }
.bp-movie { left:106vw; width:40vw; top:28vh; height:38vh; }
@media (max-width:767px) {
  .bp-hero__copy { left:24px; top:6vh; translate:none; max-width:calc(100vw - 48px); }
  .bp-h { font-size:36px; }
  .bp-read--inline { margin-top:16px; padding:14px 16px; } .bp-read--inline .bp-read__t { font-size:14px; line-height:1.6; }
  .bp-hero__stage { left:auto; right:4vw; top:auto; translate:none; bottom:96px; width:56vw; height:30vh; }
  .bp-movie { left:104vw; width:40vw; top:20vh; height:30vh; }
}

/* ===== r37 (lill) · S2 + S3 合并成一段 2.5 屏：段头 + 三行板 | Theater = 表情视频 + 五节拍小牌 + 字幕 | 两框 | 一张 stop 卡；S4 幽灵 03；indicator 三点 ===== */
.bp-s23 .bp-head { left:8vw; top:14vh; max-width:30rem; }
.bp-s23 .bp-read--inline { max-width:30rem; }
.bp-theater--video { left:58vw; top:8vh; width:50vw; height:auto; }
.bp-theater--video .bp-theater__win { aspect-ratio:1152 / 864; height:auto; border-top-width:14px; background:#fff; }
.bp-emo { display:block; width:100%; height:100%; object-fit:cover; }
.bp-beats { display:flex; gap:8px; margin-top:14px; }
.bp-beat { flex:1 1 0; padding:8px 10px; background:rgba(255,255,255,.22); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px); color:#fff; font-family:var(--dv-font); font-size:12px; line-height:16px; font-weight:700; text-align:center; opacity:.55; transition:opacity .2s ease, background .2s ease, color .2s ease; }
.bp-beat b { font-weight:700; }
.bp-beat.is-on { opacity:1; background:#fff; color:#241c4e; }
.bp-theater--video .bp-theater__cap { position:static; margin-top:12px; }
.bp-s23 .bp-gallery--b { left:120vw; width:70vw; }
.bp-s23 .bp-gallery--b .bp-item:nth-child(1) { width:17vw; } .bp-s23 .bp-gallery--b .bp-item:nth-child(2) { left:calc(17vw + 160px); width:26vw; }
.bp-cards--one { left:182vw; top:16vh; }
.bp-cards--one .bp-card { width:24vw; }
.bp-lb__stage { display:none; position:relative; width:100%; height:34vh; } .bp-lb__stage.is-on { display:block; }
.bp-lb__stage .av-lumi { position:absolute; inset:0; opacity:1; transform:none !important; }
.bp-lb__stage .av-lumi__box { position:absolute; left:0; top:50%; translate:0 -50%; width:60%; aspect-ratio:640 / 520; height:auto; }
.bp-lb__stage .av-speech { left:calc(60% * .6); right:0; top:calc(50% + (47% - 50%) * .6 * 520 / 640); }
@media (prefers-reduced-motion:reduce) { .bp-beat.is-on { background:rgba(255,255,255,.22); color:#fff; } }
@media (max-width:767px) {
  .bp-s23 .bp-head { left:24px; top:8vh; max-width:calc(100vw - 48px); }
  .bp-theater--video { left:104vw; width:88vw; top:8vh; }
  .bp-beats { flex-wrap:wrap; gap:6px; } .bp-beat { flex:1 1 30%; font-size:11px; padding:6px 6px; }
  .bp-s23 .bp-gallery--b { left:196vw; width:100vw; } .bp-s23 .bp-gallery--b .bp-item { bottom:auto; top:8vh; } .bp-s23 .bp-gallery--b .bp-item:nth-child(1) { width:26vw; } .bp-s23 .bp-gallery--b .bp-item:nth-child(2) { left:calc(26vw + 100px); width:34vw; }
  .bp-cards--one { left:196vw; top:auto; bottom:96px; } .bp-cards--one .bp-card { width:60vw; height:36vh; }
}
.local-flow { margin:40px auto 0;max-width:1060px;padding:24px 32px 28px;border:1px solid #ffffff60;border-radius:24px;background:#ffffff0d;color:white;font-family:var(--dv-font); }
.local-flow__boundary {display:flex;justify-content:space-between;gap:12px;font-size:11px;letter-spacing:.1em;opacity:.8;}
.local-flow__boundary span:last-child{letter-spacing:0;}
.local-flow__steps {display:grid;grid-template-columns:repeat(3,1fr);position:relative;margin:40px 0 28px;gap:24px;}
.local-flow__steps:before {content:'';position:absolute;left:17%;right:17%;top:31px;border-top:2px dotted #ffffff80;}
.local-flow__step {position:relative;text-align:center;}
.local-flow__icon {display:grid;place-items:center;width:64px;height:64px;margin:auto;background:#efedff;border-radius:22px;color:#7180ff;}
.local-flow__icon svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.local-flow h3{font-size:13px;letter-spacing:.1em;margin:22px 0 12px;color:white;}
.local-flow p{font-size:16px;line-height:1.6;margin:0;color:#ffffffd9;}
.local-flow__badge{display:inline-block;margin-top:16px;padding:6px 12px;border-radius:99px;background:#efedff;color:#6658d8;font-size:12px;}
.local-flow figcaption{text-align:center;font-size:13px;opacity:.8;}
@media(max-width:600px){.local-flow{padding:20px 16px}.local-flow__steps{grid-template-columns:1fr;gap:32px}.local-flow__steps:before{display:none}.local-flow__boundary{font-size:9px}.local-flow p{font-size:14px}}
.agent-app-illustration > img { display:block; width:100%; height:auto; clip-path:inset(6% 5.4% 7.3% 5.4% round 2%); }
/* Match the richer Lumi illustration without modifying source assets or motion. */
img[src*="assets/characters-hero/lumi"],
img[src*="assets/offer-hero-lumi/"],
.nf-foot-lumi img,
#avEyeSequence,
#avEmo {
  filter:saturate(1.16) contrast(1.07) brightness(.98);
}
/* r48: show the character arriving in a product, not isolated code cards. */
.bp-s4 .bp-head { max-width:34vw; }
.bp-s4 .agent-journey { left:45vw; top:25vh; width:49vw; height:auto; margin:0; padding:0; background:none; backdrop-filter:none; color:#fff; font-family:var(--dv-font); }
.agent-journey__flow { display:grid; grid-template-columns:1fr 90px 1fr; align-items:center; gap:10px; }
.agent-window { position:relative; aspect-ratio:4/5; border:1px solid #ffffff80; border-radius:18px; background:#ffffff20; overflow:hidden; }
.agent-window__bar { padding:12px; border-bottom:1px solid #ffffff50; font-size:10px; letter-spacing:.1em; display:flex; justify-content:space-between; }
.agent-window img { width:100%; height:75%; object-fit:contain; }
.agent-window__tag { position:absolute; bottom:12px; left:10px; right:10px; text-align:center; font-size:12px; }
.agent-bridge { display:flex; align-items:center; flex-direction:column; gap:8px; text-align:center; }
.agent-bridge>b { font-size:10px; letter-spacing:.08em; }
.agent-bridge code { padding:8px 15px; border-radius:999px; background:#6658d8; border:1px solid #ffffff60; }
.agent-bridge small { font-size:10px; opacity:.8; }
.agent-journey figcaption { text-align:center; font-size:17px; line-height:1.6; margin:22px 0; }
.agent-journey__code { text-align:center; font-size:11px; opacity:.8; }
.agent-journey__code small { display:block; margin-top:8px; }
@media(max-width:767px) { .bp-s4 .bp-head {max-width:84vw;top:10vh;} .bp-s4 .agent-journey {left:8vw;top:47vh;width:84vw;} .agent-journey__flow{grid-template-columns:1fr 65px 1fr;gap:5px}.agent-window__bar{font-size:8px;padding:8px}.agent-journey figcaption{font-size:13px;margin:10px 0}.agent-journey__code{font-size:9px} }
/* r46: conversation interruption, illustrated instead of a text placeholder. */
.bp-s23 .lumi-listen { left:182vw; top:12vh; width:60vw; display:block; color:#fff; font-family:var(--dv-font); }
.lumi-listen h3 { margin:12px 0; font-size:clamp(28px,2.5vw,46px); line-height:1.05; letter-spacing:-.03em; }
.lumi-listen > p { margin:10px 0; line-height:1.5; }
.lumi-listen__eyebrow { font-size:11px; letter-spacing:.14em; }
.lumi-listen__art { position:relative; width:min(100%,65vh); margin-top:20px; aspect-ratio:3/2; }
.lumi-listen__art img { position:absolute; inset:0; width:100%; height:100%; clip-path:polygon(4.8% 4.2%,45% 4.2%,45% 2%,55% 2%,55% 4.2%,95.6% 4.2%,95.6% 95.3%,4.8% 95.3%); }
.lumi-listen__art .lumi-listen__line { position:absolute; z-index:2; left:6%; right:6%; bottom:6%; margin:0; padding:12px 16px; background:rgba(239,237,255,.95); color:#241c4e; font-size:14px; line-height:1.5; }
.lumi-listen__quiet { visibility:hidden; }
.lumi-listen.is-listening .lumi-listen__quiet,.lumi-listen.is-mouth-closed .lumi-listen__quiet { visibility:visible; }
.lumi-listen__status { position:absolute; top:8%; left:8%; color:#542323; font-size:12px; }
.lumi-listen__actions { display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
.lumi-listen__actions button { border:1px solid #ffffff60; background:#ffffff20; border-radius:99px; color:white; padding:10px 16px; font:inherit; cursor:pointer; }
.lumi-listen__actions button:focus-visible { outline:2px solid white; outline-offset:3px; }
.lumi-listen__actions small { opacity:.7; }
@media(max-width:767px) { .bp-s23 .lumi-listen { left:196vw; top:12vh; bottom:auto; width:78vw; } .lumi-listen__art { width:100%; } .lumi-listen__actions { font-size:12px; } }
/* r45: a single expression study, with editorial copy on the page field. */
.bp-s23 .bp-emotion-story { left:108vw; width:70vw; }
.bp-emotion-story__copy { position:absolute; left:0; top:30vh; width:29vw; color:#fff; font-family:var(--dv-font); }
.bp-emotion-story__eyebrow { font-size:12px; letter-spacing:.15em; margin:0 0 20px; }
.bp-emotion-story__copy h3 { font-size:clamp(32px,3.3vw,60px); line-height:1.08; letter-spacing:-.04em; margin:0 0 24px; }
.bp-emotion-story__copy > p:last-child { font-size:clamp(15px,1.2vw,20px); line-height:1.8; opacity:.85; margin:0; }
.bp-s23 .bp-emotion-story .bp-item { left:36vw; top:15vh; bottom:auto; width:min(50vw,900px); }
.bp-emotion-story .bp-frame { padding:0; background:transparent; backdrop-filter:none; }
.bp-expression-triptych { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; align-items:start; }
.bp-expression-cell { display:block; min-width:0; }
.bp-expression-cell img { width:100%; height:auto; aspect-ratio:900 / 1120; object-fit:cover; }
.bp-expression-cell i { display:block; margin-top:9px; color:rgba(255,255,255,.82); font:600 12px/1.2 var(--dv-font); font-style:normal; letter-spacing:.02em; }
.bp-emotion-story .bp-plaque { position:static; margin-top:18px; padding:0; min-width:0; background:transparent; color:#fff; }
.bp-emotion-story .bp-plaque b { font-size:16px; line-height:1.5; }
.bp-emotion-story .bp-plaque i { color:rgba(255,255,255,.75); font-size:12px; line-height:1.6; letter-spacing:0; }
@media(max-width:767px) {
 .bp-s23 .bp-emotion-story { left:108vw; width:82vw; }
 .bp-emotion-story__copy { top:10vh; width:82vw; }
 .bp-emotion-story__copy h3 { font-size:32px; margin-bottom:12px; }
 .bp-emotion-story__copy > p:last-child { font-size:14px; line-height:1.5; }
 .bp-s23 .bp-emotion-story .bp-item { top:42vh; left:0; width:82vw; }
 .bp-expression-triptych { gap:8px; }
 .bp-emotion-story .bp-click { display:none; }
}
/* r44: compact pencil scene, with emotion labels above the drawing. */
.bp-s23 .bp-head { left:8vw; max-width:29vw; }
.bp-s23 .bp-theater--video { left:40vw; top:14vh; width:54vw; height:auto; display:flex; flex-direction:column; gap:14px; }
.bp-s23 .bp-theater__win { order:1; border:0; background:transparent; aspect-ratio:1120 / 734; }
.bp-s23 .bp-emo { position:absolute; width:102.857143%; height:auto; max-width:none; left:-1.428571%; top:-2.452316%; object-fit:initial; clip-path:polygon(1.4% 2.2%,51.3% 2%,98.6% 2.2%,98.6% 86.8%,1.4% 86.8%); }
.bp-s23 .bp-beats { order:0; margin:0; }
.bp-s23 .bp-beat { border-radius:999px; padding:9px 5px; }
.bp-s23 .bp-theater__cap { order:-2; margin:0; opacity:.7; }
.bp-emo-caption { order:-3; margin:0; color:#fff; font:16px/1.5 var(--dv-font); min-height:1.5em; }
@media(max-width:767px) {
 .bp-s23 .bp-head { left:6vw; top:10vh; max-width:88vw; }
 .bp-s23 .bp-read--inline { display:none; }
 .bp-s23 .bp-theater--video { left:6vw; top:40vh; width:88vw; gap:8px; }
 .bp-s23 .bp-beats { flex-wrap:nowrap; gap:4px; }
 .bp-s23 .bp-beat { font-size:9px; line-height:12px; }
 .bp-emo-caption { font-size:13px; }
}
/* r43: nav above chapter masks, below loading/dialog overlays. */
body.c2-palmer-page #nc1Nav { position:fixed; z-index:900 !important; isolation:isolate; opacity:1; }
body.c2-palmer-page #nc1Nav .nc1-nav-links > a,
body.c2-palmer-page #nc1Nav .nc1-dd-trigger { opacity:1; }
.av-chapter .av-curtain__hold { height:80vh; }
/* r42: one composed viewport; no empty half-screen or character parallax. */
.bp-s1 .bp-hero { width:100vw; }
.bp-s1 .bp-hero__copy { left:11vw; top:56%; translate:0 -50%; max-width:35vw; }
.bp-s1 .bp-hero__stage { left:53vw; right:auto; width:42vw; height:70vh; top:50%; translate:0 -50%; }
.bp-s1 .av-drop__zone,
.bp-s1 .av-drop__card { width:min(46%,300px); }
.av-drop__runner { position:absolute; z-index:2; left:50%; top:50%; width:clamp(150px,18vw,210px); aspect-ratio:1; translate:-50% -50%; overflow:hidden; opacity:0; pointer-events:none; }
.av-drop__runner img { display:block; width:1200%; max-width:none; height:100%; transform:translateX(0); }
.av-drop[data-phase="run"] .av-drop__runner { opacity:1; }
.av-drop[data-phase="run"] .av-drop__runner img { animation:av-run-strip .84s steps(11,end) infinite; }
.av-drop[data-phase="run"] .av-lf { visibility:hidden!important; }
.av-drop[data-phase="alive"] .av-drop__runner { opacity:0; }
@keyframes av-run-strip { to { transform:translateX(-91.6667%); } }
.bp-s1 .bp-hero__copy .bp-h { max-width:8.5em; }
.bp-s1 .bp-hero__copy .av-h__ghost,
.bp-s1 .bp-hero__copy .av-h__step,
.bp-s1 .bp-hero__copy .bp-eyebrow { display:none!important; }
.bp-s1 .av-drop__zone span { position:absolute; bottom:-38px; width:100%; text-align:center; color:white; font-size:15px; white-space:nowrap; }
.bp-s1 .av-drop__card { overflow:visible; }
.bp-s1 .av-drop__card img { border-radius:16px; }
.bp-s1 .av-drop__card::after { content:'↖  lumi.vrm'; position:absolute; bottom:10px; right:-70px; padding:8px 12px; background:white; color:#706cff; border-radius:10px; font-size:14px; box-shadow:0 5px 18px #32245c22; }
.bp-s1-cue { position:absolute; bottom:8vh; left:13vw; color:white; font-size:16px; }
.bp-s1-cue[hidden] { display:none; }
@media (max-width:767px) {
  .bp-s1 .bp-hero__copy { left:7vw; max-width:86vw; top:12vh; translate:none; }
  .bp-s1 .bp-hero__stage { left:25vw; width:70vw; height:36vh; top:auto; bottom:12vh; translate:none; }
  .bp-s1 .bp-read--inline { display:none; }
  .bp-s1-cue { left:7vw; bottom:6vh; }
}

/* ===== r53 (lill 0907) ==========================================================
   她：Real-time response 那一族白卡，标题现在一半墨色一半紫，紫的「开头挺奇怪」→
   四张卡（How long before the first word / What the same line costs /
   Voice cloning / Same voice, another language）标题统一走次级灰；
   白卡上的说明句同一套灰阶；紫只留给数据行里 US / 我们那一行的强调。
   灰是实色，不用半透明叠色。 */
.dv-board { --dv-g-title:#5e5c6e; --dv-g-body:#6c6a7c; }

/* 白卡标题 —— 四张一致 */
.dv-plate.dv-charts.is-pro .dv-chart-t,
.dv-board .dv-charts.is-pro .dv-chart-t,
.dv-board .dv-plate .dv-chart-t,
.o6 .dv-board .dv-plate .vp-title,
.nf .dv-plate h3.vp-title,
.dv-board .dv-plate .vp-title,
.vp-title { color:var(--dv-g-title,#5e5c6e); }
/* 四张卡标题同一档字（原来 meter 17/600、A/B 卡 18/700） */
.o6 .dv-board .dv-plate .vp-title,
.nf .dv-plate h3.vp-title,
.dv-board .dv-plate .dv-chart-t,
.dv-plate.dv-charts.is-pro .dv-chart-t,
.dv-board .dv-charts.is-pro .dv-chart-t { font-size:17px; line-height:24px; font-weight:600; letter-spacing:-.01em; text-align:center; }

/* 白卡上的说明句 / 图注 */
.o6 .dv-board .dv-breathfig .dv-breath-note,
.dv-board .dv-plate .dv-breath-note,
.dv-board .dv-plate figcaption,
.dv-board .local-flow figcaption { color:var(--dv-g-body,#6c6a7c); }

/* local-flow 白板：步骤小标题走标题灰，说明句走正文灰（真正生效的那条在 voice-surface-r52.css） */
.local-flow h3 { color:var(--dv-g-title,#5e5c6e); }
.local-flow p { color:var(--dv-g-body,#6c6a7c); }
/* 卡片永不加外描边（站规）+ 图标不套色底 tile（站规） */
.local-flow { border:0; }
.local-flow__icon { background:none; width:auto; height:auto; margin:0 auto 2px; border-radius:0; color:var(--dv-pur,#7180ff); }
.local-flow__icon svg { width:30px; height:30px; }
.local-flow__steps:before { top:16px; }

/* ===== r53 · 4｜Hero 展开后那层大圆角毛玻璃撤 ==================================
   .av-cur__glass 只留作 --av-glass scrub 的载体（眼睛淡出仍跟它走），
   材质 / 内缩 / 圆角全去掉 → 标题和两颗按钮直接落在紫地上。 */
.av-chapter .av-cur__glass,
.av-chapter.is-static .av-cur__glass {
  background:none; -webkit-backdrop-filter:none; backdrop-filter:none;
  inset:0; border-radius:0;
}

/* ===== r53 · 5｜「It speaks and reacts」三行收成一句，浅紫块底撤 ================= */
.bp-s23 .bp-read--inline,
.bp-read--inline { background:none; -webkit-backdrop-filter:none; backdrop-filter:none; padding:0; border-radius:0; max-width:30rem; margin-top:18px; }
.bp-read--inline .bp-read__t { line-height:1.7; color:rgba(255,255,255,.88); font-weight:500; }
@media (max-width:767px) { .bp-read--inline { margin-top:12px; padding:0; } }

/* ===== r53 · 6｜「When you speak, she listens.」先只做 copy ======================
   配图 / Try interrupting / Replay 全撤（DOM 已删），这一格只剩居中的 title + 一句话。 */
.bp-s23 .lumi-listen { left:190vw; top:50%; translate:0 -50%; width:54vw; display:block; text-align:center; color:#fff; font-family:var(--dv-font); }
.lumi-listen h3 { margin:0 0 18px; font-size:clamp(30px,3.1vw,56px); line-height:1.06; letter-spacing:-.035em; }
.lumi-listen > p { margin:0 auto; max-width:34em; font-size:clamp(15px,1.2vw,19px); line-height:1.7; color:rgba(255,255,255,.85); }
.lumi-listen__eyebrow { margin:0 0 20px; font-size:11px; letter-spacing:.14em; color:rgba(255,255,255,.72); }
@media(max-width:767px) { .bp-s23 .lumi-listen { left:190vw; top:50%; width:78vw; } .lumi-listen h3 { font-size:30px; } }


/* ======================================================================
   0908 lill · Voice API：情绪矩阵（7 声 × 4 情绪，Waffle TTS 真输出）+ 难句层 + It breathes 重画
   严格扁平：无阴影 / 无渐变 / 无外描边（虚线分隔是唯一例外）；活跃 = 主紫，静态 = #6B7280 灰
   ====================================================================== */
.o6 .dv-board .o9-tile .dv-plate.em-fig { display:grid; gap:24px; padding:28px 32px 24px; }
/* 舞台：当前 take 的台词气泡（情绪 tag + 日文句 + 播放键）+ 大线束 */
.em-stage { display:grid; gap:16px; }
.o6 .dv-board .em-bubble { max-width:none; width:100%; padding:20px 20px 20px 26px; gap:20px; border-radius:20px; background:var(--dv-lav2); }
.o6 .nf .em-fig p.dv-line.em-line { margin:0; color:var(--dv-ink); font-size:clamp(17px,1.45vw,22px); line-height:1.55; font-weight:600; letter-spacing:0; }
.o6 .nf .em-fig p.dv-line.em-line span { color:inherit; font-size:inherit; }
.em-fig .em-ja { font-family:"Noto Sans JP",var(--dv-font); }
.o6 .dv-board .em-fig .dv-line-tag { margin-right:8px; padding:3px 9px; border-radius:8px; background:#fff; color:var(--dv-pur); font:600 clamp(13px,1.05vw,16px)/1.35 var(--dv-font); vertical-align:baseline; }
.o6 .dv-board .em-fig .tg-play { width:52px; height:52px; background:var(--dv-pur); color:#fff; }
.em-fig .em-wave { --wl-rgb:201,194,255; --wl-rgb2:70,83,198; width:100%; }
#lumiVoiceDemo #lumiRefWave {
  --wl-rgb:145,145,157;
  --wl-rgb2:145,145,157;
  width:100%;
}
#lumiVoiceDemo .fl-ref .em-ja { color:#92919f; }
#lumiVoiceDemo #lumiOutWave {
  --wl-rgb:201,194,255;
  --wl-rgb2:70,83,198;
  width:100%;
}
.em-fig .em-wave .dv-wave-lg { height:104px; clip-path:none; }
/* 难句层：矩阵下的折叠层，不抢戏；虚线分隔 */
.em-hard { display:grid; gap:18px; padding-top:18px; border-top:1px dashed var(--dv-pur40); }
.o6 .dv-board .em-hard-toggle { display:flex; align-items:center; justify-content:space-between; gap:16px; width:100%; margin:0; padding:4px 0; border:0; border-radius:12px; background:none; color:var(--dv-ink); text-align:left; cursor:pointer; }
.em-hard-h { display:flex; flex-direction:column; gap:3px; }
.em-hard-h b { font:600 17px/22px var(--dv-font); letter-spacing:-.01em; transition:color .18s ease; }
.em-hard-h small { font-size:13px; line-height:18px; color:var(--dv-ink6); }
.o6 .dv-board .em-hard-toggle:hover .em-hard-h b, .em-hard.is-open .em-hard-h b { color:var(--dv-pur); }
.o6 .dv-board .em-hard-toggle:focus-visible { outline:2px solid var(--dv-pur); outline-offset:2px; }
.em-hard-chev { flex:none; display:grid; place-items:center; width:28px; height:28px; color:var(--dv-ink6); transition:transform .28s var(--dv-ease), color .18s ease; }
.em-hard-chev svg { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.75; stroke-linecap:round; stroke-linejoin:round; }
.em-hard.is-open .em-hard-chev { transform:rotate(180deg); color:var(--dv-pur); }
.em-hard-body { display:grid; gap:14px; }
.em-hard-body[hidden] { display:none; }
.em-hard-tabs { display:flex; flex-wrap:wrap; gap:8px; }
.o6 .dv-board .em-hard-tabs .dv-tag { min-height:36px; padding:0 13px; border-radius:10px; background:var(--dv-lav2); color:var(--dv-ink6); font:600 13px/1 var(--dv-font); letter-spacing:0; }
.o6 .dv-board .em-hard-tabs .dv-tag:hover { background:var(--dv-lav); transform:none; }
.o6 .dv-board .em-hard-tabs .dv-tag.is-on { background:var(--dv-lav); color:var(--dv-pur); }
.o6 .dv-board .em-hard-tabs .dv-tag:focus-visible { outline:2px solid var(--dv-pur); outline-offset:2px; }
.o6 .nf .em-fig p.dv-line.em-line .em-hard-text { font-size:clamp(16px,1.3vw,20px); }
.em-hard-text b { font-weight:700; color:var(--dv-pur); text-decoration:underline dotted; text-decoration-color:var(--dv-pur40); text-underline-offset:5px; }
.em-hard-foot { display:flex; flex-wrap:wrap; justify-content:space-between; gap:6px 16px; padding:0 4px; font:500 12px/16px var(--dv-font); letter-spacing:0; text-transform:none; color:var(--dv-ink45); }
.em-hard-foot .em-hard-note { font-family:"Noto Sans JP",var(--dv-font); }
.em-hard-foot b { font-weight:600; color:var(--dv-ink6); }
.em-hard-note { display:none; } .em-hard-note.is-on { display:inline; }
.em-fig .em-legal { margin:0; font-size:12px; line-height:18px; color:var(--dv-ink45); }
@media (max-width:767px) {
  .o6 .dv-board .o9-tile .dv-plate.em-fig { gap:18px; padding:18px 14px 16px; }
  .o6 .dv-board .em-bubble { grid-template-columns:minmax(0,1fr); padding:14px 14px 12px 16px; gap:10px; border-radius:16px; }
  .o6 .dv-board .em-fig .tg-play { width:44px; height:44px; justify-self:end; }
  .em-fig .em-wave .dv-wave-lg { height:72px; }
  .em-hard { gap:14px; padding-top:14px; }
  .em-hard-h b { font-size:15px; line-height:20px; } .em-hard-h small { font-size:12px; line-height:16px; }
  .o6 .dv-board .em-hard-tabs .dv-tag { min-height:32px; padding:0 11px; font-size:12px; }
}
/* 0908 r4 · It breathes 版式：两排并排（上 AniWaffle 48 kHz / 下别人的引擎 8 kHz）× 四列情绪，每张图自己的播放键；板比邻块宽一档，图更高；
   纵轴 24 / 16 / 8 / 4 / 0 只在每排第一张（线性频率绝对定位，4 kHz 在 1/6 高）；420 降成一列，每个情绪上下两张对照 */
/* 0908 她：章内标题统一用高频块那条的字号（原本它因为长才降一档）：提成 #snVoiceChapter 里 dv-h2 的默认，特例撤 */
.o6 .dv-board #snVoiceChapter .dv-sec .dv-head h2.dv-h2 { font-size:clamp(28px,3vw,40px); line-height:1.18; max-width:22em; letter-spacing:-.02em; font-weight:700; }
/* 0910 lill · 板不再比邻块宽一档（那是四列时代的需要）：#snBreath 的 .dv-in 走 z-field 默认内距，白板和上面 Lumi Voice 的板同宽 */
.o6 .dv-board .o9-tile .dv-plate.dv-breathfig.bf4 { display:grid; gap:20px; padding:24px 28px 26px; }
/* 第 2 列装着轴（36 + 8）+ 图：列宽 = 图宽 + 44，其余三列 = 图宽，四张图一样宽 */
.bf4-table { --bf4-head:150px; --bf4-gap:14px; --bf4-ax:44px; display:grid; grid-template-columns:var(--bf4-head) calc((100% - var(--bf4-head) - 4 * var(--bf4-gap) - var(--bf4-ax)) / 4 + var(--bf4-ax)) repeat(3,minmax(0,1fr)); gap:12px var(--bf4-gap); align-items:stretch; }
/* 0910 lill · Whisper 对照（上 48 kHz / 下 8 kHz）的版式整块搬到文件尾「0910 · It breathes 对照版式」，这里不再定义 */
.bf4-colhead, .bf4-row { display:contents; }
.bf4-colhead b { display:block; text-align:center; font:600 14px/18px var(--dv-font); color:var(--dv-ink); padding-bottom:2px; }
html[data-lang="ja"] .bf4-colhead b { font-family:"Noto Sans JP",var(--dv-font); }
.bf4-rowhead { display:flex; flex-direction:column; justify-content:center; gap:4px; padding:0 10px 0 0; min-width:0; }
.bf4-rowlab { font:600 14px/18px var(--dv-font); color:var(--dv-ink); }
.bf4-row[data-band="full"] .bf4-rowlab { color:var(--dv-pur); }
.bf4-rownote { font-size:11px; line-height:14px; color:var(--dv-ink45); }
.bf4-plotlab { display:none; }
.bf4-rowlab, .bf4-rownote, .bf4-plotlab { letter-spacing:0; text-transform:none; }
html[data-lang="ja"] .bf4-rowlab, html[data-lang="ja"] .bf4-rownote, html[data-lang="ja"] .bf4-plotlab { font-family:"Noto Sans JP",var(--dv-font); }
.bf4-spec { display:grid; grid-template-columns:minmax(0,1fr); align-items:stretch; }
.bf4-spec.has-axis { grid-template-columns:auto minmax(0,1fr); gap:0 8px; }
.bf4-axis { position:relative; width:36px; font:500 10px/12px var(--dv-font); letter-spacing:0; text-transform:none; color:var(--dv-ink45); text-align:right; }
.bf4-axis span { position:absolute; right:0; transform:translateY(-50%); white-space:nowrap; }
.bf4-axis span:nth-child(1) { top:0; transform:none; }
.bf4-axis span:nth-child(2) { top:33.333%; }
.bf4-axis span:nth-child(3) { top:66.667%; }
.bf4-axis span:nth-child(4) { top:83.333%; }
.bf4-axis span:nth-child(5) { top:100%; transform:translateY(-100%); }
.bf4-plot { position:relative; aspect-ratio:10 / 9; border-radius:12px; background:var(--dv-lav2); overflow:hidden; }
.bf4-plot canvas { position:absolute; inset:0; display:block; width:100%; height:100%; clip-path:inset(0 100% 0 0); transition:clip-path 1s var(--dv-ease) calc(var(--i,0) * .12s); }
.bf4-row[data-band="low"] .bf4-plot canvas { transition-delay:calc(.35s + var(--i,0) * .12s); }
.bf4.is-s1 .bf4-plot canvas { clip-path:inset(0 0 0 0); }
.bf4-cut { position:absolute; left:0; right:0; top:66.667%; height:0; border-top:1.5px dashed var(--dv-pur); transform:scaleX(0); transform-origin:0 50%; transition:transform .8s var(--dv-ease) calc(.3s + var(--i,0) * .1s); }
.bf4.is-s2 .bf4-cut { transform:scaleX(1); }
.bf4-plot .dv-spec-head { position:absolute; top:0; bottom:0; left:var(--p,0%); width:1.5px; margin-left:-.75px; background:var(--dv-pur); opacity:0; transition:opacity .2s ease; pointer-events:none; }
.bf4-spec.is-live .dv-spec-head { opacity:1; }
.o6 .dv-board .bf4 .bf4-play { position:absolute; right:8px; top:8px; width:32px; height:32px; background:#fff; color:var(--dv-pur); }
.o6 .dv-board .bf4 .bf4-play i { border-width:6px 0 6px 10px; margin-left:2px; }
.o6 .dv-board .bf4 .bf4-play.is-playing i { width:10px; height:12px; margin-left:0; }
.o6 .dv-board .bf4 .bf4-play:hover { background:var(--dv-lav); transform:scale(1.06); }
.o6 .dv-board .bf4 .bf4-play.is-playing { background:var(--dv-pur); color:#fff; }
.bf4-credit { margin:-2px 0 0; text-align:center; font-size:12px; line-height:16px; color:var(--dv-ink45); }
@media (max-width:991px) {
  .bf4-table { --bf4-head:110px; --bf4-gap:8px; --bf4-ax:38px; gap:10px var(--bf4-gap); }
  .bf4-rowlab { font-size:13px; line-height:16px; } .bf4-rownote { font-size:10px; }
  .bf4-colhead b { font-size:13px; }
  .bf4-axis { width:30px; font-size:9px; }
}
@media (max-width:767px) {
  .o6 .dv-board .o9-tile .dv-plate.dv-breathfig.bf4 { gap:16px; padding:18px 14px 16px; }
  /* 一列：每个情绪一组，组内上 48 kHz / 下 8 kHz；行头变成每张图左上角的小标 */
  .bf4-table { display:grid; grid-template-columns:minmax(0,1fr); gap:14px; }
  .bf4-colhead { display:none; }
  .bf4-row { display:contents; }
  .bf4-rowhead { display:none; }
  .bf4-spec { grid-template-columns:auto minmax(0,1fr); gap:0 8px; }
  .bf4-spec::before { content:attr(data-emo); grid-column:1 / 3; margin-bottom:6px; font:600 13px/16px var(--dv-font); color:var(--dv-ink); text-transform:capitalize; }
  .bf4-spec:not(.has-axis)::before { margin-left:-38px; }   /* 组名和 Neutral 那组左对齐 */
  .bf4-row[data-band="low"] .bf4-spec::before { content:""; margin:0; display:none; }
  .bf4-plot { aspect-ratio:16 / 9; }
  .bf4-plotlab { display:block; position:absolute; left:10px; top:9px; z-index:1; font:600 11px/14px var(--dv-font); color:var(--dv-pur); }
  .bf4-row[data-band="low"] .bf4-plotlab { color:var(--dv-ink6); }
  .bf4-axis { width:30px; font-size:9px; }
  .o6 .dv-board .bf4 .bf4-play { width:30px; height:30px; right:6px; top:6px; }
  /* 窄窗顺序：每个情绪的 48k 紧接它的 8k */
  .bf4-row[data-band="full"] .bf4-spec[data-emo="neutral"] { order:1; } .bf4-row[data-band="low"] .bf4-spec[data-emo="neutral"] { order:2; }
  .bf4-row[data-band="full"] .bf4-spec[data-emo="angry"] { order:3; } .bf4-row[data-band="low"] .bf4-spec[data-emo="angry"] { order:4; }
  .bf4-row[data-band="full"] .bf4-spec[data-emo="shy"] { order:5; } .bf4-row[data-band="low"] .bf4-spec[data-emo="shy"] { order:6; }
  .bf4-row[data-band="full"] .bf4-spec[data-emo="whisper"] { order:7; } .bf4-row[data-band="low"] .bf4-spec[data-emo="whisper"] { order:8; }
  .bf4-spec:not(.has-axis) { grid-template-columns:minmax(0,1fr); padding-left:38px; }   /* 没轴的图：单列 + 左缩进，和 Neutral 那张左缘对齐（30px 轴 + 8px 间距） */
}
@media (prefers-reduced-motion:reduce) { .bf4-plot canvas, .bf4-cut { transition:none; } .bf4-plot canvas { clip-path:none; } .bf4-cut { transform:none; } .em-fig.is-hi { animation:none; } }
/* 链接跳过来时矩阵板闪一下浅紫 */
.o6 .dv-board .o9-tile .dv-plate.em-fig.is-hi { animation:em-hi 1.6s var(--dv-ease); }
@keyframes em-hi { 0%, 100% { background:#fff; } 25% { background:var(--dv-lav2); } }
@media (max-width:991px) { .bf4-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:767px) {
  .o6 .dv-board .o9-tile .dv-plate.dv-breathfig.bf4 { gap:16px; padding:18px 14px 16px; }
  .bf4-grid { gap:14px 10px; }
  .bf4-axis { width:30px; font-size:9px; }
  .bf4-emo { font-size:13px; }
  .o6 .dv-board .dv-seg-btn { padding:0 10px; min-height:32px; font-size:12px; }
  .o6 .dv-board .bf4 .bf4-play { width:32px; height:32px; }
}
@media (prefers-reduced-motion: reduce) { .em-hard-chev, .dv-spec-head, .fl-chip { transition:none; } }

/* 0908 r3 · 样本块改成流程「参考 → 生成」：两排 chip（声 / 参考的情绪，选中主紫），舞台左 = 参考（灰轮廓，不可播）→ 流向 + mech 句 → 右 = 新台词（线束 + 播放键） */
.fl-pick { display:grid; gap:10px; }
.fl-guide { margin:0; font:600 12px/16px var(--dv-font); color:var(--dv-ink45); }
.fl-chips { display:flex; flex-wrap:wrap; gap:8px; }
.o6 .dv-board .fl-chip { display:flex; flex-direction:column; align-items:flex-start; gap:1px; margin:0; padding:7px 14px; min-height:44px; border:0; border-radius:12px; background:var(--dv-lav2); color:var(--dv-ink); text-align:left; cursor:pointer; transition:background .18s ease, color .18s ease, transform .2s var(--dv-ease); }
.o6 .dv-board .fl-chip b { font:600 14px/18px var(--dv-font); letter-spacing:-.005em; }
.o6 .dv-board .fl-chip small { font-size:11px; line-height:14px; color:var(--dv-ink45); font-family:"Noto Sans JP",var(--dv-font); transition:color .18s ease; }
.o6 .dv-board .fl-chip:hover { background:var(--dv-lav); }
.o6 .dv-board .fl-chip:active { transform:scale(.97); }
.o6 .dv-board .fl-chip.is-on, .o6 .dv-board .fl-chip.is-on:hover { background:var(--dv-pur); color:#fff; }
.o6 .dv-board .fl-chip.is-on small { color:rgba(255,255,255,.78); }
.o6 .dv-board .fl-chip:focus-visible { outline:2px solid var(--dv-pur); outline-offset:2px; }
.fl-slot { display:grid; gap:12px; align-content:start; padding:18px 20px 16px; border-radius:18px; background:var(--dv-lav2); }
.fl-slot-top { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:36px; }
.fl-lab { font:600 13px/18px var(--dv-font); color:var(--dv-ink6); letter-spacing:0; text-transform:none; }
.fl-out .fl-lab { color:var(--dv-pur); }
.fl-note { font-size:11px; line-height:14px; color:var(--dv-ink45); }
.o6 .nf .em-fig p.fl-line { margin:0; font:600 clamp(16px,1.3vw,20px)/1.55 var(--dv-font); color:var(--dv-ink); }
.em-fig .fl-out .em-wave .dv-wave-lg { height:88px; }
.o6 .dv-board .em-fig .fl-play { width:44px; height:44px; background:var(--dv-pur); color:#fff; }
.o6 .dv-board .em-fig .fl-play:hover { background:#5f6ff0; }
/* 0908 r3d · 她：中间栏不合标准 → 连线 / 箭头 / 大键撤；点 chip 即播；chip 收紧成小 chip（内容宽、文字居中、EN 名 + JA 小字上下居中），角色行居中、情绪四个竖排居中；mech 句在 chip 下小字 */
@media (min-width:992px) { .o6 .dv-board #snVoicePair.dv-sec.dv-z-field > .dv-in { padding-left:32px; padding-right:32px; } }
.fl-chips-voice { display:flex; flex-wrap:wrap; justify-content:center; gap:6px; }
.o6 .dv-board .em-fig .fl-chip { flex-direction:column; align-items:center; justify-content:center; gap:1px; width:auto; min-width:0; min-height:0; height:auto; padding:6px 12px 5px; border-radius:10px; text-align:center; }
.o6 .dv-board .em-fig .fl-chip b { font:600 13px/16px var(--dv-font); white-space:nowrap; }
.o6 .dv-board .em-fig .fl-chip small { font-size:10px; line-height:13px; white-space:nowrap; }
.o6 .dv-board .em-fig .fl-pick { justify-items:center; }
.o6 .dv-board .em-fig .fl-guide { text-align:center; }
.fl2-stage { display:grid; grid-template-columns:minmax(0,1fr) 200px minmax(0,1fr); gap:0 20px; align-items:stretch; }
.fl2-stage .fl-slot { min-height:340px; grid-template-rows:auto auto minmax(0,1fr); padding:20px 22px 18px; }
.fl2-stage .fl-ref { grid-template-rows:auto minmax(0,1fr) auto; }
.fl2-stage .fl-refwave { --wl-rgb:107,114,128; --wl-rgb2:107,114,128; width:100%; height:100%; min-height:200px; }
.fl2-stage .fl-refwave canvas { display:block; }
.fl2-stage .fl-out .em-wave { align-self:end; }
.fl2-stage .fl-out .em-wave .dv-wave-lg { height:150px; }
.o6 .nf .em-fig p.dv-line.em-line, .o6 .nf .em-fig p.fl-line { font-size:clamp(18px,1.5vw,23px); line-height:1.55; }
.o6 .dv-board .fl-slot-top { min-height:36px; }
.o6 .dv-board .em-fig .fl-refplay { width:36px; height:36px; background:#fff; color:var(--dv-pur); }
.o6 .dv-board .em-fig .fl-refplay:hover { background:var(--dv-lav); }
.o6 .dv-board .em-fig .fl-refplay.is-playing { background:var(--dv-pur); color:#fff; }
.o6 .dv-board .em-fig .fl-refplay[hidden] { display:none; }
.o6 .dv-board .em-fig .fl-out .fl-play { width:36px; height:36px; background:var(--dv-pur); color:#fff; }
.o6 .dv-board .em-fig .fl-out .fl-play:hover { background:#5f6ff0; }
.fl2-mid { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; min-width:0; padding:8px 0; }
.fl2-mid .fl-guide { text-align:center; }
.fl2-mid .fl-chips-emo { display:flex; flex-direction:column; align-items:center; gap:6px; }
.o6 .dv-board .fl2-mid .fl-chips-emo .fl-chip { min-width:104px; }
.fl2-mid .fl-mech { margin:6px 0 0; max-width:176px; text-align:center; font:500 12px/16px var(--dv-font); color:var(--dv-ink45); }
@media (max-width:991px) {
  .fl2-stage { grid-template-columns:minmax(0,1fr); gap:12px; }
  .fl2-stage .fl-slot { min-height:0; }
  .fl2-stage .fl-refwave { min-height:120px; height:120px; }
  .fl2-stage .fl-out .em-wave .dv-wave-lg { height:96px; }
  .fl2-mid .fl-chips-emo { flex-direction:row; flex-wrap:wrap; justify-content:center; }
  .o6 .dv-board .fl2-mid .fl-chips-emo .fl-chip { min-width:0; }
}
@media (max-width:767px) {
  .o6 .dv-board .fl-chip { padding:6px 12px; min-height:40px; border-radius:10px; }
  .o6 .dv-board .fl-chip b { font-size:13px; line-height:16px; } .o6 .dv-board .fl-chip small { font-size:10px; }
  .o6 .dv-board .fl-chips-emo .fl-chip { min-height:36px; padding:0 12px; }
  .fl-slot { padding:14px 14px 12px; border-radius:14px; }
  .fl-refwave { height:64px; } .em-fig .fl-out .em-wave .dv-wave-lg { height:64px; }
  .o6 .dv-board .em-fig .fl-play { width:40px; height:40px; }
}

html[data-lang="ja"] .o6 .dv-board #snVoiceChapter .dv-sec .dv-head h2.dv-h2 { max-width:none; font-size:clamp(26px,2.6vw,36px); line-height:1.3; }
.o6 .dv-board .dv-breathfig .dv-breath-note { max-width:64em; }
.o6 .dv-board .dv-breathfig .dv-breath-link { display:inline; color:var(--dv-pur); font-weight:600; text-decoration:underline dotted; text-decoration-color:var(--dv-pur40); text-underline-offset:4px; transition:text-decoration-color .18s ease; }
.o6 .dv-board .dv-breathfig .dv-breath-link:hover { text-decoration-color:var(--dv-pur); }
.o6 .dv-board .dv-breathfig .dv-breath-link::after { content:"\00a0\2197"; }

/* 0908 r4b · 她：板内文字颜色和别的板不一致 → 板内标签统一走卡标题灰 --dv-g-title（= Real-time response 两张卡标题 .dv-chart-t 的那个灰），小字走 --dv-g-body；
   行头 AniWaffle 主紫 / An 8 kHz engine 不动；播放中的 live 态仍主紫 */
.o6 .dv-board .dv-plate .bf4-colhead b, .o6 .dv-board .dv-plate .bf4-credit,
.o6 .dv-board .dv-plate .fl-lab, .o6 .dv-board .dv-plate .fl-out .fl-lab, .o6 .dv-board .dv-plate .fl-guide,
.o6 .dv-board .dv-plate .em-hard-h b, .o6 .dv-board .dv-plate .vp-lab.vp-plain { color:var(--dv-g-title,#5e5c6e); }
.o6 .dv-board .dv-plate .fl-note, .o6 .dv-board .dv-plate .fl-mech, .o6 .dv-board .dv-plate .em-hard-h small, .o6 .dv-board .dv-plate .bf4-rownote, .o6 .dv-board .dv-plate .em-hard-foot { color:var(--dv-g-body,#6c6a7c); }
.o6 .dv-board .dv-plate .vp-step.is-live .vp-lab.vp-plain, .o6 .dv-board .em-hard.is-open .em-hard-h b, .o6 .dv-board .em-hard-toggle:hover .em-hard-h b { color:var(--dv-pur); }


/* 0908 lill · Voice cloning 卡：Reference / Cloned 之间那条通栏发丝线撤（旧规则 .vp-link > i 把 chevron 本身拉成了 1px 通栏线），只留 ↓ chevron；
   chevron 缩一档、线宽 1.5、灰 --dv-g-body；上下留白相等（波形到 chevron 的距离和 chevron 到下一行标签一致） */
.o6 .dv-board .vp-flow .vp-link { display:grid; place-items:center; gap:0; padding:10px 0; }
.o6 .dv-board .vp-flow .vp-link > i.vp-chev { flex:none; display:grid; place-items:center; width:20px; height:20px; background:none; }
.o6 .dv-board .vp-flow .vp-chev::before, .o6 .dv-board .vp-flow .vp-chev::after { content:none; }
.o6 .dv-board .vp-flow .vp-chev svg { display:block; width:16px; height:16px; fill:none; stroke:var(--dv-g-body,#6c6a7c); stroke-width:1.5; }


/* ======================================================================
   0910 lill · It breathes · Whisper 对照版式重做（她：左右空隙太大、上下太挤、对比感不对；断点重做；和插图/邻板连续）
   节奏借上面 Lumi Voice 板（.em-fig）：板内距 28/32/24、gap 24、行头字 17/22 + 13/18、图圆角 16、虚线分隔 --dv-pur40。
   两张图同宽同高严格对齐，行头左栏顶对齐；ours 行主紫 + 4 kHz 线主紫，8 kHz 行标题灰 + 线静态灰 + 图底更淡（读成「被削掉」）。
   断点：≥1200 行头 220 / 图 240 → 992 行头 180 / 图 216 → 768 行头 150 / 图 200 → ≤767 行头跳到图上方、图 176 → ≤480 图 150。
   触摸设备（pointer:coarse）播放键 44。
   ====================================================================== */
.o6 .dv-board .o9-tile .dv-plate.dv-breathfig.bf4 { gap:24px; padding:28px 32px 24px; }
#dvBreath .bf4-table.bf4-table--whisper { --bfw-head:220px; --bfw-gap:24px; --bfw-row:32px; --bfw-h:240px; display:grid; grid-template-columns:var(--bfw-head) minmax(0,1fr); column-gap:var(--bfw-gap); row-gap:var(--bfw-row); width:100%; max-width:none; margin:0; align-items:start; }
#dvBreath .bf4-table--whisper .bf4-colhead { display:contents; }
#dvBreath .bf4-table--whisper .bf4-colhead span { display:none; }
#dvBreath .bf4-table--whisper .bf4-colhead b { grid-column:2; margin:0 0 -16px; padding:0; text-align:left; font:600 13px/18px var(--dv-font); letter-spacing:0; color:var(--dv-g-title,#5e5c6e); }
#dvBreath .bf4-table--whisper .bf4-row { display:contents; }
#dvBreath .bf4-table--whisper .bf4-rowhead { grid-column:1; display:flex; flex-direction:column; justify-content:flex-start; gap:6px; padding:2px 0 0; min-width:0; }
#dvBreath .bf4-table--whisper .bf4-rowlab { font:600 17px/22px var(--dv-font); letter-spacing:-.01em; color:var(--dv-g-title,#5e5c6e); }
#dvBreath .bf4-table--whisper .bf4-row[data-band="full"] .bf4-rowlab { color:var(--dv-pur); }
#dvBreath .bf4-table--whisper .bf4-rownote { max-width:22em; font-size:13px; line-height:18px; }
#dvBreath .bf4-table--whisper .bf4-spec { grid-column:2; width:100%; }
#dvBreath .bf4-table--whisper .bf4-plot { width:100%; height:var(--bfw-h); max-height:none; aspect-ratio:auto; border-radius:16px; background:var(--dv-lav2); }
#dvBreath .bf4-table--whisper .bf4-row[data-band="low"] .bf4-plot { background:#f6f5fb; }
#dvBreath .bf4-table--whisper .bf4-row[data-band="low"] .bf4-cut { border-top-color:rgba(108,106,124,.55); }
#dvBreath .bf4-table--whisper .bf4-plotlab { display:none; }
.o6 .dv-board .bf4 .bf4-table--whisper .bf4-play { right:10px; top:10px; width:36px; height:36px; }
/* 脚注：虚线分隔后一行，说明句在左（正文），出处 + 台词在右（小字灰） */
#dvBreath .bf4-foot { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; gap:8px 32px; margin:0; padding-top:20px; border-top:1px dashed var(--dv-pur40); }
#dvBreath .bf4-foot .dv-breath-note { grid-column:1; max-width:34em; margin:0; text-align:left; }
#dvBreath .bf4-foot .bf4-credit { grid-column:2; max-width:none; margin:0; text-align:right; font-size:12px; line-height:18px; white-space:nowrap; }
#dvBreath .bf4-foot .bf4-credit br { display:inline; }
html[data-lang="ja"] #dvBreath .bf4-foot .bf4-credit { font-family:"Noto Sans JP",var(--dv-font); }
@media (max-width:1199px) {
  #dvBreath .bf4-table.bf4-table--whisper { --bfw-head:180px; --bfw-gap:20px; --bfw-row:28px; --bfw-h:216px; }
}
@media (max-width:991px) {
  #dvBreath .bf4-table.bf4-table--whisper { --bfw-head:150px; --bfw-gap:18px; --bfw-row:24px; --bfw-h:200px; }
  #dvBreath .bf4-table--whisper .bf4-rowlab { font-size:15px; line-height:20px; }
  #dvBreath .bf4-table--whisper .bf4-rownote { font-size:12px; line-height:16px; }
  #dvBreath .bf4-foot { gap:6px 24px; padding-top:16px; }
  #dvBreath .bf4-foot .bf4-credit { white-space:normal; max-width:18em; }
}
@media (max-width:767px) {
  .o6 .dv-board .o9-tile .dv-plate.dv-breathfig.bf4 { gap:18px; padding:18px 14px 16px; }
  /* 行头跳到图上方：标题 + 说明并成一行（放不下自动换行），两张图依然上下一对 */
  #dvBreath .bf4-table.bf4-table--whisper { --bfw-row:22px; --bfw-h:176px; grid-template-columns:minmax(0,1fr); row-gap:var(--bfw-row); }
  #dvBreath .bf4-table--whisper .bf4-colhead b { grid-column:1; margin:0 0 -12px; }
  #dvBreath .bf4-table--whisper .bf4-rowhead { grid-column:1; display:flex; flex-direction:row; flex-wrap:wrap; align-items:baseline; gap:2px 10px; padding:0 2px; margin-bottom:calc(10px - var(--bfw-row)); }
  #dvBreath .bf4-table--whisper .bf4-rownote { max-width:none; }
  #dvBreath .bf4-table--whisper .bf4-spec { grid-column:1; padding:0; }
  /* 通用 ≤767 规则给 whisper 的 spec 排了 order:7/8，会把两张图挤到两个行头之后；这里按「行头 → 图 → 行头 → 图」钉死 */
  #dvBreath .bf4-table--whisper .bf4-row[data-band="full"] .bf4-rowhead { order:1; } #dvBreath .bf4-table--whisper .bf4-row[data-band="full"] .bf4-spec { order:2; }
  #dvBreath .bf4-table--whisper .bf4-row[data-band="low"] .bf4-rowhead { order:3; } #dvBreath .bf4-table--whisper .bf4-row[data-band="low"] .bf4-spec { order:4; }
  #dvBreath .bf4-table--whisper .bf4-spec::before { content:none; }
  #dvBreath .bf4-table--whisper .bf4-plot { border-radius:14px; }
  #dvBreath .bf4-foot { grid-template-columns:minmax(0,1fr); gap:8px; padding-top:14px; }
  #dvBreath .bf4-foot .bf4-credit { grid-column:1; max-width:none; text-align:left; white-space:normal; }
}
@media (max-width:480px) {
  #dvBreath .bf4-table.bf4-table--whisper { --bfw-row:20px; --bfw-h:150px; }
  #dvBreath .bf4-table--whisper .bf4-rowlab { font-size:14px; line-height:18px; }
  #dvBreath .bf4-table--whisper .bf4-plot { border-radius:12px; }
  .o6 .dv-board .bf4 .bf4-table--whisper .bf4-play { right:8px; top:8px; }
}
/* 触摸：播放键给足 44 的可点面积（不看 innerWidth，看 pointer） */
@media (hover:none) and (pointer:coarse) {
  .o6 .dv-board .bf4 .bf4-table--whisper .bf4-play { width:44px; height:44px; }
  .o6 .dv-board .bf4 .bf4-table--whisper .bf4-play i { border-width:7px 0 7px 12px; margin-left:3px; }
  .o6 .dv-board .bf4 .bf4-table--whisper .bf4-play.is-playing i { width:12px; height:14px; margin-left:0; }
}

/* ======================================================================
   0910 lill · 手机端（≤767）八处：她的总原则 = 每屏上下堆叠不互盖、字小一档、全部居中、Lumi 是主角（脸要露全）。
   只动版式，JS / 文案不碰。逐项编号对应她 0910 的 8 张截图。
   ====================================================================== */
@media (max-width:767px) {
  /* ① hero：标题一词一行是 .nc1-line 45vw 那条；这里全宽 + 居中 + 字缩到 9.2vw；bridge 眉题（ANIWAFFLE / LUMI · 02）
        本来 25% 透明常驻、压在标题第 4/5 行之间 → 跟着 --bocchi-copy 才出现，且挪到段顶 */
  body.nc1 .bocchi-hero-track .nc1-bt-panel { align-items:center; padding:3vw 4vw 0; }
  body.nc1 .bocchi-hero-track .nc1-bt-title { justify-content:center; text-align:center; font-size:clamp(28px,9.2vw,40px); line-height:.92; letter-spacing:-.03em; }
  :lang(ja) body.nc1 .bocchi-hero-track .nc1-bt-title { font-size:clamp(24px,7.4vw,32px); }
  body.nc1 .bocchi-hero-track .nc1-bt-title .nc1-line, :lang(ja) body.nc1 .bocchi-hero-track .nc1-bt-title .nc1-line { width:100%; }
  .bocchi-chapter { display:none; }   /* 眉题在手机上撞 nav 字标，撤 */
  /* ①b 她：「Lumi 下面没有脚，所以要更大，裙子要被第一屏遮住」→ 人像放到 100vw（两只手正好都在屏内：左手指尖 x 3%、右手指尖 x 100%），
        改成绝对定位沉到首屏底、裙摆出血 6svh，首屏 .nc1-herowrap 裁掉出血；人物层由 js sync 照抄衣服层的 rect，跟着走 */
  /* 0910 她：「hero 的 Lumi 可以再大一些」→ 125vw；脸中线在图的 48.3%，left = 50vw - 48.3% × 125vw 让脸居中；指尖出屏，脸 + 蝴蝶结在屏内 */
  /* 0910 她再要：「更大一点，裙子藏得更多」→ 150vw、出血 13svh：裙摆大半藏进首屏底边，蝴蝶结仍在屏内；小鼠标挪到右下角空紫处 */
  /* 0910 iris · 一个尺寸变量管两张图：150vw 是她拍板的档，第二项是矮屏（横屏 / 短机）的高度上限。
     反解自「落定时颅顶要在 nav(68px) 下面、并且还留得出『接住』那一拍的 7svh 余量」：
     颅顶（钉住那一刻）= 65svh − 0.5595·heroW ≥ 68 + 8 + 7svh。
     390×844 / 430×932 / 480×1000 / 600×1000 上第一项小，视觉与她拍板的一模一样；
     375×667 只缩 0.8%；700×400 横屏才真正接管（她整个缩小居中，宁可小也要脸完整）。 */
  body.nc1 { --heroW:min(150vw, calc(104svh - 136px)); --fig-max-w:var(--heroW); --fig-h:calc(var(--heroW) / var(--fig-ar)); }
  .nc1-hero .bocchi-scroll-cue:not(.is-bridge) { left:auto; right:18px; bottom:18px; translate:0 0; }
  /* 裙摆出血从 -13svh 改成「她自己高度的 19.7%」—— 390×844 上两者相等，矮屏才不会被多切一截 */
  body.nc1 .bocchi-hero-track .nc1-hstage { position:absolute; grid-area:auto; left:calc(50vw - 0.483 * var(--heroW)); bottom:calc(-0.197 * var(--fig-h)); width:calc(var(--fig-h) * var(--fig-ar)); height:var(--fig-h); transform:none; justify-self:auto; align-self:auto; }
  .bocchi-hero-track .nc1-bento { position:static; }   /* 人像的定位基准要是 .nc1-hero（100svh），不是 bento（只有标题那么高） */
  .bocchi-hero-track .nc1-herowrap { overflow:hidden; }
  /* ①c 她：入场「应该从上往下」→ 手机上衣服层 + 人物层从视口顶上方落下来（translate 不碰 transform，js sync 写的是 transform）；
        标题两行 .45s / .55s 起、1s 走完，Lumi .25s 起、1.15s 落定，节奏对上。--hero-base 的硬切不动（只过渡 translate） */
  /* 手机上只留衣服层 .nc1-hstage（里面的 .nc1-hfill 是整张没拆层的原画，hero 的 overflow:hidden 就是裙摆那一刀）；
     人物层 .nc1-hperson 撤：它的位置由 js sync 抄衣服层 rect，落下动画中途抄到的是半路坐标，会出现两个 Lumi */
  body.nc1 .bocchi-hero-track .nc1-hperson { display:none; }
  .bocchi-hero-track .nc1-hstage { translate:0 -48svh; transition:translate 1.15s cubic-bezier(.22,1,.36,1) .6s; }   /* .6s 起：粉幕 .8s 掀完时她正落到一半，落定 1.75s ≈ 标题 1.55s */
  body.nc1.is-ready .bocchi-hero-track .nc1-hstage { translate:0 0; transition:translate 1.15s cubic-bezier(.22,1,.36,1) .6s; }
  /* 0910 她（img-25 定案）：「往下滑之后应该是这张」= 桌面滚动时那张带腿的挥手图 = 序列第 1 帧 lumi-sequence-01-v37.png（同一姿势、画了大腿 / 丝袜 / 鞋）；
     hero 的三层（-ears / -body / -dress）全是胯部裁切的无腿图。所以手机照桌面同一套：静止首屏 = 裁切挥手图（裙摆 13svh 出血、底 10svh mask 软化），
     滚到 heroP .42 那一帧 js 同时把 --hero-base 置 0（hero 层 opacity 硬切，无过渡）并把序列层 hidden 拿掉 → 同一个布尔切换，任何一帧只有一层。
     人物层 -body 仍撤（它的位置是 js sync 抄衣服层 rect，半路坐标会叠影；-ears 底图和它像素一致，视觉无差）。hero 段不 sticky，跟页面正常滚 */
  .bocchi-hero-track .nc1-herowrap { position:static; overflow:visible; }
  .bocchi-hero-track .nc1-hero { overflow:visible; clip-path:inset(0 0 calc(-0.197 * var(--fig-h)) 0); }
  body.nc1.is-ready .bocchi-hero-track .nc1-hstage { bottom:calc(-0.197 * var(--fig-h)); opacity:var(--hero-base,1); transition:none; -webkit-mask-image:linear-gradient(to bottom, #000 85%, transparent 100%); mask-image:linear-gradient(to bottom, #000 85%, transparent 100%); }
  /* nav 字标手机上大一档（原 12px） */
  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:17px!important; letter-spacing:-.01em; }

  /* ② bridge：三块纵向堆叠 title → 系统图 → Lumi 全身；Lumi 序列从绝对铺满改成流里的一块（40svh），下落轨迹 / 缩放在手机上不跑 */
  .bocchi-bridge-sticky { display:flex; flex-direction:column; }
  .bocchi-about-copy { order:1; flex:none; min-height:0; width:100%; padding:76px 20px 0; align-items:center; text-align:center; translate:0 0!important; }
  .bocchi-about-copy h2 { width:100%; max-width:none; font-size:clamp(30px,10vw,40px); line-height:.92; letter-spacing:-.05em; }
  .bocchi-about-copy h2 span { display:inline; }   /* 两个 span 不再各占一块，整句自然换行（避免「into a」孤行） */
  .bocchi-about-copy h2 span:first-child::after { content:" "; }
  .bocchi-about-copy h2 span:first-child, .bocchi-about-copy h2 span:last-child { white-space:normal; translate:0 0; }
  .bocchi-system-map { width:min(88vw,360px); margin:18px auto 0; padding:14px 16px; translate:0 0; }
  .bocchi-system-node { min-height:38px; padding:0 18px; }
  .bocchi-system-branches, .bocchi-system-merge { height:32px; }
  .bocchi-system-traits span { min-height:36px; }
  .bocchi-system-spine { height:20px; }
  .bocchi-system-node.is-result { min-height:44px; }
  /* 0910 · 带腿挥手图（序列帧 1）在 heroP .42 原位接替裁切图，再带着换帧一路往下 ——
       对位：两张同姿势，锚「右手指尖最高点」+「双手横跨」（PIL 量的 alpha bbox）：hero 图 150vw、指尖 (78.83%, 0.22%)、横跨 99.55%；
       帧 1 指尖 (76.31%, 10.25%)、横跨 89.56% → 帧宽 = 150 × .9955 / .8956 = 166.7vw、帧高 208.4vw；
       接替那一帧 hero 图顶 = 98.3svh − 143.17vw（hero 高 143.17vw，heroP .42 = 已滚 14.7svh），sticky 顶在 20.3svh
       → 帧 top = 78svh − 164.2vw、left = 95.8vw − .7631 × 166.7vw = −31.4vw（都相对 sticky）。
       节拍（全靠 --bocchi-p，js 每帧写；bridge 行程 260svh，钉住在 y = 35svh）：
       heroP .42（y = 14.7svh）接替 → 随页面滚到钉住 → p 0→.36 js 换帧 1→2→4→5→6，原位 → p .45→.85 往下走到帧顶 62svh（--bD）
       → 标题 + 系统图 p .55→.70 在她上方淡入 → p .85→1 停 → 松开随页面滚出，腿跨进幕布 */
  /* overflow-x:clip 会把 overflow-y 也算成 clip（规范：一轴 clip 另一轴 visible 就跟着 clip）——
     她的腿本来要跨出 bridge 下沿进幕布，实测在段边界被切成一条平口（y≈2450 鞋子平口消失）。
     横向那道 clip 挪到 .bocchi-rebuild（它的盒子装着后面所有段，纵向切不到她）。 */
  .bocchi-bridge { height:260svh; }
  .bocchi-rebuild { overflow-x:clip; }
  .mm-run { margin-top:max(0px, calc(0.95 * var(--heroW) - 38svh)); }   /* 松开那一刻她的鞋底伸出视口底多少，就给下一段留多少，幕布字才不会被腿压住 */
  .bocchi-about-copy h2 span, .bocchi-about-copy h2 span:first-child, .bocchi-about-copy h2 span:last-child, .bocchi-system-map { opacity:1; }   /* 桌面靠 --bocchi-copy 渐显；手机整块由父级 opacity 控 */
  /* ===== 0910 iris · 衔接编舞（spec: ~/workspace/lill-docs/mobile-lumi-handoff-0910.md） =====
     两件事：① 速度不断 —— 切换前她随页面 1:1 往上，钉住那一刻是「被接住」减速停住，不是硬停；
             ② 换帧不跳 —— 五帧先各自配准到同一张脸上（--fdx/--fdy/--fs），再叠这一条曲线。
     所有落点写成 svh + --heroW，没有一处硬 px。 */
  .bocchi-bridge-sticky {
    --p:var(--bocchi-p,0);
    --face1-y:calc(65svh - 0.38304 * var(--heroW));   /* 钉住瞬间第 1 帧脸心的 y（相对 sticky） */
    --crown1:calc(65svh - 0.55947 * var(--heroW));    /* 同一刻的颅顶 y */
    /* 接住：ease-out t(2-t) 在 t=0 斜率为 2，取 catch = .14 × 行程 ÷ 2 = 11.2svh 时，
       钉住那一帧她的速度正好等于页面速度 → 读起来是被接住，不是滚到这儿停了。
       矮屏（颅顶本来就贴着 nav）没有余量，catch 自动缩到 0。76px = nav 68 + 8 余量 */
    --catch:min(8svh, max(0px, calc(var(--crown1) - 76px)));
    --crown-rest:62svh;                               /* 交棒给文案时的颅顶：上面留得下标题 + 系统图 */
    --drop:calc(var(--crown-rest) + 0.1724 * var(--heroW) - var(--face1-y) + var(--catch));
    --ax-end:calc(0.045 * var(--heroW));              /* 沉下去的同时把脸横向归到画面中线 */
    --t1:clamp(0, calc(var(--p) / .10), 1);
    --e1:calc(var(--t1) * (2 - var(--t1)));                        /* ease-out：接住 */
    /* 下行拆成两段，两段在 .42–.50 重叠，中间速度不落到 0（落到 0 会读成「顿一下」）：
       A 段 16% —— 五帧换帧期间她只缓缓下沉，这一段是她「全身悬浮」的亮相，头高、腿出血；
       B 段 84% —— 姿势定了之后真正沉下去，把上半屏交给文案。 */
    --tA:clamp(0, calc((var(--p) - .10) / .40), 1);
    --eA:calc(var(--tA) * var(--tA) * (3 - 2 * var(--tA)));
    --tB:clamp(0, calc((var(--p) - .42) / .38), 1);
    --eB:calc(var(--tB) * var(--tB) * (3 - 2 * var(--tB)));
    --down:calc(0.16 * var(--eA) + 0.84 * var(--eB));
    --t3:clamp(0, calc((var(--p) - .56) / .20), 1);
    --e3:calc(var(--t3) * var(--t3) * (3 - 2 * var(--t3)));        /* 文案进 */
    --ay:calc(var(--drop) * var(--down) - var(--catch) * var(--e1));
    --ax:calc(var(--ax-end) * var(--down));
  }
  .bocchi-about-copy { translate:0 calc((1 - var(--e3)) * 5svh)!important; opacity:var(--e3); }
  .bocchi-lumi-sequence { order:2; position:absolute; inset:0; flex:none; width:100%; min-height:0; margin:0; translate:0 0!important; opacity:1; }
  /* top/left/宽高 = lill 那套「右手指尖 + 双手横跨」对位，只是换成跟着 --heroW 走（数值在 150vw 时逐位相同） */
  .bocchi-lumi-frame {
    top:calc(65svh - 0.9068 * var(--heroW)); bottom:auto;
    left:calc(50vw - 0.5428 * var(--heroW)); right:auto;
    width:calc(1.11133 * var(--heroW)); height:calc(1.38916 * var(--heroW));
    --fdx:0; --fdy:0; --fs:1;
    translate:calc(var(--fdx) * var(--heroW) + var(--ax)) calc(var(--fdy) * var(--heroW) + var(--ay))!important;
    scale:var(--fs)!important; rotate:0deg!important; transform-origin:50% 50%;
    object-fit:contain; object-position:50% 50%;
  }
  /* 逐帧配准：脸心（瞳孔对中点，5/6 是镜像后的显示值）1(.4478,.377) 2(.4535,.348) 4(.4788,.222) 5(.5979,.198) 6(.6050,.205)；
     --fs 是目视等大校准 × 一条很轻的后退梯度（1 → .93，读起来是纵深不是缩水）；
     --fdx/--fdy 里已含「缩放绕画面中心 → 脸会跟着移」的补偿。配完之后换帧时脸一动不动，身体绕着头转。 */
  .bocchi-lumi-sequence .frame-1 { --fdx:0;       --fdy:0;      --fs:1.000; }
  .bocchi-lumi-sequence .frame-2 { --fdx:-0.0079; --fdy:0.0340; --fs:0.970; }
  .bocchi-lumi-sequence .frame-4 { --fdx:-0.0311; --fdy:0.2702; --fs:1.142; }
  .bocchi-lumi-sequence .frame-5 { --fdx:-0.1868; --fdy:0.3258; --fs:1.184; }
  .bocchi-lumi-sequence .frame-6 { --fdx:-0.1839; --fdy:0.2713; --fs:1.079; }
  .bocchi-scroll-cue.is-bridge { display:none; }
  /* 0911: keep the approved original Hero; only the camera pulls back.
     Pivot at the existing handoff landmark (raised fingertip), not the image box. */
  body.nc1.is-ready .bocchi-hero-track .nc1-hstage {
    scale:1;
    transform-origin:78.83% .22%;
  }
  .bocchi-lumi-sequence {
    scale:var(--mobile-pull,1);
    opacity:var(--mobile-bridge-opacity,0);
    transform-origin:calc(50vw + .3053 * var(--heroW)) calc(65svh - .7644 * var(--heroW));
  }
  /* 0910 iris · 横屏 / 矮屏（≤560 高）：文案块本身就装不下一屏（标题 3 行 + 系统图 ≈ 444px），
     跟 Lumi 无关但会跟她抢地方 —— 整块压一档，落定的 62svh 才留得住。 */
  @media (max-height:560px) {
    /* hero 标题在矮屏会压到她的脸和呆毛上（40px × 2 行），压一档才让得开 */
    body.nc1 .bocchi-hero-track .nc1-bt-panel { padding-top:2vw; }
    body.nc1 .bocchi-hero-track .nc1-bt-title { font-size:clamp(20px,4.6vw,30px); }
    .bocchi-about-copy { padding:78px 20px 0; }
    .bocchi-about-copy h2 { font-size:clamp(20px,5.2vw,26px); }
    .bocchi-system-map { width:min(66vw,320px); margin-top:10px; padding:8px 12px; }
    .bocchi-system-node { min-height:26px; padding:0 14px; }
    .bocchi-system-branches, .bocchi-system-merge { height:18px; }
    .bocchi-system-traits span { min-height:24px; }
    .bocchi-system-spine { height:12px; }
    .bocchi-system-node.is-result { min-height:30px; }
  }

  /* ③④ 舞台三幕：标题块顶部居中、图版紧接标题下方居中（三幕同一位置）、SCROLL 药丸挪到图版下方居中 */
  .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) + 72px); transform:none; max-width:none; padding:0 6vw; justify-items:center; justify-content:center; text-align:center; gap:10px; }
  .mm-run .mm-catch { font-size:clamp(21px,6vw,26px); line-height:1.15; }
  .mm-run .mm-num { height:26px; padding:0 11px; font-size:11px; }
  .offer-visual, .offer-visual.is-left, .offer-visual.offer-visual-chibi, .offer-visual.offer-visual-world { left:4vw; right:auto; width:92vw; top:calc(var(--frame) + 72px + 140px); bottom:auto; padding:12px; border-radius:20px; transform:translate3d(0,4vh,0) scale(.965); clip-path:inset(0 0 0 0 round 20px); }
  .mm-run .mm-stage[data-state="s1"] .offer-visual-live, .mm-run .mm-stage[data-state="s2"] .offer-visual-world, .mm-run .mm-stage[data-state="s3"] .offer-visual-call { transform:translate3d(0,0,0) scale(1); clip-path:inset(0 0 0 0 round 20px); }
  .offer-visual > img, .offer-visual.is-left > img, .offer-visual.offer-visual-chibi > img { max-height:42vh; border-radius:12px; }
  .offer-visual-world > img { height:42vh; max-height:42vh; }
  .mm-run .mm-scroll { left:50%; top:auto; bottom:calc(var(--frame) + 18px); transform:translate(-50%,0); }

  /* ⑤ Lumi Voice 板：把窗口拖窄时 canvas 还带着旧的 px 宽，撑住格子不让缩 → 文字 / 波形溢出板外。canvas 限 100%，格子允许缩 */
  .fl2-stage > *, .fl-slot, .fl-slot > * { min-width:0; }
  .fl-slot { overflow:hidden; }
  .fl-refwave canvas, #lumiOutWave canvas, .em-wave canvas, .fl-slot canvas { max-width:100%; }
  .fl-slot p, .fl-slot .fl-lab, .fl-slot .fl-line { overflow-wrap:anywhere; }

  /* ⑥ 幕布铅笔 Lumi：满屏时盒子是 100vw × 100vh，画按 cover 裁 → 竖屏只剩一撮头发。手机上盒子按画的横比给（100vw × 56vw），眼睛整张进屏 */
  .av-curtain .av-eyes.is-pencil { width:100vw; height:calc(100vw * .56); max-height:100vh; }
  .av-curtain .av-cur__title { font-size:clamp(30px,9vw,40px); line-height:1.02; letter-spacing:-.04em; }

  /* ⑦ VRM hero：标题 / 按钮 / 3D Lumi 全部居中，台放大到 92vw × 44vh */
  .bp-s1 .bp-hero__copy { left:20px; right:20px; max-width:none; top:9vh; translate:none; align-items:center; text-align:center; }
  .bp-s1 .bp-hero__copy .bp-h { max-width:none; font-size:clamp(26px,8vw,34px); line-height:1.08; text-align:center; }
  .bp-s1 .bp-cta { justify-content:center; flex-wrap:wrap; gap:10px; margin-top:6px; }
  .bp-s1 .bp-hero__stage { left:50%; right:auto; translate:-50% 0; width:92vw; height:44vh; top:auto; bottom:15vh; }

  /* ⑧ 底部：提示句居中放在进度条上方；进度条左右各 24，段名不再从左缘切掉（首段左对齐、末段右对齐）；右侧 Scroll › 撤 */
  .bp-s1-cue { left:20px; right:20px; bottom:76px; text-align:center; font-size:14px; line-height:20px; }
  .av-ind { left:24px; right:24px; width:auto; bottom:22px; }
  .av-ind__link { bottom:14px; font-size:12px; line-height:16px; }
  .av-ind__section:first-of-type .av-ind__link { left:0; transform:none; }
  .av-ind__section:last-of-type .av-ind__link { left:auto; right:0; transform:none; }
  .av-ind__next { display:none; }
}

/* ======================================================================
   0910 lill · 手机端第二批 C / D / E / F（她：都居中、spacing、聚焦主角；≤767 only）
   ====================================================================== */
@media (max-width:767px) {
  /* C / D · 舞台三幕：标题文字真居中；图版和标题之间加一档（top 再下 30px）；SCROLL 药丸撤，换全站那颗小鼠标（22×34 圆角框 + 4px 白点），居中放图版下方 */
  .mm-run .mm-live-row .mm-catch, .mm-run .mm-catch { text-align:center; }
  .mm-run .mm-catch .l, .mm-run .mm-sub .l { text-align:center; justify-content:center; }   /* .l 是 flex 盒，text-align 不管用，要 justify-content */
  .offer-visual, .offer-visual.is-left, .offer-visual.offer-visual-chibi, .offer-visual.offer-visual-world { top:calc(var(--frame) + 72px + 172px); }
  .offer-visual > img, .offer-visual.is-left > img, .offer-visual.offer-visual-chibi > img { max-height:40vh; }
  .offer-visual-world > img { height:40vh; max-height:40vh; }
  .mm-run .mm-scroll { left:50%; top:auto; bottom:calc(var(--frame) + 34px); transform:translate(-50%,0); width:auto; padding:0; gap:0; background:none; -webkit-backdrop-filter:none; backdrop-filter:none; border-radius:0; }
  .mm-run .mm-scroll span { display:none; }
  .mm-run .mm-scroll i { 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; overflow:visible; }
  .mm-run .mm-scroll i::after { content:""; position:absolute; left:50%; top:7px; width:4px; height:4px; margin-left:-2px; border-radius:50%; background:#fff; transform:none; animation:bocchi-mouse 1.6s ease-in-out infinite; }

  /* E · 02 It speaks and reacts：段头 / 副标 / chips / 图 / 说明全部居中；「02」水印撤；双联图改成 6:7 窗、cover 靠左裁 → Lumi 脸占大头、眼睛清楚；chips 折两行居中（选中的一定在屏内） */
  .bp-s23 .bp-head { left:20px; right:20px; top:6vh; max-width:none; align-items:center; text-align:center; }
  .bp-s23 .bp-head .av-h__ghost { display:none; }
  .bp-s23 .bp-head .bp-h { font-size:clamp(26px,8vw,32px); line-height:1.08; }
  .bp-s23 .bp-head .av-h__b { max-width:none; font-size:15px; line-height:22px; }
  .bp-s23 .bp-theater--video { left:4vw; right:auto; width:92vw; top:38vh; bottom:auto; }
  .bp-s23 .bp-theater--video .bp-theater__win { border-top-width:10px; }
  /* 窗左半是 js 画的 Lumi 表情 cel（canvas 行内样式 50.8%），右半是视频里的手机；手机上 cel 放到 72% 宽 = Lumi 脸占大头、眼睛清楚，手机只露右边一截 */
  .bp-s23 .bp-theater__win canvas { width:50.8%!important; }
  .bp-s23 .bp-beats { flex-wrap:wrap; justify-content:center; gap:6px; margin-top:12px; }
  .bp-s23 .bp-beat { flex:0 0 auto; padding:6px 12px; font-size:11px; line-height:16px; }
  .bp-s23 .bp-theater--video p, .bp-s23 .bp-theater--video .bp-theater__cap { text-align:center; font-size:13px; line-height:18px; margin:10px 0 0; }

  /* F · 03 Create once：同一套坐标（段头 top 6vh 居中，插图 92vw 底对齐 12vh）；正文行距回 1.55、硬换行撤；「03」水印撤 */
  .bp-s4 .bp-head { left:20px; width:calc(100vw - 40px); max-width:none; top:6vh; align-items:center; text-align:center; }
  .bp-s4 .bp-head .av-h__ghost { display:none; }
  .bp-s4 .bp-head .bp-h { font-size:clamp(26px,8vw,32px); line-height:1.08; }
  .bp-s4 .bp-head .av-h__b { max-width:none; font-size:15px; line-height:22px; }
  .bp-s4 .bp-read2 { margin:10px 0 0; max-width:34em; font-size:14px; line-height:1.55; }
  .bp-s4 .bp-read2 br { display:none; }
  .bp-s4 .agent-journey { left:4vw; width:92vw; top:38vh; bottom:auto; }
  .agent-app-illustration > img { clip-path:none; }
  .bp-s4 .agent-journey figcaption { text-align:center; font-size:13px; line-height:18px; margin:10px 0 0; }
  /* 三段统一：段头 top 6vh；02 / 03 改成流式纵排（段头 → 22px → 图），标题和图之间不再空一大截；01 的台 top 38vh */
  .bp-s1 .bp-hero__copy { top:6vh; }
  .bp-s1 .bp-hero__stage { top:38vh; bottom:auto; height:44vh; }
  /* panel 宽 = --sw × 100vw（03 是 200vw，横滚的行程算法要用），所以子件钉 92vw、靠左起，只占第一屏 */
  .av-chapter .av-h__panel.bp-s23, .av-chapter .av-h__panel.bp-s4 { display:flex; flex-direction:column; align-items:flex-start; justify-content:flex-start; align-content:flex-start; padding:6vh 0 0 4vw; }   /* 上面 991 档的 align-content:center 在单行 flex 也生效，会把整块推到竖向居中 */
  .bp-s23 .bp-head, .bp-s4 .bp-head { position:static; left:auto; top:auto; width:92vw; max-width:none; padding-top:0; }
  .bp-s23 .bp-theater--video { position:static; left:auto; top:auto; width:92vw; margin-top:22px; }
  .bp-s4 .agent-journey { position:static; left:auto; top:auto; width:92vw; margin-top:22px; }
  .bp-s23 .bp-beat { padding:5px 9px; font-size:10.5px; }   /* 五个 chip 一行放得下，选中的永远在屏内 */
}

.nc1-hero-legs { display:none; }
@media (max-width:767px) {
  body.nc1.is-ready .bocchi-hero-track .nc1-hstage {
    -webkit-mask-image:none; mask-image:none; overflow:visible; isolation:isolate;
  }
  .bocchi-hero-track .nc1-hstage .nc1-hero-legs {
    display:block; position:absolute; top:0; left:0;
    width:100%; height:126.445%; max-width:none; max-height:none;
    object-fit:fill; z-index:-1; pointer-events:none;
  }
  body.nc1 .bocchi-hero-track .nc1-hero {
    clip-path:inset(0 0 calc(-.47 * var(--fig-h)) 0);
  }
}

/* Medium widths need their own composition, between phone and desktop. */
@media (min-width:768px) and (max-width:1100px) {
  .bocchi-about-copy {
    width:100%; padding:100px 4vw 48px 51vw;
  }
  .bocchi-about-copy h2 {
    width:100%; max-width:100%; font-size:clamp(30px,3.5vw,40px);
    line-height:1.08; letter-spacing:-.04em;
  }
  .bocchi-about-copy h2 span:first-child,
  .bocchi-about-copy h2 span:last-child { white-space:normal; }
  .bocchi-system-map { width:100%; max-width:100%; margin-top:24px; padding:16px; }
  .bocchi-system-node { padding-inline:14px; }
  .bocchi-system-node.is-result { padding-inline:16px; font-size:12px; letter-spacing:.1em; }
}
@media (min-width:768px) and (max-width:1024px) {
  .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:5%; right:5%; width:90%; top:90px; padding:0;
    transform:none; text-align:center; justify-items:center; justify-content:center;
  }
  .mm-run .mm-catch { font-size:clamp(26px,3.3vw,34px); line-height:1.15; }
  .mm-run .mm-catch .l { justify-content:center; white-space:normal; }
  .mm-run .mm-win .offer-visual {
    left:50%; right:auto; top:280px; bottom:auto; translate:-50% 0;
    width:84%; max-width:760px; padding:12px; box-sizing:border-box;
  }
  .mm-run .mm-win .offer-visual > img {
    display:block; width:100%; height:auto; max-height:calc(100svh - 340px);
    object-fit:contain; margin-inline:auto;
  }
  .mm-run .mm-win .offer-visual.offer-visual-world {
    width:auto; max-width:84%;
  }
  .mm-run .mm-win .offer-visual.offer-visual-world > img {
    width:auto; height:calc(100svh - 340px); max-width:100%;
  }
}

/* Keep intrinsic canvas/text widths from escaping the voice grid at ANY breakpoint. */
/* Keep the complete reaction diptych centred through tablet and phone widths. */
.av-chapter:not(.is-static) .av-curtain__pin { overflow:clip; }
@media (max-width:991px) {
  .av-chapter .av-h__panel.bp-s23 {
    display:flex; flex-direction:column; align-items:center;
    justify-content:flex-start; align-content:flex-start;
    padding:clamp(64px,8vh,88px) 0 24px; box-sizing:border-box;
  }
  .bp-s23 .bp-head {
    position:static; left:auto; right:auto; top:auto;
    width:calc(100% - 40px); max-width:720px; padding:0;
    align-items:center; text-align:center;
  }
  .bp-s23 .bp-head .av-h__ghost { display:none; }
  .bp-s23 .bp-read--inline { display:none; }
  .bp-s23 .bp-head .av-h__b { max-width:100%; }
  .bp-s23 .bp-theater--video {
    position:static; left:auto; right:auto; top:auto; bottom:auto;
    width:calc(100% - 40px); max-width:720px; min-width:0;
    height:auto; margin:24px 0 0; gap:10px; flex:none;
  }
  .bp-s23 .bp-theater--video .bp-theater__win {
    width:100%; height:auto; aspect-ratio:1120 / 734;
    border:0; flex:none; overflow:hidden;
  }
  .bp-s23 .bp-theater__win canvas { width:50.8%!important; }
  .bp-s23 .bp-beats { flex-wrap:wrap; justify-content:center; gap:6px; margin:0; }
  .bp-s23 .bp-beat { flex:0 0 auto; padding:6px 10px; }
  .bp-s23 .bp-theater--video p { text-align:center; margin:0; }
}

#lumiVoiceDemo .fl2-stage > *,
#lumiVoiceDemo .fl-slot > * { min-width:0; max-width:100%; }
#lumiVoiceDemo .fl-slot { min-width:0; overflow:hidden; }
#lumiVoiceDemo .fl-slot p {
  width:auto; max-width:100%; white-space:normal;
  overflow-wrap:anywhere; word-break:normal;
}
#lumiVoiceDemo canvas { display:block; max-width:100%; }
#lumiVoiceDemo .em-wave, #lumiVoiceDemo .fl-refwave { min-width:0; overflow:hidden; }

/* 0911: all three Creator plates share the mobile title's centre line. */
@media (max-width:767px) {
  .mm-run .mm-win .offer-visual {
    left:50%; right:auto; bottom:auto;
    translate:-50% 0;
    width:92%; max-width:calc(100% - 32px);
    margin:0; box-sizing:border-box;
    top:calc(var(--frame) + 72px + 152px);
    padding:12px;
  }
  .mm-run .mm-win .offer-visual > img {
    margin-inline:auto;
    object-position:center;
    max-height:min(44svh,calc(100svh - 300px));
  }
  .mm-run .mm-win .offer-visual.offer-visual-world {
    width:calc(min(48svh,76vw,calc(100svh - 300px)) * 1039 / 1514 + 16px); padding:8px;
  }
  .mm-run .mm-win .offer-visual.offer-visual-world > img {
    width:auto; height:min(48svh,76vw);
    max-width:100%; max-height:calc(100svh - 300px);
    object-fit:contain;
  }
}
/* Japanese typography: allow natural CJK wrapping without stretching artwork. */
/* Keep translated title entrance frames from widening tablet viewports. */
.bocchi-bridge { overflow-x:clip; }
html[data-lang="ja"] .bocchi-about-copy h2 { line-height:1.3; letter-spacing:0; overflow-wrap:anywhere; min-width:0; }
html[data-lang="ja"] .bocchi-about-copy h2 > * { max-width:100%; min-width:0; white-space:normal; }
html[data-lang="ja"] .bocchi-about-copy h2 span,
html[data-lang="ja"] .bocchi-about-copy h2 strong { white-space:normal; }
html[data-lang="ja"] .mm-catch { font-size:clamp(36px,4vw,56px); line-height:1.3; letter-spacing:0; }
html[data-lang="ja"] .mm-catch .l { white-space:normal; }
html[data-lang="ja"] .bp-h { line-height:1.25; letter-spacing:0; }
html[data-lang="ja"] .bp-read2 { line-height:1.85; overflow-wrap:anywhere; }
html[data-lang="ja"] .mm-start-btn { white-space:nowrap; letter-spacing:0; }
html[data-lang="ja"] #lumiVoiceDemo p { min-width:0; white-space:normal; overflow-wrap:anywhere; }
@media(max-width:767px) {
  html[data-lang="ja"] .mm-start-btn { font-size:14px; padding-inline:12px; gap:8px; }
  html[data-lang="ja"] .mm-catch { font-size:clamp(25px,6.6vw,34px); }
  html[data-lang="ja"] .bp-summary dl > div { grid-template-columns:1fr; gap:8px; }
  html[data-lang="ja"] .bp-summary dt { font-size:12px; }
  html[data-lang="ja"] .bp-summary dd { margin:0; font-size:14px; }
}
html[data-lang="ja"] body.nc1 .bocchi-hero-track .nc1-bt-title {
  font-size:clamp(42px,6.4vw,88px); line-height:1.12;
}
html[data-lang="ja"] .o6 .dv-board #snVoiceChapter .dv-sec .dv-head h2.dv-h2 {
  font-size:clamp(30px,3.2vw,44px); line-height:1.3;
}
html[data-lang="ja"] .bp-head .bp-h,
html[data-lang="ja"] .bp-s1 .bp-hero__copy .bp-h {
  font-size:clamp(42px,5.2vw,72px); line-height:1.25;
}
@media(min-width:768px) and (max-width:1024px) {
  html[data-lang="ja"] .mm-catch { font-size:clamp(30px,3.8vw,40px); }
}
@media(max-width:767px) {
  html[data-lang="ja"] body.nc1 .bocchi-hero-track .nc1-bt-title {
    font-size:clamp(30px,8.5vw,38px); line-height:1.15;
  }
  html[data-lang="ja"] .bp-head .bp-h,
  html[data-lang="ja"] .bp-s1 .bp-hero__copy .bp-h {
    font-size:clamp(30px,8.6vw,38px);
  }
}
@media(max-width:1024px) {
  .mm-run .mm-win .offer-visual {
    top:var(--creator-art-top,300px);
  }
  .mm-run .mm-win .offer-visual > img {
    max-height:var(--creator-art-room,40svh);
  }
  .mm-run .mm-win .offer-visual.offer-visual-world {
    width:calc(min(48svh,76vw,var(--creator-art-room,40svh)) * 1039 / 1514 + 16px);
  }
  .mm-run .mm-win .offer-visual.offer-visual-world > img {
    height:min(48svh,76vw,var(--creator-art-room,40svh));
    max-height:var(--creator-art-room,40svh);
  }
}
