:root{--journey-paper:#f4eee2;--journey-ink:#3d4839;--journey-green:#536652}
html{overflow-x:clip;scroll-behavior:auto}body{background:#17272c}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:2px solid #d9bd85;outline-offset:5px}
.has-js body[data-world=opening]{height:100svh;overflow:hidden}.has-js body:not([data-world=opening]){height:auto;overflow-y:visible;overflow-x:clip}.light-world{position:relative;max-width:560px;width:100%;margin:auto;isolation:isolate}.experience{box-shadow:none}
.journey-continue{position:absolute;z-index:8;right:17px;bottom:calc(16px + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:10px 15px;border:1px solid #e7d3ae;border-radius:24px;background:#eee0c8f5;color:#443d2e;box-shadow:0 4px 18px #20160e33;font-size:11px;line-height:1.5;white-space:nowrap}
.journey-continue svg,.journey-skip svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
/* Shared audio replaces the native sound button, so use its left-hand slot.
   Keep both controls inside separate halves of the scene on narrow screens;
   authored continuation text can wrap without covering the music control. */
[data-ea-music-control]{left:max(16px,calc((100vw - 560px)/2 + 16px),env(safe-area-inset-left,0px))!important;right:auto!important;max-width:calc(min(50vw,280px) - 24px)!important}
.journey-continue{max-width:calc(min(50vw,280px) - 24px);white-space:normal;text-align:center}
body[data-state=revealed] .controls [data-replay],body[data-state=error] .controls{display:none!important}
body:not([data-world=opening]) :is(.invitation,.prompt,.final-copy,.controls,.demo-caption,.unavailable,[data-begin],[data-continue]){display:none!important}
.journey-fallback{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.journey-moving{position:absolute;z-index:6;inset:0;padding:calc(26px + env(safe-area-inset-top)) 22px 22px;text-align:center;pointer-events:none;text-shadow:0 2px 13px #1b291c99;background:linear-gradient(#17221f40,transparent 24%,transparent 82%,#17221f45)}
.journey-eyebrow{font:500 9px/1.8 ui-sans-serif,system-ui,sans-serif;letter-spacing:.21em}
.journey-moving .journey-eyebrow{color:#eee0c1}.journey-status{font:italic 24px/1.35 LightSerif,Georgia,serif;margin-top:10px;color:#fff1d4}
.journey-skip{position:absolute;bottom:calc(18px + env(safe-area-inset-bottom));right:18px;pointer-events:auto;min-height:44px;padding:10px 14px;border:1px solid #e6d9ba55;border-radius:24px;display:flex;align-items:center;gap:9px;background:#24332c88;backdrop-filter:blur(8px);color:#f4e8d1;font-size:10px}
body[data-world=book] .scene-shade{opacity:.3;background:radial-gradient(ellipse at center,transparent 45%,#15201977)}
.main-memories{position:relative;background:#f3eee3;color:var(--journey-ink)}.journey-scroll-hint{position:absolute;bottom:calc(25px + env(safe-area-inset-bottom));left:18px;right:18px;font:400 11px/1.5 ui-sans-serif,system-ui,sans-serif;color:#f7ecd2}.journey-scroll-hint span{display:block;font-size:18px;margin-top:8px}
.journey-recovery{position:absolute;z-index:50;left:0;right:0;top:0;height:100svh;min-height:360px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:22px;padding:30px;background:var(--journey-paper);color:var(--journey-ink);text-align:center}
.journey-recovery h1{font:400 38px/1.1 LightSerif,Georgia,serif;letter-spacing:-.04em}.journey-recovery>p:not(.journey-eyebrow){font-size:14px;line-height:1.8}.journey-recovery button{min-height:48px;padding:12px 20px;border:1px solid #869178;border-radius:25px;background:#536652;color:#fff7e6;font-size:14px}
.has-js .static-journey{display:none}.static-journey{background:var(--journey-paper);color:var(--journey-ink);padding-bottom:30px}.static-journey>header,.static-journey>footer{padding:70px 28px;text-align:center}.static-journey h1{font:400 43px/1.05 LightSerif,Georgia,serif;letter-spacing:-.04em;margin:24px 0}.static-journey h2{font:400 29px/1.15 LightSerif,Georgia,serif;letter-spacing:-.035em;margin:20px 0}.static-journey em{color:#7c805d}.static-journey p{font-size:15px;line-height:1.8}.static-journey figure{margin:25px 0}.static-journey figure img{display:block;width:100%;height:auto;border:8px solid #fff9eb;box-shadow:0 5px 18px #3a412626}.static-journey figcaption{font:italic 19px/1.5 LightSerif,Georgia,serif;margin:16px 0 0}.static-book-page{padding:40px 28px;border-top:1px solid #bdb49655}.static-personal-note{padding:50px 28px;background:#f0e3ad}.static-personal-note p{margin:20px 0}.static-personal-note hr{margin:40px 0;border:0;border-top:1px solid #9b8d5f55}.static-date{padding:50px 28px}.static-date>img{width:100%;height:auto;display:block;margin:22px 0}.static-date .static-demo{font-size:11px;color:#737664;margin-top:20px}.static-journey button{min-height:44px;margin-top:26px;padding:10px 16px;border:1px solid #7e8d70;border-radius:24px;background:none;color:#56634a;font-size:12px}
body[data-world=static]{overflow-y:visible;height:auto;color-scheme:light}body[data-world=static] .experience{display:none}body[data-world=static] .static-journey{display:block}
@media(max-width:350px){.journey-continue{right:14px;padding-inline:12px;font-size:10.5px}.controls{left:14px}.controls button{padding-inline:10px}.journey-moving .journey-eyebrow{font-size:8px}.journey-status{font-size:22px}}
@media(max-height:700px) and (orientation:portrait){.journey-continue{bottom:calc(10px + env(safe-area-inset-bottom))}.journey-moving{padding-top:18px}}
@media(orientation:landscape) and (max-height:500px){.light-world{max-width:none}.journey-moving{padding-top:12px}.journey-status{font-size:21px;margin-top:4px}.static-journey{max-width:640px;margin:auto}}
@media(orientation:landscape) and (max-height:500px){[data-ea-music-control]{left:max(16px,env(safe-area-inset-left,0px))!important}}

/* A motion-free route keeps all nine pictures in normal document flow. */
body[data-world=book][data-reduced-motion=true] .static-journey{display:block}
body[data-world=book][data-reduced-motion=true] .static-journey>:not(.static-book-page){display:none}

@media(orientation:landscape) and (max-height:500px){body[data-world=book] .static-journey{display:block}body[data-world=book] .static-journey>:not(.static-book-page){display:none}}

/* The album stays at the top. Each following chapter scrolls into its own scene. */
.story-track{position:relative;isolation:isolate;background:#203b36}
body[data-album-layer=true] .story-track{height:100svh;min-height:360px}
body[data-album-layer=true] .experience{position:fixed;top:0;left:0;right:0}
body[data-album-layer=true][data-scene-visible=false] .experience{visibility:hidden;pointer-events:none}
.main-memories,.static-journey{position:relative;z-index:1}
@media(orientation:landscape) and (max-height:500px){body[data-album-layer=true] .story-track{min-height:320px}}
body[data-world=book][data-cinematic=true] .experience{animation:room-breath 12s ease-in-out infinite;transform-origin:50% 52%;will-change:transform}
body[data-scene-visible=false] .experience,body[data-page-hidden=true] .experience{animation-play-state:paused!important}
body[data-bridge-active=true] .experience{animation-play-state:paused!important}
body[data-book-away=true] .experience{visibility:hidden;pointer-events:none}
body[data-book-bridge=true] .main-memories{background:transparent}
/* Fade the assembled room as one surface: objects stay opaque relative to
   each other and bound pages keep positive coordinates. Only the table moves. */
body[data-book-bridge=true] .experience{opacity:var(--book-opacity,1)}
body[data-book-bridge=true] .experience[data-bridge-rendering=true]{transform:none!important}
@keyframes room-breath{0%,100%{transform:scale(1)}50%{transform:scale(1.018)}}
[data-phone-origin]{position:relative;isolation:isolate}
body[data-world=static] .story-track{display:none}
[data-after-phone][hidden]{display:none!important}
@media(prefers-reduced-motion:reduce){body[data-world=book] .experience{animation:none!important;transform:none!important}}

.memory-book-scroll-hint{font-size:14px;line-height:1.55;letter-spacing:0}.memory-book-scroll-hint span{font-size:19px;animation:book-scroll-cue 2.4s ease-in-out infinite}
@keyframes book-scroll-cue{0%,100%{transform:translateY(0);opacity:.7}50%{transform:translateY(5px);opacity:1}}
body[data-page-hidden=true] .memory-book-scroll-hint span,body[data-scene-visible=false] .memory-book-scroll-hint span{animation-play-state:paused}
body[data-bridge-active=true] .memory-book-scroll-hint span{animation-play-state:paused}
