*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;scroll-snap-type:y mandatory}html.dev-mode::before{content:"DEV MODE " attr(data-browser)" Device: " attr(data-device);display:block;height:25px;top:0;color:red;width:100%;background:rgba(0,0,0,.5);text-align:center;position:fixed;z-index:9999}body{font-family:var(--font-primary);line-height:1.6;color:#333;overflow-x:hidden;font-size:var(--font-size-base)}h1,h2,h3{font-family:var(--font-heading);font-weight:500;margin-bottom:1rem}h2{font-size:var(--font-size-section-title)}small{font-size:var(--font-size-small)}:root{--bride-color:rgb(191, 223, 207);--bride-color-rgb:191 223 207;--groom-color:rgb(36, 68, 92);--groom-color-rgb:36 68 92;--font-primary:'DM Sans', system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;--font-heading:'Lora', ui-serif, Georgia, 'Times New Roman', Times, serif;--font-fancy:'Great Vibes', cursive;--font-size-base:clamp(1rem, 1.5vw, 1.25rem);--font-size-language-switcher:clamp(0.75rem, 1vw, 0.9rem);--font-size-logo:clamp(1.5rem, 3.5vw, 2.5rem);--font-size-hero-title:clamp(2rem, 9vw, 10rem);--font-size-hero-subtitle:clamp(1rem, 4vw, 5rem);--font-size-hero-date:clamp(1rem, 4.5vw, 6rem);--font-size-section-title:clamp(1.5rem, 6vw, 3.5rem);--font-size-section-subtitle:clamp(1rem, 5vw, 2rem);--font-size-small:clamp(0.6rem, 0.2vw, 1rem)}.site-header{position:fixed;top:0;left:0;right:0;z-index:1000;background-color:rgba(53,53,53,.1);backdrop-filter:blur(10px);transition:all .5s ease;opacity:0;pointer-events:none}.site-header.show{opacity:1;transform:translateY(0);pointer-events:auto}.navbar{padding:1rem 0}.nav-container{display:flex;justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto;padding:0 20px}.nav-logo a{font-family:var(--font-fancy);font-size:var(--font-size-logo);font-weight:900;text-decoration:none;transition:filter .35s ease;-webkit-text-fill-color:rgba(255,255,255,.33);-webkit-text-stroke:.5px rgba(0,0,0,.5)}.nav-menu{display:flex;gap:2rem}.nav-link{text-decoration:none;color:#333;font-weight:700;transition:color .3s ease;position:relative}.nav-link:hover{background:linear-gradient(45deg,var(--bride-color),var(--groom-color));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.nav-link::after{content:'';position:absolute;bottom:-5px;left:0;width:0;height:2px;background:linear-gradient(45deg,var(--bride-color),var(--groom-color));transition:width .3s ease}.nav-link:hover::after{width:100%}.language-switcher{display:flex;gap:.5rem}.lang-link{position:relative;background:#fff;padding:.5rem 1rem;text-decoration:none;color:#333;border-radius:20px;transition:all .3s ease;font-size:var(--font-size-language-switcher)}.lang-link::before{content:'';position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background:linear-gradient(45deg,var(--bride-color),var(--groom-color));border-radius:inherit;z-index:-1}.lang-link:hover{background:0 0;color:#fff}.mobile-menu-toggle{display:none;flex-direction:column;cursor:pointer}.mobile-menu-toggle span{width:25px;height:3px;background:#333;margin:3px 0;transition:.3s}@media(max-width:768px){.nav-menu{display:none;text-align:center}.nav-container.active{display:flex;flex-direction:column}.nav-menu.active{display:flex;flex-direction:column}.mobile-menu-toggle{display:flex}.mobile-menu-toggle.active{margin-top:1rem}.language-switcher{display:none}.nav-container.active .language-switcher{margin-top:1rem;display:inherit}}@media(max-width:480px){.nav-logo a{font-size:1.4rem}}.accordion{max-width:800px;margin:2rem auto}.accordion-item{margin-bottom:1rem;border:1px solid #e0e0e0;border-radius:8px;overflow:hidden;background:#fff}.accordion-header{width:100%;padding:1.5rem;background:0 0;border:none;display:flex;justify-content:space-between;align-items:center;cursor:pointer;font-size:1.1rem;font-weight:600;text-align:left;transition:background-color .3s ease}button.accordion-header{color:#333}.accordion-header:hover{background-color:#f5f5f5}.accordion-icon{font-size:1.5rem;transition:transform .3s ease;background:linear-gradient(105deg,var(--bride-color),var(--groom-color));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.accordion-item.active .accordion-icon{transform:rotate(45deg)}.accordion-content{max-height:0;overflow:hidden;transition:max-height .3s ease,padding .3s ease;padding:0 1.5rem}.accordion-item.active .accordion-content{max-height:500px;padding:0 1.5rem 1.5rem}.accordion-content p{margin:0;line-height:1.6}@keyframes translateFadeIn{to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeInUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%,20%,50%,80%,100%{transform:translateX(-50%)translateY(0)rotate(45deg)}40%{transform:translateX(-50%)translateY(-10px)rotate(45deg)}60%{transform:translateX(-50%)translateY(-5px)rotate(45deg)}}@keyframes heartbeat{0%,100%{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes textShadow{0%,80%{text-shadow:none}100%{text-shadow:2px 2px 4px rgba(0,0,0,.3)}}@keyframes hueShift{0%,100%{filter:hue-rotate(0)}50%{filter:hue-rotate(360deg)}}@keyframes rainbowGlow{0%{filter:blur(40px)hue-rotate(0)}100%{filter:blur(40px)hue-rotate(360deg)}}.story-section{padding:80px 0;background-color:#f9f9f9}.gallery-content{text-align:center}.gallery-content h2{margin-bottom:1rem}.gallery-content p{margin-bottom:3rem;color:#666}.carousel-container{position:relative;max-width:1200px;width:100%;margin:0 auto;padding:0 60px}.carousel-wrapper{overflow:hidden;border-radius:12px}.carousel-track{display:flex;transition:transform .5s ease-in-out;gap:15px}.carousel-slide{min-width:calc((100% - 30px)/3);position:relative;flex-shrink:0}.carousel-slide img{width:100%;height:400px;object-fit:cover;display:block;border-radius:8px;box-shadow:0 5px 15px rgba(0,0,0,.2)}.carousel-btn{position:absolute;top:50%;transform:translateY(-50%);background-color:rgba(255,255,255,.9);border:none;width:50px;height:50px;border-radius:50%;font-size:2rem;cursor:pointer;transition:all .3s ease;z-index:10;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px rgba(0,0,0,.2)}.carousel-btn:hover{background:linear-gradient(105deg,var(--bride-color),var(--groom-color));color:#fff;transform:translateY(-50%)scale(1.1)}.carousel-prev{left:0}.carousel-next{right:0}.carousel-indicators{display:flex;justify-content:center;gap:10px;margin-top:20px}.carousel-indicator{width:12px;height:12px;border-radius:50%;background-color:#ddd;border:none;cursor:pointer;transition:all .3s ease}.carousel-indicator.active{background:radial-gradient(var(--bride-color),var(--groom-color));transform:scale(1.2)}.carousel-indicator:hover{background:radial-gradient(var(--bride-color),var(--groom-color))}@media(max-width:992px){.carousel-slide{min-width:calc((100% - 15px)/2)}.carousel-slide{min-width:100%;width:100%}.carousel-slide img{height:600px}.carousel-track{gap:0}}@media(max-width:768px){.carousel-btn{width:40px;height:40px;font-size:1.5rem}.carousel-container{padding:0}}@media(max-width:480px){.carousel-btn{width:35px;height:35px;font-size:1.3rem}}.custom-modal{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.custom-modal.modal-open{opacity:1}.modal-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);backdrop-filter:blur(2px)}.modal-content{position:relative;background:#fff;border-radius:10px;padding:2rem;max-width:90vw;max-height:90vh;overflow-y:auto;box-shadow:0 20px 40px rgba(0,0,0,.3);transform:scale(.9);transition:transform .3s ease}.custom-modal.modal-open .modal-content{transform:scale(1)}.custom-modal form{display:flex;flex-direction:column;gap:1rem}.custom-modal input,.custom-modal textarea{width:100%;padding:.75rem;border:1px solid #ccc;border-radius:5px;font-size:var(--font-size-base);font-family:var(--font-primary)}.custom-modal textarea::placeholder{color:#aaa;font-size:var(--font-size-language-switcher)}.custom-modal label{font-weight:600;margin-top:1rem}.custom-modal select{width:100%;padding:.75rem;border:1px solid #ccc;border-radius:5px;font-size:var(--font-size-base);font-family:var(--font-primary);background:#fff;appearance:none}.custom-modal button[type=submit]{background:linear-gradient(105deg,var(--bride-color),var(--groom-color));color:#fff;border:none;padding:.75rem 1.5rem;border-radius:30px;font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:background .3s ease}.modal-close{position:absolute;top:15px;right:20px;background:0 0;border:none;font-size:2rem;color:#999;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;transition:color .2s ease}.modal-close:hover{color:#333}.modal-body{margin-top:1rem}.modal-fade .modal-content{transform:translateY(-50px);opacity:0}.modal-fade.modal-open .modal-content{transform:translateY(0);opacity:1}.modal-slide .modal-content{transform:translateY(100%)}.modal-slide.modal-open .modal-content{transform:translateY(0)}.modal-scale .modal-content{transform:scale(.7)}.modal-scale.modal-open .modal-content{transform:scale(1)}#rsvp-modal{width:100%}.sleep-info-container{background-color:rgba(191,223,207,.61);border-left:4px solid #66d69e;padding:8px 20px;border-radius:4px;margin:20px 0;text-align:center}.sleep-info-container p{margin:0 0 10px;color:#333;line-height:1.5;font-size:.95rem}.sleep-info-container a{color:#007bff;text-decoration:none;font-weight:600;font-size:.9rem}.sleep-info-container a:hover{text-decoration:underline}@media(max-width:768px){.modal-content{margin:20px;padding:1.5rem;max-width:calc(100vw - 40px)}}#toast-container{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:10000;display:flex;flex-direction:column;gap:10px;width:min(560px,calc(100vw - 32px));pointer-events:none}.toast{pointer-events:auto;position:relative;padding:14px 46px 14px 14px;border-radius:14px;font-family:var(--font-primary);line-height:1.35;box-shadow:0 14px 40px rgba(0,0,0,.22);background:rgba(20,20,20,.88);color:#fff;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);opacity:0;transform:translateY(12px);transition:opacity 180ms ease,transform 220ms ease}.toast--show{opacity:1;transform:translateY(0)}.toast--hide{opacity:0;transform:translateY(12px)}.toast--success{background:rgba(28,110,74,.92)}.toast--error{background:rgba(146,45,45,.92)}.toast--info{background:rgba(36,68,92,.92)}.toast--warning{background:rgba(170,94,32,.92)}.toast__close{position:absolute;top:50%;right:10px;transform:translateY(-50%);width:32px;height:32px;border-radius:10px;border:0;background:rgba(255,255,255,.12);color:#fff;font-size:20px;line-height:1;cursor:pointer}.toast__close:hover{background:rgba(255,255,255,.18)}@media(prefers-reduced-motion:reduce){.toast{transition:none}}.container{max-width:1200px;margin:0 auto;padding:0 20px}.gradient-text,.white-section h2,.footer-hearts{background:linear-gradient(45deg,var(--bride-color),var(--groom-color));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.gradient-text:hover{animation:hueShift 7.5s infinite}.scroll-indicator{position:absolute;bottom:45px;left:50%;z-index:2}.scroll-arrow{width:50px;height:50px;border:5px solid #fff;border-left:none;border-top:none;animation:bounce 2s infinite;filter:drop-shadow(0 2px 8px #fff);position:absolute;bottom:1rem;left:50%}.page-section{padding:75px 0;position:relative;display:flex;align-items:center;justify-content:center;text-align:center}.page-section:not(.white-section){background:linear-gradient(90deg,var(--bride-color),var(--groom-color))}.page-section:not(.white-section) h2{color:#fff;text-shadow:2px 2px 4px rgba(0,0,0,.5)}.page-section.white-section{background:#fff;color:#333}.parallax-container .container{position:relative;z-index:2}.item{background:rgba(255,255,255,.1);padding:2rem;border-radius:10px;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}.hero{display:flex;align-items:center;justify-content:center;text-align:center;color:#fff;position:relative}.hero-content{position:absolute;z-index:2;text-shadow:2px 2px 4px rgba(0,0,0,.3)}body.loaded .hero-content{animation:textShadow 15s ease-out}.hero-title{font-family:var(--font-fancy);font-size:var(--font-size-hero-title);font-weight:400;margin-bottom:.5rem}.hero-subtitle{font-family:var(--font-heading);font-size:var(--font-size-hero-subtitle);margin-bottom:1rem;font-weight:400}.hero-date{font-family:var(--font-primary);font-size:var(--font-size-hero-date);font-weight:700;letter-spacing:2px;text-transform:uppercase}.hero-content .word{display:inline-block;opacity:0;transform:translateY(30px)}.hero-content .hero-counter.word{display:block;text-shadow:2px 2px 3px #000}body.animation-complete .hero-content .word{animation:translateFadeIn .6s ease-out forwards}#landing::after{content:'';position:absolute;bottom:0;left:0;right:0;height:50px;background:linear-gradient(to bottom,transparent,white);z-index:1;pointer-events:none}.image-container{width:auto;overflow:hidden;background-color:#fff}.image-container img,.image-container canvas{display:block}#source-image{display:none;width:100%;object-fit:cover;object-position:center}body.animation-complete #story{animation:translateFadeIn 2s ease-out forwards}#story{opacity:0}.story-section::before{content:'';position:absolute;top:-50px;left:0;right:0;height:50px;background:linear-gradient(to bottom,transparent,white);z-index:1;pointer-events:none}.story-content{text-align:center;max-width:800px;margin:0 auto}.story-text p{font-size:1.1rem;margin-bottom:1.5rem;color:#666;line-height:1.8}.details-section{padding:100px 0;color:#fff;text-align:center}.details-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:3rem;max-width:1000px;margin:0 auto}.detail-item{background:rgba(255,255,255,.1);padding:2rem;border-radius:10px;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}.item h3{font-size:var(--font-size-section-subtitle);margin-bottom:1rem;color:var(--groom-color)}.detail-time{font-size:2rem;font-weight:700;margin-bottom:.5rem}.detail-location{font-size:1.2rem;font-weight:600;margin-bottom:.5rem}.detail-address{font-size:1rem;opacity:.9}.rsvp-section{padding:100px 0;background:#fff;text-align:center}.rsvp-content h2{font-size:3rem;color:#8b4b8c;margin-bottom:2rem}.rsvp-content p{font-size:1.2rem;color:#666;margin-bottom:2rem}.button{background:linear-gradient(105deg,var(--bride-color),var(--groom-color))}.rsvp-form{position:relative;z-index:0}.rsvp-button{display:inline-block;padding:1rem 2rem;color:#fff;text-decoration:none;border-radius:50px;font-weight:600;text-transform:uppercase;letter-spacing:1px;transition:all .3s ease;box-shadow:0 4px 15px rgba(139,75,140,.3);margin-top:2rem;font-size:var(--font-size-section-subtitle);position:relative}.rsvp-button::before{content:'';position:absolute;top:0;left:-15px;right:-15px;bottom:-5px;border-radius:50px;background:linear-gradient(180deg,#dfd4bf 0%,#BE20FF 50%,#0092ff 100%);z-index:-1;opacity:1;animation:rainbowGlow 1.5s linear infinite}.rsvp-button:hover{transform:scale(1.05)}.playlist-section{z-index:1}.playlist-form{margin-top:1rem;display:flex;flex-direction:column;align-items:center;gap:1rem;position:relative}.playlist-form input[type=text]{width:100%;max-width:400px;padding:.75rem 1rem;border:1px solid #ccc;border-radius:30px;font-size:1rem;transition:border-color .3s ease}.playlist-form input[type=text]::placeholder{font-size:var(--font-size-small)}#song-results{position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:.5rem;text-align:left;width:100%;max-width:450px;overflow-y:auto;max-height:35vw;background:#fff;border:1px solid #ddd;border-radius:10px;box-shadow:0 4px 12px rgba(0,0,0,.15);z-index:10}#song-results:empty{display:none}.song-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;border-bottom:1px solid #eee}.song-info{font-size:var(--font-size-small);text-align:left;flex:1}.song-item img{width:60px;height:60px;border-radius:10px;margin-right:1rem}.song-item .add-to-playlist-btn{background:linear-gradient(105deg,var(--bride-color),var(--groom-color));color:#fff;border:none;padding:.5rem 1rem;border-radius:15px;cursor:pointer;transition:all .3s ease;font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.5px;box-shadow:0 2px 8px rgba(0,0,0,.15);position:relative;overflow:hidden}.song-item .add-to-playlist-btn::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(105deg,rgba(255,255,255,.3),rgba(255,255,255,0));transition:left .5s ease}.song-item .add-to-playlist-btn:hover:not(:disabled)::before{left:100%}.song-item .add-to-playlist-btn:hover:not(:disabled){box-shadow:0 4px 12px rgba(0,0,0,.25)}.song-item .add-to-playlist-btn:active{box-shadow:0 2px 6px rgba(0,0,0,.2)}.song-item .add-to-playlist-btn:disabled{background:#ccc;cursor:not-allowed}#ceremony,#wedding-party,#aperitif{width:100px}#ring{width:250px}.site-footer{background:#333;color:#fff;padding:3rem 0;text-align:center}.footer-hearts{margin-bottom:1rem;display:flex;justify-content:center;align-items:center}.heart{font-size:1.5rem;color:#ffb6c1;margin:0 .5rem;animation:heartbeat 2s infinite}.footer-text{font-size:1.1rem;margin-bottom:.5rem}.footer-date{font-size:1rem;opacity:.8}@media(max-width:768px){.hero-title{font-size:calc(var(--font-size-hero-title)*2)}.hero-subtitle{font-size:calc(var(--font-size-hero-subtitle)*2)}.hero-date{font-size:calc(var(--font-size-hero-date)*2)}.story-content h2,.details-content h2,.rsvp-content h2{font-size:2rem}.details-grid{grid-template-columns:1fr;gap:2rem}.nav-container{padding:0 15px}.container{padding:0 15px}.parallax-container{background-attachment:scroll}.hero{background-attachment:scroll}}@font-face{font-family:lato;font-style:normal;font-weight:400;src:url(/fonts/lato-v25-latin-regular.woff2)format('woff2');font-display:swap}@font-face{font-family:lato;font-style:normal;font-weight:700;src:url(/fonts/lato-v25-latin-700.woff2)format('woff2');font-display:swap}body{font-family:lato,sans-serif;background-color:#fcfcfc;color:#333}button{font-family:lato,sans-serif;font-weight:700}#galerie-grid img{cursor:pointer}.status-container{transition:opacity .3s ease;opacity:0}.status-container.show{opacity:1}