/* _content/Ayva.Network.Coverage/Components/ApSectorAdminPanel.razor.rz.scp.css */
/* ApSectorAdminPanel — operator curation of the RF link-planner AP inventory. */

.ap-panel[b-a5vyu20w5f] {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-lg);
    padding: var(--space-lg);
    backdrop-filter: blur(12px);
    color: var(--text-primary);
    font-family: var(--font-primary);
}

.ap-panel-header[b-a5vyu20w5f] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-lg);
    flex-wrap: wrap;
}

.ap-panel-title[b-a5vyu20w5f] {
    font-size: var(--font-lg);
    font-weight: var(--font-semibold);
    margin: 0 0 var(--space-xs) 0;
    color: var(--text-primary);
}

.ap-panel-subtitle[b-a5vyu20w5f] {
    margin: 0;
    max-width: 640px;
    color: var(--text-muted);
    font-size: var(--font-sm);
    line-height: 1.5;
}

.ap-sync-note[b-a5vyu20w5f] {
    margin: var(--space-md) 0;
    font-size: var(--font-xs);
    color: var(--text-muted);
}

.ap-sync-note code[b-a5vyu20w5f] {
    font-family: var(--font-mono);
    background: var(--bg-input);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-xs);
    padding: 1px var(--space-xs);
    color: var(--text-secondary);
}

/* Buttons */
.ap-btn[b-a5vyu20w5f] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-sm);
    border: none;
    border-radius: var(--radius-sm);
    padding: var(--space-sm) var(--space-md);
    font-size: var(--font-sm);
    font-weight: var(--font-semibold);
    font-family: var(--font-primary);
    cursor: pointer;
    transition: filter var(--transition-fast), box-shadow var(--transition-fast);
    min-height: 36px;
}

.ap-btn:disabled[b-a5vyu20w5f] {
    opacity: 0.6;
    cursor: not-allowed;
}

.ap-btn-sync[b-a5vyu20w5f] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-color);
    color: var(--text-primary);
}

.ap-btn-sync:hover:not(:disabled)[b-a5vyu20w5f] {
    border-color: var(--border-accent);
    box-shadow: var(--shadow-sm);
}

.ap-btn-save[b-a5vyu20w5f] {
    background: var(--accent-color);
    color: var(--text-inverse);
}

.ap-btn-save:hover:not(:disabled)[b-a5vyu20w5f] {
    filter: brightness(1.1);
    box-shadow: var(--shadow-accent);
}

/* Message */
.ap-message[b-a5vyu20w5f] {
    margin-bottom: var(--space-md);
    padding: var(--space-sm) var(--space-md);
    border-radius: var(--radius-sm);
    font-size: var(--font-sm);
}

.ap-message-success[b-a5vyu20w5f] {
    background: var(--success-bg);
    border: 1px solid var(--success-border);
    color: var(--success-text);
}

.ap-message-error[b-a5vyu20w5f] {
    background: var(--error-bg);
    border: 1px solid var(--error-border);
    color: var(--error-text);
}

.ap-message-info[b-a5vyu20w5f] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-color);
    color: var(--text-secondary);
}

/* States */
.ap-loading[b-a5vyu20w5f],
.ap-empty[b-a5vyu20w5f] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-sm);
    padding: var(--space-2xl) var(--space-lg);
    color: var(--text-muted);
    text-align: center;
}

.ap-empty-hint[b-a5vyu20w5f] {
    font-size: var(--font-sm);
}

.ap-spinner[b-a5vyu20w5f] {
    width: 28px;
    height: 28px;
    border: 3px solid var(--border-subtle);
    border-top-color: var(--accent-color);
    border-radius: var(--radius-full);
    animation: ap-spin-b-a5vyu20w5f 0.8s linear infinite;
}

.ap-spinner-sm[b-a5vyu20w5f] {
    width: 14px;
    height: 14px;
    border: 2px solid var(--border-subtle);
    border-top-color: var(--text-inverse);
    border-radius: var(--radius-full);
    animation: ap-spin-b-a5vyu20w5f 0.8s linear infinite;
}

@keyframes ap-spin-b-a5vyu20w5f {
    to { transform: rotate(360deg); }
}

/* Table */
.ap-table-wrap[b-a5vyu20w5f] {
    overflow-x: auto;
}

.ap-table[b-a5vyu20w5f] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-sm);
}

.ap-table thead th[b-a5vyu20w5f] {
    text-align: left;
    padding: var(--space-sm) var(--space-md);
    color: var(--text-secondary);
    font-weight: var(--font-semibold);
    font-size: var(--font-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border-bottom: 1px solid var(--border-color);
    white-space: nowrap;
}

.ap-table thead th.num[b-a5vyu20w5f],
.ap-table tbody td.num[b-a5vyu20w5f] {
    text-align: right;
    font-family: var(--font-mono);
}

.ap-table tbody td[b-a5vyu20w5f] {
    padding: var(--space-md);
    border-bottom: 1px solid var(--border-subtle);
    color: var(--text-primary);
    vertical-align: top;
}

.ap-table td.name[b-a5vyu20w5f] {
    font-weight: var(--font-medium);
}

.ap-table td.mono[b-a5vyu20w5f] {
    font-family: var(--font-mono);
    color: var(--text-muted);
    font-size: var(--font-xs);
}

.actions-col[b-a5vyu20w5f] {
    text-align: right;
    white-space: nowrap;
}

/* Badges */
.badge[b-a5vyu20w5f] {
    display: inline-block;
    padding: 2px var(--space-sm);
    border-radius: var(--radius-full);
    font-size: var(--font-xs);
    font-weight: var(--font-semibold);
    line-height: 1.4;
}

.badge-active.active-yes[b-a5vyu20w5f] {
    background: var(--success-bg);
    color: var(--success-text);
    border: 1px solid var(--success-border);
}

.badge-active.active-no[b-a5vyu20w5f] {
    background: var(--bg-elevated);
    color: var(--text-muted);
    border: 1px solid var(--border-color);
}

.badge-source.source-manual[b-a5vyu20w5f] {
    background: var(--success-bg);
    color: var(--success-text);
    border: 1px solid var(--success-border);
}

.badge-source.source-uispheading[b-a5vyu20w5f] {
    background: var(--bg-elevated);
    color: var(--text-secondary);
    border: 1px solid var(--border-color);
}

.badge-source.source-unknown[b-a5vyu20w5f] {
    background: var(--warning-bg);
    color: var(--warning-text);
    border: 1px solid var(--warning-border);
}

/* Edit grid */
.edit-cell[b-a5vyu20w5f] {
    min-width: 360px;
}

.edit-grid[b-a5vyu20w5f] {
    display: grid;
    grid-template-columns: repeat(3, minmax(80px, 1fr));
    gap: var(--space-sm);
}

.edit-field[b-a5vyu20w5f] {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
}

.edit-field > span[b-a5vyu20w5f] {
    font-size: var(--font-xs);
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.edit-field.edit-check[b-a5vyu20w5f] {
    flex-direction: row;
    align-items: center;
    gap: var(--space-xs);
    grid-column: span 1;
    align-self: end;
}

.edit-field.edit-check > span[b-a5vyu20w5f] {
    text-transform: none;
    letter-spacing: 0;
    font-size: var(--font-xs);
    color: var(--text-primary);
}

.edit-field.edit-notes[b-a5vyu20w5f] {
    grid-column: 1 / -1;
}

.ap-input[b-a5vyu20w5f] {
    background: var(--bg-input);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    padding: var(--space-xs) var(--space-sm);
    font-size: var(--font-sm);
    font-family: var(--font-mono);
    width: 100%;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

.ap-input:focus[b-a5vyu20w5f] {
    outline: none;
    border-color: var(--border-focus);
    box-shadow: var(--shadow-focus);
}

@media (max-width: 768px) {
    .edit-grid[b-a5vyu20w5f] {
        grid-template-columns: 1fr 1fr;
    }
}
/* _content/Ayva.Network.Coverage/Components/LidarDatasetAdminPanel.razor.rz.scp.css */
/* LidarDatasetAdminPanel — operator curation of the LIDAR dataset registry (W5.2). */

.ld-panel[b-prwr32dm6r] {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-lg);
    padding: var(--space-lg);
    backdrop-filter: blur(12px);
    color: var(--text-primary);
    font-family: var(--font-primary);
}

.ld-panel-header[b-prwr32dm6r] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-lg);
    flex-wrap: wrap;
}

