@font-face{font-family:Invitation Script;src:url("assets/script.otf") format("opentype");font-display:swap}
@font-face{font-family:Invitation Serif;src:url("assets/serif.otf") format("opentype");font-display:swap}
:root{--paper:#fbf8ef;--ivory:#f7f3e9;--forest:#2d492e;--ink:#252e37;--gold:#9a773e;--muted:#565c5e;--green:#315c39;--site-width:760px;--serif:"Cormorant Garamond","Invitation Serif",Georgia,serif;--small-caps:"Cormorant SC",var(--serif);--script:"Great Vibes","Invitation Script","Palatino Linotype",cursive}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scrollbar-gutter:stable;background:#eae3d5}
body{margin:0;color:var(--ink);font:17px/1.5 var(--serif);background:radial-gradient(ellipse at 50% 25%,#f9f6ee 15%,#e8dfce 100%) fixed}
button,input{font:inherit}
button,a,input{-webkit-tap-highlight-color:transparent}
button{cursor:pointer}
a{color:inherit}
img{display:block;max-width:100%}
h1,h2,h3,p,figure,blockquote{margin:0}
[hidden]{display:none!important}
:focus-visible{outline:3px solid #386949;outline-offset:4px}
.sr-only,.symbols{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.invitation{width:min(100%,var(--site-width));margin-inline:auto;background:var(--paper);position:relative;box-shadow:0 0 45px #65523625}
.eyebrow,.field-label{text-transform:uppercase;letter-spacing:.19em;font-family:var(--small-caps);font-size:.7rem;line-height:1.45;font-weight:600}
.script{font:400 2.5rem/1.05 var(--script);font-synthesis:none}
.crest{display:block;overflow:visible}
.mc-floral{opacity:.82}
.mc-letter{fill:url(#mc-gold);stroke:#88632d;stroke-width:.27;paint-order:stroke}
.mc-flight,.mc-glints{opacity:0;pointer-events:none}
@media(prefers-reduced-motion:no-preference){
  .crest.is-animating{--logo-cycle:9s}
  .crest.is-animating .mc-letter-m{animation:mc-letter-in .7s ease-out both,mc-letter-glow var(--logo-cycle) .98s ease-in-out infinite}
  .crest.is-animating .mc-letter-c{animation:mc-letter-in .75s .2s ease-out both,mc-letter-glow var(--logo-cycle) 1.25s ease-in-out infinite}
  .crest.is-animating .mc-floral-top{animation:mc-floral-in 1.05s .07s ease-out both}
  .crest.is-animating .mc-floral-bottom{animation:mc-floral-in 1.35s .48s ease-out both}
  .crest.is-animating .mc-flight-one{animation:mc-fly-one var(--logo-cycle) linear infinite}
  .crest.is-animating .mc-flight-two{animation:mc-fly-two var(--logo-cycle) linear infinite}
  .crest.is-animating .mc-flight use{transform-box:fill-box;transform-origin:center;animation:mc-wings .44s ease-in-out infinite}
  .crest.is-animating .mc-glints{animation:mc-sparkle var(--logo-cycle) ease-in-out infinite}
  .crest.is-animating:not(.is-in-view) :is(.mc-letter,.mc-floral,.mc-flight,.mc-flight use,.mc-glints){animation-play-state:paused}
}
@keyframes mc-letter-in{from{opacity:0;translate:0 2px}to{opacity:1;translate:0 0}}
@keyframes mc-letter-glow{0%,62%,100%{opacity:1}80%{opacity:.82}}
@keyframes mc-floral-in{from{opacity:0}to{opacity:.82}}
@keyframes mc-fly-one{
  0%,24%{opacity:0;transform:translate(1px,130px) rotate(-28deg)}
  33%{opacity:.86;transform:translate(18px,114px) rotate(-39deg)}
  46%{transform:translate(35px,63px) rotate(-17deg)}
  57%{transform:translate(62px,30px) rotate(18deg)}
  69%{transform:translate(102px,43px) rotate(43deg)}
  82%{opacity:.82;transform:translate(141px,78px) rotate(34deg)}
  92%,100%{opacity:0;transform:translate(155px,94px) rotate(49deg)}
}
@keyframes mc-fly-two{
  0%,30%{opacity:0;transform:translate(18px,146px) rotate(-22deg)}
  40%{opacity:.77;transform:translate(32px,120px) rotate(5deg)}
  52%{transform:translate(57px,86px) rotate(-27deg)}
  64%{transform:translate(94px,96px) rotate(55deg)}
  77%{transform:translate(118px,71px) rotate(23deg)}
  88%{opacity:.84;transform:translate(143px,64px) rotate(39deg)}
  98%,100%{opacity:0;transform:translate(157px,44px) rotate(52deg)}
}
@keyframes mc-wings{0%,100%{scale:1 1}50%{scale:.44 1}}
@keyframes mc-sparkle{0%,26%,92%,100%{opacity:0}41%,72%{opacity:.71}55%,83%{opacity:.15}}
.flourish{width:103px;height:19px;color:var(--gold);display:block;margin-inline:auto}
.envelope{height:100svh;max-height:1120px;isolation:isolate;overflow:hidden;position:relative;background:#e4dad7;--seal-top:66%;--seal-size:clamp(80px,min(28vw,23svh),175px);--seal-zoom:1.16;--flap-hinge:22%}
.envelope-stage{position:absolute;inset:0;perspective:1850px;perspective-origin:50% var(--flap-hinge);transform-origin:50% var(--seal-top)}
.envelope-liner{position:absolute;inset:-18% 0 auto;height:89%;background:#e4dad7 url("assets/mumias-blue-sky-cover.webp") center top/100% 100% no-repeat}
.cover-crest{position:absolute;z-index:1;top:1.4%;left:50%;transform:translateX(-50%);width:clamp(48px,min(14vw,14svh),106px);height:auto;aspect-ratio:128/132}
.envelope-pocket,.envelope-paper,.envelope-flap,.flap-face{position:absolute;inset:0;width:100%;height:100%}
.envelope-pocket,.envelope-paper{pointer-events:none}
.envelope-pocket{z-index:2;overflow:visible}
.pocket-lift-shadow{opacity:0}
.envelope-flap{z-index:4;transform-origin:50% var(--flap-hinge);transform-style:preserve-3d;pointer-events:none}
.flap-face{backface-visibility:hidden}
.flap-face-front{transform:translateZ(.25px)}
.flap-face-back{transform:rotateY(180deg) translateZ(.25px)}
.open-envelope{border:0;padding:0;background:transparent;position:absolute;top:calc(var(--seal-top) - var(--seal-size) / 2);left:50%;transform:translateX(-50%);display:grid;justify-items:center;gap:clamp(2px,.8svh,8px);min-width:132px;min-height:44px;border-radius:24px;touch-action:manipulation;pointer-events:auto}
.seal{display:block;width:var(--seal-size);height:auto;filter:drop-shadow(1px 5px 5px #5d3e296c);transition:transform .25s ease}
.open-envelope-label{display:grid;place-items:center;min-height:44px;padding-inline:20px;border:1px solid #fffdf5c9;border-radius:99px;background:linear-gradient(145deg,#fffdf3ac,#fffdf332);backdrop-filter:blur(7px);box-shadow:inset 0 1px 0 #ffffffae,0 4px 14px #7f6a5630;color:#574731;font-size:.68rem;letter-spacing:.17em;text-transform:uppercase;font-family:var(--small-caps);white-space:nowrap}
@media(hover:hover){.open-envelope:hover .seal{transform:scale(1.055)}}
.open-envelope:active .seal{transform:scale(.95)}
.envelope-caption{position:absolute;z-index:3;bottom:1.9%;inset-inline:12px;text-align:center;color:#695c50;pointer-events:none}
.envelope-ornament{display:block;width:clamp(68px,18vw,88px);height:auto;margin:0 auto clamp(8px,1.9svh,16px);color:#98764a}
.envelope-caption .script{font-size:clamp(2.15rem,6vw,3.4rem);margin-top:4px;color:#554d45;-webkit-text-stroke:.24px #e6ddda}
.envelope.is-opening{position:absolute;inset:0 0 auto;z-index:8;pointer-events:none}
.is-opening .envelope-stage{animation:seal-close-up .6s cubic-bezier(.29,.06,.22,1) both}
.is-opening .envelope-liner{animation:liner-close-up .6s cubic-bezier(.29,.06,.22,1) both}
.is-opening .open-envelope{pointer-events:none}
.is-opening :is(.cover-crest,.open-envelope-label){animation:opening-hint-away .34s .23s ease-out both}
.is-lifting .envelope-flap{animation:lift-flap 1s .1s cubic-bezier(.4,.05,.23,1) both}
.is-lifting .pocket-lift-shadow{animation:pocket-shadow 1s .1s ease-in-out both}
.envelope.is-opening:not(.is-revealing)+main{visibility:hidden}
.envelope.is-revealing{
  mask-image:linear-gradient(to bottom,transparent 0 46%,#000 54% 100%);
  mask-size:100% 240%;mask-repeat:no-repeat;
  animation:cover-away .53s .12s ease-in-out both;
}
.is-revealing .envelope-pocket,.is-revealing .envelope-caption{animation:lower-pocket .53s .12s ease-in-out both}
@keyframes seal-close-up{to{transform:translateY(-5.5%) scale(var(--seal-zoom))}}
@keyframes liner-close-up{to{background-size:89% 100%}}
@keyframes lift-flap{0%{transform:rotateX(0)}48%{transform:rotateX(-92deg)}100%{transform:rotateX(-174deg)}}
@keyframes cover-away{from{mask-position:0 100%;opacity:1}84%{opacity:1}to{mask-position:0 0;opacity:0}}
@keyframes lower-pocket{to{transform:translateY(clamp(30px,6svh,65px))}}
@keyframes opening-hint-away{to{opacity:0}}
@keyframes pocket-shadow{0%,100%{opacity:0}42%{opacity:.38}72%{opacity:.13}}
.hero{position:relative;isolation:isolate;display:grid;justify-items:center;align-content:start;min-height:clamp(610px,100svh,1075px);background:#fcefdc;text-align:center;overflow:hidden;clip-path:polygon(0 0,100% 0,var(--paper-bottom))}
.hero-art{position:absolute;z-index:-1;inset:0;background:url("assets/mumias-hero-rails.webp") center/100% 100% no-repeat;pointer-events:none}
.hero-art::before,.hero-art::after{content:"";position:absolute;width:100%;max-height:55%;background-image:url("assets/mumias-modern-hero.webp");background-size:100% auto;background-repeat:no-repeat}
.hero-art::before{inset:0 0 auto;aspect-ratio:1024/560;background-position:center top;mask-image:linear-gradient(#000 91%,transparent)}
.hero-art::after{inset:auto 0 0;aspect-ratio:1024/580;background-position:center bottom;mask-image:linear-gradient(to top,#000 92%,transparent)}
@media(prefers-reduced-motion:no-preference){
  .hero-art-in .hero-art{animation:hero-art-settle .9s cubic-bezier(.22,.62,.35,1) both}
  .hero-intro-pending :is(.hero-crest,.couple,.announcement,.hero-copy>.flourish,.date-card,.hero>.scroll-link,.sound-button){visibility:hidden}
  .hero-intro-playing :is(.hero-crest,.announcement,.hero-copy>.flourish,.date-card,.hero>.scroll-link,.sound-button){animation:hero-item-in .42s var(--hero-delay) cubic-bezier(.22,.62,.35,1) backwards}
  .hero-intro-playing .hero-crest{--hero-delay:.12s}
  .hero-intro-playing .couple{animation:hero-title-in .56s .21s cubic-bezier(.22,.62,.35,1) backwards}
  .hero-intro-playing .announcement{--hero-delay:.31s}
  .hero-intro-playing .hero-copy>.flourish{--hero-delay:.36s}
  .hero-intro-playing .date-card{--hero-delay:.43s}
  .hero-intro-playing :is(.hero>.scroll-link,.sound-button){--hero-delay:.56s}
}
@keyframes hero-art-settle{from{opacity:.76;scale:1.025}to{opacity:1;scale:1}}
@keyframes hero-item-in{from{visibility:hidden;opacity:0;translate:0 10px}to{visibility:visible;opacity:1;translate:none}}
@keyframes hero-title-in{
  from{visibility:hidden;opacity:0;translate:0 9px;clip-path:inset(-.4em 48% -.4em -.4em)}
  to{visibility:visible;opacity:1;translate:none;clip-path:inset(-.4em)}
}
.hero-copy{position:relative;width:min(100%,585px);padding:clamp(40px,7svh,75px) 18px 150px}
.hero-crest{width:clamp(83px,14vw,128px);height:auto;aspect-ratio:128/132;margin:0 auto 13px}
.couple{font-size:clamp(2.65rem,8.5vw,5.5rem);color:#392d22;white-space:nowrap}
.couple:focus{outline:none}
.couple span{font-size:.41em;color:#856438;display:inline-block;vertical-align:10%;margin-inline:.15em}
.announcement{margin:15px 0 4px;letter-spacing:.23em;color:#564230;font-size:clamp(.85rem,2.25vw,1.05rem)}
.date-card{position:relative;isolation:isolate;display:grid;place-items:center;min-height:110px;width:min(100%,337px);margin:15px auto 0;border:1px solid #ab9a7f73;border-radius:12px;background:#fffcf6ed;box-shadow:0 3px 7px #695d4a13}
.date-copy{padding:13px 12px 12px;display:grid;gap:3px;justify-items:center}
.date-copy .script{font-size:clamp(1.95rem,5.5vw,2.8rem);color:var(--forest)}
.date-copy .eyebrow{font-size:.66rem;color:#65543b}
.scratch-control{position:absolute;inset:-1px;width:calc(100% + 2px);height:calc(100% + 2px);border:0;padding:0;background:transparent;border-radius:inherit;overflow:hidden;isolation:isolate;color:#fff8db;touch-action:none;cursor:url("assets/scratch-cursor.svg") 18 18,crosshair;user-select:none}
.scratch-label{position:absolute;inset:0;display:grid;place-content:center;gap:3px;background:linear-gradient(135deg,#4b754d,#1e3f27);font-family:var(--small-caps);font-size:.72rem;letter-spacing:.17em;text-transform:uppercase}
.scratch-label b{font-weight:400}
.scratch-label small{font-family:var(--serif);font-style:italic;letter-spacing:.035em;text-transform:none;font-size:.8rem}
.scratch-control canvas{position:absolute;inset:0;width:100%;height:100%;opacity:0}
.scratch-control.has-canvas canvas{opacity:1}
.scratch-control.has-canvas .scratch-label{opacity:0}
.scratch-control.revealed{pointer-events:none;animation:unveil .4s both}
@keyframes unveil{to{opacity:0}}
.countdown{width:min(100%,332px);margin:17px auto 0;color:var(--forest);animation:rise-in .45s ease both;text-shadow:0 0 12px #fffaf0}
.countdown-units{display:grid;grid-template-columns:repeat(4,1fr);padding:9px 2px;margin-top:5px}
.countdown-units div+div{border-left:1px solid #a98b5544}
.countdown-units b{display:block;font-weight:400;font-size:clamp(1.12rem,3.7vw,1.45rem);line-height:1.15;font-variant-numeric:tabular-nums}
.countdown-units span{text-transform:uppercase;font-size:.57rem;letter-spacing:.16em}
@keyframes rise-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.scroll-link{position:absolute;z-index:1;bottom:clamp(18px,4vw,36px);color:#344b37;text-decoration:none;background:#fffaf0f0;border:1px solid #c3ad82;border-radius:99px;display:inline-flex;align-items:center;gap:7px;padding:8px 15px;min-height:44px;font-size:.63rem;text-transform:uppercase;letter-spacing:.15em}
.scroll-link svg{width:14px;height:14px;transform:rotate(90deg)}
.confetti{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden}
.confetti i{position:absolute;top:18%;left:var(--x);width:var(--w);height:var(--h);background:var(--color);opacity:0;animation:confetti-fall var(--duration) var(--delay) ease-in both}
@keyframes confetti-fall{0%{opacity:0;transform:translate(0,-35px) rotate(0)}10%{opacity:.85}85%{opacity:.75}100%{opacity:0;transform:translate(var(--drift),min(70svh,600px)) rotate(var(--spin))}}
.section{position:relative;text-align:center}
.section-heading{position:relative;margin-inline:auto;width:min(100%,520px);padding-inline:22px}
.section-heading h2{font-weight:500;font-size:clamp(1.3rem,4.8vw,2.15rem);letter-spacing:.15em;line-height:1.3;text-transform:uppercase}
.section-heading h2 .script{display:block;margin-top:5px;text-transform:none;font-size:clamp(2.05rem,5.5vw,3.2rem);color:#856638}
.section-heading .flourish{margin-block:8px}
.section-note{font-style:italic;color:#505e50}
main{--section-paper:#f8f3e7}
.family-paper{padding:clamp(103px,16vw,158px) clamp(18px,4vw,40px) clamp(172px,29vw,255px)}
.family-paper .section-heading h2 .script,.family-paper .flourish{color:var(--paper-gold)}
.family-hosts{display:block;margin-top:5px;font-size:clamp(1.19rem,3.1vw,1.59rem);line-height:1.28;text-wrap:balance}
.family-pair{position:relative;display:grid;grid-template-columns:minmax(0,1fr) clamp(66px,15vw,112px) minmax(0,1fr);align-items:center;gap:clamp(6px,2vw,19px);width:min(100%,620px);margin:46px auto 0}
.family-name{font-size:clamp(1.65rem,5.2vw,2.9rem);line-height:1.25;text-wrap:balance}
.family-crest{width:100%;height:auto;aspect-ratio:128/132}
.story{isolation:isolate;padding:clamp(59px,10vw,94px) 16px clamp(85px,15vw,130px);background:var(--section-paper)}
.story::before{background:#fbf6e9 url("assets/mumias-woven-sections.webp") center/cover no-repeat}
.story .section-heading{background:radial-gradient(ellipse at center,#fbf6e9ed 22%,#fbf6e9ba 49%,transparent 76%)}
.carousel{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:clamp(7px,3vw,25px);align-items:center;margin:31px auto 0;width:min(100%,500px);touch-action:pan-y}
.carousel-arrow{width:44px;height:44px;border:1px solid #b3c2ad;border-radius:50%;background:#fffcf6f5;color:var(--forest);display:grid;place-items:center;box-shadow:0 2px 7px #314b3416}
.carousel-arrow svg{width:18px;height:18px}
.carousel-arrow.previous svg{transform:rotate(180deg)}
.polaroid{position:relative;padding:clamp(8px,2vw,14px);background:#fffdf6;box-shadow:0 6px 22px #283d2831;transform:rotate(-2.5deg);width:min(100%,350px);justify-self:center}
.polaroid::before{content:"";position:absolute;z-index:1;top:-8px;left:50%;width:24%;height:18px;transform:translateX(-50%) rotate(2deg);background:#c3a66b65;clip-path:polygon(2% 0,100% 5%,97% 25%,100% 44%,96% 70%,100% 90%,4% 100%,6% 77%,0 55%,4% 27%)}
.story-photos{position:relative;aspect-ratio:3/4;background:#c4b5a1}
.story-photos img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;transition:opacity .2s ease}
.story-photos img[aria-hidden="true"]{z-index:0;opacity:0;transition:opacity 0s .2s}
.polaroid figcaption{font-size:clamp(1.08rem,3.1vw,1.67rem);color:#394e3b;margin-top:8px;min-height:2em;display:grid;place-items:center}
.carousel-dots{display:flex;justify-content:center;margin:14px auto 0}
.carousel-dots button{display:grid;place-items:center;width:37px;height:44px;padding:0;background:none;border:0;color:#a58b54;border-radius:10px}
.carousel-dots button::before{content:"";width:7px;height:7px;border:1px solid currentColor;border-radius:50%;background:#eadbb5}
.carousel-dots button[aria-current="true"]::before{background:#3c6944;border-color:#3c6944;transform:scale(1.28)}
.story-signoff{position:relative;width:min(100%,420px);margin:20px auto 0;padding:15px 16px;background:#fffcf3e6;color:#6c542e}
.story-signoff .script{font-size:clamp(1.25rem,3.4vw,1.8rem)}
.families,.schedule{padding-block:clamp(5px,1vw,10px);background:var(--section-paper)}
.green-paper{--paper-gold:#f3e4ba;position:relative;isolation:isolate;color:#fff8e9}
.schedule-paper{padding:clamp(69px,11vw,105px) clamp(19px,6vw,62px) clamp(73px,12vw,111px)}
main{--paper-top:0 10px,2% 12px,4% 7px,7% 9px,10% 3px,12% 5px,15% 0,18% 5px,22% 7px,24% 13px,27% 8px,31% 12px,34% 10px,38% 15px,42% 13px,46% 17px,50% 10px,55% 12px,59% 6px,64% 9px,68% 5px,72% 8px,75% 3px,79% 8px,83% 11px,87% 7px,91% 12px,95% 9px,98% 14px,100% 11px;--paper-bottom:100% calc(100% - 8px),96% calc(100% - 12px),92% calc(100% - 7px),88% calc(100% - 13px),85% calc(100% - 9px),81% calc(100% - 15px),77% calc(100% - 11px),73% calc(100% - 13px),69% calc(100% - 5px),65% calc(100% - 8px),60% calc(100% - 3px),56% calc(100% - 7px),51% 100%,47% calc(100% - 6px),42% calc(100% - 10px),39% calc(100% - 4px),35% calc(100% - 7px),30% calc(100% - 12px),26% calc(100% - 9px),22% calc(100% - 14px),19% calc(100% - 10px),15% calc(100% - 13px),12% calc(100% - 6px),8% calc(100% - 9px),4% calc(100% - 4px),0 calc(100% - 7px);--paper-edge:polygon(var(--paper-top),var(--paper-bottom))}
.green-paper::before,.story::before,.rsvp::before{content:"";position:absolute;z-index:-1;inset:0;clip-path:var(--paper-edge);pointer-events:none}
.green-paper::before{background:#3f6046}
.green-paper::after{content:"";position:absolute;z-index:-1;bottom:clamp(16px,4vw,30px);width:clamp(66px,17vw,116px);aspect-ratio:1;background:url("assets/green-paper-sunflowers.webp") center/contain no-repeat;opacity:.8;pointer-events:none}
.family-paper::after{left:clamp(22px,5vw,44px)}
.schedule-paper::after{right:clamp(22px,5vw,44px);transform:scaleX(-1)}
.story::after,.rsvp::after{content:"";position:absolute;z-index:-2;inset:1px 0 -1px;background:#cbbda6;clip-path:var(--paper-edge);pointer-events:none}
.green-paper .woven-edges{clip-path:var(--paper-edge)}
.woven-edges{position:absolute;z-index:1;inset:0;pointer-events:none}
.woven-edges::before,.woven-edges::after{content:"";position:absolute;inset-block:0;width:clamp(10px,3vw,17px);background:url("assets/african-woven-border.png") center top/100% auto repeat-y}
.woven-edges::before{inset-inline-start:0}
.woven-edges::after{inset-inline-end:0;transform:scaleX(-1)}
.green-paper .crest{filter:brightness(1.35)}
.schedule-crest,.footer-crest{width:clamp(62px,10vw,83px);height:auto;aspect-ratio:160/166;margin:0 auto 7px}
.schedule-paper .section-heading{padding-inline:0}
.schedule-paper .section-heading .eyebrow{margin-top:13px;font-size:clamp(.7rem,2vw,.85rem)}
.schedule-paper .flourish{color:var(--paper-gold)}
.schedule-date{display:block;margin-top:23px;color:var(--paper-gold);font-size:clamp(.95rem,2.5vw,1.08rem);letter-spacing:.12em;text-transform:uppercase}
.schedule-timeline{--marker-size:clamp(53px,9vw,70px);--timeline-gap:clamp(35px,6vw,48px);display:grid;gap:var(--timeline-gap);width:min(100%,480px);margin:clamp(37px,7vw,54px) auto 0;padding:0;list-style:none;text-align:left}
.timeline-event{position:relative;display:grid;grid-template-columns:var(--marker-size) minmax(0,1fr);align-items:start;gap:clamp(13px,4vw,26px)}
.timeline-event:not(:last-child)::before{content:"";position:absolute;inset-block:calc(var(--marker-size) / 2) calc(0px - var(--timeline-gap) - var(--marker-size) / 2);inset-inline-start:calc(var(--marker-size) / 2);width:1px;background:#d8c995}
.timeline-marker{position:relative;display:grid;place-items:center;width:var(--marker-size);height:var(--marker-size);border:1px solid #b5a275;border-radius:50%;background:#fffaf0;color:#75592e}
.timeline-marker svg{width:68%;height:68%}
.timeline-copy h3{font-size:clamp(2.2rem,6.2vw,3.2rem);margin-block:4px 5px}
.timeline-copy>p{font-size:1rem}
.timeline-copy .timeline-start{color:var(--paper-gold);font-size:.84rem;letter-spacing:.1em;text-transform:uppercase}
.timeline-map{display:inline-flex;align-items:center;gap:10px;width:fit-content;min-height:54px;margin-top:8px;padding:4px;color:inherit;font-size:clamp(1.08rem,3.2vw,1.36rem);line-height:1.25;text-decoration:none}
.timeline-map:focus-visible{outline-color:var(--paper-gold)}
.timeline-map svg{width:clamp(26px,5vw,31px);height:clamp(26px,5vw,31px);flex:none;color:var(--paper-gold)}
.timeline-map small{display:block;margin-top:4px;color:var(--paper-gold);font-size:clamp(.86rem,2.3vw,.97rem);text-decoration:underline;text-underline-offset:2px}
.schedule-note{margin-top:clamp(42px,7vw,57px);color:var(--paper-gold)}
.rsvp{isolation:isolate;padding:clamp(80px,15vw,140px) clamp(15px,6vw,55px) clamp(74px,16vw,135px);background:var(--section-paper)}
.rsvp::before{background:#f6f5ec url("assets/mumias-woven-sections.webp") center/100% 100% no-repeat}
.rsvp-card{--rsvp-cap:clamp(78px,18vw,108px);position:relative;width:min(100%,465px);margin:var(--rsvp-cap) auto 0;background:#fffdf7;border-radius:0 0 22px 22px;padding:1px clamp(15px,5vw,30px) 16px;filter:drop-shadow(0 6px 12px #344d342d)}
.rsvp-card::before{content:"";position:absolute;inset:auto 0 calc(100% - 1px);height:var(--rsvp-cap);background:url("assets/rsvp-card-cap.svg") center bottom/100% 100% no-repeat;pointer-events:none}
.rsvp-card .section-heading h2{font-weight:400}
.rsvp-card .section-heading{padding:0;margin-top:calc(var(--rsvp-cap) * -.55);margin-bottom:13px}
.rsvp-crest{width:47px;height:auto;aspect-ratio:160/166;margin:0 auto 3px}
.rsvp-card .section-heading .flourish{margin-top:0;margin-bottom:4px}
#rsvp-form{text-align:left}
#rsvp-form label[for="guest-phone"]{margin-top:10px}
.field-label{display:block;font-size:.65rem;letter-spacing:.12em;color:#4f5354;margin-bottom:5px}
#guest-name,#guest-phone,.choices span,.event-choices label{border:1px solid #a8b0a2;border-radius:8px;min-height:44px}
#guest-name,#guest-phone{display:block;width:100%;background:#fffcf5;color:var(--ink);padding:8px 11px}
#guest-name::placeholder,#guest-phone::placeholder{color:#5d695d}
fieldset{border:0;padding:0;min-width:0;margin:12px 0 0}
.choices{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.choices label{position:relative;display:block;cursor:pointer}
.choices input{position:absolute;opacity:0;inset:0;margin:0}
.choices span{display:grid;place-items:center;text-align:center;padding:5px;font-size:clamp(.76rem,2.8vw,.93rem);background:#fffcf5}
.choices input:checked+span{background:var(--green);border-color:var(--green);color:#fffdf4}
.choices input:focus-visible+span{outline:3px solid #386949;outline-offset:3px}
#attending-fields{margin-top:12px}
.event-choices{display:grid;gap:6px}
.event-choices label{display:flex;gap:10px;align-items:center;padding:6px 9px;cursor:pointer;background:#fffcf5;font-size:.89rem;line-height:1.2}
.event-choices label:has(:checked){border-color:#63825e;background:#e9f1e5}
.event-choices label input{accent-color:var(--green);width:17px;height:17px;flex:none;margin:0}
.event-choices small{display:block;color:#4b5c49;font-size:.76rem;margin-top:2px}
.form-error{color:#8d3329;font-size:.83rem}
.rsvp-submit,.rsvp-result button{min-height:46px;border-radius:99px;border:1px solid var(--green);background:var(--green);color:#fffdf6;text-align:center;padding:8px 15px;letter-spacing:.13em;text-transform:uppercase;font-family:var(--small-caps);font-size:.76rem}
.rsvp-submit{width:100%;margin-top:13px}
.rsvp-submit span[aria-hidden]{font-size:.95rem;margin-right:3px}
.rsvp-submit:disabled{opacity:.7;cursor:wait}
.rsvp-result{padding:17px 7px 8px;color:var(--forest)}
.rsvp-result .script{margin-bottom:7px;overflow-wrap:anywhere}
.rsvp-result button{margin-top:13px}
.rsvp-code-label{margin-top:16px;font-family:var(--small-caps);font-size:.85rem;letter-spacing:.06em}
.rsvp-code-label strong{display:block;margin-top:4px;font-size:1.25rem;letter-spacing:.14em;overflow-wrap:anywhere}
.rsvp-whatsapp{display:block;margin-top:14px;font-size:.92rem;text-underline-offset:4px}
.rsvp-contact-note{margin:15px 0 0;color:var(--forest);font-size:.88rem}
.rsvp-contacts{display:flex;flex-wrap:wrap;justify-content:center;column-gap:clamp(10px,4vw,24px);margin:1px 0 0;color:var(--forest);font-size:.87rem}
.rsvp-contacts a{display:inline-flex;align-items:center;gap:5px;min-height:44px;text-underline-offset:3px;white-space:nowrap}
.rsvp-contacts svg{width:17px;height:17px}
.venue-map{position:relative;isolation:isolate;display:grid;grid-template-rows:1fr auto;min-height:clamp(152px,35vw,208px);margin-top:9px;padding:12px 7px 3px;border:1px solid #bec9b7;border-radius:12px;background:linear-gradient(#fffcf33d,#fffcf33d),#edf1e6 url("assets/rsvp-map-backdrop.webp") left center/cover no-repeat;color:#29472d}
.map-pins{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;gap:4px}
.map-pins a{position:relative;display:grid;align-content:start;justify-items:center;gap:4px;min-height:68px;padding:6px 1px;font-size:clamp(.77rem,2.6vw,.95rem);line-height:1.2;text-align:center;text-decoration:none;text-shadow:0 0 5px #fffdf7,0 0 6px #fffdf7}
.venue-map a:hover{text-decoration:underline}
.map-pins a svg{width:34px;height:34px;filter:drop-shadow(0 2px 2px #32493647)}
.venue-map-search{justify-self:center;display:inline-flex;align-items:center;min-height:44px;padding-inline:10px;font-size:.86rem;text-underline-offset:3px}
.map-route{position:absolute;top:calc(50% - 15px);left:17%;width:66%;height:30px;opacity:.6;pointer-events:none}
footer{padding:35px 18px 39px;text-align:center;background:#f6eee0;color:var(--forest)}
footer .script{margin:7px 0 12px;font-size:2.7rem}
footer a{display:inline-flex;align-items:center;gap:5px;min-height:44px;text-decoration:none}
.sound-button{width:46px;height:46px;display:grid;place-items:center;padding:0;border-radius:50%;border:1px solid #d1af82;background:#4b2c20;color:#fffdf4;position:fixed;z-index:5;right:max(calc((100% - var(--site-width)) / 2 + 15px),16px);bottom:max(16px,env(safe-area-inset-bottom));box-shadow:0 3px 9px #4b2c2040}
.sound-button svg{width:22px;height:22px}
.sound-button[aria-pressed="true"] .mute-line{display:none}
@media(max-width:420px){.hero-copy{padding-inline:18px}.couple{font-size:clamp(1.75rem,10.2vw,2.65rem)}.date-card{width:min(84%,315px)}.countdown{width:min(87%,315px)}}
@media(max-height:460px){
  .envelope{--seal-size:clamp(46px,17svh,75px);--seal-zoom:1.14}
  .open-envelope-label{min-height:27px;padding-inline:12px;font-size:.57rem}
  .envelope-ornament{width:64px;margin-bottom:4px}
  .envelope-caption .eyebrow{font-size:.56rem}
  .envelope-caption .script{font-size:clamp(1rem,5.7svh,1.5rem);margin-top:2px}
}
@media(orientation:landscape) and (max-height:500px){:root{--site-width:clamp(300px,110svh,520px)}}
@media(prefers-reduced-motion:no-preference){
  .scroll-motion [data-scroll-reveal]{opacity:0;transition:opacity .42s ease}
  .scroll-motion [data-scroll-reveal]>*{translate:0 18px;transition:translate .48s cubic-bezier(.2,.65,.35,1)}
  .scroll-motion [data-scroll-reveal].scroll-past>*{translate:0 -18px}
  .scroll-motion [data-scroll-reveal]:is(.scroll-visible,:focus-within,:target,:has(:target)){opacity:1}
  .scroll-motion [data-scroll-reveal]:is(.scroll-visible,:focus-within,:target,:has(:target))>*{translate:none}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-delay:0ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
