/* Pillan360 · paneles flotantes de frecuencias de monitoreo. */
.pillan-frequency-panel {
    --frequency-accent: #38bdf8;
    position: fixed;
    z-index: 10820;
    width: min(48rem, calc(100vw - 1.5rem));
    max-height: min(78vh, 48rem);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--frequency-accent) 55%, #475569 45%);
    border-radius: .95rem;
    background: rgba(15, 23, 42, .985);
    color: #e2e8f0;
    box-shadow: 0 24px 70px rgba(0, 0, 0, .58), 0 0 0 1px rgba(255,255,255,.03) inset;
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    touch-action: auto;
}
.pillan-frequency-panel[data-frequency-type="cb"] { width: min(58rem, calc(100vw - 1.5rem)); }
.pillan-frequency-panel[data-frequency-type="frs"] { width: min(48rem, calc(100vw - 1.5rem)); }
.pillan-frequency-panel[data-frequency-type="marine"] { width: min(49rem, calc(100vw - 1.5rem)); }
.pillan-frequency-panel[hidden] { display: none !important; }
.pillan-frequency-panel.is-collapsed { width: min(27rem, calc(100vw - 1.5rem)); max-height: none; }
.pillan-frequency-panel.is-collapsed .pillan-frequency-body,
.pillan-frequency-panel.is-collapsed .pillan-frequency-footer { display: none; }
.pillan-frequency-header {
    display: grid;
    grid-template-columns: auto minmax(0,1fr) auto;
    align-items: center;
    gap: .65rem;
    min-height: 3.35rem;
    padding: .55rem .65rem;
    cursor: grab;
    user-select: none;
    touch-action: none;
    border-bottom: 1px solid rgba(100,116,139,.32);
    background: linear-gradient(135deg, color-mix(in srgb, var(--frequency-accent) 17%, #0f172a 83%), rgba(15,23,42,.98));
}
.pillan-frequency-header:active { cursor: grabbing; }
.pillan-frequency-grip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.1rem;
    height: 2.1rem;
    border-radius: .62rem;
    color: var(--frequency-accent);
    border: 1px solid color-mix(in srgb, var(--frequency-accent) 40%, transparent);
    background: color-mix(in srgb, var(--frequency-accent) 12%, transparent);
}
.pillan-frequency-grip svg { width: 1.05rem; height: 1.05rem; }
.pillan-frequency-heading { min-width: 0; }
.pillan-frequency-heading h3 { margin: 0; font-size: .84rem; line-height: 1.2; font-weight: 900; color: #f8fafc; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pillan-frequency-heading p { margin: .16rem 0 0; font-size: .6rem; line-height: 1.25; color: #94a3b8; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pillan-frequency-controls { display: flex; align-items: center; gap: .3rem; }
.pillan-frequency-header-pagination {
    display: inline-flex;
    align-items: center;
    gap: .22rem;
    margin-right: .18rem;
    padding-right: .42rem;
    border-right: 1px solid rgba(100,116,139,.42);
}
.pillan-frequency-header-page-label {
    min-width: 2.7rem;
    text-align: center;
    color: #e2e8f0;
    font: 900 .61rem/1 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}
.pillan-frequency-icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: .55rem;
    color: #cbd5e1;
    border: 1px solid rgba(100,116,139,.45);
    background: rgba(30,41,59,.76);
    transition: background-color .15s ease, color .15s ease, transform .15s ease;
}
.pillan-frequency-icon-btn:hover { color: white; background: rgba(71,85,105,.95); transform: translateY(-1px); }
.pillan-frequency-icon-btn[data-action="close"]:hover { color: #fecaca; background: rgba(153,27,27,.65); border-color: rgba(248,113,113,.5); }
.pillan-frequency-icon-btn svg { width: .95rem; height: .95rem; }
.pillan-frequency-body { min-height: 0; overflow: auto; padding: .72rem; }
.pillan-frequency-notice {
    margin-bottom: .65rem;
    padding: .52rem .62rem;
    border: 1px solid rgba(100,116,139,.35);
    border-left: 3px solid var(--frequency-accent);
    border-radius: .55rem;
    background: rgba(30,41,59,.55);
    color: #cbd5e1;
    font-size: .63rem;
    line-height: 1.42;
}
.pillan-frequency-table { display: grid; gap: .28rem; }
.pillan-frequency-table.is-matrix { align-items: start; gap: .55rem; }
.pillan-frequency-table.is-matrix.columns-4 { grid-template-columns: repeat(4, minmax(0,1fr)); }
.pillan-frequency-table.is-matrix.columns-3 { grid-template-columns: repeat(3, minmax(0,1fr)); }
.pillan-frequency-matrix-group {
    display: grid;
    align-content: start;
    overflow: hidden;
    border: 1px solid rgba(71,85,105,.58);
    border-radius: .58rem;
    background: rgba(15,23,42,.32);
}
.pillan-frequency-matrix-row {
    display: grid;
    grid-template-columns: minmax(2.8rem,.5fr) minmax(5rem,1fr);
    align-items: center;
    gap: .35rem;
    min-height: 1.82rem;
    padding: .31rem .42rem;
    border-bottom: 1px solid rgba(71,85,105,.38);
    background: rgba(30,41,59,.48);
    font-size: .65rem;
    line-height: 1.15;
}
.pillan-frequency-matrix-row:last-child { border-bottom: 0; }
.pillan-frequency-matrix-row.is-header {
    min-height: 1.7rem;
    color: #94a3b8;
    background: rgba(15,23,42,.96);
    font-size: .54rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .045em;
}
.pillan-frequency-row {
    display: grid;
    align-items: center;
    gap: .5rem;
    min-height: 2rem;
    padding: .38rem .52rem;
    border: 1px solid rgba(71,85,105,.55);
    border-radius: .48rem;
    background: rgba(30,41,59,.58);
    font-size: .68rem;
    line-height: 1.2;
}
.pillan-frequency-row.is-header {
    position: sticky;
    top: -.72rem;
    z-index: 1;
    min-height: 1.8rem;
    color: #94a3b8;
    background: rgba(15,23,42,.98);
    border-color: rgba(100,116,139,.7);
    font-size: .58rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .055em;
}
.pillan-frequency-row.is-marine { grid-template-columns: minmax(3.7rem,.55fr) minmax(6rem,.85fr) minmax(6rem,.85fr) minmax(10rem,1.9fr); }
.pillan-frequency-channel { color: #f8fafc; font-weight: 900; }
.pillan-frequency-value { color: var(--frequency-accent); font: 800 .7rem/1.2 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; }
.pillan-frequency-use { color: #cbd5e1; }
.pillan-frequency-footer {
    display: block;
    padding: .58rem .72rem .7rem;
    border-top: 1px solid rgba(100,116,139,.28);
    background: rgba(2,6,23,.48);
}
.pillan-frequency-source { min-width: 0; font-size: .58rem; line-height: 1.35; color: #94a3b8; }
.pillan-frequency-source a { color: var(--frequency-accent); font-weight: 800; text-decoration: none; }
.pillan-frequency-source a:hover { text-decoration: underline; }
.pillan-frequency-page-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.9rem;
    height: 1.9rem;
    border-radius: .5rem;
    color: #e2e8f0;
    background: rgba(51,65,85,.8);
    border: 1px solid rgba(100,116,139,.55);
}
.pillan-frequency-page-btn:hover:not(:disabled) { color: white; background: rgba(71,85,105,.98); }
.pillan-frequency-page-btn:disabled { opacity: .35; cursor: not-allowed; }
.pillan-frequency-page-btn svg { width: .88rem; height: .88rem; }
.light-mode .pillan-frequency-panel { color: #0f172a; background: rgba(248,250,252,.99); }
.light-mode .pillan-frequency-heading h3 { color: #0f172a; }
.light-mode .pillan-frequency-heading p,
.light-mode .pillan-frequency-source { color: #475569; }
.light-mode .pillan-frequency-header { background: linear-gradient(135deg, color-mix(in srgb, var(--frequency-accent) 14%, white 86%), rgba(248,250,252,.98)); }
.light-mode .pillan-frequency-header-page-label { color: #334155; }
.light-mode .pillan-frequency-notice,
.light-mode .pillan-frequency-row,
.light-mode .pillan-frequency-matrix-row { color: #334155; background: rgba(241,245,249,.95); }
.light-mode .pillan-frequency-row.is-header,
.light-mode .pillan-frequency-matrix-row.is-header { color: #475569; background: rgba(248,250,252,.99); }
.light-mode .pillan-frequency-matrix-group { background: rgba(226,232,240,.52); }
.light-mode .pillan-frequency-channel { color: #0f172a; }
.light-mode .pillan-frequency-use { color: #334155; }
.light-mode .pillan-frequency-footer { background: rgba(226,232,240,.72); }
@media (max-width: 900px) {
    .pillan-frequency-table.is-matrix.columns-4,
    .pillan-frequency-table.is-matrix.columns-3 { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 700px) {
    .pillan-frequency-panel,
    .pillan-frequency-panel[data-frequency-type="cb"],
    .pillan-frequency-panel[data-frequency-type="frs"],
    .pillan-frequency-panel[data-frequency-type="marine"] { width: calc(100vw - 1rem); max-height: 82vh; }
    .pillan-frequency-panel.is-collapsed { width: calc(100vw - 1rem); }
    .pillan-frequency-heading p { display: none; }
    .pillan-frequency-header { gap: .42rem; padding-inline: .48rem; }
    .pillan-frequency-controls { gap: .2rem; }
    .pillan-frequency-header-pagination { gap: .12rem; margin-right: .05rem; padding-right: .25rem; }
    .pillan-frequency-header-page-label { min-width: 2.25rem; }
    .pillan-frequency-row.is-marine { grid-template-columns: minmax(3.2rem,.5fr) minmax(5.5rem,.85fr) minmax(5.5rem,.85fr); }
    .pillan-frequency-row.is-marine .pillan-frequency-use { grid-column: 1 / -1; padding-top: .15rem; border-top: 1px dashed rgba(100,116,139,.35); }
    .pillan-frequency-row.is-header.is-marine .pillan-frequency-use { display: none; }
}
@media (max-width: 520px) {
    .pillan-frequency-table.is-matrix.columns-4,
    .pillan-frequency-table.is-matrix.columns-3 { grid-template-columns: 1fr; }
}

/* Contraste específico de los popups de Capacidad cartográfica de respuesta. */
.pillan-capacity-popup { color: #f8fafc !important; line-height: 1.4; }
.pillan-capacity-popup b { color: #67e8f9 !important; font-weight: 900; }
.pillan-capacity-name { color: #fde68a !important; font-weight: 800; }
.pillan-capacity-distance { color: #f8fafc !important; }
.pillan-capacity-source { color: #7dd3fc !important; font-size: .62rem; font-weight: 700; }
.light-mode .pillan-capacity-popup { color: #0f172a !important; }
.light-mode .pillan-capacity-popup b { color: #0369a1 !important; }
.light-mode .pillan-capacity-name { color: #92400e !important; }
.light-mode .pillan-capacity-distance { color: #0f172a !important; }
.light-mode .pillan-capacity-source { color: #075985 !important; }
