:root {
    --bg: #f6f7fb;
    --panel: #ffffff;
    --text: #17202a;
    --muted: #667085;
    --line: #dfe3eb;
    --accent: #2563eb;
    --accent-2: #16a34a;
    --accent-3: #f97316;
    --danger: #b42318;
    --shadow: 0 18px 45px rgba(20, 30, 48, .08);
}

* { box-sizing: border-box; }

body {
    margin: 0;
    color: var(--text);
    background: var(--bg);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

a { color: inherit; text-decoration: none; }

.topbar {
    position: sticky;
    top: 0;
    z-index: 10;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto auto;
    grid-template-areas: "brand nav user back";
    align-items: center;
    gap: 12px;
    padding: 12px 24px;
    background: rgba(255,255,255,.92);
    border-bottom: 1px solid var(--line);
    backdrop-filter: blur(16px);
}
.topbar.no-back {
    grid-template-columns: auto minmax(0, 1fr) auto;
    grid-template-areas: "brand nav user";
}

.brand { grid-area: brand; display: flex; align-items: center; gap: 10px; font-weight: 800; }
.brand-mark {
    width: 40px;
    height: 40px;
    display: grid;
    place-items: center;
    overflow: hidden;
    background: #fff;
    border: 1px solid rgba(37, 99, 235, .18);
    border-radius: 10px;
    box-shadow: 0 8px 22px rgba(37, 99, 235, .12);
}
.brand-mark img { width: 100%; height: 100%; object-fit: contain; display: block; }

.nav {
    grid-area: nav;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 6px;
    overflow-x: auto;
    scrollbar-width: thin;
}
.nav a {
    padding: 9px 12px;
    border-radius: 8px;
    color: var(--muted);
    white-space: nowrap;
    font-weight: 650;
    font-size: 14px;
}
.nav a.active, .nav a:hover { background: #eef3ff; color: #123ea4; }

.back-link {
    grid-area: back;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 34px;
    padding: 7px 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fbfcff;
    color: var(--muted);
    font: inherit;
    font-size: 14px;
    font-weight: 750;
    cursor: pointer;
    white-space: nowrap;
}
.back-link:hover { color: var(--accent); border-color: #bfd0ff; background: #eef3ff; }

.userbox { grid-area: user; display: flex; align-items: center; justify-content: flex-end; gap: 12px; color: var(--muted); font-size: 14px; white-space: nowrap; }
.userbox a { color: var(--accent); font-weight: 700; }

.shell { width: min(1420px, calc(100vw - 32px)); margin: 28px auto 56px; }
.auth-shell {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding: 24px;
}

.page-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 20px;
}

.page-subtitle {
    margin: 8px 0 0;
    color: var(--muted);
    font-weight: 650;
}

.page-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    flex-wrap: wrap;
}

.year-tabs {
    display: inline-flex;
    gap: 6px;
    padding: 5px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: white;
}

.year-tabs a {
    min-height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 6px 11px;
    border-radius: 6px;
    color: var(--muted);
    font-weight: 800;
    font-size: 13px;
    white-space: nowrap;
}

.year-tabs a.active,
.year-tabs a:hover {
    background: #eef3ff;
    color: #123ea4;
}

.eyebrow {
    display: block;
    color: var(--accent);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0;
    text-transform: uppercase;
    margin-bottom: 6px;
}

h1, h2 { margin: 0; letter-spacing: 0; }
h1 { font-size: clamp(28px, 4vw, 42px); line-height: 1.08; }
h2 { font-size: 18px; }
p { color: var(--muted); }

.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 40px;
    padding: 9px 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: white;
    color: var(--text);
    font-weight: 750;
    cursor: pointer;
}
.button.primary { background: var(--accent); border-color: var(--accent); color: white; }
.button.small { min-height: 34px; padding: 6px 10px; font-size: 13px; }
.button.full { width: 100%; }

