.bwe-tour *,
.bwe-tour *::before,
.bwe-tour *::after{box-sizing:border-box;margin:0;padding:0}
.bwe-tour{
  --cream:#f5f0e6;--cream2:#fdfaf2;--cream3:#ede7d8;--paper:#fff;
  --purple:#9a70d4;--purple-d:#6a48a4;--purple-bg:#2d1a52;
  --coral:#e8845a;--coral-d:#c85535;--sky:#7ab8c8;--olive:#7a9a5a;
  --yellow:#e2ba48;--pink:#e89eb0;
  --ink:#2d2820;--ink-s:#5a5040;--ink-m:#9a9080;
  --border:rgba(45,40,32,0.12);
}
.bwe-tour{scroll-behavior:smooth}
.bwe-tour{font-family:'Fredoka','Trebuchet MS',sans-serif;background:var(--cream);color:var(--ink);-webkit-font-smoothing:antialiased;overflow-x:clip;position:relative}
body.lock-scroll{overflow:hidden}
/* S92 fix: position:sticky inside .bwe-tour requires NO overflow-x:hidden on
   ancestors. Some host pages (index.html, pricing.html, etc.) set
   body{overflow-x:hidden} which silently breaks .scene-stage sticky behavior,
   causing scenes to render at the top of their 240vh container and leave
   huge blank gaps below as the user scrolls. Promote html and body to
   overflow-x:clip when a tour is on the page. clip provides the same visual
   clipping without creating a scroll container, so sticky stays anchored
   to the viewport. Browser support: Chrome 90+, Firefox 81+, Safari 16+. */
html:has(.bwe-tour),
body:has(.bwe-tour){overflow-x:clip}

