/* ================================================
   NEW MODEL SCHOOL Calendar — Frontend Styles v3
   Brand: Purple #5C3D8F · Magenta #E91E8C · White
   CSS-native animations with GSAP progressive enhancement
   ================================================ */

@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,600;0,700;0,800;1,700&family=Poppins:wght@400;500;600;700&display=swap');

:root  { 
  /* ── New Model School Brand Palette ── */
  --ldcal-accent:        #E91E8C;
  --ldcal-accent-dim:    rgba(233, 30, 140, 0.10);
  --ldcal-accent-glow:   rgba(233, 30, 140, 0.22);
  --ldcal-accent-border: rgba(233, 30, 140, 0.45);
  --ldcal-purple:        #5C3D8F;
  --ldcal-purple-dim:    rgba(92, 61, 143, 0.10);
  --ldcal-dark:          #2D1B5E;
  --ldcal-text:          #3B2A6E;
  --ldcal-muted:         #8B7BAD;
  --ldcal-bg:            #F8F6FF;
  --ldcal-white:         #ffffff;
  --ldcal-border:        rgba(92, 61, 143, 0.12);
  --ldcal-radius:        18px;
  --ldcal-shadow:        0 2px 12px rgba(92, 61, 143, 0.08), 0 8px 32px rgba(92, 61, 143, 0.05);
  --ldcal-font-display:  'Nunito', 'Trebuchet MS', sans-serif;
  --ldcal-font-body:     'Poppins', sans-serif;
 }

.ldcal-section  { 
  width: 100% !important;
  background: var(--ldcal-bg) !important;
  padding: 80px 0 !important;
  font-family: var(--ldcal-font-body) !important;
  box-sizing: border-box !important;
  overflow: hidden !important;
  position: relative !important;
 }

.ldcal-section::before  { 
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  background-image: radial-gradient(circle, rgba(92, 61, 143, 0.06) 1px, transparent 1px) !important;
  background-size: 28px 28px !important;
  pointer-events: none !important;
  z-index: 0 !important;
 }

.ldcal-container  { 
  max-width: 1100px !important;
  margin: 0 auto !important;
  padding: 0 36px !important;
  position: relative !important;
  z-index: 1 !important;
 }

.ldcal-section-header  { 
  display: flex !important;
  align-items: flex-end !important;
  justify-content: space-between !important;
  margin-bottom: 44px !important;
  gap: 16px !important;
  flex-wrap: wrap !important;
  opacity: 1 !important;
  transform: none !important;
  animation: ldcal-fade-up 0.7s ease both !important;
 }

.gsap-active .ldcal-section-header  { 
  animation: none !important;
  opacity: 0 !important;
  transform: translateY(28px) !important;
 }

.ldcal-section-left  {  flex: 1 !important;  }

.ldcal-section-title  { 
  font-family: var(--ldcal-font-display) !important;
  font-size: clamp(2rem, 5vw, 3rem) !important;
  font-weight: 800 !important;
  color: var(--ldcal-purple) !important;
  line-height: 1.1 !important;
  margin: 0 0 10px 0 !important;
  padding: 0 !important;
  letter-spacing: -0.02em !important;
 }

.ldcal-section-sub  { 
  font-size: 14.5px !important;
  color: var(--ldcal-muted) !important;
  margin: 0 !important;
  font-weight: 400 !important;
  line-height: 1.65 !important;
  font-family: var(--ldcal-font-body) !important;
 }

.ldcal-view-all  { 
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  color: var(--ldcal-purple) !important;
  text-decoration: none !important;
  white-space: nowrap !important;
  font-family: var(--ldcal-font-body) !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  border: 1.5px solid var(--ldcal-purple) !important;
  padding: 10px 22px !important;
  border-radius: 999px !important;
  transition: background 0.22s ease, color 0.22s ease, border-color 0.22s ease, transform 0.22s ease !important;
  align-self: flex-start !important;
 }
.ldcal-view-all:hover  { 
  background: var(--ldcal-purple) !important;
  color: #fff !important;
  border-color: var(--ldcal-purple) !important;
  transform: translateY(-1px) !important;
 }
.ldcal-view-all span  {  font-size: 16px !important;  }

.ldcal-events-list  { 
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
 }

.ldcal-no-events  { 
  background: var(--ldcal-white) !important;
  border-radius: var(--ldcal-radius) !important;
  padding: 52px !important;
  text-align: center !important;
  color: var(--ldcal-muted) !important;
  font-size: 15px !important;
  border: 1px solid var(--ldcal-border) !important;
 }