.ld-panel-title[b-prwr32dm6r] {
    font-size: var(--font-lg);
    font-weight: var(--font-semibold);
    margin: 0 0 var(--space-xs) 0;
    color: var(--text-primary);
}

.ld-panel-subtitle[b-prwr32dm6r] {
    margin: 0;
    max-width: 640px;
    color: var(--text-muted);
    font-size: var(--font-sm);
    line-height: 1.5;
}

/* Buttons */
.ld-btn[b-prwr32dm6r] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-sm);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    padding: var(--space-sm) var(--space-md);
    font-size: var(--font-sm);
    font-family: var(--font-primary);
    background: var(--bg-input);
    color: var(--text-primary);
    cursor: pointer;
    transition: var(--transition-fast);
}

.ld-btn:hover:not(:disabled)[b-prwr32dm6r] {
    border-color: var(--accent-color);
    color: var(--accent-color);
}

.ld-btn:disabled[b-prwr32dm6r] {
    opacity: 0.5;
    cursor: not-allowed;
}

.ld-btn-primary[b-prwr32dm6r] {
    background: var(--accent-color);
    border-color: var(--accent-color);
    color: var(--bg-primary);
}

.ld-btn-primary:hover:not(:disabled)[b-prwr32dm6r] {
    color: var(--bg-primary);
    filter: brightness(1.1);
}

.ld-btn-danger:hover:not(:disabled)[b-prwr32dm6r] {
    border-color: var(--error-color);
    color: var(--error-color);
}

.ld-btn-sm[b-prwr32dm6r] {
    padding: var(--space-xs) var(--space-sm);
    font-size: var(--font-xs);
}

/* Messages */
.ld-message[b-prwr32dm6r] {
    margin: var(--space-md) 0;
    padding: var(--space-sm) var(--space-md);
    border-radius: var(--radius-sm);
    font-size: var(--font-sm);
    border: 1px solid var(--border-color);
}

.ld-message-success[b-prwr32dm6r] {
    border-color: var(--success-color);
    color: var(--success-color);
}

.ld-message-error[b-prwr32dm6r] {
    border-color: var(--error-color);
    color: var(--error-color);
}

.ld-message-info[b-prwr32dm6r] {
    color: var(--text-secondary);
}

/* Form */
.ld-form-card[b-prwr32dm6r] {
    margin: var(--space-md) 0;
    padding: var(--space-md);
    background: var(--bg-input);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-md);
}

.ld-form-title[b-prwr32dm6r] {
    margin: 0 0 var(--space-md) 0;
    font-size: var(--font-base);
    font-weight: var(--font-semibold);
}

.ld-form-grid[b-prwr32dm6r] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: var(--space-md);
}

.ld-field[b-prwr32dm6r] {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
    font-size: var(--font-xs);
    color: var(--text-muted);
}

.ld-field-wide[b-prwr32dm6r] {
    grid-column: span 4;
}

.ld-field input[b-prwr32dm6r],
.ld-field textarea[b-prwr32dm6r] {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: var(--font-primary);
    font-size: var(--font-sm);
    padding: var(--space-xs) var(--space-sm);
    transition: var(--transition-fast);
}

.ld-field input:focus[b-prwr32dm6r],
.ld-field textarea:focus[b-prwr32dm6r] {
    outline: none;
    border-color: var(--accent-color);
}

.ld-field-check[b-prwr32dm6r] {
    flex-direction: row;
    align-items: center;
    gap: var(--space-sm);
    color: var(--text-primary);
    font-size: var(--font-sm);
    align-self: end;
}

.ld-form-actions[b-prwr32dm6r] {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    margin-top: var(--space-md);
}

.ld-form-actions-spacer[b-prwr32dm6r] {
    flex: 1;
}

/* Probe result */
.ld-probe[b-prwr32dm6r] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-md);
    margin-top: var(--space-md);
    padding: var(--space-sm) var(--space-md);
    border-radius: var(--radius-sm);
    font-size: var(--font-xs);
    border: 1px solid var(--border-color);
    color: var(--text-secondary);
}

.ld-probe-ok[b-prwr32dm6r] {
    border-color: var(--success-color);
}

.ld-probe-fail[b-prwr32dm6r] {
    border-color: var(--error-color);
    color: var(--error-color);
}

.ld-probe-verdict-ok[b-prwr32dm6r] {
    color: var(--success-color);
}

.ld-probe-verdict-warn[b-prwr32dm6r] {
    color: var(--warning-color);
}

/* Table */
.ld-table-wrap[b-prwr32dm6r] {
    overflow-x: auto;
    margin-top: var(--space-md);
}

.ld-table[b-prwr32dm6r] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-sm);
}

.ld-table th[b-prwr32dm6r] {
    text-align: left;
    padding: var(--space-sm);
    color: var(--text-muted);
    font-size: var(--font-xs);
    font-weight: var(--font-semibold);
    border-bottom: 1px solid var(--border-color);
    white-space: nowrap;
}

.ld-table td[b-prwr32dm6r] {
    padding: var(--space-sm);
    border-bottom: 1px solid var(--border-subtle);
    vertical-align: top;
}

.ld-table th.num[b-prwr32dm6r],
.ld-table td.num[b-prwr32dm6r] {
    text-align: right;
}

.ld-row-disabled[b-prwr32dm6r] {
    opacity: 0.55;
}

.ld-name[b-prwr32dm6r] {
    font-weight: var(--font-semibold);
}

.ld-notes[b-prwr32dm6r] {
    color: var(--text-muted);
    font-size: var(--font-xs);
    margin-top: var(--space-xs);
    max-width: 320px;
}

.ld-key[b-prwr32dm6r] {
    font-family: var(--font-mono);
    font-size: var(--font-xs);
    background: var(--bg-input);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-xs);
    padding: 1px var(--space-xs);
    color: var(--text-secondary);
}

.ld-bounds[b-prwr32dm6r] {
    font-family: var(--font-mono);
    font-size: var(--font-xs);
    white-space: nowrap;
}

.ld-status[b-prwr32dm6r] {
    font-size: var(--font-xs);
    font-weight: var(--font-semibold);
    white-space: nowrap;
}

.ld-status-on[b-prwr32dm6r] {
    color: var(--success-color);
}

.ld-status-off[b-prwr32dm6r] {
    color: var(--text-muted);
}

.actions-col[b-prwr32dm6r] {
    white-space: nowrap;
    text-align: right;
}

