@import "https://fonts.googleapis.com/css2?family=Lora:wght@400;500;600;700&display=swap";@font-face{font-family:Gibs;src:url(/Gibs.otf)format("opentype");font-weight:400;font-style:normal}@font-face{font-family:Velana;src:url(/Velana-Oblique.otf)format("opentype");font-weight:400;font-style:italic}:root{--primary-pink:#e91e63;--secondary-pink:#ff6b9d;--dark-text:#2c2c2c;--light-text:#666;--cream:#f9f9f9;--white:#fff;--border:#e0e0e0;--shadow:0 2px 10px rgba(0,0,0,.08);--shadow-hover:0 4px 20px rgba(0,0,0,.12)}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{color:var(--dark-text);background:var(--cream);min-height:100vh;margin:0;font-family:Lora,serif}#root{position:relative}h1,h2,h3,h4,h5,h6{color:var(--dark-text);text-transform:uppercase;letter-spacing:2px;font-family:Gibs,serif;font-weight:600}h1{font-size:max(2.5rem,min(6vw,4rem))}h2{margin-bottom:1rem;font-size:max(1.8rem,min(4vw,2.5rem))}h3{font-size:max(1.2rem,min(2.5vw,1.5rem))}.script-font{text-transform:none;letter-spacing:0;font-family:Gibs,serif;font-weight:400}.top-nav{background:var(--white);box-shadow:var(--shadow);z-index:1000;padding:1rem 2rem;position:fixed;top:0;left:0;right:0}.nav-container{justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto;display:flex}.nav-logo{color:var(--primary-pink);font-family:Gibs,serif;font-size:1.8rem;text-decoration:none}.nav-menu{gap:2rem;list-style:none;display:flex}.nav-link{text-transform:uppercase;letter-spacing:1px;color:var(--dark-text);cursor:pointer;background:0 0;border:none;font-family:Gibs,serif;font-size:.9rem;font-weight:500;text-decoration:none;transition:color .3s}.nav-link:hover,.nav-link.active{color:var(--primary-pink)}.bottom-nav{background:var(--white);border-top:1px solid var(--border);padding:.5rem 0;display:none;box-shadow:0 -2px 10px rgba(0,0,0,.1);z-index:1000!important;position:fixed!important;bottom:0!important;left:0!important;right:0!important}body:not(.lightbox-open) .bottom-nav{z-index:11000!important}.bottom-nav-container{justify-content:space-around;align-items:center;max-width:600px;margin:0 auto;padding:0 1rem;display:flex}.nav-icon-btn{color:var(--light-text);cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:center;gap:.25rem;min-width:70px;padding:.5rem 1rem;transition:all .3s;display:flex}.nav-icon-btn.active{color:var(--primary-pink)}.nav-icon{stroke-width:2px;width:24px;height:24px}.nav-icon-label{text-transform:uppercase;letter-spacing:.5px;font-family:Lora,serif;font-size:.7rem;font-weight:600}.wedding-app{opacity:0;transition:opacity .8s,transform .8s;transform:translateY(12px)}.wedding-app.show-content{opacity:1;transform:translateY(0)}.wedding-app.hide-content{pointer-events:none;user-select:none}.page-shell{min-height:100vh}.page-loader{min-height:50vh;color:var(--light-text);place-items:center;font-size:1.2rem;display:grid}.skeleton-page{min-height:100vh}.skeleton-stack{gap:1rem;display:grid}.skeleton-block{background:linear-gradient(90deg,rgba(233,30,99,.08) 0%,rgba(233,30,99,.18) 50%,rgba(233,30,99,.08) 100%) 0 0/240% 100%;border-radius:14px;width:100%;animation:1.4s ease-in-out infinite skeleton-shimmer}.skeleton-title{width:min(18rem,90%);height:2.25rem;margin-left:auto;margin-right:auto}.skeleton-line{width:min(42rem,100%);height:1rem;margin-left:auto;margin-right:auto}.skeleton-line-medium{width:min(28rem,95%)}.skeleton-line-short{width:min(24rem,80%)}.skeleton-hero{height:max(180px,min(30vw,320px))}.skeleton-events-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;display:grid}.skeleton-event-card{height:150px}.skeleton-map{height:max(220px,min(36vw,380px))}.skeleton-row{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:.75rem;display:grid}.skeleton-chip{border-radius:999px;height:42px}.skeleton-gallery-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.85rem;display:grid}.skeleton-gallery-tile{aspect-ratio:1}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.tab-page{width:100%}.section-shell{padding:4rem 2rem}.section-container{max-width:1200px;margin:0 auto}.opening-overlay-new{width:100vw;min-height:100vh;z-index:9999;flex-direction:column;justify-content:center;align-items:center;gap:3rem;min-height:100dvh;padding:2rem;display:flex;position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}.opening-content{will-change:transform;flex-direction:column;align-items:center;gap:3rem;display:flex}.sparkles-container{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.sparkle{pointer-events:none;background:radial-gradient(circle,gold 0%,#ff6b35 50%,transparent 70%);border-radius:50%;width:6px;height:6px;position:absolute}.hearts-container{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.floating-heart{pointer-events:none;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));font-size:1.5rem;position:absolute}.wedding-invitation-card{width:min(90vw,500px);transform-style:preserve-3d;background:linear-gradient(135deg,#fff 0%,#fefefe 100%);border-radius:20px;position:relative;overflow:hidden;box-shadow:0 25px 80px rgba(0,0,0,.15),0 0 0 1px rgba(233,30,99,.1),inset 0 1px rgba(255,255,255,.9)}.card-border{-webkit-mask-composite:xor;background:linear-gradient(45deg,#e91e63,#ff6b9d,gold,#ff6b35) border-box;border:2px solid transparent;border-radius:15px;position:absolute;top:15px;bottom:15px;left:15px;right:15px;-webkit-mask-image:linear-gradient(#fff 0,#fff 0),linear-gradient(#fff 0,#fff 0);mask-image:linear-gradient(#fff 0,#fff 0),linear-gradient(#fff 0,#fff 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:padding-box,border-box;mask-clip:padding-box,border-box;-webkit-mask-origin:padding-box,border-box;mask-origin:padding-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.border-corner{border:2px solid var(--primary-pink);width:20px;height:20px;position:absolute}.border-top-left{border-bottom:none;border-right:none;border-radius:15px 0 0;top:-2px;left:-2px}.border-top-right{border-bottom:none;border-left:none;border-radius:0 15px 0 0;top:-2px;right:-2px}.border-bottom-left{border-top:none;border-right:none;border-radius:0 0 0 15px;bottom:-2px;left:-2px}.border-bottom-right{border-top:none;border-left:none;border-radius:0 0 15px;bottom:-2px;right:-2px}.card-content{text-align:center;z-index:2;padding:3rem 2.5rem;position:relative}.header-ornament{filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));margin-bottom:1.5rem;font-size:2rem}.invitation-title{color:var(--primary-pink);text-transform:none;letter-spacing:0;text-shadow:0 2px 4px rgba(0,0,0,.1);background:linear-gradient(135deg,#e91e63 0%,#ff6b9d 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:0 0 1rem;font-family:Segoe Script,Lucida Handwriting,Brush Script MT,Velana,cursive;font-size:max(2.5rem,min(8vw,4rem));line-height:1.1}.invitation-subtitle{color:var(--dark-text);text-transform:uppercase;letter-spacing:3px;opacity:.8;margin:0 0 2rem;font-family:Gibs,serif;font-size:max(.9rem,min(2.5vw,1.1rem))}.divider{background:linear-gradient(90deg, transparent 0%, var(--primary-pink) 50%, transparent 100%);border-radius:1px;width:120px;height:2px;margin:0 auto 2rem}.rings-animation{width:80px;height:80px;margin:0 auto 2rem;position:relative}.ring{border:3px solid;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ring-1{border-color:gold;width:40px;height:40px;box-shadow:0 0 10px rgba(255,215,0,.3)}.ring-2{border-color:#e91e63;width:60px;height:60px;box-shadow:0 0 10px rgba(233,30,99,.3)}.love-message{color:var(--dark-text);text-transform:uppercase;letter-spacing:2px;justify-content:center;align-items:center;gap:.75rem;font-family:Gibs,serif;font-size:.9rem;font-weight:500;display:flex}.open-invitation-btn{color:var(--white);text-transform:uppercase;letter-spacing:2px;cursor:pointer;background:linear-gradient(135deg,#e91e63 0%,#ff6b9d 100%);border:none;border-radius:50px;padding:1.25rem 3rem;font-family:Gibs,serif;font-size:max(.9rem,min(2.5vw,1.1rem));font-weight:700;transition:all .3s;position:relative;overflow:hidden;box-shadow:0 15px 35px rgba(233,30,99,.3),0 5px 15px rgba(0,0,0,.1)}.open-invitation-btn:before{content:"";background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);width:100%;height:100%;transition:left .5s;position:absolute;top:0;left:-100%}.open-invitation-btn:hover:before{left:100%}.opening-animation{backdrop-filter:blur(10px);z-index:10;background:rgba(255,255,255,.95);justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.opening-text{text-align:center;color:var(--dark-text)}.opening-text h2{color:var(--primary-pink);text-transform:none;letter-spacing:0;margin:0 0 .5rem;font-family:Gibs,serif;font-size:max(2rem,min(6vw,3rem))}.opening-text p{text-transform:uppercase;letter-spacing:2px;opacity:.7;margin:0 0 1.5rem;font-family:Gibs,serif;font-size:1rem}.loading-hearts{font-size:1.5rem;display:inline-block}@media (max-width:768px){.opening-overlay-new{gap:2rem;padding:1rem}.wedding-invitation-card{width:95vw}.card-content{padding:2.5rem 2rem}.header-ornament{margin-bottom:1rem;font-size:1.5rem}.rings-animation{width:60px;height:60px;margin:0 auto 1.5rem}.ring-1{width:30px;height:30px}.ring-2{width:45px;height:45px}.open-invitation-btn{padding:1rem 2.5rem;font-size:.9rem}.floating-heart{font-size:1.2rem}}@media (max-width:480px){.opening-overlay-new{gap:1.5rem;padding:.5rem}.wedding-invitation-card{border-radius:15px;width:98vw}.card-border{border-radius:10px;top:10px;bottom:10px;left:10px;right:10px}.card-content{padding:2rem 1.5rem}.border-corner{width:15px;height:15px}.divider{width:80px;margin:0 auto 1.5rem}.love-message{gap:.5rem;font-size:.8rem}.open-invitation-btn{letter-spacing:1px;padding:.9rem 2rem;font-size:.8rem}.floating-heart{font-size:1rem}.sparkle{width:4px;height:4px}}.opening-overlay{width:100vw;min-height:100vh;z-index:9999;perspective:1500px;background:linear-gradient(135deg,#fce4ec 0%,#f8bbd0 50%,#f48fb1 100%);flex-direction:column;justify-content:center;align-items:center;gap:3rem;min-height:100dvh;display:flex;position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}.confetti-container{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.confetti{border-radius:2px;width:10px;height:10px;position:absolute}.confetti:nth-child(4n){background:var(--primary-pink)}.confetti:nth-child(4n+1){background:#fff;border-radius:50%}.confetti:nth-child(4n+2){background:#ff6b35}.confetti:nth-child(4n+3){background:gold;width:8px;height:8px}.card-wrapper{width:500px;height:320px;transform-style:preserve-3d;position:relative}.door{border:3px solid var(--primary-pink);width:50%;height:100%;transform-style:preserve-3d;backface-visibility:hidden;background:linear-gradient(135deg,#fff 0%,#fef5f8 100%);border-radius:12px;position:absolute;top:0;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.25)}.door-left{transform-origin:0;border-right:1.5px solid var(--primary-pink);left:0}.door-right{transform-origin:100%;border-left:1.5px solid var(--primary-pink);right:0}.door-content{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.door-ornament{border:3px solid var(--primary-pink);opacity:.3;border-radius:50%;width:60px;height:60px;position:relative}.door-ornament:before{content:"";border:2px solid var(--primary-pink);border-radius:50%;width:30px;height:30px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.inner-content{text-align:center;z-index:-1;background:linear-gradient(135deg,#fff5f8 0%,#ffe4ec 100%);border-radius:12px;justify-content:center;align-items:center;width:100%;height:100%;padding:2rem;display:flex;position:absolute;top:0;left:0}.inner-title{color:var(--primary-pink);margin:0 0 .5rem;font-family:Gibs,serif;font-size:3.5rem;line-height:1}.inner-subtitle{color:var(--dark-text);text-transform:uppercase;letter-spacing:3px;margin:0 0 1rem;font-family:Gibs,serif;font-size:1rem}.heart-icon{font-size:2.5rem;animation:1.5s ease-in-out infinite heartbeat}@keyframes heartbeat{0%,to{transform:scale(1)}25%{transform:scale(1.1)}50%{transform:scale(1)}}.unlock-btn{background:var(--white);color:var(--primary-pink);text-transform:uppercase;letter-spacing:2px;cursor:pointer;z-index:10;border:none;border-radius:50px;padding:1.2rem 3rem;font-family:Gibs,serif;font-size:1rem;font-weight:600;transition:all .3s;box-shadow:0 10px 30px rgba(0,0,0,.2)}.unlock-btn:hover{background:var(--primary-pink);color:var(--white);box-shadow:0 15px 40px rgba(233,30,99,.4)}.unlock-btn span{align-items:center;gap:.5rem;display:flex}@media (max-width:768px){.opening-overlay{min-height:100vh;justify-content:stretch;gap:0;min-height:100dvh}.card-wrapper{width:100vw;height:100vh;height:100dvh}.door,.inner-content{border-radius:0}.inner-title{font-size:2.8rem}.inner-subtitle{font-size:.9rem}.heart-icon{font-size:2rem}}@media (max-width:480px){.door{border:2px solid var(--primary-pink);border-radius:0}.door-left{border-right:1px solid var(--primary-pink)}.door-right{border-left:1px solid var(--primary-pink)}.door-ornament{border:2px solid var(--primary-pink);width:40px;height:40px}.door-ornament:before{width:20px;height:20px}.inner-content{border-radius:0;padding:1.5rem}.inner-title{font-size:2.2rem}.inner-subtitle{letter-spacing:2px;font-size:.75rem}.heart-icon{font-size:1.8rem}.unlock-btn{left:1rem;right:1rem;bottom:calc(env(safe-area-inset-bottom,0px) + 1.25rem);padding:1rem 2rem;font-size:.85rem;position:absolute}}.wedding-card{background:var(--white);border:2px solid var(--primary-pink);text-align:center;border-radius:8px;width:min(90vw,450px);padding:3rem 2rem;box-shadow:0 20px 60px rgba(0,0,0,.2)}.open-heading{color:var(--dark-text);text-transform:uppercase;letter-spacing:2px;margin-bottom:2rem;font-family:Gibs,serif;font-size:max(1.5rem,min(4vw,2rem))}.open-btn,.primary-btn,.music-toggle,.upload-action-btn{background:var(--primary-pink);color:var(--white);text-transform:uppercase;letter-spacing:1px;cursor:pointer;border:none;border-radius:4px;padding:.8rem 2rem;font-family:Gibs,serif;font-size:.9rem;font-weight:600;text-decoration:none;transition:all .3s;display:inline-block}.open-btn:hover,.primary-btn:hover,.music-toggle:hover,.upload-action-btn:hover{background:var(--secondary-pink);box-shadow:var(--shadow-hover);transform:translateY(-2px)}.open-btn:disabled,.primary-btn:disabled,.music-toggle:disabled{opacity:.6;cursor:not-allowed}.hero{background:linear-gradient(135deg,rgba(255,247,250,.78) 0%,rgba(255,239,245,.7) 45%,rgba(252,233,241,.72) 100%),url(/back.JPG.jpeg) 50%/cover no-repeat;justify-content:center;align-items:center;min-height:100vh;margin:0;padding:0;display:flex;position:relative;overflow:hidden}.hero-content{z-index:2;text-align:center;max-width:1200px;padding:2rem;position:relative}.hero-badge{background:var(--white);border:8px solid var(--cream);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;width:350px;height:350px;margin:0 auto 2rem;display:flex;position:relative;box-shadow:0 10px 40px rgba(0,0,0,.15)}.hero-badge:before{content:"";border:2px dashed var(--primary-pink);opacity:.3;border-radius:50%;width:100%;height:100%;position:absolute}.save-date-label{letter-spacing:2px;text-transform:uppercase;color:var(--light-text);margin-bottom:.5rem;font-family:Gibs,serif;font-size:.75rem}.couple-names{flex-direction:column;gap:.5rem;display:flex}.bride-name,.groom-name{font-size:max(2rem,min(5vw,3rem));font-weight:700;line-height:1}.bride-name{color:var(--primary-pink)}.groom-name{color:#ff6b35}.wedding-date-badge{color:var(--dark-text);font-family:Gibs,serif;font-size:.9rem}.date-number{color:var(--primary-pink);font-size:2rem;font-weight:700;display:block}.hero-subline{color:var(--light-text);max-width:600px;margin:2rem auto;font-size:1.1rem;line-height:1.8}.petal-wrap{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.petal{background:var(--primary-pink);opacity:.3;border-radius:50%;width:8px;height:8px;animation:8s ease-in-out infinite float;position:absolute}.petal:nth-child(odd){background:#ff6b35}@keyframes float{0%,to{transform:translateY(0)translate(0)rotate(0)}50%{transform:translateY(-20px)translate(10px)rotate(180deg)}}.countdown-grid{justify-content:center;gap:1.5rem;margin:2rem 0;display:flex}.countdown-item{text-align:center}.countdown-item strong{color:var(--primary-pink);font-family:Gibs,serif;font-size:2.5rem;font-weight:700;display:block}.countdown-item span{text-transform:uppercase;letter-spacing:1px;color:var(--light-text);font-size:.8rem;font-weight:600}.music-fab{width:60px;height:60px;color:var(--white);cursor:pointer;z-index:999;background:linear-gradient(135deg,#e91e63 0%,#ff6b9d 100%);border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:all .3s cubic-bezier(.34,1.56,.64,1);display:flex;position:fixed;bottom:90px;right:20px;box-shadow:0 6px 20px rgba(233,30,99,.4)}.music-fab:hover:not(:disabled){transform:scale(1.1)translateY(-4px);box-shadow:0 10px 30px rgba(233,30,99,.5)}.music-fab:active:not(:disabled){transform:scale(.95)}.music-fab:disabled{opacity:.6;cursor:not-allowed}.speaker-icon{stroke-linecap:round;stroke-linejoin:round;width:28px;height:28px}.language-fab{color:var(--dark-text);cursor:pointer;z-index:999;background:rgba(255,255,255,.94);border:none;border-radius:999px;align-items:center;gap:.55rem;padding:.5rem .85rem;transition:transform .25s,box-shadow .25s;display:inline-flex;position:fixed;bottom:90px;right:20px;box-shadow:0 8px 24px rgba(44,44,44,.16)}.language-fab.above-music{bottom:162px}.language-fab:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(44,44,44,.2)}.language-fab-code{letter-spacing:.6px;text-transform:uppercase;color:var(--primary-pink);font-family:Gibs,serif;font-size:.78rem}.language-fab-label{color:var(--dark-text);font-size:.72rem;font-weight:600;line-height:1}@media (max-width:768px){.music-fab{width:56px;height:56px;bottom:80px;right:15px}.speaker-icon{width:26px;height:26px}.language-fab{gap:.5rem;padding:.46rem .75rem;bottom:80px;right:15px}.language-fab.above-music{bottom:146px}.language-fab-label{font-size:.68rem}}@media (max-width:480px){.music-fab{width:52px;height:52px;bottom:75px;right:12px}.speaker-icon{width:24px;height:24px}.language-fab{padding:.42rem .64rem;bottom:75px;right:12px}.language-fab.above-music{bottom:136px}.language-fab-label{display:none}}.couple-section{background:var(--white);text-align:center}.couple-section h2{margin-bottom:3rem}.couple-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:3rem;max-width:900px;margin:0 auto;display:grid}.couple-card{text-align:center}.couple-image-wrap{border:4px solid var(--cream);width:200px;height:200px;box-shadow:var(--shadow);border-radius:50%;margin:0 auto 1.5rem;position:relative;overflow:hidden}.couple-image-wrap img{object-fit:cover;width:100%;height:100%}.couple-role{color:var(--primary-pink);text-transform:uppercase;letter-spacing:2px;margin-bottom:.5rem;font-size:.85rem;font-weight:600}.couple-name{color:var(--dark-text);margin-bottom:1rem;font-size:1.8rem}.couple-bio{color:var(--light-text);font-size:.95rem;line-height:1.6}.couple-social{justify-content:center;gap:1rem;margin-top:1rem;display:flex}.social-icon{background:var(--cream);width:36px;height:36px;color:var(--dark-text);border-radius:50%;justify-content:center;align-items:center;text-decoration:none;transition:all .3s;display:flex}.social-icon:hover{background:var(--primary-pink);color:var(--white);transform:translateY(-2px)}.features-section{background:var(--cream)}.features-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:2rem;display:grid}.feature-card{text-align:center;padding:2rem 1rem}.feature-icon{background:var(--primary-pink);width:60px;height:60px;color:var(--white);border-radius:50%;justify-content:center;align-items:center;margin:0 auto 1rem;font-size:1.5rem;display:flex}.feature-card h3{margin-bottom:.5rem;font-size:1rem}.feature-card p{color:var(--light-text);font-size:.9rem;line-height:1.6}.gallery-section{background:var(--white);text-align:center}.gallery-header{margin-bottom:3rem}.gallery-subtitle{color:var(--light-text);margin-top:.5rem;font-size:1rem}.gallery-title-admin{user-select:none;cursor:pointer}.section-label{color:var(--primary-pink);text-transform:uppercase;letter-spacing:2px;margin-bottom:.5rem;font-family:Gibs,serif;font-size:.85rem;font-weight:600}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;margin-bottom:3rem;display:grid}.gallery-item{aspect-ratio:1;box-shadow:var(--shadow);background:var(--cream);border-radius:12px;margin:0;transition:all .3s;position:relative;overflow:hidden}.gallery-item:hover{box-shadow:var(--shadow-hover);transform:translateY(-8px)}.gallery-item-btn{cursor:pointer;background:0 0;border:0;width:100%;height:100%;padding:0;display:block}.gallery-delete-btn{color:var(--white);cursor:pointer;z-index:3;background:rgba(0,0,0,.62);border:none;border-radius:999px;padding:.36rem .72rem;font-size:.75rem;font-weight:600;position:absolute;top:.6rem;right:.6rem}.gallery-delete-btn:disabled{opacity:.7;cursor:not-allowed}.gallery-item img{object-fit:cover;width:100%;height:100%;transition:transform .3s;display:block}.gallery-item:hover img{transform:scale(1.05)}.gallery-info,.gallery-error{text-align:center;color:var(--light-text);padding:3rem 2rem;font-size:1.1rem}.gallery-error{color:#d32f2f}.timeline-section{background:var(--cream);text-align:center}.timeline{max-width:800px;margin:3rem auto 0;padding-left:0;position:relative}.timeline:before{display:none}.timeline-item{background:var(--white);box-shadow:var(--shadow);text-align:left;border-radius:8px;margin:0 0 2rem;padding:2rem;transition:all .3s;position:relative}.timeline-item:hover{box-shadow:var(--shadow-hover);transform:translateY(-3px)}.timeline-dot{display:none}.timeline-item h3{color:var(--dark-text);margin-bottom:.5rem}.timeline-date{color:var(--primary-pink);margin-bottom:.5rem;font-family:Lora,serif;font-size:.9rem;font-weight:600}.timeline-item p:last-child{color:var(--light-text);margin:0;line-height:1.6}.events-section{background:var(--white);text-align:center}.events-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;margin-top:2rem;display:grid}.event-card{background:var(--cream);box-shadow:var(--shadow);text-align:center;border-radius:8px;padding:2rem 1.5rem;transition:all .3s}.event-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-5px)}.event-card h3{color:var(--dark-text);margin-bottom:1rem}.event-card p:first-of-type{color:var(--primary-pink);margin:0 0 .5rem;font-size:.9rem;font-weight:700}.event-card p{color:var(--light-text);margin:.3rem 0;font-size:.9rem;line-height:1.6}.location-section{background:var(--cream);text-align:center}.location-wrap h2{text-align:center;margin-bottom:2rem}.detail-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;margin-bottom:2rem;display:grid}.detail-grid article{background:var(--white);box-shadow:var(--shadow);text-align:center;border-radius:8px;padding:1.5rem}.detail-grid h3{color:var(--dark-text);margin-bottom:.5rem;font-size:1rem}.detail-grid p{color:var(--light-text);font-size:.95rem}.map-frame{box-shadow:var(--shadow);border-radius:8px;margin:2rem 0;overflow:hidden}.map-frame iframe{border:none;width:100%;min-height:400px}.helper-text{color:var(--light-text);margin-bottom:1.5rem;font-size:.95rem}.direction-btn{background:var(--primary-pink);color:var(--white);text-transform:uppercase;letter-spacing:1px;cursor:pointer;box-shadow:var(--shadow);border:none;border-radius:4px;align-items:center;gap:.5rem;padding:.9rem 2rem;font-family:Gibs,serif;font-size:.9rem;font-weight:600;transition:all .3s;display:inline-flex}.direction-btn:hover{background:var(--secondary-pink);box-shadow:var(--shadow-hover);transform:translateY(-2px)}.direction-btn svg{stroke:currentColor}.contact-panel{background:var(--white);box-shadow:var(--shadow);border-radius:8px;margin-top:2rem;padding:2rem}.contact-panel h3{color:var(--dark-text);text-align:center;margin:0 0 1rem}.contact-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;display:grid}.contact-btn{text-align:center;background:var(--cream);color:var(--dark-text);border:1px solid var(--border);border-radius:4px;justify-content:center;align-items:center;gap:.5rem;padding:.8rem 1.5rem;font-size:.9rem;font-weight:600;text-decoration:none;transition:all .3s;display:inline-flex}.contact-btn:hover{background:var(--primary-pink);color:var(--white);border-color:var(--primary-pink);box-shadow:var(--shadow);transform:translateY(-2px)}.contact-btn svg{stroke:currentColor}.upload-trigger-btn{border:2px dashed var(--primary-pink);color:var(--primary-pink);text-transform:uppercase;letter-spacing:1px;cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:.75rem;margin:2rem auto;padding:1rem 2.5rem;font-family:Gibs,serif;font-size:1rem;font-weight:600;transition:all .3s;display:inline-flex}.upload-trigger-btn:hover{background:var(--primary-pink);color:var(--white);box-shadow:var(--shadow-hover);transform:translateY(-2px)}.upload-trigger-btn svg{stroke:currentColor;width:24px;height:24px}.upload-fab-btn{z-index:1200;width:52px;height:52px;color:var(--white);cursor:pointer;background:linear-gradient(135deg,#e91e63 0%,#ff6b9d 100%);border:none;border-radius:50%;justify-content:center;align-items:center;transition:transform .28s,opacity .28s,box-shadow .28s;display:inline-flex;position:fixed;bottom:90px;right:20px;box-shadow:0 8px 24px rgba(233,30,99,.35)}.upload-fab-btn:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(233,30,99,.48)}.upload-fab-btn:disabled,.upload-fab-btn.is-hidden{opacity:0;pointer-events:none;transform:translateY(14px)scale(.92)}.upload-fab-btn svg{stroke:currentColor;width:21px;height:21px}.upload-modal-overlay{z-index:9999;backdrop-filter:blur(4px);background:rgba(0,0,0,.75);justify-content:center;align-items:center;padding:1.2rem;display:flex;position:fixed;top:0;bottom:0;left:0;right:0;overflow-y:auto}.admin-modal-overlay{z-index:10010;background:rgba(0,0,0,.75);place-items:center;padding:1rem;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.admin-modal{background:var(--white);border-radius:12px;width:min(420px,100%);padding:2rem 1.5rem;position:relative;box-shadow:0 20px 60px rgba(0,0,0,.3)}.admin-modal h3{color:var(--dark-text);text-align:center;margin:0 0 .5rem}.admin-modal>p{color:var(--light-text);text-align:center;margin-bottom:1rem}.upload-modal{background:var(--white);border-radius:12px;width:min(500px,100%);max-height:90vh;margin:auto;padding:2.5rem 2rem;position:relative;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.3)}.modal-close{background:var(--cream);width:36px;height:36px;color:var(--dark-text);cursor:pointer;border:none;border-radius:50%;place-items:center;font-size:1.5rem;transition:all .3s;display:grid;position:absolute;top:1rem;right:1rem}.modal-close:hover{background:var(--primary-pink);color:var(--white);transform:rotate(90deg)}.upload-modal h3{color:var(--dark-text);text-align:center;margin:0 0 .5rem}.upload-modal>p{color:var(--light-text);text-align:center;margin-bottom:2rem}.upload-actions{grid-template-columns:repeat(2,1fr);gap:1rem;margin-bottom:1.5rem;display:grid}.upload-loader-card{min-height:56px;color:var(--dark-text);background:rgba(233,30,99,.08);border-radius:12px;grid-column:1/-1;justify-content:center;align-items:center;gap:.65rem;margin-top:.2rem;padding:.9rem 1rem;font-weight:600;display:flex}.upload-loader-card p{margin:0}.upload-spinner{border:2px solid rgba(233,30,99,.22);border-top-color:var(--primary-pink);border-radius:50%;width:19px;height:19px;animation:.85s linear infinite upload-spin}@keyframes upload-spin{to{transform:rotate(360deg)}}.upload-option-btn{border:2px solid var(--border);background:var(--cream);color:var(--dark-text);cursor:pointer;border-radius:8px;flex-direction:column;align-items:center;gap:.75rem;padding:2rem 1rem;font-weight:600;transition:all .3s;display:flex}.upload-option-btn:hover{border-color:var(--primary-pink);background:var(--white);box-shadow:var(--shadow);transform:translateY(-4px)}.upload-option-btn svg{width:40px;height:40px;stroke:var(--primary-pink)}.hidden-input{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.preview-card{background:var(--cream);text-align:center;border-radius:8px;margin-top:1.5rem;padding:1.5rem}.preview-card p{color:var(--dark-text);margin:0 0 1rem;font-weight:600}.upload-passcode-input{width:100%;max-width:320px;font:inherit;border:1px solid #d7d7d7;border-radius:8px;margin-bottom:1rem;padding:.75rem .9rem}.upload-passcode-input:focus{border-color:var(--primary-pink);outline:none;box-shadow:0 0 0 3px rgba(255,98,146,.16)}.preview-card img{object-fit:cover;border-radius:8px;width:100%;max-height:300px;margin-bottom:1rem}.preview-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;margin-bottom:1rem;display:grid}.preview-grid img{object-fit:cover;border:1px solid var(--border);border-radius:8px;width:100%;height:96px}.upload-error{color:#d32f2f;text-align:center;margin-top:1rem;font-weight:600}body.lightbox-open .bottom-nav{display:none!important}.lightbox-overlay{z-index:9999;touch-action:pan-x;background:rgba(0,0,0,.95);justify-content:center;align-items:center;padding:max(.75rem,min(2vw,1.5rem));display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.lightbox-content{justify-content:center;align-items:center;width:100%;max-width:100vw;height:100%;max-height:100dvh;padding:max(.75rem,min(2vw,1.5rem));display:flex;position:relative}.lightbox-close{backdrop-filter:blur(10px);width:44px;height:44px;color:var(--white);cursor:pointer;z-index:10;background:rgba(255,255,255,.2);border:none;border-radius:50%;place-items:center;font-size:2rem;transition:all .3s;display:grid;position:absolute;top:1rem;right:1rem}.lightbox-close:hover{background:rgba(255,255,255,.3);transform:rotate(90deg)}.lightbox-image{object-fit:contain;user-select:none;touch-action:manipulation;width:auto;max-width:min(96vw,100vw - 3rem);height:auto;max-height:min(92dvh,100dvh - 4rem);transition:transform .1s ease-out;display:block}.lightbox-counter{backdrop-filter:blur(10px);color:var(--white);z-index:10;background:rgba(0,0,0,.6);border-radius:20px;padding:.5rem 1.5rem;font-size:.9rem;font-weight:600;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}.lightbox-delete-btn{color:var(--white);cursor:pointer;z-index:10;background:rgba(211,47,47,.88);border:none;border-radius:999px;padding:.55rem 1rem;font-size:.9rem;font-weight:700;position:absolute;bottom:2rem;right:1rem}.lightbox-delete-btn:disabled{opacity:.7;cursor:not-allowed}.share-panel{text-align:center;background:var(--white);padding:4rem 2rem}.share-panel h3{margin-bottom:1rem}.share-panel p{color:var(--light-text);margin-bottom:1.5rem}.whatsapp-btn{background:#25d366;border:none}.whatsapp-btn:hover{background:#20ba5a}.footer{background:var(--dark-text);color:var(--white);text-align:center;padding:2rem}.footer-names{color:var(--primary-pink);margin-bottom:1rem;font-family:Gibs,serif;font-size:2rem}.footer p{opacity:.8;font-size:.9rem}@media (max-width:768px){.top-nav{padding:.5rem 1rem}.nav-menu{display:none}.nav-logo{font-size:1.5rem}.bottom-nav{display:block!important;position:fixed!important;bottom:0!important}body{padding-bottom:0}.wedding-app{margin-top:50px;padding-bottom:0}.page-shell{padding-bottom:70px}.section-shell{padding:0}.hero{background-position:50% 22%;background-size:165%;min-height:calc(100vh - 50px);padding:0}.hero-content{padding:1rem}.hero-badge{width:240px;height:240px}.bride-name,.groom-name{font-size:max(1.5rem,min(8vw,2.5rem))}.countdown-grid{gap:1rem}.countdown-item strong{font-size:2rem}.gallery-grid{grid-template-columns:repeat(3,1fr);gap:.5rem}.gallery-item{aspect-ratio:1}.couple-grid{grid-template-columns:1fr;gap:2rem}.events-grid{grid-template-columns:1fr}.map-frame iframe{min-height:300px}.timeline-section,.events-section,.gallery-section,.location-section,.share-panel{padding:2rem 1rem}.upload-fab-btn{width:50px;height:50px;bottom:80px;right:15px}}@media (max-width:480px){.top-nav{padding:.4rem 1rem}.nav-logo{font-size:1.3rem}.bottom-nav{padding:.5rem 0}.nav-icon-btn{min-width:60px;padding:.4rem .5rem}.nav-icon{width:22px;height:22px}.nav-icon-label{font-size:.65rem}.wedding-app{margin-top:0}.section-shell{padding:0}.hero{background-position:50% 20%;background-size:210%;min-height:calc(100vh - 45px);padding:0}.hero-content{padding:.5rem}h2{font-size:max(1.5rem,min(6vw,2rem))}.hero-badge{width:250px;height:250px}.countdown-grid{gap:.5rem}.countdown-item strong{font-size:1.5rem}.countdown-item span{font-size:.7rem}.timeline-section,.events-section,.gallery-section,.location-section,.share-panel{padding:1.5rem .75rem}.gallery-grid{grid-template-columns:repeat(3,1fr);gap:.35rem}.gallery-item{aspect-ratio:1}.upload-actions{grid-template-columns:1fr}.upload-trigger-btn{padding:.9rem 2rem;font-size:.76rem}.upload-fab-btn{width:46px;height:46px;bottom:75px;right:12px}.upload-fab-btn svg{width:18px;height:18px}.lightbox-close{width:40px;height:40px;top:.5rem;right:.5rem}.lightbox-counter{padding:.4rem 1.2rem;font-size:.85rem;bottom:1rem}}