.metric-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: 18px;
}
.metric, .panel, .service-card, .login-card {
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: 8px;
    box-shadow: var(--shadow);
}
.metric { padding: 18px; }
.metric span, .hero-metric span, .facts span, .kpi-row span {
    color: var(--muted);
    font-size: 13px;
    font-weight: 700;
}
.metric strong {
    display: block;
    margin-top: 8px;
    font-size: clamp(24px, 3vw, 34px);
    line-height: 1;
}

.grid { display: grid; gap: 18px; margin-bottom: 18px; }
.grid.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid.four { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.align-start { align-items: start; }
.panel { padding: 18px; overflow: hidden; }
.panel.narrow { max-width: 720px; }
.panel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 14px;
    margin-bottom: 16px;
}
.panel-head a { color: var(--accent); font-weight: 750; }
.panel-subtitle {
    margin: 4px 0 0;
    color: var(--muted);
    font-size: 13px;
    font-weight: 650;
}

.chart-panel { position: relative; }
.chart-head-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    flex-wrap: wrap;
}
.chart-toggle {
    display: inline-flex;
    gap: 4px;
    padding: 4px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fafc;
}
.chart-toggle button {
    min-height: 30px;
    padding: 5px 9px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--muted);
    cursor: pointer;
    font: inherit;
    font-size: 13px;
    font-weight: 800;
    white-space: nowrap;
}
.chart-toggle button.active,
.chart-toggle button[aria-pressed="true"] {
    background: #eef3ff;
    color: #123ea4;
    box-shadow: 0 6px 18px rgba(37, 99, 235, .10);
}
.chart {
    width: 100%;
    max-width: 100%;
    display: block;
    touch-action: pan-y;
}

.chart-tooltip {
    position: fixed;
    z-index: 50;
    min-width: 150px;
    padding: 9px 11px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(17, 24, 39, .94);
    color: white;
    box-shadow: 0 14px 35px rgba(17, 24, 39, .22);
    pointer-events: none;
    transform: translate(-50%, -115%);
    font-size: 13px;
}

