:root{--color-cream:#faf6f0;--color-cream-dark:#f0e8d8;--color-linen:#ede4d3;--color-ivory:#fffdf7;--color-sage:#8fa97a;--color-sage-dark:#5a7247;--color-sage-light:#b8d4a3;--color-rose:#d4a0a0;--color-rose-dark:#c08080;--color-rose-light:#f0d4d4;--color-warm-brown:#8b6f47;--color-wood:#a67c52;--color-wood-dark:#6d4e2e;--color-wood-light:#c9a87c;--color-gold:#c9a84c;--color-gold-light:#e8d48b;--color-text-primary:#3d3226;--color-text-secondary:#6b5d4f;--color-text-light:#9a8b7a;--color-overlay:#3d322699;--color-overlay-light:#3d32264d;--color-white:#fff;--color-fairy-light:#fffbe6;--font-serif:"Playfair Display", Georgia, "Times New Roman", serif;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-script:"Dancing Script", cursive;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--space-3xl:64px;--radius-sm:8px;--radius-md:12px;--radius-lg:20px;--radius-xl:28px;--radius-full:50%;--shadow-sm:0 2px 8px #3d322614;--shadow-md:0 4px 16px #3d32261f;--shadow-lg:0 8px 32px #3d322629;--shadow-xl:0 12px 48px #3d322633;--shadow-glow:0 0 20px #c9a84c4d;--transition-fast:.15s ease;--transition-base:.3s ease;--transition-slow:.5s ease;--transition-spring:.4s cubic-bezier(.34, 1.56, .64, 1);--z-base:1;--z-items:10;--z-couple:20;--z-controls:30;--z-modal-overlay:40;--z-modal:50;--z-toast:60}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-sans);color:var(--color-text-primary);background-color:var(--color-cream);min-height:100dvh;line-height:1.6;overflow-x:hidden}#root{background:linear-gradient(135deg, var(--color-sage-dark) 0%, var(--color-sage) 50%, var(--color-wood) 100%);justify-content:center;align-items:center;width:100%;min-height:100dvh;display:flex}img{max-width:100%;height:auto;display:block}button{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;outline:none;font-family:inherit}input,textarea,select{font-family:inherit;font-size:inherit}a{color:inherit;text-decoration:none}.app-container{background-color:var(--color-cream);width:100%;max-width:430px;min-height:100dvh;position:relative;overflow:hidden}@media (width>=431px){.app-container{min-height:100vh;max-height:100vh;box-shadow:var(--shadow-xl);border-radius:0}}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-wood-light);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-wood)}.fairy-lights{z-index:3;pointer-events:none;height:20%;position:absolute;top:0;left:0;right:0}.fairy-lights__string{width:100%;height:50px;position:absolute;top:5%;left:0}.fairy-light{background:var(--light-color,var(--color-fairy-light));box-shadow:0 0 6px 2px var(--light-color,var(--color-fairy-light)), 0 0 12px 4px #fffbe64d;border-radius:50%;animation:2s ease-in-out infinite alternate twinkle;position:absolute}@keyframes twinkle{0%{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.1)}to{opacity:.5;transform:scale(.9)}}.cover-screen{opacity:0;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100dvh;transition:opacity .6s;display:flex;position:relative;overflow:hidden}.cover-screen--loaded{opacity:1}.cover-screen--exit{animation:.8s forwards coverExit}@keyframes coverExit{0%{opacity:1;filter:blur();transform:scale(1)}60%{opacity:.6;filter:blur(2px);transform:scale(1.15)}to{opacity:0;filter:blur(8px);transform:scale(1.3)}}.cover-bg{z-index:0;position:absolute;inset:0}.cover-bg__image{object-fit:cover;object-position:center;width:100%;height:100%}.cover-bg__overlay{background:linear-gradient(#5a724726 0%,#3d32260d 40%,#3d32261a 70%,#3d322659 100%);position:absolute;inset:0}.cover-petals{z-index:2;pointer-events:none;position:absolute;inset:0;overflow:hidden}.cover-petal{color:var(--color-rose-light);opacity:0;animation:linear infinite petalFall;position:absolute}.cover-petal--1{animation-duration:8s;animation-delay:0s;top:-5%;left:10%}.cover-petal--2{color:var(--color-cream-dark);animation-duration:10s;animation-delay:2s;top:-8%;left:30%}.cover-petal--3{animation-duration:7s;animation-delay:4s;top:-3%;left:55%}.cover-petal--4{color:var(--color-sage-light);animation-duration:9s;animation-delay:1s;top:-6%;left:75%}.cover-petal--5{animation-duration:11s;animation-delay:3s;top:-4%;left:90%}.cover-petal--6{color:var(--color-cream-dark);animation-duration:8.5s;animation-delay:5s;top:-7%;left:45%}@keyframes petalFall{0%{opacity:0;transform:translateY(0)translate(0)rotate(0)}10%{opacity:.8}90%{opacity:.6}to{opacity:0;transform:translateY(100vh)translate(40px)rotate(360deg)}}.cover-plaque{z-index:5;transform-origin:top;flex-direction:column;align-items:center;margin-top:-8vh;animation:4s ease-in-out infinite plaqueSwing;display:flex;position:relative}@keyframes plaqueSwing{0%,to{transform:rotate(-.5deg)}50%{transform:rotate(.5deg)}}.cover-plaque__strings{justify-content:center;gap:120px;height:30px;margin-bottom:-2px;display:flex;position:relative}.cover-plaque__string{background:var(--color-wood-light);border-radius:1px;width:2px;height:30px}.cover-plaque__string--left{transform:rotate(-8deg)}.cover-plaque__string--right{transform:rotate(8deg)}.cover-plaque__board{background:linear-gradient(135deg, var(--color-ivory) 0%, var(--color-cream) 50%, var(--color-cream-dark) 100%);border:2px solid var(--color-wood-light);border-radius:var(--radius-lg);padding:var(--space-xl) var(--space-2xl);text-align:center;box-shadow:var(--shadow-lg), inset 0 1px 0 #ffffff80;min-width:240px;max-width:300px;position:relative;overflow:hidden}.cover-plaque__board:before{content:"";border:1px solid var(--color-wood-light);border-radius:calc(var(--radius-lg) - 4px);opacity:.4;pointer-events:none;position:absolute;inset:6px}.cover-plaque__decoration{margin-bottom:var(--space-sm);justify-content:center;display:flex}.cover-plaque__subtitle{font-family:var(--font-sans);letter-spacing:4px;text-transform:uppercase;color:var(--color-text-secondary);margin-bottom:var(--space-xs);font-size:.7rem;font-weight:500}.cover-plaque__names{font-family:var(--font-script);color:var(--color-text-primary);margin-bottom:var(--space-sm);font-size:2rem;font-weight:600;line-height:1.2}.cover-plaque__date{font-family:var(--font-sans);letter-spacing:3px;color:var(--color-text-light);font-size:.75rem;font-weight:400}.cover-plaque__guest{margin-top:var(--space-md);padding-top:var(--space-sm);border-top:1px dashed var(--color-wood-light);opacity:.95}.guest-to{font-family:var(--font-script);color:var(--color-text-secondary);font-size:1.1rem;display:block}.guest-name{font-family:var(--font-serif);color:var(--color-sage-dark);letter-spacing:.5px;text-shadow:0 1px #fffc;margin-top:2px;font-size:1.15rem;font-weight:600}.cover-enter{z-index:10;flex-direction:column;align-items:center;display:flex;position:absolute;bottom:12vh}.cover-enter__button{align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-2xl);background:linear-gradient(135deg, var(--color-wood-light) 0%, var(--color-wood) 100%);color:var(--color-ivory);border-radius:var(--radius-xl);font-family:var(--font-sans);letter-spacing:3px;text-transform:uppercase;box-shadow:var(--shadow-md), 0 0 0 0 #c9a84c00;transition:all var(--transition-base);font-size:.85rem;font-weight:600;animation:2s ease-in-out infinite enterPulse;display:flex;position:relative;overflow:hidden}.cover-enter__button:before{content:"";background:linear-gradient(90deg,#0000,#ffffff26,#0000);width:200%;height:100%;animation:3s ease-in-out infinite shimmer;position:absolute;top:0;left:-100%}@keyframes shimmer{0%,to{left:-100%}50%{left:100%}}.cover-enter__button:hover{box-shadow:var(--shadow-lg), var(--shadow-glow);transform:translateY(-2px)scale(1.05)}.cover-enter__button:active{transform:translateY(0)scale(.98)}@keyframes enterPulse{0%,to{box-shadow:var(--shadow-md), 0 0 0 0 #c9a84c66}50%{box-shadow:var(--shadow-md), 0 0 0 12px #c9a84c00}}.cover-enter__icon{transition:transform var(--transition-base);align-items:center;display:flex}.cover-enter__button:hover .cover-enter__icon{transform:translate(3px)}.cover-enter__glow{background:radial-gradient(ellipse, var(--color-gold-light) 0%, transparent 70%);width:80px;height:4px;margin-top:var(--space-sm);opacity:.6;border-radius:var(--radius-full)}.cover-bottom-decor{z-index:3;pointer-events:none;position:absolute;bottom:0;left:0;right:0}.menu-item{cursor:pointer;-webkit-tap-highlight-color:transparent;opacity:0;--item-size-scale:1;width:calc(var(--item-size,140px) * var(--item-size-scale));transform:translateY(30px) scale(.6) rotate(var(--item-rotation,0deg));transition:opacity .6s ease var(--item-delay,0s), transform .6s cubic-bezier(.34, 1.56, .64, 1) var(--item-delay,0s), filter .4s ease;z-index:var(--z-items);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex;position:absolute}.menu-item--visible{opacity:1;transform:translateY(0) scale(1) rotate(var(--item-rotation,0deg))}.dashboard--loaded .menu-item{transition:opacity .35s cubic-bezier(.25,1,.5,1),filter .35s cubic-bezier(.25,1,.5,1),transform .35s cubic-bezier(.25,1,.5,1)}.menu-item__inner{width:100%;transition:transform var(--transition-spring);filter:drop-shadow(0 0 1.5px #fffffff2)drop-shadow(0 0 1.5px #fffffff2)drop-shadow(0 0 3px #ffffffb3)drop-shadow(0 4px 8px #00000026);position:relative}.menu-item:active .menu-item__inner{transition-duration:.1s;transform:scale(.93)rotate(0)}.menu-item__image{object-fit:contain;pointer-events:none;mix-blend-mode:multiply;width:100%;height:auto}.menu-item:after{content:"";border-radius:var(--radius-full);opacity:0;pointer-events:none;z-index:-1;background:radial-gradient(circle,#fffdf540 0%,#c9a84c1f 45%,#0000 70%);transition:opacity .35s;position:absolute;inset:-12px}.menu-item:hover:after{opacity:1}.menu-item--visible{animation:4.2s ease-in-out infinite itemFloat;animation-delay:var(--item-delay,0s)}@keyframes itemFloat{0%,to{transform:translateY(0) scale(1) rotate(var(--item-rotation,0deg))}50%{transform:translateY(-4px) scale(1.01) rotate(var(--item-rotation,0deg))}}.dashboard-items:hover .menu-item{opacity:.45;filter:blur(1.5px)grayscale(15%);transform:scale(.96) rotate(var(--item-rotation,0deg))}.dashboard-items:hover .dashboard-cat,.dashboard-items:hover .dashboard-ornament{opacity:.45;filter:blur(1.5px)grayscale(15%)}.dashboard-items .menu-item:hover{z-index:50;opacity:1!important;filter:none!important;transform:scale(1.12)rotate(-1deg)!important}.menu-item:hover .menu-item__inner{filter:drop-shadow(0 0 2px #fff)drop-shadow(0 0 2px #fff)drop-shadow(0 0 4px #fffc)drop-shadow(0 8px 20px #00000038)}.dashboard--spotlight .menu-item__inner{filter:drop-shadow(0 0 6px #fff) drop-shadow(0 0 12px #fffc) drop-shadow(0 0 24px var(--color-gold-light)) drop-shadow(0 8px 16px #0006);animation:2s ease-in-out infinite alternate spotlightPulse}@keyframes spotlightPulse{0%{filter:drop-shadow(0 0 6px #fff) drop-shadow(0 0 12px #fffc) drop-shadow(0 0 24px var(--color-gold-light)) drop-shadow(0 8px 16px #0006);transform:scale(1.03)}to{filter:drop-shadow(0 0 10px #fff) drop-shadow(0 0 20px #ffffffe6) drop-shadow(0 0 35px var(--color-gold-light)) drop-shadow(0 12px 24px #00000080);transform:scale(1.08)}}.dashboard--spotlight .dashboard-items:hover .menu-item{opacity:.35;filter:blur(2px)grayscale(30%);transform:scale(.96) rotate(var(--item-rotation,0deg));animation-play-state:paused}.dashboard--spotlight .dashboard-items .menu-item:hover{animation:none;opacity:1!important;filter:drop-shadow(0 0 10px #fff) drop-shadow(0 0 20px #ffffffe6) drop-shadow(0 0 35px var(--color-gold-light)) drop-shadow(0 12px 28px #0000008c)!important;transform:scale(1.12)rotate(-1deg)!important}@media (width<=600px){.menu-item{--item-size-scale:.85}}@media (width<=480px){.menu-item{--item-size-scale:.72}}@media (width<=390px){.menu-item{--item-size-scale:.62}}@media (width<=340px){.menu-item{--item-size-scale:.52}}.music-toggle{align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);-webkit-backdrop-filter:blur(8px);border:1.5px solid var(--color-wood-light);border-radius:var(--radius-xl);color:var(--color-text-secondary);box-shadow:var(--shadow-sm);transition:all var(--transition-base);background:#faf6f0d9;display:flex}.music-toggle:hover{box-shadow:var(--shadow-md);background:#faf6f0f2;transform:translateY(-1px)}.music-toggle--playing{background:var(--color-sage);color:var(--color-white);border-color:var(--color-sage)}.music-toggle__icon{align-items:center;display:flex}.music-toggle__bars{align-items:flex-end;gap:2px;height:14px;display:flex}.music-bar{background:var(--color-white);border-radius:2px;width:3px;animation:.8s ease-in-out infinite alternate musicBounce}.music-bar:first-child{height:6px;animation-delay:0s}.music-bar:nth-child(2){height:10px;animation-delay:.2s}.music-bar:nth-child(3){height:4px;animation-delay:.4s}@keyframes musicBounce{0%{height:4px}to{height:14px}}.dashboard{opacity:0;width:100%;height:100dvh;transition:opacity .6s;position:relative;overflow:hidden}.dashboard--loaded{opacity:1}.dashboard-bg{z-index:0;position:absolute;inset:0}.dashboard-bg__image{object-fit:cover;object-position:center;width:100%;height:100%}.dashboard:before{content:"";opacity:0;z-index:var(--z-base);pointer-events:none;background:#120e0aa6;transition:opacity .8s;position:absolute;inset:0}.dashboard--spotlight:before{opacity:1}.light-toggle{align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);-webkit-backdrop-filter:blur(8px);border:1.5px solid var(--color-wood-light);border-radius:var(--radius-xl);color:var(--color-text-secondary);box-shadow:var(--shadow-sm);transition:all var(--transition-base);background:#faf6f0d9;display:flex}.light-toggle:hover{box-shadow:var(--shadow-md);background:#faf6f0f2;transform:translateY(-1px)}.light-toggle--active{background:var(--color-warm-brown);color:var(--color-white);border-color:var(--color-warm-brown)}.light-toggle__icon{align-items:center;display:flex}.light-toggle__label{letter-spacing:.5px;font-size:.75rem;font-weight:600}.dashboard-controls{top:var(--space-lg);right:var(--space-md);z-index:var(--z-controls);gap:var(--space-sm);display:flex;position:absolute}.dashboard-items{z-index:var(--z-items);pointer-events:none;position:absolute;inset:0}.dashboard-items>*{pointer-events:auto}.dashboard-cat{opacity:0;width:120px;transition:all .8s cubic-bezier(.34,1.56,.64,1) .5s;position:absolute;top:39%;left:50%;transform:translateY(20px)scale(.8)translate(-50%);pointer-events:none!important}.dashboard-cat--visible{opacity:1;transform:translateY(0)scale(1)translate(-50%)}.dashboard-cat__image{object-fit:contain;mix-blend-mode:multiply;filter:drop-shadow(0 0 1.5px #fffffff2)drop-shadow(0 0 1.5px #fffffff2)drop-shadow(0 0 3px #ffffffb3)drop-shadow(0 3px 6px #0000001a);width:100%;height:auto;transition:filter var(--transition-slow), mix-blend-mode var(--transition-slow);animation:3s ease-in-out infinite catBreathe}@keyframes catBreathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.03)}}.dashboard-couple{z-index:var(--z-couple);opacity:0;width:90%;max-width:380px;transition:all .8s cubic-bezier(.34,1.56,.64,1) .3s;position:absolute;bottom:0;left:50%;transform:translate(-50%)translateY(100px)}.dashboard-couple--visible{opacity:1;animation:4s ease-in-out .8s infinite coupleFloat;transform:translate(-50%)translateY(0)}@keyframes coupleFloat{0%,to{transform:translate(-50%)translateY(0)}50%{transform:translate(-50%)translateY(-4px)}}.dashboard-couple__hint{text-align:center;margin-bottom:var(--space-xs);animation:2s ease-in-out infinite hintBounce}.dashboard-couple__hint span{font-family:var(--font-script);color:var(--color-text-secondary);-webkit-backdrop-filter:blur(4px);border-radius:var(--radius-xl);border:1px solid var(--color-cream-dark);box-shadow:var(--shadow-sm);background:#fffdf7d9;padding:4px 14px;font-size:.85rem}@keyframes hintBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.dashboard-couple__wrapper{cursor:pointer;width:100%;position:relative}.dashboard-couple__tap{z-index:2;cursor:pointer;-webkit-tap-highlight-color:transparent;width:50%;transition:background var(--transition-fast);border-radius:var(--radius-md);background:0 0;border:none;position:absolute;top:0;bottom:0}.dashboard-couple__tap--bride{right:0}.dashboard-couple__tap--groom{left:0}.dashboard-couple__tap:hover{background:#ffffff26}.dashboard-couple__tap:active{background:#ffffff40}.dashboard-couple__image{filter:drop-shadow(0 -4px 12px #00000014);pointer-events:none;width:100%;height:auto;transition:filter var(--transition-slow)}.dashboard--spotlight .dashboard-couple__image{filter:drop-shadow(0 0 10px #fff6)drop-shadow(0 -4px 16px #00000040)}.dashboard-wishes-toggle{bottom:var(--space-lg);left:var(--space-md);z-index:var(--z-controls);position:absolute}.wishes-toggle-btn{align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);background:var(--color-ivory);border:1.5px solid var(--color-wood-light);border-radius:var(--radius-xl);color:var(--color-text-primary);box-shadow:var(--shadow-sm);transition:all var(--transition-base);font-size:.75rem;font-weight:500;display:flex}.wishes-toggle-btn:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.wishes-toggle-btn--active{background:var(--color-wood);color:var(--color-ivory);border-color:var(--color-wood)}.dashboard-wishes{z-index:var(--z-controls);background:var(--color-ivory);border-radius:var(--radius-lg) var(--radius-lg) 0 0;flex-direction:column;max-height:50vh;animation:.4s cubic-bezier(.34,1.56,.64,1) wishesSlideUp;display:flex;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -4px 24px #0000001f}@keyframes wishesSlideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.wishes-header{padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-cream-dark);justify-content:space-between;align-items:center;display:flex}.wishes-header__title{font-family:var(--font-serif);color:var(--color-text-primary);font-size:1rem;font-weight:600}.wishes-header__close{border-radius:var(--radius-full);width:32px;height:32px;color:var(--color-text-secondary);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.wishes-header__close:hover{background:var(--color-cream-dark);color:var(--color-text-primary)}.wishes-list{padding:var(--space-md) var(--space-lg);gap:var(--space-md);flex-direction:column;flex:1;display:flex;overflow-y:auto}.wish-item{background:var(--color-cream);border-radius:var(--radius-md);padding:var(--space-md);border-left:3px solid var(--color-sage)}.wish-item__name{font-family:var(--font-sans);color:var(--color-sage-dark);margin-bottom:var(--space-xs);background:var(--color-sage-light);border-radius:var(--radius-sm);padding:2px 8px;font-size:.75rem;font-weight:600;display:inline-block}.wish-item__message{color:var(--color-text-secondary);font-size:.85rem;line-height:1.5}.wishes-input{gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-top:1px solid var(--color-cream-dark);background:var(--color-ivory);flex-direction:column;display:flex}.wishes-input__row{gap:var(--space-sm);width:100%;display:flex}.wishes-input__field--name{max-width:160px}.wishes-input__field{padding:var(--space-sm) var(--space-md);border:1.5px solid var(--color-cream-dark);border-radius:var(--radius-xl);background:var(--color-cream);color:var(--color-text-primary);transition:border-color var(--transition-fast);flex:1;font-size:.85rem}.wishes-input__field:focus{border-color:var(--color-sage);outline:none}.wishes-input__field::placeholder{color:var(--color-text-light)}.wishes-input__send{border-radius:var(--radius-full);background:var(--color-sage);width:40px;height:40px;color:var(--color-white);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.wishes-input__send:hover{background:var(--color-sage-dark);transform:scale(1.05)}.dashboard-ornament{opacity:0;z-index:var(--z-items);transition:all .8s cubic-bezier(.34,1.56,.64,1) .6s;position:absolute;pointer-events:none!important}.dashboard-ornament--visible{opacity:1}.dashboard-ornament--bugis{width:105px;top:44%;left:4%;transform:translateY(20px)scale(.8)rotate(-8deg)}.dashboard-ornament--sunda{width:100px;top:44%;right:4%;transform:translateY(20px)scale(.8)rotate(10deg)}.dashboard-ornament--bugis.dashboard-ornament--visible{transform:translateY(0)scale(1)rotate(-8deg)}.dashboard-ornament--sunda.dashboard-ornament--visible{transform:translateY(0)scale(1)rotate(10deg)}.dashboard-ornament__image{object-fit:contain;mix-blend-mode:multiply;filter:drop-shadow(0 0 1.5px #fffffff2)drop-shadow(0 0 1.5px #fffffff2)drop-shadow(0 0 3px #ffffffb3)drop-shadow(0 3px 6px #0000001a);width:100%;height:auto;transition:filter var(--transition-slow), mix-blend-mode var(--transition-slow)}.dashboard-ornament--phinisi{width:100px;top:56%;left:5%;transform:translateY(20px)scale(.8)rotate(5deg)}.dashboard-ornament--blade{width:90px;top:56%;right:5%;transform:translateY(20px)scale(.8)rotate(-12deg)}.dashboard-ornament--phinisi.dashboard-ornament--visible{transform:translateY(0)scale(1)rotate(5deg)}.dashboard-ornament--blade.dashboard-ornament--visible{transform:translateY(0)scale(1)rotate(-12deg)}.dashboard-floating-wishes{bottom:74px;left:var(--space-md);z-index:25;pointer-events:none;flex-direction:column;gap:6px;width:240px;max-width:260px;display:flex;position:absolute}.floating-wish-bubble{pointer-events:auto;background:var(--color-white);border:1.5px dashed var(--color-gold-light);border-radius:var(--radius-sm);opacity:0;padding:6px 10px;transition:all .6s cubic-bezier(.34,1.56,.64,1);transform:translateY(15px);box-shadow:0 4px 12px #3d32260d}.floating-wish-bubble--visible{opacity:1;transform:translateY(0)}.floating-wish-bubble__name-tag{margin-bottom:2px}.floating-wish-bubble__name{font-family:var(--font-sans);color:var(--color-text-primary);border:1.2px dashed var(--color-gold);background:#fbf5e6;border-radius:4px;padding:1px 6px;font-size:.65rem;font-weight:700;display:inline-block}.floating-wish-bubble__message{color:var(--color-text-secondary);font-size:.75rem;line-height:1.35}.dashboard-wishes-controls{bottom:var(--space-md);left:var(--space-md);z-index:var(--z-controls);align-items:center;gap:8px;display:flex;position:absolute}.wishes-control-btn{border:2px solid var(--color-gold-light);color:var(--color-text-secondary);box-shadow:var(--shadow-sm);cursor:pointer;transition:all var(--transition-base);background:#fffffff2;justify-content:center;align-items:center;display:flex}.wishes-control-btn:hover{border-color:var(--color-gold);background:var(--color-cream);box-shadow:var(--shadow-md);transform:translateY(-2px)}.wishes-control-btn:active{transform:translateY(0)}.wishes-control-btn--circle{border-radius:var(--radius-full);width:38px;height:38px}.wishes-control-btn--circle svg{display:block}.wishes-control-btn--toggle{height:38px;padding:0 var(--space-md);border-radius:var(--radius-xl);color:var(--color-text-primary);font-size:.75rem;font-weight:700}.wishes-control-btn--toggle-hidden{background:var(--color-gold-light);color:var(--color-text-primary)}.dashboard--spotlight .floating-wish-bubble{pointer-events:none;filter:blur(.5px);opacity:.1!important}.dashboard:has(.dashboard-items:hover) .dashboard-couple{opacity:.45;filter:blur(2px)grayscale(10%);transform:translate(-50%)translateY(2px)scale(.98)}.dashboard:has(.dashboard-items:hover) .dashboard-floating-wishes{opacity:.15;filter:blur(1px)}.dashboard:has(.dashboard-items:hover) .dashboard-wishes-controls{opacity:.4}@media (width<=600px){.dashboard-cat{width:100px}.dashboard-ornament--bugis{width:88px}.dashboard-ornament--sunda{width:85px}}@media (width<=480px){.dashboard-cat{width:85px}.dashboard-ornament--bugis{width:75px}.dashboard-ornament--sunda{width:72px}}@media (width<=390px){.dashboard-cat{width:70px}.dashboard-ornament--bugis{width:60px}.dashboard-ornament--sunda{width:58px}}@media (width<=340px){.dashboard-cat{width:55px}.dashboard-ornament--bugis{width:48px}.dashboard-ornament--sunda{width:45px}}.modal-overlay{background:var(--color-overlay);z-index:var(--z-modal-overlay);justify-content:center;align-items:flex-end;animation:.3s overlayFadeIn;display:flex;position:fixed;inset:0}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--color-ivory);border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-width:430px;max-height:85vh;z-index:var(--z-modal);flex-direction:column;animation:.4s cubic-bezier(.34,1.56,.64,1) modalSlideUp;display:flex;box-shadow:0 -8px 40px #0003}@keyframes modalSlideUp{0%{opacity:.5;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.modal__handle{padding:var(--space-md) 0 var(--space-xs);justify-content:center;display:flex}.modal__handle-bar{background:var(--color-cream-dark);border-radius:var(--radius-full);width:40px;height:4px}.modal__header{padding:var(--space-sm) var(--space-lg) var(--space-md);border-bottom:1px solid var(--color-cream-dark);justify-content:space-between;align-items:center;display:flex}.modal__header-decor{align-items:center;display:flex}.modal__title{font-family:var(--font-serif);color:var(--color-text-primary);text-align:center;flex:1;font-size:1.15rem;font-weight:600}.modal__close{border-radius:var(--radius-full);width:36px;height:36px;color:var(--color-text-secondary);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.modal__close:hover{background:var(--color-cream-dark);color:var(--color-text-primary);transform:rotate(90deg)}.modal__content{padding:var(--space-lg);flex:1;overflow-y:auto}.panel{gap:var(--space-lg);flex-direction:column;display:flex}.panel-intro{color:var(--color-text-secondary);text-align:center;padding:0 var(--space-sm);font-size:.9rem;line-height:1.6}.panel-footnote{color:var(--color-text-light);text-align:center;margin-top:var(--space-sm);font-size:.75rem;font-style:italic}.panel-hero{align-items:center;gap:var(--space-sm);flex-direction:column;display:flex}.panel-hero__icon{background:var(--color-cream);border-radius:var(--radius-full);width:72px;height:72px;box-shadow:var(--shadow-sm);justify-content:center;align-items:center;display:flex}.panel-hero__label{font-family:var(--font-script);color:var(--color-text-secondary);font-size:1.1rem}.panel-success{align-items:center;gap:var(--space-md);padding:var(--space-2xl) 0;flex-direction:column;animation:.5s successFadeIn;display:flex}@keyframes successFadeIn{0%{opacity:0;transform:translateY(20px)scale(.9)}to{opacity:1;transform:translateY(0)scale(1)}}.panel-success__icon{animation:.6s .3s both successBounce}@keyframes successBounce{0%{transform:scale(0)}50%{transform:scale(1.2)}to{transform:scale(1)}}.panel-success__title{font-family:var(--font-serif);color:var(--color-sage-dark);font-size:1.5rem}.panel-success__text{color:var(--color-text-secondary);text-align:center;font-size:.9rem;line-height:1.6}.panel-form{gap:var(--space-lg);flex-direction:column;display:flex}.form-group{gap:var(--space-sm);flex-direction:column;display:flex}.form-group--animated{animation:.3s formSlideIn}@keyframes formSlideIn{0%{opacity:0;max-height:0;transform:translateY(-10px)}to{opacity:1;max-height:200px;transform:translateY(0)}}.form-label{color:var(--color-text-primary);letter-spacing:.5px;font-size:.8rem;font-weight:600}.form-input,.form-textarea,.form-select{padding:var(--space-md);border:1.5px solid var(--color-cream-dark);border-radius:var(--radius-md);background:var(--color-cream);color:var(--color-text-primary);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);font-size:.9rem}.form-input:focus,.form-textarea:focus,.form-select:focus{border-color:var(--color-sage);outline:none;box-shadow:0 0 0 3px #8fa97a26}.form-input::placeholder,.form-textarea::placeholder{color:var(--color-text-light)}.form-textarea{resize:vertical;min-height:80px}.form-select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b5d4f' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:36px}.form-radio-group{gap:var(--space-sm);flex-direction:column;display:flex}.form-radio{align-items:center;gap:var(--space-md);padding:var(--space-md);border:1.5px solid var(--color-cream-dark);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);display:flex}.form-radio:hover{border-color:var(--color-sage-light);background:#8fa97a0d}.form-radio--selected{border-color:var(--color-sage);background:#8fa97a14}.form-radio__input{display:none}.form-radio__custom{border:2px solid var(--color-cream-dark);border-radius:var(--radius-full);width:20px;height:20px;transition:all var(--transition-fast);flex-shrink:0;position:relative}.form-radio--selected .form-radio__custom{border-color:var(--color-sage)}.form-radio--selected .form-radio__custom:after{content:"";background:var(--color-sage);border-radius:var(--radius-full);width:10px;height:10px;animation:.2s radioCheck;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes radioCheck{0%{transform:translate(-50%,-50%)scale(0)}to{transform:translate(-50%,-50%)scale(1)}}.form-radio__text{color:var(--color-text-primary);font-size:.9rem}.form-submit{padding:var(--space-md) var(--space-xl);background:linear-gradient(135deg, var(--color-sage) 0%, var(--color-sage-dark) 100%);color:var(--color-white);border-radius:var(--radius-xl);letter-spacing:1px;box-shadow:var(--shadow-md);transition:all var(--transition-base);margin-top:var(--space-sm);font-size:.9rem;font-weight:600}.form-submit:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.form-submit:active{transform:translateY(0)}.panel-action-btn{justify-content:center;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-xl);background:var(--color-cream);border:1.5px solid var(--color-sage);border-radius:var(--radius-xl);color:var(--color-sage-dark);transition:all var(--transition-base);font-size:.85rem;font-weight:600;display:flex}.panel-action-btn:hover{background:var(--color-sage);color:var(--color-white);box-shadow:var(--shadow-md);transform:translateY(-2px)}.venue-date{justify-content:center;align-items:center;gap:var(--space-md);padding:var(--space-lg) 0;display:flex}.venue-countdown{margin-top:-10px;margin-bottom:var(--space-md);justify-content:center;gap:10px;display:flex}.venue-countdown__item{background:var(--color-white);border:1.5px solid var(--color-cream-dark);border-radius:var(--radius-md);width:68px;height:68px;box-shadow:var(--shadow-sm);transition:all var(--transition-base);flex-direction:column;justify-content:center;align-items:center;display:flex}.venue-countdown__item:hover{border-color:var(--color-gold);box-shadow:var(--shadow-md);transform:translateY(-2px)}.venue-countdown__value{font-family:var(--font-serif);color:var(--color-sage-dark);font-size:1.35rem;font-weight:700;line-height:1.1}.venue-countdown__label{text-transform:uppercase;color:var(--color-text-light);letter-spacing:.5px;margin-top:4px;font-size:.65rem;font-weight:700}.venue-date__day{font-family:var(--font-serif);color:var(--color-sage-dark);font-size:3.5rem;font-weight:700;line-height:1}.venue-date__details{flex-direction:column;gap:2px;display:flex}.venue-date__month{font-family:var(--font-serif);color:var(--color-text-primary);font-size:1.2rem;font-weight:600}.venue-date__year{color:var(--color-text-secondary);letter-spacing:2px;font-size:.9rem}.venue-divider{align-items:center;gap:var(--space-md);padding:var(--space-sm) 0;display:flex}.venue-divider__line{background:var(--color-cream-dark);flex:1;height:1px}.venue-divider__icon{font-size:1.2rem}.venue-section{background:var(--color-cream);border-radius:var(--radius-md);padding:var(--space-lg);border-left:3px solid var(--color-sage)}.venue-section__title{font-family:var(--font-serif);color:var(--color-text-primary);margin-bottom:var(--space-md);font-size:1rem;font-weight:600}.venue-info{gap:var(--space-sm);flex-direction:column;display:flex}.venue-info__row{align-items:flex-start;gap:var(--space-sm);color:var(--color-text-secondary);font-size:.85rem;line-height:1.5;display:flex}.gallery-grid{gap:var(--space-md);grid-template-columns:repeat(2,1fr);display:grid}.gallery-item{aspect-ratio:1;border-radius:var(--radius-md);cursor:pointer;border:none;padding:0;animation:.4s both galleryFadeIn;overflow:hidden}@keyframes galleryFadeIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.gallery-item__image{border-radius:var(--radius-md);width:100%;height:100%;transition:transform var(--transition-base)}.gallery-item:hover .gallery-item__image{transform:scale(1.05)}.gallery-item__placeholder{justify-content:center;align-items:center;gap:var(--space-sm);flex-direction:column;width:100%;height:100%;display:flex}.gallery-item__label{color:var(--color-white);text-shadow:0 1px 2px #0003;font-size:.7rem;font-weight:500}.gallery-lightbox{z-index:100;padding:var(--space-lg);background:#000c;justify-content:center;align-items:center;animation:.3s overlayFadeIn;display:flex;position:fixed;inset:0}.gallery-lightbox__content{width:100%;max-width:360px;animation:.4s cubic-bezier(.34,1.56,.64,1) modalSlideUp;position:relative}.gallery-lightbox__image{aspect-ratio:1;border-radius:var(--radius-lg);width:100%;overflow:hidden}.gallery-lightbox__caption{text-align:center;color:var(--color-white);margin-top:var(--space-md);font-size:.9rem}.gallery-lightbox__close{width:36px;height:36px;color:var(--color-white);border-radius:var(--radius-full);transition:background var(--transition-fast);background:#ffffff26;justify-content:center;align-items:center;font-size:1rem;display:flex;position:absolute;top:-40px;right:0}.gallery-lightbox__close:hover{background:#ffffff40}.registry-accounts{gap:var(--space-md);flex-direction:column;display:flex}.registry-card{background:var(--color-cream);border-radius:var(--radius-md);padding:var(--space-lg);border:1px solid var(--color-cream-dark);text-align:center}.registry-card__bank{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:1px;margin-bottom:var(--space-sm);font-size:.75rem;font-weight:600}.registry-card__number{color:var(--color-text-primary);letter-spacing:2px;margin-bottom:var(--space-xs);font-family:Courier New,monospace;font-size:1.3rem;font-weight:700}.registry-card__name{color:var(--color-text-light);margin-bottom:var(--space-md);font-size:.8rem}.registry-card__copy{align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);background:var(--color-ivory);border:1px solid var(--color-sage-light);border-radius:var(--radius-xl);color:var(--color-sage-dark);transition:all var(--transition-fast);font-size:.75rem;font-weight:600;display:inline-flex}.registry-card__copy:hover,.registry-card__copy--copied{background:var(--color-sage);color:var(--color-white);border-color:var(--color-sage)}.registry-gift-note{align-items:flex-start;gap:var(--space-md);padding:var(--space-md);background:var(--color-cream);border-radius:var(--radius-md);border:1px dashed var(--color-wood-light);display:flex}.registry-gift-note__icon{flex-shrink:0;font-size:1.5rem}.registry-gift-note__text{color:var(--color-text-secondary);font-size:.8rem;line-height:1.5}.dresscode-section{background:var(--color-cream);border-radius:var(--radius-md);padding:var(--space-lg)}.dresscode-section__title{align-items:center;gap:var(--space-sm);font-family:var(--font-serif);color:var(--color-text-primary);margin-bottom:var(--space-sm);font-size:1rem;font-weight:600;display:flex}.dresscode-section__icon{font-size:1.2rem}.dresscode-section__desc{color:var(--color-text-secondary);font-size:.85rem;line-height:1.6}.dresscode-colors{text-align:center}.dresscode-colors__title{font-family:var(--font-serif);color:var(--color-text-primary);margin-bottom:var(--space-md);font-size:.9rem;font-weight:600}.dresscode-palette{justify-content:center;gap:var(--space-md);flex-wrap:wrap;display:flex}.dresscode-swatch{align-items:center;gap:var(--space-xs);flex-direction:column;display:flex}.dresscode-swatch__color{border-radius:var(--radius-full);width:48px;height:48px;box-shadow:var(--shadow-sm);transition:transform var(--transition-spring)}.dresscode-swatch__color:hover{transform:scale(1.15)}.dresscode-swatch__name{color:var(--color-text-light);font-size:.65rem;font-weight:500}.dresscode-note{align-items:flex-start;gap:var(--space-sm);padding:var(--space-md);border-radius:var(--radius-md);border-left:3px solid var(--color-sage);background:#8fa97a14;display:flex}.dresscode-note p{color:var(--color-text-secondary);font-size:.8rem;line-height:1.5}.timeline{flex-direction:column;gap:0;display:flex}.timeline-item{gap:var(--space-md);animation:.5s both timelineSlideIn;display:flex}@keyframes timelineSlideIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.timeline-item__marker{flex-direction:column;flex-shrink:0;align-items:center;width:40px;display:flex}.timeline-item__icon{background:var(--color-cream);border:2px solid var(--color-sage-light);border-radius:var(--radius-full);z-index:1;justify-content:center;align-items:center;width:40px;height:40px;font-size:1rem;display:flex}.timeline-item__line{background:var(--color-sage-light);opacity:.5;flex:1;width:2px;min-height:20px}.timeline-item__content{padding-bottom:var(--space-lg);flex:1}.timeline-item__year{color:var(--color-sage-dark);background:var(--color-sage-light);border-radius:var(--radius-sm);margin-bottom:var(--space-xs);padding:2px 10px;font-size:.7rem;font-weight:600;display:inline-block}.timeline-item__title{font-family:var(--font-serif);color:var(--color-text-primary);margin-bottom:var(--space-xs);font-size:1rem;font-weight:600}.timeline-item__desc{color:var(--color-text-secondary);font-size:.8rem;line-height:1.6}.profile-panel{align-items:center}.profile-hero{align-items:center;gap:var(--space-sm);flex-direction:column;animation:.5s both profileFadeIn;display:flex}@keyframes profileFadeIn{0%{opacity:0;transform:translateY(16px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}.profile-avatar{justify-content:center;align-items:center;width:100px;height:100px;display:flex;position:relative}.profile-avatar__ring{border-radius:var(--radius-full);border:2px dashed var(--color-cream-dark);animation:12s linear infinite ringRotate;position:absolute;inset:-4px}.profile-avatar--bride .profile-avatar__ring{border-color:var(--color-rose-light)}.profile-avatar--groom .profile-avatar__ring{border-color:var(--color-sage-light)}@keyframes ringRotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.profile-avatar__icon{background:var(--color-cream);border-radius:var(--radius-full);width:80px;height:80px;box-shadow:var(--shadow-sm);justify-content:center;align-items:center;display:flex;overflow:hidden}.profile-name{font-family:var(--font-script);color:var(--color-text-primary);font-size:1.8rem;font-weight:600;line-height:1.2}.profile-role{font-family:var(--font-sans);letter-spacing:2px;text-transform:uppercase;color:var(--color-text-light);font-size:.75rem;font-weight:500}.profile-divider{align-items:center;gap:var(--space-md);width:100%;display:flex}.profile-divider__line{background:linear-gradient(90deg, transparent, var(--color-cream-dark), transparent);flex:1;height:1px}.profile-divider__icon{font-size:1rem}.profile-info{gap:var(--space-sm);flex-direction:column;width:100%;display:flex}.profile-info__item{padding:var(--space-md);background:var(--color-cream);border-radius:var(--radius-md);text-align:center;flex-direction:column;gap:2px;animation:.4s both infoSlideIn;display:flex}.profile-info__item:first-child{animation-delay:.1s}.profile-info__item:nth-child(2){animation-delay:.2s}.profile-info__item:nth-child(3){animation-delay:.3s}@keyframes infoSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.profile-info__label{letter-spacing:1.5px;text-transform:uppercase;color:var(--color-text-light);font-size:.65rem;font-weight:600}.profile-info__value{font-family:var(--font-serif);color:var(--color-text-primary);font-size:.95rem;font-weight:500}.profile-quote{align-items:center;gap:var(--space-sm);padding:var(--space-lg);background:var(--color-cream);border-radius:var(--radius-md);text-align:center;flex-direction:column;width:100%;display:flex}.profile-quote__text{font-family:var(--font-serif);color:var(--color-text-secondary);font-size:.85rem;font-style:italic;line-height:1.7}.profile-social{gap:var(--space-md);display:flex}.profile-social__link{border-radius:var(--radius-full);background:var(--color-cream);width:40px;height:40px;color:var(--color-text-secondary);transition:all var(--transition-base);box-shadow:var(--shadow-sm);justify-content:center;align-items:center;display:flex}.profile-social__link:hover{background:var(--color-sage);color:var(--color-white);box-shadow:var(--shadow-md);transform:translateY(-2px)}.profile-avatar__image{object-fit:cover;width:100%;height:100%}.venue-info__map-link{font-family:var(--font-sans);color:var(--color-sage-dark);background:var(--color-cream);border:1.2px solid var(--color-cream-dark);border-radius:var(--radius-sm);margin-top:var(--space-xs);cursor:pointer;transition:all var(--transition-fast);text-transform:uppercase;letter-spacing:.5px;padding:6px 14px;font-size:.75rem;font-weight:700;display:inline-block}.venue-info__map-link:hover{background:var(--color-sage-light);color:var(--color-sage-dark);border-color:var(--color-sage);transform:translateY(-1px)}.venue-info__map-link:active{transform:translateY(0)}.quran-content{gap:var(--space-md);flex-direction:column;display:flex}.quran-section{background:var(--color-cream);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);border:1.5px solid var(--color-cream-dark);text-align:center;box-shadow:var(--shadow-sm)}.quran-section__title{font-family:var(--font-serif);color:var(--color-sage-dark);margin-bottom:var(--space-sm);letter-spacing:.5px;font-size:1rem;font-weight:600}.quran-section__arabic{color:var(--color-text-primary);margin-bottom:var(--space-md);text-align:center;direction:rtl;font-family:Amiri,Traditional Arabic,serif;font-size:1.4rem;font-weight:500;line-height:2.2}.quran-section__translation{color:var(--color-text-secondary);font-size:.85rem;font-style:italic;line-height:1.6}.quran-section__source{color:var(--color-text-light);margin-top:6px;font-size:.75rem;font-style:normal;font-weight:600;display:block}.quran-divider{align-items:center;gap:var(--space-md);padding:var(--space-xs) 0;display:flex}.quran-divider__line{background:var(--color-cream-dark);flex:1;height:1.5px}.quran-divider__icon{color:var(--color-wood-light);font-size:.85rem}
