#efm-events.efme{
  /* ---- tweak these ---- */
  --efme-ink:#0E178E;            /* brand blue: titles, active tab, accents */
  --efme-role:#5b6473;           /* muted text */
  --efme-rule:#e4e6ef;           /* hairlines / borders */
  --efme-hover:#4E63D6;          /* hover/focus accent — AA: 5.15:1 on white, 4.76:1 on soft */
  --efme-soft:#f4f6fc;           /* soft panel fills (day cells, badges) */
  --efme-name-font:"arbeit-semi-bold","Source Sans Pro",-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --efme-body-font:"Source Sans Pro",-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --efme-title-font:"PPPangaia-Medium",Georgia,serif;

  max-width:1080px;
  margin:0 auto;
  padding:6px 16px 40px;
  box-sizing:border-box;
  font-family:var(--efme-body-font);
  color:#2b3042;
  -webkit-font-smoothing:antialiased;
}
#efm-events.efme *{ box-sizing:border-box; }

#efm-events .efme-title{
  font-family:var(--efme-title-font); color:var(--efme-ink);
  font-size:38px; font-size:clamp(28px,3cqi + 18px,46px);
  font-weight:400; line-height:1.08; letter-spacing:.005em; margin:0 0 22px;
}
#efm-events .efme-title[hidden]{ display:none; }

#efm-events .efme__status{ color:var(--efme-role); font-size:16px; padding:26px 2px; }
#efm-events .efme__status[hidden]{ display:none; }

/* container query: views reflow to the widget's own width */
#efm-events .efme__panel{ container-type:inline-size; }
#efm-events .efme__panel[hidden]{ display:none; }

/* ---- tabs ---- */
#efm-events .efme__tabs{ display:flex; flex-wrap:wrap; justify-content:center; gap:clamp(18px,4vw,40px); border-bottom:2px solid var(--efme-rule); margin:0 0 26px; }
#efm-events .efme-tab{
  appearance:none; -webkit-appearance:none; background:transparent; border:0; cursor:pointer;
  font-family:var(--efme-name-font)!important; color:var(--efme-role)!important;
  font-size:18px; font-size:clamp(16px,1vw + 13px,21px); font-weight:400; letter-spacing:.005em; line-height:1.2;
  padding:14px 2px 13px; margin-bottom:-2px; border-bottom:3px solid transparent;
  transition:color .18s ease, border-color .18s ease; white-space:nowrap;
}
#efm-events .efme-tab:hover{ color:var(--efme-hover)!important; }
#efm-events .efme-tab[aria-selected="true"]{ color:var(--efme-ink)!important; border-bottom-color:var(--efme-ink); }
#efm-events .efme-tab:focus-visible{ outline:2px solid var(--efme-hover); outline-offset:3px; border-radius:3px; }
#efm-events a.efme-tab{ text-decoration:none!important; display:inline-block; }   /* the link-tabs ("Purchase Tickets" / "Become a Subscriber") */

/* ====================== UPCOMING EVENTS sub-tabs (Concerts / Masterclasses) ====================== */
#efm-events .efme-subtabs{ display:flex; flex-wrap:wrap; justify-content:center; gap:10px; margin:0 0 24px; }
#efm-events .efme-subtab{
  appearance:none; -webkit-appearance:none; cursor:pointer;
  font-family:var(--efme-name-font)!important; color:var(--efme-ink)!important;
  background:#fff; border:1.5px solid var(--efme-rule); border-radius:999px;
  font-size:14px; font-size:clamp(13px,.6vw + 12px,15px); letter-spacing:.01em; padding:8px 20px; line-height:1.2;
  transition:background .18s ease, border-color .18s ease, color .18s ease;
}
#efm-events .efme-subtab:hover{ border-color:var(--efme-ink); }
#efm-events .efme-subtab[aria-selected="true"]{ background:var(--efme-ink)!important; border-color:var(--efme-ink); color:#fff!important; }
#efm-events .efme-subtab:focus-visible{ outline:2px solid var(--efme-hover); outline-offset:3px; }
#efm-events .efme-subpanel[hidden]{ display:none; }

