:root{
  --downstream-events-brand:#2b7e84;
  --downstream-events-brand-dark:#0f4143;
  --downstream-events-text:#173638;
  --downstream-events-muted:#667a7b;
  --downstream-events-border:#d8e3e3;
  --downstream-events-bg:#fff;
}

.downstream-events-wrap{width:100%;max-width:100%}
.downstream-events-grid{
  display:grid !important;
  grid-template-columns:repeat(var(--downstream-cols,3),minmax(0,1fr)) !important;
  gap:var(--de-card-gap,1.5rem);
  width:100%;
  align-items:stretch;
}
.downstream-layout-list .downstream-events-grid{grid-template-columns:1fr !important}

.downstream-event-card{
  min-width:0;
  width:100%;
  overflow:hidden;
  border:1px solid var(--downstream-events-border);
  background:var(--de-card-bg,var(--downstream-events-bg));
  border-radius:var(--de-card-radius,.75rem);
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.downstream-event-image{display:block;height:var(--de-image-height,240px);overflow:hidden;background:var(--de-image-bg,#f5f7f5)}
.downstream-event-image img{width:100%;height:100%;object-fit:var(--de-image-fit,cover);object-position:var(--de-image-position,center);display:block}
.downstream-event-body{padding:var(--de-card-padding,1.25rem)}
.downstream-event-type,
.downstream-event-format{
  display:inline-flex;
  width:auto;
  align-items:center;
  margin:0 .35rem .65rem 0;
  color:var(--downstream-events-brand);
  text-transform:uppercase;
  letter-spacing:.08em;
  font-size:.72rem;
  font-weight:700;
}
.downstream-event-title{margin:0 0 .65rem}
.downstream-event-title a{color:var(--de-title-color,var(--downstream-events-text));text-decoration:none}
.downstream-event-meta{color:var(--de-meta-color,var(--downstream-events-muted));font-size:.92rem;margin:.2rem 0}
.downstream-event-description{margin-top:.85rem;color:var(--de-desc-color,var(--downstream-events-text))}
.downstream-event-description p:last-child{margin-bottom:0}
.downstream-event-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:1rem}
.downstream-event-link{
  display:inline-flex;
  align-items:center;
  gap:.35rem;
  color:var(--downstream-events-brand);
  font-weight:700;
  text-decoration:none;
  transition:all .2s ease;
}
.downstream-event-link-online{color:var(--downstream-events-brand-dark)}
.downstream-events-map{
  width:100%;
  border-radius:var(--de-map-radius,.75rem);
  overflow:hidden;
  margin-bottom:1.5rem;
}
.downstream-map-popup-title{font-weight:700;margin-bottom:.25rem}
.downstream-map-popup-meta{font-size:.85rem;margin:.15rem 0}
.downstream-map-popup-link{color:var(--downstream-events-brand);font-weight:700}
.downstream-events-notice,.downstream-events-empty{padding:1rem;background:#f5f7f7}
.downstream-pin{
  background:var(--downstream-events-brand);
  border:2px solid #fff;
  width:18px!important;
  height:18px!important;
  border-radius:50%;
  box-shadow:0 1px 5px rgba(0,0,0,.25);
}

@media(max-width:1024px){
  .downstream-events-grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important}
}
@media(max-width:767px){
  .downstream-events-grid{grid-template-columns:1fr !important}
}

.downstream-event-link-primary{
  color:var(--de-button-text,#fff);
  background:var(--de-button-bg,var(--downstream-events-brand));
  padding:.65rem 1rem;
  border-radius:.35rem;
}
.downstream-event-link-primary:hover{
  color:var(--de-button-text,#fff);
  background:var(--de-button-hover-bg,var(--downstream-events-brand-dark));
}
@media(max-width:1024px){
  .downstream-events-grid{grid-template-columns:repeat(var(--de-cols-tablet,2),minmax(0,1fr)) !important}
}
@media(max-width:767px){
  .downstream-events-grid{grid-template-columns:repeat(var(--de-cols-mobile,1),minmax(0,1fr)) !important}
}


/* ================================
   DOWNSTREAM CALENDAR VIEW
================================ */
.downstream-calendar{
  width:100%;
  --de-cal-accent:var(--downstream-events-brand,#2b7e84);
  --de-cal-border:#dfe6e6;
  --de-cal-event-bg:#eef6f5;
  --de-cal-text:#173638;
}
.downstream-calendar-toolbar{
  display:grid;
  grid-template-columns:48px 1fr 48px;
  align-items:center;
  gap:12px;
  margin-bottom:1rem;
}
.downstream-calendar-title{
  text-align:center;
  font-size:1.6rem;
  font-weight:700;
  color:var(--de-cal-text);
}
.downstream-calendar-nav{
  display:flex;
  align-items:center;
  justify-content:center;
  width:42px;
  height:42px;
  border:1px solid var(--de-cal-border);
  border-radius:6px;
  text-decoration:none;
  color:var(--de-cal-accent);
  font-size:1.25rem;
}
.downstream-calendar-weekdays{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  border-top:1px solid var(--de-cal-border);
  border-left:1px solid var(--de-cal-border);
}
.downstream-calendar-weekdays > div{
  padding:.7rem .75rem;
  font-weight:700;
  font-size:.82rem;
  text-transform:uppercase;
  letter-spacing:.05em;
  border-right:1px solid var(--de-cal-border);
  border-bottom:1px solid var(--de-cal-border);
  color:#5f7071;
}
.downstream-calendar-grid{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  border-left:1px solid var(--de-cal-border);
}
.downstream-calendar-day{
  min-height:145px;
  padding:.6rem;
  border-right:1px solid var(--de-cal-border);
  border-bottom:1px solid var(--de-cal-border);
  background:var(--de-cal-control-bg);
  min-width:0;
}
.downstream-calendar-day.is-empty{
  background:var(--de-cal-empty-bg);
}
.downstream-calendar-day-number{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:28px;
  height:28px;
  font-weight:700;
  color:var(--de-cal-text);
  margin-bottom:.4rem;
}
.downstream-calendar-day.is-today .downstream-calendar-day-number{
  background:var(--de-cal-accent);
  color:var(--de-cal-today-text);
  border-radius:50%;
}
.downstream-calendar-events{
  display:flex;
  flex-direction:column;
  gap:.35rem;
}
.downstream-calendar-event{
  display:block;
  padding:.45rem .5rem;
  background:var(--de-cal-event-bg);
  border-left:3px solid var(--de-cal-accent);
  border-radius:3px;
  text-decoration:none;
  color:var(--de-cal-text);
  font-size:.82rem;
  line-height:1.25;
}
.downstream-calendar-event:hover{
  background:#e3f0ee;
}
.downstream-calendar-event-time{
  display:block;
  font-size:.72rem;
  opacity:.75;
  margin-bottom:.15rem;
}
.downstream-calendar-event-title{
  display:block;
  font-weight:700;
}

@media(max-width:767px){
  .downstream-calendar{
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
  }
  .downstream-calendar-weekdays,
  .downstream-calendar-grid{
    min-width:760px;
  }
}


/* Calendar month / year picker */
.downstream-calendar-picker-wrap{
  position:relative;
  display:flex;
  justify-content:center;
}
.downstream-calendar-picker-toggle{
  display:inline-flex;
  align-items:center;
  gap:.55rem;
  min-width:210px;
  justify-content:center;
  padding:.7rem 1rem;
  border:1px solid var(--de-cal-border);
  border-radius:6px;
  background:var(--de-cal-control-bg);
  color:var(--de-cal-text);
  font:inherit;
  font-size:1.05rem;
  font-weight:700;
  cursor:pointer;
}
.downstream-calendar-picker-chevron{
  font-size:1rem;
  line-height:1;
}
.downstream-calendar-picker{
  position:absolute;
  z-index:50;
  top:calc(100% + 8px);
  left:50%;
  transform:translateX(-50%);
  width:330px;
  max-width:calc(100vw - 30px);
  padding:14px;
  border:1px solid var(--de-cal-border);
  border-radius:8px;
  background:var(--de-cal-control-bg);
  box-shadow:0 12px 32px rgba(0,0,0,.14);
}
.downstream-calendar-picker-head{
  display:grid;
  grid-template-columns:44px 1fr 44px;
  align-items:center;
  gap:8px;
  margin-bottom:10px;
}
.downstream-calendar-picker-year{
  text-align:center;
  font-size:1.1rem;
  color:var(--de-cal-text);
}
.downstream-calendar-year-nav{
  display:flex;
  align-items:center;
  justify-content:center;
  width:42px;
  height:42px;
  border:1px solid var(--de-cal-border);
  border-radius:6px;
  background:var(--de-cal-control-bg);
  color:var(--de-cal-accent);
  cursor:pointer;
}
.downstream-calendar-picker-months{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:7px;
}
.downstream-calendar-month-choice{
  padding:.8rem .35rem;
  border:1px solid var(--de-cal-border);
  border-radius:5px;
  background:var(--de-cal-empty-bg);
  color:var(--de-cal-text);
  cursor:pointer;
  font:inherit;
}
.downstream-calendar-month-choice:hover{
  background:var(--de-cal-event-bg);
}
.downstream-calendar-month-choice.is-active{
  background:var(--de-cal-accent);
  border-color:var(--de-cal-accent);
  color:var(--de-cal-today-text);
}
.downstream-calendar-jump-wrap{
  display:flex;
  justify-content:flex-end;
  margin:-.25rem 0 1rem;
}
.downstream-calendar-jump{
  display:inline-flex;
  align-items:center;
  gap:.35rem;
  padding:.65rem .9rem;
  border:1px solid var(--de-cal-border);
  border-radius:6px;
  color:var(--de-cal-accent);
  background:var(--de-cal-control-bg);
  text-decoration:none;
  font-weight:700;
  font-size:.9rem;
}
.downstream-calendar-jump:hover{
  background:var(--de-cal-event-bg);
}


/* ==========================================
   CALENDAR UI POLISH - v2.4
   Intentionally specific to avoid theme
   button/focus styles leaking into controls.
========================================== */

.downstream-calendar{
  --de-cal-accent:var(--downstream-events-brand,#2b7e84);
  --de-cal-accent-dark:var(--downstream-events-brand-dark,#0f4143);
  --de-cal-border:#d7e1e1;
  --de-cal-soft:#f6f8f8;
  --de-cal-soft-active:#e9f3f2;
  --de-cal-text:#173638;
  --de-cal-muted:#657677;
}

.downstream-calendar-toolbar{
  grid-template-columns:48px minmax(180px,260px) 48px !important;
  justify-content:center;
  align-items:center;
  gap:10px !important;
  margin:0 0 1.1rem !important;
}

.downstream-calendar .downstream-calendar-nav,
.downstream-calendar .downstream-calendar-picker-toggle,
.downstream-calendar .downstream-calendar-year-nav,
.downstream-calendar .downstream-calendar-month-choice{
  -webkit-appearance:none !important;
  appearance:none !important;
  box-shadow:none !important;
  text-shadow:none !important;
  font-family:inherit !important;
  outline:none !important;
}

/* Previous / next month */
.downstream-calendar .downstream-calendar-nav{
  width:44px !important;
  height:44px !important;
  padding:0 !important;
  border:1px solid var(--de-cal-border) !important;
  border-radius:8px !important;
  background:var(--de-cal-control-bg) !important;
  color:var(--de-cal-accent) !important;
  font-size:1.15rem !important;
  font-weight:600 !important;
  line-height:1 !important;
  transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease !important;
}

.downstream-calendar .downstream-calendar-nav:hover{
  background:var(--de-cal-soft-active) !important;
  border-color:var(--de-cal-border) !important;
  color:var(--de-cal-accent-dark) !important;
  transform:translateY(-1px);
}

/* Month/year main trigger */
.downstream-calendar .downstream-calendar-picker-toggle{
  width:100% !important;
  min-width:0 !important;
  min-height:44px !important;
  padding:.65rem .9rem !important;
  border:1px solid var(--de-cal-border) !important;
  border-radius:8px !important;
  background:var(--de-cal-control-bg) !important;
  color:var(--de-cal-text) !important;
  font-size:1rem !important;
  font-weight:700 !important;
  line-height:1.2 !important;
  cursor:pointer !important;
  transition:border-color .16s ease,box-shadow .16s ease,background .16s ease !important;
}

.downstream-calendar .downstream-calendar-picker-toggle:hover{
  border-color:#b9cfcd !important;
  background:#fbfdfd !important;
}

.downstream-calendar .downstream-calendar-picker-toggle:focus,
.downstream-calendar .downstream-calendar-picker-toggle:focus-visible,
.downstream-calendar .downstream-calendar-nav:focus,
.downstream-calendar .downstream-calendar-nav:focus-visible,
.downstream-calendar .downstream-calendar-year-nav:focus,
.downstream-calendar .downstream-calendar-year-nav:focus-visible,
.downstream-calendar .downstream-calendar-month-choice:focus,
.downstream-calendar .downstream-calendar-month-choice:focus-visible{
  outline:2px solid var(--de-cal-accent) !important;
  outline-offset:2px !important;
  box-shadow:none !important;
}

.downstream-calendar-picker-chevron{
  color:var(--de-cal-accent) !important;
  font-size:.9rem !important;
}

/* Picker popup */
.downstream-calendar .downstream-calendar-picker{
  width:318px !important;
  max-width:calc(100vw - 24px) !important;
  padding:12px !important;
  border:1px solid var(--de-cal-border) !important;
  border-radius:10px !important;
  background:var(--de-cal-control-bg) !important;
  box-shadow:0 16px 36px rgba(15,65,67,.14) !important;
}

.downstream-calendar-picker-head{
  grid-template-columns:40px 1fr 40px !important;
  gap:8px !important;
  margin-bottom:10px !important;
}

.downstream-calendar-picker-year{
  font-size:1rem !important;
  font-weight:700 !important;
  color:var(--de-cal-text) !important;
  letter-spacing:0 !important;
}

.downstream-calendar .downstream-calendar-year-nav{
  width:40px !important;
  height:40px !important;
  min-width:40px !important;
  padding:0 !important;
  border:1px solid var(--de-cal-border) !important;
  border-radius:7px !important;
  background:var(--de-cal-control-bg) !important;
  color:var(--de-cal-accent) !important;
  font-size:1rem !important;
  line-height:1 !important;
  cursor:pointer !important;
}

.downstream-calendar .downstream-calendar-year-nav:hover{
  background:var(--de-cal-soft-active) !important;
  border-color:var(--de-cal-border) !important;
  color:var(--de-cal-accent-dark) !important;
}

/* Month grid */
.downstream-calendar-picker-months{
  grid-template-columns:repeat(4,minmax(0,1fr)) !important;
  gap:7px !important;
}

.downstream-calendar .downstream-calendar-month-choice{
  min-width:0 !important;
  min-height:48px !important;
  padding:.55rem .3rem !important;
  border:1px solid var(--de-cal-border) !important;
  border-radius:7px !important;
  background:var(--de-cal-soft) !important;
  color:var(--de-cal-text) !important;
  font-size:.9rem !important;
  font-weight:600 !important;
  line-height:1.1 !important;
  cursor:pointer !important;
  transition:background .14s ease,border-color .14s ease,color .14s ease !important;
}

.downstream-calendar .downstream-calendar-month-choice:hover{
  background:var(--de-cal-soft-active) !important;
  border-color:var(--de-cal-border) !important;
  color:var(--de-cal-accent-dark) !important;
}

.downstream-calendar .downstream-calendar-month-choice.is-active,
.downstream-calendar .downstream-calendar-month-choice.is-active:hover{
  background:var(--de-cal-accent) !important;
  border-color:var(--de-cal-accent) !important;
  color:var(--de-cal-today-text) !important;
}

/* Nearest-event action */
.downstream-calendar-jump-wrap{
  justify-content:center !important;
  margin:-.25rem 0 1rem !important;
}

.downstream-calendar .downstream-calendar-jump{
  position:relative;
  min-height:40px !important;
  padding:.55rem .9rem !important;
  border:1px solid var(--de-cal-border) !important;
  border-radius:7px !important;
  background:var(--de-cal-control-bg) !important;
  color:var(--de-cal-accent) !important;
  font-size:.86rem !important;
  font-weight:700 !important;
  line-height:1.2 !important;
  box-shadow:none !important;
  text-decoration:none !important;
  transition:background .16s ease,border-color .16s ease,color .16s ease !important;
}

.downstream-calendar .downstream-calendar-jump::after{
  content:"→";
  margin-left:.45rem;
  font-size:.95em;
}

.downstream-calendar .downstream-calendar-jump:hover{
  background:var(--de-cal-soft-active) !important;
  border-color:var(--de-cal-border) !important;
  color:var(--de-cal-accent-dark) !important;
}

/* Calendar grid polish */
.downstream-calendar-weekdays{
  border-color:var(--de-cal-border) !important;
}

.downstream-calendar-weekdays > div{
  padding:.65rem .7rem !important;
  color:var(--de-cal-muted) !important;
  font-size:.75rem !important;
  font-weight:700 !important;
  letter-spacing:.08em !important;
  border-color:var(--de-cal-border) !important;
}

.downstream-calendar-day{
  min-height:132px !important;
  padding:.65rem !important;
  border-color:var(--de-cal-border) !important;
}

.downstream-calendar-day.is-empty{
  background:var(--de-cal-empty-bg) !important;
}

.downstream-calendar-day-number{
  min-width:26px !important;
  height:26px !important;
  margin-bottom:.45rem !important;
  color:var(--de-cal-text) !important;
  font-size:.92rem !important;
  font-weight:700 !important;
}

.downstream-calendar-day.is-today .downstream-calendar-day-number{
  background:var(--de-cal-accent) !important;
  color:var(--de-cal-today-text) !important;
}

.downstream-calendar-event{
  padding:.42rem .48rem !important;
  border-left-width:3px !important;
  border-radius:5px !important;
  background:var(--de-cal-event-bg) !important;
  color:var(--de-cal-text) !important;
  font-size:.78rem !important;
}

.downstream-calendar-event:hover{
  background:var(--de-cal-event-hover) !important;
}

/* Compact mobile controls */
@media(max-width:767px){
  .downstream-calendar-toolbar{
    grid-template-columns:40px minmax(160px,1fr) 40px !important;
    gap:7px !important;
  }

  .downstream-calendar .downstream-calendar-nav{
    width:40px !important;
    height:40px !important;
  }

  .downstream-calendar .downstream-calendar-picker-toggle{
    min-height:40px !important;
    padding:.55rem .7rem !important;
    font-size:.92rem !important;
  }

  .downstream-calendar .downstream-calendar-picker{
    width:300px !important;
  }

  .downstream-calendar-jump-wrap{
    justify-content:center !important;
  }
}


/* v2.4.1 - month selector cleanup */
.downstream-calendar .downstream-calendar-picker-toggle{
  justify-content:center !important;
  gap:0 !important;
}
.downstream-calendar-picker-chevron{
  display:none !important;
}


/* v2.5 calendar utility controls */
.downstream-calendar-today-wrap{
  display:flex;
  justify-content:center;
  margin:0 0 .65rem;
}
.downstream-calendar .downstream-calendar-today{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:36px;
  padding:.45rem .75rem;
  border:1px solid var(--de-cal-border);
  border-radius:7px;
  background:var(--de-cal-control-bg);
  color:var(--de-cal-accent);
  text-decoration:none;
  font-size:.82rem;
  font-weight:700;
}
.downstream-calendar .downstream-calendar-today:hover{
  background:var(--de-cal-soft-active);
  color:var(--de-cal-accent-dark);
}

.downstream-calendar-empty{
  margin:0 0 1rem;
  padding:.8rem 1rem;
  border:1px solid var(--de-cal-border);
  border-radius:7px;
  background:var(--de-cal-empty-bg);
  color:var(--de-cal-muted);
  font-size:.9rem;
  text-align:center;
}

.downstream-calendar-day.has-events .downstream-calendar-day-number{
  position:relative;
}
.downstream-calendar-day.has-events:not(.is-today) .downstream-calendar-day-number::after{
  content:"";
  position:absolute;
  right:-7px;
  top:3px;
  width:5px;
  height:5px;
  border-radius:50%;
  background:var(--de-cal-accent);
}

.downstream-calendar-more{
  margin-top:.15rem;
  padding:.3rem .4rem;
  color:var(--de-cal-accent);
  font-size:.75rem;
  font-weight:700;
  line-height:1.2;
}


/* v2.5.1 - unified desktop calendar header */
.downstream-calendar-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  margin:0 0 1rem;
}

.downstream-calendar-header-left{
  flex:0 1 auto;
  min-width:0;
}

.downstream-calendar-header .downstream-calendar-toolbar{
  margin:0 !important;
}

.downstream-calendar-header-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:.65rem;
  margin-left:auto;
  flex-wrap:wrap;
}

.downstream-calendar .downstream-calendar-today,
.downstream-calendar .downstream-calendar-jump{
  margin:0 !important;
  white-space:nowrap;
}

.downstream-calendar .downstream-calendar-jump::after{
  content:"→";
  margin-left:.45rem;
  font-size:.95em;
}

@media(min-width:768px){
  .downstream-calendar-header{
    width:100%;
  }

  .downstream-calendar-header-left{
    display:flex;
    justify-content:flex-start;
  }

  .downstream-calendar-header .downstream-calendar-toolbar{
    grid-template-columns:44px minmax(220px,320px) 44px !important;
  }
}

@media(max-width:767px){
  .downstream-calendar-header{
    flex-direction:column;
    align-items:stretch;
    gap:.7rem;
  }

  .downstream-calendar-header-left{
    width:100%;
  }

  .downstream-calendar-header-actions{
    width:100%;
    justify-content:flex-start;
    margin-left:0;
  }

  .downstream-calendar-header-actions .downstream-calendar-today,
  .downstream-calendar-header-actions .downstream-calendar-jump{
    flex:0 1 auto;
  }
}

.downstream-calendar-today-wrap,
.downstream-calendar-jump-wrap{
  display:none !important;
}

/* v2.7.0 - site-defined calendar palette; no global page or theme overrides */
.downstream-calendar{
  --de-cal-accent:#346a3f;
  --de-cal-accent-dark:#285632;
  --de-cal-text:#203525;
  --de-cal-muted:#657568;
  --de-cal-border:#d9e3da;
  --de-cal-event-bg:#edf5ef;
  --de-cal-event-hover:#dfede2;
  --de-cal-empty-bg:#f8faf8;
  --de-cal-today-text:#fff;
  --de-cal-control-bg:#fff;
  --de-cal-day-bg:#fff;
}
.downstream-calendar .downstream-calendar-nav,
.downstream-calendar .downstream-calendar-today,
.downstream-calendar .downstream-calendar-jump,
.downstream-calendar .downstream-calendar-picker-toggle,
.downstream-calendar .downstream-calendar-year-nav{
  background:var(--de-cal-control-bg) !important;
  border-color:var(--de-cal-border) !important;
}
.downstream-calendar .downstream-calendar-nav:hover,
.downstream-calendar .downstream-calendar-today:hover,
.downstream-calendar .downstream-calendar-jump:hover,
.downstream-calendar .downstream-calendar-year-nav:hover{
  color:var(--de-cal-accent-dark) !important;
  background:var(--de-cal-event-bg) !important;
}
.downstream-calendar .downstream-calendar-picker-toggle,
.downstream-calendar .downstream-calendar-picker-year,
.downstream-calendar .downstream-calendar-day-number{
  color:var(--de-cal-text) !important;
}
.downstream-calendar .downstream-calendar-weekdays>div,
.downstream-calendar .downstream-calendar-event-time{
  color:var(--de-cal-muted) !important;
}
.downstream-calendar .downstream-calendar-weekdays,
.downstream-calendar .downstream-calendar-grid,
.downstream-calendar .downstream-calendar-weekdays>div,
.downstream-calendar .downstream-calendar-day{
  border-color:var(--de-cal-border) !important;
}
.downstream-calendar .downstream-calendar-day{background:var(--de-cal-day-bg) !important;}
.downstream-calendar .downstream-calendar-day.is-empty{background:var(--de-cal-empty-bg) !important;}
.downstream-calendar .downstream-calendar-event{
  color:var(--de-cal-text) !important;
  background:var(--de-cal-event-bg) !important;
  border-left-color:var(--de-cal-accent) !important;
}
.downstream-calendar .downstream-calendar-event:hover{background:var(--de-cal-event-hover) !important;}
.downstream-calendar .downstream-calendar-day.is-today .downstream-calendar-day-number{
  background:var(--de-cal-accent) !important;
  color:var(--de-cal-today-text) !important;
}
.downstream-calendar .downstream-calendar-month-choice.is-active,
.downstream-calendar .downstream-calendar-month-choice.is-active:hover{
  background:var(--de-cal-accent) !important;
  border-color:var(--de-cal-accent) !important;
  color:var(--de-cal-today-text) !important;
}
.downstream-calendar[data-busy="1"] .downstream-calendar-header{opacity:.7;pointer-events:none;}
.downstream-calendar [aria-busy="true"]{cursor:progress;}
@media (prefers-reduced-motion: reduce){.downstream-calendar *{transition:none!important;}}

/* v2.7.1 - event count badges in the month/year picker */
.downstream-calendar .downstream-calendar-month-choice {
  position:relative !important;
  overflow:visible !important;
  padding-right:1.15rem !important;
}
.downstream-calendar .downstream-calendar-month-count {
  position:absolute;
  top:.25rem;
  right:.2rem;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:1.06rem;
  height:1.06rem;
  padding:0 .2rem;
  border-radius:99rem;
  background:var(--de-cal-event-bg);
  color:var(--de-cal-accent-dark);
  font-size:.62rem;
  font-weight:700;
  line-height:1;
  white-space:nowrap;
  box-sizing:border-box;
}
.downstream-calendar .downstream-calendar-month-count[hidden] { display:none !important; }
.downstream-calendar .downstream-calendar-month-choice.is-active .downstream-calendar-month-count {
  background:var(--de-cal-control-bg);
  color:var(--de-cal-accent-dark);
}

/* v2.7.2 - today's full-cell highlight, opt-in circle fallback for reused sites */
.downstream-calendar{
  --de-cal-today-bg:#e5f2e9;
  --de-cal-today-border:#94b79b;
  --de-cal-today-border-width:1px;
}
.downstream-calendar[data-today-style="cell"] .downstream-calendar-day.is-today{
  background:var(--de-cal-today-bg) !important;
  box-shadow:inset 0 0 0 var(--de-cal-today-border-width,1px) var(--de-cal-today-border);
}
.downstream-calendar[data-today-style="cell"] .downstream-calendar-day.is-today .downstream-calendar-day-number{
  background:transparent !important;
  border-radius:0 !important;
  color:var(--de-cal-accent-dark) !important;
  font-weight:800 !important;
}


/* ===============================================================
   V2.7.4 - Modern grid cards (opt-in; classic is unchanged)
   Example: [downstream_events layout="grid" card_style="modern"]
   Only applies to grid, never list, map, or calendar.
   =============================================================== */
.downstream-layout-grid.downstream-card-style-modern .downstream-events-grid {
  grid-template-columns: repeat(var(--de-visible-cols,3),minmax(0,1fr)) !important;
  max-width: min(100%,var(--de-modern-max-width,100%));
  margin-inline: auto;
  gap: var(--de-card-gap,1.5rem);
  align-items: stretch;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-card {
  display:flex;
  flex-direction:column;
  height:100%;
  border:1px solid var(--downstream-events-border,#d9e3da);
  border-radius:var(--de-card-radius,0.75rem);
  background:var(--de-card-bg,#fff);
  box-shadow:0 4px 20px rgba(20,43,25,.04);
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-card:hover {
  transform:translateY(-3px);
  border-color:var(--downstream-events-brand,#346a3f);
  box-shadow:0 12px 28px rgba(20,43,25,.10);
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-image {
  height: min(var(--de-image-height,240px),13.5rem);
  flex:0 0 auto;
  overflow:hidden;
  background:var(--de-image-bg,#f5f7f5);
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-image img {
  width:100%;
  height:100%;
  object-fit:var(--de-image-fit,cover);
  object-position:var(--de-image-position,center);
  transition:transform .3s ease;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-card:hover .downstream-event-image img {
  transform:scale(1.025);
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-body {
  flex:1 1 auto;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:.55rem;
  padding:clamp(1rem,2vw,1.35rem);
}
.downstream-layout-grid.downstream-card-style-modern :is(.downstream-event-type,.downstream-event-format) {
  width:auto;
  margin:0;
  padding:.25rem .55rem;
  border-radius:.25rem;
  background:color-mix(in srgb,var(--downstream-events-brand,#346a3f) 9%,white);
  color:var(--downstream-events-brand,#346a3f) !important;
  font-size:.68rem !important;
  letter-spacing:.065em;
  line-height:1.3;
  font-weight:700;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-title {
  width:100%;
  margin:.2rem 0 .15rem !important;
  font-size:clamp(1.125rem,1.55vw,1.35rem) !important;
  line-height:1.32 !important;
  letter-spacing:-.015em;
  font-weight:700 !important;
  display:-webkit-box;
  -webkit-line-clamp:3;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-title a {
  color:var(--de-title-color,var(--downstream-events-text)) !important;
  text-decoration:none !important;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-title a:hover {
  color:var(--downstream-events-brand,#346a3f) !important;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-meta {
  width:100%;
  margin:0 !important;
  color:var(--de-meta-color,#657568) !important;
  font-size:.84rem !important;
  line-height:1.5;
  font-weight:400;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-description {
  margin:.2rem 0 0 !important;
  width:100%;
  color:var(--de-desc-color,#203525) !important;
  font-size:.9rem !important;
  line-height:1.55;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-description p {
  margin:0 !important;
  font-size:inherit !important;
  line-height:inherit !important;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-actions {
  width:100%;
  margin: auto 0 0 !important;
  padding-top:.85rem;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-link-primary,
.downstream-layout-grid.downstream-card-style-modern .downstream-event-link-primary:visited {
  display:inline-flex;
  width:auto;
  padding:.65rem .9rem !important;
  border-radius:.35rem;
  font-size:.8rem !important;
  font-weight:700 !important;
  line-height:1.3 !important;
  color:var(--de-button-text,#fff) !important;
  background:var(--de-button-bg,var(--downstream-events-brand,#346a3f)) !important;
  text-decoration:none !important;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-link-primary:hover,
.downstream-layout-grid.downstream-card-style-modern .downstream-event-link-primary:focus-visible {
  color:var(--de-button-text,#fff) !important;
  background:var(--de-button-hover-bg,var(--downstream-events-brand-dark,#285632)) !important;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-link-primary :is(span,svg,i) {
  color:inherit !important;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-card a:focus-visible {
  outline:2px solid var(--downstream-events-brand,#346a3f);
  outline-offset:3px;
}
@media (max-width:1024px) {
  .downstream-layout-grid.downstream-card-style-modern .downstream-events-grid {
    grid-template-columns:repeat(var(--de-visible-cols-tablet,2),minmax(0,1fr)) !important;
  }
}
@media (max-width:767px) {
  .downstream-layout-grid.downstream-card-style-modern .downstream-events-grid {
    grid-template-columns:1fr !important;
    max-width:32rem;
  }
}
@media (prefers-reduced-motion:reduce) {
  .downstream-layout-grid.downstream-card-style-modern .downstream-event-card,
  .downstream-layout-grid.downstream-card-style-modern .downstream-event-image img {
    transition:none !important;
    transform:none !important;
  }
}

/* v2.7.5 - Per-event and shortcode image fit.
   Contain shows complete logos/posters without trimming; cover crops photos uniformly. */
.downstream-events-wrap .downstream-event-image.is-fit-contain img,
.downstream-layout-grid.downstream-card-style-modern[data-image-fit="contain"] .downstream-event-image:not(.is-fit-cover) img {
  transform:none !important;
}
.downstream-layout-grid.downstream-card-style-modern .downstream-event-card:hover .downstream-event-image.is-fit-contain img,
.downstream-layout-grid.downstream-card-style-modern[data-image-fit="contain"] .downstream-event-card:hover .downstream-event-image:not(.is-fit-cover) img {
  transform:none !important;
}

/* Card date typography: independent of location styling. */
.downstream-events-wrap.downstream-layout-grid .downstream-event-date {
  font-weight: var(--de-card-date-weight, 700) !important;
}
