@font-face{font-family:OpenSans;src:url('assets/open-sans.ttf') format('truetype');font-display:swap;font-weight:100 900}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:32px}body{margin:0;color:#242832;background:#101629;font-family:OpenSans,Arial,sans-serif;font-size:15px}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #ba8a3d;outline-offset:5px}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Georgia,'Times New Roman',serif;font-weight:400}em{font-weight:400}button{border:0}fieldset{padding:0;margin:0;border:0}legend{padding:0} .skip{position:fixed;top:-80px;background:#fbf4e7;z-index:100;padding:15px}.skip:focus{top:10px}.topbar{position:absolute;z-index:5;top:0;width:100%;padding:29px 4.2%;display:flex;align-items:center;justify-content:space-between;color:#f4ead9;font-size:10px;letter-spacing:2px}.brand{text-decoration:none;display:flex;gap:12px;align-items:center;font-size:13px;letter-spacing:3px}.star{font-size:25px;color:#c79f65}.navlink{text-decoration:none;border-bottom:1px solid #ead8b850;padding-bottom:8px;letter-spacing:.6px;font-size:12px}.navlink span{margin-left:16px}.hero{height:100svh;min-height:720px;max-height:1200px;position:relative;overflow:hidden;color:#f8efdd;background:#101629}.city{position:absolute;inset:0;background:url('assets/bethlehem-v2.webp') center 42%/cover no-repeat;transition:transform 1.65s cubic-bezier(.4,0,.2,1),filter 1.65s;transform-origin:50% 40%}.hero-shade{position:absolute;inset:0;background:linear-gradient(#0c12243b 0%,transparent 40%,#0b122049 65%,#0c1224d9 100%)}.hero-copy{position:absolute;top:55%;width:100%;text-align:center;transition:opacity .5s,transform .5s}.eyebrow{font-size:10px;letter-spacing:3px;line-height:1.5;font-weight:600}.hero .eyebrow{font-size:21px;letter-spacing:8px;font-weight:400}.hero h1{font-size:clamp(56px,8.3vw,128px);letter-spacing:-5px;line-height:1.17;white-space:nowrap}.hero-sub{font-size:13px;letter-spacing:.5px;margin:15px 16px 0;color:#e4ddce}.open-invite{display:inline-flex;align-items:center;gap:40px;background:#f4ead6;color:#21273a;padding:19px 25px;margin-top:30px;font-family:Georgia,serif;font-size:20px;transition:background .25s,transform .25s}.open-invite:hover{background:#fff8e9;transform:translateY(-3px)}.hero-bottom{position:absolute;bottom:29px;left:4.2%;right:4.2%;display:flex;justify-content:space-between;font-size:10px;letter-spacing:2px}.hero-bottom a{font-size:11px;letter-spacing:.4px;text-decoration:none}.hero-bottom a span{margin-left:15px}.story{position:relative;overflow:hidden;padding:300px 24px 70px;background:#11182b;isolation:isolate;scroll-margin-top:0}.paper{background-color:#f6eedf;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='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23907847' opacity='.07' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}.invitation{max-width:680px;margin:auto;text-align:center;padding:55px 72px 54px;position:relative;box-shadow:0 25px 80px #0003}.invitation .eyebrow{color:#82704f;margin-bottom:22px}.invitation h2{font-size:57px;line-height:1.06;letter-spacing:-2px}.invitation h2 em{font-size:65px}.ornament{display:flex;align-items:center;justify-content:center;gap:20px;color:#a77833;font-size:28px;margin:28px 0}.ornament span{width:100px;height:1px;background:#ac956a70}.invitation-text{font-size:14px;line-height:1.85;margin:0 0 15px}.date{margin-top:30px;padding-top:28px;border-top:1px solid #aa956d66}.date>span{font-size:9px;letter-spacing:3px;display:block;margin-bottom:12px}.date strong{font-family:Georgia,serif;font-size:34px;font-weight:400;display:block}.date p{margin-top:12px;font-size:15px}.date b{font-weight:600}.venue{display:flex;justify-content:center;gap:12px;align-items:center;font-size:11px;line-height:1.9;margin-top:28px}.venue strong{font-weight:600}.venue p>span{color:#6a665e}.venue-mark{font-size:30px}.down-arrow{display:block;text-align:center;text-decoration:none;color:#eadac2;font-size:35px;margin:38px auto 0;width:60px;line-height:1.5}.registration-section{position:relative;padding:70px 40px 100px}.registration-section:before{content:'';position:absolute;top:-15px;height:17px;left:0;right:0;background:#f6eedf;clip-path:polygon(0 70%,2% 50%,4% 75%,7% 25%,10% 65%,13% 40%,16% 85%,20% 30%,24% 70%,28% 20%,31% 65%,35% 40%,39% 80%,43% 30%,47% 70%,51% 40%,55% 75%,59% 20%,63% 65%,67% 30%,71% 70%,75% 40%,79% 85%,83% 25%,87% 65%,91% 35%,95% 70%,98% 40%,100% 70%,100% 100%,0 100%)}.section-inner{max-width:1100px;margin:auto}.practical{display:flex;justify-content:center;gap:90px;padding:0 0 55px;border-bottom:1px solid #a68e6540}.practical>div{display:flex;gap:16px}.info-icon{font-size:28px;color:#887148}.practical strong,.practical span:not(.info-icon){display:block}.practical strong{font-size:13px;margin-bottom:6px;font-weight:600}.practical p>span{font-size:11px;line-height:1.8;color:#706b63}.registration-layout{display:grid;grid-template-columns:1fr 1.15fr;gap:90px;padding-top:80px}.registration-intro .eyebrow{color:#89734e;margin:7px 0 23px}.registration-intro h2{font-size:57px;line-height:1.08;letter-spacing:-2px}.registration-intro>p:not(.eyebrow):not(.demo-note){font-size:13px;color:#777064;line-height:1.8;margin:25px 0;max-width:300px}.little-star{color:#a28450;font-size:70px;margin:35px 0 40px}.demo-note{border-left:2px solid #ae9568;padding-left:14px;font-size:10px;line-height:1.8;color:#82786a;max-width:290px}.demo-note>span{display:block;text-transform:uppercase;letter-spacing:1.3px;font-size:9px;margin-bottom:6px;color:#77664a}form{min-width:0}.form-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.form-heading h3{font-size:38px;letter-spacing:-1px}.form-heading>span{font-size:10px;color:#93866f;letter-spacing:1px}legend,label{font-size:12px}legend{margin-bottom:12px}.session-options{display:grid;grid-template-columns:1fr 1fr;gap:14px}.session{position:relative;display:flex;align-items:center;padding:17px;gap:12px;border:1px solid #b9ad96;border-radius:3px;cursor:pointer;transition:background .2s,border .2s}.session:has(input:checked){border-color:#30374a;background:#e7dfcf}.session:has(input:disabled){opacity:.45;cursor:not-allowed}.session input{position:absolute;opacity:0;width:1px;height:1px}.session:focus-within{outline:2px solid #ae8241;outline-offset:3px}.radio-dot{width:16px;height:16px;border:1px solid #8c8b80;border-radius:50%;flex:none;display:grid;place-items:center}.session input:checked+.radio-dot:after{content:'';display:block;background:#293146;width:8px;height:8px;border-radius:50%}.session strong{display:block;font-family:Georgia,serif;font-size:28px;font-weight:400;line-height:1.1}.session small{font-size:9px;display:block;margin-top:6px;color:#756d5f}.guest{border:0;margin-top:26px}.guest-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.guest-top h4{font-size:11px;letter-spacing:1px;text-transform:uppercase;font-weight:500;margin:0}.remove-guest{font-size:11px;color:#827466;background:none;text-decoration:underline;padding:5px}.guest-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}.guest-fields label{display:block;margin-bottom:7px;font-size:11px}input:not([type=radio]){width:100%;background:#fff9ee55;border:1px solid #b9ad96;border-radius:3px;padding:12px 13px;font-size:13px;color:#292e3a;transition:border .2s}input::placeholder{color:#9a9182}input[aria-invalid=true]{border-color:#ab453a}.field-error{font-size:10px;color:#a13f34;line-height:1.6;margin-top:5px}.field-error:empty{display:none}.add-guest{border:1px solid #988b74;border-radius:3px;width:100%;background:transparent;padding:11px;margin-top:16px;font-size:12px}.add-guest span{margin-right:5px}.add-guest:hover{background:#e8dfce}.phone-block{margin-top:25px}.phone-block>label{display:block;margin-bottom:9px}.phone-block small{display:block;color:#8b806f;font-size:10px;margin-top:8px}.children-block{display:flex;justify-content:space-between;align-items:center;margin-top:28px}.children-block label{display:block}.children-block small{display:block;font-size:10px;color:#847965;margin-top:4px}.stepper{display:flex;border:1px solid #b9ad96;border-radius:3px;height:39px;width:126px;flex:none}.stepper button{background:transparent;width:36px;flex:none;color:#282e3d;font-size:20px}.stepper input{appearance:textfield;-moz-appearance:textfield;border:0!important;padding:0!important;background:transparent!important;text-align:center;min-width:0}.stepper input::-webkit-inner-spin-button{appearance:none}.stepper button:disabled{opacity:.3}.child-hint{font-size:10px;line-height:1.7;color:#8b806f;margin-top:12px}.booking-summary{display:flex;justify-content:space-between;font-size:10px;color:#756b59;border-top:1px solid #ab99754d;margin-top:25px;padding-top:19px}.submit{background:#192239;color:#fbf2df;width:100%;display:flex;justify-content:space-between;align-items:center;padding:17px 21px;font-family:Georgia,serif;font-size:23px;margin-top:17px;border-radius:3px;transition:background .2s}.submit:hover{background:#303a51}.submit:disabled{opacity:.6}.form-footnote{font-size:9px;line-height:1.7;text-align:center;color:#8c8270;margin-top:14px}.form-error{font-size:12px;line-height:1.6;color:#a13f34;margin-top:14px}.form-error:empty{display:none}.memories{border-top:1px solid #a68e6540;margin-top:85px;padding-top:55px}.memories-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:30px}.memories .eyebrow{font-size:9px;color:#89734e;margin-bottom:14px}.memories h2{font-size:48px;letter-spacing:-1px}.memories-heading>p{font-size:11px;color:#887d6b;line-height:1.8}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.photo-placeholder{aspect-ratio:1.4;position:relative;padding:22px;color:#ac9a7c;border:1px solid #baab8e77;background:linear-gradient(135deg,#ded3bf66,#eee3d055)}.photo-placeholder>span{font-size:13px;letter-spacing:2px}.photo-placeholder p{position:absolute;bottom:22px;font-family:Georgia,serif;font-size:23px;color:#88795f}.photo-placeholder small{display:block;font:9px OpenSans,Arial,sans-serif;margin-top:8px;color:#a1957f}.gallery-note{font-size:10px;color:#9a8c74;margin-top:16px}footer{max-width:1180px;margin:auto;padding:35px 40px;display:flex;justify-content:space-between;align-items:center;color:#e9ddc7}footer .brand{font-size:10px}footer>p{font-family:Georgia,serif;font-style:italic;color:#a8a397;font-size:14px}footer>span{font-size:9px;letter-spacing:1px;color:#a8a397}dialog{padding:0;max-width:calc(100% - 32px);width:480px;border:0;background:#f6eedf;color:#252a35;max-height:90svh;overflow:auto;box-shadow:0 30px 120px #0006}dialog::backdrop{background:#080e22c9;backdrop-filter:blur(8px)}.close-dialog{position:absolute;top:12px;right:15px;background:none;font-size:28px;color:#756b59;z-index:1}.ticket{padding:45px 35px 35px;text-align:center}.ticket-star{font-size:45px;color:#af8244}.ticket .eyebrow{font-size:9px;margin:17px 0}.ticket h2{font-size:43px;line-height:1.1}.ticket #confirmation-detail{font-size:13px;line-height:1.8;margin-top:25px;white-space:pre-line}.ticket-details{border-top:1px dashed #a8997c;border-bottom:1px dashed #a8997c;padding:20px 0;margin:22px 0;display:flex;flex-direction:column;gap:8px;font-size:11px}.ticket-warning{font-size:11px;line-height:1.8;color:#94754b}.ticket .submit{justify-content:center;font-size:19px;margin-top:23px}
@media(min-width:1600px){.city{background-position:center 45%}.hero-copy{top:54%}}
@media(max-width:800px){.topbar{padding:23px 24px}.edition{display:none}.topbar .navlink{font-size:10px}.brand{font-size:11px}.hero{min-height:690px;max-height:1000px}.city{background-size:auto 100%;background-position:center top}.hero h1{font-size:clamp(45px,10.5vw,85px);letter-spacing:-2px}.hero .eyebrow{font-size:15px;letter-spacing:6px}.hero-copy{top:55%}.hero-sub{font-size:11px;max-width:240px;line-height:1.7;margin:13px auto 0}.open-invite{font-size:18px;padding:16px 22px;gap:25px;margin-top:25px}.hero-bottom{left:24px;right:24px;font-size:9px;bottom:26px}.hero-bottom a{font-size:10px}.story{padding-top:280px;padding-left:20px;padding-right:20px;padding-bottom:45px}.invitation{max-width:580px;padding:40px 30px}.invitation h2{font-size:45px}.invitation h2 em{font-size:51px}.invitation-text{font-size:13px;line-height:1.85}.invitation .eyebrow{font-size:8px;letter-spacing:2px}.date strong{font-size:29px}.venue{font-size:10px;gap:8px}.registration-section{padding:42px 24px 55px}.practical{flex-direction:column;gap:23px;padding-bottom:35px}.practical>div{gap:14px}.practical strong{font-size:12px}.practical p>span{font-size:11px}.registration-layout{grid-template-columns:1fr;gap:35px;padding-top:43px}.registration-intro h2{font-size:43px;letter-spacing:-1.5px}.registration-intro h2 br{display:none}.registration-intro h2 em:before{content:' '}.registration-intro .eyebrow{font-size:9px;margin-bottom:15px}.registration-intro>p:not(.eyebrow):not(.demo-note){margin-top:18px;max-width:380px;font-size:12px}.little-star{display:none}.demo-note{max-width:none;margin-top:20px}.form-heading{margin-bottom:22px}.form-heading h3{font-size:34px}.session{padding:15px 12px;gap:10px}.session strong{font-size:27px}.session small{font-size:9px}.guest-fields{gap:11px}input:not([type=radio]){font-size:16px}.memories{margin-top:50px;padding-top:35px}.memories-heading{display:block}.memories-heading>p{margin-top:14px}.memories h2{font-size:40px}.gallery{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:10px}.photo-placeholder{min-width:78%;scroll-snap-align:start;aspect-ratio:1.45}.photo-placeholder p{font-size:25px}footer{padding:30px 24px;flex-direction:column;gap:17px}footer>p{font-size:13px}.ticket{padding:35px 25px}.ticket h2{font-size:38px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}

/* One illustration, from the closed cover through to the revealed invitation. */
html.intro-closed,html.intro-closed body{height:100%;overflow:hidden;overscroll-behavior:none}
html.intro-closed .story,html.intro-closed .registration-section,html.intro-closed footer{display:none}
.experience{position:relative;isolation:isolate;background:#101629}
.scene-visual{position:absolute;inset:0 0 auto;height:100svh;overflow:hidden;z-index:0;pointer-events:none}
.city{background-size:cover;background-position:center 42%;transform-origin:50% var(--origin-y,40%);transition:transform 1.65s cubic-bezier(.4,0,.2,1),filter 1.65s}
.hero{height:100svh;min-height:0;max-height:none;background:transparent;z-index:1}
.hero[hidden]{display:none}
.hero-instruction{font-size:9px;letter-spacing:1.7px;color:#d0c3ad}
.experience[data-state="opening"] .city,.experience[data-state="open"] .city{transform:translateY(var(--zoom-y,-18svh)) scale(var(--zoom-scale,2));filter:brightness(1.12)}
.experience[data-state="opening"] .hero-copy,.experience[data-state="opening"] .hero-bottom{opacity:0;transform:translateY(18px);pointer-events:none}
html.intro-opening .topbar,.experience[data-state="open"]~.topbar{opacity:0;pointer-events:none;visibility:hidden}
.topbar{transition:opacity .4s,visibility .4s}
body.invitation-open>.topbar{display:none}
.story{background:transparent;padding-top:clamp(260px,48svh,470px);z-index:1;overflow:visible;isolation:auto}
.experience[data-state="open"] .city{transition:none}
.experience[data-state="open"] .invitation{animation:invitation-rise .8s cubic-bezier(.2,.7,.25,1) both}
.experience[data-state="open"] .down-arrow{animation:invitation-rise .8s .15s both}
@keyframes invitation-rise{from{opacity:0;transform:translateY(65px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:800px){.story{padding-top:clamp(250px,48svh,470px)}.hero-instruction{display:none}.hero-bottom{gap:20px}.hero h1{font-size:clamp(38px,10.5vw,85px)}}
@media(max-height:650px){.hero-copy{top:48%}.hero .eyebrow{font-size:12px}.hero h1{font-size:clamp(35px,8vw,65px);line-height:1.1}.hero-sub{margin-top:8px;font-size:10px}.open-invite{padding:12px 20px;margin-top:15px;font-size:17px}.topbar{padding-top:17px}.hero-bottom{bottom:17px}.story{padding-top:48svh}}
@media(prefers-reduced-motion:reduce){.experience[data-state="open"] .invitation,.experience[data-state="open"] .down-arrow{animation:none!important}.city{transition:none!important}}

/* Keep a route back to the cover without resetting the booking form. */
.home-button{position:fixed;z-index:20;top:22px;left:24px;display:inline-flex;align-items:center;justify-content:center;padding:12px 18px;border:1px solid #cbbb9859;border-radius:3px;background:#141d30ed;color:#f5ead7;font-size:12px;letter-spacing:.2px;box-shadow:0 3px 18px #0002}
.home-button:hover{background:#303a51}
.home-button[hidden]{display:none}
.experience[data-state="closing"] .hero-copy,.experience[data-state="closing"] .hero-bottom{opacity:0;pointer-events:none;transform:translateY(18px)}
.open-invite,.submit{justify-content:center;text-align:center;gap:0}
@media(max-width:800px){.home-button{top:14px;left:16px;padding:11px 14px;font-size:11px}}

/* Render the real alpha contour directly; no rectangular backing or CSS masks. */
.invitation{isolation:isolate;background:none;box-shadow:none;filter:none}
.invitation::before,.invitation::after{content:none;display:none}
.paper-surface{
 position:absolute;inset:-27px -24px;width:calc(100% + 48px);height:calc(100% + 54px);
 z-index:-1;pointer-events:none;overflow:visible;
 filter:drop-shadow(0 2px 2px #04081530) drop-shadow(0 18px 28px #04081550);
}
@media(max-width:800px){
 .paper-surface{inset:-22px -18px;width:calc(100% + 36px);height:calc(100% + 44px);filter:drop-shadow(0 2px 2px #04081530) drop-shadow(0 13px 23px #04081545)}
}

/* Show a little more of the paper grain while keeping its mean cream tone. */
.paper-surface{filter:drop-shadow(0 2px 1px #03091b54) drop-shadow(0 12px 17px #03091b4d) drop-shadow(0 30px 38px #03091b59)}
.scroll-hint{
 position:fixed;bottom:max(20px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:15;
 display:flex;align-items:center;justify-content:center;gap:18px;min-height:46px;padding:10px 21px;
 background:#111b30f2;color:#f6ecd9;border:1px solid #c4ac786b;border-radius:30px;
 box-shadow:0 5px 22px #03091b40;text-decoration:none;white-space:nowrap;font-size:12px;letter-spacing:.5px;
}
.scroll-hint[hidden]{display:none}
.scroll-hint:hover{background:#26324a}
.scroll-hint-arrow{font-size:21px;line-height:1;animation:scroll-nudge 1.9s ease-in-out 4}
.down-arrow{display:flex;flex-direction:column;align-items:center;gap:8px;width:max-content}
.down-arrow>span:first-child{font-family:OpenSans,Arial,sans-serif;font-size:11px;letter-spacing:.8px}
@keyframes scroll-nudge{0%,100%{transform:translateY(-2px)}50%{transform:translateY(4px)}}
@media(max-width:800px){
 .paper-surface{filter:drop-shadow(0 2px 1px #03091b4d) drop-shadow(0 10px 14px #03091b4d) drop-shadow(0 23px 28px #03091b52)}
 .scroll-hint{font-size:11px;min-height:44px;padding:9px 18px;bottom:max(16px,env(safe-area-inset-bottom))}
}
@media(prefers-reduced-motion:reduce){.scroll-hint-arrow{animation:none}}

/* Match the invitation's natural tear at the start of the registration paper. */
.registration-section::before{content:none;display:none}

/* Each line is centred on the sheet; the address icon has a balanced opposite gutter. */
.invitation .date{display:flex;flex-direction:column;align-items:center;text-align:center}
.invitation .date>span,.invitation .date>strong,.invitation .date>p{width:100%;margin-left:0;margin-right:0;text-align:center}
.invitation .venue{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:100%;text-align:center}
.invitation .venue-name{width:100%;margin:0;text-align:center}
.invitation .venue-hall{display:block;width:100%;font-weight:600;text-align:center}
.venue-address{display:inline-grid;grid-template-columns:22px minmax(0,1fr) 22px;align-items:center;column-gap:8px;max-width:100%;margin-top:5px;color:#6a665e}
.venue-address>span:nth-child(2){text-align:center;overflow-wrap:anywhere}
.venue-address .venue-mark{display:flex;align-items:center;justify-content:center;width:22px;height:22px;line-height:1;color:#6a665e}
.venue-mark svg{display:block;flex:none}
/* Suppress pointer/touch blue highlights while retaining visible keyboard focus. */
.session,.session *{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}
.session input[type="radio"]{appearance:none;-webkit-appearance:none;accent-color:#30374a}
.session:active{background:#e7dfcf}
.session:focus-within{outline:none}
.session:has(input:focus-visible){outline:2px solid #ae8241;outline-offset:3px}
.session::selection,.session *::selection{background:transparent;color:inherit}
@media(max-width:800px){.venue-address{column-gap:5px}}

/* One continuous paper surface: edge and body share the same fill and grain. */
.registration-section.paper{isolation:isolate;background:none}
.registration-paper-surface{position:absolute;top:-38px;left:0;width:100%;height:calc(100% + 38px);z-index:-1;pointer-events:none;overflow:hidden}

/* Centre the instruction and arrow on one shared vertical axis. */
.scroll-hint{flex-direction:column;gap:4px;padding:10px 22px;text-align:center;line-height:1.25}
.scroll-hint>span{display:block;text-align:center}
.scroll-hint-arrow{width:24px;height:24px;line-height:24px;margin-inline:auto}
.down-arrow{text-align:center;justify-content:center}
.down-arrow>span{display:block;text-align:center;line-height:1.25}
@media(max-width:800px){.scroll-hint{padding:9px 19px;gap:3px}}

/* Camera choreography with a normally scrolling background. */
.experience{z-index:0}
.scene-visual{position:absolute;inset:0 0 auto;width:100%;height:100svh}
.city{transition:transform 1.7s cubic-bezier(.45,0,.25,1),filter 1.7s ease-in-out}
.hero-copy{transition:opacity .85s ease,transform .85s ease}
.experience[data-state="open"] .city{transform:translateY(var(--rest-y,-18svh)) scale(var(--zoom-scale,2));transition:transform .85s cubic-bezier(.45,0,.25,1),filter .85s ease-in-out}
.experience[data-state="open"] .invitation{animation:invitation-rise .85s cubic-bezier(.45,0,.25,1) both}
.experience[data-state="open"] .down-arrow{animation:invitation-rise .85s .1s cubic-bezier(.45,0,.25,1) both}
.registration-section,footer{position:relative;z-index:1}
footer{background:#101629}
.scroll-hint{flex-direction:row;align-items:center;justify-content:center;gap:15px;padding:10px 20px;min-height:44px}
.scroll-hint-arrow{width:20px;height:22px;line-height:22px;margin:0;font-size:21px}
@media(max-width:800px){.scroll-hint{flex-direction:row;gap:12px;padding:9px 17px}}
@media(prefers-reduced-motion:reduce){.city,.experience[data-state="open"] .city{transition:none!important}.experience[data-state="open"] .invitation,.experience[data-state="open"] .down-arrow{animation:none!important}}

/* Compact hint and a short reveal with no document-scroll jump. */
.scroll-hint{gap:6px;padding:8px 13px;min-height:38px;letter-spacing:.2px}
.scroll-hint-arrow{width:14px;height:18px;font-size:17px;line-height:18px;margin: -5px 0 0}
.experience[data-state="open"] .city{transition:transform .4s cubic-bezier(.45,0,.25,1),filter .4s ease-in-out}
.experience[data-state="open"] .invitation{animation:invitation-settle .4s cubic-bezier(.45,0,.25,1) both}
.experience[data-state="open"] .down-arrow{animation:invitation-settle .4s .04s cubic-bezier(.45,0,.25,1) both}
@keyframes invitation-settle{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:800px){.scroll-hint{gap:6px;padding:8px 12px;min-height:36px}}
@media(prefers-reduced-motion:reduce){.experience[data-state="open"] .invitation,.experience[data-state="open"] .down-arrow{animation:none!important}}

/* Rasterized paper grain: SVG alpha is confined to the 58px tear. */
.registration-section.paper{background:#f4ead6 url('assets/paper-tile-v2.webp') 0 -38px/1280px 1792px repeat}
.registration-paper-surface{height:58px;contain:strict}
.experience[data-state="opening"] .city,.experience[data-state="closing"] .city{will-change:transform}
