/* DiploHAM · Repetidores de Cataluña. Servicio público de consulta basado en URCAT. */
.repeaters-public { --repeaters: #7c3aed; --repeaters-bright: #b794ff; --repeaters-soft: #f1eaff; --repeaters-dark: #3d176f; --repeaters-rgb: 124, 58, 237; }
[data-theme="dark"] .repeaters-public { --repeaters: #b794ff; --repeaters-bright: #d8c5ff; --repeaters-soft: #27154b; --repeaters-dark: #e7dcff; }
.repeaters-public .site-header { background: #170d2b; border-bottom-color: #8b5cf6; }
[data-theme="dark"] .repeaters-public .site-header { background: #0d0718; border-bottom-color: #a78bfa; }
.repeaters-public .motion-toggle, .repeaters-public .theme-toggle { border-color: #6f4ba0; color: #eee7ff; }
.repeaters-public .motion-toggle:hover, .repeaters-public .motion-toggle:focus-visible, .repeaters-public .theme-toggle:hover, .repeaters-public .theme-toggle:focus-visible { background: #2c1750; color: #fff; }
.nav-button.nav-repeaters { border-color: #8057b8; background: rgba(139, 92, 246, .10); color: #e2d1ff; }
.nav-button.nav-repeaters:hover, .nav-button.nav-repeaters:focus-visible, .nav-button.nav-repeaters.active { border-color: #c4a5ff; background: #4b237b; color: #fff; }
.nav-button.nav-repeaters::before { content: ""; width: .56rem; height: .56rem; margin-right: 7px; border-radius: 50%; background: #bb9cff; box-shadow: 0 0 10px rgba(187,156,255,.42); }
.repeaters-public .radio-background { background: radial-gradient(circle at 88% 12%, rgba(124,58,237,.16), transparent 29%), var(--bg); }
.repeaters-public .radio-ring { border-color: rgba(167, 139, 250, .22); }
.repeaters-public .radio-mast, .repeaters-public .radio-mast::before { background: rgba(167,139,250,.14); }
.repeaters-public .radio-mast::after { border-left-color: rgba(167,139,250,.14); border-top-color: rgba(167,139,250,.14); }
.repeaters-page-shell { position: relative; z-index: 1; width: calc(100% - 32px); margin: 0 auto; max-width: 1720px; }
.repeaters-hero { display: grid; grid-template-columns: minmax(0, 1.22fr) minmax(300px, .78fr); gap: 26px; align-items: end; margin: 6px 0 26px; padding: 34px 0 18px; }
.repeaters-hero-copy { max-width: 840px; }
.repeaters-hero .eyebrow, .repeaters-heading .eyebrow { color: var(--repeaters); }
.repeaters-hero h1 { margin-bottom: 16px; }
.repeaters-hero p { max-width: 780px; font-size: 1.05rem; }
.repeaters-scope { border: 1px solid color-mix(in srgb, var(--repeaters) 50%, var(--line)); border-radius: 16px; padding: 20px; background: radial-gradient(circle at 92% 18%, rgba(var(--repeaters-rgb), .17), transparent 46%), color-mix(in srgb, var(--surface) 92%, var(--repeaters-soft)); box-shadow: var(--shadow); }
.repeaters-scope strong { display: block; margin-bottom: 7px; color: var(--ink); font-size: .91rem; }
.repeaters-scope p { margin: 0; font-size: .88rem; }
.repeaters-scope a { color: var(--repeaters-dark); font-weight: 800; }
.repeaters-map-service { overflow: hidden; border: 1px solid color-mix(in srgb, var(--repeaters) 46%, var(--line)); border-radius: 20px; background: var(--surface); box-shadow: var(--shadow); }
.repeaters-view-tabs { display: flex; align-items: stretch; gap: 8px; flex-wrap: wrap; padding: 15px 20px; border-bottom: 1px solid var(--line); background: color-mix(in srgb, var(--soft-bg) 78%, transparent); }
.repeaters-view-tab { display: inline-flex; align-items: center; min-height: 38px; border: 1px solid var(--field-border); border-radius: 999px; padding: 8px 13px; color: var(--ink); background: var(--field-bg); font: inherit; font-size: .8rem; font-weight: 850; cursor: pointer; transition: border-color .16s ease-out, background-color .16s ease-out, color .16s ease-out, transform .16s ease-out; }
.repeaters-view-tab:hover, .repeaters-view-tab:focus-visible { border-color: var(--repeaters); color: var(--repeaters-dark); }.repeaters-view-tab.active { border-color: var(--repeaters); color: #fff; background: var(--repeaters); box-shadow: 0 5px 14px rgba(var(--repeaters-rgb), .22); }.repeaters-view-tab:active { transform: scale(.97); }
.repeaters-service-heading { display: flex; align-items: start; justify-content: space-between; gap: 20px; padding: 26px 28px 20px; border-bottom: 1px solid var(--line); background: radial-gradient(circle at 90% 0%, rgba(var(--repeaters-rgb), .16), transparent 37%); }
.repeaters-service-heading h2 { margin: 4px 0 8px; color: var(--ink); font-size: clamp(1.45rem, 2.5vw, 2.1rem); }
.repeaters-service-heading p:not(.eyebrow) { max-width: 840px; margin: 0; }
.repeaters-source-chip { flex: 0 0 auto; border: 1px solid color-mix(in srgb, var(--repeaters) 60%, var(--line)); border-radius: 999px; padding: 8px 12px; color: var(--repeaters-dark); background: color-mix(in srgb, var(--surface) 86%, var(--repeaters-soft)); font-size: .76rem; font-weight: 850; white-space: nowrap; }
.repeaters-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; padding: 18px 28px; border-bottom: 1px solid var(--line); background: color-mix(in srgb, var(--soft-bg) 70%, transparent); }
.repeaters-filter-group { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.repeaters-filter-label { color: var(--muted); font-size: .76rem; font-weight: 850; letter-spacing: .07em; text-transform: uppercase; }
.repeaters-filter { display: inline-flex; align-items: center; min-height: 34px; gap: 7px; border: 1px solid var(--field-border); border-radius: 999px; padding: 5px 10px; color: var(--ink); background: var(--field-bg); font-size: .82rem; font-weight: 800; cursor: pointer; }
.repeaters-filter input { width: 15px; height: 15px; margin: 0; accent-color: var(--repeaters); }
.repeaters-filter select { width: auto; min-height: 34px; padding: 5px 31px 5px 10px; font-size: .82rem; font-weight: 800; cursor: pointer; }
.repeaters-toolbar-actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; }
.repeaters-count { color: var(--repeaters-dark); font-size: .84rem; font-weight: 850; white-space: nowrap; }
.repeaters-reset { border: 1px solid color-mix(in srgb, var(--repeaters) 50%, var(--field-border)); border-radius: 999px; padding: 7px 12px; color: var(--repeaters-dark); background: transparent; font-size: .78rem; font-weight: 850; cursor: pointer; }
.repeaters-reset:hover, .repeaters-reset:focus-visible { background: var(--repeaters-soft); }
.repeaters-map-canvas { width: 100%; min-height: 640px; background: #ede7f7; }
.repeaters-map-canvas .leaflet-control-attribution { max-width: min(92vw, 470px); background: rgba(255,255,255,.9); color: #463d54; font-size: 11px; }
.repeaters-map-canvas .leaflet-control-attribution a { color: #4b2180; }
[data-theme="dark"] .repeaters-map-canvas .leaflet-control-attribution { background: rgba(12,8,22,.9); color: #e9dfff; }
[data-theme="dark"] .repeaters-map-canvas .leaflet-control-attribution a { color: #d4bcff; }
.repeater-marker { display: grid; place-items: center; width: 29px; height: 29px; border: 2px solid rgba(255,255,255,.95); border-radius: 50% 50% 50% 0; transform: rotate(-45deg); box-shadow: 0 3px 12px rgba(18, 8, 42, .37); }
.repeater-marker > span { display: block; width: 9px; height: 9px; border: 2px solid #fff; border-radius: 50%; transform: rotate(45deg); }
.repeater-marker.vhf { background: #7c3aed; }.repeater-marker.uhf { background: #5b21b6; }.repeater-marker.inactive { background: #b45309; }
.repeater-marker.analog_repeater { background: #7c3aed; }.repeater-marker.digital_repeater { background: #0284c7; }.repeater-marker.hotspot_dmo { background: #0f9b83; }.repeater-marker.echolink_link { background: #d97706; }.repeater-marker.digital_repeater > span { border-radius: 2px; }.repeater-marker.hotspot_dmo > span { border-radius: 50% 50% 2px 50%; }.repeater-marker.echolink_link > span { width: 7px; height: 7px; background: #fff; }
.repeater-marker.organization { outline: 3px solid #f6c453; outline-offset: 2px; }.repeater-marker.personal { outline: 3px solid #72d0ec; outline-offset: 2px; }
.repeaters-map-canvas .leaflet-popup-content-wrapper { border: 1px solid #d2c0f8; border-radius: 13px; background: #fff; color: #24123d; box-shadow: 0 15px 34px rgba(36,18,61,.28); }
.repeaters-map-canvas .leaflet-popup-tip { background: #fff; }
.repeater-popup { min-width: 220px; font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
.repeater-popup-header { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.repeater-popup-header strong { color: #3d176f; font-size: 1rem; letter-spacing: .025em; }
.repeater-popup-badge { border: 1px solid #b99af4; border-radius: 999px; padding: 3px 7px; color: #5b21b6; background: #f2ebff; font-size: .65rem; font-weight: 850; }
.repeater-popup dl { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 5px 10px; margin: 0; font-size: .78rem; }
.repeater-popup dt { color: #685e75; font-weight: 750; }.repeater-popup dd { margin: 0; color: #24123d; font-weight: 800; overflow-wrap: anywhere; }
.repeater-popup-note { margin: 12px 0 0; color: #6d5c41; font-size: .7rem; line-height: 1.42; }
.repeaters-bottom { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; padding: 26px 28px 28px; }
.repeaters-records { min-width: 0; }
.repeaters-records h3, .repeaters-disclaimer h3 { margin: 0 0 8px; color: var(--ink); font-size: 1.1rem; }
.repeaters-records > p, .repeaters-disclaimer p { margin: 0; font-size: .87rem; }
.repeater-record-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 16px; }
.repeater-record { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: 10px; border: 1px solid var(--line); border-radius: 12px; padding: 12px; background: color-mix(in srgb, var(--surface) 88%, var(--soft-bg)); text-align: left; color: var(--ink); cursor: pointer; transition: border-color .16s ease-out, background-color .16s ease-out, transform .16s ease-out; }
.repeater-record:hover, .repeater-record:focus-visible { border-color: var(--repeaters); background: var(--repeaters-soft); }.repeater-record:active { transform: scale(.985); }
.repeater-record-dot { width: 11px; height: 11px; margin-top: 4px; border-radius: 50%; background: var(--repeaters); box-shadow: 0 0 0 3px rgba(var(--repeaters-rgb), .12); }.repeater-record-dot.inactive { background: #b45309; box-shadow: 0 0 0 3px rgba(180,83,9,.12); }.repeater-record-dot.organization { outline: 2px solid #d79b1b; outline-offset: 2px; }.repeater-record-dot.personal { outline: 2px solid #168aac; outline-offset: 2px; }
.repeater-record strong { display: block; overflow-wrap: anywhere; }.repeater-record span { display: block; color: var(--muted); font-size: .76rem; line-height: 1.38; overflow-wrap: anywhere; }
.repeater-record .repeater-holder-label { width: fit-content; margin-top: 4px; border-radius: 999px; padding: 2px 7px; font-size: .68rem; font-weight: 850; }
.repeater-record .repeater-holder-label.organization_identified { color: #6c4700; background: #fff3d5; }.repeater-record .repeater-holder-label.personal_callsign_reference { color: #07556b; background: #d9f5fb; }.repeater-record .repeater-holder-label.mixed_reference { color: #754406; background: #fff0cc; }.repeater-record .repeater-holder-label.not_stated { color: #655d70; background: color-mix(in srgb, var(--soft-bg) 88%, #fff); }
.repeater-record .repeater-network { margin-top: 4px; color: var(--repeaters-dark); font-size: .7rem; font-weight: 800; }
.repeaters-disclaimer { overflow: hidden; border: 1px solid color-mix(in srgb, var(--repeaters) 48%, var(--line)); border-radius: 16px; background: color-mix(in srgb, var(--surface) 92%, var(--repeaters-soft)); box-shadow: 0 10px 28px rgba(var(--repeaters-rgb), .08); }
.repeaters-disclaimer h3 { margin: 0; padding: 17px 19px 15px; border-left: 4px solid var(--repeaters); background: radial-gradient(circle at 90% 0%, rgba(var(--repeaters-rgb), .16), transparent 48%); }
.repeaters-disclaimer-section { padding: 15px 19px; }
.repeaters-disclaimer-section + .repeaters-disclaimer-section { border-top: 1px solid color-mix(in srgb, var(--repeaters) 28%, var(--line)); }
.repeaters-disclaimer-section p { margin: 0; font-size: .86rem; line-height: 1.55; }
.repeaters-disclaimer-label { margin-bottom: 6px !important; color: var(--repeaters-dark); font-size: .68rem !important; font-weight: 900; letter-spacing: .085em; text-transform: uppercase; }
.repeaters-disclaimer-source { background: color-mix(in srgb, var(--soft-bg) 78%, var(--repeaters-soft)); }
.repeaters-disclaimer-note { margin-top: 8px !important; color: var(--muted); font-size: .77rem !important; line-height: 1.46 !important; }
.repeaters-disclaimer a { color: var(--repeaters-dark); font-weight: 850; }
.repeaters-onair-section { margin: 32px 0 8px; }
.repeaters-onair-section .repeaters-map-service { border-color: #70549a; }
.repeaters-onair-section .repeaters-service-heading { background: radial-gradient(circle at 90% 0%, rgba(139,92,246,.16), transparent 37%); }
.repeaters-onair-section .repeaters-map-canvas { min-height: 500px; }
.repeaters-onair-section .repeaters-bottom { grid-template-columns: minmax(0, 1fr); }
.repeaters-onair-section .repeaters-record-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.repeaters-full-link { display: inline-flex; align-items: center; min-height: 38px; border: 1px solid #8d6dbe; border-radius: 999px; padding: 8px 13px; color: #ece2ff; background: #49247a; font-size: .81rem; font-weight: 850; text-decoration: none; white-space: nowrap; transition: background-color .16s ease-out, border-color .16s ease-out, transform .16s ease-out; }
.repeaters-full-link:hover, .repeaters-full-link:focus-visible { border-color: #d4bbff; background: #6333a1; color: #fff; }.repeaters-full-link:active { transform: scale(.97); }
@media (max-width: 1180px) { .repeater-record-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 920px) { .repeaters-hero, .repeaters-bottom { grid-template-columns: 1fr; }.repeaters-service-heading { flex-direction: column; }.repeaters-source-chip { align-self: flex-start; }.repeaters-onair-section .repeaters-record-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 720px) { .repeaters-page-shell { width: calc(100% - 24px); }.repeaters-hero { gap: 18px; padding-top: 22px; }.repeaters-hero h1 { font-size: 2.35rem; }.repeaters-view-tabs { padding: 12px 14px; gap: 7px; }.repeaters-view-tab { flex: 1 1 100%; justify-content: center; }.repeaters-service-heading, .repeaters-toolbar, .repeaters-bottom { padding-left: 18px; padding-right: 18px; }.repeaters-toolbar { grid-template-columns: 1fr; }.repeaters-toolbar-actions { justify-content: space-between; }.repeaters-map-canvas { min-height: 520px; }.repeater-record-list, .repeaters-onair-section .repeater-record-list { grid-template-columns: 1fr; } }
@media (max-width: 460px) { .repeaters-map-canvas { min-height: 470px; }.repeaters-filter-group { gap: 7px; }.repeaters-filter { font-size: .77rem; }.repeaters-scope { padding: 16px; }.repeaters-service-heading { padding-top: 21px; }.repeaters-full-link { width: 100%; justify-content: center; } }
@media (prefers-reduced-motion: reduce) { .repeater-record, .repeaters-full-link, .repeaters-reset { transition: none; } }
/* Capa nacional EA3RCQ · laboratorio 2026-10-14 */
.repeater-marker.national_vhf { background: #0f766e; }
.repeater-marker.national_uhf { background: #0369a1; }
.repeater-marker.national_dmr { background: #c2410c; }
/* Paginación: 10 filas de 3 columnas = 30 fichas por página. */
.repeater-pagination { display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 18px; }
.repeater-page-button { min-width: 94px; border: 1px solid color-mix(in srgb, var(--repeaters) 50%, var(--field-border)); border-radius: 999px; padding: 8px 13px; color: var(--repeaters-dark); background: var(--field-bg); font-size: .78rem; font-weight: 850; cursor: pointer; transition: background-color .16s ease-out, border-color .16s ease-out, transform .16s ease-out; }
.repeater-page-button:hover:not(:disabled), .repeater-page-button:focus-visible:not(:disabled) { border-color: var(--repeaters); background: var(--repeaters-soft); }
.repeater-page-button:active:not(:disabled) { transform: scale(.97); }
.repeater-page-button:disabled { cursor: not-allowed; opacity: .42; }
.repeater-page-status { min-width: 112px; color: var(--muted); font-size: .78rem; font-weight: 850; text-align: center; }
@media (max-width: 460px) { .repeater-pagination { gap: 7px; }.repeater-page-button { min-width: 82px; padding-inline: 9px; }.repeater-page-status { min-width: 92px; } }
/* Identificación rápida de banda/modalidad dentro de cada marcador. */
.repeater-marker > .marker-glyph { display: grid; place-items: center; width: 16px; height: 16px; border: 0; border-radius: 0; color: #fff; font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: .68rem; font-weight: 950; line-height: 1; letter-spacing: 0; text-shadow: 0 1px 2px rgba(0,0,0,.35); transform: rotate(45deg); }
.repeater-marker.echolink_link > .marker-glyph { width: 16px; height: 16px; background: transparent; }
/* Selector nacional de distritos EA. */
.repeaters-district-filter { display: flex; align-items: center; gap: 8px; overflow-x: auto; padding: 12px 28px; border-bottom: 1px solid var(--line); background: color-mix(in srgb, var(--soft-bg) 58%, transparent); scrollbar-width: thin; }
.repeaters-district-filter .repeaters-filter-label { flex: 0 0 auto; margin-right: 3px; }
.district-filter-button { flex: 0 0 auto; min-width: 43px; min-height: 32px; border: 1px solid var(--field-border); border-radius: 999px; padding: 6px 10px; color: var(--ink); background: var(--field-bg); font: inherit; font-size: .75rem; font-weight: 850; cursor: pointer; transition: border-color .16s ease-out, background-color .16s ease-out, color .16s ease-out, transform .16s ease-out; }
.district-filter-button:hover, .district-filter-button:focus-visible { border-color: var(--repeaters); color: var(--repeaters-dark); }
.district-filter-button.active { border-color: var(--repeaters); color: #fff; background: var(--repeaters); box-shadow: 0 4px 12px rgba(var(--repeaters-rgb), .2); }
.district-filter-button:active { transform: scale(.97); }
@media (max-width: 720px) { .repeaters-district-filter { padding-left: 18px; padding-right: 18px; } }
/* Encuadre nacional completo: altura suficiente para incluir península, Baleares y Canarias. */
.repeaters-map-canvas { min-height: 760px; }
@media (max-width: 720px) { .repeaters-map-canvas { min-height: 620px; } }
@media (max-width: 460px) { .repeaters-map-canvas { min-height: 560px; } }
