:root{--paper:#fbf7f0;--ink:#263d4a;--blue:#dceaf2;--blush:#eed7de;--line:#92a7b4;--rose:#87485e;--serif:'Cormorant Garamond',Georgia,serif}
[data-style="1"]{--blue:#d7e9f4;--blush:#f3dee1}
[data-style="2"]{--blue:#e0ebf1;--blush:#edced8}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:64px}body{margin:0;color:var(--ink);background:var(--paper);font:400 15px/1.65 'Be Vietnam Pro',Arial,sans-serif}button,input,select{font:inherit;color:inherit}a{color:inherit}button{cursor:pointer}figure,p{margin:0}i{font-weight:500;color:var(--rose)}h1,h2,.monogram{font-family:var(--serif);font-weight:600;line-height:.98;margin:0}h2{font-size:clamp(49px,8vw,98px);letter-spacing:-.055em}.eyebrow{text-transform:uppercase;font-size:10px;font-weight:600;letter-spacing:.26em}.bar{position:sticky;top:0;z-index:10;height:64px;padding:0 clamp(16px,5vw,80px);display:flex;align-items:center;justify-content:space-between;background:#fbf7f0f5;border-bottom:1px solid #263d4a22}.bar a{text-decoration:none}.bar .monogram{font-size:28px;white-space:nowrap}.bar nav{display:flex;gap:clamp(12px,4vw,42px);font-size:12px}.bar nav a:hover{text-decoration:underline}.music{border:1px solid var(--line);border-radius:50%;width:36px;height:36px;background:var(--paper);font-size:17px}.progress{position:fixed;top:63px;left:0;right:0;height:2px;z-index:11;background:var(--rose);transform-origin:left;transform:scaleX(var(--progress,0))}
.scene{position:relative;isolation:isolate;overflow:hidden}.cover{background:radial-gradient(ellipse at 8% 91%,var(--blush),transparent 55%),var(--blue);padding:clamp(32px,7vh,85px) 22px 28px;min-height:calc(100svh - 64px);display:grid;place-content:center}.cover-stage{position:relative;width:min(1110px,calc(100vw - 44px));padding:clamp(12px,2.5vw,38px);isolation:isolate}.cover-paper{position:relative;z-index:1;display:grid;align-items:center;grid-template-columns:1.2fr 1fr;gap:3%;padding:clamp(24px,5vw,70px);background:var(--paper);box-shadow:0 20px 75px #476b8238;border:1px solid #fff;outline:1px solid #97aeb1;outline-offset:-12px;transform:translateY(calc(var(--scene,0)*22px))}.cover-copy{text-align:center;position:relative;z-index:4}.cover h1{font-size:clamp(48px,7.6vw,115px);letter-spacing:-.075em;margin:22px 0;white-space:nowrap}.cover h1 i{font-size:.67em;margin:0 .05em}.date{font-size:12px;letter-spacing:.27em;margin-bottom:28px}.date span{color:var(--rose)}.portrait{overflow:hidden;aspect-ratio:4/5;border-radius:49% 49% 4px 4px;background:#dce5e9;border:6px solid #fff;outline:1px solid #9badb6;box-shadow:0 8px 25px #263d4a29}.portrait img,.photo img{display:block;width:100%;height:100%;object-fit:cover}.portrait img{object-position:38% 55%;scale:1.07;transform:translateY(calc(var(--scene,0)*10px))}
.flower{position:absolute;width:min(56vw,720px);aspect-ratio:1.5;pointer-events:none;transform:translate3d(0,calc(var(--scene,0)*var(--drift,55px)),0) rotate(var(--turn,0deg)) scaleX(var(--flip,1));z-index:2}.cover-left{left:-15%;bottom:-15%;--turn:-16deg;--drift:-110px}.cover-right{right:-13%;top:-17%;--turn:169deg;--drift:125px;width:min(47vw,600px)}.foreground{right:-11%;bottom:-25%;width:min(31vw,370px);--turn:20deg;--flip:-1;--drift:-165px;opacity:.72}.swatches{margin:20px auto 0;z-index:4;display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.swatches button{border:1px solid #728c9b;background:#fbf7f0d9;border-radius:100px;padding:7px 12px;font-size:11px}.swatches [aria-pressed=true],.pill{background:var(--ink);color:#fff}.pill{display:inline-flex;align-items:center;justify-content:center;gap:14px;border:1px solid var(--ink);border-radius:100px;min-height:44px;padding:10px 20px;text-decoration:none;font-size:12px;font-weight:600}.pill:hover{background:var(--rose);border-color:var(--rose);color:white}.outline{background:transparent;color:var(--ink)}
.invitation,.reply{display:grid;place-items:center;padding:110px 22px;background:var(--blush)}.letter{width:min(690px,100%);padding:clamp(34px,7vw,84px) clamp(18px,6vw,65px);text-align:center;background:var(--paper);border:1px solid #fff;outline:1px solid #aa8a94;outline-offset:-10px;position:relative;z-index:3;box-shadow:0 15px 55px #633c4e17}.letter h2{margin:17px 0 24px}.letter>p:not(.eyebrow){max-width:410px;margin:0 auto 24px}.event{display:grid;grid-template-columns:1fr 1fr;max-width:435px;margin:24px auto 18px;border-block:1px solid #b6a4a7}.event div{padding:14px 5px}.event div+div{border-left:1px solid #b6a4a7}.event span{display:block;font-size:11px}.event strong{font:600 clamp(30px,5vw,53px)/1.12 var(--serif);white-space:nowrap}.invite-flower{left:-12%;top:18%;--turn:50deg;--drift:-135px}.reply-flower{right:-10%;bottom:-16%;--turn:-14deg;--drift:125px}.reply{background:var(--blue)}.album{padding:100px 6vw 125px;background:var(--paper)}.album-head{text-align:center;position:relative;z-index:3}.album h2{margin:12px 0 38px}.photos{position:relative;z-index:3;max-width:1020px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:clamp(12px,3vw,40px);align-items:start}.photo{padding:8px;border:1px solid #a8b4b7;background:white;box-shadow:0 12px 40px #3b596522;display:block;width:100%;overflow:hidden;--tilt:-3deg}.photo img{aspect-ratio:4/5;transition:scale .45s}.photo:hover img{scale:1.04}.photo.wide{grid-column:span 2;width:83%;justify-self:center;--tilt:1deg}.photo.wide img{aspect-ratio:16/8;object-position:center 57%}.sport{margin-top:20px}.exhibit{--tilt:3deg}.exhibit img{object-position:50% 70%}.album-flower{left:-16%;bottom:-12%;--turn:24deg;--drift:-150px}.motion .reveal{opacity:var(--alpha,1);transform:translateY(var(--lift,0px)) rotate(var(--tilt,0deg))}.reveal:focus-within,.reveal:focus{opacity:1}footer{text-align:center;background:var(--ink);color:var(--paper);padding:42px 12px}footer .monogram{font-size:40px;margin-bottom:12px}footer i{color:#efbecd}
dialog{border:1px solid var(--line);background:var(--paper);color:var(--ink);width:min(92vw,580px);max-height:90svh;padding:32px;box-shadow:0 14px 60px #16273466}dialog::backdrop{background:#1d2f39a6}dialog h2{font-size:42px;margin:10px 30px 18px 0}dialog .close{position:absolute;right:8px;top:8px;background:var(--paper);border:1px solid var(--line);border-radius:50%;width:36px;height:36px;font-size:24px;line-height:1}#lightbox{width:fit-content;padding:9px}#lightbox img{display:block;max-height:80svh;max-width:88vw;object-fit:contain}#video iframe{width:100%;aspect-ratio:16/9;border:0}#player a{display:inline-block;margin-top:12px;font-size:12px}#guest{display:grid;gap:15px}#guest label{display:grid;gap:5px}#guest input,#guest select{min-width:0;width:100%;padding:8px;background:#fff;border:1px solid var(--line)}
@media(max-width:690px){.cover{padding:28px 15px 20px}.cover-stage{width:calc(100vw - 30px);padding:6px}.cover-paper{grid-template-columns:1fr;padding:28px 20px 25px;gap:22px}.cover h1{font-size:clamp(44px,11vw,74px);margin:13px 0}.date{margin-bottom:14px}.portrait{width:min(72%,250px);max-height:35svh;justify-self:center}.cover-right{top:-10%;right:-16%;width:58vw}.cover-left{bottom:-7%;left:-14%;width:65vw}.foreground{display:none}.invitation,.reply{padding:78px 18px}.album{padding:75px 19px}.photo{padding:5px}.photo.wide{width:95%}.swatches{margin-top:14px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}.motion .reveal,.flower,.cover-paper,.portrait img{transform:none;opacity:1}}
