/* Public invitation. Loaded after wedding.css and calendar.css. */
@font-face{font-family:Vazirmatn;src:url('../fonts/vazirmatn-arabic-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Vazirmatn;src:url('../fonts/vazirmatn-arabic-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
:root{--fa:Vazirmatn,Tahoma,Arial,sans-serif;--wine:#69454d;--wine-soft:#947476;--ink:#503e42;--muted:#79666a;--champagne:#b9a17d;--frame-width:min(94vw,560px)}
body{font-family:var(--fa);font-size:16px;line-height:2}
#invitation,.site-footer,.wedding-intro{text-align:center}
#invitation :is(h1,h2,h3,p,address,blockquote,label,input,textarea,button,.program-copy,.neshan-route){text-align:center}
#invitation h2,#invitation h3,.guestbook-wall header h3{font-family:var(--fa);font-weight:600;line-height:1.9}
#invitation>section{position:relative;z-index:2}
.section-heading>p,.section-kicker{font-size:14px;letter-spacing:0}
.venue-card address,.wedding-form label,.wedding-form legend,.guest-notes p{font-size:16px;line-height:2.1}
.neshan-route span{flex:1;align-items:center}.neshan-route i{margin:0}.neshan-route small,.form-result{font-size:13px}
.venue-card h2{font-size:clamp(24px,6vw,34px)}
.footer-couple{display:grid!important;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);width:100%;gap:.16em!important;line-height:1.6;white-space:nowrap}
.footer-couple span:first-child{justify-self:end}.footer-couple span:last-child{justify-self:start}
.footer-couple b{margin:0!important}
.footer-logo-link{overflow:hidden;border-radius:50%;background:#faf4e9!important}.footer-logo-link img{width:100%;height:100%;object-fit:cover;border-radius:50%;clip-path:circle(49%)}
@media(min-width:600px){.program-paper{padding-inline:44px!important}.program-section .program-copy h3{font-size:19px!important}.program-section .program-copy p{font-size:15px}.program-day>span{font-size:12px}.program-section .program-item{min-height:180px}.calendar-card{padding:48px 45px!important}}
@media(max-width:350px){.program-section .program-paper{padding-inline:10px}.program-section .program-copy{padding:0 2px}.program-section .program-copy h3{font-size:15px!important}.program-section .program-copy p{font-size:12px}.program-heading>p{font-size:13px!important}.calendar-card{padding-inline:16px!important}.program-day>span{font-size:9px}#invitationText .message-content{width:65%}}
@media(prefers-reduced-motion:reduce){.butterfly-wing,.scroll-cue>i:before{animation:none}.petal-rain{display:none!important}}

.petal-rain {
  position: fixed;
  inset: 0;
  z-index: 1;
  overflow: hidden;
  pointer-events: none;
}
.petal-rain i {
  position: absolute;
  top: -7vh;
  left: var(--x);
  width: var(--w);
  height: calc(var(--w) * 1.55);
  border-radius: 75% 12% 72% 18%;
  opacity: .46;
  background: var(--petal);
  box-shadow: inset -1px -1px 2px rgba(255,255,255,.35);
  transform: rotate(var(--turn));
  animation: petalDrift var(--duration) var(--delay) linear infinite;
}
.petal-rain i:nth-child(1) { --x: 7%; --w: 8px; --petal:#e4b7b7; --turn:24deg; --duration:21s; --delay:-13s; }
.petal-rain i:nth-child(2) { --x: 19%; --w: 6px; --petal:#ead6bc; --turn:71deg; --duration:17s; --delay:-4s; }
.petal-rain i:nth-child(3) { --x: 31%; --w: 9px; --petal:#d8abb5; --turn:4deg; --duration:24s; --delay:-18s; }
.petal-rain i:nth-child(4) { --x: 43%; --w: 6px; --petal:#f0d5c6; --turn:51deg; --duration:19s; --delay:-8s; }
.petal-rain i:nth-child(5) { --x: 56%; --w: 8px; --petal:#d2bfa3; --turn:106deg; --duration:22s; --delay:-15s; }
.petal-rain i:nth-child(6) { --x: 68%; --w: 7px; --petal:#dcaeb8; --turn:35deg; --duration:18s; --delay:-2s; }
.petal-rain i:nth-child(7) { --x: 79%; --w: 9px; --petal:#edc8b7; --turn:82deg; --duration:23s; --delay:-11s; }
.petal-rain i:nth-child(8) { --x: 91%; --w: 6px; --petal:#eadabd; --turn:9deg; --duration:20s; --delay:-6s; }
.petal-rain i:nth-child(9) { --x: 98%; --w: 7px; --petal:#cf9ca7; --turn:67deg; --duration:25s; --delay:-21s; }
.petal-rain i:nth-child(10) { --x: 51%; --w: 5px; --petal:#e7c5c0; --turn:41deg; --duration:26s; --delay:-22s; }
@keyframes petalDrift {
  0% { transform: translate3d(0,-8vh,0) rotate(var(--turn)); }
  30% { transform: translate3d(17px,30vh,0) rotate(calc(var(--turn) + 150deg)); }
  65% { transform: translate3d(-16px,71vh,0) rotate(calc(var(--turn) + 360deg)); }
  100% { transform: translate3d(9px,116vh,0) rotate(calc(var(--turn) + 610deg)); }
}


#invitationText .family-pair{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;gap:clamp(9px,3vw,18px);max-width:100%;font-size:var(--family-size,16px)!important;white-space:nowrap}
#invitationText .family-pair span{white-space:nowrap}
#invitationText .family-pair i{font:normal 10px/1 Georgia,serif;color:var(--champagne);flex:none}
#invitationText .family-pair span{flex:none}
/* Dress palette: real satin bows recolored from the same ribbon asset. */
.dress-code-section{padding:8px 12px 54px}
.dress-code-paper{width:min(100%,660px);margin:0 auto;padding:32px 18px 28px;border-radius:28px;background:#fbf7eff7;border:1px solid #eddfce;box-shadow:0 18px 45px #2413211a}
.dress-code-rule{display:flex;align-items:center;justify-content:center;gap:14px;width:78%;margin:0 auto 22px;color:#997477}
.dress-code-rule span{height:1px;background:#c3b19c;flex:1}.dress-code-rule b{font:400 21px/1 Georgia,serif}
#invitation .dress-code-heading h2{font:600 clamp(25px,6vw,33px)/1.9 var(--fa);color:var(--wine);margin:0 0 16px;text-shadow:none}
.dress-code-heading p{max-width:460px;margin:0 auto;color:var(--ink);font:400 16px/2.2 var(--fa)}
.dress-palette{display:flex;flex-direction:column;gap:24px;margin:34px auto 26px;max-width:540px}
.dress-palette-row{display:grid;grid-template-columns:repeat(var(--bow-count),minmax(0,1fr));width:100%;max-width:calc(var(--bow-count) * 108px);margin:auto;direction:rtl}
.dress-swatch{position:relative;isolation:isolate;margin:0;min-width:0;padding:0 3px}
.dress-bow{position:relative;z-index:1;display:block;width:100%;max-width:94px;height:auto;margin:auto;overflow:visible;filter:drop-shadow(0 3px 2px #47302220)}
.dress-swatch:not(:last-child):after{content:'';position:absolute;left:-50%;top:14%;width:100%;height:28%;border-bottom:1px solid #ae9682;border-radius:0 0 50% 50%;z-index:0}
.dress-swatch figcaption{font:400 13px/1.9 var(--fa);color:var(--muted);margin:12px -1px 0;overflow-wrap:anywhere}
.dress-code-rule-bottom{margin:26px auto 0}
@media(min-width:600px){.dress-code-paper{padding:40px 42px 32px}.dress-swatch figcaption{font-size:14px}.program-section .timeline-runner{width:60px;height:60px}}
@media(max-width:350px){.dress-code-paper{padding-inline:12px}.dress-swatch{padding-inline:2px}.dress-swatch figcaption{font-size:12px}.program-section .timeline-runner{width:48px;height:48px}}

/* Tulle veil entrance: the guest's name rests on the veil until it is lifted. */
.veil-name{position:fixed;z-index:10000;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:0 28px 12dvh;text-align:center;pointer-events:none;color:var(--ink);opacity:0;transform:translateY(10px);transition:opacity 1.1s ease .25s,transform 1.1s ease .25s;background:radial-gradient(ellipse 85% 30% at 50% 44%,#fffdfaf2 0%,#fffdfad0 50%,transparent 100%)}
.veil-name.is-visible{opacity:1;transform:none}
.veil-name.is-leaving{opacity:0;transform:translateY(-14px);transition:opacity .7s ease,transform .9s ease}
.veil-name-kicker{font-size:13px;color:#8d6f45;letter-spacing:.3px}
.veil-name strong{font-family:"Mina Miremad",var(--fa);font-weight:400;font-size:clamp(34px,10vw,52px);line-height:1.6;max-width:100%;overflow-wrap:anywhere;text-shadow:0 1px 18px #fffdfa}
.veil-name-note{font-size:13px;color:var(--muted)}
@media (prefers-reduced-motion:reduce){.veil-name,.veil-name.is-leaving{transform:none;transition:opacity .5s ease}}

/* The hero only receives focus so screen readers start there; it needs no visible ring. */
.hero-content:focus{outline:none}