.actions-col .ld-btn[b-prwr32dm6r] {
    margin-left: var(--space-xs);
}

/* Loading / empty */
.ld-loading[b-prwr32dm6r] {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    padding: var(--space-lg);
    color: var(--text-muted);
}

.ld-spinner[b-prwr32dm6r] {
    width: 16px;
    height: 16px;
    border: 2px solid var(--border-color);
    border-top-color: var(--accent-color);
    border-radius: 50%;
    animation: ld-spin-b-prwr32dm6r 0.8s linear infinite;
}

@keyframes ld-spin-b-prwr32dm6r {
    to { transform: rotate(360deg); }
}

.ld-empty[b-prwr32dm6r] {
    padding: var(--space-lg);
    text-align: center;
    color: var(--text-muted);
    font-size: var(--font-sm);
}

.ld-empty-hint[b-prwr32dm6r] {
    font-size: var(--font-xs);
}

/* Responsive */
@media (max-width: 768px) {
    .ld-form-grid[b-prwr32dm6r] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ld-field-wide[b-prwr32dm6r] {
        grid-column: span 2;
    }
}

@media (max-width: 640px) {
    .ld-form-grid[b-prwr32dm6r] {
        grid-template-columns: 1fr;
    }

    .ld-field-wide[b-prwr32dm6r] {
        grid-column: span 1;
    }
}
/* _content/Ayva.Network.Coverage/Components/SharedAnalysisReport.razor.rz.scp.css */
/* Report body styles — extracted from SharedAnalysis.razor.css
   (2026-08-06 T6): CSS isolation scopes rules to the component
   that DECLARES the markup, so these must live with
   SharedAnalysisReport.razor or the whole report renders
   unstyled with no build error. */

/* Geocoded endpoints render their label as the street address
   (owner 2026-08-06 — addresses publish on reports). */
