:root{--ivory:#f4f0e7;--paper:#f8f5ee;--ink:#1e231d;--muted:#6b6b61;--sage:#99a08c;--sage-dark:#737b69;--gold:#a78847;--line:rgba(79,69,48,.24);--serif:"Cormorant Garamond",Georgia,serif;--sans:"Montserrat",Arial,sans-serif;--ease:cubic-bezier(.22,.8,.24,1);--photo-tear:polygon(1.4% .8%,7% 0,13% .9%,20% .2%,27% 1%,34% .15%,42% .8%,49% .1%,57% .9%,65% .15%,73% .8%,81% .1%,88% .9%,94% .2%,99% 1.2%,98.4% 8%,99.5% 15%,98.6% 23%,99.4% 31%,98.5% 39%,99.5% 47%,98.4% 55%,99.3% 63%,98.5% 71%,99.4% 79%,98.4% 87%,99% 94%,98% 99%,91% 98.7%,84% 99.5%,76% 98.6%,68% 99.4%,60% 98.5%,52% 99.4%,44% 98.6%,36% 99.5%,28% 98.7%,20% 99.4%,12% 98.6%,5% 99.3%,1% 98%,1.6% 91%,.5% 83%,1.5% 75%,.6% 67%,1.5% 59%,.5% 51%,1.5% 43%,.6% 35%,1.5% 27%,.5% 19%,1.5% 11%)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--ivory);color:var(--ink);font-family:var(--serif);font-size:18px;overflow-x:hidden}.locked{overflow:hidden}img{display:block;width:100%}button,input,select,textarea{font:inherit;color:inherit}.skip-link{position:fixed;left:1rem;top:-4rem;z-index:100;background:#fff;padding:.7rem 1rem}.skip-link:focus{top:1rem}.micro{margin:0;font-family:var(--sans);font-size:.64rem;letter-spacing:.34em;text-transform:uppercase;line-height:1.7}.gold-rule{display:block;width:42px;height:1px;margin:1.4rem auto;background:var(--gold)}
.orientation-gate{display:none}
@media (max-width:700px) and (orientation:portrait){
  html,body{overflow:hidden!important}
  .orientation-gate{
    position:fixed;
    inset:0;
    z-index:1000;
    display:grid;
    place-items:center;
    min-height:100svh;
    padding:max(1.5rem,env(safe-area-inset-top)) max(1.4rem,env(safe-area-inset-right)) max(1.5rem,env(safe-area-inset-bottom)) max(1.4rem,env(safe-area-inset-left));
    overflow:hidden;
    background:#f4f0e7 url("assets/option3-inner-paper.png") center/cover no-repeat;
    text-align:center;
    touch-action:none;
  }
  .orientation-gate::before{
    content:"";
    position:absolute;
    inset:0;
    background:linear-gradient(180deg,rgba(255,255,255,.22),rgba(244,240,231,.08));
    pointer-events:none;
  }
  .orientation-gate-inner{
    position:relative;
    z-index:1;
    display:grid;
    justify-items:center;
    width:min(100%,390px);
  }
  .orientation-phone{
    position:relative;
    display:block;
    width:60px;
    height:102px;
    border:2px solid var(--sage-dark);
    border-radius:11px;
    box-shadow:0 8px 18px rgba(68,63,49,.09);
    animation:orientation-phone-turn 2.4s var(--ease) infinite;
  }
  .orientation-phone::before{
    content:"";
    position:absolute;
    top:6px;
    left:50%;
    width:15px;
    height:2px;
    border-radius:2px;
    background:var(--sage-dark);
    transform:translateX(-50%);
  }
  .orientation-phone-screen{
    position:absolute;
    inset:13px 6px 9px;
    border:1px solid rgba(115,123,105,.45);
    border-radius:5px;
  }
  .orientation-arrow{
    width:104px;
    height:52px;
    margin:-.15rem auto .65rem;
    object-fit:contain;
  }
  .orientation-kicker{
    margin:0 0 .65rem;
    font-family:var(--sans);
    font-size:.55rem;
    font-weight:500;
    letter-spacing:.26em;
    text-transform:uppercase;
  }
  .orientation-gate h1{
    margin:0;
    font-family:"Italianno","Cormorant Garamond",cursive;
    font-size:clamp(3.2rem,15vw,4.35rem);
    font-weight:400;
    line-height:.92;
  }
  .orientation-gate p#orientation-copy{
    max-width:31ch;
    margin:1rem auto 0;
    font-size:1.08rem;
    line-height:1.45;
    text-wrap:balance;
  }
  .orientation-rule{
    display:block;
    width:min(66vw,260px);
    height:34px;
    margin:1rem auto 0;
    overflow:hidden;
  }
  .orientation-rule img{transform:translateY(-27%)}
}
@keyframes orientation-phone-turn{
  0%,22%{transform:rotate(0deg)}
  58%,84%{transform:rotate(90deg)}
  100%{transform:rotate(0deg)}
}
.envelope-screen{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:var(--ivory);transition:opacity .8s var(--ease),visibility .8s}.envelope-screen::before,.site::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.19;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140' viewBox='0 0 140 140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.24'/%3E%3C/svg%3E")}.envelope-wrap{position:relative;width:min(92vw,560px);text-align:center}.envelope-wrap>.micro{margin-bottom:1.4rem}.envelope{position:relative;width:100%;aspect-ratio:1.28;border:0;background:transparent;padding:0;cursor:pointer;filter:drop-shadow(0 18px 22px rgba(45,39,28,.15));perspective:1200px}.envelope-back{position:absolute;inset:8% 2% 2%;background:var(--paper);border:1px solid rgba(92,82,61,.13)}.envelope-back::after{content:"";position:absolute;inset:0;background:linear-gradient(35deg,transparent 49.7%,rgba(120,109,85,.16) 50%,transparent 50.5%),linear-gradient(-35deg,transparent 49.7%,rgba(120,109,85,.16) 50%,transparent 50.5%)}.envelope-flap{position:absolute;z-index:5;top:8%;left:2%;right:2%;height:55%;background:var(--paper);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;transition:transform 1s var(--ease),z-index 0s .45s}.envelope-flap::after{content:"";position:absolute;inset:0;background:linear-gradient(156deg,transparent 49.7%,rgba(120,109,85,.14) 50%,transparent 50.5%)}.lace{position:absolute;z-index:7;top:8%;width:19%;height:64%;opacity:.42;transition:opacity .5s}.lace::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 10%,transparent 0 12px,rgba(255,255,255,.92) 13px 15px,transparent 16px),radial-gradient(circle at 20% 28%,transparent 0 10px,rgba(255,255,255,.95) 11px 13px,transparent 14px);background-size:48px 54px;filter:drop-shadow(0 0 1px #bcb7ad)}.lace-left{left:2%;clip-path:polygon(0 0,100% 0,45% 100%,0 100%)}.lace-right{right:2%;transform:scaleX(-1);clip-path:polygon(0 0,100% 0,45% 100%,0 100%)}.seal{position:absolute;z-index:9;left:50%;top:54%;width:96px;height:96px;transform:translate(-50%,-50%);border-radius:50%;background:#e9e2d4;border:6px double #d8cfbd;box-shadow:0 5px 12px rgba(67,54,32,.22),inset 0 0 0 2px #f7f2e7;display:grid;place-items:center;transition:transform .7s var(--ease),opacity .45s}.monogram-crop{position:relative;display:block;overflow:hidden;width:65px;height:65px;flex:0 0 auto}.monogram-crop img{position:absolute;width:135px;max-width:none;height:auto;left:-36px;top:-39px;mix-blend-mode:multiply}.envelope-card{position:absolute;z-index:3;left:7%;right:7%;top:13%;height:76%;background:var(--paper);border:1px solid rgba(167,136,71,.5);box-shadow:0 5px 14px rgba(62,52,36,.12);display:grid;place-items:center;transition:transform 1.15s .42s var(--ease)}.card-inner{display:block;padding:2rem}.card-inner .names{display:block;font-size:clamp(2.2rem,7vw,4rem);white-space:nowrap}.card-inner .names i{color:var(--gold);font-weight:400}.card-inner .date{font-family:var(--sans);font-size:.77rem;letter-spacing:.3em}.envelope-wrap h1{margin:1.3rem 0 .2rem;font-weight:400;font-size:clamp(2.2rem,8vw,4rem)}.envelope-wrap h1 span{color:var(--gold);font-style:italic}.tap{margin:.6rem 0;font-family:var(--sans);font-size:.62rem;text-transform:uppercase;letter-spacing:.28em}.down{display:block;width:11px;height:11px;border-right:1px solid;border-bottom:1px solid;transform:rotate(45deg);margin:1rem auto;animation:float 1.8s infinite}.envelope.open .envelope-flap{transform:rotateX(180deg);z-index:1}.envelope.open .envelope-card{transform:translateY(-58%)}.envelope.open .seal{transform:translate(-50%,-50%) scale(.7);opacity:0}.envelope-screen.finished{opacity:0;visibility:hidden}.site{position:relative;opacity:0;transition:opacity .8s;background:var(--ivory)}.site.visible{opacity:1}.site::before{position:fixed;z-index:0}.site>*{position:relative;z-index:1}
.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(1rem,4vw,4.5rem);background:rgba(244,240,231,.94);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;backdrop-filter:blur(12px)}.brand{color:inherit}.monogram-crop.small{width:54px;height:48px}.monogram-crop.small img{width:105px;left:-27px;top:-30px}.topbar nav{display:none;gap:2.4rem}.topbar nav a,.outline-button{font-family:var(--sans);font-size:.59rem;letter-spacing:.22em;text-transform:uppercase;text-decoration:none;color:inherit}.music{width:44px;height:44px;border:1px solid var(--gold);border-radius:50%;background:transparent;display:grid;place-items:center;cursor:pointer;transition:.25s}.music:hover,.music:focus-visible{background:var(--ink);color:var(--ivory)}.music svg{width:18px;fill:none;stroke:currentColor;stroke-width:1.4}.music[aria-pressed="true"] svg{animation:pulse 1.2s infinite}
.hero{min-height:calc(100svh - 76px);display:grid;background:var(--paper)}.hero-photo{position:relative;min-height:60svh;overflow:hidden}.hero-photo img{height:100%;object-fit:cover;object-position:center 39%}.photo-words{position:absolute;left:8%;bottom:8%;margin:0;color:#fff;font-family:var(--sans);font-size:.62rem;line-height:2;letter-spacing:.32em;text-transform:uppercase;text-shadow:0 1px 8px #000}.hero-copy{display:grid;place-items:center;align-content:center;text-align:center;padding:4.5rem 1.5rem 5rem}.hero-copy h2,.story h2,.details h2,.rsvp h2{font-weight:400;line-height:.86;margin:1.2rem 0 0}.hero-copy h2{font-size:clamp(3.5rem,9vw,7.4rem)}.hero-copy h2 i{color:var(--gold);font-weight:400}.hero-date{font-family:var(--sans);font-size:.8rem;letter-spacing:.32em;margin:0 0 2rem}.outline-button{border:1px solid var(--gold);padding:1.1rem 1.3rem;min-width:min(100%,310px);display:flex;justify-content:space-between;gap:1.5rem;transition:.25s}.outline-button:hover,.outline-button:focus-visible{background:var(--ink);color:var(--ivory);border-color:var(--ink)}
.section{padding:clamp(5rem,10vw,9rem) clamp(1.3rem,7vw,7rem)}.story{display:grid;gap:3rem}.story-copy{max-width:480px}.sage{color:var(--sage-dark)}.story h2,.details h2{font-size:clamp(4.2rem,10vw,7.5rem)}.gold-rule.left{margin:1.7rem 0 2rem}.story-copy>p:not(.micro):not(.signature),.details-copy>p:not(.micro){line-height:1.65;color:#3f433c;max-width:35ch}.signature{font-size:2rem;font-style:italic;margin-top:2rem}.story-photo{margin:0}.story-photo img{aspect-ratio:1.5;object-fit:cover}.story-photo figcaption,.walk-photo figcaption{font-family:var(--sans);font-size:.55rem;letter-spacing:.28em;text-transform:uppercase;text-align:right;padding-top:.8rem}.countdown{background:var(--sage);color:#fff;text-align:center;padding:3.5rem 1rem}.count-grid{display:grid;grid-template-columns:repeat(4,1fr);max-width:720px;margin:1.6rem auto 1.8rem}.count-grid div{border-left:1px solid rgba(255,255,255,.42);display:grid;gap:.45rem}.count-grid div:first-child{border:0}.count-grid strong{font-family:var(--sans);font-size:clamp(2.3rem,6vw,4.15rem);font-weight:300;line-height:1;letter-spacing:.035em;font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1,"lnum" 1}.count-grid span,.count-date{font-family:var(--sans);font-size:.54rem;letter-spacing:.25em;text-transform:uppercase}.count-date{font-size:.72rem}.details{display:grid;gap:3rem}.event-columns{display:grid;grid-template-columns:1fr 1fr;margin-top:3.3rem;max-width:560px}.event-columns article{padding:0 1.3rem;text-align:center}.event-columns article+article{border-left:1px solid var(--line)}.event-columns svg{width:45px;fill:none;stroke:var(--ink);stroke-width:1.3;margin:auto}.event-columns h3{font-family:var(--sans);font-size:.62rem;letter-spacing:.27em;text-transform:uppercase;font-weight:500;margin:1.2rem 0}.event-columns article>span{display:block;width:25px;height:1px;background:var(--gold);margin:0 auto 1.2rem}.event-columns article p{line-height:1.25}.event-columns b{font-weight:400;color:var(--muted)}.walk-photo{margin:0}.walk-photo img{max-height:730px;object-fit:cover}.hands-band{height:260px;margin:0;position:relative;overflow:hidden;background:#111}.hands-band img{height:100%;object-fit:cover;filter:saturate(.7) contrast(1.05);opacity:.86}.hands-band figcaption{position:absolute;right:6%;top:50%;transform:translateY(-50%);margin:0;color:#fff;text-align:right;font-family:var(--sans);font-size:.58rem;letter-spacing:.25em;text-transform:uppercase;line-height:2}.rsvp{max-width:1120px;margin:auto;text-align:center}.rsvp-heading h2{font-size:clamp(3rem,7vw,5.4rem);margin:.8rem 0 1rem}.demo-label{display:inline-block;margin:0 0 2.5rem;padding:.55rem .8rem;background:var(--sage);color:white;font-family:var(--sans);font-size:.55rem;letter-spacing:.18em;text-transform:uppercase}.rsvp-form{display:grid;gap:1rem;text-align:left}.rsvp-form label{border-bottom:1px solid var(--line);font-family:var(--sans);font-size:.57rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.rsvp-form input,.rsvp-form select,.rsvp-form textarea{width:100%;border:0;background:transparent;padding:.7rem 0 .8rem;outline:0;font-family:var(--serif);font-size:1rem;letter-spacing:0;text-transform:none}.rsvp-form label:focus-within{border-color:var(--gold)}.rsvp-form button{grid-column:1/-1;justify-self:center;margin-top:1.5rem;border:1px solid var(--sage-dark);background:var(--sage-dark);color:#fff;padding:1rem 2.7rem;font-family:var(--sans);font-size:.6rem;letter-spacing:.24em;text-transform:uppercase;cursor:pointer;transition:.25s}.rsvp-form button:hover,.rsvp-form button:focus-visible{background:transparent;color:var(--ink)}.form-status{max-width:620px;margin:2rem auto 0;padding:1rem;border:1px solid var(--gold)}footer{padding:4rem 1rem;text-align:center;border-top:1px solid var(--line)}.footer-logo{width:120px;height:120px;margin:auto}.footer-logo img{width:245px;left:-66px;top:-70px}footer p{font-family:var(--sans);font-size:.58rem;letter-spacing:.22em;text-transform:uppercase}.footer-date{font-family:var(--serif);font-size:.9rem}.toast{position:fixed;left:50%;bottom:1.2rem;z-index:100;transform:translate(-50%,140%);width:min(90vw,450px);padding:1rem 1.2rem;background:var(--ink);color:var(--ivory);font-family:var(--sans);font-size:.7rem;line-height:1.5;text-align:center;transition:transform .35s var(--ease)}.toast.show{transform:translate(-50%,0)}.reveal{opacity:0;transform:translateY(30px);transition:opacity .8s var(--ease),transform .8s var(--ease)}.reveal.in{opacity:1;transform:none}
@media (min-width:760px){.topbar nav{display:flex}.hero{grid-template-columns:56% 44%}.hero-photo{min-height:calc(100svh - 76px)}.story{grid-template-columns:minmax(260px,.7fr) 1.6fr;align-items:center}.details{grid-template-columns:1.1fr .8fr;align-items:center}.rsvp-form{grid-template-columns:1fr 1fr}.hands-band{height:340px}}
@media (max-width:500px){.envelope-wrap{width:96vw}.envelope-card .card-inner{padding:.8rem}.card-inner .names{font-size:2rem}.seal{width:82px;height:82px}.envelope-wrap h1{margin-top:.6rem}.section{padding-left:1.2rem;padding-right:1.2rem}.count-grid strong{font-size:2.05rem}.count-grid span{font-size:.44rem;letter-spacing:.15em}.event-columns article{padding:0 .6rem}.hands-band figcaption{font-size:.5rem}.topbar{height:66px}.hero{min-height:calc(100svh - 66px)}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}
@keyframes float{0%,100%{transform:translateY(0) rotate(45deg)}50%{transform:translateY(7px) rotate(45deg)}}@keyframes pulse{50%{transform:scale(1.15)}}
.envelope-back{z-index:4;clip-path:polygon(0 36%,50% 92%,100% 36%,100% 100%,0 100%)}
.card-inner{opacity:0;transition:opacity .35s .55s}.envelope.open .card-inner{opacity:1}.envelope-flap::before{content:"NUESTRA BODA";position:absolute;z-index:1;top:34%;left:0;right:0;font-family:var(--sans);font-size:.58rem;letter-spacing:.32em;color:var(--ink)}

/* Photoreal envelope fidelity pass */
.envelope-wrap{width:min(88vw,500px)}
.envelope{aspect-ratio:1053/1365;filter:drop-shadow(0 24px 26px rgba(45,39,28,.16));overflow:visible}
.envelope-render{position:absolute;inset:0;z-index:5;display:block;pointer-events:none}
.envelope-render::after{content:"NUESTRA BODA";position:absolute;z-index:2;top:24%;left:0;right:0;font-family:var(--sans);font-size:.56rem;letter-spacing:.34em;color:#37382f;transition:opacity .25s}
.envelope-render img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transition:opacity .65s var(--ease),transform .9s var(--ease)}
.render-open{opacity:0;transform:scale(.96) translateY(2%)}
.render-closed{opacity:1}
.envelope.open .render-closed{opacity:0;transform:scale(.985)}
.envelope.open .render-open{opacity:1;transform:scale(1) translateY(-4%)}
.envelope.open .envelope-render::after{opacity:0}
.envelope-back,.envelope-flap,.lace{display:none}
.seal{z-index:10;top:51%;width:91px;height:91px;border-width:3px;background:rgba(239,232,217,.9);box-shadow:none}
.envelope-card{z-index:8;left:11%;right:11%;top:34%;height:48%;border-color:rgba(167,136,71,.52);background:linear-gradient(110deg,#faf7f0,#f2ede2);opacity:0;transform:translateY(5%) scale(.96);transition:transform 1.2s .45s var(--ease),opacity .35s .35s}
.envelope.open .envelope-card{opacity:1;transform:translateY(-52%) scale(1)}
.card-inner .names{font-size:clamp(1.7rem,6vw,3.2rem)}
.envelope.open .seal{transform:translate(-50%,-50%) scale(.88);opacity:0}
.envelope-wrap h1{display:none}
.tap{margin-top:.9rem}.down{margin-top:1.2rem}
@media (max-height:760px) and (min-width:600px){.envelope-wrap{width:min(72vh,440px)}.envelope-wrap>.micro{margin-bottom:.6rem}.tap{margin:.3rem 0}.down{margin:.65rem auto}}
@media (max-width:500px){.envelope-wrap{width:min(92vw,380px)}.envelope{aspect-ratio:1053/1365}.seal{width:74px;height:74px}.monogram-crop{width:54px;height:54px}.monogram-crop img{width:112px;left:-30px;top:-33px}.envelope-wrap>.micro{margin-bottom:.7rem}.tap{margin-top:.35rem}}

/* Immersive full-viewport envelope */
.envelope-screen{display:block;overflow:hidden}
.envelope-wrap{width:100%;height:100%;max-width:none}
.envelope-wrap>.micro{position:absolute;z-index:20;top:15%;left:50%;width:92%;transform:translateX(-50%);margin:0;color:#2f302b}
.envelope{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto;filter:none;overflow:hidden}
.envelope-render{inset:0}
.envelope-render img{width:100%;height:100%;object-fit:cover;object-position:center center}
.envelope-render::after{display:none}
.envelope-title-copy{position:absolute;z-index:9;top:27%;left:50%;width:min(92vw,820px);transform:translateX(-50%);display:grid;gap:clamp(1.1rem,3vh,2.3rem);text-align:center;transition:opacity .38s,transform .7s var(--ease)}
.envelope-title-copy small{font-family:var(--sans);font-size:clamp(.58rem,.8vw,.78rem);letter-spacing:.26em;text-transform:uppercase}
.envelope-title-copy strong{font-family:var(--serif);font-size:clamp(3.8rem,7.2vw,7.5rem);font-weight:400;line-height:.86;text-shadow:0 2px 3px rgba(255,255,255,.3)}
.envelope-title-copy i{color:var(--gold);font-weight:400}
.envelope.open .envelope-title-copy{opacity:0;transform:translate(-50%,-16%)}
.seal{top:73%;width:clamp(112px,9vw,148px);height:clamp(112px,9vw,148px);border-width:5px;background:rgba(239,232,217,.92);box-shadow:0 8px 24px rgba(73,61,39,.16),inset 0 0 0 2px #f9f5ec}
.seal .monogram-crop{width:88px;height:88px}.seal .monogram-crop img{width:184px;left:-49px;top:-53px}
.envelope-card{left:50%;right:auto;top:49%;width:min(600px,76vw);height:min(410px,48vh);transform:translate(-50%,58%) scale(.96);opacity:0;background:#f8f4eb;box-shadow:0 18px 42px rgba(63,51,33,.18)}
.envelope.open .envelope-card{transform:translate(-50%,-42%) scale(1);opacity:1}
.envelope.open .render-open{transform:none}
.envelope.open .render-closed{transform:scale(1.01)}
.envelope-wrap>.tap{position:absolute;z-index:20;left:50%;bottom:4.1rem;transform:translateX(-50%);width:94%;margin:0;color:#2e2f2a}
.envelope-wrap>.down{position:absolute;z-index:20;left:50%;bottom:2.2rem;margin:0}
.envelope.open~.tap,.envelope.open~.down{opacity:0;transition:opacity .25s}
@media (max-width:700px){.envelope-wrap{width:100%;height:100%}.envelope{aspect-ratio:auto}.envelope-render img{object-fit:cover;object-position:center}.envelope-wrap>.micro{top:10%;font-size:.55rem}.envelope-title-copy{top:24%;gap:1.1rem}.envelope-title-copy small{font-size:.5rem}.envelope-title-copy strong{font-size:clamp(3.1rem,16vw,5rem);line-height:.82}.seal{top:70%;width:104px;height:104px}.seal .monogram-crop{width:74px;height:74px}.seal .monogram-crop img{width:155px;left:-41px;top:-45px}.envelope-card{top:46%;width:88vw;height:42vh}.envelope.open .envelope-card{transform:translate(-50%,-34%) scale(1)}.card-inner .names{font-size:clamp(2rem,10.5vw,3.4rem);white-space:normal;line-height:.9}.envelope-wrap>.tap{bottom:4rem;font-size:.52rem}.envelope-wrap>.down{bottom:2.2rem}}

/* Subtle ivory wax seal: the photoreal wax is part of the envelope artwork. */
.seal{top:73.7%;width:clamp(230px,17vw,270px);height:clamp(230px,17vw,270px);border:0;background:transparent;box-shadow:none;display:grid;place-items:center}
.seal::before{content:none}
.seal .monogram-crop{position:relative;z-index:1;width:52%;height:52%;overflow:visible;transform:translateY(-1%)}
.seal .monogram-crop img{position:static;width:100%;height:100%;max-width:none;object-fit:contain;mix-blend-mode:multiply;opacity:.48;filter:sepia(.72) saturate(.72) brightness(1.18) contrast(.82) drop-shadow(0 1px 0 rgba(255,255,255,.62))}
.envelope-wrap>.tap{bottom:3.55rem;color:#424038}
.envelope-wrap>.down{bottom:1.55rem}
@media (max-width:700px){.seal{top:70.4%;width:210px;height:210px}.seal .monogram-crop{width:50%;height:50%}.seal .monogram-crop img{position:static;width:100%;height:100%}.envelope-wrap>.tap{bottom:3.35rem}.envelope-wrap>.down{bottom:1.45rem}}

/* Approved closed-envelope concept: branding and wax seal live in the artwork. */
.envelope-wrap>.micro,.envelope-title-copy,.seal{display:none}
.render-closed-mobile{display:none}
.envelope-wrap>.tap{bottom:3.45rem;color:#3e4038;text-shadow:0 1px 0 rgba(255,255,255,.45)}
.envelope-wrap>.down{bottom:1.45rem}
@media (max-width:700px){.render-closed-desktop{display:none}.render-closed-mobile{display:block}.envelope-wrap>.tap{bottom:3.25rem}.envelope-wrap>.down{bottom:1.35rem}}

/* Curved opening instruction approved for the seal. */
.sr-only{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}
.envelope-wrap>.tap-arc{position:absolute;z-index:20;left:50%;top:calc(72.5% + clamp(108px,8vw,122px));bottom:auto;width:clamp(330px,27vw,400px);height:auto;margin:0;transform:translateX(-50%);overflow:visible;color:#596253;pointer-events:none}
.tap-arc text{fill:currentColor;font-family:var(--sans);font-size:13px;font-weight:500;letter-spacing:4px}
.tap-chevron{fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.envelope.open~.tap-arc{opacity:0;transition:opacity .25s}
@media (max-width:700px){.envelope-wrap>.tap-arc{top:calc(59.5% + 64px);width:300px}.tap-arc text{font-size:11.5px;letter-spacing:3px}}

/* Interactive upward opening: the approved artwork becomes the moving flap. */
.envelope{transform-style:preserve-3d}
.envelope-render{z-index:3}
.envelope-render .render-open{transition:opacity .82s .18s var(--ease),transform 1.7s var(--ease)}
.envelope-render .render-closed{transition:opacity .7s .08s var(--ease),transform 1.35s var(--ease)}
.envelope-opening-shadow{position:absolute;z-index:4;inset:0;pointer-events:none;opacity:0;clip-path:polygon(0 0,100% 0,50% 74%);background:linear-gradient(180deg,rgba(72,78,68,.025),rgba(72,78,68,.115));transition:opacity .7s .22s var(--ease)}
.flap-motion{position:absolute;z-index:9;inset:0;display:block;pointer-events:none;overflow:hidden;clip-path:polygon(0 0,100% 0,50% 74%);transform-origin:50% 7%;will-change:transform,opacity;backface-visibility:hidden}
.flap-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.flap-image-mobile{display:none}
.envelope-card{z-index:7;top:45%;transform:translate(-50%,28%) scale(.975);transition:transform 1.38s 1.02s cubic-bezier(.2,.7,.2,1),opacity .7s .92s var(--ease)}
.envelope.open .render-closed{opacity:0;transform:scale(1.015)}
.envelope.open .render-open{opacity:1;transform:scale(1.025)}
.envelope.open .envelope-opening-shadow{opacity:1}
.envelope.open .flap-motion{animation:flap-lift-up 1.78s cubic-bezier(.26,.62,.18,1) forwards}
.envelope.open .envelope-card{transform:translate(-50%,-25%) scale(1);opacity:1}

@keyframes flap-lift-up{
  0%{transform:translate3d(0,0,0) scale(1) rotateX(0);opacity:1}
  9%{transform:translate3d(0,1.2%,0) scale(.999) rotateX(0);opacity:1}
  26%{transform:translate3d(0,-2.5%,0) scale(1.002) rotateX(-2deg);opacity:1}
  62%{transform:translate3d(0,-31%,0) scale(1.012) rotateX(-7deg);opacity:1}
  88%{transform:translate3d(0,-78%,0) scale(1.022) rotateX(-11deg);opacity:1}
  100%{transform:translate3d(0,-96%,0) scale(1.025) rotateX(-12deg);opacity:0}
}

@media (max-width:700px){
  .flap-motion,.envelope-opening-shadow{clip-path:polygon(0 0,100% 0,50% 61%)}
  .flap-image-desktop{display:none}
  .flap-image-mobile{display:block}
  .envelope-card{top:44%;transform:translate(-50%,34%) scale(.975)}
  .envelope.open .envelope-card{transform:translate(-50%,-18%) scale(1)}
}

/* Approved reveal: the envelope moves away as one continuous curtain. */
.envelope-screen{opacity:1;transform:translate3d(0,0,0);transition:transform 2.18s cubic-bezier(.76,0,.24,1),visibility 0s 2.18s;will-change:transform}
.envelope-screen.reveal-site{transform:translate3d(0,-100%,0)}
.envelope-screen.finished{opacity:1;visibility:hidden}
.envelope-card{display:none}
.envelope.open .flap-motion{animation:flap-release .9s cubic-bezier(.22,.68,.24,1) forwards}
.envelope.open .render-closed{opacity:0;transform:scale(1.004)}
.envelope.open .render-open{opacity:1;transform:scale(1.008)}
@keyframes flap-release{
  0%{transform:translate3d(0,0,0) scale(1);opacity:1}
  35%{transform:translate3d(0,.5%,0) scale(.999);opacity:1}
  100%{transform:translate3d(0,-8%,0) scale(1.003);opacity:.96}
}

/* Approved photographic hero shown underneath the opening envelope. */
.topbar{position:fixed;top:0;left:0;right:0;width:100%;opacity:0;visibility:hidden;transform:translateY(-100%);pointer-events:none;transition:opacity .45s var(--ease),transform .55s var(--ease),visibility .55s;background:rgba(244,240,231,.96)}
.topbar.scrolled{opacity:1;visibility:visible;transform:none;pointer-events:auto}
.hero{position:relative;display:block;min-height:100svh;overflow:hidden;background:#1c1a17}
.hero-photo{position:absolute;inset:0;min-height:0;overflow:hidden}
.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:center 61%;filter:saturate(.68) contrast(1.04) brightness(.82)}
.hero-copy{position:absolute;z-index:2;inset:0;display:grid;grid-template-rows:auto 1fr auto;justify-items:center;align-items:start;text-align:center;padding:clamp(2rem,6vh,4.8rem) 1.25rem clamp(2.4rem,7vh,5rem);color:#fff;text-shadow:0 2px 14px rgba(0,0,0,.22)}
.hero-monogram{position:relative;width:104px;height:104px;display:grid;place-items:center}
.hero-monogram img{position:static;width:100%;height:100%;object-fit:contain;filter:none;mix-blend-mode:normal;opacity:.96}
.hero-title-block{align-self:start;margin-top:clamp(1.2rem,5vh,4rem)}
.hero-title-block .micro{max-width:min(90vw,620px);font-size:clamp(.55rem,.7vw,.7rem);font-weight:400;letter-spacing:.24em;line-height:1.75;text-align:center}
.hero-copy h2{display:grid;justify-items:center;margin:1rem 0 0;font-size:clamp(4.25rem,7.3vw,7.9rem);font-weight:400;font-style:italic;line-height:.69;letter-spacing:-.035em}
.hero-copy h2 span{display:block}
.hero-copy h2 i{font-size:.34em;font-weight:400;line-height:1.7}
.hero-date{align-self:end;margin:0;font-family:var(--sans);font-size:clamp(.64rem,.75vw,.78rem);font-weight:400;letter-spacing:.38em}

@media (max-width:700px){
  .hero-photo img{object-position:center 59%;filter:saturate(.7) contrast(1.03) brightness(.8)}
  .hero-copy{padding:3.2rem 1rem 2.5rem}
  .hero-monogram{width:82px;height:82px}
  .hero-title-block{margin-top:2.5rem}
  .hero-title-block .micro{max-width:88vw;font-size:.5rem;letter-spacing:.2em}
  .hero-copy h2{font-size:clamp(3.6rem,18vw,5.2rem);line-height:.7}
  .hero-date{font-size:.58rem;letter-spacing:.3em}
}

/* Final opening choreography: the closed invitation separates like a slow curtain. */
.envelope-screen,
.envelope-screen.reveal-site{
  transform:none;
  opacity:1;
  transition:visibility 0s 3.25s;
  will-change:auto;
}
.envelope-screen.finished{opacity:1;visibility:hidden}
.flap-motion,.envelope-opening-shadow{display:none!important}
.envelope-render{transition:none}
.envelope.open .envelope-render{opacity:0;transition:none}
.curtain-panel{
  position:absolute;
  inset:0;
  z-index:30;
  display:block;
  pointer-events:none;
  overflow:hidden;
  transform:translate3d(0,0,0);
  transition:transform 3.05s cubic-bezier(.65,0,.35,1);
  will-change:transform;
  backface-visibility:hidden;
}
.curtain-top{
  clip-path:polygon(
    0 0,100% 0,100% 20%,95% 24%,90% 30%,85% 36%,80% 43%,75% 50%,
    70% 57%,65% 65%,60% 73%,55% 82%,50% 99%,45% 82%,40% 73%,
    35% 65%,30% 57%,25% 50%,20% 43%,15% 36%,10% 30%,5% 24%,0 20%
  )
}
.curtain-bottom{
  clip-path:polygon(
    0 20%,5% 24%,10% 30%,15% 36%,20% 43%,25% 50%,30% 57%,35% 65%,
    40% 73%,45% 82%,50% 99%,55% 82%,60% 73%,65% 65%,70% 57%,
    75% 50%,80% 43%,85% 36%,90% 30%,95% 24%,100% 20%,
    100% 100%,0 100%
  )
}
.curtain-image{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
}
.curtain-image-mobile{display:none}
.envelope.open .curtain-top{transform:translate3d(0,-101%,0)}
.envelope.open .curtain-bottom{transform:translate3d(0,101%,0)}
.seal-flight{
  position:absolute;
  inset:0;
  z-index:35;
  display:block;
  pointer-events:none;
  transform:translate3d(0,0,0);
  transition:transform 3.05s cubic-bezier(.65,0,.35,1);
  will-change:transform;
  backface-visibility:hidden;
}
.seal-flight img{
  position:absolute;
  left:50%;
  top:79%;
  width:clamp(154px,14.3vw,239px);
  height:auto;
  transform:translate(-50%,-50%);
  filter:drop-shadow(0 10px 10px rgba(58,53,43,.22));
}
.envelope.open .seal-flight{transform:translate3d(0,-101%,0)}

/* Hero fidelity to the approved photographic concept. */
.hero-monogram{width:178px;height:128px}
.hero-monogram img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 0 5px rgba(255,255,255,.62)) drop-shadow(0 0 15px rgba(255,255,255,.28))}
.hero-title-block{margin-top:clamp(.35rem,1.4vh,1rem)}
.hero-title-block .micro{text-shadow:0 0 6px rgba(255,255,255,.72),0 0 16px rgba(255,255,255,.25)}
.hero-names{display:block;width:clamp(220px,18vw,300px);height:auto;margin:.72rem auto 0;object-fit:contain;filter:drop-shadow(0 0 4px rgba(255,255,255,.68)) drop-shadow(0 0 13px rgba(255,255,255,.42))}
.hero-monogram,.hero-title-block,.hero-date{
  opacity:0;
  transform:translate3d(0,10px,0);
  filter:blur(3px);
}
.site{opacity:1;transition:none}
.site.hero-ready .hero-monogram{animation:hero-text-reveal .82s 0s ease-out forwards}
.site.hero-ready .hero-title-block{animation:hero-text-reveal .88s .13s ease-out forwards}
.site.hero-ready .hero-date{animation:hero-text-reveal .72s .3s ease-out forwards}
.hero-title-block,.hero-date{text-shadow:0 0 6px rgba(255,255,255,.62),0 0 16px rgba(255,255,255,.3),0 2px 16px rgba(0,0,0,.22)}
.hero-monogram{filter:blur(3px) drop-shadow(0 0 10px rgba(255,255,255,.2))}
@keyframes hero-text-reveal{
  0%{opacity:0;transform:translate3d(0,10px,0);filter:blur(3px)}
  55%{opacity:.82}
  100%{opacity:1;transform:translate3d(0,0,0);filter:blur(0)}
}

@media (max-width:700px){
  .curtain-image-desktop{display:none}
  .curtain-image-mobile{display:block}
  .curtain-top{
    clip-path:polygon(
      0 0,100% 0,100% 45%,95% 48%,90% 51%,85% 54%,80% 57%,75% 60%,
      70% 64%,65% 68%,60% 72%,55% 76%,50% 80%,45% 76%,40% 72%,
      35% 68%,30% 64%,25% 60%,20% 57%,15% 54%,10% 51%,5% 48%,0 45%
    )
  }
  .curtain-bottom{
    clip-path:polygon(
      0 45%,5% 48%,10% 51%,15% 54%,20% 57%,25% 60%,30% 64%,35% 68%,
      40% 72%,45% 76%,50% 80%,55% 76%,60% 72%,65% 68%,70% 64%,
      75% 60%,80% 57%,85% 54%,90% 51%,95% 48%,100% 45%,
      100% 100%,0 100%
    )
  }
  .seal-flight img{top:63.7%;width:min(35vw,150px)}
  .hero-copy{padding-top:2rem}
  .hero-monogram{width:142px;height:102px}
  .hero-title-block{margin-top:.5rem}
  .hero-names{width:min(70vw,260px);margin-top:.65rem}
}
@media (prefers-reduced-motion:reduce){
  .hero-monogram,.hero-title-block,.hero-date{opacity:1;transform:none;filter:none;animation:none!important}
}

/* OPTION 3 — the approved closed artwork and the moving flap use the same
   pixels. The clean sheet only appears underneath while the flap is folding,
   preventing the colour, scale and alignment jump seen in earlier versions. */
.minimal-envelope-version .envelope-screen{
  background:#f4eee6;
}
.minimal-envelope-version .envelope-wrap{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  overflow:hidden;
  background:#f4eee6;
}
.minimal-envelope-version .option3-stage{
  position:absolute;
  top:50%;
  left:50%;
  width:max(100vw,177.683svh);
  height:max(100svh,56.28vw);
  aspect-ratio:1672/941;
  transform:translate(-50%,-50%);
  overflow:visible;
  filter:none;
  perspective:1800px;
  background:#f4eee6;
}
.minimal-envelope-version .option3-layer,
.minimal-envelope-version .option3-inner-patch,
.minimal-envelope-version .option3-flap{
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  pointer-events:none;
}
.minimal-envelope-version .option3-layer{
  object-fit:fill;
}
.minimal-envelope-version .option3-clean-base{
  z-index:1;
  will-change:transform;
}
.minimal-envelope-version .option3-master{
  z-index:2;
  opacity:1;
  will-change:opacity;
}
.minimal-envelope-version .option3-inner-patch,
.minimal-envelope-version .option3-flap{
  clip-path:polygon(0 0,100% 0,50% 69.4%);
}
.minimal-envelope-version .option3-inner-patch{
  z-index:3;
}
.minimal-envelope-version .option3-flap{
  z-index:4;
  transform-origin:50% 0;
  will-change:transform;
}
.minimal-envelope-version .option3-flap-front,
.minimal-envelope-version .option3-flap-inner{
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
}
.minimal-envelope-version .option3-flap-front{z-index:2;opacity:1}
.minimal-envelope-version .option3-flap-inner{z-index:1;opacity:0}
.minimal-envelope-version .envelope-wrap>h1,
.minimal-envelope-version .envelope-wrap>.tap-arc{display:none!important}
.minimal-envelope-version .envelope.open .option3-master{
  animation:option3-master-release .28s .06s linear both;
}
.minimal-envelope-version .envelope.open .option3-flap{
  animation:option3-flap-open 2.35s .12s cubic-bezier(.58,0,.22,1) both;
}
.minimal-envelope-version .envelope.open .option3-flap-front{
  animation:option3-front-face 1.18s .12s steps(1,end) both;
}
.minimal-envelope-version .envelope.open .option3-flap-inner{
  animation:option3-inner-face 1.18s .12s steps(1,end) both;
}
.minimal-envelope-version .envelope.open .option3-clean-base{
  animation:option3-body-leave 1.02s 2.08s cubic-bezier(.65,0,.35,1) both;
}
.minimal-envelope-version .envelope-screen.finished{
  opacity:0;
  visibility:hidden;
  transition:opacity .2s linear,visibility 0s .2s;
}
@keyframes option3-master-release{
  0%{opacity:1}
  100%{opacity:0}
}
@keyframes option3-flap-open{
  0%{transform:scaleY(1) translate3d(0,0,0)}
  46%{transform:scaleY(.018) translate3d(0,0,0)}
  50%{transform:scaleY(-.018) translate3d(0,0,0)}
  82%{transform:scaleY(-1) translate3d(0,0,0)}
  100%{transform:scaleY(-1) translate3d(0,102%,0)}
}
@keyframes option3-front-face{0%,49%{opacity:1}50%,100%{opacity:0}}
@keyframes option3-inner-face{0%,49%{opacity:0}50%,100%{opacity:1}}
@keyframes option3-body-leave{
  0%{transform:translate3d(0,0,0)}
  100%{transform:translate3d(0,103%,0)}
}
@media (max-width:700px){
  .minimal-envelope-version .option3-stage{
    width:150svh;
    height:84.42svh;
    min-width:100vw;
    min-height:56.28vw;
  }
}
@media (prefers-reduced-motion:reduce){
  .minimal-envelope-version .envelope.open .option3-master,
  .minimal-envelope-version .envelope.open .option3-flap,
  .minimal-envelope-version .envelope.open .option3-flap-front,
  .minimal-envelope-version .envelope.open .option3-flap-inner,
  .minimal-envelope-version .envelope.open .option3-clean-base{
    animation-duration:.55s!important;
    animation-delay:0s!important;
  }
}

/* The envelope artwork itself is the curtain; no ivory layer may cover the hero. */
.envelope-screen{background:transparent!important}
.envelope-screen::before{display:none!important}

/* The same two artwork pieces are shown before and during the opening.
   This prevents a visible image swap on the first frame after the click. */
.curtain-top,.curtain-bottom{clip-path:none!important}
.envelope-render{display:none!important}
.curtain-panel{opacity:1}
.curtain-top{z-index:31}
.curtain-bottom{z-index:29;transform:translate3d(0,0,0)}
.curtain-bottom::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  background:url("assets/envelope-body-desktop.png") center/cover no-repeat;
  transform:translate3d(0,-2.2%,0);
}
.curtain-bottom .curtain-image{z-index:1}
.curtain-top .curtain-image{z-index:1;transform:scale(1.036);transform-origin:50% 0}
.seal-flight img{top:85.2%}
.envelope.open .curtain-bottom{transform:translate3d(0,103%,0)}
@media (max-width:700px){
  .curtain-bottom{transform:translate3d(0,0,0)}
  .curtain-bottom::before{
    background-image:url("assets/envelope-body-mobile.png");
    transform:translate3d(0,-1.6%,0);
  }
  .curtain-top .curtain-image{transform:scale(1.031)}
  .seal-flight img{top:67.8%}
  .envelope.open .curtain-bottom{transform:translate3d(0,103%,0)}
}

/* Hero text: lifted clear of the hands, with a luminous letter-by-letter entrance. */
.hero-monogram{width:218px;height:154px}
.hero-title-block{
  position:relative;
  top:clamp(-3.6rem,-6.2vh,-2.35rem);
  margin-top:0;
  opacity:0;
  transform:none;
  filter:none;
}
.hero-title-block .micro{
  max-width:min(92vw,760px);
  font-size:clamp(.68rem,.82vw,.86rem);
  letter-spacing:.23em;
  line-height:1.7;
}
.hero-date{
  opacity:1;
  transform:none;
  filter:none;
  font-size:clamp(.78rem,.92vw,.96rem);
  letter-spacing:.4em;
}
.hero-letter{
  display:inline-block;
  opacity:0;
  transform:translate3d(0,7px,0) scale(.97);
  filter:blur(4px);
  text-shadow:0 0 7px rgba(255,255,255,.92),0 0 18px rgba(255,255,255,.42);
}
.hero-names{
  opacity:0;
  clip-path:inset(0 100% 0 0);
  transform:translate3d(0,8px,0);
  filter:blur(3px) drop-shadow(0 0 5px rgba(255,255,255,.78)) drop-shadow(0 0 16px rgba(255,255,255,.48));
}
.site.hero-ready .hero-title-block{opacity:1;animation:none}
.site.hero-ready .hero-title-block .hero-letter{
  animation:hero-letter-appear .5s cubic-bezier(.2,.72,.25,1) forwards;
  animation-delay:calc(.08s + (var(--letter-index) * 18ms));
}
.site.hero-ready .hero-names{animation:hero-names-write 1.15s .38s cubic-bezier(.2,.72,.25,1) forwards}
.site.hero-ready .hero-date{animation:none}
.site.hero-ready .hero-date .hero-letter{
  animation:hero-letter-appear .52s cubic-bezier(.2,.72,.25,1) forwards;
  animation-delay:calc(.78s + (var(--letter-index) * 32ms));
}
@keyframes hero-letter-appear{
  0%{opacity:0;transform:translate3d(0,7px,0) scale(.97);filter:blur(4px)}
  58%{opacity:.9;text-shadow:0 0 10px rgba(255,255,255,1),0 0 24px rgba(255,255,255,.58)}
  100%{opacity:1;transform:none;filter:blur(0)}
}
@keyframes hero-names-write{
  0%{opacity:0;clip-path:inset(0 100% 0 0);transform:translate3d(0,8px,0);filter:blur(3px) drop-shadow(0 0 4px rgba(255,255,255,.5))}
  45%{opacity:1;filter:blur(1px) drop-shadow(0 0 10px rgba(255,255,255,.95)) drop-shadow(0 0 25px rgba(255,255,255,.55))}
  100%{opacity:1;clip-path:inset(0 0 0 0);transform:none;filter:blur(0) drop-shadow(0 0 4px rgba(255,255,255,.72)) drop-shadow(0 0 14px rgba(255,255,255,.42))}
}
@media (max-width:700px){
  .hero-monogram{width:168px;height:120px}
  .hero-title-block{top:-2.2rem;margin-top:0}
  .hero-title-block .micro{max-width:92vw;font-size:.59rem;letter-spacing:.18em;line-height:1.65}
  .hero-names{width:min(68vw,252px);margin-top:.6rem}
  .hero-date{font-size:.7rem;letter-spacing:.32em}
}
@media (prefers-reduced-motion:reduce){
  .hero-title-block,.hero-date,.hero-letter,.hero-names{opacity:1;transform:none;filter:none;clip-path:none;animation:none!important}
}

/* Keep the curved instruction inside the viewport and aligned to the wax seal. */
html,body{width:100%;max-width:100%;overflow-x:clip}
.envelope-screen,.envelope-wrap{max-width:100vw}
.envelope-wrap>.tap-arc{
  width:clamp(300px,23vw,350px);
  overflow:hidden;
}
.tap-arc text{font-size:12px;letter-spacing:2.8px}
.tap-chevron{transform:translateY(5px)}
@media (max-width:700px){
  .envelope-wrap>.tap-arc{width:270px}
  .tap-arc text{font-size:10.8px;letter-spacing:2.25px}
}

/* Final hero placement and removal of the browser's horizontal scroll indicator. */
html,body{overflow-x:hidden!important}
html,body,*{-ms-overflow-style:none;scrollbar-width:none}
html::-webkit-scrollbar,
body::-webkit-scrollbar,
*::-webkit-scrollbar{width:0!important;height:0!important;display:none!important}
html::-webkit-scrollbar:horizontal,
body::-webkit-scrollbar:horizontal,
*::-webkit-scrollbar:horizontal{height:0!important;display:none!important}
.envelope:focus,.envelope:focus-visible{outline:none}
.envelope:focus-visible .seal-flight img{
  filter:drop-shadow(0 10px 10px rgba(58,53,43,.22)) drop-shadow(0 0 10px rgba(255,255,255,.34));
}
.hero-monogram{
  top:-4rem;
  width:278px;
  height:194px;
}
.hero-title-block{top:-6.35rem}
.hero-date{
  position:relative;
  top:2rem;
  font-size:clamp(.96rem,1.12vw,1.16rem);
  font-weight:500;
}
@media (max-width:700px){
  .hero-monogram{top:-2.5rem;width:202px;height:144px}
  .hero-title-block{top:-4.5rem}
  .hero-date{top:1.2rem;font-size:.82rem}
}

/* Option 3 paper identity continued from the envelope into the invitation. */
body.minimal-envelope-version .site{
  background-color:#f1ebe3;
  background-image:
    linear-gradient(rgba(255,253,249,.08),rgba(255,253,249,.08)),
    url("assets/option3-inner-paper.png");
  background-repeat:no-repeat;
  background-position:center;
  background-size:cover;
  background-attachment:fixed;
}
body.minimal-envelope-version .site::before{
  display:none;
}
body.minimal-envelope-version .hero,
body.minimal-envelope-version .dress-transition{
  background:transparent;
}
.site::before{
  opacity:0;
}
.topbar{background:rgba(246,240,232,.95)}
.story{
  position:relative;
  grid-template-columns:minmax(430px,.9fr) minmax(520px,1.15fr);
  align-items:center;
  gap:clamp(2.5rem,4vw,5.5rem);
  background:transparent;
}
.story-copy{
  position:relative;
  isolation:isolate;
  max-width:680px;
  padding:clamp(3.4rem,5vw,5.4rem) clamp(2.5rem,4.2vw,4.8rem);
  text-align:center;
  background:transparent;
  border:0;
  border-radius:0;
  box-shadow:none;
}
.story-copy::before{
  content:none;
}
.story-copy::after{
  content:none;
}
.story-watermark{display:none}
.story-frame{
  position:absolute;
  inset:10px;
  z-index:0;
  width:calc(100% - 20px);
  height:calc(100% - 20px);
  overflow:visible;
  color:#829078;
  pointer-events:none;
}
.story-copy > :not(.story-frame){position:relative;z-index:1}
.story-frame path{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}
.story-frame .story-frame-outer{
  fill:rgba(255,255,255,.46);
  stroke-width:1.7;
  stroke-opacity:.82;
}
.story-frame .story-frame-inner{
  fill:none;
  stroke-width:1;
  stroke-opacity:.58;
}
.story h2,
.details .event-card h2{
  margin:.65rem 0 0;
  font-family:"Italianno","Cormorant Garamond",cursive;
  font-weight:400;
  font-style:normal;
  line-height:.88;
  letter-spacing:0;
}
.story h2{font-size:clamp(4.8rem,6.8vw,7rem)}
.story-copy .gold-rule{margin:1.5rem auto 1.8rem}
.story-prose{display:grid;gap:1.2rem}
.story-copy .story-prose p{
  max-width:48ch;
  margin:0 auto;
  color:#30332e;
  font-size:clamp(.98rem,1.05vw,1.12rem);
  font-weight:400;
  line-height:1.6;
}
.story-copy .signature{
  margin:2rem 0 0;
  font-family:"Italianno","Cormorant Garamond",cursive;
  font-size:clamp(2.8rem,3.4vw,3.8rem);
  line-height:1;
}
.story-photo-art{
  display:block;
  width:100%;
  height:auto;
  transform:rotate(-.25deg);
  filter:saturate(.88) contrast(.97) sepia(.06) drop-shadow(0 12px 16px rgba(65,51,34,.14));
}
.story-photo .story-verse{
  display:grid;
  gap:.45rem;
  max-width:680px;
  margin-left:auto;
  padding-top:1rem;
  text-align:right;
  text-transform:none;
  letter-spacing:normal;
}
.story-verse .verse-reference{
  font-family:var(--sans);
  font-size:.62rem;
  font-weight:700;
  letter-spacing:.24em;
  text-transform:uppercase;
}
.story-verse .verse-text{
  font-family:var(--serif);
  font-size:clamp(.96rem,1.05vw,1.08rem);
  font-weight:700;
  line-height:1.45;
}
.story-copy.reveal{opacity:1;transform:none;transition:none}
.story-copy .story-frame,
.story-copy h2,
.story-copy .gold-rule,
.story-copy .story-prose p,
.story-copy .signature{
  opacity:0;
  transform:translate3d(0,30px,0);
  filter:blur(4px);
  will-change:opacity,transform,filter;
}
.story-copy.story-heading-in .story-frame{animation:story-frame-enter 1.25s cubic-bezier(.2,.72,.25,1) forwards}
.story-copy.story-heading-in h2{animation:story-content-enter 1.05s .2s cubic-bezier(.2,.72,.25,1) forwards}
.story-copy.story-heading-in .gold-rule{animation:story-content-enter .85s .42s cubic-bezier(.2,.72,.25,1) forwards}
.story-copy .story-prose p.story-line-in,
.story-copy .signature.story-line-in{animation:story-content-enter 1.05s cubic-bezier(.2,.72,.25,1) forwards}
@keyframes story-frame-enter{
  0%{opacity:0;transform:translate3d(0,24px,0) scale(.98);filter:blur(4px)}
  100%{opacity:1;transform:none;filter:none}
}
@keyframes story-content-enter{
  0%{opacity:0;transform:translate3d(0,30px,0);filter:blur(4px)}
  100%{opacity:1;transform:none;filter:none}
}

/* The navigation header is intentionally removed; only audio control floats. */
.floating-audio-control{
  position:fixed;
  top:clamp(.9rem,2vw,1.5rem);
  left:clamp(.9rem,2vw,1.5rem);
  z-index:40;
}
.floating-audio-control .music{
  width:60px;
  height:60px;
  margin:0;
  padding:0;
  color:var(--ink);
  background:transparent;
  border:0;
  box-shadow:none;
  backdrop-filter:none;
}
.floating-audio-control .music:hover,
.floating-audio-control .music:focus-visible{background:transparent;color:var(--ink)}
.floating-audio-control .music:hover{transform:scale(1.045)}
.floating-audio-control .music:focus-visible{outline:1px solid var(--gold);outline-offset:3px}
.vinyl-player{position:relative;display:grid;place-items:center;width:100%;height:100%}
.vinyl-art{position:relative;display:block;width:50px;height:50px}
.vinyl-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.vinyl-record-art{z-index:1;transform-origin:50% 50%;will-change:transform}
.vinyl-needle-art{z-index:2}
.floating-note{
  position:absolute;
  z-index:3;
  color:var(--sage-dark);
  font-family:Georgia,serif;
  font-size:1.22rem;
  font-weight:700;
  line-height:1;
  opacity:0;
  pointer-events:none;
  text-shadow:0 1px 5px rgba(255,255,255,.9);
}
.note-one{top:3px;right:-10px}
.note-two{top:13px;right:-19px;font-size:1.05rem}
.note-three{top:25px;right:-10px;font-size:.92rem}
.music[aria-pressed="true"] .vinyl-record-art{animation:vinyl-spin 2.8s linear infinite}
.music[aria-pressed="true"] .note-one{animation:music-note-float 1.9s ease-out infinite}
.music[aria-pressed="true"] .note-two{animation:music-note-float 1.9s .62s ease-out infinite}
.music[aria-pressed="true"] .note-three{animation:music-note-float 1.9s 1.24s ease-out infinite}
@keyframes vinyl-spin{to{transform:rotate(360deg)}}
@keyframes music-note-float{
  0%{opacity:0;transform:translate3d(0,4px,0) scale(.78) rotate(-8deg)}
  18%,58%{opacity:1}
  100%{opacity:0;transform:translate3d(18px,-32px,0) scale(1.08) rotate(9deg)}
}
@media (max-width:600px){
  .floating-audio-control .music{width:54px;height:54px}
  .vinyl-art{width:45px;height:45px}
}
@media (prefers-reduced-motion:reduce){
  .story-copy .story-frame,
  .story-copy h2,
  .story-copy .gold-rule,
  .story-copy .story-prose p,
  .story-copy .signature{opacity:1;transform:none;filter:none;animation:none!important}
}
@media (max-width:980px){
  .story{grid-template-columns:1fr;gap:3rem}
  .story-copy{max-width:760px;margin:0 auto}
  .story-photo{width:min(100%,760px);margin:0 auto}
  .story-photo-art{min-height:0}
}
@media (max-width:600px){
  .story{padding-left:1rem;padding-right:1rem}
  .story-copy{padding:4.1rem 1.6rem}
  .story-frame{inset:7px;width:calc(100% - 14px);height:calc(100% - 14px)}
  .story h2{font-size:clamp(4rem,19vw,5.4rem)}
  .story-copy .story-prose p{font-size:1.1rem;line-height:1.62}
  .story-photo-art{height:auto}
}

/* Desktop trial: keep the complete story composition close to one viewport. */
@media (min-width:981px){
  .story{
    min-height:100svh;
    grid-template-columns:minmax(440px,560px) minmax(400px,520px);
    justify-content:center;
    gap:clamp(3rem,5vw,6rem);
    padding-top:clamp(2rem,3.5vh,3rem);
    padding-bottom:clamp(2rem,3.5vh,3rem);
  }
  .story-copy{
    width:100%;
    max-width:560px;
    padding:clamp(5.8rem,8.5vh,6.5rem) clamp(3rem,3.6vw,3.7rem) clamp(3rem,4.8vh,3.7rem);
  }
  .story-copy .story-frame{
    inset:-3% -10%;
    width:120%;
    height:106%;
    max-width:none;
    object-fit:fill;
  }
  .story-copy::before{
    content:"";
    position:absolute;
    inset:1.5% 1%;
    z-index:0;
    background:rgba(255,255,255,.46);
    backdrop-filter:blur(.2px);
  }
  .story-copy > .story-watermark{
    position:absolute;
    z-index:1;
    left:50%;
    top:50%;
    display:block;
    width:60%;
    aspect-ratio:1;
    overflow:hidden;
    opacity:.12;
    transform:translate(-50%,-50%);
    pointer-events:none;
  }
  .story-copy > .story-watermark img{
    position:absolute;
    left:50%;
    top:50%;
    display:block;
    width:100%;
    max-width:none;
    height:auto;
    filter:brightness(0) saturate(100%) invert(47%) sepia(8%) saturate(649%) hue-rotate(39deg) brightness(96%) contrast(88%);
    transform:translate(-50%,-50%);
  }
  .story-copy > .story-prose,
  .story-copy > .signature{z-index:2}
  .story h2{font-size:clamp(4.5rem,5.5vw,6.2rem)}
  .story-copy .gold-rule{margin:1.05rem auto 1.3rem}
  .story-prose{gap:.82rem}
  .story-copy .story-prose p{
    max-width:48ch;
    font-size:clamp(.98rem,.9vw,1.08rem);
    line-height:1.48;
  }
  .story-copy .signature{
    margin-top:1.15rem;
    font-size:clamp(2.5rem,2.7vw,3.1rem);
  }
  .story-photo{
    width:min(100%,520px);
    margin:0 auto;
  }
  .story-photo-art{
    width:auto;
    max-width:100%;
    height:min(76svh,740px);
    margin:0 auto;
  }
  .story-photo .story-verse{
    max-width:520px;
    padding-top:.55rem;
  }
}

@media (min-width:981px) and (max-height:820px){
  .story{
    padding-top:1.6rem;
    padding-bottom:1.6rem;
  }
  .story-copy{padding:2.7rem 2.9rem}
  .story h2{font-size:4.45rem}
  .story-copy .story-prose p{font-size:1.05rem;line-height:1.46}
  .story-prose{gap:.82rem}
  .story-copy .signature{margin-top:1.2rem;font-size:2.65rem}
  .story-photo-art{height:min(88svh,750px)}
}

/* Wedding calendar above the countdown. */
.countdown{position:relative;isolation:isolate;overflow:hidden;padding:clamp(6.5rem,10vw,8rem) 1rem clamp(3.8rem,7vw,5.5rem)}
.countdown-botanical{
  position:absolute;
  z-index:0;
  display:block;
  height:auto;
  pointer-events:none;
  user-select:none;
}
.countdown-botanical-left{
  left:-1.75rem;
  bottom:-2.5rem;
  width:min(31vw,465px);
  opacity:.4;
}
.countdown-botanical-right{
  top:-2.5rem;
  right:-2rem;
  width:min(27vw,410px);
  opacity:.4;
  transform:rotate(180deg);
}
.countdown>.wedding-calendar,.countdown>.micro,.countdown>.count-grid{position:relative;z-index:1}
.wedding-calendar{
  position:relative;
  width:min(90vw,430px);
  margin:0 auto clamp(3.5rem,7vw,5rem);
  padding:4.25rem 2rem 2.15rem;
  color:var(--ink);
  background:rgba(250,247,239,.97);
  border:1px solid rgba(167,136,71,.38);
  border-radius:30px;
  box-shadow:0 22px 35px rgba(50,53,45,.18);
}
.wedding-calendar::before{
  content:"";
  position:absolute;
  inset:9px;
  border:1px solid rgba(115,123,105,.33);
  border-radius:22px;
  pointer-events:none;
}
.calendar-seal{
  position:absolute;
  z-index:2;
  top:0;
  left:50%;
  width:104px;
  height:104px;
  object-fit:contain;
  transform:translate(-50%,-55%);
  filter:drop-shadow(0 8px 10px rgba(48,50,42,.2));
}
.calendar-heading{position:relative;z-index:1;display:grid;justify-items:center;margin-bottom:1.35rem}
.calendar-heading span{
  font-family:"Italianno","Cormorant Garamond",cursive;
  font-size:clamp(3.5rem,7vw,4.7rem);
  font-weight:400;
  line-height:.8;
}
.calendar-heading small{
  margin-top:.8rem;
  font-family:var(--sans);
  font-size:.58rem;
  font-weight:500;
  letter-spacing:.32em;
}
.wedding-calendar table{position:relative;z-index:1;width:100%;border-collapse:separate;border-spacing:0 .28rem;table-layout:fixed}
.wedding-calendar th{
  padding:0 0 .65rem;
  border-bottom:1px solid rgba(115,123,105,.28);
  font-family:var(--sans);
  font-size:.5rem;
  font-weight:500;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.wedding-calendar td{
  height:34px;
  padding:0;
  font-family:var(--sans);
  font-size:.72rem;
  font-weight:400;
  text-align:center;
  font-variant-numeric:tabular-nums;
}
.wedding-day{position:relative;display:grid;width:54px;height:50px;margin:auto;place-items:center;color:#45483f;font-weight:500}
.wedding-heart{position:absolute;inset:0;width:100%;height:100%;overflow:visible;fill:none;stroke:var(--sage-dark);stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
.wedding-day>span{position:relative;z-index:1;transform:translateY(3px)}
.countdown>.micro{margin-top:0}
@media (max-width:500px){
  .countdown{padding-top:6rem}
  .countdown-botanical-left{left:-4.8rem;bottom:-.8rem;width:74vw;opacity:.28}
  .countdown-botanical-right{top:-1.5rem;right:-2.5rem;width:64vw;opacity:.28}
  .wedding-calendar{width:min(94vw,380px);padding:4rem 1.05rem 1.7rem;border-radius:25px}
  .wedding-calendar::before{inset:7px;border-radius:19px}
  .calendar-seal{width:92px;height:92px}
  .calendar-heading span{font-size:3.6rem}
  .wedding-calendar th{font-size:.43rem;letter-spacing:.04em}
  .wedding-calendar td{height:31px;font-size:.68rem}
  .wedding-day{width:49px;height:46px}
}

/* Unified ceremony and reception section */
.details{
  display:flex;
  min-height:0;
  align-items:center;
  justify-content:center;
  padding-top:clamp(1.2rem,2.2vh,2rem);
  padding-bottom:clamp(1.2rem,2.2vh,2rem);
}
.walk-photo{
  align-self:center;
}
.walk-photo img{
  width:100%;
  min-height:0;
  aspect-ratio:4/5;
  max-height:680px;
  object-position:center 48%;
}
.event-card{
  position:relative;
  align-self:center;
  width:100%;
  max-width:1180px;
  padding:clamp(1.5rem,2.5vh,2.4rem) clamp(1rem,3vw,3rem);
  border:0;
  border-radius:0;
  background:transparent;
  text-align:center;
}
.event-card::before{
  content:none;
}
.event-card-inner{position:relative;z-index:1;max-width:1040px;margin:0 auto}
.details .event-card h2{
  margin:0;
  font-size:clamp(3.7rem,4.6vw,5.15rem);
}
.details .event-card h2 span{font-size:.7em;color:var(--ink)}
.event-flourish{
  display:block;
  width:min(58vw,250px);
  height:34px;
  margin:.1rem auto .25rem;
  overflow:hidden;
}
.event-flourish img{width:100%;height:auto;transform:translateY(-28%)}
.event-flow{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:start;
  gap:clamp(.5rem,1vw,1rem);
  width:min(100%,860px);
  margin:0 auto;
}
.event-flow article{
  display:grid;
  justify-items:center;
  align-content:start;
  transform:translateY(-1.35rem);
}
.event-icon{
  width:46px;
  height:46px;
  margin-bottom:.2rem;
  fill:none;
  stroke:var(--gold);
  stroke-width:1.35;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.event-icon-art{position:relative;display:block;overflow:hidden}
.event-icon-art img{
  position:absolute;
  left:50%;
  top:50%;
  width:76px;
  max-width:none;
  height:76px;
  object-fit:contain;
  transform:translate(-50%,-50%);
  filter:contrast(1.05) saturate(.95);
}
.event-flow h3{
  margin:0 0 .2rem;
  font-family:var(--serif);
  font-size:clamp(1.18rem,1.7vw,1.55rem);
  font-weight:500;
}
.event-flow p{
  margin:0;
  color:#4d5148;
  font-family:var(--sans);
  font-size:clamp(.74rem,.82vw,.86rem);
  font-weight:400;
  letter-spacing:.06em;
  line-height:1.25;
}
.event-flow time{
  display:block;
  margin:.2rem 0 0;
  color:#262a25;
  font-family:var(--sans);
  font-size:clamp(.88rem,1vw,1.02rem);
  font-weight:500;
  letter-spacing:.08em;
  line-height:1.25;
}
.event-connector{
  display:block;
  justify-self:center;
  width:clamp(170px,17vw,320px);
  height:52px;
  overflow:hidden;
  transform:translateY(1.55rem);
}
.event-connector img{width:100%;height:auto;transform:translateY(-30%)}
.venue-illustration{
  display:block;
  width:min(100%,780px);
  max-width:100%;
  margin:-2.2rem auto -1.65rem;
  opacity:.73;
  filter:saturate(.62) contrast(.92);
}
.location-trigger{
  width:min(100%,370px);
  margin:0 auto;
  padding:.72rem 1rem;
  border:1px solid rgba(167,136,71,.8);
  border-radius:10px;
  background:rgba(248,245,238,.72);
  display:grid;
  grid-template-columns:24px 1fr 20px;
  align-items:center;
  gap:.65rem;
  color:#41463d;
  cursor:pointer;
  transition:background .25s,color .25s,border-color .25s;
}
.location-trigger:hover,.location-trigger:focus-visible{background:var(--sage-dark);border-color:var(--sage-dark);color:#fff}
.location-trigger svg{width:22px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.location-trigger span{font-family:var(--serif);font-size:1.1rem}
.location-trigger[aria-expanded="true"] .location-chevron{transform:rotate(90deg)}
.location-chevron{transition:transform .25s}
.location-options{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:.75rem;
  width:min(100%,420px);
  margin:.9rem auto 0;
}
.location-options button,
.location-options a{
  display:block;
  padding:.7rem .8rem;
  border:1px solid rgba(115,123,105,.55);
  border-radius:9px;
  background:rgba(255,255,255,.5);
  color:inherit;
  font-family:var(--sans);
  font-size:.58rem;
  letter-spacing:.08em;
  text-decoration:none;
  cursor:pointer;
  transition:background .25s,color .25s;
}
.location-options button:hover,.location-options button:focus-visible,
.location-options a:hover,.location-options a:focus-visible{background:var(--sage);color:#fff}
.venue-location{margin-top:0}
.venue-name{
  margin:0;
  color:#30342d;
  font-family:var(--serif);
  font-size:clamp(1.55rem,2.1vw,1.95rem);
  font-weight:500;
  line-height:1.15;
}
.details-copy .punctuality{
  max-width:72ch;
  margin:.7rem auto 0;
  color:#44483f;
  font-size:.98rem;
  font-style:italic;
  line-height:1.55;
}
@media (min-width:760px){
  .details{grid-template-columns:none}
}
@media (max-width:759px){
  .walk-photo img{min-height:0;aspect-ratio:4/5}
  .event-card{width:100%}
}
@media (max-width:500px){
  .details{min-height:auto;padding-top:2.5rem;padding-bottom:2.5rem}
  .event-card{padding:.75rem 0;border-radius:0}
  .details .event-card h2{font-size:3.65rem}
  .event-flow{grid-template-columns:1fr;gap:.85rem}
  .event-flow article{transform:none}
  .event-connector{width:210px;height:42px;transform:none}
  .event-connector img{transform:translateY(-31%)}
  .venue-illustration{width:108%;max-width:none;margin:.7rem -4% .2rem}
  .location-options{grid-template-columns:1fr}
}

/* Approved "Nuestro día" timeline: torn photograph and vertical itinerary. */
.day-timeline{
  position:relative;
  display:grid;
  grid-template-columns:minmax(340px,42%) minmax(540px,58%);
  min-height:clamp(820px,96svh,940px);
  overflow:hidden;
  background:transparent;
  isolation:isolate;
  align-items:center;
  padding:clamp(1.8rem,3.5vw,3.2rem) 0;
}
.day-timeline::before{
  content:none;
}
.timeline-photo{
  position:relative;
  align-self:center;
  justify-self:center;
  width:min(72%,500px);
  aspect-ratio:2 / 3;
  margin:0;
  overflow:visible;
  filter:drop-shadow(6px 7px 9px rgba(88,73,47,.14));
}
.timeline-photo-art{
  display:block;
  width:100%;
  height:100%;
  overflow:visible;
}
.timeline-panel{
  position:relative;
  top:clamp(-2.25rem,-3vh,-1.25rem);
  width:min(100%,720px);
  margin:auto;
  padding:clamp(1.8rem,3vh,2.8rem) clamp(2rem,4vw,4.6rem) clamp(1.8rem,3vh,2.8rem) clamp(.6rem,1.5vw,1.4rem);
}
.timeline-heading{text-align:center}
.timeline-panel.approved-image-version .timeline-heading{
  position:absolute;
  width:1px;
  height:1px;
  overflow:hidden;
  clip:rect(0 0 0 0);
  clip-path:inset(50%);
  white-space:nowrap;
}
.timeline-panel.vertical-line-version .timeline-heading{
  position:absolute;
  z-index:3;
  top:clamp(1rem,2vh,1.6rem);
  left:0;
  width:100%;
  pointer-events:none;
}
.timeline-panel.vertical-line-version .timeline-heading h2{
  font-size:clamp(4.6rem,5.4vw,6rem);
}
.timeline-heading h2{
  margin:0;
  color:var(--ink);
  font-family:"Italianno","Cormorant Garamond",cursive;
  font-size:clamp(4.8rem,6vw,7.1rem);
  font-weight:400;
  line-height:.78;
}
.timeline-title-rule{
  display:none;
}
.timeline-map{
  position:relative;
  width:min(100%,540px);
  height:clamp(650px,73vh,760px);
  margin:0 auto;
}
.timeline-approved-art{
  position:absolute;
  inset:0;
  z-index:2;
  width:100%;
  height:100%;
  object-fit:contain;
  object-position:center;
}
.timeline-panel.approved-image-version .timeline-list{
  position:absolute;
  width:1px;
  height:1px;
  overflow:hidden;
  clip:rect(0 0 0 0);
  clip-path:inset(50%);
  white-space:nowrap;
}
.timeline-list{
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  margin:0;
  padding:0;
  list-style:none;
}
.timeline-route{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  overflow:visible;
  color:rgba(74,83,66,.84);
  pointer-events:none;
}
.timeline-route>path{
  fill:none;
  stroke:currentColor;
  stroke-width:1.7;
  stroke-dasharray:4 5;
  stroke-linecap:round;
  vector-effect:non-scaling-stroke;
}
.timeline-route-image{
  position:absolute;
  z-index:0;
  width:30%;
  height:auto;
  object-fit:contain;
  pointer-events:none;
}
.timeline-route-image-1{top:2%;left:40%}
.timeline-route-image-2{
  top:15.5%;
  left:35%;
  width:38%;
}
.timeline-lines-design{
  position:absolute;
  z-index:0;
  top:0;
  left:50%;
  width:auto;
  height:100%;
  object-fit:contain;
  transform:translateX(-50%);
  pointer-events:none;
}
.timeline-map.vertical-concept .timeline-list{display:block}
.timeline-map.vertical-concept .timeline-copy{display:grid}
.timeline-map.vertical-concept .timeline-event{
  width:42%;
  min-height:0;
  flex-direction:column;
  justify-content:flex-start;
  gap:.1rem;
  padding:0;
  opacity:1;
  transform:none;
}
.timeline-map.vertical-concept .timeline-event:nth-child(odd){left:12%;right:auto}
.timeline-map.vertical-concept .timeline-event:nth-child(even){right:14%;left:auto}
.timeline-map.vertical-concept .timeline-event:nth-child(1){top:12.5%}
.timeline-map.vertical-concept .timeline-event:nth-child(2){top:25%}
.timeline-map.vertical-concept .timeline-event:nth-child(3){top:38%}
.timeline-map.vertical-concept .timeline-event:nth-child(4){top:50.5%}
.timeline-map.vertical-concept .timeline-event:nth-child(5){top:63%}
.timeline-map.vertical-concept .timeline-event:nth-child(6){top:73%}
.timeline-map.vertical-concept .timeline-event:nth-child(7){top:85%}
.timeline-map.vertical-concept .timeline-event .timeline-copy{text-align:center}
.timeline-list{
  opacity:1;
  pointer-events:none;
}
.timeline-event{
  position:absolute;
  z-index:2;
  display:flex;
  align-items:center;
  gap:.58rem;
  width:46%;
  min-height:66px;
  padding:.15rem;
  opacity:0;
}
.timeline-event:first-child{opacity:1}
.timeline-event:nth-child(2){opacity:1}
.timeline-event:nth-child(3){opacity:1}
.timeline-event:nth-child(odd){left:0;flex-direction:row-reverse;justify-content:flex-start}
.timeline-event:nth-child(even){right:0;justify-content:flex-start}
.timeline-event:nth-child(1){top:0}
.timeline-event:nth-child(2){top:5%;right:-14%}
.timeline-event:nth-child(3){top:27%}
.timeline-event:nth-child(4){top:40.5%}
.timeline-event:nth-child(5){top:54%}
.timeline-event:nth-child(6){top:67.5%}
.timeline-event:nth-child(7){top:81%}
.timeline-event:nth-child(odd) .timeline-copy{text-align:right}
.timeline-icon{
  position:relative;
  z-index:2;
  display:grid;
  place-items:center;
  flex:0 0 56px;
  width:56px;
  height:56px;
  border:0;
  border-radius:0;
  background:transparent;
  color:var(--sage-dark);
  margin:0;
}
.timeline-icon img{
  width:53px;
  height:53px;
  object-fit:contain;
}
.timeline-copy{display:grid;gap:.08rem;min-width:0}
.timeline-copy time{
  color:var(--ink);
  font-family:"Cormorant Garamond",serif;
  font-size:clamp(1.45rem,1.65vw,1.75rem);
  font-weight:500;
  font-variant-numeric:tabular-nums lining-nums;
  letter-spacing:.08em;
  line-height:.92;
}
.timeline-copy strong{
  color:#30342d;
  font-family:"Cormorant Garamond",serif;
  font-size:clamp(.62rem,.68vw,.73rem);
  font-weight:500;
  letter-spacing:.24em;
  line-height:1.2;
  text-transform:uppercase;
}
@media (max-width:1050px){
  .day-timeline{grid-template-columns:40% 60%;min-height:680px}
  .timeline-photo{width:min(70%,370px)}
  .timeline-panel{padding-right:1.5rem;padding-left:.5rem}
  .timeline-heading h2{font-size:clamp(4.8rem,8.5vw,6.6rem)}
  .timeline-map{height:450px}
  .timeline-icon{flex-basis:46px;width:46px;height:46px}
  .timeline-icon img{width:41px;height:41px}
}
@media (max-width:700px){
  .day-timeline{
    grid-template-columns:42% 58%;
    min-height:590px;
  }
  .timeline-photo{width:72%}
  .timeline-panel{padding:2.25rem .8rem 2rem .3rem}
  .timeline-heading h2{font-size:clamp(4rem,11vw,5.5rem)}
  .timeline-map{height:380px;margin-top:.1rem}
  .timeline-event{gap:.3rem;min-height:52px;padding:.05rem;width:46%}
  .timeline-icon{flex-basis:36px;width:36px;height:36px}
  .timeline-icon img{width:33px;height:33px}
  .timeline-copy time{font-size:1.08rem}
  .timeline-copy strong{font-size:.5rem;letter-spacing:.1em}
  .timeline-route>path{stroke-width:1.55;stroke-dasharray:3.5 4.5}
}
@media (max-height:560px) and (orientation:landscape){
  .day-timeline{
    height:100svh;
    min-height:0;
    padding:.35rem 0;
    align-items:center;
  }
  .timeline-photo{
    align-self:center;
    justify-self:center;
    width:min(62%,220px);
    margin:auto;
    max-height:calc(100svh - 1.25rem);
    transform:translateY(.75rem);
  }
  .timeline-panel{
    top:0;
    align-self:center;
    justify-self:center;
    width:min(100%,600px);
    padding:4.7rem .7rem .15rem .15rem;
  }
  .timeline-heading h2{font-size:3.45rem;line-height:.74}
  .timeline-map{
    width:min(100%,500px);
    height:350px;
    max-height:calc(100svh - 92px);
    margin:0 auto;
  }

  .timeline-lines-design{
    top:56%;
    transform:translate(-50%,-50%) scale(1.65,1.12);
    transform-origin:center;
  }
  .timeline-map.vertical-concept .timeline-event:nth-child(odd){left:15.5%;right:auto}
  .timeline-map.vertical-concept .timeline-event:nth-child(even){right:15.5%;left:auto}
  .timeline-map.vertical-concept .timeline-event:nth-child(1){top:8.5%}
  .timeline-map.vertical-concept .timeline-event:nth-child(2){top:23.2%}
  .timeline-map.vertical-concept .timeline-event:nth-child(3){top:37%}
  .timeline-map.vertical-concept .timeline-event:nth-child(4){top:50.4%}
  .timeline-map.vertical-concept .timeline-event:nth-child(5){top:64.4%}
  .timeline-map.vertical-concept .timeline-event:nth-child(6){top:76.4%}
  .timeline-map.vertical-concept .timeline-event:nth-child(7){top:88%}
  .timeline-event{min-height:38px;gap:.25rem;width:46%}
  .timeline-icon{flex-basis:30px;width:30px;height:30px}
  .timeline-icon img{width:28px;height:28px}
  .timeline-copy time{font-size:.96rem;line-height:.82}
  .timeline-copy strong{font-size:.43rem;letter-spacing:.12em;line-height:1.05}
  .timeline-route>path{stroke-width:1.35;stroke-dasharray:3 4}
}

/* One photographic language across the invitation: irregular hand-torn paper. */
.torn-photo-frame{
  clip-path:var(--photo-tear);
  filter:drop-shadow(7px 8px 9px rgba(88,73,47,.14));
}
.hero{background:transparent}
.hero-photo{
  -webkit-mask:none;
  mask:none;
  clip-path:polygon(
    0 0,100% 0,100% 99.05%,98% 99.18%,96% 98.96%,94% 99.24%,
    92% 99.08%,90% 99.27%,88% 99.02%,86% 99.2%,84% 98.93%,
    82% 99.16%,80% 99.01%,78% 99.25%,76% 99.07%,74% 99.2%,
    72% 98.97%,70% 99.22%,68% 99.04%,66% 99.28%,64% 99.08%,
    62% 99.18%,60% 98.95%,58% 99.24%,56% 99.03%,54% 99.2%,
    52% 98.98%,50% 99.26%,48% 99.06%,46% 99.19%,44% 98.94%,
    42% 99.23%,40% 99.02%,38% 99.27%,36% 99.09%,34% 99.18%,
    32% 98.96%,30% 99.25%,28% 99.05%,26% 99.21%,24% 98.99%,
    22% 99.26%,20% 99.07%,18% 99.19%,16% 98.95%,14% 99.24%,
    12% 99.03%,10% 99.28%,8% 99.08%,6% 99.2%,4% 98.97%,
    2% 99.23%,0 99.06%
  );
}
.hero-photo{
  clip-path:none;
  isolation:isolate;
}
.hero-photo::after{
  content:"";
  position:absolute;
  z-index:1;
  left:0;
  right:0;
  bottom:0;
  height:clamp(18px,1.65vw,28px);
  pointer-events:none;
  background-color:#f5efe7;
  background-image:
    linear-gradient(rgba(255,253,249,.06),rgba(255,253,249,.06)),
    url("assets/option3-inner-paper.png");
  background-repeat:no-repeat;
  background-position:center bottom;
  background-size:100vw auto;
  filter:drop-shadow(0 -1px 1px rgba(73,57,38,.12));
  clip-path:polygon(
    0% 23.2%,1% 38.1%,2% 36.4%,3% 31.2%,4% 39.1%,5% 36.2%,6% 40.7%,7% 32.6%,8% 26.3%,9% 20.5%
    10% 33.9%,11% 34.8%,12% 29.5%,13% 28.3%,14% 37.7%,15% 33.0%,16% 41.0%,17% 33.0%,18% 20.6%,19% 35.5%
    20% 22.6%,21% 18.0%,22% 26.5%,23% 31.8%,24% 39.8%,25% 33.9%,26% 32.0%,27% 39.2%,28% 27.6%,29% 25.9%
    30% 27.0%,31% 30.3%,32% 32.9%,33% 36.0%,34% 35.1%,35% 23.5%,36% 36.5%,37% 40.6%,38% 39.6%,39% 37.2%
    40% 25.4%,41% 31.8%,42% 34.6%,43% 23.4%,44% 21.6%,45% 22.8%,46% 25.4%,47% 27.7%,48% 26.2%,49% 23.8%
    50% 23.8%,51% 34.7%,52% 39.2%,53% 35.6%,54% 29.6%,55% 33.0%,56% 21.4%,57% 21.5%,58% 29.8%,59% 26.2%
    60% 31.7%,61% 40.6%,62% 25.4%,63% 38.7%,64% 32.5%,65% 31.1%,66% 36.9%,67% 22.3%,68% 18.0%,69% 34.5%
    70% 31.1%,71% 25.3%,72% 27.1%,73% 36.2%,74% 35.0%,75% 37.0%,76% 25.1%,77% 21.8%,78% 21.2%,79% 25.3%
    80% 29.9%,81% 20.9%,82% 28.8%,83% 31.0%,84% 34.5%,85% 32.6%,86% 40.8%,87% 29.1%,88% 30.0%,89% 32.7%
    90% 34.4%,91% 24.8%,92% 30.9%,93% 36.5%,94% 28.6%,95% 33.9%,96% 34.7%,97% 39.7%,98% 30.8%,99% 33.8%
    100% 31.8%
    100% 100%,0 100%
  );
}
.hero-photo::after{display:none}
.hero-photo{
  clip-path:polygon(
    0 0,100% 0,
    100% 99.26%,99.5% 99.32%,99% 99.37%,98.5% 99.17%,98% 99.47%,97.5% 99.29%,97% 99.09%,96.5% 99.03%,96% 98.87%,95.5% 99.23%,95% 99.14%,94.5% 99.08%,
    94% 99.36%,93.5% 99.20%,93% 99.12%,92.5% 99.19%,92% 99.22%,91.5% 98.95%,91% 98.96%,90.5% 99.08%,90% 99.48%,89.5% 99.21%,89% 98.99%,88.5% 99.08%,
    88% 99.26%,87.5% 99.00%,87% 99.04%,86.5% 99.36%,86% 98.97%,85.5% 99.36%,85% 99.16%,84.5% 99.06%,84% 99.29%,83.5% 99.28%,83% 98.97%,82.5% 98.88%,
    82% 99.15%,81.5% 99.34%,81% 99.36%,80.5% 99.22%,80% 99.06%,79.5% 99.12%,79% 98.89%,78.5% 99.14%,78% 99.11%,77.5% 99.30%,77% 99.36%,76.5% 99.22%,
    76% 99.14%,75.5% 99.41%,75% 99.12%,74.5% 99.15%,74% 99.11%,73.5% 98.95%,73% 99.18%,72.5% 99.06%,72% 99.40%,71.5% 99.14%,71% 99.36%,70.5% 99.29%,
    70% 98.96%,69.5% 99.05%,69% 99.24%,68.5% 99.33%,68% 99.10%,67.5% 99.47%,67% 99.27%,66.5% 99.16%,66% 99.26%,65.5% 99.18%,65% 99.17%,64.5% 99.25%,
    64% 99.32%,63.5% 99.21%,63% 99.20%,62.5% 99.11%,62% 99.34%,61.5% 99.24%,61% 98.99%,60.5% 99.12%,60% 99.21%,59.5% 99.23%,59% 99.42%,58.5% 99.21%,
    58% 99.20%,57.5% 99.05%,57% 98.99%,56.5% 98.98%,56% 99.29%,55.5% 99.24%,55% 99.26%,54.5% 99.31%,54% 99.15%,53.5% 99.34%,53% 99.18%,52.5% 98.94%,
    52% 98.95%,51.5% 98.98%,51% 99.31%,50.5% 99.15%,50% 99.08%,49.5% 99.41%,49% 99.23%,48.5% 99.13%,48% 99.10%,47.5% 98.95%,47% 99.26%,46.5% 99.08%,
    46% 99.34%,45.5% 99.35%,45% 99.30%,44.5% 99.26%,44% 99.06%,43.5% 98.82%,43% 98.96%,42.5% 98.97%,42% 99.19%,41.5% 99.43%,41% 99.32%,40.5% 99.04%,
    40% 99.10%,39.5% 98.96%,39% 99.15%,38.5% 99.12%,38% 99.34%,37.5% 99.38%,37% 99.20%,36.5% 99.41%,36% 99.15%,35.5% 98.98%,35% 99.29%,34.5% 99.29%,
    34% 98.83%,33.5% 99.21%,33% 99.23%,32.5% 99.25%,32% 99.33%,31.5% 99.19%,31% 99.03%,30.5% 98.97%,30% 99.23%,29.5% 99.01%,29% 99.22%,28.5% 99.19%,
    28% 99.21%,27.5% 99.33%,27% 99.26%,26.5% 99.26%,26% 99.06%,25.5% 99.12%,25% 99.22%,24.5% 99.10%,24% 99.04%,23.5% 99.07%,23% 99.48%,22.5% 99.15%,
    22% 99.29%,21.5% 99.15%,21% 99.19%,20.5% 99.15%,20% 99.26%,19.5% 99.39%,19% 99.41%,18.5% 99.34%,18% 99.42%,17.5% 98.90%,17% 99.26%,16.5% 99.10%,
    16% 99.01%,15.5% 99.31%,15% 99.42%,14.5% 99.19%,14% 99.01%,13.5% 99.24%,13% 99.11%,12.5% 99.11%,12% 99.24%,11.5% 98.94%,11% 99.06%,10.5% 99.15%,
    10% 99.33%,9.5% 99.16%,9% 99.06%,8.5% 99.12%,8% 98.94%,7.5% 98.89%,7% 99.36%,6.5% 99.10%,6% 99.16%,5.5% 99.38%,5% 99.05%,4.5% 99.11%,
    4% 98.92%,3.5% 99.22%,3% 99.11%,2.5% 99.05%,2% 99.45%,1.5% 99.24%,1% 99.05%,0.5% 99.11%,0% 99.12%
  );
}
.hero-photo::after{
  display:block;
  height:18px;
  background-color:#f7f1e9;
  background-image:
    linear-gradient(rgba(255,253,249,.12),rgba(255,253,249,.12)),
    url("assets/option3-inner-paper.png");
  background-repeat:no-repeat;
  background-position:center bottom;
  background-size:100vw auto;
  filter:drop-shadow(0 -1px 1px rgba(255,255,255,.72));
  opacity:.98;
  clip-path:polygon(
    0% 25.7%,0.5% 40.8%,1% 33.2%,1.5% 23.1%,2% 39.6%,2.5% 18.0%,3% 28.6%,3.5% 27.6%,4% 39.6%,4.5% 28.7%,5% 29.9%,5.5% 30.6%,
    6% 27.9%,6.5% 25.3%,7% 26.9%,7.5% 37.2%,8% 40.9%,8.5% 39.3%,9% 29.8%,9.5% 23.8%,10% 23.7%,10.5% 37.6%,11% 40.2%,11.5% 28.3%,
    12% 37.6%,12.5% 28.8%,13% 19.4%,13.5% 20.6%,14% 36.2%,14.5% 22.6%,15% 36.0%,15.5% 43.4%,16% 37.9%,16.5% 32.1%,17% 19.5%,17.5% 31.3%,
    18% 31.6%,18.5% 33.5%,19% 25.4%,19.5% 38.5%,20% 35.4%,20.5% 25.5%,21% 33.6%,21.5% 25.4%,22% 24.2%,22.5% 42.7%,23% 30.8%,23.5% 31.0%,
    24% 32.0%,24.5% 28.5%,25% 23.1%,25.5% 30.8%,26% 27.8%,26.5% 32.3%,27% 32.9%,27.5% 32.6%,28% 31.8%,28.5% 30.2%,29% 32.1%,29.5% 32.7%,
    30% 39.5%,30.5% 23.9%,31% 20.5%,31.5% 31.4%,32% 33.4%,32.5% 19.6%,33% 36.5%,33.5% 24.5%,34% 31.8%,34.5% 23.0%,35% 22.3%,35.5% 21.0%,
    36% 30.8%,36.5% 38.6%,37% 30.6%,37.5% 28.2%,38% 24.6%,38.5% 27.3%,39% 31.9%,39.5% 35.6%,40% 21.8%,40.5% 31.0%,41% 25.2%,41.5% 25.6%,
    42% 29.5%,42.5% 25.3%,43% 32.5%,43.5% 36.8%,44% 27.2%,44.5% 38.4%,45% 29.4%,45.5% 35.0%,46% 34.2%,46.5% 35.1%,47% 36.5%,47.5% 31.2%,
    48% 34.7%,48.5% 31.6%,49% 34.7%,49.5% 35.4%,50% 24.3%,50.5% 29.6%,51% 30.2%,51.5% 37.3%,52% 38.7%,52.5% 26.1%,53% 18.8%,53.5% 23.8%,
    54% 23.3%,54.5% 37.3%,55% 29.9%,55.5% 30.1%,56% 26.6%,56.5% 23.1%,57% 23.4%,57.5% 20.7%,58% 32.5%,58.5% 31.5%,59% 32.4%,59.5% 33.2%,
    60% 20.3%,60.5% 34.9%,61% 35.8%,61.5% 35.9%,62% 39.4%,62.5% 38.5%,63% 38.1%,63.5% 31.2%,64% 30.5%,64.5% 33.1%,65% 34.9%,65.5% 23.6%,
    66% 42.0%,66.5% 33.2%,67% 23.9%,67.5% 32.7%,68% 28.1%,68.5% 33.5%,69% 36.1%,69.5% 24.9%,70% 39.4%,70.5% 22.5%,71% 28.2%,71.5% 20.6%,
    72% 28.0%,72.5% 30.1%,73% 42.0%,73.5% 25.2%,74% 22.6%,74.5% 31.7%,75% 27.2%,75.5% 18.8%,76% 37.0%,76.5% 25.2%,77% 33.5%,77.5% 34.6%,
    78% 23.2%,78.5% 19.6%,79% 33.0%,79.5% 28.2%,80% 26.6%,80.5% 32.3%,81% 40.0%,81.5% 21.5%,82% 20.5%,82.5% 24.5%,83% 27.3%,83.5% 28.7%,
    84% 42.5%,84.5% 28.8%,85% 25.8%,85.5% 23.2%,86% 26.0%,86.5% 31.1%,87% 35.2%,87.5% 25.6%,88% 33.8%,88.5% 31.1%,89% 31.8%,89.5% 30.0%,
    90% 25.9%,90.5% 35.9%,91% 28.7%,91.5% 32.6%,92% 31.7%,92.5% 34.0%,93% 24.3%,93.5% 30.0%,94% 35.0%,94.5% 31.1%,95% 28.8%,95.5% 29.5%,
    96% 19.5%,96.5% 17.5%,97% 23.7%,97.5% 32.9%,98% 26.9%,98.5% 38.5%,99% 35.2%,99.5% 25.0%,100% 23.0%,
    100% 100%,0 100%
  );
}
.hero-photo{
  clip-path:polygon(
    0 0,100% 0,
    100% 98.29%,99.5% 98.06%,99% 98.29%,98.5% 98.22%,98% 98.25%,97.5% 98.14%,97% 98.07%,96.5% 98.48%,96% 98.34%,95.5% 98.34%,95% 98.21%,94.5% 98.59%,
    94% 98.57%,93.5% 98.46%,93% 98.28%,92.5% 98.43%,92% 98.47%,91.5% 98.75%,91% 98.36%,90.5% 98.41%,90% 98.61%,89.5% 98.71%,89% 98.52%,88.5% 98.69%,
    88% 98.76%,87.5% 98.85%,87% 98.85%,86.5% 98.88%,86% 98.77%,85.5% 98.86%,85% 98.75%,84.5% 98.91%,84% 98.75%,83.5% 98.78%,83% 99.00%,82.5% 98.80%,
    82% 98.57%,81.5% 98.77%,81% 98.83%,80.5% 98.60%,80% 98.46%,79.5% 98.46%,79% 98.56%,78.5% 98.63%,78% 98.35%,77.5% 98.36%,77% 98.25%,76.5% 98.40%,
    76% 98.18%,75.5% 97.88%,75% 98.16%,74.5% 98.09%,74% 98.16%,73.5% 97.93%,73% 97.96%,72.5% 98.03%,72% 98.03%,71.5% 97.97%,71% 98.00%,70.5% 97.95%,
    70% 97.83%,69.5% 98.01%,69% 97.95%,68.5% 98.09%,68% 98.08%,67.5% 98.02%,67% 98.20%,66.5% 97.91%,66% 97.97%,65.5% 98.26%,65% 98.25%,64.5% 98.05%,
    64% 98.37%,63.5% 98.34%,63% 98.28%,62.5% 98.38%,62% 98.21%,61.5% 98.44%,61% 98.42%,60.5% 98.64%,60% 98.36%,59.5% 98.54%,59% 98.53%,58.5% 98.54%,
    58% 98.62%,57.5% 98.24%,57% 98.33%,56.5% 98.47%,56% 98.62%,55.5% 98.34%,55% 98.08%,54.5% 98.19%,54% 98.35%,53.5% 98.13%,53% 98.05%,52.5% 98.11%,
    52% 98.12%,51.5% 97.95%,51% 97.79%,50.5% 97.99%,50% 97.97%,49.5% 98.04%,49% 98.04%,48.5% 97.62%,48% 97.79%,47.5% 97.82%,47% 97.84%,46.5% 97.57%,
    46% 97.60%,45.5% 97.95%,45% 98.06%,44.5% 97.65%,44% 97.78%,43.5% 97.79%,43% 97.95%,42.5% 97.89%,42% 97.99%,41.5% 97.95%,41% 98.02%,40.5% 98.25%,
    40% 98.27%,39.5% 98.27%,39% 98.20%,38.5% 98.56%,38% 98.49%,37.5% 98.26%,37% 98.21%,36.5% 98.42%,36% 98.45%,35.5% 98.58%,35% 98.50%,34.5% 98.78%,
    34% 98.63%,33.5% 98.60%,33% 98.48%,32.5% 98.47%,32% 98.89%,31.5% 98.77%,31% 98.70%,30.5% 98.62%,30% 98.56%,29.5% 98.73%,29% 98.45%,28.5% 98.54%,
    28% 98.66%,27.5% 98.62%,27% 98.47%,26.5% 98.31%,26% 98.33%,25.5% 98.42%,25% 98.29%,24.5% 98.26%,24% 98.30%,23.5% 98.31%,23% 98.32%,22.5% 98.27%,
    22% 98.16%,21.5% 98.05%,21% 98.05%,20.5% 98.12%,20% 98.10%,19.5% 98.23%,19% 98.26%,18.5% 98.45%,18% 98.24%,17.5% 98.30%,17% 98.17%,16.5% 98.20%,
    16% 98.57%,15.5% 98.28%,15% 98.22%,14.5% 98.35%,14% 98.43%,13.5% 98.52%,13% 98.44%,12.5% 98.75%,12% 98.86%,11.5% 98.85%,11% 98.74%,10.5% 98.53%,
    10% 98.83%,9.5% 98.84%,9% 98.91%,8.5% 98.75%,8% 98.78%,7.5% 99.03%,7% 99.06%,6.5% 98.81%,6% 98.90%,5.5% 99.04%,5% 99.04%,4.5% 98.79%,
    4% 98.62%,3.5% 98.83%,3% 98.92%,2.5% 98.70%,2% 98.77%,1.5% 98.51%,1% 98.58%,0.5% 98.69%,0% 98.60%
  );
}
.hero-photo::after{filter:none}
.hero-photo img{object-position:center 65%}
@media (max-width:700px){
  .hero-photo img{object-position:center 64%}
}
.story-photo-art{filter:drop-shadow(6px 7px 9px rgba(88,73,47,.14))}

/* Approved photo transition and Dress Code section. */
.dress-transition{
  position:relative;
  width:100%;
  aspect-ratio:1536 / 330;
  margin:0 auto;
  overflow:hidden;
  background:transparent;
}
.dress-transition img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  filter:none;
}
.dress-code{
  padding:clamp(3.4rem,6vw,5rem) clamp(1.3rem,7vw,7rem) clamp(4.2rem,7vw,6rem);
  text-align:center;
}
.dress-code-inner{width:min(100%,1480px);margin:0 auto}
.dress-code h2{
  margin:0;
  color:var(--ink);
  font-family:"Italianno","Cormorant Garamond",cursive;
  font-size:clamp(3.7rem,5vw,4.6rem);
  font-weight:400;
  line-height:.9;
}
.dress-code-rule{
  display:block;
  width:min(66vw,310px);
  height:38px;
  margin:.1rem auto -.15rem;
  overflow:hidden;
}
.dress-code-rule img{width:100%;height:auto;transform:translateY(-27%)}
.dress-code-subtitle{
  margin:.2rem 0 clamp(1.5rem,3vw,2.6rem);
  color:#30342d;
  font-family:var(--sans);
  font-size:.68rem;
  font-weight:500;
  letter-spacing:.38em;
  text-transform:uppercase;
}
.dress-code-layout{
  display:grid;
  grid-template-columns:minmax(260px,1fr) minmax(360px,470px) minmax(260px,1fr);
  align-items:start;
  gap:clamp(1.5rem,3.6vw,4.5rem);
}
.attire-art{width:100%;margin:-.5rem auto 0}
.attire-art>img{display:block;width:100%;height:auto}
.attire-labels{
  display:grid;
  grid-template-columns:1fr 1fr;
  width:66%;
  margin:-1.35rem auto 0;
  color:#30342d;
  font-family:var(--sans);
  font-size:.67rem;
  font-weight:500;
  letter-spacing:.35em;
  text-transform:uppercase;
}
.attire-labels span{text-align:center}
.dress-guidance{
  display:flex;
  flex-direction:column;
  align-items:center;
  align-self:start;
  min-width:0;
  color:#30342d;
}
.dress-guidance h3{
  margin:0;
  font-family:"Cormorant Garamond",serif;
  font-size:clamp(1.65rem,2.2vw,2.25rem);
  font-weight:500;
  letter-spacing:.2em;
  line-height:1;
  text-transform:uppercase;
}
.guidance-rule{
  position:relative;
  display:block;
  width:min(100%,320px);
  height:1px;
  margin:1rem auto 1.15rem;
  background:linear-gradient(90deg,var(--gold) 0 46%,transparent 46% 54%,var(--gold) 54% 100%);
  opacity:.75;
}
.guidance-rule::after{
  content:"✦";
  position:absolute;
  left:50%;
  top:50%;
  color:var(--gold);
  font-size:.8rem;
  line-height:1;
  transform:translate(-50%,-52%);
}
.dress-guidance>p:not(.reserved-label){
  width:100%;
  min-height:5.28em;
  margin:0;
  font-family:"Cormorant Garamond",serif;
  font-size:clamp(1.02rem,1.2vw,1.12rem);
  font-weight:400;
  line-height:1.32;
  text-wrap:balance;
}
.dress-guidance-women>p:not(.reserved-label){max-width:480px}
.dress-guidance-men>p:not(.reserved-label){max-width:360px}
.reserved-label{
  margin:1.45rem 0 .85rem;
  font-family:var(--sans);
  font-size:.62rem;
  font-weight:700;
  letter-spacing:.34em;
  text-transform:uppercase;
}
.reserved-colors{
  --swatch-size:52px;
  display:grid;
  grid-auto-rows:var(--swatch-size);
  justify-content:center;
  gap:6px;
  margin:0;
  padding:0;
  list-style:none;
}
.women-colors{
  grid-template-columns:repeat(8,calc(var(--swatch-size) / 2));
  column-gap:2px;
  row-gap:6px;
}
.women-colors li{grid-column:span 2}
.women-colors li:nth-child(5){grid-column:2 / span 2}
.men-colors{grid-template-columns:var(--swatch-size)}
.reserved-colors li{width:var(--swatch-size);height:var(--swatch-size)}
.color-swatch{
  display:block;
  width:100%;
  height:100%;
  background-image:url("assets/dress-code-watercolor-swatches-v5.png");
  background-repeat:no-repeat;
  background-size:400% 200%;
}
.swatch-white{background-position:0 0}
.swatch-ivory{background-position:33.333% 0}
.swatch-champagne{background-position:66.667% 0}
.swatch-gold{background-position:100% 0}
.swatch-silver{background-position:0 100%}
.swatch-butter{background-position:33.333% 100%}
.swatch-midnight{background-position:66.667% 100%}
.swatch-black{background-position:100% 100%}
.dress-code-note{
  max-width:900px;
  margin:clamp(2rem,4vw,3.25rem) auto 0;
  color:#30342d;
  font-family:"Cormorant Garamond",serif;
  font-size:clamp(1.05rem,1.6vw,1.35rem);
  font-weight:600;
  line-height:1.35;
  text-wrap:balance;
}
.dress-code-botanical{
  display:block;
  width:min(72vw,290px);
  height:auto;
  margin:1.2rem auto 0;
  fill:none;
  stroke:var(--gold);
  stroke-width:1.15;
  stroke-linecap:round;
  stroke-linejoin:round;
}
@media (max-width:1050px){
  .dress-code-layout{
    grid-template-columns:1fr 1fr;
    gap:2.5rem 2rem;
  }
  .attire-art{grid-column:1/-1;grid-row:1;width:min(74vw,470px)}
  .dress-guidance-women{grid-column:1;grid-row:2}
  .dress-guidance-men{grid-column:2;grid-row:2;align-self:start}
}
@media (max-width:500px){
  .dress-transition{width:100%;height:auto;aspect-ratio:1536 / 330;margin:0}
  .dress-code{padding-top:3rem;padding-bottom:4rem}
  .dress-code h2{font-size:3.8rem}
  .dress-code-subtitle{font-size:.58rem;letter-spacing:.28em;margin-bottom:1rem}
  .dress-code-layout{grid-template-columns:1fr;gap:2.4rem}
  .attire-art{grid-column:1;grid-row:1;width:min(92vw,390px)}
  .dress-guidance-women{grid-column:1;grid-row:2}
  .dress-guidance-men{grid-column:1;grid-row:3}
  .attire-labels{margin-top:-1rem;font-size:.58rem;letter-spacing:.25em}
  .guidance-rule{width:min(78vw,280px)}
  .dress-guidance>p:not(.reserved-label){min-height:0;font-size:1.1rem}
  .reserved-colors{--swatch-size:46px;gap:4px}
  .reserved-label{font-size:.56rem;letter-spacing:.27em}
  .dress-code-note{margin-top:2.5rem;font-size:1.08rem}
}

@media (max-height:560px) and (orientation:landscape){
  .dress-code{
    padding:1.6rem 2rem 2rem;
  }
  .dress-code h2{
    font-size:3.2rem;
    line-height:.82;
  }
  .dress-code-rule{
    width:230px;
    height:28px;
    margin:0 auto -.2rem;
  }
  .dress-code-subtitle{
    margin:.05rem 0 .75rem;
    font-size:.54rem;
    letter-spacing:.3em;
  }
  .dress-code-layout{
    gap:.9rem 1.5rem;
  }
  .attire-art{
    width:min(43vw,300px);
    margin:-.25rem auto 0;
  }
  .dress-guidance h3{
    font-size:1.45rem;
  }
  .guidance-rule{
    width:min(72%,210px);
    margin:.5rem auto .6rem;
  }
  .dress-guidance>p:not(.reserved-label){
    min-height:3.2em;
    font-size:.88rem;
    line-height:1.2;
  }
  .reserved-label{
    margin:.7rem 0 .4rem;
    font-size:.5rem;
    letter-spacing:.28em;
  }
  .reserved-colors{
    --swatch-size:38px;
    gap:3px;
  }
  .women-colors{row-gap:3px}
  .dress-code-note{
    margin-top:1.1rem;
    font-size:.92rem;
  }
}

/* Approved two-column gifts and attendance section. */
.rsvp-dual{
  max-width:none;
  padding:clamp(3.6rem,5.5vw,5.4rem) clamp(1.5rem,6vw,6.5rem) clamp(4rem,6vw,5.8rem);
  background:transparent;
}
.rsvp-dual-inner{
  display:grid;
  grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr);
  align-items:stretch;
  width:min(100%,1500px);
  margin:0 auto;
}
.rsvp-panel{
  display:flex;
  flex-direction:column;
  align-items:center;
  min-width:0;
  padding:0 clamp(1.7rem,3.7vw,4.3rem);
  text-align:center;
}
.rsvp-panel h2{
  margin:.3rem 0 .2rem;
  color:var(--ink);
  font-family:"Italianno","Cormorant Garamond",cursive;
  font-size:clamp(3.15rem,4.35vw,4.35rem);
  font-weight:400;
  line-height:.92;
}
.rsvp-panel p{
  max-width:630px;
  margin:0;
  color:#292d27;
  font-family:var(--serif);
  font-size:clamp(1.06rem,1.3vw,1.3rem);
  line-height:1.45;
  text-wrap:balance;
}
.rsvp-panel p+p{margin-top:1.35rem}
.rsvp-deadline{
  display:inline-block;
  font-family:var(--serif);
  font-weight:700;
  font-variant-numeric:lining-nums;
  font-feature-settings:"lnum" 1;
  white-space:nowrap;
}
.footer-seal{
  width:183px;
  height:auto;
  margin:0 auto 1.25rem;
  filter:drop-shadow(0 4px 7px rgba(43,48,38,.16));
}
footer p,
.footer-date{
  font-size:12px;
}
.footer-date{
  font-size:14px;
  font-weight:700;
}
.rsvp-illustration{
  display:block;
  object-fit:contain;
  filter:none;
}
.rsvp-illustration-rain{
  width:min(58%,220px);
  height:195px;
  margin:-.65rem auto -.45rem;
}
.rsvp-illustration-confirmation{
  width:min(62%,260px);
  height:145px;
  margin:.4rem auto -.2rem;
}
.rsvp-botanical-rule{
  width:min(92%,440px);
  height:38px;
  margin:.2rem auto .8rem;
  object-fit:cover;
  object-position:center;
}
.rsvp-column-divider{
  position:relative;
  display:flex;
  justify-content:center;
  width:1px;
  min-height:505px;
  background:var(--gold);
}
.rsvp-column-divider::before,
.rsvp-column-divider::after{
  content:"";
  position:absolute;
  left:50%;
  width:7px;
  height:7px;
  border-radius:50%;
  background:var(--gold);
  transform:translateX(-50%);
}
.rsvp-column-divider::before{top:0}
.rsvp-column-divider::after{bottom:0}
.rsvp-column-divider i{
  position:absolute;
  top:50%;
  left:50%;
  width:32px;
  height:64px;
  transform:translate(-50%,-50%);
  background:url("assets/rsvp-botanical-divider-v1.png") center/130px auto no-repeat;
}
.rsvp-modern-button{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:clamp(1.5rem,4vw,3rem);
  width:max-content;
  max-width:100%;
  margin:1.6rem auto 0;
  padding:1rem 1.6rem 1rem 2.1rem;
  border:1px solid var(--sage-dark);
  border-radius:999px;
  background:rgba(248,245,238,.18);
  color:var(--sage-dark);
  font-family:var(--sans);
  font-size:.68rem;
  font-weight:600;
  letter-spacing:.32em;
  text-transform:uppercase;
  cursor:pointer;
  transition:background .3s var(--ease),color .3s var(--ease),transform .3s var(--ease);
}
.rsvp-modern-button span:last-child{font-size:1.55rem;font-weight:300;letter-spacing:0;line-height:.6}
.rsvp-modern-button:hover,
.rsvp-modern-button:focus-visible{
  background:var(--sage-dark);
  color:var(--paper);
  transform:translateY(-2px);
}

@media (max-width:900px){
  .rsvp-dual{padding:3.3rem 1.3rem 4.2rem}
  .rsvp-dual-inner{grid-template-columns:1fr;gap:2.8rem}
  .rsvp-panel{padding:0 clamp(.7rem,5vw,3rem)}
  .rsvp-column-divider{
    width:min(78%,520px);
    min-height:1px;
    height:1px;
    margin:0 auto;
  }
  .rsvp-column-divider::before{top:50%;left:0;transform:translate(-50%,-50%)}
  .rsvp-column-divider::after{top:50%;right:0;bottom:auto;left:auto;transform:translate(50%,-50%)}
  .rsvp-column-divider i{width:65px;height:34px;background-size:140px auto}
  .rsvp-illustration-rain{width:min(58%,220px);height:205px;margin:-.8rem auto -.6rem}
  .rsvp-illustration-confirmation{width:min(66%,280px);height:155px;margin:0 auto -.25rem}
  .rsvp-panel h2{font-size:clamp(2.85rem,9.5vw,3.75rem)}
  .rsvp-panel p{font-size:1.03rem;max-width:540px}
}

@media (max-width:900px) and (orientation:landscape){
  .rsvp-dual{
    padding:2rem clamp(.8rem,3vw,2rem) 2.5rem;
  }
  .rsvp-dual-inner{
    grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr);
    gap:0;
    align-items:stretch;
  }
  .rsvp-panel{
    padding:0 clamp(.65rem,2.2vw,1.45rem);
  }
  .rsvp-panel h2{
    font-size:clamp(2rem,5.8vw,2.75rem);
    line-height:.88;
  }
  .rsvp-panel p{
    max-width:31ch;
    font-size:clamp(.72rem,1.8vw,.9rem);
    line-height:1.32;
  }
  footer p,
  .footer-date{
    font-size:12px;
  }
  .footer-date{
    font-size:14px;
  }
  .rsvp-panel p+p{margin-top:.65rem}
  .rsvp-illustration-rain{
    width:min(46%,130px);
    height:112px;
    margin:-.15rem auto -.2rem;
  }
  .rsvp-illustration-confirmation{
    width:min(54%,155px);
    height:88px;
    margin:.2rem auto -.1rem;
  }
  .rsvp-botanical-rule{
    width:min(92%,265px);
    height:24px;
    margin:.05rem auto .45rem;
  }
  .rsvp-column-divider{
    width:1px;
    min-height:330px;
    height:auto;
    margin:0;
  }
  .rsvp-column-divider::before{top:0;left:50%;transform:translateX(-50%)}
  .rsvp-column-divider::after{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}
  .rsvp-column-divider i{
    width:28px;
    height:52px;
    background-size:110px auto;
  }
  .rsvp-modern-button{
    width:max-content;
    max-width:100%;
    margin:.8rem auto 0;
    padding:.62rem .8rem .62rem 1rem;
    font-size:.48rem;
    letter-spacing:.22em;
  }
  .rsvp-modern-button span:last-child{font-size:1rem}
}

@media (max-width:560px){
  .rsvp-dual-inner{gap:2.6rem}
  .rsvp-panel h2{font-size:2.85rem}
  .rsvp-illustration-rain{width:min(56%,205px);height:190px}
  .rsvp-illustration-confirmation{width:min(64%,255px);height:145px}
  .rsvp-botanical-rule{height:34px;margin:.1rem auto .7rem}
  .rsvp-modern-button{font-size:.6rem;letter-spacing:.23em;padding:.9rem 1.2rem .9rem 1.5rem}
}

/* Post-confirmation guest guide. Every visual is reused from the invitation. */
body.guest-guide-open{overflow:hidden}
.guest-guide[hidden]{display:none}
.guest-guide{
  position:fixed;
  inset:0;
  z-index:200;
  overflow:auto;
  padding:clamp(.8rem,2vw,1.6rem) clamp(1rem,3vw,3rem);
  background-color:#f1ebe3;
  background-image:
    linear-gradient(rgba(255,253,249,.08),rgba(255,253,249,.08)),
    url("assets/option3-inner-paper.png");
  background-repeat:no-repeat;
  background-position:center;
  background-size:cover;
  opacity:0;
  visibility:hidden;
  transform:translateY(18px);
  transition:opacity .36s var(--ease),visibility .36s,transform .36s var(--ease);
}
.guest-guide.is-open{
  opacity:1;
  visibility:visible;
  transform:none;
}
.guest-guide-inner{
  position:relative;
  display:flex;
  flex-direction:column;
  justify-content:center;
  width:min(100%,1500px);
  min-height:100%;
  margin:0 auto;
}
.memory-camera-teaser{
  position:absolute;
  z-index:2;
  top:clamp(.1rem,1vh,.8rem);
  right:clamp(.25rem,1.6vw,1.5rem);
  display:grid;
  justify-items:center;
  width:clamp(190px,17vw,250px);
  padding:0;
  border:0;
  background:transparent;
  color:var(--ink);
  text-align:center;
  cursor:pointer;
}
.memory-camera-medallion{
  position:relative;
  display:grid;
  place-items:center;
  width:clamp(100px,8vw,132px);
  aspect-ratio:1;
  transition:transform .28s var(--ease),filter .28s var(--ease);
}
.memory-camera-medallion img{width:100%;height:100%;object-fit:contain}
.memory-camera-copy{display:grid;justify-items:center;margin-top:.15rem}
.memory-camera-copy strong{
  font-family:"Italianno","Cormorant Garamond",cursive;
  font-size:clamp(1.25rem,1.8vw,1.75rem);
  font-weight:600;
  line-height:1;
}
.memory-camera-copy span,
.memory-camera-copy time{
  font-family:var(--serif);
  font-size:clamp(.66rem,.9vw,.88rem);
  line-height:1.15;
}
.memory-camera-copy time{margin-top:.18rem;font-size:clamp(.56rem,.72vw,.72rem);letter-spacing:.08em}
.memory-camera-teaser:hover .memory-camera-medallion,
.memory-camera-teaser:focus-visible .memory-camera-medallion{
  filter:drop-shadow(0 8px 10px rgba(77,72,55,.12));
  transform:translateY(-2px) rotate(-1deg);
}
.memory-camera-teaser:focus-visible{outline:1px solid var(--gold);outline-offset:8px;border-radius:4px}
.guest-guide-heading{text-align:center}
.guest-guide-seal{
  width:clamp(68px,7vw,104px);
  height:auto;
  margin:0 auto -.15rem;
  filter:drop-shadow(0 4px 7px rgba(43,48,38,.14));
}
.guest-guide-heading h2{
  margin:0;
  color:var(--ink);
  font-family:"Italianno","Cormorant Garamond",cursive;
  font-size:clamp(3.8rem,6.3vw,6.4rem);
  font-weight:400;
  line-height:.88;
  outline:none;
}
.guest-guide-heading p{
  margin:.15rem 0 0;
  color:#30342d;
  font-family:var(--serif);
  font-size:clamp(.9rem,1.35vw,1.25rem);
  line-height:1.2;
}
.guest-guide-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr) 1px minmax(0,1fr);
  align-items:stretch;
  gap:0;
  width:100%;
  margin:clamp(.65rem,1.5vh,1.2rem) auto 0;
}
.guest-guide-option{
  display:grid;
  grid-template-rows:minmax(150px,1fr) auto auto 44px;
  align-items:end;
  min-width:0;
  padding:0 clamp(.8rem,2.1vw,2.35rem);
  text-align:center;
}
.guest-guide-venue{position:relative}
.guest-guide-option>.guest-guide-arrival-reminder{
  position:absolute;
  top:calc(100% + .35rem);
  left:50%;
  width:min(88%,280px);
  min-height:0;
  margin:0;
  color:#30342d;
  font-family:var(--serif);
  font-size:clamp(.64rem,.82vw,.82rem);
  font-weight:400;
  line-height:1.2;
  white-space:normal;
  transform:translateX(-50%);
}
.guest-guide-arrival-reminder strong{font-weight:700}
.guest-guide-visual{
  display:grid;
  place-items:center;
  width:100%;
  min-height:0;
}
.guest-guide-venue-art img{
  width:min(100%,470px);
  max-height:190px;
  object-fit:contain;
}
.guest-guide-attire-art img{
  width:auto;
  height:min(21vh,190px);
  min-height:145px;
  object-fit:contain;
}
.guest-guide-option h3{
  margin:.05rem 0 0;
  color:var(--ink);
  font-family:"Italianno","Cormorant Garamond",cursive;
  font-size:clamp(1.8rem,3.35vw,3.55rem);
  font-weight:400;
  line-height:.9;
  white-space:nowrap;
}
.guest-guide-option>p{
  min-height:1.3em;
  margin:.25rem 0 .65rem;
  color:#30342d;
  font-family:var(--serif);
  font-size:clamp(.72rem,1.15vw,1.05rem);
  line-height:1.2;
  white-space:nowrap;
}
.guest-guide-actions{
  display:grid;
  grid-template-columns:1fr;
  align-self:end;
  width:100%;
  height:44px;
}
.guest-guide-map-actions{
  grid-template-columns:1fr 1fr;
  gap:.75rem;
}
.guest-guide-attire .guest-guide-actions,
.guest-guide-day .guest-guide-actions{
  justify-self:center;
  width:48%;
}
.guest-guide-actions a,
.guest-guide-actions button{
  display:grid;
  place-items:center;
  width:100%;
  height:100%;
  padding:.55rem .75rem;
  border:1px solid rgba(115,123,105,.55);
  border-radius:9px;
  background:rgba(255,255,255,.5);
  color:var(--ink);
  font-family:var(--sans);
  font-size:.62rem;
  font-weight:400;
  letter-spacing:.08em;
  line-height:1;
  text-decoration:none;
  cursor:pointer;
  transition:background .25s,color .25s,transform .25s;
}
.guest-guide-actions a:hover,
.guest-guide-actions a:focus-visible,
.guest-guide-actions button:hover,
.guest-guide-actions button:focus-visible{
  background:var(--sage);
  color:#fff;
  transform:translateY(-1px);
}
.guest-guide-divider{
  position:relative;
  align-self:center;
  width:1px;
  height:78%;
  background:rgba(167,136,71,.82);
}
.guest-guide-divider::before,
.guest-guide-divider::after{
  content:"";
  position:absolute;
  left:50%;
  width:6px;
  height:6px;
  background:var(--gold);
  transform:translateX(-50%) rotate(45deg);
}
.guest-guide-divider::before{top:0}
.guest-guide-divider::after{bottom:0}
.guest-guide-divider i{
  position:absolute;
  top:50%;
  left:50%;
  width:28px;
  height:52px;
  transform:translate(-50%,-50%) rotate(90deg);
  background:url("assets/rsvp-botanical-divider-v1.png") center/110px auto no-repeat;
}
.guest-guide-timeline{
  position:relative;
  justify-self:center;
  width:min(100%,290px);
  height:min(22vh,190px);
  min-height:160px;
}
.guest-guide-route{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  color:rgba(74,83,66,.84);
  overflow:visible;
}
.guest-guide-route>path{
  fill:none;
  stroke:currentColor;
  stroke-width:1.45;
  stroke-dasharray:3.5 4.5;
  stroke-linecap:round;
  vector-effect:non-scaling-stroke;
}
.guest-guide-route-image{
  position:absolute;
  z-index:0;
  width:80%;
  height:auto;
  object-fit:contain;
  pointer-events:none;
}
.guest-guide-route-image-1{top:3%;left:10%}
.guest-guide-route-image-2{
  top:17%;
  left:10%;
}
.guest-guide-lines-design{
  position:absolute;
  z-index:0;
  top:54%;
  left:50%;
  width:auto;
  height:100%;
  object-fit:contain;
  transform:translate(-50%,-50%) scale(1.65,1.05);
  transform-origin:center;
  pointer-events:none;
}
.guest-guide-timeline.vertical-concept .guide-event{display:block;opacity:1}
.guest-guide-approved-art{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:contain;
}
.guest-guide-timeline.approved-image-version .guide-event{display:none}
.guide-event{
  position:absolute;
  z-index:1;
  width:38px;
  height:38px;
  object-fit:contain;
  opacity:0;
}
.guide-event-1{left:30%;top:9.5%}
.guide-event-1{opacity:1}
.guide-event-2{opacity:1}
.guide-event-3{opacity:1}
.guide-event-2{right:30%;top:23.5%}
.guide-event-3{left:30%;top:36.5%}
.guide-event-4{right:30%;top:49%}
.guide-event-5{left:30%;top:62%}
.guide-event-6{right:30%;top:74%}
.guide-event-7{left:30%;top:85%;bottom:auto}

@media (max-height:560px) and (orientation:landscape){
  .guest-guide{padding:.4rem 1rem .65rem}
  .memory-camera-teaser{top:.15rem;right:.2rem;width:175px}
  .memory-camera-medallion{width:76px}
  .memory-camera-copy strong{font-size:1.13rem}
  .memory-camera-copy span{font-size:.58rem}
  .memory-camera-copy time{font-size:.49rem}
  .guest-guide-seal{
    position:absolute;
    z-index:3;
    top:.35rem;
    left:.35rem;
    width:66px;
    margin:0;
  }
  .guest-guide-heading h2{
    font-size:3.15rem;
    line-height:.82;
    transform:translateY(-.45rem);
  }
  .guest-guide-heading p{font-size:.76rem;margin-top:.22rem}
  .guest-guide-grid{margin-top:1.65rem}
  .guest-guide-option{
    grid-template-rows:118px auto auto 34px;
    padding:0 clamp(.55rem,1.7vw,1rem);
  }
  .guest-guide-venue-art img{max-height:118px}
  .guest-guide-attire-art img{height:118px;min-height:0}
  .guest-guide-timeline{top:-.3rem;width:190px;height:118px;min-height:0}
  .guide-event{width:22px;height:22px}
  .guest-guide-option h3{font-size:clamp(1.55rem,3.3vw,2.2rem)}
  .guest-guide-option>p{margin:.1rem 0 .3rem;font-size:.63rem}
  .guest-guide-actions{height:34px}
  .guest-guide-actions a,.guest-guide-actions button{font-size:.51rem;padding:.35rem .4rem}
  .guest-guide-map-actions{gap:.4rem}
  .guest-guide-divider{height:82%}
}

@media (max-width:980px){
  .memory-camera-teaser{position:relative;top:auto;right:auto;align-self:center;margin:0 0 .45rem}
}

@media (max-width:980px) and (orientation:landscape){
  .memory-camera-teaser{
    position:absolute;
    top:.15rem;
    right:.35rem;
    width:150px;
    margin:0;
  }
  .memory-camera-medallion{width:68px}
  .memory-camera-copy{margin-top:-.1rem}
  .memory-camera-copy strong{font-size:1.08rem}
  .memory-camera-copy span{font-size:.56rem}
  .memory-camera-copy time{margin-top:.1rem;font-size:.47rem}
}

@media (prefers-reduced-motion:reduce){
  .guest-guide{transition:none}
}

/* Editable opening message layered over the clean envelope artwork. */
.envelope-title-copy{
  display:block;
  z-index:34;
  top:13.2%;
  width:min(90vw,900px);
  gap:0;
  color:#3e4038;
  pointer-events:none;
}
.envelope-title-copy small{
  display:block;
  font-family:"Italianno","Cormorant Garamond",cursive;
  font-size:clamp(2rem,3vw,3.6rem);
  font-weight:400;
  line-height:1.08;
  letter-spacing:.015em;
  text-transform:none;
  text-wrap:balance;
}
.envelope-wrap>.tap-arc{color:#2f332c}
@media (max-width:700px){
  .envelope-title-copy{top:16.2%;width:min(90vw,520px)}
  .envelope-title-copy small{font-size:clamp(1.75rem,8vw,2.45rem);letter-spacing:.01em}
}

/* Modern comparison version. The approved closed artwork is also the moving
   flap, so clicking never swaps to a second, slightly different rendering. */
.modern-envelope-version .envelope-render,
.modern-envelope-version .flap-motion{
  display:none!important;
}
.modern-envelope-version .envelope::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:28;
  background:#f4efe6;
  opacity:1;
  pointer-events:none;
  transition:opacity .42s .42s linear;
}
.modern-envelope-version .envelope.open::before{opacity:0}
.modern-envelope-version .modern-closed-cover{
  position:absolute;
  inset:0;
  z-index:31;
  display:block!important;
  opacity:1;
  visibility:visible;
  pointer-events:none;
  overflow:hidden;
  transform:translate3d(0,0,0) scale(1.012);
  transform-origin:50% 0;
  transition:none;
  will-change:transform;
  backface-visibility:hidden;
}
.modern-envelope-version .modern-closed-cover img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
}
.modern-envelope-version .modern-cover-mobile{display:none!important}
.modern-envelope-version .modern-envelope-title{
  position:absolute;
  z-index:34;
  top:14.8%;
  left:50%;
  width:min(90vw,900px);
  transform:translateX(-50%);
  color:#41413d;
  font-family:"Italianno","Cormorant Garamond",cursive;
  font-size:clamp(2.4rem,3.35vw,4rem);
  font-weight:400;
  line-height:1;
  text-align:center;
  text-wrap:balance;
}
.modern-envelope-version .modern-seal{
  position:absolute;
  z-index:35;
  top:78%;
  left:50%;
  width:min(max(12.4vw,22vh),239px);
  transform:translate(-50%,-50%);
  filter:drop-shadow(0 10px 10px rgba(58,53,43,.22));
}
.modern-envelope-version .modern-seal img{
  display:block;
  width:100%;
  height:auto;
  object-fit:contain;
}
.modern-envelope-version .envelope.open .modern-closed-cover{
  opacity:1;
  visibility:visible;
  animation:modern-flap-open 2.72s cubic-bezier(.55,0,.25,1) both;
}
.modern-envelope-version .envelope.open .modern-envelope-title{
  animation:modern-title-rise 2.72s cubic-bezier(.55,0,.25,1) both;
}
.modern-envelope-version .envelope.open .modern-seal{
  animation:modern-seal-rise 2.72s cubic-bezier(.55,0,.25,1) both;
}
.modern-envelope-version .curtain-panel{
  display:block!important;
  opacity:1;
  transform:translate3d(0,0,0);
  transition:none;
  will-change:transform;
  backface-visibility:hidden;
}
.modern-envelope-version .curtain-bottom{
  z-index:29;
  clip-path:none!important;
}
.modern-envelope-version .curtain-bottom::before{content:none!important}
.modern-envelope-version .curtain-image{
  transform:none!important;
  filter:none;
}
.modern-envelope-version .envelope.open .curtain-bottom{
  animation:modern-pocket-leave 2.05s .62s cubic-bezier(.65,0,.35,1) both;
}
.modern-envelope-version .envelope-wrap>.tap-arc{
  display:block!important;
  color:#2f332c;
}
.modern-envelope-version .envelope-screen.finished{
  visibility:hidden;
  transition:none;
}
@media (max-width:700px){
  .modern-envelope-version .modern-cover-desktop{display:none!important}
  .modern-envelope-version .modern-cover-mobile{display:block!important}
  .modern-envelope-version .modern-envelope-title{
    top:17.5%;
    width:min(88vw,680px);
    font-size:clamp(2.1rem,9.2vw,3.4rem);
    line-height:.92;
  }
  .modern-envelope-version .modern-seal{
    top:61.5%;
    width:min(max(25.8vw,14.52vh),190px);
  }
  .modern-envelope-version .envelope.open .modern-closed-cover{
    animation-name:modern-flap-open-mobile;
  }
  .modern-envelope-version .curtain-bottom{
    clip-path:none!important;
  }
}
@media (prefers-reduced-motion:reduce){
  .modern-envelope-version .envelope.open .modern-closed-cover,
  .modern-envelope-version .envelope.open .curtain-bottom{animation-duration:.8s}
}

@keyframes modern-flap-open{
  0%{transform:perspective(1800px) rotateX(0deg) translate3d(0,0,0) scale(1.012)}
  58%{transform:perspective(1800px) rotateX(76deg) translate3d(0,-3%,0) scale(1.012)}
  100%{transform:perspective(1800px) rotateX(88deg) translate3d(0,-108%,0) scale(1.012)}
}
@keyframes modern-flap-open-mobile{
  0%{transform:perspective(1300px) rotateX(0deg) translate3d(0,0,0) scale(1.012)}
  58%{transform:perspective(1300px) rotateX(78deg) translate3d(0,-2%,0) scale(1.012)}
  100%{transform:perspective(1300px) rotateX(88deg) translate3d(0,-108%,0) scale(1.012)}
}
@keyframes modern-seal-rise{
  0%{transform:translate(-50%,-50%) translate3d(0,0,0)}
  100%{transform:translate(-50%,-50%) translate3d(0,-108vh,0)}
}
@keyframes modern-title-rise{
  0%{transform:translateX(-50%) translate3d(0,0,0)}
  100%{transform:translateX(-50%) translate3d(0,-108vh,0)}
}
@keyframes modern-pocket-leave{
  0%{transform:translate3d(0,0,0)}
  100%{transform:translate3d(0,103%,0)}
}

/* Third concept: every physical envelope part is an independent layer.
   Front and inner flap files share one exact silhouette, so opening never swaps
   artwork, changes scale, or exposes a second paper colour. */
.minimal-envelope-version .envelope-screen{
  background:#f4eee5;
}
.minimal-envelope-version .envelope-screen::before{opacity:.08}
.minimal-envelope-version .envelope{
  isolation:isolate;
  overflow:hidden;
  perspective:1800px;
  transform-style:preserve-3d;
  background:#f4eee5;
}
.minimal-envelope-version .minimal-underlay{
  position:absolute;
  inset:0;
  z-index:1;
  background:
    radial-gradient(circle at 28% 24%,rgba(255,255,255,.32),transparent 38%),
    linear-gradient(118deg,#f7f1e8 0%,#f2ebe1 52%,#f7f2ea 100%);
}
.minimal-envelope-version .minimal-body-piece,
.minimal-envelope-version .minimal-flap-assembly{
  position:absolute;
  inset:0;
  display:block;
  pointer-events:none;
}
.minimal-envelope-version .minimal-body-piece{
  z-index:10;
  transform:translate3d(0,0,0);
  will-change:transform;
}
.minimal-envelope-version .minimal-body-piece picture,
.minimal-envelope-version .minimal-body-piece img,
.minimal-envelope-version .minimal-flap-face picture,
.minimal-envelope-version .minimal-flap-face img{
  display:block;
  width:100%;
  height:100%;
}
.minimal-envelope-version .minimal-body-piece img,
.minimal-envelope-version .minimal-flap-face img{
  object-fit:fill;
}
.minimal-envelope-version .minimal-flap-assembly{
  z-index:20;
  transform-origin:50% 0;
  transform-style:preserve-3d;
  will-change:transform;
}
.minimal-envelope-version .minimal-flap-face{
  position:absolute;
  inset:0;
  display:block;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
}
.minimal-envelope-version .minimal-flap-front{z-index:2}
.minimal-envelope-version .minimal-flap-inner{
  z-index:1;
  transform:rotateX(180deg);
  filter:brightness(.995) saturate(.98);
}
.minimal-envelope-version .minimal-envelope-title{
  position:absolute;
  z-index:4;
  top:14.8%;
  left:50%;
  width:min(82vw,760px);
  transform:translateX(-50%) translateZ(2px);
  backface-visibility:hidden;
  color:#45443f;
  font-family:"Italianno","Cormorant Garamond",cursive;
  font-size:clamp(2.35rem,3.25vw,3.9rem);
  font-weight:400;
  line-height:1;
  text-align:center;
  text-wrap:balance;
}
.minimal-envelope-version .minimal-vellum-band{
  position:absolute;
  z-index:24;
  top:36.2%;
  left:0;
  width:100%;
  height:31.2%;
  border-top:1px solid rgba(255,255,255,.66);
  border-bottom:1px solid rgba(192,177,153,.34);
  background:rgba(248,244,237,.61);
  box-shadow:0 4px 9px rgba(103,89,65,.08);
  backdrop-filter:blur(.45px);
  pointer-events:none;
}
.minimal-envelope-version .minimal-band-monogram{
  position:absolute;
  z-index:25;
  top:43.2%;
  left:50%;
  transform:translateX(-50%);
  color:rgba(146,126,91,.16);
  font-family:"Cormorant Garamond",serif;
  font-size:clamp(7rem,12vw,13rem);
  font-weight:300;
  line-height:.72;
  letter-spacing:-.14em;
  pointer-events:none;
}
.minimal-envelope-version .minimal-band-monogram span{
  position:relative;
  z-index:2;
  margin:0 -.16em;
  font-size:.72em;
  font-style:italic;
}
.minimal-envelope-version .minimal-gold-branch{
  position:absolute;
  z-index:26;
  top:40.5%;
  right:2.5%;
  width:min(23vw,390px);
  height:auto;
  pointer-events:none;
  filter:drop-shadow(0 1px 1px rgba(117,88,34,.1));
}
.minimal-envelope-version .minimal-seal{
  position:absolute;
  z-index:29;
  top:70.5%;
  left:50%;
  width:min(max(11.4vw,18vh),210px);
  transform:translate(-50%,-50%) translateZ(4px);
  transform-origin:50% 50%;
  pointer-events:none;
  will-change:transform,opacity;
  filter:drop-shadow(0 11px 12px rgba(60,54,44,.2));
}
.minimal-envelope-version .minimal-seal img{width:100%;height:auto}
.minimal-envelope-version .envelope-wrap>.tap-arc{
  z-index:31;
  bottom:2.2%;
  width:min(92vw,440px);
  height:auto;
  color:#373833;
}
.minimal-envelope-version .envelope-wrap h1{display:none}
.minimal-envelope-version .envelope.open .minimal-vellum-band,
.minimal-envelope-version .envelope.open .minimal-band-monogram,
.minimal-envelope-version .envelope.open .minimal-gold-branch{
  animation:minimal-band-release .48s cubic-bezier(.35,0,.2,1) both;
}
.minimal-envelope-version .envelope.open .minimal-seal{
  animation:minimal-seal-release .48s cubic-bezier(.2,.8,.2,1) both;
}
.minimal-envelope-version .envelope.open .minimal-flap-assembly{
  animation:minimal-flap-open 2.45s .34s cubic-bezier(.58,0,.24,1) both;
}
.minimal-envelope-version .envelope.open .minimal-body-piece{
  animation:minimal-pocket-leave 1.22s 1.72s cubic-bezier(.65,0,.35,1) both;
}
.minimal-envelope-version .envelope.open~.tap-arc{
  opacity:0;
  transition:opacity .22s linear;
}
.minimal-envelope-version .envelope-screen.finished{
  opacity:0;
  visibility:hidden;
  transition:opacity .28s linear,visibility 0s .28s;
}
@keyframes minimal-band-release{
  0%{opacity:1;transform:translate3d(0,0,0)}
  100%{opacity:0;transform:translate3d(0,-2.5%,0)}
}
@keyframes minimal-seal-release{
  0%{opacity:1;transform:translate(-50%,-50%) translateZ(4px) scale(1)}
  55%{opacity:1;transform:translate(-50%,-54%) translateZ(14px) scale(1.035)}
  100%{opacity:0;transform:translate(-50%,-60%) translateZ(18px) scale(.98)}
}
@keyframes minimal-flap-open{
  0%{transform:rotateX(0deg) translate3d(0,0,0)}
  64%{transform:rotateX(-178deg) translate3d(0,0,0)}
  100%{transform:rotateX(-178deg) translate3d(0,-104%,0)}
}
@keyframes minimal-pocket-leave{
  0%{transform:translate3d(0,0,0)}
  100%{transform:translate3d(0,104%,0)}
}
@media (max-width:700px){
  .minimal-envelope-version .envelope{perspective:1250px}
  .minimal-envelope-version .minimal-envelope-title{
    top:22.5%;
    width:84vw;
    font-size:clamp(2rem,8.3vw,3.1rem);
    line-height:.96;
  }
  .minimal-envelope-version .minimal-vellum-band{top:46%;height:20%}
  .minimal-envelope-version .minimal-band-monogram{top:49%;font-size:clamp(6.5rem,31vw,10rem)}
  .minimal-envelope-version .minimal-gold-branch{top:50%;right:-3%;width:min(47vw,300px)}
  .minimal-envelope-version .minimal-seal{top:63.2%;width:min(max(27vw,13.5vh),175px)}
  .minimal-envelope-version .envelope-wrap>.tap-arc{bottom:2.4%;width:min(92vw,390px)}
}
@media (prefers-reduced-motion:reduce){
  .minimal-envelope-version .envelope.open .minimal-flap-assembly,
  .minimal-envelope-version .envelope.open .minimal-body-piece,
  .minimal-envelope-version .envelope.open .minimal-vellum-band,
  .minimal-envelope-version .envelope.open .minimal-band-monogram,
  .minimal-envelope-version .envelope.open .minimal-gold-branch,
  .minimal-envelope-version .envelope.open .minimal-seal{animation-duration:.55s!important;animation-delay:0s!important}
}

/* OPTION 3 — final choreography.
   1) the complete vellum ribbon slides off;
   2) the original seal rises without resizing;
   3) four paper points open independently from one identical clean texture. */
.minimal-envelope-version .envelope-screen,
.minimal-envelope-version .envelope-wrap,
.minimal-envelope-version .option3-stage{
  background:transparent;
}
.minimal-envelope-version .option3-stage{
  overflow:hidden;
  isolation:isolate;
}
.minimal-envelope-version .option3-layer,
.minimal-envelope-version .option3-panel,
.minimal-envelope-version .option3-top-piece,
.minimal-envelope-version .option3-top-skin,
.minimal-envelope-version .option3-ribbon{
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  pointer-events:none;
}
.minimal-envelope-version .option3-clean-base{
  z-index:1;
  opacity:1;
}
.minimal-envelope-version .option3-panel,
.minimal-envelope-version .option3-top-piece{
  z-index:3;
  will-change:transform;
}
.minimal-envelope-version .option3-left-point{
  clip-path:polygon(0 0,50% 69.4%,0 100%);
  transform-origin:0 69.4%;
}
.minimal-envelope-version .option3-right-point{
  clip-path:polygon(100% 0,100% 100%,50% 69.4%);
  transform-origin:100% 69.4%;
}
.minimal-envelope-version .option3-bottom-point{
  clip-path:polygon(0 100%,50% 69.4%,100% 100%);
  transform-origin:50% 100%;
}
.minimal-envelope-version .option3-top-piece{
  z-index:5;
  transform-origin:50% 0;
}
.minimal-envelope-version .option3-top-skin{
  clip-path:polygon(0 0,100% 0,50% 69.4%);
  transform-origin:50% 0;
  will-change:transform;
}
.minimal-envelope-version .option3-seal{
  z-index:11;
  /* Keep the approved seal's size, colour, shadow and resting position. */
}
.minimal-envelope-version .option3-ribbon{
  z-index:10;
  will-change:transform,opacity;
}
.minimal-envelope-version .envelope.open .minimal-vellum-band,
.minimal-envelope-version .envelope.open .minimal-band-monogram,
.minimal-envelope-version .envelope.open .minimal-gold-branch,
.minimal-envelope-version .envelope.open .option3-seal{
  animation:none!important;
}
.minimal-envelope-version .envelope.open .option3-ribbon{
  animation:option3-ribbon-out 2.05s cubic-bezier(.45,0,.2,1) both;
}
.minimal-envelope-version .envelope.open .option3-clean-base{
  animation:option3-base-away .01s .96s linear both;
}
.minimal-envelope-version .envelope.open .option3-top-skin{
  animation:option3-top-open 1.68s .96s cubic-bezier(.58,0,.22,1) both;
}
.minimal-envelope-version .envelope.open .option3-seal{
  animation:option3-seal-rise 1.68s .96s cubic-bezier(.58,0,.22,1) both!important;
}
.minimal-envelope-version .envelope.open .option3-left-point{
  animation:option3-left-open 1.54s 1.08s cubic-bezier(.28,.62,.2,1) both;
}
.minimal-envelope-version .envelope.open .option3-right-point{
  animation:option3-right-open 1.54s 1.08s cubic-bezier(.28,.62,.2,1) both;
}
.minimal-envelope-version .envelope.open .option3-bottom-point{
  animation:option3-bottom-open 1.54s 1.08s cubic-bezier(.28,.62,.2,1) both;
}
.minimal-envelope-version .envelope-wrap>.tap-arc{
  display:block!important;
  z-index:12;
}
.minimal-envelope-version .envelope.open~.tap-arc{
  opacity:0;
  transition:opacity .2s linear;
}
@keyframes option3-ribbon-out{
  0%{transform:translate3d(0,0,0)}
  100%{transform:translate3d(0,-112%,0)}
}
@keyframes option3-base-away{
  to{opacity:0}
}
@keyframes option3-top-open{
  0%{transform:scaleY(1) translate3d(0,0,0)}
  48%{transform:scaleY(.025) translate3d(0,0,0)}
  52%{transform:scaleY(-.025) translate3d(0,0,0)}
  100%{transform:scaleY(-1) translate3d(0,0,0)}
}
@keyframes option3-seal-rise{
  0%{transform:translate(-50%,-50%) translate3d(0,0,0)}
  100%{transform:translate(-50%,-50%) translate3d(0,-73vh,0)}
}
@keyframes option3-left-open{
  0%{transform:translate3d(0,0,0) rotate(0)}
  100%{transform:translate3d(-7%,2%,0) rotate(-1.2deg)}
}
@keyframes option3-right-open{
  0%{transform:translate3d(0,0,0) rotate(0)}
  100%{transform:translate3d(7%,2%,0) rotate(1.2deg)}
}
@keyframes option3-bottom-open{
  0%{transform:translate3d(0,0,0) scale(1)}
  100%{transform:translate3d(0,8%,0) scale(1.015)}
}
@media (max-width:700px){
  @keyframes option3-seal-rise{
    0%{transform:translate(-50%,-50%) translate3d(0,0,0)}
    100%{transform:translate(-50%,-50%) translate3d(0,-60vh,0)}
  }
}
@media (prefers-reduced-motion:reduce){
  .minimal-envelope-version .envelope.open .option3-ribbon,
  .minimal-envelope-version .envelope.open .option3-clean-base,
  .minimal-envelope-version .envelope.open .option3-top-skin,
  .minimal-envelope-version .envelope.open .option3-seal,
  .minimal-envelope-version .envelope.open .option3-left-point,
  .minimal-envelope-version .envelope.open .option3-right-point,
  .minimal-envelope-version .envelope.open .option3-bottom-point{
    animation-duration:.5s!important;
    animation-delay:0s!important;
  }
}

/* Preserve the approved third design pixel-for-pixel before interaction.
   During the hand-off, the ribbon is sampled from that very same artwork. */
.minimal-envelope-version .option3-master-closed{
  z-index:20;
  opacity:1;
  pointer-events:none;
  will-change:opacity;
}
.minimal-envelope-version .envelope-wrap>.tap-arc{
  display:none!important;
}
.minimal-envelope-version .option3-ribbon-art{
  z-index:1;
  opacity:.72;
  clip-path:none;
  -webkit-mask-image:none;
  mask-image:none;
}
.minimal-envelope-version .envelope.open .option3-ribbon-art{
  animation:option3-ribbon-fade 2.05s .1s ease-in-out both;
}
@keyframes option3-ribbon-fade{
  0%,78%{opacity:.72}
  100%{opacity:0}
}
.minimal-envelope-version .envelope.open .option3-master-closed{
  animation:option3-approved-handoff .12s linear both;
}
.minimal-envelope-version .envelope.open .option3-ribbon{
  animation-delay:.1s;
}
.minimal-envelope-version .envelope.open .option3-clean-base{
  animation-delay:1.56s;
}
.minimal-envelope-version .envelope.open .option3-top-skin,
.minimal-envelope-version .envelope.open .option3-seal{
  animation-delay:1.86s!important;
}
.minimal-envelope-version .envelope.open .option3-left-point,
.minimal-envelope-version .envelope.open .option3-right-point,
.minimal-envelope-version .envelope.open .option3-bottom-point{
  animation-delay:1.98s;
}
@keyframes option3-approved-handoff{
  0%{opacity:1}
  100%{opacity:0}
}

/* OPTION 3 — corrected opening.
   Every visible paper piece samples the exact same approved clean artwork.
   The three pocket sections remain fixed; only the upper flap and seal move. */
.minimal-envelope-version .option3-panel{
  display:block!important;
  z-index:3;
  animation:none!important;
}
.minimal-envelope-version .option3-clean-base{
  z-index:4;
}
.minimal-envelope-version .option3-left-point{
  clip-path:polygon(0 0,4.3% 0,50.3% 77.3%,0 100%);
}
.minimal-envelope-version .option3-right-point{
  clip-path:polygon(95.7% 0,100% 0,100% 100%,49.7% 77.3%);
}
.minimal-envelope-version .option3-bottom-point{
  clip-path:polygon(0 100%,49.7% 76.9%,50.3% 76.9%,100% 100%);
}
.minimal-envelope-version .option3-top-skin{
  clip-path:polygon(3.8% 0,96.2% 0,50% 77.3%);
}
.minimal-envelope-version .envelope.open .option3-left-point,
.minimal-envelope-version .envelope.open .option3-right-point,
.minimal-envelope-version .envelope.open .option3-bottom-point{
  animation:none!important;
  transform:none!important;
  opacity:1;
}
.minimal-envelope-version .envelope.open .option3-top-skin{
  animation:option3-top-lift 2.42s 1.86s cubic-bezier(.55,0,.25,1) both;
}
.minimal-envelope-version .envelope.open .option3-seal{
  animation:option3-seal-lift 2.42s 1.86s cubic-bezier(.55,0,.25,1) both!important;
}
.minimal-envelope-version .option3-seal{
  top:74.4%;
  left:50%;
  width:15.38%;
  transform:translate(-50%,-50%);
}
.minimal-envelope-version .option3-master-closed{
  display:none!important;
}
.minimal-envelope-version .envelope-wrap>.tap-arc{
  display:block!important;
}
@keyframes option3-top-lift{
  0%{transform:perspective(1800px) rotateX(0deg) translate3d(0,0,0)}
  58%{transform:perspective(1800px) rotateX(76deg) translate3d(0,-3%,0)}
  100%{transform:perspective(1800px) rotateX(88deg) translate3d(0,-108%,0)}
}
@keyframes option3-seal-lift{
  0%{transform:translate(-50%,-50%) translate3d(0,0,0)}
  100%{transform:translate(-50%,-50%) translate3d(0,-108vh,0)}
}
@media (max-width:700px){
  @keyframes option3-top-lift{
    0%{transform:perspective(1300px) rotateX(0deg) translate3d(0,0,0)}
    58%{transform:perspective(1300px) rotateX(78deg) translate3d(0,-2%,0)}
    100%{transform:perspective(1300px) rotateX(88deg) translate3d(0,-108%,0)}
  }
}

/* Temporary work mode: keep the approved ribbon asset and choreography stored,
   but hide it while the following opening movement is adjusted. */
.minimal-envelope-version.ribbon-work-mode .option3-ribbon{
  display:none!important;
}
.minimal-envelope-version.ribbon-work-mode .envelope.open .option3-clean-base,
.minimal-envelope-version.ribbon-work-mode .envelope.open .option3-top-skin,
.minimal-envelope-version.ribbon-work-mode .envelope.open .option3-seal{
  animation-delay:.1s!important;
}

/* OPTION 3 — clean pocket-depth transition.
   A matching paper interior sits behind one real pocket asset. The flap and
   its seal are one travelling assembly, so neither can drift or resize. */
.minimal-envelope-version .option3-inside-paper,
.minimal-envelope-version .option3-pocket-body{
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  pointer-events:none;
}
.minimal-envelope-version .option3-inside-paper{
  z-index:1;
  overflow:hidden;
  background:transparent;
}
.minimal-envelope-version .option3-inside-paper img{
  display:block;
  width:100%;
  height:100%;
  object-fit:fill;
}
.minimal-envelope-version .option3-pocket-body{
  z-index:3;
}
.minimal-envelope-version .option3-pocket-body img{
  display:block;
  width:100%;
  height:100%;
  object-fit:fill;
}
.minimal-envelope-version .option3-clean-base{
  z-index:4;
}
.minimal-envelope-version .option3-top-piece{
  z-index:5;
  transform-origin:50% 0;
  will-change:transform;
}
.minimal-envelope-version .option3-top-skin{
  clip-path:polygon(3.8% 0,96.2% 0,50% 77.3%);
}
.minimal-envelope-version .option3-seal{
  top:77.3%;
  left:50%;
  width:15.38%;
  transform:translate(-50%,-50%);
  animation:none!important;
}
.minimal-envelope-version .envelope.open .option3-top-skin,
.minimal-envelope-version .envelope.open .option3-seal{
  animation:none!important;
  transform:none;
}
.minimal-envelope-version .envelope.open .option3-seal{
  transform:translate(-50%,-50%);
}
.minimal-envelope-version .envelope.open .option3-top-piece{
  animation:option3-flap-seal-rise 2.42s .1s cubic-bezier(.48,.02,.2,1) both;
}
.minimal-envelope-version .envelope-wrap>.tap-arc{
  display:block!important;
  top:89%!important;
  bottom:auto!important;
  width:min(94vw,464px);
  transform:translate(-50%,-43.64%);
}
.minimal-envelope-version .tap-arc .tap-chevron{
  display:none;
}
@keyframes option3-flap-seal-rise{
  0%,8%{transform:translate3d(0,0,0)}
  36%{transform:translate3d(0,-8%,0)}
  100%{transform:translate3d(0,-110%,0)}
}
@media (max-width:700px){
  .minimal-envelope-version .envelope-wrap>.tap-arc{
    top:89%!important;
    bottom:auto!important;
    width:min(92vw,410px);
    transform:translate(-50%,-43.64%);
  }
}
@media (prefers-reduced-motion:reduce){
  .minimal-envelope-version .envelope.open .option3-top-piece{
    animation-duration:.55s!important;
    animation-delay:0s!important;
  }
}

/* Keep the invitation completely out of the envelope-opening scene. */
body.minimal-envelope-version.locked .site{
  opacity:0!important;
  visibility:hidden!important;
}
.minimal-envelope-version .envelope-screen{
  background:#f4f0e7!important;
}

/* OPTION 3 — use the opening language approved in envelope 2 without ever
   swapping the option-3 artwork. Every stationary panel samples the exact
   same clean image shown before the click. */
.minimal-envelope-version .option3-pocket-body{
  display:none!important;
}
.minimal-envelope-version .option3-panel{
  display:block!important;
  z-index:3;
  opacity:1;
  transform:none!important;
  animation:none!important;
}
.minimal-envelope-version .option3-left-point{
  clip-path:polygon(0 0,4.3% 0,50.15% 77.3%,0 100%);
}
.minimal-envelope-version .option3-right-point{
  clip-path:polygon(95.7% 0,100% 0,100% 100%,49.85% 77.3%);
}
.minimal-envelope-version .option3-bottom-point{
  clip-path:polygon(0 100%,49.7% 76.9%,50.3% 76.9%,100% 100%);
}
.minimal-envelope-version .option3-top-piece{
  transform-origin:50% 0;
  animation:none;
}
.minimal-envelope-version .envelope.open .option3-top-piece{
  animation:option3-real-flap-open 2.72s .1s cubic-bezier(.55,0,.25,1) both;
}
.minimal-envelope-version .envelope.open .option3-top-skin{
  animation:none!important;
  transform:none!important;
}
.minimal-envelope-version .option3-seal{
  z-index:11;
  top:77.3%;
  left:50%;
  width:15.38%;
  transform:translate(-50%,-50%);
  animation:none!important;
}
.minimal-envelope-version .envelope.open .option3-seal{
  animation:option3-real-seal-rise 2.72s .1s cubic-bezier(.55,0,.25,1) both!important;
}
@keyframes option3-real-flap-open{
  0%{transform:perspective(1800px) rotateX(0deg) translate3d(0,0,0)}
  58%{transform:perspective(1800px) rotateX(76deg) translate3d(0,-3%,0)}
  100%{transform:perspective(1800px) rotateX(88deg) translate3d(0,-108%,0)}
}
@keyframes option3-real-seal-rise{
  0%{transform:translate(-50%,-50%) translate3d(0,0,0)}
  100%{transform:translate(-50%,-50%) translate3d(0,-108vh,0)}
}
@media (max-width:700px){
  @keyframes option3-real-flap-open{
    0%{transform:perspective(1300px) rotateX(0deg) translate3d(0,0,0)}
    58%{transform:perspective(1300px) rotateX(78deg) translate3d(0,-2%,0)}
    100%{transform:perspective(1300px) rotateX(88deg) translate3d(0,-108%,0)}
  }
}

/* OPTION 3 — real open-envelope state.
   The approved closed artwork stays untouched until the click. Once the flap
   rises, one transparent pocket asset supplies only the side and bottom
   pieces; the recessed paper below it is the envelope interior, not a second
   triangular flap. */
.minimal-envelope-version .option3-pocket-body{
  display:block!important;
  z-index:3;
}
.minimal-envelope-version .option3-panel{
  display:none!important;
}
.minimal-envelope-version .option3-bottom-point{
  display:none!important;
}
.minimal-envelope-version .option3-pocket-body img{
  filter:drop-shadow(0 -2px 2px rgba(105,88,68,.12));
}
.minimal-envelope-version .option3-inside-paper{
  background:#eee7dd;
}
.minimal-envelope-version .option3-inside-paper img{
  opacity:.86;
  filter:brightness(.94) saturate(.82);
}
.minimal-envelope-version .option3-inside-paper::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(180deg,rgba(118,101,81,.18) 0%,rgba(180,164,145,.09) 32%,rgba(255,255,255,0) 72%);
  pointer-events:none;
}

/* OPTION 3 — approved open composition.
   During the opening, the real invitation becomes the recessed content of
   the envelope. The transparent pocket remains in front while the upper flap
   and its seal leave the viewport completely. */
body.minimal-envelope-version.envelope-opening.locked .site{
  opacity:1!important;
  visibility:visible!important;
}
body.minimal-envelope-version.envelope-opening .envelope-screen,
body.minimal-envelope-version.envelope-opening .envelope-wrap,
body.minimal-envelope-version.envelope-opening .option3-stage{
  background:transparent!important;
}
body.minimal-envelope-version.envelope-opening .envelope-screen::before{
  opacity:0!important;
}
.minimal-envelope-version .envelope.open .option3-inside-paper{
  animation:option3-inside-reveal 3.05s 1.54s cubic-bezier(.4,0,.2,1) both;
  transition:none;
}
.minimal-envelope-version .envelope.open .option3-clean-base{
  animation:option3-clean-base-blend 3.05s 1.54s cubic-bezier(.4,0,.2,1) both!important;
}
.minimal-envelope-version .envelope.open .option3-top-piece{
  animation:option3-approved-flap-exit 3.05s 1.54s linear both!important;
}
.minimal-envelope-version .envelope.open .option3-seal{
  animation:none!important;
  transform:translate(-50%,-50%);
}
.minimal-envelope-version .envelope.open .option3-pocket-body{
  animation:option3-pocket-reveal 3.05s 1.54s cubic-bezier(.4,0,.2,1) both;
}
@keyframes option3-pocket-reveal{
  0%,40%{opacity:1;visibility:visible}
  100%{opacity:0;visibility:hidden}
}
@keyframes option3-inside-reveal{
  0%{opacity:1;visibility:visible}
  12%{opacity:.65;visibility:visible}
  28%{opacity:.15;visibility:visible}
  36%,100%{opacity:0;visibility:hidden}
}
@keyframes option3-clean-base-blend{
  0%,8%{opacity:1;visibility:visible}
  44%,100%{opacity:0;visibility:hidden}
}
@keyframes option3-approved-flap-exit{
  0%{opacity:1;transform:translate3d(0,0,0) perspective(1800px) rotateX(0deg);visibility:visible}
  15%{opacity:1;transform:translate3d(0,-2%,0) perspective(1800px) rotateX(12deg);visibility:visible}
  30%{opacity:1;transform:translate3d(0,-5%,0) perspective(1800px) rotateX(24deg);visibility:visible}
  45%{opacity:1;transform:translate3d(0,-14%,0) perspective(1800px) rotateX(46deg);visibility:visible}
  60%{opacity:1;transform:translate3d(0,-31%,0) perspective(1800px) rotateX(66deg);visibility:visible}
  75%{opacity:1;transform:translate3d(0,-55%,0) perspective(1800px) rotateX(80deg);visibility:visible}
  88%{opacity:1;transform:translate3d(0,-82%,0) perspective(1800px) rotateX(86deg);visibility:visible}
  99%{opacity:0;transform:translate3d(0,-115%,0) perspective(1800px) rotateX(88deg);visibility:visible}
  100%{opacity:0;transform:translate3d(0,-115%,0) perspective(1800px) rotateX(88deg);visibility:hidden}
}
@keyframes option3-approved-seal-exit{
  0%{opacity:1;transform:translate(-50%,-50%) translate3d(0,0,0);visibility:visible}
  99%{opacity:0;transform:translate(-50%,-50%) translate3d(0,-120vh,0);visibility:visible}
  100%{opacity:0;transform:translate(-50%,-50%) translate3d(0,-120vh,0);visibility:hidden}
}
@media (max-width:700px){
  @keyframes option3-approved-flap-exit{
    0%{opacity:1;transform:translate3d(0,0,0) perspective(1300px) rotateX(0deg);visibility:visible}
    15%{opacity:1;transform:translate3d(0,-2%,0) perspective(1300px) rotateX(12deg);visibility:visible}
    30%{opacity:1;transform:translate3d(0,-5%,0) perspective(1300px) rotateX(24deg);visibility:visible}
    45%{opacity:1;transform:translate3d(0,-13%,0) perspective(1300px) rotateX(48deg);visibility:visible}
    60%{opacity:1;transform:translate3d(0,-30%,0) perspective(1300px) rotateX(68deg);visibility:visible}
    75%{opacity:1;transform:translate3d(0,-55%,0) perspective(1300px) rotateX(81deg);visibility:visible}
    88%{opacity:1;transform:translate3d(0,-82%,0) perspective(1300px) rotateX(86deg);visibility:visible}
    99%{opacity:0;transform:translate3d(0,-115%,0) perspective(1300px) rotateX(88deg);visibility:visible}
    100%{opacity:0;transform:translate3d(0,-115%,0) perspective(1300px) rotateX(88deg);visibility:hidden}
  }
}
@media (prefers-reduced-motion:reduce){
  .minimal-envelope-version .envelope.open .option3-pocket-body{
    animation:none;
    opacity:0;
    visibility:hidden;
  }
}

/* Mobile landscape: keep the complete curved opening prompt inside view. */
@media (max-height:560px) and (orientation:landscape){
  .minimal-envelope-version .envelope-wrap>.tap-arc{
    top:85%!important;
    bottom:auto!important;
    width:min(78vw,410px);
    transform:translate(-50%,-43.64%);
  }
  .minimal-envelope-version .tap-arc text{
    font-size:9.6px;
    letter-spacing:2.5px;
  }
}

/* Mobile landscape hero: remove the upper monogram, lift the motto and names,
   and keep the date anchored in its original bottom row. */
@media (max-height:560px) and (orientation:landscape){
  .hero-copy{padding:.55rem 1rem 1.2rem}
  .floating-audio-control .music{
    width:46px;
    height:46px;
  }
  .vinyl-art{
    width:39px;
    height:39px;
  }
  .hero-monogram{
    display:none;
  }
  .hero-title-block{
    grid-row:1;
    align-self:start;
    top:2.5rem;
    margin-top:0;
  }
  .hero-date{
    grid-row:3;
    top:0;
  }
}

/* Mobile landscape story: preserve the desktop two-column composition. */
@media (max-height:560px) and (orientation:landscape){
  .story{
    width:min(88vw,880px);
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    align-items:start;
    gap:clamp(.75rem,2.2vw,1.3rem);
    margin-inline:auto;
    padding:clamp(1rem,3vw,1.75rem) 0;
  }
  .story-copy{
    width:100%;
    max-width:none;
    margin:0;
    padding:clamp(1.5rem,4vw,2.35rem) clamp(.9rem,2.4vw,1.45rem);
  }
  .story-copy .story-frame{
    inset:-6% -16%;
    width:132%;
    height:112%;
    max-width:none;
    object-fit:fill;
  }
  .story-copy::before{
    content:"";
    position:absolute;
    inset:2% 1%;
    z-index:0;
    background:rgba(255,255,255,.46);
    backdrop-filter:blur(.2px);
  }
  .story-copy > .story-watermark{
    position:absolute;
    z-index:1;
    left:50%;
    top:50%;
    display:block;
    width:60%;
    aspect-ratio:1;
    overflow:hidden;
    opacity:.12;
    transform:translate(-50%,-50%);
    pointer-events:none;
  }
  .story-watermark img{
    position:absolute;
    left:50%;
    top:50%;
    display:block;
    width:100%;
    max-width:none;
    height:auto;
    filter:brightness(0) saturate(100%) invert(47%) sepia(8%) saturate(649%) hue-rotate(39deg) brightness(96%) contrast(88%);
    transform:translate(-50%,-50%);
  }
  .story-copy > .story-prose,
  .story-copy > .signature{z-index:2}
  .story-prose{gap:clamp(.55rem,1.4vw,.8rem)}
  .story-copy .story-prose p{
    font-size:clamp(.72rem,1.45vw,.9rem);
    line-height:1.45;
  }
  .story-copy .signature{
    margin-top:clamp(.75rem,2vw,1.1rem);
    font-size:clamp(1.8rem,4vw,2.35rem);
  }
  .story-photo{
    width:min(90%,220px);
    margin:0 auto;
    align-self:center;
  }
  .story-photo-art{
    width:100%;
    height:auto;
    aspect-ratio:2 / 3;
  }
  .story-photo .story-verse{
    gap:.3rem;
    padding-top:.55rem;
  }
  .story-verse .verse-reference{font-size:.5rem}
  .story-verse .verse-text{font-size:clamp(.72rem,1.4vw,.88rem)}
}

/* Mobile landscape countdown: preserve the composition at a lighter scale. */
@media (max-height:560px) and (orientation:landscape){
  .countdown{
    padding:3.3rem 1rem 1.8rem;
  }
  .countdown-botanical-left{width:min(25vw,365px)}
  .countdown-botanical-right{width:min(22vw,330px)}
  .wedding-calendar{
    width:min(78vw,324px);
    margin-bottom:1.6rem;
    padding:3rem 1.25rem 1.2rem;
    border-radius:22px;
  }
  .wedding-calendar::before{
    inset:6px;
    border-radius:16px;
  }
  .calendar-seal{
    width:74px;
    height:74px;
  }
  .calendar-heading{margin-bottom:.75rem}
  .calendar-heading span{font-size:3.15rem}
  .calendar-heading small{
    margin-top:.5rem;
    font-size:.46rem;
  }
  .wedding-calendar th{
    padding-bottom:.4rem;
    font-size:.4rem;
  }
  .wedding-calendar td{
    height:25px;
    font-size:.6rem;
  }
  .wedding-day{
    width:41px;
    height:39px;
  }
  .count-grid{
    max-width:540px;
    margin:.8rem auto 1rem;
  }
  .count-grid strong{font-size:clamp(1.9rem,4.2vw,2.9rem)}
}

/* One botanical title divider throughout the invitation. */
.unified-title-rule{
  position:static;
  display:block;
  width:min(92%,440px);
  height:38px;
  margin:.2rem auto .8rem;
  overflow:visible;
  object-fit:cover;
  object-position:center;
  opacity:1;
  background:none;
  transform:none;
}
.unified-title-rule::after{content:none}

@media (max-width:900px) and (orientation:landscape){
  .unified-title-rule{
    width:min(92%,265px);
    height:24px;
    margin:.05rem auto .45rem;
  }
}

@media (max-width:560px){
  .unified-title-rule{
    height:34px;
    margin:.1rem auto .7rem;
  }
}

/* Mobile landscape footer: a quieter, more compact closing gesture. */
@media (max-height:560px) and (orientation:landscape){
  footer{
    padding:1.4rem 1rem 1.6rem;
  }
  .footer-seal{
    width:96px;
    margin:0 auto .55rem;
  }
  footer>p:not(.footer-date){
    margin:.35rem 0;
  }
  footer .gold-rule{
    width:40px;
    margin:.75rem auto;
  }
  .footer-date{
    margin:.35rem 0 0;
  }
}

/* Keep the requested audio playback indicator active over the global motion reset. */
@media (prefers-reduced-motion:reduce){
  .music[aria-pressed="true"] .vinyl-record-art{
    animation-duration:2.8s!important;
    animation-iteration-count:infinite!important;
  }
  .music[aria-pressed="true"] .floating-note{
    animation-duration:1.9s!important;
    animation-iteration-count:infinite!important;
  }
}

/* Keep the notification panel fully hidden until there is an active message. */
.toast{visibility:hidden;pointer-events:none}
.toast.show{visibility:visible}

/* Avoid filtered transparent-image compositing artifacts after rotation in iOS Safari. */
@supports (-webkit-touch-callout:none){
  .hero-names{filter:none;transform:none}
  .site.hero-ready .hero-names{
    animation-name:hero-names-write-ios;
    filter:none;
  }
  @keyframes hero-names-write-ios{
    0%{opacity:0;clip-path:inset(0 100% 0 0)}
    45%{opacity:1}
    100%{opacity:1;clip-path:none}
  }
}

/* Inline trial RSVP: simple fields within the existing invitation. */
.attendance-inline[hidden],#attendance-form[hidden]{display:none}
.attendance-inline{margin:2rem auto 0;padding-top:1.5rem;border-top:1px solid var(--line);text-align:left;width:100%;max-width:600px;scroll-margin-top:1rem}
.attendance-inline h3{font-family:var(--serif);font-size:2rem;font-weight:400;text-align:center;margin:.5rem 0}
.attendance-inline p{font-size:1rem;line-height:1.5;max-width:none}
.attendance-inline .attendance-demo{font-family:var(--sans);font-size:.68rem;color:var(--sage-dark);text-align:center}
.attendance-inline label,.attendance-inline legend{font-family:var(--sans);font-size:.85rem;letter-spacing:0}
.attendance-inline input[type="search"],.attendance-inline input[readonly]{display:block;width:100%;min-height:46px;padding:.8rem 1rem;border:1px solid var(--line);border-radius:14px;background:#fff;color:var(--ink);font-family:var(--sans);font-size:16px;margin:.5rem 0}
.attendance-inline small{font-family:var(--sans);font-size:.7rem;line-height:1.6;display:block;color:var(--muted)}
.attendance-inline fieldset{border:0;padding:0;margin:1.8rem 0}
.attendance-inline fieldset p{margin:1rem 0 .5rem}
.attendance-choices{display:flex;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff}
.attendance-choices label{flex:1;position:relative;cursor:pointer;text-align:center}
.attendance-choices label+label{border-left:1px solid var(--line)}
.attendance-choices input{position:absolute;opacity:0;width:100%;height:100%;inset:0;margin:0;cursor:pointer}
.attendance-choices span{display:block;padding:.9rem}
.attendance-choices input:checked+span{background:var(--sage-dark);color:white}
.attendance-choices input:focus-visible+span{outline:2px solid var(--gold);outline-offset:-3px}
.attendance-submit,.attendance-result{width:100%;border:1px solid var(--line);border-radius:14px;padding:.9rem 1rem;font-family:var(--sans);font-size:.9rem;cursor:pointer}
.attendance-submit{background:var(--sage-dark);color:white}
.attendance-submit:disabled{opacity:.6;cursor:wait}
.attendance-result{background:#fff;margin:.4rem 0;text-align:left}
#attendance-status{color:var(--sage-dark)}

/* Camera-only instant memories, isolated from the invitation layout. */
.memory-camera[hidden],.memory-camera [hidden]{display:none!important}
body.camera-open{overflow:hidden!important}
body.camera-open .orientation-gate{display:none!important}
.memory-camera{position:fixed;inset:0;z-index:1100;overflow:auto;overscroll-behavior:contain;background:#f4f0e7 url('assets/option3-inner-paper.png') center/cover;padding:max(1rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(1rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left))}
.camera-sheet{position:relative;width:min(100%,620px);margin:auto;text-align:center;color:var(--ink);padding:1.5rem 0}
.camera-close{position:absolute;right:0;top:0;border:1px solid var(--line);border-radius:50%;width:42px;height:42px;background:transparent;font-size:1.7rem;cursor:pointer}
.camera-sheet h2{font-family:Italianno,var(--serif);font-size:clamp(2.6rem,8vw,4.5rem);font-weight:400;margin:1rem 1.7rem .2rem;line-height:1.1}
.camera-sheet>p{line-height:1.5;margin:.5rem 0 1rem}
.camera-live{background:#faf7f0;padding:clamp(12px,4vw,26px);box-shadow:0 5px 20px #332b1d26;border:1px solid #d8d0be;border-radius:5px}
.camera-viewfinder{position:relative;aspect-ratio:864/920;background:#e6e2d8;overflow:hidden}
.camera-viewfinder video{width:100%;height:100%;object-fit:cover;display:block}
.camera-viewfinder video.is-selfie{transform:scaleX(-1)}
#camera-placeholder{position:absolute;inset:0;display:grid;place-items:center;color:var(--sage-dark);font-style:italic;pointer-events:none;margin:0}
.camera-caption{font-family:var(--serif);font-size:1.15rem;margin:1rem 0 .4rem;letter-spacing:.06em}
.camera-result{width:100%;height:auto;box-shadow:0 5px 20px #332b1d26}
.camera-status{min-height:1.5em;font-family:var(--sans);font-size:.8rem}
.camera-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.7rem}
.camera-actions button{border:1px solid var(--gold);border-radius:28px;padding:.85rem 1.2rem;min-height:46px;background:transparent;cursor:pointer}
#camera-start,#camera-capture,#camera-save{background:var(--sage-dark);color:white;border-color:var(--sage-dark)}
.camera-actions button:disabled{opacity:.5;cursor:wait}
.camera-sheet .camera-privacy,.camera-sheet .camera-test-label{font-family:var(--sans);font-size:.68rem;color:var(--sage-dark)}
@media (orientation:landscape) and (max-height:560px){.camera-sheet{max-width:460px}.camera-live,.camera-result{max-width:320px;margin:0 auto}.camera-sheet h2{font-size:3rem}}

/* Optional home-screen installation appears only in the portrait orientation gate. */
.install-invitation[hidden],.install-help[hidden]{display:none!important}
.install-invitation{margin:.8rem auto 0;width:100%;max-width:330px}
#install-button{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-height:48px;border:1px solid var(--gold);border-radius:28px;background:transparent;padding:.35rem 1rem .35rem .45rem;font-family:var(--sans);font-size:.85rem;cursor:pointer;color:var(--sage-dark)}
#install-button img{width:38px;height:38px;object-fit:contain}
.orientation-gate .install-caption{font-size:.85rem;line-height:1.4;margin:.65rem 0 0}
.install-help{border-top:1px solid var(--line);margin-top:1rem;padding-top:.7rem;text-align:left}
.orientation-gate .install-help p{font-size:.9rem;line-height:1.5;margin:.4rem 0}
.orientation-gate .install-help .install-temporary{font-size:.72rem;color:var(--muted)}
#install-help-close{display:block;margin:.7rem auto 0;border:1px solid var(--gold);border-radius:20px;background:transparent;padding:.45rem 1rem;cursor:pointer;font-size:.85rem}
#install-status{font-family:var(--sans);font-size:.75rem;line-height:1.5}
@media (max-width:700px) and (orientation:portrait){
  .orientation-gate{overflow-y:auto;touch-action:pan-y}
  .orientation-gate-inner{margin:auto}
}

/* Keep camera availability messages above the guest guide. */
body.guest-guide-open .toast{z-index:210}
