@font-face{font-family:'Deck Sans';src:url('./assets/fonts/sans-regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap;}@font-face{font-family:'Deck Sans';src:url('./assets/fonts/sans-bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap;}@font-face{font-family:'Deck Serif';src:url('./assets/fonts/serif-bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap;}@font-face{font-family:'Deck Serif';src:url('./assets/fonts/serif-regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap;}
/* html-ppt :: base.css — reset + shared tokens + layout primitives */
/* Default tokens. Themes in assets/themes/*.css override the :root block. */
:root {
  --bg: #ffffff;
  --bg-soft: #f7f7f8;
  --surface: #ffffff;
  --surface-2: #f2f2f4;
  --border: rgba(0,0,0,.08);
  --border-strong: rgba(0,0,0,.16);
  --text-1: #111216;
  --text-2: #55596a;
  --text-3: #8a8f9e;
  --accent: #3b6cff;
  /* Text drawn on top of an --accent fill. Every theme in assets/themes/
   * and every full-deck style.css overrides this with whichever of white /
   * near-black clears WCAG AA against its own accent — a hardcoded ink
   * cannot, because accents here range from #ffffff to #000000.
   * This default is black rather than white on purpose: against the default
   * --accent #3b6cff, white measures 4.40:1 and black 4.77:1, so only black
   * clears AA for normal text. Reached by any deck that links no theme. */
  --accent-ink: #000000;
  --accent-2: #7a5cff;
  --accent-3: #ff5c8a;
  --good: #1aaf6c;
  --warn: #f5a524;
  --bad:  #e0445a;
  --grad: linear-gradient(135deg,#3b6cff,#7a5cff 55%,#ff5c8a);
  --grad-soft: linear-gradient(135deg,#eef2ff,#f5ecff 55%,#ffeef5);
  --radius: 18px;
  --radius-sm: 12px;
  --radius-lg: 26px;
  --shadow: 0 10px 30px rgba(18,24,40,.08), 0 2px 6px rgba(18,24,40,.04);
  --shadow-lg: 0 24px 60px rgba(18,24,40,.14), 0 6px 16px rgba(18,24,40,.06);
  --font-sans: 'Inter','Noto Sans SC',-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;
  --font-serif: 'Playfair Display','Noto Serif SC',Georgia,serif;
  --font-mono: 'JetBrains Mono','IBM Plex Mono',SFMono-Regular,Menlo,monospace;
  --font-display: var(--font-sans);
  --letter-tight: -.03em;
  --letter-normal: -.01em;
  --ease: cubic-bezier(.4,0,.2,1);
}

*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text-1);
  font-family:var(--font-sans);font-weight:400;line-height:1.6;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  letter-spacing:var(--letter-normal)}

/* Viewport host: centres the fixed-size design canvas and letterboxes the rest.
   Every px in a slide therefore means the same thing in the browser, in the
   presenter preview, in the overview thumbnail and in a headless render. */
body{width:100vw;height:100vh;overflow:hidden;
  display:flex;align-items:center;justify-content:center}
img,svg,video{max-width:100%;display:block}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
code,kbd,pre,samp{font-family:var(--font-mono)}

/* ================= SLIDE SYSTEM ================= */
/* ================= DESIGN CANVAS =================
   Slides are authored against a FIXED 1920x1080 canvas and scaled to fit the
   viewport by runtime.js (--deck-scale). Before this, .deck was 100vw/100vh
   while type and spacing stayed in absolute px, so a 1512x850 laptop window
   and a 1920x1080 render produced visibly different pages (issue #20).

   Escape hatches:
     <body data-fit="fluid">      -> old behaviour, canvas follows the viewport
     <div class="deck" data-w=".." data-h="..">  -> custom canvas (e.g. 1080x1440 for 3:4)
*/
.deck{position:relative;flex:none;
  width:var(--deck-w,1920px);height:var(--deck-h,1080px);
  overflow:hidden;background:var(--bg);
  transform:scale(var(--deck-scale,1));transform-origin:center center}

/* Opt out: fluid canvas, exactly what the deck did before. */
body[data-fit="fluid"]{display:block}
body[data-fit="fluid"] .deck{width:100vw;height:100vh;transform:none}
.slide{
  position:absolute;inset:0;
  display:flex;flex-direction:column;justify-content:center;
  padding:72px 96px;
  box-sizing:border-box;
  opacity:0;pointer-events:none;
  transition:opacity .5s var(--ease), transform .5s var(--ease);
  transform:translateX(30px);
  overflow:hidden;
}
.slide.is-active{opacity:1;pointer-events:auto;transform:translateX(0);z-index:2}
.slide.is-prev{transform:translateX(-30px)}

/* single-page standalone (used when a layout file is opened directly) */
body.single .slide{position:relative;width:100%;height:100%;opacity:1;transform:none;pointer-events:auto}
body[data-fit="fluid"].single .slide{width:100vw;height:100vh}

/* ================= TYPOGRAPHY ================= */
.eyebrow{font-size:13px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--text-3)}
.kicker{font-size:14px;font-weight:600;color:var(--accent);letter-spacing:.08em;text-transform:uppercase}
h1.title,.h1{font-family:var(--font-display);font-size:72px;line-height:1.05;font-weight:800;letter-spacing:var(--letter-tight);margin:0 0 18px;color:var(--text-1)}
h2.title,.h2{font-family:var(--font-display);font-size:54px;line-height:1.1;font-weight:700;letter-spacing:var(--letter-tight);margin:0 0 14px}
h3,.h3{font-size:32px;line-height:1.2;font-weight:600;letter-spacing:var(--letter-normal);margin:0 0 10px}
h4,.h4{font-size:22px;line-height:1.3;font-weight:600;margin:0 0 8px}
.lede{font-size:22px;line-height:1.55;color:var(--text-2);font-weight:300;max-width:62ch}
.dim{color:var(--text-2)}
.dim2{color:var(--text-3)}
.mono{font-family:var(--font-mono)}
.serif{font-family:var(--font-serif)}
.gradient-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}

/* ================= LAYOUT PRIMITIVES ================= */
.stack>*+*{margin-top:14px}
.row{display:flex;gap:24px;align-items:center}
.row.wrap{flex-wrap:wrap}
.grid{display:grid;gap:24px}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
.center{display:flex;align-items:center;justify-content:center;text-align:center}
.fill{flex:1}
.sp-t{padding-top:24px}.sp-b{padding-bottom:24px}
.mt-s{margin-top:8px}.mt-m{margin-top:18px}.mt-l{margin-top:32px}
.mb-s{margin-bottom:8px}.mb-m{margin-bottom:18px}.mb-l{margin-bottom:32px}

/* ================= CARDS ================= */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:26px 28px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.card-soft{background:var(--surface-2);border:1px solid var(--border)}
.card-outline{background:transparent;border:1.5px solid var(--border-strong);box-shadow:none}
.card-accent{background:var(--surface);border-top:3px solid var(--accent)}
.card-hover{transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.card-hover:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}

.pill{display:inline-block;padding:4px 12px;border-radius:999px;font-size:12px;font-weight:500;
  background:var(--surface-2);color:var(--text-2);border:1px solid var(--border)}
.pill-accent{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 28%,transparent)}

/* ================= BARS / DIVIDERS ================= */
.divider{height:1px;background:var(--border);width:100%}
.divider-accent{height:3px;width:72px;background:var(--accent);border-radius:2px}

/* ================= IMAGES (issue #17) =================
 * Framing primitives shared by every image-* layout. The frame owns the
 * aspect ratio and the crop; the <img> just fills it. That's what lets you
 * swap in a photo of any shape without touching the layout.
 *   <figure class="img-frame"><img src="…" alt=""></figure>
 *   .img-frame.contain  -> letterbox instead of crop (screenshots, diagrams,
 *                          logos — anything where cropping loses information)
 *   --img-ratio         -> aspect ratio of the frame (default 16/10)
 *   --img-pos           -> object-position, e.g. "top" to protect a headline
 */
.img-frame{position:relative;margin:0;overflow:hidden;
  border-radius:var(--radius);box-shadow:var(--shadow);background:var(--surface-2);
  aspect-ratio:var(--img-ratio,16/10)}
.img-frame > img{width:100%;height:100%;object-fit:cover;object-position:var(--img-pos,center)}
.img-frame.contain{background:var(--bg-soft);box-shadow:none;border:1px solid var(--border)}
.img-frame.contain > img{object-fit:contain}
.img-frame.fill{height:100%;aspect-ratio:auto}
.img-scrim{position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 42%,rgba(8,10,20,.72))}
.img-cap{margin:10px 2px 0;font-size:14px;line-height:1.5;color:var(--text-3)}
.img-tag{position:absolute;top:14px;left:14px;padding:5px 12px;border-radius:999px;
  background:rgba(10,12,20,.55);color:#fff;font-size:12px;letter-spacing:.06em;
  text-transform:uppercase;backdrop-filter:blur(6px)}

/* ================= CHROME (header/footer/progress) ================= */
.deck-header{position:absolute;top:24px;left:40px;right:40px;display:flex;align-items:center;justify-content:space-between;
  font-size:12px;color:var(--text-3);letter-spacing:.12em;text-transform:uppercase;z-index:10;pointer-events:none}
.deck-footer{position:absolute;bottom:24px;left:40px;right:40px;display:flex;align-items:center;justify-content:space-between;
  font-size:12px;color:var(--text-3);z-index:10;pointer-events:none}
