@font-face{font-family:Fraunces;src:url('assets/fraunces.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Caveat;src:url('assets/caveat.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:'DM Sans';src:url('assets/dm-sans.woff2') format('woff2');font-weight:400 700;font-display:swap}
:root{--navy:#30466a;--blue:#b9d9f5;--blue-ink:#598cb9;--rose:#c8759e;--pink:#f3c6dc;--cream:#fffbf4;--sky:#e9f3fc;--blush:#fcebf2;--text:#59677c;--line:#30466a24;--page-width:1120px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;color:var(--navy);background:var(--cream);font-family:Nunito,'Arial Rounded MT Bold',sans-serif;font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}body.is-closed{overflow:hidden}button,a,input{touch-action:manipulation}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default}button{border:0}a{color:inherit;text-decoration:none}img,video{display:block;max-width:100%}svg{width:24px;height:24px;display:inline-block;flex-shrink:0}button:focus-visible,a:focus-visible{outline:3px solid var(--rose);outline-offset:6px}::selection{background:#f7c7dd}h1,h2,h3,p{margin:0}p{color:var(--text)}h2{font-size:clamp(42px,5.6vw,76px);letter-spacing:-.045em;line-height:1.05;font-weight:900;position:relative}h2 em{font-style:normal;color:var(--rose)}h3{font-size:clamp(30px,3.5vw,44px);letter-spacing:-.04em;line-height:1.13;font-weight:900}p+p{margin-top:15px}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;z-index:1000;top:12px;left:12px;transform:translateY(-180%);padding:10px 18px;border-radius:10px;background:var(--cream)}.skip-link:focus{transform:none}.eyebrow{font-size:12px;line-height:1.5;font-weight:800;letter-spacing:.19em;color:#637592;margin-bottom:24px}.lead{font-size:22px;line-height:1.5;font-weight:700;color:var(--navy)}.small-note{font-size:13px;line-height:1.65;color:#728095}.section-wrap{position:relative;width:min(var(--page-width),calc(100% - 96px));margin-inline:auto;z-index:2}.centered{text-align:center}.centered>p{margin-inline:auto}.chapter{position:relative;isolation:isolate;padding:140px 0 160px;--section-color:var(--cream);background:var(--section-color)}.chapter .cloud-edge{position:absolute;inset:auto 0 calc(100% - 1px);height:clamp(60px,9.5vw,135px);color:var(--section-color);background:currentColor;mask:url('assets/cloud-edge.svg') center bottom/100% 100% no-repeat;-webkit-mask:url('assets/cloud-edge.svg') center bottom/100% 100% no-repeat;z-index:5;pointer-events:none}.chapter .cloud-edge:before{content:'';position:absolute;inset:0;opacity:.3;background:linear-gradient(95deg,#fff 0,transparent 70%)}.chapter:after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;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='.55' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23000' filter='url(%23n)' opacity='.13' d='M0 0h180v180H0z'/%3E%3C/svg%3E");opacity:.13}.pill{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:13px;min-height:54px;padding:15px 27px;border-radius:100px;line-height:1.35;font-weight:800;font-size:15px;transition:transform .3s,background .3s,box-shadow .3s}.pill svg{width:20px;height:20px}.pill:hover{transform:translateY(-3px)}.pill:active{transform:translateY(0) scale(.97)}.pill-navy{background:var(--navy);color:var(--cream);box-shadow:0 5px 0 #20335116}.pill-navy:hover{background:#243b5b;box-shadow:0 8px 0 #20335112}.pill-outline{border:1px solid #40577950;background:transparent}.pill-outline:hover{background:#e7eff7}.text-link{display:inline-flex;align-items:center;gap:11px;background:none;padding:10px 0;color:var(--navy);font-size:15px;font-weight:800;border-bottom:1px solid transparent;line-height:1.5}.text-link:hover{border-bottom-color:var(--rose)}.small-play{display:grid;place-items:center;width:33px;height:33px;border:1px solid #899ab459;border-radius:50%}.small-play svg{width:16px;height:16px;margin-left:1px}.duration{font-size:12px;font-weight:400;color:#77869c;margin-left:8px}
/* The same-sized stage on both sides of the video handoff prevents a jump. */
.opening,.hero{height:100svh;min-height:560px;background:#fbf8f1;overflow:hidden}.opening{position:fixed;inset:0;z-index:200;opacity:1;transition:opacity .65s ease;touch-action:manipulation}.opening-sky,.hero-glow{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 55%,#fffbed 15%,#fff8f4 40%,transparent 72%),linear-gradient(95deg,#d3e9fc,#f2e9f4 52%,#fbd9e9)}.opening-sky:before,.hero-glow:before{content:'';position:absolute;width:100%;height:120px;top:-65px;background:radial-gradient(ellipse at 50% 0,#fff 62%,transparent 63%) 0 0/200px 120px repeat-x}.stage-art{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;object-position:center}.opening-poster{z-index:2}.opening video{z-index:1}.opening.playing video{z-index:3}.opening .open-hit{position:absolute;inset:0;z-index:5;background:transparent;width:100%;height:100%;border-radius:0}.opening .open-hit:focus-visible{outline:4px solid #dc8daf;outline-offset:-10px}.opening.playing .open-hit{pointer-events:none}.opening-controls{position:absolute;z-index:7;inset:22px 28px auto;display:flex;justify-content:space-between;pointer-events:none}.quiet-button{pointer-events:auto;background:#fffdf2b8;border:1px solid #30466a1a;padding:7px 13px;border-radius:30px;font-size:12px;font-weight:700}.opening-status{position:absolute;z-index:8;bottom:24px;left:0;right:0;text-align:center;font-size:13px;color:var(--navy)}.opening.is-leaving{opacity:0;pointer-events:none}.opening[hidden]{display:none}.hero{position:relative;z-index:0}.hero-art{transition:opacity .5s}.hero-glow{opacity:.88}.scroll-cue{position:absolute;z-index:5;bottom:38px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:9px;font-size:12px;font-weight:800;letter-spacing:.07em;white-space:nowrap}.scroll-cue svg{transform:rotate(90deg);width:19px;height:19px;animation:cue 2.8s ease-in-out infinite}.hero-spark{position:absolute;z-index:1;color:#547197;width:21px;height:21px;opacity:.6}.spark-one{left:12%;top:34%;animation:float 8s ease-in-out infinite}.spark-two{right:12%;top:66%;width:14px;animation:float 8s ease-in-out -4s infinite}.site-header{position:fixed;z-index:50;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:18px 5vw;opacity:0;transform:translateY(-15px);transition:transform .6s,opacity .6s,background .4s,border-color .4s;border-bottom:1px solid transparent;pointer-events:none}.is-open .site-header{opacity:1;transform:none;pointer-events:auto}.site-header.scrolled{background:#fffbf4f5;border-bottom-color:#30466a15}.brand{font-weight:900;font-size:28px;letter-spacing:-.08em;line-height:1;display:flex;gap:3px;align-items:baseline}.brand span{font-size:18px;color:var(--rose)}.brand i{width:5px;height:5px;border-radius:50%;background:var(--rose);margin-left:3px}.site-header nav{display:flex;align-items:center;gap:28px;font-size:13px;font-weight:800}.site-header nav a:not(.nav-rsvp){position:relative}.site-header nav a:not(.nav-rsvp):after{content:'';position:absolute;bottom:-3px;left:0;width:0;height:2px;background:var(--rose);transition:width .3s}.site-header nav a:hover:after{width:100%}.nav-rsvp{border:1px solid #30466a42;border-radius:100px;padding:7px 17px}.nav-rsvp:hover{background:var(--navy);color:white}
/* Keepsakes, rather than glass cards. */
.story{padding-top:90px}.story-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:100px;align-items:center}.story-copy h2{margin-bottom:30px}.heading-star{position:absolute;right:5%;top:24%;font-size:30px;color:#91b6d9;transform:rotate(12deg)}.story-copy>p:not(.eyebrow){max-width:400px}.story-copy .lead{margin-bottom:18px}.signature{margin:27px 0 20px;color:#8590a0;font-size:14px;line-height:1.5}.signature strong{display:block;margin-top:6px;font-size:28px;font-weight:900;color:var(--navy);letter-spacing:-.04em}.signature strong span{font-weight:400;color:var(--rose)}.photo-composition{position:relative;padding:30px 14px 45px}.photo-paper{position:absolute;inset:10px -4px 64px 34px;background:#d7e8f9;transform:rotate(4deg);border-radius:5px}.photo-print{position:relative;padding:13px 13px 0;background:#fffefa;border:1px solid #e1dfd7;box-shadow:0 18px 28px #51515e12,0 2px 3px #51515e10;width:100%;text-align:left;border-radius:3px;transition:transform .4s}.photo-print:hover{transform:translateY(-6px)}.photo-print img{width:100%;height:365px;object-fit:cover;object-position:50% 45%;border-radius:1px}.photo-print>span{display:block;font-size:16px;font-weight:700;padding:21px 11px;color:#6f7b8b}.photo-print>svg{position:absolute;bottom:22px;right:24px;color:#da96b0;width:21px;height:21px}.little-note{position:absolute;bottom:0;left:-35px;background:#f7e7cd;padding:15px 22px;border-radius:4px;display:flex;gap:14px;align-items:center;box-shadow:0 5px 8px #7153350d;transform:rotate(-3deg);font-size:13px;line-height:1.4;font-weight:700;color:#9c7966}.little-note svg{width:28px;height:28px;color:#c79f70}.glimpse-row{margin-top:140px;display:grid;grid-template-columns:240px 1fr;align-items:center;gap:80px;max-width:760px}.elephant-print{padding:8px;background:white;border:1px solid #ddd9cf;border-radius:5px;box-shadow:0 9px 25px #534c5810;transform:rotate(-4deg);transition:transform .4s}.elephant-print:hover{transform:rotate(0) scale(1.02)}.elephant-print img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:2px}.glimpse-copy p:not(.eyebrow){margin-top:20px}.glimpse-copy .eyebrow{font-size:11px}.glimpse-copy .text-link{margin-top:17px}.glimpse-star{position:absolute;left:-60px;top:40%;color:#a6c3e1;width:26px;height:26px;animation:float 8s infinite}
.celebration{--section-color:var(--sky);padding-top:80px}.celebration h2 em{color:var(--blue-ink)}.date-ticket{position:relative;display:grid;grid-template-columns:1fr 1fr;margin:50px auto 36px;max-width:660px;background:#fffcf6;border-radius:13px;box-shadow:0 9px 0 #ccdef022,0 25px 35px #40597708;transform-origin:center;border:1px solid #bdd1e35e}.date-ticket:before,.date-ticket:after{content:'';position:absolute;width:23px;height:23px;background:var(--sky);border-radius:50%;left:50%;transform:translateX(-50%);z-index:3}.date-ticket:before{top:-12px}.date-ticket:after{bottom:-12px}.ticket-left{padding:36px 22px;border-right:1px dashed #bbc9d8;display:flex;flex-direction:column;align-items:center;justify-content:center}.ticket-left>span{font-size:13px;letter-spacing:.15em;font-weight:800}.ticket-left>strong{font-size:120px;line-height:1.12;font-weight:900;letter-spacing:-.08em;color:#598cb9}.ticket-right{padding:40px 24px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center}.ticket-right>strong{font-size:47px;line-height:1.2;letter-spacing:-.05em;font-weight:900}.ticket-right>strong span{font-size:17px;letter-spacing:.03em;margin-left:9px}.ticket-right p{margin-top:17px;line-height:1.4;font-size:17px}.ticket-right small{font-size:11px;color:#8895a5;margin-top:17px}.ticket-star{position:absolute;top:19px;right:19px;width:17px;height:17px;color:#c78faa}.countdown{display:flex;justify-content:center;align-items:flex-start;gap:22px;margin:34px 0 12px}.countdown>div{min-width:68px;display:flex;flex-direction:column}.countdown strong{font-size:40px;line-height:1.3;font-weight:900;font-variant-numeric:tabular-nums;letter-spacing:-.05em}.countdown span{font-size:12px;letter-spacing:.06em;color:#75879e}.countdown i{font-style:normal;font-size:24px;font-weight:700;line-height:1.7;color:#9bb2cc}.celebration .small-note{margin-bottom:26px}.venue-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:90px;align-items:center}.venue h2{font-size:clamp(44px,5vw,64px)}.rose-dot{color:var(--rose)}.venue-hotel{font-size:25px;font-weight:800;margin:18px 0 8px;color:#6f8fac}.venue .pill{margin-top:27px}.map-illustration>svg{width:100%;height:auto;border:1px solid #cbdacb;border-radius:30px;box-shadow:0 15px 35px #63686d0a}.map-caption{display:block;text-align:center;font-size:11px;color:#839082;letter-spacing:.02em;margin-top:10px}
.guesses{--section-color:var(--blush);padding-top:70px}.guesses .reveal>p:last-child{margin-top:25px}.guess-options{display:flex;align-items:center;justify-content:center;gap:25px;margin:45px auto 12px}.guess-cloud{background:none;width:270px;aspect-ratio:1.45;position:relative;transition:transform .4s}.guess-cloud>svg{position:absolute;inset:0;width:100%;height:100%;filter:drop-shadow(0 8px 0 #30466a09)}.guess-cloud.boy>svg{color:#c9e2f9}.guess-cloud.girl>svg{color:#f2bfd6}.guess-cloud svg>path{stroke:none}.guess-cloud>span{position:relative;z-index:2;display:block;font-size:13px;line-height:1.4;margin-top:12px}.guess-cloud strong{display:block;font-weight:900;font-size:38px;letter-spacing:-.04em}.guess-cloud small{display:block;font-size:11px;opacity:.6;margin-top:8px}.guess-cloud:hover{transform:translateY(-6px) rotate(-2deg)}.guess-cloud.girl:hover{transform:translateY(-6px) rotate(2deg)}.guess-cloud[aria-pressed=true]{transform:translateY(-6px) scale(1.06)}.guess-cloud[aria-pressed=true]>svg{filter:drop-shadow(0 8px 0 #30466a15)}.guess-cloud[aria-pressed=true] small{font-weight:800;opacity:1}.guess-or{font-size:21px;color:#ba93a7;font-style:italic}.guess-result{min-height:30px;font-weight:800;font-size:16px}.guesses .small-note{margin-top:7px}
.play{--section-color:var(--sky);padding-top:95px}.game-layout{display:grid;grid-template-columns:.85fr 1.15fr;gap:100px;align-items:center}.game-intro .lead{margin:26px 0 12px}.game-intro h2 em{color:var(--blue-ink)}.game-stats{display:flex;gap:35px;margin-top:30px}.game-stats>div{display:flex;flex-direction:column}.game-stats strong{font-size:26px;font-weight:900;letter-spacing:-.05em;line-height:1.25;font-variant-numeric:tabular-nums}.game-stats span{font-size:12px;color:#75849d}.game-status{font-size:14px;margin:22px 0 18px;min-height:46px}.game-best{font-size:12px;color:#7a8ba3;margin-top:15px;min-height:20px}.game-world{position:relative;padding:26px 22px;background:#dbeaf9;border-radius:34px;border:1px solid #c8dded;box-shadow:inset 0 2px 0 #fff9}.game-board{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.memory-card{position:relative;display:grid;place-items:center;aspect-ratio:1.08;min-width:0;border-radius:18px;background:#fffcf6;border:1px solid #fff;box-shadow:0 5px 0 #a8bdd338;transition:background .25s,transform .25s,box-shadow .25s;overflow:hidden}.memory-card .card-cloud{color:#bfd9ee;width:70%;height:72%;transition:opacity .15s}.memory-card .card-symbol{position:absolute;opacity:0;width:47%;height:55%;color:#d8abc4;transform:scale(.65);transition:opacity .18s,transform .25s}.memory-card:nth-child(3n+1) .card-symbol{color:#84acd1}.memory-card:nth-child(3n+2) .card-symbol{color:#d2b584}.memory-card.is-faceup .card-cloud,.memory-card.is-matched .card-cloud{opacity:0}.memory-card.is-faceup .card-symbol,.memory-card.is-matched .card-symbol{opacity:1;transform:scale(1)}.memory-card.is-faceup{transform:translateY(-3px);background:#fffefb}.memory-card.is-matched{background:#e9f4ef;border-color:#c7ded6;box-shadow:0 3px 0 #a2c9bb38}.memory-card.is-matched:after{content:'✓';position:absolute;top:4px;right:8px;font-size:12px;font-weight:900;color:#769f8d}.memory-card:not(:disabled):hover{transform:translateY(-4px);box-shadow:0 8px 0 #a8bdd329}.memory-card:disabled:not(.is-matched){opacity:.78}.game-world-star{position:absolute;right:-24px;top:-25px;width:42px;height:42px;color:#db9bb8;transform:rotate(10deg)}.game-burst{position:absolute;inset:0;pointer-events:none;overflow:visible}.confetti{position:absolute;left:50%;top:40%;font-size:20px;color:var(--rose);animation:burst 1.7s ease-out forwards;transform:translate(0,0)}.confetti:nth-child(2n){color:var(--blue-ink)}
.gift-layout{display:grid;grid-template-columns:1fr 1fr;gap:100px;align-items:center}.gifts h2{font-size:clamp(40px,4.7vw,60px)}.gifts p:not(.eyebrow){max-width:380px;margin-top:24px}.gift-option{display:flex;align-items:center;gap:19px;width:100%;padding:24px 0;background:none;border-bottom:1px solid #30466a26;text-align:left;transition:transform .25s}.gift-option:first-child{border-top:1px solid #30466a26}.gift-option:hover{transform:translateX(5px)}.gift-symbol{display:grid;place-items:center;width:55px;height:55px;border-radius:19px;flex-shrink:0}.blue-symbol{background:#e3effa;color:#76a6d0}.pink-symbol{background:#f9e0eb;color:#ca88a6}.gift-symbol svg{width:32px;height:32px}.gift-option strong{font-size:20px;font-weight:900;display:block;line-height:1.4}.gift-option small{font-size:13px;color:#8691a0;display:block;margin-top:4px}.gift-option .option-arrow{margin-left:auto;width:23px}
.rsvp{--section-color:#f4edf4;background:radial-gradient(ellipse at 50% 38%,#fffaf2 10%,transparent 65%),linear-gradient(110deg,#dcecf9,#f9dfec);padding:75px 0 0}.rsvp .cloud-edge{color:#f4edf4}.rsvp-inner{padding-bottom:100px}.rsvp-cloud{width:95px;height:72px;color:#c0dcf4;margin-bottom:20px;animation:float 9s ease-in-out infinite}.rsvp h2{font-size:clamp(46px,6.5vw,84px)}.rsvp-inner>p:not(.eyebrow){margin-top:27px}.rsvp-button{margin-top:30px;min-width:220px}.rsvp .small-note{margin-top:20px!important}.closing-signature{font-size:14px;color:#8791a4;margin-top:45px}.closing-signature strong{font-size:21px;font-weight:900;display:block;color:var(--navy);margin-top:5px;letter-spacing:-.04em}footer{position:relative;display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid #30466a17;padding:26px 5vw;font-size:12px;color:#7c8699}footer button{padding:8px 0;background:none;font-size:12px}footer a{font-weight:700}footer a:hover,footer button:hover{color:var(--navy)}
/* Reveal only once, then release compositing layers. */
.js .reveal{opacity:0;transform:translateY(28px);transition:opacity .85s ease,transform .85s cubic-bezier(.2,.65,.3,1)}.js .reveal.is-visible{opacity:1;transform:none}.photo-composition.is-visible .photo-paper{animation:paperSettle 1s ease-out both}
dialog{border:1px solid #e7e0d8;box-shadow:0 30px 100px #23345033;padding:0;max-height:90svh;overscroll-behavior:contain;border-radius:23px;color:var(--navy);background:var(--cream)}dialog::backdrop{background:#263a55ad}dialog[open]{animation:dialogIn .3s ease-out}.media-dialog{width:min(800px,calc(100% - 32px));overflow:auto}.dialog-close{position:absolute;z-index:6;right:13px;top:13px;width:40px;height:40px;border-radius:50%;background:#fffdf5eb;display:grid;place-items:center;box-shadow:0 1px 5px #0001}.dialog-close svg{width:20px;height:20px}.media-dialog #mediaBody{display:grid;place-items:center;min-height:100px;background:#f0edf0;border-radius:22px 22px 0 0;overflow:hidden}.media-dialog img,.media-dialog video{max-height:68svh;width:auto;max-width:100%;object-fit:contain}.media-dialog .gift-qr{padding:42px;max-height:60svh;image-rendering:auto;background:white;width:min(390px,100%)}.media-caption{padding:22px 27px}.media-caption h3{font-size:24px}.media-caption p{font-size:13px;margin-top:7px}.small-dialog{padding:40px 30px;max-width:430px;width:calc(100% - 32px);text-align:center}.small-dialog h3{font-size:43px}.small-dialog>p:not(.eyebrow){margin:20px 0 25px;font-size:14px}.small-dialog .text-link{display:flex;justify-content:center;margin:13px 0 0}.small-dialog .small-note{margin:18px 0 0!important;font-size:12px!important}.toast{position:fixed;z-index:500;bottom:25px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;max-width:calc(100% - 40px);width:max-content;padding:12px 22px;border-radius:40px;background:var(--navy);color:white;font-size:14px;transition:opacity .3s,transform .3s}.toast.show{opacity:1;transform:translate(-50%,0)}.no-script{position:fixed;z-index:999;inset:0;background:var(--cream);display:grid;place-items:center;padding:30px;font-size:22px}
@keyframes float{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-12px) rotate(3deg)}}@keyframes cue{0%,100%{transform:rotate(90deg) translateX(0)}50%{transform:rotate(90deg) translateX(6px)}}@keyframes paperSettle{from{transform:rotate(8deg) translateY(12px)}to{transform:rotate(4deg) translateY(0)}}@keyframes dialogIn{from{opacity:0;transform:translateY(15px) scale(.97)}to{opacity:1;transform:none}}@keyframes burst{0%{opacity:0;transform:translate(0,0) scale(.3)}15%{opacity:1}85%{opacity:1}100%{opacity:0;transform:translate(var(--x),var(--y)) rotate(var(--r)) scale(.7)}}
@media(min-width:1200px){.hero-art,.opening .stage-art{object-fit:contain}.hero{min-height:760px}.hero-glow:after,.opening-sky:after{content:'';position:absolute;inset:30% 4%;background:radial-gradient(ellipse at 0 65%,#e3f0fd 0,transparent 38%),radial-gradient(ellipse at 100% 20%,#f9dcec 0,transparent 36%)}.hero .scroll-cue{bottom:40px}}
@media(max-width:950px){.section-wrap{width:calc(100% - 64px)}.story-grid,.venue-grid,.game-layout,.gift-layout{gap:45px}.photo-print img{height:300px}.story-copy h2{font-size:54px}.heading-star{right:0}.glimpse-row{gap:50px;max-width:640px;grid-template-columns:200px 1fr}.game-stats{gap:24px}.game-board{gap:10px}.game-world{padding:18px}.memory-card{border-radius:14px}.site-header nav{gap:22px}.eyebrow{font-size:11px;letter-spacing:.14em}}
@media(max-width:680px){body{font-size:16px}.section-wrap{width:calc(100% - 44px)}.chapter{padding:75px 0 110px}.chapter .cloud-edge{height:64px;mask-size:160% 100%;-webkit-mask-size:160% 100%}.site-header{padding:17px 22px}.brand{font-size:26px}.site-header nav{gap:19px;font-size:12px}.site-header nav a:first-child{display:none}.nav-rsvp{padding:6px 13px}.opening-controls{inset:18px 18px auto}.quiet-button{font-size:11px;background:#fffdf5c9;padding:6px 11px}.opening,.hero{min-height:500px}.stage-art{object-fit:cover}.scroll-cue{bottom:31px;font-size:11px;gap:5px}.hero-spark{display:none}.story{padding-top:56px}.story-grid{display:flex;flex-direction:column;gap:38px}.story-copy{text-align:center}.story-copy>p:not(.eyebrow){max-width:350px;margin-inline:auto}.story-copy h2{font-size:53px;margin-bottom:25px}.eyebrow{font-size:10px;letter-spacing:.16em;margin-bottom:20px}.heading-star{right:6px;top:35%;font-size:23px}.lead{font-size:20px}.signature{margin:22px 0 15px}.signature strong{font-size:25px}.photo-composition{width:100%;max-width:420px;padding:23px 10px 35px}.photo-print img{height:auto;aspect-ratio:1.22;object-position:50% 47%}.photo-print{padding:10px 10px 0}.photo-print>span{font-size:14px;padding:18px 6px}.photo-print>svg{bottom:19px;right:19px;width:18px}.photo-paper{inset:7px 0 55px 28px}.little-note{left:0;font-size:11px;gap:10px;padding:10px 16px}.little-note svg{width:23px}.glimpse-row{margin-top:75px;grid-template-columns:39% 1fr;gap:24px;align-items:center}.glimpse-copy h3{font-size:34px}.glimpse-copy .eyebrow{font-size:8px;letter-spacing:.09em;margin-bottom:13px}.glimpse-copy p:not(.eyebrow){font-size:13px;line-height:1.6;margin-top:15px}.glimpse-copy .text-link{font-size:12px;gap:7px;line-height:1.35;margin-top:10px;text-align:left;align-items:center}.glimpse-copy .small-play{width:27px;height:27px;flex-shrink:0}.glimpse-copy .duration{display:none}.glimpse-star{display:none}h2{font-size:45px}.date-ticket{margin:36px auto 25px;border-radius:10px}.ticket-left{padding:27px 10px}.ticket-left>span{font-size:10px;letter-spacing:.07em}.ticket-left>strong{font-size:96px}.ticket-right{padding:30px 12px}.ticket-right>strong{font-size:35px}.ticket-right>strong span{font-size:13px;margin-left:5px}.ticket-right p{font-size:14px;margin-top:13px}.ticket-right small{font-size:8px;margin-top:13px}.ticket-star{width:13px;height:13px;top:13px;right:12px}.countdown{gap:9px;margin:26px 0 12px}.countdown>div{min-width:55px}.countdown strong{font-size:34px}.countdown span{font-size:10px}.countdown i{font-size:20px}.celebration .small-note{font-size:11px}.pill{font-size:14px;min-height:50px;padding:14px 23px}.venue-grid{grid-template-columns:1fr;gap:36px;text-align:center}.venue h2{font-size:47px}.venue-hotel{font-size:23px;margin-top:16px}.venue .pill{margin-top:24px}.map-illustration{width:100%;max-width:500px;margin:auto}.map-illustration>svg{border-radius:22px}.map-caption{font-size:10px}.guess-options{gap:3px;margin:32px -10px 16px}.guess-cloud{width:47%;aspect-ratio:1.22}.guess-cloud>span{font-size:11px;margin-top:13px}.guess-cloud strong{font-size:34px}.guess-cloud small{font-size:9px;margin-top:9px}.guess-or{font-size:16px}.guesses .reveal>p:last-child{margin-top:20px;font-size:14px}.guess-result{font-size:14px}.guesses .small-note{font-size:11px}.game-layout{grid-template-columns:1fr;gap:30px}.game-intro{text-align:center}.game-intro h2{font-size:51px}.game-intro>p:not(.eyebrow){max-width:340px;margin-inline:auto}.game-intro .lead{margin-top:21px}.game-stats{justify-content:center;gap:42px;margin-top:24px}.game-status{margin-top:19px;min-height:23px}.game-best{margin-top:13px;min-height:0}.game-world{max-width:430px;width:100%;margin:auto;padding:18px;border-radius:26px}.game-board{gap:12px}.memory-card{aspect-ratio:1.24;border-radius:14px}.game-world-star{right:-9px;top:-19px;width:30px}.gift-layout{grid-template-columns:1fr;gap:28px;text-align:center}.gifts h2{font-size:45px}.gifts p:not(.eyebrow){margin:20px auto 0;font-size:15px}.gift-option{gap:14px;padding:22px 3px}.gift-option strong{font-size:19px}.gift-option small{font-size:12px}.gift-symbol{width:47px;height:47px;border-radius:15px}.gift-symbol svg{width:27px;height:27px}.rsvp{padding-top:60px;padding-bottom:0}.rsvp h2{font-size:52px}.rsvp-inner{padding-bottom:75px}.rsvp-cloud{width:82px;height:60px;margin-bottom:18px}.rsvp-inner>p:not(.eyebrow){font-size:15px;margin-top:24px}.rsvp .small-note{font-size:10px!important}.closing-signature{margin-top:30px;font-size:12px}.closing-signature strong{font-size:20px}footer{flex-direction:column;gap:11px;padding:22px 20px;font-size:11px}footer button{font-size:11px}.back-top{display:none}.media-caption{padding:18px 21px}.media-caption h3{font-size:22px}.media-caption p{font-size:12px}.media-dialog .gift-qr{padding:25px}.small-dialog{padding:38px 23px}}
@media(max-width:360px){.section-wrap{width:calc(100% - 34px)}.site-header nav{gap:13px}.ticket-left>strong{font-size:84px}.countdown{gap:7px}.countdown>div{min-width:50px}.game-world{padding:14px}.game-board{gap:9px}.guess-cloud strong{font-size:29px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition-duration:.01ms!important}.js .reveal{opacity:1;transform:none}.opening{transition:none}}

/* Full keepsakes: preserve every edge of the supplied pictures and clips. */
figure{margin:0}
.photo-print,.elephant-print{cursor:default}
.photo-print:hover,.elephant-print:hover{transform:none}
.photo-print img,.elephant-print img{width:100%;height:auto;aspect-ratio:auto;object-fit:contain}
.photo-print img{aspect-ratio:auto 1400/933}
.elephant-print img{aspect-ratio:auto 3/4}
.photo-print>figcaption{display:block;font-size:16px;font-weight:700;padding:21px 11px;color:#6f7b8b}
.elephant-print{transform:none;padding:11px 11px 0;background:#fffefa}
.elephant-print figcaption{padding:16px 6px;color:#78869b;font-size:13px;text-align:center}
.moment-scene{margin-top:110px;max-width:820px}
.film-heading{text-align:center;margin-bottom:35px}
.film-heading h3{font-size:clamp(32px,4vw,46px)}
.memory-film{position:relative;padding:11px 11px 0;background:#fffefa;border:1px solid #e0e4e7;border-radius:8px;box-shadow:0 18px 35px #4558780c}
.film-frame{position:relative;overflow:hidden;border-radius:3px;background:#f0e8e2}
.scroll-video{display:block;width:100%;height:auto;object-fit:contain;pointer-events:none}
.wide-film .scroll-video{aspect-ratio:16/9}
.portrait-film .scroll-video{aspect-ratio:9/16}
.memory-film figcaption{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:62px;padding:12px 9px;font-size:14px;font-weight:700;color:#67788f}
.film-toggle{background:none;min-width:47px;min-height:36px;padding:6px 9px;border-radius:20px;font-size:11px;font-weight:800;border:1px solid #889eb83b;line-height:1.2;flex-shrink:0}
.film-toggle:hover{background:#e9f2fa}
.film-progress{height:2px;margin:0 7px;background:#e6ebee;overflow:hidden}
.film-progress>span{display:block;height:100%;width:100%;background:#b894b8;transform:scaleX(0);transform-origin:left}
.memory-film.is-playing:after{content:'';position:absolute;right:22px;top:22px;width:6px;height:6px;border-radius:50%;background:#fffcf4;box-shadow:0 0 0 4px #fff5;pointer-events:none}
.glimpse-scene{margin-top:115px;max-width:900px}
.glimpse-scene .glimpse-copy{text-align:center;margin-bottom:42px}
.glimpse-scene .glimpse-copy>p:not(.eyebrow){margin-top:20px}
.glimpse-keepsakes{display:grid;grid-template-columns:1fr 1fr;gap:65px;align-items:center;max-width:760px;margin:auto}
.glimpse-keepsakes .elephant-print{width:100%;max-width:340px;justify-self:center}
.portrait-film{width:min(100%,320px,calc(56.25svh - 78.75px));justify-self:center}

/* Three independently moving cloud banks form each chapter transition. */
.chapter .cloud-edge{height:clamp(110px,13vw,180px);background:none;mask:none;-webkit-mask:none;overflow:hidden;isolation:isolate}
.chapter .cloud-edge:before{display:none}
.cloud-layer{position:absolute;width:124%;left:-12%;height:100%;bottom:-28px;pointer-events:none}
.cloud-layer:before{content:'';position:absolute;inset:0;background:currentColor;mask:url('assets/cloud-edge.svg') center bottom/100% 100% no-repeat;-webkit-mask:url('assets/cloud-edge.svg') center bottom/100% 100% no-repeat;animation:cloudBankDrift 22s ease-in-out infinite alternate;animation-play-state:paused;transform:translateX(-2%)}
.cloud-layer-far{opacity:.42;bottom:8px;transform:translate3d(calc(var(--cloud-slide,0px) * -.3),calc(var(--cloud-rise,0px) * .15),0)}
.cloud-layer-mid{opacity:.7;bottom:-8px;transform:translate3d(calc(var(--cloud-slide,0px) * .5),calc(var(--cloud-rise,0px) * .4),0)}
.cloud-layer-mid:before{animation-delay:-8s;animation-direction:alternate-reverse}
.cloud-layer-front{bottom:-30px;transform:translate3d(calc(var(--cloud-slide,0px) * -.8),calc(var(--cloud-rise,0px) * .8),0)}
.cloud-layer-front:before{animation-delay:-14s}
.chapter.in-sky .cloud-layer:before{animation-play-state:running}

/* The sky lives behind the content, so drifting clouds never obscure a photo. */
.chapter-sky{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;contain:paint}
.chapter-sky:before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 24% 32%,#fff9 0,transparent 48%),radial-gradient(ellipse at 85% 74%,#cce3fc26 0,transparent 48%)}
.story .chapter-sky:before{background:linear-gradient(100deg,#d6eafb85,transparent 40%,transparent 60%,#f7d9e97a);mask-image:linear-gradient(to bottom,transparent,#000 130px,#000 calc(100% - 130px),transparent);-webkit-mask-image:linear-gradient(to bottom,transparent,#000 130px,#000 calc(100% - 130px),transparent)}
.sky-cloud{position:absolute;display:block;width:clamp(260px,35vw,550px);aspect-ratio:25/11;opacity:.68;transform:translate3d(0,var(--sky-lift,0px),0)}
.sky-cloud:before{content:'';position:absolute;inset:0;background:url('assets/sky-cloud.svg') center/contain no-repeat;animation:skyCloudDrift 24s ease-in-out infinite alternate;animation-play-state:paused}
.sky-cloud-a{left:-11%;top:12%;transform:translate3d(calc(var(--sky-sway,0px) * .6),calc(var(--sky-lift,0px) * .45),0)}
.sky-cloud-b{right:-12%;top:53%;opacity:.58;transform:translate3d(calc(var(--sky-sway,0px) * -.8),calc(var(--sky-lift,0px) * -.85),0)}
.sky-cloud-b:before{animation-delay:-12s;animation-direction:alternate-reverse}
.sky-cloud-c{left:7%;top:84%;width:clamp(180px,24vw,360px);opacity:.35;transform:translate3d(calc(var(--sky-sway,0px) * -.4),calc(var(--sky-lift,0px) * 1.1),0)}
.sky-cloud-c:before{animation-delay:-6s;animation-duration:30s}
.in-sky .sky-cloud:before{animation-play-state:running}
.hero .chapter-sky{z-index:2;opacity:0;transition:opacity 1.2s}
.is-open .hero .chapter-sky{opacity:.85}
.hero .sky-cloud-a{left:-12%;top:30%}
.hero .sky-cloud-b{right:-13%;top:62%}
.hero .sky-cloud-c{display:none}
body.sky-paused .sky-cloud:before,body.sky-paused .cloud-layer:before{animation-play-state:paused!important}

/* A clean word-by-word entrance, without blurring the lettering. */
.word-mask{display:inline-block;overflow:hidden;vertical-align:bottom;padding-bottom:.11em;margin-bottom:-.11em}
.word-rise{display:inline-block;transform:translateY(115%);transition:transform .95s cubic-bezier(.16,.75,.22,1);transition-delay:calc(var(--word-order,0) * 55ms)}
.is-visible .word-rise{transform:translateY(0)}
.reveal.reveal-media{transform:translateY(40px);transition:opacity 1.05s,transform 1.05s cubic-bezier(.18,.7,.25,1)}
.reveal.reveal-media.is-visible{transform:none}
@keyframes cloudBankDrift{from{transform:translateX(-3%) scaleX(1.04)}to{transform:translateX(3%) scaleX(1.04)}}
@keyframes skyCloudDrift{from{transform:translate3d(-25px,5px,0)}to{transform:translate3d(35px,-8px,0)}}
@media(max-width:950px){.glimpse-keepsakes{gap:34px}}
@media(max-width:680px){
  .photo-print img,.elephant-print img{height:auto;object-fit:contain}
  .photo-print>figcaption{font-size:14px;padding:18px 6px}
  .moment-scene{margin-top:65px}
  .film-heading{margin-bottom:25px}
  .film-heading h3{font-size:34px}
  .memory-film{padding:8px 8px 0;border-radius:6px}
  .memory-film figcaption{min-height:57px;padding:10px 6px;font-size:12px}
  .film-toggle{font-size:10px;min-height:34px;min-width:44px;padding:6px 8px}
  .glimpse-scene{margin-top:75px}
  .glimpse-scene .glimpse-copy{margin-bottom:30px}
  .glimpse-scene .glimpse-copy .eyebrow{font-size:10px;letter-spacing:.16em;margin-bottom:20px}
  .glimpse-scene .glimpse-copy h3{font-size:43px}
  .glimpse-scene .glimpse-copy>p:not(.eyebrow){font-size:15px;line-height:1.65}
  .glimpse-keepsakes{grid-template-columns:1fr;gap:40px}
  .glimpse-keepsakes .elephant-print{max-width:100%;padding:8px 8px 0}
  .elephant-print figcaption{font-size:12px;padding:16px 5px}
  .portrait-film{width:min(100%,320px,calc(56.25svh - 78.75px))}
  .chapter .cloud-edge{height:110px}
  .cloud-layer{width:180%;left:-40%}
  .cloud-layer-far{bottom:4px}.cloud-layer-mid{bottom:-14px}.cloud-layer-front{bottom:-34px}
  .sky-cloud{width:290px}
  .sky-cloud-a{left:-155px;top:13%}
  .sky-cloud-b{right:-168px;top:57%}
  .sky-cloud-c{left:-60px;width:220px;top:87%}
  .hero .sky-cloud-a{left:-230px;top:35%}
  .hero .sky-cloud-b{right:-230px;top:71%}
}
@media(prefers-reduced-motion:reduce){.word-rise{transform:none}.cloud-layer,.sky-cloud{transform:none}.sky-cloud:before,.cloud-layer:before{animation:none!important}.reveal.reveal-media{transform:none}.hero .chapter-sky{transition:none}}

/* Storybook lettering, warm handwritten accents, and easy-to-read details. */
body{font-family:'DM Sans',Arial,sans-serif}
h2,h3{font-family:Fraunces,Georgia,serif;font-weight:600;line-height:1.08;letter-spacing:-.055em}
h2 em{font-family:Caveat,'Segoe Print',cursive;font-weight:600;font-size:1.25em;line-height:.98;letter-spacing:-.03em}
.brand{font-family:Fraunces,Georgia,serif;font-weight:600}
.lead{font-weight:500}
.signature,.signature strong,.closing-signature strong{font-family:Caveat,'Segoe Print',cursive;font-weight:600}
.signature strong{font-size:35px}
.photo-print>figcaption,.elephant-print figcaption{font-family:Caveat,'Segoe Print',cursive;font-size:22px!important;font-weight:600!important}
.little-note{font-family:Caveat,'Segoe Print',cursive;font-size:18px}
.ticket-left>strong,.ticket-right>strong{font-family:Fraunces,Georgia,serif;font-weight:600}
.countdown strong,.game-stats strong{font-weight:700}
.word-mask{padding:.1em .035em .2em;margin:-.1em -.035em -.2em}
.music-control{display:grid;place-items:center;width:31px;height:31px;flex-shrink:0;padding:0;border:1px solid #8a9ab838;border-radius:50%;background:#fffdf58c;transition:background .25s,transform .25s}
.music-control svg{width:17px;height:17px}
.music-control:hover{background:#e4effa;transform:translateY(-1px)}
.music-control[aria-pressed=true] .sound-slash{display:none}
@media(max-width:680px){.site-header nav{gap:14px}.music-control{width:31px;height:31px}}

/* A paper-cut sky: fixed, lightweight decorations at three different depths. */
.sky-detail{position:absolute;display:block;width:var(--ornament-size);opacity:.72;transform:translate3d(calc(var(--sky-sway,0px) * var(--depth)),calc(var(--ornament-lift,0px) * var(--depth)),0) rotate(calc(var(--ornament-turn,0deg) * var(--depth)));pointer-events:none}
.ornament-drift{display:block;width:100%;animation:ornamentFloat var(--float-duration,15s) ease-in-out var(--float-delay,0s) infinite alternate;animation-play-state:paused}
.sky-detail svg{display:block;width:100%;height:auto;overflow:visible}
.detail-balloon svg{aspect-ratio:5/8}
.detail-star svg,.detail-plane svg,.detail-moon svg,.detail-bow svg,.detail-heart svg{aspect-ratio:1}
.tone-blue{color:#8bb7df}.tone-pink{color:#e4a3c0}.tone-gold{color:#d6b57b}
.detail-plane{opacity:.66}.detail-bow{opacity:.61}
.sky-twinkle{position:absolute;display:block;width:13px;height:13px;color:#ad97b9;animation:skyTwinkle 5.8s ease-in-out var(--twinkle-delay,0s) infinite;animation-play-state:paused}
.sky-twinkle svg{width:100%;height:100%}
.sky-twinkle:nth-last-child(2){width:8px;height:8px;color:#86a7c7}
.sky-twinkle:last-child{width:18px;height:18px;color:#c9ab7c}
.in-sky .ornament-drift,.in-sky .sky-twinkle{animation-play-state:running}
.hero .sky-detail{opacity:.78}
.hero .detail-balloon{width:calc(var(--ornament-size) * .78)}
.hero .sky-twinkle{opacity:.5}
.sky-route{position:absolute;inset:0;width:100%;height:100%;overflow:visible;fill:none;pointer-events:none;opacity:.36}
.sky-route path{vector-effect:non-scaling-stroke;stroke-linecap:round}
.route-dots{stroke:#c1b7c9;stroke-width:1;stroke-dasharray:2 11;opacity:.45}
.route-draw{stroke:#b6bbd1;stroke-width:1.25;stroke-dasharray:1000;stroke-dashoffset:calc(1000 - var(--route-progress,0) * 1000)}
.guesses .route-draw,.rsvp .route-draw{stroke:#c8a4bd}
body.sky-paused .ornament-drift,body.sky-paused .sky-twinkle,body.sky-paused .map-beacon,body.sky-paused .qr-bow{animation-play-state:paused!important}

/* Scroll shifts the paper photograph separately from its entrance animation. */
.story .photo-print{transform:translate3d(0,var(--paper-shift,0px),0) rotate(var(--paper-turn,0deg));box-shadow:0 18px 30px #485c7914,0 2px 3px #51515e10}
.map-illustration>svg{transform:translate3d(0,calc(var(--paper-shift,0px) * .5),0)}
.venue-route{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 2.2s cubic-bezier(.3,.6,.3,1) .35s}
.is-visible .venue-route{stroke-dashoffset:0}
.map-beacon{transform-box:fill-box;transform-origin:center;animation:mapBeacon 3.6s ease-out infinite;animation-play-state:paused}
.venue.in-sky .map-beacon{animation-play-state:running}
.js .date-ticket .ticket-left,.js .date-ticket .ticket-right{opacity:0;transition:transform 1.1s cubic-bezier(.2,.75,.25,1),opacity .7s}
.js .date-ticket .ticket-left{transform:translateX(-22px)}
.js .date-ticket .ticket-right{transform:translateX(22px);transition-delay:.14s}
.js .date-ticket.is-visible .ticket-left,.js .date-ticket.is-visible .ticket-right{transform:none;opacity:1}
.ticket-right{overflow:hidden}
.ticket-right:after{content:'';position:absolute;inset:-30% -100%;background:linear-gradient(115deg,transparent 42%,#fff8 49%,transparent 56%);transform:translateX(-70%);pointer-events:none}
.date-ticket.is-visible .ticket-right:after{animation:ticketLight 2.2s ease-out .35s both}
.countdown.is-visible>div{animation:countdownRise .8s cubic-bezier(.2,.7,.3,1) both}
.countdown.is-visible>div:nth-of-type(2){animation-delay:.08s}
.countdown.is-visible>div:nth-of-type(3){animation-delay:.16s}
.countdown.is-visible>div:nth-of-type(4){animation-delay:.24s}

/* Both original QR images are visible, still, and surrounded by a white quiet zone. */
.gift-layout{display:block;text-align:center}
.gift-layout>div:first-child{max-width:600px;margin:auto}
.gifts p:not(.eyebrow){margin:22px auto 0;max-width:440px}
.gift-qr-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px;max-width:760px;margin:55px auto 0;align-items:start}
.gift-qr-card{position:relative;padding:26px 24px 25px;border:1px solid #c2d8e9;border-radius:10px;background:linear-gradient(160deg,#f2f8fe,#fffcf7 65%);box-shadow:6px 7px 0 #ddeaf5;opacity:1!important;transform:none!important}
.cash-card{border-color:#e3c4d4;background:linear-gradient(160deg,#fff1f6,#fffcf7 65%);box-shadow:6px 7px 0 #f3dde7}
.qr-bow{display:block;margin:-44px auto 15px;width:56px;height:42px;color:#8aafd2;transform-origin:center;animation:qrBowSway 7s ease-in-out infinite alternate;animation-play-state:paused}
.cash-card .qr-bow{color:#ce88a7;animation-delay:-3s}
.gifts.in-sky .qr-bow{animation-play-state:running}
.gift-qr-card h3{font-size:31px;letter-spacing:-.04em}
.gifts .gift-qr-card figcaption p{font-size:13px;margin:9px 0 21px;color:#728198}
.qr-mat{display:grid;place-items:center;aspect-ratio:1;width:100%;max-width:280px;margin:auto;padding:18px;background:#fff;border:1px solid #e7e8eb;border-radius:6px}
.qr-mat img{width:100%;max-width:240px;height:auto;object-fit:contain;image-rendering:auto;user-select:auto}
.qr-help{display:block;font-size:12px;margin-top:17px;letter-spacing:.02em;color:#6f7b8e}

@keyframes ornamentFloat{from{transform:translate3d(-7px,8px,0) rotate(-4deg)}to{transform:translate3d(9px,-14px,0) rotate(5deg)}}
@keyframes skyTwinkle{0%,100%{opacity:.2;transform:scale(.65) rotate(0)}50%{opacity:.85;transform:scale(1.12) rotate(45deg)}}
@keyframes mapBeacon{0%{opacity:.3;transform:scale(.5)}80%,100%{opacity:0;transform:scale(1.5)}}
@keyframes ticketLight{from{transform:translateX(-60%)}to{transform:translateX(60%)}}
@keyframes countdownRise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}
@keyframes qrBowSway{from{transform:rotate(-5deg)}to{transform:rotate(5deg)}}
@media(max-width:680px){
  .sky-detail{width:calc(var(--ornament-size) * .7);opacity:.57}
  .hero .detail-balloon{width:calc(var(--ornament-size) * .66)}
  .hero .sky-detail:nth-of-type(4){left:1%!important;top:16%!important}
  .hero .sky-detail:nth-of-type(5){left:79%!important;top:12%!important}
  .sky-twinkle{width:10px;height:10px}
  .sky-route{opacity:.27}
  .gift-qr-grid{grid-template-columns:1fr;gap:52px;max-width:330px;margin-top:58px}
  .gift-qr-card{padding:25px 23px 23px}
  .gift-qr-card h3{font-size:30px}
  .gifts .gift-qr-card figcaption p{font-size:13px;margin-top:8px}
  .qr-mat{max-width:270px;padding:17px}
  .qr-help{font-size:12px}
}
@media(prefers-reduced-motion:reduce){
  .sky-detail,.ornament-drift,.sky-twinkle,.story .photo-print,.map-illustration>svg{transform:none!important}
  .sky-route .route-draw{stroke-dashoffset:0}
  .map-beacon{animation:none!important}
  .js .date-ticket .ticket-left,.js .date-ticket .ticket-right{opacity:1;transform:none;transition:none}
  .venue-route{stroke-dashoffset:0;transition:none}
  .ticket-right:after{display:none}
}

/* Keep the cloud bank and the beginning of its next sky the same colour. */
.chapter-sky:before{mask-image:linear-gradient(to bottom,transparent,#000 140px,#000 calc(100% - 100px),transparent);-webkit-mask-image:linear-gradient(to bottom,transparent,#000 140px,#000 calc(100% - 100px),transparent)}
.rsvp{background:linear-gradient(to bottom,#f4edf4,transparent 220px),radial-gradient(ellipse at 50% 38%,#fffaf2 10%,transparent 65%),linear-gradient(110deg,#dcecf9,#f9dfec)}
.hero .scroll-cue{bottom:clamp(130px,17svh,185px);color:#536b89}

.date-ticket{overflow:hidden}
