@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600;700&family=DM+Sans:wght@400;500;600&display=swap');
:root{--deep:#031812;--jade:#08291e;--gold:#e3bd70;--gold-light:#ffedb0;--ivory:#fff3d6;--mist:#cad5c2;--sans:'DM Sans',Arial,sans-serif;--serif:'Cormorant Garamond',Georgia,serif;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--deep);color:var(--ivory);font-family:var(--sans)}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit}.world{position:relative;width:100%;height:100svh;min-height:540px;overflow:hidden;background:#061b17;isolation:isolate}.world-art,.world-shade,.moon-glow,.water-glimmer{position:absolute;inset:0;pointer-events:none}.world-art{z-index:-4;background-image:url('assets/bayou-night.webp');background-position:center 53%;background-size:cover;transform:scale(1.035);transition:transform 1.5s ease,filter 1.5s ease;animation:slowDrift 28s ease-in-out infinite alternate}.world[data-scene="2"] .world-art,.world[data-scene="3"] .world-art,.world[data-scene="5"] .world-art{background-position:center 62%;transform:scale(1.12)}.world-shade{z-index:-3;background:linear-gradient(180deg,rgba(0,13,10,.64),rgba(0,13,10,.12) 34%,rgba(0,13,10,.23) 60%,rgba(0,13,10,.82)),linear-gradient(90deg,rgba(0,8,7,.43),transparent 28%,transparent 72%,rgba(0,8,7,.43));transition:background 1s}.world[data-scene="1"] .world-shade{background:radial-gradient(ellipse at 50% 48%,rgba(9,29,19,.08),rgba(1,13,10,.48) 65%),linear-gradient(180deg,rgba(0,13,10,.52),rgba(0,13,10,.4) 50%,rgba(0,13,10,.85))}.moon-glow{z-index:-2;background:radial-gradient(circle at 53% 39%,rgba(255,210,120,.18),transparent 30%);mix-blend-mode:screen;animation:breathe 6s ease-in-out infinite}.water-glimmer{z-index:-1;top:60%;background:linear-gradient(180deg,transparent,rgba(235,179,77,.1),transparent 65%);opacity:.55;animation:water 5s linear infinite}.topline{position:absolute;z-index:20;top:calc(var(--safe-top) + 12px);left:20px;right:18px;height:38px;display:flex;align-items:center;justify-content:space-between}.monogram{text-decoration:none;color:var(--gold-light);font:600 17px var(--serif);letter-spacing:.13em}.monogram span{font-size:10px;vertical-align:top;margin:0 2px;color:var(--gold)}.chapter-indicator{position:absolute;left:50%;transform:translateX(-50%);display:flex;gap:8px;align-items:center;color:rgba(255,239,202,.72);font-size:8px;letter-spacing:.19em;white-space:nowrap}.chapter-indicator i{width:5px;height:5px;border-radius:50%;background:#efc774;box-shadow:0 0 9px #ffbf4d}.sound-toggle{display:flex;align-items:center;gap:5px;border:0;background:rgba(4,18,13,.28);padding:7px 8px;color:rgba(255,239,202,.82);font-size:8px;letter-spacing:.12em;border-radius:20px}.sound-toggle svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.sound-toggle[aria-pressed="true"]{color:var(--gold-light);background:rgba(207,159,64,.14)}.scene-progress{position:absolute;top:calc(var(--safe-top) + 59px);left:22px;right:22px;display:flex;gap:4px;z-index:20}.progress-segment{height:2px;flex:1;border-radius:4px;background:rgba(255,238,193,.22);overflow:hidden}.progress-segment::after{content:"";display:block;height:100%;width:0;background:var(--gold-light);box-shadow:0 0 8px var(--gold);transition:width .5s ease}.progress-segment.done::after{width:100%}.progress-segment.current::after{width:42%}.scene{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:calc(var(--safe-top) + 90px) 28px calc(var(--safe-bottom) + 74px);opacity:0;visibility:hidden;transform:translateY(22px) scale(.985);transition:opacity .72s ease,transform .9s cubic-bezier(.2,.75,.2,1),visibility .72s;overflow:hidden}.scene.active{opacity:1;visibility:visible;transform:translateY(0) scale(1);z-index:2}.scene.leaving-up{opacity:0;transform:translateY(-24px) scale(.99)}.eyebrow{font:500 9px var(--sans);letter-spacing:.26em;color:var(--gold-light);margin:0 0 18px;text-shadow:0 1px 15px #000}.scene h1,.scene h2{font-family:var(--serif);font-weight:400;line-height:.91;letter-spacing:-.035em;margin:0;text-shadow:0 3px 25px rgba(0,0,0,.8)}.scene h1{font-size:clamp(56px,16vw,84px)}.scene h2{font-size:clamp(48px,14.5vw,73px)}.scene h1 em,.scene h2 em{font-weight:500;color:var(--gold-light)}.cover{justify-content:flex-start;padding-top:calc(var(--safe-top) + 105px)}.cover-copy{text-align:center;position:relative;z-index:3;animation:rise .9s .15s both}.cover-copy .eyebrow{font-size:8px}.cover-sub{font:400 14px/1.6 var(--serif);letter-spacing:.04em;color:rgba(255,244,218,.88);margin:22px 0 0;text-shadow:0 2px 12px #000}.iron-gate{position:absolute;inset:30% 0 8%;display:flex;perspective:700px;z-index:2;pointer-events:none;filter:drop-shadow(0 0 12px rgba(243,184,78,.32))}.gate-half{position:relative;width:50%;height:100%;background:linear-gradient(90deg,rgba(7,17,12,.91),rgba(12,25,15,.88) 66%,rgba(184,137,52,.86) 69%,rgba(13,24,16,.94) 72%);border:1px solid rgba(236,187,86,.68);border-bottom:0;box-shadow:inset 0 0 20px #000,0 0 14px rgba(237,183,82,.18);transform-origin:left center;transition:transform 2.3s cubic-bezier(.75,0,.18,1),opacity 1.8s 1s}.gate-half.left{border-radius:100% 0 0 0;transform-origin:left center}.gate-half.right{border-radius:0 100% 0 0;transform-origin:right center;transform:scaleX(-1)}.gate-half::before,.gate-half::after{content:"";position:absolute;inset:4% 8%;border:1px solid rgba(230,188,105,.55);border-radius:100% 100% 0 0}.gate-half::after{inset:8% 19%;border-radius:100% 100% 0 0}.gate-bars{position:absolute;inset:12% 7% 0;background:repeating-linear-gradient(90deg,transparent 0 8%,rgba(226,182,94,.5) 8.3% 8.9%,transparent 9.2% 16%)}.gate-top,.gate-bottom{position:absolute;z-index:2;left:0;right:0;text-align:center;color:var(--gold);text-shadow:0 0 9px #f7cd77}.gate-top{top:5%;font-size:clamp(18px,5vw,29px)}.gate-bottom{bottom:4%;font-size:16px}.gate-crest{position:absolute;z-index:3;top:39%;left:50%;transform:translate(-50%,-50%);color:#f0cd7f;font-size:clamp(32px,10vw,60px);text-shadow:0 0 12px #a7782b}.seal{position:absolute;z-index:5;top:59%;left:50%;transform:translate(-50%,-50%);width:90px;height:90px;border-radius:50%;border:1px solid rgba(255,231,165,.96);background:radial-gradient(circle at 35% 28%,#dbad51,#785221 70%,#3a2a18);box-shadow:0 0 0 6px rgba(209,166,85,.14),0 0 30px 4px rgba(252,194,90,.46),inset 0 1px 8px rgba(255,255,255,.45);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .4s,filter .4s}.seal:hover,.seal:focus-visible{transform:translate(-50%,-50%) scale(1.08);filter:brightness(1.15)}.seal-rim{position:absolute;inset:6px;border:1px solid rgba(255,233,174,.6);border-radius:50%}.seal-mark{text-align:center;font:600 23px/.75 var(--serif);color:#fff0c7;text-shadow:0 2px 6px #51340a}.seal-mark small{font-size:12px;letter-spacing:.16em}.seal-hint{position:absolute;top:109px;width:180px;text-align:center;color:var(--gold-light);font-size:8px;letter-spacing:.2em;line-height:1.5;text-shadow:0 2px 10px #000;animation:pulse 1.8s ease-in-out infinite}.world.opening .seal{animation:sealCrack .62s ease-in forwards}.world.opening .gate-half.left{transform:perspective(800px) rotateY(-110deg);opacity:0}.world.opening .gate-half.right{transform:scaleX(-1) perspective(800px) rotateY(-110deg);opacity:0}.world.opening .cover-copy{animation:fadeUp .8s forwards}.bottom-whisper{position:absolute;z-index:4;bottom:calc(var(--safe-bottom) + 25px);left:19px;right:19px;display:flex;align-items:center;justify-content:space-between;color:rgba(254,230,173,.78);font-size:8px;letter-spacing:.15em}.bottom-whisper b{font-size:7px;font-weight:500;animation:pulse 2s infinite}.scene-controls{position:absolute;z-index:20;bottom:calc(var(--safe-bottom) + 14px);left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:19px;color:rgba(255,238,198,.78);font-size:8px;letter-spacing:.16em}.scene-controls button{width:34px;height:34px;border:1px solid rgba(245,208,128,.36);border-radius:50%;background:rgba(3,15,11,.4);font-size:13px;color:var(--gold-light)}.scene-controls button:disabled{opacity:.28}.scene-controls button:active{transform:scale(.9)}.continue-button{position:absolute;bottom:calc(var(--safe-bottom) + 72px);left:50%;transform:translateX(-50%);white-space:nowrap;border:0;border-bottom:1px solid rgba(239,203,125,.64);padding:10px 4px;color:var(--gold-light);background:transparent;font-size:9px;letter-spacing:.18em;cursor:pointer;text-shadow:0 1px 9px #000}.continue-button span{display:inline-block;margin-left:11px;font-size:14px;animation:floatY 1.5s infinite}.top-copy,.lagoon-copy,.countdown-copy,.ticket-heading{text-align:center}.top-copy p:not(.eyebrow),.lagoon-copy p:not(.eyebrow){font:400 15px var(--serif);color:rgba(255,242,215,.84);text-shadow:0 2px 12px #000;margin:22px 0}.gate-hint{position:absolute;top:61%;color:var(--gold-light);font-size:28px;text-shadow:0 0 20px #ffc75d;animation:floatY 2s infinite}.lagoon-copy{align-self:flex-start;text-align:left;margin:0 auto 150px;max-width:350px}.lagoon-copy h2{font-size:clamp(41px,12vw,62px)}.lagoon-copy h2 span{color:var(--gold)}.lily{position:absolute;z-index:3;border:0;background:transparent;cursor:pointer;color:#ffdf94;text-shadow:0 0 18px #efb44d;font-size:39px;transition:transform .3s}.lily span{display:block;filter:drop-shadow(0 0 8px #e6a740)}.lily:active{transform:scale(1.45) rotate(20deg)}.lily-one{bottom:23%;left:14%}.lily-two{bottom:29%;right:15%;font-size:30px}.lily-three{bottom:18%;right:40%;font-size:23px}.ripple{position:absolute;border:1px solid rgba(250,214,137,.45);border-radius:50%;width:32px;height:32px;bottom:24%;left:15%;opacity:0;pointer-events:none}.ripple-two{left:auto;right:18%;bottom:31%}.ripple.pulse{animation:ripple 1.1s ease-out}.reveal-scene{background:radial-gradient(ellipse at 50% 48%,rgba(3,18,14,.12),rgba(2,18,13,.05) 45%,rgba(0,10,8,.15))}.reveal-frame{position:absolute;width:min(83vw,360px);height:min(68vh,570px);border:1px solid rgba(238,196,111,.5);pointer-events:none;clip-path:polygon(0 5%,7% 5%,7% 0,93% 0,93% 5%,100% 5%,100% 95%,93% 95%,93% 100%,7% 100%,7% 95%,0 95%);opacity:.74}.reveal-frame::before{content:"";position:absolute;inset:9px;border:1px solid rgba(255,230,171,.22)}.ornament{position:absolute;left:50%;transform:translateX(-50%);color:var(--gold-light);font:40px var(--serif)}.ornament.top{top:-22px}.ornament.bottom{bottom:-22px;transform:translateX(-50%) rotate(180deg)}.reveal-copy{text-align:center;z-index:1;animation:rise 1s .2s both}.reveal-copy .eyebrow{margin-bottom:22px}.roman{font:500 10px var(--sans);letter-spacing:.35em;color:var(--gold-light);margin:0 0 10px}.reveal-copy h2{font-size:clamp(68px,19vw,96px);line-height:.75;letter-spacing:-.055em}.reveal-copy h2 em{font-size:.88em}.gold-rule{display:flex;align-items:center;justify-content:center;margin:20px auto 15px;width:150px;color:var(--gold);font-size:18px}.gold-rule::before,.gold-rule::after{content:"";height:1px;flex:1;background:linear-gradient(90deg,transparent,var(--gold))}.gold-rule::after{transform:rotate(180deg)}.reveal-tag{margin:0;color:var(--gold-light);font:500 9px var(--sans);letter-spacing:.25em}.reveal-note{font:400 13px/1.65 var(--serif);margin:17px 0 0;color:rgba(255,244,216,.87)}.event-copy{width:min(100%,380px);text-align:left;align-self:center}.event-copy h2{font-size:clamp(53px,15vw,78px);margin-bottom:24px}.event-lines{display:flex;flex-direction:column;gap:15px;margin-top:20px}.event-line{display:flex;gap:14px;align-items:flex-start;padding-bottom:12px;border-bottom:1px solid rgba(239,204,132,.28)}.event-icon{flex:0 0 24px;color:var(--gold-light);font:26px var(--serif);line-height:1}.event-line div{display:flex;flex-direction:column;gap:4px}.event-line b{font:500 8px var(--sans);letter-spacing:.18em;color:rgba(255,229,169,.75)}.event-line strong{font:500 16px/1.3 var(--serif);letter-spacing:.04em;color:#fff3d9}.event-line:nth-child(3) strong{font-size:15px}.map-link{display:inline-flex;align-items:center;gap:18px;text-decoration:none;color:var(--gold-light);border:1px solid rgba(235,195,112,.65);padding:12px 17px;margin-top:20px;font:500 8px var(--sans);letter-spacing:.18em;background:rgba(3,17,12,.34)}.map-link span{font-size:13px}.countdown-copy{margin-bottom:38px}.countdown-copy h2{font-size:clamp(51px,14vw,72px)}.countdown{display:flex;align-items:center;justify-content:center;gap:clamp(9px,3.3vw,19px);width:100%;max-width:410px}.countdown div{display:flex;align-items:center;flex-direction:column;min-width:48px}.countdown strong{font:400 clamp(37px,11vw,58px)/1 var(--serif);color:var(--gold-light);text-shadow:0 0 22px rgba(234,177,73,.32)}.countdown span{margin-top:7px;font:500 7px var(--sans);letter-spacing:.17em;color:rgba(255,238,200,.8)}.countdown i{height:42px;width:1px;background:rgba(234,191,108,.45);transform:rotate(18deg)}.countdown-note{font:italic 16px var(--serif);margin:25px 0 0;color:rgba(255,242,214,.86)}.ticket-heading{margin-bottom:27px}.ticket-heading h2{font-size:clamp(47px,13vw,70px)}.ticket{position:relative;width:min(78vw,310px);min-height:330px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:29px 20px 25px;color:#2d2817;background:linear-gradient(135deg,#fff0c0,#d9b05f 45%,#f9e4a6 67%,#b68b3d);border:1px solid rgba(255,242,197,.95);box-shadow:0 0 0 5px rgba(194,148,61,.25),0 17px 45px rgba(0,0,0,.55),inset 0 0 0 5px rgba(80,54,20,.17),inset 0 0 40px rgba(255,255,255,.35);transform:rotate(-2deg);cursor:pointer;transition:transform .4s,box-shadow .4s}.ticket::before,.ticket::after{content:"";position:absolute;width:20px;height:20px;left:-10px;top:50%;transform:translateY(-50%);border-radius:50%;background:#0a211a;box-shadow:inset -2px 0 5px rgba(255,214,132,.15)}.ticket::after{left:auto;right:-10px;box-shadow:inset 2px 0 5px rgba(255,214,132,.15)}.ticket:active{transform:rotate(0) scale(1.035);box-shadow:0 0 32px rgba(255,207,102,.7)}.ticket-lace{font-size:13px;color:#7c5c21;letter-spacing:.25em}.ticket-flower{font-size:34px;line-height:1;color:#7f5c1c;text-shadow:0 1px 0 #f7de9b}.ticket-small{font:600 7px var(--sans);letter-spacing:.2em;color:#634918;margin-top:6px}.ticket-name{font:500 46px/.77 var(--serif);text-align:center;color:#2f2616;text-shadow:0 1px rgba(255,255,255,.5)}.ticket-rule{width:78%;height:1px;margin:7px;background:#8f6c29}.ticket-date{font:600 8px var(--sans);letter-spacing:.09em;color:#4b3818}.ticket-foot{font:600 7px var(--sans);letter-spacing:.17em;color:#4b3818}.ticket-serial{position:absolute;bottom:9px;right:15px;font:7px var(--sans);letter-spacing:.15em;color:#715622}.ticket-instruction{font:500 8px var(--sans);letter-spacing:.22em;color:var(--gold-light);margin:23px 0 0;animation:pulse 1.7s infinite}.ticket.revealed{animation:ticketReveal .9s cubic-bezier(.2,.8,.2,1)}.rsvp-copy{text-align:center;margin-bottom:25px;max-width:380px}.rsvp-copy h2{font-size:clamp(42px,12vw,62px);line-height:.98}.rsvp-copy p:not(.eyebrow){font:400 14px/1.45 var(--serif);color:rgba(255,242,211,.87);margin:17px auto 0;max-width:290px}.rsvp-form{width:min(100%,380px)}.name-field{height:58px;width:100%;border:1px solid rgba(245,208,128,.61);background:rgba(2,17,12,.65);display:flex;align-items:center;gap:11px;padding:0 16px;box-shadow:0 7px 25px rgba(0,0,0,.2)}.name-field span{font:24px var(--serif);color:var(--gold-light)}.name-field input{flex:1;min-width:0;background:transparent;border:0;outline:0;color:#fff5dc;font:14px var(--serif)}.name-field input::placeholder{color:rgba(255,242,216,.68)}.name-field:focus-within{border-color:#ffe39c;box-shadow:0 0 0 2px rgba(243,204,127,.16)}.rsvp-choices{display:grid;gap:12px;margin-top:17px}.choice{min-height:59px;width:100%;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-radius:32px;letter-spacing:.16em;font-size:9px;cursor:pointer;transition:transform .2s,filter .2s}.choice:active{transform:scale(.97)}.choice-yes{background:linear-gradient(110deg,#456b35,#d2a74f);border:1px solid #f8db93;color:#fff8df;box-shadow:0 6px 25px rgba(181,138,53,.28);font-weight:600}.choice-no{background:rgba(2,16,12,.66);border:1px solid rgba(255,232,189,.7);color:rgba(255,244,219,.94);font-size:8px}.choice i{font-style:normal;font-size:16px;color:var(--gold-light)}.form-feedback{min-height:16px;text-align:center;color:#ffe7ab;font-size:11px;margin:12px 0 0}.privacy-note{position:absolute;bottom:calc(var(--safe-bottom) + 73px);max-width:290px;text-align:center;color:rgba(255,235,194,.54);font:10px/1.5 var(--serif)}.ending-copy{text-align:center;z-index:1;animation:rise 1s .2s both}.ending-glow{position:absolute;width:90vw;height:90vw;border-radius:50%;background:radial-gradient(circle,rgba(255,195,78,.17),transparent 67%);animation:breathe 4s infinite}.ending-seal{width:58px;height:58px;margin:18px auto 21px;border:1px solid rgba(255,224,151,.76);border-radius:50%;display:grid;place-items:center;font-size:25px;color:#ffe4a0;box-shadow:0 0 25px rgba(230,176,75,.28)}.ending-copy h2{font-size:clamp(69px,20vw,98px);line-height:.8}.ending-message{font:400 16px/1.55 var(--serif);max-width:290px;margin:21px auto;color:#fff3d5}.ending-sign{font-size:8px;line-height:1.8;letter-spacing:.19em;color:rgba(255,224,158,.83);margin-top:22px}.ending-sign b{font:500 13px var(--serif);letter-spacing:.17em;color:#ffedbe}.share-button{display:flex;align-items:center;gap:14px;margin:26px auto 0;padding:12px 18px;background:rgba(7,25,16,.4);border:1px solid rgba(235,194,110,.55);font-size:8px;letter-spacing:.16em;color:var(--gold-light)}.share-button span{font-size:14px}.replay-button{position:absolute;bottom:calc(var(--safe-bottom) + 72px);background:transparent;border:0;color:rgba(255,232,181,.77);font-size:8px;letter-spacing:.18em;padding:12px}.edge-vine{position:absolute;z-index:8;top:49%;font:50px var(--serif);color:rgba(216,176,97,.34);text-shadow:0 0 12px rgba(16,46,25,.8);pointer-events:none}.left-vine{left:-10px;transform:rotate(-22deg)}.right-vine{right:-10px;transform:scaleX(-1) rotate(-22deg)}.fireflies{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}.firefly{position:absolute;width:3px;height:3px;border-radius:50%;background:#ffe5a0;box-shadow:0 0 6px 2px rgba(247,183,78,.82);animation:fly var(--duration,7s) ease-in-out infinite;animation-delay:var(--delay,0s);opacity:0}.world.opened .firefly{opacity:.9}.toast{position:absolute;z-index:50;top:calc(var(--safe-top) + 83px);left:50%;transform:translate(-50%,-12px);padding:10px 16px;background:rgba(3,18,13,.88);border:1px solid rgba(236,194,110,.55);color:var(--gold-light);font:11px var(--serif);letter-spacing:.04em;opacity:0;transition:.3s;pointer-events:none;white-space:nowrap}.toast.show{opacity:1;transform:translate(-50%,0)}
@keyframes slowDrift{0%{background-position:center 51%;filter:saturate(.97)}100%{background-position:center 55%;filter:saturate(1.08)}}@keyframes breathe{0%,100%{opacity:.55;transform:scale(.97)}50%{opacity:1;transform:scale(1.05)}}@keyframes water{0%{transform:translateX(-8%);opacity:.3}50%{opacity:.75}100%{transform:translateX(8%);opacity:.3}}@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeUp{to{opacity:0;transform:translateY(-18px)}}@keyframes pulse{0%,100%{opacity:.64}50%{opacity:1}}@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}@keyframes sealCrack{0%{transform:translate(-50%,-50%) scale(1);opacity:1}30%{transform:translate(-50%,-50%) scale(1.24) rotate(10deg)}100%{transform:translate(-50%,-50%) scale(.45) rotate(-28deg);opacity:0}}@keyframes ripple{0%{opacity:.9;transform:scale(.5)}100%{opacity:0;transform:scale(4)}}@keyframes fly{0%{transform:translate(0,30px);opacity:0}20%{opacity:.9}50%{transform:translate(20px,-35px);opacity:.8}80%{opacity:.7}100%{transform:translate(-17px,-75px);opacity:0}}@keyframes ticketReveal{0%{transform:rotate(-2deg) scale(.88);filter:brightness(.85)}55%{transform:rotate(2deg) scale(1.08);filter:brightness(1.25)}100%{transform:rotate(0) scale(1);filter:brightness(1)}}
@media(min-width:700px){.world{max-width:520px;margin:auto;border-left:1px solid rgba(233,192,109,.2);border-right:1px solid rgba(233,192,109,.2);box-shadow:0 0 90px #000}.scene{padding-left:56px;padding-right:56px}.topline{left:27px;right:27px}.scene-progress{left:29px;right:29px}}
@media(max-height:690px){.scene{padding-top:calc(var(--safe-top) + 78px);padding-bottom:calc(var(--safe-bottom) + 62px)}.cover{padding-top:calc(var(--safe-top) + 84px)}.cover-copy .eyebrow{margin-bottom:12px}.cover-copy h1{font-size:58px}.cover-sub{margin-top:12px}.iron-gate{inset:34% 0 8%}.seal{top:62%;width:76px;height:76px}.seal-hint{top:91px}.event-lines{gap:10px}.event-line{padding-bottom:8px}.ticket{min-height:290px}.ticket-heading{margin-bottom:16px}.ticket-name{font-size:40px}.rsvp-copy{margin-bottom:18px}.name-field{height:52px}.choice{min-height:52px}.countdown-copy{margin-bottom:27px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}

/* Mobile legibility pass: stronger type, richer contrast and less dead air. */
.chapter-indicator{font-size:10px;letter-spacing:.16em;color:#fff1c9;text-shadow:0 1px 8px #000}
.sound-toggle{font-size:9.5px;color:#fff0c5;background:rgba(2,14,10,.52)}
.eyebrow{font-size:10.5px;font-weight:600;letter-spacing:.2em;color:#ffe8a7;text-shadow:0 2px 12px #000,0 0 10px rgba(0,0,0,.8)}
.cover-copy .eyebrow{font-size:9.5px}
.cover-sub{font-size:17px;line-height:1.45;color:#fff5df;text-shadow:0 2px 14px #000}
.bottom-whisper{bottom:calc(var(--safe-bottom) + 66px);font-size:9px;color:#fff0c4;text-shadow:0 2px 8px #000}
.bottom-whisper b{font-size:8.5px;letter-spacing:.13em}
.scene-controls{bottom:calc(var(--safe-bottom) + 8px);font-size:10px;color:#fff1cb}
.scene-controls button{width:38px;height:38px;font-size:15px;background:rgba(1,12,9,.62);border-color:rgba(255,224,153,.55)}
.continue-button{font-size:10.5px;font-weight:600;letter-spacing:.15em;min-height:44px;text-shadow:0 2px 10px #000}
.top-copy p:not(.eyebrow),.lagoon-copy p:not(.eyebrow){font-size:18px;color:#fff5df;text-shadow:0 2px 14px #000}
.lagoon-copy{margin-bottom:170px}
.reveal-copy{translate:0 -15px}
.reveal-copy .eyebrow,.roman,.reveal-tag{font-size:11px;letter-spacing:.22em}
.reveal-note{font-size:16px;line-height:1.55;color:#fff6e2;text-shadow:0 2px 12px #000}
.event-copy{position:relative;isolation:isolate;translate:0 -22px;max-width:420px}
.event-copy::before{content:"";position:absolute;z-index:-1;inset:-20px -22px;background:radial-gradient(ellipse at 42% 42%,rgba(0,9,7,.84),rgba(0,12,9,.68) 57%,rgba(0,12,9,.24) 100%);filter:blur(7px);pointer-events:none}
.event-copy h2{font-size:clamp(59px,16vw,82px);margin-bottom:27px}
.event-lines{gap:17px;margin-top:22px}
.event-line{gap:17px;padding-bottom:14px;border-bottom-color:rgba(255,225,160,.43)}
.event-icon{flex-basis:29px;font-size:30px;color:#ffe8ad}
.event-line b{font-size:10px;letter-spacing:.15em;color:#ffedc5}
.event-line strong{font-size:19px;color:#fff8e9;text-shadow:0 2px 8px #000}
.event-line:nth-child(3) strong{font-size:17.5px;line-height:1.35}
.map-link{font-size:10px;padding:14px 18px;color:#fff3cc;background:rgba(1,12,9,.58)}
.countdown-copy h2{font-size:clamp(57px,15vw,78px)}
.countdown span{font-size:9px;color:#fff1cc}
.countdown-note{font-size:18px;color:#fff7e5;text-shadow:0 2px 12px #000}
.ticket-small,.ticket-foot{font-size:9px}
.ticket-date{font-size:10px}
.ticket-instruction{font-size:9.5px;color:#fff0c0}
.rsvp-copy h2{font-size:clamp(48px,13vw,67px)}
.rsvp-copy p:not(.eyebrow){font-size:17px;line-height:1.5;color:#fff5df;text-shadow:0 2px 12px #000}
.name-field{background:rgba(0,12,9,.78);border-color:rgba(255,224,153,.77)}
.name-field input{font-size:16px}
.name-field input::placeholder{color:#f1e4c9}
.choice{min-height:64px;font-size:11px;letter-spacing:.12em}
.choice-no{font-size:10px}
.privacy-note{font-size:12px;color:#fff0cc;text-shadow:0 2px 9px #000}
.ending-message{font-size:18px;color:#fff8e7;text-shadow:0 2px 12px #000}
.share-button{font-size:9.5px;min-height:46px;color:#fff1c7}
.replay-button{font-size:9.5px;color:#fff0c8}
@media(max-height:690px){.bottom-whisper{bottom:calc(var(--safe-bottom) + 56px)}.scene-controls{bottom:calc(var(--safe-bottom) + 5px)}.event-copy{translate:0 -10px}.event-lines{gap:12px}.event-line{padding-bottom:9px}.choice{min-height:54px}.reveal-copy{translate:0 -7px}.countdown-note{margin-top:18px}}

/* Final consistency and gate hinge correction. */
.gate-half{backface-visibility:hidden;will-change:transform}
.gate-half.right{transform:none;background:linear-gradient(270deg,rgba(7,17,12,.91),rgba(12,25,15,.88) 66%,rgba(184,137,52,.86) 69%,rgba(13,24,16,.94) 72%)}
.world.opening .gate-half.left{transform:perspective(900px) rotateY(-112deg) translateX(-20%);opacity:0}
.world.opening .gate-half.right{transform:perspective(900px) rotateY(112deg) translateX(20%);opacity:0}
.seal-hint{font-size:10px;font-weight:600;letter-spacing:.17em;color:#fff0c5}
.gate-scene::before{content:"";position:absolute;inset:31% 5% 19%;background:radial-gradient(ellipse at center,rgba(255,200,101,.15),rgba(6,26,18,.12) 42%,transparent 74%);pointer-events:none}
.gate-scene .top-copy{position:relative;z-index:1;translate:0 -17px}
.gate-scene .top-copy p:not(.eyebrow){font-size:19px;color:#fff6e2}
.gate-hint{font-size:40px;color:#ffe9b0}
.lily:focus-visible,.seal:focus-visible,.ticket:focus-visible,.continue-button:focus-visible,.choice:focus-visible,.scene-controls button:focus-visible{outline:2px solid #fff0bf;outline-offset:4px}
.form-feedback{font-size:12px;color:#fff1c9;text-shadow:0 2px 8px #000}
.toast{font-size:13px;color:#fff2cf}
.ticket-small,.ticket-foot,.ticket-date{font-weight:700}

/* One shared, soft ink-vignette behind every scene's reading area. */
.scene::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse 108% 62% at 50% 49%,rgba(0,9,7,.76) 0%,rgba(0,10,8,.61) 48%,rgba(0,10,8,.2) 82%,transparent 100%),linear-gradient(180deg,rgba(0,8,6,.16),transparent 19%,transparent 79%,rgba(0,8,6,.3))}
.scene > .cover-copy,.scene > .top-copy,.scene > .lagoon-copy,.scene > .reveal-copy,.scene > .event-copy,.scene > .countdown-copy,.scene > .ticket-heading,.scene > .ticket,.scene > .ticket-instruction,.scene > .rsvp-copy,.scene > .rsvp-form,.scene > .ending-copy{position:relative;z-index:1}
.scene h1,.scene h2,.scene p,.scene .eyebrow,.scene .bottom-whisper{ text-shadow:0 3px 16px rgba(0,0,0,.96),0 1px 3px rgba(0,0,0,.9)}
.scene .eyebrow{color:#fff0c5}
.scene .continue-button{z-index:5;color:#fff0c5;text-shadow:0 2px 12px #000}
.scene .ticket{color:#2d2817;text-shadow:none}
.scene .ticket-name,.scene .ticket-small,.scene .ticket-foot,.scene .ticket-date,.scene .ticket-serial,.scene .ticket-lace,.scene .ticket-flower,.scene .ticket-rule{ text-shadow:none}
.scene .iron-gate{z-index:2}
.scene .seal{z-index:5}
.scene .bottom-whisper{z-index:5}
.scene .gate-hint,.scene .lily,.scene .ripple,.scene .reveal-frame,.scene .ending-glow{z-index:1}
.scene > .cover-copy{z-index:3}
.scene > .countdown{position:relative;z-index:1}
.scene > .countdown-note{position:relative;z-index:1}
.countdown strong{color:#fff0bc;text-shadow:0 0 24px rgba(255,194,77,.78),0 2px 10px #000;font-weight:600}
.countdown span{color:#fff4da;text-shadow:0 2px 8px #000}
.scene > .privacy-note,.scene > .replay-button{z-index:5}
.ticket{min-height:354px;justify-content:space-evenly;gap:4px;padding:22px 20px 28px}
.ticket-motto{font:700 10px var(--sans);letter-spacing:.2em;color:#664a18;text-align:center}
.ticket-entry{font:700 8px var(--sans);letter-spacing:.14em;color:#73551f;text-align:center;margin-top:2px}
@media(max-height:690px){.ticket{min-height:312px}}
.reveal-frame .ornament.bottom{bottom:46px}
.ticket-scene{padding-bottom:calc(var(--safe-bottom) + 122px)}
.ticket-heading{margin-bottom:15px}
.ticket-heading h2{font-size:clamp(44px,12vw,63px)}
.ticket{min-height:326px;border-radius:3px;background:radial-gradient(ellipse at 50% 35%,rgba(255,249,213,.75),transparent 40%),repeating-linear-gradient(135deg,rgba(107,79,31,.035) 0 1px,transparent 1px 8px),linear-gradient(138deg,#f5e0a6 0%,#d8b15e 28%,#f4dda0 56%,#bd8e38 76%,#f2d998 100%);border:1px solid #fff1c4;box-shadow:0 0 0 3px #4e6039,0 0 0 6px rgba(221,184,101,.96),0 19px 44px rgba(0,0,0,.62),inset 0 0 0 8px rgba(88,64,23,.14),inset 0 0 58px rgba(255,255,232,.35)}
.ticket-frame{position:absolute;z-index:0;inset:9px;border:1px solid rgba(106,77,28,.58);box-shadow:inset 0 0 0 3px rgba(255,246,210,.48);pointer-events:none}
.ticket-watermark{position:absolute;z-index:0;right:13px;top:32%;font:700 142px/.8 var(--serif);letter-spacing:-.1em;color:rgba(66,77,43,.1);pointer-events:none}
.ticket-corner{position:absolute;z-index:1;color:#52613a;font:25px/1 var(--serif);opacity:.84;pointer-events:none}
.corner-nw{top:15px;left:17px}.corner-ne{top:15px;right:17px;transform:scaleX(-1)}.corner-sw{bottom:16px;left:17px;transform:scaleY(-1)}.corner-se{bottom:16px;right:17px;transform:scale(-1)}
.ticket > :not(.ticket-frame):not(.ticket-watermark):not(.ticket-corner){position:relative;z-index:1}
.ticket::before,.ticket::after{z-index:2}
.ticket-instruction{margin-top:12px;color:#fff2cb}
.ticket-scene .continue-button{bottom:calc(var(--safe-bottom) + 67px)}
@media(max-height:690px){.ticket-scene{padding-bottom:calc(var(--safe-bottom) + 105px)}.ticket{min-height:294px}.ticket-heading{margin-bottom:10px}.ticket-instruction{margin-top:8px}}
.ticket-serial{position:relative;bottom:auto;right:auto;align-self:center;margin:5px auto 0;z-index:1;font-size:8px;line-height:1.3}
.ticket-entry{margin-top:5px;line-height:1.35}
.ticket-instruction{margin-top:18px;line-height:1.4}
.ticket-watermark{display:none}

/* Gift-guide scene: a single illuminated keepsake panel, not stacked cards. */
.gifts-scene .gift-copy{position:relative;z-index:1;width:min(100%,390px);text-align:center;margin-bottom:18px}
.gifts-scene .gift-copy h2{font-size:clamp(49px,14vw,70px);line-height:.92}
.gift-lead{max-width:330px;margin:18px auto 0;font:400 17px/1.45 var(--serif);color:#fff5df;text-shadow:0 2px 12px #000}
.gift-guide{position:relative;z-index:1;width:min(100%,390px);padding:18px 20px;background:linear-gradient(90deg,rgba(1,12,9,.08),rgba(1,12,9,.64) 12%,rgba(1,12,9,.64) 88%,rgba(1,12,9,.08));border-top:1px solid rgba(255,225,154,.65);border-bottom:1px solid rgba(255,225,154,.65);box-shadow:0 12px 32px rgba(0,0,0,.17)}
.gift-item{display:flex;align-items:center;gap:18px;min-height:62px;color:#fff0c4}
.gift-item svg{flex:0 0 44px;width:44px;height:44px;fill:none;stroke:#f0cf83;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 8px rgba(230,183,90,.33))}
.gift-item div{display:flex;flex-direction:column;gap:3px;text-align:left}
.gift-item span{font:600 9px var(--sans);letter-spacing:.2em;color:#ffe9b2}
.gift-item strong{font:500 21px/1.1 var(--serif);color:#fff6e2}
.gift-item small{font:400 13px var(--serif);color:rgba(255,241,209,.88)}
.gift-rule{display:flex;align-items:center;gap:9px;width:70%;margin:9px auto;color:var(--gold-light);font-size:14px}
.gift-rule::before,.gift-rule::after{content:"";height:1px;flex:1;background:linear-gradient(90deg,transparent,rgba(243,207,131,.7))}
.gift-rule::after{transform:scaleX(-1)}
.gift-closing{position:relative;z-index:1;margin:19px 0 0;color:#fff0c5;font:600 9px var(--sans);letter-spacing:.16em;text-align:center;text-shadow:0 2px 10px #000}
@media(max-height:690px){.gifts-scene .gift-copy{margin-bottom:12px}.gifts-scene .gift-copy h2{font-size:49px}.gift-lead{font-size:15px;margin-top:12px}.gift-guide{padding:12px 16px}.gift-item{min-height:54px}.gift-closing{margin-top:13px}}

.share-button[hidden]{display:none}