.slide-number::before{content:attr(data-current)}
.slide-number::after{content:" / " attr(data-total)}
.progress-bar{position:fixed;left:0;right:0;bottom:0;height:3px;background:transparent;z-index:20}
.progress-bar > span{display:block;height:100%;width:0;background:var(--accent);transition:width .3s var(--ease)}

/* ---- custom logo (issue #11) ----
 * One logo per deck, drawn over the slide area. Two ways in, same CSS:
 *   1. hand-author it  -> <img class="deck-logo" data-pos="bottom-right" src="…">
 *   2. declare it once -> <body data-logo="…" data-logo-position="bottom-right">
 * (1) needs no JS at all; (2) is created by runtime.js. It lives inside .deck
 * so it scales with the deck. On an exported PDF it is painted per page by the
 * @media print block below, not by this element — see the note there. */
.deck-logo{position:absolute;z-index:11;pointer-events:none;
  height:var(--logo-size,44px);width:auto;max-width:30%;object-fit:contain;
  opacity:var(--logo-opacity,.9)}
.deck-logo[data-pos="top-left"]     {top:var(--logo-inset-y,28px);left:var(--logo-inset-x,40px)}
.deck-logo[data-pos="top-right"]    {top:var(--logo-inset-y,28px);right:var(--logo-inset-x,40px)}
.deck-logo[data-pos="bottom-left"]  {bottom:var(--logo-inset-y,28px);left:var(--logo-inset-x,40px)}
.deck-logo[data-pos="bottom-right"] {bottom:var(--logo-inset-y,28px);right:var(--logo-inset-x,40px)}
.deck-logo:not([data-pos])          {top:28px;right:40px}

/* ================= PRESENTER / OVERVIEW ================= */
/* Keep this list in sync with NOTE_SEL in assets/runtime.js — the runtime
 * reads speaker notes from all of these, so all of them must be hidden
 * from the audience. */
.notes,.speaker-notes{display:none!important}
.notes-overlay{position:fixed;inset:auto 0 0 0;max-height:42vh;background:rgba(20,22,30,.95);color:#e8ebf4;
  padding:20px 32px;font-size:16px;line-height:1.6;border-top:1px solid rgba(255,255,255,.1);transform:translateY(100%);
  transition:transform .3s var(--ease);z-index:40;overflow:auto;font-family:var(--font-sans)}
.notes-overlay.open{transform:translateY(0)}
.overview{position:fixed;inset:0;background:rgba(10,12,18,.92);backdrop-filter:blur(12px);z-index:50;
  display:none;padding:40px;overflow:auto}
.overview.open{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;align-content:start}
.overview .thumb{background:var(--surface);border:1px solid var(--border);border-radius:12px;
  aspect-ratio:16/9;overflow:hidden;cursor:pointer;position:relative;color:var(--text-1);padding:16px;
  font-size:11px;transition:transform .2s var(--ease)}
.overview .thumb:hover{transform:scale(1.04)}
.overview .thumb .n{position:absolute;top:8px;left:10px;font-weight:700;font-size:14px;color:var(--text-3)}
.overview .thumb .t{position:absolute;bottom:10px;left:14px;right:14px;font-weight:600;color:var(--text-1)}

/* ================= PRESENTER VIEW ================= */
/* Presenter view opens in a separate popup window (S key).
 * All presenter styles are self-contained in the popup HTML generated by runtime.js.
 * The audience window (this file) is NOT affected — it stays as normal deck view.
 * Only the .notes class below is needed to hide speaker notes from audience. */

/* ================= UTILITY ================= */
.hidden{display:none!important}
.nowrap{white-space:nowrap}
.tr{text-align:right}.tc{text-align:center}.tl{text-align:left}
.uppercase{text-transform:uppercase;letter-spacing:.12em}

/* ================= PRINT ================= */
@media print{
  /* Every declaration here is !important on purpose. A template stylesheet
   * scopes its rules as `.tpl-name .slide`, which is specificity (0,2,0) and
   * beats a bare `.slide` at (0,1,0) — so without !important a template
   * silently keeps its screen layout in print. That is how dir-key-nav-minimal
   * (position:absolute) printed 8 slides onto 1 page and xhs-post printed 9
   * onto 2: only the opacity/transform declarations on this rule carried
   * !important, and the ones that decide pagination did not. */
  body{display:block!important;width:auto!important;height:auto!important;overflow:visible!important}
  .deck{transform:none!important;width:100%!important;height:auto!important;
        min-height:0!important;display:block!important}
  .slide{position:relative!important;inset:auto!important;
         opacity:1!important;transform:none!important;
         page-break-after:always;break-after:page;
         width:100%!important;height:100vh!important;max-height:100vh!important}
  .slide:last-child{page-break-after:auto;break-after:auto}
  .deck-header,.deck-footer,.progress-bar,.notes-overlay,.overview{display:none!important}

  /* Logo in print. The .deck-logo element is position:absolute inside .deck,
   * and print collapses .deck to height:auto with every slide stacked — so the
   * element can only anchor ONCE against the whole document and lands on a
   * single page (or none). Hide it and paint the logo per slide instead: in
   * print one .slide is exactly one page. runtime.js mirrors the image URL and
   * placement onto .deck (--logo-print / data-logo-print), so this only kicks
   * in when the runtime is present; a JS-less deck keeps the element. */
  .deck[data-logo-print] > .deck-logo{display:none!important}
  .deck[data-logo-print] .slide:not([data-no-logo])::after{
    content:"";position:absolute;z-index:11;pointer-events:none;
    width:30%;height:var(--logo-size,44px);
    background-image:var(--logo-print);background-repeat:no-repeat;
    background-size:contain;opacity:var(--logo-opacity,.9)}
  .deck[data-logo-print="top-left"]     .slide:not([data-no-logo])::after{top:var(--logo-inset-y,28px);left:var(--logo-inset-x,40px);background-position:left top}
  .deck[data-logo-print="top-right"]    .slide:not([data-no-logo])::after{top:var(--logo-inset-y,28px);right:var(--logo-inset-x,40px);background-position:right top}
  .deck[data-logo-print="bottom-left"]  .slide:not([data-no-logo])::after{bottom:var(--logo-inset-y,28px);left:var(--logo-inset-x,40px);background-position:left bottom}
  .deck[data-logo-print="bottom-right"] .slide:not([data-no-logo])::after{bottom:var(--logo-inset-y,28px);right:var(--logo-inset-x,40px);background-position:right bottom}
}

