/* The absolute boundary contains the sticky scene: no negative margins or overhang. */
.page-culture .story-journey { position: relative; isolation: isolate; overflow: clip; color: var(--premium-white); background: var(--premium-navy); }
.story-visual-boundary { position: absolute; inset: 0; pointer-events: none; }
.story-stage { position: sticky; top: 0; width: 100%; height: 100vh; height: 100svh; overflow: hidden; isolation: isolate; background: var(--premium-navy); }
.story-scene { position: absolute; inset: 0; opacity: 0; visibility: hidden; transform: scale(1.04); transform-origin: var(--scene-origin, 48% 45%); }
.story-scene:first-child { opacity: 1; visibility: visible; }
.story-scene img { width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: var(--scene-origin, 48% 45%); }
/* Focal points of the real photographs: the flight zooms toward them. */
.story-scene[data-flight-scene="cane"] { --scene-origin: 50% 58%; }
.story-scene[data-flight-scene="anise"] { --scene-origin: 45% 50%; }
.story-scene[data-flight-scene="oak"] { --scene-origin: 49% 42%; }
.story-journey.is-in-view:not(.is-calm) .story-scene.is-rendered { will-change: transform, opacity; }
.story-shade { position: absolute; inset: 0; z-index: 4; background: linear-gradient(90deg, rgba(0,59,92,.52), rgba(0,59,92,.05) 35%, rgba(0,59,92,.7) 76%, rgba(0,59,92,.85)), linear-gradient(0deg, rgba(0,59,92,.92), transparent 34%, transparent 74%, rgba(0,59,92,.3)); }
.story-flight-lines { position: absolute; z-index: 3; inset: -20%; width: 140%; height: 140%; color: var(--premium-sky); opacity: var(--flight-energy, 0); transform: scale(calc(1 + var(--flight-energy, 0) * .65)); pointer-events: none; }
.story-flight-lines line { stroke: currentColor; stroke-width: .55; vector-effect: non-scaling-stroke; }
.story-flight-lines line:nth-child(3n) { stroke: var(--premium-blush); }
.story-flight-lines line:nth-child(5n) { stroke: var(--premium-coral); }
.story-landmark, .story-tools, .story-rail { position: absolute; z-index: 5; pointer-events: auto; }
.story-landmark { left: 5vw; bottom: 30px; margin: 0; font-size: .8rem; letter-spacing: .03em; }
.story-landmark span { display: block; margin-bottom: 6px; font: 400 .75rem 'Inconsolata', monospace; text-transform: uppercase; letter-spacing: .16em; color: var(--premium-blush); }
.story-landmark small { font: inherit; }
.story-rail { left: 5vw; top: 42%; display: grid; gap: 3px; max-width: 23%; opacity: 0; visibility: hidden; transition: opacity .35s, visibility .35s; }
.story-enhanced.has-chapter .story-rail { opacity: 1; visibility: visible; }
.story-rail a { display: flex; align-items: center; gap: 15px; min-height: 44px; color: white; font-size: .875rem; text-decoration: none; transition: color .2s; }
.story-rail a::before { content: ''; width: 16px; height: 1px; background: currentColor; opacity: .65; transition: width .3s; }
.story-rail a:hover, .story-rail a[aria-current="step"] { color: var(--premium-coral); }
.story-rail a[aria-current="step"]::before { width: 32px; opacity: 1; }
.story-tools { right: 5vw; bottom: 24px; display: flex; gap: 8px; align-items: center; }
.story-tools[hidden] { display: none; }
.story-tools button { min-width: 46px; min-height: 46px; border: 1px solid rgba(255,255,255,.45); border-radius: 50%; background: rgba(0,59,92,.5); color: white; font: inherit; cursor: pointer; transition: background .2s, color .2s; }
.story-tools .story-motion { border-radius: 24px; padding: 0 18px; margin-left: 10px; font-size: .875rem; }
.story-tools button:hover { color: var(--premium-navy); background: var(--premium-blush); }
.story-tools button:disabled { opacity: .35; cursor: default; }
.story-progress { position: absolute; z-index: 5; left: 0; right: 0; bottom: 0; height: 2px; transform: scaleX(var(--story-progress, 0)); transform-origin: left; background: var(--premium-coral); }
.story-intro, .story-chapter { position: relative; z-index: 2; min-height: 100vh; min-height: 100svh; box-sizing: border-box; pointer-events: none; }
.story-intro { display: flex; flex-direction: column; justify-content: flex-end; align-items: flex-start; padding: 180px 7vw 140px; }
.story-eyebrow { margin: 0 0 28px; font: 400 .875rem 'Inconsolata', monospace; text-transform: uppercase; letter-spacing: .17em; }
.page-culture .story-intro h1 { color: white; font: 400 clamp(4rem, 8.7vw, 9.6rem)/.97 'Ogg', Georgia, serif; text-transform: none; letter-spacing: -.045em; margin: 0 0 28px; text-wrap: balance; }
.story-intro h1 span { color: var(--premium-blush); }
.story-intro-copy { max-width: 390px; margin: 0 0 26px; font-size: 1.05rem; line-height: 1.7; }
.story-enter { pointer-events: auto; display: inline-flex; align-items: center; gap: 28px; padding: 12px 0; border-bottom: 1px solid rgba(255,255,255,.65); color: white; text-decoration: none; font-size: .95rem; }
.story-enter span { font-size: 1.4rem; transition: transform .3s; }
.story-enter:hover span { transform: translateY(5px); }
.story-chapter { display: flex; align-items: center; padding: 180px 7vw 160px 48%; scroll-margin-top: 0; }
.story-card { pointer-events: auto; width: 100%; max-width: 560px; margin-left: auto; padding: 0; }
.story-card .story-eyebrow { color: var(--premium-blush); font-size: .8rem; margin-bottom: 30px; }
.page-culture .story-card h2 { font: 400 clamp(2.8rem, 4.6vw, 5.3rem)/1.03 'Ogg', Georgia, serif; color: white; letter-spacing: -.035em; text-transform: none; margin: 0 0 28px; text-wrap: balance; }
.story-card > p:not(.story-eyebrow) { margin: 0; font-size: 1.08rem; line-height: 1.8; }
.story-card strong { font-weight: 600; }
.story-note { display: flex; gap: 14px; align-items: center; border-top: 1px solid rgba(255,255,255,.3); padding-top: 24px; margin-top: 30px; color: var(--premium-blush); font-size: .875rem; }
.story-note::before { content: ''; flex: 0 0 6px; height: 6px; border: 1px solid var(--premium-coral); transform: rotate(45deg); }
.story-next { display: inline-flex; align-items: center; gap: 24px; color: white; margin-top: 24px; padding-block: 12px; font-size: .9rem; text-decoration: none; }
.story-next:hover { color: var(--premium-coral); }
.story-journey :focus-visible, .story-finale :focus-visible, .story-sources :focus-visible { outline: 2px solid var(--premium-coral); outline-offset: 6px; }
.story-chapter:focus, .story-intro:focus { outline: none; }
.story-finale { position: relative; z-index: 3; isolation: isolate; display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 7vw; padding: 100px 9vw; color: var(--premium-navy); background: var(--premium-blush); }
.story-finale-visual { display: flex; align-items: center; justify-content: center; min-height: 480px; background: radial-gradient(ellipse, white, transparent 67%); }
.story-finale-visual img { width: min(75%, 330px); max-height: 600px; object-fit: contain; filter: drop-shadow(16px 28px 22px rgba(0,59,92,.15)); }
.page-culture .story-finale h2 { font: 400 clamp(2.8rem, 4.7vw, 5.8rem)/1.04 'Ogg', Georgia, serif; letter-spacing: -.035em; text-transform: none; margin: 0 0 25px; color: var(--premium-navy); }
.story-finale p:not(.story-eyebrow) { font-size: 1.1rem; line-height: 1.8; max-width: 420px; }
.story-finale .story-enter { color: var(--premium-navy); border-color: currentColor; margin-top: 18px; }
.story-sources { position: relative; z-index: 3; padding: 36px 7vw; background: white; color: var(--premium-navy); }
.story-sources details { max-width: 1100px; margin: auto; border-top: 1px solid rgba(0,59,92,.2); }
.story-sources summary { padding: 22px 0; font-size: .9rem; cursor: pointer; }
.story-sources p, .story-sources li { font-size: .9rem; line-height: 1.8; }
.story-sources ul { display: flex; flex-wrap: wrap; gap: 12px 35px; list-style: none; padding: 0; margin: 0 0 20px; }
.story-sources a { color: inherit; text-underline-offset: 4px; }
.story-journey.is-calm .story-flight-lines { display: none; }
.page-culture .back-to-top { bottom: 105px; }
@media (max-width: 760px) {
    .story-intro { padding: 150px 7vw 150px; }
    .page-culture .story-intro h1 { font-size: clamp(3.5rem, 13vw, 6rem); }
    .story-intro-copy { font-size: 1rem; }
    .story-shade { background: linear-gradient(0deg, rgba(0,59,92,.94), rgba(0,59,92,.65) 48%, rgba(0,59,92,.08) 78%, rgba(0,59,92,.4)); }
    .story-landmark { bottom: 78px; left: 7vw; font-size: .75rem; }
    .story-landmark span { display: none; }
    .story-tools { left: 7vw; right: auto; bottom: 17px; }
    .story-tools .story-motion { margin-left: 4px; }
    .story-rail { top: 92px; left: 4vw; right: 4vw; max-width: none; display: flex; justify-content: safe center; gap: 2px; border: 1px solid rgba(255,255,255,.3); border-radius: 30px; background: rgba(0,59,92,.88); padding: 0 8px; overflow-x: auto; }
    .story-rail a { font-size: .875rem; padding: 0 5px; white-space: nowrap; }
    .story-rail a::before { display: none; }
    .story-rail a[aria-current="step"] { text-decoration: underline; text-underline-offset: 6px; }
    .story-chapter { align-items: flex-end; padding: 220px 8vw 160px; }
    .story-card { max-width: 520px; margin: auto; }
    .page-culture .story-card h2 { font-size: clamp(2.5rem, 9vw, 3.6rem); margin-bottom: 22px; }
    .story-card > p:not(.story-eyebrow) { font-size: 1rem; line-height: 1.7; }
    .story-card .story-eyebrow { margin-bottom: 20px; }
    .story-note { margin-top: 24px; padding-top: 20px; }
    .story-next { margin-top: 16px; }
    .story-finale { grid-template-columns: 1fr; gap: 25px; padding: 55px 8vw 70px; }
    .story-finale-visual { min-height: 0; }
    .story-finale-visual img { max-height: 370px; width: 250px; }
}
@media (max-height: 620px) {
    .story-rail, .story-tools, .story-landmark { display: none; }
    .story-intro { min-height: 650px; }
    .story-chapter { min-height: 650px; padding: 140px 10vw 100px; }
    .story-card { margin-inline: auto; }
    .story-shade { background: rgba(0,59,92,.75); }
}
@media (prefers-reduced-motion: reduce) {
    .story-scene { transform: none !important; filter: none !important; will-change: auto !important; }
    .story-flight-lines { display: none; }
    .story-journey *, .story-finale * { scroll-behavior: auto; transition: none !important; }
}
