:root{--wedding-bg:#0d0d0f;--wedding-bg-rgb:13, 13, 15;--wedding-accent:#c09b05;--wedding-accent-rgb:254, 213, 48;--wedding-text:#f4f1ea}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--wedding-bg);width:100%;color:var(--wedding-text);font-family:serif}.mobile-home{justify-content:center;align-items:center;min-height:100vh;display:flex}.desktop-warning{background:var(--wedding-bg);justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.desktop-card{text-align:center;max-width:500px}.desktop-card h1{margin-bottom:1rem;font-size:2rem}.desktop-card p{opacity:.8;line-height:1.6}.opening-screen{z-index:99999;position:fixed;inset:0;overflow:hidden}.invitation-curtain-overlay{z-index:99999;isolation:isolate;touch-action:none;overscroll-behavior:none;position:fixed;inset:0;overflow:hidden}.invitation-curtain-panel{will-change:transform;background:#490610;width:calc(50% + 1px);position:absolute;top:-1%;bottom:-2%;overflow:hidden;box-shadow:0 0 28px 8px #0c0003a6}.invitation-curtain-left{transform-origin:0 0;left:0}.invitation-curtain-right{transform-origin:100% 0;right:0}.invitation-curtain-fabric{background-blend-mode:multiply, normal, soft-light;background-color:#710d20;background-image:linear-gradient(#0d0003a6,#0000 15%,#dd485512 45%,#1300058c),repeating-linear-gradient(90deg,#30040c 0%,#590818 3%,#8f142a 7%,#a32336 9%,#7a1023 12%,#460612 16%,#280309 18%,#620b1c 21%,#981c30 25%,#710d20 28%,#30040c 32%),repeating-linear-gradient(18deg,#ffc5b30f 0 1px,#0000 1px 3px);background-size:100% 100%,100% 100%,5px 3px;position:absolute;inset:0}.invitation-curtain-right .invitation-curtain-fabric{transform:scaleX(-1)}.invitation-curtain-panel:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0c0003b3,#0000 16% 88%,#130005b3);position:absolute;inset:0;box-shadow:inset -2px 0 3px #e958631f}.invitation-curtain-right:after{transform:scaleX(-1)}.invitation-curtain-valance{transform-origin:top;background:linear-gradient(#0f0003bf,#0000 45%,#13000499),repeating-linear-gradient(95deg,#39050f 0%,#781023 4%,#90192b 6%,#490713 10%);border-radius:0 0 50% 50%/0 0 18% 18%;height:clamp(36px,8vh,88px);position:absolute;inset:0 0 auto;box-shadow:0 10px 20px #0f000380}.door{background:#1a1b20;width:50%;height:100%;position:absolute;top:0}.left-door{transform-origin:0;left:0}.right-door{transform-origin:100%;right:0}.seal-button{cursor:pointer;background:0 0;border:none;width:130px;height:130px;animation:2s ease-in-out infinite sealFloat;position:absolute}@keyframes sealFloat{0%{transform:scale(1)}50%{transform:scale(1.06)}to{transform:scale(1)}}.tap-text{text-align:center;letter-spacing:.2em;opacity:.65;width:100%;font-size:12px;position:absolute;bottom:100px}.site-content{justify-content:center;align-items:center;min-height:100vh;display:flex}.hero{background:var(--wedding-bg);min-height:100vh;color:var(--wedding-text);text-align:center;justify-content:center;align-items:center;padding:2rem;display:flex}.hero-content{max-width:500px}.hero-subtitle{opacity:.7;letter-spacing:.08em;text-transform:uppercase;margin-bottom:1rem;font-size:.8rem}.hero-title{font-size:3rem;font-weight:300;line-height:1.2}.hero-title span{margin:.5rem 0;display:block}.hero-scroll{opacity:.5;margin-top:3rem}.music-button{-webkit-backdrop-filter:blur(20px);width:62px;height:62px;color:var(--wedding-text);z-index:9999;background:#ffffff14;border:none;border-radius:999px;justify-content:center;align-items:center;transition:all .3s;display:flex;position:fixed;bottom:18px;right:18px}.music-button:active{transform:scale(.92)}.audio-waves{width:30px;height:30px}.wave{transform-box:fill-box;transform-origin:bottom}.donate-section{background:var(--wedding-bg);color:#fff;justify-content:center;align-items:center;min-height:100vh;display:flex}.card-scene{perspective:2000px;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.invitation-card{width:320px;height:480px;transform-style:preserve-3d;transform-origin:0;position:relative}.card-front{backface-visibility:hidden;background:#1a1b20;border-radius:12px;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}html{height:auto!important}body{height:auto!important;min-height:100vh!important;overflow:hidden auto!important}.gallery-section{z-index:20;background:var(--wedding-bg);border-radius:32px 32px 0 0;min-height:100vh;margin-top:-70vh;padding-top:8rem;position:relative}.gallery-header{text-align:center;margin-bottom:2rem}.gallery-header h2{font-size:2rem;font-weight:300}.gallery-handle{background:#ffffff40;border-radius:999px;width:60px;height:5px;margin:0 auto 2rem}.gallery-swiper{padding:0 1rem 4rem}.gallery-card{aspect-ratio:3/4;background:var(--wedding-bg);border-radius:24px;overflow:hidden}.gallery-card img{object-fit:cover;width:100%;height:100%;transition:transform .8s,filter .8s;display:block}.gallery-card:active img,.gallery-card:hover img{transform:scale(1.05)}.hero-fade{pointer-events:none;background:linear-gradient(to bottom, #0000 60%, rgba(var(--wedding-bg-rgb), .4) 80%, rgba(var(--wedding-bg-rgb), 1) 100%);z-index:5;position:absolute;inset:0}.details-section{background:var(--wedding-bg);text-align:center;padding:0 2rem 10rem}.details-spacer{height:30vh}.details-divider{width:180px;margin:0 auto 4rem;display:block}.details-label{letter-spacing:.3em;opacity:.6;margin-bottom:1rem;font-size:.8rem}.details-day{letter-spacing:.4em;opacity:.9;margin-bottom:1rem;font-size:.8rem}.scroll-container{background:var(--wedding-accent);white-space:nowrap;width:100%;margin-top:2rem;margin-bottom:2rem;padding:.5rem 0;overflow:hidden}.scrolling-text{color:var(--wedding-bg);font-family:Helvetica;animation:10s linear infinite scroll-left;display:inline-block}@keyframes scroll-left{0%{transform:translate(100%)}to{transform:translate(-100%)}}.details-date{margin-bottom:1rem;font-size:3rem;font-weight:300;line-height:1.1}.details-time{opacity:.9;color:var(--wedding-accent);margin-bottom:3rem;font-size:1rem}.details-star{color:var(--wedding-accent);margin-bottom:3rem;font-size:1.5rem}.details-venue{margin-bottom:.75rem;font-size:2rem;font-weight:300}.details-location{opacity:.9;text-transform:lowercase;font-family:Helvetica}.detailss-location{opacity:.9;color:#fff;font-family:Helvetica}.details-button{background:rgba(var(--wedding-accent-rgb), .12);border:1px solid rgba(var(--wedding-accent-rgb), .25);color:var(--wedding-text);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:999px;justify-content:center;align-items:center;margin-bottom:2rem;padding:1rem 2rem;text-decoration:none;transition:transform .4s,background .4s;display:inline-flex}.details-button:active{transform:scale(.96)}.venue-card{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#ffffff0a;border-radius:28px;max-width:420px;margin:0 auto;padding:2rem}.venue-card h3{margin-bottom:.5rem;font-size:1.5rem}.venue-card p{opacity:.7}.location-button{background:var(--wedding-accent);color:var(--wedding-bg);border:none;border-radius:999px;margin-top:2rem;padding:.9rem 1.5rem}.donate-section{background:var(--wedding-bg);justify-content:center;align-items:center;min-height:100vh;padding:6rem 2rem;display:flex}.donate-container{text-align:center;width:100%;max-width:420px}.donate-title{margin-bottom:1rem;font-size:2rem;font-weight:300}.donate-subtitle{opacity:.7;margin-bottom:2rem;line-height:1.6}.donate-primary{color:#fff;cursor:pointer;background:#ffffff0d;border:1px solid #fff3;border-radius:999px;padding:1rem 2rem}.donate-form{flex-direction:column;gap:1rem;margin-top:2rem;display:flex}.donate-form input{color:#fff;background:#ffffff08;border:1px solid #ffffff1a;border-radius:18px;width:100%;padding:1.2rem 1.25rem;font-size:1rem}.amount-grid{grid-template-columns:repeat(2,1fr);gap:.75rem;display:grid}.amount{min-height:56px;color:var(--wedding-bg);border-radius:16px;padding:1rem;font-family:Helvetica;font-size:.95rem;transition:all .3s}.amount.active{background:rgba(var(--wedding-accent-rgb), .2);border-color:rgba(var(--wedding-accent-rgb), .5);color:var(--wedding-text)}.donate-pay{background:var(--wedding-accent);width:100%;color:var(--wedding-bg);border-radius:999px;margin-top:1rem;padding:1.2rem;font-family:Helvetica;font-size:1rem;font-weight:600}.donate-thankyou{margin-top:2rem}.donate-cinematic{background:var(--wedding-bg);justify-content:center;align-items:center;min-height:100vh;padding:6rem 2rem;display:flex;position:relative;overflow:hidden}.donate-glow{background:radial-gradient(circle, rgba(var(--wedding-accent-rgb), .15), transparent 60%);filter:blur(40px);pointer-events:none;width:600px;height:600px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.donate-reveal{z-index:2;text-align:center;width:100%;max-width:680px;margin:0 auto;position:relative}.donate-intro-btn{color:#fff;cursor:pointer;background:#ffffff0d;border:1px solid #fff3;border-radius:999px;margin-top:2rem;padding:1rem 2rem;transition:transform .3s}.donate-intro-btn:active{transform:scale(.96)}.donate-form.cinematic{-webkit-backdrop-filter:blur(20px);background:#ffffff0a;border:1px solid #ffffff14;border-radius:32px;flex-direction:column;gap:1rem;width:100%;margin-top:2rem;padding:2rem;animation:.6s forwards fadeIn;display:flex}@keyframes fadeIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.donate-reveal-stage{text-align:center;max-width:420px}.fade-in{opacity:0;animation:1.2s forwards fadeInUp}.delay{animation-delay:.4s}@keyframes fadeInUp{0%{opacity:0;filter:blur(10px);transform:translateY(20px)}to{opacity:1;filter:blur();transform:translateY(0)}}.donate-cinematic{animation:2s darkPulse}@keyframes darkPulse{0%{filter:brightness(.7)}to{filter:brightness()}}.hero-video-section{height:400vh;position:relative}.hero-video-sticky{background:var(--wedding-bg);justify-content:center;align-items:center;width:100%;height:100vh;display:flex;position:sticky;top:0;overflow:hidden}.video-mask{z-index:5;border-radius:999px;width:120px;height:120px;position:relative;overflow:hidden}.hero-video{object-fit:cover;width:100%;height:100%;display:block}.hero-logo{z-index:20;position:absolute;top:40px;left:50%;transform:translate(-50%)}.hero-logo img{width:60px;height:auto}.scroll-hint{color:var(--wedding-accent);opacity:.8;letter-spacing:.15em;text-transform:uppercase;z-index:20;font-family:Roboto,Helvetica;font-size:.69rem;animation:2s ease-in-out infinite hintFloat;position:absolute;bottom:80px;left:50%;transform:translate(-50%)}@keyframes hintFloat{0%{transform:translate(-50%)translateY(0)}50%{transform:translate(-50%)translateY(8px)}to{transform:translate(-50%)translateY(0)}}@keyframes fadePulse{0%,to{opacity:.3;transform:translate(-50%)translateY(0)}50%{opacity:.8;transform:translate(-50%)translateY(-4px)}}.donate-thankyou{text-align:center;justify-content:center;align-items:center;height:100%;animation:1s fadeIn;display:flex}.thankyou-inner h3{margin-bottom:10px;font-size:2rem}.thankyou-sub{opacity:.6;letter-spacing:.2em;margin-top:10px;font-size:12px;animation:3s ease-in-out infinite floatText;display:block}@keyframes floatText{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.paystack-trust{opacity:.75;text-align:center;justify-content:center;align-items:center;gap:10px;margin-top:20px;font-family:Helvetica;font-size:.85rem;font-weight:100;display:flex}.paystack-trust img{object-fit:contain;width:20px;height:20px}input,button,select,textarea{appearance:none;color:inherit;border-radius:0;font-family:inherit}.reservation-cta{margin-top:2.5rem}.reservation-primary,.reservation-secondary,.reservation-close{cursor:pointer;font:inherit;transition:background .18s,transform .18s}.reservation-primary{border:1px solid var(--wedding-accent);background:var(--wedding-accent);min-height:48px;color:var(--wedding-bg);border-radius:999px;justify-content:center;align-items:center;padding:1rem 2rem;display:inline-flex}.reservation-primary:hover{background:color-mix(in srgb, var(--wedding-accent) 85%, white)}.reservation-primary:active,.reservation-secondary:active{transform:scale(.98)}.reservation-secondary{border:1px solid rgba(var(--wedding-accent-rgb), .4);min-height:44px;color:var(--wedding-text);background:0 0;border-radius:999px;padding:.8rem 1.3rem}.reservation-secondary:hover{background:rgba(var(--wedding-accent-rgb), .1)}.reservation-dialog{width:100%;max-width:none;height:100%;max-height:none;padding:max(1rem, env(safe-area-inset-top)) 1rem max(1rem, env(safe-area-inset-bottom));color:var(--wedding-text);overscroll-behavior:contain;background:0 0;border:0;margin:0;position:fixed;inset:0;overflow-y:auto}.reservation-dialog[open]{display:flex}.reservation-dialog::backdrop{background:rgba(var(--wedding-bg-rgb), .78);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.reservation-panel{border:1px solid rgba(var(--wedding-accent-rgb), .25);text-align:left;background:#171719;border-radius:28px;width:100%;max-width:460px;margin:auto;padding:clamp(1.5rem,5vw,2.5rem);position:relative;box-shadow:0 24px 90px #00000073}.reservation-close{width:44px;height:44px;color:var(--wedding-text);background:0 0;border:0;border-radius:50%;font-size:1.8rem;position:absolute;top:8px;right:10px}.reservation-eyebrow{color:var(--wedding-accent);letter-spacing:.15em;margin:.8rem 1rem 1rem 0;font-size:.65rem;line-height:1.7;display:block}.reservation-panel h2{margin-bottom:1rem;font-size:clamp(1.8rem,6vw,2.2rem);font-weight:400}.reservation-panel p{color:#f4f1ead9;line-height:1.6}.reservation-form{flex-direction:column;gap:.7rem;margin-top:1.8rem;display:flex}.reservation-form label,.reservation-admin-search label{font-size:.95rem}.reservation-form input,.reservation-admin-search input{width:100%;min-height:50px;color:var(--wedding-text);border:1px solid rgba(var(--wedding-accent-rgb), .35);background:#212124;border-radius:12px;padding:.9rem 1rem;font-size:1rem;display:block}.reservation-form input{margin-bottom:.6rem}.reservation-form .reservation-primary{margin-top:.5rem}.reservation-error{margin:.7rem 0;line-height:1.6;color:#ffc0bd!important}.reservation-success{text-align:center}.reservation-code{letter-spacing:.1em;color:var(--wedding-accent);-webkit-user-select:all;user-select:all;margin:1.8rem 0;font:500 clamp(2.5rem,10vw,3.5rem) ui-monospace,monospace;display:block}.reservation-feedback{min-height:1.6em;margin:.8rem 0;font-size:.9rem}.reservation-success .reservation-primary{width:100%}.reservation-dialog :focus-visible,.reservation-cta :focus-visible,.reservation-admin :focus-visible{outline:2px solid var(--wedding-accent);outline-offset:4px}.reservation-dialog button:disabled,.reservation-admin button:disabled{opacity:.6;cursor:wait}.reservation-admin{background:var(--wedding-bg);max-width:960px;min-height:100vh;margin:0 auto;padding:3rem 1.25rem 6rem}.reservation-admin-header{margin-bottom:2rem}.reservation-admin-header h1{margin-bottom:1rem;font-size:clamp(2rem,6vw,3rem);font-weight:400}.reservation-admin-actions{gap:.75rem;margin-top:1.3rem;display:flex}.reservation-admin-login{max-width:420px}.reservation-admin-search{margin-bottom:1.5rem}.reservation-admin-search input{margin:.7rem 0}.reservation-admin-search p{color:#f4f1eabf;font-size:.9rem}.reservation-admin-list{gap:1rem;list-style:none;display:grid}.reservation-admin-card{border:1px solid rgba(var(--wedding-accent-rgb), .2);overflow-wrap:anywhere;background:#19191c;border-radius:18px;gap:.7rem;padding:1.5rem;display:grid}.reservation-admin-card h2{margin-bottom:.35rem;font-size:1.2rem;font-weight:400}.reservation-admin-code{color:var(--wedding-accent);font:600 1.6rem ui-monospace,monospace}.reservation-admin-card time{color:#f4f1eabf;font-size:.9rem}@media (min-width:700px){.reservation-admin-card{grid-template-columns:130px minmax(0,1fr) auto;align-items:center}}@media (prefers-reduced-motion:reduce){.reservation-primary,.reservation-secondary,.reservation-close{transition:none}}.donate-form input:focus-visible{border-color:var(--wedding-accent);outline-color:var(--wedding-accent)}.donate-intro-btn:focus-visible,.donate-pay:focus-visible,.amount:focus-visible,.details-button:focus-visible,.music-button:focus-visible{outline-color:var(--wedding-accent)}.invitation-device-notice{background:var(--wedding-bg);min-height:100svh;color:var(--wedding-text);text-align:center;justify-content:center;align-items:center;padding:2rem;display:flex}.invitation-device-notice-content{max-width:580px}.invitation-device-notice h1{color:var(--wedding-accent);margin-bottom:1.5rem;font-size:clamp(1.8rem,3vw,2.5rem);font-weight:400;line-height:1.25}.invitation-device-notice p{line-height:1.7}.invitation-device-notice-hint{opacity:.65;margin-top:1rem;font-size:.9rem}@media (max-width:1024px){.invitation-device-notice{display:none}}