.endpoint-name.endpoint-address[b-b0kqmin1dc] {
    font-weight: 500;
    color: var(--text-secondary, #cbd5e1);
}

.endpoint-map-link[b-b0kqmin1dc] {
    margin-left: 6px;
    color: var(--accent-color, #6366f1);
    text-decoration: none;
    border-bottom: 1px dotted var(--accent-color, #6366f1);
}

.endpoint-map-link:hover[b-b0kqmin1dc] {
    border-bottom-style: solid;
}

/* Viability Banner */
.shared-viability[b-b0kqmin1dc] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 12px 20px;
    border-radius: var(--radius-md, 8px);
    margin-bottom: 20px;
    font-family: var(--font-mono, monospace);
}

.shared-viability.viability-excellent[b-b0kqmin1dc] { background: var(--success-bg, rgba(16, 185, 129, 0.15)); border: 1px solid var(--success-border, rgba(16, 185, 129, 0.3)); }
.shared-viability.viability-good[b-b0kqmin1dc] { background: var(--success-bg, rgba(16, 185, 129, 0.15)); border: 1px solid var(--success-border, rgba(16, 185, 129, 0.3)); }
.shared-viability.viability-marginal[b-b0kqmin1dc] { background: var(--warning-bg, rgba(245, 158, 11, 0.15)); border: 1px solid var(--warning-border, rgba(245, 158, 11, 0.3)); }
.shared-viability.viability-notviable[b-b0kqmin1dc] { background: var(--error-bg, rgba(239, 68, 68, 0.15)); border: 1px solid var(--error-border, rgba(239, 68, 68, 0.3)); }

/* Raise-to-clear note directly under the banner — the actionable number a
   survey needs, so it must not hide in the statistics grid. */
.shared-clearance-note[b-b0kqmin1dc] {
    margin: -8px 0 16px;
    padding: 10px 14px;
    border: 1px solid var(--warning-border, rgba(245, 158, 11, 0.3));
    border-radius: var(--radius-sm, 6px);
    background: var(--warning-bg, rgba(245, 158, 11, 0.08));
    color: var(--text-secondary, #cbd5e1);
    font-size: 13px;
}
.shared-clearance-note strong[b-b0kqmin1dc] { color: var(--warning-color, #f59e0b); }

.viability-qualifier[b-b0kqmin1dc] {
    display: block;
    font-size: 10px;
    text-transform: none;
    letter-spacing: normal;
    color: var(--text-muted, #94a3b8);
    font-weight: 400;
}

.viability-label[b-b0kqmin1dc] {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-muted, #94a3b8);
}

.viability-value[b-b0kqmin1dc] {
    font-size: 18px;
    font-weight: 700;
}

.viability-excellent .viability-value[b-b0kqmin1dc] { color: var(--success-color, #10b981); }
.viability-good .viability-value[b-b0kqmin1dc] { color: var(--success-text, #34d399); }
.viability-marginal .viability-value[b-b0kqmin1dc] { color: var(--warning-color, #f59e0b); }
.viability-notviable .viability-value[b-b0kqmin1dc] { color: var(--error-color, #ef4444); }

.viability-margin[b-b0kqmin1dc] {
    margin-left: auto;
    font-size: 13px;
    color: var(--text-secondary, #cbd5e1);
}

/* Provenance badges (W2.5) */
.shared-provenance[b-b0kqmin1dc] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 20px;
}

.prov-badge[b-b0kqmin1dc] {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: var(--radius-sm, 4px);
    font-size: 11px;
    font-family: var(--font-mono, monospace);
    letter-spacing: 0.03em;
}

.prov-badge.prov-real[b-b0kqmin1dc] {
    background: var(--success-bg, rgba(16, 185, 129, 0.15));
    border: 1px solid var(--success-border, rgba(16, 185, 129, 0.3));
    color: var(--success-text, #34d399);
}

.prov-badge.prov-synthetic[b-b0kqmin1dc] {
    background: var(--warning-bg, rgba(245, 158, 11, 0.15));
    border: 1px solid var(--warning-border, rgba(245, 158, 11, 0.3));
    color: var(--warning-color, #f59e0b);
}

.prov-badge.prov-source[b-b0kqmin1dc],
.prov-badge.prov-coverage[b-b0kqmin1dc] {
    background: var(--bg-secondary, rgba(30, 41, 59, 0.8));
    border: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.15));
    color: var(--text-secondary, #cbd5e1);
}

.prov-note[b-b0kqmin1dc] {
    font-size: 11px;
    color: var(--warning-color, #f59e0b);
    flex-basis: 100%;
}

/* Terrain cross-section (W2.5) */
.shared-cross-section img[b-b0kqmin1dc] {
    width: 100%;
    display: block;
    border-radius: var(--radius-sm, 4px);
}

/* Screenshot */
.shared-screenshot[b-b0kqmin1dc] {
    margin-bottom: 20px;
    border-radius: var(--radius-md, 8px);
    overflow: hidden;
    border: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.15));
}

.shared-screenshot img[b-b0kqmin1dc] {
    width: 100%;
    display: block;
}

/* Grid */
.shared-grid[b-b0kqmin1dc] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    margin-bottom: 16px;
}

/* Cards */
.shared-card[b-b0kqmin1dc] {
    background: var(--bg-secondary, rgba(30, 41, 59, 0.8));
    border: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.15));
    border-radius: var(--radius-md, 8px);
    padding: 16px;
}

.shared-card.full-width[b-b0kqmin1dc] {
    margin-bottom: 16px;
}

.shared-card-title[b-b0kqmin1dc] {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--accent-color-light, #a5b4fc);
    margin: 0 0 12px;
    font-weight: 600;
}

/* Endpoints */
.shared-endpoints[b-b0kqmin1dc] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.shared-endpoint[b-b0kqmin1dc] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    flex: 1;
}

.endpoint-role[b-b0kqmin1dc] {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    font-weight: 700;
    flex-shrink: 0;
    margin-top: 2px;
}

.endpoint-role.source[b-b0kqmin1dc] { background: var(--accent-color-20, rgba(99, 102, 241, 0.2)); color: var(--accent-color, #6366f1); }
.endpoint-role.target[b-b0kqmin1dc] { background: var(--success-color-20, rgba(16, 185, 129, 0.2)); color: var(--success-color, #10b981); }

.endpoint-info[b-b0kqmin1dc] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.endpoint-name[b-b0kqmin1dc] {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary, #f8fafc);
}

.endpoint-coords[b-b0kqmin1dc] {
    font-size: 11px;
    font-family: var(--font-mono, monospace);
    color: var(--text-muted, #94a3b8);
}

.endpoint-height[b-b0kqmin1dc] {
    font-size: 11px;
    color: var(--text-muted, #94a3b8);
}

.shared-endpoint-arrow[b-b0kqmin1dc] {
    flex-shrink: 0;
}

.shared-equipment[b-b0kqmin1dc] {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.1));
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.equip-item[b-b0kqmin1dc] {
    display: flex;
    justify-content: space-between;
    font-size: 12px;
}

.equip-label[b-b0kqmin1dc] { color: var(--text-muted, #94a3b8); }
.equip-value[b-b0kqmin1dc] { color: var(--text-secondary, #cbd5e1); font-family: var(--font-mono, monospace); }

/* Metrics */
.shared-metrics[b-b0kqmin1dc] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
}

.metric-item[b-b0kqmin1dc] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.metric-label[b-b0kqmin1dc] {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-muted, #94a3b8);
}

.metric-value[b-b0kqmin1dc] {
    font-size: 18px;
    font-weight: 600;
    font-family: var(--font-mono, monospace);
    color: var(--text-primary, #f8fafc);
}

.metric-value.highlight[b-b0kqmin1dc] {
    color: var(--accent-color, #6366f1);
}

.metric-unit[b-b0kqmin1dc] {
    font-size: 10px;
    color: var(--text-muted, #94a3b8);
}

/* Link Budget Table */
.shared-budget-table[b-b0kqmin1dc] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

.shared-budget-table th[b-b0kqmin1dc] {
    text-align: left;
    padding: 8px 12px;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-muted, #94a3b8);
    border-bottom: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.15));
    font-weight: 600;
}

.shared-budget-table td[b-b0kqmin1dc] {
    padding: 6px 12px;
    border-bottom: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.08));
    color: var(--text-secondary, #cbd5e1);
}

.shared-budget-table .value-col[b-b0kqmin1dc] {
    text-align: right;
    font-family: var(--font-mono, monospace);
}

.shared-budget-table .gain-row .value-col[b-b0kqmin1dc] { color: var(--success-text, #34d399); }
.shared-budget-table .loss-row .value-col[b-b0kqmin1dc] { color: var(--error-text, #f87171); }
/* Zero / non-finite cells: no sign, no gain/loss color (a red "-0.0" reads
   as a defect). Equal specificity — must stay AFTER the row rules. */
.shared-budget-table .value-col.neutral[b-b0kqmin1dc] { color: var(--text-muted, #94a3b8); }

.shared-budget-table .total-row td[b-b0kqmin1dc] {
    border-top: 2px solid var(--accent-color-30, rgba(99, 102, 241, 0.3));
    border-bottom: none;
    padding-top: 10px;
    color: var(--accent-color, #6366f1);
}

/* Path Stats */
.shared-path-stats[b-b0kqmin1dc] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
}

.stat-item[b-b0kqmin1dc] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.stat-label[b-b0kqmin1dc] {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-muted, #94a3b8);
}

.stat-value[b-b0kqmin1dc] {
    font-size: 14px;
    font-family: var(--font-mono, monospace);
    color: var(--text-primary, #f8fafc);
}

/* Responsive */
@media (max-width: 640px) {
    .shared-grid[b-b0kqmin1dc] { grid-template-columns: 1fr; }
    .shared-endpoints[b-b0kqmin1dc] { flex-direction: column; }
    .shared-endpoint-arrow[b-b0kqmin1dc] { transform: rotate(90deg); }
    .shared-path-stats[b-b0kqmin1dc] { grid-template-columns: repeat(2, 1fr); }
    .shared-viability[b-b0kqmin1dc] { flex-wrap: wrap; }
}

/* ── T6 2026-08-06 additions ─────────────────────────────────────────── */
.shared-table-scroll[b-b0kqmin1dc] { overflow-x: auto; }

.shared-video video[b-b0kqmin1dc] {
    width: 100%;
    max-height: 480px;
    border-radius: var(--radius-md, 10px);
    background: #000;
}

.video-status[b-b0kqmin1dc] {
    color: var(--text-secondary, rgba(255, 255, 255, 0.65));
    font-size: 0.9rem;
    margin: 0.25rem 0;
}
.video-status.video-failed[b-b0kqmin1dc] { color: var(--warning-color, #fbbf24); }

.shared-screenshot .shared-card-title[b-b0kqmin1dc] {
    margin: 0 0 0.5rem;
}
/* _content/Ayva.Network.Coverage/Components/WeatherFadePanel.razor.rz.scp.css */
/* WeatherFadePanel — body-only interior (the report component owns the
   card shell). Print + 640px rules at the bottom. */

.wf-panel[b-x9cfsonqi6] {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

/* Condition segmented control (buttons, not radios — native radio groups
   with one name would span every hidden group tab in the DOM). */
.wf-conditions[b-x9cfsonqi6] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.wf-cond-btn[b-x9cfsonqi6] {
    padding: 6px 12px;
    font-size: 12px;
    border: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.2));
    border-radius: var(--radius-sm, 6px);
    background: var(--bg-secondary, rgba(30, 41, 59, 0.6));
    color: var(--text-secondary, #cbd5e1);
    cursor: pointer;
    transition: var(--transition-fast, all 0.15s ease);
}

.wf-cond-btn:hover[b-x9cfsonqi6] {
    border-color: var(--accent-color, #6366f1);
}

.wf-cond-btn.active[b-x9cfsonqi6] {
    background: var(--accent-color-10, rgba(99, 102, 241, 0.15));
    border-color: var(--accent-color, #6366f1);
    color: var(--text-primary, #f8fafc);
}

.wf-cond-btn:focus-visible[b-x9cfsonqi6],
.wf-fog-btn:focus-visible[b-x9cfsonqi6] {
    outline: 2px solid var(--accent-color, #6366f1);
    outline-offset: 2px;
}

/* Fog presets */
.wf-fog-presets[b-x9cfsonqi6] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.wf-fog-btn[b-x9cfsonqi6] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    padding: 6px 12px;
    border: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.2));
    border-radius: var(--radius-sm, 6px);
    background: var(--bg-secondary, rgba(30, 41, 59, 0.6));
    color: var(--text-secondary, #cbd5e1);
    cursor: pointer;
    transition: var(--transition-fast, all 0.15s ease);
}

.wf-fog-btn.active[b-x9cfsonqi6] {
    background: var(--accent-color-10, rgba(99, 102, 241, 0.15));
    border-color: var(--accent-color, #6366f1);
    color: var(--text-primary, #f8fafc);
}

.wf-fog-btn .fog-name[b-x9cfsonqi6] { font-size: 12px; font-weight: 600; }
.wf-fog-btn .fog-vis[b-x9cfsonqi6] { font-size: 10px; color: var(--text-muted, #94a3b8); }

/* Slider */
.wf-slider-row input[type="range"][b-x9cfsonqi6] {
    width: 100%;
    min-height: 44px;   /* touch target */
    accent-color: var(--accent-color, #6366f1);
}

.wf-slider-row input[type="range"]:focus-visible[b-x9cfsonqi6] {
    outline: 2px solid var(--accent-color, #6366f1);
    outline-offset: 2px;
}

.wf-axis-notes[b-x9cfsonqi6] {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    font-size: 10px;
    font-family: var(--font-mono, monospace);
    color: var(--text-muted, #94a3b8);
}

.wf-sustained-tick[b-x9cfsonqi6] {
    color: var(--warning-color, #f59e0b);
}

.wf-burst-note[b-x9cfsonqi6] {
    margin: 4px 0 0;
    font-size: 11px;
    color: var(--text-muted, #94a3b8);
}

/* Readout */
.wf-readout[b-x9cfsonqi6] {
    display: flex;
    flex-wrap: wrap;
    gap: 16px 32px;
}

.wf-metric[b-x9cfsonqi6] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.wf-metric-label[b-x9cfsonqi6] {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted, #94a3b8);
}

.wf-metric-value[b-x9cfsonqi6] {
    font-size: 14px;
    font-weight: 600;
    font-family: var(--font-mono, monospace);
    color: var(--text-primary, #f8fafc);
}

/* Never color-only (WCAG 1.4.1) — the text state rides with the class.
   Negative margin is "On backup" (degraded, amber), NOT an outage (red) —
   the primary hands off to the 5 GHz backup (owner 2026-08-07). */
.wf-metric-value.margin-ok[b-x9cfsonqi6] { color: var(--success-text, #34d399); }
.wf-metric-value.margin-marginal[b-x9cfsonqi6] { color: var(--warning-color, #f59e0b); }
.wf-metric-value.margin-backup[b-x9cfsonqi6] { color: var(--warning-color, #f59e0b); }

/* Chart */
.wf-chart[b-x9cfsonqi6] {
    width: 100%;
    height: 180px;
    border: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.12));
    border-radius: var(--radius-sm, 6px);
    background: var(--bg-secondary, rgba(15, 23, 42, 0.4));
}

.wf-curve[b-x9cfsonqi6] {
    stroke: var(--accent-color, #6366f1);
    stroke-width: 2;
    vector-effect: non-scaling-stroke;
}

.wf-zero-line[b-x9cfsonqi6] {
    stroke: var(--warning-color, #f59e0b);
    stroke-width: 1;
    stroke-dasharray: 4 3;
    vector-effect: non-scaling-stroke;
}

.wf-sustained-line[b-x9cfsonqi6] {
    stroke: var(--warning-color, #f59e0b);
    stroke-width: 1;
    stroke-dasharray: 2 4;
    vector-effect: non-scaling-stroke;
}

.wf-chart-wrap[b-x9cfsonqi6] { position: relative; }

.wf-backup-region[b-x9cfsonqi6] {
    fill: var(--warning-color, #f59e0b);
    opacity: 0.1;
}

/* The zero line is at a fixed relative height (Y domain always
   [-0.25·max, max]) — the bottom ~23% of the chart IS the backup band,
   so an absolutely-positioned label always lands inside it. */
.wf-backup-label[b-x9cfsonqi6] {
    position: absolute;
    left: 10px;
    bottom: 6px;
    font-size: 10px;
    letter-spacing: 0.03em;
    color: var(--warning-color, #f59e0b);
    pointer-events: none;
}

.wf-dot[b-x9cfsonqi6] {
    fill: var(--accent-color, #6366f1);
    stroke: var(--text-primary, #f8fafc);
    stroke-width: 1.5;
}

.wf-chart-caption[b-x9cfsonqi6] {
    margin: 0;
    font-size: 11px;
    color: var(--text-muted, #94a3b8);
}

/* Callout + notes */
.wf-callout[b-x9cfsonqi6] {
    margin: 0;
    font-size: 13px;
    color: var(--success-text, #34d399);
}

.wf-callout.warn[b-x9cfsonqi6] {
    color: var(--warning-color, #f59e0b);
}

.wf-inert-note[b-x9cfsonqi6] {
    margin: 0;
    font-size: 12px;
    color: var(--text-muted, #94a3b8);
}

.wf-provenance[b-x9cfsonqi6] {
    margin: 0;
    font-size: 10px;
    color: var(--text-muted, #94a3b8);
    font-style: italic;
}

@media (max-width: 640px) {
    .wf-readout[b-x9cfsonqi6] { flex-direction: column; gap: 8px; }
    .wf-conditions[b-x9cfsonqi6], .wf-fog-presets[b-x9cfsonqi6] { justify-content: stretch; }
    .wf-cond-btn[b-x9cfsonqi6] { flex: 1 1 auto; }
}

/* Reports get printed — keep the verdict, drop the controls. The curve
   colors must survive a white page (print strips backgrounds; the stroke
   colors are explicit so the polyline stays visible). */
@media print {
    .wf-conditions[b-x9cfsonqi6], .wf-fog-presets[b-x9cfsonqi6], .wf-slider-row input[type="range"][b-x9cfsonqi6] { display: none; }
    .wf-chart[b-x9cfsonqi6] { background: none; }
}
/* _content/Ayva.Network.Coverage/Pages/DatasetRegistry.razor.rz.scp.css */
/* DatasetRegistry page (/rf-tools/datasets) — W5.2. */

.ds-root[b-g9bghpqsbp] {
    max-width: 1200px;
    margin: 0 auto;
    padding: var(--space-xl) var(--space-lg);
    font-family: var(--font-primary);
    color: var(--text-primary);
}

.ds-header[b-g9bghpqsbp] {
    margin-bottom: var(--space-lg);
}

.ds-brand[b-g9bghpqsbp] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-sm);
    color: var(--text-muted);
    font-size: var(--font-sm);
    margin-bottom: var(--space-sm);
}

.ds-title[b-g9bghpqsbp] {
    margin: 0 0 var(--space-xs) 0;
    font-size: var(--font-2xl);
    font-weight: var(--font-bold);
}

.ds-subtitle[b-g9bghpqsbp] {
    margin: 0;
    color: var(--text-muted);
    font-size: var(--font-sm);
    max-width: 640px;
    line-height: 1.5;
}
/* _content/Ayva.Network.Coverage/Pages/LinkPlanner.razor.rz.scp.css */
/* LinkPlanner — staff RF link planner page. Glassmorphism dark theme. */

.planner-root[b-loejnfszcs] {
    min-height: 100vh;
    background: var(--bg-primary);
    color: var(--text-primary);
    font-family: var(--font-primary);
    padding: var(--space-xl);
    max-width: 1200px;
    margin: 0 auto;
}

/* Header */
.planner-header[b-loejnfszcs] {
    margin-bottom: var(--space-xl);
    padding-bottom: var(--space-lg);
    border-bottom: 1px solid var(--border-subtle);
}

.planner-brand[b-loejnfszcs] {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    color: var(--accent-color);
    font-family: var(--font-family);
    font-size: var(--font-sm);
    font-weight: var(--font-semibold);
    margin-bottom: var(--space-xs);
}

.planner-title[b-loejnfszcs] {
    font-size: var(--font-2xl);
    font-weight: var(--font-bold);
    margin: 0 0 var(--space-xs) 0;
    color: var(--text-primary);
}

.planner-subtitle[b-loejnfszcs] {
    margin: 0;
    max-width: 720px;
    color: var(--text-muted);
    font-size: var(--font-sm);
    line-height: 1.5;
}

/* Cards */
.planner-card[b-loejnfszcs] {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-lg);
    padding: var(--space-lg);
    margin-bottom: var(--space-lg);
    backdrop-filter: blur(12px);
}

.planner-card.full-width[b-loejnfszcs] {
    width: 100%;
}

.planner-card-title[b-loejnfszcs] {
    font-size: var(--font-lg);
    font-weight: var(--font-semibold);
    margin: 0 0 var(--space-md) 0;
    color: var(--text-primary);
}

/* Form */
.planner-form-grid[b-loejnfszcs] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-md);
    align-items: end;
}

.form-field[b-loejnfszcs] {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
}

.form-field label[b-loejnfszcs] {
    font-size: var(--font-xs);
    color: var(--text-secondary);
    font-weight: var(--font-medium);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.form-field label .optional[b-loejnfszcs] {
    text-transform: none;
    letter-spacing: 0;
    color: var(--text-muted);
    font-weight: var(--font-normal);
}

.planner-input[b-loejnfszcs] {
    background: var(--bg-input);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    padding: var(--space-sm) var(--space-md);
    font-size: var(--font-base);
    font-family: var(--font-mono);
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

.planner-input:focus[b-loejnfszcs] {
    outline: none;
    border-color: var(--border-focus);
    box-shadow: var(--shadow-focus);
}

.planner-btn[b-loejnfszcs] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-sm);
    background: var(--accent-color);
    color: var(--text-inverse);
    border: none;
    border-radius: var(--radius-sm);
    padding: var(--space-sm) var(--space-lg);
    font-size: var(--font-base);
    font-weight: var(--font-semibold);
    font-family: var(--font-primary);
    cursor: pointer;
    transition: filter var(--transition-fast), box-shadow var(--transition-fast);
    min-height: 42px;
}

.planner-btn:hover:not(:disabled)[b-loejnfszcs] {
    filter: brightness(1.1);
    box-shadow: var(--shadow-accent);
}

.planner-btn:disabled[b-loejnfszcs] {
    opacity: 0.6;
    cursor: not-allowed;
}

.planner-error-banner[b-loejnfszcs] {
    margin-top: var(--space-md);
    padding: var(--space-sm) var(--space-md);
    background: var(--error-bg);
    border: 1px solid var(--error-border);
    color: var(--error-text);
    border-radius: var(--radius-sm);
    font-size: var(--font-sm);
}

/* Loading */
.planner-loading[b-loejnfszcs] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-md);
    padding: var(--space-3xl) 0;
    color: var(--text-muted);
}

.planner-spinner[b-loejnfszcs] {
    width: 32px;
    height: 32px;
    border: 3px solid var(--border-subtle);
    border-top-color: var(--accent-color);
    border-radius: var(--radius-full);
    animation: planner-spin-b-loejnfszcs 0.8s linear infinite;
}

.planner-spinner-sm[b-loejnfszcs] {
    width: 14px;
    height: 14px;
    border: 2px solid var(--border-subtle);
    border-top-color: var(--text-inverse);
    border-radius: var(--radius-full);
    animation: planner-spin-b-loejnfszcs 0.8s linear infinite;
}

@keyframes planner-spin-b-loejnfszcs {
    to { transform: rotate(360deg); }
}

/* Verdict banner */
.planner-verdict[b-loejnfszcs] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-lg);
    flex-wrap: wrap;
    padding: var(--space-lg);
    border-radius: var(--radius-lg);
    margin-bottom: var(--space-lg);
    border: 1px solid var(--border-color);
}

.planner-verdict.verdict-yes[b-loejnfszcs] {
    background: var(--success-bg);
    border-color: var(--success-border);
}

.planner-verdict.verdict-no[b-loejnfszcs] {
    background: var(--error-bg);
    border-color: var(--error-border);
}

.verdict-main[b-loejnfszcs] {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
}

.verdict-label[b-loejnfszcs] {
    font-size: var(--font-xs);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-secondary);
}

.verdict-value[b-loejnfszcs] {
    font-size: var(--font-xl);
    font-weight: var(--font-bold);
    color: var(--text-primary);
}

.verdict-meta[b-loejnfszcs] {
    display: flex;
    gap: var(--space-xl);
}

.verdict-meta-item[b-loejnfszcs] {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
}

.meta-label[b-loejnfszcs] {
    font-size: var(--font-xs);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-secondary);
}

.meta-value[b-loejnfszcs] {
    font-size: var(--font-base);
    font-weight: var(--font-semibold);
    color: var(--text-primary);
}

/* Table */
.planner-table[b-loejnfszcs] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-sm);
}

.planner-table thead th[b-loejnfszcs] {
    text-align: left;
    padding: var(--space-sm) var(--space-md);
    color: var(--text-secondary);
    font-weight: var(--font-semibold);
    font-size: var(--font-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border-bottom: 1px solid var(--border-color);
    white-space: nowrap;
}

.planner-table thead th.num[b-loejnfszcs],
.planner-table tbody td.num[b-loejnfszcs] {
    text-align: right;
    font-family: var(--font-mono);
}

.planner-table tbody td[b-loejnfszcs] {
    padding: var(--space-sm) var(--space-md);
    border-bottom: 1px solid var(--border-subtle);
    color: var(--text-primary);
    vertical-align: middle;
}

.planner-table tbody tr:hover[b-loejnfszcs] {
    background: var(--bg-hover);
}

.planner-table td.rank[b-loejnfszcs] {
    color: var(--text-muted);
    font-family: var(--font-mono);
}

.planner-table td.name[b-loejnfszcs] {
    font-weight: var(--font-medium);
}

.azimuth-cell[b-loejnfszcs] {
    white-space: nowrap;
}

/* Badges */
.badge[b-loejnfszcs] {
    display: inline-block;
    padding: 2px var(--space-sm);
    border-radius: var(--radius-full);
    font-size: var(--font-xs);
    font-weight: var(--font-semibold);
    line-height: 1.4;
}

.badge-conf[b-loejnfszcs] {
    margin-left: var(--space-xs);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.badge-conf.conf-high[b-loejnfszcs] {
    background: var(--success-bg);
    color: var(--success-text);
    border: 1px solid var(--success-border);
}

.badge-conf.conf-low[b-loejnfszcs] {
    background: var(--warning-bg);
    color: var(--warning-text);
    border: 1px solid var(--warning-border);
}

.badge-los.los-clear[b-loejnfszcs] {
    background: var(--success-bg);
    color: var(--success-text);
    border: 1px solid var(--success-border);
}

.badge-los.los-blocked[b-loejnfszcs] {
    background: var(--error-bg);
    color: var(--error-text);
    border: 1px solid var(--error-border);
}

.badge-viability.viability-excellent[b-loejnfszcs] {
    background: var(--success-bg);
    color: var(--success-text);
    border: 1px solid var(--success-border);
}

.badge-viability.viability-good[b-loejnfszcs] {
    background: var(--success-bg);
    color: var(--success-text);
    border: 1px solid var(--success-border);
    opacity: 0.85;
}

.badge-viability.viability-marginal[b-loejnfszcs] {
    background: var(--warning-bg);
    color: var(--warning-text);
    border: 1px solid var(--warning-border);
}

.badge-viability.viability-notviable[b-loejnfszcs] {
    background: var(--error-bg);
    color: var(--error-text);
    border: 1px solid var(--error-border);
}

/* Empty states */
.planner-empty[b-loejnfszcs] {
    padding: var(--space-xl);
    text-align: center;
    color: var(--text-muted);
}

.planner-empty-hint[b-loejnfszcs] {
    font-size: var(--font-sm);
    margin-top: var(--space-sm);
}

.planner-empty-state[b-loejnfszcs] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-md);
    padding: var(--space-3xl) var(--space-xl);
    color: var(--text-muted);
    text-align: center;
    background: var(--bg-card);
    border: 1px dashed var(--border-color);
    border-radius: var(--radius-lg);
}

.planner-map-note[b-loejnfszcs] {
    margin: var(--space-md) 0 0 0;
    font-size: var(--font-xs);
    color: var(--text-muted);
    font-style: italic;
}

.planner-admin-section[b-loejnfszcs] {
    margin-top: var(--space-2xl);
    padding-top: var(--space-xl);
    border-top: 1px solid var(--border-subtle);
}

/* Responsive */
@media (max-width: 768px) {
    .planner-form-grid[b-loejnfszcs] {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 640px) {
    .planner-form-grid[b-loejnfszcs] {
        grid-template-columns: 1fr;
    }
    .planner-verdict[b-loejnfszcs] {
        flex-direction: column;
        align-items: flex-start;
    }
}
/* _content/Ayva.Network.Coverage/Pages/SharedAnalysis.razor.rz.scp.css */
/* SharedAnalysis — Public shared analysis page matching HUD aesthetic */

.shared-root[b-mrl1uaoivp] {
    min-height: 100vh;
    background: var(--bg-primary, rgba(15, 23, 42, 0.95));
    color: var(--text-primary, #f8fafc);
    font-family: var(--font-primary, -apple-system, BlinkMacSystemFont, sans-serif);
    padding: 24px;
    max-width: 900px;
    margin: 0 auto;
}

/* Group reports are data-dense (comparison table + tab strip) — wider
   column than single shares, whose fixed-width PNGs would soften if
   upscaled past ~900. Real px now that ShareLayout drops .viewport-zoom. */
.shared-root.group-report[b-mrl1uaoivp] { max-width: 1100px; }

/* Loading */
.shared-loading[b-mrl1uaoivp] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    gap: 16px;
    color: var(--text-muted, #94a3b8);
}

.shared-spinner[b-mrl1uaoivp] {
    width: 32px;
    height: 32px;
    border: 3px solid var(--border-subtle, rgba(148, 163, 184, 0.15));
    border-top-color: var(--accent-color, #6366f1);
    border-radius: 50%;
    animation: spin-b-mrl1uaoivp 0.8s linear infinite;
}

@keyframes spin-b-mrl1uaoivp {
    to { transform: rotate(360deg); }
}

/* Error */
.shared-error[b-mrl1uaoivp] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    gap: 16px;
    color: var(--text-muted, #94a3b8);
    text-align: center;
}

.shared-error h2[b-mrl1uaoivp] {
    color: var(--text-primary, #f8fafc);
    font-size: 24px;
    margin: 0;
}

.shared-error p[b-mrl1uaoivp] {
    margin: 0;
    max-width: 400px;
}

/* Expired view (W2.5 polish) */
.shared-expired .expired-brand[b-mrl1uaoivp] {
    margin-bottom: 8px;
}

.shared-expired .expired-when[b-mrl1uaoivp] {
    color: var(--text-secondary, #cbd5e1);
}

.shared-expired .expired-when strong[b-mrl1uaoivp] {
    color: var(--warning-color, #f59e0b);
    font-weight: 600;
}

.shared-expired .expired-why[b-mrl1uaoivp] {
    max-width: 460px;
    line-height: 1.5;
}

.shared-expired .expired-actions[b-mrl1uaoivp] {
    margin-top: 8px;
    padding: 10px 16px;
    border: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.15));
    border-radius: var(--radius-md, 8px);
    background: var(--bg-secondary, rgba(30, 41, 59, 0.8));
}

.shared-expired .expired-hint[b-mrl1uaoivp] {
    font-size: 12px;
    color: var(--text-secondary, #cbd5e1);
}

/* Not-found view (W4) — parity with the expired card */
.shared-notfound .notfound-brand[b-mrl1uaoivp] {
    margin-bottom: 8px;
}

.shared-notfound .notfound-why[b-mrl1uaoivp] {
    max-width: 460px;
    line-height: 1.5;
}

.shared-notfound .notfound-actions[b-mrl1uaoivp] {
    margin-top: 8px;
    padding: 10px 16px;
    border: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.15));
    border-radius: var(--radius-md, 8px);
    background: var(--bg-secondary, rgba(30, 41, 59, 0.8));
}

.shared-notfound .notfound-hint[b-mrl1uaoivp] {
    font-size: 12px;
    color: var(--text-secondary, #cbd5e1);
}

/* Header */
.shared-header[b-mrl1uaoivp] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 20px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.15));
}

.shared-brand[b-mrl1uaoivp] {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--accent-color, #6366f1);
    font-family: var(--font-display, 'Comfortaa', sans-serif);
    font-size: 14px;
    font-weight: 600;
    margin-bottom: 4px;
}

.shared-title[b-mrl1uaoivp] {
    font-size: 20px;
    font-weight: 600;
    margin: 0;
    color: var(--text-primary, #f8fafc);
}

.shared-header-right[b-mrl1uaoivp] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 4px;
}

.shared-date[b-mrl1uaoivp],
.shared-expires[b-mrl1uaoivp] {
    font-size: 11px;
    font-family: var(--font-mono, monospace);
    color: var(--text-muted, #94a3b8);
}

/* W3.3 — staff deep link into the 3D viewer (share-token form, no coords) */
.shared-open-viewer[b-mrl1uaoivp] {
    font-size: 11px;
    font-family: var(--font-mono, monospace);
    color: var(--accent-color);
    border: 1px solid var(--accent-color);
    border-radius: var(--radius-sm);
    padding: 3px 10px;
    text-decoration: none;
    transition: var(--transition-fast);
}

.shared-open-viewer:hover[b-mrl1uaoivp] {
    background: var(--accent-color-10, rgba(99, 102, 241, 0.1));
}

/* W3.8 — coarse-coordinates honesty hint */
@media (max-width: 640px) {
    .shared-root[b-mrl1uaoivp] { padding: 16px; }
    .shared-header[b-mrl1uaoivp] { flex-direction: column; gap: 8px; }
    .shared-header-right[b-mrl1uaoivp] { align-items: flex-start; }
}

/* ── Service-check tabs (T6 2026-08-06, flex rewrite 2026-08-07) —
   N-agnostic display:contents radio pattern: no per-index rules, works at
   any runtime MaxCandidates; the radio must NOT be display:none (keyboard
   focus). Flex + order, NOT grid: repeat(auto-fit, minmax(0,1fr)) cannot
   derive a track count from display:contents children — all labels
   collapsed into one overlapping ~22px stack (live 2026-08-07). Labels
   order:0 / panels order:1 keeps the strip above the open panel;
   flex: 1 1 0% restores equal-width + ellipsis (wrap-before-shrink:
   content-basis nowrap labels would wrap into ragged rows instead). */
.shared-tab-set[b-mrl1uaoivp] {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 2px;
    margin-top: 1.25rem;
}

.shared-tab[b-mrl1uaoivp] { display: contents; }

.shared-tab-radio[b-mrl1uaoivp] {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
}

.shared-tab-label[b-mrl1uaoivp] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    min-width: 0;
    order: 0;
    flex: 1 1 0%;
    padding: 0.55rem 0.8rem;
    cursor: pointer;
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
    border-bottom-width: 2px;
    border-radius: var(--radius-sm, 6px) var(--radius-sm, 6px) 0 0;
    background: var(--surface-secondary, rgba(255, 255, 255, 0.03));
    color: var(--text-secondary, rgba(255, 255, 255, 0.65));
    font-size: 0.82rem;
    transition: var(--transition-fast, all 0.15s ease);
    white-space: nowrap;
    overflow: hidden;
}

.shared-tab-label .tab-name[b-mrl1uaoivp] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.shared-tab-label .tab-rank[b-mrl1uaoivp] {
    flex-shrink: 0;
    font-weight: 700;
    color: var(--accent-color, #6366f1);
}

.shared-tab-radio:checked ~ .shared-tab-label[b-mrl1uaoivp] {
    background: var(--surface-primary, rgba(255, 255, 255, 0.06));
    color: var(--text-primary, #fff);
    border-bottom-color: var(--accent-color, #6366f1);
}

.shared-tab-radio:focus-visible ~ .shared-tab-label[b-mrl1uaoivp] {
    outline: 2px solid var(--accent-color, #6366f1);
    outline-offset: -2px;
}

.shared-tab-panel[b-mrl1uaoivp] {
    display: none;
    order: 1;
    flex-basis: 100%;
    padding-top: 1rem;
}

.shared-tab-radio:checked ~ .shared-tab-panel[b-mrl1uaoivp] { display: block; }

.class-badge[b-mrl1uaoivp] {
    flex-shrink: 0;
    padding: 0.1rem 0.45rem;
    border-radius: var(--radius-sm, 6px);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.02em;
}
.class-badge.class-viable[b-mrl1uaoivp] { background: rgba(34, 197, 94, 0.15); color: #4ade80; }
.class-badge.class-potentiallyviable[b-mrl1uaoivp] { background: rgba(245, 158, 11, 0.15); color: #fbbf24; }
.class-badge.class-notviable[b-mrl1uaoivp] { background: rgba(239, 68, 68, 0.15); color: #f87171; }
.class-badge.class-indeterminate[b-mrl1uaoivp] { background: rgba(156, 163, 175, 0.15); color: #9ca3af; }

.shared-group-overview .group-coverage-line[b-mrl1uaoivp] {
    color: var(--text-secondary, rgba(255, 255, 255, 0.65));
    font-size: 0.85rem;
    margin: 0.25rem 0 0.75rem;
}

@media (max-width: 640px) {
    /* Mobile stacking WORKS via DOM flow (label₁, panel₁, label₂ …) — reset
       the desktop ordering so the open panel sits under its OWN label, not
       below the whole strip. */
    .shared-tab-label[b-mrl1uaoivp], .shared-tab-panel[b-mrl1uaoivp] { order: 0; }
    .shared-tab-label[b-mrl1uaoivp] { flex-basis: 100%; border-radius: var(--radius-sm, 6px); }
}

/* ── Group-branch styling (page isolation scope) ─────────────────────────
   The group overview card, summary table, and group-level video block are
   PAGE markup — rules in SharedAnalysisReport.razor.css never reach them
   (same scoping trap as the footer below; recurred 2026-08-07 as an
   unstyled comparison table + naked card). Mirrors of the component's
   rules; keep both copies in sync when restyling report chrome. */
.shared-card[b-mrl1uaoivp] {
    background: var(--bg-secondary, rgba(30, 41, 59, 0.8));
    border: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.15));
    border-radius: var(--radius-md, 8px);
    padding: 16px;
}

.shared-card.full-width[b-mrl1uaoivp] { margin-bottom: 16px; }

.shared-card-title[b-mrl1uaoivp] {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--accent-color-light, #a5b4fc);
    margin: 0 0 12px;
    font-weight: 600;
}

.shared-table-scroll[b-mrl1uaoivp] { overflow-x: auto; }

.group-summary-table[b-mrl1uaoivp] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

.group-summary-table th[b-mrl1uaoivp] {
    text-align: left;
    padding: 8px 12px;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-muted, #94a3b8);
    border-bottom: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.15));
    font-weight: 600;
}

.group-summary-table td[b-mrl1uaoivp] {
    padding: 6px 12px;
    border-bottom: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.08));
    color: var(--text-secondary, #cbd5e1);
}

.group-summary-table .value-col[b-mrl1uaoivp] {
    text-align: right;
    font-family: var(--font-mono, monospace);
}

.shared-video video[b-mrl1uaoivp] {
    width: 100%;
    max-height: 480px;
    border-radius: var(--radius-md, 10px);
    background: #000;
}

.video-status[b-mrl1uaoivp] {
    color: var(--text-secondary, rgba(255, 255, 255, 0.65));
    font-size: 0.9rem;
    margin: 0.25rem 0;
}
.video-status.video-failed[b-mrl1uaoivp] { color: var(--warning-color, #fbbf24); }

/* Footer — lives HERE (page isolation scope), not in the report component's
   css: isolation scoping means a rule in SharedAnalysisReport.razor.css never
   reaches markup declared by this page. */
.shared-footer[b-mrl1uaoivp] {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 6px 20px;
    margin-top: 24px;
    padding-top: 16px;
    border-top: 1px solid var(--border-subtle, rgba(148, 163, 184, 0.1));
    font-size: 11px;
    color: var(--text-muted, #64748b);
    font-family: var(--font-mono, monospace);
}

/* RF reports get printed and PDF'd — CSS tabs must not swallow N-1
   candidates on paper (board product-1). display:block on the set makes
   the display:contents children flow in DOM order, so each label prints
   directly above its own panel (flex ordering would group all labels
   first and orphan the panels). */
@media print {
    .shared-tab-set[b-mrl1uaoivp] { display: block; }
    .shared-tab-panel[b-mrl1uaoivp] { display: block !important; }
    .shared-tab-label[b-mrl1uaoivp] { border: none; font-weight: 700; }
}
/* _content/Ayva.Network.Coverage/Pages/ShareLayout.razor.rz.scp.css */
/* Ayva Networks share-report background (owner 2026-08-08): same ocean art
   + dark overlay treatment as the Networks status page — replaces the
   legacy AI-brand background layers. */
.share-net-bg[b-0gav7w5ru4] {
    position: fixed;
    inset: 0;
    z-index: -2;
    background: var(--bg-base, #0a1420) url('/assets/images/net/AdobeStock_226785287.svg') center / cover no-repeat fixed;
}

.share-net-overlay[b-0gav7w5ru4] {
    position: fixed;
    inset: 0;
    z-index: -1;
    background: linear-gradient(180deg, rgba(6, 16, 28, 0.82) 0%, rgba(6, 16, 28, 0.92) 100%);
}
