@font-face{font-family:Abril;src:url('assets/abrilfatface.ttf') format('truetype');font-display:swap}
:root{--base:#254536;--accent:#c5b48c;--paper:#fffaf0;--soft:#e3e9de;--on-base:#fff8e9;--ink:var(--base);--serif:'Cormorant Garamond',Georgia,serif}
[hidden]{display:none!important}button,a{touch-action:manipulation}button{min-height:48px}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.eyebrow,.countdown span,.film-caption>span:first-child{font-size:14px;letter-spacing:.15em}.intro-in,.spark,.confetti,.hero h1,.hero-line,.hero-date,.song-intro,.scroll-cue i,.sound-bars i{animation:none!important}.confetti,.hero-halo,.age-seal{display:none!important}.button:hover{transform:none}.reveal{opacity:1!important;transform:none!important}
/* The established photographic header: full image, centered typography, one uniform tint. */
.hero{height:100svh;min-height:700px;max-height:1100px;background:var(--base);color:#fffaf1}.hero-photo{animation:none!important;transform:none!important;position:absolute!important;inset:0!important;height:100%!important;width:100%!important;max-width:none!important;aspect-ratio:auto!important;border-radius:0;margin:0!important}.hero-tint{background:var(--header-tint)!important;pointer-events:none}.hero-copy{left:24px;right:24px;bottom:145px;text-align:center;max-width:800px;margin:auto}.hero-copy .eyebrow{font-size:14px;letter-spacing:.22em;margin:0 0 8px}.hero h1{font-family:var(--serif)!important;font-size:clamp(5.5rem,11vw,9rem);font-style:normal;letter-spacing:-.035em;line-height:1.08;overflow-wrap:anywhere;text-shadow:0 2px 20px #0004}.hero-line{font-size:16px;max-width:420px;margin:16px auto 0;line-height:1.65}.hero-date{font-size:14px;margin-top:20px}.hero-top>span:first-child{font-size:14px}.hero-top .spark{display:none}.scroll-cue span{font-size:12px}.hero-copy .song-intro{font-size:14px;min-height:44px}.scroll-cue{bottom:64px}.hero .section-curve{height:62px}.hero-photo .photo-scene,.closing-photo .photo-scene{animation:photo-breath 18s ease-in-out infinite alternate!important}
/* Measured image cells, clipped before any zoom. No source-sheet grid is visible. */
.photo-viewport{position:relative;aspect-ratio:var(--photo-ratio,1);width:100%;overflow:hidden;background:#000;isolation:isolate;transition:opacity .4s ease}.photo-scene,.photo-clip{position:absolute;inset:0;overflow:hidden}.photo-scene{animation:photo-breath 17s ease-in-out infinite alternate;transform-origin:50% 40%}.photo-clip img{position:absolute;max-width:none;object-fit:fill;display:block}.closing-photo{animation:none!important;transform:none!important;position:absolute!important;inset:0;height:100%!important;max-width:none!important;aspect-ratio:auto!important}.closing-tint{background:var(--header-tint)!important}.closing{background:var(--base)}@keyframes photo-breath{from{transform:scale(1)}to{transform:scale(1.04)}}
.date-section{background:var(--paper)}.date-number{font-family:var(--serif)!important;color:var(--base);font-size:7rem}.date-number span{font-size:14px}.date-orbit{border-color:var(--accent);opacity:.45}.memories{background:var(--paper)}.film-shell{width:min(620px,100%)}.film{height:auto!important;transform:none!important;border-radius:3px!important;border:7px solid #fff!important;background:#000;box-shadow:0 15px 50px #00000012}.film .photo-viewport{margin:auto;max-width:100%!important}.film-shade,.film-note{display:none!important}.film-caption{font-size:14px}.film-caption .spark{color:var(--accent)}#photo-number{position:static!important;display:block;text-align:center;padding:14px 0;font-size:14px!important;color:var(--ink)!important;background:var(--paper)}.album-controls{display:flex;align-items:center;justify-content:center;gap:15px;margin:20px 0 0}.album-controls button{background:transparent;color:var(--ink);border:1px solid var(--accent);border-radius:50%;width:48px;min-height:48px;font-size:23px;padding:0}.album-controls #album-pause{border-radius:999px;width:auto;padding:9px 21px;font-size:14px}.story{background:var(--soft)}.story-text{color:var(--ink);max-width:560px;font-size:17px}.story-inner{max-width:750px;margin:auto}.story-orbit{display:none}.bridge{background:var(--base);color:var(--on-base)}.bridge p em{color:var(--accent)}.celebration{background:var(--paper)}.venue{border-color:var(--accent);border-radius:4px;background:transparent}.venue-number{display:none}.venue-note{font-size:14px}.dress{background:var(--soft)}.gifts{background:var(--paper)}.rsvp{background:var(--base);color:var(--on-base);border-radius:0}.rsvp>div>p:not(.eyebrow){color:var(--on-base)}.rsvp .button.primary{color:var(--base);background:var(--on-base);border-color:var(--on-base)}.button.primary{background:var(--ink);border-color:var(--ink)}.button.outline{border-color:var(--accent)}.palette i:nth-child(1){background:var(--base)}.palette i:nth-child(2){background:var(--accent)}.palette i:nth-child(3){background:var(--paper)}.palette i:nth-child(4){background:var(--soft)}footer{background:var(--paper);color:var(--ink)}.brand-signature{color:var(--ink)}.brand-mark{border-color:var(--accent)}.closing-copy .signature{font-family:var(--serif)!important;font-size:3rem}.music-float{color:var(--base);background:var(--paper);border-color:var(--accent)}.entry-open{overflow:hidden}.entry-open .music-float{visibility:hidden}#music-error{position:fixed;z-index:11000;bottom:18px;left:20px;right:20px;margin:auto;max-width:420px;padding:12px 18px;background:var(--paper);color:var(--ink);border:1px solid var(--accent);font-size:14px}
/* Opening is a typeset invitation, then a quiet photo window; the controls stay separate. */
#welcome{position:fixed;inset:0;z-index:10000;background:var(--entry-surround,var(--base));color:var(--entry-ink,var(--on-base));display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:max(24px,env(safe-area-inset-top)) 24px max(24px,env(safe-area-inset-bottom));overflow:auto;isolation:isolate}
.entry-backdrop{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;pointer-events:none}.entry-veil{position:absolute;inset:0;background:var(--entry-veil,transparent);z-index:-1;pointer-events:none}.entry-brand{position:absolute;top:22px;left:0;right:0;text-align:center;letter-spacing:.15em;font:14px var(--sans);opacity:.65}.welcome-stage{position:relative;width:min(420px,100%);height:min(510px,66svh);min-height:360px;flex-shrink:0;display:grid;place-items:center}.welcome-frame{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:100%;height:100%;padding:40px 32px;color:var(--entry-ink);background:var(--entry-card,transparent);border:1px solid var(--entry-border,transparent);box-shadow:var(--entry-shadow,none)}.entry-pretitle{font:14px/1.6 var(--sans);letter-spacing:.2em;margin:0 0 22px}.welcome-frame h2{font:400 clamp(4.2rem,9vw,6rem)/1.03 var(--serif);letter-spacing:-.02em;overflow-wrap:anywhere;width:100%;margin:12px 0 20px}.entry-age-line{font:italic 1.7rem/1.4 var(--serif);margin:0 0 26px}.entry-rule{width:50px;height:1px;background:currentColor;opacity:.55;margin:0 0 24px}.entry-date{font:14px/1.7 var(--sans);letter-spacing:.13em;margin:0}.entry-word{font:italic 1.35rem/1.4 var(--serif);margin:18px 0 0;opacity:.85}.entry-controls{display:flex;flex-direction:column;align-items:center;gap:9px;width:min(340px,100%);margin:0;position:relative;z-index:5;flex-shrink:0}.entry-controls button{width:100%;min-height:50px;line-height:1.4;font-size:16px;cursor:pointer;border-radius:999px;padding:13px 24px}.entry-controls .enter-primary{background:var(--entry-button-bg,var(--entry-ink));color:var(--entry-button-ink,var(--base));border:1px solid var(--entry-button-bg,var(--entry-ink))}.entry-controls .enter-secondary{color:var(--entry-ink);background:transparent;border:0;text-decoration:underline;text-underline-offset:5px;min-height:44px}.entry-photo-window{position:absolute;inset:0;display:grid;place-items:center;visibility:hidden;opacity:0;pointer-events:none}.entry-photo-window.visible{visibility:visible;opacity:1}.entry-photo-window .photo-viewport{width:min(100%,340px);box-shadow:0 20px 60px #0002;border:5px solid var(--entry-paper,#fff9ef)}.entry-photo-window .photo-viewport:empty{opacity:0}.welcome-frame.photo-mode{visibility:hidden}.entry-photo-window,.welcome-frame{transition:opacity .4s ease}
.entry--negro{--entry-surround:#1b1c1e;--entry-ink:#282724;--entry-card:#f5efe2;--entry-border:#a89b7a;--entry-button-bg:#f5efe2;--entry-button-ink:#222;--entry-shadow:0 24px 80px #0005}.entry--negro .welcome-frame{width:90%;border-top:7px solid #b8a77f;border-bottom:7px solid #b8a77f}.entry--negro .welcome-frame h2{font-style:italic}.entry--negro .entry-controls .enter-secondary{color:#f5efe2}.entry--negro .entry-brand{color:#f5efe2}.entry--negro .entry-pretitle{letter-spacing:.3em}.entry--negro .entry-word{display:none}
.entry--azul{--entry-surround:#122d4c;--entry-ink:#ecdfbf;--entry-border:#c3a976;--entry-button-ink:#122d4c}.entry--azul .welcome-frame{border-radius:48% 48% 4px 4px;padding-top:65px;border-width:1px;outline:1px solid #c3a97655;outline-offset:9px;width:90%}.entry--azul .welcome-frame h2{font-size:clamp(4rem,9vw,5.5rem)}.entry--azul .entry-age-line{font-style:normal;font-size:2.5rem}.entry--azul .entry-pretitle{font-size:14px;margin-bottom:15px}.entry--azul .entry-word{display:none}
.entry--verde{--entry-surround:#204735;--entry-card:#234d3a;--entry-ink:#f3e9ce;--entry-border:#d0bf8b;--entry-button-ink:#204735}.entry--verde .welcome-frame{outline:1px solid #d0bf8b77;outline-offset:-13px;padding:44px 32px}.entry--verde .welcome-frame h2{font-style:italic}.entry--verde .entry-pretitle{margin-bottom:35px}.entry--verde .entry-word{font-size:1.6rem}.entry--verde .entry-rule{width:80px}
.entry--vino{--entry-surround:#65263d;--entry-ink:#f7e7df;--entry-border:#cfa28d;--entry-button-ink:#65263d}.entry--vino .welcome-frame{border-radius:180px 180px 160px 160px;width:93%;padding:55px 32px;border-left:0;border-right:0}.entry--vino .welcome-frame h2{font-style:italic;font-family:Georgia,serif;font-size:clamp(3.6rem,8vw,4.9rem)}.entry--vino .entry-age-line{font-style:normal;font-size:2rem}.entry--vino .entry-rule{width:100px}.entry--vino .entry-pretitle{font-size:14px;letter-spacing:.17em}
.entry--marfil{--entry-surround:#eae5d9;--entry-card:#fffdf5;--entry-ink:#494132;--entry-border:#c3b699;--entry-button-bg:#494132;--entry-button-ink:#fffdf5;--entry-shadow:0 20px 60px #4b413215}.entry--marfil .welcome-frame{width:88%;border:0;outline:1px solid #c3b699;outline-offset:-16px}.entry--marfil .welcome-frame h2{font-style:italic}.entry--marfil .entry-pretitle{font-size:14px}.entry--marfil .entry-rule{width:30px}
.entry--champan{--entry-ink:#554327;--entry-card:#fffaf1e8;--entry-border:#b89e64;--entry-button-bg:#59462e;--entry-button-ink:#fff8e6;--entry-veil:#fff8e52b;--entry-shadow:0 22px 80px #66502118}.entry--champan .welcome-frame{width:89%;outline:1px solid #b89e6466;outline-offset:8px}.entry--champan .welcome-frame h2{font-style:italic}.entry--champan .entry-pretitle{letter-spacing:.3em}.entry--champan .entry-word{font-size:1.45rem}
.entry--shopping{--entry-ink:#703f52;--entry-card:#fff6edea;--entry-border:transparent;--entry-button-bg:#733e53;--entry-button-ink:#fff5e8;--entry-veil:#6e254516;--entry-shadow:0 25px 70px #5c243624}.entry--shopping .welcome-frame{border-top:1px solid #9b7181;border-bottom:1px solid #9b7181;width:87%;height:93%}.entry--shopping .welcome-frame h2{font-style:italic;font-size:clamp(5rem,11vw,7.2rem)}.entry--shopping .entry-pretitle{font-size:14px;letter-spacing:.3em}.entry--shopping .entry-rule{width:85px}.entry--shopping .entry-word{font-size:1.4rem}
.entry--rock{--entry-ink:#f0e7dc;--entry-border:#bd9266;--entry-button-bg:#d8bc96;--entry-button-ink:#241f19;--entry-veil:#0d0c0c42}.entry--rock .welcome-frame{border:0;border-top:1px solid #bd9266;border-bottom:1px solid #bd9266;width:91%;height:87%}.entry--rock .welcome-frame h2{font-style:italic;font-size:clamp(4.8rem,11vw,7rem);margin:15px 0}.entry--rock .entry-pretitle{color:#d8bc96}.entry--rock .entry-rule{width:70px}.entry--rock .entry-word{font-size:1.6rem}
.entry--pool{--entry-ink:#245461;--entry-card:#fffbefed;--entry-border:#fffdf2;--entry-button-bg:#fffbef;--entry-button-ink:#245461;--entry-veil:#177d8711;--entry-shadow:0 20px 70px #06364230}.entry--pool .welcome-frame{border-radius:46% 46% 8px 8px;width:86%;height:94%;padding-top:60px}.entry--pool .welcome-frame h2{font-style:italic;font-size:clamp(4.5rem,10vw,6rem)}.entry--pool .entry-word{font-size:1.5rem}.entry--pool .entry-controls .enter-secondary{color:#fffdf1;text-shadow:0 1px 5px #204f56}.entry--pool .entry-brand{color:#fffdf1;text-shadow:0 1px 5px #204f56}
.entry--viajes{--entry-ink:#564838;--entry-card:#fff8ecec;--entry-border:#9f8560;--entry-button-bg:#564838;--entry-button-ink:#fff8ec;--entry-veil:#eaddbc15;--entry-shadow:0 20px 55px #5c49281c}.entry--viajes .welcome-frame{border-left:3px double #9f8560;border-right:3px double #9f8560;border-top:0;border-bottom:0;width:90%;height:89%}.entry--viajes .welcome-frame h2{font-size:clamp(4.5rem,10vw,6rem);font-style:italic}.entry--viajes .entry-pretitle{letter-spacing:.19em}.entry--viajes .entry-rule{width:110px}.entry--viajes .entry-word{font-size:1.5rem}
@media(min-width:1000px){.hero-photo{max-width:none!important}.hero-copy{bottom:150px}.welcome-stage{height:490px;width:410px}.hero-tint{background:var(--header-tint)!important}.closing-tint{background:var(--header-tint)!important}}
@media(max-width:600px){.hero{height:100svh;min-height:690px}.hero-copy{bottom:130px;left:22px;right:22px}.hero h1{font-size:clamp(4.2rem,17vw,6rem);line-height:1.1}.hero-copy .eyebrow{font-size:14px;letter-spacing:.16em}.hero-line{font-size:16px;max-width:290px;margin:14px auto 0}.hero-date{font-size:14px;letter-spacing:.16em}.hero-top{top:26px;left:24px;right:24px}.hero-top>span:first-child{font-size:12px;letter-spacing:.12em}.scroll-cue{bottom:57px}.section{padding-left:24px;padding-right:24px}.film{height:auto!important}.memories h2{font-size:2.9rem}.story h2{font-size:3.2rem}.rsvp h2{font-size:3.5rem}.closing-copy .signature{font-size:2.7rem}.closing{height:640px}.eyebrow{font-size:14px}.date-number{font-size:6rem}.date-number span{font-size:14px}.venue .eyebrow{font-size:14px}.venue-note{font-size:14px}.welcome-stage{height:min(450px,60svh);min-height:330px;max-width:340px}.welcome-frame{padding:28px 22px}.welcome-frame h2{font-size:4.3rem}.entry-pretitle{font-size:14px;letter-spacing:.16em;margin-bottom:18px}.entry-age-line{font-size:1.55rem;margin-bottom:20px}.entry-word{font-size:1.3rem}.entry-date{font-size:14px;letter-spacing:.09em}.entry-brand{top:17px;font-size:12px}.entry-controls{width:min(300px,100%);gap:6px}#welcome{padding-top:44px;padding-bottom:18px;gap:18px}.entry-photo-window .photo-viewport{max-width:100%!important;width:min(100%,300px)}.entry--shopping .welcome-frame h2{font-size:5.4rem}.entry--rock .welcome-frame h2{font-size:5rem}.entry--viajes .welcome-frame h2{font-size:4.6rem}.entry--azul .welcome-frame{padding-top:48px}.entry--azul .welcome-frame h2{font-size:3.9rem}.entry--vino .welcome-frame h2{font-size:3.7rem}.entry--pool .welcome-frame{padding-top:48px}.entry--pool .welcome-frame h2{font-size:4.5rem}.entry--marfil .welcome-frame{width:93%}.entry--champan .welcome-frame{width:93%}.entry--verde .entry-pretitle{margin-bottom:22px}.entry--verde .welcome-frame h2{font-size:4.2rem}.entry-photo-window .photo-viewport{border-width:4px}.film-caption>span:first-child{font-size:14px}}
@media(max-height:680px){#welcome{justify-content:flex-start;padding-top:40px;gap:12px}.welcome-stage{height:360px;min-height:310px;max-height:60svh}.welcome-frame h2{font-size:3.6rem!important}.entry-pretitle{margin-bottom:13px}.entry-age-line{margin-bottom:16px;font-size:1.4rem}.entry-word{font-size:1.15rem!important}.entry-rule{margin-bottom:17px}.entry--pool .welcome-frame,.entry--azul .welcome-frame{padding-top:30px}.entry--azul .entry-age-line{font-size:1.8rem}.entry-controls button{min-height:46px;padding:11px 20px}.entry-controls .enter-secondary{min-height:40px}.entry--verde .entry-pretitle{margin-bottom:14px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.photo-scene,.hero-photo .photo-scene,.closing-photo .photo-scene{animation:none!important}.welcome-frame,.entry-photo-window,.photo-viewport{transition:none}}
