@font-face{font-family:Darrel;src:url('assets/v2/70edc8ae141eff00-s.p.otf');font-display:swap}
@font-face{font-family:Bitter;src:url('assets/v2/03f5a59310fa0fdf-s.p.woff2');font-weight:400;font-display:swap}
@font-face{font-family:Bitter;src:url('assets/v2/95bead14e1a97fe0-s.p.woff2');font-weight:700;font-display:swap}
@font-face{font-family:Tangerine;src:url('assets/v2/1cff898c233acd49-s.p.woff2');font-display:swap}
:root{--ink:#005a8d;--paper:#b8d5e6}
body{background:white;color:#161616;font-family:Bitter,Georgia,serif;font-size:18px;line-height:1.55}
main{max-width:448px;box-shadow:0 0 24px #0000000b;overflow:hidden}
main section{padding:0;margin:64px 0 0;text-align:center;position:relative}
main section:before,main section:after{display:none}
main p{font-size:18px;line-height:28px;margin:0}
main h1,main h2{font-family:Darrel,cursive;font-size:48px;font-weight:400;line-height:48px;color:#000;letter-spacing:0;font-feature-settings:'liga' 1}
main h2{margin:0;padding:32px 0;position:relative;z-index:2;white-space:nowrap}
main h3{font-family:Bitter,Georgia,serif;font-size:24px;font-weight:400;line-height:32px;color:var(--ink);margin:0}
.cover{width:100%;aspect-ratio:4/3;position:relative;isolation:isolate}
.cover>img:not(.cover-edge){display:block;width:100%;height:100%;object-fit:cover;filter:none}
.cover .cover-blend{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;mix-blend-mode:screen;filter:contrast(2);pointer-events:none}
.cover .cover-edge{position:absolute;width:101%;height:auto;bottom:0;left:-.5%;transform:translateY(33%) scaleY(-1);z-index:1;filter:none}
.couple-name{padding:32px 0;text-align:center;position:relative;z-index:2}
.couple-name h1{margin:0;white-space:nowrap}
.date-section{margin:0!important;padding:16px!important}
.rings{display:block;width:65px;height:65px;object-fit:contain;margin:0 auto}
.date-section .smallcaps{font-size:24px;line-height:32px;letter-spacing:0;margin:8px 0 0}
.date-section .date{font-size:16px;line-height:24px;letter-spacing:.2em;color:#111;margin:8px 0 0}
.quote-water{position:relative;padding:0 16px;isolation:isolate;min-height:80px;display:flex;align-items:center;justify-content:center}
.quote-water .quote{font-family:Tangerine,cursive;font-size:36px;line-height:40px;margin:0;position:relative;z-index:1}
.vow-section .quote-water{min-height:120px}
.water-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:-1;pointer-events:none;animation:water-breath 8s ease-in-out infinite alternate}
.quote-water .water-bg{height:auto;top:50%;transform:translateY(-50%) scale(1.4);opacity:.4;animation:quote-wash 9s ease-in-out infinite alternate}
.quote-section:nth-of-type(even) .water-bg{scale:-1 1}
.water-content{position:relative;isolation:isolate;padding:0 16px}
.venue-block .water-bg{opacity:.3;filter:blur(4px)}
.venue-block .venue{display:block;width:100%;max-height:none;aspect-ratio:4/3;object-fit:cover;border-radius:0;mask-image:url('assets/v2/aquarelle-frame-mask-inversed.png');mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-image:url('assets/v2/aquarelle-frame-mask-inversed.png');-webkit-mask-size:100% 100%}
.venue-block .address{margin-top:16px}
.venue-block .time{font-size:24px;line-height:32px;color:var(--ink);margin:16px 0 0;letter-spacing:0;font-weight:400}
.icon-link{font-size:18px;line-height:28px;margin:8px auto 0;gap:4px;text-decoration:none;border:0;padding:0;background:none;color:#111;display:flex;align-items:center;flex-direction:column;width:100%}
.icon-link img{width:64px;height:64px;object-fit:contain;animation:icon-sway 3.6s ease-in-out infinite}
.icon-link span{animation:soft-pulse 2.4s ease-in-out infinite}
.flower-divider{height:59px;position:relative;margin:0;pointer-events:none}
.flower-divider img{position:absolute;top:0;width:144px;height:auto;animation:flower-sway 6s ease-in-out infinite;transform-origin:85% 40%}
.flower-divider.right img{right:-12px}.flower-divider.left{height:46px}.flower-divider.left img{left:-12px;transform-origin:15% 40%}
.dress .water-content{padding:0 16px}
.dress .water-bg{display:none}
#dress-code h2{font-size:clamp(30px,9.6vw,48px)}
.dress p{margin:0}.dress h3{margin:0 0 8px}.dress .dress-request{margin:28px 0}
.swatches{margin:8px auto 0;gap:8px}.swatches span{width:24px;height:24px}
.dress-icon{display:block;width:40%;height:auto;aspect-ratio:256/605;margin:16px auto}.suit-icon{display:block;width:150px;max-width:40%;height:auto;aspect-ratio:256/604;margin:16px auto 0}
.dress-icon+h3{margin:12px 0 0}
.itinerary-block .water-content{padding:0 32px 40px}
.itinerary-block .water-bg{opacity:.3;filter:blur(4px)}
.timeline{list-style:none;max-width:none;margin:0;padding:0;display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center}
.timeline li{display:flex;position:relative;min-height:120px;max-height:120px;gap:12px;align-items:center;justify-content:center;padding:0;width:100%}
.timeline li:nth-child(even){flex-direction:row-reverse}
.timeline img{width:112px;height:96px;object-fit:contain;animation:icon-sway 5s ease-in-out infinite}
.timeline li div{display:flex;flex-direction:column;gap:0;flex:0 1 auto}
.timeline time{font-size:18px;line-height:28px;color:var(--ink)}
.timeline span{font-family:Tangerine,cursive;font-size:36px;line-height:40px}
.memories h2{padding:32px 0 16px}.gallery{background:white;height:auto;position:relative;padding:0 0 28px;margin:0;isolation:isolate}
.gallery-window{overflow:hidden;aspect-ratio:448/646;width:100%;box-shadow:none;border:0;transform:none;touch-action:pan-y;background:white}
.gallery-track{display:flex;width:100%;height:100%;will-change:transform}
.gallery-slide{flex:0 0 100%;min-width:0;height:100%;padding:24px 25px 88px;position:relative;isolation:isolate}
.gallery-slide:before{content:'';position:absolute;inset:8px;background:white;border:1px solid #e5e7eb;box-shadow:0 4px 6px -1px #0000001a;z-index:-1}
.gallery-slide img{display:block;width:100%;height:100%;object-fit:cover}
.gallery button#prev,.gallery button#next{top:45%;width:32px;height:32px;font-size:25px;background:#ffffffc9;color:var(--ink);border:0;border-radius:50%;z-index:2}
.gallery #prev{left:10px}.gallery #next{right:10px}
.slider-dots{display:flex;align-items:center;justify-content:center;gap:10px}
.slider-dots button{position:static;width:9px;height:9px;min-width:9px;border:1px solid #7d9baf;background:#e2ebf1;border-radius:50%;padding:0;font-size:0;cursor:pointer}
.slider-dots button[aria-current=true]{background:#608ba7;box-shadow:0 0 0 3px #b8d5e64d}
#gallery-dots{position:absolute;bottom:0;left:0;right:0;height:20px}
.attendance-block .water-content{padding:0 16px;min-height:196px}
.attendance-block h3{padding-top:0}.attendance-block .icon-link{margin-top:32px;gap:8px}.attendance-block .icon-link img{width:96px;height:96px;animation:envelope-float 4s ease-in-out infinite}
.timer-water{position:relative;isolation:isolate;width:75%;height:124px;margin:0 auto 32px;display:flex;align-items:center;justify-content:center}
.timer-water .water-bg{opacity:.6;transform:scale(1.3)}
.countdown{gap:20px;align-items:center;margin:0;position:relative;z-index:1}.countdown strong{font-family:Arial,sans-serif;font-size:30px;line-height:38px;font-weight:300}.countdown span{font-size:16px;line-height:24px}
.timer-icon{display:block;width:112px;height:auto;margin:0 auto 12px;animation:icon-sway 4s ease-in-out infinite}
.gift-block .water-content{padding:0 16px;display:flex;align-items:center;flex-direction:column;gap:16px}
.gift-icon{display:block;width:80px;height:80px;object-fit:contain;animation:soft-pulse 4s ease-in-out infinite}
.gift-block .account-name{margin:0;line-height:28px}
.account{display:flex;justify-content:center;align-items:center;gap:6px;margin-top:-16px;border:0;padding:0;background:none;border-radius:0;width:auto;color:var(--ink);line-height:28px}
.account strong{font-size:18px;letter-spacing:0;font-weight:700}.copy-icon{width:20px;height:20px;animation:soft-pulse 3s ease-in-out infinite}
.registry-title{margin:0}.registry-link{display:flex;align-items:center;gap:8px;font-size:18px;line-height:28px;text-decoration:none;color:var(--ink);margin-top:-16px}
.registry-link svg{width:24px;height:24px;flex-shrink:0;animation:soft-pulse 3s ease-in-out infinite}
.album-block h3{padding:0 16px}.camera-icon{display:block;width:192px;height:auto;margin:16px auto}.album-block p{padding:0 16px}.qr{width:152px;padding:12px;margin:16px auto 0;background:white}.qr img{width:128px;height:128px}
.hotels-block>p{padding:0 16px}.hotels-viewport{overflow:hidden;touch-action:pan-y}.hotels-track{display:flex;transition:transform 650ms cubic-bezier(.22,.61,.36,1);align-items:stretch}
.hotel-card{flex:0 0 100%;min-width:0;padding:12px 24px 24px;display:flex;flex-direction:column;align-items:center;gap:4px;justify-content:flex-start}
.hotel-card p{overflow-wrap:anywhere}.hotel-card p a{text-decoration:underline;text-underline-offset:2px}.hotel-card .icon-link{margin-top:auto;padding-top:12px}.hotel-card .icon-link img,.hotel-icon{display:block;width:128px;height:105px;object-fit:contain;animation:hotel-bounce 3.5s ease-in-out infinite}
.hotel-icon{margin-top:auto}.hotel-navigation{display:flex;align-items:center;justify-content:center;gap:28px}.hotel-navigation>button{width:32px;height:32px;border:0;background:none;font-size:27px;color:#333}
footer{padding:24px 0 32px;text-align:center}footer img{width:149px;height:auto}
.envelope{width:min(448px,100%);background:var(--paper);color:#050505}.flap{background:var(--paper)}.sender{font-family:Tangerine,cursive;color:#277090;font-size:48px;line-height:1;top:8%}.open-hint{font-family:Bitter,serif;top:78%;font-size:18px;line-height:28px;animation:soft-pulse 2.4s ease-in-out infinite}.open-hint>span,.envelope-prompt{display:block;font-weight:400}
.music{width:32px;height:32px;font-size:18px;bottom:20px;right:max(20px,calc((100vw - 448px)/2 + 20px))}
.scroll-hint{position:fixed;bottom:18px;left:max(18px,calc((100vw - 448px)/2 + 18px));z-index:4;display:flex;flex-direction:column;align-items:center;color:white;text-shadow:1px 1px 3px #000;font-family:Arial,sans-serif;font-size:14px;pointer-events:none}
.scroll-hint img{width:32px;filter:drop-shadow(1px 1px 2px #555);animation:swipe-motion 2s ease-in-out infinite}.scroll-hint[hidden],.envelope[hidden],.music[hidden]{display:none}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
dialog{font-family:Bitter,Georgia,serif;color:#111}dialog h2{font-family:Bitter,serif;font-size:23px;color:var(--ink);font-weight:400;line-height:32px;margin:0 0 20px}dialog label{font-size:15px}dialog .submit{background:var(--ink)}
.adult-entry{margin:0 0 20px}.child-entry{display:block;border:1px solid #d5e1e9;background:#f6f9fb;border-radius:7px;padding:14px 16px 18px;margin:22px 0}.child-entry legend{font-weight:700;color:var(--ink)}.child-entry label{display:block;width:100%;margin-top:10px}input[type=hidden]{display:none!important}
.motion-ready .reveal{opacity:0;filter:blur(7px);transform:translateY(24px) rotate(-2deg);transition:opacity 1.1s ease var(--reveal-delay,0ms),transform 1.2s ease var(--reveal-delay,0ms),filter 1.1s ease var(--reveal-delay,0ms)}
.motion-ready .reveal.is-visible{opacity:1;filter:blur(0);transform:none}
.letter-reveal{display:inline-block;animation:letter-appear .9s both;animation-delay:calc(var(--letter)*.025s)}
.letter-word{display:inline-block;white-space:nowrap}
@keyframes letter-appear{from{opacity:0;filter:blur(9px);transform:translateY(15px)}to{opacity:1;filter:blur(0);transform:none}}
@keyframes water-breath{from{transform:scale(1)}to{transform:scale(1.055)}}
@keyframes quote-wash{from{transform:translateY(-50%) scale(1.35) rotate(-3deg)}to{transform:translateY(-50%) scale(1.4) rotate(3deg)}}
@keyframes icon-sway{0%,100%{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}
@keyframes flower-sway{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(5deg)}}
@keyframes soft-pulse{0%,100%{opacity:1}50%{opacity:.5}}
@keyframes envelope-float{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-7px) rotate(3deg)}}
@keyframes hotel-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes swipe-motion{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(7px) rotate(-8deg)}}
@media(max-width:390px){main h2{font-size:43px}.couple-name h1{font-size:43px}.countdown{gap:14px}.countdown span{font-size:14px}.timeline span{font-size:32px}.timeline img{width:96px}.venue-block h3{font-size:22px}.hotel-card{padding-left:16px;padding-right:16px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.motion-ready .reveal{opacity:1;filter:none;transform:none}}
