/* OA4EFZ Radio Atlas — public interface */
:where(.oap-directory, .oap-calendar, .oap-record, .oap-summary, .oa-radio-index) {
  --oap-ink: #122433;
  --oap-muted: #627486;
  --oap-border: rgba(20, 48, 68, .14);
  --oap-panel: #ffffff;
  --oap-soft: #f2f6f8;
  --oap-green: var(--oa-green, #00a979);
  --oap-red: #cf1d2e;
  --oap-amber: #a96d00;
  --oap-radius: 14px;
  --oap-shadow: 0 12px 32px rgba(13, 34, 50, .055);
  color: var(--oap-ink);
  font-size: 1rem;
}

:where(.oap-directory, .oap-calendar, .oap-record, .oap-summary, .oa-radio-index),
:where(.oap-directory, .oap-calendar, .oap-record, .oap-summary, .oa-radio-index) *,
:where(.oap-directory, .oap-calendar, .oap-record, .oap-summary, .oa-radio-index) *::before,
:where(.oap-directory, .oap-calendar, .oap-record, .oap-summary, .oa-radio-index) *::after {
  box-sizing: border-box;
}

html.oap-calendar-lock { overflow: hidden; }

/* Shared boxed surfaces */
.oap-directory,
.oap-calendar-stage {
  width: min(100%, 1280px);
  margin-inline: auto;
  padding: clamp(14px, 2vw, 24px);
  border: 1px solid var(--oap-border);
  border-radius: 18px;
  background: var(--oap-panel);
  box-shadow: var(--oap-shadow);
}

.oap-directory,
.oap-calendar {
  display: grid;
  gap: 16px;
}

.oap-directory-page,
.oap-record { padding-block: 48px; }

/* Shared module navigation: wraps, never scrolls horizontally */
.oap-directory-nav {
  display: grid;
  grid-template-columns: repeat(9, minmax(0, 1fr));
  width: 100%;
  border: 1px solid var(--oap-border);
  border-radius: 12px;
  background: #fff;
  overflow: hidden;
}

.oap-directory-nav__item {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
  min-height: 50px;
  padding: 9px 8px;
  border-right: 1px solid rgba(20, 48, 68, .09);
  color: #263b4a;
  text-decoration: none;
  transition: background-color .16s ease, color .16s ease;
}

.oap-directory-nav__item:last-child { border-right: 0; }
.oap-directory-nav__item:hover { background: #f3f8f6; color: #102531; }
.oap-directory-nav__item.is-active {
  background: #f5fbf8;
  box-shadow: inset 0 -3px 0 var(--oap-green);
  color: #102531;
}
.oap-directory-nav__item:focus-visible {
  z-index: 1;
  outline: 2px solid var(--oap-green);
  outline-offset: -3px;
}

.oap-directory-nav__label {
  min-width: 0;
  overflow: hidden;
  color: inherit;
  font-size: clamp(.69rem, .72vw, .84rem);
  font-weight: 750;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.oap-directory-nav__short { display: none; }
.oap-directory-nav__count {
  display: inline-grid;
  place-items: center;
  min-width: 24px;
  min-height: 22px;
  padding: 2px 5px;
  border-radius: 5px;
  background: #edf7f3;
  color: #087354;
  font-size: .76rem;
  font-weight: 850;
  line-height: 1;
}

/* Directory search and filters */
.oap-table-controls {
  display: grid;
  grid-template-columns: minmax(240px, 1.5fr) repeat(5, minmax(130px, 1fr)) auto;
  gap: 10px;
  align-items: end;
  padding: 18px;
  border: 1px solid var(--oap-border);
  border-radius: var(--oap-radius);
  background: #f8fafb;
}
.oap-search { grid-column: auto; }

.oap-table-controls label,
.oap-cal-filters label {
  display: grid;
  gap: 6px;
  min-width: 0;
  margin: 0;
  color: #405565;
  font-size: .86rem;
  font-weight: 750;
  line-height: 1.3;
}

.oap-table-controls input,
.oap-table-controls select,
.oap-table-controls button,
.oap-calendar button,
.oap-calendar select {
  width: 100%;
  min-width: 0;
  min-height: 44px;
  margin: 0;
  border: 1px solid rgba(23, 52, 75, .2);
  border-radius: 9px;
  background: #fff;
  color: var(--oap-ink);
  font: inherit;
}

.oap-table-controls input,
.oap-table-controls select,
.oap-calendar select { padding: 9px 11px; }
.oap-table-controls button,
.oap-calendar button { cursor: pointer; }

.oap-table-controls input:focus,
.oap-table-controls select:focus,
.oap-table-controls button:focus-visible,
.oap-calendar button:focus-visible,
.oap-calendar select:focus-visible {
  outline: 2px solid var(--oap-green);
  outline-offset: 2px;
}

.oap-filter-fields { display: contents; }
.oap-filter-fields > label { min-width: 0; }
.oap-advanced-search {
  order: 2;
  grid-column: 1 / -1;
  padding-top: 10px;
  border-top: 1px solid rgba(20, 48, 68, .09);
}
.oap-advanced-search summary {
  width: fit-content;
  cursor: pointer;
  color: #203746;
  font-size: .88rem;
  font-weight: 800;
}
.oap-advanced-search[open] summary { margin-bottom: 10px; }
.oap-filter-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 10px;
}
.oap-clear {
  order: 1;
  width: auto !important;
  min-width: 92px;
  padding: 8px 12px;
  font-weight: 750;
}
.oap-clear:hover { border-color: var(--oap-green); }

/* Search feedback */
.oap-table-feedback {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 34px;
}
.oap-table-status {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 150px;
  color: var(--oap-muted);
}
.oap-table-status strong {
  order: -1;
  color: var(--oap-ink);
  font-size: 1.14rem;
}
.oap-table-status strong:empty { display: none; }

.oap-spinner {
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  border: 2px solid rgba(18, 36, 51, .18);
  border-top-color: var(--oap-green);
  border-radius: 50%;
  animation: oapSpin .7s linear infinite;
}

.oap-active-filters {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 6px;
}
.oap-active-filters:empty { display: none; }
.oap-active-filters button {
  min-height: 30px;
  padding: 4px 9px;
  border: 1px solid rgba(0, 160, 112, .22);
  border-radius: 999px;
  background: #edf9f5;
  color: #135d4b;
  cursor: pointer;
  font: inherit;
  font-size: .78rem;
  font-weight: 800;
}
.oap-active-filters button:hover { border-color: var(--oap-green); background: #e2f6ef; }

/* Result table */
.oap-table-scroll {
  width: 100%;
  border: 1px solid var(--oap-border);
  border-radius: 10px;
  background: linear-gradient(180deg, #ffffff 0%, #f8fbfa 100%);
  box-shadow: 0 8px 24px rgba(13, 34, 50, .035);
  overflow: hidden;
}

.oap-directory table {
  width: 100%;
  margin: 0;
  border-collapse: collapse;
  table-layout: auto;
}

.oap-directory th,
.oap-directory td {
  min-width: 0;
  padding: 12px 13px;
  border-bottom: 1px solid rgba(23, 52, 75, .085);
  text-align: left;
  vertical-align: top;
  overflow-wrap: anywhere;
}

.oap-directory th {
  background: #edf3f6;
  color: #2a4051;
  font-size: .78rem;
  font-weight: 850;
  line-height: 1.35;
  letter-spacing: .035em;
  text-transform: uppercase;
}

.oap-directory td {
  color: #30495c;
  font-size: .94rem;
  line-height: 1.48;
}

.oap-directory tbody tr:last-child td { border-bottom: 0; }
.oap-directory tbody tr:hover { background: #f8fafb; }
.oap-directory.is-loading .oap-table-scroll { pointer-events: none; }
.oap-directory.has-error .oap-table-scroll { border-color: rgba(180, 30, 30, .35); }

.oap-record-link {
  display: block;
  color: var(--oap-ink);
  font-weight: 760;
  text-decoration: none;
}
.oap-record-link:hover {
  color: #087a60;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.oap-identity {
  display: inline-grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 8px;
  align-items: start;
  max-width: 100%;
}
.oap-country-badge {
  display: inline-grid;
  place-items: center;
  min-width: 24px;
  min-height: 24px;
  padding: 0 2px;
  border: 0;
  border-radius: 0;
  background: transparent;
  font: inherit;
  font-size: 1.12rem;
  line-height: 1;
  cursor: pointer;
}
.oap-country-badge:hover { opacity: .78; }
.oap-country-badge:focus-visible { outline: 2px solid var(--oap-green); outline-offset: 3px; }
.oap-country-badge.is-static { cursor: default; }

.oap-cell-stack { display: grid; gap: 3px; min-width: 0; }
.oap-cell-stack > span:first-child { color: var(--oap-ink); font-weight: 720; }
.oap-cell-stack > span + span { color: var(--oap-muted); font-size: .86rem; }
.oap-empty-value { color: #9aa7b1; }


.oap-radio-state {
  display: inline-grid;
  grid-template-columns: 8px minmax(0, 1fr);
  gap: 8px;
  align-items: center;
  max-width: 100%;
  min-width: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--oap-ink);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  box-shadow: none;
}
.oap-radio-state > i { width: 7px; height: 7px; border-radius: 50%; background: #00b980; box-shadow: 0 0 8px rgba(0,185,128,.55); }
.oap-radio-state > span { display: grid; min-width: 0; }
.oap-radio-state small { color: #71808c; font-size: .56rem; font-weight: 800; letter-spacing: .12em; line-height: 1.1; text-transform: uppercase; }
.oap-radio-state strong { overflow: hidden; color: var(--oap-ink); font-size: .72rem; font-weight: 850; line-height: 1.25; text-overflow: ellipsis; text-transform: uppercase; }
.oap-radio-state.is-active > i,
.oap-radio-state.is-available > i {
  background: #00e69a;
  box-shadow: 0 0 11px rgba(0,230,154,.8);
  animation: oapStatusSignal 1.65s ease-in-out infinite;
}
.oap-radio-state.is-unverified > i,
.oap-radio-state.is-inactive > i,
.oap-radio-state.is-expired > i,
.oap-radio-state.is-rejected > i { background: #ff3c53; box-shadow: 0 0 10px rgba(255,60,83,.7); }
.oap-radio-state.is-review > i,
.oap-radio-state.is-provisional > i,
.oap-radio-state.is-pending > i,
.oap-radio-state.is-maintenance > i,
.oap-radio-state.is-intermittent > i { background: #ffc247; box-shadow: 0 0 10px rgba(255,194,71,.65); }
.oap-radio-state.is-historical > i,
.oap-radio-state.is-excluded > i { background: #8aa0aa; box-shadow: 0 0 8px rgba(138,160,170,.5); }

.oap-badge,
.oap-alert {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  padding: 4px 8px;
  border: 1px solid rgba(21, 57, 75, .14);
  border-radius: 999px;
  background: #f2f6f7;
  color: #425866;
  font-size: .78rem;
  font-weight: 780;
  line-height: 1.3;
  white-space: normal;
}

.oap-badge-active,
.oap-badge-confirmed,
.oap-badge-current,
.oap-badge-institutional,
.oap-badge-verified,
.oap-badge-public,
.oap-badge-official {
  border-color: rgba(0, 146, 99, .24);
  background: #eaf8f3;
  color: #087052;
}

.oap-badge-limited,
.oap-badge-scheduled,
.oap-badge-intermittent,
.oap-badge-provisional,
.oap-badge-review,
.oap-badge-tentative {
  border-color: rgba(190, 127, 0, .25);
  background: #fff7e5;
  color: #815c0a;
}

.oap-badge-inactive,
.oap-badge-decommissioned,
.oap-badge-cancelled,
.oap-badge-expired,
.oap-badge-excluded {
  border-color: rgba(150, 35, 35, .2);
  background: #fff0f0;
  color: #8b2929;
}
.oap-badge-historical,
.oap-badge-reentered { background: #f1eff8; color: #5f4b82; }

.oap-alert { margin: 0 0 6px; background: var(--oap-soft); }
.oap-alert-notice { background: #fff2cc; }
.oap-alert-warning { background: #ffe1cf; }
.oap-alert-urgent { background: #ffd9dd; color: #8b1020; }
.oap-alert-link { display: block; text-decoration: none; }

.oap-source-link {
  display: inline-grid;
  gap: 3px;
  color: #087a60;
  font-weight: 750;
  text-decoration: none;
  overflow-wrap: anywhere;
}
.oap-source-link:hover { text-decoration: underline; text-underline-offset: 3px; }
.oap-source-link small { color: var(--oap-muted); font-size: .78rem; font-weight: 500; }
.oap-link-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.oap-link-list a {
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  padding: 4px 8px;
  border: 1px solid rgba(0, 143, 101, .22);
  border-radius: 7px;
  background: #f1faf7;
  color: #08745a;
  font-size: .76rem;
  font-weight: 800;
  line-height: 1.2;
  text-decoration: none;
}
.oap-link-list a:hover { border-color: var(--oap-green); background: #e8f7f1; }


.oap-pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 12px;
}
.oap-pagination button {
  min-height: 42px;
  padding: 8px 15px;
  border: 1px solid var(--oap-border);
  border-radius: 9px;
  background: #fff;
  color: var(--oap-ink);
  cursor: pointer;
  font: inherit;
  font-weight: 700;
}
.oap-pagination button:disabled { opacity: .42; cursor: not-allowed; }
.oap-pagination span { min-width: 64px; color: var(--oap-muted); text-align: center; }

.oap-message-row td {
  padding: 30px !important;
  color: var(--oap-muted) !important;
  text-align: center !important;
}
.oap-message-row p { margin: 0 0 12px; }
.oap-message-row strong,
.oap-message-row small { display: block; }
.oap-message-row small { margin-top: 6px; }
.oap-message-row button {
  min-height: 40px;
  padding: 7px 13px;
  border: 1px solid var(--oap-border);
  border-radius: 9px;
  background: #fff;
  color: var(--oap-ink);
  cursor: pointer;
  font: inherit;
  font-weight: 800;
}

/* Loading skeleton */
.oap-skeleton {
  display: block;
  width: 72%;
  height: 12px;
  border-radius: 999px;
  background: linear-gradient(90deg, #edf1f3 25%, #f8fafb 45%, #edf1f3 65%);
  background-size: 220% 100%;
  animation: oapSkeleton 1.1s ease-in-out infinite;
  animation-delay: var(--oap-skeleton-delay, 0ms);
}
.oap-skeleton--head { width: 58%; height: 10px; margin: 3px 0; }
.oap-skeleton--wide { width: 90%; }
.oap-skeleton-row td { height: 50px; }

/* Quick-view modal */
.oap-record-modal,
.oap-cal-modal {
  width: min(760px, calc(100vw - 32px));
  max-height: min(82dvh, 860px);
  margin: auto;
  padding: 0;
  border: 0;
  border-radius: 18px;
  background: #fff;
  color: var(--oap-ink);
  box-shadow: 0 24px 80px rgba(4, 20, 31, .3);
  overflow: hidden;
}
.oap-record-modal::backdrop,
.oap-cal-modal::backdrop { background: rgba(3, 14, 23, .68); backdrop-filter: blur(3px); }
.oap-record-modal__shell,
.oap-cal-modal-shell { display: grid; grid-template-rows: auto minmax(0, 1fr); max-height: inherit; }
.oap-record-modal__header,
.oap-cal-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 13px 16px;
  border-bottom: 1px solid rgba(20, 48, 68, .12);
  background: #f4f7f8;
  font-size: .76rem;
  font-weight: 900;
  letter-spacing: .05em;
  text-transform: uppercase;
}
.oap-record-modal__header button,
.oap-cal-modal-close {
  display: grid;
  place-items: center;
  width: 38px;
  min-width: 38px;
  height: 38px;
  padding: 0;
  border: 1px solid rgba(20, 48, 68, .16);
  border-radius: 50%;
  background: #fff;
  color: #263e4f;
  cursor: pointer;
  font-size: 1.35rem;
  line-height: 1;
}
.oap-record-modal__body,
.oap-cal-modal-body { padding: 22px; overflow: auto; }
.oap-record-modal__body h2,
.oap-cal-modal-body h2 { margin: 4px 0 10px; font-size: clamp(1.35rem, 2.5vw, 2rem); }

.oap-record-modal__country { display: flex; align-items: center; gap: 9px; width: fit-content; margin-bottom: 8px; color: var(--oap-muted); font-weight: 800; }
.oap-record-modal__country span { font-size: 1.45rem; }
.oap-record-modal__editorial { margin: 8px 0 16px; }

.oap-record-modal__details {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 20px;
  margin: 18px 0 0;
}
.oap-record-modal__details > div { padding: 11px 0; border-bottom: 1px solid rgba(20, 48, 68, .1); }
.oap-record-modal__details dt { color: var(--oap-muted); font-size: .74rem; font-weight: 900; text-transform: uppercase; }
.oap-record-modal__details dd { margin: 5px 0 0; color: var(--oap-ink); }
.oap-record-modal__actions,
.oap-cal-detail-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; margin-top: 20px; }
.oap-record-modal__actions a,
.oap-cal-detail-actions a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 8px 13px;
  border: 1px solid var(--oap-border);
  border-radius: 10px;
  color: var(--oap-ink);
  font-weight: 850;
  text-decoration: none;
}
.oap-record-modal__actions a.is-primary,
.oap-cal-detail-actions a.is-primary { border-color: var(--oap-green); background: var(--oap-green); color: #fff; }

/* Summary and homepage navigation */
.oap-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 12px;
}
.oap-summary a {
  display: grid;
  gap: 5px;
  padding: 18px;
  border: 1px solid var(--oap-border);
  border-radius: var(--oap-radius);
  background: #fff;
  color: var(--oap-ink);
  text-decoration: none;
}
.oap-summary strong { font-size: 1.55rem; }
.oap-summary span { color: var(--oap-muted); font-weight: 700; }

.oa-radio-index {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr)) minmax(178px, .88fr);
  width: min(100%, 1280px);
  margin-inline: auto;
  border-top: 2px solid #cf1d2e;
  background: rgba(20, 23, 20, .78);
  backdrop-filter: blur(12px);
  box-shadow: 0 18px 42px rgba(0,0,0,.16);
  overflow: hidden;
}
.oa-radio-index-intro,
.oa-radio-index-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 9px;
  align-items: center;
  min-width: 0;
  min-height: 88px;
  padding: 13px 15px;
  color: #fff;
  text-decoration: none;
  box-shadow: inset -1px 0 rgba(255,255,255,.07);
}
.oa-radio-index-intro { grid-template-columns: auto minmax(0, 1fr); background: rgba(207,29,46,.11); }
.oa-radio-index-intro .oa-radio-index-status { grid-column: 1 / -1; color: #a9b5a5; font-size: .56rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.oa-radio-index-item:last-child { box-shadow: none; }
.oa-radio-index-item:hover, .oa-radio-index-intro:hover { background: rgba(0,230,154,.08); }
.oa-radio-index-copy { display: grid; min-width: 0; }
.oa-radio-index-copy small, .oa-radio-index-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.oa-radio-index-copy small { color: #a9b5a5; font-size: .58rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.oa-radio-index-copy strong { display: block; margin-top: 5px; color: #fff; font-size: 1.35rem; line-height: 1.05; }
.oa-radio-index-led { width: 8px; height: 8px; border-radius: 2px; background: #ff3049; box-shadow: 0 0 12px rgba(255,48,73,.75); }
.oa-radio-index-action { color: var(--oa-green, #00e69a); font-size: 1rem; font-weight: 900; }
.oa-radio-index-action i { font-style: normal; }

/* Archive and single records */
.oap-record-shell { display: grid; gap: 24px; }
.oap-record-groups { display: grid; gap: 18px; }
.oap-record-group {
  padding: 20px;
  border: 1px solid var(--oap-border);
  border-radius: var(--oap-radius);
  background: #fff;
  box-shadow: 0 8px 24px rgba(13, 34, 50, .035);
  overflow-wrap: anywhere;
}
.oap-record-group h2,
.oap-source-panel h2,
.oap-disclaimer-copy h2 { margin: 0 0 14px; font-size: 1.125rem; }
.oap-record-details {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 24px;
  margin: 0;
}
.oap-record-details > div { min-width: 0; padding: 12px 0; border-bottom: 1px solid rgba(23, 52, 75, .1); }
.oap-record-details dt { color: #71808c; font-size: .76rem; font-weight: 800; letter-spacing: .035em; text-transform: uppercase; }
.oap-record-details dd { margin: 5px 0 0; color: #243d4f; line-height: 1.55; overflow-wrap: anywhere; }
.oap-record-details dd a { color: #087a60; font-weight: 700; }
.oap-record-alert,
.oap-listening-warning {
  margin: 0;
  padding: 14px 16px;
  border: 1px solid #e4b65f;
  border-left: 4px solid var(--oap-green);
  border-radius: 10px;
  background: #fff8e7;
  color: #654b18;
  line-height: 1.55;
}
.oap-record-alert.is-warning,
.oap-record-alert.is-urgent { border-left-color: var(--oap-red); }

.oap-source-panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 20px;
  align-items: center;
  padding: 20px;
  border-left: 4px solid var(--oap-red);
  border-radius: 0 12px 12px 0;
  background: #f6f8f9;
  overflow-wrap: anywhere;
}
.oap-source-panel h2 { margin-bottom: 5px; }
.oap-source-panel p { margin: 3px 0; color: var(--oap-muted); }
.oap-source-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 9px 14px;
  border-radius: 8px;
  background: #102638;
  color: #fff;
  text-decoration: none;
  font-weight: 750;
}
.oap-source-button:hover { background: #0a765b; }
.oap-additional-sources { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.oap-additional-sources a {
  display: inline-flex;
  padding: 7px 10px;
  border: 1px solid var(--oap-border);
  border-radius: 8px;
  background: #fff;
  color: #087a60;
  font-weight: 700;
  text-decoration: none;
}

.oap-satellite-operation { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 0; }
.oap-operation-card {
  position: relative;
  overflow: hidden;
  padding: 20px;
  border: 1px solid rgba(20, 48, 68, .14);
  border-radius: var(--oap-radius);
  background: #0c1f2e;
  color: #fff;
}
.oap-operation-card::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--oap-green); }
.oap-operation-card.is-downlink::before { background: var(--oap-red); }
.oap-operation-card small { display: block; color: #9eb3bf; font-size: .76rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.oap-operation-card strong { display: block; margin-top: 8px; font-size: 1.45rem; line-height: 1.15; overflow-wrap: anywhere; }
.oap-operation-card span { display: block; margin-top: 7px; color: #d4e0e6; }
.oap-satellite-access { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.oap-satellite-access span { padding: 7px 9px; border: 1px solid var(--oap-border); border-radius: 8px; background: #f5f8f9; color: #314957; font-weight: 700; }

.oap-fallback-hero { padding: 52px 20px; background: #102638; color: #fff; }
.oap-fallback-hero > div { max-width: 1120px; margin: auto; }
.oap-fallback-hero p { max-width: 760px; color: #d9e5ec; }

/* Notices */
.oap-disclaimer {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 14px;
  align-items: start;
  margin: 0 0 20px;
  padding: 17px 18px;
  border: 1px solid rgba(28, 76, 101, .16);
  border-left: 4px solid #51758a;
  border-radius: 0 12px 12px 0;
  background: #f4f7f8;
  color: #29404d;
  overflow-wrap: anywhere;
}
.oap-disclaimer-warning { border-left-color: #c88712; background: #fff8e9; color: #5f481c; }
.oap-disclaimer-mark { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: #17384a; color: #fff; font-weight: 900; }
.oap-disclaimer-warning .oap-disclaimer-mark { background: #9b6500; }
.oap-disclaimer-copy h2 { margin-bottom: 7px; }
.oap-disclaimer-copy p,
.oap-disclaimer-copy small { display: block; margin: 5px 0; color: inherit; line-height: 1.55; }
.oap-disclaimer-copy small { margin-top: 9px; color: #6d7b83; }

.oap-editorial-note {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 18px;
  align-items: center;
  padding: 16px 18px;
  border: 1px solid var(--oap-border);
  border-left: 4px solid var(--oap-green);
  border-radius: 0 12px 12px 0;
  background: #f5f9f8;
}
.oap-editorial-note strong { display: block; margin-bottom: 4px; color: var(--oap-ink); }
.oap-editorial-note p { margin: 0; color: #526875; font-size: .9rem; line-height: 1.55; }
.oap-editorial-note > a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding: 8px 13px;
  border-radius: 8px;
  background: #102638;
  color: #fff;
  font-size: .84rem;
  font-weight: 800;
  text-decoration: none;
  white-space: nowrap;
}
.oap-editorial-note > a:hover { background: #08745a; }

/* Calendar */
.oap-calendar-title { margin: 0; }
.oap-cal-toolbar {
  display: grid;
  grid-template-columns: minmax(260px, auto) minmax(240px, 1fr) auto;
  gap: 14px;
  align-items: center;
  padding: 14px;
  border: 1px solid var(--oap-border);
  border-radius: var(--oap-radius);
  background: #f8fafb;
}
.oap-cal-year-nav,
.oap-cal-view-switch { display: flex; align-items: center; gap: 8px; }
.oap-cal-year-nav strong { min-width: 82px; text-align: center; font-size: 1.35rem; line-height: 1; }
.oap-cal-year-nav button { width: auto; min-width: 42px; padding: 7px 12px; font-weight: 850; }
.oap-cal-view-switch { justify-content: center; }
.oap-cal-view-switch button,
.oap-cal-expand { width: auto; padding: 8px 16px; font-weight: 800; }
.oap-cal-view-switch button.is-active { border-color: var(--oap-green); background: var(--oap-green); color: #fff; }
.oap-cal-expand { justify-self: end; }

.oap-cal-filters {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 12px;
  width: 100%;
}
.oap-cal-filters:empty { display: none; }
.oap-cal-filters label[hidden] { display: none; }
.oap-cal-filters select { width: 100%; }
.oap-cal-status { min-height: 0; color: var(--oap-muted); }
.oap-cal-status:empty { display: none; }
.oap-cal-status.is-error { padding: 10px 12px; border-left: 4px solid var(--oap-red); background: #fff3f4; color: #7f1722; }
.oap-cal-status.is-loading { display: inline-flex; align-items: center; gap: 8px; font-weight: 800; }
.oap-cal-status.is-loading::before {
  content: "";
  width: 16px;
  height: 16px;
  border: 2px solid rgba(18, 36, 51, .18);
  border-top-color: var(--oap-green);
  border-radius: 50%;
  animation: oapSpin .7s linear infinite;
}

.oap-cal-alerts { display: flex; flex-wrap: wrap; gap: 8px; align-items: stretch; }
.oap-cal-alerts:empty { display: none; }
.oap-cal-alerts > strong { align-self: center; }
.oap-cal-alerts button,
.oap-cal-alerts a {
  display: grid;
  gap: 1px;
  max-width: 270px;
  min-height: 0;
  padding: 8px 10px;
  border: 0;
  border-left: 4px solid var(--oap-red);
  border-radius: 0 9px 9px 0;
  background: #fff2f3;
  color: var(--oap-ink);
  text-align: left;
  text-decoration: none;
}
.oap-cal-alerts small { color: var(--oap-muted); }
.oap-cal-specials {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.oap-cal-special {
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--oap-border);
  border-radius: 12px;
  background: var(--oap-soft);
}
.oap-cal-special:empty { display: none; }
.oap-cal-special header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 9px;
}
.oap-cal-special header strong { font-size: .9rem; }
.oap-cal-special header > span {
  display: inline-grid;
  place-items: center;
  min-width: 26px;
  min-height: 22px;
  padding: 2px 7px;
  border-radius: 999px;
  background: #fff;
  color: #49606f;
  font-size: .72rem;
  font-weight: 850;
}
.oap-cal-special-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 7px;
}
.oap-cal-special-item,
.oap-calendar .oap-cal-special-item {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 7px;
  width: 100%;
  min-height: 36px;
  padding: 6px 8px;
  border: 1px solid rgba(20, 48, 68, .1);
  border-radius: 8px;
  background: #fff;
  color: var(--oap-ink);
  font-size: .78rem;
  font-weight: 750;
  line-height: 1.25;
  text-align: left;
  text-decoration: none;
}
.oap-cal-special-item > span:last-child { min-width: 0; overflow-wrap: anywhere; }
.oap-cal-special-item:hover { border-color: rgba(0, 169, 121, .45); background: #f3fbf8; }
.oap-cal-special-item.is-peru { border-color: rgba(207, 29, 46, .32); background: #fff7f8; }

.oap-cal-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}
.oap-cal-summary > div { display: grid; gap: 2px; min-height: 72px; padding: 14px; border: 1px solid var(--oap-border); border-radius: 12px; background: #fff; }
.oap-cal-summary strong { font-size: 1.6rem; }
.oap-cal-summary span { color: var(--oap-muted); font-size: .82rem; font-weight: 800; }

.oap-cal-year-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  align-items: start;
}
.oap-cal-month-card {
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr) auto;
  gap: 9px;
  min-width: 0;
  padding: 13px;
  border: 1px solid rgba(16, 45, 58, .14);
  border-radius: 10px;
  background: linear-gradient(180deg, #ffffff 0%, #f8fbfa 100%);
  box-shadow: 0 9px 24px rgba(9, 30, 39, .055);
}
.oap-cal-month-card.is-current { border-color: rgba(0, 169, 121, .48); box-shadow: inset 0 0 0 1px rgba(0, 169, 121, .15); }
.oap-cal-month-card header button {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  width: 100%;
  min-height: 0;
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
}
.oap-cal-month-card header strong { font-size: 1.08rem; text-transform: capitalize; }
.oap-cal-month-card header span { color: var(--oap-muted); font-size: .76rem; font-weight: 750; }
.oap-cal-month-alert { width: fit-content; padding: 3px 7px; border-radius: 999px; background: #fff0d7; color: #7b5300; font-size: .7rem; font-weight: 850; }
.oap-cal-month-events { display: grid; gap: 6px; }
.oap-cal-month-events > p { margin: 8px 0; color: var(--oap-muted); font-size: .84rem; }
.oap-cal-year-event {
  display: grid;
  grid-template-columns: 42px 24px minmax(0, 1fr) auto;
  gap: 7px;
  align-items: center;
  width: 100%;
  min-height: 40px;
  padding: 7px 8px;
  border: 1px solid rgba(20, 48, 68, .08);
  border-radius: 8px;
  background: #f7f9fa;
  color: var(--oap-ink);
  text-align: left;
  text-decoration: none;
}
.oap-cal-year-event.is-peru,
.oap-cal-event.is-peru,
.oap-cal-agenda-event.is-peru { border-color: rgba(207, 29, 46, .38); background: rgba(207, 29, 46, .055); }
.oap-cal-year-event time { color: var(--oap-muted); font-size: .75rem; font-weight: 850; }
.oap-cal-year-event > span:not(.oap-cal-mini-alert) { min-width: 0; overflow-wrap: anywhere; font-size: .82rem; font-weight: 800; }
.oap-cal-flag { font-size: 1rem; line-height: 1; }
.oap-cal-mini-alert { padding: 2px 6px; border-radius: 999px; background: #ffe5e8; color: #841824; font-size: .65rem; font-weight: 850; }
.oap-cal-open-month { width: 100%; padding: 8px 10px; border-color: var(--oap-green) !important; color: #08755c !important; font-weight: 800; }

.oap-cal-month-view { border: 1px solid var(--oap-border); border-radius: var(--oap-radius); background: #fff; overflow: hidden; }
.oap-cal-weekdays,
.oap-cal-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.oap-cal-weekdays > div { padding: 10px 6px; background: #eaf1f4; color: #405665; font-size: .78rem; font-weight: 850; text-align: center; }
.oap-cal-days { border-top: 1px solid var(--oap-border); }
.oap-cal-day {
  min-width: 0;
  min-height: 145px;
  padding: 8px;
  border-right: 1px solid var(--oap-border);
  border-bottom: 1px solid var(--oap-border);
  background: #fff;
}
.oap-cal-day:nth-child(7n) { border-right: 0; }
.oap-cal-day.is-empty { background: #f7f9fa; }
.oap-cal-day.is-today { background: #effbf7; box-shadow: inset 0 0 0 2px var(--oap-green); }
.oap-cal-num { display: block; margin-bottom: 7px; color: var(--oap-muted); font-size: .8rem; font-weight: 850; }
.oap-cal-event {
  display: block;
  width: 100%;
  min-height: 0 !important;
  margin: 5px 0;
  padding: 6px 7px !important;
  border: 0 !important;
  border-left: 4px solid #51758a !important;
  border-radius: 0 7px 7px 0 !important;
  background: #f0f5f7 !important;
  font-size: .74rem !important;
  font-weight: 800 !important;
  line-height: 1.28;
  text-align: left;
  overflow-wrap: anywhere;
}
.oap-cal-event.is-contest { border-left-color: var(--oap-red) !important; background: #fff2f3 !important; }
.oap-cal-event.is-activation,
.oap-cal-event.is-program { border-left-color: var(--oap-green) !important; background: #edf9f5 !important; }
.oap-cal-event.is-exercise,
.oap-cal-event.is-training,
.oap-cal-event.is-fair { border-left-color: var(--oap-amber) !important; background: #fff8e8 !important; }
.oap-cal-event b { display: block; margin-bottom: 2px; color: #8b2929; font-size: .64rem; text-transform: uppercase; }

.oap-cal-agenda-view { display: grid; gap: 22px; }
.oap-cal-agenda-month { display: grid; gap: 8px; }
.oap-cal-agenda-month h3 { margin: 0; padding-bottom: 8px; border-bottom: 1px solid var(--oap-border); text-transform: capitalize; }
.oap-cal-agenda-event {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  width: 100%;
  min-height: 62px;
  padding: 11px 13px;
  background: #fff;
  text-align: left;
}
.oap-cal-agenda-event time { color: var(--oap-muted); font-size: .82rem; font-weight: 800; }
.oap-cal-agenda-event span { display: grid; gap: 2px; min-width: 0; }
.oap-cal-agenda-event small { color: var(--oap-muted); }
.oap-cal-agenda-event em { padding: 3px 7px; border-radius: 999px; background: #fff2cc; color: #745000; font-size: .7rem; font-style: normal; font-weight: 850; }
.oap-cal-message { padding: 34px; color: var(--oap-muted); text-align: center; }
.oap-cal-detail-date { color: var(--oap-muted); font-weight: 800; }
.oap-cal-detail-alert { width: fit-content; max-width: 100%; padding: 5px 9px; border-radius: 999px; background: #fff2cc; color: #745000; font-size: .78rem; font-weight: 850; }
.oap-cal-detail-alert.is-urgent { background: #ffdfe3; color: #841824; }
.oap-cal-detail-alert.is-warning { background: #ffe8d5; color: #7b4200; }
.oap-cal-detail-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0 18px; }
.oap-cal-detail-tags span { padding: 4px 8px; border-radius: 999px; background: var(--oap-soft); font-size: .78rem; font-weight: 800; }
.oap-calendar.is-loading { opacity: .72; }
.oap-calendar.is-expanded {
  position: fixed;
  z-index: 99999;
  inset: 12px;
  width: auto;
  max-width: none;
  height: calc(100dvh - 24px);
  margin: 0;
  padding: 18px;
  border: 1px solid var(--oap-border);
  border-radius: 18px;
  background: #f7f9fa;
  overflow: auto;
}

/* Responsive layout */
@media (max-width: 1180px) {
  .oap-directory-nav { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .oap-directory-nav__item:nth-child(5n) { border-right: 0; }
  .oap-table-controls { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .oap-search { grid-column: span 2; }
  .oap-cal-toolbar { grid-template-columns: 1fr auto; }
  .oap-cal-view-switch { grid-column: 1 / -1; justify-content: flex-start; }
  .oap-cal-year-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .oa-radio-index { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 900px) {
  .oap-directory-nav { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .oap-table-controls { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .oap-search { grid-column: span 2; }
  .oap-active-filters { justify-content: flex-start; }
  .oap-record-details,
  .oap-source-panel,
  .oap-satellite-operation { grid-template-columns: 1fr; }
  .oap-source-button { justify-self: start; }
  .oap-cal-specials { grid-template-columns: 1fr; }
  .oap-cal-year-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .oap-cal-agenda-event { grid-template-columns: 1fr; gap: 5px; }
  .oap-cal-agenda-event em { width: fit-content; }
}

@media (max-width: 760px) {
  .oap-directory,
  .oap-calendar-stage { padding: 12px; border-radius: 12px; }
  .oap-directory-nav { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .oap-directory-nav__item { border-right: 1px solid rgba(20, 48, 68, .09); }
  .oap-directory-nav__item:nth-child(3n) { border-right: 0; }
  .oap-directory-nav__full { display: none; }
  .oap-directory-nav__short { display: inline; }
  .oap-table-controls { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .oap-search { grid-column: 1 / -1; }
  .oap-clear { width: auto !important; justify-self: start; }

  .oap-table-scroll { border: 0; background: transparent; box-shadow: none; overflow: visible; }
  .oap-directory table,
  .oap-directory tbody,
  .oap-directory tr,
  .oap-directory td { display: block; width: 100%; }
  .oap-directory thead {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
  }
  .oap-directory tbody { display: grid; gap: 12px; }
  .oap-directory tr {
    padding: 14px;
    border: 1px solid var(--oap-border);
    border-left: 3px solid rgba(0, 169, 121, .55);
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 8px 22px rgba(13, 34, 50, .04);
  }
  .oap-directory td {
    display: grid;
    grid-template-columns: minmax(118px, .7fr) minmax(0, 1.3fr);
    gap: 12px;
    padding: 8px 0;
    border: 0;
  }
  .oap-directory td::before {
    content: attr(data-label);
    color: #71808c;
    font-size: .74rem;
    font-weight: 800;
    letter-spacing: .025em;
    text-transform: uppercase;
  }
  .oap-directory td:first-child { display: block; padding-bottom: 12px; border-bottom: 1px solid var(--oap-border); }
  .oap-directory td:first-child::before { display: none; }
  .oap-directory td[colspan] { display: block; text-align: center; }
  .oap-directory td[colspan]::before { content: none; }

  .oap-cal-toolbar { grid-template-columns: 1fr; }
  .oap-cal-year-nav { flex-wrap: wrap; }
  .oap-cal-year-nav strong { flex: 1; }
  .oap-cal-view-switch { grid-column: auto; justify-content: stretch; }
  .oap-cal-view-switch button { flex: 1; padding-inline: 9px; }
  .oap-cal-expand { display: none; }
  .oap-cal-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .oap-cal-year-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .oap-record-modal__details { grid-template-columns: 1fr; }
  .oa-radio-index { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .oap-disclaimer { grid-template-columns: 1fr; padding: 15px; }
  .oap-editorial-note { grid-template-columns: 1fr; }
  .oap-editorial-note > a { justify-self: start; }
}

@media (max-width: 480px) {
  .oap-directory-nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .oap-cal-year-grid { grid-template-columns: 1fr; }
  .oap-table-controls { grid-template-columns: 1fr; }
  .oap-search { grid-column: auto; }
  .oap-clear { width: 100% !important; }
  .oap-filter-grid { grid-template-columns: 1fr; }
  .oap-directory td { grid-template-columns: 1fr; gap: 4px; }
  .oap-pagination { justify-content: space-between; }
  .oap-pagination button { padding-inline: 10px; }
  .oap-cal-summary { grid-template-columns: 1fr 1fr; }
  .oap-cal-year-event { grid-template-columns: 38px 22px minmax(0, 1fr); }
  .oap-cal-mini-alert { display: none; }
  .oap-record-modal,
  .oap-cal-modal { width: 100%; max-width: none; max-height: 92dvh; margin: auto 0 0; border-radius: 18px 18px 0 0; }
  .oap-record-modal__body,
  .oap-cal-modal-body { padding: 18px; }
}


@media print {
  .oap-directory, .oap-calendar-stage { width: 100%; padding: 0; border: 0; box-shadow: none; }
  .oap-directory-nav, .oap-table-controls, .oap-pagination, .oap-cal-toolbar, .oap-cal-filters, .oap-cal-expand, .oap-clear { display: none !important; }
  .oap-cal-year-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
  .oap-cal-month-card { break-inside: avoid; padding: 8px; box-shadow: none; }
  .oap-table-scroll { box-shadow: none; }
  .oap-record-modal, .oap-cal-modal { display: none !important; }
}

@keyframes oapStatusSignal { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: .18; transform: scale(.78); box-shadow: 0 0 2px rgba(0,230,154,.2); } }
@keyframes oapSpin { to { transform: rotate(360deg); } }
@keyframes oapSkeleton { from { background-position: 100% 0; } to { background-position: -120% 0; } }

@media (prefers-reduced-motion: reduce) {
  .oap-spinner,
  .oap-skeleton,
  .oap-cal-status.is-loading::before,
  .oap-radio-state.is-active > i,
  .oap-radio-state.is-available > i { animation: none; }
  .oap-directory-nav__item,
  .oa-radio-index-item { transition: none; }
}