.ldcal-event-card  { 
  background: var(--ldcal-white) !important;
  border: 1px solid var(--ldcal-border) !important;
  border-radius: var(--ldcal-radius) !important;
  padding: 22px 26px !important;
  display: flex !important;
  align-items: center !important;
  gap: 22px !important;
  box-shadow: var(--ldcal-shadow) !important;
  position: relative !important;
  overflow: hidden !important;
  cursor: default !important;
  opacity: 1 !important;
  transform: none !important;
  animation: ldcal-slide-left 0.6s ease both !important;
  animation-delay: var(--ldcal-stagger, 0ms) !important;
  transition:
    border-color 0.28s ease,
    box-shadow   0.32s ease,
    transform    0.28s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
 }

.gsap-active .ldcal-event-card  { 
  animation: none !important;
  opacity: 0 !important;
  transform: translateX(-36px) !important;
 }

.ldcal-event-card::before  { 
  content: '' !important;
  position: absolute !important;
  left: 0 !important; top: 0 !important;
  width: 4px !important;
  height: 0% !important;
  background: linear-gradient(to bottom, var(--ldcal-purple), var(--ldcal-accent)) !important;
  border-radius: 0 2px 2px 0 !important;
  transition: height 0.35s cubic-bezier(0.4, 0, 0.2, 1) !important;
 }

.ldcal-event-card::after  { 
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  background: linear-gradient(130deg, var(--ldcal-accent-dim) 0%, transparent 55%) !important;
  opacity: 0 !important;
  transition: opacity 0.35s ease !important;
  pointer-events: none !important;
  border-radius: var(--ldcal-radius) !important;
 }

.ldcal-event-card:hover  { 
  border-color: var(--ldcal-accent-border) !important;
  box-shadow:
    0 0 0 1px var(--ldcal-accent-border),
    0 12px 40px var(--ldcal-accent-glow),
    0 4px 16px rgba(92, 61, 143, 0.06) !important;
  transform: translateY(-2px) !important;
 }
.ldcal-event-card:hover::before  {  height: 100% !important;  }
.ldcal-event-card:hover::after   {  opacity: 1 !important;  }

.ldcal-event-card:nth-child(1)  {  --ldcal-stagger: 0ms;  }
.ldcal-event-card:nth-child(2)  {  --ldcal-stagger: 80ms;  }
.ldcal-event-card:nth-child(3)  {  --ldcal-stagger: 160ms;  }
.ldcal-event-card:nth-child(4)  {  --ldcal-stagger: 240ms;  }
.ldcal-event-card:nth-child(5)  {  --ldcal-stagger: 320ms;  }
.ldcal-event-card:nth-child(n+6)  {  --ldcal-stagger: 400ms;  }

.ldcal-event-date  { 
  flex-shrink: 0 !important;
  width: 66px !important; height: 70px !important;
  background: var(--ldcal-purple-dim) !important;
  border-radius: 14px !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 2px !important;
  border: 1px solid rgba(92, 61, 143, 0.15) !important;
  transition: background 0.28s ease, border-color 0.28s ease, transform 0.28s ease !important;
  position: relative !important;
  z-index: 1 !important;
 }
.ldcal-event-card:hover .ldcal-event-date  { 
  border-color: var(--ldcal-accent-border) !important;
  background: var(--ldcal-accent-dim) !important;
  transform: scale(1.05) !important;
 }

.ldcal-event-day  { 
  font-family: var(--ldcal-font-display) !important;
  font-size: 28px !important;
  font-weight: 800 !important;
  color: var(--ldcal-purple) !important;
  line-height: 1 !important;
  transition: color 0.28s ease !important;
 }
.ldcal-event-card:hover .ldcal-event-day  {  color: var(--ldcal-accent) !important;  }

.ldcal-event-month  { 
  font-size: 10.5px !important;
  font-weight: 700 !important;
  color: var(--ldcal-muted) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.1em !important;
  font-family: var(--ldcal-font-body) !important;
 }

.ldcal-event-body  { 
  flex: 1 !important;
  min-width: 0 !important;
  position: relative !important;
  z-index: 1 !important;
 }

.ldcal-event-meta  { 
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  margin-bottom: 7px !important;
  flex-wrap: wrap !important;
 }

.ldcal-event-cat  { 
  display: inline-block !important;
  font-size: 10.5px !important;
  font-weight: 700 !important;
  color: var(--ldcal-purple) !important;
  background: var(--ldcal-purple-dim) !important;
  border: 1px solid rgba(92, 61, 143, 0.15) !important;
  border-radius: 9999px !important;
  padding: 3px 11px !important;
  font-family: var(--ldcal-font-body) !important;
  letter-spacing: 0.07em !important;
  text-transform: uppercase !important;
  transition: background 0.28s ease, border-color 0.28s ease, color 0.28s ease !important;
 }
.ldcal-event-card:hover .ldcal-event-cat  { 
  background: var(--ldcal-accent-dim) !important;
  border-color: var(--ldcal-accent-border) !important;
  color: var(--ldcal-accent) !important;
 }