/* ====================== UPCOMING LIST ====================== */
#efm-events .efme-list{
  display:grid; gap:clamp(20px,3cqi,30px);
  grid-template-columns:repeat(auto-fill, minmax(min(100%, 300px), 1fr));   /* fluid, no overflow */
}
#efm-events .efme-card{
  display:flex; flex-direction:column; background:#fff;
  border:1px solid var(--efme-rule); border-radius:14px; overflow:hidden;
  box-shadow:0 1px 2px rgba(9,12,38,.04); transition:box-shadow .2s ease, transform .2s ease;
}
#efm-events .efme-card:hover{ box-shadow:0 14px 34px rgba(9,12,38,.12); }
#efm-events .efme-card__media{ position:relative; aspect-ratio:16/9; background:var(--efme-soft); overflow:hidden; }
#efm-events .efme-card__media img{ width:100%; height:100%; object-fit:cover; display:block; }   /* auto-crop, any photo size */
#efm-events .efme-card__badge{
  position:absolute; left:12px; top:12px; background:#fff; color:var(--efme-ink);
  font-family:var(--efme-name-font); border-radius:10px; padding:6px 10px 5px; text-align:center; line-height:1;
  box-shadow:0 4px 14px rgba(9,12,38,.18);
}
#efm-events .efme-card__badge b{ display:block; font-size:20px; }
#efm-events .efme-card__badge span{ display:block; font-size:11px; letter-spacing:.08em; text-transform:uppercase; margin-top:2px; }
#efm-events .efme-card__body{ padding:18px 20px 20px; display:flex; flex-direction:column; gap:8px; flex:1; text-align:left; }
#efm-events .efme-card__title{ font-family:var(--efme-name-font)!important; color:var(--efme-ink)!important; font-size:20px!important; line-height:1.18!important; font-weight:400!important; margin:0!important; display:block!important; visibility:visible!important; text-indent:0!important; }
#efm-events .efme-card__when{ font-family:var(--efme-name-font); color:var(--efme-ink); font-size:14px; letter-spacing:.01em; margin-top:2px; }
#efm-events .efme-card__where{ color:var(--efme-role); font-size:13.5px; line-height:1.5; }
#efm-events .efme-card__desc{ color:#3a4054; font-size:15px; line-height:1.55; margin:2px 0 0; }
#efm-events .efme-card__spacer{ flex:1; }
#efm-events .efme-card__btn{
  align-self:flex-start; margin-top:6px; display:inline-block;
  font-family:var(--efme-name-font); font-size:14px; color:#fff!important; background:var(--efme-ink);
  text-decoration:none!important; padding:10px 18px; border-radius:999px; transition:background .18s ease;
}
#efm-events .efme-card__btn:hover{ background:var(--efme-hover); }
/* clamp a long card description to N lines (the line count is set inline by the JS, from DESC_MAX_LINES) */
#efm-events .efme-card__desc--clamp{ display:-webkit-box; -webkit-box-orient:vertical; overflow:hidden; }
/* "Read more" text button — shown on a card when its description is truncated; opens the event modal */
#efm-events .efme-card__more{
  align-self:flex-start; appearance:none; -webkit-appearance:none; background:none; border:0; margin:0; padding:0;
  cursor:pointer; font-family:var(--efme-name-font); font-size:14px; color:var(--efme-ink)!important;
  text-decoration:underline; text-underline-offset:2px; transition:color .15s ease;
}
#efm-events .efme-card__more:hover{ color:var(--efme-hover)!important; }

