/* Wedding countdown and layered floral entrance. */
.invitation-message::after { content:""; position:absolute; left:0; right:0; bottom:0; height:110px; z-index:1; pointer-events:none; background:linear-gradient(transparent,#fbf7ef); }
.calendar-section { overflow:hidden; padding:clamp(48px,7vw,92px) 16px 0; background:linear-gradient(#fbf7ef,#f7f1e8 85%,#efe8dd); }
.calendar-card { position:relative; width:min(100%,900px); margin:auto; padding:0 40px 115px; text-align:center; isolation:isolate; }
.calendar-hourglass { width:90px; margin:0 auto 24px; filter:drop-shadow(0 7px 5px #79582a22); }
.calendar-hourglass svg { display:block; width:100%; height:auto; }
.calendar-heading { margin:0 0 44px; }
.calendar-heading h2 { color:var(--wine); margin:0; padding:.25em .08em .4em; line-height:1.9; font-size:clamp(44px,6.5vw,76px); }
.calendar-card .calendar-heading h2 { font-family:Tahoma,"Segoe UI",Arial,sans-serif; font-size:clamp(20px,3.4vw,32px); font-weight:500; line-height:2.2; padding:12px 8px; word-spacing:.06em; }
.simple-countdown { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); direction:ltr; width:min(100%,650px); margin:0 auto; padding:14px 0; }
.countdown-unit { position:relative; min-width:0; display:flex; flex-direction:column; align-items:center; padding:8px 5px; }
.countdown-unit + .countdown-unit::before { content:""; position:absolute; left:0; top:20%; height:60%; width:1px; background:linear-gradient(transparent,#b99b6880,transparent); }
.simple-countdown strong { display:block; color:#641e2d; font-family:Tahoma,Arial,sans-serif; font-size:clamp(30px,6vw,62px); font-weight:400; font-variant-numeric:tabular-nums; line-height:1.6; white-space:nowrap; }
.simple-countdown .long-days strong { font-size:clamp(22px,4vw,42px); }
.simple-countdown .calendar-label { font-family:Tahoma,Arial,sans-serif; font-size:clamp(11px,1.4vw,15px); line-height:2.2; margin-top:4px; }
.desk-countdown { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); direction:ltr; gap:clamp(12px,2.3vw,28px); width:100%; margin:0 auto; perspective:1100px; }
.desk-calendar { position:relative; min-width:0; aspect-ratio:.83; padding:0 5px 12px; perspective:800px; border-radius:4px 5px 7px 7px; background:linear-gradient(110deg,#511522,#8d4350 45%,#44131d); box-shadow:0 13px 16px -10px #37111c88; }
.desk-calendar::before { content:""; position:absolute; inset:5px 2px 10px 8px; border-radius:3px 3px 7px 7px; background:repeating-linear-gradient(to bottom,#d9cbb7 0px,#d9cbb7 1px,#f6ebd8 2px,#f6ebd8 4px); box-shadow:0 2px 3px #5d3b2633; }
.calendar-paper,.calendar-turn { position:absolute; inset:0 7px 19px 0; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:24px 2px 7px; border:1px solid #e3d5bf; border-radius:3px 3px 8px 8px; background:radial-gradient(ellipse at 20% 15%,#fffdf6,#f5ecd9); box-shadow:0 2px 3px #54362820; }
.calendar-ring { position:absolute; top:-14px; width:11px; height:28px; z-index:5; border-radius:50%; border:3px solid #aa8449; border-left-color:#e8cd91; border-right-color:#745020; background:linear-gradient(90deg,#5c3e1d,#dcc193); box-shadow:1px 2px 2px #3e281f55,inset 1px 0 1px #fff3c9; }
.ring-left {left:23%} .ring-right {right:23%}
.desk-countdown strong,.calendar-turn b { display:block; max-width:100%; color:#641e2d; font-family:Georgia,"Times New Roman",serif; font-size:clamp(30px,5.8vw,68px); font-weight:400; line-height:1.25; font-variant-numeric:tabular-nums; text-shadow:none; }
.desk-calendar.long-days strong,.desk-calendar.long-days .calendar-turn b { font-size:clamp(23px,4vw,46px); }
.calendar-label { color:#6e3038; direction:rtl; font-size:clamp(11px,1.3vw,16px); line-height:2; margin-top:10px; }
.calendar-turn { z-index:3; visibility:hidden; transform-origin:50% 0; backface-visibility:hidden; pointer-events:none; }
.calendar-turn.is-flipping { visibility:visible; animation:calendar-page-turn .78s cubic-bezier(.38,.02,.35,1) both; }
.calendar-ribbon { position:relative; z-index:2; display:flex; align-items:center; justify-content:center; margin:33px auto 12px; width:82%; }
.calendar-ribbon { direction:ltr; }
.calendar-ribbon span { flex:1; height:2px; background:linear-gradient(90deg,transparent,#772735); transform-origin:center; }
.calendar-ribbon span:last-child { transform:scaleX(-1); }
.calendar-ribbon img { width:65px; height:auto; margin:0 -2px; }
.calendar-date { display:block; position:relative; z-index:2; color:#682532; font-family:Georgia,serif; letter-spacing:.16em; font-size:17px; line-height:2; }
.countdown-botanical { position:absolute; z-index:-1; pointer-events:none; width:155px; aspect-ratio:410/436; opacity:0; }
.calendar-flower-top-left { top:0; left:-30px; }
.calendar-flower-bottom-right { bottom:0; right:-30px; }
.calendar-flower-top-left .botanical-orientation { transform:scaleY(-1); }
.calendar-flower-bottom-right .botanical-orientation { transform:scaleX(-1); }
.calendar-card .countdown-botanical .botanical-sway,.calendar-card .botanical-layer { animation:none; }
.calendar-card .botanical-stem { clip-path:inset(100% 0 0); }
.calendar-card .botanical-growth { opacity:0; transform:scale(.12); }
.calendar-card.visible .countdown-botanical { animation:botanical-enter-bottom 1.5s ease-out both; }
.calendar-card.visible .calendar-flower-top-left { animation-name:botanical-enter-top; }
.calendar-card.visible .botanical-stem { animation:botanical-stem-grow 1.5s ease-out .1s both; }
.calendar-card.visible .botanical-growth { animation:botanical-bloom 1.2s cubic-bezier(.22,.72,.25,1) var(--bloom-delay) both; }
.calendar-card.visible .botanical-sway { animation:botanical-breeze 8s ease-in-out 4s infinite; }
.calendar-card.visible .sand-upper { transform-origin:60px 82px; animation:sand-empty 12s linear infinite; }
.calendar-card.visible .sand-lower { transform-origin:60px 145px; animation:sand-fill 12s linear infinite; }
.calendar-card.visible .sand-stream { animation:sand-fall .45s linear infinite; }
@keyframes calendar-page-turn { 0% {transform:rotateX(0);opacity:1} 75% {opacity:1} 100% {transform:rotateX(-160deg);opacity:0} }
@keyframes sand-empty {0% {transform:scaleY(1)} 96%,100% {transform:scaleY(.05)} }
@keyframes sand-fill {0% {transform:scaleY(.15)} 96%,100% {transform:scaleY(1)} }
@keyframes sand-fall {to {stroke-dashoffset:-5} }
@media(max-width:600px) {
 .calendar-section {padding-top:44px;padding-inline:12px;}
 .calendar-card {padding:0 0 95px;}
 .calendar-hourglass {width:65px;margin-bottom:20px;}
 .calendar-heading {margin-bottom:32px;}
 .desk-countdown {gap:9px;}
 .desk-calendar {aspect-ratio:.7;padding-bottom:7px;}
 .calendar-paper,.calendar-turn {inset:0 4px 12px 0;padding:16px 1px 5px;}
 .calendar-ring {width:7px;height:21px;top:-10px;border-width:2px;}
 .calendar-label {margin-top:7px;}
 .calendar-ribbon {width:70%;margin-top:25px;}
 .calendar-ribbon img {width:48px;}
 .calendar-date {font-size:14px;letter-spacing:.1em;}
 .countdown-botanical {width:82px;}
 .calendar-flower-top-left {left:-6px;top:0;}
 .calendar-flower-bottom-right {right:-6px;bottom:0;}
}
@media(prefers-reduced-motion:reduce) {
 .calendar-turn.is-flipping {display:none;animation:none;}
 .calendar-card .countdown-botanical,.calendar-card .botanical-growth {opacity:1!important;transform:none!important;animation:none!important;}
 .calendar-card .botanical-stem {clip-path:none!important;animation:none!important;}
 .calendar-card .botanical-sway,.calendar-card .calendar-hourglass * {animation:none!important;}
}
