:root {
  --night-1000: #071018;
  --night-950: #0a141d;
  --night-900: #0e1b26;
  --night-850: #122330;
  --night-800: #172b39;
  --line: #263d4c;
  --line-soft: #1c303d;
  --text: #edf6f8;
  --muted: #91a9b5;
  --cyan: #43d7cd;
  --blue: #5b8cff;
  --amber: #f4b755;
  --magenta: #f06d91;
  --violet: #ad8cff;
  --display: "Bahnschrift Condensed", "Arial Narrow", sans-serif;
  --body: "Segoe UI Variable", "Segoe UI", sans-serif;
  --utility: "Cascadia Mono", Consolas, monospace;
  --shadow: 0 24px 70px rgba(0, 0, 0, .28);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--night-950); color: var(--text); font: 15px/1.5 var(--body); }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; }
:focus-visible { outline: 3px solid rgba(67, 215, 205, .36); outline-offset: 3px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.mono { font: 12px var(--utility); color: #abc0c9; }

.topbar { min-height: 70px; padding: 0 4vw; display: flex; align-items: center; justify-content: space-between; gap: 24px; position: sticky; top: 0; z-index: 20; background: rgba(7, 16, 24, .94); border-bottom: 1px solid var(--line-soft); backdrop-filter: blur(16px); }
.topbar-actions { display: flex; align-items: center; gap: 13px; }
.brand-lockup { display: inline-flex; align-items: center; gap: 12px; font: 700 24px var(--display); letter-spacing: .03em; text-decoration: none; }
.brand-small { font-size: 19px; }
.brand-small b { color: var(--muted); font-weight: 500; }
.brand-mark { width: 34px; height: 28px; display: inline-flex; gap: 3px; align-items: flex-end; }
.brand-mark i { display: block; width: 8px; height: 12px; background: var(--blue); border-radius: 2px 2px 0 0; }
.brand-mark i:nth-child(2) { height: 20px; background: var(--cyan); }
.brand-mark i:nth-child(3) { height: 28px; }
.read-only-flag { display: inline-flex; align-items: center; gap: 8px; color: #b8cbd2; font-size: 12px; font-weight: 700; }
.read-only-flag > span { width: 8px; height: 8px; border-radius: 50%; background: var(--cyan); box-shadow: 0 0 0 4px rgba(67,215,205,.1), 0 0 14px var(--cyan); }
.read-only-flag.is-paused { color: #ffd0dc; }
.read-only-flag.is-paused > span { background: var(--magenta); box-shadow: 0 0 0 4px rgba(240,109,145,.1), 0 0 14px var(--magenta); }
.topbar-clock { display: inline-flex; align-items: center; gap: 8px; padding: 4px 10px; border: 1px solid var(--line); border-radius: 4px; background: rgba(67,215,205,.06); }
.topbar-clock .clock-tz { font: 700 9px var(--utility); letter-spacing: .1em; color: var(--muted); }
.topbar-clock time { font: 700 14px var(--display); letter-spacing: .04em; color: var(--cyan); font-variant-numeric: tabular-nums; }
.role-chip, .user-chip { padding: 5px 9px; border: 1px solid var(--line); border-radius: 4px; font: 700 10px var(--utility); text-transform: uppercase; letter-spacing: .06em; }
.role-chip { color: var(--violet); background: rgba(173,140,255,.08); border-color: rgba(173,140,255,.3); }
.user-chip { color: var(--muted); }
.text-button, .text-link { padding: 6px; color: var(--cyan); background: none; border: 0; cursor: pointer; font-weight: 700; text-decoration: none; }

.page-shell { width: min(1500px, 93vw); margin: 24px auto 80px; }
.narrow-shell, .report-shell { width: min(1180px, 92vw); margin: 0 auto 80px; }
.diagnostic-line { min-height: 94px; padding: 14px 18px; display: grid; grid-template-columns: 180px 1fr; align-items: center; gap: 24px; background: var(--night-1000); border: 1px solid var(--line); border-radius: 7px; box-shadow: var(--shadow); }
.diagnostic-title span, .default-route > span, .fleet-verdict span, .verdict-label span { display: block; color: #6f8997; font: 700 10px var(--utility); letter-spacing: .12em; }
.diagnostic-title small { color: #c0d0d6; }
.diagnostic-line ol { display: grid; grid-template-columns: repeat(6, 1fr); margin: 0; padding: 0; list-style: none; }
.diagnostic-line li { position: relative; display: flex; align-items: center; gap: 11px; min-height: 52px; padding-right: 22px; }
.diagnostic-line li:not(:last-child)::after { content: ""; position: absolute; right: 10px; width: calc(100% - 152px); height: 1px; background: var(--line); transform: translateX(100%); }
.diagnostic-line li b { width: 30px; height: 30px; flex: 0 0 30px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; color: var(--muted); font: 700 11px var(--utility); }
.diagnostic-line li.is-current b { background: var(--cyan); border-color: var(--cyan); color: var(--night-1000); box-shadow: 0 0 18px rgba(67,215,205,.25); }
.diagnostic-line li.is-done b { border-color: var(--cyan); color: var(--cyan); }
.next-step-hint { margin: 12px 0; padding: 10px 14px; border-left: 3px solid var(--cyan); background: rgba(67,215,205,.07); border-radius: 6px; }
.verdict-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.diagnostic-line li strong, .diagnostic-line li small { display: block; }
.diagnostic-line li small { color: var(--muted); font-size: 11px; }

.notice { margin: 18px 0; padding: 13px 16px; color: #aef2e9; background: rgba(67,215,205,.09); border-left: 4px solid var(--cyan); }
.notice-error { color: #ffc2d2; background: rgba(240,109,145,.1); border-color: var(--magenta); }
.dashboard-intro { min-height: 385px; padding: 62px 8px 44px; display: flex; justify-content: space-between; align-items: flex-end; gap: 50px; }
.eyebrow, .utility-label { margin: 0 0 9px; color: var(--cyan); font: 700 10px var(--utility); letter-spacing: .15em; }
h1, h2, h3 { margin: 0; font-family: var(--display); line-height: .98; letter-spacing: -.018em; }
h1 { font-size: clamp(54px, 7vw, 92px); font-weight: 680; }
h2 { font-size: clamp(31px, 4vw, 48px); }
h3 { font-size: 26px; }
.dashboard-intro > div > p:last-child { max-width: 720px; margin: 20px 0 0; color: var(--muted); font-size: 18px; }
.default-route { flex: 0 0 330px; padding: 20px; background: var(--night-900); border: 1px solid var(--line); border-top: 3px solid var(--blue); }
.default-route strong { display: flex; align-items: center; gap: 12px; margin: 14px 0 5px; font: 700 23px var(--utility); }
.default-route strong i { width: 7px; height: 7px; border-radius: 50%; background: var(--cyan); box-shadow: 0 0 13px var(--cyan); }
.default-route small { color: var(--muted); }

.fleet-verdict { display: grid; grid-template-columns: 170px 1fr auto; gap: 24px; align-items: center; padding: 22px 24px; background: linear-gradient(90deg, rgba(91,140,255,.11), rgba(67,215,205,.04)); border: 1px solid #304d60; }
.verdict-label b { display: block; margin-top: 5px; color: var(--amber); font: 700 12px var(--utility); }
.fleet-verdict p { margin: 0; color: #c7d8de; font-size: 16px; }
.metric-line { display: grid; grid-template-columns: repeat(5, 1fr); border: 1px solid var(--line); border-top: 0; background: var(--night-900); }
.metric-line-six { grid-template-columns: repeat(6, 1fr); }
.metric-line article { min-height: 132px; padding: 22px; display: flex; flex-direction: column; border-right: 1px solid var(--line-soft); }
.metric-line article:last-child { border: 0; }
.metric-line span, .metric-line small { color: var(--muted); }
.metric-line strong { margin: auto 0 3px; font: 700 38px var(--utility); }
.metric-line small { font-size: 11px; }
.text-success { color: var(--cyan) !important; }
.text-danger { color: var(--magenta) !important; }
.text-warning { color: var(--amber) !important; }
.text-violet { color: var(--violet) !important; }

.work-section { padding: 70px 0 12px; scroll-margin-top: 75px; }
.compact-section { padding-top: 55px; }
.section-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; margin-bottom: 24px; }
.section-heading > p { max-width: 430px; margin: 0; color: var(--muted); text-align: right; }
.heading-actions { display: flex; align-items: center; gap: 10px; }
.heading-actions > span { color: var(--muted); font-size: 12px; }
.button { min-height: 41px; padding: 9px 16px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid transparent; border-radius: 4px; color: var(--text); font-weight: 750; text-decoration: none; cursor: pointer; transition: transform .15s ease, filter .15s ease; }
.button:hover:not(:disabled) { transform: translateY(-1px); filter: brightness(1.08); }
.button:disabled { opacity: .4; cursor: not-allowed; }
.button-primary { background: var(--blue); box-shadow: 0 10px 28px rgba(91,140,255,.19); }
.button-secondary { background: #21495b; border-color: #2c6075; }
.button-quiet { background: var(--night-850); border-color: var(--line); }
.button-update { color: #06161d; background: var(--cyan); border-color: #78eee6; box-shadow: 0 10px 28px rgba(67,215,205,.18); }
.button-stop { color: #fff; background: #a83758; border-color: #d6577d; }
.button-wide { width: 100%; min-height: 48px; }

.guided-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.guide-panel { padding: 24px; background: var(--night-900); border: 1px solid var(--line); position: relative; overflow: hidden; }
.guide-panel::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--amber); }
.guide-panel.is-done::before { background: var(--cyan); }
.guide-panel.is-locked { opacity: .68; }
.guide-panel > header { display: flex; align-items: center; gap: 13px; margin-bottom: 20px; }
.guide-panel > header > b { margin-left: auto; color: var(--amber); font: 700 9px var(--utility); letter-spacing: .1em; }
.guide-panel.is-done > header > b { color: var(--cyan); }
.guide-panel header p { margin: 0 0 2px; color: var(--muted); font: 700 9px var(--utility); letter-spacing: .1em; }
.step-number { width: 38px; height: 38px; display: grid; place-items: center; flex: 0 0 38px; color: var(--night-1000); background: var(--amber); border-radius: 3px; font: 700 14px var(--utility); }
.is-done .step-number { background: var(--cyan); }
.guide-copy { min-height: 48px; color: var(--muted); }
.stack-form { display: grid; gap: 14px; }
.stack-form label > span, .inline-form label > span { display: block; margin-bottom: 6px; color: #b9cbd2; font-size: 12px; font-weight: 700; }
input, select, textarea { width: 100%; padding: 11px 12px; color: var(--text); background: #09151e; border: 1px solid #345061; border-radius: 3px; }
input::placeholder, textarea::placeholder { color: #587180; }
input:focus, select:focus, textarea:focus { border-color: var(--cyan); outline: 3px solid rgba(67,215,205,.1); }
textarea { resize: vertical; font: 12px/1.55 var(--utility); }
.split-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.drop-file { display: block; padding: 18px; border: 1px dashed #446477; background: #0a1720; }
.drop-file input { margin: 10px 0 5px; padding: 8px; background: var(--night-850); }
.drop-file small { display: block; color: var(--muted); }
.saved-list { margin: 14px 0 0; padding-top: 12px; color: var(--muted); border-top: 1px solid var(--line-soft); font-size: 12px; }
.alternative-input { margin-top: 18px; background: var(--night-900); border: 1px solid var(--line); }
.alternative-input summary { padding: 18px 22px; cursor: pointer; color: #c8d9df; font-weight: 700; }
.alternative-input summary::marker { color: var(--cyan); }
.alternative-grid { padding: 22px; display: grid; grid-template-columns: 1fr 1fr; gap: 34px; border-top: 1px solid var(--line-soft); }
.alternative-grid h3 { margin-bottom: 5px; }
.alternative-grid p { margin: 0; color: var(--muted); }

.table-frame { background: var(--night-900); border: 1px solid var(--line); overflow-x: auto; }
table { width: 100%; min-width: 1120px; border-collapse: collapse; }
th { padding: 13px 15px; color: #76919e; background: var(--night-1000); text-align: left; font: 700 9px var(--utility); letter-spacing: .12em; text-transform: uppercase; }
td { padding: 16px 15px; border-bottom: 1px solid var(--line-soft); vertical-align: middle; }
tbody tr:last-child td { border-bottom: 0; }
tbody tr:hover:not(.empty-row) { background: rgba(255,255,255,.018); }
td strong, td span, td small { display: block; }
td small { margin-top: 3px; color: var(--muted); }
.assessment-cell { max-width: 430px; color: #aec2ca; font-size: 12px; }
.row-actions { display: flex; flex-wrap: wrap; gap: 7px; min-width: 150px; }
.row-actions form { display: contents; }
.empty-row td { padding: 56px 20px; text-align: center; }
.empty-row span { margin-top: 5px; color: var(--muted); }
.status-pill { width: fit-content; display: inline-flex; flex-direction: row; align-items: center; gap: 7px; padding: 5px 8px; border-radius: 3px; font-size: 10px; font-weight: 800; white-space: nowrap; }
.status-pill i { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.tone-neutral { color: #a5bac4; background: #1d303b; }
.tone-active { color: #9bb8ff; background: rgba(91,140,255,.13); }
.tone-success { color: #79e6dc; background: rgba(67,215,205,.11); }
.tone-warning { color: #ffd187; background: rgba(244,183,85,.12); }
.tone-danger { color: #ff9ab6; background: rgba(240,109,145,.12); }
.error-detail { max-width: 220px; color: #ff9ab6; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.section-footnote { color: var(--muted); font-size: 12px; }
.inline-form { display: flex; align-items: flex-end; gap: 12px; padding: 20px; background: var(--night-900); border: 1px solid var(--line); }
.inline-form label { min-width: 150px; }
.inline-form .grow { flex: 1; }
.authorization-list { margin: 12px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; list-style: none; }
.authorization-list li { display: flex; gap: 8px; padding: 7px 10px; background: var(--night-850); border: 1px solid var(--line); font-size: 11px; }
.authorization-list span { color: var(--cyan); font-family: var(--utility); }
.authorization-list small { color: var(--muted); }
.run-list { border-top: 1px solid var(--line); }
.run-list article { min-height: 76px; padding: 12px 8px; display: grid; grid-template-columns: 175px 1fr 2.5fr auto; align-items: center; gap: 20px; border-bottom: 1px solid var(--line); }
.run-list strong, .run-list small { display: block; }
.run-list small { color: var(--muted); }
.run-time { color: var(--muted); font: 10px var(--utility); }
.empty-message { padding: 30px 8px; color: var(--muted); }
.page-footer { min-height: 72px; padding: 20px 4vw; display: flex; justify-content: space-between; color: #637d8a; background: var(--night-1000); border-top: 1px solid var(--line-soft); font: 10px var(--utility); }

/* Revisão do PDF */
.review-hero { padding: 80px 0 40px; }
.review-hero p:last-child { max-width: 700px; color: var(--muted); font-size: 17px; }
.extraction-summary { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; background: var(--night-900); border: 1px solid var(--line); }
.extraction-summary article { min-height: 105px; padding: 18px; border-right: 1px solid var(--line-soft); }
.extraction-summary article:last-child { border: 0; }
.extraction-summary span, .extraction-summary strong { display: block; }
.extraction-summary span { color: var(--muted); font-size: 11px; }
.extraction-summary strong { margin-top: 18px; font: 700 20px var(--utility); overflow-wrap: anywhere; }
.review-panel { margin-top: 24px; padding: 24px; background: var(--night-900); border: 1px solid var(--line); }
.review-panel > header { display: flex; justify-content: space-between; align-items: flex-end; gap: 20px; margin-bottom: 20px; }
.ip-grid { display: grid; grid-template-columns: repeat(5, 1fr); max-height: 470px; overflow: auto; border: 1px solid var(--line-soft); }
.ip-grid span { padding: 8px 10px; color: #c7d9df; border-right: 1px solid var(--line-soft); border-bottom: 1px solid var(--line-soft); font: 11px var(--utility); }
.ip-grid b { margin-right: 8px; color: #577482; }
.remaining-note { color: var(--muted); }
.confirm-import { margin-top: 24px; padding: 26px; display: grid; grid-template-columns: 1fr 380px; align-items: end; gap: 40px; background: rgba(91,140,255,.08); border: 1px solid rgba(91,140,255,.3); }
.confirm-import p { color: var(--muted); }

/* Relatório */
.report-shell { padding-top: 58px; }
.report-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 30px; padding-bottom: 30px; border-bottom: 1px solid var(--line); }
.report-heading p:last-child { color: var(--muted); }
.report-brand { text-align: right; font: 700 25px var(--display); }
.report-brand span { color: var(--cyan); font: 10px var(--utility); letter-spacing: .1em; }
.report-verdict { margin: 24px 0; padding: 20px 22px; background: var(--night-900); border-left: 4px solid var(--amber); }
.report-verdict span { color: var(--amber); font: 700 10px var(--utility); letter-spacing: .12em; }
.report-verdict p { margin: 8px 0 0; font-size: 17px; }
.report-metrics { display: grid; grid-template-columns: repeat(6, 1fr); border: 1px solid var(--line); }
.report-metrics article { min-height: 95px; padding: 16px; display: flex; flex-direction: column; border-right: 1px solid var(--line); }
.report-metrics article:last-child { border: 0; }
.report-metrics strong { margin: auto 0 4px; font: 700 27px var(--utility); }
.report-metrics span { color: var(--muted); font-size: 11px; }
.report-section { padding-top: 50px; }
.report-section > header { margin-bottom: 18px; }
.report-table { min-width: 1000px; }
.report-table td:last-child { min-width: 400px; color: #aec2ca; font-size: 12px; }
.report-footer { display: flex; justify-content: space-between; gap: 20px; margin-top: 35px; padding-top: 16px; color: var(--muted); border-top: 1px solid var(--line); font: 9px var(--utility); }

/* Centro de atualização e gravador de voo */
.circuit-strip { min-height: 104px; padding: 18px 20px; display: grid; grid-template-columns: 1fr auto minmax(270px, 420px); align-items: center; gap: 26px; border: 1px solid var(--line); border-left: 5px solid var(--cyan); background: linear-gradient(90deg, rgba(67,215,205,.08), var(--night-900) 44%); }
.circuit-strip.is-paused { border-left-color: var(--magenta); background: linear-gradient(90deg, rgba(240,109,145,.1), var(--night-900) 44%); }
/* Alerta de falhas em série: frota segue rodando, mas sinaliza problema sistêmico. */
.circuit-strip.is-alert { border-left-color: var(--magenta); background: linear-gradient(90deg, rgba(240,109,145,.16), var(--night-900) 44%); animation: breaker-alert-pulse 1.6s ease-in-out infinite; }
@keyframes breaker-alert-pulse { 0%, 100% { border-left-color: var(--magenta); } 50% { border-left-color: #ff5470; } }
.circuit-strip > div > span { display: block; color: var(--muted); font: 700 9px var(--utility); letter-spacing: .12em; }
.circuit-strip > div > strong { display: block; margin: 4px 0; font: 700 19px var(--display); letter-spacing: .03em; }
.circuit-strip small { color: var(--muted); }

/* Janela de manutenção + fila editável */
.maintenance-grid { display: grid; grid-template-columns: minmax(280px, 380px) 1fr; gap: 18px; margin-top: 18px; }
.maintenance-window, .maintenance-queue { border: 1px solid var(--line); background: var(--night-900); padding: 16px 18px; }
.maintenance-window { border-left: 4px solid var(--cyan); display: flex; flex-direction: column; gap: 12px; }
.maintenance-window.is-closed { border-left-color: var(--magenta); }
.maintenance-window strong { display: block; margin: 4px 0; font: 700 16px var(--display); letter-spacing: .02em; }
.maintenance-window small { color: var(--muted); }
/* Barra visual de 24h: faixa(s) da janela + marcador da hora atual (Brasília). */
.window-bar { position: relative; margin-top: 14px; }
.window-bar-track { position: relative; height: 10px; border-radius: 5px; background: rgba(255,255,255,.05); border: 1px solid var(--line); overflow: hidden; }
.window-bar-band { position: absolute; top: 0; bottom: 0; background: linear-gradient(180deg, rgba(67,215,205,.55), rgba(67,215,205,.3)); box-shadow: inset 0 0 8px rgba(67,215,205,.35); }
.window-bar-marker { position: absolute; top: -3px; width: 2px; height: 16px; background: #fff; box-shadow: 0 0 8px rgba(255,255,255,.8); transition: left .5s linear; z-index: 2; }
.window-bar-marker::after { content: ""; position: absolute; top: -4px; left: -3px; border: 4px solid transparent; border-top-color: #fff; }
.window-bar-ticks { display: flex; justify-content: space-between; margin-top: 4px; font: 700 9px var(--utility); letter-spacing: .06em; color: var(--muted); }
.window-form { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; }
.window-form label { display: flex; flex-direction: column; gap: 4px; font-size: 11px; color: var(--muted); }
.window-form input[type=number] { width: 64px; }
.window-switch { flex-direction: row; align-items: center; gap: 6px; }
.window-force { margin-top: auto; }
.notify-row { display: flex; align-items: center; gap: 8px; padding-top: 10px; border-top: 1px solid var(--line); }
.notify-row small { color: var(--muted); }
.notify-row form { margin: 0 0 0 auto; }
.notify-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--muted); }
.notify-dot.is-on { background: var(--cyan); box-shadow: 0 0 0 3px rgba(67,215,205,.12), 0 0 10px var(--cyan); }
.notify-dot.is-off { background: var(--magenta); }
.button-warn { background: var(--magenta); color: #fff; }
.queue-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.queue-head strong { font: 700 15px var(--display); }
.queue-head small { color: var(--muted); margin-left: auto; }
.queue-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; max-height: 340px; overflow-y: auto; }
.queue-item { display: flex; align-items: center; gap: 12px; padding: 8px 10px; background: rgba(255,255,255,.02); border: 1px solid var(--line); }
.queue-item.is-held { opacity: .6; border-left: 3px solid var(--magenta); }
.queue-pos { min-width: 22px; text-align: center; font: 700 14px var(--display); color: var(--cyan); }
.queue-info { flex: 1; min-width: 0; }
.queue-info strong { display: block; }
.queue-info small { color: var(--muted); }
.queue-actions { display: flex; gap: 4px; }
.queue-actions form { margin: 0; }
.queue-actions button { width: 26px; height: 26px; border: 1px solid var(--line); border-radius: 4px; background: transparent; color: var(--muted); cursor: pointer; }
.queue-actions button:hover { color: #fff; border-color: var(--cyan); }
.queue-actions button.danger:hover { color: #fff; background: var(--magenta); border-color: var(--magenta); }
.queue-empty { color: var(--muted); padding: 10px; }
@media (max-width: 900px) { .maintenance-grid { grid-template-columns: 1fr; } }
.circuit-totals { display: flex; gap: 18px; }
.circuit-totals span { color: var(--muted); font-size: 11px; }
.circuit-totals b { display: block; color: var(--text); font: 700 24px var(--utility); }
.stop-form { display: grid; grid-template-columns: 1fr auto; gap: 8px; }

.firmware-deck { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 18px; }
.firmware-card { padding: 22px; position: relative; background: var(--night-900); border: 1px solid var(--line); overflow: hidden; }
.firmware-card::before { content: ""; position: absolute; inset: 0 0 auto; height: 3px; background: var(--cyan); }
.firmware-card.is-broken::before { background: var(--magenta); }
.firmware-card header { display: flex; justify-content: space-between; color: var(--muted); font: 700 11px var(--utility); }
.firmware-card header span { color: var(--cyan); }
.firmware-card > strong { display: block; margin-top: 28px; font: 700 38px var(--display); }
.firmware-card > strong small { color: var(--muted); font: 11px var(--utility); }
.firmware-card > p { min-height: 42px; color: #b1c4cc; font-size: 12px; overflow-wrap: anywhere; }
.firmware-card footer { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }
.hash-line { padding: 10px; display: flex; justify-content: space-between; gap: 16px; background: var(--night-1000); border: 1px solid var(--line-soft); }
.hash-line span { color: var(--muted); font: 9px var(--utility); }
.hash-line code { color: #b9d3dc; font: 10px var(--utility); }

.update-operations { margin-top: 18px; display: grid; grid-template-columns: .7fr 1.3fr; border: 1px solid var(--line); background: var(--night-900); }
.update-operations > article { padding: 24px; border-right: 1px solid var(--line); }
.update-operations p { color: var(--muted); }
.batch-form { padding: 24px; display: grid; grid-template-columns: 1.2fr 130px 120px 1fr auto; align-items: end; gap: 12px; }
.batch-form label > span { display: block; margin-bottom: 6px; color: #b9cbd2; font-size: 11px; font-weight: 700; }
.batch-form p { margin: 4px 0 0; }

.flight-recorder { margin-top: 18px; padding: 24px; background: #08131b; border: 1px solid var(--line); }
.flight-recorder > header, .timeline-preview > header, .gate-section > header { display: flex; justify-content: space-between; align-items: flex-end; gap: 20px; margin-bottom: 22px; }
.flight-row { min-height: 76px; display: grid; grid-template-columns: 18px 170px 1fr auto; align-items: center; gap: 16px; position: relative; color: inherit; border-top: 1px solid var(--line-soft); text-decoration: none; }
.flight-row::before { content: ""; position: absolute; left: 8px; top: 0; bottom: 0; width: 1px; background: var(--line); }
.flight-node { width: 17px; height: 17px; position: relative; z-index: 1; border: 4px solid #08131b; border-radius: 50%; background: var(--muted); box-shadow: 0 0 0 1px currentColor; }
.flight-node.tone-success { background: var(--cyan); }.flight-node.tone-danger { background: var(--magenta); }.flight-node.tone-warning { background: var(--amber); }.flight-node.tone-active { background: var(--blue); }
.flight-row time { color: var(--muted); font: 9px var(--utility); }
.flight-row strong, .flight-row small { display: block; }
.flight-row small { color: var(--muted); }

.update-shell, .timeline-shell { width: min(1260px, 92vw); margin: 0 auto 80px; }
.update-shell > .notice { margin-top: 22px; }
.update-hero, .timeline-hero { min-height: 300px; padding: 70px 0 38px; display: flex; justify-content: space-between; align-items: flex-end; gap: 40px; }
.update-hero h1, .timeline-hero h1 { font-size: clamp(56px, 8vw, 106px); }
.device-stamp { width: min(440px, 42vw); padding: 22px; border-top: 3px solid var(--blue); background: var(--night-900); }
.device-stamp span, .device-stamp strong, .device-stamp small { display: block; }
.device-stamp span { color: var(--muted); font: 9px var(--utility); letter-spacing: .12em; }
.device-stamp strong { margin: 12px 0 4px; font: 700 27px var(--display); }
.device-stamp small { color: var(--muted); }

.gate-section { padding: 26px; background: var(--night-900); border: 1px solid var(--line); }
.gate-total { padding: 8px 12px; color: var(--amber); border: 1px solid rgba(244,183,85,.35); font: 700 11px var(--utility); }
.gate-total.is-ready { color: var(--cyan); border-color: rgba(67,215,205,.4); }
.gate-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.gate-grid article { min-height: 150px; padding: 18px; position: relative; background: #0b1822; }
.gate-grid article::after { content: ""; position: absolute; inset: auto 0 0; height: 3px; background: var(--magenta); }
.gate-grid article.is-pass::after { background: var(--cyan); }.gate-grid article.is-pilot::after { background: var(--amber); }
.gate-grid b { color: #587482; font: 700 10px var(--utility); }
.gate-grid span, .gate-grid strong, .gate-grid small { display: block; }
.gate-grid span { margin-top: 30px; color: var(--muted); font-size: 11px; }
.gate-grid strong { margin: 4px 0; font: 700 19px var(--display); }
.gate-grid small { color: #78919d; }
.blocker-list { margin-top: 18px; padding: 16px 18px; color: #ffd1dd; background: rgba(240,109,145,.08); border-left: 3px solid var(--magenta); }
.blocker-list ul { margin: 8px 0 0; padding-left: 19px; }
.verify-model { margin-top: 18px; padding: 16px 18px; display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; background: rgba(67,215,205,.06); border-left: 3px solid var(--cyan); }
.verify-model small { display: block; margin-top: 4px; color: var(--muted); max-width: 60ch; }

.region-confirmation { margin-top: 18px; padding: 26px; display: grid; grid-template-columns: 1fr 440px; gap: 50px; align-items: end; background: rgba(244,183,85,.07); border: 1px solid rgba(244,183,85,.3); }
.region-confirmation p { color: var(--muted); }
.execution-plan { margin-top: 18px; display: grid; grid-template-columns: 1.1fr .9fr; background: var(--night-900); border: 1px solid var(--line); }
.selected-firmware, .danger-confirmation { padding: 28px; }
.selected-firmware { border-right: 1px solid var(--line); }
.selected-firmware > p { color: var(--muted); overflow-wrap: anywhere; }
.selected-firmware code { display: block; padding: 12px; color: #b8d1da; background: var(--night-1000); border: 1px solid var(--line-soft); font: 10px var(--utility); overflow-wrap: anywhere; }
.danger-confirmation { background: linear-gradient(145deg, rgba(67,215,205,.07), transparent); }
.execution-plan.is-paused .danger-confirmation { background: linear-gradient(145deg, rgba(240,109,145,.09), transparent); }
.danger-confirmation > p { color: var(--muted); }
.risk-check { padding: 12px; display: grid !important; grid-template-columns: 20px 1fr; gap: 10px; color: #c5d5db; background: rgba(244,183,85,.07); border: 1px solid rgba(244,183,85,.22); }
.risk-check input { width: 18px; height: 18px; margin-top: 2px; }
.risk-check span { margin: 0 !important; }

.timeline-preview, .timeline-board { margin-top: 18px; padding: 26px; background: #08131b; border: 1px solid var(--line); }
.event-timeline { margin: 0; padding: 0; list-style: none; }
.event-timeline li { min-height: 84px; display: grid; grid-template-columns: 180px 1fr; gap: 30px; position: relative; padding: 14px 14px 14px 40px; border-top: 1px solid var(--line-soft); }
.event-timeline li::before { content: ""; position: absolute; left: 7px; top: 28px; width: 13px; height: 13px; z-index: 1; border: 4px solid #08131b; border-radius: 50%; background: var(--blue); box-shadow: 0 0 0 1px var(--blue); }
.event-timeline li::after { content: ""; position: absolute; left: 13px; top: 0; bottom: 0; width: 1px; background: var(--line); }
.event-timeline .event-ok::before { background: var(--cyan); box-shadow: 0 0 0 1px var(--cyan); }.event-timeline .event-warning::before { background: var(--amber); box-shadow: 0 0 0 1px var(--amber); }.event-timeline .event-error::before { background: var(--magenta); box-shadow: 0 0 0 1px var(--magenta); }
.event-timeline time { color: var(--muted); font: 9px var(--utility); }
.event-timeline strong { font-size: 15px; }.event-timeline p { margin: 5px 0 0; color: var(--muted); }.event-timeline small { color: #587482; font: 9px var(--utility); text-transform: uppercase; }
.timeline-hero { min-height: 280px; }
.status-large { padding: 10px 13px; font-size: 12px; }
.flight-summary { display: grid; grid-template-columns: 1.5fr 1fr 1.5fr .8fr; border: 1px solid var(--line); background: var(--night-900); }
.flight-summary article { min-height: 120px; padding: 18px; border-right: 1px solid var(--line); }
.flight-summary article:last-child { border: 0; }.flight-summary span, .flight-summary strong, .flight-summary small { display: block; }.flight-summary span { color: var(--muted); font-size: 10px; }.flight-summary strong { margin-top: 28px; font: 700 16px var(--utility); overflow-wrap: anywhere; }.flight-summary small { color: var(--muted); }
.circuit-alert { margin-top: 18px; padding: 16px 18px; display: flex; gap: 18px; color: #ffd0dc; background: rgba(240,109,145,.09); border-left: 4px solid var(--magenta); }.circuit-alert span { color: var(--muted); }
.timeline-footer-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 18px; }

/* Login */
.login-page { min-height: 100vh; display: grid; place-items: center; padding: 5vw; background: var(--night-1000); }
.login-page::before { content: ""; position: fixed; inset: 0; pointer-events: none; background: linear-gradient(90deg, transparent 49.9%, rgba(255,255,255,.025) 50%, transparent 50.1%), linear-gradient(rgba(255,255,255,.018) 1px, transparent 1px); background-size: 100% 100%, 100% 44px; }
/* Coluna única: a faixa de apresentação ao lado do formulário foi removida em
   12/08/2026, junto com o que ela contava a visitantes não autenticados. */
.login-shell { width: min(430px, 94vw); display: grid; grid-template-columns: 1fr; position: relative; border: 1px solid var(--line); box-shadow: 0 34px 100px rgba(0,0,0,.38); }
.login-panel { padding: clamp(38px,5vw,56px); display: flex; flex-direction: column; justify-content: center; background: var(--night-900); }
.login-panel h2 { margin-bottom: 32px; font-size: 30px; }
.login-panel .notice { margin-top: -12px; }

/* ===== Painel da frota (tipo switch) ===== */
.fleet-board { margin: 22px 0; padding: 20px; background: var(--night-900); border: 1px solid var(--line); border-radius: 8px; box-shadow: var(--shadow); }
.board-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; margin-bottom: 14px; }
.board-head h2 { margin: 0; }
.board-actions { display: flex; align-items: center; gap: 14px; }
.live-dot { display: inline-flex; align-items: center; gap: 7px; color: var(--muted); font: 700 10px var(--utility); letter-spacing: .1em; text-transform: uppercase; }
.live-dot i { width: 8px; height: 8px; border-radius: 50%; background: var(--cyan); box-shadow: 0 0 10px var(--cyan); animation: livePulse 1.8s ease-in-out infinite; }
@keyframes livePulse { 0%,100% { opacity: .35; } 50% { opacity: 1; } }

.board-legend { display: flex; flex-wrap: wrap; gap: 16px; margin-bottom: 16px; }
.board-legend span { display: inline-flex; align-items: center; gap: 7px; color: var(--muted); font-size: 12px; }
.board-legend i { width: 9px; height: 9px; border-radius: 50%; background: currentColor; }
.board-legend .tone-neutral { color: #a5bac4; } .board-legend .tone-active { color: #9bb8ff; }
.board-legend .tone-success { color: #79e6dc; } .board-legend .tone-warning { color: #ffd187; } .board-legend .tone-danger { color: #ff9ab6; }
.board-empty { padding: 30px; text-align: center; color: var(--muted); border: 1px dashed var(--line); border-radius: 6px; }
.board-empty a { color: var(--cyan); }

.switch-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(158px, 1fr)); gap: 10px; }
.port { position: relative; display: flex; flex-direction: column; gap: 8px; padding: 12px 12px 10px; min-height: 98px; background: var(--night-1000); border: 1px solid var(--line); border-radius: 6px; color: #a5bac4; text-decoration: none; overflow: hidden; transition: transform .12s ease, border-color .12s ease; }
.port::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: currentColor; opacity: .9; }
.port:hover { transform: translateY(-2px); border-color: #37576b; }
.port-led { position: absolute; top: 12px; right: 12px; width: 9px; height: 9px; border-radius: 50%; background: currentColor; box-shadow: 0 0 10px currentColor; }
.port-body { display: flex; flex-direction: column; gap: 2px; }
.port-id { font-size: 14px; color: var(--text); }
.port-ip { color: var(--muted); font-size: 11px; font-family: var(--utility); }
.port-device { color: var(--muted); font-size: 11px; }
.port-state { margin-top: auto; align-self: flex-start; padding: 3px 7px; border-radius: 3px; font: 800 9px var(--utility); letter-spacing: .05em; text-transform: uppercase; background: rgba(255,255,255,.05); }
.port.tone-neutral { color: #a5bac4; } .port.tone-active { color: #9bb8ff; background: linear-gradient(180deg, rgba(91,140,255,.10), transparent 70%); }
.port.tone-success { color: #79e6dc; background: linear-gradient(180deg, rgba(67,215,205,.10), transparent 70%); }
.port.tone-warning { color: #ffd187; background: linear-gradient(180deg, rgba(244,183,85,.10), transparent 70%); }
.port.tone-danger { color: #ff9ab6; background: linear-gradient(180deg, rgba(240,109,145,.11), transparent 70%); }
.port.tone-active .port-led, .port.tone-active::before { animation: portPulse 1.15s ease-in-out infinite; }
@keyframes portPulse { 0%,100% { opacity: .4; box-shadow: 0 0 4px currentColor; } 50% { opacity: 1; box-shadow: 0 0 14px currentColor; } }

/* ===== Gavetas (config e lista) ===== */
.drawer { margin: 18px 0; border: 1px solid var(--line); border-radius: 7px; background: var(--night-900); overflow: hidden; }
.drawer > summary { padding: 15px 18px; display: flex; align-items: center; gap: 10px; cursor: pointer; font-weight: 700; list-style: none; }
.drawer > summary::-webkit-details-marker { display: none; }
.drawer > summary .utility-label { margin: 0; }
.drawer > summary::after { content: "▾"; margin-left: auto; color: var(--muted); transition: transform .15s ease; }
.drawer[open] > summary::after { transform: rotate(180deg); }
.drawer > *:not(summary) { margin: 0 18px 18px; }
.config-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(285px, 1fr)); gap: 16px; }
.config-card { padding: 16px; background: var(--night-1000); border: 1px solid var(--line-soft); border-radius: 6px; }
.config-card h3 { margin: 0 0 6px; }
.config-card > p { margin: 0 0 12px; color: var(--muted); font-size: 13px; }
.config-card .stack-form + .stack-form { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line-soft); }
.flight-list { display: flex; flex-direction: column; }

/* ===== Caminho até atualizar (assistente de liberação) ===== */
.release-guide { margin: 0 0 22px; padding: 18px; background: var(--night-1000); border: 1px solid var(--line-soft); border-radius: 6px; }
.release-guide > header { margin-bottom: 14px; }
.release-guide h2 { margin: 2px 0 0; }
.release-step { display: grid; grid-template-columns: minmax(160px, 220px) 1fr; gap: 18px; padding: 14px 0; border-top: 1px solid var(--line-soft); }
.release-step:first-of-type { border-top: 0; }
.release-step-id strong { display: block; font-size: 15px; }
.release-step-id span { color: var(--muted); font-size: 12px; }
.release-step-body h3 { margin: 0 0 4px; font-size: 14px; }
.release-step-body > p { margin: 0 0 10px; color: var(--muted); font-size: 13px; }
.release-note { margin: 0; color: var(--muted); font-size: 12px; }
/* A cor da borda esquerda diz em que etapa o modelo está, sem precisar ler. */
.release-step.is-autorizar, .release-step.is-regiao, .release-step.is-inventario { border-left: 3px solid var(--amber); padding-left: 14px; }
.release-step.is-firmware { border-left: 3px solid var(--magenta); padding-left: 14px; }
.release-step.is-piloto { border-left: 3px solid var(--blue); padding-left: 14px; }
.release-step.is-frota { border-left: 3px solid var(--cyan); padding-left: 14px; }
.release-form { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; }
.release-form label { display: flex; flex-direction: column; gap: 4px; flex: 1 1 260px; font-size: 12px; }
.release-form input { padding: 9px 10px; background: var(--night-850); color: var(--text); border: 1px solid var(--line); border-radius: 4px; }

/* Frase de confirmação: destaque no texto e retorno visual ao digitar. */
.phrase { font-family: var(--utility); letter-spacing: 0.06em; color: var(--cyan); }
input.phrase-ok { border-color: var(--cyan); }
input.phrase-bad { border-color: var(--magenta); }

/* Limpar a frota: ação destrutiva, botão em tom de alerta e resumo do que sai/fica. */
.button-danger { color: #2a0a14; background: var(--magenta); border-color: #f79ab4; }
.wipe-summary { list-style: none; margin: 0 0 12px; padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: 12px; color: var(--muted); }
.wipe-summary li { padding-left: 10px; border-left: 2px solid var(--line); line-height: 1.5; }
.wipe-summary span { font-family: var(--utility); text-transform: uppercase; letter-spacing: 0.06em; }

/* ===== Catálogo de firmware ===== */
/* Ocupa a linha inteira do grid: são muitos campos por entrada e o cartão
   estreito espremeria os formulários de edição. */
.config-card-wide { grid-column: 1 / -1; }
.firmware-catalog-list { list-style: none; margin: 0 0 16px; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 12px; }
.firmware-catalog-item { padding: 12px; background: var(--night-850); border: 1px solid var(--line); border-radius: 5px; }
.firmware-catalog-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.firmware-catalog-head strong { display: flex; align-items: baseline; gap: 8px; }
.firmware-catalog-head span { color: var(--cyan); font-family: var(--utility); font-size: 11px; }
.firmware-catalog-meta { margin: 8px 0 0; color: var(--muted); font-size: 12px; line-height: 1.6; word-break: break-all; }
.firmware-catalog-warn { margin: 6px 0 0; color: var(--amber, var(--muted)); font-size: 11px; word-break: break-all; }
.firmware-catalog-edit, .firmware-catalog-new, .firmware-catalog-archive { margin-top: 12px; }
.firmware-catalog-edit summary, .firmware-catalog-new summary, .firmware-catalog-archive summary { cursor: pointer; color: var(--cyan); font-family: var(--utility); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; }
.firmware-catalog-edit[open] summary, .firmware-catalog-new[open] summary { margin-bottom: 12px; }
.firmware-catalog-archive ul { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.firmware-catalog-archive li { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 10px; background: var(--night-850); border: 1px solid var(--line); font-size: 12px; }

/* ===== Usuários ===== */
.role-legend { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.role-legend li { display: flex; flex-direction: column; gap: 2px; }
.role-legend strong { color: var(--text); }
.role-legend small { color: var(--muted); font-size: 12px; }
.inline-mini { display: inline-flex; gap: 6px; align-items: center; }
.inline-mini input, .inline-mini select { width: auto; min-width: 96px; }

/* ===== Confirmação de piloto ===== */
.pilot-confirm { margin: 0 0 14px; padding: 16px 18px; display: flex; flex-wrap: wrap; gap: 16px; align-items: center; justify-content: space-between; background: rgba(244,183,85,.09); border: 1px solid var(--amber); border-radius: 7px; }
.pilot-confirm strong { display: block; margin: 6px 0 4px; color: var(--text); }
.pilot-confirm small { color: var(--muted); }
.pilot-confirm-actions { display: flex; gap: 10px; flex-wrap: wrap; }

@media print {
  :root { --text: #0a1a24; --muted: #4b606b; --line: #b8c5ca; --line-soft: #d8e0e3; --night-950: #fff; --night-900: #fff; --night-1000: #f2f5f6; }
  body { color: #0a1a24; background: #fff; font-size: 10px; }
  .no-print { display: none !important; }
  .report-shell { width: 100%; margin: 0; padding: 0; }
  .report-heading h1 { font-size: 46px; }
  .report-metrics article { min-height: 70px; }
  .report-table-wrap { overflow: visible; }
  .report-table { min-width: 0; font-size: 8px; }
  .report-table td:last-child { min-width: 0; }
  .status-pill { border: 1px solid #9aabb2; color: #203642 !important; background: transparent !important; }
  tr { break-inside: avoid; }
}

/* Varredura de faixa: progresso dos três estágios e filtro do cadastro. */
.scan-progress { margin: 0 0 26px; padding: 20px 24px; background: var(--night-900); border: 1px solid var(--line-soft); border-radius: 14px; }
.scan-stage { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
.scan-counter { font: 13px var(--utility); color: var(--muted); }
.scan-counter b { color: var(--text); font-size: 15px; }
.scan-bar { height: 8px; background: var(--night-1000); border-radius: 99px; overflow: hidden; }
.scan-bar-fill { height: 100%; width: 0; background: linear-gradient(90deg, var(--blue), var(--cyan)); border-radius: 99px; transition: width .4s ease; }
.scan-filter { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; }
.scan-filter input[type="search"] { flex: 1 1 240px; padding: 10px 14px; background: var(--night-1000); color: var(--text); border: 1px solid var(--line); border-radius: 10px; }

@media (prefers-reduced-motion: reduce) { *,*::before,*::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; } }
@media (max-width: 1000px) {
  .diagnostic-line { grid-template-columns: 1fr; }
  .diagnostic-line ol { gap: 8px; }
  .diagnostic-line li:not(:last-child)::after { display: none; }
  .dashboard-intro { min-height: 0; align-items: flex-start; flex-direction: column; }
  .default-route { width: 100%; flex-basis: auto; }
  .fleet-verdict { grid-template-columns: 150px 1fr; }
  .fleet-verdict .button { grid-column: 1 / -1; }
  .metric-line { grid-template-columns: repeat(3, 1fr); }
  .metric-line article { border-bottom: 1px solid var(--line-soft); }
  .guided-grid { grid-template-columns: 1fr; }
  .run-list article { grid-template-columns: 140px 1fr auto; }
  .run-list article > div:nth-child(3) { display: none; }
  .ip-grid { grid-template-columns: repeat(3, 1fr); }
  .extraction-summary { grid-template-columns: repeat(2, 1fr); }
  .confirm-import { grid-template-columns: 1fr; }
  .report-metrics { grid-template-columns: repeat(3, 1fr); }
  .circuit-strip { grid-template-columns: 1fr auto; }
  .circuit-strip form { grid-column: 1 / -1; }
  .update-operations { grid-template-columns: 1fr; }
  .update-operations > article { border-right: 0; border-bottom: 1px solid var(--line); }
  .batch-form { grid-template-columns: 1fr 1fr; }
  .batch-form > div, .batch-form .grow, .batch-form .button { grid-column: 1 / -1; }
  .gate-grid { grid-template-columns: repeat(2, 1fr); }
  .region-confirmation, .execution-plan { grid-template-columns: 1fr; }
  .selected-firmware { border-right: 0; border-bottom: 1px solid var(--line); }
  .flight-summary { grid-template-columns: 1fr 1fr; }
  .flight-summary article { border-bottom: 1px solid var(--line); }
}

@media (max-width: 650px) {
  .topbar { padding: 12px 4vw; }
  .brand-small b, .read-only-flag, .user-chip { display: none; }
  .page-shell { width: 94vw; margin-top: 12px; }
  .diagnostic-line ol { grid-template-columns: 1fr 1fr; }
  .dashboard-intro { padding-top: 44px; }
  .dashboard-intro h1, .review-hero h1 { font-size: 53px; }
  .fleet-verdict { grid-template-columns: 1fr; }
  .metric-line { grid-template-columns: 1fr 1fr; }
  .metric-line article { padding: 17px 14px; }
  .section-heading, .heading-actions { align-items: flex-start; flex-direction: column; }
  .section-heading > p { text-align: left; }
  .split-fields, .alternative-grid { grid-template-columns: 1fr; }
  .inline-form { align-items: stretch; flex-direction: column; }
  .run-list article { grid-template-columns: 1fr auto; }
  .run-time { grid-column: 1 / -1; }
  .ip-grid { grid-template-columns: 1fr 1fr; }
  .extraction-summary { grid-template-columns: 1fr; }
  .review-panel > header { align-items: flex-start; flex-direction: column; }
  .report-heading { flex-direction: column; }
  .report-brand { text-align: left; }
  .report-metrics { grid-template-columns: repeat(2, 1fr); }
  .firmware-deck { grid-template-columns: 1fr; }
  .circuit-strip { grid-template-columns: 1fr; }
  .circuit-totals { justify-content: space-between; }
  .stop-form { grid-template-columns: 1fr; }
  .gate-grid { grid-template-columns: 1fr; }
  .update-hero, .timeline-hero { min-height: 0; align-items: flex-start; flex-direction: column; }
  .device-stamp { width: 100%; }
  .event-timeline li { grid-template-columns: 1fr; gap: 6px; }
  .flight-row { grid-template-columns: 18px 1fr auto; padding: 12px 0; }
  .flight-row time { grid-column: 2 / -1; }
  .flight-summary { grid-template-columns: 1fr; }
  .timeline-footer-actions { align-items: stretch; flex-direction: column; }
  .page-footer { flex-direction: column; gap: 7px; }
  .login-page { padding: 0; }
  .login-shell { width: 100%; }
  .login-panel { padding: 48px 26px; }
}
