@import url('https://fonts.googleapis.com/css2?family=Courier+Prime&family=Pinyon+Script&family=DM+Serif+Display:ital@0;1&display=swap');
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Instrument+Serif:ital@0;1&family=Caveat:wght@600&family=Permanent+Marker&display=swap');
.portal img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%;display:block}
.portal .landscape-monochrome{filter:grayscale(1)}
.portal .landscape-colour{opacity:0;will-change:opacity;pointer-events:none}
.stage.reduced-motion .film{inset:0;width:100%;height:100%;min-height:0;aspect-ratio:auto;transform:none}
.stage.reduced-motion .portal{inset:0;width:100%;height:100%}
:root{color-scheme:dark;--paper:#e9e6dc;--ink:#252720}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#11110f;color:var(--paper);font-family:'DM Sans',Arial,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}header{position:absolute;top:0;left:0;width:100%;z-index:5;padding:34px 4%;display:flex;align-items:center;justify-content:space-between}.wordmark{font-family:'Instrument Serif',Georgia,serif;font-size:36px;letter-spacing:-2px}.wordmark span{font-family:Arial;font-size:12px;vertical-align:top;letter-spacing:0;margin-left:3px}.edition,header button,.eyebrow,.enter,.counter,.section-meta,figcaption,footer button{font-size:10px;letter-spacing:2px}header button{border:1px solid #ffffff35;background:#ffffff05;border-radius:30px;padding:12px 18px}header button span{margin-left:12px}.journey{height:360svh}.stage{height:100svh;position:sticky;top:0;overflow:hidden;background:#11110f}.ambient{position:absolute;inset:-20%;background:linear-gradient(#0009,#000b),url('assets/poster.jpg') center/cover;filter:blur(45px);opacity:.65}.film{position:absolute;height:100%;aspect-ratio:512/910;left:50%;top:0;transform:translateX(-50%);transform-origin:50% 51.5%;will-change:transform}video{width:100%;height:100%;object-fit:cover;display:block}.portal{position:absolute;left:15.2%;top:40%;width:61.2%;height:23%;opacity:0;overflow:hidden}.portal img{width:100%;height:100%;object-fit:cover}.shade{position:absolute;inset:0;background:linear-gradient(90deg,#11110fe0,transparent 72%);pointer-events:none}.intro{position:absolute;left:8%;top:30%;width:52%;will-change:opacity,transform}.eyebrow{margin:0 0 25px}h1,h2,p{font-weight:400}h1{font-family:'Instrument Serif',Georgia,serif;font-size:clamp(70px,8.5vw,140px);line-height:.9;letter-spacing:-4px;margin:0}em{font-weight:400}.sub{font-size:13px;color:#c8c5bb;margin-top:28px}.enter{position:absolute;bottom:11%;left:8%;background:none;border:0;padding:0;display:flex;align-items:center;gap:36px}.enter span{border:1px solid #ffffff40;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-size:18px}.counter{position:absolute;bottom:30px;left:4%;right:4%;display:flex;justify-content:space-between;font-size:9px}.reveal-title{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;opacity:0;visibility:hidden;background:#0002}.reveal-title h2{font-family:'Instrument Serif',Georgia,serif;font-size:clamp(62px,7vw,110px);line-height:.96;letter-spacing:-3px;margin:0;text-shadow:0 2px 20px #0003}.reveal-title a{font-size:11px;margin-top:40px;border-bottom:1px solid #fff7;padding-bottom:10px}.reveal-title a span{margin-left:24px}.inside{background:var(--paper);color:var(--ink);padding:40px 8% 0}.section-meta{display:flex;justify-content:space-between;border-bottom:1px solid #25272035;padding-bottom:25px;font-size:9px}.editorial{max-width:850px;margin:115px auto 90px}.editorial h2{font-family:'Instrument Serif',Georgia,serif;font-size:clamp(52px,6.5vw,95px);line-height:1;letter-spacing:-2px;margin:0 0 30px}.body-copy{font-size:15px;line-height:1.8;max-width:360px;margin-left:auto}figure{margin:0}figure img{width:100%;height:65vh;object-fit:cover;display:block}figcaption{display:flex;justify-content:space-between;margin-top:16px;font-size:9px}footer{margin-top:100px;padding:40px 0;display:flex;gap:25px;align-items:center;justify-content:space-between;border-top:1px solid #25272035}footer p{font-family:'Instrument Serif',Georgia,serif;font-size:30px}footer button{border:0;background:none;font-size:9px}footer>span{font-family:'Instrument Serif',Georgia,serif;font-size:30px}button:focus-visible,a:focus-visible{outline:2px solid currentColor;outline-offset:6px}@media(max-width:650px){header{padding:23px 6%}.edition{display:none}.wordmark{font-size:30px}.intro{left:7%;top:27%;width:90%}h1{font-size:78px;letter-spacing:-3px}.shade{background:linear-gradient(90deg,#11110f95,#11110f15)}.film{min-width:100%;height:auto;min-height:100%;top:50%;transform:translate(-50%,-50%)}.enter{left:7%;bottom:13%}.sub{font-size:12px}.counter{left:7%;right:7%}.inside{padding:30px 7% 0}.editorial{margin:75px 0 55px}.body-copy{margin-left:0;margin-top:28px}figure img{height:42vh}footer{margin-top:60px;flex-wrap:wrap}footer p{width:100%;margin:0}.reveal-title h2{font-size:64px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.journey{height:160svh}}

/* Smoky Ivory: scroll reveals the gallery; its rows autoplay independently. */
.journey{height:700svh}
.gallery{position:absolute;inset:0;opacity:0;visibility:hidden;overflow:hidden;background:#11110f}
.gallery-rows{height:100%;display:grid;grid-template-rows:repeat(3,1fr);gap:3px}
.gallery-row{overflow:hidden;min-height:0}
.gallery-track{display:flex;width:max-content;height:100%;animation:photo-drift 85s linear infinite;animation-play-state:paused;will-change:transform}
.gallery-row:nth-child(2) .gallery-track{animation-direction:reverse;animation-duration:100s}
.gallery-row:nth-child(3) .gallery-track{animation-duration:92s}
.gallery.is-playing .gallery-track{animation-play-state:running}
.gallery-group{display:flex;gap:3px;padding-right:3px;height:100%}
.gallery-group img{height:100%;width:28vw;object-fit:cover;filter:saturate(.55) brightness(.76);display:block}
.gallery-group img:nth-child(3n+2){width:20vw}
.gallery-group img:nth-child(3n){width:34vw}
.gallery-tint{position:absolute;inset:0;background:linear-gradient(#11110f30,#11110f55,#11110f35);pointer-events:none}
#gallery-motion{position:absolute;bottom:24px;right:4%;z-index:3;background:#11110f80;border:1px solid #e9e6dc50;border-radius:25px;padding:12px 16px;font-size:9px;letter-spacing:1.5px}
.field-pullback{position:absolute;left:0;top:0;transform:none;opacity:0;visibility:hidden;pointer-events:none;overflow:hidden}
.field-pullback .portal{position:absolute;inset:0;width:100%;height:100%}
.field-pullback img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.reveal-title{background:none;pointer-events:none!important;color:#e9e6dc}
.reveal-title h2{font-size:clamp(82px,12vw,190px);line-height:.82;letter-spacing:-.045em;text-shadow:0 2px 25px #11110f35}
.reveal-title .eyebrow{margin-bottom:24px;font-size:11px;letter-spacing:4px}
.wedding-label{font-size:11px;letter-spacing:5px;margin:30px 0 0}
.reveal-title a{pointer-events:auto}
@keyframes photo-drift{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(max-width:650px){.journey{height:640svh}.gallery-group img{width:65vw}.gallery-group img:nth-child(3n+2){width:47vw}.gallery-group img:nth-child(3n){width:78vw}.reveal-title h2{font-size:clamp(70px,19vw,110px)}.reveal-title .eyebrow{font-size:9px;letter-spacing:2.5px}#gallery-motion{bottom:22px;right:7%}.wedding-label{font-size:9px}.reveal-title a{margin-top:25px}}
@media(prefers-reduced-motion:reduce){.journey{height:300svh}.gallery-track{animation:none;will-change:auto}}

/* Scroll through the lower opening of the ampersand into the actual next section. */
.journey{height:900svh;position:relative;z-index:1}
#inside{position:relative;margin-top:-100svh}
.ampersand{display:inline-block;position:relative;z-index:1;will-change:transform}
.next-preview{position:absolute;inset:0;overflow:hidden;visibility:hidden;pointer-events:none;background:var(--paper);clip-path:ellipse(0 0 at 50% 50%)}
.next-preview>.inside{min-height:100%;padding-top:40px}
@media(max-width:650px){.journey{height:820svh}.next-preview>.inside{padding-top:30px}}
@media(prefers-reduced-motion:reduce){.journey{height:350svh}.ampersand{will-change:auto}}

/* Pink painted titles and a warm analog film treatment. */
:root{--invite-pink:#d19aa7;--brush:'Permanent Marker','Arial Black',sans-serif}
.reveal-title{color:var(--invite-pink)}
.reveal-title h2{font-family:var(--brush);font-size:clamp(74px,10vw,155px);line-height:1.03;letter-spacing:-.035em;text-transform:uppercase;text-shadow:0 2px 20px #11110f40}
.reveal-title h2 em{font-style:normal}
.reveal-title .eyebrow,.wedding-label,.gallery-captions a{font-family:var(--brush);color:var(--invite-pink);font-weight:400}
.reveal-title .eyebrow{font-size:clamp(13px,1.5vw,20px);letter-spacing:3px;margin-bottom:12px}
.wedding-label{font-size:clamp(15px,1.7vw,23px);letter-spacing:2px;margin-top:10px}
.reveal-title>a{display:none}
.gallery-rows{gap:0}
.gallery-row{position:relative;padding:24px 0;background:#10100e}
.gallery-row::before,.gallery-row::after{content:'';position:absolute;left:0;right:0;height:10px;z-index:2;pointer-events:none;background:repeating-linear-gradient(90deg,transparent 0 18px,#b5ac8c60 18px 29px,transparent 29px 65px)}
.gallery-row::before{top:6px}.gallery-row::after{bottom:6px}
.gallery-group{gap:9px;padding-right:9px}
.gallery-group img{filter:saturate(.72) brightness(.88) sepia(.08)}
.gallery-tint{background:linear-gradient(90deg,#11110f22,#11110f35 55%,#bb6c1f12 85%,#ffb9574a),radial-gradient(ellipse at 107% 40%,#ffb45a65,transparent 40%);mix-blend-mode:normal}
.gallery::after{content:'';position:absolute;inset:0;pointer-events:none;opacity:.13;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.6' filter='url(%23n)'/%3E%3C/svg%3E")}
.gallery-captions{position:absolute;left:4%;right:4%;bottom:34px;display:flex;align-items:center;justify-content:space-between;gap:18px;z-index:4}
.gallery-captions a{font-size:clamp(11px,1.15vw,17px);letter-spacing:1px;text-shadow:0 2px 8px #000}
#gallery-motion{top:20px;bottom:auto;font-size:9px;color:var(--invite-pink);border-color:#d19aa760;background:#11110f90}
@media(max-width:650px){.reveal-title h2{font-size:clamp(58px,16vw,95px)}.reveal-title .eyebrow{font-size:11px;letter-spacing:1.5px}.wedding-label{font-size:14px}.gallery-row{padding:19px 0}.gallery-row::before,.gallery-row::after{height:8px}.gallery-captions{left:5%;right:5%;bottom:26px;gap:9px}.gallery-captions a{font-size:10px;letter-spacing:0}#gallery-motion{top:20px;bottom:auto}}

/* Prototype 1: still pasture, simple names rising with scroll. */
.journey{height:520svh;z-index:auto}
#inside{margin-top:0}
.reveal-title{color:#e9e6dc;background:none;will-change:transform,opacity}
.reveal-title h2{font-family:'DM Sans',Arial,sans-serif;font-weight:500;text-transform:none;font-size:clamp(64px,9vw,138px);line-height:1.03;letter-spacing:-.055em;text-shadow:0 2px 20px #0005}
.reveal-title .eyebrow,.wedding-label{font-family:'DM Sans',Arial,sans-serif;color:#e9e6dc;font-size:11px;letter-spacing:3px}
.reveal-title>a{display:block;color:#e9e6dc;margin-top:34px}
.wedding-label{margin-top:24px}
@media(max-width:650px){.journey{height:480svh}.reveal-title h2{font-size:clamp(58px,16vw,96px)}.reveal-title .eyebrow,.wedding-label{font-size:9px;letter-spacing:2px}}
@media(prefers-reduced-motion:reduce){.journey{height:280svh}.reveal-title{will-change:auto}}

/* Prototype 2: photographs appear independently over an unchanged pasture. */
.floating-memories{position:absolute;inset:0;opacity:0;visibility:hidden;pointer-events:none}
.floating-memories>img{position:absolute;width:clamp(160px,24vw,360px);height:28svh;object-fit:cover;border:1px solid #e9e6dc25;box-shadow:0 12px 40px #0003;opacity:0;animation:memory-appear 18s ease-in-out infinite;animation-play-state:paused}
.floating-memories.playing>img{animation-play-state:running}
.floating-memories>img:nth-child(1){left:5%;top:10%;--tilt:-4deg;animation-delay:0s}
.floating-memories>img:nth-child(2){right:7%;top:8%;--tilt:3deg;animation-delay:1s}
.floating-memories>img:nth-child(3){left:37%;top:18%;--tilt:-2deg;animation-delay:2s}
.floating-memories>img:nth-child(4){left:10%;top:45%;--tilt:3deg;animation-delay:3s}
.floating-memories>img:nth-child(5){right:5%;top:43%;--tilt:-3deg;animation-delay:4s}
.floating-memories>img:nth-child(6){left:39%;top:42%;--tilt:2deg;animation-delay:5s}
#memories-motion{position:absolute;right:4%;top:24px;background:#11110f65;color:#e9e6dc;border:1px solid #e9e6dc40;border-radius:25px;padding:12px 16px;font-size:9px;letter-spacing:1px;z-index:3}
.reveal-title{justify-content:flex-end;padding-bottom:5svh;pointer-events:none!important}
.reveal-title h2{font-size:clamp(22px,3vw,40px);letter-spacing:-1px;margin:0}
.reveal-title .eyebrow{margin-bottom:12px}.wedding-label{margin-top:14px;font-size:9px}.reveal-title>a{margin-top:20px}
@keyframes memory-appear{0%,100%{opacity:0;transform:translateY(18px) rotate(var(--tilt)) scale(.96)}8%,48%{opacity:1;transform:translateY(0) rotate(var(--tilt)) scale(1)}60%{opacity:0;transform:translateY(-10px) rotate(var(--tilt)) scale(1.01)}}
@media(max-width:650px){.floating-memories>img{width:43vw;height:23svh}.floating-memories>img:nth-child(3){left:29%;top:28%}.floating-memories>img:nth-child(6){left:32%;top:47%}.reveal-title h2{font-size:24px}.reveal-title{padding-bottom:5svh}}
@media(prefers-reduced-motion:reduce){.floating-memories>img{animation:none;opacity:1;transform:none}.floating-memories>img:nth-child(n+4){display:none}#memories-motion{display:none}}

/* Prototype 3: five photographs grow over the pasture, with six invitation words. */
.journey{height:1000svh}
.photo-chapters{position:absolute;inset:0;pointer-events:none}
.photo-chapters > .photo-chapter{position:absolute;inset:0;opacity:0;visibility:hidden;transform:scale(.16);transform-origin:50% 50%;overflow:hidden;will-change:transform,opacity}
.photo-chapters > .photo-chapter img{width:100%;height:100%;object-fit:cover;display:block;filter:brightness(.72) saturate(.82)}
.photo-chapters > .photo-chapter::after{content:'';position:absolute;inset:0;background:linear-gradient(#0001,#0002 60%,#0005)}
.reveal-title{justify-content:center;padding-bottom:0}
.reveal-title h2{font-size:clamp(72px,12vw,185px);letter-spacing:-.06em;line-height:1.1;min-height:1.1em}
.reveal-title .eyebrow{font-size:10px;letter-spacing:3px;margin-bottom:20px}
.wedding-label{font-size:10px;letter-spacing:2px;margin-top:30px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
@media(max-width:650px){.journey{height:900svh}.reveal-title h2{font-size:clamp(55px,15vw,100px)}.wedding-label{font-size:8px;letter-spacing:1px}}
@media(prefers-reduced-motion:reduce){.journey{height:500svh}.photo-chapters > .photo-chapter{will-change:opacity}}

/* Prototype 4: pasture cover art, spinning silver CD, scroll-driven release. */
.journey{height:850svh}.field-pullback{z-index:2}
.album-disc{position:absolute;z-index:1;opacity:0;pointer-events:none;will-change:transform;filter:drop-shadow(0 15px 24px #0007)}
.disc-surface{width:100%;height:100%;border-radius:50%;position:relative;background:radial-gradient(circle,transparent 0 5%,#272829 5.2% 6%,#d2d6d9 6.2% 15%,transparent 15.3%),repeating-radial-gradient(circle,transparent 0 3px,#ffffff12 4px,transparent 5px),conic-gradient(from 20deg,#747a80,#d7dfe4 14%,#9aa4ad 24%,#b7adbe 31%,#e5e7de 42%,#8d989c 51%,#d6dcde 63%,#acb4c3 74%,#d9d8c9 86%,#747a80);border:1px solid #e5e8e88a;animation:disc-turn 12s linear infinite;animation-play-state:paused;mask-image:radial-gradient(circle,transparent 0 4%,#000 4.3%)}
.spinning .disc-surface{animation-play-state:running}
.disc-label{position:absolute;left:50%;top:28%;transform:translateX(-50%);text-align:center;color:#40474c;font-size:clamp(12px,1.8vw,24px);letter-spacing:1px;font-family:'Instrument Serif',Georgia,serif}
.disc-label small{font:6px Arial,sans-serif;letter-spacing:1px;white-space:nowrap}
.album-meta{position:absolute;left:0;right:0;z-index:3;text-align:center;opacity:0;visibility:hidden;color:#e9e6dc}
.album-meta p{font-size:10px;letter-spacing:3px;margin:0 0 12px}.album-meta h2{font-family:'Instrument Serif',Georgia,serif;font-size:32px;margin:0 0 22px}
#disc-motion{border:1px solid #e9e6dc40;border-radius:30px;padding:12px 20px;background:#ffffff06;font-size:9px;letter-spacing:2px}
.album-meta>span{display:block;font-size:9px;letter-spacing:2px;margin-top:24px;color:#aaa99f}
.reveal-title{z-index:3;justify-content:center;padding:0}.reveal-title h2{font-family:'Instrument Serif',Georgia,serif;font-size:clamp(54px,7vw,110px);letter-spacing:-.03em;line-height:1}
.reveal-title h2 em{font-style:italic}.wedding-label{font-size:10px;letter-spacing:2px;margin-top:26px}
@keyframes disc-turn{to{transform:rotate(360deg)}}
@media(max-width:650px){.journey{height:800svh}.album-meta h2{font-size:27px}.reveal-title h2{font-size:clamp(48px,12vw,74px)}}
@media(prefers-reduced-motion:reduce){.journey{height:400svh}.disc-surface{animation:none}.album-disc{will-change:auto}#disc-motion{display:none}}

/* The collection selects a new cover before the disc is released. */
.journey{height:1100svh}
.album-library{position:absolute;left:0;right:0;bottom:25px;z-index:4;text-align:center;opacity:0;visibility:hidden;color:#e9e6dc}
.album-library>p{font-size:8px;letter-spacing:2px;margin:0 0 14px;color:#aba99f}
.album-library ol{display:flex;justify-content:center;gap:18px;list-style:none;padding:0;margin:0}
.album-library li{width:min(15vw,120px);opacity:.62;transition:opacity .25s}
.album-library li.selected{opacity:1}.album-library li.selected img{outline:1px solid #e9e6dc;outline-offset:4px}
.album-library img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:6px;display:block}
.album-library span{font-size:8px;display:block;margin-top:10px;letter-spacing:.4px}
.album-flight{position:absolute;z-index:5;opacity:0;visibility:hidden;object-fit:cover;border-radius:12px;pointer-events:none;box-shadow:0 18px 50px #0006}
.field-pullback .replacement-cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;pointer-events:none}
.album-browsing .album-meta h2{font-size:24px;margin-bottom:12px}.album-browsing .album-meta>span{display:none}
@media(max-width:650px){.journey{height:1000svh}.album-library{bottom:22px}.album-library ol{gap:12px}.album-library li{width:18vw}.album-library span{font-size:7px}.album-library>p{font-size:7px}.album-browsing .album-meta h2{font-size:23px}}
@media(prefers-reduced-motion:reduce){.journey{height:500svh}.album-flight{display:none}}

/* Fill each album layer with the same crop focused on the couple. */
.chosen-album img,.album-flight,.field-pullback .replacement-cover{object-fit:cover;object-position:50% 85%;background:#11110f}

/* A printed commemorative CD label. */
.disc-surface{box-shadow:inset 0 0 0 2px #ffffff40,inset 0 0 28px #ffffff25}
.disc-surface::after{content:'';position:absolute;inset:8%;border:1px solid #29303925;border-radius:50%;pointer-events:none}
.disc-date{position:absolute;inset:0;width:100%;height:100%;z-index:1;overflow:visible}
.disc-date text{font-family:'DM Sans',Arial,sans-serif;font-size:7px;font-weight:800;letter-spacing:.1px;fill:#1e252b;paint-order:stroke;stroke:#e4e8ea40;stroke-width:.15px}
.disc-label{top:31%;width:60%;font-family:'DM Sans',Arial,sans-serif;font-size:clamp(12px,1.4vw,20px);font-weight:600;color:#293039;letter-spacing:1px}
.disc-label small{font-size:clamp(4px,.45vw,6px);letter-spacing:1px}
.disc-edition{position:absolute;left:0;right:0;bottom:21%;text-align:center;color:#293039;font:600 clamp(5px,.65vw,9px) 'DM Sans',Arial,sans-serif;letter-spacing:1.3px}

.chosen-album{position:relative;transform-origin:center bottom;will-change:transform}
.album-library li.selected img{box-shadow:0 10px 24px #0005}
@media(prefers-reduced-motion:reduce){.chosen-album{will-change:auto}}

.welcome-photo{position:absolute;inset:0;z-index:0;opacity:0;pointer-events:none}
.welcome-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 55%;display:block}
.welcome-photo::after{content:'';position:absolute;inset:0;background:linear-gradient(#0003,transparent 48%,#0002)}
.reveal-title{justify-content:flex-start;padding:12svh 5% 0}
.reveal-title h2{text-shadow:0 2px 25px #0005}
@media(max-width:650px){.reveal-title{padding-top:11svh}.welcome-photo img{object-position:52% 55%}.reveal-title h2{font-size:clamp(45px,11vw,65px)}}

/* Modern acrylic player — handwritten silver edition. */
.stage{background:#090909}.ambient{background:#090909}
.case-edge{position:absolute;inset:0;z-index:3;pointer-events:none;border:1px solid #ffffff70;border-radius:5px;background:linear-gradient(130deg,#ffffff24,transparent 18%,transparent 74%,#ffffff10);box-shadow:inset 0 0 0 3px #ffffff10,inset 0 0 0 5px #0008}
.case-edge::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4%;border-right:1px solid #ffffff55;background:linear-gradient(90deg,#ffffff15,#ffffff35,#0005)}
.case-edge::after{content:'';position:absolute;left:1%;top:15%;bottom:15%;width:2%;border-top:12px solid #ffffff30;border-bottom:12px solid #ffffff30}
.disc-surface{background:radial-gradient(circle,transparent 0 5%,#363638 5.2% 6%,#bababc 6.2% 13%,transparent 13.3%),repeating-radial-gradient(circle,transparent 0 2px,#ffffff0b 3px,transparent 4px),conic-gradient(from 30deg,#c7c8c6,#f3f3ef 15%,#a6adb0 26%,#c9c1d0 31%,#eaebe2 39%,#adb6b7 53%,#e8e9e6 66%,#b8bbc5 76%,#eee8df 89%,#c7c8c6);border-color:#fff9;box-shadow:inset 0 0 0 2px #ffffff30,inset 0 0 24px #fff3}
.disc-surface::after{inset:14%;border-color:#45454a18}
.disc-date text{font-family:'Caveat',cursive;font-size:8px;font-weight:600;letter-spacing:0;fill:#313131;stroke:none}
.album-meta{left:50%;right:auto;transform:translateX(-50%);width:min(70vw,480px);text-align:left;color:#f7f7f5}
.album-meta h2,.album-browsing .album-meta h2{font-family:'DM Sans',Arial,sans-serif;font-weight:700;font-size:clamp(28px,3.8vw,48px);line-height:1.02;letter-spacing:-.055em;margin:0 0 20px;white-space:pre-line}
.player-controls{display:flex;align-items:center;gap:14px}
#disc-motion{width:44px;height:44px;flex-shrink:0;border:0;border-radius:50%;padding:0;background:#f2f2ee;color:#111;font-size:17px;letter-spacing:0;display:grid;place-items:center}
#disc-motion:focus-visible{outline:2px solid white;outline-offset:5px}
.player-caption{font-size:8px;letter-spacing:1.6px;color:#e2e2de}.player-caption span{display:block;font-size:10px;letter-spacing:.2px;color:#92928e;margin-top:5px}
.sequence-track{height:2px;background:#ffffff22;margin-top:20px;border-radius:2px;overflow:hidden}.sequence-track i{display:block;height:100%;background:#eee;width:0}
.album-library{bottom:4svh}.album-library>p{font-size:7px;letter-spacing:2px;margin-bottom:14px;color:#858581}
.album-library ol{gap:16px}.album-library li{width:min(15vw,90px)}.album-library img{border-radius:3px}.album-library span{font-size:8px;color:#aaa}
.album-library li.selected img{outline-color:#eee;outline-offset:4px}
@media(max-width:650px){.album-meta{width:74vw}.album-meta h2,.album-browsing .album-meta h2{font-size:30px;margin-bottom:16px}.sequence-track{margin-top:16px}.album-library ol{gap:12px}.album-library li{width:17vw}.album-library span{font-size:7px}.album-library{bottom:5svh}}
@media(max-height:600px){.album-meta h2,.album-browsing .album-meta h2{font-size:24px;margin-bottom:10px}.sequence-track{margin-top:10px}.album-library li{width:min(12vw,60px)}.album-library>p{margin-bottom:8px}.album-library{bottom:16px}#disc-motion{width:32px;height:32px}.album-library span{margin-top:6px}}
@media(prefers-reduced-motion:reduce){#disc-motion{display:none}}

/* Keep music available throughout every chapter. */
#sound{position:fixed;top:28px;right:4%;z-index:20;background:#111e;color:#f4f3ee;backdrop-filter:blur(12px);box-shadow:0 2px 16px #0002;min-height:44px}
header{pointer-events:none}header a,header button{pointer-events:auto}
header .edition{margin-right:160px}
@media(max-width:650px){#sound{top:20px;right:6%;font-size:9px;letter-spacing:1px;padding:12px 15px}}
@media(prefers-reduced-motion:reduce){#disc-motion{display:grid}}

#sound[hidden]{display:none}

/* One measured frame for the opening film and both field layers. */
.stage .film,.stage.reduced-motion .film{min-width:0;min-height:0;aspect-ratio:512/910;transform-origin:0 0;right:auto;bottom:auto}
.field-pullback .portal img{object-fit:cover;object-position:50% 50%}

/* Bold commemorative CD lettering. */
.disc-date text{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:700;font-size:5.7px;letter-spacing:.12px}

/* Original landing typography and placement, with the verse as supporting copy. */
.intro .opening-verse{max-width:390px;line-height:1.8;text-wrap:pretty}
@media(max-width:650px){.intro .opening-verse{max-width:300px}}

/* Horizontal closure: the photo stays still beneath two black bands. */
.journey{height:700svh}
.pasture-shutter{position:absolute;left:0;width:100%;height:calc(50% + 1px);z-index:5;background:#000;pointer-events:none;transform:scaleY(0);will-change:transform}
.shutter-top{top:0;transform-origin:center top}
.shutter-bottom{bottom:0;transform-origin:center bottom}
.welcome-photo{z-index:6}.reveal-title{z-index:7}
@media(prefers-reduced-motion:reduce){.journey{height:500svh}.pasture-shutter{will-change:auto}}

/* Quiet analog static between the title and photograph. */
.welcome-static{position:absolute;inset:0;z-index:7;opacity:0;overflow:hidden;pointer-events:none}
.welcome-static::before{content:'';position:absolute;inset:-15%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:quiet-static .7s steps(1,end) infinite;animation-play-state:paused}
.welcome-static::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(transparent 0 3px,#ffffff24 3px 4px);opacity:.3}
.welcome-static.active::before{animation-play-state:running}
.reveal-title{z-index:8}
@keyframes quiet-static{0%,100%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}60%{transform:translate(-2%,-1%)}80%{transform:translate(3%,2%)}}
@media(prefers-reduced-motion:reduce){.welcome-static{display:none}.welcome-static::before{animation:none}}

/* Persistent reading progress and the invitation's information link. */
.page-progress{position:fixed;z-index:30;top:max(28px,env(safe-area-inset-top));left:4%;padding:12px 14px;border:1px solid #ffffff25;border-radius:24px;background:#111d;color:#eeeae1;font:10px 'DM Sans',Arial,sans-serif;letter-spacing:2px;font-variant-numeric:tabular-nums;backdrop-filter:blur(10px);pointer-events:none}
.reveal-title .information-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:12px 24px;border:1px solid #ffffff80;border-radius:28px;background:#1115;font-size:12px;letter-spacing:1px;text-transform:none}
.reveal-title .information-link:hover{background:#ffffff20}
.inside{scroll-margin-top:0;padding-top:85px}
@media(max-width:650px){.page-progress{top:max(20px,env(safe-area-inset-top));left:6%;font-size:9px}.inside{padding-top:80px}}

/* The welcome chapter is the scroll boundary until its invitation is opened. */
.inside[hidden],.home-button[hidden]{display:none}
.page-progress{top:auto;bottom:max(24px,env(safe-area-inset-bottom));left:4%}
.counter{justify-content:flex-end}
.home-button{position:fixed;top:max(28px,env(safe-area-inset-top));left:4%;z-index:30;min-height:44px;padding:12px 20px;border:1px solid #ffffff35;border-radius:24px;background:#111e;color:#f4f3ee;font:11px 'DM Sans',Arial,sans-serif;letter-spacing:1px;backdrop-filter:blur(10px)}
@media(max-width:650px){.page-progress{top:auto;bottom:max(20px,env(safe-area-inset-bottom));left:6%}.home-button{top:max(20px,env(safe-area-inset-top));left:6%}}

/* Welcome and information are distinct, mutually exclusive views. */
.journey[hidden],.view-transition[hidden]{display:none}
.view-transition{position:fixed;inset:0;z-index:100;background:#090909;opacity:0;pointer-events:auto}
body.switching-view{overflow:hidden}

/* Forest & Butter: the day, our photographs, and your reply. */
.forest-info{--forest:#202811;--butter:#fff0a5;background:var(--forest);color:var(--butter);padding:95px 0 0;outline:none}
.forest-info [hidden]{display:none!important}
.info-nav{display:flex;justify-content:center;gap:36px;padding:10px 20px 30px;font-size:11px;letter-spacing:1px}
.info-nav a{padding:8px 0;border-bottom:1px solid transparent}.info-nav a:hover{border-color:currentColor}
.day-hero{height:min(660px,76svh);min-height:420px;position:relative;overflow:hidden}
.day-hero>img{width:100%;height:100%;object-fit:cover;object-position:50% 58%}
.day-hero::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#111b,transparent 75%)}
.day-title{position:absolute;z-index:1;left:7%;top:22%;max-width:60%}.day-title p{font-size:10px;letter-spacing:3px}
.forest-info h2,.forest-info h3,.forest-info h4{font-family:'DM Serif Display','Instrument Serif',Georgia,serif;font-weight:400}
.day-title h2{font-size:clamp(62px,8vw,120px);line-height:.9;letter-spacing:-.045em;margin:30px 0}
.day-title h2>span,.photographs-section h2>span,.rsvp-intro h2>span{font-family:'Pinyon Script','Instrument Serif',serif;font-weight:400;letter-spacing:-.02em}
.day-details{display:grid;grid-template-columns:1fr 1fr;gap:10%;max-width:1160px;margin:auto;padding:95px 6%}
.tiny-label{font:10px 'DM Sans',Arial,sans-serif;letter-spacing:2px;margin:0 0 28px;opacity:.75}
.wedding-date{font-size:clamp(42px,5vw,70px);line-height:1;margin:0 0 28px;letter-spacing:-.04em}
.day-times{margin:0 0 30px;font-size:15px}.day-times>div{display:flex;gap:20px;margin:10px 0}.day-times dt{font-weight:600;font-variant-numeric:tabular-nums}.day-times dd{margin:0}
.details-copy h4{font-size:25px;margin:0 0 8px}.details-copy address{font-style:normal;font-size:14px;line-height:1.7}
.travel-detail{border-top:1px solid #fff0a530;margin-top:32px;padding-top:24px}.details-copy h3:not(.wedding-date){font-size:32px;margin:0 0 12px}.details-copy p:not(.tiny-label){font-size:14px;line-height:1.7;max-width:320px}.parking-detail{margin:32px 0}
.forest-pill{display:inline-flex;align-items:center;justify-content:center;gap:24px;min-height:46px;border:1px solid var(--butter);border-radius:40px;background:transparent;color:var(--butter);padding:12px 24px;font:14px 'DM Sans',Arial,sans-serif;text-decoration:none;cursor:pointer}
.forest-pill:hover{background:#fff0a512}.forest-pill.filled{background:var(--butter);color:var(--forest)}.forest-pill:disabled{opacity:.4;cursor:not-allowed}
.details-photo{margin:0;align-self:stretch}.details-photo img{width:100%;height:100%;max-height:710px;min-height:380px;object-fit:cover;object-position:50% 50%}.details-photo figcaption{font-family:'Instrument Serif',serif;font-size:16px;letter-spacing:.4px;opacity:.8;margin-top:14px}
.photographs-section{padding:80px 6%;max-width:1240px;margin:auto;border-top:1px solid #fff0a526;text-align:center}.photographs-section h2{font-size:clamp(44px,6vw,84px);line-height:1.1;letter-spacing:-.04em;margin:0 0 50px}
.photo-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.photo-item{display:block;border:0;padding:0;background:transparent;overflow:hidden;width:100%;cursor:zoom-in}.photo-item img{display:block;width:100%;height:100%;aspect-ratio:1;object-fit:cover}.photo-wide{grid-column:1/-1}.photo-wide img{aspect-ratio:16/9}.extra-photos{margin-top:22px}#show-photos{margin-top:36px}
.rsvp-section{border-top:1px solid #fff0a526;padding:100px 6%;max-width:1240px;margin:auto;display:grid;grid-template-columns:.85fr 1.15fr;gap:8%;align-items:start}
.rsvp-intro{position:sticky;top:120px}.rsvp-intro h2{font-size:clamp(44px,5vw,76px);line-height:1;margin:0 0 24px;letter-spacing:-.04em}.rsvp-intro>p:last-child{font-size:13px;line-height:1.8;max-width:250px;opacity:.8}
.rsvp-card{padding:35px;border:1px solid #fff0a532;border-radius:8px;background:linear-gradient(150deg,#35421d88,#18200fd9);min-height:560px}
.question-count{font-size:11px;letter-spacing:2px;margin:0 0 14px}.question-track{height:2px;background:#fff0a52a;margin-bottom:36px}.question-track i{height:100%;display:block;background:var(--butter);transition:width .3s}
.rsvp-card fieldset{margin:0;padding:0;border:0;min-width:0}.rsvp-card legend{font-family:'DM Serif Display','Instrument Serif',serif;font-size:clamp(35px,3.4vw,55px);line-height:1.2;letter-spacing:-.035em;padding:0;margin-bottom:26px;width:100%}.rsvp-card legend:focus{outline:none}
.word-pill{display:inline-block;border:1px solid currentColor;border-radius:50%;padding:0 .23em .07em;font-style:italic;line-height:1.1}
.rsvp-card label:not(.choice){display:block;font-size:12px;line-height:1.6;margin-bottom:10px}.rsvp-card input:not([type=radio]),.rsvp-card textarea{display:block;width:100%;padding:15px 0;color:var(--butter);background:transparent;border:0;border-bottom:1px solid #fff0a580;border-radius:0;font:16px 'DM Sans',Arial,sans-serif;line-height:1.5;resize:vertical}.rsvp-card input::placeholder,.rsvp-card textarea::placeholder{color:#fff0a570}.rsvp-card input:focus-visible,.rsvp-card textarea:focus-visible{outline:1px solid var(--butter);outline-offset:6px}
.choice-stack{display:grid;gap:14px}.choice{position:relative;display:block;cursor:pointer}.choice input{position:absolute;width:1px;height:1px;opacity:0}.choice>span{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;min-height:52px;border:1px solid var(--butter);border-radius:40px;font-family:'DM Serif Display',Georgia,serif;font-size:21px}.choice b{font-family:Arial,sans-serif;font-size:18px;font-weight:400}.choice input:checked+span{background:var(--butter);color:var(--forest)}.choice input:focus-visible+span{outline:2px solid var(--butter);outline-offset:5px}.count-choices{display:flex;flex-wrap:wrap;gap:10px}.count-choices .choice>span{padding:12px 17px;min-width:52px;justify-content:center}#custom-count{margin-top:24px}
.question-help{font-size:12px;line-height:1.7;opacity:.75}.field-error{color:#ffd6b1;font-size:12px;line-height:1.6;min-height:1em;margin:12px 0}.rsvp-actions{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-top:25px}.text-button{border:0;background:none;color:inherit;padding:10px 0;font:12px 'DM Sans',Arial,sans-serif;cursor:pointer}.text-button:hover{text-decoration:underline}.rsvp-mode{font-size:11px;line-height:1.6;border:1px solid #fff0a54a;padding:10px 12px;border-radius:4px;margin:0 0 24px}
#rsvp-confirmation{text-align:center;outline:none}#confirmation-title{font-size:clamp(36px,4vw,55px);line-height:1.1;margin:0 0 35px}.reply-polaroid{background:#f5f0df;color:#26301a;padding:16px 16px 24px;margin:0 6px 30px;transform:rotate(-4deg);box-shadow:0 20px 45px #0004}.reply-polaroid img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;display:block}.reply-polaroid figcaption{font:24px 'Caveat',cursive;letter-spacing:0;display:block;margin:16px 0 0}.developing .reply-polaroid img{animation:develop-photo 2.8s ease-out both}#confirmation-copy{font-size:13px;line-height:1.8}.info-footer{max-width:1120px;margin:0 auto;padding:45px 6% 85px;border-color:#fff0a530}.info-footer p{font-family:'Instrument Serif',serif}.info-footer>span{font:10px 'DM Sans',sans-serif;letter-spacing:2px}
#photo-viewer{background:#111;border:1px solid #fff3;padding:55px 18px 18px;max-width:94vw;max-height:94svh;color:#fff}#photo-viewer::backdrop{background:#000d}#photo-viewer img{max-width:88vw;max-height:78svh;object-fit:contain;display:block}#close-photo{position:absolute;right:20px;top:15px;border:0;background:none;font-size:13px}
@keyframes develop-photo{from{filter:brightness(2.4) contrast(.2) saturate(.05);opacity:.3}to{filter:none;opacity:1}}
@media(max-width:750px){.forest-info{padding-top:85px}.info-nav{gap:22px;font-size:10px;padding-bottom:22px}.day-hero{height:62svh;min-height:420px}.day-hero>img{object-position:57% center}.day-title{left:7%;top:9%;max-width:90%}.day-title h2{font-size:64px}.day-hero::after{background:linear-gradient(#0007,transparent 70%)}.day-details{grid-template-columns:1fr;gap:44px;padding:60px 7%}.details-photo img{height:auto;min-height:0;max-height:none;aspect-ratio:4/3;object-fit:cover}.photographs-section{padding:60px 6%}.photo-grid{gap:12px}.extra-photos{margin-top:12px}.photographs-section h2{margin-bottom:30px}.rsvp-section{grid-template-columns:1fr;gap:30px;padding:60px 6%}.rsvp-intro{position:static}.rsvp-intro h2{font-size:54px}.rsvp-intro>p:last-child{max-width:100%}.rsvp-card{padding:26px 20px;min-height:510px}.rsvp-card legend{font-size:40px}.info-footer{padding-bottom:85px}.info-footer>span{font-size:9px}.forest-pill{font-size:12px;padding:12px 20px}}
@media(prefers-reduced-motion:reduce){.developing .reply-polaroid img{animation:none}.question-track i{transition:none}}

/* Distinct, gently connected information chapters. */
.forest-info{background:#11170e}
.forest-info .info-nav{background:#202811;margin-bottom:0;padding-bottom:28px}
.forest-info #day{background:#202811;padding-bottom:28px;scroll-margin-top:24px}
.forest-info .day-details{padding-top:100px;padding-bottom:100px}
.forest-info .flower-window{position:relative;width:100%;aspect-ratio:228/352;overflow:hidden;border-radius:3px;background:#35421d}
.forest-info .flower-window img{position:absolute;width:733.334%;height:267.33%;max-width:none;max-height:none;min-height:0;left:-146.492%;top:-148.296%;object-fit:fill}
.forest-info .details-photo{align-self:center}
.forest-info .photographs-section{background:#303922;max-width:1240px;width:calc(100% - 64px);margin:64px auto;padding:90px 6%;border:1px solid #fff0a526;border-radius:14px;box-shadow:0 24px 70px #0002;scroll-margin-top:32px}
.forest-info .photographs-section>.tiny-label{display:flex;align-items:center;justify-content:center;gap:24px;margin-bottom:38px;opacity:.85}
.forest-info .photographs-section>.tiny-label::before,.forest-info .photographs-section>.tiny-label::after{content:'';width:64px;height:1px;background:#fff0a550}
.chapter-next{display:flex;justify-content:center;align-items:center;gap:22px;width:fit-content;margin:64px auto 0;padding:16px 0;border-top:1px solid #fff0a540;font-size:11px;letter-spacing:1.5px}
.forest-info .rsvp-section{max-width:none;min-height:85svh;background:#192113;border-top:1px solid #fff0a533;border-bottom:1px solid #fff0a522;padding:110px max(6%,calc((100vw - 1100px)/2));gap:8%;scroll-margin-top:0}
.forest-info .rsvp-intro>.tiny-label{padding-top:22px;border-top:1px solid #fff0a55a;max-width:280px}
.forest-info .info-footer{padding-top:65px;padding-bottom:95px}
.forest-info a:focus-visible{outline:2px solid var(--butter);outline-offset:6px}
@media(max-width:750px){.forest-info .day-details{padding-top:60px;padding-bottom:60px}.forest-info .flower-window{max-height:440px;max-width:285px;margin:auto}.forest-info .details-photo figcaption{text-align:center}.forest-info .photographs-section{width:calc(100% - 28px);margin:32px auto;padding:60px 5%;border-radius:10px}.forest-info .photographs-section>.tiny-label{gap:12px}.forest-info .photographs-section>.tiny-label::before,.forest-info .photographs-section>.tiny-label::after{width:25px}.forest-info .rsvp-section{padding:70px 7%;gap:38px;min-height:0}.chapter-next{margin-top:44px}}

/* Photograph-led chapters, with a quiet moving strip beside the RSVP. */
.forest-info .photo-chapter{position:relative;isolation:isolate;min-height:90svh;padding:110px 8%;display:flex;align-items:center;overflow:hidden;border-bottom:1px solid #fff0a52b;scroll-margin-top:0}
.chapter-backdrop,.flower-backdrop{position:absolute;inset:0;width:100%;height:100%;z-index:-2;object-fit:cover}
.detail-chapter .chapter-backdrop{object-position:65% 55%}
.photo-chapter::after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#10170feb 0%,#10170fa6 40%,#10170f08 80%)}
.chapter-copy{max-width:600px;width:55%;position:relative}
.chapter-copy h2{font-size:clamp(55px,7vw,104px);line-height:1.02;letter-spacing:-.04em;margin:0 0 35px}
.chapter-copy h2 em{font-family:'Pinyon Script',serif;font-style:normal;font-size:1.15em}
.chapter-copy h3{font-size:clamp(24px,2.6vw,36px);margin:0 0 12px}
.chapter-copy address,.chapter-copy>p:not(.tiny-label){font-style:normal;font-size:17px;line-height:1.7}
.chapter-copy .day-times{font-size:18px;line-height:1.7}.chapter-copy .venue{border-top:1px solid #fff0a560;padding-top:26px}
.chapter-copy .chapter-next{margin:64px 0 0;font-size:12px;letter-spacing:1px}
.flower-backdrop{overflow:hidden;background:#303922}.flower-backdrop img{position:absolute;width:733.334%;height:267.33%;max-width:none;left:-146.492%;top:-148.296%;object-fit:fill}
.travel-chapter::after{background:linear-gradient(90deg,#182210ed 0%,#182210c7 35%,#18221033 75%)}
.travel-chapter .parking-detail{border-top:1px solid #fff0a550;padding-top:25px;margin-top:36px;max-width:330px}
.forest-info .carousel-chapter{position:relative;isolation:isolate;overflow:hidden;min-height:100svh;background:radial-gradient(ellipse at 85% 70%,#4a5527,#182110 70%);padding-bottom:65px}
.carousel-chapter .rsvp-card{background:#17200ddb;backdrop-filter:blur(12px)}
.memory-carousel{grid-column:1/-1;min-width:0;width:100%;margin-top:60px}
.carousel-window{overflow:hidden;width:100%;padding:12px 0;mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}
.carousel-track{display:flex;width:max-content;animation:memories-right 65s linear infinite;will-change:transform}
.carousel-set{display:flex;gap:18px;padding-right:18px}
.carousel-photo{border:0;background:none;padding:0;flex:0 0 auto;width:clamp(150px,18vw,235px);height:clamp(200px,24vw,310px);opacity:.7;overflow:hidden;border-radius:4px;cursor:zoom-in;transition:opacity .25s}
.carousel-photo img{width:100%;height:100%;display:block;object-fit:cover}
.carousel-photo:hover,.carousel-photo:focus-visible{opacity:1}
.memory-carousel.paused .carousel-track,.memory-carousel:focus-within .carousel-track{animation-play-state:paused}
.carousel-controls{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:15px 0;font-size:11px;letter-spacing:.4px;color:#fff0a5b3}
.carousel-controls button{background:transparent;border:1px solid #fff0a54a;border-radius:30px;padding:10px 16px;font-size:11px;white-space:nowrap}
@keyframes memories-right{from{transform:translateX(-50%)}to{transform:translateX(0)}}
#photo-viewer[open]{position:fixed;inset:0;margin:auto;box-shadow:0 20px 90px #0009;border-radius:6px;animation:photo-open .25s ease-out}
@keyframes photo-open{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
@media(max-width:750px){.forest-info .photo-chapter{min-height:92svh;padding:75px 7%}.chapter-copy{width:100%;max-width:420px}.chapter-copy h2{font-size:60px}.chapter-copy address,.chapter-copy>p:not(.tiny-label){font-size:15px}.chapter-copy .day-times{font-size:15px}.detail-chapter .chapter-backdrop{object-position:62% center}.detail-chapter::after{background:linear-gradient(90deg,#10170fe0,#10170f44),linear-gradient(0deg,#10170f55,transparent)}.travel-chapter::after{background:linear-gradient(90deg,#182210e8,#18221045)}.chapter-copy .chapter-next{margin-top:55px}.memory-carousel{margin-top:15px}.carousel-controls{font-size:10px;gap:10px}.carousel-set{gap:12px;padding-right:12px}.carousel-photo{width:155px;height:210px}}
@media(prefers-reduced-motion:reduce){.carousel-track{animation:none;transform:none}.carousel-window{overflow-x:auto;mask-image:none}.carousel-set[aria-hidden=true]{display:none}.carousel-photo{transition:none}#photo-viewer[open]{animation:none}}
@media(prefers-reduced-motion:reduce){#pause-photos{display:none}}

/* Keep the first information photograph above its section background. */
#inside.forest-info{padding:0}
.forest-info #day{min-height:100svh;padding:110px 8%;scroll-margin-top:0}
.photo-chapter>.chapter-backdrop,.photo-chapter>.flower-backdrop{z-index:0;display:block;opacity:1;visibility:visible}
.photo-chapter::after{z-index:1;pointer-events:none}
.photo-chapter>.chapter-copy{z-index:2}
@media(max-width:750px){.forest-info #day{padding:100px 7% 70px;min-height:100svh}}

/* Reference composition: full photograph chapters and an unboxed RSVP. */
.forest-info{--butter:#fff0a5}
.chapter-brand{position:absolute;z-index:3;left:4%;top:28px;margin:0;font:26px 'Instrument Serif',Georgia,serif;letter-spacing:-.6px}
.forest-info .photo-chapter,.forest-info #day{min-height:100svh;padding:150px 5% 90px;align-items:flex-start}
.forest-info .detail-chapter{align-items:center}
.chapter-copy{max-width:570px;width:48%}
.chapter-copy>.tiny-label{display:none}
.forest-info .chapter-copy h2{font-family:'Instrument Serif',Georgia,serif;font-size:clamp(68px,7.8vw,112px);letter-spacing:-.035em;line-height:.95;margin-bottom:28px}
.chapter-copy .day-times{font:25px/1.35 'Instrument Serif',Georgia,serif;margin-bottom:24px}
.chapter-copy .day-times>div{gap:10px;margin:4px 0}.chapter-copy .day-times dt{font-weight:400}
.forest-info .chapter-copy h3{font:32px/1.2 'Instrument Serif',Georgia,serif}
.chapter-copy address,.chapter-copy>p:not(.tiny-label){font:24px/1.25 'Instrument Serif',Georgia,serif}
.chapter-copy .venue{max-width:370px;padding-top:20px}
.chapter-copy .forest-pill{font:19px 'Instrument Serif',Georgia,serif;min-width:235px}
.detail-chapter .chapter-backdrop{object-position:65% center}
.detail-chapter::after{background:linear-gradient(90deg,#0c180fb3,transparent 80%)}
.travel-chapter .chapter-copy{max-width:440px}.travel-chapter .parking-detail{max-width:280px}
.travel-chapter::after{background:linear-gradient(90deg,#17230dc9,#17230d22 78%)}
.forest-info .carousel-chapter{display:flex;flex-direction:column;align-items:center;gap:0;padding:110px 0 60px;min-height:100svh;background:#18210e}
.rsvp-floral{position:absolute;inset:0;z-index:0;overflow:hidden;opacity:.55;pointer-events:none}
.rsvp-floral .flower-backdrop{z-index:0;filter:blur(14px);transform:scale(1.08)}
.rsvp-floral::after{content:'';position:absolute;inset:0;background:linear-gradient(#14200899,#142008c9 45%,#14200822)}
.carousel-chapter .rsvp-intro{display:none}
.carousel-chapter .rsvp-card{position:relative;z-index:1;width:min(540px,84%);padding:0;border:0;border-radius:0;background:transparent;backdrop-filter:none;min-height:0;text-align:center}
.carousel-chapter .question-count{font:16px 'Instrument Serif',serif;letter-spacing:0;margin-bottom:12px}
.carousel-chapter .question-track{width:130px;margin:0 auto 26px}
.carousel-chapter .rsvp-card legend{font-family:'Instrument Serif',Georgia,serif;font-size:clamp(58px,6.5vw,96px);line-height:.88;letter-spacing:-.035em;margin-bottom:35px;text-align:center}
.carousel-chapter .word-pill{font-family:'Pinyon Script',serif;font-style:normal;padding:0 .28em .1em;line-height:.9}
.carousel-chapter .choice-stack{gap:14px}.carousel-chapter .choice>span{justify-content:center;font:27px 'Instrument Serif',Georgia,serif;padding:10px 24px;min-height:52px}.carousel-chapter .choice b{display:none}
.carousel-chapter .rsvp-mode{font-size:10px;padding:6px 10px;margin-bottom:20px;background:#14200870}
.carousel-chapter .rsvp-actions{margin-top:15px}.carousel-chapter .field-error{margin:8px 0}
.carousel-chapter .memory-carousel{position:relative;z-index:2;width:100%;margin-top:12px}
.carousel-chapter .carousel-window{padding:70px 0 70px;mask-image:none}
.carousel-photo{position:relative;overflow:visible;width:clamp(130px,14vw,205px);height:clamp(180px,19vw,280px);transition:transform .35s ease,opacity .25s;transform-origin:center}
.carousel-photo img{border-radius:4px}.carousel-photo.selected{transform:scale(1.45);opacity:1;z-index:3;box-shadow:0 14px 35px #0005;cursor:zoom-out}
.photo-close{display:none;position:absolute;right:8px;top:8px;width:27px;height:27px;border:1px solid #fff0a5;border-radius:50%;background:#203013;color:#fff0a5;font:22px/24px Arial,sans-serif}
.carousel-photo.selected .photo-close{display:block}
.carousel-controls{justify-content:center;flex-wrap:wrap;padding:0 20px;font-family:'Instrument Serif',serif;font-size:17px;gap:10px 24px}.carousel-controls p{margin:5px 0}
.carousel-chapter .memory-carousel:focus-within .carousel-track{animation-play-state:paused}
.forest-info .info-footer{display:none}
@media(max-width:750px){.chapter-brand{top:25px;left:6%;font-size:22px}.forest-info .photo-chapter,.forest-info #day{padding:120px 6% 80px;min-height:100svh}.forest-info .detail-chapter{align-items:flex-start;padding-top:26svh}.chapter-copy{width:78%;max-width:360px}.forest-info .chapter-copy h2{font-size:clamp(58px,12.5vw,76px)}.chapter-copy .day-times{font-size:21px}.chapter-copy address,.chapter-copy>p:not(.tiny-label){font-size:20px}.forest-info .chapter-copy h3{font-size:26px}.detail-chapter .chapter-backdrop{object-position:62% center}.detail-chapter::after{background:linear-gradient(90deg,#10200b9c,#10200b11)}.chapter-copy .chapter-next{margin-top:40px}.forest-info .carousel-chapter{padding-top:110px;padding-bottom:55px}.carousel-chapter .rsvp-card legend{font-size:66px}.carousel-chapter .choice>span{font-size:24px}.carousel-photo{width:140px;height:190px}.carousel-chapter .memory-carousel{margin-top:0}}
@media(prefers-reduced-motion:reduce){.carousel-photo{transition:none}}
body:has(#inside:not([hidden])) .home-button{color:#fff0a5}
body:has(#inside:not([hidden])) #sound{color:#fff0a5}

/* Full schedule over the selected film photograph. */
.forest-info #day.wedding-schedule{padding:120px 6% 75px;align-items:center;min-height:100svh}
.wedding-schedule .chapter-backdrop{object-position:65% center}
.wedding-schedule::after{background:linear-gradient(90deg,#0d190bea 0%,#0d190bba 36%,#0d190b40 62%,#0d190b10 100%)}
.wedding-schedule .chapter-copy{width:48%;max-width:570px}
.forest-info .wedding-schedule .chapter-copy h2{font-size:clamp(62px,7vw,96px);margin-bottom:25px}
.wedding-schedule .day-times{font-size:24px;margin-bottom:22px}
.wedding-schedule .venue{padding-top:17px;margin-top:20px;max-width:430px}
.wedding-schedule .venue-label{font:10px 'DM Sans',sans-serif;letter-spacing:2px;margin:0 0 8px;opacity:.8}
.forest-info .wedding-schedule .chapter-copy h3{font-size:29px;margin-bottom:7px}
.wedding-schedule .chapter-copy address{font-size:21px;line-height:1.3}
.wedding-schedule .arrival-note{margin-top:28px;max-width:400px}
.wedding-schedule .arrival-note p{font:20px/1.4 'Instrument Serif',Georgia,serif;margin:8px 0 18px}
.wedding-schedule .chapter-next{margin-top:32px}
@media(max-width:750px){.forest-info #day.wedding-schedule{padding:115px 7% 75px}.wedding-schedule .chapter-copy{width:100%;max-width:440px}.wedding-schedule .chapter-backdrop{object-position:64% center}.wedding-schedule::after{background:linear-gradient(90deg,#0d190bdc,#0d190b80 75%,#0d190b55)}.wedding-schedule .day-times{font-size:22px}.forest-info .wedding-schedule .chapter-copy h3{font-size:27px}.wedding-schedule .chapter-copy address{font-size:20px}}

/* Keep the welcome invitation low and centered in the viewport. */
.reveal-title .information-link{position:absolute;left:50%;bottom:max(16svh,env(safe-area-inset-bottom));transform:translateX(-50%);margin:0;white-space:nowrap;padding:12px 20px;min-height:44px;gap:8px}

.reveal-title .information-link span{margin-left:0}

/* Pointer-driven strip: vertical gestures remain page scrolling. */
.memory-carousel .carousel-track{animation:none}
.carousel-window{touch-action:pan-y;cursor:grab}
.memory-carousel.dragging .carousel-window{cursor:grabbing}
.carousel-photo img{user-select:none;-webkit-user-drag:none}
@media(prefers-reduced-motion:reduce){.carousel-window{touch-action:auto}}

/* Start directly at the welcome photograph, with no opening scroll runway. */
.journey.welcome-only{height:100svh}
.welcome-only .stage{position:relative;height:100svh}
.welcome-only .welcome-photo{opacity:1}
.welcome-only .reveal-title{opacity:1;visibility:visible;transform:none}
.welcome-only .information-link{opacity:1;visibility:visible;pointer-events:auto}

/* Give the welcome verse room to breathe. */
.welcome-only .welcome-verse{max-width:520px;margin:24px 0 0;font-size:clamp(14px,1.3vw,16px);line-height:1.75;letter-spacing:0;text-transform:none;text-wrap:pretty}
@media(max-width:650px){
  .welcome-only .welcome-verse{max-width:330px;font-size:14px;line-height:1.7;margin-top:22px}
}

.welcome-only .reveal-title h2{max-width:100%;text-wrap:balance}

/* Welcome heading above the photograph; verse and invitation stay together. */
.welcome-only .reveal-title{padding-top:max(90px,10svh)}
.welcome-only .welcome-actions{position:absolute;left:50%;bottom:max(16svh,env(safe-area-inset-bottom));transform:translateX(-50%);width:90%;display:flex;flex-direction:column;align-items:center;gap:22px;pointer-events:auto}
.welcome-only .welcome-actions .welcome-verse{margin:0}
.welcome-only .welcome-actions .information-link{position:static;transform:none;margin:0}
@media(max-width:650px){.welcome-only .reveal-title{padding-top:max(84px,10svh)}.welcome-only .welcome-actions{gap:20px}}
@media(max-height:600px){.welcome-only .reveal-title{padding-top:75px}.welcome-only .reveal-title h2{font-size:clamp(30px,7svh,46px)}.welcome-only .welcome-actions{bottom:12svh;gap:14px}.welcome-only .welcome-actions .welcome-verse{font-size:12px;line-height:1.5}}

/* The heading itself is animated, preserving its final layout. */
.welcome-only .reveal-title h2{position:relative}
.welcome-only .reveal-title h2 .welcome-wedding-word{font-style:normal}
.welcome-verse-block{display:flex;flex-direction:column;align-items:center;gap:8px;max-width:100%}
.welcome-only .welcome-verse{font-style:italic}
.welcome-verse-reference{font:400 12px/1.5 'DM Sans','Noto Sans KR',sans-serif;letter-spacing:.04em;color:inherit}
.welcome-verse-block{--verse-size:14px;width:min(100%,680px);gap:6px}
.welcome-only .welcome-actions .welcome-verse{width:100%;max-width:none;font-size:var(--verse-size);line-height:1.35}
.verse-en,.verse-ko{display:none}
html[lang=en] .verse-en,html[lang=ko] .verse-ko{display:block}
.welcome-verse .verse-line{display:block;white-space:nowrap}
.welcome-verse-reference{font-size:calc(var(--verse-size) * .8);line-height:1.2}
@media(max-width:650px){.welcome-verse-block{--verse-size:12px}html[lang=ko] .welcome-verse-block{--verse-size:13px}}
#sound{display:grid;place-items:center;width:44px;height:44px;min-width:44px;padding:11px;border-radius:50%;letter-spacing:0}
#sound svg{display:block;flex-shrink:0}
