:root{--paper:#f0f6f6;--ink:#233e45;--muted:#657c80;--accent:#355b63;--line:#b9cdd04d;--flavor:#f0d680;--nav-height:82px;color-scheme:light dark;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue",sans-serif;scroll-behavior:smooth;scroll-padding-top:90px}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);overflow-x:clip}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:7px}button{color:inherit}img{display:block;max-width:100%}.nav{height:var(--nav-height);position:absolute;inset:0 0 auto;display:flex;justify-content:space-between;align-items:center;padding:0 clamp(24px,5vw,80px);z-index:30}.brand-link{width:112px;display:block}.brand-link img,footer>img,.hero-copy h1 img,.coaster-signature{filter:brightness(0) saturate(100%) opacity(.82)}.nav nav{display:flex;align-items:center;gap:32px;font-size:13px}.nav a{transition:opacity .2s}.nav a:hover{opacity:.65}.nav-download{padding:10px 0;display:inline-flex;align-items:center;gap:4px}.nav-download span{margin-left:0}.eyebrow{font-size:10px;letter-spacing:.24em;font-weight:600;margin:0 0 26px}.hero-track{height:165svh;position:relative}.hero-stage{height:100svh;min-height:640px;position:sticky;top:0;overflow:hidden;isolation:isolate;background:radial-gradient(ellipse at 46% 45%,#fffaf285 0,transparent 60%),var(--paper)}.hero-copy{position:absolute;width:min(510px,45vw);left:50%;top:25%;transform:translateX(-50%);text-align:center;z-index:5;will-change:opacity,translate}.hero-copy h1{margin:0 auto 22px;width:clamp(260px,31vw,430px)}.hero-copy h1 img{width:100%}.hero-title{font-size:clamp(21px,2.1vw,30px);font-weight:500;letter-spacing:.04em;margin:0 0 17px;white-space:nowrap}.hero-description{font-size:14px;color:var(--muted);letter-spacing:.06em;margin:0 0 26px}.text-link{font-size:12px;border-bottom:1px solid var(--line);padding:8px 0;display:inline-block}.text-link span{margin-left:12px}.water-light{position:absolute;inset:0;pointer-events:none;opacity:.5;overflow:hidden;mask-image:linear-gradient(#000,transparent)}.water-light i{position:absolute;width:130vw;height:60vw;border:24px solid #fff8;border-radius:48%;filter:blur(13px);transform:rotate(-25deg);left:-70%;top:-60%;box-shadow:0 0 40px 5px #cae4e8aa}.water-light i:nth-child(2){left:32%;top:-63%;transform:rotate(35deg);border-width:10px}.water-light i:nth-child(3){left:-50%;top:67%;transform:rotate(8deg);border-width:8px}#toy-scene{position:absolute;inset:0;z-index:12;pointer-events:none;will-change:transform}#toy-field{width:100%;height:100%;position:relative;pointer-events:none}.toy{border:0;background:none;padding:0;position:absolute;left:0;top:0;width:clamp(135px,17vw,230px);aspect-ratio:1;cursor:grab;pointer-events:auto;touch-action:none;user-select:none;will-change:transform;outline-offset:0!important}.toy img{width:100%;height:100%;object-fit:contain;pointer-events:none;filter:drop-shadow(0 18px 13px #4d77751b);transition:filter .25s}.toy:hover img{filter:drop-shadow(0 20px 14px #4d77752d)}.toy:active{cursor:grabbing}.toy.is-dragging{z-index:20}.toy-visual{position:absolute;inset:0;transform:rotate(var(--tilt,0deg));pointer-events:none}.toy-label{position:absolute;left:var(--label-x);top:var(--label-y);width:var(--label-w);height:var(--label-h);display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.1;font-size:13px;font-weight:500;letter-spacing:.12em;text-indent:.12em;color:#354c56;pointer-events:none}.toy[data-toy=shell]{width:clamp(100px,11vw,148px)}.toy[data-toy=boat]{width:clamp(100px,12vw,170px)}.flavor-target{position:absolute;left:50%;top:75%;width:245px;height:104px;transform:translateX(-50%);text-align:center;z-index:4;display:flex;flex-direction:column;justify-content:center;gap:8px;pointer-events:none}.target-orbit{position:absolute;inset:-8px -8px;border:1px dashed #668d926b;border-radius:50%;transform:rotate(-7deg);background:color-mix(in srgb,var(--flavor) 11%,transparent);transition:background .5s,border-color .3s,scale .3s}.target-hint,.target-detail{font-size:10px;color:var(--muted);position:relative}.target-detail{opacity:.7;font-size:9px}.flavor-target strong{font-size:15px;font-weight:500;position:relative;letter-spacing:.04em}.flavor-target.is-over .target-orbit,.flavor-target.pulse .target-orbit{scale:1.1;border-color:var(--accent);background:color-mix(in srgb,var(--flavor) 28%,transparent)}.hero-bottom{position:absolute;bottom:24px;left:5vw;right:5vw;display:flex;justify-content:space-between;align-items:center;font-size:10px;color:var(--muted);letter-spacing:.08em;z-index:10;pointer-events:none}.scroll-cue{display:flex;align-items:center;gap:12px;letter-spacing:.15em}.scroll-cue i{font-style:normal;font-size:18px;animation:nudge 2s ease-in-out infinite}.story-track{height:300svh;position:relative}.story-stage{height:100svh;min-height:650px;position:sticky;top:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;padding:55px max(7vw,24px);gap:5vw;overflow:hidden}.story-copy{padding-left:3vw;position:relative;z-index:3}.story-copy>.eyebrow{margin-bottom:45px}.story-headings{position:relative;height:260px}.story-step{position:absolute;inset:0;opacity:0;transform:translateY(24px);pointer-events:none;transition:opacity .12s linear,transform .12s ease-out}.story-step.is-active{opacity:1;transform:translateY(0);pointer-events:auto;transition:opacity .12s linear,transform .12s ease-out}.step-index{font-size:11px;letter-spacing:.1em;color:var(--muted)}h2{font-size:clamp(34px,4.5vw,64px);font-weight:500;line-height:1.22;letter-spacing:-.035em;margin:22px 0} .story-step p,.memory-heading>p:last-child{font-size:14px;line-height:1.9;color:var(--muted)}.story-controls{display:flex;align-items:center;gap:14px;margin-top:45px;width:300px;max-width:100%}.story-controls button{padding:10px 0;background:none;border:0;color:var(--muted);font-size:12px;cursor:pointer;min-width:44px;min-height:44px}.story-controls button.is-active{color:var(--ink);font-weight:600}.story-controls>span{height:1px;background:var(--line);flex:1}.phone-world{position:relative;display:grid;place-items:center;min-width:0}.phone{height:min(73svh,650px);aspect-ratio:0.461;border:5px solid #334748;border-radius:42px;background:#334748;box-shadow:0 35px 60px -30px #23464b70,0 0 0 1px #638287;position:relative;z-index:2;transform:perspective(1200px) rotateY(-7deg) rotateZ(2deg);will-change:transform}.phone-screens{position:absolute;inset:0;overflow:hidden;border-radius:35px}.screen{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .5s}.screen.is-active{opacity:1}.phone-halo{position:absolute;width:min(46vw,580px);aspect-ratio:1;background:radial-gradient(circle,color-mix(in srgb,var(--flavor) 22%,transparent),transparent 68%);border-radius:50%;transition:background 1s}.story-float{position:absolute;width:145px;pointer-events:none;z-index:3;filter:drop-shadow(0 15px 15px #345e681c);will-change:transform}.float-leading{top:1%;right:-5%;transform:rotate(15deg)}.float-trailing{bottom:5%;left:-5%;width:155px}.screen-caption{font-size:10px;letter-spacing:.07em;color:var(--muted);position:absolute;bottom:-30px}.chapter-progress{position:absolute;left:10vw;right:10vw;bottom:24px;height:1px;background:var(--line)}.chapter-progress span{height:100%;width:100%;background:var(--accent);display:block;transform:scaleX(0);transform-origin:left}.memory-section{min-height:100svh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:8vw;padding:120px 10vw 100px;position:relative}.memory-heading h2{font-size:clamp(38px,4.5vw,64px)}.coaster-world{position:relative;text-align:center;padding-top:45px;perspective:1000px}.coaster{width:min(33vw,410px);aspect-ratio:1;border:0;border-radius:50%;padding:0;background:none;cursor:pointer;perspective:1000px;position:relative;display:block;margin-inline:auto;transform:rotate(-7deg);transition:transform .3s}.coaster:hover{transform:rotate(-4deg) translateY(-4px)}.coaster-inner{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .85s cubic-bezier(.2,.75,.25,1)}.coaster.is-flipped .coaster-inner{transform:rotateY(180deg)}.coaster-front,.coaster-back{position:absolute;inset:0;border-radius:50%;display:flex;align-items:center;flex-direction:column;justify-content:center;backface-visibility:hidden;-webkit-backface-visibility:hidden;background:#fffdf5;box-shadow:0 18px 38px -20px #375d6866,inset 0 0 0 1px #d7cfb8,inset 0 0 0 12px #f5f0e2,inset 0 0 0 13px #ddd7c54d;color:#3e514e;padding:34px}.coaster-kicker{font-size:9px;letter-spacing:.16em;color:#7d8a80}.coaster-front>img:not(.coaster-signature){width:42%;aspect-ratio:1;object-fit:contain;margin:12px 0 4px}.coaster-front strong{font-size:20px;font-weight:500;letter-spacing:.03em}.coaster-front>span:not(.coaster-kicker){font-size:10px;color:#859086;margin-top:10px;max-width:190px;line-height:1.6}.coaster-signature{width:88px;margin-top:18px}.coaster-back{transform:rotateY(180deg);gap:10px}.journal-shot{height:65%;width:auto;object-fit:contain;border-radius:8px}.coaster-back>span:last-child{font-size:10px}.hand-note{position:absolute;left:-30px;top:0;font-size:12px;letter-spacing:.07em;transform:rotate(-9deg);color:var(--muted)}.hand-note svg{width:65px;height:40px;display:block;margin-left:75%;fill:none;stroke:currentColor;stroke-width:1.2}.flip-hint{margin-top:32px;font-size:11px;color:var(--muted);letter-spacing:.07em}.flip-hint span{display:inline-block;font-size:19px;vertical-align:-2px;margin-right:6px}.closing{text-align:center;padding:110px 24px 130px;border-top:0;margin:0 8vw}.closing h2{font-size:clamp(30px,4.2vw,58px);margin:25px 0 35px}.download-button{display:inline-flex;align-items:center;gap:16px;background:var(--ink);color:var(--paper);padding:13px 22px;border-radius:14px;box-shadow:0 8px 20px #24454a12;transition:transform .2s,box-shadow .2s}.download-button:hover{transform:translateY(-3px);box-shadow:0 12px 24px #24454a25}.download-button svg{width:30px;height:34px}.download-button>span:nth-child(2){text-align:left;font-size:17px;letter-spacing:.04em}.download-button small{display:block;font-size:9px;margin-bottom:3px}.download-button>span:last-child{margin-left:20px}.download-note{font-size:11px;color:var(--muted);margin-top:21px}footer{padding:35px 5vw 28px;display:flex;align-items:center;justify-content:space-between;gap:25px;border-top:0;font-size:10px;color:var(--muted)}footer>img{width:105px}footer>div{display:flex;gap:20px}footer p{line-height:2;text-align:right}footer p span{display:block}.noscript{text-align:center;padding:15px}.is-entering{animation:appear 1s both}@keyframes nudge{0%,100%{transform:translateY(-3px)}50%{transform:translateY(3px)}}@keyframes appear{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@media(min-width:1600px){.hero-copy{top:29%}.hero-stage{min-height:760px}}
@media(max-width:800px){.nav{padding:0 24px;height:72px}.nav nav{gap:18px}.brand-link{width:95px}.hero-copy{width:55vw;top:28%}.hero-copy h1{width:260px;max-width:100%}.hero-title{font-size:21px}.hero-description{font-size:12px}.toy{width:155px}.toy[data-toy=boat],.toy[data-toy=shell]{width:115px}.story-stage{padding:50px 5vw;gap:3vw}.story-copy{padding:0}.story-copy>.eyebrow{font-size:8px}.story-headings{height:270px}.phone{height:62svh;max-height:570px;border-radius:35px}.phone-screens{border-radius:28px}.story-float{width:95px}.float-trailing{width:110px}.memory-section{padding:90px 6vw;gap:5vw}.coaster{width:39vw}.coaster-front,.coaster-back{padding:25px}.coaster-front strong{font-size:16px}.coaster-front>span:not(.coaster-kicker){font-size:9px}.coaster-signature{width:75px;margin-top:12px}.coaster-kicker{font-size:7px}.hand-note{left:-10px}.closing{padding:90px 20px}footer{flex-wrap:wrap}footer p{width:100%;text-align:center;margin:0}}
@media(max-width:600px){:root{--nav-height:68px}.nav{height:68px;padding:0 20px}.brand-link{width:80px}.nav nav{font-size:11px;gap:17px}.hero-track{height:140svh}.hero-stage{min-height:690px}.hero-copy{top:28%;width:88%;max-width:390px}.hero-copy .eyebrow{font-size:8px;margin-bottom:20px}.hero-copy h1{width:265px;margin-bottom:20px}.hero-title{font-size:21px;letter-spacing:.01em}.hero-description{font-size:11px;margin-bottom:16px}.text-link{font-size:11px}.toy{width:128px}.toy[data-toy=shell],.toy[data-toy=boat]{display:none}.toy-label{font-size:11px}.flavor-target{top:78%;width:210px;height:85px}.flavor-target strong{font-size:13px}.target-hint{font-size:9px}.target-detail{font-size:8px}.hero-bottom{bottom:20px;left:20px;right:20px;font-size:8px}.hero-bottom>span:last-child{display:none}.scroll-cue{font-size:8px}.story-track{height:300svh}.story-stage{min-height:710px;padding:35px 24px 45px;display:flex;flex-direction:column;justify-content:center;gap:25px}.story-copy{width:100%;text-align:center}.story-copy>.eyebrow{margin-bottom:15px;font-size:8px}.story-headings{height:180px}.step-index{font-size:9px}.story-step h2{font-size:33px;line-height:1.15;margin:12px 0}.story-step p{font-size:11px;line-height:1.75;margin:12px 0}.story-controls{margin:0 auto;gap:10px;width:220px}.story-controls button{font-size:10px;padding:6px 0;min-height:32px}.phone-world{width:100%}.phone{height:44svh;min-height:300px;max-height:440px;border-width:4px;border-radius:28px}.phone-screens{border-radius:23px}.phone-halo{width:90vw}.screen-caption{font-size:8px;bottom:-19px}.story-float{width:92px}.float-leading{right:2%;top:8%}.float-trailing{left:0;bottom:9%;width:100px}.chapter-progress{bottom:15px}.memory-section{min-height:auto;display:flex;flex-direction:column;gap:55px;padding:95px 24px 80px;text-align:center}.memory-heading .eyebrow{font-size:8px}.memory-heading h2{font-size:40px}.memory-heading>p:last-child{font-size:12px}.coaster-world{width:100%;padding-top:35px}.coaster{width:min(80vw,350px)}.coaster-front strong{font-size:19px}.coaster-kicker{font-size:8px}.coaster-front>span:not(.coaster-kicker){font-size:10px}.coaster-signature{width:85px}.hand-note{left:5%;font-size:10px}.closing{padding:80px 0;margin:0 24px}.closing .eyebrow{font-size:8px}.closing h2{font-size:29px;letter-spacing:-.04em}.download-note{font-size:10px}footer{padding:30px 20px;justify-content:center;gap:20px}footer>img{width:100px}footer>div{width:100%;justify-content:center;gap:18px;font-size:10px}}
@media(prefers-color-scheme:dark){:root{--paper:#14272d;--ink:#e5f0ed;--muted:#9ab6bb;--accent:#b4d1d3;--line:#86abb32d}.hero-stage{background:radial-gradient(ellipse at 46% 45%,#29474888,transparent 65%),var(--paper)}.brand-link img,footer>img,.hero-copy h1 img{filter:brightness(0) invert(1) opacity(.88)}.water-light{opacity:.08}.target-orbit{border-color:#b2d0ce66}.phone{box-shadow:0 40px 70px -30px #000b}.phone-halo{opacity:.6}.toy img{filter:drop-shadow(0 18px 16px #0004)}.coaster-signature{filter:brightness(0) opacity(.8)}}
@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.hero-track{height:auto}.hero-stage{position:relative;height:100svh}#toy-scene,.hero-copy,.flavor-target{opacity:1!important;translate:none!important;scale:none!important}.story-track{height:auto}.story-stage{position:relative;height:auto;min-height:0;padding-top:70px;padding-bottom:70px}.story-headings{height:auto}.story-step{position:relative;opacity:1;transform:none;padding-bottom:25px}.story-controls{display:none}.phone{transform:none!important}.chapter-progress{display:none}.memory-heading,.coaster-world{opacity:1!important;translate:none!important}}

/* Proportional device frame: the screen keeps the native screenshot's 1320:2868 ratio. */
.phone-world{min-width:0;width:100%}
.phone{--phone-width:min(300px,27vw,31svh);--phone-inset:calc(var(--phone-width)*.025);--phone-radius:calc(var(--phone-width)*.165);width:var(--phone-width);height:auto;min-height:0;max-height:none;aspect-ratio:auto;padding:var(--phone-inset);border:0;border-radius:var(--phone-radius);background:linear-gradient(105deg,#626260 0%,#242525 4%,#101112 10%,#18191a 90%,#626463 97%,#282929 100%);box-shadow:inset 0 0 0 1px #777b7b,inset 0 0 0 3px #202222,0 28px 45px -24px #15363e70,0 3px 6px #163b3926;transform:rotate(1.5deg)}
.phone-screens{position:relative;inset:auto;width:100%;height:auto;aspect-ratio:1320/2868;overflow:hidden;border-radius:calc(var(--phone-radius) - var(--phone-inset));background:#000;isolation:isolate}
.screen{object-fit:contain}
.dynamic-island{position:absolute;z-index:5;left:50%;top:2.05%;width:27%;height:3.15%;transform:translateX(-50%);border-radius:999px;background:#050505;box-shadow:inset 0 0 0 .6px #222;pointer-events:none}
.dynamic-island i{position:absolute;width:12%;aspect-ratio:1;right:9%;top:50%;transform:translateY(-50%);border-radius:50%;background:radial-gradient(circle at 40% 35%,#1b2934,#080c10 65%);box-shadow:0 0 0 1px #101010}
.home-indicator{position:absolute;z-index:5;bottom:1.1%;left:33%;width:34%;height:.5%;border-radius:99px;background:#101714b8;pointer-events:none}
.phone-key{position:absolute;left:-2px;width:2px;border-radius:2px 0 0 2px;background:linear-gradient(90deg,#767b7a,#2b2e2e);box-shadow:-1px 0 1px #0002;pointer-events:none}
.action-key{top:16%;height:3.8%}.volume-up{top:24%;height:7%}.volume-down{top:33%;height:7%}.power-key{left:auto;right:-2px;top:27%;height:11%;border-radius:0 2px 2px 0}
/* The reverse is a full circular toy scene, not a miniature app screenshot. */
.coaster-back{padding:0;gap:0;overflow:hidden;background:#e2eff4;box-shadow:0 18px 38px -20px #375d6866,inset 0 0 0 1px #fff9}
.toy-closeup{position:absolute;inset:0;border-radius:inherit;overflow:hidden;isolation:isolate}
.coaster-water{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 0%;filter:saturate(.78);pointer-events:none}
.water-ring{position:absolute;inset:7%;border:1px solid #fff8;border-radius:50%;box-shadow:0 0 12px #fff7,inset 0 0 18px #fff7;transform:rotate(-12deg) scaleY(.8);pointer-events:none}
.closeup-toy{position:absolute;max-width:none;filter:drop-shadow(0 9px 8px #386d8624);animation:coaster-float 5s ease-in-out infinite alternate;animation-play-state:paused;pointer-events:none}
.coaster.is-flipped .closeup-toy{animation-play-state:running}
.closeup-ring{width:52%;left:-14%;top:12%;--turn:-20deg;animation-delay:-1.7s}
.closeup-cloud{width:52%;left:25%;top:-17%;--turn:10deg;animation-delay:-3s}
.closeup-starfish{width:50%;right:-17%;top:8%;--turn:19deg;animation-delay:-.8s}
.closeup-shell{width:44%;left:-7%;bottom:-12%;--turn:-25deg;animation-delay:-4s}
.closeup-duck{width:62%;left:17%;top:28%;--turn:8deg}
.closeup-boat{width:45%;right:-10%;bottom:-7%;--turn:17deg;animation-delay:-2.3s}
@keyframes coaster-float{from{transform:translateY(-3px) rotate(calc(var(--turn) - 2deg))}to{transform:translateY(4px) rotate(calc(var(--turn) + 2deg))}}
@media(max-width:800px){.phone{--phone-width:min(260px,29vw,29svh)}}
@media(max-width:600px){.phone{--phone-width:min(205px,48vw,21svh)}.story-float{width:78px}.float-trailing{width:85px}}
@media(prefers-color-scheme:dark){.phone{box-shadow:inset 0 0 0 1px #777b7b,inset 0 0 0 3px #202222,0 28px 45px -24px #000b,0 3px 6px #0005}.coaster-back{background:#c7dee8}}
@media(prefers-reduced-motion:reduce){.closeup-toy{animation:none;transform:rotate(var(--turn))}}

/* Match TipsySceneLayout.swift textRect; artwork and label share one rotation. */
.toy[data-toy=duck]{--label-x:28%;--label-y:56%;--label-w:48%;--label-h:21%;}
.toy[data-toy=starfish]{--label-x:34%;--label-y:43%;--label-w:32%;--label-h:18%;}
.toy[data-toy=shell]{--label-x:26%;--label-y:39%;--label-w:48%;--label-h:24%;}
.toy[data-toy=ring]{--label-x:30%;--label-y:39%;--label-w:40%;--label-h:22%;}
.toy[data-toy=boat]{--label-x:25%;--label-y:66%;--label-w:51%;--label-h:12%;}
.toy[data-toy=cloud]{--label-x:25%;--label-y:43%;--label-w:50%;--label-h:22%;}

/* Native section landings: keep long reading sections freely scrollable, but
   catch a directional fling at the next chapter. No wheel/touch cancellation.
   References: web.dev/articles/css-scroll-snap and CSS Scroll Snap Level 1. */
@media(prefers-reduced-motion:no-preference){
  :root{scroll-snap-type:y mandatory;scroll-padding-block:0}
  .hero-track,.memory-section,.maker-story,.closing{scroll-snap-align:start;scroll-snap-stop:always}
  footer{scroll-snap-align:end;scroll-snap-stop:always}
  .chapter-stop{position:absolute;left:0;width:100%;height:1px;pointer-events:none;scroll-snap-align:start;scroll-snap-stop:always}
}
@media(prefers-reduced-motion:reduce){.chapter-stop{display:none}}

/* Keep artwork and every line centred within the gently tilted coaster. */
.coaster-front{text-align:center;padding:13% 9%;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto auto;justify-items:center;align-content:center;gap:8px}
.coaster-front>img:not(.coaster-signature){width:45%;height:100%;min-height:0;aspect-ratio:auto;margin:0;object-fit:contain}
.coaster-front strong{width:100%;line-height:1.35;text-align:center}
.coaster-front>span:not(.coaster-kicker){margin:0;max-width:100%;text-align:center}
.coaster-signature{margin:0;width:85px}
@media(max-width:600px){
  .memory-section{min-height:max(100svh,750px);min-height:max(100lvh,750px);padding:0 24px;display:block}
  .memory-heading{position:absolute;top:var(--chapter-heading-top,49px);left:24px;right:24px;translate:none!important}
  .memory-heading .eyebrow{margin:0;line-height:9px}
  .memory-heading h2{margin:41px 0 12px;font-size:29px;line-height:1.15}
  .memory-heading>p:last-child{margin:12px 0 0;font-size:11px;line-height:1.75}
  .coaster-world{position:absolute;top:var(--chapter-media-top,286px);left:24px;right:24px;width:auto;height:var(--chapter-media-height,401px);padding:0;display:flex;align-items:center;justify-content:center;translate:none!important}
  .coaster{width:min(76vw,330px,39svh)}
  .coaster:hover{transform:rotate(-7deg)}
  .coaster-front{gap:6px}
  .coaster-front strong{font-size:clamp(15px,4.5vw,19px)}
  .coaster-front>span:not(.coaster-kicker){font-size:9px;line-height:1.5}
  .coaster-signature{width:70px}
  .hand-note{left:50%;top:0;transform:translateX(-50%);white-space:nowrap}
  .hand-note svg{position:absolute;left:100%;top:0;width:40px;height:28px;margin-left:4px}
  .flip-hint{position:absolute;bottom:0;left:0;right:0;margin:0}
}

/* Section transitions are defined by spacing, without divider rules. */
.maker-story,.closing,footer{border-top:0}
.chapter-progress{display:none}

/* Touch scrolling keeps the glass phone on a stable compositor layer. */
@media(pointer:coarse){.phone{transform:none!important;will-change:auto}.story-float{will-change:auto}}