/* ====================== CALENDAR ====================== */
#efm-events .efme-cal__head{ display:flex; align-items:center; justify-content:center; gap:18px; margin:0 0 16px; }
#efm-events .efme-cal__nav{
  appearance:none; -webkit-appearance:none; border:1px solid var(--efme-rule); background:#fff; cursor:pointer;
  width:40px; height:40px; border-radius:50%; font-size:18px; color:var(--efme-ink); line-height:1;
  display:flex; align-items:center; justify-content:center; transition:border-color .18s, color .18s;
}
#efm-events .efme-cal__nav:hover:not([disabled]){ border-color:var(--efme-ink); }
#efm-events .efme-cal__nav[disabled]{ opacity:.3; cursor:default; }
#efm-events .efme-cal__month{ font-family:var(--efme-title-font); color:var(--efme-ink); font-size:clamp(22px,2cqi+14px,30px); min-width:min(58vw,260px); text-align:center; }
#efm-events .efme-cal__grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
#efm-events .efme-cal__dow{ font-family:var(--efme-name-font); color:var(--efme-role); font-size:12px; letter-spacing:.06em; text-transform:uppercase; text-align:center; padding:4px 0 8px; }
#efm-events .efme-cal__cell{ min-height:clamp(72px,11cqi,118px); border:1px solid var(--efme-rule); border-radius:10px; padding:6px; background:#fff; overflow:hidden; }
#efm-events .efme-cal__cell--blank{ border-color:transparent; background:transparent; }
#efm-events .efme-cal__cell--today{ border-color:var(--efme-ink); box-shadow:inset 0 0 0 1px var(--efme-ink); }
#efm-events .efme-cal__daynum{ font-family:var(--efme-name-font); font-size:13px; color:var(--efme-role); }
#efm-events .efme-cal__cell--has .efme-cal__daynum{ color:var(--efme-ink); }
#efm-events .efme-cal__ev{
  display:block; width:100%; text-align:left; appearance:none; -webkit-appearance:none; border:0; cursor:pointer;
  background:var(--efme-soft); color:var(--efme-ink); border-radius:6px; padding:5px 6px; min-height:24px; margin-top:4px;
  font-size:11.5px; line-height:1.25; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  font-family:var(--efme-body-font);
}
#efm-events .efme-cal__ev:hover{ background:#e7eaf6; }
#efm-events .efme-cal__ev b{ font-family:var(--efme-name-font); font-weight:400; }
#efm-events .efme-cal__more{ font-size:11px; color:var(--efme-role); margin-top:4px; display:block; }
#efm-events .efme-cal__hint{ color:var(--efme-role); font-size:13px; text-align:center; margin:14px 0 0; }

/* agenda = the "List View" tab (works at every size; centered on wide screens) */
#efm-events .efme-cal__agenda{ display:block; max-width:760px; margin:0 auto; }
#efm-events .efme-cal__empty{ color:var(--efme-role); text-align:center; padding:22px 0; }
#efm-events .efme-agenda-row{ display:flex; align-items:center; gap:14px; width:100%; text-align:left; appearance:none; -webkit-appearance:none; background:#fff; border:1px solid #8A90A3; border-radius:12px; padding:11px 14px; margin:0 0 9px; cursor:pointer; transition:border-color .15s ease, box-shadow .15s ease; }
#efm-events .efme-agenda-row:hover{ border-color:var(--efme-ink); box-shadow:0 6px 18px rgba(9,12,38,.08); }
#efm-events .efme-agenda-date{ flex:0 0 auto; width:46px; text-align:center; color:var(--efme-ink); font-family:var(--efme-name-font); line-height:1; }
#efm-events .efme-agenda-date b{ display:block; font-size:22px; font-weight:400; }
#efm-events .efme-agenda-date span{ display:block; font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--efme-role); margin-top:3px; }
#efm-events .efme-agenda-info{ flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:2px; }
#efm-events .efme-agenda-title{ font-family:var(--efme-name-font); color:var(--efme-ink); font-size:15.5px; line-height:1.22; }
#efm-events .efme-agenda-time{ color:var(--efme-role); font-size:13px; }
#efm-events .efme-agenda-arrow{ flex:0 0 auto; color:var(--efme-rule); font-size:22px; line-height:1; }
/* List View group headings (Upcoming / Past) + dimmed past rows */
#efm-events .efme-agenda-group{ font-family:var(--efme-name-font); color:var(--efme-ink); font-size:12.5px; letter-spacing:.08em; text-transform:uppercase; margin:22px 0 12px; padding-bottom:7px; border-bottom:1px solid var(--efme-rule); }
#efm-events .efme-agenda-group:first-child{ margin-top:0; }
#efm-events .efme-agenda-group--past{ color:var(--efme-role); margin-top:30px; }
/* 'Past' rows: a soft fill instead of opacity (opacity drops text below AA contrast) */
#efm-events .efme-agenda-row--past{ background:var(--efme-soft); }

