@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600&family=Noto+Serif+SC:wght@400;500;600;700&display=swap');
:root{--ink:#20201c;--paper:#d7bd88;--cream:#f1dfb8;--wine:#6e2f25;--gold:#c7a167;--line:rgba(83,57,26,.28)}*{box-sizing:border-box}html{background:#17191a;scroll-behavior:smooth}body{margin:0;color:var(--ink);font-family:"Noto Serif SC",serif;background:#c5a76e;overflow-x:hidden}.grain{position:fixed;inset:0;pointer-events:none;z-index:15;opacity:.18;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='.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E");mix-blend-mode:multiply}.section-shell{position:relative;padding:78px max(24px,calc((100vw - 650px)/2));overflow:hidden}.hero{min-height:100svh;padding:0;background:#13181a}.gallery{height:100svh;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}.gallery::-webkit-scrollbar{display:none}.slide{scroll-snap-align:start;min-width:100%;height:100%;position:relative}.slide img{height:100%;width:100%;object-fit:cover}.cover-slide:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(7,10,11,.58)),linear-gradient(90deg,rgba(9,10,9,.25),transparent 36%)}.cover-fallback{position:absolute;inset:0;z-index:-1;display:grid;place-content:center;text-align:center;color:#e8c897;background:linear-gradient(145deg,#101719,#5f4630 54%,#191b18);gap:12px}.cover-fallback b{font-size:clamp(65px,22vw,140px);font-weight:500}.cover-fallback span,.cover-fallback i{letter-spacing:.2em;font-family:"Cormorant Garamond",serif}.gallery-slide{background:#513f2a}.gallery-slide div{position:absolute;bottom:45px;left:28px;color:#f7e2bd;letter-spacing:.18em;font-size:12px}.slide-dots{position:absolute;z-index:2;bottom:65px;left:50%;transform:translateX(-50%);display:flex;gap:8px}.slide-dots i{width:5px;height:5px;border-radius:50%;background:#f8e5bf;opacity:.45}.slide-dots .active{width:23px;border-radius:9px;opacity:1}.swipe-tip,.scroll-down{position:absolute;z-index:2;color:#f7e2bd;letter-spacing:.17em;font-size:10px}.swipe-tip{bottom:29px;left:50%;transform:translateX(-50%);white-space:nowrap}.scroll-down{right:11px;bottom:116px;writing-mode:vertical-rl;font-family:"Cormorant Garamond",serif}.scroll-down span{margin-top:11px;font-size:20px}.film-hole{position:absolute;z-index:3;height:12px;width:100%;left:0;background:radial-gradient(ellipse 9px 4px at 13px 50%,#0f1111 98%,transparent 100%) 0 0/27px 12px}.film-hole-left{top:0}.film-hole-right{bottom:0}.date-section{background:radial-gradient(circle at 85% 13%,#ebd5a6 0 2%,transparent 18%),linear-gradient(130deg,#b98e54,#dfc28a 48%,#b28a59)}.eyebrow{font:600 12px "Cormorant Garamond",serif;letter-spacing:.27em;margin:0 0 18px;color:#76511f}.date-section h1{font:500 clamp(48px,15vw,100px)/.82 "Cormorant Garamond",serif;letter-spacing:-.045em;margin:0;color:#713429}.date-section h1 em{font-style:italic;color:#e7d2a7;-webkit-text-stroke:1px #713429}.date-stamp{display:flex;align-items:center;gap:16px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0;margin:42px 0 24px;font-family:"Cormorant Garamond",serif;letter-spacing:.13em}.date-stamp b{font-size:24px;color:var(--wine)}.invitation-copy{line-height:2;font-size:14px}.couple-section{background:#f1dfb7;background-image:linear-gradient(100deg,transparent 45%,rgba(113,52,41,.08) 45% 45.7%,transparent 45.7%)}.names{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;text-align:center}.names article:first-child{text-align:right}.names article:last-child{text-align:left}.names small{color:#8d6832;letter-spacing:.18em;font:600 11px "Cormorant Garamond",serif}.names h2,.rsvp-section h2,.interact-section h2{font-size:30px;font-weight:600;margin:9px 0 2px}.names p{font-size:13px;margin:3px 0 12px}.names a{color:#5f3025;text-decoration:none;font:500 14px "Cormorant Garamond",serif;letter-spacing:.07em}.amp{font:italic 60px/1 "Cormorant Garamond",serif;color:#815044}.venue-section{background:#3c4035;color:#f3dfb9}.venue-section .eyebrow{color:#d1ad71}.venue-card{position:relative;border:1px solid rgba(243,223,185,.45);padding:45px 24px 24px;text-align:center;overflow:hidden}.map-lines{position:absolute;inset:-50px;background:repeating-linear-gradient(28deg,transparent 0 28px,rgba(240,214,167,.16) 29px 31px,transparent 32px 70px),repeating-linear-gradient(-45deg,transparent 0 45px,rgba(240,214,167,.12) 46px 48px,transparent 49px 90px)}.venue-card>*:not(.map-lines){position:relative}.pin{display:block;color:#e3c07c;font-size:33px}.venue-card h2{font-size:24px;margin:8px 0}.venue-card p{font-size:13px}.venue-card a{display:inline-flex;margin-top:15px;gap:22px;padding:10px 16px;border:1px solid #d5b378;color:#f4dfba;text-decoration:none;font-size:13px}.tiny-note{font-size:10px;color:#dfcfae;opacity:.8}.rsvp-section{background:linear-gradient(160deg,#ded0ae,#b99057)}.rsvp-section h2,.interact-section h2{margin-top:0}.rsvp-form{margin-top:30px}.rsvp-form>label{display:block;margin:17px 0;font-size:13px;color:#573c22}.rsvp-form input:not([type=radio]),.rsvp-form select{display:block;width:100%;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:11px 2px;background:transparent;color:#2d251c;font:15px "Noto Serif SC",serif;outline:none}.rsvp-form input::placeholder{color:#8f795c}.rsvp-form fieldset{border:0;border-top:1px solid var(--line);margin:24px 0 0;padding:13px 0 0}.rsvp-form legend{padding:0 8px 0 0;font-size:13px;color:#573c22}.choice-row{display:flex;gap:17px;flex-wrap:wrap}.choice-row label{font-size:14px}.choice-row input{accent-color:var(--wine)}.choice-row .disabled{color:#917e62;text-decoration:line-through}.rsvp-form fieldset p{font-size:10px;color:#765c39;margin:12px 0 0}.room-options{transition:opacity .3s,transform .3s}.room-options.hidden{display:none}.rsvp-form button{width:100%;margin-top:32px;padding:16px;border:0;background:#672d24;color:#f3dcae;font:600 17px "Noto Serif SC",serif;letter-spacing:.2em;box-shadow:5px 5px 0 #a5773d;cursor:pointer}.rsvp-form button:disabled{opacity:.65}.form-message{text-align:center;min-height:20px;color:#722e23;font-size:13px}.interact-section{background:#1b1d1b;color:#efd8a9}.interact-section .eyebrow{color:#c49b5f}.interaction-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:28px}.interaction-grid button{color:#f0d8aa;background:rgba(235,205,152,.08);border:1px solid rgba(240,216,170,.34);padding:17px 6px;font:13px "Noto Serif SC",serif;cursor:pointer}.interaction-grid span{display:block;font:27px "Cormorant Garamond",serif;color:#d6a75d;margin-bottom:5px}.stats{margin-top:37px;border-top:1px solid rgba(240,216,170,.3);padding-top:16px;text-align:center}.stats p{font-size:13px;margin:0 0 14px}.stats div{display:flex;justify-content:space-around}.stats b{font:24px "Cormorant Garamond",serif;margin-left:3px}.stats small{display:block;color:#cdb789;font-size:11px;margin-top:15px}footer{background:#1b1d1b;color:#ae8b58;text-align:center;padding:28px 15px calc(28px + env(safe-area-inset-bottom));font:12px "Cormorant Garamond",serif;letter-spacing:.18em}.reveal{opacity:0;transform:translateY(25px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1)}.reveal.show{opacity:1;transform:none}.cutout.show{animation:inkFill 1.3s ease both}@keyframes inkFill{0%{color:transparent;-webkit-text-stroke:1px #713429}55%{color:transparent}100%{color:#713429;-webkit-text-stroke:0}}#effects{position:fixed;z-index:30;inset:0;pointer-events:none;overflow:hidden}.heart,.confetti,.rose,.egg{position:absolute;will-change:transform,opacity}.heart{color:#b1374c;font-size:24px;animation:floatHeart 2.5s ease-out forwards}.confetti{width:8px;height:17px;animation:confettiFall 1.8s cubic-bezier(.17,.67,.4,1) forwards}.rose{font-size:32px;animation:throwRose 1.8s ease-out forwards}.egg{font-size:36px;animation:throwEgg 1s ease-in forwards}.splat{position:absolute;width:65px;height:30px;background:#f5d64d;border-radius:60% 45% 58% 42%;box-shadow:0 0 0 6px rgba(248,239,187,.8);animation:splat .55s ease-out forwards}@keyframes floatHeart{to{transform:translate(var(--x),-140px) rotate(22deg);opacity:0}}@keyframes confettiFall{to{transform:translate(var(--x),var(--y)) rotate(720deg);opacity:0}}@keyframes throwRose{to{transform:translate(var(--x),var(--y)) rotate(var(--r));opacity:0}}@keyframes throwEgg{to{transform:translate(var(--x),var(--y)) rotate(500deg)}}@keyframes splat{0%{transform:scale(.2);opacity:0}100%{transform:scale(1);opacity:1}}@media(min-width:700px){.section-shell{padding-left:calc((100vw - 620px)/2);padding-right:calc((100vw - 620px)/2)}.hero{max-width:650px;margin:auto}.gallery{max-height:950px}.section-shell:not(.hero){max-width:800px;margin:auto}}
