@font-face{font-family:Milton;src:url('assets/reference/Milton_One_Bold.otf') format('opentype');font-weight:700;font-display:swap}
@font-face{font-family:Bickham;src:url('assets/reference/BickhamScriptPro.ttf') format('truetype');font-display:swap}
@font-face{font-family:Cormorant;src:url('assets/fonts/cormorant-garamond-normal.woff2') format('woff2');font-weight:300 700;font-display:swap}
@font-face{font-family:Montserrat;src:url('assets/fonts/Montserrat-Medium.ttf') format('truetype');font-weight:500;font-display:swap}
@font-face{font-family:Arabic;src:url('assets/fonts/scheherazade-new-400-arabic.woff2') format('woff2');font-display:swap}
:root{--blue:#496c89;--ivory:#f5f9fc;--muted-blue:#6d8ba4;--serif:Cormorant,Georgia,serif;--sans:Montserrat,sans-serif;--script:Milton,Bickham,cursive}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--ivory);color:var(--blue);font-family:var(--sans);overflow-x:hidden}body.sealed{overflow:hidden}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--blue);outline-offset:5px}::selection{background:var(--blue);color:var(--ivory)}[hidden]{display:none!important}
.envelope{position:fixed;inset:0;width:100%;height:100%;border:0;z-index:100;background:#dcebf5;overflow:hidden;transition:opacity 1s,transform 1.5s}.envelope-art{position:absolute;inset:0;background:url('assets/generated/envelope-in.webp') center/cover no-repeat;transition:transform 1.5s}.envelope.opening{opacity:0;pointer-events:none;transform:scale(1.12)}.tap-open{position:absolute;bottom:calc(11% + env(safe-area-inset-bottom));left:0;right:0;font:italic 14px var(--serif);letter-spacing:.4em;text-transform:uppercase;animation:breathe 3s infinite}
main{position:relative;max-width:672px;margin:auto;isolation:isolate;opacity:0;transition:opacity 1.2s}body.opened main{opacity:1}.flowers{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:-1}.flower{position:absolute;width:140px;mix-blend-mode:multiply;opacity:.5}.left{left:-44px}.right{right:-46px}.f1{top:2%;transform:rotate(-12deg)}.f2{top:8%;transform:rotate(12deg)}.f3{top:21%;transform:rotate(12deg)}.f4{top:31%;transform:rotate(-6deg)}.f5{top:43%;transform:rotate(6deg)}.f6{top:52%;transform:rotate(15deg)}.f7{top:66%;transform:rotate(-12deg)}.f8{top:76%;transform:rotate(-6deg)}.f9{top:89%}
.hero{min-height:0;padding:40px 24px 28px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:24px}.arabic{font:26px/1.4 Arabic,serif;margin:0}.meaning{font:italic 10px/1.6 var(--serif);letter-spacing:.1em;text-transform:uppercase;margin:8px 0 0}.tiny-line{display:block;height:1px;width:26px;background:#496c8933;margin:8px auto}.eyebrow{font:500 9px/1.8 var(--sans);letter-spacing:.27em;text-transform:uppercase;color:var(--muted-blue);margin:0}.parents{font:700 19px/1.3 var(--serif);letter-spacing:.05em;text-transform:uppercase;margin:12px 0}.invitation-line{letter-spacing:.18em}.hero h1{margin:6px 0 0;font-weight:700;width:100%}.name{display:block;font:700 90px/.8 var(--script);text-shadow:0 8px 14px #496c8917;-webkit-text-stroke:.3px var(--blue)}.with{display:block;font:600 11px var(--sans);letter-spacing:.6em;text-transform:uppercase;opacity:.55;margin:25px 0 31px}.groom{transform:translateX(-.12em)}.groom-parents{font:700 14px/1.4 var(--serif);letter-spacing:.08em;text-transform:uppercase;margin:0;max-width:340px}.hero-date{font:italic 15px var(--serif);letter-spacing:.07em;margin:0}.scroll-cue{display:flex;flex-direction:column;align-items:center;gap:10px;text-decoration:none;color:var(--blue);padding:8px 20px 0;animation:float 3s infinite}.scroll-cue span{font-size:7px;letter-spacing:.7em;text-transform:uppercase}.scroll-cue i{height:28px;width:1px;background:linear-gradient(var(--blue),transparent)}
.section{max-width:512px;margin:0 auto;padding:32px 20px;text-align:center;border-top:1px solid #496c8915}.section h2{font:700 60px/1 var(--script);margin:0 0 24px;text-shadow:0 4px 8px #496c8920;-webkit-text-stroke:.3px var(--blue)}.scratch-grid{display:grid;grid-template-columns:repeat(2,150px);gap:32px 16px;justify-content:center;margin:40px auto 0}.scratch-card{position:relative;width:150px;height:100px;border:0;border-radius:12px;background:transparent;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:10px;touch-action:pan-y}.scratch-card:last-child{grid-column:1/-1;justify-self:center}.scratch-card small{font:600 10px var(--sans);letter-spacing:.14em;opacity:.65;margin-bottom:8px}.scratch-card strong{font:600 19px/1 var(--serif);text-transform:uppercase}.scratch-card canvas{position:absolute;inset:0;width:150px;height:100px;border-radius:12px;box-shadow:0 8px 14px #496c8920;touch-action:none;transition:opacity .65s;cursor:crosshair}.scratch-card.revealed canvas{opacity:0;pointer-events:none}.scratch-help{font:italic 13px var(--serif);opacity:.65;margin:24px 0 0}.countdown{margin-top:0}.clock{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;max-width:340px;margin:38px auto}.clock div{display:flex;flex-direction:column;align-items:center;gap:12px}.clock span{font:600 38px/1 var(--serif);width:100%;padding:16px 0;background:#496c8908;border:1px solid #496c891a;border-radius:12px;box-shadow:0 5px 15px #496c8908}.clock small{font-size:8px;text-transform:uppercase;letter-spacing:.18em;opacity:.6}.until{font:italic 700 22px var(--serif);letter-spacing:.08em;margin:24px 0 0}.date-caption{font:14px var(--serif);margin:16px 0 0}.venues{margin-top:0}.venues h2{font-size:55px}.venue-list{margin-top:32px}.venue{border-bottom:1px solid #496c8912;transition:box-shadow .4s;border-radius:0}.venue-heading{width:100%;min-height:84px;padding:20px 8px;border:0;background:transparent;display:flex;justify-content:center;align-items:center;gap:8px}.venue-heading span{font:600 22px/1.25 var(--serif);letter-spacing:.15em;text-transform:uppercase;opacity:.8}.venue-heading img{width:22px;opacity:0;transition:opacity .4s}.venue-heading img:first-child{transform:scaleX(-1)}.venue.active{border:1px solid #496c894d;border-radius:42px;margin:24px 0;box-shadow:0 20px 50px #496c891c}.venue.active .venue-heading img{opacity:.65}.venue.active .venue-heading span{opacity:1}.venue-panel{padding:0 22px 32px;animation:panel-in .5s ease}.venue-art{width:100%;max-height:290px;object-fit:contain;filter:drop-shadow(0 8px 8px #496c891a);margin:0 auto 12px}.event-date{font:700 18px var(--serif);letter-spacing:.08em;text-transform:uppercase;margin:12px 0}.event-time{font:500 10px var(--sans);letter-spacing:.1em;text-transform:uppercase}.venue-name{font:700 24px/1.2 var(--serif);letter-spacing:.06em;text-transform:uppercase;margin:24px 0 8px}.address{font:16px/1.5 var(--serif);margin:0}.description{font:italic 16px/1.5 var(--serif);margin:20px 0}.dress-code{font:600 14px var(--serif);margin:16px 0}.map-link,.blue-button{display:inline-flex;min-height:48px;justify-content:center;align-items:center;gap:8px;border:1px solid #496c8950;border-radius:28px;background:var(--blue);color:var(--ivory);text-decoration:none;padding:12px 24px;font:500 10px var(--sans);text-transform:uppercase;letter-spacing:.12em;margin-top:22px}.map-link svg{width:14px;height:14px}.map-link:hover,.blue-button:hover{background:#365971}
.wishes{margin-top:0}.wishes h2{font-size:48px}.wishes-intro{font:18px/1.6 var(--serif);max-width:350px;margin:0 auto 28px}form{text-align:left;max-width:360px;margin:auto}form label{display:block;font:italic 16px var(--serif);margin:14px 0 8px}input,textarea{width:100%;font:16px var(--serif);border:1px solid #496c8933;background:#f5f9fcaa;border-radius:12px;padding:15px;resize:vertical}input::placeholder,textarea::placeholder{color:#496c8980}.blue-button{margin-top:16px}.local-note{font:13px var(--serif);opacity:.7}.wish-status,#wish-status{font:15px var(--serif)}.wish{max-width:360px;margin:20px auto 0;border:1px solid #496c8920;border-radius:20px;padding:22px;background:#f5f9fcb3;text-align:left}.wish p{font:italic 18px/1.5 var(--serif);margin:0;overflow-wrap:anywhere;white-space:pre-wrap}.wish small{display:block;font:14px var(--serif);margin-top:14px}
footer{padding:76px 24px 32px;text-align:center}.footer-card{position:relative;border-radius:56px;background:linear-gradient(135deg,#53758f,var(--blue),#7197b5);color:var(--ivory);padding:58px 24px 118px;box-shadow:0 25px 40px #496c8928;max-width:464px;margin:auto}.footer-names{font:700 66px/.85 var(--script);margin:0 0 36px}.footer-names span{font-size:40px}.footer-card .arabic{font-size:31px}.translation{font:italic 32px/1.2 Bickham,cursive;opacity:.8;margin:12px 0 34px}.footer-card .eyebrow{color:#f5f9fcbb;font-size:8px;letter-spacing:.4em}.footer-families{font:700 46px/.9 var(--script);margin:26px 0}.footer-date{font:14px var(--serif);opacity:.8}.bouquet{position:absolute;width:min(100%,340px);height:230px;object-fit:contain;bottom:-85px;left:50%;transform:translateX(-50%);pointer-events:none;filter:drop-shadow(0 20px 15px #53758f30)}.closing{font:italic 15px/1.5 var(--serif);margin:112px 0 0}.music-toggle{position:fixed;z-index:50;bottom:calc(20px + env(safe-area-inset-bottom));left:20px;width:48px;height:48px;border:1px solid #f5f9fc33;border-radius:50%;background:#496c89ee;color:var(--ivory);box-shadow:0 4px 20px #496c8933;display:grid;place-items:center}.music-toggle svg{width:21px;height:21px}.sound-waves{display:none}.music-toggle[aria-pressed=true] .sound-waves{display:block}.music-toggle[aria-pressed=true] .sound-muted{display:none}.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s,transform .8s}.reveal.visible{opacity:1;transform:none}
.remove-wish{background:transparent;border:0;text-decoration:underline;font:12px var(--sans);padding:14px 0;min-height:44px;margin-top:8px;opacity:.7}
.scratch-grid{width:100%;max-width:360px;grid-template-columns:repeat(2,150px);gap:32px 16px}
.scratch-card{position:relative;width:150px;height:100px;display:grid;place-items:center;padding:10px;border:0;border-radius:12px;background:transparent;touch-action:pan-y}
.scratch-card:last-child{width:150px;grid-column:1/-1;justify-self:center}
.scratch-caption{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:100%;height:100%}
.scratch-card small{font-size:10px;line-height:1.25;letter-spacing:.12em;margin:0;color:#6d8ba4;opacity:.7}
.scratch-card strong{font:600 20px/1 var(--serif);text-transform:uppercase;color:#496c89}
.scratch-card canvas{position:absolute;inset:0;width:100%;height:100%;border-radius:12px;box-shadow:0 8px 14px #496c8920;touch-action:none;cursor:crosshair}
.scratch-card.revealed canvas{opacity:0;pointer-events:none}
.venue-art{max-height:none;height:auto;aspect-ratio:auto;object-fit:contain;border-radius:18px;filter:none;box-shadow:0 8px 24px #496c8912;margin-bottom:24px}
.venue.active{background:#ffffff66}
.venue-heading img{width:26px}
.flower{mix-blend-mode:normal;opacity:.62}
.footer-card{background:linear-gradient(140deg,#e5f0f8,#cbdfee 55%,#bad4e7);color:#41617a}
.footer-card .eyebrow{color:#526f85}
.blue-button,.map-link{background:#496c89;color:#f5f9fc}
.envelope{background:#dcebf5}
.tap-open{color:#496c89}
@media(max-width:359px){.scratch-grid{grid-template-columns:repeat(2,138px);gap:24px 10px}.scratch-card,.scratch-card:last-child{width:138px}.scratch-card strong{font-size:18px}}
@keyframes breathe{0%,100%{opacity:.55}50%{opacity:1}}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}@keyframes panel-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@media(min-width:640px){.hero{gap:28px;padding:48px 24px 32px;min-height:0}.name{font-size:150px}.parents{font-size:24px}.eyebrow{font-size:11px}.meaning{font-size:13px}.groom-parents{font-size:21px;max-width:500px}.with{font-size:14px;margin:38px 0 46px}.flower{width:200px}.section h2{font-size:76px}.venues h2{font-size:68px}.wishes h2{font-size:64px}.venue-heading span{font-size:28px}.footer-names{font-size:90px}.footer-card{padding-top:70px}.hero-date{font-size:20px}}
@media(max-width:359px){.hero{padding-inline:20px;gap:20px}.name{font-size:80px}.parents{font-size:17px}.section{padding-inline:16px}.venues h2{font-size:48px}.venue-heading span{font-size:19px}.clock span{font-size:32px}.wishes h2{font-size:44px}.footer-names{font-size:58px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}

.venue-heading{margin:0}

/* Content-sized celebrations keep the section transitions compact. */
.venues.section{max-width:none;width:100vw;margin-left:calc(50% - 50vw);padding:32px 0 0}
.venues>.eyebrow{padding:0 20px 24px}
.venue-list{margin:0}
.venue{min-height:0;margin:0;border:0;border-top:1px solid #496c8926;border-radius:0;position:relative;background:linear-gradient(150deg,#ffffff80,#e9f2fa80);scroll-margin-top:0}
.venue:nth-child(even){background:linear-gradient(210deg,#edf5fb90,#ffffff66)}
.event-page{min-height:0;width:min(100%,1080px);margin:auto;padding:28px 24px 20px;display:flex;flex-direction:column;justify-content:flex-start;gap:18px}
.event-number{font:500 8px/1.5 var(--sans);letter-spacing:.28em;text-transform:uppercase;margin:0;opacity:.65}
.venue-heading{padding:0;min-height:0;gap:10px}
.venue-heading span{font:600 clamp(21px,5.5vw,30px)/1.2 var(--serif);letter-spacing:.11em;opacity:1}
.venue-heading img{width:24px;opacity:.65;flex-shrink:0}
.event-layout{display:grid;gap:22px;align-items:center}
.venue-art{display:block;width:100%;max-width:600px;max-height:none;margin:0 auto;border-radius:18px;box-shadow:0 14px 30px #496c8915;aspect-ratio:16/9;object-fit:cover}
.venue-panel{padding:0;animation:none;max-width:520px;margin:auto;width:100%}
.event-host{font:600 19px/1.25 var(--serif);margin:0 0 8px}
.event-invitation{font:italic 16px/1.35 var(--serif);margin:0 auto;max-width:430px}
.event-schedule{margin:0}
.event-date{font:700 17px/1.3 var(--serif);letter-spacing:.06em;margin:0 0 8px}
.event-time{font:500 10px/1.5 var(--sans);letter-spacing:.12em;margin:0}
.event-note{display:inline-block;font:500 9px/1.5 var(--sans);letter-spacing:.13em;text-transform:uppercase;border:1px solid #496c8933;border-radius:20px;padding:5px 14px;margin:12px 0 0}
.venue-name{font:700 25px/1.2 var(--serif);margin:20px 0 8px}
.address{font:16px/1.4 var(--serif);max-width:430px;margin:auto}
.dress-code{font:600 15px/1.4 var(--serif);margin:16px 0 0}
.event-compliments{font:italic 14px/1.35 var(--serif);margin:16px auto 0;max-width:390px}
.venue .map-link{margin-top:20px}
.event-next{align-self:center;display:inline-flex;align-items:center;gap:12px;font:500 8px/1.5 var(--sans);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;color:var(--blue);padding:12px;opacity:.7}
.event-next span{font-size:19px}
@media(min-width:800px){
  .event-page{padding:36px 48px 24px;gap:24px}
  .event-layout{grid-template-columns:1.1fr 1fr;gap:48px}
  .venue-heading span{font-size:34px}
  .venue-art{aspect-ratio:4/5;object-fit:cover}
  .event-host{font-size:25px}
  .event-invitation{font-size:20px;line-height:1.5}
  .event-date{font-size:22px}
  .event-time{font-size:12px}
  .venue-name{font-size:30px;margin-top:28px}
  .address{font-size:20px;line-height:1.5}
  .event-compliments{font-size:17px}
  .event-number,.event-next{font-size:10px}
}
@media(max-width:359px){.event-page{padding:24px 18px 18px;gap:16px}.event-layout{gap:18px}.event-host{font-size:18px}.event-invitation,.address{font-size:15px}.event-date{font-size:16px}}

/* Fit the names and family information from the printed invitation. */
.hero .name{font-size:clamp(64px,16vw,108px);line-height:1.05}
.hero .bride{font-size:clamp(46px,13vw,94px);white-space:nowrap}
.family-details{display:grid;gap:20px;max-width:470px}
.family-lineage p:not(.eyebrow){font:600 16px/1.5 var(--serif);margin:6px 0}
.scratch-card:last-child:nth-child(odd){grid-column:1/-1;justify-self:center}
.scratch-card:last-child:nth-child(even){grid-column:auto;justify-self:auto}
.footer-names{font-size:clamp(48px,12vw,72px);line-height:1.1;overflow-wrap:normal}
@media(min-width:640px){.hero .name{font-size:130px}.hero .bride{font-size:110px}.family-lineage p:not(.eyebrow){font-size:18px}}
