:root{--color-bg:#e9efe1;--color-text:#2f3e25;--color-accent:#a3ad6b;--color-accent-dark:#6e7a46;--font-serif:"Playfair Display", serif;--font-sans:"Inter", sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;overflow-x:hidden}h1,h2,h3,.subtitle,.signature{font-family:var(--font-serif);font-weight:400}.audio-btn{z-index:1000;border:1px solid var(--color-text);cursor:pointer;width:40px;height:40px;color:var(--color-text);background:0 0;border-radius:50%;justify-content:center;align-items:center;transition:all .3s;display:flex;position:fixed;top:20px;right:20px}.audio-btn:hover{background:var(--color-text);color:var(--color-bg)}#loader{background:var(--color-bg);z-index:9999;justify-content:center;align-items:center;width:100vw;height:100vh;transition:opacity .8s,visibility .8s;display:flex;position:fixed;top:0;left:0}.loader-content{text-align:center}.loader-text{font-family:var(--font-serif);color:var(--color-accent-dark);letter-spacing:2px;font-size:1.5rem;animation:1.5s infinite pulse}.enter-btn{font-family:var(--font-serif);color:var(--color-accent-dark);border:1px solid var(--color-accent-dark);cursor:pointer;letter-spacing:2px;background:0 0;border-radius:30px;padding:12px 32px;font-size:1.2rem;transition:all .3s;animation:1s ease-out fadeIn}.enter-btn:hover{background:var(--color-accent-dark);color:var(--color-bg)}@keyframes pulse{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}.scroll-track{width:100%;height:1000vh}.fixed-viewport{z-index:1;width:100vw;height:100vh;position:fixed;top:0;left:0}.abstract-bg{z-index:0;background:radial-gradient(circle,#fff 0%,#d4e0c8 100%);width:100%;height:100%;position:absolute;top:0;left:0}.abstract-bg:after{content:"";pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.08'/%3E%3C/svg%3E");width:100%;height:100%;position:absolute;top:0;left:0}.eclipse-container{z-index:1;pointer-events:none;transform-origin:50%;width:100%;height:100%;animation:12s ease-in-out infinite alternate float-celestial;position:absolute;top:0;left:0}.sun-wrapper,.moon-wrapper{width:120px;height:120px;position:absolute;top:20px}.sun-wrapper{opacity:.85;right:20px}.moon-wrapper{opacity:1;filter:contrast(1.3)brightness(1.1)drop-shadow(0 0 10px #fff6);left:20px}.celestial-img{width:100%;height:100%;display:block}@keyframes float-celestial{0%{transform:rotate(-2deg)translate(0)}50%{transform:rotate(1.5deg)translate(6px,-8px)}to{transform:rotate(-3deg)translate(-4px,10px)}}.eclipse-glow{opacity:0;pointer-events:none;background:radial-gradient(circle,#d6a13c59 0%,#0000 70%);border-radius:50%;width:250px;height:250px;position:absolute;top:80px;left:50%;transform:translate(-50%,-50%)}.scenes-container{z-index:2;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}.scene{opacity:0;visibility:hidden;justify-content:center;align-items:center;width:100%;height:100%;padding-top:40px;display:flex;position:absolute}#scene-1{opacity:1;visibility:visible}.scene-layout{justify-content:space-between;align-items:center;gap:4rem;width:100%;max-width:1200px;padding:0 4rem;display:flex}.scene-layout.center{text-align:center;justify-content:center}.scene-layout.reverse{flex-direction:row-reverse}.scene-text{flex:1;max-width:600px;font-size:1.5rem;line-height:1.8;animation:7s ease-in-out infinite alternate float-gentle}@keyframes float-gentle{0%{transform:translate(0)}50%{transform:translate(2px,-6px)}to{transform:translate(-2px,4px)}}.scene-layout.center .scene-text{margin:0 auto}.scene-image{opacity:0;flex:1;justify-content:center;align-items:center;display:flex;transform:translateY(50px)}.img-wrapper{aspect-ratio:4/3;--frame-top:-12.5%;--frame-left:-13.5%;--frame-width:127.1%;--frame-height:125.0%;background:#fff;border-radius:4px;flex-shrink:0;width:100%;max-width:450px;padding:3.5%;animation:8s ease-in-out infinite alternate float-normal;position:relative;overflow:visible;transform:rotate(-2deg);box-shadow:0 20px 40px #2f3e251a}.scene-layout.reverse .img-wrapper{animation:8s ease-in-out infinite alternate float-reverse;transform:rotate(2deg)}@keyframes float-normal{0%{transform:rotate(-2deg)translate(0)}50%{transform:rotate(-.5deg)translate(4px,-8px)}to{transform:rotate(-3.5deg)translate(-4px,6px)}}@keyframes float-reverse{0%{transform:rotate(2deg)translate(0)}50%{transform:rotate(3.5deg)translate(-4px,-8px)}to{transform:rotate(.5deg)translate(4px,6px)}}.img-wrapper.portrait{aspect-ratio:3/4;--frame-top:-13.5%;--frame-left:-12.5%;--frame-width:125.0%;--frame-height:127.1%;max-width:350px}.img-inner{border-radius:2px;width:100%;height:100%;overflow:hidden}.img-wrapper img:not(.roots-frame){object-fit:cover;will-change:transform;border-radius:0;width:100%;height:100%}.roots-frame{width:var(--frame-width,137%);height:var(--frame-height,124%);z-index:10;pointer-events:none;object-fit:fill;opacity:0;transform-origin:50%;transition:opacity .3s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)translateZ(0)}.roots-frame.active{opacity:1}.scene:not(.scene-active) .scene-text,.scene:not(.scene-active) .img-wrapper,.scene:not(.scene-active) .roots-frame,.scene:not(.scene-active) .countdown-sep{animation-play-state:paused}.roots-frame.swaying-vines{animation:8s ease-in-out infinite alternate wind-sway}@keyframes wind-sway{0%{transform:translate(-50%,-50%)translateZ(0)rotate(0)scale(1)}50%{transform:translate(-50%,-50%)translateZ(0)rotate(.4deg)scale(1.006)skew(.2deg)}to{transform:translate(-50%,-50%)translateZ(0)rotate(-.3deg)scale(.995)skewY(-.1deg)}}.char{opacity:0;display:inline-block;transform:translateY(20px)scale(.9)}#scene-1 h1{letter-spacing:-.02em;margin-bottom:.5rem;font-size:5rem}#scene-1 .subtitle{color:var(--color-accent-dark);font-size:1.8rem;font-style:italic}.scroll-indicator{text-transform:uppercase;letter-spacing:.1em;opacity:0;margin-top:5rem;font-size:.8rem}.mouse{border:2px solid var(--color-text);border-radius:12px;width:24px;height:36px;margin:10px auto;position:relative}.wheel{background:var(--color-text);border-radius:2px;width:4px;height:6px;animation:1.5s infinite scroll;position:absolute;top:5px;left:50%;transform:translate(-50%)}@keyframes scroll{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,15px)}}.climax h2{color:var(--color-accent-dark);margin:0 0 2rem;font-size:2.5rem;line-height:1.4}#scene-9 .scene-layout{align-items:flex-start;padding-top:150px}.signature{margin-top:3rem;font-size:2rem;font-style:italic}.card-style{color:var(--color-text);opacity:0;background:#fff;border-radius:16px;width:100%;max-width:700px;max-height:85vh;margin:0 auto;padding:3rem 4rem;overflow-y:auto;transform:scale(.9);box-shadow:0 20px 50px #2f3e2514}.details{flex-direction:column;align-items:center;gap:30px;margin:40px 0;display:flex}.detail-item{text-align:center}.detail-item strong{font-family:var(--font-serif);color:var(--color-accent-dark);margin-bottom:5px;font-size:1.2rem;display:block}.btn-map{border:1px solid var(--color-text);color:var(--color-text);border-radius:20px;margin-top:10px;padding:8px 20px;font-size:.9rem;text-decoration:none;transition:all .3s;display:inline-block}.btn-map:hover{background:var(--color-text);color:var(--color-bg)}.location-flex{justify-content:center;align-items:center;gap:40px;display:flex}.map-square{border:4px solid var(--color-accent-dark);border-radius:12px;flex-shrink:0;width:180px;height:180px;overflow:hidden;box-shadow:0 4px 10px #0000001a}.location-info{text-align:center;flex-direction:column;align-items:center;display:flex}@media (width<=480px){.location-flex{text-align:center;flex-direction:column;align-items:center;gap:20px}.location-info{text-align:center;align-items:center}.map-square{width:100%;height:200px}}.btn-rsvp{background:var(--color-text);color:var(--color-bg);text-transform:uppercase;letter-spacing:1px;cursor:pointer;border:none;border-radius:30px;padding:1rem 2.5rem;font-weight:500;text-decoration:none;transition:all .3s;display:inline-block}.btn-rsvp:hover{background:var(--color-accent-dark);color:#fff}.btn-map:hover{background:var(--color-accent-dark);color:#fff;border-color:var(--color-accent-dark)}.rsvp-section{text-align:left;border-top:1px solid #0000001a;margin-top:3rem;padding-top:2rem}.rsvp-section h3{font-family:var(--font-serif);color:var(--color-accent-dark);margin-bottom:1.5rem;font-size:1.8rem}.form-group{margin-bottom:1.5rem}.form-label{margin-bottom:.5rem;font-size:.95rem;font-weight:600;display:block}.radio-group{flex-wrap:wrap;gap:1rem;display:flex}.radio-label{cursor:pointer;align-items:center;gap:.4rem;font-size:.95rem;display:flex}.form-group.row{gap:1rem;display:flex}.form-group.row .col{flex:1}.form-input{width:100%;font-family:var(--font-sans);background:#fafafa;border:1px solid #ccc;border-radius:8px;padding:.8rem;font-size:1rem;transition:border-color .3s}.form-input:focus{border-color:var(--color-accent-dark);outline:none}.rsvp-message{text-align:center;background:#00000008;border-radius:12px;padding:2rem;font-size:1.2rem}.rsvp-message h3{font-family:var(--font-serif);color:var(--color-accent-dark)}.btn-rsvp{width:100%;margin-top:1rem}.btn-decline{width:100%;color:var(--color-muted);text-transform:uppercase;letter-spacing:1px;border:1px solid var(--color-muted);cursor:pointer;background:0 0;border-radius:30px;padding:1rem 2.5rem;font-weight:500;text-decoration:none;transition:all .3s}.btn-decline:hover{color:var(--color-text);background:#0000000d}.gifts-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:15px;margin-top:1rem;display:grid}.gift-card{text-align:center;background:#fff;border:1px solid #0000001a;border-radius:12px;padding:15px;transition:transform .2s}.gift-card:hover{transform:translateY(-5px);box-shadow:0 5px 15px #0000000d}.gift-card h5{color:var(--color-text);margin:0 0 10px;font-size:1rem}.gift-card p.price{color:var(--color-accent-dark);margin-bottom:15px;font-size:1.1rem;font-weight:700}.btn-gift{background:var(--color-accent);color:#fff;border-radius:20px;padding:6px 15px;font-size:.85rem;text-decoration:none;transition:background .2s;display:inline-block}.btn-gift:hover{background:var(--color-accent-dark)}@media (width<=1024px){.roots-frame{filter:none}.abstract-bg:after{display:none}}@media (width<=768px){.scene{padding-top:130px;padding-bottom:20px}#scene-9 .scene-layout{align-items:center;padding-top:0}.scene-layout{text-align:center;flex-direction:column;justify-content:center;padding:0 5vw}.scene-layout .scene-image{margin-top:8vh}.scene-layout.reverse{flex-direction:column}.scene-text{font-size:min(4.5vw,1.15rem);line-height:1.4}#scene-1 h1{font-size:min(12vw,3rem)}#scene-1 .subtitle{font-size:min(5.5vw,1.3rem)}.climax h2{font-size:min(7vw,1.8rem)}.signature{margin-top:2vh;font-size:min(6vw,1.5rem)}.img-wrapper{max-width:min(55vw,32vh);margin:0 auto}.img-wrapper.portrait{max-width:min(40vw,26vh)}.card-style{max-height:calc(100vh - 140px);padding:6vw 5vw;overflow-y:auto}.audio-btn{width:40px;height:40px;top:15px;right:15px}.sun-wrapper,.moon-wrapper,.eclipse-glow{width:70px;height:70px}.moon-wrapper{filter:contrast(1.3)brightness(1.1)}}@media (width<=375px),(height<=650px){.scene{padding-top:100px;padding-bottom:20px}.scene-layout .scene-image{margin-top:6vh}.scene-text{font-size:.95rem}.img-wrapper{max-width:min(50vw,28vh)}.img-wrapper.portrait{max-width:min(35vw,22vh)}}.countdown-wrapper{flex-direction:column;align-items:center;gap:2.5rem;width:100%;display:flex}.countdown-label{font-family:var(--font-serif);color:var(--color-accent-dark);letter-spacing:.15em;text-transform:uppercase;opacity:.85;font-size:clamp(1rem,3vw,1.4rem);font-style:italic}.countdown-date{font-family:var(--font-serif);letter-spacing:.4em;color:var(--color-text);opacity:.6;font-size:clamp(1.1rem,3.5vw,1.6rem)}.countdown-clock{align-items:center;gap:clamp(.8rem,2.5vw,2rem);display:flex}.countdown-unit{background:#2f3e250d;border:1px solid #a3ad6b4d;border-radius:12px;flex-direction:column;align-items:center;gap:.4rem;min-width:clamp(52px,14vw,100px);padding:clamp(.8rem,2vw,1.4rem) clamp(.5rem,1.5vw,1rem);display:flex;position:relative;overflow:hidden}.countdown-unit:before{content:"";pointer-events:none;background:radial-gradient(at 0 0,#a3ad6b1f,#0000 60%);position:absolute;inset:0}.cd-number{font-family:var(--font-serif);color:var(--color-text);will-change:transform;font-size:clamp(2rem,8vw,4rem);font-weight:600;line-height:1;transition:transform .15s;display:block}.cd-number.tick{animation:.25s cd-tick}@keyframes cd-tick{0%{transform:translateY(0)scale(1)}40%{transform:translateY(-6px)scale(1.06)}to{transform:translateY(0)scale(1)}}.cd-unit-label{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.25em;color:var(--color-accent-dark);opacity:.8;font-size:clamp(.55rem,1.5vw,.7rem)}.countdown-sep{font-family:var(--font-serif);color:var(--color-accent);opacity:.5;margin-bottom:1.2rem;font-size:clamp(1.8rem,6vw,3rem);line-height:1;animation:2s ease-in-out infinite sep-pulse}@keyframes sep-pulse{0%,to{opacity:.5}50%{opacity:.15}}.countdown-ended{font-family:var(--font-serif);color:var(--color-accent-dark);text-align:center;font-size:clamp(1.2rem,4vw,2rem);font-style:italic}@media (width<=480px){.countdown-clock{gap:.5rem}.countdown-sep{font-size:1.8rem}}