/* ====================== EVENT MODAL ====================== */
#efm-events .efme-modal[hidden]{ display:none; }
#efm-events .efme-modal{ position:fixed; inset:0; z-index:2147483000; display:flex; align-items:center; justify-content:center; padding:20px; }
#efm-events .efme-modal__backdrop{ position:absolute; inset:0; background:rgba(9,12,38,.55); }
#efm-events .efme-modal__panel{ position:relative; z-index:1; background:#fff; width:100%; max-width:560px; max-height:88vh; overflow:auto; border-radius:16px; box-shadow:0 24px 70px rgba(9,12,38,.4); }
#efm-events .efme-modal__media{ aspect-ratio:16/9; background:var(--efme-soft); overflow:hidden; }
#efm-events .efme-modal__media img{ width:100%; height:100%; object-fit:cover; display:block; }
#efm-events .efme-modal__close{ position:absolute; top:12px; right:14px; width:34px; height:34px; border:0; border-radius:50%; background:rgba(255,255,255,.92); font-size:22px; line-height:1; cursor:pointer; color:#3a4054; box-shadow:0 2px 10px rgba(9,12,38,.2); }
#efm-events .efme-modal__close:hover{ color:var(--efme-ink); }
#efm-events .efme-modal__body{ padding:22px 26px 26px; }
#efm-events .efme-modal__date{ font-family:var(--efme-name-font); color:var(--efme-ink); font-size:13px; letter-spacing:.04em; text-transform:uppercase; margin:0 0 6px; }
#efm-events .efme-modal__title{ font-family:var(--efme-title-font); color:var(--efme-ink); font-size:26px; line-height:1.12; margin:0 0 10px; }
#efm-events .efme-modal__loc{ color:var(--efme-role); font-size:15px; line-height:1.5; margin:0 0 14px; }
#efm-events .efme-modal__desc{ color:#2b3042; font-size:16px; line-height:1.6; }
#efm-events .efme-modal__btn{ display:inline-block; margin-top:18px; margin-right:12px; font-family:var(--efme-name-font); font-size:15px; color:#fff!important; background:var(--efme-ink); text-decoration:none!important; padding:11px 22px; border-radius:999px; }
#efm-events .efme-modal__btn:hover{ background:var(--efme-hover); }
/* "Download Program (PDF)" link — shown in the modal only when a row has a Program URL */
#efm-events .efme-modal__program{ display:inline-flex; align-items:center; gap:8px; vertical-align:top; margin-top:18px; font-family:var(--efme-name-font); font-size:15px; color:var(--efme-ink)!important; background:#fff; border:1.5px solid var(--efme-ink); text-decoration:none!important; padding:9px 20px; border-radius:999px; transition:background .18s ease, color .18s ease; }
#efm-events .efme-modal__program:hover{ background:var(--efme-ink); color:#fff!important; }
#efm-events .efme-modal__program svg{ flex:0 0 auto; }
#efm-events .efme-modal__program:focus-visible{ outline:2px solid var(--efme-hover); outline-offset:3px; }

/* "View concert programs" link in the modal */
#efm-events .efme-modal__more{ display:inline-block; margin-top:16px; font-family:var(--efme-name-font); font-size:14px; color:var(--efme-ink)!important; text-decoration:none!important; border-bottom:1px solid currentColor; padding-bottom:1px; transition:color .15s ease; }
#efm-events .efme-modal__more:hover{ color:var(--efme-hover)!important; }