/* Immersive edition — art direction tokens override HTML PPT Studio primitives. */
:root{--ivory:#f4eee3;--paper:#ece4d6;--ink:#292722;--wine:#5f1926;--rouge:#9a3c48;--blush:#d5aca9;--gold:#bea27e;--night:#171418;--sage:#1d302b;--lavender:#e5daec;--bg:var(--night);--surface:var(--ivory);--surface-2:var(--paper);--text-1:var(--ink);--text-2:#69635c;--text-3:#81786d;--border:rgba(87,65,46,.18);--border-strong:rgba(87,65,46,.35);--accent:var(--rouge);--accent-ink:var(--ivory);--radius:0;--radius-sm:0;--radius-lg:0;--shadow:none;--shadow-lg:0 26px 80px rgba(0,0,0,.18);--font-sans:'Deck Sans',sans-serif;--font-serif:'Deck Serif',serif;--font-display:var(--font-serif);--font-mono:var(--font-sans);--ease:cubic-bezier(.22,.7,.16,1);--letter-normal:0;--letter-tight:-.025em}
html,body{width:100%;height:100%;margin:0;overflow:hidden;background:var(--night);color:var(--ink);font-family:var(--font-sans)}button{font:inherit;cursor:pointer;color:inherit;-webkit-tap-highlight-color:transparent}button:disabled{opacity:.23;cursor:default}button:focus-visible{outline:3px solid var(--gold);outline-offset:5px}#root{position:fixed;inset:0;overflow:hidden}svg{display:block}.deck-host{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden}.deck{isolation:isolate;touch-action:none;user-select:text;flex:none}.slide{padding:0;justify-content:flex-start;background:var(--ivory);color:var(--ink);transition:opacity .42s var(--ease),transform .65s var(--ease);visibility:hidden;transform:translateX(25px);overflow:hidden}.slide.is-active{visibility:visible}.slide.is-prev{transform:translateX(-25px)}.slide[data-tone='dark']{--text-1:var(--ivory);--text-2:#c5b5a5;--text-3:#9e8c7a;--border:rgba(240,222,198,.18);background:var(--night);color:var(--ivory)}.slide[data-tone='red']{--text-1:var(--ivory);--text-2:#e1c0b9;--text-3:#c8a99e;--border:rgba(247,224,210,.25);background:var(--wine);color:var(--ivory)}.slide[data-tone='lavender']{--accent:#734f69;--text-2:#725c72;background:var(--lavender)}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--font-serif);font-weight:400;letter-spacing:-.025em}h2{font-size:88px;line-height:1.26}h3{font-size:40px;line-height:1.5}p{line-height:1.65}b,strong{font-weight:700}em{font-style:normal;color:var(--rouge)}.line-mask{display:block;overflow:hidden;padding-bottom:.13em;margin-bottom:-.13em}.line-mask>span{display:block;will-change:transform}.eyebrow{font-size:18px;letter-spacing:.17em;line-height:1.5;color:var(--accent);font-weight:400;margin:0}.small-note{font-size:20px;line-height:1.6;color:var(--text-2)}.img-frame{margin:0;border:0;border-radius:0;box-shadow:none;background:transparent;overflow:hidden;aspect-ratio:auto;min-height:0}.img-frame img{display:block;width:100%;height:100%;object-fit:cover;object-position:var(--img-pos,center)}.img-frame.contain img{object-fit:contain}.img-frame svg{width:100%;height:100%;overflow:visible}.deck-header{position:absolute;top:37px;left:110px;right:110px;display:flex;justify-content:space-between;align-items:center;color:var(--gold);font-size:16px;letter-spacing:.14em;pointer-events:none;z-index:25}.brand-wordmark{font-family:var(--font-serif);font-size:33px;letter-spacing:.2em;color:var(--rouge)}html[data-tone='dark'] .brand-wordmark,html[data-tone='red'] .brand-wordmark{color:var(--ivory)}.deck-footer{position:absolute;left:110px;right:110px;bottom:30px;display:flex;justify-content:space-between;font-size:15px;letter-spacing:.1em;color:var(--gold);pointer-events:none;z-index:25}.slide-number::before{content:attr(data-current)}.slide-number::after{content:' / ' attr(data-total)}.progress-bar{position:fixed;left:0;right:0;bottom:0;height:3px;z-index:70}.progress-bar>span{width:100%;height:100%;background:var(--gold);transform-origin:left;transition:transform .35s var(--ease)}.notes,.speaker-notes{display:none!important}.ornament{pointer-events:none;color:var(--gold)}.film-backdrop{position:absolute;inset:0}.film-backdrop img{width:100%;height:100%;object-fit:cover}.petals{position:absolute;pointer-events:none;z-index:8}.petal{position:absolute;width:28px;height:37px;opacity:0;filter:drop-shadow(3px 6px 4px rgba(0,0,0,.2))}.petal-1{width:19px;height:25px;left:160px;top:60px}.petal-2{width:24px;height:31px;left:330px;top:-30px}.petal-3{width:15px;height:20px;left:420px;top:90px}.real-object,.classic-objects{overflow:visible;filter:drop-shadow(15px 25px 24px rgba(0,0,0,.25))}.real-object svg,.classic-objects svg{overflow:visible}.text-button{display:inline-flex;gap:16px;align-items:center;border:0;border-bottom:1px solid var(--border);padding:15px 0;min-height:80px;background:transparent;font-size:25px}.text-button svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.4}
/* 01 — photographic opening, no boxed image */
.opening-backdrop{opacity:.92;--img-pos:80% 50%}.opening-backdrop img{transform:scale(1.08)}.opening-paper{position:absolute;inset:0;background:linear-gradient(90deg,rgba(15,9,15,.82),rgba(18,8,15,.3) 55%,transparent 76%)}.opening-camera{position:absolute;right:30px;top:105px;width:920px;height:810px;perspective:1200px}.opening-object{position:absolute;inset:0;transform:rotate(-12deg);width:900px;height:900px}.opening-shadow{position:absolute;left:230px;right:30px;bottom:10px;height:40px;background:rgba(0,0,0,.65);border-radius:50%;filter:blur(14px)}.thin-orbit{position:absolute;left:110px;top:60px;width:740px;height:740px;border:1px solid rgba(210,174,140,.16);border-radius:50%;transform:rotate(-20deg)}.opening-copy{position:absolute;left:130px;top:245px;z-index:3}.opening-copy .eyebrow{color:var(--gold);margin-bottom:42px}.opening-copy h1{font-size:125px;line-height:1.36;color:var(--ivory);letter-spacing:.025em}.opening-title-last{font-size:103px;color:var(--blush);letter-spacing:.08em}.opening-tagline{font-size:31px;color:#d3c4b9;margin-top:35px;letter-spacing:.04em}.opening-meta{display:flex;gap:30px;margin-top:68px;font-size:21px;color:var(--gold);align-items:center}.opening-meta>span+span{border-left:1px solid rgba(230,196,164,.28);padding-left:30px}.opening-edge{position:absolute;right:105px;top:500px;writing-mode:vertical-rl;font-family:var(--font-serif);font-size:25px;letter-spacing:.15em;display:flex;gap:44px;color:var(--gold)}.opening-petals{left:960px;top:160px;width:600px;height:450px}
/* 04 — digital product salon */
.showroom{background:#ece8df}.showroom-heading{position:absolute;left:120px;top:148px;z-index:4}.showroom-heading h2{font-size:80px;margin:25px 0 20px}.showroom-heading>p:last-child{font-size:28px;line-height:1.9;width:360px;color:var(--text-2)}.gallery-watermark{position:absolute;left:450px;top:20px;font-size:820px;font-family:var(--font-serif);line-height:1;color:#e1dacb;pointer-events:none;opacity:.55}.gallery-stage{position:absolute;left:420px;top:100px;width:970px;height:775px;overflow:hidden}.gallery-plinth{position:absolute;left:50px;top:570px;width:890px;height:245px;border-radius:50%;background:linear-gradient(180deg,#ded5c6,#e8e1d5 50%,#d6cabb);box-shadow:0 25px 35px rgba(59,45,29,.1)}.gallery-visual{position:absolute;inset:0;transform-origin:50% 50%;}.gallery-balm{position:absolute;left:90px;top:-30px;width:790px;height:790px;filter:drop-shadow(12px 24px 16px rgba(57,48,38,.2));transform:rotate(-8deg)}.gallery-powder{position:absolute;left:100px;top:70px;width:760px;height:715px;filter:drop-shadow(12px 24px 16px rgba(57,48,38,.2))}.gallery-oil{position:absolute;left:160px;top:80px;width:650px;height:650px;box-shadow:0 20px 55px rgba(59,45,29,.1)}.gallery-oil img{object-fit:contain}.gallery-stage.is-close .gallery-visual{transform-origin:70% 50%}.detail-hotspot{position:absolute;left:605px;top:520px;display:flex;gap:14px;align-items:center;background:rgba(244,238,227,.88);border:1px solid rgba(78,53,29,.25);padding:0 24px 0 12px;min-height:80px;color:var(--ink);border-radius:45px;z-index:10;box-shadow:0 5px 20px rgba(44,33,22,.09)}.detail-hotspot>span{width:56px;height:56px;display:grid;place-items:center;border:1px solid var(--gold);border-radius:50%;font-size:27px}.detail-hotspot small{font-size:23px}.gallery-copy{position:absolute;top:290px;left:1400px;width:405px;z-index:5}.gallery-product-en{font-size:17px;letter-spacing:.19em;color:var(--rouge)}.gallery-copy h3{font-size:57px;margin:20px 0 18px}.gallery-line{font-size:28px;color:var(--rouge);line-height:1.65}.gallery-tabs{display:flex;gap:24px;margin-top:32px;border-bottom:1px solid var(--border)}.gallery-tabs>button{border:0;background:transparent;min-height:80px;font-size:23px;padding:0 3px;color:var(--text-2)}.gallery-tabs>button.selected{border-bottom:2px solid var(--rouge);color:var(--rouge)}.gallery-description{font-size:26px;line-height:1.9;margin-top:18px}.gallery-selling{font-size:20px;color:var(--text-2);line-height:1.9;margin-top:16px}.gallery-copy .small-note{font-size:18px;margin-top:20px;max-width:405px}.gallery-selector{position:absolute;bottom:103px;left:120px;width:1170px;height:106px;display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.gallery-selector>button{border:0;border-top:1px solid var(--border-strong);background:transparent;display:flex;align-items:center;gap:25px;padding:10px 20px;text-align:left;font-size:27px}.gallery-selector>button.selected{background:var(--ivory);border-color:var(--rouge);color:var(--rouge)}.selector-char{font-family:var(--font-serif);font-size:49px;color:var(--gold)}.gallery-selector small{display:block;font-size:13px;letter-spacing:.14em;color:var(--text-2);margin-top:8px}
/* 07 — dreamy editorial campaign */
.flower-main-photograph{position:absolute;right:0;top:0;width:1150px;height:1080px}.flower-main-photograph img{object-position:50% 58%}.flower-soft-veiling{position:absolute;inset:0;background:linear-gradient(90deg,#e5daec 7%,rgba(229,218,236,.96) 34%,transparent 60%)}.flower-film-type{position:absolute;left:120px;top:145px;z-index:4}.flower-film-type>.eyebrow{color:#75516d}.flower-english{font-family:Georgia,serif;font-size:124px;line-height:.94;letter-spacing:-.04em;color:#785a71;margin-top:54px}.flower-english i{font-weight:400}.flower-film-type h2{font-size:72px;line-height:1.4;margin-top:46px;color:#3f3040}.flower-film-type>p:last-child{font-size:25px;color:#725c72;margin-top:34px;max-width:650px}.flower-inset-photo{position:absolute;right:112px;top:120px;width:275px;height:345px;transform:rotate(8deg);box-shadow:0 20px 55px rgba(74,45,72,.15);z-index:3}.flower-inset-photo img{object-fit:cover}.flower-film-caption{position:absolute;left:125px;bottom:140px;display:flex;gap:35px;align-items:center;color:#785a71;font-size:25px;z-index:5}.flower-film-caption b{border-left:1px solid #b29cbb;border-right:1px solid #b29cbb;padding:0 35px;font-weight:400}.flower-side-copy{position:absolute;right:105px;bottom:135px;z-index:5;font-family:var(--font-serif);font-size:31px;color:#473449;line-height:1.6;background:rgba(245,236,246,.9);padding:25px 35px;max-width:560px}.flower-side-copy small{display:block;font-family:var(--font-sans);font-size:16px;color:#725c72;margin-top:15px}
/* 09 — bold cultural collision */
.wufang-film{background:#a53d32!important}.wufang-film>.eyebrow{position:absolute;left:120px;top:137px;color:#efcaa1}.wufang-circle{position:absolute;left:-200px;bottom:-410px;width:1460px;height:1450px;border-radius:50%;background:#e1bc78}.wufang-huge-type{font-family:var(--font-serif);font-size:760px;position:absolute;right:-40px;bottom:-105px;line-height:1;color:rgba(72,16,17,.15);pointer-events:none}.wufang-head{position:absolute;left:120px;top:195px;font-size:82px;line-height:1.3;z-index:6}.wufang-head span{color:#f1cc8e}.wufang-case-stage{position:absolute;left:135px;top:435px;width:900px;height:500px;z-index:4}.wufang-case-main{position:absolute;left:60px;top:-40px;width:445px;height:480px;transform:rotate(-7deg);box-shadow:0 25px 35px rgba(68,31,10,.25)}.wufang-case-main img{object-fit:cover}.wufang-case-secondary{position:absolute;right:70px;top:70px;width:385px;height:400px;transform:rotate(8deg);box-shadow:0 25px 35px rgba(68,31,10,.2)}.wufang-case-secondary img{object-fit:cover}.wufang-statement{position:absolute;left:1120px;top:245px;width:670px;z-index:6}.year-oversize{font-family:Georgia,serif;font-size:120px;font-weight:400;letter-spacing:-.05em;line-height:1;color:#f1cc8e}.wufang-statement h3{font-size:49px;margin:30px 0 23px}.wufang-statement p{font-size:30px;line-height:1.9;color:#f4d9c2}.wufang-switch{display:flex;gap:20px;margin-top:30px}.wufang-switch button{min-height:82px;background:transparent;border:1px solid rgba(245,219,185,.4);font-size:25px;color:#f4d9c2;padding:0 30px}.wufang-switch .selected{background:#f1cc8e;color:#75281f;border-color:#f1cc8e}.wufang-bottom{position:absolute;left:1120px;bottom:130px;width:680px;z-index:6;font-size:23px;color:#edc6a3;line-height:1.7}.wufang-bottom>b{display:block;margin-bottom:5px;color:#f5e8cb;font-size:25px}.wufang-bottom p{font-size:18px;margin-top:20px}
/* 12 — an actual decision instrument */
.decision-room{background:#1a2b29!important}.decision-topline{position:absolute;left:110px;top:125px;right:110px;display:flex;align-items:center;justify-content:space-between}.decision-topline .eyebrow{color:#cdbb96}.restore-compare{display:flex;gap:15px;align-items:center;border:1px solid rgba(229,214,181,.25);background:transparent;padding:0 25px;min-height:80px;font-size:23px;color:#e4d7bc}.restore-compare svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.4}.decision-title{position:absolute;left:110px;top:225px;font-size:60px;line-height:1.3}.decision-title>span{color:#cfb99b;margin-left:40px}.decision-system{position:absolute;left:110px;right:110px;top:342px;height:365px;display:grid;grid-template-columns:1fr 1fr;gap:55px}.route-panel{padding:0 30px 0 0;border-right:1px solid rgba(220,205,178,.2);transition:opacity .45s,background .45s}.route-panel:last-child{border:0;padding:0 0 0 20px}.route-select{display:flex;align-items:center;gap:26px;text-align:left;background:transparent;border:0;color:#f4eee3;width:100%;min-height:95px;padding:0 10px 0 0}.route-select>strong{font-family:Georgia,serif;font-size:75px;font-weight:400;line-height:1;color:#dcafb0}.route-b .route-select>strong{color:#adc0b7}.route-select>span{font-family:var(--font-serif);font-size:35px;line-height:1.4}.route-select small{font-family:var(--font-sans);font-size:20px;color:#bcb8a8;display:block;margin-top:7px}.route-select>i{font-style:normal;margin-left:auto;font-size:38px;color:#cdbb96;line-height:1}.architecture-tree{margin-top:17px;padding:0 55px}.arch-root{font-size:24px;line-height:48px;height:49px;border:1px solid rgba(222,187,171,.4);text-align:center;width:250px;margin:auto;color:#e6d2bf;background:rgba(216,180,156,.055)}.arch-connect{height:24px;display:flex;justify-content:center;position:relative;max-width:520px;margin:auto}.arch-connect::before{content:'';position:absolute;top:0;height:12px;left:50%;border-left:1px solid rgba(219,194,170,.4)}.arch-connect::after{content:'';position:absolute;left:15%;right:15%;top:12px;border-top:1px solid rgba(219,194,170,.4)}.arch-connect>span{width:35%;height:12px;margin-top:12px;border-left:1px solid rgba(219,194,170,.4)}.arch-connect>span:last-child{width:0}.arch-leaves{display:flex;justify-content:space-around;gap:15px}.arch-leaves>span{font-size:20px;color:#bebdad;border:1px solid rgba(214,194,170,.25);padding:5px 20px;min-width:130px;text-align:center;background:rgba(225,209,177,.02)}.decision-benefit{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:21px 0 0 5px}.decision-benefit b{color:#d9c29e;font-size:19px;font-weight:400}.decision-benefit p{color:#e4dfd2;font-size:22px;line-height:1.6;margin-top:7px}.focus-A .route-b,.focus-B .route-a{opacity:.32}.focus-A .route-a .arch-root,.focus-B .route-b .arch-root{background:rgba(211,177,143,.16);border-color:#d8bca1}.focus-A .route-a,.focus-B .route-b{opacity:1}.dimension-system{position:absolute;left:110px;right:110px;top:733px}.dimension-nav{display:grid;grid-template-columns:repeat(8,1fr);gap:0;border-top:1px solid rgba(219,194,170,.25)}.dimension-nav>button{height:80px;min-height:80px;padding:10px 5px;border:0;border-bottom:1px solid rgba(219,194,170,.25);background:transparent;color:#aeb8ad;font-size:20px}.dimension-nav>button.selected{border-top:2px solid #e0bc9f;color:#f4e4cd;background:rgba(235,208,169,.07)}.dimension-results{display:grid;grid-template-columns:250px 1fr 1fr;gap:30px;align-items:center;min-height:103px;padding-top:13px;font-size:24px}.dimension-results>span{color:#bdb7a4;font-size:22px}.dimension-results>div{display:flex;gap:18px;align-items:center;font-size:24px;line-height:1.5;color:#e3dfd3}.dimension-results b{font-family:Georgia,serif;color:#d9aaad;font-weight:400;font-size:33px}.dimension-results>div:last-child b{color:#adc0b7}.decision-bottom{position:absolute;left:110px;right:110px;bottom:107px;display:flex;justify-content:space-between;gap:25px;align-items:center}.decision-bottom>p{font-size:17px;color:#a5aa9f}.recommend-inline-button{min-height:72px;background:transparent;color:#ebd7b8;border:1px solid rgba(222,189,149,.5);padding:0 26px;font-size:22px;display:flex;align-items:center;gap:45px}.inline-recommend{position:absolute;z-index:30;left:300px;right:300px;top:390px;background:#eadfc9;color:#26302a;border:1px solid #c6aa87;box-shadow:0 35px 150px rgba(0,0,0,.4);padding:60px 80px;display:flex;align-items:center;gap:60px}.inline-recommend>b{font-family:var(--font-serif);font-size:44px;white-space:nowrap;color:#7c3841}.inline-recommend p{font-size:28px;line-height:1.8}.inline-recommend>button{position:absolute;right:15px;top:15px;width:70px;height:70px;background:transparent;border:0}.inline-recommend svg{width:28px;height:28px;stroke:currentColor;fill:none;stroke-width:1.4}
/* 14 — original package designed as an object, not a flat card */
.concept-studio{background:#eee7da}.concept-art{position:absolute;left:60px;top:95px;width:1050px;height:880px;perspective:1500px;background:radial-gradient(ellipse at 55% 40%,#f8f0df,transparent 65%)}.concept-art::after{content:'';position:absolute;left:50px;right:-10px;bottom:60px;height:1px;background:rgba(116,90,59,.12);transform:rotate(-6deg)}.concept-art-grain{position:absolute;left:10px;top:180px;width:960px;height:570px;background:#e7ddca;transform:rotate(-7deg);box-shadow:5px 30px 90px rgba(65,45,25,.05);opacity:.55}.concept-watermark{position:absolute;left:-100px;top:0;width:700px;height:700px;opacity:.3}.concept-pack-svg{position:absolute;width:1020px;height:918px;left:0;top:-10px;filter:drop-shadow(8px 26px 16px rgba(68,42,19,.12));overflow:visible}.concept-brand{font-family:var(--font-serif);font-size:42px;fill:#7d343c;letter-spacing:.12em}.concept-en{font-family:Georgia,serif;font-size:15px;fill:#a1845d;letter-spacing:.2em}.concept-desc{font-family:var(--font-sans);font-size:19px;fill:#926f49;letter-spacing:.15em}.concept-tin-brand{font-family:var(--font-serif);font-size:42px;fill:#e5ca99;letter-spacing:.1em}.concept-tin-desc{font-size:16px;fill:#e5ca99;font-family:var(--font-sans);letter-spacing:.1em}.concept-identity{position:absolute;left:50px;bottom:35px;font-size:20px;color:#8b7255;letter-spacing:.1em}.concept-type{position:absolute;left:1190px;right:110px;top:165px}.concept-type h2{font-size:96px;line-height:1.28;margin-top:30px}.concept-proposition{font-size:34px;line-height:1.6;margin-top:30px;color:#574e41}.concept-details{margin-top:33px}.concept-details>div{display:flex;gap:25px;padding:15px 0;border-top:1px solid rgba(114,90,60,.2);align-items:baseline}.concept-details span{font-size:20px;color:#8d6e4e;white-space:nowrap}.concept-details p{font-size:25px;line-height:1.7}.concept-controls{margin-top:18px}.concept-controls>button{display:flex;gap:16px;align-items:center;min-height:80px;padding:0 26px;border:1px solid #ac9271;background:transparent;font-size:24px;color:#774049}.concept-controls svg{width:28px;height:28px;stroke:currentColor;fill:none;stroke-width:1.4}.concept-type .small-note{font-size:18px;margin-top:17px;max-width:600px}
/* 19 — a finite final advertising shot */
.finale-backdrop{--img-pos:55% 50%}.finale-backdrop img{object-fit:cover}.finale-side-light{position:absolute;inset:0;background:linear-gradient(115deg,rgba(12,7,12,.45) 20%,transparent 58%,rgba(220,145,97,.055));pointer-events:none}.finale-camera{position:absolute;right:65px;top:180px;width:820px;height:775px;transform-origin:65% 70%;}.finale-products{position:absolute;inset:0;width:820px;height:772px;filter:drop-shadow(15px 25px 18px rgba(0,0,0,.5)) brightness(.94)}.finale-ground-shadow{position:absolute;left:50px;right:20px;bottom:55px;height:45px;background:rgba(0,0,0,.65);border-radius:50%;filter:blur(18px)}.finale-copy{position:absolute;left:130px;top:305px;width:930px;z-index:7}.finale-kicker{color:var(--gold);font-size:20px;letter-spacing:.22em;margin-bottom:38px}.finale-copy h2{font-size:87px;line-height:1.48;letter-spacing:0;color:#f2e7d6}.finale-subtitle{font-size:31px;line-height:1.8;color:#cdb9a7;margin-top:39px;letter-spacing:.05em}.thank-you{display:block;font-family:Georgia,serif;font-size:19px;letter-spacing:.4em;color:#a78c71;margin-top:48px}.finale-replay{position:absolute;left:130px;bottom:110px;display:flex;gap:18px;align-items:center;justify-content:center;min-height:84px;padding:0 32px;border:1px solid rgba(209,172,134,.25);color:#d3b89b;background:rgba(32,10,18,.25);font-size:24px;z-index:15}.finale-replay svg{width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:1.3}.finale-petals{left:1050px;top:420px;width:600px;height:500px}
/* Global presentation controls are physical CSS pixels; never shrunk with the canvas. */
.presentation-console{position:fixed;left:50%;transform:translateX(-50%);bottom:14px;z-index:65;display:flex;align-items:center;gap:4px;padding:4px 8px;background:rgba(28,24,26,.92);border:1px solid rgba(223,198,170,.25);border-radius:6px;box-shadow:0 8px 20px rgba(0,0,0,.15);color:#ded0bd;backdrop-filter:blur(8px)}.presentation-console button{height:56px;min-width:56px;border:0;background:transparent;color:inherit;display:flex;align-items:center;justify-content:center;gap:8px;padding:0 14px;font-size:14px;touch-action:none}.presentation-console button:active,.edge-nav:active{background:rgba(225,199,165,.12)}.presentation-console svg,.edge-nav svg,.presentation-menu svg,.read-view svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.35}.console-divider{height:22px;width:1px;background:rgba(232,204,166,.2);margin:0 4px}.page-counter{font-family:Georgia,serif;min-width:69px;text-align:center;font-size:21px;line-height:1}.page-counter i{font-family:var(--font-sans);font-size:12px;font-style:normal;margin-left:7px;color:#958577}.edge-nav{position:fixed;top:50%;transform:translateY(-50%);width:56px;height:90px;border:1px solid rgba(210,190,166,.25);background:rgba(28,22,25,.7);z-index:60;color:#d6c1a5;display:flex;flex-direction:column;gap:10px;align-items:center;justify-content:center;border-radius:4px;touch-action:none;opacity:.8}.edge-nav>span{font-size:10px;letter-spacing:.05em}.edge-prev{left:14px}.edge-next{right:14px}.menu-shade{position:fixed;inset:0;background:rgba(9,8,11,.65);z-index:85;display:flex;justify-content:flex-end}.presentation-menu{width:570px;max-width:100%;padding:28px 28px 60px;background:#222523;color:#e9dcc5;height:100%;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;box-shadow:-20px 0 80px rgba(0,0,0,.3)}.menu-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(210,186,155,.2);margin-bottom:25px;padding-bottom:12px}.menu-head>span{color:#bca27c;font-size:13px;letter-spacing:.2em}.presentation-menu button{min-height:56px;border:0;background:transparent;color:#e9dcc5;text-align:left;touch-action:manipulation}.menu-head>button{width:56px;display:grid;place-items:center}.chapter-links{display:flex;flex-direction:column}.chapter-links>button{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(225,202,168,.12);padding:12px 18px;font-size:20px}.chapter-links small{color:#bca27c;font-size:16px;font-family:Georgia,serif}.menu-tools{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:30px}.menu-tools>button{border:1px solid rgba(225,202,168,.18);display:flex;align-items:center;gap:18px;padding:12px 18px;font-size:16px}.menu-tools button[aria-pressed='true']{background:rgba(225,202,168,.12)}.menu-hint{font-size:13px;color:#9b9b8d;line-height:1.9;margin-top:30px}.notes-overlay{background:#1d2b27;color:#e4d5bc;padding:28px max(30px,calc((100vw - 1200px)/2)) 100px;font-size:23px;line-height:1.9;z-index:75;max-height:58vh;border:1px solid rgba(226,201,160,.3);overscroll-behavior:contain;touch-action:pan-y}.notes-overlay p{margin:14px 0}.notes-overlay strong{color:#daa8a3}.overview{z-index:80;background:#171d1b;backdrop-filter:none;padding:30px 80px 100px;touch-action:pan-y}.overview.open{display:grid;grid-template-columns:repeat(3,1fr);gap:25px;align-content:start}.overview .thumb{border-radius:0;border:1px solid #75624e;box-shadow:0 15px 25px rgba(0,0,0,.2)}.overview .mini-slide .slide{padding:0!important;visibility:visible!important}.overview .mini-slide [data-fx]{opacity:1!important;visibility:visible!important;transform:none!important}.overview .mini-slide .petal{display:none}.read-view{position:fixed;inset:0;background:var(--ivory);color:var(--ink);padding:28px max(26px,calc((100vw - 1000px)/2)) 120px;overflow:auto;z-index:90;touch-action:pan-y;overscroll-behavior:contain;user-select:text}.read-view>button{float:right;position:sticky;top:0;min-height:56px;display:flex;gap:12px;align-items:center;padding:8px 20px;border:1px solid #b09c83;background:var(--ivory);font-size:17px}.read-view>p{color:var(--rouge);font-size:15px;clear:both;padding-top:24px}.read-view h2{font-size:32px;line-height:1.6;margin:24px 0}.read-view>div{white-space:pre-line;line-height:1.95;font-size:20px}.read-view footer{display:flex;gap:24px;margin-top:35px}.read-view footer>button{min-height:56px;padding:0 25px;border:1px solid #b09c83;background:transparent;font-size:18px}.phase-placeholder{padding:170px 130px}.phase-placeholder h2{font-size:90px}.low-motion *, .low-motion *::before,.low-motion *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}[data-preview='1'] .presentation-console,[data-preview='1'] .edge-nav,[data-preview='1'] .deck-header,[data-preview='1'] .deck-footer{display:none!important}[data-preview='1'] [data-fx]{opacity:1!important;visibility:visible!important;transform:none!important}
@media(pointer:coarse){.deck{user-select:none;-webkit-user-select:none}.presentation-console{backdrop-filter:none}}
@media(max-width:700px){.edge-nav{display:none}.presentation-console{bottom:max(12px,env(safe-area-inset-bottom));gap:0;padding:3px;max-width:calc(100vw - 16px)}.presentation-console button{padding:0;min-width:56px;width:56px;height:56px}.presentation-console button>span,.console-desktop{display:none!important}.page-counter{min-width:59px}.console-divider{margin:0 2px}.presentation-menu{padding:18px 22px 50px}.overview.open{grid-template-columns:1fr;padding:20px 20px 90px}.notes-overlay{font-size:19px;padding:22px 25px 100px;max-height:75vh}.presentation-console button[aria-label='立即完成当前动画']{min-width:56px}.read-view h2{font-size:28px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.petal{display:none!important}.line-mask>span{will-change:auto}}
@media print{html,body,#root{height:auto;overflow:visible;width:1920px;background:var(--ivory)}#root{position:static}.deck-host{position:static;display:block;overflow:visible}.deck{transform:none;width:1920px;height:auto;overflow:visible}.slide{position:relative!important;width:1920px;height:1080px;display:block;visibility:visible!important;opacity:1!important;transform:none!important;break-after:page}.slide [data-fx]{opacity:1!important;visibility:visible!important;transform:none!important}.presentation-console,.edge-nav,.menu-shade,.read-view{display:none!important}.deck-header,.deck-footer{display:none!important}@page{size:1920px 1080px;margin:0}}

/* Gate 1 corrections: protect contrast and preserve SVG object coordinates. */
.wufang-circle{left:-220px;bottom:-480px;width:1320px;height:1100px}
.wufang-head{font-weight:400;text-shadow:0 1px 0 rgba(64,17,20,.05)}
/* 02 — a question at architectural scale */
.challenge-store{position:absolute;right:0;top:0;width:790px;height:1080px;--img-pos:50% 48%;filter:saturate(.7)}.challenge-photo-veil{position:absolute;inset:0;background:linear-gradient(90deg,var(--ivory) 0,var(--ivory) 48%,rgba(244,238,227,.2) 68%,transparent 82%)}.challenge-word{position:absolute;left:130px;top:205px}.challenge-word h2{font-size:111px;line-height:1.4;margin-top:50px}.challenge-word h2 span span{color:var(--rouge)}.challenge-word>p:last-child{font-size:35px;margin-top:43px;color:#6a574b}.challenge-path{position:absolute;left:130px;bottom:200px;display:flex;gap:35px;align-items:center;width:1650px;z-index:3}.challenge-path>span{font-size:27px;color:#3e352e;padding:26px 30px 26px 0;border-top:1px solid #ad9475;min-width:350px;background:linear-gradient(90deg,rgba(244,238,227,.98),rgba(244,238,227,.7))}.challenge-path small{font-size:17px;letter-spacing:.08em;color:#987452;display:block;margin-bottom:18px}.challenge-path>i{font-size:30px;color:#a68c6a;font-style:normal}.challenge-note{position:absolute;bottom:120px;left:130px;font-size:19px;z-index:4}
/* 03 — spatial history scroll */
.history-panorama{position:absolute;inset:0;background:#152721;overflow:hidden}.history-landscape{position:absolute;right:-10px;top:0;width:1330px;height:940px;filter:saturate(.55)}.history-landscape img{object-position:50% 40%}.history-night-veil{position:absolute;inset:0;background:linear-gradient(90deg,#14251f 0,rgba(20,37,31,.94) 26%,rgba(20,37,31,.3) 66%),linear-gradient(0deg,#14251f 5%,rgba(20,37,31,.92) 21%,transparent 64%)}.history-main-type{position:absolute;left:120px;top:145px;z-index:3}.history-main-type .eyebrow{color:#c7ae87}.history-main-type h2{font-size:83px;line-height:1.38;margin-top:33px}.history-focus-copy{position:absolute;left:880px;top:295px;z-index:5;max-width:860px;padding:25px 35px;background:rgba(20,37,31,.68);border-left:1px solid rgba(208,181,145,.55)}.history-focus-copy>span{font-family:Georgia,serif;font-size:130px;line-height:1;color:#ddc59c}.history-focus-copy h3{font-size:37px;margin:23px 0 9px}.history-focus-copy p{font-size:25px;color:#c8c0a8}.history-craft-claim{position:absolute;left:125px;top:515px;z-index:3}.history-craft-claim small{font-size:17px;color:#b49a72;letter-spacing:.1em}.history-craft-claim p{font-family:var(--font-serif);font-size:37px;margin:18px 0}.history-craft-claim>span{font-size:24px;line-height:1.8;color:#b5b49e}.scroll-rail{position:absolute;left:120px;right:120px;top:685px;width:1680px;height:200px;color:#a58f6b;opacity:.65}.scroll-moments{position:absolute;left:120px;right:120px;bottom:130px;display:grid;grid-template-columns:repeat(3,1fr);gap:70px;z-index:6}.scroll-moment{border:0;background:transparent;display:flex;flex-direction:column;color:#d0c1a5;padding:22px 25px 22px 0;min-height:190px;align-items:flex-start;text-align:left}.scroll-moment b{font-family:Georgia,serif;font-weight:400;font-size:65px;color:#c1aa85;line-height:1.1}.scroll-moment>span{font-family:var(--font-serif);font-size:26px;margin-top:23px;line-height:1.6}.scroll-moment small{font-size:19px;color:#959d89;margin-top:7px}.scroll-moment.selected b{color:#f2ddba}.scroll-moment.selected{border-top:1px solid #cbb28c}.history-photo-caption{position:absolute;right:125px;top:125px;font-size:16px;color:#c3bba7;opacity:.8}
/* 05 — editorial new product spread */
.practice-lip{position:absolute;right:0;top:0;width:780px;height:1080px;--img-pos:50% 50%}.practice-lip img{object-fit:cover}.practice-copy{position:absolute;left:120px;top:145px;z-index:3;width:1000px}.practice-copy h2{font-size:80px;line-height:1.4;margin-top:32px}.audience-lines{margin-top:38px;width:780px}.audience-lines>div{display:flex;align-items:baseline;gap:30px;border-top:1px solid rgba(126,94,62,.22);padding:21px 0}.audience-lines span{font-family:var(--font-serif);font-size:30px;color:var(--rouge);min-width:170px}.audience-lines p{font-size:27px;color:#66594c}.practice-copy .small-note{font-size:19px;margin-top:22px}.practice-news{position:absolute;left:760px;top:665px;background:#eadcc5;padding:32px 38px;width:720px;z-index:5;box-shadow:0 12px 40px rgba(71,40,30,.06)}.practice-news>span{font-size:17px;letter-spacing:.1em;color:#975043}.practice-news h3{font-size:48px;line-height:1.3;margin:15px 0}.practice-news>p{font-size:27px;line-height:1.65}.practice-news small{font-size:17px;line-height:1.7;color:#7e6c59;display:block;margin-top:18px}
/* 06 — native SVG data story */
.data-story{background:#1b1a1d!important}.data-story-title{position:absolute;left:120px;top:150px;width:580px}.data-story-title>.eyebrow{color:#bda37c}.data-story-title h2{font-size:113px;line-height:1.38;margin-top:43px}.data-hero-value{margin-top:50px;display:flex;flex-wrap:wrap;align-items:baseline;gap:14px;color:#e3c0b0}.data-hero-value strong{font-family:Georgia,serif;font-size:150px;font-weight:400;line-height:1}.data-hero-value>span{font-size:35px}.data-hero-value p{width:100%;font-size:25px;color:#bcb1a4;margin-top:20px;line-height:1.9}.data-hero-value b{font-weight:400;color:#d9aba3;font-size:31px}.data-chart-scene{position:absolute;left:780px;right:105px;top:200px;height:540px}.revenue-svg{width:100%;height:100%;overflow:visible}.svg-gridline{stroke:rgba(231,214,190,.16);stroke-width:1}.svg-tick{fill:#b7ab97;font-family:var(--font-sans);font-size:24px}.svg-value{fill:#ecdfc9;font-family:Georgia,serif;font-size:39px}.svg-year{fill:#beb09a;font-size:27px;font-family:var(--font-sans)}.svg-unit{fill:#b6a68d;font-size:23px;font-family:var(--font-sans)}.revenue-bar{fill:#8a795d}.revenue-bar-1{fill:#a18a68}.revenue-bar-2{fill:#b96f6d}.financial-key-figures{position:absolute;left:865px;right:150px;top:730px;display:flex;justify-content:space-between;gap:65px}.financial-key-figures>div{flex:1;border-top:1px solid rgba(215,190,153,.25);padding-top:23px}.financial-key-figures>div>span{font-size:21px;color:#b7aa96}.financial-key-figures p{display:flex;align-items:baseline;gap:12px;margin-top:8px}.financial-key-figures b{font-family:Georgia,serif;font-weight:400;font-size:62px;color:#e8d7bc}.financial-key-figures small{font-size:28px;color:#baab96}.financial-key-figures em{font-size:21px;color:#bc9990;margin-top:5px;display:block}.data-takeaway{position:absolute;left:120px;bottom:117px;max-width:650px;border-top:1px solid rgba(212,189,156,.26);padding-top:27px}.data-takeaway h3{font-size:31px;white-space:nowrap}.data-takeaway p{font-size:18px;color:#aaa091;margin-top:13px;line-height:1.8}
/* 08 — product detail becomes a communication path */
.flower-mechanism{background:#f4eef1!important}.macro-white-disc{position:absolute;left:-180px;top:120px;width:1040px;height:1000px;border-radius:50%;background:#e9dce4}.flower-macro-product{position:absolute;left:125px;top:150px;width:645px;height:780px;transform:rotate(-5deg);box-shadow:0 20px 45px rgba(93,59,81,.07)}.flower-macro-product img{object-fit:contain}.flower-macro-annotation{position:absolute;left:130px;bottom:115px;font-size:20px;color:#7a6273;letter-spacing:.12em}.mechanism-copy{position:absolute;left:940px;right:115px;top:145px}.mechanism-copy>.eyebrow{color:#7a5271}.mechanism-copy h2{font-size:70px;line-height:1.38;margin-top:30px}.share-path{margin-top:35px}.share-step{width:100%;display:grid;grid-template-columns:55px 110px 1fr;gap:23px;padding:21px 0;border:0;border-top:1px solid #c5afc0;background:transparent;min-height:118px;align-items:center;text-align:left;color:#4e3b4a;transition:background .3s,padding .3s}.share-step>span{font-size:29px;font-family:Georgia,serif;color:#ac879f}.share-step h3{font-size:39px}.share-step b{font-size:24px;font-weight:400;color:#8c5975}.share-step p{font-size:23px;line-height:1.6;margin-top:6px;color:#7a6875}.share-step.selected{background:rgba(212,186,207,.2);padding-left:15px}.flower-lesson{margin-top:30px;display:flex;gap:35px;align-items:center}.flower-lesson>b{font-size:18px;font-weight:400;color:#916379}.flower-lesson p{font-size:28px;color:#57414f}.mechanism-copy .small-note{font-size:18px;margin-top:25px}
/* 10 — comparison rather than a second case-study layout */
.mechanisms-dark-band{position:absolute;top:0;left:0;right:0;height:435px;background:#27282a;color:#eee1d0;padding:142px 120px 0}.mechanisms-dark-band>.eyebrow{color:#bba283}.mechanisms-dark-band h2{font-size:73px;line-height:1.35;margin-top:28px}.logic-mapping{position:absolute;left:120px;top:490px;width:1020px}.logic-mapping>div{display:flex;align-items:center;gap:30px;border-bottom:1px solid #c5b59e;padding:28px 0;font-size:27px}.logic-mapping strong{font-family:var(--font-serif);font-weight:400;font-size:35px;color:#8a4c50;min-width:160px}.logic-mapping>div>span{font-size:28px;white-space:nowrap}.logic-mapping>div>i{color:#a28a6b;font-style:normal}.logic-mapping>p{font-size:24px;color:#7a6857;margin-top:35px;line-height:1.8}.logic-mapping>p>b{display:block;font-family:var(--font-serif);font-weight:400;color:#3f3b32;font-size:31px}.business-proof-boundary{position:absolute;right:110px;top:490px;width:510px;border-left:1px solid #c5b59e;padding-left:40px}.business-proof-boundary>span{font-size:19px;color:#936b53}.business-proof-boundary h3{font-size:34px;margin:20px 0}.wufang-revenue-contrast{display:flex;align-items:center;gap:16px}.wufang-revenue-contrast p{font-family:Georgia,serif;font-size:47px;line-height:1.3}.wufang-revenue-contrast small{font-family:var(--font-sans);display:block;font-size:19px;color:#8c7b67;margin-bottom:8px}.wufang-revenue-contrast span{font-family:var(--font-sans);font-size:17px;margin-left:7px}.wufang-revenue-contrast i{font-style:normal;color:#a38b6a;font-size:30px}.business-proof-boundary>b{font-family:Georgia,serif;color:#9b4c4b;font-size:68px;font-weight:400;line-height:1.1;display:block;margin-top:24px}.business-proof-boundary>p{font-size:19px;color:#7b6e5d;margin-top:9px}.business-proof-boundary>small{font-size:17px;line-height:1.8;display:block;color:#8a7b69;margin-top:20px}.logic-formula{position:absolute;left:120px;bottom:130px;font-family:var(--font-serif);font-size:58px;letter-spacing:.1em;color:#5c4e3c}.logic-formula i{font-style:normal;color:#a48b69;margin:0 25px}
/* 11 — day-in-life journey, data intentionally qualitative */
.journey-world{position:absolute;inset:0;background:#232426;overflow:hidden}.journey-world>.eyebrow{position:absolute;left:120px;top:140px;color:#b7a081}.journey-watermark{position:absolute;left:820px;top:60px;font-size:810px;font-family:var(--font-serif);line-height:1;color:rgba(188,158,116,.055);pointer-events:none}.journey-current-copy{position:absolute;left:125px;top:260px;z-index:3;max-width:1120px}.journey-current-copy>span{font-size:26px;letter-spacing:.08em;color:#c4a88a}.journey-current-copy h2{font-size:82px;line-height:1.4;margin-top:28px}.journey-current-copy h2 em{font-size:61px;color:#d4aaa2}.journey-current-copy>p{font-size:29px;line-height:1.85;color:#bfb3a1;margin-top:33px;max-width:800px}.journey-item-photograph{position:absolute;right:140px;top:130px;width:640px;height:600px;z-index:1}.journey-item-photograph>.img-frame{height:100%}.journey-item-photograph>.img-frame:not(.journey-balm){height:470px;margin-top:100px;box-shadow:0 20px 55px rgba(0,0,0,.2)}.journey-balm{transform:rotate(-12deg);width:640px;height:640px;filter:drop-shadow(20px 24px 25px rgba(0,0,0,.35))}.journey-route{position:absolute;left:120px;top:670px;width:1680px;height:150px;color:#b2926b;opacity:.7}.journey-stations{position:absolute;left:120px;right:120px;bottom:145px;display:grid;grid-template-columns:repeat(4,1fr);gap:45px;z-index:4}.journey-stations>button{background:transparent;border:0;border-top:1px solid rgba(205,181,150,.23);padding:25px 0;color:#d9ccb7;text-align:left;display:flex;flex-direction:column;align-items:flex-start;min-height:150px}.journey-stations small{font-family:Georgia,serif;font-size:35px;color:#a58d72}.journey-stations b{font-family:var(--font-serif);font-size:30px;font-weight:400;margin-top:17px}.journey-stations>button>span{font-size:22px;color:#ada694;margin-top:10px}.journey-stations>button.selected{border-top-color:#d4aaa2}.journey-stations>button.selected small{color:#d6aaa4}.journey-research-note{position:absolute;left:125px;bottom:95px;color:#8f8f80;font-size:18px;line-height:1.6}
/* 13 — strategy reveal is an announcement */
.decision-reveal{background:#73313b!important}.recommendation-ghost{position:absolute;right:10px;top:-120px;font-family:Georgia,serif;font-size:1250px;line-height:1;color:rgba(42,8,20,.15);pointer-events:none}.recommendation-main{position:absolute;left:125px;top:165px;z-index:3}.recommendation-main>.eyebrow{color:#d7b693}.recommendation-main h2{font-size:106px;line-height:1.4;margin-top:40px}.recommendation-main>p{font-size:32px;line-height:1.9;color:#dabdb0;margin-top:35px}.activate-b-button{background:transparent;border:1px solid rgba(228,194,166,.4);color:#e6d0ba;min-height:85px;display:flex;align-items:center;gap:45px;padding:0 28px;font-size:25px;margin-top:30px}.activate-b-button svg{width:25px;height:25px;stroke:currentColor;fill:none;stroke-width:1.3}.recommendation-three{position:absolute;left:125px;right:125px;bottom:135px;display:grid;grid-template-columns:repeat(3,1fr);gap:85px}.recommendation-three>div{border-top:1px solid rgba(221,185,155,.35);padding-top:25px;display:grid;grid-template-columns:60px 1fr;gap:10px 20px}.recommendation-three span{font-family:Georgia,serif;font-size:31px;color:#cba681;grid-row:1/3;padding-top:5px}.recommendation-three h3{font-size:37px}.recommendation-three p{font-size:25px;color:#d1b5a7}.b-conditions{position:absolute;right:120px;top:215px;bottom:305px;width:680px;background:#ede0c9;color:#422e2c;padding:55px 50px;box-shadow:0 25px 65px rgba(35,8,19,.18);z-index:10;animation:conditions-in .6s var(--ease)}@keyframes conditions-in{from{transform:translateX(60px);opacity:0}to{transform:translateX(0);opacity:1}}.b-conditions>span{font-size:16px;letter-spacing:.2em;color:#a47b58}.b-conditions h3{font-size:43px;line-height:1.5;margin-top:25px}.b-conditions ol{padding-left:27px;font-size:25px;margin-top:28px}.b-conditions li{margin:18px 0;line-height:1.7}.b-conditions p{font-size:22px;line-height:1.9;color:#8d6b55;margin-top:25px}.b-conditions>button{position:absolute;right:15px;top:15px;width:70px;height:70px;border:0;background:transparent;display:grid;place-items:center}.b-conditions svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.5}
/* 15 — three routes traced through time */
.roadmap{background:#182725!important}.roadmap-eyebrow{position:absolute;left:120px;top:140px;color:#bfa582}.roadmap-main-title{position:absolute;left:120px;top:205px;display:flex;align-items:center;gap:60px}.roadmap-main-title>span{font-family:Georgia,serif;font-size:210px;line-height:1;color:#c6ad88;letter-spacing:-.07em}.roadmap-main-title h2{font-size:73px;line-height:1.4}.roadmap-restore{position:absolute;right:120px;top:245px;border:1px solid rgba(218,193,157,.3);background:transparent;color:#cab592;display:flex;gap:17px;align-items:center;min-height:80px;padding:0 27px;font-size:24px}.roadmap-restore svg{width:27px;height:27px;stroke:currentColor;fill:none;stroke-width:1.5}.roadmap-svg{position:absolute;left:120px;top:420px;width:1680px;height:170px;stroke:#bba07a;color:#bba07a;opacity:.7}.roadmap-svg circle{fill:#c6ad88;stroke:none}.roadmap-stages{position:absolute;left:120px;right:120px;top:590px;display:grid;grid-template-columns:repeat(3,1fr);gap:80px}.roadmap-step{transition:opacity .5s var(--ease)}.roadmap-step>button{min-height:115px;border:0;background:transparent;text-align:left;padding:0;display:flex;flex-direction:column;align-items:flex-start}.roadmap-step button>span{font-size:26px;color:#bda07a;font-family:Georgia,var(--font-serif)}.roadmap-step h3{font-size:39px;color:#e9dbc3;margin:10px 0 20px}.roadmap-step>p{font-size:26px;color:#b0b5a5;line-height:1.8;margin-top:15px}.roadmap-step>b{font-size:25px;font-weight:400;color:#d1b294;display:block;margin-top:25px}.execution-metrics{position:absolute;left:120px;right:120px;bottom:140px;border-top:1px solid rgba(218,193,157,.22);padding-top:23px;display:flex;justify-content:space-between;gap:20px;color:#b0b49f;font-size:22px}.roadmap-note{position:absolute;left:120px;bottom:93px;color:#8e9886;font-size:18px}
/* 16 — actual large touch targets, no pseudo polling result */
.vote-title{position:absolute;left:120px;top:143px}.vote-title h2{font-size:72px;line-height:1.4;margin-top:28px}.touch-vote-options{position:absolute;left:120px;right:120px;top:420px;height:395px;display:grid;grid-template-columns:1fr 1fr;gap:30px}.touch-vote{display:flex;gap:40px;text-align:left;align-items:flex-start;min-height:395px;padding:46px 40px;background:#eadccb;border:1px solid #c4af92;color:#43372d;transition:background .35s,border .35s,box-shadow .35s}.touch-vote>strong{font-family:Georgia,serif;font-size:142px;font-weight:400;line-height:1;color:#9b4950}.touch-vote h3{font-size:34px;line-height:1.6;max-width:500px;margin:9px 0 20px}.touch-vote p{font-size:27px;line-height:1.8;color:#756352;max-width:500px}.touch-vote div>span{font-size:21px;display:inline-block;margin-top:25px;color:#9b4950;border-top:1px solid rgba(145,91,72,.3);padding-top:13px}.vote-B{background:#dce2d9;border-color:#b0bbaa}.vote-B>strong,.vote-B div>span{color:#587261}.touch-vote.selected{border:3px solid #9b4950;box-shadow:inset 0 0 0 8px rgba(155,73,80,.05)}.vote-B.selected{border-color:#587261;box-shadow:inset 0 0 0 8px rgba(88,114,97,.07)}.vote-status{position:absolute;left:120px;right:120px;bottom:125px;display:flex;justify-content:space-between;align-items:center;gap:50px}.vote-status>p{font-size:21px;color:#84735d;line-height:1.9}.vote-status b{font-size:25px;font-weight:400;color:#9b4950}.vote-status>div{display:flex;gap:30px;align-items:center}.vote-status>div>span{font-family:var(--font-serif);font-size:28px;color:#5d5041}.vote-status button{display:flex;align-items:center;gap:15px;min-height:80px;padding:0 25px;border:1px solid #b59e7f;background:transparent;color:#84654e;font-size:23px}.vote-status svg{width:26px;height:26px;stroke:currentColor;fill:none;stroke-width:1.5}
/* 17 — an open, bright strategic coda, visually independent of the finale */
.conclusion-film{background:#f3eee4!important}.conclusion-stamp{position:absolute;right:-60px;top:160px;font-family:var(--font-serif);font-size:510px;line-height:1;writing-mode:vertical-rl;color:#e9dfce;letter-spacing:.05em;pointer-events:none}.conclusion-flower{position:absolute;right:230px;bottom:15px;width:770px;height:770px;opacity:.3;transform:rotate(-20deg)}.conclusion-real-balm{position:absolute;right:80px;top:235px;width:725px;height:725px;transform:rotate(9deg);filter:drop-shadow(15px 28px 20px rgba(81,61,36,.18));z-index:2}.conclusion-main{position:absolute;left:150px;top:190px;z-index:4}.conclusion-main h2{font-size:127px;line-height:1.35;margin-top:44px}.conclusion-main h2 span span{color:#9b4950}.conclusion-main>p:last-child{font-size:34px;line-height:1.85;color:#6e6152;margin-top:38px}.conclusion-words{position:absolute;left:155px;bottom:230px;display:flex;align-items:center;gap:30px;font-family:var(--font-serif);font-size:33px;color:#8d624b;z-index:4}.conclusion-words i{font-family:var(--font-sans);color:#b59b79;font-size:20px;font-style:normal}.conclusion-recommendation{position:absolute;left:155px;bottom:145px;font-size:26px;border-top:1px solid #c7b399;padding-top:25px;color:#635445;z-index:4}
/* 18 — end credits rather than a generic org chart */
.team-credits{background:#23252a!important}.team-title{position:absolute;left:120px;top:135px}.team-title>.eyebrow{color:#b99d77}.team-title h2{font-size:65px;line-height:1.4;margin-top:24px}.team-leads{position:absolute;left:120px;right:120px;top:365px;display:grid;grid-template-columns:1fr 1fr;gap:90px;border-bottom:1px solid #7e705c;padding-bottom:30px}.team-leads>div{display:flex;gap:24px;align-items:baseline}.team-leads>div>span{font-size:21px;color:#c39e8b;white-space:nowrap}.team-leads h3{font-size:39px;white-space:nowrap;color:#e8ddca}.team-leads p{font-size:23px;color:#a9ab9e;line-height:1.7}.team-grid{position:absolute;left:120px;right:120px;top:505px;display:grid;grid-template-columns:repeat(4,1fr);gap:24px 45px}.member{display:flex;gap:17px;border-top:1px solid rgba(204,185,154,.2);padding-top:20px;min-height:125px}.member>span{font-family:Georgia,serif;font-size:24px;color:#9a866a;margin-top:6px}.member h3{display:inline-block;font-size:32px;margin-right:18px;color:#e0d7c5;line-height:1.5}.member b{font-weight:400;font-size:18px;color:#bd9785;white-space:nowrap}.member p{font-size:22px;line-height:1.65;color:#a1a697;margin-top:12px;max-width:350px}.team-disclaimer{position:absolute;left:120px;right:120px;bottom:113px;padding-top:22px;border-top:1px solid rgba(204,185,154,.2);font-size:19px;color:#a1a18e}
.finale-tiers{position:absolute;inset:0;width:820px;height:772px;filter:drop-shadow(12px 25px 15px rgba(0,0,0,.15))}
/* Full-deck fit refinements */
.wufang-case-stage{top:495px}.wufang-case-main{height:445px}.wufang-case-secondary{top:45px;height:385px;width:370px}
.concept-type{top:150px}.concept-type h2{font-size:87px;line-height:1.23}.concept-proposition{font-size:31px;margin-top:26px}.concept-details{margin-top:26px}.concept-details p{font-size:26px}.concept-type .small-note{font-size:18px;line-height:1.6}

.concept-render{position:absolute;left:85px;top:0;width:890px;height:900px;transition:opacity .65s var(--ease);z-index:2;box-shadow:0 10px 45px rgba(110,78,43,.035)}
.concept-render img{object-fit:cover;object-position:50% 47%}
.concept-art .concept-pack-svg{opacity:0;transition:opacity .65s var(--ease)}
.concept-art.is-structure .concept-render{opacity:0;pointer-events:none}
.concept-art.is-structure .concept-pack-svg{opacity:1}
.concept-identity{z-index:5;background:rgba(244,238,227,.82);padding:8px 14px;bottom:20px;left:95px;font-size:20px}

/* Internal rhythm corrections from rendered review. */
.data-hero-value{margin-top:34px}.data-hero-value strong{font-size:136px}.data-hero-value p{font-size:23px;margin-top:14px;line-height:1.7}.data-hero-value b{font-size:28px}
.roadmap-stages{top:575px}.roadmap-step>p{font-size:25px;line-height:1.65;margin-top:10px}.roadmap-step>b{font-size:24px;margin-top:18px}.execution-metrics{bottom:132px;padding-top:22px;font-size:20px}.roadmap-note{bottom:88px}
.b-conditions>button,.inline-recommend>button{min-width:80px;min-height:80px}
.history-focus-copy{color:#eee0c9;min-width:750px}

.interaction-tools{border-top:1px solid rgba(210,186,155,.2);border-bottom:1px solid rgba(210,186,155,.2);padding:20px 0;margin-top:24px}
.interaction-tools h3{font-family:var(--font-sans);font-size:15px;color:#bda37f;margin-bottom:15px}
.interaction-tools>div{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.interaction-tools button{min-height:56px;border:1px solid rgba(210,186,155,.25);padding:10px 16px;background:transparent;font-size:17px}
.interaction-tools label{font-size:14px;display:block;margin-top:18px;color:#bda37f}
.interaction-tools select{display:block;width:100%;margin-top:8px;min-height:56px;background:#30332d;border:1px solid #867256;color:#f4e8d6;font:inherit;font-size:17px;padding:10px}
.read-view .interaction-tools{color:#573e34;border-color:#c7b399}.read-view .interaction-tools button{color:#6c453d;border-color:#b6a186}.read-view .interaction-tools h3,.read-view .interaction-tools label{color:#8e7054}.read-view .interaction-tools select{background:#e4d9c6;color:#4f3a2c}
.presentation-status{position:fixed;left:50%;bottom:95px;transform:translateX(-50%);max-width:90vw;background:#e9ddc7;color:#493c30;padding:17px 25px;box-shadow:var(--shadow-lg);z-index:100;font-size:16px;line-height:1.7}

/* 4K software renderers: avoid rasterizing moving SVG filter surfaces. */
@media (min-width:3000px){.real-object,.classic-objects,.finale-products,.finale-tiers,.gallery-balm,.gallery-powder,.journey-balm,.conclusion-real-balm{filter:none}.opening-shadow,.finale-ground-shadow{filter:none;opacity:.35}}
