:root{--bg:#e8ebed;--bg-inner:#eceef0;--edge-glow:#7bafd4;--white:#fff;--text:#1a1a1a;--text-secondary:#444;--text-muted:#777;--green:#7b8c6a;--cream-petal:#e8d5c4;--font-script:"Pinyon Script",cursive;--font-serif:"Cormorant Garamond",serif;--font-sans:"Montserrat",sans-serif}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{background:#000;color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.invitation-wrapper{background:var(--bg);box-shadow:-12px 0 35px -5px #7bafd480,12px 0 35px -5px #7bafd480,0 0 60px #7bafd426;margin:0 auto;max-width:480px;min-height:100vh;position:relative}.text-center{text-align:center}.mt-40{margin-top:2.5rem}.font-script{font-family:var(--font-script)}.font-serif{font-family:var(--font-serif)}.font-sans{font-family:var(--font-sans)}.anim-cover{animation:coverReveal 1s ease forwards;opacity:0;transform:translateY(18px)}@keyframes coverReveal{to{opacity:1;transform:translateY(0)}}.fade-el{opacity:0;transform:translateY(28px);transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1)}.fade-el.visible{opacity:1;transform:translateY(0)}.fade-left{opacity:0;transform:translate(-40px);transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1)}.fade-left.visible{opacity:1;transform:translate(0)}.fade-right{opacity:0;transform:translate(40px);transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1)}.fade-right.visible{opacity:1;transform:translate(0)}.zoom-in{opacity:0;transform:scale(.8);transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1)}.zoom-in.visible{opacity:1;transform:scale(1)}.cover-fade-leave-active{transition:opacity .8s ease}.cover-fade-leave-to{opacity:0}.main-enter-enter-active{transition:all 1.2s cubic-bezier(.22,1,.36,1)}.main-enter-enter-from{opacity:0;transform:translateY(30px)}.floral-wrap{display:flex;justify-content:center}.floral-svg{height:auto;width:200px}.floral-sm{width:160px}.floral-bottom{transform:scaleY(-1)}.floral-green ellipse{fill:var(--green)}.floral-green path{stroke:var(--green)}.floral-cream ellipse{fill:var(--cream-petal);opacity:.7}.flower-single{display:flex;justify-content:center;margin:1.5rem 0 .5rem}.flower-center{margin:2rem auto}.flower-stem-svg{height:auto;width:70px}.cover-screen{background:var(--bg);inset:0;position:fixed;z-index:100}.cover-inner,.cover-screen{align-items:center;display:flex;justify-content:center}.cover-inner{box-shadow:-12px 0 35px -5px #7bafd480,12px 0 35px -5px #7bafd480;max-width:480px;min-height:100vh;padding:2rem;width:100%}.cover-content{width:100%}.cover-names{line-height:1.15;margin:.5rem 0}.cover-name{color:var(--text);font-size:4.5rem}.cover-ampersand{color:var(--text-secondary);font-size:2rem;margin:8px 0}.cover-text{color:var(--text-secondary);font-size:.95rem;font-weight:400;line-height:1.7}.cover-guest,.cover-text{margin-top:2.5rem}.cover-kepada{color:var(--text);font-size:1.3rem;font-weight:400}.cover-guest-name{color:var(--text);font-size:1.5rem;font-weight:600;margin-top:.25rem}.cover-btn-wrap{margin-top:2rem}.cover-line{background:var(--text);height:1px;margin:0 auto .75rem;width:180px}.btn-buka{background:transparent;border:2px solid var(--text);color:var(--text);cursor:pointer;font-size:1.5rem;padding:.4rem 2rem;transition:all .3s ease}.btn-buka:hover{background:var(--text);color:var(--white)}.main-content{background:var(--bg);min-height:100vh;padding-bottom:70px}.section{padding:3.5rem 1.8rem;position:relative}.hero-section{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:90vh;padding-bottom:3rem;padding-top:4rem}.hero-name{color:var(--text);font-size:5rem;line-height:1.1}.hero-ampersand{color:var(--text-secondary);font-size:2.2rem;margin:10px 0}.countdown{gap:12px;margin-top:2.5rem}.cd-box,.countdown{display:flex;justify-content:center}.cd-box{align-items:center;background:#fff3;border:1.5px solid rgba(30,40,50,.35);border-radius:8px;flex-direction:column;height:78px;width:68px}.cd-num{color:var(--text);font-size:1.5rem;font-weight:600;line-height:1}.cd-lbl{color:var(--text-muted);font-size:.6rem;font-weight:600;letter-spacing:.08em;margin-top:.4rem}.wedding-of-label{color:#2c3e6b;display:block;font-size:2rem}.wedding-of-name{color:#2c3e6b;font-size:4.5rem;line-height:1;margin-top:.2rem}.wedding-of-amp{color:#2c3e6b;font-size:2rem;margin:.2rem 0}.verse-section{padding-top:2rem}.verse-text{color:var(--text);font-size:1.1rem;font-style:italic;font-weight:400;line-height:1.9;margin:0 auto;max-width:92%}.verse-ref{color:var(--text);font-size:1rem;font-weight:600;letter-spacing:.05em;margin-top:1.5rem}.intro-text{color:var(--text);font-size:1.15rem;font-weight:400;line-height:1.8;margin:0 auto;max-width:92%}.small-name{color:var(--text);font-size:2.2rem;line-height:1.3}.small-amp{color:var(--text-secondary);font-size:1.2rem;margin:2px 0}.profile-section{padding:2rem 1.8rem 3rem}.profile-label{text-align:left}.the-label{display:block;font-size:2.5rem}.groom-bride-title,.the-label{color:var(--text);line-height:1}.groom-bride-title{font-size:3.5rem;font-weight:300;letter-spacing:.08em;margin-top:-4px}.profile-info{margin-top:2rem;text-align:left}.profile-name{color:var(--text);font-size:1.3rem;font-weight:600;margin-bottom:.75rem}.profile-detail{color:var(--text-secondary);font-size:.95rem;font-weight:400;line-height:1.5}.profile-info-right,.profile-label-right{text-align:right}.save-date-section{background:linear-gradient(180deg,rgba(123,175,212,.15),transparent 50%);padding-top:4rem}.save-date-title{color:var(--text);font-size:2.5rem;margin-bottom:2.5rem}.event-card{background:var(--white);border-radius:12px;box-shadow:0 4px 20px #0000000a;margin-bottom:1.5rem;padding:2rem 1.5rem}.event-card-title{color:var(--text);font-size:2rem;margin-bottom:.75rem}.event-date{color:var(--text-secondary);font-size:1.2rem;font-style:italic;font-weight:500}.event-time{color:var(--text);font-size:1.1rem;font-weight:600;margin-top:.3rem}.event-venue{color:var(--text-secondary);font-size:1rem;font-weight:400;line-height:1.5}.map-section{padding-bottom:3rem;padding-top:2rem}.btn-map{align-items:center;background:var(--green);border-radius:6px;color:var(--white);display:inline-flex;font-size:1rem;font-weight:600;gap:8px;letter-spacing:.05em;padding:.6rem 1.5rem;text-decoration:none;transition:all .3s ease}.btn-map:hover{background:#6a7a5a;transform:translateY(-2px)}.mt-6{margin-top:1.5rem}.mb-4{margin-bottom:1rem}.map-container{border:2px solid var(--white);border-radius:12px;box-shadow:0 4px 20px #0000000d;overflow:hidden;width:100%}.closing-section{padding-bottom:4rem;padding-top:2rem}.closing-text{color:var(--text);font-size:1.15rem;font-style:italic;line-height:1.8;margin:0 auto;max-width:90%}.closing-thanks{color:var(--text-secondary);font-size:1.1rem;line-height:1.8;margin-top:2rem}.closing-names{margin-top:2.5rem}.closing-wr{color:var(--text-muted);font-size:1rem;font-style:italic}.closing-couple{color:var(--text);font-size:2.5rem;margin-top:.25rem}.footer-space{height:3rem}.bottom-nav{align-items:center;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);background:#7bafd459;border-top:1px solid hsla(0,0%,100%,.2);bottom:0;display:flex;justify-content:space-around;left:50%;max-width:480px;padding:.6rem 0;position:fixed;transform:translate(-50%);width:100%;z-index:80}.nav-btn{background:none;border:none;border-radius:8px;color:#1e283c80;cursor:pointer;padding:.4rem .8rem;transition:all .25s ease}.nav-btn.active,.nav-btn.music-active,.nav-btn:hover{background:#ffffff4d;color:var(--text)}
