/* 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)}
.hero{position:relative;padding:24px 12px 84px;min-height:100svh}
.hero-content{margin:0 auto!important;padding:0!important;max-width:680px}
.framed-photo-container{position:relative;width:min(82vw,400px);aspect-ratio:2/3;display:block;margin:0 auto 8px!important}
.floral-frame-overlay{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.couple-photo{top:18%;left:20%;width:62%;height:63%;object-fit:cover}
.hero-content h1,.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}
.hero-content h1 span:first-child,.footer-couple span:first-child{justify-self:end}.hero-content h1 span:last-child,.footer-couple span:last-child{justify-self:start}
.hero-content h1 b,.footer-couple b{margin:0!important}
.hero-content h1{font-size:clamp(36px,10vw,70px)}
.hero-date{font-family:Georgia,serif;font-size:16px}
.butterfly-companion{position:absolute;top:8%!important;right:4%!important;width:54px!important;line-height:0;pointer-events:none;transform:rotate(-15deg)}
.butterfly-companion svg{width:100%;overflow:visible}.butterfly-wing{fill:#efcfb6;stroke:#9b7966;stroke-width:.65;transform-origin:32px 25px;animation:wingFlutter 2.8s ease-in-out infinite}.butterfly-wing-right{animation-direction:reverse}.butterfly-body{stroke:#816c4c;stroke-width:1.3;fill:none}
@keyframes wingFlutter{0%,100%{transform:scaleX(1)}50%{transform:scaleX(.34)}}
.scroll-cue{position:absolute;left:50%;right:auto;bottom:20px;display:grid;width:44px;height:50px;place-items:center;transform:translateX(-50%);text-decoration:none}
.scroll-cue>i{position:relative;display:block;width:25px;height:39px;border:1px solid #f9edde;border-radius:20px;background:#fff7e817!important;box-shadow:0 3px 12px #24162155}
.scroll-cue>i:before{content:'';position:absolute;width:3px;height:7px;top:7px;left:10px;border-radius:4px;background:#fff2dc;animation:scrollDot 1.8s ease-in-out infinite}.scroll-cue b{display:none}
@keyframes scrollDot{0%,100%{transform:translateY(0);opacity:.4}55%{transform:translateY(8px);opacity:1}}
/* Content is measured after fonts load. Frame grows with panel text; nothing is clipped. */
#invitationText{min-height:0;padding:32px 0 56px;display:grid;place-items:center;overflow:visible}
#invitationText .message-card{width:var(--frame-width)!important;max-width:560px!important;aspect-ratio:auto!important;min-height:540px;height:auto!important;margin:0 auto!important;padding:0!important;display:grid!important;place-items:center;overflow:visible;background:url('../img/message-frame.png') center / 100% 100% no-repeat!important}
#invitationText .message-content{width:64%;margin:0 auto;padding:100px 0 160px;display:flex;flex-direction:column;align-items:center;gap:14px;min-width:0}
#invitationText .message-card.is-fitted{height:var(--message-height)!important;min-height:0}
#invitationText .message-card.is-fitted .message-content{padding:0;transform:translateY(var(--message-shift))}
#invitationText .message-monogram{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;gap:8px;direction:ltr;width:auto!important;height:auto!important;margin:0 auto 4px!important;line-height:1.4;white-space:nowrap}
#invitationText .message-monogram .monogram-letter,#invitationText .message-monogram .monogram-amp{font:400 19px/1.4 Georgia,serif!important;display:block;margin:0!important;color:var(--wine)!important}
#invitationText h2{font-family:var(--fa)!important;font-size:clamp(20px,5.3vw,29px)!important;font-weight:600;line-height:1.9!important;margin:0!important;padding:0;overflow-wrap:anywhere}
#invitationText .families-name{font-family:var(--fa)!important;font-size:15px!important;font-weight:400;line-height:2.1!important;margin:0!important;color:var(--wine)!important;text-shadow:none!important}
#invitationText .ornament{font:14px/1.5 Georgia,serif!important;color:var(--champagne)!important;margin:0!important}
#invitationText .invitation-copy{font-family:var(--fa)!important;font-size:clamp(15px,3.9vw,17px)!important;font-weight:400;line-height:2.15!important;margin:0!important;width:100%;overflow-wrap:anywhere}
#invitationText strong{font-family:var(--fa)!important;font-size:14px!important;font-weight:400;line-height:2.1!important;color:var(--wine)!important;overflow-wrap:anywhere}
/* Countdown: one ceremony datetime drives timer, Iranian time and Persian date. */
.calendar-section{padding:32px 12px 54px;overflow:visible}
.calendar-card{width:min(100%,660px)!important;padding:42px 24px 38px!important;margin:0 auto!important;background:#fcf9f3f5!important;border:1px solid #eee5da!important;border-radius:28px!important;box-shadow:0 18px 48px #26152120,inset 0 0 0 6px #fff8!important}
.calendar-card .calendar-heading{margin:0 0 26px}
.calendar-card .calendar-heading p{font:400 14px/2 var(--fa);color:var(--wine-soft)!important;text-shadow:none!important;margin:0 0 8px}
.calendar-card .calendar-heading h2{font:600 clamp(23px,5.6vw,32px)/1.9 var(--fa)!important;padding:0;margin:0;color:var(--ink)!important;text-shadow:none!important;letter-spacing:0}
.simple-countdown{width:100%;padding:0;gap:0;margin:0 auto 22px}
.simple-countdown strong{font:400 clamp(27px,7.5vw,43px)/1.8 var(--fa);color:var(--ink)}
.simple-countdown .calendar-label{font:400 13px/2 var(--fa);color:var(--muted);margin:0}.countdown-unit{padding:8px 3px}
.calendar-divider{display:flex;align-items:center;gap:15px;color:var(--champagne);margin:22px 0 24px}.calendar-divider span{flex:1;height:1px;background:#c5b79b}.calendar-divider b{font-size:16px;font-weight:400}
.calendar-card .ceremony-start{font:600 17px/2.1 var(--fa);color:var(--ink)!important;text-shadow:none!important;margin:0 0 18px}
.calendar-card .calendar-date{font:400 16px/2 var(--fa)!important;letter-spacing:0;direction:rtl;color:var(--ink);margin:0}
.calendar-card .ceremony-note{font:400 15px/2.2 var(--fa);color:var(--ink);margin:25px 0 0;padding:24px 0 0;border-top:1px dashed #baa99980;overflow-wrap:anywhere}
/* Winding itinerary, alternating entries and a flower constrained to the SVG path. */
.program-section{padding:16px 12px 60px}
.program-section .program-paper{position:relative;width:min(100%,660px);margin:auto!important;padding:30px 18px 26px;border-radius:120px 120px 26px 26px;background:#fbf7eff7!important;border:1px solid #eddfce!important;box-shadow:0 20px 55px #24132122!important}
.program-heading{max-width:none;margin:0 auto 24px;padding:0}.program-heading:before,.program-heading h2:after{display:none!important}
.program-bow{display:block;width:66px;height:auto;margin:0 auto 15px}
.program-section .program-heading>p{font:400 14px/2 var(--fa);color:#88686b!important;text-shadow:none!important;letter-spacing:0;margin:0 0 9px}
.program-section .program-heading h2{font:600 27px/1.9 var(--fa)!important;color:var(--wine)!important;text-shadow:none!important;margin:0;padding:0}
.program-week{padding:0 0 12px;margin:0 auto 8px;border-bottom:1px solid #ccbca55c;max-width:520px}
.program-month{font:400 16px/2 var(--fa);color:var(--wine);margin:0 0 10px}
.program-week-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));direction:rtl;gap:2px}.program-day{display:flex;flex-direction:column;align-items:center;gap:8px}.program-day>span{font:400 10px/1.8 var(--fa);white-space:nowrap;color:var(--muted)}
.program-day time{display:grid;place-items:center;width:29px;height:34px;font:400 15px/1.5 var(--fa);position:relative;isolation:isolate;color:var(--ink)}
.program-day.ceremony-day time{color:#fff;font-weight:600}.ceremony-day time:before{content:'';position:absolute;inset:0;background:#885057;z-index:-1;clip-path:polygon(50% 94%,8% 49%,0 28%,8% 8%,27% 2%,50% 18%,73% 2%,92% 8%,100% 28%,92% 49%)}
.program-section .program-timeline{position:relative;width:100%;max-width:520px;margin:0 auto;padding:30px 0 62px;direction:ltr;isolation:isolate}
.program-route{position:absolute;inset:0;display:block;width:100%;height:100%;z-index:0;overflow:visible;pointer-events:none}.route-base{stroke:#b5a08c;stroke-width:1.25;vector-effect:non-scaling-stroke}.route-progress{stroke:#9d6d73;stroke-width:1.5;vector-effect:non-scaling-stroke}
.program-section .program-item{position:relative;display:grid;grid-template-columns:38% 24% 38%;align-items:center;direction:ltr;min-height:178px;margin:0;padding:14px 0;z-index:1;opacity:1;transform:none!important;filter:none!important}
.program-section .program-item+.program-item:before,.program-section .program-copy:before,.program-section .program-marker:after{display:none}
.program-section .program-copy{grid-column:1;direction:rtl;padding:0 4px;min-width:0;opacity:1!important;transform:none!important;text-align:center;transition:none}
.program-section .event-right .program-copy{grid-column:3}
.program-section .program-copy time{display:block;font:400 19px/1.6 var(--fa);color:#956c6c;letter-spacing:0;margin-bottom:8px}
.program-section .program-copy h3{font:600 16px/1.9 var(--fa)!important;color:var(--ink);margin:8px 0 5px;overflow-wrap:anywhere}
.program-section .program-copy p{font:400 13px/2 var(--fa);color:#78676b;overflow-wrap:anywhere;margin:0}
.program-section .program-icon,.program-section .program-item.passed .program-icon{display:grid;place-items:center;width:30px;height:30px;border:0;background:transparent;box-shadow:none;color:#a68a75;margin:0 auto;opacity:1;transform:none!important}
.program-section .program-icon svg{display:block;width:25px;height:25px}
.program-section .program-marker,.program-section .program-item.passed .program-marker{position:absolute;top:50%;left:43%;width:6px;height:6px;display:block;transform:translate(-50%,-50%)!important;background:#bba58c;border:0;border-radius:50%;box-shadow:0 0 0 3px #fbf7ef;z-index:2}
.program-section .event-right .program-marker{left:57%}.program-section .program-item.passed .program-marker{background:#94646b}
.program-section .timeline-runner{position:absolute;display:block;top:0;left:50%;z-index:3;width:38px;height:38px;transform:translate(-50%,-50%);pointer-events:none;visibility:hidden}
.program-section .program-timeline.route-ready .timeline-runner{visibility:visible}
.timeline-runner-flower{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 3px 4px #78554730);transform:rotate(var(--timeline-rotation,0deg))}
.program-end-heart{position:absolute;left:50%;bottom:10px;width:32px;height:30px;transform:translateX(-50%);fill:none;stroke:#987d72;stroke-width:1.3}
.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 .message-card{grid-template-columns:100%;justify-content:normal!important}
#invitationText .message-content>strong{max-width:82%}
#invitationText .message-content>h2{width:100%;max-width:100%}
#invitationText .family-pair span{flex:none}
#invitationText .message-content>h2{max-width:85%}
#invitationText .message-content>strong{max-width:65%}
/* 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}
.program-section .timeline-runner{width:54px;height:54px}
.program-section .timeline-runner-flower{filter:drop-shadow(0 3px 3px #70475150) contrast(1.08) saturate(1.08)}
@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}}
.program-section .event-right.passed .program-marker{left:57%}