@keyframes bwt-fadein{from{opacity:0}to{opacity:1}}
@keyframes bwt-hero-rise{from{opacity:0;transform:translateY(18px) scale(1.035)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes bwt-slideup{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@keyframes bwt-pulse{0%,100%{opacity:.6}50%{opacity:1}}
@keyframes bwt-bounce-arrow{0%,100%{transform:translateY(0)}50%{transform:translateY(8px)}}
@keyframes bwt-caret-blink{50%{opacity:0}}
@keyframes bwt-shimmer{0%,100%{opacity:.5}50%{opacity:.9}}
@keyframes bwt-hero-kenburns{from{transform:scale(1.05)}to{transform:scale(1.13)}}/* ───────── CINEMATIC HERO ───────── */

.bwe-tour .hero{position:relative;height:100vh;height:100dvh;min-height:680px;width:100%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#1a1208;color:#fff;opacity:calc(1 - var(--hx, 0) * 0.82)}
.bwe-tour .hero-bg{position:absolute;inset:0;width:100%;height:100%;z-index:0;background:#1a1208;transform:translateY(calc(var(--hx, 0) * 54px));will-change:transform}
.bwe-tour .hero-bg img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.05);filter:saturate(1.05);object-position:center 25%;animation:bwt-hero-kenburns 26s ease-in-out infinite alternate;will-change:transform}
.bwe-tour .hero-bg::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(45,40,32,0.10) 0%,rgba(45,40,32,0.20) 30%,rgba(45,40,32,0.55) 75%,rgba(45,40,32,0.78) 100%);z-index:1}
.bwe-tour .hero-content{position:relative;z-index:2;text-align:center;padding:0 24px;color:#fff;max-width:1100px;animation:bwt-hero-rise 1.4s cubic-bezier(.22,.61,.36,1) both}
.bwe-tour .hero-eye{font-family:'Gaegu',cursive;font-size:20px;letter-spacing:.06em;color:rgba(255,255,255,0.90);margin-bottom:24px;display:inline-flex;align-items:center;gap:10px;font-weight:700}
.bwe-tour .hero-eye .sep{opacity:.55;font-weight:400}
.bwe-tour .hero-eye::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--coral);animation:bwt-pulse 2.4s ease-in-out infinite}
.bwe-tour .hero-h{font-family:'Shrikhand',serif;font-size:clamp(56px,10vw,140px);line-height:.92;letter-spacing:-.03em;color:#fff;margin-bottom:32px;text-shadow:0 4px 30px rgba(0,0,0,0.32)}
.bwe-tour .hero-h .pop{color:#f5c6a8}
.bwe-tour .hero-sub{font-family:'Gaegu',cursive;font-style:normal;font-weight:700;font-size:clamp(25px,3.2vw,38px);color:rgba(255,255,255,0.97);line-height:1.4;max-width:900px;margin:0 auto 38px;text-shadow:0 2px 20px rgba(0,0,0,0.4)}
.bwe-tour .hero-sub .pop{color:#f5c6a8}
.bwe-tour .hero-meta{font-family:'Gaegu',cursive;font-size:18px;color:rgba(255,255,255,0.85);display:inline-flex;gap:14px;align-items:center;flex-wrap:wrap;justify-content:center;font-weight:700}
.bwe-tour .hero-meta strong{color:#fff;font-weight:700}
.bwe-tour .hero-meta .dot{width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,0.5)}
.bwe-tour .hero-cred{position:absolute;bottom:30px;left:50%;transform:translateX(-50%);z-index:3;font-family:'Fredoka',sans-serif;font-size:14px;font-weight:500;color:rgba(255,255,255,0.82);text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px;text-shadow:0 1px 8px rgba(0,0,0,0.5)}
.bwe-tour .hero-cred a{color:#fff;text-decoration:underline dotted;text-underline-offset:3px}
.bwe-tour .hero-logo{position:absolute;top:24px;left:28px;z-index:30;font-family:'Shrikhand',serif;font-size:30px;color:rgba(255,255,255,0.94);text-decoration:none;letter-spacing:-.02em;text-shadow:0 2px 18px rgba(0,0,0,0.55);transition:opacity .2s ease,transform .2s ease;line-height:1}
.bwe-tour .hero-logo:hover{opacity:.82;transform:translateY(-1px)}
@media (max-width:600px){.bwe-tour .hero-logo{top:16px;left:18px;font-size:24px}}

/* Embedded-mode modifier: when the tour is dropped inside another page (e.g. /pricing, /teams)
   that already has its own top nav with logo, hide the hero wordmark. The host page's nav
   handles "back to home". */
.bwe-tour.bwe-tour--embedded .hero-logo{display:none}

/* Embed: hide the bottom pricing-full section on embedded contexts. The host pages already
   have their own conversion surface (pricing widget, gift/teams form, etc), and the tour's
   outro card already includes a "Go Pro for $20 →" CTA. Also removes the duplicate
   data-bwe-pricing mount that would cause bwe-pricing.js to render twice on /pricing. */
.bwe-tour.bwe-tour--embedded .pricing-full{display:none}

/* Letterbox-bar fix for two CF Stream videos that have ~10% top/bottom black bars baked in.
   On the standalone /pro-tour page this is needed because bwe-nav.css (which carries the same
   rule for the rest of the site) isn't loaded. The transform crops the bars precisely:
   scale(1.259) = 1 / (1 - 2 * (37/360)). */
.bwe-tour .vmodal iframe[src*="ad0b0202f1e78b87082d009aa1e2f252"],
.bwe-tour .vmodal iframe[src*="68571250ff0c40cd16a44a90586596ac"]{transform:scale(1.259) !important;transform-origin:center center !important}

/* Lead-in section for embedded contexts. Sits above the hero, gives the host page a quiet
   hand-off into the immersive tour. Inherits .bwe-tour CSS vars so it stays on-palette. */
.bwe-tour .bwt-leadin{background:linear-gradient(180deg,var(--cream2) 0%,var(--cream) 100%);padding:96px 24px 80px;text-align:center;position:relative;border-top:1px solid var(--border)}
.bwe-tour .bwt-leadin-eye{font-family:'Gaegu',cursive;font-size:17px;color:var(--purple-d);letter-spacing:.06em;margin-bottom:16px;display:inline-flex;align-items:center;gap:10px}
.bwe-tour .bwt-leadin-eye::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--coral);animation:bwt-pulse 2.4s ease-in-out infinite}
.bwe-tour .bwt-leadin-h{font-family:'Shrikhand',serif;font-size:clamp(36px,5.6vw,64px);line-height:1.02;letter-spacing:-.025em;color:var(--ink);margin:0 auto 18px;max-width:840px}
.bwe-tour .bwt-leadin-h .pop{color:var(--coral)}
.bwe-tour .bwt-leadin-sub{font-family:'Averia Serif Libre',serif;font-style:italic;font-size:clamp(18px,2.2vw,24px);color:var(--ink-s);line-height:1.5;max-width:600px;margin:0 auto 36px}
.bwe-tour .bwt-leadin-arrow{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:50%;background:var(--ink);color:#fff;font-size:22px;animation:bwt-bounce-arrow 1.8s ease-in-out infinite}
.bwe-tour .hero-scroll{position:absolute;bottom:84px;left:50%;transform:translateX(-50%);z-index:3;font-family:'Gaegu',cursive;font-size:14px;color:rgba(255,255,255,0.85);letter-spacing:.06em;text-transform:uppercase;display:flex;flex-direction:column;align-items:center;gap:8px;text-shadow:0 1px 8px rgba(0,0,0,0.5)}
.bwe-tour .hero-scroll .arr{font-size:24px;animation:bwt-bounce-arrow 1.8s ease-in-out infinite}/* ───────── SCROLLY ENGINE ───────── *//* Each scene is the host for one chapter. The stage inside is sticky and full-bleed.
   Visual layers fade and transform based on data-progress (0-3) set by JS. */

.bwe-tour .scene{position:relative;height:280vh}
.bwe-tour .scene-stage{position:sticky;top:0;height:100vh;width:100%;overflow:hidden;background:var(--cream)}
/* S116 mobile fix: on iOS Safari (and iPad/Android) the browser toolbar
   collapses/expands during scroll, changing the real viewport height
   mid-flight. 100vh locks to the launch (larger) value so the sticky stage is
   the wrong height while the bar is showing, producing a sliver of
   misalignment at scene edges. 100dvh (Dynamic Viewport Height) tracks the
   live viewport so the pinned stage always fills exactly what the user sees.
   Scoped by device (touch) plus small-viewport fallback so phones in either
   orientation and tablets are covered, while a normal desktop window keeps
   100vh. @supports guard means older browsers fall back to the 100vh value
   above with no regression. This is a stability refinement; the cream-blank
   itself is fixed by the opacity override further down (search S116 opacity). */
@supports (height: 1dvh){
  @media (hover: none) and (pointer: coarse), (max-width:600px), (max-height:600px){
    .bwe-tour .scene-stage{height:100dvh}
    .bwe-tour .voice-stage{height:100dvh}
  }
}
/* S97 progressive background: instead of every chapter being a flat, identical
   cream panel, the shared stage color drifts continuously from warm cream at the
   start of the journey toward a faint cool lavender-cream by the last chapter,
   following --tour-p (overall journey progress, set by the scroll engine). The
   whole tour reads as one moving field rather than a stack of separate sections.
   The dark flood stage keeps its own more-specific override. Falls back to plain
   cream where color-mix is unavailable, so nothing regresses. */
@supports (background: color-mix(in oklab, white, black)){
  .bwe-tour .scene-stage{background:color-mix(in oklab, var(--cream), #e6e1f2 calc(var(--tour-p, 0) * 72%))}
  .bwe-tour .scene[data-scene]{background:color-mix(in oklab, var(--cream), #e6e1f2 calc(var(--tour-p, 0) * 72%))}
}
/* Overlap consecutive chapters by 1px so the next stage layer covers the
   previous layer's sub-pixel antialiased edge (kills the faint boundary hairline). */
.bwe-tour .scene[data-scene] + .scene[data-scene]{margin-top:-1px}
.bwe-tour .scene-canvas{position:absolute;inset:0;width:100%;height:100%}
.bwe-tour .scene[data-scene] .scene-canvas{transform:translateY(calc(var(--q, 0) * -14px)) scale(calc(1 + var(--q, 0) * 0.03));transform-origin:center center;opacity:min(clamp(0, calc((var(--sp, 0) - 0.14) / 0.13), 1), clamp(0, calc((0.86 - var(--sp, 0)) / 0.13), 1));will-change:transform,opacity}
.bwe-tour .scene-layer{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity .7s ease,transform .8s cubic-bezier(.22,.61,.36,1);will-change:opacity,transform}
.bwe-tour .scene-layer.is-bg img{width:100%;height:100%;object-fit:cover;display:block}
.bwe-tour .scene-layer.is-bg::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(45,40,32,0.08) 0%,rgba(45,40,32,0.20) 45%,rgba(45,40,32,0.62) 100%)}
.bwe-tour .scene-layer.is-paper{background:var(--cream)}
.bwe-tour .scene-layer.is-paper::before{content:'';position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0.18 0 0 0 0 0.16 0 0 0 0 0.13 0 0 0 0 0.04 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");opacity:.5;mix-blend-mode:multiply}/* Layer visibility per state: list states the layer is visible in, comma-separated */

.bwe-tour .scene[data-progress="0"] .scene-layer[data-on~="0"],
.bwe-tour .scene[data-progress="1"] .scene-layer[data-on~="1"],
.bwe-tour .scene[data-progress="2"] .scene-layer[data-on~="2"],
.bwe-tour .scene[data-progress="3"] .scene-layer[data-on~="3"]{opacity:1}/* Text overlay on every scene. Glass card, positioned via .pos-* classes. */

.bwe-tour .scene-text{position:absolute;z-index:5;max-width:380px;padding:24px 26px;background:rgba(245,240,230,0.94);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border-radius:16px;border:1px solid rgba(255,255,255,0.4);box-shadow:0 16px 42px rgba(45,40,32,0.18);pointer-events:none}
/* S97 flow: the label cards fade in as a scene enters instead of appearing fully
   formed, and (on desktop) drift slower than the scroll for depth, so they feel
   like they float in the moving field rather than sitting in fixed boxes. Both
   are driven by --sp, which the engine sets per scene and forces to 1 under
   reduced motion, so reduced-motion readers always see the card fully visible. */
.bwe-tour .scene-text{opacity:min(clamp(0, calc((var(--sp, 0) - 0.12) / 0.12), 1), clamp(0, calc((0.88 - var(--sp, 0)) / 0.12), 1))}
@media (min-width:769px){
  .bwe-tour .scene-text{transform:translateY(calc((0.5 - var(--sp, 0)) * 30px))}
}
/* Reduced motion: the engine does not publish --sp, so the bloom envelopes above
   would resolve to 0 and hide content. Force the scene canvas and the labels fully
   visible so reduced-motion readers see a complete, static tour. */
@media (prefers-reduced-motion: reduce){
  .bwe-tour .scene-canvas{opacity:1}
  .bwe-tour .scene-text{opacity:1}
}
/* S116 opacity: the cream-blank fix for touch devices. The scene-canvas and
   scene-text opacity above are driven by --sp (a continuous scroll value the
   engine writes every frame). At the entry and exit of each scene --sp sits
   in the fade band, so the canvas is fully transparent and the cream stage
   shows through. On desktop this is a smooth crossfade between chapters. On a
   phone or tablet, momentum/rubber-band scrolling fires scroll events sparsely
   and the heavier per-frame repaint drops frames, so --sp gets stuck in the
   fade band and the canvas STAYS at opacity 0: a sustained blank to cream,
   worst on a fast flick or a scroll-up. Scoped by device, not width, so a
   phone in LANDSCAPE (wide viewport, same weak GPU) is still covered. Forcing
   both to opacity 1 removes the scroll-linked crossfade on touch devices
   entirely. The discrete data-progress reveals still tell the story, and
   consecutive scenes overlap by 1px over an opaque stage, so transitions read
   as a clean slide with no cream gap. Same approach the reduced-motion block
   above already uses. Desktop (hover + fine pointer, normal window) untouched. */
@media (hover: none) and (pointer: coarse), (max-width:600px), (max-height:600px){
  .bwe-tour .scene[data-scene] .scene-canvas{opacity:1}
  .bwe-tour .scene-text{opacity:1}
}
.bwe-tour .scene-text.is-dark{background:rgba(20,18,14,0.82);border-color:rgba(255,255,255,0.10);color:#fff}
.bwe-tour .scene-text .st-tag{font-family:'Gaegu',cursive;font-size:15px;color:var(--purple-d);letter-spacing:.08em;text-transform:uppercase;margin-bottom:10px;display:inline-flex;align-items:center;gap:8px;font-weight:700}
.bwe-tour .scene-text.is-dark .st-tag{color:#f5c6a8}
.bwe-tour .scene-text .st-tag::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--coral)}
.bwe-tour .scene-text .st-h{font-family:'Shrikhand',serif;font-size:clamp(26px,2.8vw,38px);line-height:1.04;letter-spacing:-.018em;color:var(--ink);margin-bottom:13px}
.bwe-tour .scene-text.is-dark .st-h{color:#fff}
.bwe-tour .scene-text .st-h .pop{color:var(--coral)}
.bwe-tour .scene-text .st-h .pop2{color:var(--purple-d)}
.bwe-tour .scene-text.is-dark .st-h .pop2{color:#c4a5e8}
.bwe-tour .scene-text .st-h .pop3{color:var(--olive)}
.bwe-tour .scene-text.is-dark .st-h .pop3{color:#a8c98a}
.bwe-tour .scene-text .st-body{font-family:'Fredoka',sans-serif;font-weight:400;font-size:18px;color:var(--ink-s);line-height:1.55}
.bwe-tour .scene-text.is-dark .st-body{color:rgba(255,255,255,0.92)}

.bwe-tour .pos-bl{bottom:60px;left:40px}
.bwe-tour .pos-tr{top:60px;right:40px}
.bwe-tour .pos-br{bottom:60px;right:40px}
.bwe-tour .pos-tl{top:60px;left:40px}
.bwe-tour .pos-tc{top:60px;left:50%;transform:translateX(-50%);text-align:center}
.bwe-tour .pos-bc{bottom:60px;left:50%;transform:translateX(-50%);text-align:center}/* Per-chapter text-card sizing/position overrides so they never collide with centered visuals */

.bwe-tour .scene[data-scene="2"] .scene-text{max-width:380px;padding:22px 24px}
.bwe-tour .scene[data-scene="2"] .scene-text .st-h{font-size:clamp(24px,2.2vw,32px)}
.bwe-tour .scene[data-scene="2"] .scene-text .st-body{font-size:18px}
.bwe-tour .scene[data-scene="3"] .scene-text{max-width:380px;padding:22px 24px}
.bwe-tour .scene[data-scene="3"] .scene-text .st-h{font-size:clamp(24px,2.2vw,32px)}
.bwe-tour .scene[data-scene="3"] .scene-text .st-body{font-size:18px}
.bwe-tour .scene[data-scene="6"] .scene-text{max-width:380px}/* Tiny chapter index marker in opposite corner */

.bwe-tour .scene-index{position:absolute;z-index:4;font-family:'Gaegu',cursive;font-size:15px;letter-spacing:.18em;text-transform:uppercase;color:rgba(245,240,230,0.75);text-shadow:0 1px 8px rgba(0,0,0,0.4);font-weight:700}
.bwe-tour .scene-index.is-on-paper{color:#6f6450;text-shadow:none}
/* S94 r2: the Weave scene puts a name in all four corners, so move ITS chapter
   index to top-center where nothing collides. Scoped to the weave scene (it is the
   only one with corner name tags) so it stays correct on every page that hosts the
   tour, regardless of that scene's number in the local sequence. */
.bwe-tour .scene:has(.s3-cell-tag) .scene-index.idx-tr{right:auto; left:50%; transform:translateX(-50%); top:20px}
.bwe-tour .idx-tl{top:30px;left:36px}
.bwe-tour .idx-tr{top:30px;right:36px}
.bwe-tour .idx-bl{bottom:30px;left:36px}
.bwe-tour .idx-br{bottom:30px;right:36px}/* Progress rail on the right edge */

.bwe-tour .progress{position:fixed;top:50%;right:22px;transform:translateY(-50%);z-index:300;display:flex;flex-direction:column;gap:14px;opacity:0;transition:opacity .4s ease;pointer-events:none}
.bwe-tour .progress.is-on{opacity:1;pointer-events:auto}
.bwe-tour .progress-dot{width:11px;height:11px;border-radius:50%;background:rgba(245,240,230,0.55);border:1.5px solid rgba(0,0,0,0.15);cursor:pointer;transition:all .25s ease}
.bwe-tour .progress-dot:hover{background:rgba(245,240,230,0.85)}
.bwe-tour .progress-dot.is-active{background:var(--coral);border-color:var(--coral);transform:scale(1.3);box-shadow:0 0 0 5px rgba(232,132,90,0.22)}/* ───────── CHAPTER 1: A blank page ───────── */

.bwe-tour .s1-paper{display:flex;align-items:center;justify-content:center}
.bwe-tour .s1-title{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1;font-family:'Shrikhand',serif;font-size:clamp(120px,18vw,260px);color:rgba(232,132,90,0.10);letter-spacing:-.04em;line-height:.85;pointer-events:none;user-select:none;transition:color .8s ease,transform .8s ease;white-space:nowrap}
.bwe-tour .scene[data-progress="3"] .s1-title{color:rgba(232,132,90,0.16);transform:translate(-50%,-50%) scale(1.06)}
.bwe-tour .s1-cards{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:32px;flex-wrap:wrap;padding:0 60px;z-index:2}
.bwe-tour .s1-card{background:var(--paper);border:1.5px solid var(--border);border-radius:10px;padding:12px 12px 18px;box-shadow:0 20px 46px rgba(45,40,32,0.18);width:260px;position:relative;transform:translateY(60px) rotate(-2deg) scale(.92);opacity:0;transition:transform 1s cubic-bezier(.22,.61,.36,1),opacity .6s ease}
.bwe-tour .s1-card::before{content:'';position:absolute;top:-1px;left:36%;right:36%;height:14px;background:rgba(232,132,90,0.38);border:1px solid rgba(232,132,90,0.50);border-top:none;border-radius:0 0 5px 5px;z-index:2}
.bwe-tour .s1-card:nth-child(2)::before{background:rgba(154,112,212,0.38);border-color:rgba(154,112,212,0.50)}
.bwe-tour .s1-card:nth-child(3)::before{background:rgba(122,154,90,0.38);border-color:rgba(122,154,90,0.50)}
.bwe-tour .s1-card:nth-child(2){transform:translateY(60px) rotate(1.2deg) scale(.92)}
.bwe-tour .s1-card:nth-child(3){transform:translateY(60px) rotate(-.5deg) scale(.92)}
.bwe-tour .scene[data-progress="1"] .s1-card:nth-child(1),
.bwe-tour .scene[data-progress="2"] .s1-card:nth-child(1),
.bwe-tour .scene[data-progress="2"] .s1-card:nth-child(2),
.bwe-tour .scene[data-progress="3"] .s1-card{opacity:1;transform:translateY(0) rotate(var(--r,-1deg)) scale(1)}
.bwe-tour .s1-card:nth-child(1){--r:-1.6deg}
.bwe-tour .s1-card:nth-child(2){--r:1.4deg}
.bwe-tour .s1-card:nth-child(3){--r:-.5deg}
.bwe-tour .s1-photo{width:100%;height:200px;border-radius:6px;overflow:hidden;background:var(--cream3);margin-bottom:12px;position:relative;border:1.5px solid rgba(45,40,32,0.08)}
.bwe-tour .s1-photo img{width:100%;height:100%;object-fit:cover;display:block;object-position:center 30%}
.bwe-tour .s1-photo-tag{position:absolute;top:8px;left:8px;font-family:'Gaegu',cursive;font-size:11px;color:#fff;background:rgba(0,0,0,0.55);padding:3px 9px;border-radius:100px;letter-spacing:.04em;text-transform:uppercase;backdrop-filter:blur(8px)}
.bwe-tour .s1-card-name{font-family:'Shrikhand',serif;font-size:22px;color:var(--ink);line-height:1.06;letter-spacing:-.013em;margin-bottom:5px;padding:0 4px}
.bwe-tour .s1-card-meta{font-family:'Fredoka',sans-serif;font-size:16px;font-weight:500;color:var(--ink-s);padding:0 4px}/* ───────── CHAPTER 2: Finding a story ───────── */

.bwe-tour .s2-montage{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(5,1fr);gap:8px;padding:8px}
.bwe-tour .s2-mont{position:relative;overflow:hidden;border-radius:6px;background:var(--cream3);box-shadow:0 4px 12px rgba(0,0,0,0.30);transition:transform .9s cubic-bezier(.22,.61,.36,1),opacity .6s ease,filter 1.1s cubic-bezier(.22,.61,.36,1);filter:grayscale(.92) brightness(.32) blur(.5px)}
.bwe-tour .s2-mont.is-lit{filter:grayscale(0) brightness(1) blur(0)}
.bwe-tour .s2-mont img{width:100%;height:100%;object-fit:cover;display:block;object-position:center 28%}
.bwe-tour .s2-mont::before{content:'';position:absolute;inset:0;background:rgba(20,18,14,0.42);transition:background .9s ease;z-index:1}
.bwe-tour .s2-mont.is-lit::before{background:rgba(20,18,14,0.06)}
.bwe-tour .scene[data-progress="1"] .s2-mont::before,
.bwe-tour .scene[data-progress="2"] .s2-mont::before,
.bwe-tour .scene[data-progress="3"] .s2-mont::before{background:rgba(20,18,14,0)}
.bwe-tour .scene[data-progress="1"] .s2-mont,
.bwe-tour .scene[data-progress="2"] .s2-mont,
.bwe-tour .scene[data-progress="3"] .s2-mont{filter:grayscale(0) brightness(1) blur(0)}
.bwe-tour .scene[data-progress="2"] .s2-mont:not(.is-target),
.bwe-tour .scene[data-progress="3"] .s2-mont:not(.is-target){opacity:0;transform:scale(.4)}
.bwe-tour .s2-mont.is-target{box-shadow:0 0 0 0 rgba(232,132,90,0)}
.bwe-tour .scene[data-progress="1"] .s2-mont.is-target{box-shadow:0 0 0 4px rgba(232,132,90,0.75),0 8px 24px rgba(0,0,0,0.4);transition:box-shadow .6s ease .2s}/* Search bar */

.bwe-tour .s2-search{position:absolute;top:8%;left:50%;transform:translate(-50%,-30px);z-index:6;width:min(720px,86vw);background:rgba(245,240,230,0.96);backdrop-filter:blur(18px);border:1.5px solid rgba(255,255,255,0.5);border-radius:18px;padding:18px 24px;display:flex;align-items:center;gap:14px;box-shadow:0 18px 48px rgba(0,0,0,0.30);opacity:0;transition:opacity .6s ease,transform .8s cubic-bezier(.22,.61,.36,1)}
.bwe-tour .s2-search::before{content:'pro search';position:absolute;top:-14px;left:22px;background:var(--purple);color:#fff;font-family:'Gaegu',cursive;font-size:13px;padding:4px 12px;border-radius:100px;letter-spacing:.08em;text-transform:uppercase}
.bwe-tour .scene[data-progress="1"] .s2-search,
.bwe-tour .scene[data-progress="2"] .s2-search,
.bwe-tour .scene[data-progress="3"] .s2-search{opacity:1;transform:translate(-50%,0)}
.bwe-tour .s2-search-icon{width:24px;height:24px;color:var(--ink-m);flex-shrink:0}
.bwe-tour .s2-search-q{flex:1;font-family:'Fredoka',sans-serif;font-size:19px;color:var(--ink);overflow:hidden;white-space:nowrap}
.bwe-tour .s2-search-q::after{content:'|';display:inline-block;margin-left:2px;color:var(--coral);animation:bwt-caret-blink 1s steps(1) infinite}/* Norma takeover */

.bwe-tour .s2-hero{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .8s ease}
.bwe-tour .scene[data-progress="3"] .s2-hero{opacity:1}
.bwe-tour .s2-hero img{width:100%;height:100%;object-fit:cover;display:block;object-position:center 28%;transform:scale(calc(1.04 + var(--sp,0) * 0.16));transition:transform .12s linear}
.bwe-tour .s2-hero::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,18,14,0.30) 0%,rgba(20,18,14,0.05) 35%,rgba(20,18,14,0.15) 55%,rgba(20,18,14,0.78) 100%)}/* Quote at top of takeover */

.bwe-tour .s2-quote{position:absolute;left:50%;top:24%;transform:translateX(-50%);z-index:7;max-width:880px;width:92vw;text-align:center;color:#fff;opacity:0;transition:opacity .9s ease .3s;text-shadow:0 2px 18px rgba(0,0,0,0.65);padding:0 20px}
.bwe-tour .scene[data-progress="3"] .s2-quote{opacity:1}
.bwe-tour .s2-quote-body{font-family:'Averia Serif Libre',serif;font-style:italic;font-size:clamp(22px,2.8vw,34px);line-height:1.32;margin-bottom:14px;color:#fff;font-weight:400}
.bwe-tour .s2-quote-attr{font-family:'Gaegu',cursive;font-size:15px;letter-spacing:.06em;color:rgba(255,255,255,0.86)}/* MASSIVE play button at bottom */

.bwe-tour .s2-watch{position:absolute;left:50%;bottom:11%;transform:translateX(-50%) scale(.85);z-index:8;background:none;border:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:16px;pointer-events:auto;opacity:0;transition:opacity .5s ease .5s,transform .8s cubic-bezier(.22,.61,.36,1) .5s;padding:0}
.bwe-tour .scene[data-progress="3"] .s2-watch{opacity:1;transform:translateX(-50%) scale(1)}
.bwe-tour .s2-watch-disc{width:118px;height:118px;border-radius:50%;background:rgba(232,132,90,0.96);display:flex;align-items:center;justify-content:center;box-shadow:0 22px 56px rgba(232,132,90,0.50),0 0 0 8px rgba(255,255,255,0.18),0 0 0 18px rgba(232,132,90,0.18);transition:all .25s ease;position:relative}
.bwe-tour .s2-watch-disc::after{content:'';position:absolute;inset:-6px;border-radius:50%;border:2px solid rgba(255,255,255,0.30);animation:bwt-shimmer 2.4s ease-in-out infinite}
.bwe-tour .s2-watch:hover .s2-watch-disc{background:rgba(232,132,90,1);box-shadow:0 32px 76px rgba(232,132,90,0.65),0 0 0 8px rgba(255,255,255,0.28),0 0 0 22px rgba(232,132,90,0.24);transform:scale(1.06)}
.bwe-tour .s2-watch-tri{width:0;height:0;border-left:28px solid #fff;border-top:18px solid transparent;border-bottom:18px solid transparent;margin-left:8px}
.bwe-tour .s2-watch-label{font-family:'Fredoka',sans-serif;font-size:18px;font-weight:600;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,0.5);letter-spacing:-.01em}
.bwe-tour .s2-watch-meta{font-family:'Fredoka',sans-serif;font-size:15px;font-weight:500;color:rgba(255,255,255,0.85);letter-spacing:.02em;text-shadow:0 1px 6px rgba(0,0,0,0.5);margin-top:-6px}/* ───────── CHAPTER 3: Weaving ───────── */

.bwe-tour .s3-quad{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;width:100%;height:100%}
.bwe-tour .s3-cell{position:relative;overflow:hidden;background:#000}
.bwe-tour .s3-cell img{width:100%;height:100%;object-fit:cover;display:block;object-position:center 28%;transition:transform 1.2s ease,filter .8s ease}
.bwe-tour .scene[data-progress="0"] .s3-cell img{transform:scale(1.15);filter:brightness(.6)}
.bwe-tour .scene[data-progress="1"] .s3-cell img{transform:scale(1.05);filter:brightness(.85)}
.bwe-tour .scene[data-progress="2"] .s3-cell img{transform:scale(1);filter:brightness(.55)}
.bwe-tour .scene[data-progress="3"] .s3-cell img{transform:scale(1);filter:brightness(.45)}
.bwe-tour .s3-cell-tag{position:absolute;z-index:3;font-family:'Shrikhand',serif;letter-spacing:-.01em;color:#fff;text-shadow:0 2px 14px rgba(0,0,0,0.7);font-size:clamp(26px,3vw,42px);line-height:1}
.bwe-tour .s3-cell-tag span{font-family:'Gaegu',cursive;font-size:14px;letter-spacing:.1em;text-transform:uppercase;display:block;color:rgba(255,255,255,0.85);margin-top:6px;text-shadow:0 1px 6px rgba(0,0,0,0.5)}
.bwe-tour .s3-cell:nth-child(1) .s3-cell-tag{top:24px;left:30px}
.bwe-tour .s3-cell:nth-child(2) .s3-cell-tag{top:24px;right:30px;text-align:right}
.bwe-tour .s3-cell:nth-child(3) .s3-cell-tag{bottom:24px;left:30px}
.bwe-tour .s3-cell:nth-child(4) .s3-cell-tag{bottom:24px;right:30px;text-align:right}/* SVG threads layer overlays the quad */

.bwe-tour .s3-threads{position:absolute;inset:0;width:100%;height:100%;z-index:4;pointer-events:none;opacity:.55}
/* Same coral+purple thread as the right rail and the Tapestry cloth: the loom
   weaves the very strand that has been running down the timeline. */
.bwe-tour .s3-threads path{stroke:rgba(154,112,212,0.6);stroke-width:1.3;fill:none;stroke-dasharray:3 6;stroke-dashoffset:260;stroke-linecap:round;transition:stroke-dashoffset 1.2s ease}
.bwe-tour .s3-threads path:nth-of-type(even){stroke:rgba(232,132,90,0.6)}
.bwe-tour .scene[data-progress="2"] .s3-threads path,
.bwe-tour .scene[data-progress="3"] .s3-threads path{stroke-dashoffset:0}/* Center lesson card */

.bwe-tour .s3-lesson{position:absolute;top:54%;left:50%;transform:translate(-50%,-50%) scale(.85);z-index:5;width:min(490px,86vw);background:rgba(255,255,255,0.96);backdrop-filter:blur(22px);border:1.5px dashed var(--purple);border-radius:18px;padding:24px 22px;box-shadow:0 26px 60px rgba(0,0,0,0.35);opacity:0;transition:opacity .7s ease,transform .9s cubic-bezier(.22,.61,.36,1)}
.bwe-tour .scene[data-progress="3"] .s3-lesson{opacity:1;transform:translate(-50%,-50%) scale(1)}
.bwe-tour .s3-lesson-tag{font-family:'Gaegu',cursive;font-size:14px;color:var(--purple-d);text-transform:uppercase;letter-spacing:.08em;background:rgba(154,112,212,0.13);padding:5px 13px;border-radius:100px;display:inline-block;margin-bottom:14px}
.bwe-tour .s3-lq{padding:10px 13px 10px 15px;border-left:3px solid var(--coral);background:rgba(232,132,90,0.06);border-radius:0 8px 8px 0;margin-bottom:9px;display:flex;align-items:flex-start;gap:12px;line-height:1.4}
.bwe-tour .s3-lq[data-acc="purple"]{border-left-color:var(--purple);background:rgba(154,112,212,0.06)}
.bwe-tour .s3-lq[data-acc="olive"]{border-left-color:var(--olive);background:rgba(122,154,90,0.06)}
.bwe-tour .s3-lq[data-acc="sky"]{border-left-color:var(--sky);background:rgba(122,184,200,0.07)}
.bwe-tour .s3-lq-by{font-family:'Gaegu',cursive;font-size:14px;color:var(--ink-m);text-transform:uppercase;letter-spacing:.06em;flex-shrink:0;width:66px;padding-top:2px}
.bwe-tour .s3-lq-body{font-family:'Averia Serif Libre',serif;font-style:italic;font-size:15.5px;color:var(--ink);flex:1;line-height:1.45}
.bwe-tour .s3-lesson-foot{font-family:'Fredoka',sans-serif;font-size:14.5px;font-weight:500;color:var(--ink-s);text-align:right;padding-top:9px;border-top:1px dashed var(--border);margin-top:6px}
.bwe-tour .s3-lesson-foot strong{color:var(--purple-d);font-weight:600}
.bwe-tour .s3-lesson-foot .arr{color:var(--coral);font-weight:600;margin-left:3px}/* ───────── CHAPTER 4: Building the journey ───────── */

.bwe-tour .s4-paper{background:var(--cream);display:flex;align-items:center;justify-content:flex-end;padding:80px 8% 80px 0}
.bwe-tour .s4-rail{position:relative;width:min(640px,90vw);display:flex;flex-direction:column;gap:18px}
.bwe-tour .s4-rail-title{position:absolute;top:-46px;left:0;font-family:'Shrikhand',serif;font-size:28px;color:var(--ink);letter-spacing:-.015em}
.bwe-tour .s4-rail-title .pop{color:var(--purple-d)}
.bwe-tour .s4-step{background:var(--paper);border:1.5px solid var(--border);border-radius:10px;box-shadow:0 8px 22px rgba(45,40,32,0.10);padding:14px 16px;display:flex;align-items:center;gap:14px;position:relative;opacity:0;transform:translateY(34px) rotate(-2deg);transition:opacity .55s ease,transform .8s cubic-bezier(.22,.61,.36,1)}
.bwe-tour .s4-step:nth-child(odd){--r:-.6deg}
.bwe-tour .s4-step:nth-child(even){--r:.5deg}
.bwe-tour .s4-step::before{content:'';position:absolute;top:-10px;left:50%;transform:translateX(-50%) rotate(-2deg);width:42px;height:12px;background:rgba(226,186,72,0.55);border:1px solid rgba(226,186,72,0.7);border-radius:1px;z-index:2}
.bwe-tour .scene[data-progress="0"] .s4-step:nth-child(1),
.bwe-tour .scene[data-progress="1"] .s4-step:nth-child(1),
.bwe-tour .scene[data-progress="1"] .s4-step:nth-child(2),
.bwe-tour .scene[data-progress="1"] .s4-step:nth-child(3),
.bwe-tour .scene[data-progress="2"] .s4-step:nth-child(-n+4),
.bwe-tour .scene[data-progress="3"] .s4-step{opacity:1;transform:translateY(0) rotate(var(--r))}
.bwe-tour .s4-step-num{font-family:'Gaegu',cursive;font-size:15px;color:var(--ink-m);width:34px;flex-shrink:0;text-align:center;letter-spacing:.06em;text-transform:uppercase}
.bwe-tour .s4-step-photo{width:54px;height:54px;border-radius:7px;overflow:hidden;background:var(--cream3);flex-shrink:0;position:relative}
.bwe-tour .s4-step-photo img{width:100%;height:100%;object-fit:cover;display:block}
.bwe-tour .s4-step-letter{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--purple);color:#fff;font-family:'Shrikhand',serif;font-size:26px}
.bwe-tour .s4-step-body{flex:1;min-width:0}
.bwe-tour .s4-step-name{font-family:'Shrikhand',serif;font-size:19px;color:var(--ink);line-height:1.1;letter-spacing:-.012em;margin-bottom:2px}
.bwe-tour .s4-step-country{font-family:'Fredoka',sans-serif;font-size:15px;font-weight:500;color:var(--ink-s)}
.bwe-tour .s4-step-lock{color:var(--ink-m);opacity:.7;flex-shrink:0}
.bwe-tour .s4-toast{position:absolute;bottom:-30px;right:0;background:var(--ink);color:#fff;font-family:'Fredoka',sans-serif;font-size:15px;padding:13px 20px;border-radius:100px;display:flex;align-items:center;gap:10px;box-shadow:0 14px 36px rgba(45,40,32,0.36);opacity:0;transform:translateX(20px);transition:opacity .5s ease,transform .6s ease}
.bwe-tour .scene[data-progress="3"] .s4-toast{opacity:1;transform:translateX(0)}
.bwe-tour .s4-toast-icon{width:18px;height:18px;flex-shrink:0;opacity:.85}
.bwe-tour .s4-toast b{font-weight:600}/* ───────── CHAPTER 5: Sharing ───────── */

.bwe-tour .s5-paper{background:linear-gradient(160deg,var(--cream) 0%,#fdfaf2 100%);display:flex;align-items:center;justify-content:flex-start;padding:60px 40px 60px 8%;gap:60px;flex-wrap:wrap}
.bwe-tour .s5-modal{background:var(--paper);border:1.5px solid var(--border);border-radius:20px;padding:26px 26px 22px;width:340px;max-width:100%;box-shadow:0 22px 50px rgba(45,40,32,0.18);position:relative;transform:rotate(-1.4deg) translateY(40px);opacity:0;transition:opacity .6s ease,transform .8s cubic-bezier(.22,.61,.36,1)}
.bwe-tour .s5-modal::before{content:'';position:absolute;top:-1px;left:36%;right:36%;height:10px;background:rgba(154,112,212,0.36);border:1px solid rgba(154,112,212,0.46);border-top:none;border-radius:0 0 5px 5px}
.bwe-tour .scene[data-progress="0"] .s5-modal,
.bwe-tour .scene[data-progress="1"] .s5-modal,
.bwe-tour .scene[data-progress="2"] .s5-modal,
.bwe-tour .scene[data-progress="3"] .s5-modal{opacity:1;transform:rotate(-1.4deg) translateY(0)}
.bwe-tour .s5-modal-eye{font-family:'Gaegu',cursive;font-size:13px;color:var(--purple-d);text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px}
.bwe-tour .s5-modal-h{font-family:'Shrikhand',serif;font-size:22px;line-height:1.1;color:var(--ink);margin-bottom:14px;letter-spacing:-.012em}
.bwe-tour .s5-modal-h .pop{color:var(--purple-d)}
.bwe-tour .s5-modal-url{display:flex;gap:6px;margin-bottom:14px}
.bwe-tour .s5-modal-url-input{flex:1;background:var(--cream2);border:1.5px solid var(--border);border-radius:8px;padding:9px 12px;font-family:'Fredoka',sans-serif;font-size:13px;color:var(--ink-s);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bwe-tour .s5-modal-url-btn{background:rgba(154,112,212,0.10);border:1.5px solid rgba(154,112,212,0.32);color:var(--purple-d);font-family:'Fredoka',sans-serif;font-size:13px;font-weight:600;padding:9px 14px;border-radius:8px}
.bwe-tour .s5-modal-send{background:var(--purple);color:#fff;font-family:'Fredoka',sans-serif;font-size:14px;font-weight:600;padding:11px 16px;border-radius:8px;display:inline-flex;align-items:center;gap:8px;width:100%;justify-content:center;border:none}
.bwe-tour .s5-modal-anon{margin-top:12px;padding-top:12px;border-top:1px dashed var(--border);font-family:'Fredoka',sans-serif;font-size:13.5px;font-weight:500;color:var(--ink-s);display:flex;justify-content:space-between;align-items:center}
.bwe-tour .s5-modal-toggle{width:34px;height:19px;background:var(--purple);border-radius:100px;position:relative;flex-shrink:0}
.bwe-tour .s5-modal-toggle::after{content:'';position:absolute;top:2px;right:2px;width:15px;height:15px;background:white;border-radius:50%}

.bwe-tour .s5-phone{width:240px;height:480px;background:var(--ink);border-radius:34px;padding:10px;box-shadow:0 30px 70px rgba(45,40,32,0.40);transform:rotate(4deg) translateX(80px);opacity:0;transition:opacity .6s ease,transform .9s cubic-bezier(.22,.61,.36,1) .2s;position:relative}
.bwe-tour .s5-phone::before{content:'';position:absolute;top:10px;left:50%;transform:translateX(-50%);width:80px;height:5px;background:#0a0a0a;border-radius:100px;z-index:3}
.bwe-tour .scene[data-progress="1"] .s5-phone,
.bwe-tour .scene[data-progress="2"] .s5-phone,
.bwe-tour .scene[data-progress="3"] .s5-phone{opacity:1;transform:rotate(4deg) translateX(0)}
.bwe-tour .s5-phone-screen{width:100%;height:100%;background:var(--cream);border-radius:26px;overflow:hidden;position:relative;padding:24px 16px 16px}
.bwe-tour .s5-phone-eye{font-family:'Gaegu',cursive;font-size:11.5px;color:var(--purple-d);text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px}
.bwe-tour .s5-phone-h{font-family:'Shrikhand',serif;font-size:18px;color:var(--ink);line-height:1.05;letter-spacing:-.01em;margin-bottom:14px}
.bwe-tour .s5-phone-h .pop{color:var(--coral)}
.bwe-tour .s5-phone-step{background:var(--paper);border:1px solid var(--border);border-radius:7px;padding:7px;margin-bottom:7px;display:flex;align-items:center;gap:8px;box-shadow:0 2px 5px rgba(45,40,32,0.06)}
.bwe-tour .s5-phone-step-photo{width:36px;height:36px;border-radius:5px;overflow:hidden;background:var(--cream3);flex-shrink:0;position:relative}
.bwe-tour .s5-phone-step-photo img{width:100%;height:100%;object-fit:cover}
.bwe-tour .s5-phone-step-photo .ltr{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--purple);color:#fff;font-family:'Shrikhand',serif;font-size:18px}
.bwe-tour .s5-phone-step-text{flex:1;min-width:0}
.bwe-tour .s5-phone-step-name{font-family:'Shrikhand',serif;font-size:12.5px;color:var(--ink);line-height:1.1;letter-spacing:-.008em}
.bwe-tour .s5-phone-step-meta{font-family:'Fredoka',sans-serif;font-size:11px;font-weight:500;color:var(--ink-s)}
.bwe-tour .s5-phone-step.locked{background:rgba(154,112,212,0.07);border-style:dashed}
.bwe-tour .s5-phone-step.locked .s5-phone-step-name{color:var(--ink-s)}
.bwe-tour .s5-phone-lock{width:11px;height:11px;color:var(--purple-d);flex-shrink:0}

.bwe-tour .s5-annot{position:absolute;font-family:'Gaegu',cursive;font-size:14px;color:var(--ink-s);background:rgba(255,255,255,0.95);backdrop-filter:blur(10px);border:1px dashed var(--border);padding:8px 12px;border-radius:10px;z-index:6;max-width:190px;line-height:1.4;opacity:0;transition:opacity .5s ease}
.bwe-tour .scene[data-progress="2"] .s5-annot,
.bwe-tour .scene[data-progress="3"] .s5-annot{opacity:1}
.bwe-tour .s5-annot-1{top:20%;left:34%;transform:rotate(2deg);transition-delay:.15s}
.bwe-tour .s5-annot-2{bottom:22%;left:32%;transform:rotate(-3deg);background:rgba(122,154,90,0.22);border-color:rgba(122,154,90,0.6);color:#3d5520;font-weight:600;transition-delay:.3s}/* ───────── CHAPTER 6: The year held ───────── */

.bwe-tour .s6-paper{background:linear-gradient(165deg,var(--cream) 0%,#fdfaf2 100%);display:flex;align-items:center;justify-content:center;padding:80px 32px;flex-direction:column;gap:32px}
.bwe-tour .s6-grid{display:grid;grid-template-columns:repeat(3,minmax(180px,260px));gap:18px;width:100%;max-width:880px}
.bwe-tour .s6-cell{background:var(--paper);border:1.5px solid var(--border);border-radius:12px;padding:14px 14px 11px;box-shadow:0 6px 18px rgba(45,40,32,0.08);position:relative;opacity:0;transform:translateY(20px) rotate(var(--r,-.4deg));transition:opacity .55s ease,transform .7s cubic-bezier(.22,.61,.36,1)}
.bwe-tour .s6-cell:nth-child(odd){--r:-.5deg}
.bwe-tour .s6-cell:nth-child(even){--r:.4deg}
.bwe-tour .s6-cell:nth-child(3n){--r:-.2deg}
.bwe-tour .s6-cell::before{content:'';position:absolute;top:-1px;left:34%;right:34%;height:7px;background:rgba(232,132,90,0.32);border:1px solid rgba(232,132,90,0.44);border-top:none;border-radius:0 0 3px 3px}
.bwe-tour .s6-cell:nth-child(3n+1)::before{background:rgba(154,112,212,0.32);border-color:rgba(154,112,212,0.44)}
.bwe-tour .s6-cell:nth-child(3n+2)::before{background:rgba(122,154,90,0.32);border-color:rgba(122,154,90,0.44)}
.bwe-tour .scene[data-progress="1"] .s6-cell:nth-child(-n+4),
.bwe-tour .scene[data-progress="2"] .s6-cell,
.bwe-tour .scene[data-progress="3"] .s6-cell{opacity:1;transform:translateY(0) rotate(var(--r))}
.bwe-tour .s6-cell-faces{display:flex;align-items:center;margin-bottom:8px}
.bwe-tour .s6-cf{width:26px;height:26px;border-radius:50%;overflow:hidden;background:var(--cream3);border:2px solid #fff;box-shadow:0 2px 5px rgba(45,40,32,0.10);margin-left:-7px;flex-shrink:0}
.bwe-tour .s6-cf:first-child{margin-left:0}
.bwe-tour .s6-cf img{width:100%;height:100%;object-fit:cover}
.bwe-tour .s6-cell-name{font-family:'Shrikhand',serif;font-size:15.5px;color:var(--ink);line-height:1.1;letter-spacing:-.01em;margin-bottom:4px}
.bwe-tour .s6-cell-meta{font-family:'Fredoka',sans-serif;font-size:13.5px;font-weight:500;color:var(--ink-s)}
.bwe-tour .s6-banner{max-width:760px;width:100%;background:linear-gradient(160deg,#fdfaff 0%,#f5eeff 100%);border:1.5px solid rgba(154,112,212,0.30);border-radius:18px;padding:32px 34px;text-align:center;position:relative;box-shadow:0 18px 44px rgba(154,112,212,0.20);opacity:0;transform:translateY(20px);transition:opacity .6s ease,transform .8s cubic-bezier(.22,.61,.36,1)}
.bwe-tour .s6-banner::before{content:'';position:absolute;top:-1px;left:38%;right:38%;height:9px;background:rgba(154,112,212,0.36);border:1px solid rgba(154,112,212,0.45);border-top:none;border-radius:0 0 4px 4px}
.bwe-tour .scene[data-progress="3"] .s6-banner{opacity:1;transform:translateY(0)}
.bwe-tour .s6-banner-eye{font-family:'Gaegu',cursive;font-size:16px;color:var(--purple-d);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px;font-weight:700}
.bwe-tour .s6-banner-h{font-family:'Shrikhand',serif;font-size:clamp(28px,3.4vw,42px);color:var(--ink);line-height:1.06;letter-spacing:-.015em;margin-bottom:10px}
.bwe-tour .s6-banner-h .pop{color:var(--coral)}
.bwe-tour .s6-banner-sub{font-family:'Fredoka',sans-serif;font-weight:400;font-size:clamp(17px,1.9vw,21px);color:var(--ink-s);line-height:1.55}/* ───────── FACE RIVER (the library) ───────── */

.bwe-tour .riv{padding:110px 0 90px;position:relative;z-index:1;overflow:hidden;background:linear-gradient(180deg,var(--cream) 0%,#fdfaf2 18%,#fdfaf2 82%,var(--cream) 100%)}
.bwe-tour .riv::before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(circle at 18% 34%,rgba(244,140,98,0.12),transparent 42%),radial-gradient(circle at 80% 58%,rgba(154,112,212,0.12),transparent 45%),radial-gradient(circle at 50% 88%,rgba(122,154,90,0.10),transparent 42%)}
.bwe-tour .riv-header{max-width:880px;margin:0 auto 50px;padding:0 24px;text-align:center;position:relative;z-index:2}
.bwe-tour .riv-eye{font-family:'Gaegu',cursive;font-size:18px;color:var(--purple-d);letter-spacing:.06em;text-transform:uppercase;margin-bottom:16px;display:inline-flex;align-items:center;gap:10px;font-weight:700}
.bwe-tour .riv-eye::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--coral);animation:bwt-pulse 2.4s ease-in-out infinite}
.bwe-tour .riv-h{font-family:'Shrikhand',serif;font-size:clamp(40px,6.4vw,78px);line-height:1.02;letter-spacing:-.025em;color:var(--ink);margin-bottom:20px}
.bwe-tour .riv-h .pop{color:var(--coral)}
.bwe-tour .riv-sub{font-family:'Gaegu',cursive;font-weight:400;font-size:clamp(22px,2.7vw,32px);color:var(--ink);line-height:1.4;max-width:680px;margin:0 auto}
.bwe-tour .riv-close{font-family:'Gaegu',cursive;font-weight:700;font-size:clamp(22px,2.7vw,32px);line-height:1.4;letter-spacing:0;color:var(--ink);margin:14px auto 0;max-width:680px}
.bwe-tour .riv-rows{display:flex;flex-direction:column;gap:16px;position:relative;z-index:1}
.bwe-tour .riv-row{overflow:hidden;mask-image:linear-gradient(90deg,transparent 0%,black 6%,black 94%,transparent 100%);-webkit-mask-image:linear-gradient(90deg,transparent 0%,black 6%,black 94%,transparent 100%)}
/* S92 r4: marquee paused until the section is in view, so the wall LANDS when you arrive
   rather than already drifting before you see it. */
.bwe-tour .riv-track{display:flex;gap:14px;width:max-content;animation:riv-scroll 88s linear infinite;animation-play-state:paused}
.bwe-tour .riv-track-r{animation:riv-scroll-r 88s linear infinite;animation-play-state:paused}
.bwe-tour .riv.is-flooding .riv-track,
.bwe-tour .riv.is-flooding .riv-track-r{animation-play-state:running}
.bwe-tour .riv-row-2 .riv-track{animation-duration:104s}
.bwe-tour .riv-row-3 .riv-track{animation-duration:76s}
.bwe-tour .riv-row:hover .riv-track{animation-play-state:paused}
@keyframes riv-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes riv-scroll-r{from{transform:translateX(-50%)}to{transform:translateX(0)}}
/* S92 r4: per-row entrance offsets so the wall doesn't just pop uniformly, rows
   crash in from different vertical directions and angles, then settle. */
.bwe-tour .riv-face{position:relative;flex-shrink:0;width:120px;height:90px;border-radius:10px;overflow:hidden;background:var(--cream3);border:2px solid rgba(255,255,255,0.92);box-shadow:0 6px 16px rgba(45,40,32,0.16);transition:transform .25s ease,box-shadow .25s ease,opacity .9s ease,border-color .25s ease;opacity:0;--rry:-44px;--rrot:-12deg;transform:scale(.18) translateY(var(--rry)) rotate(var(--rrot))}
.bwe-tour .riv-row-2 .riv-face{--rry:44px;--rrot:12deg}
.bwe-tour .riv-row-3 .riv-face{--rry:-36px;--rrot:-8deg}
.bwe-tour .riv.is-flooding .riv-face{opacity:1;transform:scale(1) translateY(0) rotate(0deg);transition:opacity .65s ease,transform .95s cubic-bezier(.34,1.45,.4,1),box-shadow .25s ease;transition-delay:calc(var(--i,0) * 52ms)}
.bwe-tour .riv-face:hover{transform:scale(1.3) translateY(-6px) !important;box-shadow:0 16px 34px rgba(45,40,32,0.28);border-color:var(--coral);z-index:6;transition-delay:0s !important}
.bwe-tour .riv-face img{width:100%;height:100%;object-fit:cover;display:block}
.bwe-tour .riv-face::after{content:attr(data-name) " \00b7 " attr(data-country);position:absolute;bottom:-36px;left:50%;transform:translateX(-50%) translateY(4px);font-family:'Gaegu',cursive;font-weight:700;font-size:14px;color:var(--ink);background:var(--paper);padding:5px 13px;border-radius:11px;border:1px solid var(--border);box-shadow:0 6px 16px rgba(45,40,32,0.18);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease;z-index:7}
.bwe-tour .riv-face:hover::after{opacity:1;transform:translateX(-50%) translateY(0)}
.bwe-tour .riv-foot{margin-top:48px;text-align:center;font-family:'Fredoka',sans-serif;font-size:18px;font-weight:500;color:var(--ink-s)}
.bwe-tour .riv-foot a{color:var(--purple-d);text-decoration:underline dotted;text-underline-offset:3px;font-weight:600}
.bwe-tour .riv-foot a:hover{color:var(--coral)}
/* ───────── S96: try-it-live links + tapestry "yours" invites ───────── */
.bwe-tour .st-try{display:inline-block;margin-top:16px;font-family:'Fredoka',sans-serif;font-weight:600;font-size:15px;color:var(--purple-d);text-decoration:none;border-bottom:2px solid rgba(154,112,212,0.35);padding-bottom:2px;transition:color .2s ease,border-color .2s ease}
.bwe-tour .st-try:hover{color:var(--coral);border-color:var(--coral)}
.bwe-tour .st-try--on-dark{color:#fff;border-color:rgba(255,255,255,0.55)}
.bwe-tour .st-try--on-dark:hover{color:#f5c6a8;border-color:#f5c6a8}
.bwe-tour .tp-card--invite{border:2px dashed rgba(244,140,98,0.6);background:rgba(244,140,98,0.05);box-shadow:none}
.bwe-tour .tp-card--invite .tp-card-h{color:var(--coral)}
.bwe-tour .tp-av-you{background:var(--coral) !important;color:#fff !important}
/* ───────── S96 PROTOTYPE: dramatic library flood-in (pro-tour) ───────── */
.bwe-tour .flood-scene{height:220vh}
.bwe-tour .flood-scene .scene-stage{background:#16120f}
.bwe-tour .flood-scene .scene-stage::before{display:none}
.bwe-tour .flood-grid{
  position:absolute; top:50%; left:50%; width:120vmax; height:120vmax; z-index:1;
  display:grid; grid-template-columns:repeat(5,1fr); grid-template-rows:repeat(5,1fr); gap:0;
  transform:translate(-50%,-50%) scale(var(--fz,6)); transform-origin:center center;
  will-change:transform;
}
.bwe-tour .flood-cell{position:relative; overflow:hidden}
.bwe-tour .flood-cell img,
.bwe-tour .flood-cell video{width:100%; height:100%; object-fit:cover; display:block}
.bwe-tour .flood-scrim{position:absolute; inset:0; z-index:2; pointer-events:none; background:radial-gradient(125% 85% at 50% 40%, transparent 52%, rgba(0,0,0,0.30) 100%), linear-gradient(to bottom, transparent 58%, rgba(0,0,0,0.46) 100%)}
.bwe-tour .flood-cap{position:absolute; left:0; right:0; bottom:9vh; z-index:3; display:grid; place-items:center; padding:0 24px; pointer-events:none}
.bwe-tour .flood-cap span{grid-area:1/1; font-family:'Shrikhand',serif; font-size:clamp(26px,4.6vw,54px); color:#fff; letter-spacing:-.01em; text-align:center; text-shadow:0 2px 24px rgba(0,0,0,0.6), 0 0 56px rgba(0,0,0,0.45)}
.bwe-tour .flood-cap-a{opacity:clamp(0, calc((0.44 - var(--fp,0)) * 4.5), 1)}
.bwe-tour .flood-cap-b{opacity:clamp(0, calc((var(--fp,0) - 0.40) * 3), 1)}
@media (prefers-reduced-motion: reduce){
  .bwe-tour .flood-cap-a{opacity:0}
  .bwe-tour .flood-cap-b{opacity:1}
}
@media (max-width:768px){
  .bwe-tour .flood-scene{height:180vh}
  .bwe-tour .flood-grid{width:135vmax; height:135vmax}
  .bwe-tour .flood-cap{bottom:7vh}
}
/* ───────── OUTRO ───────── */

.bwe-tour .outro{padding:100px 24px 130px;text-align:center;position:relative}
.bwe-tour .outro-card{max-width:860px;margin:0 auto;background:linear-gradient(160deg,#fdfaff 0%,#f5eeff 100%);border:1.5px solid rgba(154,112,212,0.30);border-radius:24px;padding:72px 44px 60px;position:relative;box-shadow:0 22px 60px rgba(154,112,212,0.22)}
.bwe-tour .outro-card::before{content:'';position:absolute;top:-1px;left:34%;right:34%;height:11px;background:rgba(154,112,212,0.36);border:1px solid rgba(154,112,212,0.46);border-top:none;border-radius:0 0 5px 5px}
.bwe-tour .outro-eye{font-family:'Gaegu',cursive;font-size:18px;color:var(--purple-d);letter-spacing:.06em;text-transform:uppercase;margin-bottom:16px;display:inline-flex;align-items:center;gap:8px;font-weight:700}
.bwe-tour .outro-eye::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--coral)}
.bwe-tour .outro-h{font-family:'Shrikhand',serif;font-size:clamp(40px,6vw,72px);line-height:1.03;letter-spacing:-.022em;color:var(--ink);margin-bottom:22px}
.bwe-tour .outro-h .pop{color:var(--coral)}
.bwe-tour .outro-h .pop2{color:var(--purple-d)}
.bwe-tour .outro-body{font-family:'Averia Serif Libre',serif;font-style:italic;font-size:clamp(20px,2.2vw,24px);color:var(--ink-s);line-height:1.55;max-width:640px;margin:0 auto 32px}
.bwe-tour .outro-buttons{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
.bwe-tour .outro-btn{font-family:'Fredoka',sans-serif;font-size:18px;font-weight:600;padding:17px 34px;border-radius:100px;cursor:pointer;border:1.5px solid transparent;transition:all .25s;text-decoration:none;display:inline-flex;align-items:center;gap:8px}
.bwe-tour .outro-btn-primary{background:var(--coral);color:white;border-color:var(--coral);box-shadow:0 8px 22px rgba(232,132,90,0.34)}
.bwe-tour .outro-btn-primary:hover{background:var(--coral-d);border-color:var(--coral-d);transform:translateY(-1px);box-shadow:0 14px 34px rgba(232,132,90,0.44)}
.bwe-tour .outro-btn-ghost{background:transparent;color:var(--ink-s);border-color:var(--border)}
.bwe-tour .outro-btn-ghost:hover{border-color:var(--purple);color:var(--purple-d)}
.bwe-tour .outro-btn .arr{transition:transform .2s}
.bwe-tour .outro-btn:hover .arr{transform:translateX(4px)}
.bwe-tour .outro-meta{margin-top:28px;font-family:'Fredoka',sans-serif;font-size:16px;font-weight:500;color:var(--ink-s)}
.bwe-tour .outro-meta a{color:var(--purple-d);text-decoration:underline dotted;text-underline-offset:3px}/* Outro pricing block */

.bwe-tour .outro-price{margin:32px auto 32px;max-width:600px;background:rgba(255,255,255,0.7);border:1.5px solid rgba(154,112,212,0.22);border-radius:14px;padding:20px 24px;box-shadow:0 6px 18px rgba(154,112,212,0.10)}
.bwe-tour .outro-price-row{display:grid;grid-template-columns:auto auto 1fr;align-items:baseline;gap:14px;padding:10px 0;text-align:left}
.bwe-tour .outro-price-row + .outro-price-row{border-top:1px dashed rgba(154,112,212,0.22)}
.bwe-tour .outro-price-tag{font-family:'Shrikhand',serif;font-size:20px;color:var(--purple-d);letter-spacing:-.012em}
.bwe-tour .outro-price-row-alt .outro-price-tag{color:var(--coral)}
.bwe-tour .outro-price-amt{font-family:'Shrikhand',serif;font-size:36px;color:var(--ink);letter-spacing:-.02em;line-height:1}
.bwe-tour .outro-price-per{font-family:'Fredoka',sans-serif;font-size:15px;color:var(--ink-s);font-weight:500;margin-left:3px}
.bwe-tour .outro-price-meta{font-family:'Fredoka',sans-serif;font-size:15px;font-weight:500;color:var(--ink-s);text-align:right}
.bwe-tour .outro-price-foot{margin-top:14px;padding-top:12px;border-top:1px dashed rgba(154,112,212,0.22);font-family:'Fredoka',sans-serif;font-size:14.5px;font-weight:500;color:var(--ink-s);text-align:center}
.bwe-tour .outro-price-foot a{color:var(--purple-d);text-decoration:underline dotted;text-underline-offset:3px;margin-left:6px;font-weight:600}
.bwe-tour .outro-price-foot a:hover{color:var(--coral)}/* ───────── VOICES IN THE FIELD (scrollymation) ───────── */

.bwe-tour .voices-intro{padding:80px 24px 30px;background:transparent;position:relative;text-align:center}
.bwe-tour .voices-intro-eye{font-family:'Gaegu',cursive;font-size:17px;color:var(--purple-d);letter-spacing:.08em;text-transform:uppercase;margin-bottom:14px;display:inline-flex;align-items:center;gap:10px;font-weight:700}
.bwe-tour .voices-intro-eye::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--coral);animation:bwt-pulse 2.4s ease-in-out infinite}
.bwe-tour .voices-intro-h{font-family:'Shrikhand',serif;font-size:clamp(34px,5vw,54px);line-height:1.04;letter-spacing:-.02em;color:var(--ink);margin:0 auto 16px;max-width:820px}
.bwe-tour .voices-intro-h .pop{color:var(--coral)}
.bwe-tour .voices-intro-h .pop2{color:var(--purple-d)}
.bwe-tour .voices-intro-sub{font-family:'Fredoka',sans-serif;font-weight:400;font-size:clamp(17px,1.9vw,21px);color:var(--ink-s);line-height:1.55;max-width:640px;margin:0 auto}

/* S92 r4: FULL-BLEED CINEMATIC HERO BAND, used for both the home year-intro and the voices-intro
   on home and pro-tour. A horizontal collage of three corpus GIFs fills the section, with a dark
   legibility gradient and white text overlaid. Variants .tour-hero--warm (coral wash, year band)
   and .tour-hero--cool (purple wash, voices band) so the two bands feel related but distinct. */
.bwe-tour .tour-hero{position:relative;height:min(72vh,720px);min-height:520px;width:100%;overflow:hidden;background:#16120f;color:#fff}
.bwe-tour .tour-hero-media{position:absolute;inset:0;z-index:0;display:flex;gap:0}
.bwe-tour .tour-hero-col{flex:1;position:relative;overflow:hidden}
.bwe-tour .tour-hero-col img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.08);filter:saturate(1.04) brightness(.86);animation:tour-hero-drift 18s cubic-bezier(.55,.06,.49,1) infinite alternate}
.bwe-tour .tour-hero-col:nth-child(2) img{animation-delay:-6s}
.bwe-tour .tour-hero-col:nth-child(3) img{animation-delay:-12s}
@keyframes tour-hero-drift{from{transform:scale(1.06) translate3d(0,0,0)}to{transform:scale(1.14) translate3d(-2%,-2%,0)}}
@media (prefers-reduced-motion:reduce){.bwe-tour .tour-hero-col img{animation:none}}
/* dark legibility wash + color tint */
.bwe-tour .tour-hero-overlay{position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(16,12,10,.78) 0%,rgba(16,12,10,.42) 40%,rgba(16,12,10,.42) 60%,rgba(16,12,10,.86) 100%)}
.bwe-tour .tour-hero-tint{position:absolute;inset:0;z-index:1;pointer-events:none;mix-blend-mode:soft-light;opacity:.7}
.bwe-tour .tour-hero--warm .tour-hero-tint{background:radial-gradient(ellipse at 50% 60%,rgba(232,132,90,.55),transparent 65%)}
.bwe-tour .tour-hero--cool .tour-hero-tint{background:radial-gradient(ellipse at 50% 60%,rgba(154,112,212,.55),transparent 65%)}
/* content */
.bwe-tour .tour-hero-content{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 5vw}
.bwe-tour .tour-hero-eye{font-family:'Gaegu',cursive;font-size:18px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin-bottom:22px;display:inline-flex;align-items:center;gap:10px}
.bwe-tour .tour-hero--warm .tour-hero-eye{color:#f3c8aa}
.bwe-tour .tour-hero--cool .tour-hero-eye{color:#cbb0ef}
.bwe-tour .tour-hero-eye::before{content:'';width:9px;height:9px;border-radius:50%;background:currentColor}
.bwe-tour .tour-hero-h{font-family:'Shrikhand',serif;font-size:clamp(40px,6vw,82px);line-height:1.02;letter-spacing:-.02em;color:#fff;max-width:18ch;margin:0 auto 22px;text-shadow:0 2px 28px rgba(0,0,0,.5)}
.bwe-tour .tour-hero--warm .tour-hero-h .pop{color:#f0a878}
.bwe-tour .tour-hero--warm .tour-hero-h .pop2{color:#c4a5e8}
.bwe-tour .tour-hero--cool .tour-hero-h .pop{color:#c4a5e8}
.bwe-tour .tour-hero--cool .tour-hero-h .pop2{color:#f0a878}
.bwe-tour .tour-hero-sub{font-family:'Fredoka',sans-serif;font-weight:400;font-size:clamp(17px,1.7vw,21px);color:rgba(255,255,255,.92);line-height:1.55;max-width:620px;margin:0 auto;text-shadow:0 1px 12px rgba(0,0,0,.5)}
.bwe-tour .tour-hero-sub--lg{font-family:'Gaegu',cursive;font-weight:700;font-size:clamp(20px,2.5vw,30px);max-width:920px}/* Each voice scene: full-bleed cinematic portrait with overlaid text */

.bwe-tour .voice-scene{position:relative;height:280vh}
.bwe-tour .voice-stage{position:sticky;top:0;height:100vh;width:100%;overflow:hidden;background:#16120f;display:block}
/* S92 r3: FULL-BLEED cinematic voice scene. The portrait fills the entire stage
   (clickable to play); text is overlaid bottom-left over a legibility gradient, so it
   can never overflow or get cut off the way the old side-by-side card layout did.
   The portrait does a continuous Ken Burns zoom driven by --sp (set every scroll frame). */
.bwe-tour .voice-portrait{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;border:none;background:none;cursor:pointer;z-index:0;display:block;overflow:hidden}
.bwe-tour .voice-portrait img{width:100%;height:100%;object-fit:cover;object-position:center 24%;display:block;transform:scale(calc(1.06 + var(--sp,0) * 0.16));transition:transform .12s linear;filter:saturate(1.05) brightness(.96)}
/* dark wash: heavy bottom + left so overlaid text always reads; right stays open to the face */
.bwe-tour .voice-stage::before{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(7deg,rgba(16,12,10,.94) 0%,rgba(16,12,10,.82) 22%,rgba(16,12,10,.42) 46%,rgba(16,12,10,.08) 68%,transparent 100%),linear-gradient(90deg,rgba(16,12,10,.6) 0%,rgba(16,12,10,.12) 42%,transparent 70%)}
/* per-voice color glow */
.bwe-tour .voice-stage::after{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;mix-blend-mode:soft-light;opacity:.85}
.bwe-tour .voice-scene[data-vt="purple"] .voice-stage::after{background:radial-gradient(ellipse at 18% 78%,rgba(154,112,212,.55),transparent 58%)}
.bwe-tour .voice-scene[data-vt="coral"] .voice-stage::after{background:radial-gradient(ellipse at 18% 78%,rgba(232,132,90,.55),transparent 58%)}
.bwe-tour .voice-scene[data-vt="olive"] .voice-stage::after{background:radial-gradient(ellipse at 18% 78%,rgba(122,154,90,.55),transparent 58%)}

/* big play disc, vertically centered on the open (right) side of the portrait */
.bwe-tour .voice-portrait-play{position:absolute;right:13%;top:46%;transform:translateY(-50%);z-index:3;width:104px;height:104px;border-radius:50%;background:rgba(232,132,90,.96);display:flex;align-items:center;justify-content:center;box-shadow:0 20px 54px rgba(0,0,0,.42),0 0 0 8px rgba(255,255,255,.16),0 0 0 18px rgba(232,132,90,.20);transition:transform .25s ease,box-shadow .25s ease;animation:vplay-pulse 3s ease-in-out infinite;pointer-events:none}
.bwe-tour .voice-scene[data-vt="purple"] .voice-portrait-play{background:rgba(154,112,212,.96);box-shadow:0 20px 54px rgba(0,0,0,.42),0 0 0 8px rgba(255,255,255,.16),0 0 0 18px rgba(154,112,212,.20)}
.bwe-tour .voice-scene[data-vt="olive"] .voice-portrait-play{background:rgba(122,154,90,.96);box-shadow:0 20px 54px rgba(0,0,0,.42),0 0 0 8px rgba(255,255,255,.16),0 0 0 18px rgba(122,154,90,.20)}
.bwe-tour .voice-portrait:hover .voice-portrait-play{transform:translateY(-50%) scale(1.07)}
.bwe-tour .voice-portrait-tri{width:0;height:0;border-style:solid;border-width:15px 0 15px 26px;border-color:transparent transparent transparent #fff;margin-left:6px}
@keyframes vplay-pulse{0%,100%{box-shadow:0 20px 54px rgba(0,0,0,.42),0 0 0 8px rgba(255,255,255,.16),0 0 0 18px rgba(232,132,90,.20)}50%{box-shadow:0 20px 54px rgba(0,0,0,.42),0 0 0 8px rgba(255,255,255,.16),0 0 0 26px rgba(232,132,90,.05)}}

/* overlaid text column, anchored bottom-left, guaranteed to fit */
.bwe-tour .voice-content{position:absolute;left:0;bottom:0;z-index:2;width:min(680px,82vw);padding:0 5% 8vh 7%;color:#fff;pointer-events:none}
.bwe-tour .voice-content > *{pointer-events:auto}
.bwe-tour .voice-eye{font-family:'Gaegu',cursive;font-size:17px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:14px;display:inline-flex;align-items:center;gap:9px;font-weight:700;color:#f3c8aa;opacity:0;transform:translateY(10px);transition:opacity .4s ease,transform .45s ease}
.bwe-tour .voice-scene[data-vt="purple"] .voice-eye{color:#cbb0ef}
.bwe-tour .voice-scene[data-vt="olive"] .voice-eye{color:#bcd49a}
.bwe-tour .voice-eye::before{content:'';width:8px;height:8px;border-radius:50%;background:currentColor}
.bwe-tour .voice-h{font-family:'Shrikhand',serif;font-size:clamp(33px,4.3vw,56px);line-height:1.05;letter-spacing:-.022em;color:#fff;margin-bottom:22px;text-shadow:0 2px 24px rgba(0,0,0,.45);opacity:0;transform:translateY(18px);transition:opacity .45s ease,transform .55s cubic-bezier(.22,.61,.36,1)}
.bwe-tour .voice-h .pop{color:#f0a878}
.bwe-tour .voice-scene[data-vt="purple"] .voice-h .pop{color:#c4a5e8}
.bwe-tour .voice-scene[data-vt="olive"] .voice-h .pop{color:#aecb88}
.bwe-tour .voice-quote{font-family:'Averia Serif Libre',serif;font-style:italic;font-size:clamp(19px,2.1vw,27px);line-height:1.4;color:rgba(255,255,255,.96);margin-bottom:16px;padding-left:18px;border-left:4px solid var(--coral);text-shadow:0 1px 14px rgba(0,0,0,.4);opacity:0;transform:translateY(20px);transition:opacity .45s ease,transform .55s cubic-bezier(.22,.61,.36,1)}
.bwe-tour .voice-scene[data-vt="purple"] .voice-quote{border-left-color:var(--purple)}
.bwe-tour .voice-scene[data-vt="olive"] .voice-quote{border-left-color:var(--olive)}
.bwe-tour .voice-quote-2{font-family:'Averia Serif Libre',serif;font-style:italic;font-size:clamp(16px,1.7vw,21px);line-height:1.5;color:rgba(255,255,255,.8);margin-bottom:26px;padding-left:18px;border-left:4px solid rgba(255,255,255,.28);text-shadow:0 1px 12px rgba(0,0,0,.4);opacity:0;transform:translateY(20px);transition:opacity .45s ease,transform .55s cubic-bezier(.22,.61,.36,1)}
.bwe-tour .voice-meta-row{display:flex;align-items:center;gap:22px;flex-wrap:wrap;opacity:0;transform:translateY(14px);transition:opacity .4s ease,transform .5s ease}
.bwe-tour .voice-cred{min-width:0}
.bwe-tour .voice-name{font-family:'Shrikhand',serif;font-size:clamp(20px,2vw,26px);color:#fff;line-height:1.04;letter-spacing:-.015em;margin-bottom:3px;text-shadow:0 1px 12px rgba(0,0,0,.4)}
.bwe-tour .voice-role{font-family:'Fredoka',sans-serif;font-size:15px;font-weight:500;color:rgba(255,255,255,.74);line-height:1.3}
.bwe-tour .voice-cta{display:inline-flex;align-items:center;gap:10px;background:var(--coral);color:#fff;font-family:'Fredoka',sans-serif;font-size:16px;font-weight:600;padding:13px 24px;border-radius:100px;cursor:pointer;border:none;transition:all .22s;box-shadow:0 12px 30px rgba(0,0,0,.34)}
.bwe-tour .voice-cta span{font-weight:500;opacity:.82;font-size:14px}
.bwe-tour .voice-cta:hover{transform:translateY(-1px);filter:brightness(1.06)}
.bwe-tour .voice-scene[data-vt="purple"] .voice-cta{background:var(--purple)}
.bwe-tour .voice-scene[data-vt="olive"] .voice-cta{background:var(--olive)}
.bwe-tour .voice-cta-tri{width:0;height:0;border-style:solid;border-width:7px 0 7px 12px;border-color:transparent transparent transparent #fff}

/* reveal sequence: state 0 eye, state 1 headline, state 2 quote, state 3 quote-2 + credit/CTA */
.bwe-tour .voice-scene[data-progress="0"] .voice-eye,
.bwe-tour .voice-scene[data-progress="1"] .voice-eye,
.bwe-tour .voice-scene[data-progress="2"] .voice-eye,
.bwe-tour .voice-scene[data-progress="3"] .voice-eye{opacity:1;transform:translateY(0)}
.bwe-tour .voice-scene[data-progress="1"] .voice-h,
.bwe-tour .voice-scene[data-progress="2"] .voice-h,
.bwe-tour .voice-scene[data-progress="3"] .voice-h{opacity:1;transform:translateY(0)}
.bwe-tour .voice-scene[data-progress="2"] .voice-quote,
.bwe-tour .voice-scene[data-progress="3"] .voice-quote{opacity:1;transform:translateY(0)}
.bwe-tour .voice-scene[data-progress="3"] .voice-quote-2{opacity:1;transform:translateY(0)}
.bwe-tour .voice-scene[data-progress="3"] .voice-meta-row{opacity:1;transform:translateY(0)}

/* on short viewports the second quote is dropped so nothing crowds */
@media (max-height:720px){
  .bwe-tour .voice-quote-2{display:none}
  .bwe-tour .voice-h{font-size:clamp(28px,3.6vw,44px);margin-bottom:16px}
  .bwe-tour .voice-content{padding-bottom:6vh}
}

.bwe-tour .voice-index{position:absolute;top:30px;left:36px;z-index:4;font-family:'Gaegu',cursive;font-size:15px;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.7);text-shadow:0 1px 8px rgba(0,0,0,.5);font-weight:700}/* ───────── PRICING FULL (mounts bwe-pricing.js widget) ───────── */

.bwe-tour .pricing-full{background:linear-gradient(180deg,#fdfaf2 0%,var(--cream) 100%);position:relative;border-top:1.5px solid rgba(45,40,32,0.06)}
.bwe-tour .pricing-full-eye{font-family:'Gaegu',cursive;font-size:18px;color:var(--purple-d);letter-spacing:.06em;text-transform:uppercase;margin-bottom:16px;display:inline-flex;align-items:center;gap:10px;padding-top:80px;justify-content:center;width:100%;font-weight:700}
.bwe-tour .pricing-full-eye::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--coral);animation:bwt-pulse 2.4s ease-in-out infinite}
.bwe-tour .pricing-full-head{text-align:center;padding:0 24px 8px;font-family:'Shrikhand',serif;font-size:clamp(40px,5.8vw,68px);line-height:1.03;letter-spacing:-.022em;color:var(--ink);max-width:840px;margin:0 auto}
.bwe-tour .pricing-full-head .pop{color:var(--coral)}
.bwe-tour .pricing-full-sub{text-align:center;padding:0 24px 14px;font-family:'Averia Serif Libre',serif;font-style:italic;font-size:clamp(19px,2.1vw,23px);color:var(--ink-s);line-height:1.5;max-width:640px;margin:0 auto 12px}

@media (max-width:1100px){
  .bwe-tour .voice-frame{gap:36px;padding:0 4%}
  .bwe-tour .voice-card{width:320px;max-width:38vw}
  .bwe-tour .voice-h{font-size:clamp(28px,3.8vw,42px)}}

@media (max-width:880px){
  .bwe-tour .voice-scene{height:240vh}
  .bwe-tour .voice-frame{flex-direction:column !important;gap:30px;text-align:center;padding:0 24px}
  .bwe-tour .voice-card{width:min(86vw,360px);max-width:none}
  .bwe-tour .voice-body{max-width:560px;text-align:left}
  .bwe-tour .voices-intro{padding:64px 18px 16px}
  .bwe-tour .pricing-full-eye{padding-top:50px}}/* ───────── VIDEO MODAL ───────── */

.bwe-tour .vmodal{position:fixed;inset:0;z-index:1000;background:radial-gradient(ellipse at center,rgba(45,26,82,0.55) 0%,rgba(8,6,4,0.96) 70%);display:flex;align-items:center;justify-content:center;padding:40px;opacity:0;pointer-events:none;transition:opacity .35s ease,background .5s ease}
.bwe-tour .vmodal[data-tint="purple"]{background:radial-gradient(ellipse at center,rgba(106,72,164,0.62) 0%,rgba(20,12,40,0.96) 65%)}
.bwe-tour .vmodal[data-tint="coral"]{background:radial-gradient(ellipse at center,rgba(232,132,90,0.52) 0%,rgba(40,18,12,0.96) 65%)}
.bwe-tour .vmodal[data-tint="olive"]{background:radial-gradient(ellipse at center,rgba(122,154,90,0.48) 0%,rgba(20,28,16,0.96) 65%)}
.bwe-tour .vmodal.is-open{opacity:1;pointer-events:auto}
.bwe-tour .vmodal-inner{position:relative;width:min(1200px,100%);aspect-ratio:16/9;max-height:90vh;border-radius:14px;overflow:hidden;background:#000;box-shadow:0 30px 80px rgba(0,0,0,0.6)}
.bwe-tour .vmodal-inner #vmodalFrame{position:absolute;inset:0;width:100%;height:100%}
.bwe-tour .vmodal-inner iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
.bwe-tour .vmodal-close{position:absolute;top:-44px;right:0;background:rgba(255,255,255,0.12);border:1.5px solid rgba(255,255,255,0.25);color:#fff;font-family:'Fredoka',sans-serif;font-size:14px;padding:8px 16px;border-radius:100px;cursor:pointer;transition:all .2s ease;z-index:10}
.bwe-tour .vmodal-close:hover{background:rgba(255,255,255,0.22);border-color:rgba(255,255,255,0.4)}
.bwe-tour .vmodal-close:focus-visible{outline:2px solid #fff;outline-offset:3px;background:rgba(255,255,255,0.22)}

/* Keyboard-only focus rings on every interactive control in the tour. Uses :focus-visible
   so mouse users don't see them, only keyboard / screen-reader users navigating by Tab. */
.bwe-tour .voice-play:focus-visible,
.bwe-tour .s2-watch:focus-visible,
.bwe-tour .voice-cta:focus-visible,
.bwe-tour .outro-btn:focus-visible{outline:3px solid var(--purple);outline-offset:4px;border-radius:100px}
.bwe-tour .progress-dot:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:50%}
.bwe-tour .hero-logo:focus-visible{outline:2px solid #fff;outline-offset:6px;border-radius:6px;text-decoration:none}/* ───────── RESPONSIVE ───────── */

@media (max-width:1100px){/* Tighter widths: shrink rail/modal+phone offset so text card has room */
  
  .bwe-tour .s4-paper{padding:60px 4% 60px 0}
  .bwe-tour .s4-rail{width:520px;max-width:50vw}
  .bwe-tour .s5-paper{padding:60px 32px 60px 4%;gap:32px}
  .bwe-tour .s5-modal{width:280px}
  .bwe-tour .s5-phone{width:200px;height:400px}
  .bwe-tour .scene-text{max-width:340px}
  .bwe-tour .scene[data-scene="2"] .scene-text,
.bwe-tour .scene[data-scene="3"] .scene-text{max-width:320px}}

@media (max-width:880px){
  .bwe-tour .progress{display:none}
  .bwe-tour .hero{min-height:560px}
  .bwe-tour .hero-h{font-size:clamp(46px,12vw,80px)}
  .bwe-tour .hero-sub{font-size:22px}
  .bwe-tour .scene{height:200vh}
  .bwe-tour .scene-text{max-width:calc(100% - 36px);padding:20px 22px}
  .bwe-tour .scene-text .st-h{font-size:clamp(24px,6vw,32px)}
  .bwe-tour .scene-text .st-body{font-size:15px}
  .bwe-tour .pos-bl,
.bwe-tour .pos-br,
.bwe-tour .pos-bc{bottom:36px;left:18px;right:18px;transform:none;text-align:left}
  .bwe-tour .pos-tl,
.bwe-tour .pos-tr,
.bwe-tour .pos-tc{top:80px;left:18px;right:18px;transform:none;text-align:left}
  .bwe-tour .scene-index{font-size:12px}
  .bwe-tour .idx-tl,
.bwe-tour .idx-tr{top:18px}
  .bwe-tour .idx-bl,
.bwe-tour .idx-br{bottom:18px}
  .bwe-tour .idx-tl,
.bwe-tour .idx-bl{left:20px}
  .bwe-tour .idx-tr,
.bwe-tour .idx-br{right:20px}/* Chapter 1 */
  
  .bwe-tour .s1-title{font-size:clamp(80px,28vw,160px)}
  .bwe-tour .s1-cards{flex-direction:column;gap:14px;padding:0 24px}
  .bwe-tour .s1-card{width:100%;max-width:320px;padding:10px 10px 14px}
  .bwe-tour .s1-photo{height:140px}/* Chapter 2 */
  
  .bwe-tour .s2-montage{grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(7,1fr);gap:5px;padding:5px}
  .bwe-tour .s2-search{top:5%;padding:13px 16px;width:calc(100% - 24px)}
  .bwe-tour .s2-search-q{font-size:15px}
  .bwe-tour .s2-search::before{font-size:11px}
  .bwe-tour .s2-quote{top:19%}
  .bwe-tour .s2-quote-body{font-size:19px;line-height:1.34}
  .bwe-tour .s2-watch-disc{width:84px;height:84px;box-shadow:0 14px 30px rgba(232,132,90,0.45),0 0 0 6px rgba(255,255,255,0.14),0 0 0 14px rgba(232,132,90,0.16)}
  .bwe-tour .s2-watch-tri{border-left-width:22px;border-top-width:14px;border-bottom-width:14px;margin-left:6px}
  .bwe-tour .s2-watch-label{font-size:15px}
  .bwe-tour .s2-watch-meta{font-size:12px}
  .bwe-tour .s2-watch{bottom:8%;gap:12px}/* Chapter 3 */
  
  .bwe-tour .s3-cell-tag{font-size:18px}
  .bwe-tour .s3-cell-tag span{font-size:12px}
  .bwe-tour .s3-lesson{width:calc(100% - 28px);padding:18px 16px}
  .bwe-tour .s3-lq{padding:7px 11px;gap:10px}
  .bwe-tour .s3-lq-by{font-size:12.5px;width:56px}
  .bwe-tour .s3-lq-body{font-size:13.5px}/* Chapter 4 */
  
  .bwe-tour .s4-paper{justify-content:center;padding:60px 16px}
  .bwe-tour .s4-rail{width:calc(100% - 24px);max-width:440px}
  .bwe-tour .s4-rail-title{font-size:22px;top:-38px}
  .bwe-tour .s4-step{padding:11px 12px;gap:10px}
  .bwe-tour .s4-step-photo{width:44px;height:44px}
  .bwe-tour .s4-step-name{font-size:15px}
  .bwe-tour .s4-step-country{font-size:12px}
  .bwe-tour .s4-toast{font-size:12px;padding:10px 14px;right:0;bottom:-22px}/* Chapter 5 */
  
  .bwe-tour .s5-paper{flex-direction:column;gap:30px;padding:50px 22px;justify-content:center}
  .bwe-tour .s5-modal{width:280px}
  .bwe-tour .s5-phone{width:180px;height:360px;transform:rotate(3deg)}
  .bwe-tour .s5-annot{font-size:12px;max-width:140px;padding:5px 9px}
  .bwe-tour .s5-annot-1{top:6%;right:5%;left:auto}
  .bwe-tour .s5-annot-2{bottom:6%;right:5%;left:auto}/* Chapter 6 */
  
  .bwe-tour .s6-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .bwe-tour .s6-cell{padding:11px 11px 8px}
  .bwe-tour .s6-cell-name{font-size:12.5px}
  .bwe-tour .s6-cell-meta{font-size:10.5px}
  .bwe-tour .s6-cf{width:22px;height:22px}
  .bwe-tour .s6-banner-h{font-size:21px}
  .bwe-tour .s6-banner-sub{font-size:13.5px}/* River */
  
  .bwe-tour .riv{padding:60px 0 50px}
  .bwe-tour .riv-header{margin-bottom:32px;padding:0 18px}
  .bwe-tour .riv-h{font-size:clamp(30px,8vw,46px)}
  .bwe-tour .riv-sub{font-size:20px}
  .bwe-tour .riv-rows{gap:11px}
  .bwe-tour .riv-face{width:96px;height:72px;border-width:2px;border-radius:8px}
  .bwe-tour .riv-track{gap:11px}
  .bwe-tour .riv-foot{margin-top:28px;font-size:14px;padding:0 18px}/* Outro */
  
  .bwe-tour .outro{padding:50px 18px 70px}
  .bwe-tour .outro-card{padding:42px 24px 38px}
  .bwe-tour .outro-price{padding:14px 16px;margin:22px auto}
  .bwe-tour .outro-price-row{grid-template-columns:1fr;gap:4px;text-align:left}
  .bwe-tour .outro-price-amt{font-size:26px}
  .bwe-tour .outro-price-meta{text-align:left;font-size:12.5px}/* Modal */
  
  .bwe-tour .vmodal{padding:20px}
  .bwe-tour .vmodal-close{top:-38px;font-size:13px;padding:6px 14px}}

@media (prefers-reduced-motion: reduce){
  .bwe-tour *,
.bwe-tour *::before,
.bwe-tour *::after{transition:none !important;animation:none !important}
  .bwe-tour .scene-layer,
.bwe-tour .s1-card,
.bwe-tour .s3-lesson,
.bwe-tour .s5-phone,
.bwe-tour .s5-modal,
.bwe-tour .s4-step,
.bwe-tour .s6-cell,
.bwe-tour .s6-banner,
.bwe-tour .s2-search,
.bwe-tour .s2-hero,
.bwe-tour .s2-quote,
.bwe-tour .s2-watch{opacity:1 !important;transform:none !important}
  .bwe-tour .riv-track,
.bwe-tour .riv-track-r{animation:none !important}
  .bwe-tour .s3-threads path{stroke-dashoffset:0 !important}}


/* Honor prefers-reduced-motion fully: kill every animation and transition inside the
   tour. The JS already disables the scroll engine in this mode (sets all scenes to
   data-progress="3"); this block stops the decorative pulses and bounces that would
   otherwise keep running. We keep `transition-duration: 0.001ms` rather than `none`
   so transitionend listeners (if any) still fire. */
@media (prefers-reduced-motion: reduce) {
  .bwe-tour *,
  .bwe-tour *::before,
  .bwe-tour *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .bwe-tour .riv-track,
  .bwe-tour .riv-track-r { animation: none !important; }
}


/* ═══════════════════════════════════════════════════════════════════════
   S6 FEATURED JOURNEY CARD  ·  the "one Journey, opened" beat
   At state 0 a single Learning Journey sits open and centered, its four
   lessons cascading in. As the reader scrolls it recedes and scales away
   while the full 3x3 year-grid floods in behind it. s6-paper is already
   position:absolute (it is a .scene-layer filling the 100vh stage), so the
   card centers on the viewport without any change to s6-paper itself.
   ═══════════════════════════════════════════════════════════════════════ */
.bwe-tour .s6-featured{
  position:absolute; left:50%; top:50%;
  transform:translate(-50%,-50%) scale(1);
  transform-origin:center center;
  width:min(560px,90vw);
  background:linear-gradient(168deg,var(--paper) 0%,var(--cream2) 100%);
  border:1.5px solid var(--border); border-radius:22px;
  padding:30px 30px 26px;
  box-shadow:0 30px 70px rgba(45,40,32,0.20), 0 4px 14px rgba(45,40,32,0.08);
  z-index:6; opacity:1;
  transition:opacity .55s ease, transform .9s cubic-bezier(.22,.61,.36,1);
}
.bwe-tour .s6-feat-tab{
  position:absolute; top:-1px; left:50%; transform:translateX(-50%);
  width:120px; height:9px;
  background:rgba(232,132,90,0.40);
  border:1px solid rgba(232,132,90,0.50); border-top:none;
  border-radius:0 0 5px 5px;
}
.bwe-tour .s6-feat-head{text-align:center; margin-bottom:20px}
.bwe-tour .s6-feat-faces{display:flex; justify-content:center; margin-bottom:12px}
.bwe-tour .s6-feat-face{
  width:46px; height:46px; border-radius:50%; overflow:hidden;
  border:2.5px solid var(--paper); box-shadow:0 3px 8px rgba(45,40,32,0.14);
  margin-left:-10px; background:var(--cream3);
}
.bwe-tour .s6-feat-face:first-child{margin-left:0}
.bwe-tour .s6-feat-face img{width:100%; height:100%; object-fit:cover; display:block}
.bwe-tour .s6-feat-meta{
  font-family:'Gaegu',cursive; font-size:16px; font-weight:700;
  color:var(--purple-d); letter-spacing:.01em; margin-bottom:4px;
}
.bwe-tour .s6-feat-title{
  font-family:'Shrikhand',serif; font-size:clamp(24px,3vw,32px);
  color:var(--ink); line-height:1.05; letter-spacing:-.015em; margin:0;
}
.bwe-tour .s6-feat-lessons{display:flex; flex-direction:column; gap:9px}
.bwe-tour .s6-feat-lesson{
  display:flex; align-items:center; gap:13px;
  background:var(--cream2); border:1px solid var(--border);
  border-radius:13px; padding:9px 13px;
  opacity:0; transform:translateY(12px);
}
.bwe-tour .s6-feat-num{
  font-family:'Fredoka',sans-serif; font-weight:600; font-size:13px;
  color:var(--ink-m); min-width:22px;
}
.bwe-tour .s6-feat-photo{
  width:42px; height:42px; border-radius:9px; overflow:hidden; flex:0 0 auto;
  background:var(--cream3); box-shadow:0 2px 6px rgba(45,40,32,0.12);
}
.bwe-tour .s6-feat-photo img{width:100%; height:100%; object-fit:cover; display:block}
.bwe-tour .s6-feat-body{display:flex; flex-direction:column; gap:1px; flex:1 1 auto; min-width:0}
.bwe-tour .s6-feat-name{
  font-family:'Fredoka',sans-serif; font-weight:600; font-size:16px;
  color:var(--ink); line-height:1.15;
}
.bwe-tour .s6-feat-where{
  font-family:'Fredoka',sans-serif; font-weight:400; font-size:13px;
  color:var(--ink-s); line-height:1.2;
}
.bwe-tour .s6-feat-arr{
  font-family:'Fredoka',sans-serif; font-size:22px; color:var(--ink-m);
  flex:0 0 auto; line-height:1;
}
.bwe-tour .s6-feat-hint{
  display:block; text-align:center; margin-top:16px;
  font-family:'Gaegu',cursive; font-size:15px; color:var(--ink-m); letter-spacing:.02em;
}
/* lesson rows cascade in while the card is the focus (state 0) */
@keyframes s6featrow{to{opacity:1; transform:translateY(0)}}
.bwe-tour .scene[data-progress="0"] .s6-feat-lesson{animation:s6featrow .6s cubic-bezier(.22,.61,.36,1) forwards}
.bwe-tour .scene[data-progress="0"] .s6-feat-lesson:nth-child(1){animation-delay:.18s}
.bwe-tour .scene[data-progress="0"] .s6-feat-lesson:nth-child(2){animation-delay:.30s}
.bwe-tour .scene[data-progress="0"] .s6-feat-lesson:nth-child(3){animation-delay:.42s}
.bwe-tour .scene[data-progress="0"] .s6-feat-lesson:nth-child(4){animation-delay:.54s}
/* recede + scale away as the grid floods in */
.bwe-tour .scene[data-progress="1"] .s6-featured{opacity:0; transform:translate(-50%,-50%) scale(.62); pointer-events:none}
.bwe-tour .scene[data-progress="2"] .s6-featured,
.bwe-tour .scene[data-progress="3"] .s6-featured{opacity:0; transform:translate(-50%,-50%) scale(.42); pointer-events:none}

@media (max-width:680px){
  .bwe-tour .s6-featured{width:92vw; padding:22px 18px 20px; border-radius:18px}
  .bwe-tour .s6-feat-face{width:38px; height:38px}
  .bwe-tour .s6-feat-title{font-size:22px}
  .bwe-tour .s6-feat-lesson{gap:10px; padding:8px 10px}
  .bwe-tour .s6-feat-photo{width:36px; height:36px}
  .bwe-tour .s6-feat-name{font-size:14px}
  .bwe-tour .s6-feat-where{font-size:11.5px}
  .bwe-tour .s6-feat-hint{font-size:13px}
}

/* The old fixed numbered progress rail is superseded by the page-level
   journey timeline below. Hide it everywhere without touching the engine JS. */
.bwe-tour .progress{display:none !important}

/* ═══════════════════════════════════════════════════════════════════════
   PERSISTENT JOURNEY TIMELINE  ·  page-level, follows the reader through
   the whole scrollymation (built + driven by /js/bwe-tour-timeline.js).
   Lives on document.body, NOT inside .bwe-tour, so it spans the home page's
   four separate tour wrappers as one continuous spine.
   ═══════════════════════════════════════════════════════════════════════ */
.bwe-timeline{
  position:fixed; right:22px; left:auto; top:50%; transform:translateY(-50%);
  width:max-content; height:auto; min-height:0; margin:0; padding:0; border:0;
  background:none; -webkit-backdrop-filter:none; backdrop-filter:none;
  display:block; box-sizing:border-box; justify-content:initial; align-items:initial;
  z-index:320; opacity:0; visibility:hidden;
  transition:opacity .45s ease, visibility .45s ease;
  pointer-events:none;
}
.bwe-timeline.is-on{opacity:1; visibility:visible; pointer-events:auto}
.bwe-tl-rail{
  position:relative; display:flex; flex-direction:column; align-items:center; gap:32px;
  padding:10px 0; background:none; border:0; box-shadow:none;
}
.bwe-tl-line{
  position:absolute; top:12px; bottom:12px; left:50%; transform:translateX(-50%);
  width:1.5px; background:rgba(120,110,95,0.34); border-radius:2px; overflow:hidden; z-index:0;
}
.bwe-tl-line-fill{
  position:absolute; top:0; left:0; width:100%; height:0%;
  background:linear-gradient(180deg,var(--coral),var(--purple));
  border-radius:2px; transition:height .25s linear;
}
.bwe-tl-node{
  position:relative; z-index:1;
  appearance:none; -webkit-appearance:none; background:none; border:none;
  padding:0; margin:0; cursor:pointer; display:block; line-height:0;
}
.bwe-tl-node::after{content:''; position:absolute; left:50%; top:50%; width:34px; height:24px; transform:translate(-50%,-50%); border-radius:12px}
.bwe-tl-dot{
  display:block; width:11px; height:11px; border-radius:50%;
  background:rgba(247,242,232,0.95); border:1.5px solid rgba(45,40,32,0.42);
  box-shadow:0 1px 6px rgba(0,0,0,0.30);
  transition:transform .3s cubic-bezier(.34,1.56,.64,1), background .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.bwe-tl-node:hover .bwe-tl-dot{transform:scale(1.18)}
.bwe-tl-node.is-done .bwe-tl-dot{background:var(--purple); border-color:var(--purple)}
.bwe-tl-node.is-active .bwe-tl-dot{
  background:var(--coral); border-color:var(--coral); transform:scale(1.38);
  box-shadow:0 0 0 6px rgba(232,132,90,0.18);
}
.bwe-tl-label{
  position:absolute; right:calc(100% + 14px); top:50%;
  transform:translateY(-50%) translateX(8px);
  white-space:nowrap; opacity:0; pointer-events:none;
  font-family:'Fredoka',sans-serif; font-weight:500; font-size:13px;
  color:var(--ink); background:var(--cream2);
  border:1px solid var(--border); border-radius:999px;
  padding:5px 12px; box-shadow:0 4px 14px rgba(45,40,32,0.10);
  transition:opacity .3s ease, transform .3s ease;
}
.bwe-timeline:hover .bwe-tl-label{opacity:1; transform:translateY(-50%) translateX(0); pointer-events:auto}
.bwe-tl-node.is-active .bwe-tl-label{
  opacity:1; transform:translateY(-50%) translateX(0); pointer-events:auto;
  color:var(--coral); border-color:rgba(232,132,90,0.45); font-weight:600;
}
.bwe-tl-node:focus-visible{outline:none}
.bwe-tl-node:focus-visible .bwe-tl-dot{box-shadow:0 0 0 3px var(--paper), 0 0 0 5px var(--ink)}

/* mobile: a slim bottom progress bar + a centered phase-name chip.
   Bottom edge avoids fighting the sticky site header. */
.bwe-tl-mini{
  position:fixed; left:0; right:0; bottom:0; height:3px;
  z-index:320; background:rgba(45,40,32,0.10);
  opacity:0; visibility:hidden; transition:opacity .4s ease, visibility .4s ease;
}
.bwe-tl-mini.is-on{opacity:1; visibility:visible}
.bwe-tl-mini-fill{
  height:100%; width:0%;
  background:linear-gradient(90deg,var(--coral),var(--purple));
  transition:width .25s linear;
}
.bwe-tl-chip{
  position:fixed; left:50%; bottom:16px; transform:translateX(-50%) translateY(6px);
  z-index:320; opacity:0; visibility:hidden;
  font-family:'Fredoka',sans-serif; font-weight:600; font-size:13px;
  color:var(--ink); background:var(--cream2);
  border:1px solid var(--border); border-radius:999px;
  padding:6px 16px; box-shadow:0 6px 20px rgba(45,40,32,0.16);
  transition:opacity .4s ease, visibility .4s ease, transform .4s ease;
  display:flex; align-items:center; gap:8px;
}
.bwe-tl-chip.is-on{opacity:1; visibility:visible; transform:translateX(-50%) translateY(0)}
.bwe-tl-chip::before{
  content:''; width:8px; height:8px; border-radius:50%;
  background:var(--coral); box-shadow:0 0 0 3px rgba(232,132,90,0.22);
}
@media (min-width:900px){.bwe-tl-mini,.bwe-tl-chip{display:none}}
@media (max-width:899px){.bwe-timeline{display:none}}

@media (prefers-reduced-motion: reduce){
  .bwe-tl-line-fill,.bwe-tl-mini-fill{transition:none}
  .bwe-tl-dot{transition:none}
  .bwe-tl-label{transition:none}
}


/* ═══════════════════════════════════════════════════════════════════════
   S93 Phase 2 · CHAPTER 3: THE STORY PAGE
   The actual reading surface a learner opens: a wordless film, a calm
   "before you begin" threshold, a chapter, a wonder prompt, and the math
   woven quietly inside a real life. Reveals are scoped by unique .sp-*
   classes so the data-progress selectors cannot leak into other scenes.
   ═══════════════════════════════════════════════════════════════════════ */
.bwe-tour .sp-page{
  background:linear-gradient(168deg,var(--cream) 0%,var(--cream3) 100%);
  display:flex; align-items:center; justify-content:center; padding:40px 24px;
}
.bwe-tour .sp-frame{display:flex; flex-direction:column; align-items:center; gap:20px; width:100%}
.bwe-tour .sp-lead{text-align:center; max-width:640px}
.bwe-tour .sp-lead-eye{
  font-family:'Gaegu',cursive; font-weight:700; font-size:15px;
  color:var(--purple-d); text-transform:uppercase; letter-spacing:.06em; margin-bottom:5px;
}
.bwe-tour .sp-lead-h{
  font-family:'Shrikhand',serif; font-size:clamp(26px,3.6vw,42px);
  color:var(--ink); line-height:1.04; letter-spacing:-.015em; margin:0;
}
.bwe-tour .sp-reader{
  position:relative; width:min(680px,94vw);
  background:var(--paper); border:1.5px solid var(--border); border-radius:20px;
  box-shadow:0 30px 70px rgba(45,40,32,0.18), 0 4px 14px rgba(45,40,32,0.07);
}
.bwe-tour .sp-film{
  position:relative; width:100%; height:min(36vh,300px); overflow:hidden;
  border-radius:20px 20px 0 0; background:#1a1612;
}
.bwe-tour .sp-film img{width:100%; height:100%; object-fit:cover; display:block}
.bwe-tour .sp-film::after{content:''; position:absolute; inset:0; background:linear-gradient(180deg,rgba(26,22,18,0) 52%,rgba(26,22,18,0.58) 100%)}
.bwe-tour .sp-film-tag{
  position:absolute; left:16px; bottom:13px; z-index:2;
  font-family:'Gaegu',cursive; font-size:14px; color:rgba(255,255,255,0.92); letter-spacing:.02em;
}
.bwe-tour .sp-watch{
  position:absolute; right:13px; bottom:11px; z-index:3;
  display:inline-flex; align-items:center; gap:7px;
  background:rgba(255,255,255,0.16); border:1.5px solid rgba(255,255,255,0.32);
  -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
  color:#fff; font-family:'Fredoka',sans-serif; font-size:13px; font-weight:500;
  padding:7px 14px 7px 11px; border-radius:100px; cursor:pointer; transition:background .2s ease;
}
.bwe-tour .sp-watch:hover{background:rgba(255,255,255,0.30)}
.bwe-tour .sp-watch-tri{width:0; height:0; border-left:9px solid #fff; border-top:6px solid transparent; border-bottom:6px solid transparent}
.bwe-tour .sp-body{position:relative; padding:22px 26px 26px}
.bwe-tour .sp-chapter{
  font-family:'Gaegu',cursive; font-weight:700; font-size:14px; color:var(--coral-d);
  text-transform:uppercase; letter-spacing:.06em; margin-bottom:6px;
  opacity:0; transform:translateY(8px); transition:opacity .5s ease, transform .6s cubic-bezier(.22,.61,.36,1);
}
.bwe-tour .sp-name{
  font-family:'Shrikhand',serif; font-size:clamp(22px,2.8vw,30px); color:var(--ink);
  line-height:1.08; letter-spacing:-.01em; margin-bottom:11px;
  opacity:0; transform:translateY(8px); transition:opacity .5s ease .05s, transform .6s cubic-bezier(.22,.61,.36,1) .05s;
}
.bwe-tour .sp-excerpt{
  font-family:'Averia Serif Libre',Georgia,serif; font-style:italic;
  font-size:clamp(16px,2vw,20px); line-height:1.5; color:var(--ink-s); margin-bottom:18px;
  opacity:0; transform:translateY(8px); transition:opacity .5s ease .1s, transform .6s cubic-bezier(.22,.61,.36,1) .1s;
}
.bwe-tour .sp-prompt{
  background:var(--cream2); border:1px solid rgba(154,112,212,0.26); border-left:3px solid var(--purple);
  border-radius:0 12px 12px 0; padding:12px 15px; margin-bottom:13px;
  opacity:0; transform:translateY(10px); transition:opacity .55s ease, transform .7s cubic-bezier(.22,.61,.36,1);
}
.bwe-tour .sp-prompt-eye{
  display:block; font-family:'Gaegu',cursive; font-weight:700; font-size:13px;
  color:var(--purple-d); text-transform:uppercase; letter-spacing:.05em; margin-bottom:3px;
}
.bwe-tour .sp-prompt p{font-family:'Fredoka',sans-serif; font-weight:400; font-size:15.5px; line-height:1.4; color:var(--ink)}
.bwe-tour .sp-math{
  background:linear-gradient(135deg,#fdf6ee 0%,#f7efe2 100%);
  border:1px solid rgba(232,132,90,0.30); border-radius:12px; padding:12px 15px;
  opacity:0; transform:translateY(10px); transition:opacity .55s ease, transform .7s cubic-bezier(.22,.61,.36,1);
}
.bwe-tour .sp-math-eye{
  display:block; font-family:'Gaegu',cursive; font-weight:700; font-size:13px;
  color:var(--coral-d); text-transform:uppercase; letter-spacing:.05em; margin-bottom:3px;
}
.bwe-tour .sp-math p{font-family:'Fredoka',sans-serif; font-weight:400; font-size:14.5px; line-height:1.45; color:var(--ink)}
/* threshold overlay over the reading body (state 0 only) */
.bwe-tour .sp-threshold{
  position:absolute; inset:0; z-index:4; border-radius:0 0 20px 20px;
  background:linear-gradient(165deg,rgba(45,40,32,0.94),rgba(45,26,82,0.94));
  display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center;
  padding:28px 28px; opacity:1; transition:opacity .6s ease;
}
.bwe-tour .sp-th-eye{
  font-family:'Gaegu',cursive; font-weight:700; font-size:14px; color:rgba(255,255,255,0.66);
  text-transform:uppercase; letter-spacing:.12em; margin-bottom:13px;
}
.bwe-tour .sp-th-line{font-family:'Shrikhand',serif; font-size:clamp(20px,2.6vw,27px); color:#fff; line-height:1.16; margin-bottom:11px; max-width:400px}
.bwe-tour .sp-th-sub{font-family:'Fredoka',sans-serif; font-weight:300; font-size:14.5px; color:rgba(255,255,255,0.82); line-height:1.4; max-width:320px}

/* reveal choreography (scoped by unique sp- classes) */
.bwe-tour .scene[data-progress="1"] .sp-threshold,
.bwe-tour .scene[data-progress="2"] .sp-threshold,
.bwe-tour .scene[data-progress="3"] .sp-threshold{opacity:0; pointer-events:none}
.bwe-tour .scene[data-progress="1"] .sp-chapter, .bwe-tour .scene[data-progress="2"] .sp-chapter, .bwe-tour .scene[data-progress="3"] .sp-chapter,
.bwe-tour .scene[data-progress="1"] .sp-name, .bwe-tour .scene[data-progress="2"] .sp-name, .bwe-tour .scene[data-progress="3"] .sp-name,
.bwe-tour .scene[data-progress="1"] .sp-excerpt, .bwe-tour .scene[data-progress="2"] .sp-excerpt, .bwe-tour .scene[data-progress="3"] .sp-excerpt{opacity:1; transform:translateY(0)}
.bwe-tour .scene[data-progress="2"] .sp-prompt, .bwe-tour .scene[data-progress="3"] .sp-prompt{opacity:1; transform:translateY(0)}
.bwe-tour .scene[data-progress="3"] .sp-math{opacity:1; transform:translateY(0)}

@media (max-width:680px){
  .bwe-tour .sp-page{padding:28px 16px}
  .bwe-tour .sp-film{height:26vh}
  .bwe-tour .sp-body{padding:18px 18px 20px}
  .bwe-tour .sp-prompt p{font-size:14px}
  .bwe-tour .sp-math p{font-size:13.5px}
}

/* ═══════════════════════════════════════════════════════════════════════
   S93: home gateway hero ("What does a year with reweave feel like?") becomes
   calm breathing room, no background video, before the immersive scroll.
   Only the warm variant changes; the cool voices hero keeps its film band.
   ═══════════════════════════════════════════════════════════════════════ */
.bwe-tour .tour-hero--warm{background:linear-gradient(168deg,var(--cream2) 0%,var(--cream3) 100%); color:var(--ink)}
.bwe-tour .tour-hero--warm .tour-hero-media{display:none}
.bwe-tour .tour-hero--warm .tour-hero-overlay{display:none}
.bwe-tour .tour-hero--warm .tour-hero-tint{background:radial-gradient(ellipse at 50% 52%,rgba(232,132,90,0.10),transparent 70%); mix-blend-mode:normal; opacity:1}
.bwe-tour .tour-hero--warm .tour-hero-eye{color:var(--coral-d)}
.bwe-tour .tour-hero--warm .tour-hero-eye::before{background:var(--coral)}
.bwe-tour .tour-hero--warm .tour-hero-h{color:var(--ink); text-shadow:none}
.bwe-tour .tour-hero--warm .tour-hero-h .pop{color:var(--coral)}
.bwe-tour .tour-hero--warm .tour-hero-h .pop2{color:var(--purple)}
.bwe-tour .tour-hero--warm .tour-hero-sub{color:var(--ink-s); text-shadow:none}

/* ═══════════════════════════════════════════════════════════════════════
   S93 polish: CHAPTER 4 BROWSE (pro-tour)
   "One was a beginning. There is a whole library to wander." Mock of the
   real product browse surface: searchbar, filter chips, face grid. Reveals
   scoped by unique .br-* classes. Distinct beat from the Library face-river
   that comes later: this one is product UI, that one is the wall flood.
   ═══════════════════════════════════════════════════════════════════════ */
.bwe-tour .br-page{background:linear-gradient(168deg,var(--cream) 0%,var(--cream3) 100%); display:flex; align-items:center; justify-content:center; padding:40px 24px}
.bwe-tour .br-frame{display:flex; flex-direction:column; align-items:center; gap:22px; width:100%}
.bwe-tour .br-lead{text-align:center; max-width:720px}
.bwe-tour .br-lead-eye{font-family:'Gaegu',cursive; font-weight:700; font-size:15px; color:var(--purple-d); text-transform:uppercase; letter-spacing:.06em; margin-bottom:5px}
.bwe-tour .br-lead-h{font-family:'Shrikhand',serif; font-size:clamp(24px,3.4vw,40px); color:var(--ink); line-height:1.06; letter-spacing:-.015em; margin:0}
.bwe-tour .br-panel{width:min(780px,94vw); background:var(--paper); border:1.5px solid var(--border); border-radius:20px; box-shadow:0 30px 70px rgba(45,40,32,0.18), 0 4px 14px rgba(45,40,32,0.07); padding:22px 24px 24px}
.bwe-tour .br-searchbar{display:flex; align-items:center; gap:10px; background:var(--cream2); border:1.5px solid var(--border); border-radius:100px; padding:11px 18px; margin-bottom:14px}
.bwe-tour .br-search-icon{font-size:18px; color:var(--ink-m); line-height:1; flex:0 0 auto}
.bwe-tour .br-search-text{font-family:'Fredoka',sans-serif; font-weight:400; font-size:15px; color:var(--ink-m); flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.bwe-tour .br-search-caret{width:2px; height:18px; background:var(--coral); flex:0 0 auto; animation:br-caret 1s steps(2,end) infinite}
@keyframes br-caret{50%{opacity:0}}
.bwe-tour .br-chips{display:flex; flex-wrap:wrap; align-items:center; gap:7px; margin-bottom:18px; min-height:30px}
.bwe-tour .br-chips-label{font-family:'Gaegu',cursive; font-weight:700; font-size:14px; color:var(--ink-m); text-transform:uppercase; letter-spacing:.06em; margin-right:3px}
.bwe-tour .br-chip{display:inline-flex; align-items:center; gap:5px; font-family:'Fredoka',sans-serif; font-weight:500; font-size:13.5px; color:var(--ink); background:var(--cream2); border:1px solid var(--border); border-radius:100px; padding:5px 12px; opacity:0; transform:translateY(6px) scale(.96); transition:opacity .35s ease, transform .35s cubic-bezier(.22,.61,.36,1)}
.bwe-tour .br-chip::after{content:'\00d7'; color:var(--ink-m); margin-left:3px; font-size:13px; line-height:1}
.bwe-tour .br-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:10px}
.bwe-tour .br-card{position:relative; aspect-ratio:1/1; overflow:hidden; border-radius:12px; background:var(--cream3); box-shadow:0 3px 10px rgba(45,40,32,0.10); opacity:0; transform:translateY(10px) scale(.96); transition:opacity .5s ease, transform .6s cubic-bezier(.22,.61,.36,1)}
.bwe-tour .br-card img{width:100%; height:100%; object-fit:cover; display:block}
.bwe-tour .br-card::after{content:''; position:absolute; left:0; right:0; bottom:0; height:55%; z-index:1; background:linear-gradient(180deg,rgba(26,22,18,0) 0%,rgba(26,22,18,0.74) 100%)}
.bwe-tour .br-card-name{position:absolute; left:8px; bottom:18px; z-index:2; font-family:'Fredoka',sans-serif; font-weight:600; font-size:13px; color:#fff; line-height:1.1}
.bwe-tour .br-card-where{position:absolute; left:8px; bottom:6px; z-index:2; font-family:'Gaegu',cursive; font-weight:400; font-size:12px; color:rgba(255,255,255,0.86); letter-spacing:.02em; line-height:1}
.bwe-tour .br-hint{text-align:center; margin-top:16px; font-family:'Gaegu',cursive; font-size:16px; color:var(--ink-m); letter-spacing:.02em; opacity:0; transform:translateY(6px); transition:opacity .55s ease, transform .55s ease}

/* reveal choreography (scoped by .br- prefix) */
.bwe-tour .scene[data-progress="1"] .br-chip,
.bwe-tour .scene[data-progress="2"] .br-chip,
.bwe-tour .scene[data-progress="3"] .br-chip{opacity:1; transform:translateY(0) scale(1)}
.bwe-tour .scene[data-progress="1"] .br-chip[data-c="1"], .bwe-tour .scene[data-progress="2"] .br-chip[data-c="1"], .bwe-tour .scene[data-progress="3"] .br-chip[data-c="1"]{transition-delay:0s}
.bwe-tour .scene[data-progress="1"] .br-chip[data-c="2"], .bwe-tour .scene[data-progress="2"] .br-chip[data-c="2"], .bwe-tour .scene[data-progress="3"] .br-chip[data-c="2"]{transition-delay:.08s}
.bwe-tour .scene[data-progress="1"] .br-chip[data-c="3"], .bwe-tour .scene[data-progress="2"] .br-chip[data-c="3"], .bwe-tour .scene[data-progress="3"] .br-chip[data-c="3"]{transition-delay:.16s}
.bwe-tour .scene[data-progress="1"] .br-chip[data-c="4"], .bwe-tour .scene[data-progress="2"] .br-chip[data-c="4"], .bwe-tour .scene[data-progress="3"] .br-chip[data-c="4"]{transition-delay:.24s}
.bwe-tour .scene[data-progress="1"] .br-chip[data-c="5"], .bwe-tour .scene[data-progress="2"] .br-chip[data-c="5"], .bwe-tour .scene[data-progress="3"] .br-chip[data-c="5"]{transition-delay:.32s}
.bwe-tour .scene[data-progress="2"] .br-card, .bwe-tour .scene[data-progress="3"] .br-card{opacity:1; transform:translateY(0) scale(1)}
.bwe-tour .scene[data-progress="2"] .br-card[data-c="1"], .bwe-tour .scene[data-progress="3"] .br-card[data-c="1"]{transition-delay:.02s}
.bwe-tour .scene[data-progress="2"] .br-card[data-c="2"], .bwe-tour .scene[data-progress="3"] .br-card[data-c="2"]{transition-delay:.06s}
.bwe-tour .scene[data-progress="2"] .br-card[data-c="3"], .bwe-tour .scene[data-progress="3"] .br-card[data-c="3"]{transition-delay:.10s}
.bwe-tour .scene[data-progress="2"] .br-card[data-c="4"], .bwe-tour .scene[data-progress="3"] .br-card[data-c="4"]{transition-delay:.14s}
.bwe-tour .scene[data-progress="2"] .br-card[data-c="5"], .bwe-tour .scene[data-progress="3"] .br-card[data-c="5"]{transition-delay:.18s}
.bwe-tour .scene[data-progress="2"] .br-card[data-c="6"], .bwe-tour .scene[data-progress="3"] .br-card[data-c="6"]{transition-delay:.22s}
.bwe-tour .scene[data-progress="2"] .br-card[data-c="7"], .bwe-tour .scene[data-progress="3"] .br-card[data-c="7"]{transition-delay:.26s}
.bwe-tour .scene[data-progress="2"] .br-card[data-c="8"], .bwe-tour .scene[data-progress="3"] .br-card[data-c="8"]{transition-delay:.30s}
.bwe-tour .scene[data-progress="2"] .br-card[data-c="9"], .bwe-tour .scene[data-progress="3"] .br-card[data-c="9"]{transition-delay:.34s}
.bwe-tour .scene[data-progress="2"] .br-card[data-c="10"], .bwe-tour .scene[data-progress="3"] .br-card[data-c="10"]{transition-delay:.38s}
.bwe-tour .scene[data-progress="2"] .br-card[data-c="11"], .bwe-tour .scene[data-progress="3"] .br-card[data-c="11"]{transition-delay:.42s}
.bwe-tour .scene[data-progress="2"] .br-card[data-c="12"], .bwe-tour .scene[data-progress="3"] .br-card[data-c="12"]{transition-delay:.46s}
.bwe-tour .scene[data-progress="3"] .br-hint{opacity:1; transform:translateY(0)}

@media (max-width:680px){
  .bwe-tour .br-page{padding:28px 14px}
  .bwe-tour .br-panel{padding:18px 16px 20px}
  .bwe-tour .br-grid{grid-template-columns:repeat(3,1fr); gap:8px}
  .bwe-tour .br-card-name{font-size:11.5px}
  .bwe-tour .br-card-where{font-size:10.5px}
}

/* ═══════════════════════════════════════════════════════════════════════
   CHAPTER 9: THE TAPESTRY  (S94)  ·  unique .tp-* prefix so the
   .scene[data-progress] reveal selectors cannot leak to other scenes.
   A shared woven cloth: one educator pins a lesson, the team adds theirs,
   warp + weft threads stitch the whole year into one private tapestry.
   ═══════════════════════════════════════════════════════════════════════ */
.bwe-tour .tp-cloth{
  display:flex; align-items:center; justify-content:center;
  background:
    repeating-linear-gradient(0deg, rgba(45,40,32,0) 0 13px, rgba(45,40,32,0.022) 13px 14px),
    repeating-linear-gradient(90deg, rgba(45,40,32,0) 0 13px, rgba(45,40,32,0.022) 13px 14px),
    var(--cream);
}

/* the loom: warp (vertical) + weft (horizontal) threads draw in as the cloth fills */
.bwe-tour .tp-threads{position:absolute; inset:0; width:100%; height:100%; z-index:1; pointer-events:none}
.bwe-tour .tp-threads path{
  fill:none; stroke:rgba(154,112,212,0.20); stroke-width:1.4; stroke-linecap:round;
  stroke-dasharray:1300; stroke-dashoffset:1300; transition:stroke-dashoffset 1.3s ease;
}
.bwe-tour .tp-threads path:nth-of-type(even){stroke:rgba(232,132,90,0.17)}
.bwe-tour .tp-threads path:nth-of-type(2){transition-delay:.05s}
.bwe-tour .tp-threads path:nth-of-type(4){transition-delay:.12s}
.bwe-tour .tp-threads path:nth-of-type(6){transition-delay:.18s}
.bwe-tour .tp-threads path:nth-of-type(8){transition-delay:.10s}
.bwe-tour .tp-threads path:nth-of-type(10){transition-delay:.16s}
.bwe-tour .tp-threads path:nth-of-type(12){transition-delay:.22s}
.bwe-tour .scene[data-progress="1"] .tp-threads path:not(.tp-stitch),
.bwe-tour .scene[data-progress="2"] .tp-threads path:not(.tp-stitch),
.bwe-tour .scene[data-progress="3"] .tp-threads path:not(.tp-stitch){stroke-dashoffset:0}
/* diagonal stitches fade in once the cloth is full (kept dashed, so no draw animation) */
.bwe-tour .tp-threads .tp-stitch{
  stroke:rgba(122,154,90,0.30); stroke-width:1.6;
  stroke-dasharray:5 8; stroke-dashoffset:0; opacity:0; transition:opacity .9s ease;
}
.bwe-tour .scene[data-progress="2"] .tp-threads .tp-stitch,
.bwe-tour .scene[data-progress="3"] .tp-threads .tp-stitch{opacity:1}

/* team identity chip: lands once the whole cloth is woven */
.bwe-tour .tp-team{
  position:absolute; top:48px; left:50%; transform:translate(-50%,-8px); z-index:3;
  display:inline-flex; align-items:center; gap:9px;
  background:rgba(253,250,242,0.92); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
  border:1px solid var(--border); border-radius:999px; padding:10px 22px;
  box-shadow:0 8px 24px rgba(45,40,32,0.12);
  font-family:'Fredoka',sans-serif; font-size:16.5px; color:var(--ink-s);
  opacity:0; transition:opacity .6s ease, transform .7s cubic-bezier(.22,.61,.36,1);
  white-space:nowrap;
}
.bwe-tour .scene[data-progress="2"] .tp-team,
.bwe-tour .scene[data-progress="3"] .tp-team{opacity:1; transform:translate(-50%,0)}
.bwe-tour .tp-team-dot{width:8px; height:8px; border-radius:50%; background:var(--coral)}
.bwe-tour .tp-team-name{font-weight:700; color:var(--ink); font-size:1.12em}
.bwe-tour .tp-team-sep{color:var(--ink-m)}
.bwe-tour .tp-team-role{color:var(--ink-s)}
.bwe-tour .tp-team-lock{
  margin-left:4px; font-family:'Gaegu',cursive; font-size:12px; letter-spacing:.06em;
  text-transform:uppercase; color:var(--purple-d);
  background:rgba(154,112,212,0.12); border:1px solid rgba(154,112,212,0.28);
  border-radius:999px; padding:2px 9px;
}

/* the one woven lesson, pinned first (recedes as the cloth fills, like the year scene) */
.bwe-tour .tp-hero{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); z-index:4;
  width:360px; max-width:90vw; background:var(--paper);
  border:1.5px solid var(--border); border-radius:18px; padding:22px 22px 18px;
  box-shadow:0 26px 60px rgba(45,40,32,0.18);
  transition:opacity .6s ease, transform .8s cubic-bezier(.22,.61,.36,1);
}
.bwe-tour .scene[data-progress="1"] .tp-hero{opacity:0; transform:translate(-50%,-50%) scale(.62); pointer-events:none}
.bwe-tour .scene[data-progress="2"] .tp-hero,
.bwe-tour .scene[data-progress="3"] .tp-hero{opacity:0; transform:translate(-50%,-50%) scale(.42); pointer-events:none}
.bwe-tour .tp-hero-h{font-family:'Shrikhand',serif; font-size:26px; line-height:1.1; letter-spacing:-.012em; color:var(--ink); margin-bottom:12px}
.bwe-tour .tp-hero-sub{font-family:'Fredoka',sans-serif; font-size:14px; color:var(--ink-s); margin:10px 0 12px}

/* the stitched tab at the top of every card */
.bwe-tour .tp-tab{position:absolute; top:-1px; left:38%; right:38%; height:9px; background:rgba(232,132,90,0.34); border:1px solid rgba(232,132,90,0.46); border-top:none; border-radius:0 0 4px 4px}

.bwe-tour .tp-aud{display:inline-block; font-family:'Fredoka',sans-serif; font-weight:700; font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--purple); margin-bottom:7px}

/* overlapping face stack (the real people in the lesson) */
.bwe-tour .tp-faces{display:flex; align-items:center}
.bwe-tour .tp-face{width:34px; height:34px; border-radius:50%; overflow:hidden; border:2px solid var(--paper); box-shadow:0 2px 6px rgba(45,40,32,0.10); margin-left:-9px; background:var(--cream2)}
.bwe-tour .tp-face:first-child{margin-left:0}
.bwe-tour .tp-face img{width:100%; height:100%; object-fit:cover; display:block}
.bwe-tour .tp-faces-lg .tp-face{width:46px; height:46px; margin-left:-11px}

/* shared-by attribution row */
.bwe-tour .tp-card-by{display:flex; align-items:center; gap:8px; margin-top:14px; padding-top:11px; border-top:1px dashed var(--cream3); font-family:'Gaegu',cursive; font-size:14px; color:var(--ink-s)}
.bwe-tour .tp-av{width:22px; height:22px; border-radius:50%; background:var(--olive); color:#fff; font-family:'Shrikhand',serif; font-size:11px; display:flex; align-items:center; justify-content:center; flex-shrink:0}
.bwe-tour .tp-by-name{flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.bwe-tour .tp-by-when{color:var(--ink-m); font-size:13px; white-space:nowrap; flex-shrink:0}

/* the woven grid of teammates' lessons */
.bwe-tour .tp-grid{display:grid; grid-template-columns:repeat(4,minmax(190px,232px)); gap:14px; width:100%; max-width:1000px; position:relative; z-index:2}
.bwe-tour .tp-card{position:relative; background:var(--paper); border:1.5px solid var(--border); border-radius:13px; padding:13px 13px 10px; box-shadow:0 6px 18px rgba(45,40,32,0.08); opacity:0; transform:translateY(20px) rotate(var(--r,-.4deg)); transition:opacity .55s ease, transform .7s cubic-bezier(.22,.61,.36,1)}
.bwe-tour .tp-card:nth-child(odd){--r:-.5deg}
.bwe-tour .tp-card:nth-child(even){--r:.45deg}
.bwe-tour .tp-card:nth-child(3n){--r:-.2deg}
.bwe-tour .tp-card .tp-aud{font-size:10px; margin-bottom:6px}
.bwe-tour .tp-card-h{font-family:'Shrikhand',serif; font-size:15px; line-height:1.12; letter-spacing:-.01em; color:var(--ink); margin-bottom:8px}
.bwe-tour .tp-card .tp-faces .tp-face{width:28px; height:28px; margin-left:-8px}
.bwe-tour .tp-card .tp-card-by{margin-top:11px; padding-top:9px; font-size:13px}

/* cluster blooms at state 1, the whole cloth floods at state 2 */
.bwe-tour .scene[data-progress="1"] .tp-card:nth-child(-n+4),
.bwe-tour .scene[data-progress="2"] .tp-card,
.bwe-tour .scene[data-progress="3"] .tp-card{opacity:1; transform:translateY(0) rotate(var(--r))}
.bwe-tour .scene[data-progress="2"] .tp-card:nth-child(5){transition-delay:.04s}
.bwe-tour .scene[data-progress="2"] .tp-card:nth-child(6){transition-delay:.09s}
.bwe-tour .scene[data-progress="2"] .tp-card:nth-child(7){transition-delay:.14s}
.bwe-tour .scene[data-progress="2"] .tp-card:nth-child(8){transition-delay:.19s}
.bwe-tour .scene[data-progress="2"] .tp-card:nth-child(9){transition-delay:.24s}
.bwe-tour .scene[data-progress="2"] .tp-card:nth-child(10){transition-delay:.29s}
.bwe-tour .scene[data-progress="2"] .tp-card:nth-child(11){transition-delay:.34s}
.bwe-tour .scene[data-progress="2"] .tp-card:nth-child(12){transition-delay:.39s}

/* card tab colors cycle so the cloth reads as many hands */
.bwe-tour .tp-card .tp-tab{background:rgba(232,132,90,0.32); border-color:rgba(232,132,90,0.44)}
.bwe-tour .tp-card:nth-child(3n+1) .tp-tab{background:rgba(154,112,212,0.32); border-color:rgba(154,112,212,0.44)}
.bwe-tour .tp-card:nth-child(3n+2) .tp-tab{background:rgba(122,154,90,0.32); border-color:rgba(122,154,90,0.44)}

/* teammate avatar colors cycle (many distinct people) */
.bwe-tour .tp-card:nth-child(5n+1) .tp-av{background:var(--coral)}
.bwe-tour .tp-card:nth-child(5n+2) .tp-av{background:var(--purple)}
.bwe-tour .tp-card:nth-child(5n+3) .tp-av{background:var(--olive)}
.bwe-tour .tp-card:nth-child(5n+4) .tp-av{background:var(--sky)}
.bwe-tour .tp-card:nth-child(5n) .tp-av{background:var(--yellow); color:var(--ink)}
.bwe-tour .tp-av-anon{background:var(--cream3); color:var(--ink-m)}

/* narration, cross-fading bottom-left as the cloth fills */
.bwe-tour .tp-say{
  position:absolute; left:36px; bottom:36px; z-index:5; max-width:330px; padding:15px 18px;
  background:rgba(245,240,230,0.94); -webkit-backdrop-filter:blur(22px); backdrop-filter:blur(22px);
  border-radius:16px; border:1px solid rgba(255,255,255,0.4); box-shadow:0 16px 42px rgba(45,40,32,0.18);
  opacity:0; transform:translateY(10px); transition:opacity .5s ease, transform .6s ease; pointer-events:none;
}
.bwe-tour .tp-say-tag{font-family:'Gaegu',cursive; font-size:14px; color:var(--purple-d); letter-spacing:.08em; text-transform:uppercase; margin-bottom:7px; display:inline-flex; align-items:center; gap:8px; font-weight:700}
.bwe-tour .tp-say-tag::before{content:''; width:8px; height:8px; border-radius:50%; background:var(--coral)}
.bwe-tour .tp-say-h{font-family:'Shrikhand',serif; font-size:18px; line-height:1.14; letter-spacing:-.012em; color:var(--ink)}
.bwe-tour .tp-say-h .pop2{color:var(--purple-d)}
.bwe-tour .scene[data-progress="0"] .tp-say-0{opacity:1; transform:translateY(0)}
.bwe-tour .scene[data-progress="1"] .tp-say-1{opacity:1; transform:translateY(0)}
.bwe-tour .scene[data-progress="2"] .tp-say-2,
.bwe-tour .scene[data-progress="3"] .tp-say-2{opacity:1; transform:translateY(0)}

/* mobile: a tighter cloth that fits one screen and stays readable */
@media (max-width:680px){
  .bwe-tour .tp-grid{grid-template-columns:repeat(2,1fr); gap:11px; max-width:94vw}
  .bwe-tour .tp-card{padding:11px 11px 9px; border-radius:11px}
  .bwe-tour .tp-card-h{font-size:13px}
  .bwe-tour .tp-card .tp-aud{font-size:9.5px}
  .bwe-tour .tp-card .tp-faces .tp-face{width:26px; height:26px; margin-left:-7px}
  .bwe-tour .tp-card .tp-card-by{font-size:12px; margin-top:9px; padding-top:8px}
  .bwe-tour .tp-card:nth-child(n+7){display:none}
  .bwe-tour .tp-hero{width:86vw; padding:18px 18px 15px}
  .bwe-tour .tp-hero-h{font-size:22px}
  .bwe-tour .tp-faces-lg .tp-face{width:40px; height:40px}
  .bwe-tour .tp-team{top:74px; font-size:14px; padding:8px 16px}
  .bwe-tour .tp-team-lock{font-size:11px; padding:2px 7px}
  .bwe-tour .tp-say{left:16px; right:16px; bottom:34px; max-width:none; padding:15px 16px}
}

@media (prefers-reduced-motion: reduce){
  .bwe-tour .tp-threads path,
  .bwe-tour .tp-card,
  .bwe-tour .tp-hero,
  .bwe-tour .tp-team,
  .bwe-tour .tp-say{transition:none}
}

/* ───────── S94 r2: short-viewport fit ───────── */
/* On 13-inch laptops the browser chrome eats vertical space, so the tall
   centered scenes (Read story-page, Browse panel) clip top and bottom.
   This tier shrinks them to sit comfortably on one screen. Taller desktops
   (height > 900px) are unaffected. */
@media (max-height:900px){
  .bwe-tour .sp-page{padding:24px 24px}
  .bwe-tour .sp-frame{gap:14px}
  .bwe-tour .sp-lead-h{font-size:clamp(22px,2.8vw,32px)}
  .bwe-tour .sp-film{height:min(26vh,210px)}
  .bwe-tour .sp-body{padding:16px 24px 18px}
  .bwe-tour .sp-excerpt{margin-bottom:10px}

  .bwe-tour .br-page{padding:24px 24px}
  .bwe-tour .br-frame{gap:14px}
  .bwe-tour .br-lead-h{font-size:clamp(20px,2.6vw,30px)}
  .bwe-tour .br-panel{width:min(620px,92vw); padding:16px 20px 18px}
  .bwe-tour .br-searchbar{padding:9px 16px; margin-bottom:10px}
  .bwe-tour .br-chips{margin-bottom:12px}
  .bwe-tour .br-grid{gap:8px}
}

/* ───────── S94 r3: mobile polish (Weave + Share) ───────── */
@media (max-width:680px){
  /* Weave: on a narrow screen the centered chapter index crowds the top names,
     and the bottom names collide with the phase chip. Hide the index (the chip
     names the scene) and lift the bottom names clear of the chip. */
  .bwe-tour .scene:has(.s3-cell-tag) .scene-index{display:none}
  .bwe-tour .s3-cell:nth-child(3) .s3-cell-tag,
  .bwe-tour .s3-cell:nth-child(4) .s3-cell-tag{bottom:62px}

  /* Share: the three floating objects overlap on mobile. Lead with the
     explanation pinned to the top, then show the colleague's phone view (its
     locked lesson row is the privacy proof). The link card is summarized in the
     copy, so it and the sticky notes are hidden here for one clean column. */
  .bwe-tour .scene[data-phase="Share"] .s5-paper{justify-content:flex-start; padding:230px 22px 40px; gap:0}
  .bwe-tour .scene[data-phase="Share"] .s5-modal{display:none}
  .bwe-tour .scene[data-phase="Share"] .s5-annot{display:none}
  .bwe-tour .scene[data-phase="Share"] .s5-phone{transform:rotate(0deg); margin:0}
  .bwe-tour .scene[data-phase="Share"] .scene-text.pos-tr{top:16px; left:16px; right:16px; bottom:auto; max-width:none; padding:15px 18px}
}

/* ───────── S94 r4: mobile cosmetics (hero eyebrow + Journey) ───────── */
@media (max-width:680px){
  /* Hero eyebrow: inline-flex was breaking the phrase mid-word. Flow it as a
     normal inline sentence so it wraps cleanly on word boundaries. */
  .bwe-tour .hero-eye{display:inline-block; font-size:15px; line-height:1.5; gap:0}
  .bwe-tour .hero-eye::before{display:inline-block; vertical-align:middle; margin:-2px 7px 0 0}
  .bwe-tour .hero-eye .sep{margin:0 5px}

  /* Journey: the rail was vertically centered and tucked its first row behind
     the full-width card. Top-align the rail and start it below the card. */
  .bwe-tour .scene[data-phase="Journey"] .s4-paper{align-items:flex-start; padding-top:340px}
}

/* ───────── S94 r5: mobile polish (voices band) ───────── */
@media (max-width:680px){
  /* The large play disc sits at right-center and overlaps the (tall) quote
     text on a narrow screen. The video itself is tappable and the Watch CTA
     below is the explicit affordance, so hide the redundant disc on mobile. */
  .bwe-tour .voice-portrait-play{display:none}
  /* Lift the voice content (and its Watch button) clear of the bottom chip. */
  .bwe-tour .voice-content{padding-bottom:84px}
}

/* ───────── S94 r6: handpainted thread (Weave loom + Tapestry) ───────── */
/* Apply the turbulence+displacement filter so strands wobble like ink on
   paper, and vary stroke widths between paths so no two threads match. */
.bwe-tour .s3-threads{filter:url(#bwe-rough)}
.bwe-tour .tp-threads{filter:url(#bwe-rough-soft)}

.bwe-tour .s3-threads path:nth-of-type(3n){stroke-width:1.6}
.bwe-tour .s3-threads path:nth-of-type(4n+1){stroke-width:1.1}
.bwe-tour .s3-threads path:nth-of-type(5n+2){stroke-width:1.4}
.bwe-tour .s3-threads path:nth-of-type(2n){opacity:.92}
.bwe-tour .s3-threads path:nth-of-type(3n+1){opacity:.78}

.bwe-tour .tp-threads path:nth-of-type(3n){stroke-width:1.7}
.bwe-tour .tp-threads path:nth-of-type(5n+1){stroke-width:1.1}
.bwe-tour .tp-threads path:nth-of-type(7n+3){stroke-width:1.9}

/* ───────── S94 r7: full immersion (hide top nav during the tour) ───────── */
/* On home (pro-tour has no top nav), the purple #nav stays visible through the
   scrolly tour and covers the tops of light scenes. When the timeline rail is
   active (i.e., the reader is inside the tour range), retract the nav so the
   scenes get the full viewport. The :has() selector ties this purely to the
   existing is-on toggle set by the timeline engine. */
@supports (selector(:has(*))) {
  body:has(.bwe-timeline.is-on) #nav,
  body:has(.bwe-tl-mini.is-on) #nav{
    opacity:0; pointer-events:none; transform:translateY(-100%);
    transition:opacity .35s ease, transform .35s ease;
  }
  /* Smooth return when scrolling back out of the tour */
  body #nav{ transition:opacity .35s ease, transform .35s ease, background-color .3s, border-color .3s; }
}

/* ═════════ S95 ELEVATIONS ═════════ */

/* S95-A: handpainted rail. The persistent journey timeline is the spine of the
   whole tour, but it was a flat 1.5px digital line. Apply the soft turbulence
   filter so the gradient fill reads as ink-on-paper, woven, not chrome. The
   filter is defined on <body> (inside both index.html and pro-tour.html, lifted
   out of any .bwe-tour wrapper) so it's reachable from .bwe-tl-line-fill which
   lives at document.body level. */
.bwe-tl-line-fill{ filter:url(#bwe-rough-soft) }

/* S95-B: staggered hero fade-in. The cred line sat full opacity from frame 0
   while the headline was still rising in; read order felt simultaneous instead
   of sequential. Wait for hero-content's bwt-hero-rise (1.4s) to finish, then
   fade the cred in. Scoped to NON-embedded tours: on embedded pages (pricing,
   why-pro, etc.) the user reaches the tour hero seconds after page load, so
   the from{opacity:0} state could briefly show as invisible if they scroll fast.
   Pro-tour is the only standalone tour and benefits. */
.bwe-tour:not(.bwe-tour--embedded) .hero-cred{ animation: bwt-fadein .9s ease-out 1.4s both }
.bwe-tour:not(.bwe-tour--embedded) .hero-scroll{ animation: bwt-fadein .9s ease-out 1.8s both }

/* S95-C: stronger Tapestry loom. The warp/weft threads were drawing too quickly
   and too pale to register as "the cloth being woven." Bump stroke contrast,
   stretch the dashoffset transition, and give specific threads heavier weight
   so the loom reads as handmade not stenciled. The bwe-rough-soft filter is
   already applied at line 1348. */
.bwe-tour .tp-threads path{
  stroke-width:1.6;
  transition:stroke-dashoffset 1.8s cubic-bezier(.22,.61,.36,1);
}
.bwe-tour .tp-threads path:not(.tp-stitch){
  stroke:rgba(154,112,212,0.30);
}
.bwe-tour .tp-threads path:nth-of-type(even):not(.tp-stitch){
  stroke:rgba(232,132,90,0.26);
}
.bwe-tour .tp-threads path:nth-of-type(3n):not(.tp-stitch){ stroke-width:2.1 }
.bwe-tour .tp-threads path:nth-of-type(7n+1):not(.tp-stitch){ stroke-width:1.2 }
/* Stagger the warp differently from the weft so the cloth visibly forms in
   two passes (verticals first, horizontals after). */
.bwe-tour .tp-threads path:nth-of-type(1){ transition-delay:.00s }
.bwe-tour .tp-threads path:nth-of-type(2){ transition-delay:.06s }
.bwe-tour .tp-threads path:nth-of-type(3){ transition-delay:.12s }
.bwe-tour .tp-threads path:nth-of-type(4){ transition-delay:.18s }
.bwe-tour .tp-threads path:nth-of-type(5){ transition-delay:.24s }
.bwe-tour .tp-threads path:nth-of-type(6){ transition-delay:.30s }
.bwe-tour .tp-threads path:nth-of-type(7){ transition-delay:.36s }
.bwe-tour .tp-threads path:nth-of-type(8){ transition-delay:.50s }
.bwe-tour .tp-threads path:nth-of-type(9){ transition-delay:.58s }
.bwe-tour .tp-threads path:nth-of-type(10){ transition-delay:.66s }
.bwe-tour .tp-threads path:nth-of-type(11){ transition-delay:.74s }
.bwe-tour .tp-threads path:nth-of-type(12){ transition-delay:.82s }
.bwe-tour .tp-threads .tp-stitch{
  stroke:rgba(122,154,90,0.42); stroke-width:1.8; transition:opacity 1.4s ease .9s;
}

/* S95-D: scene-thread sigil. A tiny decorative coral->purple->olive thread runs
   along the top of each chapter scene, suggesting one continuous weave passing
   through. Pure CSS pseudo-element, no markup change, no JS.
   .scene-stage is position:sticky which already establishes a containing block
   for absolute children, so we DO NOT override position here (that would break
   the entire scrolly). Faint enough to read as texture; sized so it never
   competes with content. */
.bwe-tour .scene-stage::before{
  content:''; position:absolute; left:0; right:0; top:0; height:1px; z-index:6;
  background:linear-gradient(90deg,
    rgba(232,132,90,0) 0%,
    rgba(232,132,90,0.36) 14%,
    rgba(154,112,212,0.42) 50%,
    rgba(122,154,90,0.38) 86%,
    rgba(122,154,90,0) 100%);
  filter:url(#bwe-rough-soft);
  pointer-events:none;
  opacity:.85;
}
/* Voice scenes already use voice-stage::before for the dark cinematic gradient
   overlay; the thread sigil rides on .voice-content instead so it visually
   stitches into the voice block without clobbering the existing overlay.
   .voice-content is already position:absolute (line 477), which makes it a
   positioned containing block, so we DO NOT override position here. */
.bwe-tour .voice-content::before{
  content:''; position:absolute; left:-12px; right:-12px; top:-18px; height:1px; z-index:6;
  background:linear-gradient(90deg,
    rgba(232,132,90,0) 0%,
    rgba(154,112,212,0.50) 50%,
    rgba(232,132,90,0) 100%);
  filter:url(#bwe-rough-soft);
  pointer-events:none;
  opacity:.7;
}
/* Don't draw the thread on the tour-hero bands (they have their own dark
   overlay and the thread would be a chrome stripe across cinematic photography). */
.bwe-tour .tour-hero::before{ display:none }
/* Reduced motion: keep the thread, just don't filter (filter can be expensive
   to repaint). */
@media (prefers-reduced-motion: reduce){
  .bwe-tour .scene-stage::before,
  .bwe-tour .voice-content::before{ filter:none }
}

/* S95-E: stronger active rail dot. The active dot already had a glow ring,
   but the brand wanted "knot, not LED." Soften the glow, add a subtle inner
   shadow so it reads as raised thread instead of digital pulse. */
.bwe-tl-node.is-active .bwe-tl-dot{
  box-shadow:
    0 0 0 5px rgba(232,132,90,0.16),
    0 1px 3px rgba(45,40,32,0.18) inset;
}

/* ═════════ S116 MOBILE TOUR HARDENING (appended last for cascade) ═════════ */

/* Perf: backdrop-filter:blur is one of the most expensive effects to repaint
   on mobile GPUs, and these glass cards sit on screen during the scrubbed
   chapter scroll. Their backgrounds are already ~94-96 percent opaque, so
   dropping the blur on touch devices is a real smoothness win with no
   legibility loss. .sp-watch is intentionally left alone: its background is
   only ~16 percent opaque and relies on the blur to stay readable over the
   film still. Desktop keeps the frosted glass. */
@media (hover: none) and (pointer: coarse), (max-width:600px), (max-height:600px){
  .bwe-tour .scene-text,
  .bwe-tour .s2-search,
  .bwe-tour .s3-lesson,
  .bwe-tour .s5-annot{
    -webkit-backdrop-filter:none;
    backdrop-filter:none;
  }
}

/* UX: shorter scenes on phones to cut the long marathon scroll. The reveal
   engine keys its discrete beats to a height-independent q
   (q = -top / (height - vh)), so the four beats still land at the same
   12/42/71 percent points at any height (see bwe-pro-tour.js update()).
   Trimming per-scene scroll changes the scroll distance, not the reveal
   choreography. Phone-only (small viewport in either orientation); tablets
   keep the fuller desktop-like pacing. Height stays above 100vh so the pinned
   window (height - vh) stays positive and all four beats remain reachable.
   .scene[data-scene] targets the eight chapters only (not the stripped
   flood-scene, which has no data-scene). */
@media (max-width:600px), (max-height:600px){
  .bwe-tour .scene[data-scene]{height:170vh}
  .bwe-tour .voice-scene{height:200vh}
}
