@import url("https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600;700&family=Great+Vibes&family=Manrope:wght@400;500;600;700&display=swap");:root{--ink:#203a55;--muted:#6b7f94;--blue:#8ecdf2;--blue-deep:#2d79ae;--blue-soft:#edf9ff;--blue-mist:#d8effc;--line:#bde2f6;--white:#fff;--paper:#fffdfa;--gold:#d0a95f;--sage:#93b5c9;--shadow:0 24px 70px rgba(47,111,159,.12);--font-script:"Great Vibes","Brush Script MT","Segoe Script",cursive;--font-serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;--font-sans:"Manrope",Arial,Helvetica,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans)}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.page{min-height:100vh;overflow-x:hidden;background:radial-gradient(circle at top left,rgba(142,205,242,.26),transparent 34rem),radial-gradient(circle at 88% 34%,rgba(208,169,95,.1),transparent 18rem),radial-gradient(circle at 18% 78%,rgba(216,239,252,.42),transparent 24rem),linear-gradient(180deg,#fffdfa,#f4fbff 52%,#fffdfa)}.page,.section{position:relative}.section{padding:72px 20px}.reveal{opacity:0;transform:translateY(56px);transition:opacity 1.18s cubic-bezier(.22,1,.36,1),transform 1.18s cubic-bezier(.22,1,.36,1)}.reveal.is-visible{opacity:1;transform:translateY(0)}.inner{width:min(1080px,100%);margin:0 auto}.opening{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:22px;background:radial-gradient(circle at 16% 18%,rgba(142,205,242,.28),transparent 20rem),radial-gradient(circle at 82% 18%,rgba(208,169,95,.12),transparent 18rem),linear-gradient(160deg,#fffdfa,#edf9ff);transition:opacity .9s cubic-bezier(.22,1,.36,1),visibility .9s cubic-bezier(.22,1,.36,1)}.opening.is-opened{opacity:0;visibility:hidden}.opening-card{position:relative;z-index:2;overflow:hidden;width:min(500px,100%);padding:42px 30px;border:1px solid rgba(208,169,95,.45);border-radius:8px;background:linear-gradient(rgba(255,253,250,.9),rgba(255,253,250,.9)),radial-gradient(circle at 12% 18%,rgba(142,205,242,.22),transparent 10rem),repeating-linear-gradient(45deg,rgba(45,121,174,.028) 0 1px,transparent 1px 8px);box-shadow:var(--shadow),inset 0 0 0 14px rgba(255,253,250,.72),inset 0 0 0 15px rgba(45,121,174,.22);text-align:center;animation:cardEnter .98s cubic-bezier(.22,1,.36,1) both}.opening-card:after,.opening-card:before{position:absolute;content:"";pointer-events:none}.opening-card:before{right:-118px;bottom:-104px;z-index:0;width:360px;height:290px;background-image:url(/corner/corner\ right.png);background-repeat:no-repeat;background-position:50%;background-size:contain;opacity:.34;filter:saturate(1.22) hue-rotate(8deg) contrast(1.04);transform-origin:72% 72%;animation:cardFloralRotate 12s ease-in-out infinite}.opening-card:after{left:-44px;top:-48px;z-index:0;width:180px;height:180px;background:radial-gradient(circle,rgba(142,205,242,.24),transparent 66%),radial-gradient(circle at 35% 42%,rgba(208,169,95,.08),transparent 52%);animation:cardWashDrift 9s ease-in-out infinite}.hero-copy .eyebrow:before,.opening-card .eyebrow:before{display:block;width:96px;height:1px;margin:0 auto 14px;content:"";background:rgba(208,169,95,.44)}.opening-card .primary-button{margin-top:2px}.opening-card>*{position:relative;z-index:1}.opening-card .guest-box{background:hsla(0,0%,100%,.78);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.opening-card .guest-box:before{opacity:.18}.opening-card .guest-box:after{opacity:.7}.avatar-pair{position:relative;z-index:1;display:flex;justify-content:center;align-items:flex-end;gap:18px;width:min(220px,70%);margin:0 auto 16px;padding-top:4px}.avatar-img{width:86px;height:86px;border:1px solid rgba(45,121,174,.16);border-radius:999px;background:radial-gradient(circle at 45% 28%,hsla(0,0%,100%,.94),transparent 58%),rgba(237,249,255,.86);box-shadow:0 14px 30px rgba(45,121,174,.1);object-fit:cover}.avatar-img.bride{animation:avatarBrideFloat 6.2s ease-in-out infinite}.avatar-img.groom{animation:avatarGroomFloat 6.8s ease-in-out infinite}.avatar-pair.compact{position:absolute;top:18px;right:18px;width:auto;margin:0;gap:10px;opacity:.84}.avatar-pair.compact .avatar-img{width:52px;height:52px;box-shadow:0 10px 20px rgba(45,121,174,.08)}.opening-card .guest-box,.photo-caption,.time-box{position:relative;overflow:hidden}.opening-card .guest-box:before,.photo-caption:before,.time-box:before{position:absolute;right:-70px;bottom:-66px;z-index:0;width:190px;height:150px;content:"";background-image:url(/corner/corner\ right.png);background-repeat:no-repeat;background-position:50%;background-size:contain;opacity:.22;filter:saturate(1.22) hue-rotate(8deg) contrast(1.04);pointer-events:none;animation:cardFloralFloat 12s ease-in-out infinite}.opening-card .guest-box>*,.photo-caption>*,.time-box>*{position:relative;z-index:1}.photo-caption:before{right:-54px;bottom:-60px;width:170px;height:130px;opacity:.24;animation-name:cardFloralScale;animation-duration:10s}.time-box:before{right:-62px;bottom:-66px;width:160px;height:130px;opacity:.2}.time-box:first-child:before{animation-name:cardFloralRotate}.time-box:nth-child(2):before{animation-name:cardFloralScale}.time-box:nth-child(3):before{animation-name:cardFloralSide}.time-box:nth-child(4):before{animation-name:cardFloralFloat}.eyebrow{margin:0 0 10px;color:rgba(47,111,159,.9);font-family:var(--font-serif);font-size:30px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.hero h1,.opening-card h1{margin:0;font-family:var(--font-script);font-size:clamp(58px,10vw,112px);font-weight:400;line-height:1.08;letter-spacing:0;color:#2d79ae;text-shadow:0 8px 28px rgba(45,121,174,.09);overflow-wrap:anywhere}.guest-box{margin:24px 0;padding:18px;border:1px solid rgba(47,111,159,.2);border-radius:8px;background:hsla(0,0%,100%,.72)}.guest-box span{display:block;color:var(--muted);font-size:14px}.guest-box strong{display:block;margin-top:8px;font-family:var(--font-serif);font-size:30px;font-weight:600;overflow-wrap:anywhere}.access-box p{position:relative;z-index:1;margin:12px auto 0;color:var(--muted);font-family:var(--font-serif);font-size:17px;font-weight:500;line-height:1.55}.primary-button,.secondary-button{position:relative;isolation:isolate;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;border-radius:8px;border:1px solid rgba(47,111,159,.62);padding:0 18px;color:#2d79ae;font-family:var(--font-serif);font-size:18px;font-weight:700;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.primary-button{background:linear-gradient(180deg,hsla(0,0%,100%,.94),rgba(238,248,253,.9)),radial-gradient(circle at 50% 0,hsla(0,0%,100%,.92),transparent 58%),linear-gradient(135deg,rgba(142,205,242,.62),rgba(208,169,95,.13));color:#2d79ae;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.72),inset 0 -12px 24px rgba(47,111,159,.08),0 12px 28px rgba(47,111,159,.16)}.primary-button:before,.secondary-button:before{position:absolute;inset:2px;z-index:-1;content:"";border-radius:6px;background:linear-gradient(hsla(0,0%,100%,.28),hsla(0,0%,100%,.08)),url(/corner/corner\ right.png);background-repeat:no-repeat;background-position:right -34px bottom -34px;background-size:120px auto;opacity:.2;mix-blend-mode:multiply;transition:opacity .18s ease,transform .24s ease}.primary-button:after,.secondary-button:after{position:absolute;inset:0;z-index:-1;content:"";background:linear-gradient(110deg,transparent 12%,hsla(0,0%,100%,.36) 42%,transparent 68%);transform:translateX(-120%);transition:transform .42s ease}.primary-button:hover,.secondary-button:hover{transform:translateY(-2px)}.primary-button:hover{border-color:rgba(47,111,159,.86);box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.78),inset 0 -12px 24px rgba(47,111,159,.1),0 16px 34px rgba(47,111,159,.2)}.primary-button:hover:before,.secondary-button:hover:before{opacity:.42;transform:scale(1.06)}.primary-button:hover:after,.secondary-button:hover:after{transform:translateX(120%)}.secondary-button{background:linear-gradient(180deg,hsla(0,0%,100%,.96),rgba(238,248,253,.88)),radial-gradient(circle at 50% 0,rgba(142,205,242,.32),transparent 62%);color:var(--blue-deep);border-color:rgba(47,111,159,.62);box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.7),0 10px 24px rgba(47,111,159,.1)}.secondary-button:before{opacity:.18;mix-blend-mode:multiply}.hero{min-height:92vh;padding-top:38px}.hero,.hero-grid{display:grid;align-items:center}.hero-grid{grid-template-columns:minmax(0,1fr);grid-gap:24px;gap:24px;justify-items:center}.hero-copy{position:relative;z-index:1;width:min(720px,100%);padding:clamp(38px,6vw,68px) clamp(24px,5vw,58px);border:1px solid rgba(208,169,95,.42);border-radius:8px;background:linear-gradient(rgba(255,253,248,.94),rgba(255,253,248,.94)),radial-gradient(circle at 18% 8%,rgba(142,205,242,.24),transparent 11rem),radial-gradient(circle at 90% 92%,rgba(216,239,252,.42),transparent 11rem);box-shadow:var(--shadow),inset 0 0 0 13px rgba(255,253,250,.75),inset 0 0 0 14px rgba(45,121,174,.18);text-align:center;animation:softRise 1.1s cubic-bezier(.22,1,.36,1) .18s both}.hero-copy:after,.hero-copy:before{position:absolute;z-index:0;content:"";pointer-events:none}.hero-copy:before{right:-82px;background-position:100% 0;opacity:.36;transform:rotate(180deg);transform-origin:center;animation:floralSway 9s ease-in-out infinite}.hero-copy:after,.hero-copy:before{top:-92px;width:min(360px,58%);height:250px;background-image:url(/corner/corner\ left.png);background-repeat:no-repeat;background-size:contain;filter:saturate(1.22) hue-rotate(8deg) contrast(1.04)}.hero-copy:after{left:-82px;background-position:0 0;opacity:.32;transform:scaleX(-1) rotate(180deg);transform-origin:center;animation:floralSway 9s ease-in-out infinite reverse}.hero-copy>*{position:relative;z-index:1}.hero-copy p{max-width:600px;margin-left:auto;margin-right:auto;color:var(--muted);font-family:var(--font-serif);font-size:21px;font-weight:500;line-height:1.72}.hero-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:24px}.hero-divider{display:grid;grid-template-columns:1fr auto 1fr;grid-gap:14px;gap:14px;align-items:center;width:min(320px,82%);margin:28px auto 0;color:var(--gold)}.hero-divider span{height:1px;background:linear-gradient(90deg,transparent,rgba(208,169,95,.58),transparent)}.hero-divider svg{color:var(--blue-deep);opacity:.72;animation:iconBob 5.8s ease-in-out infinite}.photo-frame{position:relative;width:min(380px,100%);min-height:210px;border-radius:8px;overflow:hidden;border:1px solid rgba(208,169,95,.38);background:radial-gradient(circle at 12% 16%,rgba(142,205,242,.36),transparent 7rem),radial-gradient(circle at 92% 20%,rgba(208,169,95,.12),transparent 6rem),linear-gradient(135deg,rgba(220,236,247,.82),rgba(255,253,248,.92));background-size:cover;box-shadow:var(--shadow);animation:photoFloat 7s ease-in-out infinite}.photo-frame.has-photo{min-height:460px;background:linear-gradient(180deg,rgba(255,253,250,.1),rgba(255,253,250,.18)),var(--blue-soft)}.couple-photo{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover}.photo-frame.has-photo:after,.photo-frame.has-photo:before{content:none}.photo-frame.has-photo .photo-caption{background:rgba(255,253,250,.82)}.photo-frame:after,.photo-frame:before{position:absolute;content:"";z-index:0;pointer-events:none}.photo-frame:before{right:-78px;background-position:100% 0;transform:rotate(180deg);transform-origin:center;animation:floralSway 9s ease-in-out infinite reverse}.photo-frame:after,.photo-frame:before{top:-96px;width:min(310px,62%);height:260px;background-image:url(/corner/corner\ left.png);background-repeat:no-repeat;background-size:contain;opacity:.36;filter:saturate(1.22) hue-rotate(8deg) contrast(1.04)}.photo-frame:after{left:-78px;background-position:0 0;transform:scaleX(-1) rotate(180deg);transform-origin:center;animation:floralSway 9s ease-in-out infinite}.photo-caption{position:absolute;left:18px;right:18px;bottom:18px;padding:16px;border-radius:8px;z-index:2;background:rgba(255,253,248,.9);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.photo-caption strong{display:block;font-family:var(--font-script);font-weight:400;font-size:26px}.ornament{position:absolute;width:150px;height:150px;border:1px solid rgba(208,169,95,.32);border-radius:999px;pointer-events:none;animation:slowSpin 28s linear infinite}.ornament.one{top:90px;left:-70px}.ornament.two{right:-78px;bottom:120px;border-color:rgba(47,111,159,.18)}.floral-spray{position:absolute;z-index:0;width:min(360px,50vw);height:auto;pointer-events:none;opacity:.62;filter:saturate(1.22) hue-rotate(8deg) contrast(1.04);mix-blend-mode:normal;animation:floralDrift 9s ease-in-out infinite}.floral-spray:before{content:none}.floral-img{display:block;width:100%;height:auto;object-fit:contain;filter:drop-shadow(0 18px 34px rgba(47,111,159,.08));transform-origin:50% 50%;animation:floralSway 8s ease-in-out infinite}.motion-top-left{animation-name:floralSlideSoft;animation-duration:12s}.motion-top-left .floral-img{animation-name:floralRotateSoft;animation-duration:13s}.motion-top-right{animation-name:floralBreath;animation-duration:10s}.motion-top-right .floral-img{animation-name:floralScaleSoft;animation-duration:9s}.motion-bottom-left{animation-name:floralHorizontal;animation-duration:11s}.motion-bottom-left .floral-img{animation-name:floralTiltSoft;animation-duration:12s}.motion-bottom-right{animation-name:floralDiagonal;animation-duration:13s}.motion-bottom-right .floral-img{animation-name:floralPulseSoft;animation-duration:10s}.floral-spray.top-left{top:-20px;left:-34px}.floral-spray.top-right{top:-20px;right:-34px;transform:scaleX(-1)}.floral-spray.top-right .floral-img{animation-delay:-3s}.floral-spray.bottom-left{left:-34px;bottom:-28px;transform:scaleY(-1) rotate(-8deg)}.floral-spray.bottom-left .floral-img{animation-delay:-5s}.floral-spray.bottom-right{right:-34px;bottom:-28px;transform:scale(-1) rotate(-8deg)}.floral-spray.bottom-right .floral-img{animation-delay:-7s}.dot,.flower,.leaf{display:none}.flower{width:54px;height:32px;border-radius:70% 30% 70% 30%;background:radial-gradient(ellipse at 34% 48%,currentColor 0 16px,transparent 17px),radial-gradient(ellipse at 68% 50%,rgba(255,253,248,.62) 0 12px,transparent 13px);filter:blur(.2px) drop-shadow(0 8px 18px rgba(47,111,159,.08));animation:flowerPulse 8s ease-in-out infinite}.flower-blue{top:62px;left:62px;color:rgba(142,205,242,.72);transform:rotate(-24deg)}.flower-yellow{top:98px;left:30px;width:46px;height:26px;color:rgba(220,236,247,.78);transform:rotate(-34deg)}.flower-rose{top:34px;left:116px;width:42px;height:24px;color:rgba(78,128,168,.42);transform:rotate(22deg)}.flower-coral{top:116px;left:104px;width:38px;height:22px;color:rgba(208,169,95,.18);transform:rotate(16deg)}.leaf{width:74px;height:18px;border-radius:100% 0 100% 0;background:linear-gradient(90deg,rgba(147,181,201,.46),rgba(142,205,242,.34));transform-origin:left center;animation:leafWave 4.8s ease-in-out infinite}.petal-layer{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none}.music-control{display:none}.floating-dock{position:fixed;right:calc(32px + env(safe-area-inset-right, 0px));bottom:calc(204px + env(safe-area-inset-bottom, 0px));z-index:41;width:58px;height:58px;pointer-events:none}.dock-item,.dock-mode,.dock-toggle{position:absolute;left:50%;top:50%;display:grid;place-items:center;width:42px;height:42px;border:1px solid rgba(45,121,174,.5);border-radius:999px;background:linear-gradient(rgba(255,253,250,.9),rgba(237,249,255,.86)),url(/corner/corner\ right.png);background-repeat:no-repeat;background-position:right -42px bottom -42px;background-size:120px auto;color:var(--blue-deep);box-shadow:0 14px 34px rgba(45,121,174,.16);transform:translate(-50%,-50%) scale(.72);transition:transform 1.2s cubic-bezier(.16,1,.3,1),opacity .9s ease,box-shadow .24s ease}.dock-toggle{z-index:2;width:58px;height:58px;pointer-events:auto;transform:translate(-50%,-50%) scale(1);animation:dockPulse 4.8s ease-in-out infinite}.dock-mode{z-index:2;width:38px;height:38px;transform:translate(-50%,-50%) scale(.7)}.dock-item,.dock-mode{opacity:0;pointer-events:none}.dock-item{z-index:1;transition-delay:0s}.dock-item.is-active{border-color:rgba(111,80,190,.78);background:linear-gradient(rgba(246,241,255,.94),rgba(229,248,255,.9)),url(/corner/corner\ left.png);background-repeat:no-repeat;background-position:left -44px top -44px;background-size:118px auto;color:#6f50be;box-shadow:0 0 0 4px rgba(111,80,190,.1),0 18px 38px rgba(111,80,190,.2)}.dock-item.is-active svg{stroke-width:2.7}.floating-dock.is-open .dock-toggle{transform:translate(-50%,-50%) scale(1) rotate(45deg)}.floating-dock.is-open .dock-item{opacity:1;pointer-events:auto}.floating-dock.is-open .dock-mode{opacity:1;pointer-events:auto;transform:translate(calc(-50% - 52px),calc(-50% + 196px)) scale(1)}.floating-dock.is-open .dock-item.home{transform:translate(calc(-50% + 0px),calc(-50% - 170px)) scale(1);transition-delay:20ms}.floating-dock.is-open .dock-item.couple{transform:translate(calc(-50% - 62px),calc(-50% - 148px)) scale(1);transition-delay:70ms}.floating-dock.is-open .dock-item.schedule{transform:translate(calc(-50% - 112px),calc(-50% - 110px)) scale(1);transition-delay:.12s}.floating-dock.is-open .dock-item.location{transform:translate(calc(-50% - 142px),calc(-50% - 52px)) scale(1);transition-delay:.17s}.floating-dock.is-open .dock-item.rsvp{transform:translate(calc(-50% - 150px),calc(-50% + 12px)) scale(1);transition-delay:.22s}.floating-dock.is-open .dock-item.wishes{transform:translate(calc(-50% - 132px),calc(-50% + 76px)) scale(1);transition-delay:.27s}.floating-dock.is-open .dock-item.music-play{transform:translate(calc(-50% - 82px),calc(-50% + 124px)) scale(1);transition-delay:.32s}.floating-dock.is-open .dock-item.music-mute{transform:translate(calc(-50% - 24px),calc(-50% + 154px)) scale(1);transition-delay:.37s}.floating-dock.bar-mode{left:50%;right:auto;bottom:calc(10px + env(safe-area-inset-bottom, 0px));width:min(620px,calc(100vw - 24px));height:62px;border:1px solid rgba(45,121,174,.4);border-radius:999px;background:linear-gradient(rgba(255,253,250,.9),rgba(237,249,255,.86)),url(/corner/corner\ right.png);background-repeat:no-repeat;background-position:right -58px bottom -58px;background-size:160px auto;box-shadow:0 16px 38px rgba(45,121,174,.16);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:auto;transform:translateX(-50%)}.floating-dock.bar-mode .dock-toggle{left:calc(100% - 30px);width:42px;height:42px;animation:none;transform:translate(-50%,-50%) scale(1)}.floating-dock.bar-mode .dock-mode{display:none}.floating-dock.bar-mode .dock-item{top:50%;opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1);transition-delay:0s}.floating-dock.bar-mode .dock-item.home{left:38px}.floating-dock.bar-mode .dock-item.couple{left:88px}.floating-dock.bar-mode .dock-item.schedule{left:138px}.floating-dock.bar-mode .dock-item.location{left:188px}.floating-dock.bar-mode .dock-item.rsvp{left:238px}.floating-dock.bar-mode .dock-item.wishes{left:288px}.floating-dock.bar-mode .dock-item.music-play{left:338px}.floating-dock.bar-mode .dock-item.music-mute{left:388px}.dock-item:hover,.dock-mode:hover,.dock-toggle:hover{box-shadow:0 18px 38px rgba(45,121,174,.22)}.music-button{display:none}.music-button:hover{transform:translateY(-2px) scale(1.03);background:rgba(237,249,255,.9)}.petal{position:absolute;top:-40px;width:8px;height:18px;border-radius:100% 0 100% 0;background:rgba(142,205,242,.14);opacity:.16;animation-name:petalFall;animation-timing-function:linear;animation-iteration-count:infinite}.petal:nth-child(3n){background:rgba(220,236,247,.42)}.petal:nth-child(4n){background:rgba(47,111,159,.18)}.petal:nth-child(5n){background:rgba(147,181,201,.2)}.petal-1{left:6%;animation-duration:13s;animation-delay:-3s}.petal-2{left:14%;animation-duration:18s;animation-delay:-10s}.petal-3{left:23%;animation-duration:15s;animation-delay:-6s}.petal-4{left:31%;animation-duration:19s;animation-delay:-13s}.petal-5{left:39%;animation-duration:14s;animation-delay:-1s}.petal-6{left:48%;animation-duration:20s;animation-delay:-15s}.petal-7{left:56%;animation-duration:16s;animation-delay:-8s}.petal-8{left:64%;animation-duration:21s;animation-delay:-4s}.petal-9{left:72%;animation-duration:17s;animation-delay:-12s}.petal-10{left:81%;animation-duration:14s;animation-delay:-7s}.petal-11{left:88%;animation-duration:18s;animation-delay:-2s}.petal-12{left:94%;animation-duration:22s;animation-delay:-16s}.petal-13{left:18%;animation-duration:23s;animation-delay:-18s}.petal-14{left:68%;animation-duration:24s;animation-delay:-20s}.leaf-a{top:74px;left:36px;transform:rotate(-38deg)}.leaf-b{top:104px;left:76px;transform:rotate(30deg)}.dot{width:5px;height:5px;border-radius:999px;background:var(--gold);opacity:.42}.dot-a{top:34px;left:34px;box-shadow:90px 94px 0 var(--blue-mist),128px 50px 0 var(--blue)}.dot-b{top:136px;left:146px;background:var(--sage);box-shadow:-110px -18px 0 var(--blue),-44px -112px 0 var(--gold)}.section-title{position:relative;z-index:1;max-width:720px;margin:0 auto 34px;text-align:center}.section-title h2{margin:0;font-family:var(--font-script);font-weight:400;font-size:clamp(44px,7vw,72px);line-height:1.12;color:#2d79ae}.section-title p{font-family:var(--font-serif);font-size:20px;font-weight:500;color:var(--muted);line-height:1.65}.couple-grid,.event-grid,.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:18px;gap:18px}.event-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:24px}.gift-note{grid-column:1/-1;text-align:center}.gift-note p{margin:0 auto}.gift-note p+p{margin-top:10px}.event-card,.form-panel,.map-panel,.person,.wish-card{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:linear-gradient(rgba(255,253,248,.9),rgba(255,253,248,.9)),radial-gradient(circle at 90% 16%,rgba(142,205,242,.22),transparent 7rem),radial-gradient(circle at 10% 92%,rgba(208,169,95,.08),transparent 7rem);box-shadow:0 10px 35px rgba(32,133,191,.08);transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.reveal.is-visible .event-actions,.reveal.is-visible .event-card,.reveal.is-visible .form-panel,.reveal.is-visible .map-panel,.reveal.is-visible .person,.reveal.is-visible .photo-frame,.reveal.is-visible .time-box,.reveal.is-visible .wish-card{animation:boxReveal .96s cubic-bezier(.22,1,.36,1) both}.reveal.is-visible .event-card:nth-child(2),.reveal.is-visible .form-panel:nth-child(2),.reveal.is-visible .person:nth-child(2),.reveal.is-visible .time-box:nth-child(2),.reveal.is-visible .wish-card:nth-child(2){animation-delay:.13s}.reveal.is-visible .time-box:nth-child(3),.reveal.is-visible .wish-card:nth-child(3){animation-delay:.23s}.reveal.is-visible .time-box:nth-child(4),.reveal.is-visible .wish-card:nth-child(4){animation-delay:.33s}.reveal.is-visible .event-actions,.reveal.is-visible .map-panel{animation-delay:.16s}.reveal.is-visible .gift-note{animation-delay:.22s}.reveal.is-visible .photo-frame{animation-name:boxRevealFloat;animation-duration:1.1s;animation-delay:.18s}.event-card:before,.form-panel:before,.map-panel:before,.person:before,.wish-card:before{position:absolute;right:-124px;bottom:-118px;z-index:0;width:390px;height:310px;content:"";background-image:url(/corner/corner\ right.png);background-repeat:no-repeat;background-position:50%;background-size:contain;opacity:.28;filter:saturate(1.22) hue-rotate(8deg) contrast(1.04);pointer-events:none;transform-origin:72% 72%;animation:cardFloralFloat 10s ease-in-out infinite}.event-card:first-child:before,.person:first-child:before{animation-name:cardFloralRotate;animation-duration:12s}.event-card:nth-child(2):before,.person:nth-child(2):before{animation-name:cardFloralScale;animation-duration:10s}.form-panel:first-child:before{animation-name:cardFloralSide;animation-duration:11s}.form-panel:nth-child(2):before{animation-name:cardFloralFloat;animation-duration:9s}.map-panel:before{animation-name:cardFloralDiagonal;animation-duration:12s}.wish-card:nth-child(odd):before{animation-name:cardFloralScale}.wish-card:nth-child(2n):before{animation-name:cardFloralSide}.event-card:after,.form-panel:after,.map-panel:after,.person:after,.wish-card:after{position:absolute;left:-34px;top:-38px;z-index:0;width:180px;height:180px;content:"";background:radial-gradient(circle,rgba(142,205,242,.24),transparent 66%),radial-gradient(circle at 35% 42%,rgba(208,169,95,.08),transparent 52%);pointer-events:none;animation:cardWashPulse 8s ease-in-out infinite}.event-card:hover,.form-panel:hover,.map-panel:hover,.person:hover,.wish-card:hover{transform:translateY(-4px);border-color:rgba(124,199,237,.78);box-shadow:0 16px 44px rgba(32,133,191,.13)}.event-card,.form-panel,.map-panel,.person{z-index:2;padding:24px}.couple-avatar{display:none}.couple-avatar img{width:100%;height:100%;object-fit:cover}.bride-avatar{background-color:rgba(255,253,250,.9)}.groom-avatar{background-color:rgba(237,249,255,.9);animation-delay:-2.5s}.event-card>*,.form-panel>*,.map-panel>*,.person>*,.wish-card>*{position:relative;z-index:1}.event-card h3,.person h3{margin:8px 0;font-family:var(--font-script);font-weight:400;font-size:42px;line-height:1.14;color:#2d79ae}.event-card p,.map-panel p,.person p{margin:6px 0;color:var(--muted);font-family:var(--font-serif);font-size:19px;font-weight:500;line-height:1.6}.icon-chip{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:999px;background:var(--blue-soft);color:var(--blue-deep);animation:iconBob 5.8s ease-in-out infinite}.timeline{display:grid;grid-gap:12px;gap:12px;margin-top:18px}.timeline-row{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:8px;background:var(--blue-soft)}.timeline-row strong{display:block;color:#2d79ae;font-family:var(--font-serif);font-size:20px;font-weight:700}.timeline-row span{color:var(--muted);font-size:14px}.countdown{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px;gap:10px;max-width:600px;margin:26px auto 0}.time-box{padding:16px 8px;border:1px solid var(--line);border-radius:8px;background:rgba(255,253,248,.92);text-align:center;animation:softGlow 3.8s ease-in-out infinite}.time-box strong{display:block;color:var(--blue-deep);font-family:var(--font-serif);font-size:36px;font-weight:700}.time-box span{color:var(--muted);font-family:var(--font-serif);font-size:15px;font-weight:600}.form-panel form{display:grid;grid-gap:12px;gap:12px}.field{display:grid;grid-gap:7px;gap:7px}.field label{color:#2d79ae;font-family:var(--font-serif);font-size:17px;font-weight:700}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:12px;background:var(--white);color:var(--ink);font-family:var(--font-sans)}.field textarea{min-height:110px;resize:vertical}.status{min-height:22px;color:var(--blue-deep);font-family:var(--font-serif);font-size:16px;font-weight:600}.wish-list{display:grid;grid-gap:12px;gap:12px}.wish-card{padding:18px;animation:wishEnter .42s ease both}.wish-card strong{display:block;margin-bottom:8px;color:#2d79ae;font-family:var(--font-serif);font-size:22px;font-weight:700}.wish-card p{margin:0;color:var(--muted);font-family:var(--font-serif);font-size:18px;font-weight:500;line-height:1.6}.footer{position:relative;overflow:hidden;padding:42px 20px 58px;background:radial-gradient(circle at 14% 40%,rgba(142,205,242,.36),transparent 14rem),radial-gradient(circle at 86% 30%,rgba(208,169,95,.16),transparent 14rem),linear-gradient(180deg,rgba(255,253,250,.9),rgba(237,249,255,.9)),var(--blue-soft);text-align:center}.footer:before{inset:14px;border:1px solid rgba(208,169,95,.32);border-radius:8px}.footer:after,.footer:before{position:absolute;z-index:0;content:"";pointer-events:none}.footer:after{left:50%;top:50%;width:min(680px,96vw);height:260px;background:radial-gradient(ellipse,hsla(0,0%,100%,.62),transparent 68%);transform:translate(-50%,-50%)}.footer .floral-spray{width:min(520px,64vw);opacity:.58}.footer .floral-spray.top-left{top:-106px;left:-120px}.footer .floral-spray.bottom-right{right:-120px;bottom:-132px}.footer strong{display:block;font-family:var(--font-script);font-weight:400;font-size:54px}.footer p,.footer strong{position:relative;z-index:1}.footer p{font-family:var(--font-serif);font-size:20px;font-weight:500}.primary-button svg,.secondary-button svg{opacity:.82;transition:transform .18s ease}@media (hover:hover){.primary-button:hover svg,.secondary-button:hover svg{transform:rotate(-8deg) scale(1.05)}}@keyframes cardEnter{0%{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes softRise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes photoFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes slowSpin{0%{rotate:0deg}to{rotate:1turn}}@keyframes floralDrift{0%,to{translate:0 0;opacity:.58}50%{translate:0 -14px;opacity:.72}}@keyframes floralSway{0%,to{transform:rotate(-2deg) scale(1)}50%{transform:rotate(3deg) scale(1.04)}}@keyframes floralSlideSoft{0%,to{translate:0 0}50%{translate:16px -8px}}@keyframes floralBreath{0%,to{opacity:.54}50%{opacity:.72}}@keyframes floralHorizontal{0%,to{translate:0 0}50%{translate:-18px 0}}@keyframes floralDiagonal{0%,to{translate:0 0}50%{translate:-12px -14px}}@keyframes floralRotateSoft{0%,to{transform:rotate(-3deg) scale(1)}50%{transform:rotate(4deg) scale(1.025)}}@keyframes floralScaleSoft{0%,to{transform:scale(1)}50%{transform:scale(1.055)}}@keyframes floralTiltSoft{0%,to{transform:rotate(2deg)}50%{transform:rotate(-4deg)}}@keyframes floralPulseSoft{0%,to{opacity:.86;transform:scale(1)}50%{opacity:1;transform:scale(1.035)}}@keyframes cardFloralFloat{0%,to{transform:translateZ(0) rotate(-1deg) scale(1);opacity:.24}50%{transform:translate3d(-12px,-10px,0) rotate(2deg) scale(1.06);opacity:.34}}@keyframes cardFloralRotate{0%,to{transform:translateZ(0) rotate(-3deg) scale(1);opacity:.24}50%{transform:translate3d(-8px,-6px,0) rotate(4deg) scale(1.04);opacity:.34}}@keyframes cardFloralScale{0%,to{transform:scale(1);opacity:.22}50%{transform:scale(1.1);opacity:.34}}@keyframes cardFloralSide{0%,to{transform:translateX(0) rotate(-1deg);opacity:.23}50%{transform:translateX(-18px) rotate(2deg);opacity:.32}}@keyframes cardFloralDiagonal{0%,to{transform:translateZ(0) rotate(0deg) scale(1);opacity:.24}50%{transform:translate3d(-14px,-14px,0) rotate(2deg) scale(1.06);opacity:.34}}@keyframes cardWashDrift{0%,to{transform:translateZ(0) scale(1);opacity:1}50%{transform:translate3d(12px,8px,0) scale(1.08);opacity:.72}}@keyframes cardWashPulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.08);opacity:.74}}@keyframes flowerPulse{0%,to{filter:drop-shadow(0 8px 16px rgba(32,133,191,.12))}50%{filter:drop-shadow(0 12px 22px rgba(47,111,159,.14))}}@keyframes leafWave{0%,to{filter:saturate(1)}50%{filter:saturate(1.25)}}@keyframes petalFall{0%{transform:translate3d(0,-40px,0) rotate(0deg)}50%{transform:translate3d(34px,52vh,0) rotate(160deg)}to{transform:translate3d(-22px,108vh,0) rotate(320deg)}}@keyframes iconBob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes softGlow{0%,to{box-shadow:0 0 0 rgba(32,133,191,0)}50%{box-shadow:0 12px 30px rgba(32,133,191,.1)}}@keyframes wishEnter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes boxReveal{0%{opacity:0;transform:translateY(24px) scale(.975)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes boxRevealFloat{0%{opacity:0;transform:translateY(28px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes musicControlEnter{0%{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes dockPulse{0%,to{box-shadow:0 14px 34px rgba(45,121,174,.16)}50%{box-shadow:0 18px 42px rgba(45,121,174,.25)}}@keyframes avatarBrideFloat{0%,to{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-8px) rotate(2deg)}}@keyframes avatarGroomFloat{0%,to{transform:translateY(-3px) rotate(2deg)}50%{transform:translateY(5px) rotate(-2deg)}}@media (max-width:820px){.section{padding:52px 14px;overflow:hidden}.opening{padding:14px;overflow:hidden}.opening-card{width:min(100%,370px);max-height:calc(100dvh - 28px);overflow-y:auto;padding:34px 18px;box-shadow:0 18px 48px rgba(47,111,159,.16),inset 0 0 0 9px rgba(255,253,248,.72),inset 0 0 0 10px rgba(47,111,159,.16)}.hero h1,.opening-card h1{font-size:clamp(54px,18vw,78px)}.guest-box{margin:18px 0;padding:14px}.guest-box strong{font-size:23px}.hero{min-height:auto;padding-top:50px}.hero-copy{width:100%;padding:46px 18px 34px;box-shadow:0 18px 48px rgba(47,111,159,.14),inset 0 0 0 8px rgba(255,253,248,.75),inset 0 0 0 9px rgba(47,111,159,.16)}.hero-copy:before{top:-70px;right:-84px;width:250px;height:190px;opacity:.3;transform:rotate(180deg)}.hero-copy:after{top:-70px;left:-84px;width:250px;height:190px;opacity:.28;transform:scaleX(-1) rotate(180deg)}.opening-card:before{right:-132px;bottom:-112px;width:330px;height:260px;opacity:.24}.opening-card:after{left:-60px;top:-62px;width:170px;height:170px}.opening-card .guest-box:before,.photo-caption:before,.time-box:before{width:150px;height:120px;opacity:.18}.photo-frame:before{right:-96px;transform:rotate(180deg)}.photo-frame:after,.photo-frame:before{top:-78px;width:230px;height:210px;opacity:.28}.photo-frame:after{left:-96px;transform:scaleX(-1) rotate(180deg)}.hero-copy p{font-size:18px;line-height:1.62}.section-title h2{font-size:clamp(42px,15vw,62px)}.event-card h3,.person h3{font-size:36px}.couple-avatar{display:none}.person{padding-top:88px}.avatar-pair{gap:14px;width:min(190px,74%);margin-bottom:12px}.avatar-img{width:72px;height:72px}.avatar-pair.compact{top:16px;right:16px;gap:8px}.avatar-pair.compact .avatar-img{width:48px;height:48px}.event-card p,.map-panel p,.person p,.section-title p{font-size:18px}.primary-button,.secondary-button{font-size:17px}.event-actions,.hero-actions{display:grid;grid-template-columns:1fr}.primary-button,.secondary-button{width:100%}.couple-grid,.event-grid,.form-grid,.hero-grid{grid-template-columns:1fr}.photo-frame{min-height:230px}.photo-frame.has-photo{min-height:430px}.countdown{grid-template-columns:repeat(2,1fr)}.floral-spray{width:230px;height:auto;opacity:.52}.opening .floral-spray{width:260px;opacity:.48}.floral-spray.top-left{top:-48px;left:-90px}.floral-spray.top-right{top:-48px;right:-90px}.floral-spray.bottom-left{left:-92px;bottom:-58px}.floral-spray.bottom-right{right:-92px;bottom:-58px}.footer{padding:56px 16px 70px}.footer .floral-spray{width:330px;opacity:.48}.footer .floral-spray.top-left{top:-72px;left:-112px}.footer .floral-spray.bottom-right{right:-112px;bottom:-92px}.footer strong{font-size:48px}.flower{transform:scale(.78)}.petal{width:7px;height:14px;opacity:.18}.music-control{display:none}.music-button{width:32px;height:32px}.floating-dock{right:calc(22px + env(safe-area-inset-right, 0px));bottom:calc(198px + env(safe-area-inset-bottom, 0px));left:auto}.dock-toggle,.floating-dock{width:54px;height:54px}.dock-item{width:39px;height:39px}.floating-dock.is-open .dock-item.home{transform:translate(calc(-50% + 0px),calc(-50% - 138px)) scale(1)}.floating-dock.is-open .dock-item.couple{transform:translate(calc(-50% - 50px),calc(-50% - 121px)) scale(1)}.floating-dock.is-open .dock-item.schedule{transform:translate(calc(-50% - 86px),calc(-50% - 88px)) scale(1)}.floating-dock.is-open .dock-item.location{transform:translate(calc(-50% - 108px),calc(-50% - 38px)) scale(1)}.floating-dock.is-open .dock-item.rsvp{transform:translate(calc(-50% - 112px),calc(-50% + 18px)) scale(1)}.floating-dock.is-open .dock-item.wishes{transform:translate(calc(-50% - 92px),calc(-50% + 72px)) scale(1)}.floating-dock.is-open .dock-item.music-play{transform:translate(calc(-50% - 54px),calc(-50% + 110px)) scale(1)}.floating-dock.is-open .dock-item.music-mute{transform:translate(calc(-50% - 8px),calc(-50% + 132px)) scale(1)}.floating-dock.is-open .dock-mode{transform:translate(calc(-50% - 44px),calc(-50% + 174px)) scale(1)}.floating-dock.bar-mode{left:50%;right:auto;bottom:calc(18px + env(safe-area-inset-bottom, 0px));width:min(360px,calc(100vw - 18px));height:58px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;transform:translateX(-50%)}.floating-dock.bar-mode::-webkit-scrollbar{display:none}.floating-dock.bar-mode .dock-toggle{left:396px;width:39px;height:39px}.floating-dock.bar-mode .dock-mode{display:none}.floating-dock.bar-mode .dock-item.home{left:28px}.floating-dock.bar-mode .dock-item.couple{left:74px}.floating-dock.bar-mode .dock-item.schedule{left:120px}.floating-dock.bar-mode .dock-item.location{left:166px}.floating-dock.bar-mode .dock-item.rsvp{left:212px}.floating-dock.bar-mode .dock-item.wishes{left:258px}.floating-dock.bar-mode .dock-item.music-play{left:304px}.floating-dock.bar-mode .dock-item.music-mute{left:350px}.event-card:before,.form-panel:before,.map-panel:before,.person:before,.wish-card:before{right:-128px;bottom:-110px;width:320px;height:250px;opacity:.24}.event-card:after,.form-panel:after,.map-panel:after,.person:after,.wish-card:after{width:150px;height:150px}}@media (max-width:420px){.hero h1,.opening-card h1{font-size:clamp(48px,17vw,68px)}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}