*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--ivory:#f5f8f4;--blush:#c8dac2;--blush-light:#e8f0e5;--gold:#8b1a2e;--gold-light:#b02840;--charcoal:#1a2416;--warm-grey:#4a6245;--border:#8b1a2e38;--ocean:#2c6e9e;--green-dark:#2d4a27}html{scroll-behavior:smooth}body{background:var(--ivory);color:var(--charcoal);font-family:Jost,sans-serif;font-weight:300;line-height:1.7;overflow-x:hidden}body.is-gated{background:#fffdfc;overflow:hidden}nav{z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);letter-spacing:.15em;text-transform:uppercase;background:#f5f8f4eb;justify-content:center;gap:2.5rem;padding:1.2rem 2rem;font-size:.68rem;display:flex;position:fixed;top:0;left:0;right:0}nav[hidden]{display:none}nav a{color:var(--warm-grey);text-decoration:none;transition:color .3s}nav a:hover{color:var(--gold)}#hero{text-align:center;background:linear-gradient(175deg,#f5f8f4 55%,#e4ede1 100%);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:6rem 2rem 4rem;transition:background .5s;display:flex;position:relative;overflow:hidden}#hero.is-gated{background:#fffdfc}#hero.is-gated .hero-ornament{opacity:0}.hero-ornament{background:radial-gradient(circle, var(--blush-light) 0%, transparent 68%);opacity:.55;pointer-events:none;border-radius:50%;width:520px;height:520px;position:absolute}.hero-ornament.tl{background:radial-gradient(circle,#daebd4 0%,#0000 70%);top:-120px;left:-160px}.hero-ornament.br{background:radial-gradient(circle,#f5d0d8 0%,#0000 70%);bottom:-120px;right:-160px}.invite-envelope{z-index:5;justify-content:center;align-items:center;padding:2rem;transition:opacity .35s cubic-bezier(.4,0,.2,1),transform .35s cubic-bezier(.4,0,.2,1);animation:.9s cubic-bezier(.22,1,.36,1) both envelopeEnter;display:flex;position:absolute;inset:0}.invite-envelope.is-open{opacity:0;pointer-events:none;transform:translateY(-32px)scale(.94)}.invite-envelope-paper{background:linear-gradient(#fffffffa,#fdf3ecf0),linear-gradient(#fffdf7,#f7e0dc);border:1px solid #8b1a2e42;border-radius:24px;width:min(440px,90vw);padding:2rem 1.8rem 1.6rem;animation:3.2s ease-in-out infinite envelopeFloat;position:relative;overflow:hidden;transform:translateY(0);box-shadow:0 22px 60px #381f1147,inset 0 1px #fffffff2}.invite-envelope-paper:before{content:"";pointer-events:none;border:1px dashed #8b1a2e38;border-radius:18px;position:absolute;inset:10px}.invite-envelope-label{letter-spacing:.28em;text-transform:uppercase;color:var(--gold);margin-bottom:1rem;font-size:.6rem}.invite-recipient{color:var(--charcoal);margin-bottom:1rem;font-family:Cormorant Garamond,serif;font-size:clamp(2.2rem,6vw,3.2rem);font-weight:400;line-height:1}.invite-envelope-copy{color:var(--warm-grey);margin-bottom:1.4rem;font-size:.8rem}.invite-open-btn{border:1px solid var(--gold);background:var(--gold);color:#fffdf8;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:.9rem 1.5rem;font-size:.68rem;transition:transform .2s,box-shadow .2s,opacity .2s;display:inline-flex;box-shadow:0 10px 24px #8b1a2e3d}.invite-open-btn:hover{transform:translateY(-1px);box-shadow:0 12px 30px #8b1a2e52}.invite-open-btn.is-disabled,.invite-open-btn:disabled{cursor:not-allowed;opacity:.62;box-shadow:none;transform:none}.hero-content{text-align:center;z-index:1;flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative}.hero-content.is-entering{animation:.5s cubic-bezier(.22,1,.36,1) both fadeUp}.hero-content.is-hidden{display:none}.eyebrow{letter-spacing:.3em;text-transform:uppercase;color:var(--gold);opacity:0;margin-bottom:1.8rem;font-size:.68rem;animation:1s .3s forwards fadeUp}.names{letter-spacing:-.01em;opacity:0;font-family:Cormorant Garamond,serif;font-size:clamp(3.5rem,10vw,7.5rem);font-weight:300;line-height:1.05;animation:1s .55s forwards fadeUp}.names em{color:var(--gold);font-style:italic}.ampersand{color:var(--blush);margin:.2rem 0;font-family:Cormorant Garamond,serif;font-size:clamp(2rem,5vw,3.5rem);font-style:italic;line-height:1;display:block}.date-line{letter-spacing:.25em;text-transform:uppercase;color:var(--warm-grey);opacity:0;margin-top:2rem;font-size:.78rem;animation:1s .8s forwards fadeUp}.divider-gold{background:var(--gold);opacity:0;width:60px;height:1px;margin:1.8rem auto;animation:1s 1s forwards fadeIn}.location-hero{letter-spacing:.2em;text-transform:uppercase;color:var(--warm-grey);opacity:0;font-size:.78rem;animation:1s 1.1s forwards fadeUp}.countdown{opacity:0;gap:2.5rem;margin-top:2.5rem;animation:1s 1.5s forwards fadeUp;display:flex}.countdown-item{text-align:center}.countdown-value{color:var(--gold);font-family:Cormorant Garamond,serif;font-size:clamp(1.8rem,5vw,3rem);font-weight:300;line-height:1}.countdown-label{letter-spacing:.2em;text-transform:uppercase;color:var(--warm-grey);margin-top:.3rem;font-size:.6rem}section{padding:6rem 2rem}.section-inner{max-width:860px;margin:0 auto}.section-label{letter-spacing:.35em;text-transform:uppercase;color:var(--gold);margin-bottom:.8rem;font-size:.65rem}.section-label-accent{color:var(--green-dark)}.section-title{margin-bottom:1.5rem;font-family:Cormorant Garamond,serif;font-size:clamp(2rem,5vw,3.2rem);font-weight:300}.section-subtitle{color:var(--warm-grey);max-width:520px;margin-bottom:3rem;font-size:.9rem}hr.thin{border:none;border-top:1px solid var(--border);max-width:860px;margin:4rem auto}#couple-intro{background:#f5f8f4}.couple-people{grid-template-columns:minmax(0,1fr) 72px minmax(0,1fr);align-items:stretch;gap:1.25rem;display:grid}.couple-person-card{text-align:left;background:#fffdf9;border:1px solid #8b1a2e24;grid-template-rows:auto 1fr;padding:0;display:grid;overflow:hidden}.couple-photo-placeholder{color:#fffdf9d1;background:linear-gradient(#0000 0%,#1a241638 100%),linear-gradient(135deg,#dce9d7 0%,#f2ebe4 100%);justify-content:center;align-items:flex-end;min-height:360px;padding:1.4rem;font-family:Cormorant Garamond,serif;font-size:clamp(2.6rem,6vw,4.4rem);font-style:italic;display:flex}.couple-role{color:var(--gold);letter-spacing:.26em;text-transform:uppercase;margin:1.5rem 1.5rem .7rem;font-size:.62rem}.couple-person-card h3{margin:0 1.5rem .8rem;font-family:Cormorant Garamond,serif;font-size:clamp(2rem,4vw,2.8rem);font-weight:300;line-height:1}.couple-parents{color:var(--warm-grey);border-top:1px solid #8b1a2e1f;margin:0 1.5rem 1.6rem;padding-top:1rem;font-size:.86rem}.couple-ampersand{background:var(--ivory);width:72px;height:72px;color:var(--gold);border:1px solid #8b1a2e2e;border-radius:50%;justify-content:center;place-self:center;align-items:center;font-family:Cormorant Garamond,serif;font-size:2.6rem;font-style:italic;display:flex}#journey{background:radial-gradient(circle at top left, #c8dac28c, transparent 34%), linear-gradient(180deg, var(--ivory) 0%, #edf5ea 100%)}.journey-timeline{grid-template-columns:repeat(4,1fr);gap:1.2rem;display:grid;position:relative}.journey-timeline:before{content:"";background:linear-gradient(90deg, transparent, var(--gold), transparent);opacity:.55;height:1px;position:absolute;top:2.1rem;left:2rem;right:2rem}.journey-card{background:#ffffffad;border:1px solid #8b1a2e29;border-radius:24px;min-height:240px;padding:1.5rem 1.25rem;position:relative;overflow:hidden;box-shadow:0 18px 45px #1a241612}.journey-card:before{content:"";border:1px solid var(--gold);background:var(--ivory);border-radius:50%;width:1rem;height:1rem;margin-bottom:1.2rem;display:block;box-shadow:0 0 0 8px #8b1a2e14}.journey-card:not(:last-child):after{content:"";z-index:2;border-top:1.5px solid var(--gold);border-right:1.5px solid var(--gold);background:0 0;width:1rem;height:1rem;position:absolute;top:1.85rem;right:-.65rem;transform:rotate(45deg)}.journey-year{color:var(--gold);letter-spacing:.22em;background:#8b1a2e14;border-radius:999px;margin-bottom:.8rem;padding:.25rem .7rem;font-size:.62rem;display:inline-flex}.journey-card h3{margin-bottom:.8rem;font-family:Cormorant Garamond,serif;font-size:1.5rem;font-weight:300;line-height:1.1}.journey-card p:last-child{color:var(--warm-grey);font-size:.82rem}.journey-closing{text-align:center;max-width:560px;color:var(--gold);margin:3rem auto 0;font-family:Cormorant Garamond,serif;font-size:clamp(1.5rem,4vw,2.2rem);font-style:italic;line-height:1.25}#gallery{background:linear-gradient(180deg, var(--blush-light) 0%, #ddebd7 100%)}.gallery-grid{grid-template-rows:220px 220px;grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.gallery-grid .g-item{cursor:pointer;position:relative;overflow:hidden}.gallery-grid .g-item:first-child{grid-row:1/3}.gallery-grid .g-item img,.gallery-placeholder{object-fit:cover;width:100%;height:100%;transition:transform .5s;display:block}.gallery-placeholder{color:var(--warm-grey);background:linear-gradient(135deg,#c8dac2 0%,#e8f0e5 100%);justify-content:center;align-items:center;font-family:Cormorant Garamond,serif;font-size:.85rem;font-style:italic;display:flex}.g-item:hover .gallery-placeholder,.g-item:hover img{transform:scale(1.06)}#rsvp{color:var(--ivory);background:#1e3a19}#rsvp .section-label{color:#e8a0ae}#rsvp .section-title{color:var(--ivory)}#rsvp .section-subtitle{color:#faf7f28c}.rsvp-form{gap:1.2rem;display:grid}.rsvp-form[hidden]{display:none}.form-error{color:var(--gold);font-size:.85rem}.form-error[hidden]{display:none}.form-row{grid-template-columns:1fr 1fr;gap:1.2rem;display:grid}.form-group{flex-direction:column;gap:.4rem;display:flex}.form-group label{letter-spacing:.2em;text-transform:uppercase;color:#faf7f280;font-size:.65rem}.form-group input,.form-group select,.form-group textarea{color:#f5f8f4;-webkit-appearance:none;background:#ffffff1a;border:1px solid #e8a0ae66;outline:none;padding:.85rem 1rem;font-family:Jost,sans-serif;font-size:.88rem;font-weight:300;transition:border-color .3s}.select-wrap{position:relative}.select-wrap select{width:100%;padding-right:2.5rem}.select-wrap:after{content:"";pointer-events:none;border-bottom:1.5px solid #faf7f299;border-right:1.5px solid #faf7f299;width:.5rem;height:.5rem;position:absolute;top:50%;right:1rem;transform:translateY(-70%)rotate(45deg)}.form-group select option{color:#f5f8f4;background:#1e3a19}.form-group input[readonly]{opacity:.6;cursor:default}.form-group input::placeholder,.form-group textarea::placeholder{color:#f5f8f473}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--gold)}.form-group textarea{resize:vertical;min-height:100px}.submit-btn{background:var(--gold);color:var(--ivory);letter-spacing:.2em;text-transform:uppercase;cursor:pointer;border:none;width:fit-content;margin-top:.5rem;padding:1rem 3rem;font-family:Jost,sans-serif;font-size:.72rem;transition:background .3s,transform .2s;display:inline-block}.submit-btn:hover{background:var(--gold-light);transform:translateY(-1px)}.rsvp-note{color:#faf7f259;margin-top:1rem;font-size:.75rem}#rsvp-success{text-align:center;border:1px solid var(--border);padding:3rem;display:none}#rsvp-success .big{font-family:Cormorant Garamond,serif;font-size:2rem;font-style:italic}.guestbook-form{gap:1rem;max-width:560px;display:grid}.guestbook-form input,.guestbook-form textarea{border:1px solid var(--border);color:#1a2416;background:#fff;outline:none;width:100%;padding:.85rem 1rem;font-family:Jost,sans-serif;font-size:.88rem;font-weight:300;transition:border-color .3s}.guestbook-form textarea{resize:vertical;min-height:90px}.guestbook-form input::placeholder,.guestbook-form textarea::placeholder{color:#9aaa94}.guestbook-form input:focus,.guestbook-form textarea:focus{border-color:var(--gold)}.guestbook-btn{border:1px solid var(--gold);color:var(--gold);letter-spacing:.2em;text-transform:uppercase;cursor:pointer;background:0 0;width:fit-content;padding:.85rem 2.4rem;font-family:Jost,sans-serif;font-size:.72rem;transition:background .3s,color .3s}.guestbook-btn:hover{background:var(--gold);color:var(--ivory)}.messages-list{gap:1.5rem;margin-top:3rem;display:grid}.message-card{border-left:3px solid var(--gold);background:#fff;padding:1.5rem}.message-card .msg-name{letter-spacing:.15em;text-transform:uppercase;color:var(--gold);margin-bottom:.4rem;font-size:.72rem}.message-card .msg-text{color:var(--charcoal);font-family:Cormorant Garamond,serif;font-size:1.1rem;font-style:italic;line-height:1.5}#registry{background:var(--blush-light);border-top:3px solid var(--gold)}.registry-message{max-width:620px;line-height:1.9}.registry-cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;max-width:620px;display:grid}.bank-card{text-align:center;border:1px solid var(--border);border-top:3px solid var(--gold);background:#fff;padding:2rem 1.5rem;transition:transform .3s,box-shadow .3s}.bank-card:hover{transform:translateY(-4px);box-shadow:0 12px 32px #00000012}.bank-name{margin-bottom:.5rem;font-family:Cormorant Garamond,serif;font-size:1.3rem}.bank-account{letter-spacing:.06em;color:var(--charcoal);margin-bottom:.3rem;font-size:1.05rem}.bank-holder{color:var(--warm-grey);letter-spacing:.05em;margin-bottom:1.2rem;font-size:.75rem}.bank-copy-btn{border:1px solid var(--gold);color:var(--gold);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;background:0 0;padding:.55rem 1.2rem;font-family:Jost,sans-serif;font-size:.65rem;transition:background .2s,color .2s}.bank-copy-btn:hover,.bank-copy-btn.is-copied{background:var(--gold);color:var(--ivory)}.map-info{grid-template-columns:1fr 1fr;gap:3rem;margin-bottom:2rem;display:grid}.venue-detail .v-label{letter-spacing:.25em;text-transform:uppercase;color:var(--gold);margin-bottom:.4rem;font-size:.65rem}.venue-detail .v-name{margin-bottom:.2rem;font-family:Cormorant Garamond,serif;font-size:1.5rem}.venue-detail .v-addr{color:var(--warm-grey);font-size:.85rem}.map-embed{filter:saturate(.75)contrast(.95)hue-rotate(5deg);border:none;width:100%;height:360px}.map-placeholder{width:100%;height:360px;color:var(--warm-grey);background:linear-gradient(135deg,#e8e0d8 0%,#d8cfc5 100%);flex-direction:column;justify-content:center;align-items:center;gap:.8rem;display:flex}.map-placeholder .pin{font-size:2.5rem}.map-placeholder span{letter-spacing:.1em;font-size:.8rem}footer{background:var(--charcoal);color:#faf7f266;text-align:center;letter-spacing:.15em;padding:3rem 2rem;font-size:.72rem}footer strong{color:var(--gold-light);letter-spacing:.05em;margin-bottom:.8rem;font-family:Cormorant Garamond,serif;font-size:1.3rem;font-style:italic;font-weight:300;display:block}.music-toggle{z-index:120;cursor:pointer;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffdf9db;border:1px solid #8b1a2e38;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:transform .2s,border-color .2s,background .2s;display:inline-flex;position:fixed;bottom:1.25rem;right:1.25rem;box-shadow:0 14px 38px #1a24161f}.music-toggle:hover{border-color:var(--gold);transform:translateY(-2px)}body.is-gated .music-toggle{display:none}.music-toggle-icon{background:var(--gold);border-radius:50%;justify-content:center;align-items:center;width:2.5rem;height:2.5rem;display:flex}.music-toggle-icon-off{display:none}.music-toggle.is-playing .music-toggle-icon{background:var(--gold-light)}.music-toggle.is-playing .music-toggle-icon-on{display:block}.music-toggle.is-playing .music-toggle-icon-off,.music-toggle:not(.is-playing) .music-toggle-icon-on{display:none}.music-toggle:not(.is-playing) .music-toggle-icon-off{display:block}@keyframes envelopeEnter{0%{opacity:0;transform:translateY(32px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes envelopeFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.reveal{opacity:0}.reveal.is-revealed{animation:.7s forwards fadeUp}.message-card.is-new{animation:.5s forwards fadeUp}@media (width<=640px){.form-row{grid-template-columns:1fr}.couple-people{grid-template-columns:1fr;gap:1rem}.couple-photo-placeholder{min-height:300px}.couple-ampersand{width:56px;height:56px;margin:0 auto;font-size:2.1rem;line-height:1}.journey-timeline{grid-template-columns:1fr;gap:2rem}.journey-timeline:before{background:linear-gradient(180deg, transparent, var(--gold), transparent);width:1px;height:auto;inset:2rem auto 2rem .5rem}.journey-card{min-height:auto;padding:1.4rem 1.2rem 1.4rem 2rem}.journey-card:before{margin-left:-1.5rem}.journey-card:not(:last-child):after{inset:auto auto -1.3rem .1rem;transform:rotate(135deg)}.gallery-grid{grid-template-rows:160px 160px 160px;grid-template-columns:1fr 1fr}.gallery-grid .g-item:first-child{grid-row:auto}.map-info{grid-template-columns:1fr;gap:1.5rem}nav{flex-wrap:wrap;gap:1.2rem;font-size:.6rem}}