.ldcal-event-loc  { 
  display: inline-flex !important;
  align-items: center !important;
  gap: 4px !important;
  font-size: 12px !important;
  color: var(--ldcal-muted) !important;
  font-family: var(--ldcal-font-body) !important;
 }
.ldcal-event-loc svg  {  flex-shrink: 0 !important; color: var(--ldcal-accent) !important;  }

.ldcal-event-title  { 
  font-family: var(--ldcal-font-display) !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  color: var(--ldcal-dark) !important;
  margin: 0 0 5px 0 !important;
  line-height: 1.3 !important;
  letter-spacing: -0.01em !important;
  transition: color 0.22s ease !important;
 }
.ldcal-event-title a  {  color: inherit !important; text-decoration: none !important;  }
.ldcal-event-title a:hover,
.ldcal-event-card:hover .ldcal-event-title  {  color: var(--ldcal-accent) !important;  }

.ldcal-event-desc  { 
  font-size: 13px !important;
  color: var(--ldcal-muted) !important;
  margin: 0 !important;
  line-height: 1.7 !important;
  font-family: var(--ldcal-font-body) !important;
 }

.ldcal-event-arrow  {  position: relative !important; z-index: 1 !important;  }

.ldcal-arrow-btn  { 
  flex-shrink: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 38px !important; height: 38px !important;
  border-radius: 50% !important;
  background: var(--ldcal-purple-dim) !important;
  border: 1px solid rgba(92, 61, 143, 0.18) !important;
  color: var(--ldcal-purple) !important;
  text-decoration: none !important;
  position: relative !important;
  transition:
    background 0.22s ease, color 0.22s ease,
    border-color 0.22s ease,
    transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
  cursor: default !important;
 }
.ldcal-arrow-btn svg  { 
  width: 15px !important; height: 15px !important;
  stroke: currentColor !important;
  flex-shrink: 0 !important;
 }
.ldcal-arrow-btn::after  { 
  content: '' !important;
  position: absolute !important;
  inset: -5px !important;
  border-radius: 50% !important;
  border: 2px solid var(--ldcal-accent) !important;
  opacity: 0 !important;
  transform: scale(0.75) !important;
  transition: opacity 0.28s ease, transform 0.28s ease !important;
 }
a.ldcal-arrow-btn  {  cursor: pointer !important;  }
a.ldcal-arrow-btn:hover,
.ldcal-event-card:hover .ldcal-arrow-btn  { 
  background: var(--ldcal-accent) !important;
  color: #fff !important;
  border-color: var(--ldcal-accent) !important;
  transform: scale(1.08) !important;
 }
a.ldcal-arrow-btn:hover::after,
.ldcal-event-card:hover .ldcal-arrow-btn::after  {  opacity: 0.35 !important; transform: scale(1) !important;  }

@keyframes ldcal-fade-up {
  from  {  opacity: 0 !important; transform: translateY(24px) !important;  }
  to    {  opacity: 1 !important; transform: translateY(0) !important;  }
}
@keyframes ldcal-slide-left {
  from  {  opacity: 0 !important; transform: translateX(-28px) !important;  }
  to    {  opacity: 1 !important; transform: translateX(0) !important;  }
}

@media (max-width: 768px) {
  .ldcal-section  {  padding: 52px 0 !important;  }
  .ldcal-container  {  padding: 0 22px !important;  }
  .ldcal-section-header  {  flex-direction: column !important; align-items: flex-start !important;  }
  .ldcal-event-card  {  padding: 18px 20px !important; gap: 16px !important;  }
  .ldcal-event-date  {  width: 56px !important; height: 60px !important;  }
  .ldcal-event-day  {  font-size: 24px !important;  }
  .ldcal-event-desc  {  display: none !important;  }
}
@media (max-width: 480px) {
  .ldcal-event-arrow  {  display: none !important;  }
}


/* ================================================
   NEW MODEL SCHOOL NOTICE BOARD — Styles v3
   ================================================ */

.ldnb-section  { 
  width: 100% !important;
  background: #F5F3FF !important;
  padding: 88px 0 96px !important;
  font-family: 'Poppins', sans-serif !important;
  box-sizing: border-box !important;
  overflow: hidden !important;
  position: relative !important;
 }

.ldnb-section::before  { 
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='0.025'/%3E%3C/svg%3E") !important;
  pointer-events: none !important;
  z-index: 0 !important;
 }

.ldnb-container  { 
  max-width: 1200px !important;
  margin: 0 auto !important;
  padding: 0 44px !important;
  position: relative !important;
  z-index: 1 !important;
 }

.ldnb-grid  { 
  display: grid !important;
  grid-template-columns: 1fr 1.08fr !important;
  gap: 52px !important;
  align-items: start !important;
 }

