:root{--cream:#F2EBDD;--ink:#16130F;--felt:#1F4A38;--chip-red:#C8321F;--gold:#F2C14E;--white:#fff;--muted-on-dark:#B3AA99;--muted-on-felt:#CFDAD3;--gutter:clamp(20px,5vw,80px)}*{box-sizing:border-box}html{background:var(--ink);scrollbar-width:thin;scrollbar-color:var(--gold) var(--ink)}body{margin:0;font-family:'Space Mono',monospace;color:var(--ink);overflow-x:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,video:focus-visible{outline:3px solid var(--gold);outline-offset:6px}[hidden]{display:none!important}h1,h2,h3,h4,p,figure{margin:0}h1,h2,h3,h4{font-weight:400}h1,h2{font-family:Anton,sans-serif;line-height:.92}img{display:block;max-width:100%}.gold{color:var(--gold)}.marker{font-family:'Permanent Marker',cursive}.mobile-break{display:none}.sheet{position:relative}.grain{position:fixed;inset:0;z-index:99;pointer-events:none;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath filter='url(%23n)' opacity='.6' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}.chapter-header,.chapter-footer{width:100%;max-width:1280px;margin-inline:auto;display:flex;align-items:center;font-size:13px;letter-spacing:.14em;text-transform:uppercase;gap:16px}.chapter-header{justify-content:space-between;border-bottom:2px solid currentColor;padding-bottom:14px}.chapter-footer{letter-spacing:.22em;gap:14px}.chapter-footer i{height:2px;background:currentColor;flex:1}.chapter-footer>span:nth-child(2){font-size:27px;line-height:1}.eyebrow{font-size:13px;font-weight:700;letter-spacing:.2em;color:var(--chip-red);text-transform:uppercase}.scrawl-underline{width:100%;height:22px;stroke:var(--gold);stroke-width:3;fill:none;stroke-linecap:round;display:block;overflow:visible}.polaroid{background:#fff;box-shadow:0 18px 40px #16130f33;color:var(--ink)}.polaroid figcaption,#photo-caption{font-family:'Permanent Marker',cursive;text-align:center}#landing{min-height:100svh;background:var(--cream);padding:40px var(--gutter) 48px;display:flex;flex-direction:column;gap:40px;overflow:hidden}.landing-content{width:100%;max-width:1280px;margin:auto;display:grid;grid-template-columns:1fr 460px;align-items:center;gap:48px;flex:1}.landing-copy{display:flex;flex-direction:column;gap:24px;z-index:2}.landing-copy h1{font-size:clamp(96px,13vw,210px);line-height:.88}.landing-copy>p:last-child{font-size:20px;line-height:1.5}.landing-art{position:relative;padding:40px;display:flex;justify-content:center}#photo-anchor{width:380px;max-width:100%;height:520px;flex-shrink:0}.sparkle{position:absolute;width:44px}.sparkle-one{left:0;top:30px;filter:invert(25%) sepia(90%) saturate(2000%) hue-rotate(345deg)}.sparkle-two{right:20px;top:10px;width:26px}.sparkle-three{right:0;bottom:90px;width:32px}.look-note{position:absolute;left:-20px;bottom:10px;color:var(--chip-red);font:24px 'Permanent Marker',cursive;transform:rotate(-8deg);z-index:12}.look-note svg{display:block;width:90px;height:46px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round}.ribbon{position:absolute;left:-5%;width:110%;height:auto;pointer-events:none;overflow:visible}.ribbon text{font:700 16px 'Space Mono',monospace;letter-spacing:.12em;fill:var(--cream)}.landing-ribbon{bottom:50px;z-index:1;opacity:.98}.landing-ribbon use{stroke:var(--ink)}#landing .chapter-footer{position:relative;z-index:2}#hud{position:fixed;z-index:40;left:50%;top:22px;transform:translateX(-50%);width:min(520px,46vw);border:1px solid currentColor;border-radius:999px;background:var(--cream);color:var(--ink);padding:10px 20px;display:flex;align-items:center;gap:18px;font-size:11px;letter-spacing:.12em;box-shadow:0 3px 15px #16130f0a;pointer-events:none}.hud-route{flex:1;border-top:1px dashed currentColor;position:relative;height:1px}#hud-plane{position:absolute;width:22px;height:16px;top:-8px;left:0}#hud-count{border-left:1px solid currentColor;padding-left:16px}#story{position:relative;color:var(--cream)}#stage{background:var(--ink);position:relative}.beat{min-height:100svh;padding:40px var(--gutter) 48px;display:flex;flex-direction:column;gap:40px;position:relative}.special-beat{background:var(--felt)}.beat-content{width:100%;max-width:1280px;margin:auto;flex:1;display:flex;flex-direction:column;justify-content:center;gap:28px}.birthday-beat h2{font-size:clamp(80px,10vw,164px)}.birthday-word{position:relative;display:inline-block}.birthday-word .scrawl-underline{position:absolute;bottom:-9px}.birthday-hat{width:96px;height:114px;transform:rotate(-10deg)}.birthday-bottom{display:flex;align-items:baseline;gap:32px;flex-wrap:wrap}.beat p{font-size:20px;line-height:1.55;max-width:540px}.something-fun{font-size:36px;color:var(--gold);transform:rotate(-3deg)}.special-beat h2{font-size:clamp(80px,9.5vw,168px)}.special-word{font-size:clamp(72px,9vw,150px);line-height:1.1;color:var(--gold);align-self:flex-start;transform:rotate(-4deg)}.special-beat p{margin-top:24px}#step-index{display:none}.motion-ready #stage{height:100svh;overflow:hidden;border-radius:48px 48px 0 0}.motion-ready .beat{position:absolute;inset:0;height:100%;min-height:0;background:transparent}.motion-ready .beat:not([data-beat="0"]){visibility:hidden}.motion-ready #step-index{display:flex;position:absolute;left:var(--gutter);bottom:90px;flex-direction:column;gap:11px;font-size:11px;letter-spacing:.08em;z-index:5}.motion-ready #step-index span{opacity:.45;padding-left:13px}.step-bar{position:absolute;left:0;width:3px;height:16px;background:var(--gold)}.motion-ready .beat-content{padding-bottom:70px}.watch-content{display:flex;flex-direction:column;align-items:center;gap:26px;width:100%;flex:1;justify-content:center}.watch-content h2{font-size:clamp(64px,8vw,128px)}#watch-anchor{width:min(960px,100%,calc((100svh - 330px)*16/9));aspect-ratio:16/9}#lock-notice{width:min(960px,100%);padding:16px 20px;border:1.5px dashed var(--gold);border-radius:12px;display:flex;align-items:center;gap:14px;font-size:15px;line-height:1.45}#lock-notice img{width:22px;height:24px;flex-shrink:0}.watch-beat .chapter-footer{color:#8A8273}.watch-beat .chapter-footer>span:nth-child(2){display:none}#keepsake{position:fixed;left:0;top:0;width:380px;height:520px;padding:16px 16px 64px;z-index:20;transform:rotate(-3deg);will-change:transform,width,height;overflow:visible}#hero-photo{width:100%;height:100%;object-fit:cover;object-position:center 30%}#photo-caption{position:absolute;left:0;right:0;bottom:16px;font-size:26px}#keepsake-hat{position:absolute;width:80px;right:10px;top:-55px;opacity:0}#film{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#000;opacity:0;visibility:hidden;border-radius:inherit}.player-scrim{position:absolute;inset:0;background:#16130f66;opacity:0;pointer-events:none;border-radius:inherit}#play-button{position:absolute;top:50%;left:50%;transform:translate(-50%,-60%);width:120px;height:120px;border:0;border-radius:50%;background:var(--gold);box-shadow:0 0 0 14px #f2c14e2e;display:grid;place-items:center;opacity:0;visibility:hidden}#play-button svg{width:40px;height:46px;fill:var(--ink);margin-left:7px}.press-play{position:absolute;top:calc(50% + 80px);left:0;right:0;text-align:center;color:var(--cream);font-size:14px;font-weight:700;letter-spacing:.24em;opacity:0;visibility:hidden}#player-controls{position:absolute;left:24px;right:24px;bottom:22px;display:flex;gap:14px;align-items:center;color:#D9D1C2;font-size:13px;opacity:0;visibility:hidden;z-index:3}#pause-button{background:#16130f88;color:var(--cream);border:1px solid #f2ebdd66;width:36px;height:32px;border-radius:6px}.progress-track{height:5px;background:#4A4237;flex:1;overflow:hidden;border-radius:3px}#progress{height:100%;width:0;background:var(--gold);transform-origin:left}#continue-button{position:absolute;bottom:65px;left:50%;transform:translateX(-50%);background:var(--gold);border:0;border-radius:999px;padding:12px 22px;z-index:5}.is-locked{overflow:hidden!important}.is-playing .player-scrim{opacity:0!important}.is-playing .press-play{visibility:hidden!important}.is-playing #play-button{visibility:hidden!important}#surprise{min-height:100svh;background:var(--chip-red);color:var(--cream);padding:64px clamp(36px,6vw,100px);display:flex;flex-direction:column;justify-content:center;overflow:hidden}.marquee-bulbs{position:absolute;inset:20px;border:10px dotted var(--gold);border-radius:16px;pointer-events:none}.surprise-layout{width:100%;max-width:1240px;margin:auto;display:grid;grid-template-columns:1.2fr 1fr;align-items:center;gap:40px;position:relative;z-index:2}.surprise-type{display:flex;flex-direction:column;align-items:flex-start}.surprise-stamp{font-size:clamp(72px,8vw,128px);line-height:1.05;color:var(--gold);transform:rotate(-5deg)}.reveal-kicker{font-size:clamp(16px,1.6vw,22px);font-weight:700;letter-spacing:.34em;margin:20px 0 5px}.reels{font-size:clamp(150px,19vw,300px);line-height:.95;display:flex;letter-spacing:.01em}.reel{display:inline-block;overflow:hidden;height:1em}.reel-strip{display:flex;flex-direction:column}.reel-strip>span{display:block;height:1em;line-height:1em}.reveal-underline{width:100%;max-width:560px;margin-top:2px}.date-row{display:flex;justify-content:space-between;width:100%;max-width:560px;gap:16px;border-top:2px solid var(--cream);padding-top:14px;margin-top:18px;font-size:15px;font-weight:700;letter-spacing:.16em}.pack-note{font-size:28px;color:var(--gold);margin-top:14px}.reveal-collage{height:620px;position:relative}.reveal-photo{position:absolute;left:20%;top:90px;width:300px;padding:15px 15px 58px;transform:rotate(4deg);box-shadow:0 18px 40px #0005}.reveal-photo img{width:270px;height:330px;object-fit:cover;object-position:center 30%}.reveal-photo figcaption{position:absolute;left:0;right:0;bottom:14px;font-size:22px}.reveal-sticker{position:absolute}.sticker-party-hat{width:88px;left:43%;top:30px;transform:rotate(-10deg)}.sticker-ace-of-spades{width:112px;left:0;top:150px;transform:rotate(-14deg)}.sticker-martini{width:100px;right:0;top:40px;transform:rotate(12deg)}.sticker-dice{width:150px;left:30px;bottom:30px}.sticker-poker-chip{width:80px;right:29%;bottom:30px}.sticker-glove{width:132px;right:0;bottom:120px;transform:rotate(18deg)}.sticker-sparkle{width:36px;left:15%;top:40px}.reveal-ribbon{bottom:35px;z-index:1}.reveal-ribbon use{stroke:var(--gold)}.reveal-ribbon text{fill:var(--chip-red)}.plan-cue{align-self:center;color:var(--cream);font-size:12px;letter-spacing:.16em;text-decoration:none;position:relative;z-index:3;margin-top:20px}#ticker{height:72px;display:flex;align-items:center;background:var(--ink);color:var(--cream);overflow:hidden;position:relative;z-index:3}.ticker-track{white-space:nowrap;flex-shrink:0;font-weight:700;font-size:15px;letter-spacing:.14em}#details{background:var(--cream);padding:96px var(--gutter);overflow:hidden;border-radius:48px 48px 0 0;z-index:4}.details-inner{max-width:1180px;margin:auto;display:flex;flex-direction:column;gap:56px;position:relative}.details-inner>header{display:flex;flex-direction:column;gap:12px}.details-inner h2{font-size:clamp(64px,8vw,120px)}.flight-swoosh{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.flight-swoosh path{fill:none;stroke:#16130f0f;stroke-width:28px;stroke-dasharray:40 25}.flight-swoosh image{opacity:.1}#boarding-pass{display:grid;grid-template-columns:1.57fr 1fr;background:var(--felt);color:var(--cream);border-radius:24px;box-shadow:0 24px 50px #16130f2e}.pass-main{padding:40px;display:flex;flex-direction:column;gap:32px}.pass-header{display:flex;justify-content:space-between;font-size:13px;font-weight:700;letter-spacing:.18em}.route{display:flex;align-items:center;gap:24px}.route>div:first-child,.route>div:last-child{display:flex;flex-direction:column;gap:4px}.route>div:last-child{text-align:right}.airport{font-family:Anton,sans-serif;font-weight:400;font-size:clamp(72px,9vw,128px);line-height:1}.route small,.pass-field small,.pass-stub small{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-on-felt)}.pass-route{flex:1;border-top:3px dashed var(--gold);position:relative}.route-plane{position:absolute;right:-5px;top:-12px;width:36px;background:var(--felt);padding-left:7px}.pass-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.pass-field{display:flex;flex-direction:column;gap:6px}.pass-field b{font-size:18px}.passengers{grid-column:span 2}.pass-stub{position:relative;padding:40px;border-left:3px dotted #cfdad380;display:flex;flex-direction:column;gap:28px}.pass-stub:before,.pass-stub:after{content:'';position:absolute;left:-18px;width:34px;height:34px;border-radius:50%;background:var(--cream)}.pass-stub:before{top:-17px}.pass-stub:after{bottom:-17px}.pass-stub h3{font:40px/1.05 Anton,sans-serif;margin-top:4px}.itinerary{display:flex;flex-direction:column;gap:10px}.itinerary p{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #3F6A58;padding-bottom:8px;font-size:16px}.itinerary p:last-child{border:0}.itinerary p>span{color:var(--gold)}.itinerary p:last-child>span{font-size:11px;font-weight:700;letter-spacing:.1em}.barcode{height:64px;padding:12px 16px;background:var(--cream);border-radius:10px;margin-top:auto;position:relative;overflow:hidden}.barcode>div{height:100%;background:repeating-linear-gradient(90deg,var(--ink) 0 3px,transparent 3px 7px,var(--ink) 7px 12px,transparent 12px 16px,var(--ink) 16px 18px,transparent 18px 26px)}.scan-line{position:absolute;inset:0;background:linear-gradient(90deg,transparent,var(--gold),transparent);width:20%;transform:translateX(-200%)}.details-bottom{display:grid;grid-template-columns:1.15fr 1fr;gap:60px;align-items:start}.crew .eyebrow{color:var(--ink);margin:4px 0 48px}.crew-polaroid{position:relative;padding:14px 14px 58px;transform:rotate(-2deg);margin:0 8px}.crew-image{aspect-ratio:16/9;overflow:hidden}.crew-image img{width:100%;height:112%;object-fit:cover}.crew-polaroid figcaption{position:absolute;bottom:15px;left:5px;right:5px;font-size:22px}.tape{position:absolute;top:-10px;width:110px;height:28px}.tape-gold{left:10%;background:#f2c14ebf;transform:rotate(-6deg)}.tape-red{right:10%;background:#c8321f8c;transform:rotate(5deg)}.forecast{background:var(--ink);color:var(--cream);border-radius:20px;padding:32px;display:flex;flex-direction:column;gap:24px}.forecast header{display:flex;justify-content:space-between;align-items:center;gap:10px}.forecast header h3{font:700 13px 'Space Mono',monospace;letter-spacing:.2em}.forecast header>span{font-size:11px;color:var(--muted-on-dark);letter-spacing:.1em}.forecast-days{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;text-align:center}.forecast-day{display:flex;flex-direction:column;align-items:center;gap:10px;border:1px solid #3A342C;border-radius:14px;padding:18px 8px;min-height:230px}.forecast-day h4{font:30px Anton,sans-serif}.forecast-day img{width:64px;height:58px}.forecast-day b{font-size:18px;white-space:nowrap}.forecast-day b span{color:var(--muted-on-dark);font-weight:400}.forecast-day small{font-size:11px;letter-spacing:.1em;color:var(--muted-on-dark)}.birthday-pill{font-size:10px;font-weight:700;letter-spacing:.12em;background:var(--gold);color:var(--ink);border-radius:999px;padding:4px 10px}.forecast>p{font-size:15px;line-height:1.6}.packing-chips{display:flex;flex-wrap:wrap;gap:10px}.packing-chips span{font-size:11px;letter-spacing:.08em;border:1.5px solid var(--cream);border-radius:999px;padding:8px 14px}#signoff{text-align:center;padding-top:24px;display:flex;flex-direction:column;align-items:center;gap:10px}#signoff>.marker{font-size:clamp(40px,5vw,64px);color:var(--chip-red);transform:rotate(-3deg)}#signoff p{font-size:14px;letter-spacing:.14em}#replay-button{font-size:12px;border:1px solid #16130f55;background:transparent;color:var(--ink);padding:10px 16px;border-radius:999px;margin-top:15px}#replay-dialog{width:min(1000px,94vw);padding:40px 12px 12px;border:1px solid #4A4237;border-radius:20px;background:var(--ink)}#replay-dialog::backdrop{background:#000d}#replay-dialog video{width:100%;display:block}#close-replay{position:absolute;top:7px;right:12px;background:none;color:var(--cream);border:0;font-size:20px}.noscript{position:fixed;z-index:200;bottom:0;left:0;right:0;padding:20px;background:var(--gold);color:var(--ink)}
@media(max-width:1100px){.landing-content{grid-template-columns:1fr 38%;gap:25px}.landing-art{padding:20px 0}#photo-anchor{height:440px}.reveal-photo{left:12%;width:260px}.reveal-photo img{width:230px;height:300px}.reveal-collage{height:560px}.pass-main,.pass-stub{padding:28px}.pass-stub h3{font-size:32px}.details-bottom{gap:30px}.forecast{padding:22px}.forecast-day{padding:14px 4px}.forecast-day b{font-size:15px}}@media(max-width:1023px){.motion-ready #step-index{display:none}.motion-ready .beat-content{padding-bottom:0}}
@media(max-width:767px){:root{--gutter:24px}#hud{top:8px;width:220px;padding:7px 12px;font-size:9px;gap:10px}#hud-count{padding-left:10px}.hud-route{min-width:40px}.chapter-header,.chapter-footer{font-size:11px;letter-spacing:.14em}.chapter-header{padding-bottom:12px;gap:8px}.chapter-footer{gap:12px}.chapter-footer>span:nth-child(2){font-size:26px}.mobile-break{display:block}#landing{padding:30px var(--gutter) 38px;gap:24px;min-height:100svh}.landing-content{display:flex;flex-direction:column-reverse;gap:24px;align-items:stretch;justify-content:flex-end}.landing-art{padding:14px 0 0;align-self:center;width:100%;max-width:300px}.landing-copy{gap:18px}.landing-copy .eyebrow{display:none}.landing-copy h1{font-size:clamp(72px,24vw,106px)}.landing-copy>p:last-child{font-size:14px;line-height:1.5}#photo-anchor{width:260px;height:324px}.look-note{left:-10px;bottom:0;font-size:18px}.look-note svg{width:65px;height:30px}.sparkle-one{width:25px;left:4px;top:30px}.sparkle-two{right:6px;top:10px;width:20px}.sparkle-three{right:0;bottom:60px;width:24px}#landing .chapter-footer{margin-top:auto}.landing-ribbon{bottom:70px;opacity:.12}.ribbon text{font-size:13px}#keepsake{width:260px;height:324px;padding:12px 12px 46px}#photo-caption{font-size:19px;bottom:12px}.beat{padding:30px var(--gutter) 38px;gap:24px}.motion-ready #stage{border-radius:28px 28px 0 0}.beat-content{gap:22px}.birthday-beat h2{font-size:clamp(56px,18.5vw,80px);line-height:.92}.birthday-hat{width:64px;height:76px}.beat p{font-size:15px;line-height:1.6}.birthday-bottom{display:flex;flex-direction:column;gap:24px}.something-fun{font-size:24px}.special-beat h2{font-size:clamp(54px,17.5vw,76px)}.special-word{font-size:60px;margin-top:8px}.special-beat p{margin-top:15px}.watch-content{gap:22px;justify-content:flex-start}.watch-content h2{font-size:58px}.watch-beat{gap:24px}#watch-anchor{width:100%;height:min(450px,49svh);aspect-ratio:auto}#lock-notice{padding:12px 14px;font-size:12px;gap:12px}.watch-beat .chapter-footer{margin-top:auto}#film{object-fit:contain}#play-button{width:88px;height:88px;box-shadow:0 0 0 10px #f2c14e2e}#play-button svg{width:30px;height:34px}.press-play{top:calc(50% + 58px);font-size:12px}#player-controls{left:16px;right:16px;bottom:18px;gap:10px;font-size:11px}#pause-button{width:30px;height:28px}#surprise{padding:42px 34px;min-height:100svh}.marquee-bulbs{inset:12px;border-width:6px;border-radius:12px}.surprise-layout{display:flex;flex-direction:column;gap:16px}.surprise-type{align-items:center;width:100%}.surprise-stamp{font-size:64px;line-height:1.05;white-space:nowrap}.reveal-kicker{font-size:14px;letter-spacing:.3em;margin-top:16px}.reels{font-size:clamp(100px,36vw,150px);line-height:1}.reveal-underline{height:12px}.surprise-type .date-row,.surprise-type .pack-note{position:absolute;bottom:0}.surprise-type .date-row{bottom:44px;font-size:12px;letter-spacing:.12em;padding-top:10px}.pack-note{font-size:19px;text-align:center;white-space:nowrap}.reveal-collage{width:100%;height:380px;margin-bottom:100px}.reveal-photo{width:190px;left:50%;top:35px;padding:10px 10px 42px;transform:translateX(-50%) rotate(4deg)}.reveal-photo img{width:170px;height:220px}.reveal-photo figcaption{font-size:16px;bottom:11px}.sticker-party-hat{width:58px;left:43%;top:0}.sticker-ace-of-spades{width:76px;left:-5px;top:70px}.sticker-martini{width:60px;right:-6px;top:20px}.sticker-dice{width:94px;left:8px;bottom:20px}.sticker-poker-chip{width:52px;right:20%;bottom:4px}.sticker-glove{width:80px;right:-8px;bottom:50px}.sticker-sparkle{width:24px;left:15%;top:10px}.reveal-ribbon{bottom:110px;opacity:.15}.plan-cue{font-size:10px;margin-top:8px}#ticker{height:56px}.ticker-track{font-size:12px}#details{padding:36px 24px 44px;border-radius:28px 28px 0 0}.details-inner{gap:28px}.eyebrow{font-size:11px}.details-inner h2{font-size:60px;line-height:.95}.details-inner>header{gap:8px}#boarding-pass{display:flex;flex-direction:column;border-radius:18px}.pass-main{padding:22px 22px 18px;gap:18px}.pass-header{font-size:11px;letter-spacing:.14em}.route{gap:10px}.airport{font-size:64px}.route small,.pass-field small,.pass-stub small{font-size:10px;letter-spacing:.12em}.pass-route{border-width:2px}.route-plane{width:28px;top:-9px}.pass-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}.pass-field{gap:2px}.pass-field b{font-size:15px}.passengers{grid-column:span 2}.seat{order:5}.pass-stub{border-left:0;border-top:2px dotted #cfdad380;padding:24px 22px 22px;gap:18px;margin-top:10px}.pass-stub:before,.pass-stub:after{top:-14px;width:26px;height:26px}.pass-stub:before{left:-13px}.pass-stub:after{left:auto;right:-13px;bottom:auto}.pass-stub h3{font-size:32px}.itinerary{gap:8px}.itinerary p{font-size:14px;padding-bottom:6px}.itinerary p:last-child>span{font-size:10px}.barcode{height:52px;padding:10px 14px;border-radius:8px}.details-bottom{display:flex;flex-direction:column;gap:28px}.crew{width:100%}.crew .eyebrow{margin:0 0 30px}.crew-polaroid{padding:10px 10px 44px;margin:0 8px 10px}.crew-polaroid figcaption{font-size:16px;bottom:10px}.tape{height:20px;width:70px}.forecast{width:100%;border-radius:16px;padding:20px;gap:12px}.forecast header h3{font-size:11px;letter-spacing:.12em}.forecast header>span{font-size:10px}.forecast-days{gap:8px}.forecast-day{min-height:150px;padding:10px 4px;gap:6px;border-radius:10px}.forecast-day h4{font-size:20px}.forecast-day img{width:44px;height:40px}.forecast-day b{font-size:13px}.forecast-day small{display:none}.birthday-pill{font-size:9px;padding:3px 8px}.forecast>p{font-size:13px;line-height:1.55}.packing-chips{gap:8px}.packing-chips span{font-size:11px;padding:6px 12px}#signoff{padding-top:10px;gap:8px}#signoff>.marker{font-size:28px}#signoff p{font-size:12px}#replay-button{font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}.ribbon{display:none}#stage{height:auto!important}.beat{position:relative!important;visibility:visible!important;opacity:1!important;min-height:100svh}#step-index{display:none!important}.grain{display:none}}.reduced-motion .beat{position:relative!important;visibility:visible!important;opacity:1!important;min-height:100svh}.reduced-motion #stage{height:auto!important}.reduced-motion .ribbon{display:none}
.motion-ready #step-index{gap:0}.motion-ready #step-index span{height:42px;display:flex;align-items:center}.step-bar{top:13px}.is-playing #player-controls{opacity:1;visibility:visible}.theater .watch-beat .chapter-header,.theater #step-index,.theater #lock-notice{opacity:.2}
/* Keep the reel symbols inside each letter's reserved display width. */
.surprise-layout{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}.surprise-layout>*{min-width:0}.reels{max-width:100%}.reel{width:.47em;flex:0 0 .47em;text-align:center}.reel-strip{width:100%}.reel-strip>span{width:100%;text-align:center}.birthday-hat{filter:brightness(0) saturate(100%) invert(83%) sepia(63%) saturate(583%) hue-rotate(339deg) brightness(101%) contrast(90%)}#lock-notice img{filter:brightness(0) saturate(100%) invert(94%) sepia(13%) saturate(327%) hue-rotate(350deg) brightness(99%) contrast(92%)}
/* Anton's baseline extends beyond the tight display line box. */
.birthday-beat h2>div,.special-beat h2>div{padding-bottom:.12em;margin-bottom:-.12em}
.forecast-day img{filter:brightness(0) saturate(100%) invert(94%) sepia(13%) saturate(327%) hue-rotate(350deg) brightness(99%) contrast(92%)}.route-plane{filter:brightness(0) saturate(100%) invert(83%) sepia(63%) saturate(583%) hue-rotate(339deg) brightness(101%) contrast(90%);background:transparent}#hud.is-revealed{border-color:var(--gold);box-shadow:0 0 0 1px #f2c14e33}
@media(max-width:767px){
#landing,.beat{padding-top:62px}
.motion-ready .beat-content{justify-content:flex-start;padding-top:12px;padding-bottom:0;gap:16px}
.motion-ready .birthday-hat{width:44px;height:52px}
.motion-ready .birthday-beat h2{font-size:clamp(54px,16.7vw,70px)}
.motion-ready .birthday-bottom{gap:14px}
.motion-ready .something-fun{font-size:22px}
.motion-ready .special-beat h2{font-size:clamp(52px,16.4vw,68px)}
.motion-ready .special-word{font-size:54px;margin-top:0}
.motion-ready .special-beat p{margin-top:8px}
}
/* After the first screening, every chapter becomes an ordinary readable sheet. */
.browse-mode #story,.browse-mode #stage{height:auto!important;min-height:0!important;overflow:visible!important;transform:none!important;filter:none!important}
.browse-mode #stage{border-radius:48px 48px 0 0;background:var(--ink)}
.browse-mode .beat{position:relative!important;inset:auto!important;height:auto!important;min-height:100svh;opacity:1!important;visibility:visible!important;transform:none!important;clip-path:none!important}
.browse-mode .birthday-beat,.browse-mode .watch-beat{background:var(--ink)}
.browse-mode .special-beat{background:var(--felt)}
.browse-mode #step-index{display:none!important}
.browse-mode .beat-content{padding-bottom:0;justify-content:center}
.browse-mode .landing-keepsake{position:relative;inset:auto;width:100%;height:100%;padding:16px 16px 64px;transform:rotate(-3deg);visibility:visible;opacity:1}
.browse-mode .landing-keepsake>img{width:100%;height:100%;object-fit:cover;object-position:center 30%}
.browse-mode .landing-keepsake figcaption,.browse-mode .landing-keepsake .photo-caption{position:absolute;left:0;right:0;bottom:16px;text-align:center;font:26px 'Permanent Marker',cursive}
.browse-mode #watch-anchor{position:relative}
.browse-mode #keepsake{position:relative!important;inset:auto!important;width:100%!important;height:100%!important;padding:0!important;transform:none!important;border-radius:20px;background:var(--ink);overflow:hidden;z-index:1;visibility:visible!important;opacity:1!important}
.browse-mode #film{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;visibility:visible!important;opacity:1!important}
.browse-mode #keepsake>#hero-photo,.browse-mode #keepsake>#photo-caption,.browse-mode #keepsake>#keepsake-hat,.browse-mode #keepsake>.player-scrim,.browse-mode #keepsake>#play-button,.browse-mode #keepsake>.press-play,.browse-mode #keepsake>#player-controls,.browse-mode #keepsake>#continue-button{display:none!important}
.browse-mode .watch-beat .chapter-header,.browse-mode #lock-notice{opacity:1}
@media(max-width:767px){.browse-mode #stage{border-radius:28px 28px 0 0}.browse-mode .landing-keepsake{padding:12px 12px 46px}.browse-mode .landing-keepsake figcaption,.browse-mode .landing-keepsake .photo-caption{font-size:19px;bottom:12px}.browse-mode .beat-content{justify-content:center;padding-top:0}.browse-mode .birthday-hat{width:64px;height:76px}.browse-mode .birthday-beat h2{font-size:clamp(56px,18.5vw,80px)}.browse-mode .special-beat h2{font-size:clamp(54px,17.5vw,76px)}.browse-mode .special-word{font-size:60px}.browse-mode #watch-anchor{height:auto;aspect-ratio:16/9}.browse-mode .watch-content{justify-content:center}}

/* Photo and doodles share a stacking context, including the floating desktop photo. */
.photo-flair{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:visible}
.photo-flair :is(#keepsake-hat,.party-hat){position:absolute;left:45%;right:auto;top:2%;width:27%;height:auto;opacity:1;transform-origin:50% 90%;animation:hat-wiggle 2.8s ease-in-out infinite}
.photo-flair .sparkle{z-index:2;animation:star-turn 9s linear infinite;transform-origin:center}
.photo-flair .sparkle-one{left:-5%;top:11%;width:12%}
.photo-flair .sparkle-two{right:-3%;top:0;width:8%;animation-direction:reverse;animation-duration:12s}
.photo-flair .sparkle-three{right:-4%;bottom:17%;width:10%;animation-delay:-3s}
.photo-flair .look-note{left:-12%;bottom:7%;font-size:clamp(17px,2vw,24px);z-index:5;white-space:nowrap;text-shadow:0 1px var(--cream),0 -1px var(--cream)}
.photo-flair .look-note svg{width:76px;height:38px;transform:rotate(-30deg)}
@keyframes hat-wiggle{0%,100%{transform:rotate(-12deg) translateY(0)}45%{transform:rotate(9deg) translateY(-7px)}70%{transform:rotate(-4deg) translateY(-2px)}}
@keyframes star-turn{to{transform:rotate(360deg)}}
.landing-content{grid-template-columns:minmax(0,1fr) minmax(0,460px)}
.landing-copy,.landing-art{min-width:0}
.browse-mode .landing-keepsake{overflow:visible}
.flow-mode #stage{height:auto!important}
.flow-mode .beat{position:relative!important;opacity:1!important;visibility:visible!important;min-height:100svh}
.flow-mode #keepsake .photo-flair,.browse-mode #keepsake .photo-flair{display:none!important}
.motion-ready .beat-content{padding-bottom:0}
/* The route is revealed only with the boarding pass. */
.route-plane{left:0;right:auto;padding:0;width:32px;top:-12px;transform-origin:50% 50%;animation:route-flight 8s ease-in-out infinite}
@keyframes route-flight{0%,8%{left:0;transform:translateY(0) rotate(0);opacity:1}32%{left:32%;transform:translateY(-6px) rotate(-12deg)}42%{left:45%;transform:translateY(-24px) rotate(-140deg)}52%{left:52%;transform:translateY(0) rotate(-290deg)}65%,86%{left:calc(100% - 32px);transform:translateY(0) rotate(-360deg);opacity:1}92%{opacity:0}93%{left:0;transform:translateY(0) rotate(0);opacity:0}100%{opacity:1}}
@media(min-width:768px) and (max-width:1100px){.landing-content{grid-template-columns:minmax(0,1fr) minmax(0,38%)}.landing-copy h1{font-size:clamp(88px,12vw,140px)}.landing-copy>p:last-child{font-size:17px}.landing-art{padding:30px 10px}}
@media(max-width:767px){
#landing{padding:24px var(--gutter) 30px;gap:24px}
#landing .chapter-header{align-items:flex-start;font-size:9px;letter-spacing:.08em;gap:20px;line-height:1.5}
#landing .chapter-header>span:last-child{text-align:right;max-width:55%}
.landing-content{gap:28px}.landing-art{padding:16px 12px 4px;max-width:310px}
#photo-anchor{width:min(250px,68vw);height:auto;aspect-ratio:4/5}
.landing-copy h1{font-size:clamp(68px,23vw,104px)}
.photo-flair .look-note{left:-8%;bottom:8%;font-size:18px}
.photo-flair .look-note svg{width:58px;height:28px}
.beat{padding:38px var(--gutter);gap:24px}
.flow-mode .beat-content{justify-content:center;padding:0;gap:22px}
.flow-mode .birthday-beat,.flow-mode .special-beat{min-height:82svh}
.flow-mode .watch-content{justify-content:center}
.flow-mode #watch-anchor,.browse-mode #watch-anchor{height:auto;aspect-ratio:16/9;width:100%}
.flow-mode .watch-beat{min-height:100svh}
#lock-notice{font-size:12px;overflow-wrap:anywhere}
.route-plane{width:28px;top:-9px}
}
@media(prefers-reduced-motion:reduce){.photo-flair *,.route-plane{animation:none!important}.route-plane{left:calc(50% - 16px)}}
.reduced-motion .photo-flair *,.reduced-motion .route-plane{animation:none!important}
.landing-art{z-index:3}
.photo-flair :is(#keepsake-hat,.party-hat){left:35%;top:-4%}
@media(max-width:767px){#play-button{width:60px;height:60px;box-shadow:0 0 0 7px #f2c14e2e}#play-button svg{width:23px;height:26px}.press-play{top:calc(50% + 39px);font-size:10px}}
/* Phone storytelling uses the same pinned, scrubbed scenes as desktop. */
@media(max-width:767px){
.motion-ready #stage{height:100svh;min-height:0;border-radius:0}
.motion-ready .beat{height:100%;padding:28px 24px 28px;gap:16px}
.motion-ready .beat-content{justify-content:flex-start;padding:0;gap:12px}
.motion-ready .birthday-hat{width:32px;height:38px}
.motion-ready .birthday-beat h2,.motion-ready .special-beat h2{font-size:clamp(42px,min(15.5vw,8.7svh),64px)}
.motion-ready .birthday-bottom{gap:6px}
.motion-ready .beat p{font-size:13px;line-height:1.5}
.motion-ready .something-fun{font-size:22px}
.motion-ready .special-word{font-size:clamp(40px,8svh,64px);margin:0}
.motion-ready .special-beat p{margin-top:6px}
.motion-ready #photo-caption{font-size:15px;bottom:9px}
.motion-ready .watch-content{justify-content:center;gap:24px}
.motion-ready .watch-content h2{font-size:clamp(48px,8svh,64px)}
.motion-ready #watch-anchor{width:100%;height:auto;aspect-ratio:16/9}
.motion-ready .chapter-footer{flex-shrink:0;margin-top:auto}
.browse-mode .beat{min-height:100svh}
#landing{min-height:100svh}
}
@media(max-width:767px){
.motion-ready #landing{height:100svh;min-height:100svh;padding:20px 24px 24px;gap:16px}
.motion-ready .landing-content{min-height:0;gap:18px;justify-content:center}
.motion-ready .landing-art{padding:10px 12px 0}
.motion-ready #photo-anchor{width:min(250px,30svh,68vw);height:auto;aspect-ratio:4/5}
.motion-ready .landing-copy{gap:14px}
.motion-ready .landing-copy h1{font-size:clamp(62px,min(23vw,13svh),104px)}
}
@media(max-width:767px){
#surprise{min-height:100svh;padding:24px 30px}
.surprise-layout{gap:8px}
.surprise-stamp{font-size:clamp(38px,7svh,60px)}
.reveal-kicker{font-size:11px;margin-top:8px;letter-spacing:.2em}
.reels{font-size:min(32vw,16svh)}
.reveal-collage{height:32svh;margin-bottom:68px}
.reveal-photo{top:20px;width:24svh;max-width:185px;padding:8px 8px 32px}
.reveal-photo img{width:100%;height:22svh}
.reveal-photo figcaption{font-size:13px;bottom:8px}
.sticker-party-hat{width:7svh;top:0}
.sticker-ace-of-spades{width:9svh;top:40px}
.sticker-martini{width:8svh;top:15px}
.sticker-dice{width:11svh;bottom:0}
.sticker-poker-chip{width:7svh;bottom:-8px}
.sticker-glove{width:10svh;bottom:32px}
.surprise-type .date-row{bottom:36px;font-size:10px}
.pack-note{font-size:16px}
.plan-cue{margin-top:4px}
}

.wallet-download{text-align:center;margin:24px auto 32px;padding:0 12px}.wallet-button{display:inline-flex;align-items:center;gap:20px;background:#15140f;color:#f2ebdd;border:1px solid #f2ebdd;border-radius:10px;padding:14px 22px;text-decoration:none;font:700 15px/1.4 'Space Mono',monospace;min-height:48px}.wallet-button:hover{background:#244c3c}.wallet-button:focus-visible{outline:3px solid #efbf45;outline-offset:5px}.wallet-download p{font-size:12px;line-height:1.6;max-width:360px;margin:12px auto 0}

.photo-flair .party-blower{position:absolute;left:55%;top:39%;width:36%;z-index:6;transform-origin:3% 48%;animation:blower-wiggle 1.8s ease-in-out infinite}.photo-flair .birthday-cake{position:absolute;left:-13%;bottom:21%;width:28%;z-index:5;transform:rotate(-12deg)}@keyframes blower-wiggle{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}


.photo-flair .party-blower{left:51%;top:37%}

.landing-confetti{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:3}.photo-flair .birthday-stamp{position:absolute;right:-9%;bottom:-3%;width:23%;aspect-ratio:1;display:grid;place-items:center;border:3px solid var(--chip-red);border-radius:50%;color:var(--chip-red);background:var(--cream);font-size:clamp(22px,3vw,42px);line-height:1;transform:rotate(12deg);z-index:6;animation:birthday-stamp-in .55s cubic-bezier(.2,.9,.25,1.3) .8s both;box-shadow:inset 0 0 0 3px var(--cream),inset 0 0 0 4px var(--chip-red)}@keyframes birthday-stamp-in{from{opacity:0;transform:scale(1.5) rotate(24deg)}to{opacity:1;transform:scale(1) rotate(12deg)}}@media(max-width:767px){.photo-flair .birthday-stamp{font-size:24px;right:-5%;border-width:2px}}

/* Keep type proportional to the moving photo, not the browser width. */
#keepsake,.landing-keepsake{container-type:inline-size}
#photo-caption,.motion-ready #photo-caption,.landing-keepsake .photo-caption{font-size:clamp(9px,6cqw,26px);white-space:nowrap;line-height:1.15;left:5%;right:5%;bottom:4%}
.photo-flair .look-note{font-size:clamp(10px,5cqw,24px)}
.photo-flair .look-note svg{width:20cqw;height:10cqw}
.photo-flair .birthday-stamp{font-size:clamp(14px,10cqw,42px)}
@media(min-width:768px){
.motion-ready .birthday-beat .beat-content,.motion-ready .special-beat .beat-content{padding-right:calc(min(21.5vw,285px) + 5vw + 32px)}
.motion-ready .birthday-beat h2,.motion-ready .special-beat h2{font-size:clamp(48px,min(8vw,14svh),150px)}
.motion-ready .birthday-bottom{gap:12px 24px;align-items:flex-start}
.motion-ready .birthday-bottom p{flex:1 1 360px;min-width:0;font-size:clamp(14px,1.45vw,20px)}
.motion-ready .something-fun{flex:0 1 auto;font-size:clamp(22px,2.6vw,36px);white-space:nowrap}
.motion-ready .special-word{font-size:clamp(48px,min(8vw,13svh),130px)}
}
@media(max-width:767px){
.motion-ready .birthday-beat .beat-content,.motion-ready .special-beat .beat-content{padding-top:clamp(0px,calc((100svh - 680px)/2),160px)}
.motion-ready .birthday-bottom{gap:12px}
}
