:root{--paper:#fff9f5;--ink:#514539;--muted:#786b60;--sage:#d5dbac;--olive:#414a2b;--rust:#bc704a;--gold:#cc9759;--serif:'Cormorant Garamond',Georgia,serif;--script:'Great Vibes','Marck Script',cursive;--latin:'Great Vibes',cursive;color-scheme:light;font-size:16px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-gutter:stable}body{margin:0;background:#e4e7d5;color:var(--ink);font-family:var(--serif);font-size:1.2rem;line-height:1.6;-webkit-font-smoothing:antialiased}body.sealed{overflow:hidden}body::before{content:'';position:fixed;inset:0;background:linear-gradient(90deg,#dce1d0e8,#edf0e3ec 35%,#edf0e3ec 65%,#dce1d0e8),url('assets/envelope-dz.webp') center/560px auto;z-index:-1}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}button:focus-visible,a:focus-visible{outline:2px solid var(--rust);outline-offset:6px}button{touch-action:manipulation}button:disabled{cursor:default}button svg,a svg{width:22px;height:22px;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}p,h1,h2,h3{margin:0}p+p{margin-top:20px}h2{font-family:var(--script);font-size:clamp(2.2rem,7.5vw,3rem);font-weight:400;line-height:1.28}h3{font-weight:400}a{color:inherit}[hidden]{display:none!important}.invitation{position:relative;width:min(100%,560px);margin:0 auto;background:var(--paper);box-shadow:0 0 100px #4147291a;isolation:isolate;overflow:clip}main{transition:filter 1.2s,transform 1.8s;transform-origin:50% 20%}.sealed main{max-height:100svh;overflow:hidden;filter:brightness(.5);transform:scale(.95);visibility:hidden}.hero{position:relative;min-height:750px;height:100svh;max-height:1080px;overflow:hidden;background:#efd7bd}.garden{position:absolute;width:100%;height:100%;object-fit:cover;object-position:center;inset:0}.hero-copy{position:absolute;top:29%;left:4%;right:4%;text-align:center;color:#534331;text-shadow:0 1px 7px #fff7e8a8}.hero-copy::before{content:'';position:absolute;inset:-34px 12% -20px;background:radial-gradient(ellipse,#fff4e789,transparent 70%);z-index:0;pointer-events:none}.hero-copy>*{position:relative}.eyebrow{font-family:var(--serif);font-size:.8rem;letter-spacing:.2em;line-height:1.6;font-weight:500}.hero .eyebrow{font-size:.78rem;letter-spacing:.15em}h1{font-family:var(--script);font-weight:400;font-size:clamp(2.6rem,8.8vw,3.8rem);line-height:1.16;margin:17px 0 10px;outline:none}h1{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.14em;font-size:clamp(2.4rem,9vw,3.7rem)}h1>span{display:block}.hero-copy{top:28%}.ampersand{font-family:var(--latin);font-size:.85em;line-height:.85;margin:7px 0 8px;color:#946345}.little-sun{color:var(--rust);font-size:1rem;display:block;margin:16px 0 10px}.wedding-date{font-size:1.04rem;letter-spacing:.1em;font-weight:500}.scroll-note{position:absolute;bottom:28px;left:0;right:0;display:flex;flex-direction:column;align-items:center;gap:10px;text-decoration:none;font-size:.76rem;letter-spacing:.15em;color:#504831;text-shadow:0 1px 8px #fff9f3;background:linear-gradient(transparent,#fff4e277,transparent);padding:15px 0}.scroll-note svg{height:30px;animation:float 2.5s ease-in-out infinite}.section{padding:54px 50px;text-align:center}.welcome{padding-top:67px;padding-bottom:30px}.small-script{font-family:var(--script);color:#946c52;font-size:1.28rem;line-height:1.5;margin-bottom:10px}.welcome h2{margin-bottom:25px}.section>p:not(.eyebrow):not(.small-script):not(.closing-names){line-height:1.8;color:var(--muted)}.fine-divider{display:flex;align-items:center;justify-content:center;gap:19px;margin:44px 30px 0;color:var(--gold);font-family:Georgia,serif;font-size:24px}.fine-divider::before,.fine-divider::after{content:'';width:56px;height:1px;background:#ddc7ad}.section-heading{margin-bottom:42px}.section-heading h2{margin-bottom:13px}.heading-heart{font-family:Georgia,serif;color:var(--gold);display:block;font-size:24px;margin:12px 0}.timeline{text-align:left;padding:0 0 0 28px;border-left:1px solid #dfcdbb;margin-left:8px}.story-item{position:relative;padding:0 0 42px}.story-item:last-child{padding-bottom:0}.story-item::before{content:'';position:absolute;left:-33px;top:10px;width:8px;height:8px;border-radius:50%;background:#cf9b58;box-shadow:0 0 0 5px var(--paper)}.story-label{color:#a38060;font-style:italic;font-size:1.08rem}.story-item h3{font-family:var(--script);font-size:1.8rem;line-height:1.25;margin:6px 0 13px}.story-item p{font-size:1.1rem;color:var(--muted);line-height:1.75}.garden-vignette{position:relative;width:280px;height:187px;margin:7px auto 3px;overflow:hidden;border-radius:48% 48% 45% 45%;-webkit-mask-image:radial-gradient(ellipse,#000 45%,transparent 71%);mask-image:radial-gradient(ellipse,#000 45%,transparent 71%)}.garden-vignette img{width:100%;height:100%;object-fit:cover;object-position:center;mix-blend-mode:multiply;transform:scale(1.12)}.program{padding-top:28px}.section-note{font-size:1rem;color:var(--muted)}.schedule{text-align:left}.schedule-item{display:grid;grid-template-columns:44px 1fr;gap:17px;align-items:start;margin-bottom:30px}.schedule-item:last-child{margin-bottom:0}.schedule-icon{display:grid;place-items:center;width:44px;height:44px;background:#f2eadd;border-radius:50%;color:#b48254}.schedule-icon svg{width:23px;height:23px;stroke:currentColor;fill:none;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round}.schedule-title{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}.schedule-title h3{font-size:1.3rem;font-weight:500;line-height:1.3}.schedule-time{font-family:Georgia,serif;font-size:.88rem;letter-spacing:.03em;background:#c78e53;color:#fff;padding:1px 8px;border-radius:2px;white-space:nowrap}.schedule-item p{font-size:1.02rem;line-height:1.5;color:var(--muted);margin:5px 0 0}.gifts{padding-top:25px}.gifts h2{margin:12px 0 24px}.details{position:relative;margin:15px 30px 0;padding:45px 22px 48px;background:#f1f0e5;border:1px solid #c5caa45c}.details::before{content:'';position:absolute;inset:7px;border:1px solid #c4c7a66b;pointer-events:none}.details h2{margin-bottom:27px}.venue-name{font-size:1.55rem;font-weight:500}.venue-details>p{margin:8px 0;color:var(--muted);font-size:1.12rem}.venue-details .venue-name{color:var(--ink);font-size:1.55rem}.venue-details .detail-date{margin-top:23px;letter-spacing:.07em;color:#8e6146}.closing{padding:65px 24px 48px}.closing-names{font-family:var(--script);font-size:2.15rem;line-height:1.4;margin:14px 0 19px;overflow-wrap:anywhere}.closing-amp{font-family:var(--latin);color:var(--rust)}.closing .eyebrow{color:var(--muted);font-size:.76rem}.replay-button{background:none;border:0;border-bottom:1px solid #bba88f70;color:#827260;font-family:var(--serif);font-size:.93rem;margin-top:40px;padding:8px 0;cursor:pointer}.replay-button span{margin-left:6px}.replay-button:hover{color:var(--rust)}
.envelope{position:fixed;z-index:20;top:0;bottom:0;left:50%;width:min(100%,560px);transform:translateX(-50%);perspective:1200px;background:var(--sage);overflow:hidden;transition:opacity 1s ease .45s,visibility 0s 1.5s}.envelope-button{display:block;border:0;background:transparent;position:relative;height:100%;width:100%;padding:0;color:var(--olive);cursor:pointer;overflow:hidden}.envelope-art{position:absolute;inset:0;background:url('assets/envelope-dz.webp') center center/cover;transform-origin:50% 0;transition:transform 1.5s cubic-bezier(.5,0,.15,1),filter 1.2s;will-change:transform}.envelope-art::after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 47%,#dce1b124 60%,transparent 85%)}.cover-copy{position:absolute;top:65%;left:5%;right:5%;display:flex;flex-direction:column;align-items:center;transition:opacity .5s,transform .9s}.cover-kicker{font-family:var(--serif);font-size:.73rem;letter-spacing:.13em;line-height:1.6}.cover-title{font-family:var(--script);font-size:clamp(2.7rem,9.8vw,3.8rem);line-height:1.3;margin:13px 0 8px;text-shadow:0 1px 4px #e1e5bc}.cover-rule{display:block;width:37px;height:1px;background:#64714875;margin:10px 0 19px}.cover-hint{font-family:var(--serif);font-size:.79rem;letter-spacing:.14em;line-height:1.5}.cover-bottom{position:absolute;bottom:25px;left:0;right:0;font-size:.75rem;letter-spacing:.23em;opacity:.75}.envelope-button:hover .envelope-art{filter:brightness(1.025)}.envelope-button:focus-visible{outline-offset:-8px;outline:2px solid #6a7543}.opening .envelope{opacity:0;visibility:hidden;pointer-events:none}.opening .envelope-art{transform:translateY(-58%) rotateX(26deg) scale(1.035);filter:brightness(.8)}.opening .cover-copy{opacity:0;transform:translateY(50px)}.opening main{animation:letter-arrives 1.7s cubic-bezier(.2,.6,.3,1)}.music-toggle{position:fixed;bottom:max(22px,env(safe-area-inset-bottom));right:max(20px,calc((100vw - 560px)/2 + 20px));z-index:25;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid #ffffffb3;border-radius:50%;background:#fffaf1e8;color:#7a7d57;box-shadow:0 2px 12px #41462a10;cursor:pointer;transition:background .2s,color .2s}.music-toggle:hover{background:#fff9f0}.music-toggle[aria-pressed=true]{color:#a85d42;background:#fff5e6}.music-toggle[aria-pressed=true] .music-slash{display:none}.reveal{opacity:1;transform:none}.motion-ready .reveal{opacity:0;transform:translateY(20px);transition:opacity .9s,transform .9s}.motion-ready .reveal.visible{opacity:1;transform:translateY(0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.noscript-note{text-align:center;padding:20px}
@keyframes float{50%{transform:translateY(6px)}}@keyframes letter-arrives{from{filter:brightness(.5);transform:scale(.95)}to{filter:brightness(1);transform:scale(1)}}
@media(min-width:900px){.invitation{border-left:1px solid #d3d7c3;border-right:1px solid #d3d7c3}.hero{min-height:820px}.hero-copy{top:27%}.envelope{box-shadow:0 0 90px #39421f24}}
@media(max-width:480px){html{scrollbar-gutter:auto}.hero{min-height:680px;max-height:950px}.section{padding-left:31px;padding-right:31px}.hero-copy{top:29%}.hero .eyebrow{font-size:.75rem;letter-spacing:.1em}.cover-kicker{font-size:.75rem;letter-spacing:.09em}.cover-copy{top:65%}.cover-title{margin-top:10px}.cover-rule{margin:5px 0 16px}.story-item h3{font-size:1.7rem}.details{margin-left:22px;margin-right:22px;padding-left:22px;padding-right:22px}.closing{padding-left:20px;padding-right:20px}.closing-names{font-size:1.9rem}.scroll-note{bottom:18px}.music-toggle{right:16px;bottom:18px}.section-note{font-size:1rem}}
@media(max-height:680px){.cover-copy{top:64%}.cover-title{font-size:2.7rem;margin:7px 0}.cover-kicker{display:none}.cover-rule{margin:4px 0 12px}.cover-bottom{bottom:20px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.motion-ready .reveal{opacity:1;transform:none}.envelope-art{will-change:auto}}

.cover-copy::before{content:'';position:absolute;inset:-15px -12px;background:radial-gradient(ellipse,#e0e5bfa6 15%,#e0e5bf44 55%,transparent 72%);z-index:-1}.cover-hint{font-weight:600;color:#343e24;letter-spacing:.11em}.hero .eyebrow{max-width:270px;margin:0 auto;line-height:1.7;text-shadow:0 0 8px #fff7e6}.hero h1{margin:18px 0 12px}.hero .ampersand{margin:0 .05em;line-height:1}.hero .wedding-date{display:inline-block;background:#fff7ed8c;padding:2px 10px}.hero .little-sun{margin:9px 0}.small-script{font-size:1.4rem}.story-item h3{font-size:2rem}

.venue-route{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:46px;margin-top:25px;padding:10px 22px;border:1px solid #8d99706b;border-radius:2px;background:#e4e8d4;color:var(--olive);text-decoration:none;font-size:1rem;letter-spacing:.03em;transition:background .2s}.venue-route:hover{background:#d8dfc4}.closing .eyebrow{margin-top:22px}
.venue-map-frame{position:relative;margin-top:28px;padding:5px;border:1px solid #a6ae877a;background:#fff9f5;overflow:hidden}.venue-map-frame iframe{display:block;width:100%;height:320px;border:0;background:#e6e8df}.details .venue-route{min-height:48px}.details{scroll-margin-top:20px}@media(max-width:480px){.venue-map-frame{margin-inline:-9px}.venue-map-frame iframe{height:290px}}

/* A single warm paper panel keeps all invitation text legible over the garden. */
.hero-copy {
  left: 5%;
  right: 5%;
  padding: 27px 18px 23px;
  background: rgba(255, 249, 239, .92);
  border: 1px solid rgba(191, 160, 119, .6);
  border-radius: 7px;
  box-shadow: 0 8px 30px rgba(67, 49, 28, .12), inset 0 0 0 4px rgba(255, 253, 245, .45);
  color: #493a2d;
  text-shadow: none;
}
.hero-copy::before { display: none; }
.hero .hero-copy .eyebrow { color: #51432f; text-shadow: none; }
.hero .hero-copy .wedding-date { background: none; color: #51432f; }
.hero .hero-copy .ampersand { color: #925d3f; }
@media (max-width: 380px) {
  .hero-copy { left: 4%; right: 4%; padding: 23px 12px 20px; }
}