.ldnb-section-header  { 
  display: flex !important;
  align-items: baseline !important;
  justify-content: space-between !important;
  margin-bottom: 36px !important;
  gap: 16px !important;
  opacity: 1 !important;
  transform: none !important;
  animation: ldnb-fade-up 0.65s ease both !important;
 }

.gsap-active .ldnb-section-header  { 
  animation: none !important;
  opacity: 0 !important;
  transform: translateY(22px) !important;
 }

.ldnb-title  { 
  font-family: 'Nunito', sans-serif !important;
  font-size: clamp(1.8rem, 3.2vw, 2.6rem) !important;
  font-weight: 800 !important;
  color: #5C3D8F !important;
  margin: 0 !important;
  line-height: 1.1 !important;
  letter-spacing: -0.02em !important;
  position: relative !important;
 }

.ldnb-title::after  { 
  content: '' !important;
  display: block !important;
  width: 44px !important;
  height: 3px !important;
  background: linear-gradient(to right, #5C3D8F, #E91E8C) !important;
  margin-top: 12px !important;
  border-radius: 2px !important;
 }

.ldnb-view-all  { 
  font-size: 11.5px !important;
  font-weight: 700 !important;
  color: var(--ldnb-accent, #E91E8C) !important;
  text-decoration: none !important;
  white-space: nowrap !important;
  letter-spacing: 0.1em !important;
  text-transform: uppercase !important;
  position: relative !important;
  padding-bottom: 3px !important;
  transition: opacity 0.2s !important;
  flex-shrink: 0 !important;
  font-family: 'Poppins', sans-serif !important;
 }
.ldnb-view-all::after  { 
  content: '' !important;
  position: absolute !important;
  bottom: 0 !important; left: 0 !important;
  width: 0 !important; height: 1.5px !important;
  background: var(--ldnb-accent, #E91E8C) !important;
  transition: width 0.3s ease !important;
 }
.ldnb-view-all:hover::after  {  width: 100% !important;  }

.ldnb-list  { 
  display: flex !important;
  flex-direction: column !important;
  gap: 0 !important;
 }

.ldnb-empty  { 
  padding: 44px 32px !important;
  text-align: center !important;
  color: #8B7BAD !important;
  font-size: 14px !important;
  font-style: italic !important;
 }

.ldnb-item  { 
  display: flex !important;
  align-items: flex-start !important;
  gap: 24px !important;
  padding: 22px 0 !important;
  border-bottom: 1px solid rgba(92, 61, 143, 0.12) !important;
  cursor: default !important;
  position: relative !important;
  opacity: 1 !important;
  transform: none !important;
  animation: ldnb-slide-left 0.55s ease both !important;
  animation-delay: var(--ldnb-stagger, 0ms) !important;
  transition: padding-left 0.22s ease !important;
 }

.gsap-active .ldnb-item  { 
  animation: none !important;
  opacity: 0 !important;
  transform: translateX(-28px) !important;
 }

.ldnb-item:first-child  {  padding-top: 6px !important;  }
.ldnb-item:last-child   {  border-bottom: none !important;  }

.ldnb-item::before  { 
  content: '' !important;
  position: absolute !important;
  left: -24px !important; top: 0 !important; bottom: 0 !important;
  width: 3px !important;
  background: linear-gradient(to bottom, #5C3D8F, #E91E8C) !important;
  transform: scaleY(0) !important;
  transform-origin: top !important;
  border-radius: 2px !important;
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
 }
.ldnb-item:hover::before  {  transform: scaleY(1) !important;  }

.ldnb-item:nth-child(1)  {  --ldnb-stagger: 0ms;  }
.ldnb-item:nth-child(2)  {  --ldnb-stagger: 90ms;  }
.ldnb-item:nth-child(3)  {  --ldnb-stagger: 180ms;  }
.ldnb-item:nth-child(4)  {  --ldnb-stagger: 270ms;  }
.ldnb-item:nth-child(n+5)  {  --ldnb-stagger: 360ms;  }

.ldnb-date  { 
  flex-shrink: 0 !important;
  width: 58px !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 2px !important;
 }

.ldnb-date-month  { 
  font-size: 9.5px !important;
  font-weight: 700 !important;
  color: var(--ldnb-accent, #E91E8C) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.14em !important;
  line-height: 1 !important;
  font-family: 'Poppins', sans-serif !important;
 }

.ldnb-date-day  { 
  font-family: 'Nunito', sans-serif !important;
  font-size: 34px !important;
  font-weight: 800 !important;
  color: #5C3D8F !important;
  line-height: 1 !important;
  transition: color 0.22s ease !important;
 }
.ldnb-item:hover .ldnb-date-day  {  color: var(--ldnb-accent, #E91E8C) !important;  }

.ldnb-date-divider  { 
  width: 100% !important;
  height: 1px !important;
  background: rgba(92, 61, 143, 0.2) !important;
  margin-top: 7px !important;
 }

.ldnb-content  { 
  flex: 1 !important;
  min-width: 0 !important;
  padding-top: 2px !important;
 }

.ldnb-notice-title  { 
  font-family: 'Poppins', sans-serif !important;
  font-size: 15.5px !important;
  font-weight: 600 !important;
  color: #2D1B5E !important;
  margin: 0 0 8px 0 !important;
  line-height: 1.45 !important;
  transition: color 0.22s ease !important;
 }
.ldnb-notice-title a  {  color: inherit !important; text-decoration: none !important;  }
.ldnb-item:hover .ldnb-notice-title,
.ldnb-notice-title a:hover  {  color: var(--ldnb-accent, #E91E8C) !important;  }

.ldnb-meta  { 
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  flex-wrap: wrap !important;
 }

.ldnb-cat  { 
  display: inline-flex !important;
  align-items: center !important;
  gap: 5px !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  color: #8B7BAD !important;
  font-family: 'Poppins', sans-serif !important;
  letter-spacing: 0.05em !important;
  text-transform: uppercase !important;
  transition: color 0.22s !important;
 }
.ldnb-cat svg  {  flex-shrink: 0 !important; opacity: 0.55 !important; transition: opacity 0.22s !important;  }
.ldnb-item:hover .ldnb-cat  {  color: var(--ldnb-accent, #E91E8C) !important;  }
.ldnb-item:hover .ldnb-cat svg  {  opacity: 0.8 !important;  }

.ldnb-right  { 
  opacity: 1 !important;
  transform: none !important;
  animation: ldnb-slide-right 0.75s 0.2s ease both !important;
 }

.gsap-active .ldnb-right  { 
  animation: none !important;
  opacity: 0 !important;
  transform: translateX(32px) !important;
 }

.ldnb-banner  { 
  position: relative !important;
  border-radius: 28px !important;
  overflow: hidden !important;
  min-height: 400px !important;
  background: #5C3D8F center/cover no-repeat !important;
  display: flex !important;
  align-items: flex-end !important;
  box-shadow:
    0 2px 4px rgba(92, 61, 143, 0.08),
    0 16px 48px rgba(92, 61, 143, 0.28),
    0 40px 90px rgba(92, 61, 143, 0.14) !important;
 }

.ldnb-banner-overlay  { 
  position: absolute !important;
  inset: 0 !important;
  background:
    linear-gradient(
      to top,
      rgba(30, 8, 60, 0.96) 0%,
      rgba(60, 20, 100, 0.58) 48%,
      rgba(92, 61, 143, 0.15) 100%
    ) !important;
  border-radius: 28px !important;
  pointer-events: none !important;
 }

.ldnb-banner-overlay::after  { 
  content: '' !important;
  position: absolute !important;
  bottom: 0 !important; left: 0 !important; right: 0 !important;
  height: 200px !important;
  background: linear-gradient(to top, rgba(233, 30, 140, 0.12) 0%, transparent 100%) !important;
  pointer-events: none !important;
 }

.ldnb-banner-inner  { 
  position: relative !important;
  z-index: 2 !important;
  padding: 38px 40px 42px !important;
  width: 100% !important;
  box-sizing: border-box !important;
 }

.ldnb-banner-tag  { 
  display: inline-flex !important;
  align-items: center !important;
  background: var(--ldnb-accent, #E91E8C) !important;
  color: #fff !important;
  font-size: 10px !important;
  font-weight: 700 !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  padding: 7px 18px !important;
  border-radius: 999px !important;
  margin-bottom: 20px !important;
  font-family: 'Poppins', sans-serif !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.22), 0 2px 10px rgba(233, 30, 140, 0.42) !important;
 }

.ldnb-banner-title  { 
  font-family: 'Nunito', sans-serif !important;
  font-size: clamp(1.65rem, 3vw, 2.3rem) !important;
  font-weight: 800 !important;
  color: #FFFFFF !important;
  line-height: 1.18 !important;
  margin: 0 0 14px 0 !important;
  letter-spacing: -0.02em !important;
 }

.ldnb-banner-desc  { 
  font-size: 14px !important;
  color: rgba(255, 255, 255, 0.72) !important;
  line-height: 1.75 !important;
  margin: 0 0 28px 0 !important;
  font-family: 'Poppins', sans-serif !important;
  font-weight: 400 !important;
  max-width: 90% !important;
 }

.ldnb-banner-btns  { 
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  flex-wrap: wrap !important;
 }

.ldnb-btn  { 
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 13px 28px !important;
  border-radius: 999px !important;
  font-size: 12.5px !important;
  font-weight: 700 !important;
  font-family: 'Poppins', sans-serif !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  text-decoration: none !important;
  transition: background 0.22s ease, color 0.22s ease, transform 0.18s ease, box-shadow 0.22s ease !important;
  white-space: nowrap !important;
 }
.ldnb-btn:hover  {  transform: translateY(-2px) !important;  }

.ldnb-btn-white  { 
  background: #FFFFFF !important;
  color: #5C3D8F !important;
  box-shadow: 0 4px 18px rgba(0,0,0,0.22) !important;
 }
.ldnb-btn-white:hover  { 
  background: #f0eaff !important;
  box-shadow: 0 8px 28px rgba(0,0,0,0.28) !important;
 }

.ldnb-btn-outline  { 
  background: rgba(233, 30, 140, 0.15) !important;
  color: rgba(255, 255, 255, 0.9) !important;
  border: 1.5px solid rgba(233, 30, 140, 0.55) !important;
  backdrop-filter: blur(10px) !important;
  -webkit-backdrop-filter: blur(10px) !important;
 }
.ldnb-btn-outline:hover  { 
  background: rgba(233, 30, 140, 0.3) !important;
  border-color: #E91E8C !important;
  color: #fff !important;
 }

@keyframes ldnb-fade-up {
  from  {  opacity: 0 !important; transform: translateY(22px) !important;  }
  to    {  opacity: 1 !important; transform: translateY(0) !important;  }
}
@keyframes ldnb-slide-left {
  from  {  opacity: 0 !important; transform: translateX(-24px) !important;  }
  to    {  opacity: 1 !important; transform: translateX(0) !important;  }
}
@keyframes ldnb-slide-right {
  from  {  opacity: 0 !important; transform: translateX(28px) !important;  }
  to    {  opacity: 1 !important; transform: translateX(0) !important;  }
}

@media (max-width: 1000px) {
  .ldnb-grid  {  grid-template-columns: 1fr !important; gap: 44px !important;  }
  .ldnb-right  {  animation-name: ldnb-fade-up !important;  }
  .gsap-active .ldnb-right  {  transform: translateY(28px) !important;  }
}

@media (max-width: 640px) {
  .ldnb-section  {  padding: 60px 0 68px !important;  }
  .ldnb-container  {  padding: 0 24px !important;  }
  .ldnb-banner  {  min-height: 320px !important;  }
  .ldnb-banner-inner  {  padding: 28px 26px 32px !important;  }
  .ldnb-banner-title  {  font-size: 1.5rem !important;  }
  .ldnb-banner-desc  {  max-width: 100% !important;  }
  .ldnb-date-day  {  font-size: 28px !important;  }
  .ldnb-date  {  width: 50px !important;  }
  .ldnb-item::before  {  left: -14px !important;  }
}

@media (max-width: 400px) {
  .ldnb-btn  {  padding: 11px 22px !important; font-size: 12px !important;  }
  .ldnb-banner-btns  {  gap: 10px !important;  }
  .ldnb-btn-outline  {  display: none !important;  }
}


/* ================================================

/* ================================================
   EVENT DETAIL MODAL — v4.1
   ================================================ */

/* Hidden by default via CSS (not just inline style, for safety) */
.ldcal-modal-overlay {
  display: none;
  position: fixed !important;
  inset: 0 !important;
  z-index: 99999 !important;
  background: rgba(20, 8, 45, 0.75) !important;
  backdrop-filter: blur(6px) !important;
  -webkit-backdrop-filter: blur(6px) !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 36px 20px 20px !important;  /* extra top padding so close button has room */
  box-sizing: border-box !important;
}
/* JS sets display:flex to open */
.ldcal-modal-overlay.is-open {
  display: flex !important;
}

.ldcal-modal {
  position: relative !important;
  background: #ffffff !important;
  border-radius: 24px !important;
  width: 100% !important;
  max-width: 640px !important;
  max-height: 90vh !important;
  overflow: visible !important;
  display: flex !important;
  flex-direction: column !important;
  box-shadow:
    0 0 0 1px rgba(92,61,143,0.10),
    0 24px 80px rgba(20,8,45,0.38),
    0 8px 24px rgba(20,8,45,0.18) !important;
  font-family: var(--ldcal-font-body) !important;
}

/* Close Button — top-right inside modal, fully within bounds, never clipped */
.ldcal-modal-close {
  position: absolute !important;
  top: 14px !important;
  right: 14px !important;
  z-index: 9999 !important;
  width: 36px !important;
  height: 36px !important;
  border-radius: 50% !important;
  background: rgba(248, 246, 255, 0.95) !important;
  border: 1.5px solid rgba(92,61,143,0.20) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  cursor: pointer !important;
  color: var(--ldcal-purple) !important;
  transition: background 0.2s, color 0.2s, border-color 0.2s, transform 0.25s !important;
  box-shadow: 0 2px 10px rgba(0,0,0,0.14) !important;
  padding: 0 !important;
  flex-shrink: 0 !important;
  pointer-events: all !important;
}
.ldcal-modal-close:hover {
  background: var(--ldcal-accent) !important;
  color: #fff !important;
  border-color: var(--ldcal-accent) !important;
  transform: rotate(90deg) scale(1.08) !important;
}

/* Image area */
.ldcal-modal-image-wrap {
  position: relative !important;
  width: 100% !important;
  height: 220px !important;
  flex-shrink: 0 !important;
  overflow: hidden !important;
  border-radius: 24px 24px 0 0 !important;  /* image still clips correctly */
}
.ldcal-modal-image-wrap img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}
.ldcal-modal-image-overlay {
  position: absolute !important;
  inset: 0 !important;
  background: linear-gradient(to bottom, transparent 40%, rgba(20,8,45,0.55) 100%) !important;
  pointer-events: none !important;
}
.ldcal-modal-image-badge {
  position: absolute !important;
  top: 16px !important;
  left: 20px !important;
  background: var(--ldcal-accent) !important;
  color: #fff !important;
  font-size: 10px !important;
  font-weight: 700 !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  padding: 5px 14px !important;
  border-radius: 999px !important;
  font-family: var(--ldcal-font-body) !important;
  box-shadow: 0 2px 10px rgba(233,30,140,0.4) !important;
}

/* Scrollable body */
.ldcal-modal-body {
  padding: 28px 32px 32px !important;
  overflow-y: auto !important;
  flex: 1 !important;
  overscroll-behavior: contain !important;
  -webkit-overflow-scrolling: touch !important;
}
.ldcal-modal-body::-webkit-scrollbar { width: 5px; }
.ldcal-modal-body::-webkit-scrollbar-track { background: transparent; }
.ldcal-modal-body::-webkit-scrollbar-thumb { background: rgba(92,61,143,0.2); border-radius: 99px; }

/* Top meta */
.ldcal-modal-top-meta {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  margin-bottom: 12px !important;
  flex-wrap: wrap !important;
}
.ldcal-modal-cat {
  display: inline-block !important;
  font-size: 10.5px !important;
  font-weight: 700 !important;
  color: var(--ldcal-purple) !important;
  background: var(--ldcal-purple-dim) !important;
  border: 1px solid rgba(92,61,143,0.15) !important;
  border-radius: 9999px !important;
  padding: 4px 12px !important;
  text-transform: uppercase !important;
  letter-spacing: 0.07em !important;
}
.ldcal-modal-date-pill {
  font-size: 11px !important;
  font-weight: 600 !important;
  color: var(--ldcal-accent) !important;
  letter-spacing: 0.02em !important;
}

/* Title */
.ldcal-modal-title {
  font-family: var(--ldcal-font-display) !important;
  font-size: clamp(1.2rem, 4vw, 1.65rem) !important;
  font-weight: 800 !important;
  color: var(--ldcal-dark) !important;
  margin: 0 0 22px 0 !important;
  line-height: 1.2 !important;
  letter-spacing: -0.02em !important;
}

/* Info grid */
.ldcal-modal-info-grid {
  background: var(--ldcal-bg) !important;
  border: 1px solid var(--ldcal-border) !important;
  border-radius: 14px !important;
  overflow: hidden !important;
  margin-bottom: 24px !important;
}
.ldcal-modal-info-row {
  display: flex !important;
  align-items: flex-start !important;
  gap: 14px !important;
  padding: 13px 18px !important;
  border-bottom: 1px solid var(--ldcal-border) !important;
}
.ldcal-modal-info-row:last-child { border-bottom: none !important; }
.ldcal-modal-info-icon {
  font-size: 15px !important;
  flex-shrink: 0 !important;
  margin-top: 1px !important;
}
.ldcal-modal-info-label {
  display: block !important;
  font-size: 9.5px !important;
  font-weight: 700 !important;
  color: var(--ldcal-muted) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.11em !important;
  margin-bottom: 3px !important;
}
.ldcal-modal-info-val {
  display: block !important;
  font-size: 13.5px !important;
  font-weight: 600 !important;
  color: var(--ldcal-dark) !important;
  line-height: 1.5 !important;
}

/* Sections */
.ldcal-modal-section { margin-bottom: 20px !important; }
.ldcal-modal-section-title {
  font-family: var(--ldcal-font-display) !important;
  font-size: 12px !important;
  font-weight: 800 !important;
  color: var(--ldcal-purple) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.09em !important;
  margin: 0 0 8px 0 !important;
}
.ldcal-modal-desc {
  font-size: 14px !important;
  color: var(--ldcal-text) !important;
  line-height: 1.75 !important;
  margin: 0 !important;
}

/* Instructions amber box */
.ldcal-modal-instructions {
  background: #fffbf0 !important;
  border: 1px solid rgba(255,177,0,0.3) !important;
  border-left: 3px solid #ffb100 !important;
  border-radius: 10px !important;
  padding: 14px 16px !important;
}
.ldcal-modal-instr-header {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  margin-bottom: 6px !important;
}
.ldcal-modal-instr-header .ldcal-modal-section-title { color: #a06000 !important; margin: 0 !important; }
.ldcal-modal-instr-text {
  font-size: 13.5px !important;
  color: #7a4900 !important;
  line-height: 1.7 !important;
  margin: 0 !important;
}

/* Attachment */
.ldcal-modal-attachment { margin-top: 8px !important; }
.ldcal-modal-attach-btn {
  display: inline-flex !important;
  align-items: center !important;
  gap: 9px !important;
  padding: 12px 24px !important;
  border-radius: 999px !important;
  background: var(--ldcal-purple-dim) !important;
  border: 1.5px solid rgba(92,61,143,0.22) !important;
  color: var(--ldcal-purple) !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  text-decoration: none !important;
  transition: background 0.22s, border-color 0.22s, color 0.22s, transform 0.18s !important;
}
.ldcal-modal-attach-btn:hover {
  background: var(--ldcal-purple) !important;
  border-color: var(--ldcal-purple) !important;
  color: #fff !important;
  transform: translateY(-2px) !important;
}

/* ── Clickable card cursor ── */
.ldcal-has-popup { cursor: pointer !important; }

/* ── View Full Calendar button ── */
.ldcal-footer-cta {
  display: flex !important;
  justify-content: center !important;
  margin-top: 40px !important;
}
.ldcal-view-all-btn {
  display: inline-flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 15px 36px !important;
  border-radius: 999px !important;
  background: var(--ldcal-purple) !important;
  color: #fff !important;
  font-size: 13.5px !important;
  font-weight: 700 !important;
  font-family: var(--ldcal-font-body) !important;
  letter-spacing: 0.05em !important;
  text-decoration: none !important;
  text-transform: uppercase !important;
  box-shadow: 0 4px 20px rgba(92,61,143,0.28), 0 2px 8px rgba(92,61,143,0.18) !important;
  transition: background 0.22s, transform 0.22s, box-shadow 0.22s !important;
  position: relative !important;
  overflow: hidden !important;
}
.ldcal-view-all-btn::before {
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  background: linear-gradient(135deg, rgba(233,30,140,0.22) 0%, transparent 60%) !important;
  pointer-events: none !important;
}
.ldcal-view-all-btn:hover {
  background: var(--ldcal-accent) !important;
  transform: translateY(-3px) !important;
  box-shadow: 0 8px 32px rgba(233,30,140,0.36), 0 4px 12px rgba(233,30,140,0.22) !important;
}
.ldcal-view-all-btn svg {
  flex-shrink: 0 !important;
  transition: transform 0.22s !important;
}
.ldcal-view-all-btn:hover svg {
  transform: translateX(4px) !important;
}

/* ── Time chip in event meta ── */
.ldcal-event-time {
  display: inline-flex !important;
  align-items: center !important;
  gap: 4px !important;
  font-size: 12px !important;
  color: var(--ldcal-muted) !important;
  font-family: var(--ldcal-font-body) !important;
}
.ldcal-event-time svg { flex-shrink: 0 !important; color: var(--ldcal-accent) !important; }

/* Mobile */
@media (max-width: 600px) {
  .ldcal-modal { border-radius: 20px !important; max-height: 95vh !important; }
  .ldcal-modal-image-wrap { height: 170px !important; }
  .ldcal-modal-body { padding: 20px 18px 26px !important; }
  .ldcal-modal-title { font-size: 1.2rem !important; }
  .ldcal-modal-info-row { padding: 11px 14px !important; }
  .ldcal-view-all-btn { padding: 14px 28px !important; font-size: 13px !important; }
}

/* SVG icon helpers for modal sections */
.ldcal-modal-section-icon {
  display: inline-flex !important;
  align-items: center !important;
  vertical-align: middle !important;
  margin-right: 6px !important;
  color: var(--ldcal-purple) !important;
}
.ldcal-modal-instr-title .ldcal-modal-section-icon {
  color: #a06000 !important;
}
.ldcal-modal-info-icon {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-shrink: 0 !important;
  color: var(--ldcal-purple) !important;
  opacity: 0.75 !important;
  margin-top: 1px !important;
}
.ldcal-modal-info-icon svg {
  width: 14px !important;
  height: 14px !important;
}
.ldcal-modal-section-title {
  display: flex !important;
  align-items: center !important;
}
