:root{--ink:#45465d;--muted:#69677d;--lavender:#8d83aa;--paper:#faf9fc;--line:#d9d6e4;--blue:#e4ecf6}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--paper);font-family:Georgia,'Times New Roman',serif;font-size:18px;line-height:1.7}body.sealed{overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #756997;outline-offset:7px}.eyebrow{font-family:Arial,sans-serif;font-size:12px;letter-spacing:.22em;line-height:1.7;color:var(--muted)}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:400;line-height:1.12}h2{font-size:clamp(38px,5vw,65px)}em{font-weight:400;color:var(--lavender)}.cover{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;flex-direction:column;background:radial-gradient(ellipse at 15% 30%,#e6edf7,transparent 65%),radial-gradient(ellipse at 85% 70%,#e7dff0,transparent 65%),#f6f5fa;transition:opacity 1s ease,visibility 1s;overflow:hidden;padding:30px}.cover-caption{text-align:center;margin-bottom:65px}.cover h1{font-size:clamp(26px,4vw,43px);margin-top:15px}.envelope{width:min(580px,85vw);height:340px;position:relative;perspective:1400px;filter:drop-shadow(0 25px 25px #605b7026);background:#e6e4ef;border:1px solid #d1cddd}.letter{position:absolute;inset:14px 20px;background:#fffdfc;text-align:center;padding:70px 10px;transition:transform 1.3s .3s}.letter span{font-size:36px;font-style:italic}.letter p{font-size:16px;color:var(--muted);margin-top:15px}.pocket{position:absolute;inset:0;background:linear-gradient(32deg,#e8e4f0 49.7%,transparent 50%) left/50.1% 100% no-repeat,linear-gradient(-32deg,#f1edf5 49.7%,transparent 50%) right/50.1% 100% no-repeat;z-index:3}.pocket:after{content:'';position:absolute;inset:0;clip-path:polygon(0 100%,50% 42%,100% 100%);background:linear-gradient(135deg,#f5f1f8,#e6e6f2);border-bottom:6px double #d4cfdf}.flap{position:absolute;inset:0;background:linear-gradient(#f8f5fb,#e2dfea);clip-path:polygon(0 0,100% 0,50% 61%);transform-origin:top;transition:transform 1.2s ease;z-index:4;backface-visibility:hidden}.flap:before{content:'';position:absolute;inset:0;background:url('assets/floral-frame.webp') center 15%/cover;opacity:.34}.seal{position:absolute;z-index:5;left:50%;top:56%;transform:translate(-50%,-50%);width:94px;height:94px;border-radius:47% 52% 48% 50%;border:5px solid #d3c2a2;background:radial-gradient(circle at 30% 20%,#f5e9d2,#ceba97 80%);box-shadow:0 5px 10px #6a5b5240,inset 0 0 0 2px #f5e7cd,inset 0 0 0 6px #ccb48f;cursor:pointer;color:#776348;transition:transform .55s,opacity .5s}.seal span{font-size:25px;text-shadow:0 1px #fff6e8}.seal i{font-size:18px}.seal:hover{transform:translate(-50%,-50%) scale(1.05)}.open-hint{font-size:15px;color:var(--muted);margin-top:43px}.cover-bottom{font-family:Arial,sans-serif;font-size:11px;letter-spacing:.19em;position:absolute;bottom:25px}.opening .seal{transform:translate(-50%,-50%) scale(1.18);opacity:0}.opening .flap{transform:rotateX(180deg)}.opening .letter{transform:translateY(-75px)}.cover.dismissed{opacity:0;visibility:hidden;pointer-events:none}#sparkles{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:30}main{opacity:0;transition:opacity 1.1s}body.opened main{opacity:1}.masthead{height:90px;max-width:1280px;margin:auto;display:flex;justify-content:space-between;align-items:center;padding:0 6%;border-bottom:1px solid var(--line)}.masthead a{text-decoration:none;font-size:30px;letter-spacing:.08em}.masthead i{color:var(--lavender);font-size:22px}.masthead>span{font:11px Arial,sans-serif;letter-spacing:.2em}.hero{position:relative;max-width:1220px;margin:auto;min-height:760px;display:grid;grid-template-columns:1fr 1fr;align-items:center;padding:60px 40px 100px;gap:30px}.hero-copy{text-align:center}.hero h1{font-size:clamp(62px,7.5vw,100px);line-height:1.06;margin:25px 0}.hero h1 em{font-size:.62em}.hairline{height:1px;background:#beb5cf;width:85px;margin:32px auto}.hero-copy p{font-size:20px;line-height:1.65}.hero-place{display:block;font:12px Arial,sans-serif;letter-spacing:.23em;margin-top:28px}.portrait-frame{position:relative;aspect-ratio:2/3;width:100%;max-width:500px;margin:auto}.portrait{position:absolute;inset:9% 12%;width:76%;height:82%;object-fit:cover;object-position:center 43%;border-radius:48% 48% 45% 45%;box-shadow:0 0 0 10px #f4f1f7,0 0 0 11px #c3b9cf}.floral-frame{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;mix-blend-mode:multiply;mask-image:linear-gradient(#000,#000);z-index:-1}.portrait-frame{isolation:isolate}.scroll-note{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);font:12px Arial,sans-serif;letter-spacing:.09em;text-decoration:none;text-align:center}.scroll-note span{display:block;font-size:25px;margin-top:9px;color:var(--lavender)}.welcome{text-align:center;padding:115px 24px 125px;background:linear-gradient(115deg,#edf1f8,#f0eaf5)}.welcome h2{margin:25px 0 34px}.welcome p{margin:20px auto;max-width:570px}.signature{display:block;font-size:30px;font-style:italic;color:#817497;margin-top:42px}.date-section{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center;max-width:1000px;margin:auto;padding:115px 30px}.date-section h2{margin-top:25px}.calendar-wrap{text-align:center;min-height:150px;display:grid;place-content:center;width:100%;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:30px 0}#date-pending{color:var(--muted);font-size:17px;font-style:italic}.calendar-title{font-size:27px;margin-bottom:25px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;width:min(100%,355px);margin:auto}.calendar-grid span{position:relative;display:grid;place-items:center;min-width:32px;height:38px;font-size:17px}.calendar-grid .weekday{font:11px Arial,sans-serif;color:var(--muted)}.calendar-grid .selected{color:white;isolation:isolate}.selected:before{content:'♥';position:absolute;z-index:-1;font-size:49px;color:#9386ac;line-height:1;top:-7px}.photo-story{max-width:1150px;margin:auto;display:grid;grid-template-columns:1fr .7fr;align-items:center;padding:0 40px 110px;gap:80px}.photo-story img{width:100%;max-height:660px;object-fit:cover;border-radius:48% 48% 0 0}.story-caption p{font-size:clamp(36px,5vw,61px);line-height:1.15;margin-top:24px}.details{text-align:center;padding:100px 25px;background:linear-gradient(145deg,#ecebf6,#eef3f8)}.details h2{margin:22px 0 65px}.schedule{display:grid;grid-template-columns:1fr 1fr;max-width:670px;margin:0 auto 70px}.schedule>div+div{border-left:1px solid #cec9dc}.schedule time{font-size:46px;color:#7b7398;line-height:1}.schedule h3{font-size:23px;margin:18px 0 12px}.schedule p{font-size:16px;color:var(--muted)}.venue{max-width:580px;margin:auto;padding:50px 20px;border-top:1px solid #cec9dc}.venue h3{font-size:43px;margin:18px 0}.venue p{color:var(--muted)}.map-link{display:inline-block;margin-top:30px;padding:12px 30px;border:1px solid #a59ab9;text-decoration:none;font:14px Arial,sans-serif;transition:background .2s}.map-link:hover{background:#e0daec}.memories{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;max-width:1220px;margin:auto;padding:100px 40px 0;align-items:center}.memories img{width:100%;aspect-ratio:2/3;object-fit:cover}.memories img:nth-child(2){margin-top:100px}footer{text-align:center;padding:110px 20px 60px}footer h2{margin:25px 0 40px}.footer-monogram{font-size:56px;color:#8d81a5}.footer-monogram i{font-size:35px}footer p{font-size:18px;color:var(--muted);margin-top:12px}.replay{background:none;border:0;border-bottom:1px solid var(--line);margin-top:45px;color:var(--muted);font:13px Arial,sans-serif;padding:10px;cursor:pointer}.reveal{opacity:0;transform:translateY(24px);transition:opacity 1s,transform 1s}.reveal.visible{opacity:1;transform:none}@media(min-width:1500px){.hero{min-height:840px}}@media(max-width:700px){.cover{padding:20px}.cover-caption{margin-bottom:52px}.envelope{height:235px;max-width:420px}.seal{height:80px;width:80px}.seal span{font-size:22px}.letter{padding-top:35px}.letter span{font-size:26px}.cover-bottom{font-size:10px}.open-hint{font-size:14px;margin-top:35px}.masthead{height:65px;padding:0 22px}.masthead>span{font-size:9px;letter-spacing:.12em}.masthead a{font-size:25px}.hero{display:flex;flex-direction:column;padding:40px 22px 65px;gap:25px;min-height:auto}.hero h1{font-size:59px;margin:18px 0}.hero h1 br{display:none}.hero h1 em{display:block;font-size:29px;margin:8px}.hero-copy p{font-size:17px}.hairline{margin:20px auto}.hero-place{margin-top:20px;font-size:11px}.portrait-frame{max-width:370px;margin:0 auto}.scroll-note{font-size:11px;bottom:7px}.scroll-note span{margin:0}.welcome{padding:75px 20px}.welcome p{font-size:17px}.date-section{grid-template-columns:1fr;gap:35px;text-align:center;padding:75px 30px}.photo-story{grid-template-columns:1fr;gap:35px;padding:0 25px 75px}.photo-story img{max-height:580px}.story-caption{text-align:center}.story-caption p{font-size:43px}.details{padding:75px 20px 35px}.details h2{margin-bottom:50px}.schedule time{font-size:38px}.schedule h3{font-size:19px}.schedule p{font-size:14px}.schedule{margin-bottom:45px;gap:15px}.venue h3{font-size:36px}.memories{gap:10px;padding:65px 15px 0}.memories img:nth-child(2){margin-top:50px}footer{padding:75px 20px 40px}footer>.eyebrow{font-size:10px}.eyebrow{font-size:11px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}}

.hero-date{display:block;margin-top:25px;font-size:25px;color:#716386;font-style:italic}
.music-toggle{position:fixed;right:20px;bottom:20px;z-index:15;display:flex;align-items:center;gap:10px;background:#faf9fcf2;color:#554b6b;border:1px solid #b9adcd;border-radius:30px;padding:10px 17px;box-shadow:0 4px 20px #51445a18;cursor:pointer;font:13px Arial,sans-serif;min-height:46px;backdrop-filter:blur(8px)}
.music-toggle[hidden]{display:none}.music-toggle>span:first-child{font-size:23px}
.calendar-title{text-transform:capitalize}footer{padding-bottom:100px}
@media(max-width:700px){.hero-date{font-size:22px;margin-top:20px}.music-toggle{right:12px;bottom:12px;padding:8px 13px;font-size:12px}}
