:root{--color-primary: #5181d4;--color-secondary: #8aaee0;--color-accent: #c5d8f8;--color-light: #f0f4fc;--color-dark: #1d2b4a;--color-white: #ffffff;--color-body: #ffffff;--font-serif: "Cormorant Garamond", serif;--font-sans: "Lato", sans-serif;--container-width: 1000px;--radius: 12px}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-sans);color:var(--color-dark);background-color:var(--color-body);line-height:1.6}.container{width:90%;max-width:var(--container-width);margin:0 auto}.container-narrow{max-width:600px}.text-center{text-align:center}.section{padding:5rem 0}.bg-white{background-color:var(--color-white)}.bg-light{background-color:var(--color-light)}.bg-light+.bg-white,.bg-white+.bg-light{border-top:1px solid rgba(81,129,212,.12)}h1,h2,h3,h4{font-family:var(--font-serif);font-weight:700}.section-title{font-size:2.5rem;color:var(--color-primary);margin-bottom:3rem;text-align:center}.btn{display:inline-block;padding:12px 35px;border-radius:50px;text-transform:uppercase;font-size:.85rem;letter-spacing:2px;font-weight:700;text-decoration:none;transition:all .3s ease;box-shadow:0 4px 6px #0000001a}.btn-primary{background-color:var(--color-white);color:var(--color-primary)}.btn-primary:hover{background-color:var(--color-secondary);color:var(--color-white);transform:translateY(-3px)}.btn-white{background-color:var(--color-white);color:var(--color-primary)}.btn-white:hover{background-color:var(--color-secondary);color:var(--color-white);box-shadow:0 10px 20px #0003}.floating-btn{border:none;cursor:pointer;position:fixed;bottom:2rem;right:2rem;background-color:#ffffffb8;border:1px solid rgba(255,255,255,.86);backdrop-filter:blur(12px);color:var(--color-primary);padding:.75rem 1.35rem;border-radius:50px;font-family:Lato,sans-serif;font-weight:700;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;box-shadow:0 10px 26px #1d2b4a24;z-index:1000;transition:all .3s ease}.floating-btn:hover{background-color:#ffffffeb;transform:translateY(-2px);box-shadow:0 14px 30px #1d2b4a2e}@media(max-width:768px){.floating-btn{bottom:1.5rem;right:1.5rem;padding:.68rem 1.1rem;font-size:.72rem}}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;display:flex;align-items:center;justify-content:center;z-index:2000;opacity:0;pointer-events:none;transition:opacity .3s ease}.modal-overlay.active{opacity:1;pointer-events:auto}.modal-content{background-color:var(--color-white);padding:2.5rem;border-radius:12px;text-align:center;max-width:90%;width:400px;box-shadow:0 10px 30px #0003;transform:translateY(20px);transition:transform .3s ease}.modal-overlay.active .modal-content{transform:translateY(0)}.modal-content h2{font-family:Cormorant Garamond,serif;color:var(--color-primary);margin-bottom:1rem;font-size:2rem}.modal-content p{color:var(--color-text);margin-bottom:1.5rem;line-height:1.6}.modal-content .btn{width:100%}.hero{position:relative;height:100vh;display:flex;align-items:center;justify-content:center;overflow:hidden;color:#fff}.hero-bg{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center 45%;z-index:1;transition:opacity .7s ease}.hero-bg.is-changing{opacity:0}.hero-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#0006;z-index:2}.hero-content{position:relative;z-index:3;text-align:center;transform:translateY(12vh)}.hero:after{content:"";position:absolute;top:0;left:0;width:100%;height:190px;background:linear-gradient(to bottom,color-mix(in srgb,var(--color-body) 70%,transparent),transparent);z-index:2;pointer-events:none}.pre-title{text-transform:uppercase;letter-spacing:3px;font-size:.9rem}.hero .date{font-size:1.5rem;font-style:italic;margin-bottom:2rem}.scroll-cue{position:absolute;bottom:32px;left:50%;transform:translate(-50%);z-index:3;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--color-white);text-decoration:none;font-size:1rem;letter-spacing:2px;text-transform:uppercase;opacity:.9}.scroll-cue-arrow{font-size:2rem;line-height:1;animation:cue-bounce 1.6s infinite}.scroll-cue:hover{opacity:1}@keyframes cue-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}.ornament{font-size:3rem;color:var(--color-primary);display:block;margin-bottom:1rem}.parallax-divider{height:300px;background-image:url(https://source.unsplash.com/random/1920x600/?flowers,bouquet);background-size:cover;background-position:center;background-attachment:fixed}.grid-2{display:grid;grid-template-columns:1fr;gap:2rem}.card{background:var(--color-white);padding:2.5rem;border-radius:var(--radius);text-align:center;border:1px solid rgba(165,165,141,.3);transition:transform .3s ease}.card:hover{transform:translateY(-5px);box-shadow:0 10px 25px #0000000d}.card .icon img{width:80px;height:80px;object-fit:contain}.card .icon{font-size:3rem;margin-bottom:1rem}.card h3{font-size:1.8rem;margin-bottom:.5rem}.card .time{color:var(--color-primary);font-weight:700;text-transform:uppercase;font-size:.9rem;margin-bottom:1rem}.link-styled{color:var(--color-primary);text-decoration:underline;font-weight:700;text-transform:uppercase;font-size:.8rem}.prewedding-section{padding-top:4.5rem}.prewedding-card{max-width:680px;margin:0 auto;box-shadow:0 18px 45px #5181d414}.prewedding-icon{color:var(--color-primary);line-height:1}.photo-section{padding-top:0}.photo-section-gallery{padding:0 0 5rem}.photo-collage{display:flex;gap:1rem;margin:0 -5vw;overflow-x:auto;padding:0 5vw 1rem;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}.photo-collage::-webkit-scrollbar{display:none}.photo-collage-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin:0;overflow:visible;padding:0;scroll-snap-type:none}.photo-frame{flex:0 0 min(78vw,360px);position:relative;overflow:hidden;min-height:280px;aspect-ratio:4 / 5;border-radius:var(--radius);box-shadow:0 20px 50px #1d2b4a1f;scroll-snap-align:center}.photo-collage-gallery .photo-frame{flex:initial;min-height:0;aspect-ratio:3 / 4;scroll-snap-align:none}.photo-open{width:100%;height:100%;display:block;padding:0;border:0;background:transparent;cursor:zoom-in}.photo-frame img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .5s ease}.photo-frame:hover img{transform:scale(1.035)}.photo-wide{aspect-ratio:1 / 1}.photo-scroll-hint{margin-top:.5rem;color:var(--color-primary);font-size:.7rem;font-weight:700;letter-spacing:.08em;text-align:center;text-transform:uppercase}.photo-scroll-hint span{display:inline-block;padding:0 .35rem;font-size:.9rem;line-height:1;vertical-align:-.05em}.photo-gallery-link-wrap{margin-top:1rem;text-align:center}.photo-gallery-link{color:var(--color-primary);font-size:.78rem;font-weight:700;letter-spacing:.12em;text-decoration:underline;text-underline-offset:.35em;text-transform:uppercase}.has-photo-lightbox{overflow:hidden}.photo-lightbox{position:fixed;inset:0;z-index:3000;display:flex;align-items:center;justify-content:center;padding:1rem;background:#070c18e0;opacity:0;pointer-events:none;transition:opacity .25s ease}.photo-lightbox.active{opacity:1;pointer-events:auto}.photo-lightbox-img{max-width:min(92vw,1100px);max-height:86vh;object-fit:contain;box-shadow:0 26px 70px #00000059}.photo-lightbox-close,.photo-lightbox-nav{position:absolute;border:1px solid rgba(255,255,255,.28);background:#ffffff29;color:var(--color-white);cursor:pointer;backdrop-filter:blur(12px);transition:background .2s ease,transform .2s ease}.photo-lightbox-close:hover,.photo-lightbox-nav:hover{background:#ffffff42;transform:scale(1.04)}.photo-lightbox-close{top:1rem;right:1rem;width:2.75rem;height:2.75rem;border-radius:50%;font-size:2rem;line-height:1}.photo-lightbox-nav{top:50%;width:3rem;height:3.75rem;border-radius:999px;font-size:3rem;line-height:1}.photo-lightbox-prev{left:1rem}.photo-lightbox-next{right:1rem}.gallery-header{padding:3.5rem 0 2.5rem;text-align:center;background:var(--color-white)}.gallery-header .ornament{margin-bottom:.25rem}.gallery-header h1{color:var(--color-primary);font-size:3rem;line-height:1}.gallery-header p{margin-top:.75rem;font-size:1.05rem}.gallery-back{display:inline-block;margin-bottom:1.75rem;color:var(--color-primary);font-size:.78rem;font-weight:700;letter-spacing:.12em;text-decoration:none;text-transform:uppercase}.timeline{position:relative;border-left:2px solid rgba(107,112,92,.3);margin-left:20px;padding-left:40px}.timeline-item{position:relative;margin-bottom:3rem}.timeline-item:last-child{margin-bottom:0}.timeline-number{position:absolute;left:-53px;top:0;width:25px;height:25px;background:var(--color-primary);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700}.timeline-time{display:block;font-weight:700;color:var(--color-primary);margin-bottom:.2rem}.rsvp-section{background-color:var(--color-primary);color:var(--color-white);text-align:center}.rsvp-section h2{color:var(--color-white)}.rsvp-section p{margin-bottom:2rem;font-size:1.2rem;opacity:.9}footer{background-color:var(--color-dark);color:#fff9;text-align:center;padding:2rem;font-size:.8rem}@media(min-width:768px){.hero h1{font-size:6rem}.grid-2{grid-template-columns:1fr 1fr;gap:4rem}.photo-collage{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:230px;gap:1.25rem;margin:0;overflow:visible;padding:0;scroll-snap-type:none}.photo-frame{flex:initial;min-height:0;aspect-ratio:auto}.photo-tall{grid-column:span 2;grid-row:span 2}.photo-wide{grid-column:span 2;aspect-ratio:auto}.photo-scroll-hint{display:none}.photo-collage-gallery{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:auto;gap:1rem}.photo-collage-gallery .photo-frame,.photo-collage-gallery .photo-wide,.photo-collage-gallery .photo-tall{grid-column:auto;grid-row:auto;aspect-ratio:3 / 4}}@media(max-width:767px){.photo-lightbox-nav{top:auto;bottom:1rem;width:2.75rem;height:2.75rem;font-size:2.4rem}.photo-lightbox-img{max-height:78vh}}