.chart-tooltip strong { display: block; margin-bottom: 3px; }
.chart-tooltip span { color: #d1d5db; }

.service-list, .compact-list { display: grid; gap: 8px; }
.service-row, .compact-list a, .allocation, .user-row {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 10px;
    align-items: center;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fbfcff;
}
.service-row em, .compact-list small, .allocation small {
    display: block;
    color: var(--muted);
    font-size: 12px;
    font-style: normal;
    margin-top: 3px;
}
.compact-list b, .service-row strong { color: var(--accent); }

.service-icon {
    flex: 0 0 auto;
    display: inline-grid;
    place-items: center;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fafc;
    color: var(--accent);
}
.service-icon svg { width: 62%; height: 62%; }
.service-icon.sm { width: 30px; height: 30px; }
.service-icon.md { width: 40px; height: 40px; }
.service-icon.lg { width: 48px; height: 48px; }
.service-icon-luz { background: #fff7ed; border-color: #fed7aa; color: #ea580c; }
.service-icon-gas { background: #fef2f2; border-color: #fecaca; color: #dc2626; }
.service-icon-alquiler { background: #eff6ff; border-color: #bfdbfe; color: #2563eb; }
.service-icon-agua { background: #ecfeff; border-color: #a5f3fc; color: #0891b2; }
.service-icon-basura { background: #f0fdf4; border-color: #bbf7d0; color: #16a34a; }
.service-icon-internet { background: #f5f3ff; border-color: #ddd6fe; color: #7c3aed; }
.service-icon-legalitas { background: #f8fafc; border-color: #cbd5e1; color: #475569; }
.service-icon-ica { background: #fefce8; border-color: #fde68a; color: #a16207; }

.service-row-main,
.compact-main,
.table-service-link,
.title-with-icon,
.missing-title,
.service-card-head {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}
.service-row-main > span:last-child,
.compact-main > span:last-child,
.service-card-head > span:last-child { min-width: 0; }
.table-service-link { font-weight: 800; }
.title-with-icon { align-items: flex-start; }

.filters {
    display: grid;
    grid-template-columns: 2fr repeat(3, minmax(150px, 1fr)) auto;
    gap: 12px;
    align-items: end;
    margin-bottom: 18px;
    padding: 14px;
    background: white;
    border: 1px solid var(--line);
    border-radius: 8px;
}

label { display: grid; gap: 7px; color: var(--muted); font-weight: 700; font-size: 13px; }
input, select {
    width: 100%;
    min-height: 40px;
    padding: 9px 11px;
    color: var(--text);
    border: 1px solid var(--line);
    border-radius: 8px;
    background: white;
    font: inherit;
}

.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; min-width: 760px; }
.service-table { min-width: 1180px; }
th, td { padding: 12px 10px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
th { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: 0; }
td a { color: var(--accent); font-weight: 760; }
.right { text-align: right; }
.strong { font-weight: 800; }
.empty { color: var(--muted); text-align: center; padding: 28px; }
.diff-row { background: #fff7ed; }

.badge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 3px 8px;
    border-radius: 999px;
    font-weight: 800;
    font-size: 12px;
}
.badge.ok { background: #eaf8ef; color: #087443; }
.badge.warn { background: #fff1f0; color: var(--danger); }
.badge.bad { background: #7f1d1d; color: white; }

.notice {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 18px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: white;
    box-shadow: var(--shadow);
}
.notice strong { display: block; margin-bottom: 4px; }
.notice p { margin: 0 0 5px; }
.notice small { color: var(--muted); }
.notice.warn { border-color: #fed7aa; background: #fff7ed; }

.missing-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}
.missing-card {
    display: grid;
    gap: 16px;
    padding: 18px;
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: 8px;
    box-shadow: var(--shadow);
}
.missing-card-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}
.missing-card-head span:first-child {
    display: block;
    color: var(--muted);
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
}
.missing-card-head h2 { margin-top: 3px; }
.missing-meta {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}
.missing-meta div {
    padding: 11px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fbfcff;
}
.missing-meta span,
.missing-block h3 {
    display: block;
    color: var(--muted);
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
}
.missing-meta strong { display: block; margin-top: 5px; }
.missing-block h3 { margin: 0 0 9px; }
.chip-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.chip-list span {
    min-height: 28px;
    display: inline-flex;
    align-items: center;
    padding: 5px 9px;
    border: 1px solid #fed7aa;
    border-radius: 8px;
    background: #fff7ed;
    color: #9a3412;
    font-weight: 800;
    font-size: 13px;
}
.chip-list.soft span {
    border-color: #bfdbfe;
    background: #eff6ff;
    color: #1d4ed8;
}
.chip-list span.muted {
    border-color: var(--line);
    background: #f8fafc;
    color: var(--muted);
}
.empty-inline { margin: 0; color: var(--muted); font-weight: 650; }
.missing-actions { display: flex; gap: 8px; flex-wrap: wrap; }

.analysis-list,
.service-snapshot-list {
    display: grid;
    gap: 10px;
}
.analysis-item {
    display: grid;
    gap: 12px;
    padding: 13px;
    border: 1px solid var(--line);
    border-left-width: 4px;
    border-radius: 8px;
    background: #fbfcff;
}
.analysis-item.up,
.service-snapshot.up { border-left-color: #f97316; }
.analysis-item.down,
.service-snapshot.down { border-left-color: #16a34a; }
.analysis-item.flat,
.service-snapshot.flat { border-left-color: var(--line); }
.analysis-item-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}
.analysis-title {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    min-width: 0;
}
.analysis-title span,
.analysis-title small,
.service-snapshot small,
.service-snapshot em {
    color: var(--muted);
    font-size: 12px;
    font-style: normal;
    font-weight: 750;
}
.analysis-title h3 {
    margin: 2px 0;
    font-size: 15px;
}
.analysis-values {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
}
.analysis-values div {
    padding: 9px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: white;
}
.analysis-values span {
    display: block;
    color: var(--muted);
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
}
.analysis-values strong {
    display: block;
    margin-top: 4px;
    overflow-wrap: anywhere;
    font-size: 13px;
}
.analysis-item p {
    margin: 0;
    color: var(--muted);
    font-size: 13px;
    line-height: 1.4;
}
.service-snapshot {
    display: grid;
    gap: 8px;
    padding: 13px;
    border: 1px solid var(--line);
    border-left-width: 4px;
    border-radius: 8px;
    background: #fbfcff;
}
.service-snapshot strong {
    font-size: 22px;
}
.service-snapshot em {
    font-size: 13px;
}
.muted-text {
    color: var(--muted);
    font-size: 13px;
    font-weight: 750;
}
.analysis-metrics .metric strong { font-size: 32px; }
.analysis-hero-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(300px, .75fr);
    gap: 16px;
    margin-bottom: 16px;
}
.analysis-summary { align-content: start; }
.analysis-main-summary { margin-bottom: 16px; }
.analysis-highlight-list,
.analysis-diagnostic-grid {
    display: grid;
    gap: 10px;
}
.tariff-focus {
    margin-bottom: 16px;
}
.current-tariff-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}
.current-tariff-card {
    display: grid;
    gap: 9px;
    padding: 13px;
    border: 1px solid var(--line);
    border-left: 4px solid var(--accent);
    border-radius: 8px;
    background: #fbfcff;
}
.current-tariff-card small {
    color: var(--muted);
    font-weight: 700;
}
.current-tariff-card div {
    display: grid;
    gap: 7px;
}
.current-tariff-card p {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin: 0;
    padding: 8px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: white;
}
.current-tariff-card p span {
    color: var(--muted);
    font-size: 12px;
    font-weight: 800;
}
.current-tariff-card p strong {
    text-align: right;
    overflow-wrap: anywhere;
}
.tariff-focus-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) minmax(320px, .9fr);
    gap: 16px;
    align-items: start;
}
.tariff-focus-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.tariff-chart-stack {
    display: grid;
    gap: 18px;
    min-width: 0;
}
.tariff-chart-block {
    min-width: 0;
}
.tariff-chart-block + .tariff-chart-block {
    padding-top: 16px;
    border-top: 1px solid var(--line);
}
.mini-panel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 8px;
}
.mini-panel-head h3 {
    margin: 0;
    font-size: 15px;
}
.mini-panel-head span {
    color: var(--muted);
    font-size: 12px;
    font-weight: 750;
    white-space: nowrap;
}
.analysis-highlight {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 12px;
    padding: 11px;
    border: 1px solid var(--line);
    border-left-width: 4px;
    border-radius: 8px;
    background: #fbfcff;
}
.analysis-highlight.up { border-left-color: #f97316; }
.analysis-highlight.down { border-left-color: #16a34a; }
.analysis-rank {
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border-radius: 8px;
    background: #eef3ff;
    color: #123ea4;
    font-weight: 900;
}
.analysis-highlight strong,
.quality-item strong { display: block; overflow-wrap: anywhere; }
.analysis-highlight small,
.analysis-highlight em,
.quality-item small,
.quality-item em {
    color: var(--muted);
    font-size: 12px;
    font-style: normal;
    font-weight: 750;
}
.analysis-diagnostic-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.analysis-diagnostic-grid div {
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fbfcff;
}
.analysis-diagnostic-grid span,
.analysis-meta span,
.analysis-chip-row span {
    color: var(--muted);
    font-size: 11px;
    font-weight: 850;
    text-transform: uppercase;
}
.analysis-diagnostic-grid strong {
    display: block;
    margin: 4px 0;
    font-size: 28px;
}
.analysis-diagnostic-grid small { color: var(--muted); font-weight: 650; }
.analysis-bottom-diagnostic {
    margin-top: 16px;
}
.analysis-coverage-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    margin-top: 12px;
}
.analysis-coverage-grid div {
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fbfcff;
}
.analysis-coverage-grid span {
    color: var(--muted);
    font-size: 11px;
    font-weight: 850;
    text-transform: uppercase;
}
.analysis-coverage-grid strong {
    display: block;
    margin: 4px 0;
    font-size: 24px;
}
.analysis-coverage-grid small {
    color: var(--muted);
    font-weight: 650;
}
.analysis-nav {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    margin: 0 0 16px;
    padding-bottom: 2px;
}
.analysis-nav a,
.analysis-filter {
    min-height: 34px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 11px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: white;
    color: var(--muted);
    font: inherit;
    font-size: 13px;
    font-weight: 800;
    white-space: nowrap;
    cursor: pointer;
}
.analysis-nav a:hover,
.analysis-filter.active,
.analysis-filter:hover {
    border-color: #bfd0ff;
    background: #eef3ff;
    color: #123ea4;
}
.analysis-filter span {
    min-width: 22px;
    min-height: 20px;
    display: inline-grid;
    place-items: center;
    padding: 0 6px;
    border-radius: 999px;
    background: #f2f4f7;
    color: var(--muted);
    font-size: 12px;
}
.analysis-filter.active span { background: white; color: #123ea4; }
.analysis-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 12px;
}
.analysis-priority-panel { margin-bottom: 16px; }
.priority-list {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}
.analysis-meta,
.analysis-chip-row {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.analysis-meta span,
.analysis-chip-row span {
    padding: 5px 7px;
    border-radius: 8px;
    background: #f2f4f7;
    color: var(--muted);
}
.analysis-meta .severity.high { background: #fff1f0; color: #b42318; }
.analysis-meta .severity.medium { background: #fff7ed; color: #9a3412; }
.analysis-meta .severity.info { background: #eff6ff; color: #1d4ed8; }
.analysis-meta .confidence.high,
.analysis-meta .confidence.ok { background: #ecfdf3; color: #067647; }
.analysis-meta .confidence.medium { background: #fff7ed; color: #9a3412; }
.analysis-chart-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    margin-bottom: 16px;
}
.analysis-chart-grid .wide { grid-column: 1 / -1; }
.analysis-detail-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    margin-bottom: 16px;
}
.analysis-section {
    align-content: start;
}
.analysis-section summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin: -4px 0 14px;
    cursor: pointer;
    font-size: 18px;
    font-weight: 850;
}
.analysis-section summary::marker { content: ""; }
.analysis-section summary strong {
    min-width: 34px;
    min-height: 28px;
    display: inline-grid;
    place-items: center;
    padding: 0 8px;
    border-radius: 8px;
    background: #eef3ff;
    color: #123ea4;
    font-size: 13px;
}
.analysis-expand {
    margin-top: 12px;
    width: 100%;
}
.quality-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}
.quality-item {
    display: grid;
    gap: 7px;
    padding: 12px;
    border: 1px solid var(--line);
    border-left: 4px solid var(--line);
    border-radius: 8px;
    background: #fbfcff;
}
.quality-item.ok { border-left-color: #16a34a; }
.quality-item.medium { border-left-color: #f97316; }
.quality-item.warn { border-left-color: #b42318; }
.service-snapshot-list.compact {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.forecast-metrics .metric strong { font-size: 30px; }
.forecast-overview {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(280px, .8fr);
    gap: 16px;
    margin-bottom: 16px;
}
.forecast-confidence {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    border-left: 5px solid var(--line);
}
.forecast-confidence.high { border-left-color: #16a34a; }
.forecast-confidence.medium { border-left-color: #f97316; }
.forecast-confidence.low,
.forecast-confidence.none { border-left-color: #b42318; }
.forecast-confidence div {
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fbfcff;
}
.forecast-confidence span,
.forecast-card-main span,
.forecast-card-facts span {
    color: var(--muted);
    font-size: 11px;
    font-weight: 850;
    text-transform: uppercase;
}
.forecast-confidence strong {
    display: block;
    margin: 5px 0;
    font-size: 30px;
}
.forecast-confidence small,
.forecast-note p,
.forecast-service-card p,
.forecast-service-card em,
.upcoming-item small,
.upcoming-item em,
.forecast-quality small {
    color: var(--muted);
    font-style: normal;
    font-weight: 650;
}
.forecast-note h2 { margin-bottom: 8px; }
.forecast-note p { margin-bottom: 0; line-height: 1.45; }
.forecast-chart-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    margin-bottom: 18px;
}
.upcoming-list,
.forecast-quality-list {
    display: grid;
    gap: 10px;
}
.upcoming-item {
    display: grid;
    grid-template-columns: minmax(130px, .9fr) minmax(0, 1.1fr) minmax(120px, auto) auto;
    gap: 12px;
    align-items: center;
    padding: 12px;
    border: 1px solid var(--line);
    border-left: 4px solid var(--line);
    border-radius: 8px;
    background: #fbfcff;
}
.upcoming-item.high,
.forecast-quality.high,
.forecast-service-card.high { border-left-color: #16a34a; }
.upcoming-item.medium,
.forecast-quality.medium,
.forecast-service-card.medium { border-left-color: #f97316; }
.upcoming-item.low,
.upcoming-item.none,
.forecast-quality.low,
.forecast-quality.none,
.forecast-service-card.low,
.forecast-service-card.none { border-left-color: #b42318; }
.upcoming-money { text-align: right; }
.upcoming-money strong,
.upcoming-item > div strong { display: block; }
.upcoming-item em {
    padding: 5px 7px;
    border-radius: 8px;
    background: #f2f4f7;
    font-size: 12px;
    white-space: nowrap;
}
.forecast-quality {
    display: grid;
    gap: 4px;
    padding: 11px;
    border: 1px solid var(--line);
    border-left: 4px solid var(--line);
    border-radius: 8px;
    background: #fbfcff;
}
.forecast-quality span {
    color: var(--muted);
    font-size: 12px;
    font-weight: 800;
}
.forecast-service-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}
.forecast-service-card {
    display: grid;
    gap: 12px;
    padding: 14px;
    border: 1px solid var(--line);
    border-left: 4px solid var(--line);
    border-radius: 8px;
    background: #fbfcff;
}
.forecast-card-main strong {
    display: block;
    margin: 5px 0 2px;
    font-size: 24px;
}
.forecast-card-main small { color: var(--muted); font-weight: 650; overflow-wrap: anywhere; }
.forecast-card-facts {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
}
.forecast-card-facts div {
    min-width: 0;
    padding: 8px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: white;
}
.forecast-card-facts strong {
    display: block;
    margin-top: 3px;
    font-size: 13px;
    overflow-wrap: anywhere;
}
.forecast-service-card p {
    margin: 0;
    line-height: 1.35;
}
.forecast-service-card em {
    font-size: 12px;
}

.detail-grid {
    display: grid;
    grid-template-columns: minmax(260px, 360px) 1fr;
    gap: 18px;
    margin-bottom: 18px;
}
.hero-metric strong {
    display: block;
    font-size: clamp(36px, 6vw, 56px);
    margin: 10px 0;
}
.hero-metric small { color: var(--muted); overflow-wrap: anywhere; }
.facts {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}
.facts div, .kpi-row div {
    padding: 12px;
    background: #fbfcff;
    border: 1px solid var(--line);
    border-radius: 8px;
}
.facts strong, .kpi-row strong { display: block; margin-top: 6px; overflow-wrap: anywhere; }
.kpi-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)); gap: 12px; }
.bands { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 12px; }
.bands span {
    padding: 8px 10px;
    border-radius: 8px;
    background: #eef3ff;
    color: #123ea4;
    font-weight: 750;
}

.excerpt {
    white-space: pre-wrap;
    max-height: 360px;
    overflow: auto;
    margin: 0;
    padding: 14px;
    border-radius: 8px;
    background: #111827;
    color: #e5e7eb;
    font-size: 13px;
}

.cards {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}
.service-card {
    min-height: 150px;
    padding: 18px;
    display: grid;
    align-content: start;
    gap: 10px;
}
.service-card > span:not(.service-card-head),
.service-card-head > span:last-child { color: var(--muted); font-weight: 800; }
.service-card strong { font-size: 28px; }
.service-card small, .service-card em { color: var(--muted); font-style: normal; }

.stack-form { display: grid; gap: 14px; }
.upload-metrics { margin-top: 18px; }
.upload-results { display: grid; gap: 10px; }
.upload-result {
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 12px;
    align-items: center;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fbfcff;
}
.upload-result.error { background: #fff1f0; border-color: #fecaca; }
.upload-result.duplicate,
.upload-result.review { background: #fff7ed; border-color: #fed7aa; }
.upload-result-main { min-width: 0; }
.upload-result-main strong { display: block; overflow-wrap: anywhere; }
.upload-result-main p { margin: 4px 0; }
.upload-result-main small { color: var(--muted); }
.login-panel {
    width: min(980px, 100%);
    display: grid;
    grid-template-columns: 1.2fr .8fr;
    gap: 22px;
    align-items: center;
}
.login-copy h1 { font-size: clamp(42px, 7vw, 78px); }
.login-copy p { font-size: 20px; }
.login-card { padding: 22px; display: grid; gap: 16px; }
.alert {
    padding: 10px 12px;
    border-radius: 8px;
    background: #fff1f0;
    color: var(--danger);
    font-weight: 700;
}

.user-row {
    grid-template-columns: 1fr auto;
}
.inline-reset {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 8px;
}

@media (max-width: 980px) {
    .topbar,
    .topbar.no-back {
        grid-template-columns: minmax(0, 1fr) auto;
        grid-template-areas:
            "brand user"
            "nav nav"
            "back back";
        align-items: center;
        gap: 10px;
        padding: 10px 12px;
    }
    .topbar.no-back {
        grid-template-areas:
            "brand user"
            "nav nav";
    }
    .brand span:last-child { max-width: 46vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .nav { width: 100%; padding-bottom: 2px; }
    .nav a { padding: 8px 10px; font-size: 13px; }
    .userbox { justify-content: flex-end; gap: 8px; font-size: 13px; }
    .userbox span { max-width: 28vw; overflow: hidden; text-overflow: ellipsis; }
    .back-link { width: fit-content; min-height: 32px; }
    .metric-grid, .grid.two, .grid.three, .grid.four, .detail-grid, .facts, .cards, .login-panel, .missing-grid, .analysis-hero-grid, .analysis-chart-grid, .analysis-detail-grid, .priority-list, .service-snapshot-list.compact, .tariff-focus-grid, .tariff-focus-list, .current-tariff-grid, .analysis-coverage-grid, .forecast-overview, .forecast-chart-grid, .forecast-service-grid { grid-template-columns: 1fr; }
    .filters { grid-template-columns: 1fr 1fr; }
    .page-actions { justify-content: flex-start; }
}

@media (max-width: 620px) {
    .shell { width: min(100vw - 20px, 1420px); margin-top: 16px; }
    .page-head { align-items: flex-start; flex-direction: column; }
    .metric-grid { grid-template-columns: 1fr 1fr; }
    .filters, .kpi-row, .missing-meta, .analysis-values, .analysis-diagnostic-grid, .quality-grid, .forecast-confidence, .forecast-card-facts, .upcoming-item { grid-template-columns: 1fr; }
    .analysis-chart-grid .wide { grid-column: auto; }
    .analysis-toolbar { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 2px; }
    .upcoming-money { text-align: left; }
    .notice { align-items: stretch; flex-direction: column; }
    .upload-result { grid-template-columns: 1fr; align-items: start; }
    .panel { padding: 14px; }
    table { min-width: 680px; }
}
