/* Community postcards, official programme metadata, and fuller festival dressing. */
.programme-source-card {
  display: grid;
  gap: 8px;
  margin: 11px 0 4px;
  padding: 10px;
  border: 1px solid rgba(231, 193, 128, .16);
  border-radius: 10px;
  background: rgba(10, 5, 3, .18);
  font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
}

.programme-meta-line,
.programme-badges,
.programme-row-meta,
.community-memory-head,
.memory-form-grid,
.festival-preview-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}

.programme-source-card strong { color: #f1d7a3; font-size: 11px; font-weight: 600; }
.programme-source-card p { color: #a99670; font-size: 9px; }
.programme-source-card a { color: #e5bd76; font-size: 10px; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.programme-source-status,
.programme-badge,
.programme-row-meta span {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  padding: 3px 7px;
  border: 1px solid rgba(222, 181, 110, .2);
  border-radius: 999px;
  background: rgba(222, 181, 110, .07);
  color: #cdb98e;
  font-size: 8px;
  letter-spacing: .025em;
}
.programme-source-status.live::before {
  width: 6px;
  height: 6px;
  margin-right: 5px;
  border-radius: 50%;
  background: #59d38c;
  box-shadow: 0 0 8px rgba(89, 211, 140, .7);
  content: "";
}
.programme-row.official { grid-template-columns: 46px minmax(0, 1fr); padding: 9px 0; }
.programme-row.official > span > strong { display: block; color: #e9d2a4; font-family: Georgia, serif; font-size: 12px; line-height: 1.3; }
.programme-row.official.current {
  margin: 0 -7px;
  padding: 10px 7px;
  border: 1px solid rgba(239, 188, 99, .28);
  border-radius: 9px;
  background: linear-gradient(90deg, rgba(177, 111, 41, .18), transparent);
}
.programme-row-meta { margin-top: 5px; }

.community-memory-section {
  margin: 14px 0;
  padding: 13px;
  border: 1px solid rgba(225, 188, 122, .15);
  border-radius: 12px;
  background: rgba(255,255,255,.025);
}
.community-memory-head { justify-content: space-between; margin-bottom: 4px; }
.community-memory-head h3 { margin: 0; color: #f0d9a9; font-size: 14px; font-weight: 500; }
.community-count { color: #b59b6c; font-family: system-ui, sans-serif; font-size: 9px; }
.community-memory-intro,
.memory-privacy-note,
.memory-form-status,
.community-empty { color: #aa9670; font-family: system-ui, sans-serif; font-size: 10px; line-height: 1.5; }
.community-memory-list { display: grid; gap: 9px; margin-top: 11px; }
.community-postcard {
  position: relative;
  padding: 12px 13px 11px;
  overflow: hidden;
  border: 1px solid rgba(87, 48, 23, .22);
  border-radius: 7px;
  background:
    linear-gradient(105deg, rgba(255,255,255,.06), transparent 35%),
    linear-gradient(145deg, #ceb27e, #9f794b);
  box-shadow: 0 8px 17px rgba(0,0,0,.18);
  color: #3a2112;
}
.community-postcard::after {
  position: absolute;
  top: 9px;
  right: 10px;
  width: 30px;
  height: 23px;
  border: 1px dashed rgba(72, 38, 18, .38);
  content: "AIR";
  display: grid;
  place-items: center;
  font-family: Georgia, serif;
  font-size: 7px;
  opacity: .58;
  transform: rotate(3deg);
}
.community-postcard small { display: block; padding-right: 42px; color: #58381f; font-size: 8px; text-transform: uppercase; letter-spacing: .06em; }
.community-postcard blockquote { margin: 8px 0; font-family: Georgia, serif; font-size: 13px; line-height: 1.45; }
.community-postcard footer { font-family: system-ui, sans-serif; font-size: 9px; opacity: .72; }

.memory-share-box { margin-top: 12px; padding-top: 12px; border-top: 1px dashed rgba(217,184,125,.18); }
.memory-form { display: grid; gap: 9px; margin-top: 10px; }
.memory-form[hidden] { display: none; }
.memory-form-grid > label { flex: 1 1 125px; }
.memory-form label { display: grid; gap: 4px; color: #c7ae7f; font-family: system-ui, sans-serif; font-size: 9px; }
.memory-form input,
.memory-form select,
.memory-form textarea {
  width: 100%;
  border: 1px solid rgba(225, 188, 122, .23);
  border-radius: 8px;
  outline: none;
  background: rgba(11, 6, 4, .45);
  color: #edd8ae;
  font: 11px/1.45 system-ui, sans-serif;
}
.memory-form input,
.memory-form select { min-height: 36px; padding: 7px 9px; }
.memory-form textarea { min-height: 108px; padding: 9px; resize: vertical; }
.memory-form input:focus,
.memory-form select:focus,
.memory-form textarea:focus { border-color: rgba(244, 192, 104, .6); box-shadow: 0 0 0 2px rgba(203, 132, 54, .12); }
.memory-consent { grid-template-columns: 16px 1fr !important; align-items: start; line-height: 1.4; }
.memory-consent input { width: 15px; min-height: 15px; margin-top: 1px; accent-color: #bd7b33; }
.memory-form-footer { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.memory-form-status.success { color: #8ed3a5; }
.memory-form-status.error { color: #e5a08b; }
.memory-honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }

/* Festival objects are all CSS shapes so they remain crisp over every daypart photo. */
.festival-decor .festive-toran,
.festival-decor .tricolour-bunting,
.festival-decor .holi-clouds,
.festival-decor .rangoli,
.festival-decor .akash-kandil,
.festival-decor .ganesh-plaque,
.festival-decor .festival-caption { display: none; }

.festival-decor .festive-toran {
  position: absolute;
  top: 1.5%;
  left: 25%;
  width: 49%;
  height: 6.8%;
  border-top: 3px solid rgba(89, 72, 25, .8);
  filter: drop-shadow(0 5px 4px rgba(19, 8, 2, .36));
}
.festive-toran span {
  position: absolute;
  top: -4px;
  width: 10%;
  height: 70%;
  border-radius: 60% 10% 60% 10%;
  background: linear-gradient(135deg, #668438, #233f1f 72%);
  transform-origin: top center;
  animation: leaf-sway 4.8s ease-in-out infinite alternate;
}
.festive-toran span:nth-child(1) { left: 5%; transform: rotate(16deg); }
.festive-toran span:nth-child(2) { left: 20%; animation-delay: -.8s; }
.festive-toran span:nth-child(3) { left: 36%; transform: rotate(-12deg); animation-delay: -1.6s; }
.festive-toran span:nth-child(4) { left: 53%; transform: rotate(10deg); animation-delay: -2.4s; }
.festive-toran span:nth-child(5) { left: 70%; transform: rotate(-14deg); animation-delay: -3.2s; }
.festive-toran span:nth-child(6) { left: 86%; transform: rotate(12deg); animation-delay: -4s; }

.tricolour-bunting { position: absolute; top: 3%; left: 24%; width: 52%; height: 8%; border-top: 2px solid rgba(72,47,24,.64); }
.tricolour-bunting span {
  position: absolute;
  top: -1px;
  width: 8%;
  height: 53%;
  clip-path: polygon(0 0, 100% 0, 50% 100%);
  transform-origin: top;
  animation: bunting-sway 5.5s ease-in-out infinite alternate;
}
.tricolour-bunting span:nth-child(1) { left: 4%; background: #d87522; }
.tricolour-bunting span:nth-child(2) { left: 19%; background: #eee5ce; animation-delay: -.8s; }
.tricolour-bunting span:nth-child(3) { left: 34%; background: #35704a; animation-delay: -1.6s; }
.tricolour-bunting span:nth-child(4) { left: 49%; background: #d87522; animation-delay: -2.4s; }
.tricolour-bunting span:nth-child(5) { left: 64%; background: #eee5ce; animation-delay: -3.2s; }
.tricolour-bunting span:nth-child(6) { left: 79%; background: #35704a; animation-delay: -4s; }
.tricolour-bunting::after {
  position: absolute;
  top: 1%;
  left: 46%;
  width: 28px;
  aspect-ratio: 1;
  border: 2px solid rgba(27, 73, 120, .66);
  border-radius: 50%;
  background: repeating-conic-gradient(from 0deg, rgba(27,73,120,.75) 0 2deg, transparent 2deg 15deg);
  content: "";
  transform: translateY(120%);
}

.holi-clouds { position: absolute; inset: 0; mix-blend-mode: screen; }
.holi-clouds span { position: absolute; width: 16%; aspect-ratio: 1; border-radius: 46% 54% 50% 44%; filter: blur(5px); opacity: .52; animation: gulal-breathe 7s ease-in-out infinite alternate; }
.holi-clouds span:nth-child(1) { left: 10%; top: 18%; background: radial-gradient(circle, #f3458c, transparent 68%); }
.holi-clouds span:nth-child(2) { right: 9%; top: 26%; background: radial-gradient(circle, #367ccc, transparent 68%); animation-delay: -2s; }
.holi-clouds span:nth-child(3) { left: 48%; bottom: 8%; background: radial-gradient(circle, #efaa23, transparent 68%); animation-delay: -4s; }
.holi-clouds span:nth-child(4) { left: 32%; top: 10%; background: radial-gradient(circle, #5f9a48, transparent 68%); animation-delay: -5s; }
.holi-clouds::after {
  position: absolute;
  left: 18%;
  right: 18%;
  bottom: 7%;
  height: 5%;
  background:
    radial-gradient(ellipse at 15% 100%, #c82d75 0 25%, transparent 26%),
    radial-gradient(ellipse at 37% 100%, #e6a626 0 25%, transparent 26%),
    radial-gradient(ellipse at 62% 100%, #3a78bd 0 25%, transparent 26%),
    radial-gradient(ellipse at 84% 100%, #548744 0 25%, transparent 26%);
  content: "";
  filter: drop-shadow(0 4px 3px rgba(28,9,5,.5));
}

.rangoli {
  position: absolute;
  left: 50%;
  bottom: 5.2%;
  width: 13%;
  aspect-ratio: 1;
  border: 4px dotted rgba(246, 194, 81, .8);
  border-radius: 50%;
  background:
    radial-gradient(circle, #ffd66c 0 9%, transparent 10%),
    repeating-conic-gradient(from 22.5deg, #b1326c 0 14deg, #df9235 14deg 28deg, #237879 28deg 42deg, transparent 42deg 45deg);
  box-shadow: 0 0 0 5px rgba(120, 34, 72, .45), 0 0 32px rgba(255, 179, 59, .22);
  opacity: .88;
  transform: translateX(-50%) rotate(10deg) scaleY(.42);
}
.akash-kandil {
  position: absolute;
  top: 7%;
  right: 14%;
  width: 42px;
  height: 62px;
  clip-path: polygon(24% 0, 76% 0, 100% 34%, 78% 72%, 65% 72%, 80% 100%, 54% 78%, 45% 100%, 35% 73%, 20% 73%, 0 34%);
  background: repeating-linear-gradient(90deg, #d54035 0 8px, #edae38 8px 16px);
  box-shadow: 0 0 30px rgba(255, 174, 55, .6);
  transform-origin: top center;
  animation: lantern-sway 6s ease-in-out infinite alternate;
}
.akash-kandil::before { position: absolute; top: -80px; left: 50%; width: 1px; height: 84px; background: #5d3d22; content: ""; }

.ganesh-plaque {
  position: absolute;
  top: 15%;
  left: 7.5%;
  padding: 7px 12px;
  border: 1px solid rgba(251, 192, 74, .62);
  border-radius: 50% 50% 12px 12px;
  background: linear-gradient(#8f241d, #52130f);
  box-shadow: 0 5px 14px rgba(25,8,3,.46), inset 0 0 14px rgba(255,183,59,.18);
  color: #ffd47b;
  font-family: Georgia, serif;
  font-size: clamp(7px, .7vw, 12px);
  letter-spacing: .03em;
  transform: rotate(-1deg);
}
.ganesh-plaque::after { display: block; color: #f5b74d; content: "✦  शुभ लाभ  ✦"; font-size: .72em; text-align: center; }

.festival-caption {
  position: absolute;
  left: 50%;
  top: 10%;
  padding: 4px 10px;
  border: 1px solid rgba(242, 204, 131, .32);
  border-radius: 999px;
  background: rgba(45, 21, 10, .55);
  color: #f5dca8;
  font: 8px/1.2 system-ui, sans-serif;
  letter-spacing: .13em;
  text-transform: uppercase;
  transform: translateX(-50%);
}

body.festival-diwali .festive-toran,
body.festival-diwali .rangoli,
body.festival-diwali .akash-kandil,
body.festival-diwali .festival-caption,
body.festival-ganesh-chaturthi .festive-toran,
body.festival-ganesh-chaturthi .ganesh-plaque,
body.festival-ganesh-chaturthi .festival-caption,
body.festival-holi .holi-clouds,
body.festival-holi .festival-caption,
body.festival-republic-day .tricolour-bunting,
body.festival-republic-day .festival-caption,
body.festival-independence-day .tricolour-bunting,
body.festival-independence-day .festival-caption { display: block; }

body.festival-diwali .marigold-line,
body.festival-ganesh-chaturthi .marigold-line { display: block; }
body.festival-diwali .diya { display: block; }
body.festival-ganesh-chaturthi .diya { display: block; transform: scale(.86); }
body.festival-holi .diya,
body.festival-holi .marigold-line,
body.festival-republic-day .diya,
body.festival-independence-day .diya { display: none; }
body.festival-diwali .festival-caption::after { content: "Diwali"; }
body.festival-ganesh-chaturthi .festival-caption::after { content: "Ganeshotsav"; }
body.festival-holi .festival-caption::after { content: "Holi"; }
body.festival-republic-day .festival-caption::after { content: "Republic Day"; }
body.festival-independence-day .festival-caption::after { content: "Independence Day"; }

.festival-preview-row { margin-top: 10px; }
.festival-preview-button { min-height: 29px; padding: 5px 8px; font-size: 8px; }
.festival-preview-button.active { border-color: rgba(255, 206, 119, .65); background: rgba(181, 117, 46, .28); color: #ffe3aa; }

@keyframes leaf-sway { to { transform: rotate(-8deg) scale(.94); } }
@keyframes bunting-sway { to { transform: rotateY(18deg) rotate(2deg); } }
@keyframes gulal-breathe { to { transform: translate(9%, -6%) scale(1.25); opacity: .68; } }
@keyframes lantern-sway { to { transform: rotate(4deg); } }

@media (max-width: 680px) {
  .programme-row.official > span > strong { font-size: 11px; }
  .community-postcard blockquote { font-size: 12px; }
  .festival-decor .festive-toran { left: 17%; width: 67%; top: 6.3%; }
  .festival-decor .tricolour-bunting { left: 12%; width: 76%; top: 7%; }
  .festival-caption { top: 12%; }
  .akash-kandil { top: 13%; right: 7%; width: 29px; height: 44px; }
  .ganesh-plaque { top: 17%; left: 4%; }
  .rangoli { width: 25%; bottom: 12%; }
  .holi-clouds span { width: 27%; }
}

@media (prefers-reduced-motion: reduce) {
  .festive-toran span,
  .tricolour-bunting span,
  .holi-clouds span,
  .akash-kandil { animation: none !important; }
}

