@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(assets/font-0.ttf) format('truetype');
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url(assets/font-1.ttf) format('truetype');
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/font-2.ttf) format('truetype');
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(assets/font-3.ttf) format('truetype');
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(assets/font-4.ttf) format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/font-5.ttf) format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(assets/font-6.ttf) format('truetype');
}
@font-face {
  font-family: 'Pinyon Script';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/font-7.ttf) format('truetype');
}

:root {
  --ivory:#f7f2e7; --paper:#fcf8ee; --green:#243d31; --olive:#53604b;
  --brown:#3e302c; --brown-soft:#695047; --blue:#546f88; --blue-deep:#334d63;
  --gold:#8b6c35; --gold-light:#c5a96a; --ink:#352d29; --muted:#625c52;
  --serif:'Cormorant Garamond',Georgia,serif; --sans:'DM Sans',Arial,sans-serif;
  --script:'Great Vibes','Pinyon Script',cursive; --letter:'Italianno','Great Vibes',cursive;
  --seal-size:clamp(112px,12vw,156px); --flap-tip:60%;
}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}
body{margin:0;background:var(--brown);color:var(--ink);font-family:var(--serif);font-size:18px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:clip}
html.js body:not(.is-open){overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit}button,a{touch-action:manipulation}a{color:inherit;text-underline-offset:5px}button:focus-visible,a:focus-visible{outline:3px solid var(--blue);outline-offset:6px}img{display:block;max-width:100%;height:auto}p,h1,h2,figure{margin:0}button{cursor:pointer}button:disabled{cursor:default}
.eyebrow{font-family:var(--sans);font-size:.875rem;font-weight:500;line-height:1.8;letter-spacing:.16em;text-transform:uppercase}
.arabic{font-family:'Noto Naskh Arabic','Amiri','Traditional Arabic',Georgia,serif;font-size:1.65rem;line-height:1.65;letter-spacing:0}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.skip-link{position:fixed;top:12px;left:12px;z-index:100;padding:12px 18px;background:var(--paper);transform:translateY(-180%);font:14px var(--sans)}.skip-link:focus{transform:none}
.small-monogram{font-size:1.9rem;line-height:1;letter-spacing:-.05em;font-weight:600;text-decoration:none;white-space:nowrap}.small-monogram span{margin:0 .18em;font-size:.7em;font-style:italic;color:var(--gold-light)}
.quiet-button{font:500 .875rem/1.5 var(--sans);background:none;color:inherit;border:0;border-bottom:1px solid currentColor;padding:10px 0;min-height:44px}