/* "Add to Calendar" control in the modal */
#efm-events .efme-modal__cal{ margin-top:16px; }
#efm-events .efme-cal__btn{ display:inline-flex; align-items:center; gap:7px; appearance:none; -webkit-appearance:none; cursor:pointer; background:#fff; border:1.5px solid #8A90A3; color:var(--efme-ink); font-family:var(--efme-name-font); font-size:14px; padding:9px 16px; border-radius:999px; transition:border-color .15s ease, background .15s ease; }
#efm-events .efme-cal__btn:hover{ border-color:var(--efme-ink); background:var(--efme-soft); }
#efm-events .efme-cal__btn:focus-visible{ outline:2px solid var(--efme-hover); outline-offset:3px; }
#efm-events .efme-cal__btn svg{ flex:0 0 auto; }
#efm-events .efme-cal__menu{ display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
#efm-events .efme-cal__menu[hidden]{ display:none; }
#efm-events .efme-cal__opt{ appearance:none; -webkit-appearance:none; cursor:pointer; background:var(--efme-soft); border:1px solid #8A90A3; color:var(--efme-ink)!important; text-decoration:none!important; font-family:var(--efme-body-font); font-size:14px; padding:9px 14px; border-radius:8px; transition:background .15s ease, border-color .15s ease; }
#efm-events .efme-cal__opt:hover{ background:#fff; border-color:var(--efme-ink); }
#efm-events .efme-cal__opt:focus-visible{ outline:2px solid var(--efme-hover); outline-offset:2px; }

/* focus-visible for the remaining interactive controls */
#efm-events .efme-modal__close:focus-visible, #efm-events .efme-cal__nav:focus-visible, #efm-events .efme-modal__btn:focus-visible, #efm-events .efme-modal__more:focus-visible, #efm-events .efme-card__btn:focus-visible, #efm-events .efme-card__more:focus-visible, #efm-events .efme-cal__ev:focus-visible, #efm-events .efme-cal__more:focus-visible, #efm-events .efme-agenda-row:focus-visible{ outline:2px solid var(--efme-hover); outline-offset:2px; }
#efm-events .efme-modal__desc a:focus-visible, #efm-events .efme-card__desc a:focus-visible{ outline:2px solid var(--efme-hover); outline-offset:2px; }
/* tablist wrapper participates in the tab bar's flex layout */
#efm-events .efme__tablist{ display:contents; }
/* visually-hidden text for screen readers */
#efm-events .efme-sr-only{ position:absolute!important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

/* rich-text (Markdown) inside event descriptions */
#efm-events .efme-card__desc p, #efm-events .efme-modal__desc p{ margin:0 0 10px; }
#efm-events .efme-card__desc p:last-child, #efm-events .efme-modal__desc p:last-child{ margin-bottom:0; }
#efm-events .efme-card__desc ul, #efm-events .efme-modal__desc ul{ margin:0 0 10px; padding-left:20px; }
#efm-events .efme-card__desc li, #efm-events .efme-modal__desc li{ margin:0 0 3px; }
#efm-events .efme-card__desc a, #efm-events .efme-modal__desc a{ color:var(--efme-ink); text-decoration:underline; }
#efm-events .efme-card__desc a:hover, #efm-events .efme-modal__desc a:hover{ color:var(--efme-hover); }

/* The full month grid needs real width, so the "Event Calendar" TAB hides below
   ~820px — phones / small tablets use the List View + Upcoming Events tabs,
   which read well at any size. */
@media (max-width:820px){
  #efm-events #efme-tab-calendar{ display:none!important; }
  #efm-events .efme-cal__head{ gap:12px; }
  #efm-events .efme-cal__month{ min-width:auto; }
}

@media (prefers-reduced-motion: reduce){
  #efm-events *{ transition:none!important; animation:none!important; scroll-behavior:auto!important; }
}
