/* Safe & Sound Events Manager — front-end components.
   All colors/spacing read CSS custom properties; the theme (or Elementor style tab) overrides them.
   Fallback values match the Safe & Sound brand so the plugin looks right on any theme. */

:root {
  --ssev-primary: var(--ss-color-primary, #1479BE);
  --ssev-primary-hover: var(--ss-color-primary-dark, #0F5F94);
  --ssev-on-primary: #fff;
  --ssev-text: var(--ss-color-text, #20242B);
  --ssev-muted: var(--ss-color-text-muted, #5B6470);
  --ssev-title-color: var(--ss-color-text, #20242B);
  --ssev-border: var(--ss-color-border, #E3E6EA);
  --ssev-surface: var(--ss-color-surface, #F7F8FA);
  --ssev-card-bg: #fff;
  --ssev-card-pad: 1.25rem;
  --ssev-radius: var(--ss-radius-md, 0px);
  --ssev-btn-radius: var(--ss-radius-sm, 0px);
  --ssev-gap: var(--ss-space-5, 1.5rem);
  --ssev-badge-default: var(--ss-color-primary, #1479BE);
  --ssev-accent: var(--ssev-badge-default);
  --ssev-font-heading: var(--ss-font-heading, inherit);
  --ssev-font-display: var(--ss-font-display, var(--ss-font-heading, inherit));
  --ssev-focus: 0 0 0 3px #fff, 0 0 0 6px var(--ssev-primary);
  --ssev-ease: var(--ss-ease, 180ms ease);
  --ssev-flyer-w: 38%;
}

.ssh-events, .ssh-details, .ssh-videos, .ssh-calendar, .ssh-campaign, .ssh-featured, .ssh-single, .ssh-archive, .ssh-filters, .ssh-regform, .ssh-countdown {
  color: var(--ssev-text);
  box-sizing: border-box;
}
.ssh-events *, .ssh-details *, .ssh-videos *, .ssh-calendar *, .ssh-campaign *, .ssh-featured *, .ssh-single *, .ssh-filters *, .ssh-regform * { box-sizing: inherit; }
.ssh-container { max-width: var(--ss-container, 1200px); margin-inline: auto; padding-inline: var(--ss-gutter, 1.25rem); }

/* Focus — WCAG 2.2 visible focus */
.ssh-events a:focus-visible, .ssh-details a:focus-visible, .ssh-details button:focus-visible, .ssh-videos button:focus-visible, .ssh-calendar a:focus-visible, .ssh-calendar td:focus-visible, .ssh-btn:focus-visible, .ssh-filters :is(input,select,button):focus-visible, .ssh-regform :is(input,select,textarea,button):focus-visible, .ssh-campaign a:focus-visible, .ssh-featured a:focus-visible {
  outline: none; box-shadow: var(--ssev-focus); border-radius: 4px;
}

/* Hexagon motif (brand) */
.ssh-eyebrow .ssh-hex { display: none; }
.ssh-hex { display: inline-block; width: .7em; height: .8em; background: var(--ssev-accent, var(--ssev-badge-default)); clip-path: polygon(50% 0, 100% 25%, 100% 75%, 50% 100%, 0 75%, 0 25%); margin-right: .45em; vertical-align: -0.05em; flex: none; }
.ssh-eyebrow { display: inline-flex; align-items: center; font-family: var(--ssev-font-display); font-size: 1.0625rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--ssev-primary); margin: 0 0 .5rem; }

/* Buttons */
.ssh-btn { display: inline-flex; align-items: center; justify-content: center; gap: .4em; font-family: var(--ssev-font-display); font-weight: 700; font-size: 1.125rem; letter-spacing: .06em; text-transform: uppercase; line-height: 1.1; text-decoration: none; border: 2px solid transparent; border-radius: var(--ssev-btn-radius); cursor: pointer; transition: background var(--ssev-ease), color var(--ssev-ease), border-color var(--ssev-ease), transform var(--ssev-ease); min-height: 44px; }
.ssh-btn--sm { font-size: 1rem; padding: .5rem 1rem; min-height: 42px; }
.ssh-btn--md { font-size: .9375rem; padding: .7rem 1.2rem; }
.ssh-btn--lg { font-size: 1.3125rem; padding: 1rem 2.2rem; min-height: 60px; }
.ssh-btn--primary { background: var(--ssev-primary); color: var(--ssev-on-primary); border-color: var(--ssev-primary); }
.ssh-btn--primary:hover { background: var(--ssev-primary-hover); border-color: var(--ssev-primary-hover); color: var(--ssev-on-primary); }
.ssh-btn--outline { background: transparent; color: var(--ssev-primary-hover); border-color: currentColor; } /* darker blue: ≥ 4.5:1 on white and on the grey band */
.ssh-btn--outline:hover { background: var(--ssev-primary-hover); border-color: var(--ssev-primary-hover); color: var(--ssev-on-primary); }
.ssh-btn--ghost { background: var(--ssev-surface); color: var(--ssev-text); }
.ssh-btn--ghost:hover { background: var(--ssev-border); }
.ssh-btn--accent { background: var(--ss-color-orange, #F48024); color: var(--ss-color-text, #20242B); border-color: transparent; } /* charcoal on orange = 7.5:1; white on orange fails AA */
.ssh-btn--accent:hover { filter: brightness(.92); }
.ssh-btn--disabled { background: var(--ssev-surface); color: var(--ssev-muted); border-color: var(--ssev-border); cursor: not-allowed; }
.ssh-link { color: var(--ssev-primary-hover); /* 6.3:1 on white and on the light surface */ font-weight: 600; text-decoration: underline; text-underline-offset: .2em; text-decoration-thickness: 1.5px; }
.ssh-link:hover { color: var(--ss-color-primary-deep, #0A3F63); }
.ssh-link--arrow::after { content: " \2192"; }
.ssh-link--small { font-size: .875rem; }

/* Badges & status */
.ssh-badge { --ssev-accent: var(--ssev-badge, var(--ssev-badge-default)); display: inline-flex; align-items: center; font-size: .75rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ssev-text); }
.ssh-status { display: inline-block; font-size: .75rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; padding: .2em .6em; border-radius: 999px; background: var(--ssev-surface); color: var(--ssev-muted); }
.ssh-status--in_progress { background: #E6F4EA; color: #1E6B35; }
.ssh-status--canceled { background: #FDE8E6; color: #9B2419; }
.ssh-status--postponed { background: #FFF4DB; color: #7A4D00; }
.ssh-status--completed { background: var(--ssev-surface); color: var(--ssev-muted); }
.ssh-event-card__meta-top { display: flex; flex-wrap: wrap; gap: .5rem .75rem; align-items: center; margin-bottom: .5rem; min-height: 1.25rem; }

/* Section head */
.ssh-section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: var(--ssev-gap); }
.ssh-section-head__title { font-family: var(--ssev-font-display); font-size: var(--ss-text-3xl, clamp(2rem, 1.5rem + 2.2vw, 3.25rem)); line-height: 1; text-transform: uppercase; margin: 0; }
.ssh-section-head__title::after { content: none; }
.ssh-empty { padding: 1.25rem; background: var(--ssev-surface); border-radius: var(--ssev-radius); color: var(--ssev-muted); }
.ssh-empty a, .ssh-events .ssh-surface a, .ssh-card--surface a { color: var(--ssev-primary-hover); text-decoration: underline; text-underline-offset: .15em; } /* not colour alone (WCAG 1.4.1) */ /* ≥ 4.5:1 on the light surface */
.ssh-events__footer { margin-top: var(--ssev-gap); }

/* Media ratios */
.ssh-media { position: relative; overflow: hidden; background: var(--ssev-surface); border-radius: var(--ssev-radius) var(--ssev-radius) 0 0; }
.ssh-media--16-9 { aspect-ratio: 16 / 9; } .ssh-media--4-3 { aspect-ratio: 4 / 3; } .ssh-media--1-1 { aspect-ratio: 1; } .ssh-media--3-4 { aspect-ratio: 3 / 4; }
.ssh-media img, .ssh-event-card__img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ssh-event-card__img--placeholder { display: block; width: 100%; height: 100%; background: linear-gradient(135deg, var(--ssev-surface), var(--ssev-border)); }

/* Grid of cards */
.ssh-grid { display: grid; gap: var(--ssev-gap); grid-template-columns: repeat(var(--ssev-cols, 4), minmax(0, 1fr)); }
@media (max-width: 1024px) { .ssh-grid { grid-template-columns: repeat(min(var(--ssev-cols, 4), 2), minmax(0, 1fr)); } }
@media (max-width: 640px) { .ssh-grid { grid-template-columns: 1fr; } }
.ssh-event-card { display: flex; flex-direction: column; height: 100%; background: var(--ssev-card-bg); border: 0; border-radius: var(--ssev-radius); overflow: hidden; }
.ssh-event-card__body { border-top: 0; }
.ssh-event-card__media { display: block; position: relative; }
.ssh-event-card__media .ssh-media { border-radius: var(--ss-radius-shape, var(--ssev-radius)); }
.ssh-date-chip { position: absolute; left: .75rem; bottom: .75rem; display: flex; flex-direction: column; align-items: center; min-width: 3.25rem; padding: .35rem .5rem; background: #fff; color: var(--ssev-text); border-radius: 6px; box-shadow: 0 2px 8px rgba(0,0,0,.18); line-height: 1; }
.ssh-date-chip__month { font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--ssev-primary); }
.ssh-date-chip__day { font-size: 1.625rem; font-weight: 700; font-family: var(--ssev-font-display); }
.ssh-event-card__body { display: flex; flex-direction: column; gap: .6rem; padding: var(--ssev-card-pad) 0 0; flex: 1; }
.ssh-event-card__title { font-family: var(--ssev-font-display); font-size: 1.625rem; line-height: 1.02; text-transform: uppercase; margin: 0; }
.ssh-event-card__title a, .ssh-list__title a, .ssh-featured__title a { color: var(--ssev-title-color); text-decoration: none; }
.ssh-event-card__title a:hover, .ssh-list__title a:hover, .ssh-featured__title a:hover { color: var(--ssev-primary); text-decoration: underline; }
.ssh-event-card__meta { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .25rem; font-size: .9rem; color: var(--ssev-muted); }
.ssh-meta { display: flex; align-items: flex-start; gap: .5rem; }
.ssh-meta::before { content: ""; flex: none; width: 1em; height: 1em; margin-top: .15em; background: currentColor; -webkit-mask: var(--ssev-icon) center/contain no-repeat; mask: var(--ssev-icon) center/contain no-repeat; opacity: .8; }
.ssh-meta--date { --ssev-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E"); }
.ssh-meta--time { --ssev-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E"); }
.ssh-meta--location { --ssev-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='M12 21s7-6.2 7-11a7 7 0 0 0-14 0c0 4.8 7 11 7 11z'/%3E%3Ccircle cx='12' cy='10' r='2.5'/%3E%3C/svg%3E"); }
.ssh-event-card__excerpt { margin: 0; font-size: var(--ss-text-sm, .9375rem); line-height: 1.55; color: var(--ss-color-text-muted, #5B6470); }
.ssh-event-card__actions { margin-top: auto; padding-top: .5rem; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; }

/* List rows */
.ssh-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.ssh-list__item { display: grid; grid-template-columns: 5rem 1fr auto; gap: 1.25rem; align-items: start; padding: 1.25rem 0; border-top: 1px solid var(--ssev-border); }
.ssh-list__item:last-child { border-bottom: 1px solid var(--ssev-border); }
.ssh-list__date { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: .5rem; border-radius: var(--ssev-radius); background: color-mix(in srgb, var(--ssev-accent, var(--ssev-primary)) 12%, #fff);  line-height: 1.1; }
.ssh-list__dow { font-size: .7rem; text-transform: uppercase; letter-spacing: .08em; color: var(--ssev-muted); font-weight: 700; }
.ssh-list__day { font-family: var(--ssev-font-display); font-size: 2.25rem; font-weight: 700; }
.ssh-list__mon { font-size: .75rem; color: var(--ssev-muted); font-weight: 600; }
.ssh-list__title { font-family: var(--ssev-font-display); font-size: 1.75rem; text-transform: uppercase; margin: .1rem 0 .35rem; line-height: 1.02; }
.ssh-list__meta { margin: 0 0 .4rem; color: var(--ssev-muted); font-size: .9375rem; }
.ssh-list__excerpt { margin: 0; font-size: .9375rem; line-height: 1.55; }
.ssh-list__actions { display: flex; flex-direction: column; align-items: flex-end; gap: .6rem; }
@media (max-width: 640px) { .ssh-list__item { grid-template-columns: 4rem 1fr; } .ssh-list__actions { grid-column: 2; flex-direction: row; align-items: center; flex-wrap: wrap; } }
.ssh-compact { list-style: none; padding: 0; margin: 0; }
.ssh-compact__item { display: flex; gap: .75rem; padding: .5rem 0; border-bottom: 1px solid var(--ssev-border); }
.ssh-compact__date { flex: none; font-weight: 700; color: var(--ssev-primary); min-width: 3.5rem; }

/* Pagination */
.ssh-pagination { margin-top: var(--ssev-gap); }
.ssh-pagination ul { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem; padding: 0; margin: 0; }
.ssh-pagination .page-numbers { display: inline-flex; align-items: center; min-height: 44px; min-width: 44px; justify-content: center; padding: .4rem .75rem; border: 1px solid var(--ssev-border); border-radius: var(--ssev-btn-radius); text-decoration: none; color: var(--ssev-text); font-weight: 600; }
.ssh-pagination .page-numbers.current { background: var(--ssev-primary); border-color: var(--ssev-primary); color: #fff; }

/* Featured */
.ssh-featured { display: grid; grid-template-columns: 1.1fr 1fr; gap: clamp(1.5rem, 4vw, 3.5rem); align-items: center; }
.ssh-featured--img-right .ssh-featured__media { order: 2; }
.ssh-featured__media { aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--ssev-radius); background: var(--ssev-surface); }
.ssh-featured__img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ssh-featured__title { font-family: var(--ssev-font-display); font-size: clamp(2.25rem, 1.6rem + 2.8vw, 3.75rem); line-height: .98; text-transform: uppercase; margin: 0 0 1rem; }
.ssh-featured__excerpt { font-size: var(--ss-text-base, 1.0625rem); line-height: 1.6; margin: 1rem 0 1.5rem; }
.ssh-featured__actions, .ssh-campaign__actions { display: flex; flex-wrap: wrap; gap: .75rem; }
@media (max-width: 860px) { .ssh-featured { grid-template-columns: 1fr; } .ssh-featured--img-right .ssh-featured__media { order: 0; } }

/* Campaign block */
.ssh-campaign__inner { display: grid; grid-template-columns: var(--ssev-flyer-w) 1fr; gap: clamp(1.5rem, 4vw, 3.5rem); align-items: center; background: var(--ss-color-primary-deep, #0A3F63); color: #fff; --ssev-text: #fff; --ssev-title-color: #fff; --ssev-muted: rgba(255,255,255,.8); --ssev-border: rgba(255,255,255,.2); --ssev-primary: var(--ss-color-orange, #F48024); --ssev-primary-hover: var(--ss-color-yellow, #FCB615); --ssev-on-primary: var(--ss-color-text, #20242B); border: 0; border-radius: var(--ss-radius-lg, 28px); padding: clamp(1.5rem, 4vw, 3.5rem); position: relative; overflow: hidden; }
.ssh-campaign__inner::after { content: ""; position: absolute; right: -120px; bottom: -140px; width: 360px; height: 360px; border-radius: 50%; background: rgba(255,255,255,.06); pointer-events: none; z-index: 0; }
.ssh-campaign__inner > * { position: relative; z-index: 1; }
.ssh-campaign__inner .ssh-eyebrow { color: var(--ss-color-yellow, #FCB615); }
.ssh-campaign__inner .ssh-btn--outline { color: #fff; }
.ssh-campaign__inner .ssh-btn--outline:hover { background: #fff; color: var(--ss-color-primary-deep, #0A3F63); border-color: #fff; }
.ssh-campaign__inner::before { content: ""; position: absolute; inset: 0; background: var(--ss-hex-cluster, none) right -120px top -110px / 340px no-repeat; opacity: .8; pointer-events: none; }
.ssh-campaign__inner > * { position: relative; }
@media (max-width: 860px) { .ssh-campaign__inner::before { background-size: 260px; background-position: right -90px top -70px; opacity: .45; } }
.ssh-campaign__flyer { margin: 0; }
.ssh-campaign__flyer-img { width: 100%; height: auto; display: block; border-radius: var(--ss-radius-md, 16px); box-shadow: 0 12px 30px rgba(32,36,43,.18); }
.ssh-campaign__title { font-family: var(--ssev-font-display); font-size: clamp(2.5rem, 1.8rem + 3.2vw, 4.25rem); line-height: .96; text-transform: uppercase; margin: 0 0 .75rem; color: var(--ssev-title-color); }
.ssh-campaign__summary, .ssh-campaign__recap-note { font-size: var(--ss-text-base, 1.0625rem); line-height: 1.6; margin: .75rem 0 1.25rem; }
.ssh-facts { list-style: none; margin: 0 0 1.5rem; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: .75rem 1.5rem; }
.ssh-facts__item { display: flex; flex-direction: column; gap: .15rem; padding: .6rem .8rem; border-radius: 10px; background: rgba(255,255,255,.08); }
.ssh-facts__label { font-size: .75rem; text-transform: uppercase; letter-spacing: .08em; font-weight: 700; color: var(--ssev-muted); }
.ssh-facts__value { font-family: var(--ssev-font-display); font-size: 1.375rem; font-weight: 600; text-transform: uppercase; line-height: 1.05; }
.ssh-campaign__videos { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--ssev-border); }
.ssh-campaign__videos-label { font-weight: 700; margin: 0 0 .75rem; }
.ssh-campaign--recap .ssh-campaign__inner::before { opacity: .35; filter: grayscale(.5); }
@media (max-width: 860px) { .ssh-campaign__inner { grid-template-columns: 1fr; } .ssh-campaign__flyer { max-width: 420px; margin-inline: auto; } }

/* Details */
.ssh-details { background: var(--ssev-card-bg); border: 1px solid var(--ssev-border); border-radius: var(--ssev-radius); padding: var(--ssev-card-pad); }
.ssh-details__list { margin: .75rem 0 0; display: flex; flex-direction: column; gap: 1rem; }
.ssh-details__row { display: grid; grid-template-columns: minmax(6rem, auto) 1fr; gap: .75rem; }
.ssh-details__row dt { white-space: nowrap; align-items: flex-start; }
.ssh-details__row dt { font-size: .75rem; text-transform: uppercase; letter-spacing: .08em; font-weight: 700; color: var(--ssev-muted); display: flex; align-items: center; gap: .4rem; }
.ssh-details__row dd { margin: 0; line-height: 1.5; }
.ssh-details__muted { color: var(--ssev-muted); font-size: .9rem; }
.ssh-details__private { display: inline-block; margin-top: .25rem; padding: .35rem .6rem; background: #FFF4DB; border-radius: 4px; font-size: .9rem; }
.ssh-details .ssh-register { margin: 1.25rem 0 0; }
.ssh-details__tools { margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--ssev-border); display: flex; flex-direction: column; gap: .75rem; }
.ssh-addcal { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; }
.ssh-share { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.ssh-share__label { font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--ssev-muted); margin-right: .25rem; }
.ssh-share__btn { font: inherit; font-size: .875rem; font-weight: 600; color: var(--ssev-primary-hover); background: var(--ssev-surface); border: 1px solid var(--ssev-border); border-radius: 999px; padding: .4rem .8rem; text-decoration: none; cursor: pointer; min-height: 36px; }
.ssh-share__btn:hover { background: var(--ssev-border); }
.ssh-register__note { margin: .5rem 0 0; font-size: .875rem; color: var(--ssev-muted); }
.ssh-register--center { text-align: center; } .ssh-register--right { text-align: right; }
.ssh-ico { width: 1em; height: 1em; display: inline-block; background: currentColor; -webkit-mask: var(--ssev-icon) center/contain no-repeat; mask: var(--ssev-icon) center/contain no-repeat; }
.ssh-ico--calendar { --ssev-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E"); }
.ssh-ico--pin { --ssev-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='M12 21s7-6.2 7-11a7 7 0 0 0-14 0c0 4.8 7 11 7 11z'/%3E%3Ccircle cx='12' cy='10' r='2.5'/%3E%3C/svg%3E"); }
.ssh-ico--person { --ssev-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21a8 8 0 0 1 16 0'/%3E%3C/svg%3E"); }
.ssh-ico--hex { background: var(--ssev-accent, var(--ssev-primary)); -webkit-mask: none; mask: none; clip-path: polygon(50% 0, 100% 25%, 100% 75%, 50% 100%, 0 75%, 0 25%); }

/* Video gallery */
.ssh-videos__grid { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--ssev-gap); grid-template-columns: repeat(var(--ssev-vcols, 4), minmax(0, 1fr)); }
@media (max-width: 1024px) { .ssh-videos__grid { grid-template-columns: repeat(var(--ssev-vcols-t, 2), minmax(0, 1fr)); } }
@media (max-width: 640px) { .ssh-videos__grid { grid-template-columns: repeat(var(--ssev-vcols-m, 1), minmax(0, 1fr)); } }
.ssh-video { display: flex; flex-direction: column; gap: .5rem; }
.ssh-video__play { position: relative; display: block; width: 100%; padding: 0; border: 0; background: var(--ssev-surface); border-radius: var(--ssev-radius); overflow: hidden; cursor: pointer; aspect-ratio: 16 / 9; }
.ssh-video--portrait .ssh-video__play, .ssh-video--portrait .ssh-video__stage { aspect-ratio: 9 / 16; }
.ssh-videos[style*="--ssev-vratio:16-9"] .ssh-video__play { aspect-ratio: 16 / 9; }
.ssh-videos[style*="--ssev-vratio:9-16"] .ssh-video__play { aspect-ratio: 9 / 16; }
.ssh-videos[style*="--ssev-vratio:1-1"] .ssh-video__play { aspect-ratio: 1; }
.ssh-video__thumb { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--ssev-ease); }
.ssh-video__thumb--empty { background: linear-gradient(135deg, var(--ssev-surface), var(--ssev-border)); }
.ssh-video__play:hover .ssh-video__thumb { transform: scale(1.03); }
.ssh-video__icon { position: absolute; inset: 50% auto auto 50%; transform: translate(-50%, -50%); width: 56px; height: 56px; border-radius: 50%; background: var(--ssev-primary); box-shadow: 0 6px 18px rgba(0,0,0,.25); }
.ssh-video__icon::after { content: ""; position: absolute; left: 55%; top: 50%; transform: translate(-50%, -50%); border-left: 18px solid #fff; border-top: 11px solid transparent; border-bottom: 11px solid transparent; }
.ssh-video__stage { position: relative; aspect-ratio: 16 / 9; border-radius: var(--ssev-radius); overflow: hidden; background: #000; }
.ssh-video__stage iframe, .ssh-video__stage video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.ssh-video__status { position: absolute; inset: 0; display: grid; place-items: center; color: #fff; font-size: .9rem; background: rgba(0,0,0,.6); }
.ssh-video__close { position: absolute; top: .5rem; right: .5rem; z-index: 2; width: 36px; height: 36px; border-radius: 50%; border: 0; background: rgba(0,0,0,.65); color: #fff; font-size: 1.25rem; cursor: pointer; }
.ssh-video__title { font-family: var(--ssev-font-display); font-size: 1.25rem; text-transform: uppercase; margin: 0; line-height: 1.1; }
.ssh-video__desc { margin: 0; font-size: .9rem; color: var(--ssev-muted); }

/* Countdown */
.ssh-countdown { display: inline-flex; gap: 1rem; flex-wrap: wrap; }
.ssh-countdown__unit { display: flex; flex-direction: column; align-items: center; min-width: 4.5rem; padding: .75rem .5rem; background: var(--ssev-card-bg); border: 1px solid var(--ssev-border); border-radius: var(--ssev-radius); }
.ssh-countdown__num { font-family: var(--ssev-font-display); font-size: 3rem; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; }
.ssh-countdown__label { font-size: .7rem; text-transform: uppercase; letter-spacing: .08em; color: var(--ssev-muted); margin-top: .35rem; }

/* Filters */
.ssh-filters { display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-end; padding: 1.25rem; background: var(--ssev-surface); border-radius: var(--ssev-radius); margin-bottom: var(--ssev-gap); }
.ssh-filters__field { display: flex; flex-direction: column; gap: .3rem; min-width: 10rem; }
.ssh-filters__field--grow { flex: 1 1 16rem; }
.ssh-filters label, .ssh-filters legend { font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--ssev-muted); }
.ssh-filters input[type=search], .ssh-filters select { font: inherit; min-height: 44px; padding: .5rem .75rem; border: 1px solid var(--ssev-border); border-radius: var(--ssev-btn-radius); background: #fff; color: var(--ssev-text); }
.ssh-filters__scope { border: 0; padding: 0; margin: 0; flex-direction: row; align-items: center; gap: 1rem; }
.ssh-filters__scope label { text-transform: none; font-size: .95rem; letter-spacing: 0; color: var(--ssev-text); display: flex; align-items: center; gap: .4rem; min-height: 44px; }
.ssh-filters__actions { display: flex; align-items: center; gap: 1rem; }

/* Calendar */
.ssh-calendar__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1rem; }
.ssh-calendar__nav { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .5rem 1rem; max-width: 100%; }
.ssh-calendar__title { font-family: var(--ssev-font-display); font-size: 2rem; text-transform: uppercase; margin: 0; min-width: 10rem; text-align: center; }
/* On a phone the month name and its two buttons do not fit on one line. */
@media (max-width: 560px) {
  .ssh-calendar__head { justify-content: center; }
  .ssh-calendar__nav { width: 100%; justify-content: space-between; gap: .5rem; }
  /* the month name takes the first line on its own, so the two arrows sit
     side by side underneath instead of one of them dropping to a line alone */
  .ssh-calendar__title { font-size: 1.5rem; min-width: 0; flex: 1 0 100%; order: -1; }
  .ssh-calendar__nav .ssh-btn { padding-inline: .75rem; }
}
.ssh-calendar__views { display: inline-flex; border: 1px solid var(--ssev-border); border-radius: 999px; overflow: hidden; }
.ssh-toggle { padding: .5rem 1rem; min-height: 40px; display: inline-flex; align-items: center; text-decoration: none; color: var(--ssev-text); font-weight: 600; font-size: .9rem; }
.ssh-toggle.is-active { background: var(--ssev-primary); color: #fff; }
.ssh-calendar__grid { width: 100%; border-collapse: collapse; table-layout: fixed; }
.ssh-calendar__grid th { font-size: .75rem; text-transform: uppercase; letter-spacing: .08em; color: var(--ssev-muted); padding: .5rem; text-align: left; border-bottom: 2px solid var(--ssev-border); }
.ssh-calendar__grid th abbr { text-decoration: none; }
.ssh-calendar__cell { vertical-align: top; min-height: 7rem; height: 7rem; padding: .4rem; border: 1px solid var(--ssev-border); }
.ssh-calendar__cell.is-empty { background: var(--ssev-surface); }
.ssh-calendar__cell.is-today .ssh-calendar__day { background: var(--ssev-primary); color: #fff; }
.ssh-calendar__day { display: inline-grid; place-items: center; width: 1.8rem; height: 1.8rem; border-radius: 50%; font-weight: 700; font-size: .875rem; }
.ssh-calendar__events { list-style: none; margin: .35rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .25rem; }
.ssh-calendar__event { display: block; font-size: .78rem; line-height: 1.25; padding: .2rem .5rem; background: color-mix(in srgb, var(--ssev-accent, var(--ssev-primary)) 14%, #fff); border-radius: 3px; color: var(--ssev-text); text-decoration: none; overflow: hidden; text-overflow: ellipsis; }
.ssh-calendar__event:hover { background: var(--ssev-border); }
.ssh-calendar__time { color: var(--ssev-muted); font-weight: 600; }
@media (max-width: 760px) { .ssh-calendar__grid { display: none; } .ssh-calendar__list[hidden] { display: block; } .ssh-calendar__views { display: none; } }

/* Single event */
.ssh-single__hero { position: relative; margin-bottom: 2rem; }
.ssh-single__hero:not(.has-image) .ssh-single__hero-body { padding: clamp(1.5rem, 4vw, 3rem) 0 1.5rem; border-bottom: 1px solid var(--ssev-border); }
.ssh-single__hero.has-image { display: grid; }
.ssh-single__hero-media { grid-area: 1 / 1; aspect-ratio: 21 / 9; overflow: hidden; }
.ssh-single__hero-img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ssh-single__hero.has-image .ssh-single__hero-body { grid-area: 1 / 1; align-self: end; padding: clamp(1.25rem, 4vw, 3rem); color: #fff; background: linear-gradient(to top, rgba(32,36,43,.85) 0%, rgba(32,36,43,.35) 60%, transparent 100%); }
.ssh-single__hero.has-image .ssh-badge, .ssh-single__hero.has-image .ssh-eyebrow { color: #fff; }
.ssh-single__title { font-family: var(--ssev-font-display); font-size: var(--ss-text-4xl, clamp(2.5rem, 1.8rem + 3.2vw, 4.5rem)); line-height: .96; text-transform: uppercase; margin: .25rem 0 .5rem; }
.ssh-single__when { font-size: var(--ss-text-base, 1.0625rem); margin: 0 0 1rem; }
.ssh-single__layout { display: grid; grid-template-columns: minmax(0, 1fr) 22rem; gap: clamp(1.5rem, 4vw, 3.5rem); align-items: start; }
.ssh-single__aside { position: sticky; top: 1.5rem; display: flex; flex-direction: column; gap: 1.5rem; }
.ssh-single__flyer { margin: 0; }
.ssh-single__flyer img { width: 100%; height: auto; border-radius: var(--ssev-radius); border: 1px solid var(--ssev-border); }
.ssh-single__flyer figcaption { font-size: .85rem; color: var(--ssev-muted); margin-top: .5rem; }
.ssh-prose { font-size: var(--ss-text-base, 1.0625rem); line-height: 1.65; }
.ssh-prose h2 { font-family: var(--ssev-font-heading); margin-top: 1.75em; }
.ssh-recap { padding: 1.5rem; border-radius: var(--ssev-radius); background: var(--ssev-surface); margin-bottom: 2rem; }
.ssh-recap h2 { margin-top: 0; }
.ssh-photos__grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr)); gap: .75rem; }
.ssh-photos__grid img { width: 100%; height: 100%; aspect-ratio: 1; object-fit: cover; border-radius: var(--ssev-radius); }
.ssh-single__original { margin-top: 2rem; }
.ssh-single__original summary { cursor: pointer; font-weight: 700; }
.ssh-single__related { margin-top: 3rem; }
@media (max-width: 900px) { .ssh-single__layout { grid-template-columns: 1fr; } .ssh-single__aside { position: static; } }

/* Archive */
.ssh-archive__head { margin: 2rem 0 1.5rem; }
.ssh-archive__title { font-family: var(--ssev-font-display); font-size: var(--ss-text-4xl, clamp(2.5rem, 1.8rem + 3.2vw, 4.5rem)); line-height: .96; text-transform: uppercase; margin: 0 0 .5rem; }
.ssh-archive__switch { margin: 0 0 1rem; }

/* Registration form */
.ssh-regform { margin-top: 2.5rem; padding: 1.5rem; border: 1px solid var(--ssev-border); border-radius: var(--ssev-radius); }
.ssh-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.ssh-form p { margin: 0 0 1rem; display: flex; flex-direction: column; gap: .3rem; }
.ssh-form label { font-weight: 600; }
.ssh-form input:not([type=checkbox]), .ssh-form textarea { font: inherit; padding: .6rem .75rem; min-height: 44px; border: 1px solid var(--ssev-border); border-radius: var(--ssev-btn-radius); }
.ssh-form__consent label { display: flex; gap: .5rem; align-items: flex-start; font-weight: 400; }
.ssh-hp { position: absolute !important; left: -9999px !important; }
.ssh-alert { padding: .9rem 1rem; border-radius: var(--ssev-btn-radius); margin-bottom: 1rem; }
.ssh-alert--success { background: #E6F4EA; color: #1E6B35; }
.ssh-alert--error { background: #FDE8E6; color: #9B2419; }
@media (max-width: 640px) { .ssh-form__row { grid-template-columns: 1fr; } }

/* Editor placeholder */
.ssh-editor-placeholder { padding: 1rem; border: 2px dashed var(--ssev-border); border-radius: var(--ssev-radius); color: var(--ssev-muted); text-align: center; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .ssh-event-card, .ssh-video__thumb, .ssh-btn { transition: none; }
  .ssh-event-card:hover { transform: none; }
}
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px,1px,1px,1px); white-space: nowrap; }

/* Placeholder when an event has no photo: category colour, hex pattern, month label */
.ssh-event-card__img--placeholder { display: grid; place-items: center; width: 100%; height: 100%; background: var(--ssev-ph, var(--ssev-primary)) var(--ss-hex-pattern, none) right -70px top -50px / 240px no-repeat; }
/* Cards without a category colour rotate through the logo palette instead of all reading blue. */
.ssh-event-card:nth-child(6n+2) .ssh-event-card__img--placeholder[style*="var(--ssev-primary)"] { background-color: #CA3091; }
.ssh-event-card:nth-child(6n+3) .ssh-event-card__img--placeholder[style*="var(--ssev-primary)"] { background-color: #F48024; }
.ssh-event-card:nth-child(6n+4) .ssh-event-card__img--placeholder[style*="var(--ssev-primary)"] { background-color: #8BC540; }
.ssh-event-card:nth-child(6n+5) .ssh-event-card__img--placeholder[style*="var(--ssev-primary)"] { background-color: #EE4235; }
.ssh-event-card:nth-child(6n)   .ssh-event-card__img--placeholder[style*="var(--ssev-primary)"] { background-color: #FCB615; }
.ssh-event-card__ph-month { font-family: var(--ssev-font-display); font-weight: 800; font-size: 1.75rem; letter-spacing: .02em; color: rgba(255,255,255,.92); text-transform: uppercase; }

/* Mobile safety */
.ssh-single__layout > *, .ssh-campaign__inner > *, .ssh-grid > *, .ssh-list__item > * { min-width: 0; }
.ssh-facts dd, .ssh-details dd, .ssh-prose { overflow-wrap: anywhere; }
.ssh-event-card:nth-child(6n+4) .ssh-event-card__img--placeholder[style*="var(--ssev-primary)"] .ssh-event-card__ph-month,
.ssh-event-card:nth-child(6n)   .ssh-event-card__img--placeholder[style*="var(--ssev-primary)"] .ssh-event-card__ph-month { color: rgba(32,36,43,.88); }
.ssh-empty a[href], .elementor .ssh-empty a[href] { text-decoration: underline; } /* Elementor sets .elementor a { text-decoration: none } */
.ssh-ph--light .ssh-event-card__ph-month { color: #20242B; }

/* ---------- Homepage video spotlight ---------- */
.ssh-spotlight { padding-block: clamp(3.5rem, 7vw, 6rem); }
.ssh-spotlight--dark { background: #0A3F63; color: #fff; }
.ssh-spotlight .ssh-container { max-width: 1200px; margin-inline: auto; }
.ssh-spotlight__head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1rem 2rem; margin-bottom: 2rem; }
.ssh-spotlight__title { margin: .25rem 0 0; font-size: clamp(2rem, 1.4rem + 2.4vw, 3rem); line-height: 1.05; }
.ssh-spotlight__text { margin: .5rem 0 0; font-size: var(--ss-text-base, 1.0625rem); }
.ssh-spotlight--dark .ssh-spotlight__title, .ssh-spotlight--dark .ssh-video__title { color: #fff; }
.ssh-spotlight--dark .ssh-spotlight__text { color: rgba(255,255,255,.88); }
.ssh-spotlight--dark .ssh-eyebrow { color: #FCB615; }
.ssh-spotlight .ssh-videos__grid { gap: 1.5rem 1.25rem; }
.ssh-spotlight .ssh-video__title { font-size: 1.05rem; text-transform: none; line-height: 1.25; }
.ssh-spotlight--dark .ssh-video__play { background: rgba(255,255,255,.08); }
.ssh-spotlight--dark .ssh-video__play:focus-visible { outline: 3px solid #FCB615; outline-offset: 3px; }
video.ssh-video__thumb { pointer-events: none; background: #000; }
@media (max-width: 640px) { .ssh-spotlight .ssh-videos__grid { gap: 1rem .75rem; } .ssh-spotlight .ssh-video__title { font-size: .95rem; } }
/* Spotlight tiles share one shape so a mix of phone (vertical) and wide videos lines up in even rows;
   the playing video is shown whole inside the tile. */
.ssh-spotlight .ssh-videos__grid { align-items: start; }
.ssh-spotlight .ssh-video__play, .ssh-spotlight .ssh-video__stage { aspect-ratio: 3 / 4; }
.ssh-spotlight .ssh-video__stage video { object-fit: contain; background: #000; }
.ssh-video__play > .ssh-video__thumb { position: absolute; inset: 0; }

/* ---------- Video lightbox (plays centered, on top of the page) ---------- */
html.ssh-lightbox-open { overflow: hidden; }
.ssh-lightbox { padding: 0; border: 0; background: transparent; max-width: none; max-height: none; width: 100vw; height: 100vh; height: 100dvh; margin: 0; overflow: hidden; }
.ssh-lightbox::backdrop { background: rgba(8, 18, 30, .9); }
.ssh-lightbox[open] { display: grid; place-items: center; }
.ssh-lightbox__inner { display: flex; flex-direction: column; gap: .75rem; width: min(92vw, calc((100dvh - 9rem) * 16 / 9), 1100px); }
.ssh-lightbox.is-portrait .ssh-lightbox__inner { width: min(92vw, calc((100dvh - 9rem) * 9 / 16), 440px); }
.ssh-lightbox__bar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; color: #fff; }
.ssh-lightbox__title { margin: 0; font-size: 1.125rem; line-height: 1.3; color: #fff; font-family: var(--ssev-font-display, inherit); }
.ssh-lightbox__close { flex: none; width: 48px; height: 48px; border-radius: 50%; border: 2px solid rgba(255,255,255,.7); background: transparent; color: #fff; font-size: 1.75rem; line-height: 1; cursor: pointer; }
.ssh-lightbox__close:hover { background: rgba(255,255,255,.15); }
.ssh-lightbox__stage { position: relative; width: 100%; aspect-ratio: 16 / 9; background: #000; border-radius: 12px; overflow: hidden; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.ssh-lightbox.is-portrait .ssh-lightbox__stage { aspect-ratio: 9 / 16; }
.ssh-lightbox__stage video, .ssh-lightbox__stage iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; object-fit: contain; background: #000; }
.ssh-lightbox__stage .ssh-video__status { position: absolute; inset: 0; display: grid; place-items: center; color: #fff; }
.ssh-lightbox__nav { display: flex; align-items: center; justify-content: space-between; gap: 1rem; color: #fff; }
.ssh-lightbox__nav button { min-height: 44px; padding: .5rem 1rem; border-radius: 999px; border: 2px solid rgba(255,255,255,.7); background: transparent; color: #fff; font: inherit; font-weight: 700; cursor: pointer; }
.ssh-lightbox__nav button:hover:not(:disabled) { background: rgba(255,255,255,.15); }
.ssh-lightbox__nav button:disabled { opacity: .35; cursor: default; }
.ssh-lightbox__count { font-weight: 700; padding: .2rem .7rem; border-radius: 999px; background: #09141F; color: #fff; }
.ssh-lightbox button:focus-visible { outline: 3px solid #FCB615; outline-offset: 3px; }
@media (max-width: 640px) { .ssh-lightbox__nav button span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); } .ssh-lightbox__nav button { min-width: 48px; } }
/* Theme guard: an older Elementor kit can style every button */
body .ssh-lightbox .ssh-lightbox__close, body .ssh-lightbox .ssh-lightbox__nav button { background-color: #09141F; color: #fff; }
body .ssh-lightbox .ssh-lightbox__close:hover, body .ssh-lightbox .ssh-lightbox__nav button:hover:not(:disabled) { background-color: #24384B; color: #fff; }

/* "Watch all" link under a preview */
.ssh-videos__more { margin: 1.75rem 0 0; text-align: center; }

/* ---------- Containment: a tile always clips its own media ----------
   The play control is a <button> and the thumbnail inside it is absolutely
   positioned, so the button's own `position` is the only thing keeping the
   video inside the tile. If any other stylesheet on the site neutralises that
   one property — the `ssh-` class prefix is not unique to this plugin — the
   video resolves against a distant ancestor instead and paints across the page
   underneath whatever follows it, including the footer. These rules give the
   tile a second positioned box of its own and cap the media's size, so the
   failure cannot happen however it is triggered. */
.ssh-videos .ssh-video { position: relative; }
.ssh-videos .ssh-video .ssh-video__play { position: relative; overflow: hidden; }
.ssh-videos .ssh-video .ssh-video__play > .ssh-video__thumb,
.ssh-videos .ssh-video .ssh-video__stage > video,
.ssh-videos .ssh-video .ssh-video__stage > iframe { position: absolute; inset: 0; max-width: 100%; max-height: 100%; }
.ssh-videos .ssh-video .ssh-video__stage { position: relative; overflow: hidden; }

/* ---------- The video player must not depend on <dialog> ----------
   Safari before 15.4 does not implement <dialog>. There the element gets no
   `display: none` of its own when closed and no top layer or ::backdrop when
   open, so the player sat in the page as a full-size block with the video
   inside it — which is how a video ended up spread across the page with the
   footer drawn over it. The same thing shows if a dialog is ever open without
   being modal. These two rules make the player hide itself when closed and
   cover the page itself when open, in every browser, with no reliance on the
   browser's own dialog behaviour. */
.ssh-lightbox:not([open]) { display: none !important; }
.ssh-lightbox[open] { position: fixed; inset: 0; z-index: 2147483000; background: rgba(8, 18, 30, .92); }

/* ---------- Elementor: a widget is as wide as its column ----------
   Elementor lays widgets out in a wrapping flex column. A widget with no width of
   its own is first measured at its narrowest natural width, and media that keeps a
   fixed shape (video tiles) is then shorter there than at its real width — so the
   widget box ended up shorter than its content and the sections after it, footer
   included, were drawn over the last videos. A definite width removes the mismatch. */
.elementor-widget[class*="elementor-widget-ssh"], .elementor-widget[class*="elementor-widget-ssc"] { width: 100%; max-width: 100%; }