/* A single, fixed coordinate system keeps the envelope and its seal aligned. */
.envelope-screen{display:none;position:fixed;inset:0;z-index:50;isolation:isolate;background:var(--ivory);overflow:hidden;perspective:1600px}
.js .envelope-screen{display:block}.envelope-screen[hidden]{display:none!important}
.envelope-journey{position:absolute;inset:0;transform-origin:50% 42%;isolation:isolate;perspective:1600px;perspective-origin:50% 35%}
.envelope-lining{position:absolute;inset:0;z-index:0;background:var(--green);box-shadow:inset 0 0 100px #091e1755}
.envelope-lining::after{content:'';position:absolute;inset:3.5%;border:1px solid var(--gold-light);outline:5px solid #546f882e;outline-offset:7px}
.envelope-pocket,.envelope-flap,.envelope-flap>img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:fill;pointer-events:none;user-select:none}
.envelope-pocket{z-index:3;clip-path:polygon(0 0,50% var(--flap-tip),100% 0,100% 100%,0 100%)}
.envelope-flap{z-index:4;transform-origin:50% 0;backface-visibility:hidden;will-change:transform;clip-path:polygon(0 0,100% 0,50% var(--flap-tip));transition:transform 1.05s cubic-bezier(.3,.05,.2,1) .14s}
.envelope-flap>img{object-fit:fill}
.envelope-pocket,.envelope-flap{top:-25%;height:125%}
/* The source tip is at 60%. This crop places it at the viewport's exact centre. */
.lace-sleeve{position:absolute;top:0;bottom:0;z-index:5;width:clamp(90px,13vw,210px);pointer-events:none;background-color:var(--green);background-image:url('assets/lace-frame.png');background-size:680% auto;background-position:left center;border-right:2px solid var(--gold-light);box-shadow:4px 0 0 var(--brown),7px 0 0 #b79a6266}
.lace-sleeve-left{left:-18px}.lace-sleeve-right{right:-18px;transform:scaleX(-1);background-color:var(--brown)}
.envelope-flowers{position:absolute;z-index:7;width:clamp(270px,40vw,620px);max-width:none;height:auto;bottom:-11%;pointer-events:none;user-select:none}
.envelope-flowers-left{left:-11%;transform:rotate(5deg)}.envelope-flowers-right{right:-11%;transform:scaleX(-1) rotate(5deg)}
.envelope-sprig{position:absolute;z-index:6;top:-20%;right:-9%;width:clamp(200px,27vw,410px);max-width:none;transform:rotate(174deg);opacity:.9;pointer-events:none}
.cover-copy{position:absolute;z-index:8;top:9%;left:15%;right:15%;text-align:center;pointer-events:none;transition:opacity .35s ease,transform .6s ease}
.cover-copy>.eyebrow{color:var(--blue-deep);letter-spacing:.22em}
.cover-title{font:600 clamp(3.4rem,7.4vw,6.2rem)/1.1 var(--script);display:flex;align-items:center;justify-content:center;gap:.16em;margin-top:15px;color:var(--brown);-webkit-text-stroke:.12px currentColor}
.cover-title em{font:400 .65em var(--letter);color:var(--gold)}
.seal-button{position:absolute;left:50%;top:50%;z-index:12;width:var(--seal-size);height:var(--seal-size);padding:0;transform:translate(-50%,-50%);border:0;border-radius:50%;background:transparent;filter:drop-shadow(0 6px 4px #34271c55);transition:opacity .28s,transform .42s cubic-bezier(.2,.6,.2,1);isolation:isolate}
.seal-art{display:block;position:absolute;inset:0;border-radius:50%;background-image:url('og.webp');background-size:715% auto;background-position:50.5% 52%;pointer-events:none}
.seal-button::after{content:'';position:absolute;inset:-11px;border:1px solid #95753888;border-radius:50%;opacity:.35;transition:opacity .25s}
@media(hover:hover){.seal-button:hover{transform:translate(-50%,-50%) scale(1.05)}.seal-button:hover::after{opacity:.85}}
.seal-button:focus-visible{outline:3px solid var(--blue-deep);outline-offset:16px}
.seal-hint{position:absolute;top:calc(50% + var(--seal-size)/2 + 28px);left:17%;right:17%;z-index:12;text-align:center;font:500 .875rem/1.6 var(--sans);color:var(--brown);letter-spacing:.035em;pointer-events:none;transition:opacity .25s}
.cover-footer{position:absolute;bottom:11%;left:20%;right:20%;z-index:9;text-align:center;pointer-events:none;transition:opacity .3s}
.cover-footer .arabic{color:var(--blue-deep);margin-bottom:9px}.cover-footer .eyebrow{color:var(--brown);letter-spacing:.18em}
.rising-letter{position:absolute;z-index:2;left:50%;top:34%;width:min(650px,70%);height:64%;min-height:280px;background:var(--paper);box-shadow:0 0 30px #121e1970;border:9px solid var(--blue-deep);outline:1px solid var(--gold-light);outline-offset:-14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:34px 20px;transform:translate(-50%,44%) scale(.88);opacity:0;transition:transform 1.45s cubic-bezier(.22,.61,.21,1) .65s,opacity .25s .7s;will-change:transform}
.letter-lace{position:absolute;inset:0;pointer-events:none;border:44px solid transparent;border-image:url('assets/lace-frame.png') 180 / 44px round}
.rising-eyebrow{color:var(--green)}.rising-names{font:500 clamp(2.4rem,6vw,4.9rem)/1.5 var(--script);color:var(--brown)}.rising-names i{color:var(--gold);font-family:var(--letter)}.rising-date{font-size:clamp(1.4rem,3vw,2.1rem);color:var(--green)}.rising-arabic{font-size:1.8rem;color:var(--blue)}
.opening .seal-button{opacity:0;transform:translate(-50%,-30%) scale(1.12) rotate(8deg);pointer-events:none}
.opening .seal-hint,.opening .cover-copy,.opening .cover-footer{opacity:0}.opening .cover-copy{transform:translateY(-20px)}
.opening .envelope-flap{transform:rotateX(168deg)}
.opening .rising-letter{opacity:1;transform:translate(-50%,-42%) scale(1)}
.drawing-in .envelope-journey{transform:scale(1.2) translateY(2%);transition:transform 1.15s cubic-bezier(.45,0,.2,1)}
.envelope-screen.is-dismissed{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .8s ease,visibility .8s}

/* Individual pieces of a vintage stationery suite rise into view. */
.invitation{position:relative;padding:0 clamp(12px,4vw,50px);background:radial-gradient(ellipse at 92% 18%,#526b7959,transparent 34%),linear-gradient(140deg,#2f352b,var(--brown) 41%,#302d2b 70%,#273b30);overflow:clip}
.js .invitation{visibility:hidden}.js .invitation.is-visible{visibility:visible}
.page-topbar{min-height:90px;max-width:960px;margin:auto;display:flex;align-items:center;justify-content:space-between;color:var(--ivory)}
.stationery-suite{width:min(100%,960px);margin:auto;position:relative}
.paper-card{position:relative;isolation:isolate;background:var(--paper);text-align:center;border:1px solid var(--gold-light);box-shadow:0 15px 40px #110c0938,8px 8px 0 var(--blue-deep),9px 9px 0 var(--gold-light);border-radius:1px}
.paper-card::before{content:'';position:absolute;inset:20px;border:1px solid #9e804255;pointer-events:none;z-index:1}
.card-lace{position:absolute;inset:-10px;z-index:3;border:64px solid transparent;border-image:url('assets/lace-frame.png') 180 / 64px 67px round;pointer-events:none}
.hero-card{padding:74px clamp(46px,11vw,146px) 75px;overflow:hidden;background-color:var(--paper)}
.hero-card::after{content:'';position:absolute;inset:0;border:12px solid var(--green);pointer-events:none;z-index:2}
.hero-content{position:relative;z-index:4}
.card-flowers{position:absolute;pointer-events:none;z-index:2;width:clamp(230px,33vw,360px);max-width:none;bottom:16%;opacity:.96}
.hero-flowers-left{left:-14%;transform:rotate(8deg)}.hero-flowers-right{right:-14%;transform:scaleX(-1) rotate(8deg)}
.arabic-dedication{color:var(--blue);margin-bottom:8px}.hero-kicker{color:var(--green);letter-spacing:.19em}
.invitation-title{font:600 clamp(5.2rem,13vw,9rem)/1.12 var(--script);display:flex;align-items:center;flex-direction:column;margin:30px -15px 20px;color:var(--brown);-webkit-text-stroke:.14px currentColor}
.invitation-title em{font:500 .3em/1.15 var(--letter);color:var(--gold);margin:4px 0}.invitation-title:focus{outline:none}
.marrying{font:500 1.3rem/1.5 var(--serif);color:var(--green);max-width:27ch;margin:auto}
.fine-divider{display:flex;align-items:center;justify-content:center;gap:14px;width:min(170px,65%);margin:29px auto}.fine-divider span{height:1px;flex:1;background:var(--gold-light)}.fine-divider i{width:7px;height:7px;border:1px solid var(--gold);transform:rotate(45deg)}
.date-card{position:relative;margin:0 auto 32px;padding:27px 16px 29px;background:#f3ebdc;border:1px solid var(--gold-light);box-shadow:6px 6px 0 #546f8833;max-width:460px}
.date-card::after{content:'';position:absolute;inset:6px;border:1px solid #96794144;pointer-events:none}.date-card>.eyebrow{color:var(--blue-deep)}
.wedding-date{font-size:clamp(2.4rem,5.6vw,3.8rem);font-weight:500;line-height:1.4;color:var(--brown);margin:6px 0 14px;white-space:nowrap}
.hero-venue{font-size:1.65rem;line-height:1.3;font-weight:600;color:var(--green)}.location-label{font:500 .875rem/1.7 var(--sans);letter-spacing:.025em;color:var(--muted);margin-top:7px}
.countdown{margin:36px auto 27px;max-width:420px}.countdown-kicker{font:500 1.85rem/1.4 var(--letter);color:var(--brown);margin-bottom:16px;-webkit-text-stroke:.1px currentColor}
.countdown-numbers{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.countdown-numbers>div{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 4px 8px;background:linear-gradient(#fffaf0 0 49%,#e0d6c3 50%,#f0e7d7 52%);border:1px solid var(--gold-light);box-shadow:0 4px 0 var(--brown),0 5px 0 var(--gold-light)}
.countdown-numbers>div::before,.countdown-numbers>div::after{content:'';position:absolute;top:39%;width:3px;height:10px;background:var(--gold)}.countdown-numbers>div::before{left:-2px}.countdown-numbers>div::after{right:-2px}
.countdown-numbers span{font-size:2.75rem;line-height:1.15;font-weight:600;color:var(--green);font-variant-numeric:tabular-nums;font-feature-settings:'tnum';min-width:2ch}
.countdown-numbers small{font:500 .75rem/1.3 var(--sans);color:var(--brown);white-space:nowrap}
html:not(.js) .countdown-numbers{display:none}
.invitation-links{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px 23px;margin-top:35px;color:var(--blue-deep)}.invitation-links a{font:500 .875rem/1.5 var(--sans);padding:10px 0;min-height:44px}.invitation-links>span{color:var(--gold)}
.story-section{padding:87px 0 0;scroll-margin-top:30px}.section-heading{position:relative;text-align:center;color:var(--ivory);padding:0 14px}.section-heading .eyebrow{color:#dbd5c5;letter-spacing:.1em}.section-title{font:600 clamp(3rem,7vw,4.8rem)/1.35 var(--script);margin:17px 0 30px;-webkit-text-stroke:.12px currentColor}.section-heading .section-title{color:var(--ivory)}
.photo-album{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:clamp(28px,6vw,68px);padding:26px 42px 84px;max-width:850px;margin:0 auto}
.photo-wrap{position:relative;min-width:0;z-index:2}.memory-photo{position:relative;padding:9px;background:var(--blue-deep);border:1px solid var(--gold-light);box-shadow:0 15px 35px #120d0966}.memory-photo-first{transform:rotate(-4deg)}.memory-photo-second{transform:rotate(4deg) translateY(30px);background:var(--green)}.memory-photo>img{width:100%;height:auto}
.photo-lace{position:absolute;inset:-16px;border:37px solid transparent;border-image:url('assets/lace-frame.png') 180 / 37px round;z-index:2;pointer-events:none}.memory-photo figcaption{position:absolute;left:8px;right:8px;bottom:4%;text-align:center;color:var(--brown);font:500 clamp(1.35rem,3vw,2.2rem)/1.4 var(--letter)}.memory-photo figcaption [lang=ar]{font-family:'Traditional Arabic',Georgia,serif;font-size:.72em}
.album-flowers{position:absolute;z-index:3;pointer-events:none;max-width:none;width:260px;right:-64px;bottom:-8px;transform:scaleX(-1) rotate(-14deg)}
.story-card{margin:13px 0 75px;box-shadow:0 15px 40px #110c0938,-8px 8px 0 var(--olive),-9px 9px 0 var(--gold-light);overflow:hidden;background:#f5eedf}
.story-letter{position:relative;z-index:4;max-width:700px;margin:auto;padding:65px clamp(40px,8vw,88px) 90px;text-align:left}.letter-location{text-align:center;color:var(--blue-deep);font-size:.8rem;margin-bottom:24px}.story-opening{text-align:center;font-weight:500;font-size:1.5rem;line-height:1.5;margin-bottom:34px!important;color:var(--green)}.story-opening em{font:500 2.95rem/1.35 var(--letter)}
.story-letter>p{margin-bottom:23px}.story-letter>p:not(.story-opening):not(.story-signature):not(.letter-location){font-size:1.28rem;line-height:1.85;font-weight:500;color:var(--ink)}
.maktoub{display:inline-block;white-space:nowrap;color:var(--blue-deep)}.maktoub [lang=ar]{font-family:'Traditional Arabic',Georgia,serif;font-size:1.2em;margin:0 4px}.story-signature{font:500 2.45rem/1.35 var(--letter);text-align:center;color:var(--green);margin:36px -5px 0!important;-webkit-text-stroke:.1px currentColor}
.story-flowers{position:absolute;right:-40px;bottom:-100px;width:260px;max-width:none;transform:scaleX(-1);z-index:2;pointer-events:none;opacity:.7}
.venue-card{padding:64px 62px 65px;scroll-margin-top:35px;overflow:hidden}.venue-card>.eyebrow{color:var(--blue-deep);position:relative;z-index:4}.venue-card>.section-title{position:relative;z-index:4;color:var(--green)}.venue-figure{position:relative;margin:0 -20px;z-index:2}.venue-figure>img{width:100%;height:auto;filter:saturate(.6) contrast(1.04);mix-blend-mode:multiply}.venue-figure figcaption{font:500 .8rem/1.6 var(--sans);color:var(--blue-deep);letter-spacing:.1em;text-transform:uppercase;margin-top:13px}
.venue-note{position:relative;z-index:4;font:500 2.2rem/1.4 var(--letter);color:var(--brown);margin:28px 0 20px}.venue-address{position:relative;z-index:4;font:500 .875rem/1.9 var(--sans);font-style:normal;color:var(--muted)}.outline-link{position:relative;z-index:4;display:inline-flex;align-items:center;justify-content:center;min-height:48px;background:var(--green);border:1px solid var(--gold-light);color:var(--ivory);padding:12px 24px;margin-top:24px;text-decoration:none;font:500 .875rem/1.4 var(--sans);box-shadow:4px 4px 0 #546f8840;transition:background .25s}.outline-link:hover{background:var(--blue-deep)}
.closing{position:relative;text-align:center;padding:80px 25px 30px;color:var(--ivory)}.closing>.eyebrow{color:#d7c8a4}.closing>.section-title{font-size:clamp(3rem,7vw,4.4rem)}.closing-note{font-size:1.2rem;font-weight:500;line-height:1.7;color:#e9e0ce;position:relative;z-index:2}.signature{font:500 clamp(3rem,7.6vw,5rem)/1.5 var(--script);margin:30px 0 15px;color:var(--ivory);position:relative;z-index:2}.closing-date{font-size:.8rem;color:#d7c8a4}.replay-button{margin-top:30px;color:var(--ivory);position:relative;z-index:3}.closing-flowers{position:absolute;left:-200px;bottom:-55px;width:370px;max-width:none;transform:rotate(14deg);opacity:.75;pointer-events:none}
.page-footer{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:23px;text-align:center;max-width:600px;margin:auto;padding:35px 15px 110px;color:var(--ivory)}.photo-credit{font:400 .75rem/1.7 var(--sans);color:#d6cdbf;max-width:38ch;text-decoration-color:#c5a96a66}
.music-toggle{display:none;position:fixed;z-index:70;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));align-items:center;gap:9px;padding:10px 15px;min-height:46px;border:1px solid var(--gold-light);border-radius:3px;background:#f7f2e7f5;color:var(--brown);box-shadow:3px 3px 0 #334d6355;font:500 .875rem/1.4 var(--sans)}.js .music-toggle{display:flex}.music-toggle>span:first-child{font-size:1.25rem;color:var(--gold)}.music-toggle[aria-pressed=false]{color:var(--muted)}
.js .reveal{opacity:0;transform:translate3d(0,42px,0);transition:opacity .9s ease var(--reveal-delay,0ms),transform 1.2s cubic-bezier(.16,.7,.23,1) var(--reveal-delay,0ms)}.js .reveal.is-revealed{opacity:1;transform:translate3d(0,0,0)}
.invitation.arriving .hero-card{animation:paper-arrive 1.2s cubic-bezier(.17,.67,.23,1) both}
@keyframes paper-arrive{from{opacity:.35;transform:translate3d(0,55px,0) scale(.97)}to{opacity:1;transform:translate3d(0,0,0) scale(1)}}

@media(min-width:1100px){.cover-title{margin-top:18px}.cover-copy{top:13%}.envelope-flowers{bottom:-25%;width:530px}.cover-footer{bottom:10%}.rising-letter{height:78%;top:24%;width:650px}}
@media(max-width:700px){
  :root{--seal-size:118px}
  .cover-copy{top:9%;left:18%;right:18%}.cover-copy>.eyebrow{font-size:.8rem;letter-spacing:.15em}
  .cover-title{flex-direction:column;gap:0;font-size:clamp(3.2rem,14vw,5.5rem);line-height:1.05;margin-top:15px}.cover-title em{font-size:.44em;line-height:1.25}
  .lace-sleeve{width:86px}.lace-sleeve-left{left:-27px}.lace-sleeve-right{right:-27px}
  .envelope-flowers{width:340px;bottom:-9%}.envelope-flowers-left{left:-151px}.envelope-flowers-right{right:-151px}
  .envelope-sprig{width:250px;right:-133px;top:-10%;opacity:.85}.cover-footer{bottom:12%;left:22%;right:22%}.cover-footer .arabic{font-size:1.6rem}.cover-footer .eyebrow{font-size:.8rem;letter-spacing:.1em}
  .seal-hint{font-size:.8125rem;left:16%;right:16%;top:calc(50% + 86px)}
  .rising-letter{width:78%;height:63%;top:36%;padding:30px 18px;gap:10px;border-width:7px}.rising-names{font-size:clamp(2.5rem,8vw,4rem);max-width:6ch;line-height:1.3}.rising-names i{display:block;font-size:.6em;line-height:1}.rising-date{font-size:1.5rem}.rising-eyebrow{font-size:.75rem}.letter-lace{border-image-width:31px}
  .page-topbar{min-height:74px;padding:0 8px}.small-monogram{font-size:1.65rem}.quiet-button{font-size:.8125rem}
  .hero-card{padding:55px 36px 52px}.hero-card::after{border-width:7px}.paper-card::before{inset:14px}.card-lace{inset:-8px;border-image-width:46px 41px}
  .card-flowers{width:210px;bottom:24%;opacity:.88}.hero-flowers-left{left:-108px}.hero-flowers-right{right:-108px}
  .hero-kicker{font-size:.8rem;letter-spacing:.1em}.arabic-dedication{font-size:1.5rem}
  .invitation-title{font-size:clamp(5rem,22vw,8rem);line-height:1.13;margin:24px -14px 22px}.invitation-title em{font-size:.29em;line-height:1.2}
  .marrying{font-size:1.2rem;max-width:23ch}.fine-divider{margin:24px auto}.date-card{padding:25px 8px 23px;box-shadow:4px 4px 0 #546f8833;margin-bottom:26px}.date-card>.eyebrow{font-size:.8rem;letter-spacing:.09em}.wedding-date{font-size:clamp(1.9rem,8.1vw,3.1rem);margin:8px 0 13px}.hero-venue{font-size:1.45rem}.location-label{font-size:.8rem;letter-spacing:0}
  .countdown{margin-top:29px}.countdown-kicker{font-size:1.55rem;line-height:1.4}.countdown-numbers{gap:7px}.countdown-numbers>div{padding:9px 2px 7px;gap:5px}.countdown-numbers span{font-size:clamp(1.75rem,7vw,2.5rem)}.countdown-numbers small{font-size:.6875rem;letter-spacing:0}
  .invitation-links{gap:10px 15px;margin-top:29px}.invitation-links a{font-size:.8125rem}
  .story-section{padding-top:63px}.section-heading{padding:0 6px}.section-heading .eyebrow{font-size:.75rem;letter-spacing:.055em}.section-title{font-size:clamp(2.7rem,10.5vw,3.8rem);line-height:1.3;margin:17px -5px 25px}
  .photo-album{grid-template-columns:minmax(0,1fr);gap:45px;max-width:380px;padding:19px 37px 55px}.memory-photo{padding:7px}.memory-photo-first{transform:rotate(-3deg)}.memory-photo-second{transform:rotate(3deg)}.memory-photo figcaption{font-size:clamp(1.45rem,7vw,2rem)}.photo-lace{inset:-12px;border-image-width:30px}.album-flowers{width:205px;right:-83px;bottom:-12px}
  .story-card{margin:8px 0 63px}.story-letter{padding:51px 31px 74px}.letter-location{font-size:.75rem;letter-spacing:.1em}.story-opening{font-size:1.4rem}.story-opening em{font-size:2.5rem}.story-letter>p:not(.story-opening):not(.story-signature):not(.letter-location){font-size:1.15rem;line-height:1.85}.story-letter>p{margin-bottom:21px}.story-signature{font-size:2.1rem}.story-flowers{width:200px;bottom:-86px;right:-73px;opacity:.6}
  .venue-card{padding:49px 29px 54px}.venue-card>.eyebrow{font-size:.75rem;letter-spacing:.08em}.venue-card>.section-title{font-size:clamp(2.55rem,10.4vw,3.7rem);margin:17px -9px 20px}.venue-figure{margin:0 -25px}.venue-figure figcaption{font-size:.75rem;letter-spacing:.06em}.venue-note{font-size:1.95rem;line-height:1.45}.venue-address{font-size:.8125rem}.outline-link{font-size:.8125rem}
  .closing{padding:64px 12px 22px}.closing>.section-title{font-size:clamp(2.8rem,11vw,3.8rem)}.closing-note{font-size:1.1rem;line-height:1.75}.signature{font-size:clamp(2.75rem,10.9vw,4.2rem);white-space:nowrap;margin:26px -7px 14px}.closing-date{font-size:.75rem;letter-spacing:.05em}.closing-flowers{width:260px;left:-180px;bottom:-30px;opacity:.6}
  .page-footer{padding-bottom:100px}.music-toggle{font-size:.8125rem;padding:9px 12px;right:max(14px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom))}
}
@media(max-width:360px){.hero-card{padding-left:26px;padding-right:26px}.story-letter{padding-left:27px;padding-right:27px}.card-lace{border-image-width:42px 32px}.countdown-numbers{gap:6px}.cover-title{font-size:3rem}.cover-copy{top:9%}.cover-footer{bottom:13%}.cover-footer .eyebrow{font-size:.75rem}.photo-album{padding-left:30px;padding-right:30px}.invitation-title{font-size:4.9rem}.countdown-numbers span{font-size:1.8rem}.countdown-numbers small{font-size:.6875rem}}
@media(max-height:660px) and (max-width:700px){.cover-copy{top:6%}.cover-title{font-size:clamp(2.6rem,11vw,4.1rem);margin-top:8px}.cover-copy>.eyebrow{font-size:.75rem}.cover-footer{bottom:9%}.cover-footer .arabic{margin-bottom:4px}.envelope-flowers{bottom:-23%}.seal-hint{top:calc(50% + 78px)}}
@media(max-height:480px){:root{--seal-size:96px}.cover-copy{top:7%;left:12%;right:12%}.cover-title{flex-direction:row;font-size:clamp(2.6rem,6vw,4rem);gap:.2em;margin-top:6px;line-height:1.15}.cover-title em{font-size:.65em}.cover-copy>.eyebrow{font-size:.75rem}.cover-footer{bottom:6%;left:25%;right:25%}.cover-footer .arabic{display:none}.cover-footer .eyebrow{font-size:.75rem}.seal-hint{top:calc(50% + 62px)}.envelope-flowers{width:300px;bottom:-55%}.rising-letter{min-height:0;height:85%;top:25%;gap:5px}.rising-names{font-size:2.7rem;max-width:none}.rising-names i{display:inline}.rising-eyebrow{font-size:.75rem}.rising-arabic{display:none}.rising-date{font-size:1.5rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0ms!important}.js .reveal{transform:none}}
.wedding-date{white-space:normal}
.countdown-numbers small{max-width:100%;overflow-wrap:anywhere;font-size:.75rem}
.invitation-title span{max-width:100%;overflow-wrap:anywhere}
@media(max-width:700px){.cover-title{font-size:min(clamp(3rem,14vw,5.5rem),8svh)}.invitation-title{font-size:clamp(3rem,22vw,8rem)}}
@media(max-height:480px){.cover-title{font-size:min(clamp(2.6rem,6vw,4rem),12svh)}}

/* Country-house wallpaper, heirloom gold, and lace across the sealed letter. */
.envelope-shell{position:absolute;inset:0;isolation:isolate;overflow:hidden;background:var(--ivory)}
.front-lace{position:absolute;z-index:6;left:50%;top:50%;width:110%;max-width:none;height:auto;transform:translate(-50%,-50%);pointer-events:none;filter:drop-shadow(0 3px 2px #48382028);transition:opacity .5s,transform .7s}
.opening .front-lace{opacity:0;transform:translate(-50%,-47%) scale(1.03)}
.cover-tray{position:absolute;z-index:6;right:-14%;bottom:-10%;width:clamp(320px,37vw,590px);max-width:none;transform:rotate(-17deg);pointer-events:none;filter:drop-shadow(0 10px 12px #30251d40)}
.seal-art{overflow:hidden}
.seal-art::after{content:'';position:absolute;inset:-40%;background:linear-gradient(110deg,transparent 42%,#fff2c650 49%,#fff9db70 50%,transparent 58%);transform:translateX(-95%);animation:gold-reflection 8s ease-in-out infinite;pointer-events:none}
@keyframes gold-reflection{0%,60%{transform:translateX(-95%);opacity:0}66%{opacity:.7}81%,100%{transform:translateX(95%);opacity:0}}
.invitation{background-color:#23372a;background-image:linear-gradient(90deg,#152d2366,#263a2529 50%,#142b2166),url('assets/forest-wallpaper.webp');background-size:auto,640px 640px;background-repeat:repeat}
.envelope-lining{background-color:var(--green);background-image:linear-gradient(#20362b35,#20362b35),url('assets/forest-wallpaper.webp');background-size:auto,560px}
.love-dedication{margin-bottom:16px}.love-dedication .arabic-dedication{color:var(--gold);margin-bottom:1px;font-size:1.9rem}.arabic-translation{font:500 1.1rem/1.5 var(--serif);font-style:italic;color:var(--blue-deep)}
.countdown-panel{max-width:650px;margin:35px auto 0;padding:25px 45px 15px;background:#f3ecdc;box-shadow:0 12px 28px #10160e42,5px 5px 0 var(--brown),6px 6px 0 var(--gold-light)}
.countdown-panel>.countdown{margin:0 auto}.countdown-panel>.invitation-links{margin-top:15px}.countdown-panel::before{inset:8px;border-color:#98793866}
.maktoub[lang=ar]{font-family:'Noto Naskh Arabic','Amiri','Traditional Arabic',Georgia,serif;font-size:1.25em;color:var(--gold)}
.paper-card{border-color:#b69554}.paper-card::before{border-color:#ae8d4566}.date-card{border-color:#a37f3c}.date-card::after{border-color:#a37f3c77}
.venue-setting{position:relative;isolation:isolate;padding-top:62px;margin-top:-20px}
.antique-tray{position:absolute;z-index:0;top:-50px;left:50%;width:calc(100% + 220px);height:auto;max-width:none;transform:translateX(-50%) rotate(-4deg);pointer-events:none;filter:drop-shadow(0 15px 18px #10241870)}
.venue-setting>.venue-card{position:relative;z-index:2;margin:0 20px;background:#f5f1e6;box-shadow:0 15px 35px #0d211653,7px 7px 0 #8b733d,8px 8px 0 #d0b879}
.venue-greenery{position:absolute;z-index:3;width:310px;height:auto;max-width:none;top:42%;pointer-events:none}.venue-greenery-left{left:-180px}.venue-greenery-right{right:-180px;transform:scaleX(-1)}
.venue-figure>img{filter:saturate(.83) contrast(1.04)}

/* Compact, square stationery for phones, with the timer as its own small card. */
@media(max-width:700px){
  .envelope-screen{background-color:var(--green);background-image:linear-gradient(#1b2e2360,#26382a35),url('assets/forest-wallpaper.webp');background-size:auto,480px 480px}
  .envelope-shell{inset:auto;top:50%;left:50%;width:calc(100% - 18px);height:auto;aspect-ratio:1;transform:translate(-50%,-50%);border:1px solid var(--gold-light);box-shadow:0 18px 40px #071c1977,0 0 0 5px #352b2559;--seal-size:clamp(88px,25vw,104px)}
  .cover-copy{top:7%;left:10%;right:10%}.cover-copy>.eyebrow{font-size:.75rem;line-height:1.5;letter-spacing:.12em}
  .cover-title{flex-direction:row;flex-wrap:nowrap;gap:.14em;font-size:clamp(1.9rem,9.4vw,3rem);line-height:1.22;margin-top:8px;white-space:nowrap}.cover-title em{font-size:.64em;line-height:1}
  .seal-hint{top:calc(50% + var(--seal-size)/2 + 16px);left:10%;right:10%;font-size:.75rem;line-height:1.6;letter-spacing:0}
  .seal-button::after{inset:-7px}.cover-footer{bottom:5%;left:19%;right:19%}.cover-footer .arabic{font-size:1.25rem;line-height:1.4;margin-bottom:2px}.cover-footer .eyebrow{font-size:.75rem;line-height:1.6;letter-spacing:.045em}
  .front-lace{width:108%}.lace-sleeve{width:62px;opacity:.84}.lace-sleeve-left{left:-35px}.lace-sleeve-right{right:-35px}
  .envelope-flowers{width:210px;bottom:-22%}.envelope-flowers-left{left:-99px}.envelope-flowers-right{right:-99px}.envelope-sprig{width:155px;right:-92px;top:-13%}.cover-tray{width:240px;right:-126px;bottom:-14%}
  .rising-letter{top:38%;height:74%;min-height:0;padding:22px 15px;gap:5px;border-width:6px}.rising-eyebrow{font-size:.75rem;line-height:1.4}.rising-names{font-size:clamp(2rem,8.4vw,3.1rem);line-height:1.15;max-width:none}.rising-names i{display:inline;font-size:.65em}.rising-date{font-size:1.25rem;line-height:1.4}.rising-arabic{font-size:1.2rem;line-height:1.4}
  .page-topbar{min-height:59px}.hero-card{padding:23px 26px 26px;min-height:0;aspect-ratio:1;display:flex;align-items:center}.hero-content{width:100%}
  .hero-kicker{font-size:.75rem;line-height:1.5;letter-spacing:.035em}.love-dedication{margin-bottom:10px}.love-dedication .arabic-dedication{font-size:1.45rem;line-height:1.3;margin:0}.arabic-translation{font-size:.9375rem;line-height:1.4}
  .invitation-title{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:.12em;font-size:clamp(2.45rem,11vw,3.7rem);line-height:1.2;margin:12px -5px 9px}.invitation-title em{font-size:.54em;line-height:1;margin:0}.invitation-title span{overflow-wrap:normal}
  .marrying{font-size:1.06rem;line-height:1.35;max-width:none}.hero-content>.fine-divider{display:none}
  .date-card{margin:18px auto 0;padding:14px 7px 17px;max-width:340px;box-shadow:3px 3px 0 #546f8833}.date-card>.eyebrow{font-size:.75rem;line-height:1.5;letter-spacing:.07em}.wedding-date{font-size:clamp(1.85rem,8.5vw,2.8rem);line-height:1.25;margin:5px 0 10px}.hero-venue{font-size:1.3rem;line-height:1.25}.location-label{font-size:.75rem;line-height:1.55;margin-top:4px}
  .card-flowers{width:175px;bottom:0;opacity:.65}.hero-flowers-left{left:-103px}.hero-flowers-right{right:-103px}.card-lace{border-image-width:37px 31px}
  .countdown-panel{margin:19px 5px 0;padding:17px 18px 10px;max-width:none}.countdown-panel .countdown-kicker{font-size:1.45rem;line-height:1.3;margin-bottom:11px}.countdown-panel .countdown-numbers{gap:8px}.countdown-panel .countdown-numbers>div{padding:7px 2px 6px;gap:3px}.countdown-panel .countdown-numbers span{font-size:1.85rem;line-height:1.1}.countdown-panel .countdown-numbers small{font-size:.75rem}.countdown-panel .invitation-links{margin-top:11px;gap:8px 18px}.countdown-panel .invitation-links a{font-size:.8125rem;padding:8px 0}
  .story-section{padding-top:36px}.section-heading .eyebrow{font-size:.75rem;letter-spacing:.04em}.section-heading .section-title{font-size:clamp(2.4rem,9vw,3.1rem);line-height:1.3;margin:12px 0 19px}
  .photo-album{grid-template-columns:repeat(2,minmax(0,1fr));max-width:440px;gap:22px;padding:12px 18px 32px}.memory-photo{padding:5px}.memory-photo-first{transform:rotate(-2deg)}.memory-photo-second{transform:rotate(2deg)}.photo-lace{inset:-9px;border-image-width:22px}.memory-photo figcaption{font-size:clamp(1rem,4.2vw,1.35rem);line-height:1.3;left:4px;right:4px;bottom:4%}.album-flowers{width:145px;right:-74px;bottom:-8px}
  .story-card{margin:5px 0 39px}.story-letter{padding:35px 26px 48px}.story-letter>.letter-location{margin-bottom:17px}.story-opening{font-size:1.2rem;line-height:1.4;margin-bottom:23px!important}.story-opening em{font-size:2.1rem;line-height:1.3}.story-letter>p:not(.story-opening):not(.story-signature):not(.letter-location){font-size:1.08rem;line-height:1.75}.story-letter>p{margin-bottom:17px}.story-signature{font-size:1.9rem;line-height:1.3;margin-top:23px!important}
  .venue-setting{padding-top:31px;margin-top:0}.antique-tray{top:-8px;width:calc(100% + 130px);transform:translateX(-50%) rotate(-5deg)}.venue-setting>.venue-card{margin:0 3px;padding:33px 26px 36px}.venue-setting .section-title{font-size:clamp(2.4rem,9.3vw,3.25rem);margin:12px -4px 17px}.venue-greenery{width:180px;top:39%}.venue-greenery-left{left:-121px}.venue-greenery-right{right:-121px}.venue-note{font-size:1.7rem;line-height:1.35;margin:19px 0 14px}.outline-link{margin-top:17px}
  .closing{padding-top:41px;padding-bottom:15px}.closing>.fine-divider{margin:12px auto 20px}.closing>.section-title{font-size:clamp(2.5rem,10vw,3.4rem);margin:14px 0 20px}.closing-note{font-size:1.06rem;line-height:1.55}.signature{margin-top:21px;margin-bottom:10px}.replay-button{margin-top:18px}.page-footer{padding-top:23px;gap:17px}
}
@media(max-width:360px){.hero-card{padding:21px 22px}.invitation-title{font-size:2.38rem}.cover-title{font-size:1.88rem}.photo-album{gap:18px;padding-left:15px;padding-right:15px}.memory-photo figcaption{font-size:1rem}.countdown-panel{padding-left:13px;padding-right:13px}.story-letter{padding-left:23px;padding-right:23px}}
@media(max-height:480px) and (max-width:900px){.envelope-shell{inset:auto;top:50%;left:50%;width:min(calc(100vw - 28px),calc(100svh - 22px));height:auto;aspect-ratio:1;transform:translate(-50%,-50%);--seal-size:82px}.cover-copy{top:7%}.cover-title{font-size:1.95rem;line-height:1.15}.cover-footer{bottom:5%}.cover-footer .arabic{display:block;font-size:1.15rem;line-height:1.2}.cover-footer .eyebrow{font-size:.75rem}.seal-hint{top:calc(50% + 54px);font-size:.75rem}.envelope-flowers{width:200px;bottom:-27%}.rising-arabic{display:none}}
.cover-bow{position:absolute;z-index:8;left:4%;bottom:5%;width:clamp(140px,20vw,300px);max-width:none;transform:rotate(12deg);pointer-events:none;filter:drop-shadow(0 4px 3px #4c3f342b)}
.card-bow{position:absolute;z-index:3;top:8px;right:-24px;width:180px;max-width:none;transform:rotate(20deg);pointer-events:none}
.memory-photo>.photo-bow{position:absolute;top:-31px;left:50%;width:44%;max-width:160px;height:auto;transform:translateX(-50%) rotate(-5deg);z-index:4;pointer-events:none;filter:drop-shadow(0 3px 3px #382e292b)}
.memory-photo-second>.photo-bow{transform:translateX(-50%) rotate(5deg)}
@media(max-width:700px){.cover-bow{width:112px;left:1%;bottom:3%}.card-bow{width:93px;top:2px;right:-18px;opacity:.9}.memory-photo>.photo-bow{width:48%;max-width:90px;top:-19px}.hero-card{aspect-ratio:auto;min-height:calc(100vw - 36px)}}
@media(max-width:360px){.hero-kicker{display:none}.hero-content .arabic-translation{display:none}.marrying{font-size:1rem;line-height:1.3}.love-dedication{margin-bottom:7px}.cover-bow{width:94px;left:1%;bottom:2%}}

/* The invitation assembles piece by piece when the link first opens. */
html.intro-pending .envelope-shell{opacity:0}
.front-lace-left{clip-path:inset(0 50% 0 0)}.front-lace-right{clip-path:inset(0 0 0 50%)}
.assembling .envelope-shell{animation:stationery-fade .7s ease-out both}
.assembling .envelope-journey{animation:stationery-arrive 1s cubic-bezier(.16,.7,.23,1) .15s both}
.assembling .cover-tray{animation:tray-arrive .85s ease-out .45s both}
.assembling .lace-sleeve-left{animation:left-arrive .85s ease-out .65s both}
.assembling .lace-sleeve-right{animation:right-sleeve-arrive .85s ease-out .8s both}
.assembling .front-lace-left{animation:lace-left-arrive .9s ease-out .95s both}
.assembling .front-lace-right{animation:lace-right-arrive .9s ease-out 1.12s both}
.assembling .envelope-flowers-left{animation:flowers-left-arrive .9s ease-out 1.22s both}
.assembling .envelope-flowers-right{animation:flowers-right-arrive .9s ease-out 1.42s both}
.assembling .envelope-sprig{animation:stationery-fade .8s ease-out 1.45s both}
.assembling .cover-copy{animation:piece-arrive .85s ease-out 1.65s both}
.assembling .cover-bow{animation:bow-arrive .8s ease-out 1.82s both}
.assembling .cover-footer{animation:piece-arrive .75s ease-out 1.98s both}
.assembling .seal-button{animation:stamp-arrive .7s cubic-bezier(.16,.7,.23,1) 2.2s both;pointer-events:none}
.assembling.intro-ready .seal-button{pointer-events:auto}
.assembling .seal-hint{animation:piece-arrive .65s ease-out 2.48s both}
.js .reveal{transform:translate3d(var(--reveal-x,0px),48px,0);transition:opacity .95s ease var(--reveal-delay,0ms),transform 1.25s cubic-bezier(.16,.7,.23,1) var(--reveal-delay,0ms)}
.js .reveal.is-revealed{transform:translate3d(0,0,0)}
.photo-wrap:first-child{--reveal-x:-32px}.photo-wrap:nth-child(2){--reveal-x:32px}
@keyframes stationery-fade{from{opacity:0}to{opacity:1}}
@keyframes stationery-arrive{from{opacity:0;transform:translateY(55px) scale(.97)}to{opacity:1;transform:none}}
@keyframes piece-arrive{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes left-arrive{from{opacity:0;transform:translateX(-60px)}to{opacity:1;transform:translateX(0)}}
@keyframes right-sleeve-arrive{from{opacity:0;transform:translateX(60px) scaleX(-1)}to{opacity:1;transform:translateX(0) scaleX(-1)}}
@keyframes lace-left-arrive{from{opacity:0;transform:translate(-62%,-50%)}to{opacity:1;transform:translate(-50%,-50%)}}
@keyframes lace-right-arrive{from{opacity:0;transform:translate(-38%,-50%)}to{opacity:1;transform:translate(-50%,-50%)}}
@keyframes flowers-left-arrive{from{opacity:0;transform:translate(-60px,25px) rotate(5deg)}to{opacity:1;transform:translate(0,0) rotate(5deg)}}
@keyframes flowers-right-arrive{from{opacity:0;transform:translate(60px,25px) scaleX(-1) rotate(5deg)}to{opacity:1;transform:translate(0,0) scaleX(-1) rotate(5deg)}}
@keyframes tray-arrive{from{opacity:0;transform:translate(65px,25px) rotate(-17deg)}to{opacity:1;transform:translate(0,0) rotate(-17deg)}}
@keyframes bow-arrive{from{opacity:0;transform:translateY(32px) rotate(12deg)}to{opacity:1;transform:translateY(0) rotate(12deg)}}
@keyframes stamp-arrive{from{opacity:0;transform:translate(-50%,-22%) scale(.86)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@media(prefers-reduced-motion:reduce){.js .reveal{transform:none}.seal-art::after{animation:none}}

/* Heirloom still life: one dark-brown ground, dimensional lace and keepsakes. */
:root{--scene-brown:#2b231f}
body,.envelope-screen,.invitation{background:var(--scene-brown)}
.envelope-screen{overflow:hidden}
.cover-scene{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;width:min(100%,1140px);height:100%;margin:auto;padding:28px 24px 66px}
html.intro-pending .cover-scene{opacity:0}
.cover-copy{position:relative;top:auto;left:auto;right:auto;flex-shrink:0;width:min(370px,82vw);z-index:8;text-align:center}
.cover-copy>.eyebrow{color:#d5c19a;font:500 .75rem/1.6 var(--serif);letter-spacing:.2em}
.cover-title{position:relative;display:block;margin:12px auto 0;padding:0 30px;font-size:clamp(3.3rem,6vw,4.5rem);line-height:.94;color:var(--ivory);white-space:normal;font-weight:500;text-shadow:0 2px 1px #0003}
.cover-title>span{display:block}.cover-title>span:first-child{text-align:left;transform:translateX(-16px)}.cover-title>span:last-child{text-align:right;margin-top:8px;transform:translateX(12px)}
.cover-title em{position:absolute;left:48%;top:42%;color:#b79b62;font-size:.44em;line-height:1}
.envelope-composition{position:relative;isolation:isolate;flex-shrink:0;width:min(540px,calc(100vw - 88px),calc(100svh - 335px));margin:0 auto 15px;perspective:1500px}
.envelope-shell{position:relative;inset:auto;top:auto;left:auto;width:100%;height:auto;aspect-ratio:1.12;transform:none;overflow:visible;background:transparent;border:none;box-shadow:none;--seal-size:clamp(82px,17vw,114px);filter:drop-shadow(0 18px 12px #0b07075c)}
.envelope-journey{inset:0;overflow:visible;--flap-tip:74%;transform-origin:50% 60%}
.envelope-lining{inset:8.5% 3% 9%;background:#eee5d4;box-shadow:inset 0 0 60px #6a584440;border-radius:2px}
.envelope-lining::after{inset:5%;border-color:#c0a776;outline-color:#536c752a}
.envelope-pocket,.envelope-flap{top:0;left:0;height:100%;width:100%}
.envelope-flap{transform-origin:50% 8.5%}
.envelope-shell .seal-button{top:71.5%;filter:drop-shadow(1px 7px 4px #3727186b)}
.envelope-shell .seal-button::after{display:none}
.front-lace{display:none}
.cover-bow{left:-12%;top:-8%;bottom:auto;width:35%;transform:rotate(12deg);z-index:6;filter:drop-shadow(2px 6px 3px #100a083f)}
.scene-foliage{position:absolute;max-width:none;z-index:0;pointer-events:none;filter:drop-shadow(3px 10px 6px #08060455)}
.scene-foliage-left{width:62%;left:-33%;bottom:-7%;transform:rotate(-9deg)}
.scene-foliage-right{width:47%;right:-30%;top:-30%;transform:rotate(170deg)}
.cover-keepsake{position:absolute;left:-19%;bottom:-17%;z-index:5;width:48%;transform:rotate(-13deg);pointer-events:none;filter:drop-shadow(0 10px 7px #09060570)}
.cover-keepsake>img{width:100%;height:auto}.cover-keepsake>p{position:absolute;left:20%;right:19%;top:25%;text-align:center;font:500 clamp(1.15rem,2.5vw,2rem)/1.04 var(--letter);color:#38291d;text-shadow:0 1px 0 #f3d9938c}
.photo-locket{position:relative;aspect-ratio:2/3;pointer-events:none;filter:drop-shadow(3px 8px 5px #09060465)}
.locket-portrait{position:absolute;left:13.1%;top:8.9%;width:66.8%;height:58.8%;overflow:hidden;border-radius:50%;background:#3c3026;z-index:1}
.locket-portrait>img{width:100%;height:100%;max-width:none;object-fit:cover;object-position:50% 45%;transform:scale(1.82);transform-origin:50% 46%;filter:sepia(.1) contrast(1.02)}
.locket-frame{position:absolute;inset:0;width:100%;height:100%;z-index:2}
.cover-locket{position:absolute;z-index:7;width:36%;right:-16%;bottom:-25%;transform:rotate(10deg)}
.cover-footer{position:relative;bottom:auto;left:auto;right:auto;flex-shrink:0;width:min(330px,82vw);text-align:center;z-index:8;margin-top:10px}
.cover-footer .seal-hint{position:static;font:500 .75rem/1.5 var(--sans);color:#eee5d2;letter-spacing:.055em;margin-bottom:11px}
.cover-footer .arabic{display:block;font-size:1.28rem;line-height:1.4;color:#c9b081;margin:0 0 2px}.cover-footer .eyebrow{color:#ddd0b7;font-size:.75rem;letter-spacing:.11em;line-height:1.5}
.rising-letter{top:30%;width:74%;height:64%;min-height:0;border:0;padding:25px 16px;box-shadow:0 5px 22px #1d120c70;outline-offset:-9px;gap:8px;transform:translate(-50%,40%) scale(.88)}
.rising-names{font-size:clamp(2.2rem,5.4vw,3.5rem);max-width:none;line-height:1.15}.rising-names i{display:inline;font-size:.6em}.rising-date{font-size:1.45rem}.rising-arabic{font-size:1.3rem}.rising-eyebrow{font-size:.75rem}
.opening .rising-letter{transform:translate(-50%,-40%) scale(1)}
.opening .cover-keepsake,.opening .cover-locket,.opening .cover-bow,.opening .scene-foliage{opacity:0;transition:opacity .7s ease .1s}
.drawing-in .envelope-journey{transform:scale(1.32) translateY(-3%)}

/* Lift the invitation off its lace backing, with a separate portrait keepsake. */
.stationery-suite{max-width:860px}
.hero-setting{position:relative;isolation:isolate;max-width:700px;margin:22px auto 0;padding:22px 29px 44px}
.hero-setting::before{content:'';position:absolute;inset:0 0 19px;z-index:-1;background:url('assets/closed-lace-envelope.webp') center/100% 100% no-repeat;transform:rotate(-3deg);filter:drop-shadow(0 16px 13px #08060388)}
.hero-card{padding:46px 63px 45px;overflow:visible;border:1px solid #c1ab86;background:linear-gradient(118deg,#fffdf4,#f5eedd 74%,#e8ddc7);box-shadow:2px 3px 1px #e5d8bd,4px 7px 0 #cabc9e,7px 14px 23px #130d0a73;min-height:0;aspect-ratio:auto}
.hero-card::before{inset:12px;border-color:#b79b6452}.hero-card::after{display:none}
.hero-card>.card-lace{inset:-17px;border-image-width:61px 49px;filter:drop-shadow(1px 3px 1px #69573c44)}
.hero-card>.card-bow{width:150px;top:-38px;right:-52px;z-index:6;--reveal-rotation:20deg;filter:drop-shadow(2px 5px 2px #57442640)}
.hero-card>.card-flowers{width:220px;bottom:8%;opacity:.85}.hero-card>.hero-flowers-left{left:-151px;--reveal-rotation:8deg}.hero-card>.hero-flowers-right{right:-151px;--reveal-rotation:8deg;--reveal-scale-x:-1}
.hero-content .love-dedication{margin-bottom:11px}.hero-content .arabic-dedication{font-size:1.7rem}.hero-content .arabic-translation{font-size:1rem}.hero-kicker{font-size:.75rem}
.invitation-title{flex-direction:row;justify-content:center;gap:.12em;font-size:clamp(3.7rem,7.4vw,5.6rem);line-height:1.15;margin:21px -25px 14px}.invitation-title em{font-size:.5em;margin:0}
.hero-content .fine-divider{margin:20px auto}.date-card{max-width:410px;padding:18px 13px 21px;margin:0 auto;background:transparent;border:0;box-shadow:none}.date-card::after{display:none}.wedding-date{font-size:2.9rem;margin:4px 0 10px}.hero-venue{font-size:1.55rem}
.hero-locket{position:absolute;right:-24px;bottom:-64px;width:192px;z-index:6;--reveal-rotation:10deg}
.countdown-panel{max-width:530px;margin:31px auto 0;background:linear-gradient(125deg,#fcf8ee,#efe5d2);border:0;box-shadow:2px 4px 0 #c6b393,5px 10px 20px #140d0b5c;transform:rotate(-1deg)}
.story-card{background:linear-gradient(120deg,#fcf7ea,#f1e7d4);box-shadow:-3px 4px 0 #c2b08b,-6px 9px 0 #e5d7b7,0 17px 29px #0d08074f}
.venue-setting>.venue-card{box-shadow:3px 4px 0 #dac9a5,6px 8px 0 #917747,7px 15px 26px #0a07055e}
.lettered-tray{position:relative;width:min(365px,90%);aspect-ratio:3/2;margin:28px auto 18px;--reveal-rotation:-8deg;filter:drop-shadow(0 15px 8px #08060470)}
.lettered-tray>img{width:100%;height:100%}.lettered-tray>p{position:absolute;left:15%;right:15%;top:31%;font:500 clamp(1.6rem,5vw,2.1rem)/1.08 var(--letter);color:#382a1e;text-shadow:0 1px 0 #efcf8e91}.lettered-tray>p>span{font-family:var(--script);font-size:1.1em;line-height:1.5}

/* Each object has its own place in the entrance sequence. */
.assembling .envelope-shell{animation:none}
.assembling .cover-copy{animation:piece-arrive .85s ease-out .1s both}
.assembling .envelope-journey{animation:stationery-arrive 1.1s cubic-bezier(.16,.7,.23,1) .5s both}
.assembling .cover-bow{animation:bow-arrive .85s ease-out 1.15s both}
.assembling .scene-foliage-left{animation:foliage-left-arrive .95s ease-out 1.35s both}
.assembling .scene-foliage-right{animation:foliage-right-arrive .95s ease-out 1.55s both}
.assembling .cover-keepsake{animation:keepsake-arrive .95s ease-out 1.8s both}
.assembling .cover-locket{animation:locket-arrive .95s cubic-bezier(.16,.7,.23,1) 2.05s both}
.assembling .seal-button{animation:stamp-arrive .75s cubic-bezier(.16,.7,.23,1) 2.45s both}
.assembling .cover-footer{animation:piece-arrive .8s ease-out 2.8s both}.assembling .seal-hint{animation:none}
.js .reveal{transform:translate3d(var(--reveal-x,0px),48px,0) rotate(var(--reveal-rotation,0deg)) scaleX(var(--reveal-scale-x,1));transition:opacity .95s ease var(--reveal-delay,0ms),transform 1.25s cubic-bezier(.16,.7,.23,1) var(--reveal-delay,0ms)}
.js .reveal.is-revealed{transform:translate3d(0,0,0) rotate(var(--reveal-rotation,0deg)) scaleX(var(--reveal-scale-x,1))}
@keyframes foliage-left-arrive{from{opacity:0;transform:translate(-55px,30px) rotate(-9deg)}to{opacity:1;transform:translate(0,0) rotate(-9deg)}}
@keyframes foliage-right-arrive{from{opacity:0;transform:translate(55px,-20px) rotate(170deg)}to{opacity:1;transform:translate(0,0) rotate(170deg)}}
@keyframes keepsake-arrive{from{opacity:0;transform:translate(-40px,38px) rotate(-21deg)}to{opacity:1;transform:translate(0,0) rotate(-13deg)}}
@keyframes locket-arrive{from{opacity:0;transform:translate(45px,25px) rotate(22deg)}to{opacity:1;transform:translate(0,0) rotate(10deg)}}
@media(max-width:700px){
 .cover-scene{padding:25px 20px 57px;gap:18px}.cover-copy{width:min(310px,82vw)}.cover-title{font-size:3.15rem;padding:0 28px;margin-top:11px}.cover-title>span:last-child{margin-top:7px}
 .envelope-composition{width:min(calc(100vw - 72px),calc(100svh - 302px));margin-bottom:8px}.envelope-shell{aspect-ratio:1;--seal-size:clamp(78px,22vw,96px)}
 .cover-footer{margin-top:11px}.cover-footer .seal-hint{font-size:.6875rem;letter-spacing:.025em;margin-bottom:9px}.cover-footer .arabic{font-size:1.15rem}.cover-footer .eyebrow{font-size:.6875rem}
 .cover-keepsake{left:-10%;bottom:-12%;width:45%}.cover-keepsake>p{font-size:1.2rem}.cover-locket{right:-11%;bottom:-22%;width:36%}.cover-bow{width:35%;top:-4%;left:-11%}.scene-foliage-left{left:-32%;bottom:-9%;width:63%}.scene-foliage-right{right:-29%;top:-20%;width:49%}
 .rising-letter{top:34%;height:62%;padding:19px 12px;gap:4px}.rising-names{font-size:clamp(1.8rem,8vw,2.7rem)}.rising-date{font-size:1.12rem}.rising-eyebrow{font-size:.6875rem}.rising-arabic{font-size:1.2rem}
 .hero-setting{margin:12px auto 0;padding:16px 16px 31px}.hero-card{padding:25px 25px 28px;min-height:0}.hero-card>.card-lace{inset:-13px;border-image-width:38px 30px}.hero-card>.card-bow{width:97px;top:-22px;right:-27px}.hero-card>.card-flowers{width:147px;bottom:6%;opacity:.7}.hero-card>.hero-flowers-left{left:-105px}.hero-card>.hero-flowers-right{right:-105px}
 .hero-content .love-dedication{margin-bottom:8px}.hero-content .arabic-dedication{font-size:1.4rem;line-height:1.3}.hero-content .arabic-translation{font-size:.875rem}.hero-kicker{font-size:.6875rem;letter-spacing:.02em}.invitation-title{font-size:clamp(2.15rem,10.2vw,3.5rem);margin:14px -12px 10px;flex-wrap:nowrap;gap:.1em}.invitation-title em{font-size:.48em}.marrying{font-size:1rem;line-height:1.35}.date-card{padding:0;margin:19px auto 0}.date-card>.eyebrow{font-size:.6875rem}.wedding-date{font-size:clamp(1.8rem,8.2vw,2.7rem);margin:6px 0 10px}.hero-venue{font-size:1.2rem;line-height:1.3}.location-label{font-size:.6875rem;line-height:1.5}
 .hero-locket{width:124px;right:-8px;bottom:-56px}.countdown-panel{max-width:calc(100% - 30px);margin:33px auto 0;padding:17px 16px 9px}.countdown-panel .countdown-kicker{font-size:1.45rem}.countdown-panel .countdown-numbers span{font-size:1.7rem}.countdown-panel .countdown-numbers small{font-size:.6875rem}.countdown-panel .countdown-numbers{gap:6px}
 .story-section{padding-top:41px}.lettered-tray{width:min(300px,92%);margin:24px auto 15px}.lettered-tray>p{font-size:1.8rem}
}
@media(max-width:360px){.cover-title{font-size:2.8rem}.cover-scene{gap:14px}.cover-keepsake>p{font-size:1.02rem}.hero-card{padding:24px 19px}.hero-card .invitation-title{font-size:2.08rem}.hero-locket{width:109px;right:-9px;bottom:-48px}.hero-setting{padding-left:12px;padding-right:12px}}
@media(max-height:640px){.cover-scene{padding-top:15px;padding-bottom:45px;gap:10px}.cover-title{font-size:2.7rem}.cover-copy>.eyebrow{font-size:.6875rem}.envelope-composition{width:min(350px,calc(100vw - 74px),calc(100svh - 265px))}.cover-footer{margin-top:8px}.cover-footer .seal-hint{margin-bottom:6px}}
@media(max-height:480px) and (orientation:landscape){.cover-scene{display:grid;grid-template-columns:170px 270px;grid-template-rows:auto auto;column-gap:30px;justify-content:center;align-content:center;padding:20px 30px}.cover-copy{width:170px;grid-column:1;grid-row:1}.cover-title{font-size:2.8rem;padding:0}.envelope-composition{width:min(270px,calc(100svh - 65px));grid-column:2;grid-row:1/3;margin:0}.envelope-shell{aspect-ratio:1.12;--seal-size:78px}.cover-footer{width:170px;grid-column:1;grid-row:2;margin-top:8px}.cover-footer .seal-hint{font-size:.6875rem}.cover-keepsake{display:none}.cover-locket{right:-12%;bottom:-16%;width:34%}.scene-foliage-right{top:-18%}}
@media(prefers-reduced-motion:reduce){.js .reveal,.js .reveal.is-revealed{transform:rotate(var(--reveal-rotation,0deg)) scaleX(var(--reveal-scale-x,1))}.envelope-shell,.cover-scene{opacity:1}.seal-art::after{animation:none}}

html.js .reveal:not(.is-revealed){opacity:0}

@media(max-width:700px){.hero-locket{width:104px;right:-18px;bottom:-54px}}

/* Give both names a complete line and keep all lettering above the paper. */
.envelope-screen{overflow-y:auto;overflow-x:hidden}
.cover-scene{height:auto;min-height:100%;padding-top:24px;padding-bottom:58px;justify-content:center;gap:16px}
.cover-copy{z-index:25;isolation:isolate;width:min(400px,84vw);padding-bottom:6px;overflow:visible}
.cover-title{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto;align-content:start;align-items:start;line-height:1.22;font-size:clamp(3.1rem,5.8vw,4.2rem);padding:0 28px;min-height:2.44em;margin-top:10px;overflow:visible}
.cover-title>.cover-name-first{grid-row:1;justify-self:start;text-align:left;transform:none;margin:0;line-height:1.22;padding-right:20px}
.cover-title>.cover-name-second{grid-row:2;justify-self:end;text-align:right;transform:none;margin:0;line-height:1.22;padding-left:20px}
.cover-title em{left:48%;top:50%;font-size:.36em;transform:translateY(-50%);line-height:1}
.envelope-composition{width:min(540px,calc(100vw - 88px),calc(100svh - 375px));margin-bottom:12px;z-index:1}
.envelope-flap{transition-duration:1.65s;transition-delay:.3s}
.rising-letter{width:80%;height:auto;min-height:0;aspect-ratio:1.12;top:29%;padding:22px 34px;gap:7px;transition:transform 2.35s cubic-bezier(.22,.61,.21,1) 1.05s,opacity .65s 1.05s;overflow:hidden}
.rising-names{position:relative;display:block;width:90%;max-width:none;flex-shrink:0;font-size:clamp(2.05rem,4.8vw,3.35rem);line-height:1.1;text-align:left}
.rising-names>span{display:block;white-space:nowrap}.rising-names>span:last-child{text-align:right;margin-top:4px}.rising-names>i{position:absolute;left:49%;top:48%;font-size:.38em;line-height:1;transform:translateY(-50%)}
.rising-eyebrow{font-size:.7rem;line-height:1.25}.rising-date{font-size:1.35rem;line-height:1.3}.rising-arabic{font-size:1.25rem;line-height:1.25}
.letter-lace{border-image-width:33px}
.opening .rising-letter{transform:translate(-50%,-37%) scale(1)}
.drawing-in .envelope-journey{transition-duration:1.9s}
.envelope-screen.is-dismissed{transition-duration:1s}
.invitation.arriving .hero-card{animation-duration:1.55s}
.hero-setting{max-width:850px;padding:18px 16px 38px}
.hero-card{padding:32px clamp(35px,6vw,70px) 34px}
.hero-content .invitation-title{position:relative;display:block;width:min(410px,95%);margin:16px auto 13px;font-size:clamp(3.7rem,6.8vw,5.6rem);line-height:1.04;text-align:left}
.hero-content .invitation-title>span{display:block;white-space:nowrap;overflow-wrap:normal}.hero-content .invitation-title>span:last-child{text-align:right;margin-top:5px}
.hero-content .invitation-title>em{position:absolute;left:48%;top:48%;font-size:.35em;line-height:1;margin:0;transform:translateY(-50%)}
.hero-content>.fine-divider{margin:15px auto}.hero-content .date-card{padding:11px 10px 10px}.hero-content .love-dedication{margin-bottom:5px}
@media(max-width:700px){
 .cover-scene{padding:18px 18px 52px;gap:13px}.cover-copy{width:min(325px,86vw)}.cover-title{font-size:2.95rem;padding:0 28px}.cover-copy>.eyebrow{font-size:.7rem}
 .envelope-composition{width:min(calc(100vw - 72px),calc(100svh - 339px));margin-bottom:9px}
 .rising-letter{width:84%;padding:14px 19px;gap:4px;aspect-ratio:1.07;top:31%}.rising-names{font-size:clamp(1.65rem,7.4vw,2.45rem);line-height:1.08;width:86%}.rising-names>span:last-child{margin-top:4px}.rising-eyebrow{font-size:.61rem;letter-spacing:.08em}.rising-date{font-size:1.04rem}.rising-arabic{font-size:1.02rem}.letter-lace{border-image-width:23px}
 .invitation{padding-left:9px;padding-right:9px}.hero-setting{padding:12px 4px 27px}.hero-card{padding:22px 32px 23px}.hero-card>.card-lace{inset:-9px;border-image-width:34px 27px}.hero-content .invitation-title{font-size:clamp(2.65rem,11.5vw,3.7rem);width:min(260px,94%);margin:9px auto 8px;line-height:1.04}.hero-content .invitation-title>span:last-child{margin-top:3px}.hero-content .hero-kicker{display:none}.hero-content .love-dedication{margin-bottom:6px}.hero-content .arabic-translation{font-size:.8125rem}.hero-content .arabic-dedication{font-size:1.25rem}.hero-content .marrying{font-size:.95rem}.hero-content .date-card{margin-top:12px;padding:0}.hero-content .wedding-date{margin:3px 0 6px;font-size:clamp(1.85rem,8.2vw,2.65rem)}.hero-content .hero-venue{font-size:1.13rem}.hero-content .location-label{font-size:.6875rem}.hero-card>.card-flowers{width:149px}.hero-card>.hero-flowers-left{left:-103px}.hero-card>.hero-flowers-right{right:-103px}.hero-locket{right:-22px;width:99px}
}
@media(max-width:360px){.cover-title{font-size:2.62rem;padding:0 21px}.cover-scene{gap:10px}.rising-letter{padding:12px 15px}.rising-names{font-size:1.65rem}.rising-date{font-size:.95rem}.rising-arabic{font-size:.95rem}.hero-card{padding-left:26px;padding-right:26px}.hero-content .invitation-title{font-size:2.63rem}}
@media(max-height:640px){.cover-scene{padding-top:14px;padding-bottom:44px;gap:9px}.cover-title{font-size:2.45rem;line-height:1.18;min-height:2.36em}.cover-title>.cover-name-first,.cover-title>.cover-name-second{line-height:1.18}.envelope-composition{width:min(350px,calc(100vw - 76px),calc(100svh - 296px))}.cover-footer{margin-top:5px}}
@media(max-height:480px) and (orientation:landscape){.cover-scene{height:100%;min-height:100%;grid-template-columns:185px 265px;column-gap:30px;padding:16px 22px}.cover-copy{width:185px;padding:0}.cover-title{font-size:2.7rem;padding:0;min-height:2.36em}.envelope-composition{width:min(265px,calc(100svh - 62px));margin:0}.cover-footer{width:185px}.rising-letter{padding:13px 20px;gap:3px}.rising-names{font-size:1.85rem}.rising-date{font-size:1rem}}

/* A few calla lilies and trailing amaranthus, leaving the brown ground clear. */
.scene-foliage-left{width:43%;left:-19%;bottom:-5%;transform:rotate(-9deg)}
.hero-card>.card-flowers{width:175px;bottom:7%;opacity:1}.hero-card>.hero-flowers-left{left:-119px}
.album-flowers{width:185px;right:-87px;bottom:-10px}
.venue-greenery-right{width:225px;right:-164px;top:40%}
@media(max-width:700px){.scene-foliage-left{width:47%;left:-16%;bottom:-4%}.hero-card>.card-flowers{width:133px}.hero-card>.hero-flowers-left{left:-94px}.album-flowers{width:127px;right:-71px;bottom:-7px}.venue-greenery-right{width:161px;right:-121px}}

/* Quiet woven grain, with a glimpse of striped lining beneath the lace. */
body,.envelope-screen,.invitation{
 background-color:var(--scene-brown);
 background-image:repeating-linear-gradient(0deg,#f7eedb04 0 1px,transparent 1px 4px),repeating-linear-gradient(90deg,#140e0b17 0 1px,transparent 1px 5px);
 background-size:4px 4px,5px 5px;
}
.envelope-lining{
 background-color:#eee7d6;
 background-image:repeating-linear-gradient(90deg,#eee7d6 0 15px,#b6b9a4 15px 21px,#eee7d6 21px 28px,#7a705d55 28px 29px,#eee7d6 29px 38px);
 background-size:auto;
 box-shadow:inset 0 0 38px #4d43312b;
}
.hero-setting::after{
 content:'';position:absolute;inset:5px 2px 19px;z-index:-2;pointer-events:none;
 background:repeating-linear-gradient(90deg,#eae1cb 0 18px,#a8af92 18px 25px,#eae1cb 25px 34px,#655b4355 34px 35px,#eae1cb 35px 44px);
 transform:rotate(1.7deg);border:1px solid #ad986e;
 box-shadow:0 9px 17px #120c0845;
}

/* Handmade paper: the same real fibrous edges frame cards of any height. */
.paper-card.deckled-paper{background:none;border:0;box-shadow:none;overflow:visible;isolation:isolate}
.paper-card.deckled-paper::before{display:none}
.paper-card.deckled-paper::after{
 content:'';display:block;position:absolute;inset:-15px;z-index:-1;pointer-events:none;
 border:34px solid transparent;
 border-image:url('assets/ivory-deckled-paper.webp') 140 fill / 34px / 0 stretch;
 background:none;outline:0;
 filter:drop-shadow(1px 3px 1px #c2b19470) drop-shadow(2px 11px 10px #100a0855);
}
.rising-letter{
 background:transparent url('assets/ivory-deckled-paper.webp') center/100% 100% no-repeat;
 outline:0;box-shadow:none;filter:drop-shadow(0 5px 8px #170e0859);
}
.countdown-panel.deckled-paper{padding:29px 39px 16px}
.countdown-panel.deckled-paper::after{inset:-17px;border-image-width:38px;filter:drop-shadow(1px 3px 1px #c2b19485) drop-shadow(3px 12px 11px #100a0860)}

/* Narrow silk, loosely tied, with long tails resting at the corners. */
.cover-bow{width:26%;left:-10%;top:0;bottom:auto;transform:rotate(12deg)}
.hero-card>.card-bow{width:105px;top:-28px;right:-30px;transform:rotate(8deg);--reveal-rotation:8deg}
.memory-photo>.photo-bow{width:27%;max-width:88px;top:-28px;left:-7%;transform:rotate(-11deg)}
.memory-photo-second>.photo-bow{left:auto;right:-6%;transform:rotate(9deg)}
@media(max-width:700px){
 .hero-setting::after{inset:3px 0 19px;transform:rotate(1.5deg)}
 .paper-card.deckled-paper::after{inset:-12px;border-image-width:29px}
 .countdown-panel.deckled-paper{padding:21px 19px 12px}
 .countdown-panel.deckled-paper::after{inset:-14px;border-image-width:32px}
 .cover-bow{width:27%;left:-10%;top:1%}
 .hero-card>.card-bow{width:71px;top:-18px;right:-22px}
 .memory-photo>.photo-bow{width:28%;max-width:58px;top:-16px;left:-7%}
 .memory-photo-second>.photo-bow{left:auto;right:-6%}
}

/* The opening stems are loose and widely spaced; silk rests at the other corner. */
.scene-foliage-left{width:82%;left:-25%;top:8%;bottom:auto;z-index:2;transform:rotate(-9deg)}
.cover-bow{left:auto;right:-8%;top:-1%;width:26%}
@media(max-width:700px){
 .scene-foliage-left{width:84%;left:-25%;top:9%;bottom:auto}
 .cover-bow{left:auto;right:-8%;top:0;width:26%}
}

/* Small family keepsakes, settled beneath the photographs. */
.photo-album{padding-bottom:125px}
.keepsake-accent{position:absolute;max-width:none;height:auto;z-index:5;pointer-events:none;filter:drop-shadow(3px 8px 5px #10090765)}
.coffee-keepsake{width:142px;left:5%;bottom:0;--reveal-rotation:-9deg}
.cross-keepsake{width:69px;right:10%;bottom:7px;--reveal-rotation:18deg}
@media(max-width:700px){
 .photo-album{padding-bottom:108px}
 .coffee-keepsake{width:90px;left:4%;bottom:0}
 .cross-keepsake{width:52px;right:10%;bottom:9px}
}

/* Their rings, joined by a length of cream silk, follow the love letter. */
.ring-keepsake{position:relative;z-index:5;width:min(410px,76%);margin:-38px auto 28px;--reveal-rotation:-3deg;filter:drop-shadow(3px 11px 8px #10090665)}
.ring-keepsake>img{display:block;width:100%;height:auto}
@media(max-width:700px){.ring-keepsake{width:min(290px,84%);margin:-17px auto 20px}}

/* A two-sided hinged flap stays visible when it opens past ninety degrees. */
.envelope-screen.opening{overflow:hidden}
.envelope-journey{--journey-zoom:8;transform-origin:50% 40%}
.envelope-flap{
 clip-path:none;backface-visibility:visible;transform-style:preserve-3d;
 transform:rotateX(0deg);transform-origin:50% 8.5%;
 transition:transform 1.8s cubic-bezier(.3,.08,.2,1) .2s;
}
.envelope-flap>.envelope-flap-front{
 clip-path:polygon(0 0,100% 0,50% var(--flap-tip));
 backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:translateZ(.5px);
}
.envelope-flap-back{
 position:absolute;inset:0;pointer-events:none;
 clip-path:polygon(4% 8.5%,96% 8.5%,50% 73%);
 background:repeating-linear-gradient(90deg,#f3ecdc 0 16px,#bbc1a94d 16px 22px,#f3ecdc 22px 29px,#81735338 29px 30px,#f3ecdc 30px 40px);
 backface-visibility:hidden;-webkit-backface-visibility:hidden;
 transform:rotateY(180deg) translateZ(.5px);
}
.opening .envelope-flap{transform:rotateX(172deg)}
.flap-open .envelope-flap{z-index:1}
.rising-letter{transition:transform 1.75s cubic-bezier(.22,.61,.21,1),opacity .6s}
.opening:not(.flap-open) .rising-letter{opacity:0;transform:translate(-50%,40%) scale(.88)}
.flap-open .rising-letter{opacity:1;transform:translate(-50%,-37%) scale(1)}
.drawing-in .envelope-journey{
 transform:translate3d(0,0,0) scale(var(--journey-zoom));
 transition:transform 2.6s cubic-bezier(.58,.02,.22,1);
}
.envelope-screen.is-dismissed{transition-duration:.9s}
@media(min-width:1700px){.envelope-journey{--journey-zoom:10}}

/* The lace veil remains sheer enough to show the brown beneath it. */
.envelope-screen::before,.invitation::before{
 content:'';position:absolute;inset:0;z-index:0;pointer-events:none;
 background-image:url('assets/lace-frame.png'),url('assets/lace-frame.png');
 background-size:560px 840px,560px 840px;
 background-position:left -245px top -85px,right -245px top 220px;
 background-repeat:repeat-y;opacity:.15;
}
.cover-scene,.page-topbar,.stationery-suite,.page-footer{position:relative;z-index:1}

/* A broad envelope with real lace extending beyond both sides. */
.envelope-composition{width:min(680px,calc(100vw - 80px),calc((100svh - 420px)*1.5));margin-bottom:48px}
.envelope-shell{aspect-ratio:1.5}
.envelope-composition::before{
 content:'';position:absolute;inset:-4% -6% -7%;z-index:-1;pointer-events:none;
 border:62px solid transparent;border-image:url('assets/lace-frame.png') 180 / 62px 72px round;
 transform:rotate(-2.5deg);filter:drop-shadow(1px 4px 2px #120c0752);
}
.seal-art{background-image:url('assets/script-gold-seal.webp');background-size:111% 111%;background-position:center;border-radius:0;overflow:visible}
.seal-art::after{inset:9%;border-radius:50%;overflow:hidden}
.letter-slot{position:absolute;inset:0;z-index:2;pointer-events:none;clip-path:inset(-150% -20% 9% -20%)}
.rising-letter{aspect-ratio:1.26;top:31%}
.cover-rings{width:44%;left:-8%;bottom:-20%;transform:rotate(-8deg)}
@keyframes keepsake-arrive{from{opacity:0;transform:translate(-35px,32px) rotate(-15deg)}to{opacity:1;transform:translate(0,0) rotate(-8deg)}}

/* Large, light calligraphy: native regular strokes, without synthetic bolding. */
.cover-title,.hero-content .invitation-title,.rising-names,.small-monogram{
 font-family:'Great Vibes','Pinyon Script',cursive;font-weight:400;font-synthesis:none;
 -webkit-text-stroke:0;letter-spacing:0;
}
.cover-copy{width:min(450px,88vw)}
.cover-title{font-size:clamp(3.8rem,6.5vw,5.1rem);line-height:1.14;min-height:2.28em;text-shadow:0 1px 2px #10090552}
.cover-title>.cover-name-first,.cover-title>.cover-name-second{line-height:1.14}
.hero-content .invitation-title{font-size:clamp(4.8rem,8.5vw,6.7rem);line-height:1.1;width:min(490px,96%);margin-top:15px;margin-bottom:15px}
.rising-names{font-size:clamp(2.15rem,5.2vw,3.7rem);line-height:1.1}
.small-monogram{font-size:2.4rem;line-height:1.2}
.small-monogram span{font-family:'Great Vibes',cursive;font-weight:400;font-style:normal}
.country-label{display:block;font-size:inherit;letter-spacing:.06em}

/* A few more individual stems, kept at the stationery edges. */
.story-floral-accent{position:absolute;right:-97px;top:32%;z-index:5;width:210px;max-width:none;transform:rotate(57deg);pointer-events:none;filter:drop-shadow(2px 6px 4px #21170838)}
.closing-floral-accent{width:140px;height:auto;margin:0 auto 12px;--reveal-rotation:18deg;filter:drop-shadow(2px 6px 5px #150b0950)}
@media(max-width:700px){
 .envelope-screen::before,.invitation::before{background-size:380px 570px,380px 570px;background-position:left -220px top -60px,right -220px top 180px;opacity:.13}
 .envelope-composition{width:min(calc(100vw - 48px),calc((100svh - 350px)*1.5));margin-bottom:34px}
 .envelope-shell{aspect-ratio:1.5}
 .envelope-composition::before{inset:-4% -6% -7%;border-image-width:40px 45px}
 .cover-copy{width:min(375px,89vw)}
 .cover-title{font-size:clamp(3.3rem,14vw,3.8rem);padding:0 23px;line-height:1.14;min-height:2.28em}
 .hero-content .invitation-title{font-size:clamp(3.45rem,14.4vw,4.4rem);width:min(300px,97%);line-height:1.1;margin:12px auto 13px}
 .rising-letter{aspect-ratio:1.26;padding:14px 19px}
 .rising-names{font-size:clamp(1.95rem,8vw,2.6rem);line-height:1.1}
 .small-monogram{font-size:2.1rem}
 .cover-rings{width:45%;left:-7%;bottom:-20%}
 .story-floral-accent{width:144px;right:-79px;top:39%}
 .closing-floral-accent{width:106px}
}
@media(max-width:360px){.cover-title{font-size:3.1rem}.hero-content .invitation-title{font-size:3.18rem}.rising-letter{padding:12px 16px}.rising-names{font-size:1.85rem}}
@media(max-height:640px){.cover-title{font-size:3rem;line-height:1.12;min-height:2.24em}.cover-title>.cover-name-first,.cover-title>.cover-name-second{line-height:1.12}.envelope-composition{width:min(calc(100vw - 48px),calc((100svh - 320px)*1.5))}}
@media(max-height:480px) and (orientation:landscape){.cover-title{font-size:3.1rem;padding:0}.cover-copy{width:185px}.envelope-composition{width:min(350px,calc((100svh - 102px)*1.5));margin:0}.cover-rings{width:33%;left:-4%;bottom:-17%}.rising-names{font-size:2rem}}

/* Small engraved coffee cups, antique gold, and a quiet touch of blue enamel. */
.coffee-cups-keepsake{width:124px;left:24%;bottom:6px;--reveal-rotation:7deg}
.gold-blue-keepsake{position:absolute;z-index:5;left:1%;bottom:-24px;width:118px;max-width:none;height:auto;pointer-events:none;--reveal-rotation:-13deg;filter:drop-shadow(2px 7px 4px #120a0755)}
.fine-divider i{background:#c3d8e3;border-color:#ac9157}
@media(max-width:700px){.coffee-cups-keepsake{width:88px;left:31%;bottom:8px}.gold-blue-keepsake{width:75px;left:0;bottom:-23px}}

/* Ivory silk, brown velvet shadows and a few blue heirloom details. */
body,.envelope-screen,.invitation{background-color:#3e302c;background-image:linear-gradient(#30211b22,#30211b45),url('assets/ivory-silk-draping.webp');background-size:cover;background-position:center top;background-attachment:fixed}
.envelope-screen::before,.invitation::before{opacity:.07}
.cover-title{font-family:'Italianno','Great Vibes',cursive;font-size:clamp(5rem,9vw,7rem);color:#513b30;text-shadow:0 1px 1px #fff8;line-height:1.05;min-height:2.1em}
.cover-title>.cover-name-first,.cover-title>.cover-name-second{line-height:1.05}
.cover-title em{color:#728fa4;font-family:'Italianno',cursive}
.cover-copy{width:min(540px,92vw)}
.cover-copy>.eyebrow,.cover-footer{color:#4a352b;text-shadow:0 1px 2px #fffc}
.cover-footer .arabic,.cover-footer .eyebrow,.cover-footer .seal-hint{color:#513b30}
.cover-bow{width:39%;right:-9%;top:-11%}
.hero-content .invitation-title{font-family:'Italianno','Great Vibes',cursive;font-size:clamp(6rem,11vw,8rem);font-weight:400;line-height:1.05;width:min(530px,98%);color:#513b30}
.rising-names{font-family:'Italianno','Great Vibes',cursive;font-size:clamp(2.7rem,6vw,4.2rem)}
.hero-card>.card-bow{width:155px;top:-46px;right:-32px}
.memory-photo>.photo-bow{width:36%;max-width:115px;top:-37px}
.story-bow{position:absolute;top:-38px;left:-30px;width:135px;transform:rotate(-12deg);z-index:5;pointer-events:none}
.blue-flower{position:absolute;pointer-events:none;height:auto;z-index:5;filter:drop-shadow(1px 3px 2px #543a2520)}
.cover-blue-flower{width:23%;right:-5%;bottom:-13%;transform:rotate(14deg)}
.hero-blue-flower{width:105px;left:-26px;top:20%;transform:rotate(-22deg)}
.story-blue-flower{width:90px;right:-26px;bottom:10%;transform:rotate(20deg)}
.hero-setting::after{border-color:#bbcfda;background:repeating-linear-gradient(90deg,#f2ede1 0 18px,#cadde6 18px 25px,#f2ede1 25px 34px,#90acbd55 34px 35px,#f2ede1 35px 44px)}
.envelope-flap-back{background:#f8f1e4;clip-path:polygon(0 0,100% 0,50% var(--flap-tip));overflow:hidden}
.envelope-flap-back>img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}
.flap-lace{position:absolute;inset:0;border:42px solid transparent;border-image:url('assets/lace-frame.png') 180 / 42px round;opacity:.95}
.letter-lace{inset:-2px;border-image-width:40px}
.candle-glow{position:absolute;bottom:3%;width:90px;height:80px;border-radius:50%;background:radial-gradient(ellipse,#ffe2a95e,transparent 68%);filter:blur(9px);pointer-events:none;z-index:0;animation:candle-flicker 3.7s ease-in-out infinite alternate}
.candle-glow-left{left:5%}.candle-glow-right{right:5%;animation-delay:-1.8s}
@keyframes candle-flicker{0%,100%{opacity:.5;transform:scale(.92)}17%,64%{opacity:.9;transform:scale(1.05)}38%,81%{opacity:.63;transform:scale(.98)}}
/* Reveal the connected calligraphy a letter at a time without breaking its ligatures. */
.assembling .cover-copy{animation:none}
.assembling .cover-copy>.eyebrow{animation:stationery-fade .7s ease .15s both}
.assembling .cover-name-first{animation:write-name 1.55s steps(7,end) .45s both}
.assembling .cover-title em{animation:stationery-fade .4s ease 2s both}
.assembling .cover-name-second{animation:write-name 1.3s steps(5,end) 2.15s both}
@keyframes write-name{from{clip-path:inset(-20% 110% -20% -15%);opacity:0}1%{opacity:1}to{clip-path:inset(-20% -15% -20% -15%);opacity:1}}
.hero-content .invitation-title.is-revealed>span:first-child{animation:write-name 1.55s steps(7,end) var(--reveal-delay,0ms) both}
.hero-content .invitation-title.is-revealed>span:last-child{animation:write-name 1.3s steps(5,end) calc(var(--reveal-delay,0ms) + 1.7s) both}
@media(max-width:700px){
 body,.envelope-screen,.invitation{background-attachment:scroll}
 .cover-copy{width:min(390px,94vw)}.cover-title{font-size:clamp(4.2rem,18vw,5.1rem);padding:0 16px}
 .cover-scene{gap:9px}.envelope-composition{width:min(calc(100vw - 58px),calc((100svh - 390px)*1.5))}
 .hero-content .invitation-title{font-size:clamp(4.3rem,18.6vw,5.8rem);width:98%;line-height:1.05}
 .hero-card>.card-bow{width:106px;top:-34px;right:-25px}.memory-photo>.photo-bow{max-width:82px;top:-24px}.story-bow{width:98px;top:-29px;left:-20px}
 .hero-blue-flower{width:73px;left:-28px;top:26%}.story-blue-flower{width:64px;right:-20px}.cover-bow{width:39%;right:-7%;top:-10%}
 .flap-lace{border-image-width:28px}.letter-lace{border-image-width:28px}
}
@media(max-height:640px){.cover-title{font-size:3.7rem}.envelope-composition{width:min(calc(100vw - 58px),calc((100svh - 340px)*1.5))}}
@media(max-height:480px) and (orientation:landscape){.cover-title{font-size:3.3rem}.cover-copy{width:185px}.envelope-composition{width:min(340px,calc((100svh - 102px)*1.5))}}
@media(prefers-reduced-motion:reduce){.candle-glow,.assembling .cover-name-first,.assembling .cover-name-second,.hero-content .invitation-title.is-revealed>span{animation:none!important;clip-path:none!important;opacity:1!important}}

/* Center the full signature within the final tray's inner oval. */
.lettered-tray{width:min(480px,98%);margin:32px auto 24px;--reveal-rotation:-4deg}
.lettered-tray>p{inset:22% 15% 26%;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:'Italianno','Great Vibes',cursive;font-size:clamp(1.7rem,4.2vw,2.5rem);font-weight:400;line-height:1.05}
.lettered-tray>p>span{font-family:'Italianno','Great Vibes',cursive;font-size:1.2em;line-height:1.2;white-space:nowrap}
@media(max-width:700px){.lettered-tray{width:min(370px,100%);margin:28px auto 20px}.lettered-tray>p{font-size:clamp(1.6rem,7vw,2.1rem)}}
.envelope-screen{background-size:100% 100%;background-repeat:no-repeat}
.invitation{background-size:100% 100svh;background-repeat:repeat-y}

/* Return to the original brown ground with full, unclipped names. */
body,.envelope-screen,.invitation{background-color:var(--scene-brown);background-image:repeating-linear-gradient(0deg,#f7eedb04 0 1px,transparent 1px 4px),repeating-linear-gradient(90deg,#140e0b17 0 1px,transparent 1px 5px);background-size:4px 4px,5px 5px;background-attachment:scroll}
.envelope-screen::before,.invitation::before{opacity:.15}
.cover-copy{width:min(520px,90vw);overflow:visible;padding:0 18px}
.cover-title{font-size:clamp(4.4rem,8vw,6rem);color:var(--ivory);text-shadow:0 1px 2px #10090552;line-height:1.2;min-height:2.4em;padding:0 24px;overflow:visible}
.cover-title>.cover-name-first,.cover-title>.cover-name-second{justify-self:center;text-align:center;width:100%;padding:0 12px;line-height:1.2;margin:0;clip-path:none;overflow:visible}
.cover-title em{left:50%;top:50%;color:#c3d8e3;transform:translate(-50%,-50%);font-size:.32em}
.cover-copy>.eyebrow,.cover-footer,.cover-footer .arabic,.cover-footer .eyebrow,.cover-footer .seal-hint{color:var(--ivory);text-shadow:none}
.assembling .cover-name-first{animation:name-from-top 1.35s cubic-bezier(.16,.8,.24,1) .25s both}
.assembling .cover-name-second{animation:name-from-bottom 1.35s cubic-bezier(.16,.8,.24,1) .65s both}
.assembling .cover-title em{animation:stationery-fade .65s ease 1.4s both}
@keyframes name-from-top{from{opacity:0;transform:translateY(-100svh)}to{opacity:1;transform:translateY(0)}}
@keyframes name-from-bottom{from{opacity:0;transform:translateY(100svh)}to{opacity:1;transform:translateY(0)}}
.hero-content .invitation-title{font-size:clamp(4.8rem,8.5vw,6.3rem);width:100%;padding:0 12px;line-height:1.2;overflow:visible}
.hero-content .invitation-title>span{width:100%;text-align:center!important;line-height:1.2;clip-path:none!important;overflow:visible;animation:none!important}
.hero-content .invitation-title>em{left:50%;top:50%;transform:translate(-50%,-50%);font-size:.3em}
.rising-names{font-size:clamp(2.1rem,4.8vw,3.2rem);width:90%;line-height:1.2}
.rising-names>span{text-align:center!important;line-height:1.2}
.personal-invitation{max-width:480px;margin:18px auto 24px;text-wrap:pretty}
@media(max-width:700px){
 .cover-title{font-size:clamp(3.5rem,15.5vw,4.5rem);padding:0 8px}.cover-copy{width:min(390px,90vw);padding:0 14px}
 .hero-content .invitation-title{font-size:clamp(3.3rem,14.5vw,4.3rem);padding:0 6px}
 .rising-names{font-size:clamp(1.7rem,7.3vw,2.4rem)}
 .envelope-composition{width:min(calc(100vw - 58px),calc((100svh - 365px)*1.5))}
}
@media(max-height:640px){.cover-title{font-size:3.3rem}.envelope-composition{width:min(calc(100vw - 58px),calc((100svh - 325px)*1.5))}}
@media(max-height:480px) and (orientation:landscape){.cover-copy{width:185px;padding:0 8px}.cover-title{font-size:3rem;padding:0}.envelope-composition{width:min(340px,calc((100svh - 102px)*1.5))}}
@media(prefers-reduced-motion:reduce){.assembling .cover-name-first,.assembling .cover-name-second{animation:none!important;transform:none!important;clip-path:none!important}}

/* A soft physical hinge, then the letter slides clear of the pocket. */
.envelope-flap{transition:transform 1.4s cubic-bezier(.42,0,.22,1) .1s;transform-origin:50% 8.5%}
.opening .envelope-flap{transform:rotateX(158deg)}
.rising-letter{transition:transform 1.35s cubic-bezier(.3,.05,.2,1),opacity .3s}
.opening:not(.flap-open) .rising-letter{opacity:0;transform:translate(-50%,12%) scale(1)}
.flap-open .rising-letter{opacity:1;transform:translate(-50%,-48%) scale(1)}
.drawing-in .envelope-journey{transform:translate3d(0,-8px,0) scale(1.035);transition:transform 1.2s ease-in-out}
.envelope-screen.is-dismissed{transition:opacity .9s ease,visibility .9s}
.invitation.arriving .hero-card{animation:none}

/* Larger names, safely inset; Danny arrives first. */
.cover-copy{width:min(610px,94vw);padding:0 20px}
.cover-title{font-size:clamp(5.2rem,10vw,7.3rem);padding:0 20px;line-height:1.18;min-height:2.36em}
.cover-title>.cover-name-first,.cover-title>.cover-name-second{line-height:1.18;padding:0 16px}
.cover-title em{font-size:.28em}
.cover-bow{filter:drop-shadow(0 3px 3px #21140e30)}
.memory-photo,.memory-photo-second{padding:18px;background:#bdcfdb;border:8px ridge #b79a64;box-shadow:inset 0 0 0 3px #f7ebd2,inset 0 0 0 7px #6e5737,0 12px 25px #150d0866}
.memory-photo>img:first-child{border:4px solid #f3ecdf;box-shadow:0 0 0 2px #786143}
.memory-photo .photo-lace{display:none}
.memory-photo figcaption{position:relative;inset:auto;padding:12px 0 0;color:#3d3025;text-shadow:none}
.countdown-blue-flower{width:82px;right:-18px;top:-15px;transform:rotate(18deg)}
.venue-blue-flower{width:95px;left:-25px;top:18%;transform:rotate(-24deg)}
.page-topbar,.page-footer,.section-heading,.closing{color:#deedf5}
.section-heading .eyebrow,.closing>.eyebrow,.closing-date{color:#c3d9e7}
.outline-link{border-color:#94b1c5;background:#d8e8f025}
.invitation-links a{color:#546e83}.fine-divider span{background:#b7cddb}
@media(max-width:700px){
 .cover-title{font-size:clamp(4.2rem,19vw,5.4rem);padding:0 8px}.cover-copy{width:min(410px,94vw);padding:0 14px}
 .envelope-composition{width:min(calc(100vw - 58px),calc((100svh - 405px)*1.5))}
 .memory-photo,.memory-photo-second{padding:10px;border-width:6px}.memory-photo figcaption{font-size:1.2rem;padding-top:9px}
 .countdown-blue-flower{width:58px;right:-12px}.venue-blue-flower{width:68px;left:-20px}
}
@media(max-height:640px){.cover-title{font-size:3.9rem}.envelope-composition{width:min(calc(100vw - 58px),calc((100svh - 345px)*1.5))}}
@media(max-height:480px) and (orientation:landscape){.cover-copy{width:190px;padding:0 4px}.cover-title{font-size:3.2rem}.envelope-composition{width:min(340px,calc((100svh - 102px)*1.5))}}
.assembling .cover-name-first{animation:name-from-bottom 1.35s cubic-bezier(.16,.8,.24,1) .25s both}
.assembling .cover-name-second{animation:name-from-top 1.35s cubic-bezier(.16,.8,.24,1) .65s both}
@media(prefers-reduced-motion:reduce){.assembling .cover-name-first,.assembling .cover-name-second{animation:none!important}}

.seal-art{background-image:url('assets/gold-seal-danny-first.webp')}

/* Engraver's calligraphy with deliberately extravagant capital letters. */
:root{--script:'Pinyon Script',cursive;--letter:'Pinyon Script',cursive}
.cover-title,.hero-content .invitation-title,.rising-names,.small-monogram,.lettered-tray>p,.lettered-tray>p>span{font-family:'Pinyon Script',cursive;font-weight:400;font-synthesis:none;letter-spacing:0;-webkit-text-stroke:0}
.cover-title{font-size:clamp(3.7rem,7.5vw,5.4rem);line-height:1.4;min-height:0;padding:0 22px}
.cover-title>.cover-name-first,.cover-title>.cover-name-second{line-height:1.48;padding:0 12px;overflow:visible}
.cover-title>.cover-name-first::first-letter,.cover-title>.cover-name-second::first-letter{font-size:1.95em;line-height:.65}
.cover-title em{font-family:'Pinyon Script',cursive;color:var(--gold-light);font-size:.33em}
.hero-content .invitation-title{font-size:clamp(3.5rem,7vw,5rem);line-height:1.45}
.hero-content .invitation-title>span{line-height:1.48}
.hero-content .invitation-title>span::first-letter{font-size:1.9em;line-height:.65}
.hero-content .invitation-title>em{font-family:'Pinyon Script',cursive;color:var(--gold);font-size:.32em}
.rising-names{font-size:clamp(1.6rem,4vw,2.6rem)}
.rising-names>span::first-letter{font-size:1.55em;line-height:.7}
.memory-photo,.memory-photo-second{background:#e8dfcc;border-color:#b79a64}
.hero-setting::after{border-color:#ad986e;background:repeating-linear-gradient(90deg,#eae1cb 0 18px,#d0c5ae 18px 25px,#eae1cb 25px 34px,#655b4355 34px 35px,#eae1cb 35px 44px)}
.page-topbar,.page-footer,.section-heading,.closing{color:var(--ivory)}
.section-heading .eyebrow,.closing>.eyebrow,.closing-date{color:var(--gold-light)}
.outline-link{border-color:var(--gold);background:transparent}
.invitation-links a{color:var(--ink)}.fine-divider span{background:var(--gold-light)}.fine-divider i{background:var(--gold-light);border-color:var(--gold)}
@media(max-width:700px){
 .cover-copy{width:min(410px,94vw);padding:0 14px}.cover-title{font-size:clamp(3rem,13.5vw,3.8rem);padding:0 8px}
 .cover-title>.cover-name-first,.cover-title>.cover-name-second{padding:0 8px;line-height:1.5}
 .hero-content .invitation-title{font-size:clamp(2.6rem,11.5vw,3.5rem);padding:0 3px}
 .rising-names{font-size:clamp(1.35rem,6.2vw,1.9rem)}
 .envelope-composition{width:min(calc(100vw - 58px),calc((100svh - 425px)*1.5))}
}
@media(max-height:640px){.cover-title{font-size:2.7rem}.envelope-composition{width:min(calc(100vw - 58px),calc((100svh - 355px)*1.5))}}
@media(max-height:480px) and (orientation:landscape){.cover-title{font-size:2.2rem}.cover-copy{width:200px}.envelope-composition{width:min(340px,calc((100svh - 102px)*1.5))}}

/* Real carved frames replace the flat photo borders. */
.memory-photo,.memory-photo-second{padding:0;background:none;border:0;box-shadow:none;filter:drop-shadow(2px 12px 8px #10090560)}
.framed-portrait{position:relative;width:100%;aspect-ratio:4/5;isolation:isolate}
.framed-portrait>img:first-child{position:absolute;left:18%;top:16%;width:64%;height:68%;object-fit:cover;border:0;box-shadow:none}
.framed-portrait>.antique-frame-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:2;pointer-events:none}
.memory-photo figcaption{color:var(--ivory);padding:12px 0 0;text-shadow:0 1px 2px #120a0660}
.memory-photo>.photo-bow{width:29%;max-width:95px;top:-24px}
/* A gauzy embroidered layer lets the brown ground show through. */
.envelope-screen::before,.invitation::before{background-image:url('assets/sheer-embroidered-lace.webp');background-size:100% 110svh;background-position:center top;background-repeat:repeat-y;opacity:.38}
.sheer-lace-sheet{position:absolute;inset:-22px -20px 0;z-index:-1;pointer-events:none;border:70px solid transparent;border-image:url('assets/sheer-embroidered-lace.webp') 160 fill / 70px / 0 stretch;transform:rotate(-2deg);filter:drop-shadow(0 3px 2px #1d110925)}
.hero-setting::after{opacity:.4}
/* The silk curtain panels part before the sealed invitation arrives. */
.curtain-stage{display:none;position:fixed;inset:0;z-index:70;pointer-events:none;overflow:hidden}
.js .curtain-stage{display:block}.curtain-stage[hidden]{display:none!important}
.silk-curtain{position:absolute;top:0;bottom:0;width:55%;will-change:transform;filter:drop-shadow(0 9px 20px #170c0755);transition:transform 2.35s cubic-bezier(.5,.03,.18,1) .2s,opacity .6s 2.4s}
.silk-curtain-left{left:-3%}.silk-curtain-right{right:-3%}
.silk-curtain>img{width:100%;height:100%;max-width:none;object-fit:fill}
.silk-curtain-right>img{transform:scaleX(-1)}
.curtains-opening .silk-curtain-left{transform:translateX(-101%);opacity:0}
.curtains-opening .silk-curtain-right{transform:translateX(101%);opacity:0}
@media(max-width:700px){.sheer-lace-sheet{inset:-16px -10px 0;border-image-width:42px}.memory-photo,.memory-photo-second{padding:0;border:0}.memory-photo>.photo-bow{width:30%;max-width:65px;top:-17px}.memory-photo figcaption{font-size:1.3rem}}
@media(prefers-reduced-motion:reduce){.curtain-stage{display:none!important}}

.framed-portrait>img:first-child{left:20.3%;top:19.3%;width:59.2%;height:60.7%}
.silk-curtain{width:84%}.silk-curtain-left{left:-15%}.silk-curtain-right{right:-15%}

.seal-art{background-image:url('assets/script-gold-seal.webp')}
.assembling .cover-name-first{animation:name-from-top 1.35s cubic-bezier(.16,.8,.24,1) .25s both}
.assembling .cover-name-second{animation:name-from-bottom 1.35s cubic-bezier(.16,.8,.24,1) .65s both}
@media(prefers-reduced-motion:reduce){.assembling .cover-name-first,.assembling .cover-name-second{animation:none!important}}

/* Carry the social preview's flowing calligraphy through the stationery. */
:root{--script:'Great Vibes','Pinyon Script',cursive;--letter:'Great Vibes','Pinyon Script',cursive}
.cover-title,.cover-title em,.hero-content .invitation-title,.hero-content .invitation-title>em,.rising-names,.small-monogram,.small-monogram span,.section-title,.story-opening,.story-signature,.memory-photo figcaption,.lettered-tray>p,.lettered-tray>p>span,.wedding-date,.hero-venue,.closing-note{font-family:'Great Vibes','Pinyon Script',cursive;font-weight:400;font-synthesis:none;letter-spacing:0;-webkit-text-stroke:0}
.section-title{font-size:clamp(2.6rem,6vw,4rem);line-height:1.35}
.closing-note{font-size:clamp(1.55rem,3vw,2rem);line-height:1.6}
.hero-venue{font-size:1.8rem;line-height:1.5}
.cover-title{font-size:clamp(3.6rem,7.4vw,5.2rem)}
.cover-title>.cover-name-first::first-letter,.cover-title>.cover-name-second::first-letter{font-size:1.65em}
.hero-content .invitation-title>span::first-letter{font-size:1.65em}
@media(max-width:700px){.cover-title{font-size:clamp(2.8rem,12.3vw,3.5rem)}.hero-content .invitation-title{font-size:clamp(2.3rem,10vw,3.1rem)}.hero-content .hero-venue{font-size:1.55rem}.section-title{font-size:2.6rem}.closing-note{font-size:1.6rem}}
@media(max-height:640px){.cover-title{font-size:2.6rem}}
@media(max-height:480px) and (orientation:landscape){.cover-title{font-size:2rem}}

/* Pinned tops and moving silk ties gather the panels into a soft center arch. */
.curtain-stage{transition:opacity .65s ease}
.curtain-stage.curtains-dismissed{opacity:0}
.silk-curtain{transition:transform 2.7s cubic-bezier(.42,.02,.22,1) .25s,opacity 1.1s ease 1.55s}
.silk-curtain-left{transform-origin:left top}.silk-curtain-right{transform-origin:right top}
.curtains-opening .silk-curtain-left{transform:translateX(-9%) scaleX(.38);opacity:0}
.curtains-opening .silk-curtain-right{transform:translateX(9%) scaleX(.38);opacity:0}
.tied-curtain{position:absolute;top:-1%;height:102%;width:32%;max-width:none;object-fit:fill;opacity:0;pointer-events:none;filter:drop-shadow(4px 8px 10px #170c0738);transition:opacity 1.5s ease .85s,transform 2.6s cubic-bezier(.42,.02,.22,1) .25s}
.tied-curtain-left{left:-4%;transform:translateX(12%) scaleX(1.18);transform-origin:left top}
.tied-curtain-right{right:-4%;transform:translateX(-12%) scaleX(-1.18);transform-origin:center top}
.curtains-opening .tied-curtain{opacity:1}
.curtains-opening .tied-curtain-left{transform:translateX(0) scaleX(1)}
.curtains-opening .tied-curtain-right{transform:translateX(0) scaleX(-1)}
.curtain-tie{position:absolute;top:58%;width:9%;max-width:95px;height:auto;opacity:0;transition:left 2.6s cubic-bezier(.42,.02,.22,1) .2s,right 2.6s cubic-bezier(.42,.02,.22,1) .2s,opacity .6s ease .2s;filter:drop-shadow(1px 3px 3px #281a1028)}
.curtain-tie-left{left:38%;transform:rotate(-8deg)}.curtain-tie-right{right:38%;transform:rotate(8deg)}
.curtains-opening .curtain-tie-left{left:1%;opacity:1}.curtains-opening .curtain-tie-right{right:1%;opacity:1}
@media(max-width:700px){.tied-curtain{width:26%}.tied-curtain-left{left:-5%}.tied-curtain-right{right:-5%}.curtain-tie{width:9%;top:59%}.curtains-opening .curtain-tie-left{left:0}.curtains-opening .curtain-tie-right{right:0}}

/* Finer copperplate strokes while retaining the sweeping vintage capitals. */
.cover-title>span{font-family:'Great Vibes','Pinyon Script',cursive;font-weight:400;color:#f2eadc;-webkit-text-stroke:.28px var(--scene-brown);paint-order:fill stroke;text-shadow:none}
.cover-title>span::first-letter{font-size:1.8em!important}
.hero-content .invitation-title>span{font-family:'Great Vibes','Pinyon Script',cursive;font-weight:400;-webkit-text-stroke:.22px #f7f2e7;paint-order:fill stroke;text-shadow:none}
.hero-content .invitation-title>span::first-letter{font-size:1.8em!important}
.rising-names>span{font-weight:400;-webkit-text-stroke:.12px #f7f2e7;paint-order:fill stroke}

/* Katrina on the left, Danny on the right, with shared horizontal alignment. */
.cover-title,.hero-content .invitation-title,.rising-names{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);grid-template-rows:auto;align-items:center;column-gap:.16em;min-height:0;text-align:center;overflow:visible}
.cover-title>.cover-name-first{grid-column:1;grid-row:1;justify-self:center}
.cover-title>.cover-name-second{grid-column:3;grid-row:1;justify-self:center}
.cover-title>span,.hero-content .invitation-title>span,.rising-names>span{width:auto;padding:0;margin:0!important;white-space:nowrap;line-height:1.5;text-align:center!important;overflow:visible}
.cover-title>em,.hero-content .invitation-title>em,.rising-names>i{position:static;grid-column:2;grid-row:1;transform:none;margin:0;font-size:.38em;line-height:1}
.cover-title{font-size:clamp(2.9rem,5.5vw,4.3rem);padding:0 8px}
.cover-copy{width:min(680px,94vw);padding:0 16px}
.hero-content .invitation-title{font-size:clamp(2.8rem,5.2vw,4.2rem);padding:0;margin:18px auto;width:100%}
.rising-names{font-size:clamp(1.1rem,2.9vw,1.9rem);width:100%}
@media(max-width:700px){
 .cover-title{font-size:clamp(1.75rem,7.8vw,2.7rem);padding:0;column-gap:.12em}
 .cover-copy{width:94vw;padding:0 16px}
 .cover-title>span::first-letter{font-size:1.55em!important}
 .hero-content .invitation-title{font-size:clamp(1.5rem,6.4vw,2.3rem);column-gap:.12em}
 .hero-content .invitation-title>span::first-letter{font-size:1.55em!important}
 .rising-names{font-size:clamp(.95rem,4.2vw,1.4rem)}
 .rising-names>span::first-letter{font-size:1.3em}
}
@media(max-height:480px) and (orientation:landscape){.cover-copy{width:225px;padding:0 8px}.cover-title{font-size:1.55rem}.cover-title>span::first-letter{font-size:1.5em!important}}

/* Layered keepsakes and readable stationery. */
.moss-lace-sheet{position:absolute;inset:-30px -30px 0;width:calc(100% + 60px);height:100%;object-fit:fill;z-index:-2;transform:rotate(2deg);opacity:.86;pointer-events:none}
.cover-blue-keepsake{position:absolute;width:clamp(65px,12vw,110px);right:0;bottom:0;z-index:8;transform:rotate(12deg);pointer-events:none}
.cameo-keepsake{position:absolute;width:clamp(95px,18vw,150px);left:1%;bottom:-35px;transform:rotate(-12deg);z-index:6;pointer-events:none}
.cover-title em,.invitation-title em{z-index:5;opacity:1!important;padding:0 .05em;color:inherit}
.cover-copy{overflow:visible}.cover-title,.invitation-title{overflow:visible}
.cover-title>span,.invitation-title>span{-webkit-text-stroke:0;font-weight:400}
.arabic-dedication{font-size:clamp(2rem,5vw,3rem)!important;color:#55432e!important;opacity:1!important}
.arabic-translation{color:#57442f;opacity:1;font-size:1rem;letter-spacing:.08em}
.story-signature{color:#463522;font-size:clamp(1.8rem,4vw,2.7rem);line-height:1.5}
.outline-link{background:#faf3e5;color:#493820!important;border:1px solid #80683e;font-size:1rem;font-weight:600;padding:15px 26px;opacity:1}
.outline-link:hover{background:#eee0c7;color:#302314!important}
.cross-keepsake{width:105px;right:7%;bottom:0}
.lettered-tray{width:min(590px,100%);transform:rotate(-2deg)}
.lettered-tray p{inset:28% 19% 30%;margin:0;display:flex;align-items:center;justify-content:center;line-height:1.4;color:#48321d}
.lettered-tray p span{font-size:clamp(1.4rem,5.3vw,2.7rem);white-space:nowrap}
.coffee-keepsake.is-revealed{animation:coffee-pour 9s ease-in-out infinite;transform-origin:72% 55%}
@keyframes coffee-pour{0%,20%,85%,100%{transform:translate(0,0) rotate(-9deg)}40%,65%{transform:translate(24px,-24px) rotate(25deg)}}
@media(max-width:600px){.moss-lace-sheet{inset:-22px -15px 0;width:calc(100% + 30px)}.cross-keepsake{width:77px;right:7%;bottom:0}.cover-blue-keepsake{right:-4%;bottom:-3%}.lettered-tray p span{font-size:clamp(1.4rem,6vw,2rem)}}
@media(prefers-reduced-motion:reduce){.coffee-keepsake.is-revealed{animation:none}}
.cover-opening-florals{position:absolute;z-index:6;width:clamp(140px,30vw,245px);height:auto;left:-10%;top:8%;transform:rotate(-12deg);pointer-events:none;filter:drop-shadow(3px 8px 5px #1b11084d)}
.hero-setting::after{display:none}
.moss-lace-sheet{z-index:-1;inset:-34px -34px -12px;width:calc(100% + 68px);height:calc(100% + 12px)}
.sheer-lace-sheet{z-index:0;pointer-events:none}
.hero-card{position:relative;z-index:1}
@media(max-width:600px){.cover-opening-florals{width:43%;left:-10%;top:12%}.moss-lace-sheet{inset:-24px -18px -10px;width:calc(100% + 36px)}}

.cover-title>span{ -webkit-text-stroke:.18px var(--scene-brown)}
.hero-content .invitation-title>span{-webkit-text-stroke:.15px #f7f2e7}
.cover-title>em{color:#e5d2a9!important}.hero-content .invitation-title>em{color:#6b5132!important}
.album-flowers{width:225px;right:-58px}
@media(max-width:600px){.album-flowers{width:150px;right:-36px}}
.coffee-scene{position:absolute;left:4%;bottom:0;width:280px;height:220px;z-index:4;pointer-events:none}
.coffee-pot{position:absolute;left:0;bottom:40px;width:140px;transform-origin:50% 65%;transform:rotate(-9deg) scaleX(-1);z-index:2}
.coffee-cups{position:absolute;left:140px;bottom:0;width:124px;z-index:3}
.coffee-stream{position:absolute;left:148px;top:76px;width:30px;height:50px;object-fit:fill;opacity:0;z-index:1}
.coffee-scene.is-revealed .coffee-pot{animation:pour-pot 9s ease-in-out infinite}
.coffee-scene.is-revealed .coffee-stream{animation:pour-stream 9s linear infinite}
@keyframes pour-pot{0%,20%,85%,100%{transform:rotate(-9deg) scaleX(-1)}40%,65%{transform:translate(-4px,-10px) rotate(25deg) scaleX(-1)}}
@keyframes pour-stream{0%,39%,66%,100%{opacity:0}43%,62%{opacity:.9}}
@media(max-width:600px){.coffee-scene{left:2%;bottom:-8px;transform:scale(.7)!important;transform-origin:left bottom}}
@media(prefers-reduced-motion:reduce){.coffee-scene.is-revealed .coffee-pot,.coffee-scene.is-revealed .coffee-stream{animation:none}}

/* The portrait keepsake rests beside the sealed envelope. */
.cover-locket{position:absolute;right:-7%;bottom:-12%;width:31%;max-width:185px;z-index:8;transform:rotate(10deg);transition:opacity .45s ease,transform .7s ease;pointer-events:none}
.envelope-screen.opening .cover-locket{opacity:0;transform:translate(14px,12px) rotate(14deg)}
@media(max-width:600px){.cover-locket{right:-6%;bottom:-12%;width:31%}}
@media(prefers-reduced-motion:reduce){.cover-locket{transition:none}}

/* The first cup fills while the pot pours, then settles before the next pour. */
.coffee-level{position:absolute;left:158px;top:117px;width:40px;height:13px;object-fit:fill;z-index:4;transform:translateY(7px) scale(.72,.6);opacity:0;transform-origin:center}
.coffee-scene.is-revealed .coffee-level{animation:coffee-fill 9s ease-in-out infinite}
@keyframes coffee-fill{0%,39%{opacity:0;transform:translateY(7px) scale(.72,.6)}43%{opacity:1;transform:translateY(7px) scale(.72,.6)}65%,91%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(0) scale(1)}}
@media(prefers-reduced-motion:reduce){.coffee-scene.is-revealed .coffee-level{animation:none;opacity:1;transform:none}}

.love-poem{margin:34px 0 26px;padding:26px 8px;text-align:center;border-top:1px solid #aa90664d;border-bottom:1px solid #aa90664d;color:#4d3b2a}
.love-poem p[lang=ar]{font-family:'Noto Naskh Arabic','Amiri','Traditional Arabic',serif;font-size:clamp(1.65rem,4vw,2.15rem);line-height:1.8;margin:0 0 12px}
.love-poem .poem-translation{font-family:'Cormorant Garamond',serif;font-size:1.15rem;font-style:italic;line-height:1.6;margin:0 0 14px}
.love-poem cite{font-family:'Cormorant Garamond',serif;font-size:.95rem;font-style:normal}.love-poem cite a{color:#655039;text-decoration:none}
.story-signature{text-align:center}.story-signature small{font-family:var(--letter);font-size:1.15rem;font-style:italic}

/* Bring their names together, retaining room for the sweeping capitals. */
.cover-title,.hero-content .invitation-title,.rising-names{grid-template-columns:max-content auto max-content;justify-content:center;column-gap:.17em}
.cover-title>.cover-name-first{justify-self:end}.cover-title>.cover-name-second{justify-self:start}
/* The flap hinges first; the paper clears the pocket before taking over the view. */
.envelope-flap{transition:transform 1.2s cubic-bezier(.35,.05,.25,1) .05s}
.envelope-flap-back{transform:rotateX(180deg) translateZ(.5px)}
.opening .envelope-flap{transform:rotateX(170deg)}
.rising-letter{transition:transform 2s cubic-bezier(.28,.05,.2,1),opacity .3s}
.opening:not(.flap-open) .rising-letter{transform:translate(-50%,16%) scale(1);opacity:0}
.flap-open .rising-letter{transform:translate(-50%,-132%) scale(1);opacity:1}
.drawing-in .envelope-journey{transform:none;transition:none}
.drawing-in .rising-letter{visibility:hidden}
.opening .cover-opening-florals{opacity:.65;transition:opacity 1.8s ease}
.paper-zoom{position:fixed!important;z-index:80!important;min-height:0!important;margin:0!important;aspect-ratio:auto!important;pointer-events:none;transform-origin:center;transition:none;filter:drop-shadow(0 12px 28px #160b0755);overflow:visible}
.paper-zoom.zooming{transition:left 1.7s cubic-bezier(.4,0,.2,1),top 1.7s cubic-bezier(.4,0,.2,1),transform 1.7s cubic-bezier(.4,0,.2,1),opacity .6s ease}
.paper-zoom.zoom-finished{opacity:0!important}
@media(prefers-reduced-motion:reduce){.paper-zoom{display:none}.envelope-flap,.rising-letter{transition:none}}

.lettered-tray p{inset:24% 18% 26%;gap:8px}
.lettered-tray p small{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:clamp(.875rem,2vw,1.05rem);line-height:1.35;text-align:center;max-width:100%}
.scattered-keepsake{position:absolute;height:auto;pointer-events:none;z-index:6;filter:drop-shadow(2px 5px 4px #1a100638)}
.countdown-key{width:85px;left:-35px;bottom:-30px;--reveal-rotation:-14deg}
.story-watch{width:90px;left:-38px;bottom:8%;transform:rotate(-12deg)}
.closing-swallow{width:85px;right:1%;top:34%;--reveal-rotation:12deg}
.album-flowers{width:180px;right:-54px;bottom:0;transform:rotate(-10deg)}
@media(max-width:600px){.countdown-key{width:58px;left:-15px;bottom:-25px}.story-watch{width:65px;left:-22px;bottom:6%}.closing-swallow{width:58px;right:0;top:27%}.album-flowers{width:125px;right:-34px}.lettered-tray p{gap:5px}}

.cover-moss-lace{position:absolute;inset:-12% -13%;width:126%;height:124%;max-width:none;object-fit:fill;z-index:-2;transform:rotate(2deg);opacity:.94;pointer-events:none;filter:drop-shadow(0 5px 5px #100b074d)}
.opening .cover-moss-lace{opacity:.7;transition:opacity 1.5s ease}

/* Moss lace beneath every sheet of white stationery. */
.paper-card.deckled-paper::before{content:'';display:block;position:absolute;inset:-31px;z-index:-2;pointer-events:none;border:47px solid transparent;border-image:url('assets/moss-green-lace.webp') 150 fill / 47px / 0 stretch;transform:rotate(1deg);opacity:.96;filter:drop-shadow(0 4px 4px #130d0740)}
.rising-letter::before{content:'';position:absolute;inset:-12px;z-index:-1;pointer-events:none;border:26px solid transparent;border-image:url('assets/moss-green-lace.webp') 150 / 26px / 0 stretch;transform:rotate(1deg)}
@media(max-width:600px){.paper-card.deckled-paper::before{inset:-24px;border-image-width:36px}.rising-letter::before{inset:-9px;border-image-width:22px}}
.album-shared-caption{grid-column:1/-1;text-align:center;align-self:start;font-family:'Great Vibes','Pinyon Script',cursive;font-weight:400;font-size:clamp(1.6rem,4vw,2.5rem);line-height:1.5;color:#f1e7d6;margin:8px 0 18px;position:relative;z-index:6}
.dove-flight-layer{position:fixed;inset:0;z-index:2;pointer-events:none;overflow:hidden;opacity:.64}
.flying-dove{position:absolute;left:0;top:0;width:clamp(65px,9vw,120px);aspect-ratio:1;will-change:transform;filter:drop-shadow(0 3px 3px #1c100530)}
.dove-wingbeat{display:block;width:100%;height:100%;background-image:url('assets/flying-dove-strip.webp');background-size:300% 100%;background-repeat:no-repeat;animation:dove-wingbeat .95s steps(1,end) infinite}
.dove-two .dove-wingbeat{animation-delay:-.38s;animation-duration:1.13s}
@keyframes dove-wingbeat{0%,100%{background-position:0% 50%}33%,83%{background-position:50% 50%}50%,66%{background-position:100% 50%}}
@media(max-width:600px){.dove-flight-layer{opacity:.48}.flying-dove{width:65px}.album-shared-caption{margin:3px 0 20px}}
@media(prefers-reduced-motion:reduce){.dove-flight-layer{display:none}.dove-wingbeat{animation:none}}

.save-date-notice{font-family:var(--sans);font-size:.9rem!important;line-height:1.6;color:#4b3b2b;font-weight:600;letter-spacing:.015em;margin:18px auto 0;max-width:340px}
.formal-invitation-notice{margin:25px auto 28px;padding:20px 24px;max-width:500px;background:#f4ecdd;color:#453425;border:1px solid #b69b69;box-shadow:0 5px 18px #170c0725;font-family:var(--sans);font-size:1rem;line-height:1.6;position:relative;z-index:5}
.formal-invitation-notice strong{font-weight:600}.formal-invitation-notice p{margin:8px 0 0;font-size:.95rem}
.dove-flight-layer{z-index:51}
.envelope-screen.drawing-in~.dove-flight-layer{opacity:0}
body:has(.envelope-screen.drawing-in:not([hidden])) .dove-flight-layer{opacity:0;transition:opacity .4s ease}
.photo-album{row-gap:20px;padding-bottom:225px}
@media(max-width:600px){.photo-album{row-gap:12px;padding-bottom:170px}}

/* Their flight becomes a shared home at the end of the letter. */
.dove-flight-layer{opacity:.75}
.flying-dove{width:clamp(72px,8.5vw,130px)}
.dove-wingbeat{background-image:url('assets/realistic-dove-six.webp');background-size:600% 100%;animation:dove-natural-wingbeat 1.1s steps(1,end) infinite;transform:rotateY(var(--dove-yaw,0deg));transition:transform .65s ease;backface-visibility:visible}
.dove-two .dove-wingbeat{animation-duration:1.24s;animation-delay:-.42s}
@keyframes dove-natural-wingbeat{0%,100%{background-position:0% 50%}16.66%{background-position:20% 50%}33.33%{background-position:40% 50%}50%{background-position:60% 50%}66.66%{background-position:80% 50%}83.33%{background-position:100% 50%}}
.dove-home{position:relative;isolation:isolate;width:min(350px,78vw);margin:5px auto 26px;min-height:170px;pointer-events:none}
.dove-home img{width:100%;height:auto;opacity:var(--home-opacity,1);filter:drop-shadow(0 6px 7px #160e0840)}
.dove-home figcaption{font-family:'Great Vibes',cursive;color:#f1e7d6;font-size:clamp(1.5rem,4vw,2rem);line-height:1.5;margin-top:5px;opacity:var(--home-opacity,1)}
@media(max-width:600px){.dove-flight-layer{opacity:.62}.dove-home{width:min(285px,78vw)}}
@media(prefers-reduced-motion:reduce){.dove-flight-layer{display:none}.dove-home img,.dove-home figcaption{opacity:1}}

.flying-dove{aspect-ratio:1/2}
.venue-figure>img{width:100%;height:auto;max-height:680px;object-fit:contain;filter:none;mix-blend-mode:multiply}
.dove-home img{aspect-ratio:1377/1142}

.dove-wingbeat{animation-duration:.74s}.dove-two .dove-wingbeat{animation-duration:.83s}

/* Pale blue lace peeks out beneath the moss-green embroidery. */
.baby-blue-lace{position:absolute;inset:-43px;z-index:-3;pointer-events:none;background:#dceef7;mask:url('assets/moss-green-lace.webp') center/100% 100% no-repeat;-webkit-mask:url('assets/moss-green-lace.webp') center/100% 100% no-repeat;transform:rotate(-2deg);opacity:.95}
.envelope-composition>.baby-blue-lace{inset:-16% -17%;transform:rotate(-3deg)}
.rising-letter>.baby-blue-lace{inset:-19px;z-index:-2}
@media(max-width:600px){.baby-blue-lace{inset:-32px}.rising-letter>.baby-blue-lace{inset:-15px}}

/* Small heirlooms and candlelight leave the closing words room to breathe. */
.envelope-composition>.baby-blue-lace,.rising-letter>.baby-blue-lace,.paper-zoom>.baby-blue-lace{display:none}
.cover-opening-florals{width:clamp(125px,27vw,215px);left:-17%;top:3%;transform:rotate(-20deg)}
.cross-keepsake{width:155px;right:2%;bottom:-12px}
.closing{position:relative;padding-bottom:140px}
.dove-home{position:absolute;right:0;bottom:0;width:145px;min-height:0;margin:0}
.closing-scripture{max-width:440px;margin:22px auto 12px;padding:0 15px;color:var(--ivory);font-family:'Cormorant Garamond',serif;font-size:1.3rem;font-style:italic;line-height:1.6}
.closing-scripture cite{font-size:.9rem;font-style:normal}.closing-scripture a{color:inherit}
.love-poem p[lang=ar]{line-height:1.95}
.satin-underlay{position:absolute;inset:-45px -35px;z-index:-4;background:url('assets/ivory-silk-draping.webp') center/cover;opacity:.36;transform:rotate(-3deg);mask:linear-gradient(90deg,#000,transparent 35%,transparent 65%,#000);pointer-events:none}
.mini-candles{display:flex;gap:9px;align-items:end;justify-content:center;pointer-events:none;margin:20px auto 5px;height:58px}
.mini-candles i{position:relative;display:block;width:24px;height:29px;border:1px solid #e9d8b699;border-radius:3px 3px 7px 7px;background:linear-gradient(90deg,#fff8df44,#fff5dba6 40%,#c7ac7977);box-shadow:0 3px 6px #120a0644,inset 0 -5px 8px #f2deab55}
.mini-candles i:nth-child(2){height:37px;width:27px}.mini-candles i::before{content:'';position:absolute;width:7px;height:13px;left:calc(50% - 3px);top:-12px;border-radius:55% 45% 45% 45%;background:radial-gradient(ellipse at 50% 75%,#fff8de 20%,#ffd081 65%,#efad52);box-shadow:0 0 12px 5px #ffd89b3d;transform-origin:bottom;animation:little-flame 2.7s ease-in-out infinite alternate}.mini-candles i:nth-child(2)::before{animation-delay:-1.3s}.mini-candles i:nth-child(3)::before{animation-delay:-.7s}
.venue-card>.mini-candles{position:absolute;left:-23px;bottom:12%;transform:rotate(-4deg);z-index:3}
@keyframes little-flame{0%,100%{transform:rotate(-4deg) scaleY(.94);opacity:.85}40%{transform:rotate(5deg) scaleY(1.08);opacity:1}70%{transform:rotate(-2deg)}}
@media(max-width:600px){.cover-opening-florals{width:38%;left:-16%;top:7%}.cross-keepsake{width:112px;right:0;bottom:-15px}.dove-home{width:115px;right:3px}.closing{padding-bottom:115px}.satin-underlay{inset:-33px -18px}.venue-card>.mini-candles{left:-12px;gap:5px}.closing-scripture{font-size:1.15rem}}
@media(prefers-reduced-motion:reduce){.mini-candles i::before{animation:none}}

.hero-card>.baby-blue-lace{display:none}

/* The sealed envelope stays quiet; the pair takes flight only after opening. */
.dove-flight-layer{visibility:hidden;opacity:0}
.dove-flight-layer.is-flying{visibility:visible;opacity:.68}
.cover-moss-lace{display:none}
.envelope-composition{transform:scale(1.08);transform-origin:center}
.cover-opening-florals{left:-25%;top:42%;width:clamp(100px,22vw,175px);transform:rotate(-30deg);z-index:1}
.closing{padding-bottom:35px}
@media(max-width:600px){.cover-opening-florals{left:-23%;top:45%;width:32%}.envelope-composition{transform:scale(1.06)}}

/* A closer still life, ivory lace and a small ribbon-tied signoff. */
.baby-blue-lace,.mini-candles,.candle-glow,.dove-home{display:none!important}
.photo-album{padding-bottom:180px;row-gap:12px}
.coffee-scene{left:10%;bottom:24px;transform:scale(1.12)!important;transform-origin:left bottom}
.coffee-pot{width:155px}.coffee-cups{left:150px}.coffee-stream{left:158px}.coffee-level{left:168px}
.cross-keepsake{right:9%;bottom:44px}.album-flowers{right:-20px;bottom:50px}
.story-card{margin-top:12px}
.lettered-tray{width:min(350px,86%);margin:22px auto 18px;position:relative}
.lettered-tray p{inset:25% 16% 28%;gap:4px}.lettered-tray p span{font-size:clamp(1.6rem,4.5vw,2rem)}
.lettered-tray>.tray-silk-bow{position:absolute;width:110px;height:auto;right:-26px;top:-16px;transform:rotate(19deg);filter:drop-shadow(0 3px 3px #170b0733);z-index:3}
.venue-figure>img{mix-blend-mode:normal;border-radius:8px}
@media(max-width:600px){.photo-album{padding-bottom:160px}.coffee-scene{left:1%;bottom:22px;transform:scale(.85)!important}.cross-keepsake{right:2%;bottom:42px}.album-flowers{right:-12px;bottom:60px;width:105px}.lettered-tray{width:min(300px,88%)}.lettered-tray>.tray-silk-bow{width:90px;right:-18px;top:-10px}}

/* A plain monogram-sealed envelope reveals the separate lace-wrapped card. */
.envelope-composition::before{display:none}
.envelope-composition{transform:scale(1.13)}
.plain-envelope-pocket{background:linear-gradient(145deg,#f3eee5,#e4ddce);box-shadow:inset 0 -1px 0 #c6baa5}
.plain-envelope-pocket::before,.plain-envelope-pocket::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(135deg,#fbf7ed,#e8e1d4);clip-path:polygon(0 0,51% 62%,0 100%)}
.plain-envelope-pocket::after{transform:scaleX(-1)}
.plain-envelope-flap{position:absolute;inset:0;width:100%;height:100%;clip-path:polygon(0 0,100% 0,50% var(--flap-tip));backface-visibility:hidden;transform:translateZ(.5px);background:linear-gradient(#f7f3eb,#e9e2d4)}
.envelope-lining,.envelope-flap-back{background:#ede7dc url('assets/pastoral-envelope-liner.webp') center/cover no-repeat}
.envelope-lining::after{display:none}.envelope-flap-back{border:0}
.rising-letter{width:88%;aspect-ratio:.92;background:none;padding:17% 12% 22%;isolation:isolate;gap:9px;top:35%}
.rising-letter::before,.letter-lace{display:none}
.delicate-sleeve-art{position:absolute;inset:-6%;width:112%;height:112%;max-width:none;object-fit:fill;z-index:-1;filter:drop-shadow(0 5px 6px #22140d30)}
.rising-names{font-size:clamp(2.5rem,5.6vw,4rem);line-height:1.25}
.flap-open .rising-letter{transform:translate(-50%,-115%) scale(1)}
.hero-card>.card-lace{opacity:.55;border-image-source:url('assets/sheer-embroidered-lace.webp')}
@media(max-width:600px){.envelope-composition{transform:scale(1.1)}.rising-letter{width:91%;padding:17% 10% 22%;gap:6px}.rising-names{font-size:clamp(1.9rem,7.8vw,2.6rem)}}

.lettered-tray p{inset:25% 22% 30%;display:flex;flex-direction:column;gap:0;line-height:1.2}.lettered-tray p small{align-self:center;margin-bottom:5px}.lettered-tray p .tray-name-katrina{align-self:flex-start;font-size:1.8rem}.lettered-tray p .tray-name-danny{align-self:flex-end;font-size:1.8rem}.tray-silk-bow{display:none}
.envelope-flap{transform-origin:50% 0}

.rising-letter{justify-content:flex-start;padding:12% 17% 44% 9%}
.rising-names{font-size:clamp(1.9rem,4.8vw,3.3rem)}
.envelope-lining,.envelope-flap-back{background-size:112% auto;background-position:center 42%}
@media(max-width:600px){.rising-letter{padding:12% 17% 44% 9%}.rising-names{font-size:clamp(1.7rem,6.8vw,2.25rem)}}

.ring-keepsake{width:min(275px,65%);margin:5px auto 20px;filter:drop-shadow(0 5px 5px #10090645)}
.ring-keepsake::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 40%,#fff7df33 48%,#fffaf066 50%,transparent 58%);background-size:300% 100%;mask:url('assets/vintage-wood-ring-boxes.webp') center/contain no-repeat;-webkit-mask:url('assets/vintage-wood-ring-boxes.webp') center/contain no-repeat;animation:ring-lustre 9s ease-in-out infinite}
@keyframes ring-lustre{0%,60%{background-position:100% 0;opacity:0}68%{opacity:.6}85%{background-position:0 0;opacity:.35}100%{background-position:0 0;opacity:0}}
@media(max-width:600px){.ring-keepsake{width:min(225px,65%);margin:5px auto 18px}}
@media(prefers-reduced-motion:reduce){.ring-keepsake::after{animation:none;display:none}}

/* Two separate reveals share one gold-seal click, within the viewport. */
.envelope-composition::before{display:block;inset:-5% -5%;border-image:url('assets/sheer-embroidered-lace.webp') 160 / 45px round;opacity:.62;transform:rotate(-2deg)}
.opening .cover-copy,.opening .cover-footer{opacity:0;transition:opacity .45s}
.opening .envelope-composition{position:fixed;left:50%;top:73svh;width:min(470px,78vw,40svh);margin:0;transform:translate(-50%,-50%) scale(1);transition:width 1s ease,top 1s ease,transform 1s ease}
.opening .cover-locket,.opening .cover-opening-florals{opacity:0;transition:opacity .5s}
.opening .envelope-flap{transform:rotateX(170deg);transform-origin:50% 0}
.envelope-flap-back{clip-path:polygon(0 0,100% 0,50% var(--flap-tip));background-size:112% auto;background-position:center 42%}
.letter-slot{display:none}
.sleeve-stage{position:fixed;z-index:72;pointer-events:none;aspect-ratio:3/4;transition:left 1.6s cubic-bezier(.22,.6,.25,1),top 1.6s cubic-bezier(.22,.6,.25,1),transform 1.6s ease,opacity .5s;filter:drop-shadow(0 9px 12px #110b0844)}
.sleeve-stage img{width:100%;height:100%;object-fit:contain}
.sleeve-stage.sleeve-released{transform:translate(-85%,-25%) scale(.67)!important;opacity:.65!important}
.sleeve-stage.stage-finished{opacity:0!important}
.rising-letter.save-date-stage{border:0;outline:0;min-height:0!important;aspect-ratio:1.12;background:url('assets/ivory-deckled-paper.webp') center/100% 100% no-repeat;padding:8% 7%;justify-content:center;gap:8px;color:#334d3e;isolation:isolate}
.save-date-stage>.letter-lace{display:block;position:absolute;inset:-3px;border:24px solid transparent;border-image:url('assets/sheer-embroidered-lace.webp') 160 / 24px round;opacity:.55;pointer-events:none}
.save-date-stage .rising-names{font-size:clamp(2.3rem,6vw,3.8rem);width:100%;max-width:none;line-height:1.25;grid-template-columns:max-content auto max-content}
.save-date-stage .rising-eyebrow{font-size:.75rem}.save-date-stage .rising-date{font-size:1.65rem}.rising-venue{font-family:'Great Vibes',cursive;font-size:1.55rem}.rising-place{font-family:'Cormorant Garamond',serif;font-size:.95rem}.save-date-stage .rising-arabic{color:#334d3e;font-size:1.2rem}
.paper-zoom.zooming{transition:left 1.6s ease,top 1.6s ease,width 1.6s ease,height 1.6s ease,transform 1.6s ease,opacity .6s}
.lettered-tray p{display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr auto 1fr;align-items:center;justify-items:center;inset:22% 22% 26%;gap:0}
.lettered-tray p small{margin:0}.lettered-tray p .tray-name-katrina{justify-self:start;align-self:center}.lettered-tray p .tray-name-danny{justify-self:end;align-self:center}.lettered-tray p .tray-and{justify-self:center;align-self:center;font-size:1.1rem;line-height:1}
@media(max-width:600px){.rising-letter.save-date-stage{padding:8% 7%;gap:5px}.save-date-stage .rising-names{font-size:clamp(1.85rem,8vw,2.65rem)}.save-date-stage .rising-date{font-size:1.3rem}.rising-venue{font-size:1.25rem}.rising-place{font-size:.85rem}}

.satin-underlay{display:none}.rising-letter.save-date-stage{padding:clamp(18px,4vw,38px)}

.sleeve-stage{perspective:900px}
.sleeve-lace-flap{position:absolute;left:6%;top:3%;width:78%;height:46%;background:url('assets/front-envelope-lace.webp') center/cover;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:center top;transform:rotateX(0deg);transition:transform 1s cubic-bezier(.35,.05,.25,1),opacity .8s;filter:drop-shadow(0 2px 2px #66573b30)}
.sleeve-unfolded .sleeve-lace-flap{transform:rotateX(155deg);opacity:.85}

/* The outer flap stays hinged; the open lace pocket has no flap or bow. */
.envelope-flap-back{transform:rotateY(180deg) translateZ(.5px)}
.opening .envelope-flap{transform:rotateX(178deg)}
.envelope-flap{transition:transform 1.4s cubic-bezier(.3,.05,.25,1)}
.envelope-lining,.envelope-flap-back{background-image:linear-gradient(to bottom,#afd4f054 0%,#c1dded30 40%,transparent 72%),url('assets/pastoral-envelope-liner.webp');background-size:100% 100%,112% auto;background-position:center,center 42%;background-blend-mode:soft-light,normal}
.sleeve-lace-flap{display:none}
.sleeve-stage.sleeve-released{transform:translate(-65%,-15%) scale(.8)!important;opacity:.85!important}
.paper-card.deckled-paper::before,.moss-lace-sheet{display:none}
.hero-setting{width:min(720px,94%);margin-left:auto;margin-right:auto}
.hero-setting::before{display:none}
.story-section>.section-heading{position:relative;max-width:680px;margin:25px auto 26px;padding:28px 18px;background:linear-gradient(130deg,#f4efe5e8,#e6edf0df,#f2e9dcde);border:1px solid #f6eedab3;box-shadow:0 4px 18px #160e0822;color:#4a3b2b;border-radius:3px}
.story-section>.section-heading::before{content:'';position:absolute;inset:0;background:url('assets/sheer-embroidered-lace.webp') center/100% 100%;opacity:.25;pointer-events:none}
.story-section>.section-heading .eyebrow{color:#786342;font-size:.75rem}.story-section>.section-heading .section-title{font-size:clamp(2.1rem,4vw,3rem);color:#47392b;position:relative}
@media(max-width:600px){.hero-setting{width:94%}.story-section>.section-heading{margin:20px 10px;padding:24px 14px}}

.sleeve-stage{aspect-ratio:1.5}.sleeve-stage img{object-fit:fill}
.rising-letter.save-date-stage{aspect-ratio:1.5;padding:clamp(14px,2.5vw,25px);gap:5px}
.save-date-stage .rising-names{font-size:clamp(2rem,5.8vw,3.4rem)}.save-date-stage .rising-date{font-size:1.4rem}.save-date-stage .rising-arabic{font-size:1rem}
@media(max-width:600px){.save-date-stage .rising-names{font-size:clamp(1.6rem,7vw,2.2rem)}.save-date-stage .rising-eyebrow{font-size:.65rem}.save-date-stage .rising-date{font-size:1.15rem}.save-date-stage .rising-venue{font-size:1.15rem}.save-date-stage .rising-place{font-size:.75rem}.save-date-stage .rising-arabic{font-size:.85rem}}

.paper-zoom.save-date-stage{z-index:71!important}.paper-zoom.save-date-stage.paper-cleared{z-index:80!important}

.sleeve-contained-card{position:absolute;left:5%;top:6%;width:90%;height:86%;min-height:0!important;transform:none!important;opacity:1!important;border:0;outline:0;padding:12px 10px;display:flex;justify-content:center;gap:4px;background:url('assets/ivory-deckled-paper.webp') center/100% 100%;z-index:1}
.sleeve-contained-card .rising-names{font-size:clamp(1.3rem,3.5vw,1.9rem);width:100%;max-width:none;line-height:1.2}.sleeve-contained-card .rising-eyebrow{font-size:.6rem}.sleeve-contained-card .rising-date{font-size:1.1rem}.sleeve-contained-card .rising-venue{font-size:1rem}.sleeve-contained-card .rising-place{font-size:.7rem}.sleeve-contained-card .rising-arabic{font-size:.8rem}.sleeve-stage>img{position:relative;z-index:2}

/* Soft greenery surrounding the sealed envelope. */
.cover-greenery{position:absolute;z-index:0;pointer-events:none;max-width:none;filter:drop-shadow(3px 8px 5px #1b11083d)}
.cover-greenery-right{width:35%;right:-18%;top:-13%;transform:rotate(165deg)}
.cover-greenery-low{width:48%;left:3%;bottom:-17%;transform:rotate(-8deg)}
.opening .cover-greenery{opacity:0;transition:opacity .5s}
.translation-toggle{display:block;margin:0 auto 22px;padding:10px 16px;border:1px solid #a9936c;border-radius:3px;background:#faf5e8;color:#59482f;font:400 1rem/1.5 'Cormorant Garamond',serif;cursor:pointer;position:relative;z-index:5}
.translation-toggle:hover{background:#eae0cd}.translation-toggle:focus-visible{outline:2px solid #745a32;outline-offset:4px}
[hidden]{display:none!important}
.story-language>p{font-size:1.28rem;line-height:1.85;margin-bottom:23px;font-weight:500;color:var(--ink)}
.story-language[lang=ar],#verse-arabic{font-family:'Traditional Arabic','Noto Naskh Arabic',Tahoma,serif;font-size:1.35rem;line-height:1.9}
.story-language[lang=ar]>p{font-size:1.35rem;line-height:1.9}.story-language[lang=ar] .story-opening em{font:inherit}
.closing-scripture .translation-toggle{margin-bottom:14px}
@media(max-width:600px){.story-language>p{font-size:1.08rem;line-height:1.75}.story-language[lang=ar]>p{font-size:1.2rem}.cover-greenery-right{width:38%;right:-19%;top:-9%}.cover-greenery-low{width:46%;bottom:-13%}}

/* Cool taupe brown and a soft English garden bed beneath the envelope. */
:root{--scene-brown:#514b48}
body,.envelope-screen,.invitation{background-color:#514b48;background-image:repeating-linear-gradient(0deg,#f7f3ee04 0 1px,transparent 1px 4px),repeating-linear-gradient(90deg,#1c191917 0 1px,transparent 1px 5px)}
.grass-bed{position:absolute;inset:-18% -25% -22%;z-index:0;background:url('assets/soft-garden-grass.webp') center/cover no-repeat;mask-image:radial-gradient(ellipse at center,black 42%,#000e 55%,transparent 73%);pointer-events:none;opacity:.92;filter:drop-shadow(0 12px 14px #24232244)}
.opening .grass-bed{opacity:.45;transition:opacity 1.4s ease}
.cover-greenery{z-index:1}
@media(max-width:600px){.grass-bed{inset:-15% -22% -20%}}

.katrina-t{font-size:1.24em!important;display:inline;position:relative;top:-.035em;font-weight:400;letter-spacing:-.025em}

:root{--script:'Pinyon Script','Great Vibes',cursive;--letter:'Pinyon Script','Great Vibes',cursive}
.cover-title,.cover-title em,.hero-content .invitation-title,.hero-content .invitation-title>em,.rising-names,.small-monogram,.small-monogram span,.section-title,.story-opening,.story-signature,.lettered-tray>p,.lettered-tray>p>span,.wedding-date,.hero-venue,.closing-note{font-family:'Pinyon Script','Great Vibes',cursive;font-weight:400;font-synthesis:none}
.cover-title{color:#eee2cb;text-shadow:0 1px 0 #fff8e988,0 -1px 1px #17130f99,1px 2px 2px #211c1855}
.hero-content .invitation-title,.rising-names,.lettered-tray p{ text-shadow:0 1px 0 #fff9e9cc,0 -1px 1px #47372744 }
.assembling .cover-name-first{animation:ink-name 2s ease-in-out .3s both!important}
.assembling .cover-name-second{animation:ink-name 2s ease-in-out 1.6s both!important}
@keyframes ink-name{0%{clip-path:inset(-40% 110% -40% -30%);opacity:0;transform:none}8%{opacity:1}100%{clip-path:inset(-40% -30% -40% -30%);opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.assembling .cover-name-first,.assembling .cover-name-second{animation:none!important;clip-path:none!important;opacity:1}}

.getting-married{font:400 clamp(1.7rem,4vw,2.7rem)/.94 'Pinyon Script',cursive;color:#efe3cf;margin:0 auto 16px;text-align:center;transform:rotate(-5deg);text-shadow:0 1px 0 #fff8e955,0 -1px 1px #17130f77}.getting-married>span{font-size:1.2em}.assembling .getting-married{animation:ink-name 1.7s ease .1s both}.opening .getting-married{opacity:0;transition:opacity .4s}
@media(max-width:600px){.getting-married{font-size:1.7rem;margin-bottom:11px}.cover-scene{gap:6px}.cover-copy{padding-top:4px}}
@media(max-height:550px){.getting-married{font-size:1.35rem;margin-bottom:8px}}

.cover-title>span,.hero-content .invitation-title>span,.rising-names>span{font-family:'Pinyon Script','Great Vibes',cursive;font-weight:400;-webkit-text-stroke:0}.cover-title>span{text-shadow:0 1px 0 #fff8e977,0 -1px 1px #17130f88}.hero-content .invitation-title>span{text-shadow:0 1px 0 #fff9e9cc,0 -1px 1px #47372744}

.getting-married{width:clamp(160px,18vw,215px);margin:0 auto 8px;transform:none;line-height:0}.getting-married>img{display:block;width:100%;height:auto;filter:grayscale(.85);opacity:.95}.cover-copy>.eyebrow{margin-top:0}
@media(max-width:600px){.getting-married{width:158px;margin-bottom:6px}}
@media(max-height:550px){.getting-married{width:110px}}
@media(prefers-reduced-motion:reduce){.assembling .getting-married{animation:none!important;clip-path:none!important}}
/* Uploaded linen, fine handwritten script, and immediate veil lace. */
:root{--scene-brown:#4d483c;--script:'Monsieur La Doulaise','Pinyon Script',cursive;--letter:'Pinyon Script',cursive}
body,.envelope-screen,.invitation{background:#4d483c url('assets/brown-fabric-sample.webp') center/558px 696px repeat;background-attachment:scroll}
.envelope-screen::before,.invitation::before{opacity:.07}
.grass-bed,.cover-greenery{display:none}
.cover-title,.cover-title>span,.hero-content .invitation-title,.hero-content .invitation-title>span,.rising-names,.rising-names>span,.story-signature,.lettered-tray>p,.lettered-tray>p>span{font-family:'Monsieur La Doulaise','Pinyon Script',cursive;font-weight:400}
.katrina-t{font-size:1.08em!important;top:0;letter-spacing:0}
.cover-title>span::first-letter,.hero-content .invitation-title>span::first-letter{font-size:1.4em!important}
.cover-title>em{font-family:'Pinyon Script',cursive;font-size:.38em}
.assembling .cover-name-first{animation:write-left 3s linear .2s both!important}
.assembling .cover-name-second{animation:write-right 3s linear .2s both!important}
.assembling .cover-title>em{animation:and-written .7s ease 3.3s both!important}
@keyframes write-left{0%{clip-path:inset(-50% 130% -50% -35%);opacity:0;transform:none}4%{opacity:1}100%{clip-path:inset(-50% -35% -50% -35%);opacity:1;transform:none}}
@keyframes write-right{0%{clip-path:inset(-50% -35% -50% 130%);opacity:0;transform:none}4%{opacity:1}100%{clip-path:inset(-50% -35% -50% -35%);opacity:1;transform:none}}
@keyframes and-written{from{opacity:0}to{opacity:1}}
.envelope-married{position:absolute;z-index:2;left:20%;right:20%;top:5%;margin:0;text-align:center;font:400 clamp(2rem,5vw,3.6rem)/.85 'Monsieur La Doulaise',cursive;color:#201e1b;text-shadow:0 1px 0 #fffdf3,0 -1px 1px #1c181c33;transform:rotate(-4deg)}
.envelope-married span{font-size:1.2em}
.cover-opening-florals{left:-18%;top:40%;width:clamp(110px,24vw,185px);transform:rotate(-20deg)}
.envelope-composition{width:min(620px,86vw,70svh);transform:scale(1.04);margin:12px auto 24px}
.opening .envelope-composition{width:min(680px,92vw,62svh);left:50%;top:68svh;transform:translate(-50%,-50%);transition:width 1s ease,top 1s ease,transform 1s ease}
.envelope-composition::before{background:none;border:0;border-image:none;inset:-7%;background:url('assets/raw-vintage-veil-border.webp') center/100% 100%;opacity:.72}
.sleeve-stage.sleeve-docked{position:absolute;z-index:1;left:50%;top:58%;width:90%;transform:translate(-50%,-50%);opacity:1;transition:transform 1.8s cubic-bezier(.3,.1,.25,1);filter:none}
.sleeve-stage.sleeve-docked.sleeve-extracting{transform:translate(-50%,-145%)}
.sleeve-contained-card{container-type:inline-size;overflow:visible;background:url('assets/ivory-deckled-paper.webp') center/100% 100% no-repeat}
.rising-letter>.letter-lace,.save-date-stage>.letter-lace,.sleeve-contained-card>.letter-lace{display:block;position:absolute;inset:-5%;border:0;border-image:none;background:url('assets/raw-vintage-veil-border.webp') center/100% 100% no-repeat;opacity:1;pointer-events:none;z-index:3}
.rising-letter.save-date-stage{container-type:inline-size;padding:7% 9%;gap:clamp(3px,1cqw,9px);overflow:visible}
.save-date-stage .rising-names,.sleeve-contained-card .rising-names{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);font-size:clamp(1.2rem,10cqw,3.8rem);line-height:1.4;width:100%;column-gap:.12em}
.save-date-stage .rising-names>span::first-letter,.sleeve-contained-card .rising-names>span::first-letter{font-size:1em!important}
.save-date-stage .rising-eyebrow,.sleeve-contained-card .rising-eyebrow{font-size:clamp(.75rem,2.3cqw,.95rem);margin-top:0;color:#4b4639}
.save-date-stage .rising-date,.sleeve-contained-card .rising-date{font-size:clamp(1.05rem,4.2cqw,1.7rem);line-height:1.2}
.save-date-stage .rising-venue,.sleeve-contained-card .rising-venue{font-size:clamp(1.1rem,4.5cqw,1.85rem);line-height:1.25}
.save-date-stage .rising-place,.sleeve-contained-card .rising-place{font-size:clamp(.75rem,2.3cqw,1rem);line-height:1.25}
.save-date-stage .rising-arabic,.sleeve-contained-card .rising-arabic{font-size:clamp(.85rem,2.8cqw,1.1rem);line-height:1.3}
.story-section>.section-heading{max-width:520px;margin:20px auto;padding:32px 36px;background:#f5eee15c;border:0;box-shadow:none;border-radius:0;isolation:isolate}
.story-section>.section-heading::before{inset:-9px;background:url('assets/raw-vintage-veil-border.webp') center/100% 100% no-repeat;opacity:1;z-index:-1}
.story-section>.section-heading::after{content:'';position:absolute;inset:18%;background:url('assets/sheer-embroidered-lace.webp') center/cover;opacity:.12;z-index:-1;pointer-events:none}
.story-section>.section-heading .eyebrow{font-size:.75rem;color:#eee5d3;position:relative}
.story-section>.section-heading .section-title{font-size:clamp(1.9rem,4vw,2.65rem);margin:12px 0 8px;color:#fff8e9;text-shadow:0 1px 2px #30251988;position:relative}
@media(max-width:600px){.envelope-composition{width:min(86vw,65svh);transform:scale(1.04)}.envelope-married{font-size:clamp(1.85rem,7vw,2.6rem)}.cover-opening-florals{width:32%;left:-16%;top:43%}.story-section>.section-heading{max-width:82%;padding:26px 26px}.story-section>.section-heading .eyebrow{font-size:.7rem;letter-spacing:.04em}}
@media(max-height:480px) and (orientation:landscape){.envelope-composition{width:min(45vw,75svh)}.opening .envelope-composition{width:min(460px,86vw,67svh);top:71svh}.cover-title{font-size:2rem}.envelope-married{font-size:1.9rem}}
@media(prefers-reduced-motion:reduce){.assembling .cover-name-first,.assembling .cover-name-second,.assembling .cover-title>em{animation:none!important;opacity:1;clip-path:none!important}.sleeve-stage{transition:none}}

.rising-letter.save-date-stage{padding:clamp(12px,2.5vw,30px)}
@media(max-height:500px){.save-date-stage .rising-arabic,.sleeve-contained-card .rising-arabic{display:none}.rising-letter.save-date-stage{padding:12px 16px;gap:2px}.sleeve-contained-card{gap:2px}}

.card-bow{width:100px;right:-22px;top:-15px;transform:rotate(-10deg)}.photo-bow{width:72px!important;max-width:72px!important;top:-20px!important;transform:rotate(8deg)}.story-bow{width:95px;left:-26px;top:-20px;transform:rotate(-9deg)}
@media(max-width:600px){.card-bow{width:78px;right:-16px;top:-10px}.photo-bow{width:55px!important;max-width:55px!important}.story-bow{width:74px;left:-22px;top:-14px}}
/* Keep one floral arrangement centered beneath the opening envelope. */
.cover-opening-florals{left:50%;right:auto;top:auto;bottom:-20%;width:42%;transform:translateX(-50%) rotate(-8deg)}
@media(max-width:600px){.cover-opening-florals{left:50%;top:auto;bottom:-18%;width:40%;transform:translateX(-50%) rotate(-8deg)}}

/* Lower the lettering and give the pen strokes time to unfold. */
.envelope-married{top:18%;font-size:clamp(1.9rem,4.7vw,3.3rem);line-height:.96}
.assembling .cover-name-first{animation:write-left 6s linear .3s both!important}
.assembling .cover-name-second{animation:write-right 6s linear .3s both!important}
.assembling .cover-title>em{animation:and-written .8s ease 6.5s both!important}
.cover-opening-florals{left:-9%;bottom:-19%;width:40%;transform:rotate(-15deg)}
.envelope-screen::before,.invitation::before{background:url('assets/raw-vintage-veil-border.webp') center top/100% 100svh repeat-y;opacity:.83;mask-image:radial-gradient(ellipse at top left,#000 0%,transparent 62%),radial-gradient(ellipse at top right,#000 0%,transparent 62%),radial-gradient(ellipse at bottom left,#000 0%,transparent 62%),radial-gradient(ellipse at bottom right,#000 0%,transparent 62%);mask-size:100% 100svh;mask-repeat:repeat-y}
.envelope-screen::after,.invitation::after{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;background:url('assets/sheer-embroidered-lace.webp') center top/100% 100svh repeat-y;opacity:.09;mask-image:radial-gradient(ellipse at center,#000 25%,transparent 73%);mask-size:100% 100svh;mask-repeat:repeat-y}
@media(max-width:600px){.envelope-married{top:18%;font-size:clamp(1.8rem,6.8vw,2.5rem)}.cover-opening-florals{left:-7%;bottom:-18%;width:38%;transform:rotate(-15deg)}}
@media(max-height:480px) and (orientation:landscape){.envelope-married{top:17%;font-size:1.7rem}}
@media(prefers-reduced-motion:reduce){.assembling .cover-name-first,.assembling .cover-name-second,.assembling .cover-title>em{animation:none!important;opacity:1;clip-path:none!important}}

/* Closely paired names expand only after clearing the sleeve. */
.save-date-stage .rising-names{grid-template-columns:max-content max-content max-content;justify-content:center;column-gap:.16em;font-size:clamp(1.6rem,12cqw,5.5rem);line-height:1.35}
.sleeve-contained-card .rising-names,.paper-extracting .rising-names{grid-template-columns:max-content max-content max-content;justify-content:center;column-gap:.14em;font-size:clamp(1.1rem,8cqw,2.6rem);line-height:1.35}
.rising-names,.rising-eyebrow,.rising-date,.rising-venue,.rising-place,.rising-arabic{position:relative;z-index:4}
.hero-content .invitation-title{grid-template-columns:max-content max-content max-content;justify-content:center;column-gap:.16em;font-size:clamp(2rem,5.8vw,4.7rem)}
.card-bow,.photo-bow,.story-bow,.cover-bow,.tray-bow{display:none!important}
@media(max-width:600px){.hero-content .invitation-title{font-size:clamp(1.65rem,7vw,2.4rem)}.save-date-stage .rising-names{font-size:clamp(1.6rem,12cqw,3rem)}.sleeve-contained-card .rising-names,.paper-extracting .rising-names{font-size:clamp(1.05rem,8cqw,2rem)}}

.hero-content>.invitation-title{margin-top:0;margin-bottom:12px}
.hero-content>.love-dedication{margin:12px auto 16px}
.hero-content .arabic-dedication{font-size:clamp(1.5rem,4vw,2rem);line-height:1.3;margin-bottom:3px}
.hero-content .arabic-translation{font-size:.95rem;margin-top:3px}
.hero-content>.hero-kicker{font-size:.8rem;margin-bottom:12px}
.story-section>.section-heading{background:transparent}
.ring-keepsake::after{display:none}
/* Brighter ink and slightly fuller strokes for the opening names. */
.cover-title>.cover-name-first,.cover-title>.cover-name-second{color:#fffdf6;-webkit-text-stroke:.32px #fffdf6;paint-order:stroke fill;text-shadow:0 2px 3px #211b17bb,0 0 1px #fffdf655}
.cover-title>em{color:#fff5dc!important;text-shadow:0 2px 3px #211b17aa}

/* Reflected lettering replaces the layered lace story heading. */
.story-section>.section-heading{width:min(640px,100%);max-width:640px;min-height:300px;margin:12px auto 24px;padding:90px 65px 68px;display:flex;flex-direction:column;justify-content:center;background:transparent}
.story-section>.section-heading::before{inset:0;background:url('assets/antique-story-mirror.webp') center/100% 100% no-repeat;opacity:1}
.story-section>.section-heading::after{display:none}
.story-section>.section-heading .eyebrow{color:#514936;font-size:.8rem;text-shadow:0 1px 0 #ffffff80}
.story-section>.section-heading .section-title{color:#39382e;text-shadow:0 1px 0 #ffffff99;font-size:clamp(2rem,4vw,3rem);margin:12px 0 0}
.envelope-lining,.envelope-flap-back{background-color:#8baf9d;background-image:linear-gradient(170deg,#8eafc5 0%,#94bca9 48%,#607f6b 100%),url('assets/pastoral-envelope-liner.webp');background-blend-mode:color,normal;background-size:100% 100%,112% auto;background-position:center,center 42%}
.closing-note.personal-invitation{margin:0 auto 32px;padding:4px 12px 14px;background:#4d483c url('assets/brown-fabric-sample.webp') center/558px 696px repeat;width:fit-content;max-width:100%;}
.closing>.section-title{margin-bottom:10px}
@media(max-width:600px){.story-section>.section-heading{max-width:100%;min-height:230px;padding:66px 38px 52px}.story-section>.section-heading .eyebrow{font-size:.72rem;letter-spacing:.025em}.story-section>.section-heading .section-title{font-size:clamp(1.8rem,7vw,2.3rem)}.closing-note.personal-invitation{margin-top:-4px;margin-bottom:28px}}

/* Clear, brighter closing scripture on the fabric and lace. */
.closing-scripture,.closing-scripture p,.closing-scripture cite,.closing-scripture cite a{color:#fff!important;text-shadow:0 1px 3px #211b17,0 0 1px #211b17;-webkit-text-stroke:.12px #fff;paint-order:stroke fill}

.ring-keepsake{margin-top:-35px;margin-bottom:60px;isolation:isolate}
.ring-keepsake::before{content:'';position:absolute;inset:0 -8%;z-index:-1;background:#4d483c url('assets/brown-fabric-sample.webp') center/558px 696px repeat;mask-image:radial-gradient(ellipse,#000 55%,transparent 76%);pointer-events:none}
@media(max-width:600px){.ring-keepsake{margin-top:-35px;margin-bottom:58px}}

/* The requested pond painting fills the open envelope and its flap. */
.envelope-lining,.envelope-flap-back{background:#8a9a79 url('assets/pond-envelope-liner.webp') center 45%/112% auto no-repeat;background-blend-mode:normal}

/* A gold heirloom cross rests beside the closing calla lilies. */
.closing-heirlooms{display:flex;align-items:flex-end;justify-content:center;gap:12px;width:min(280px,82%);margin:0 auto 12px;position:relative;z-index:2}
.closing-heirlooms .closing-floral-accent{width:140px;margin:0;flex:none}
.closing-gold-cross{display:block;width:100px;height:auto;margin-bottom:7px;--reveal-rotation:-9deg;filter:drop-shadow(2px 5px 4px #150b0950)}
@media(max-width:600px){.closing-heirlooms{width:220px;gap:9px}.closing-heirlooms .closing-floral-accent{width:106px}.closing-gold-cross{width:82px;margin-bottom:5px}}

/* One prominent cross with calla lilies gathered around its base. */
.closing-heirlooms{display:block;width:min(340px,86vw);height:370px;margin:0 auto 20px}
.closing-gold-cross{position:absolute;left:50%;top:0;width:225px;margin:0;transform:translateX(-50%);--reveal-rotation:0deg;z-index:1}
.closing-heirlooms .closing-floral-accent,.closing-floral-return{position:absolute;bottom:-15px;width:140px;height:auto;margin:0;z-index:2}
.closing-heirlooms .closing-floral-accent{left:4%;--reveal-rotation:54deg;transform-origin:center}
.closing-floral-return{right:3%;--reveal-rotation:-54deg;transform-origin:center;filter:drop-shadow(2px 5px 4px #150b0950)}
.closing-gold-cross.is-revealed{transform:translateX(-50%)}
@media(max-width:600px){.closing-heirlooms{width:min(300px,86vw);height:340px}.closing-gold-cross{width:210px}.closing-heirlooms .closing-floral-accent,.closing-floral-return{width:125px;bottom:-8px}}

.js .closing-gold-cross.reveal{transform:translate(-50%,48px)}
.js .closing-gold-cross.reveal.is-revealed{transform:translate(-50%,0)}
.opening .envelope-composition{width:min(800px,96vw,72svh);top:66svh}
@media(max-height:480px) and (orientation:landscape){.opening .envelope-composition{width:min(560px,94vw,72svh);top:66svh}}

/* Keep the corrected compass rings clearly visible. */
.ring-keepsake{width:min(350px,80%)}
@media(max-width:600px){.ring-keepsake{width:min(290px,82%)}}

/* The wedding announcement leads; the love-story dedication follows the details. */
.hero-save-date{font:400 clamp(2.4rem,6vw,4rem)/1.2 'Pinyon Script',cursive;color:#493923;margin:0 auto 14px}
.hero-content>.marrying{font:500 clamp(1.35rem,3vw,1.85rem)/1.3 'Cormorant Garamond',serif;color:#283e32;margin:8px auto 12px}
.hero-content>.hero-kicker{font-size:.8rem;margin:25px auto 8px}
.hero-content>.love-dedication{margin:8px auto 0}
.hero-content .arabic-dedication{font-size:1.25rem;line-height:1.25;margin-bottom:2px}
.hero-content .arabic-translation{font-size:.85rem;margin-top:2px}
.cover-copy>.eyebrow{font-size:clamp(1rem,2vw,1.3rem);color:#fffdf6;text-shadow:0 1px 3px #211b17}
@media(max-width:600px){.hero-save-date{font-size:2.7rem;margin-bottom:10px}.hero-content>.marrying{font-size:1.4rem}.hero-content .arabic-dedication{font-size:1.15rem}.hero-content>.hero-kicker{margin-top:20px}}

/* The same antique mirror now holds the live countdown. */
.countdown-panel.mirror-countdown{position:relative;isolation:isolate;box-sizing:border-box;width:min(680px,100%);max-width:680px;min-height:350px;margin:18px auto 0;padding:80px 68px 68px;background:none;border:0;box-shadow:none;transform:none;text-align:center;display:flex;flex-direction:column;justify-content:center}
.countdown-panel.mirror-countdown::before{content:'';position:absolute;inset:0;background:url('assets/antique-story-mirror.webp') center/100% 100% no-repeat;z-index:-1;border:0;opacity:1}
.countdown-panel.mirror-countdown::after{display:none}
.mirror-countdown>.countdown{width:100%;max-width:460px;margin:0 auto}
.mirror-countdown .countdown-kicker{font-size:1.8rem;margin:0 0 12px;color:#39382e}
.mirror-countdown .countdown-numbers{gap:12px}
.mirror-countdown .countdown-numbers>div{background:none;border:0;box-shadow:none;padding:0 2px;gap:4px}
.mirror-countdown .countdown-numbers>div::before,.mirror-countdown .countdown-numbers>div::after{display:none}
.mirror-countdown .countdown-numbers span{font-size:2.65rem;color:#283e32}
.mirror-countdown .countdown-numbers small{font-size:.8rem;color:#39382e}
.mirror-countdown>.invitation-links{margin:14px 0 0;gap:16px}
.mirror-countdown .invitation-links a{color:#39382e;font-size:.9rem}
.story-section{padding-top:12px}
.story-section>.photo-album{padding-top:0;padding-bottom:140px}
@media(max-width:600px){.countdown-panel.mirror-countdown{width:100%;max-width:100%;min-height:285px;padding:60px 35px 52px;margin:10px auto 0}.mirror-countdown .countdown-kicker{font-size:1.35rem;line-height:1.2;margin-bottom:9px}.mirror-countdown .countdown-numbers{gap:6px}.mirror-countdown .countdown-numbers span{font-size:1.9rem}.mirror-countdown .countdown-numbers small{font-size:.75rem}.mirror-countdown>.invitation-links{margin-top:10px;gap:12px}.mirror-countdown .invitation-links a{font-size:.8rem;padding:3px 0}.story-section{padding-top:5px}.story-section>.photo-album{padding-bottom:125px}}

/* One continuous lace frame, with corners only at the page ends. */
.envelope-screen::before,.invitation::before{
 background:none;mask:none;-webkit-mask:none;opacity:.36;
 border:clamp(35px,7vw,95px) solid transparent;
 border-left-width:clamp(45px,9vw,125px);
 border-right-width:clamp(45px,9vw,125px);
 border-image-source:url('assets/raw-vintage-veil-border.webp');
 border-image-slice:25%;border-image-width:1;border-image-repeat:stretch round;
}
.envelope-screen::after,.invitation::after{
 background-size:100% 100%;background-repeat:no-repeat;
 mask-size:100% 100%;mask-repeat:no-repeat;
}

.mailing-section{max-width:620px;margin:25px auto 45px;padding:35px clamp(22px,5vw,48px);color:#3c392f;text-align:center}
.mailing-section h2{font:400 clamp(2rem,6vw,3rem)/1.15 var(--script);margin:0 0 15px}
.mailing-section>p{font-size:1.1rem;line-height:1.5;margin-bottom:22px}
#mailing-form{text-align:left;display:grid;gap:14px}
#mailing-form label{display:grid;gap:6px;font-size:1rem}
#mailing-form label span{font-size:.9rem}
#mailing-form input{box-sizing:border-box;width:100%;min-width:0;border:1px solid #a69a80;background:#fffdf5b3;border-radius:3px;padding:10px;font:inherit;color:#34352d}
#mailing-form input:focus{outline:2px solid #746a49;outline-offset:2px}
.address-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
#mailing-form .address-honey{display:none}
#mailing-form button{justify-self:center;color:#39392f;border-color:#8a7c57;margin-top:8px}
.mailing-status{text-align:center;line-height:1.4;margin:0}
@media(max-width:420px){.address-row{grid-template-columns:1fr}}

/* Cross and flowers return beside the coffee below the photographs. */
.photo-album>.coffee-cross{position:absolute;right:5%;bottom:0;width:235px;height:270px;margin:0;pointer-events:none}
.coffee-cross .closing-gold-cross{width:170px}
.coffee-cross .closing-floral-accent,.coffee-cross .closing-floral-return{width:110px;bottom:-8px}
.story-section>.photo-album{padding-bottom:265px}
.envelope-screen::before,.invitation::before{border-left-width:clamp(55px,12vw,170px);border-right-width:clamp(55px,12vw,170px)}
@media(max-width:600px){.photo-album>.coffee-cross{right:0;bottom:10px;width:145px;height:205px}.coffee-cross .closing-gold-cross{width:125px}.coffee-cross .closing-floral-accent,.coffee-cross .closing-floral-return{width:75px;bottom:0}.story-section>.photo-album{padding-bottom:215px}.coffee-scene{left:0;transform:scale(.75)!important}}

/* The save-the-date paper slides directly out, without a lace pocket. */
.sleeve-contained-card{left:0;top:0;width:100%;height:100%}
.rising-letter>.letter-lace,.save-date-stage>.letter-lace,.sleeve-contained-card>.letter-lace{display:none}

.envelope-lining,.envelope-flap-back{background:#c2c9af url('assets/sage-pastoral-card.webp') center/cover no-repeat}
.rising-letter,.sleeve-contained-card,.rising-letter.save-date-stage{background:linear-gradient(#f7f5eac7,#f7f5eac7),url('assets/sage-pastoral-card.webp') center/cover no-repeat}
.hero-card{background:linear-gradient(#f7f5eadb,#f7f5eadb),url('assets/sage-pastoral-card.webp') center/cover no-repeat}

/* Page lace is reserved for the opening envelope screen. */
.invitation::before,.invitation::after{display:none}

/* Delicate lace on the card itself, with no pocket or sleeve. */
.rising-letter>.letter-lace,.save-date-stage>.letter-lace,.sleeve-contained-card>.letter-lace{display:block;inset:0;background:none;border:clamp(16px,3cqw,32px) solid transparent;border-image:url('assets/raw-vintage-veil-border.webp') 25% / 1 / 0 stretch round;opacity:.65;z-index:3;pointer-events:none}
.hero-card>.card-lace{border:clamp(16px,3vw,30px) solid transparent;border-image:url('assets/raw-vintage-veil-border.webp') 25% / 1 / 0 stretch round;inset:0;opacity:.65}
.save-date-message{max-width:580px;margin:25px auto;padding:30px clamp(24px,5vw,45px);text-align:center}
.save-date-message .story-opening{font-size:clamp(2rem,5vw,3rem);margin:0 0 12px}
.save-date-message>p:last-child{font-size:1.15rem;line-height:1.6;margin:0;color:#454334}
.ring-keepsake{width:min(115px,28%)!important;margin:10px auto 35px!important}
.ring-keepsake img{width:100%;height:auto}
@media(max-width:600px){.ring-keepsake{width:90px!important}}

/* Lace peeks beyond the paper edges, rather than sitting on its face. */
.rising-letter>.letter-lace,.save-date-stage>.letter-lace,.sleeve-contained-card>.letter-lace{inset:-4%;border:0;border-image:none;background:url('assets/raw-vintage-veil-border.webp') center/100% 100% no-repeat;opacity:.8;z-index:-1}
.rising-letter,.sleeve-contained-card,.save-date-stage{isolation:isolate;overflow:visible}
.assembling .seal-button{animation:none!important;pointer-events:auto;opacity:1;transform:translate(-50%,-50%)}

.venue-figure{width:82%;max-width:560px;margin:0 auto}
.venue-figure>img{max-height:550px}
@media(max-width:600px){.venue-figure{width:85%;margin:0 auto}.venue-figure>img{max-height:430px}}

/* Save-the-date and names lead; the practical details stay quieter. */
.hero-save-date,.save-date-stage .rising-eyebrow,.sleeve-contained-card .rising-eyebrow{
 font-family:'Cormorant Garamond',Georgia,serif;font-weight:700;text-transform:uppercase;letter-spacing:.1em;
 color:#9a742d;background:linear-gradient(110deg,#78501d 4%,#bf9846 24%,#806025 42%,#d1ad61 56%,#8d6525 76%,#ba9544 96%);
 background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;text-shadow:0 1px 1px #71501925;
}
.hero-save-date{font-size:clamp(1.8rem,4.4vw,3.2rem);line-height:1.2;margin:5px auto 25px}
.hero-content .invitation-title{font-size:clamp(2.2rem,6.3vw,5.1rem);margin:0 auto 28px;color:#382e25}
.hero-content .wedding-date{font:600 clamp(1.65rem,3.4vw,2.4rem)/1.3 'Cormorant Garamond',Georgia,serif;margin:12px 0}
.hero-content .hero-venue{font-size:clamp(1.4rem,3vw,1.9rem);margin:8px 0}
.hero-content .location-label{font-size:.9rem;letter-spacing:.02em;margin:5px 0 20px}
.hero-content .save-date-notice{font-size:.95rem;line-height:1.4;margin-top:24px}
.save-date-stage .rising-eyebrow{font-size:clamp(.95rem,3.2cqw,1.6rem);margin-bottom:8px}
@media(max-width:600px){.hero-save-date{font-size:1.9rem;letter-spacing:.07em;margin-bottom:22px}.hero-content .invitation-title{font-size:clamp(1.7rem,7.5vw,2.6rem);margin-bottom:24px}.hero-content .wedding-date{font-size:1.8rem}.hero-content .save-date-notice{font-size:.9rem}}

/* Lace sits outside the paper footprint, only peeking from behind. */
.rising-letter>.letter-lace,.save-date-stage>.letter-lace,.sleeve-contained-card>.letter-lace{inset:-18px;background:none;border:18px solid transparent;border-image:url('assets/raw-vintage-veil-border.webp') 25% / 1 / 0 stretch round;opacity:.72;z-index:-1}
.hero-card>.card-lace{inset:-18px;border-width:18px;z-index:-1;opacity:.72}
.photo-album{column-gap:clamp(15px,3vw,32px);max-width:760px}
.story-section>.photo-album{padding-bottom:220px}
.story-section>.mirror-countdown{margin-top:-20px}
@media(max-width:600px){.photo-album{column-gap:12px;padding-left:12px;padding-right:12px}.story-section>.photo-album{padding-bottom:180px}.story-section>.mirror-countdown{margin-top:-18px}.rising-letter>.letter-lace,.save-date-stage>.letter-lace,.sleeve-contained-card>.letter-lace,.hero-card>.card-lace{inset:-12px;border-width:12px}}

@media(min-width:601px){.coffee-scene{left:18%}.photo-album>.coffee-cross{right:14%}}

/* A broader veil-like lace edge on the opening page. */
.envelope-screen::before{border-width:clamp(65px,12vw,170px);border-left-width:clamp(85px,16vw,220px);border-right-width:clamp(85px,16vw,220px);opacity:.46}
@media(max-width:600px){.envelope-screen::before{border-top-width:65px;border-bottom-width:65px;border-left-width:85px;border-right-width:85px}}

/* A full textile layer is tucked flush underneath the paper face. */
.rising-letter>.letter-lace,.save-date-stage>.letter-lace,.sleeve-contained-card>.letter-lace{inset:-9%;border:0;border-image:none;background:url('assets/floral-veil-border.webp') center/100% 100% no-repeat;opacity:1;z-index:-1;filter:drop-shadow(0 3px 3px #30291b25)}
.rising-letter::before,.rising-letter.save-date-stage::before,.sleeve-contained-card::before{display:block;content:'';position:absolute;inset:0;background:inherit;border:0;border-image:none;transform:none;z-index:0;pointer-events:none}
.envelope-screen::before{border-image-source:url('assets/floral-veil-border.webp');opacity:.62}
.hero-card>.card-lace{inset:-24px;border-width:24px;border-image-source:url('assets/floral-veil-border.webp')}

/* Restore the original full lace behind the paper; remove the thin duplicate trim. */
.hero-setting>.sheer-lace-sheet{display:block}
.hero-card>.card-lace{display:none}

/* Small Damascene heirlooms, woven into the existing celebration. */
.syrian-fountain{position:relative;width:min(340px,68vw);aspect-ratio:1619/971;margin:5px auto -8px;pointer-events:none}
.syrian-fountain>img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 6px 7px #17150f30)}
.fountain-water{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.venue-setting>.syrian-inlay-keepsake{position:absolute;width:110px;height:auto;left:-35px;bottom:8px;z-index:4;pointer-events:none;filter:drop-shadow(0 5px 4px #16130f25)}
@media(max-width:600px){.syrian-fountain{width:min(260px,70vw)}.venue-setting>.syrian-inlay-keepsake{width:75px;left:-5px;bottom:0}}

.syrian-fountain>.tarboush-keepsake{position:absolute;width:70px;height:auto;left:-28px;bottom:0;z-index:2;transform:rotate(-9deg);object-fit:contain}
@media(max-width:600px){.syrian-fountain>.tarboush-keepsake{width:55px;left:-15px}}

/* A tarboush rests on the venue paper, its silk tassel caught by a light breeze. */
.paper-tarboush{position:absolute;top:-25px;right:-16px;width:100px;height:110px;z-index:8;pointer-events:none;transform:rotate(9deg)}
.tarboush-hat{display:block;width:100%;height:auto;filter:drop-shadow(0 4px 3px #24191035)}
.tarboush-tassel{position:absolute;left:28.5%;top:17%;width:55%;height:auto;transform-origin:40.9% 4.2%;animation:gold-tassel-breeze 4.8s ease-in-out infinite;filter:drop-shadow(0 2px 2px #24191025)}
@keyframes gold-tassel-breeze{0%,100%{transform:rotate(-5deg)}35%{transform:rotate(10deg)}65%{transform:rotate(2deg)}}
@media(max-width:600px){.paper-tarboush{width:75px;height:85px;right:-3px;top:-25px}}
@media(prefers-reduced-motion:reduce){.tarboush-tassel{animation:none;transform:rotate(3deg)}}

.tarboush-tassel{clip-path:polygon(37% 2%,45% 2%,45% 8%,47% 14%,55% 19%,58% 23%,59% 27%,60% 32%,65% 40%,71% 51%,77% 66%,84% 89%,80% 97%,35% 98%,34% 92%,40% 82%,45% 65%,48% 47%,49% 36%,54% 30%,55% 26%,51% 21%,44% 17%,40% 12%,39% 7%)}
