:root{--black:#0b0d0a;--black-soft:#12150f;--olive:#242b1d;--ivory:#f2ead9;--paper:#e9dfca;--gold:#c6a86d;--muted:#b9b19f;--serif:"Cormorant Garamond",Georgia,serif;--sans:"DM Sans",Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:75px}body{margin:0;background:var(--black);color:var(--ivory);font-family:var(--sans);font-weight:300}a{color:inherit;text-decoration:none}
.grain{position:fixed;inset:0;pointer-events:none;opacity:.05;z-index:20;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='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.45'/%3E%3C/svg%3E")}
.site-header{height:72px;display:grid;grid-template-columns:1fr 2fr 1fr;align-items:center;padding:0 clamp(20px,5vw,76px);background:#0b0d0af2;border-bottom:1px solid #c6a86d3a;position:relative;z-index:10}.monogram,.footer-monogram{font:25px var(--serif);letter-spacing:.08em}.monogram span,.footer-monogram span{font-size:12px;color:var(--gold);padding:0 5px}.site-header nav{display:flex;justify-content:center;gap:clamp(18px,4vw,54px)}.site-header nav a,.header-date{font-size:9px;letter-spacing:.19em;color:#d8c9a9}.site-header nav a:hover{color:var(--gold)}.header-date{text-align:right}
.hero{position:relative;min-height:min(790px,calc(100vh - 72px));display:grid;place-items:center;overflow:hidden;background:#111}.hero-image,.hero-video,.hero-shade{position:absolute;inset:0;width:100%;height:100%}.hero-image{background:url("assets/gallery/01.jpg") center 42%/cover;transform:scale(1.015);animation:heroReveal 1.2s ease both}.hero-video{object-fit:cover;object-position:center 42%;transform:scale(1.015);z-index:0;opacity:0;transition:opacity 1s ease}.hero.video-ready .hero-video{opacity:1}.hero-shade{z-index:1;background:linear-gradient(90deg,#050605c7 0%,#05060585 45%,#05060547 100%),linear-gradient(0deg,#050605bf,transparent 32%,#05060526)}.hero-content{position:relative;z-index:2;text-align:center;padding:80px 20px 95px;width:min(760px,100%);animation:rise .9s .1s both}.eyebrow,.section-kicker{font-size:9px;letter-spacing:.28em;color:#d8bd83}.eyebrow{display:flex;align-items:center;justify-content:center;gap:13px}.eyebrow span{width:24px;height:1px;background:var(--gold)}
h1{font:300 clamp(72px,12vw,148px)/.69 var(--serif);letter-spacing:-.035em;margin:46px 0 35px;text-shadow:0 4px 25px #0008}h1 span{display:block}h1 em{display:block;font-size:.35em;line-height:1.7;color:var(--gold);font-weight:300;letter-spacing:.06em}.ornament,.footer-rule{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--gold);margin:0 auto}.ornament i,.footer-rule i{width:52px;height:1px;background:#c6a86d9c}.hero-caption{font:italic clamp(20px,3vw,27px) var(--serif);color:#f3e9d5;margin:24px 0 27px}.hero-date{font-size:10px;letter-spacing:.23em;color:#e3d2ae}.hero-date b{color:var(--gold);padding:0 8px}.scroll-link{display:inline-flex;align-items:center;gap:14px;margin-top:45px;font-size:8px;letter-spacing:.2em;color:#e7d7b5}.scroll-link i{display:grid;place-items:center;border:1px solid #c6a86d99;border-radius:50%;width:30px;height:30px;font-size:15px;font-style:normal;transition:.2s}.scroll-link:hover i{background:#c6a86d25;transform:translateY(3px)}.hero-index{position:absolute;z-index:2;bottom:24px;left:clamp(20px,5vw,76px);right:clamp(20px,5vw,76px);display:flex;justify-content:space-between;font-size:8px;letter-spacing:.18em;color:#d6c7a7}.hero-index span{color:var(--gold)}
.intro-band{position:relative;display:grid;grid-template-columns:.7fr 1.05fr 1fr;gap:clamp(24px,5vw,70px);align-items:center;padding:clamp(65px,9vw,125px) clamp(25px,8vw,120px);background:var(--black-soft);overflow:hidden;border-bottom:1px solid #c6a86d28}.intro-label{writing-mode:vertical-rl;transform:rotate(180deg);font-size:8px;letter-spacing:.25em;color:var(--gold)}.intro-copy{position:relative;z-index:1}.intro-copy h2,.film-heading h2,.countdown-section h2{font:300 clamp(45px,6vw,76px)/.88 var(--serif);letter-spacing:-.025em;margin:20px 0 25px}.intro-copy h2 em,.film-heading h2 em,.countdown-section h2 em{font-weight:300;color:var(--gold)}.body-copy{font:21px/1.45 var(--serif);color:#c9c1b1;max-width:390px}.signature{font:25px var(--serif);margin-top:28px}.signature span{color:var(--gold);font-style:italic}.intro-photo{margin:0;padding:8px;border:1px solid #c6a86d70;background:#181b14;transform:rotate(1.5deg);box-shadow:0 25px 55px #0006}.intro-photo img{width:100%;aspect-ratio:3/4;display:block;object-fit:cover}.intro-photo figcaption{display:flex;justify-content:space-between;padding:12px 5px 4px;font-size:7px;letter-spacing:.18em;color:#d7c69f}.intro-flourish{position:absolute;bottom:-.35em;left:24%;font:clamp(100px,20vw,270px) var(--serif);letter-spacing:-.08em;color:#ffffff04;white-space:nowrap;pointer-events:none}.intro-flourish span{font-style:italic;color:#c6a86d0a}
.film-section{padding:clamp(65px,9vw,110px) 20px;background:linear-gradient(145deg,#22281b,#0b0d0a 65%);text-align:center;border-bottom:1px solid #c6a86d35}.film-heading h2{font-size:clamp(40px,6vw,66px);margin:17px 0 35px}.film-frame{position:relative;width:min(850px,100%);aspect-ratio:16/9;margin:0 auto;padding:8px;border:1px solid #c6a86d70;background:#080907;box-shadow:0 20px 60px #0008}.teaser{display:block;width:100%;height:100%;object-fit:cover;background:#111}.film-frame.video-ready .video-placeholder{display:none}.video-placeholder{position:absolute;inset:8px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:linear-gradient(130deg,#282e20,#0a0c09);color:var(--ivory)}.video-placeholder p{font:italic clamp(26px,4vw,43px) var(--serif);margin:14px 0 6px}.video-placeholder small{font-size:10px;letter-spacing:.08em;color:#c8bea8}.play-mark{width:43px;height:43px;border:1px solid var(--gold);border-radius:50%;display:grid;place-items:center;color:var(--gold);padding-left:3px;font-size:12px}.film-note{font:italic 19px var(--serif);color:#d6c8a9;margin:23px auto 0}
.gallery-section{padding:clamp(65px,9vw,115px) clamp(18px,7vw,90px) clamp(75px,10vw,130px);background:#0c0e0b}.gallery-topline{display:flex;justify-content:space-between;border-bottom:1px solid #c6a86d40;padding-bottom:15px;margin-bottom:55px;font-size:8px;letter-spacing:.2em;color:#bcae8c}.gallery-section>.section-kicker,.gallery-section h2,.gallery-intro{text-align:center}.gallery-section h2{font:300 clamp(46px,7vw,80px)/1 var(--serif);margin:18px 0 8px}.gallery-intro{font:21px var(--serif);color:#c4bba9;margin:0 auto 45px}.photo-gallery{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:320px 260px;gap:16px;max-width:1000px;margin:0 auto}.gallery-item{position:relative;margin:0;overflow:hidden;background:#171a13;border:1px solid #c6a86d35;min-width:0}.gallery-item img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .65s,filter .4s;filter:saturate(.82)}.gallery-item:hover img{transform:scale(1.04);filter:saturate(1)}.gallery-item:after{content:"";position:absolute;inset:35% 0 0;background:linear-gradient(transparent,#080907d9);pointer-events:none}.gallery-item figcaption{position:absolute;z-index:1;bottom:14px;left:15px;right:15px;display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:8px;letter-spacing:.12em;color:#e9ddc5}.gallery-item figcaption span{font:italic 17px var(--serif);letter-spacing:0}.photo-tall{grid-row:span 1}.photo-wide{grid-column:span 1}
.countdown-section{padding:clamp(55px,8vw,100px) 18px;background:var(--paper);color:#20241a;text-align:center;position:relative;overflow:hidden}.countdown-section:before,.countdown-section:after{content:"✦";position:absolute;font-size:90px;color:#a58b5b20;top:50%;transform:translateY(-50%)}.countdown-section:before{left:5%}.countdown-section:after{right:5%}.countdown-top{display:flex;justify-content:space-between;max-width:980px;margin:0 auto 55px;padding-bottom:15px;border-bottom:1px solid #9b85584d;font-size:8px;letter-spacing:.2em;color:#5b6049}.countdown-top span:last-child{color:#9e814c}.countdown-section .section-kicker{color:#6b7057}.countdown-section h2{font-size:clamp(42px,6vw,70px);margin:17px 0 35px;color:#22271c}.countdown-section h2 em{color:#8b7449}.countdown{display:flex;justify-content:center;align-items:center;gap:clamp(14px,3vw,38px);margin:0 auto;max-width:700px}.countdown div{display:flex;flex-direction:column;gap:7px;min-width:50px}.countdown strong{font:300 clamp(39px,7vw,67px)/1 var(--serif);color:#24291d;font-variant-numeric:tabular-nums}.countdown span{font-size:8px;letter-spacing:.2em;color:#676b59}.countdown>i{height:45px;width:1px;background:#b19a6b}.countdown-footnote{font-size:9px;letter-spacing:.22em;color:#5b6049;margin:32px 0 0}
footer{padding:55px 20px 25px;text-align:center;background:#080907;color:var(--ivory);border-top:1px solid #c6a86d45}.footer-monogram{font-size:28px;margin-bottom:20px}.footer-kicker{font-size:8px;letter-spacing:.28em;color:#d1b77e}.footer-names{font:300 clamp(35px,6vw,54px) var(--serif);margin:9px 0}.footer-names em{font-size:.65em;color:var(--gold);font-weight:300}.footer-date{font-size:9px;letter-spacing:.22em;color:#c7b99a}.footer-rule{margin-top:23px}.footer-rule i{width:35px}.music-button{display:inline-flex;align-items:center;gap:9px;margin-top:27px;border:1px solid #c6a86d80;border-radius:30px;background:transparent;color:#e9dcc1;padding:12px 19px;font:11px var(--sans);cursor:pointer;transition:background .2s}.music-button:hover{background:#c6a86d18}.music-icon{font-size:17px;color:var(--gold)}.smallprint{font:italic 18px var(--serif);color:#c9bea8;margin:26px 0 36px}.copyright{font-size:7px;letter-spacing:.22em;color:#847d6c}
@keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes heroReveal{from{transform:scale(1.06);filter:brightness(.75)}to{transform:scale(1.015);filter:brightness(1)}}
@media(max-width:760px){.site-header{height:64px;grid-template-columns:auto 1fr;padding:0 19px}.site-header nav{gap:16px;justify-content:flex-end}.site-header nav a{font-size:7px;letter-spacing:.12em}.header-date{display:none}.hero{min-height:88vh;min-height:88svh}.hero-image{background-position:48% center}.hero-video{object-position:48% center}.hero-shade{background:linear-gradient(0deg,#050605bf,#05060547 55%,#05060533)}h1{font-size:clamp(68px,15vw,108px);margin:38px 0 28px}.hero-content{padding:70px 14px 95px}.hero-caption{max-width:300px;margin:22px auto}.hero-index{font-size:7px;bottom:16px}.intro-band{grid-template-columns:1fr 1fr;gap:22px;padding:68px 22px}.intro-label{grid-column:1/-1;writing-mode:initial;transform:none}.intro-copy h2{font-size:clamp(42px,8vw,60px)}.body-copy{font-size:18px}.intro-photo{align-self:center}.intro-photo figcaption{font-size:6px}.intro-flourish{left:5%}.film-section{padding:65px 15px}.film-frame{padding:5px}.video-placeholder{inset:5px}.video-placeholder small{font-size:9px}.gallery-topline{margin-bottom:40px}.photo-gallery{grid-template-columns:1fr 1fr;grid-template-rows:210px 165px;gap:8px}.photo-tall{grid-row:span 1}.photo-wide{grid-column:span 1}.gallery-item figcaption{left:9px;right:9px;bottom:9px}.gallery-item figcaption span{font-size:15px}.countdown-section:before,.countdown-section:after{font-size:45px;top:25%}.countdown{gap:clamp(8px,2.5vw,20px)}.countdown div{min-width:43px}.countdown strong{font-size:clamp(34px,8vw,52px)}.countdown span{font-size:7px}.countdown>i{height:32px}.countdown-top{margin-bottom:42px}}
@media(max-width:390px){.site-header nav{gap:10px}.site-header nav a{font-size:6px}.intro-band{grid-template-columns:1fr;padding:55px 24px}.intro-photo{width:78%;justify-self:center;margin-top:12px}.photo-gallery{grid-template-rows:170px 145px}.countdown{gap:8px}.countdown div{min-width:38px}.countdown strong{font-size:33px}.countdown span{letter-spacing:.12em}.countdown>i{height:26px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
/* Final build adjustments */
.countdown strong { font-variant-numeric: normal; }
.photo-gallery { grid-template-rows: 340px 300px; }
.gallery-item img { object-fit: contain; background: #171a13; }
.gallery-item:after { content: ""; inset: 55% 0 0; }
.gallery-item figcaption { justify-content: flex-end; }
.gallery-item figcaption span { font-size: 18px; }
.closing-section { position: relative; min-height: 520px; display: grid; place-items: center; overflow: hidden; isolation: isolate; background: #10130d url("assets/gallery/06.jpg") center 45% / cover no-repeat; border-top: 1px solid #c6a86d45; border-bottom: 1px solid #c6a86d45; }
.closing-overlay { position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(5,7,5,.72), rgba(5,7,5,.55) 45%, rgba(5,7,5,.84)); }
.closing-content { width: min(900px, 100%); padding: 68px 20px 35px; text-align: center; }
.closing-section .smallprint { margin-bottom: 30px; }
.film-section { scroll-margin-top: 70px; }
.film-frame .teaser { position: relative; z-index: 1; }
.video-placeholder { pointer-events: none; z-index: 2; transition: opacity .25s; }
.video-placeholder.placeholder-hidden { opacity: 0; visibility: hidden; }
@media(max-width:760px) {
  .photo-gallery { grid-template-rows: 230px 230px; gap: 10px; }
  .gallery-item img { object-fit: contain; }
  .closing-section { min-height: 480px; background-position: center; }
  .closing-content { padding: 60px 18px 28px; }
}
@media(max-width:390px) { .photo-gallery { grid-template-rows: 190px 190px; } }


/* Wedding hype counter and guest note wall */
.hype-section{padding:clamp(65px,9vw,110px) 20px;background:radial-gradient(ellipse at top,#252b1d 0%,#0b0d0a 66%);color:var(--ivory);text-align:center;border-top:1px solid #c6a86d45}
.hype-section>h2{font:300 clamp(42px,7vw,72px)/1.05 var(--serif);margin:16px 0 10px}.hype-section>h2 em{color:var(--gold)}
.hype-intro{font-size:10px;letter-spacing:.15em;color:#c8bea8;margin:0 0 32px}
.hype-counter-card{max-width:560px;margin:0 auto;padding:clamp(24px,5vw,42px);border:1px solid #c6a86d70;background:linear-gradient(145deg,#1d2218,#0b0d0a);box-shadow:0 20px 55px #0005}
.hype-label{font-size:9px;letter-spacing:.25em;color:var(--gold);margin:0 0 12px}.hype-counter-card>strong{display:block;font:400 clamp(58px,12vw,92px)/1 var(--serif);font-variant-numeric:tabular-nums;color:#f7f0e2}.hype-subtitle{display:block;font-size:8px;letter-spacing:.17em;color:#c8bea8;margin:12px 0 26px}
.hype-button{display:flex;flex-direction:column;align-items:center;gap:7px;width:100%;padding:18px 15px;border:1px solid #e0c78f;border-radius:999px;background:linear-gradient(135deg,#d7bd83,#b79a60);color:#171910;cursor:pointer;transition:transform .15s,filter .15s;font-family:var(--sans)}.hype-button:hover{filter:brightness(1.08);transform:translateY(-2px)}.hype-button:active{transform:scale(.98)}.hype-button span{font-weight:600;font-size:16px;letter-spacing:.06em}.hype-button small{font-size:8px;letter-spacing:.12em}.hype-message{font:italic 19px var(--serif);color:#e2d4b2;margin:20px 0 0;min-height:25px}
.guest-note-area{max-width:960px;margin:clamp(60px,9vw,100px) auto 0;padding-top:55px;border-top:1px solid #c6a86d40}.guest-note-area h3{font:400 clamp(34px,5vw,52px)/1.1 var(--serif);margin:12px 0;color:#f5f0e6}.guest-note-area>p:not(.section-kicker){font:18px var(--serif);color:#c8bea8}.guest-note-form{display:grid;gap:12px;max-width:560px;margin:25px auto 0}.guest-note-form input,.guest-note-form textarea{width:100%;border:1px solid #c6a86d70;background:#f3eddf;color:#24271d;padding:14px 15px;font:14px var(--sans);border-radius:2px;outline-offset:3px}.guest-note-form textarea{resize:vertical;min-height:100px}.note-submit{justify-self:center;padding:13px 23px;background:transparent;border:1px solid #c6a86d;color:#e8d9b9;font:11px var(--sans);letter-spacing:.08em;cursor:pointer}.note-status{font-size:11px;line-height:1.6;color:#bcb7a6;margin:4px auto;max-width:520px}.sticky-wall{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:34px auto 0;text-align:left}.sticky-note{min-height:145px;padding:17px 15px;color:#2c2a20;box-shadow:2px 5px 14px #0003;transform:rotate(var(--tilt,0deg));overflow-wrap:anywhere}.sticky-note:nth-child(4n+1){background:#e8d7a8}.sticky-note:nth-child(4n+2){background:#e9e4d9}.sticky-note:nth-child(4n+3){background:#d6dcc5}.sticky-note:nth-child(4n){background:#e4c8b9}.sticky-note p{font:italic 17px/1.35 var(--serif);margin:0 0 15px;white-space:pre-wrap}.sticky-note span{font:9px var(--sans);letter-spacing:.06em;color:#655c46}.wall-empty{grid-column:1/-1;text-align:center;font:italic 17px var(--serif);color:#bcb7a6;padding:20px}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:760px){.sticky-wall{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.sticky-note{min-height:130px;padding:14px 12px}.sticky-note p{font-size:16px}}

@keyframes hypePop{0%{transform:scale(1)}45%{transform:scale(1.025)}100%{transform:scale(1)}}.hype-pop{animation:hypePop .25s ease}


/* Wedding hype mini-game */
.hype-level-row{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;margin:26px 0 10px;color:#d6c8a9;font-size:9px;letter-spacing:.16em}.hype-level-row strong{font:400 27px var(--serif);color:var(--gold);letter-spacing:0}.hype-meter{height:16px;width:100%;border:1px solid #c6a86d66;border-radius:999px;background:#34392c;overflow:hidden;box-shadow:inset 0 2px 5px #0006}.hype-meter-fill{height:100%;width:0%;border-radius:inherit;background:linear-gradient(90deg,#8f7847,#d2b477,#f0dca9);transition:width .28s ease;box-shadow:0 0 18px #d2b47755}.hype-milestone{font-size:9px;letter-spacing:.18em;color:#d2b477;margin:15px 0 20px;font-weight:500}.hype-local-note{font-size:10px;line-height:1.6;color:#a9a795;max-width:480px;margin:18px auto 0}.hype-button{transition:transform .12s ease,box-shadow .2s ease}.hype-button:active{transform:scale(.97)}.hype-button.hype-pop{animation:hypePop .32s ease}.hype-counter-card.hype-maxed{box-shadow:0 0 0 1px #d2b477,0 0 42px #d2b47730}@keyframes hypePop{0%{transform:scale(1)}45%{transform:scale(1.045)}100%{transform:scale(1)}}@media(prefers-reduced-motion:reduce){.hype-meter-fill,.hype-button{transition:none}.hype-button.hype-pop{animation:none}}

/* Reliable film placeholder: visible before a real video has loaded. */
.film-frame .teaser { visibility: hidden; }
.film-frame.video-ready .teaser { visibility: visible; }
.film-frame.video-ready .video-placeholder { display: none; }
.video-placeholder { z-index: 2; pointer-events: none; }

/* Final requested refinements */
.hero h1{gap:clamp(10px,2.5vw,24px)}
.hero h1 .hero-amp{display:block;line-height:1.08;margin:.08em 0 .12em;font-size:.62em;transform:none;position:relative;isolation:isolate}
.hero h1 span{display:block;line-height:1.08}
.footer-tagline{font-size:10px;letter-spacing:.2em;color:var(--gold);margin:0 auto 24px;max-width:430px;line-height:1.8}
.tap-confetti{position:fixed;width:7px;height:10px;z-index:9998;pointer-events:none;border-radius:1px;animation:tapConfettiFall .9s cubic-bezier(.15,.65,.35,1) forwards}
@keyframes tapConfettiFall{0%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--rot))}}
.secret-modal[hidden]{display:none}.secret-modal{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:20px}.secret-backdrop{position:absolute;inset:0;background:rgba(4,6,4,.82);backdrop-filter:blur(7px)}.secret-card{position:relative;z-index:1;width:min(460px,100%);padding:42px 28px 32px;text-align:center;background:linear-gradient(145deg,#252b1d,#0b0d0a);border:1px solid #d7bd83;box-shadow:0 25px 90px #000a;color:#f3eddf;animation:secretIn .4s ease both}.secret-card h2{font:400 clamp(34px,7vw,48px)/1.05 var(--serif);margin:14px 0;color:#f3eddf}.secret-card>p:not(.section-kicker){font:italic 18px/1.5 var(--serif);color:#d6c8a9}.secret-card .secret-date{font:500 13px var(--sans)!important;letter-spacing:.2em;color:#d7bd83!important}.secret-icon{font-size:32px;color:#d7bd83}.secret-close{position:absolute;top:8px;right:12px;background:none;border:0;color:#f3eddf;font-size:30px;cursor:pointer}.modal-open{overflow:hidden}@keyframes secretIn{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.tap-confetti,.secret-card{animation:none!important}}
