/* CalaDash — identidade visual (SPEC 11). Tokens em :root; tema escuro via [data-theme=dark]. */
@font-face{font-family:"Be Vietnam Pro";font-weight:400;font-display:swap;src:url(/static/fonts/bevietnampro-400.woff2) format("woff2")}
@font-face{font-family:"Be Vietnam Pro";font-weight:500;font-display:swap;src:url(/static/fonts/bevietnampro-500.woff2) format("woff2")}
@font-face{font-family:"Be Vietnam Pro";font-weight:600;font-display:swap;src:url(/static/fonts/bevietnampro-600.woff2) format("woff2")}
@font-face{font-family:"Be Vietnam Pro";font-weight:700;font-display:swap;src:url(/static/fonts/bevietnampro-700.woff2) format("woff2")}

:root{
  --c-primary:#3694FD;--c-blue-dark:#2C79EE;--c-royal:#0440FE;--c-indigo:#2F33F5;
  --c-blue-soft:#5192F4;--c-sky:#93C3FA;--c-violet:#872BFF;--c-lilac:#AD7DFC;
  --c-cyan:#05FCFF;--c-ink:#22212B;--c-ink-2:#101820;--c-gray-text:#6D6D72;
  --c-bg:#F2F0EB;--c-bg-2:#E8E6E0;--c-white:#FFFFFF;
  --ok:#00E2A0;--ok-text:#00875F;--warn:#FFB547;--warn-text:#9A5B00;--crit:#FF5B8A;--crit-text:#C21E50;--nodata:#6D6D72;
  --grad-primary:linear-gradient(90deg,#3694FD 0%,#0440FE 100%);
  --grad-ai:linear-gradient(135deg,#5192F5 0%,#3694FC 45%,#872BFF 70%);
  --bg:var(--c-bg);--surface:#FFFFFF;--surface-2:#F7F6F2;--text:#22212B;--muted:#6D6D72;--border:#E8E6E0;
  --link:#1F6FD1;--shadow:0 8px 24px rgba(54,148,253,.18);--shadow-sm:0 2px 8px rgba(34,33,43,.06);
  --font:"Be Vietnam Pro",Helvetica,Arial,sans-serif;--r:16px;--r-sm:10px;--side:248px;
  color-scheme:light;
}
[data-theme=dark]{
  --bg:#22212B;--surface:#2C2B36;--surface-2:#33323E;--text:#F2F0EB;--muted:#A7ADB8;--border:#3A3946;
  --link:#7DB8FF;--shadow:0 8px 24px rgba(0,0,0,.35);--shadow-sm:0 2px 8px rgba(0,0,0,.25);
  --ok-text:#3BE8B2;--warn-text:#FFC56E;--crit-text:#FF85A6;color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--text);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}
:focus-visible{outline:3px solid var(--c-primary);outline-offset:2px;border-radius:4px}
h1,h2,h3{margin:0;font-weight:700;line-height:1.25}
.muted{color:var(--muted)}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.num,td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
small{font-size:12px}
code{font-size:12px;background:var(--surface-2);padding:1px 5px;border-radius:5px}

/* ícones lucide via máscara: herdam currentColor */
.ic{display:inline-block;width:18px;height:18px;flex:none;background:currentColor;-webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat;vertical-align:-3px}

/* ---------- layout ---------- */
.app{display:grid;grid-template-columns:var(--side) 1fr;min-height:100vh}
.side{background:var(--c-ink);color:#E6E4DE;position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column;z-index:30}
.brand{display:flex;flex-direction:column;gap:2px;padding:20px 20px 14px}
.brand b{font-size:26px;font-weight:700;letter-spacing:-.5px;background:var(--grad-primary);-webkit-background-clip:text;background-clip:text;color:transparent;line-height:1}
.brand span{font-size:12px;color:#B9B7C2}
#nav{padding:4px 10px 20px;flex:1}
.nav-g p{margin:14px 10px 6px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#8E8C99;font-weight:600}
.nav-g a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;color:#E6E4DE;font-weight:500}
.nav-g a:hover{background:#2E2D39;text-decoration:none}
.nav-g a.on{background:linear-gradient(90deg,rgba(54,148,253,.28),rgba(135,43,255,.18));color:#fff;box-shadow:inset 3px 0 0 var(--c-primary)}
.side-f{padding:14px 20px;font-size:11px;line-height:1.45;color:#8E8C99;border-top:1px solid #33323E}
.main{min-width:0;display:flex;flex-direction:column}
.top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);padding:10px 24px;display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.top-r{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#menu{display:none}
#filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
#fresh{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);cursor:help;white-space:nowrap}
#view{padding:20px 24px 48px;outline:none;max-width:1680px;width:100%}
.scrim{display:none}

/* ---------- filtros ---------- */
.fl,.ms summary{display:flex;flex-direction:column;justify-content:center;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:4px 10px;min-height:42px;cursor:pointer}
.fl select,.fl input[type=date]{border:0;background:transparent;color:var(--text);font:inherit;font-weight:600;padding:0;outline-offset:4px}
.ms-l{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}
.ms-v{font-weight:600;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ms{position:relative}.ms summary{list-style:none}.ms summary::-webkit-details-marker{display:none}
.ms[open] summary{border-color:var(--c-primary)}
.ms-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:40;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);width:280px;padding:10px}
.ms-q{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface-2);color:var(--text);font:inherit;margin-bottom:6px}
.ms-list{max-height:260px;overflow:auto;display:flex;flex-direction:column}
.ms-list label{display:flex;gap:8px;align-items:flex-start;padding:5px 4px;border-radius:6px;cursor:pointer}
.ms-list label:hover{background:var(--surface-2)}
.ms-f{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--border);margin-top:6px;padding-top:8px}
.fl-chk{flex-direction:row;align-items:center;gap:8px;font-weight:500}
.fl-cmp{font-size:12px;color:var(--muted)}

/* ---------- botões ---------- */
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);font:600 13px/1 var(--font);padding:9px 14px;border-radius:10px;cursor:pointer;white-space:nowrap}
.btn:hover{border-color:var(--c-primary);text-decoration:none}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn-primary{background:var(--grad-primary);border:0;color:#fff}
.btn-primary:hover{filter:brightness(1.07)}
.btn-danger{background:var(--crit-text);border:0;color:#fff}
.btn-ghost{background:transparent}
.btn-sm{padding:6px 10px;font-size:12px}
.btn-link{border:0;background:none;color:var(--link);font:inherit;cursor:pointer;padding:0;font-weight:600}
.icon-btn{border:1px solid var(--border);background:var(--surface);color:var(--text);width:38px;height:38px;border-radius:10px;display:inline-grid;place-items:center;cursor:pointer}
.icon-btn:hover{border-color:var(--c-primary)}
.readonly [data-write]{display:none!important}

/* ---------- cabeçalho de página ---------- */
.page-h{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:10px;margin-bottom:16px}
.page-h h1{font-size:24px;letter-spacing:-.3px}
.page-h p{margin:4px 0 0;color:var(--muted);max-width:860px}
.crumb{font-size:12px;color:var(--muted);margin-bottom:4px}

/* ---------- grid ---------- */
.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;margin-bottom:16px}
.c12{grid-column:span 12}.c8{grid-column:span 8}.c7{grid-column:span 7}.c6{grid-column:span 6}.c5{grid-column:span 5}.c4{grid-column:span 4}.c3{grid-column:span 3}
.stack{display:flex;flex-direction:column;gap:16px}

/* ---------- cards ---------- */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-sm);min-width:0;display:flex;flex-direction:column}
.card-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:16px 18px 0}
.card-h h2{font-size:15px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.card-sub{margin:3px 0 0;color:var(--muted);font-size:12.5px}
.card-actions{display:flex;gap:6px;flex-wrap:wrap}
.card-b{padding:14px 18px 18px;min-width:0;flex:1}
.card-b>.tbl-wrap{margin:0 -18px -18px;max-width:none;border-top:1px solid var(--border)}

/* ---------- KPI ---------- */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;margin-bottom:16px}
.kpi-grid.hero6{grid-template-columns:repeat(6,minmax(0,1fr))}
.kpi-hero .kpi-value{font-size:clamp(22px,1.75vw,34px);white-space:nowrap}
.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:14px 16px;display:flex;flex-direction:column;gap:6px;color:var(--text);box-shadow:var(--shadow-sm);min-width:0;position:relative}
a.kpi:hover{text-decoration:none;border-color:var(--c-primary)}
.kpi-top{display:flex;justify-content:space-between;gap:6px;align-items:flex-start}
.kpi-label{font-size:12.5px;font-weight:600;color:var(--muted)}
.kpi-badges{display:flex;gap:3px;align-items:center;flex:none}
.kpi-info{color:var(--muted);cursor:help;display:inline-flex}.kpi-info .ic{width:15px;height:15px}
.kpi-value{font-size:30px;font-weight:700;letter-spacing:-.5px;line-height:1.1;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.kpi-sub{font-size:12px;color:var(--muted)}
.kpi-row{display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:26px}
.kpi-foot{display:flex;justify-content:space-between;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px;border-top:1px dashed var(--border);padding-top:6px;margin-top:auto}
.kpi-target{color:var(--muted)}
.delta{font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums}
.delta.good{color:var(--ok-text)}.delta.bad{color:var(--crit-text)}.delta.flat{color:var(--muted);font-weight:500}
.spark{color:var(--c-primary)}
.kpi-hero{background:var(--grad-ai);border:0;color:#fff;box-shadow:var(--shadow)}
.kpi-hero .kpi-label,.kpi-hero .kpi-target,.kpi-hero .kpi-sub,.kpi-hero .kpi-info,.kpi-hero .delta.flat{color:rgba(255,255,255,.88)}
.kpi-hero .delta.good,.kpi-hero .delta.bad{color:#fff;background:rgba(16,24,32,.28);padding:1px 7px;border-radius:20px}
.kpi-hero .spark{color:#fff}
.kpi-hero .kpi-foot{border-top-color:rgba(255,255,255,.35)}
.kpi-hero .light{background:rgba(16,24,32,.32);color:#fff}
.kpi-hero .kb{background:rgba(255,255,255,.22);color:#fff;border-color:transparent}

/* farol */
.light{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;border-radius:20px;padding:1px 8px 1px 6px;background:var(--surface-2);white-space:nowrap}
.light b{font-size:11px;line-height:1}
.light-ok b{color:var(--ok)}.light-ok{color:var(--ok-text)}
.light-warn b{color:var(--warn)}.light-warn{color:var(--warn-text)}
.light-crit b{color:var(--crit)}.light-crit{color:var(--crit-text)}
.light-nodata b,.light-nodata{color:var(--nodata)}
[data-theme=dark] .light-nodata,[data-theme=dark] .light-nodata b{color:#A7ADB8}
td .light{padding:0 4px 0 0;background:none}

/* selos M/D/E/P */
.kb{font:700 10px/1 var(--font);text-decoration:none;border:1px solid var(--border);border-radius:5px;padding:3px 4px;color:var(--muted);cursor:help;background:var(--surface-2)}
.kb-P{color:#7A3FD1;border-color:#D9C6F7}.kb-E{color:#1F6FD1;border-color:#BCD8FB}
[data-theme=dark] .kb-P{color:#C9A6FF;border-color:#5A3F86}[data-theme=dark] .kb-E{color:#8EC2FF;border-color:#2C4B74}
.ai-badge{display:inline-flex;align-items:center;gap:3px;background:var(--grad-ai);color:#fff;font:700 10px/1 var(--font);padding:3px 7px 3px 5px;border-radius:20px}
.ai-badge .ic{width:12px;height:12px}

.chip{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;border-radius:20px;padding:2px 9px;background:var(--surface-2);color:var(--text);border:1px solid var(--border);white-space:nowrap}
.chip-ok{color:var(--ok-text);border-color:color-mix(in srgb,var(--ok) 50%,transparent);background:color-mix(in srgb,var(--ok) 12%,transparent)}
.chip-warn{color:var(--warn-text);border-color:color-mix(in srgb,var(--warn) 55%,transparent);background:color-mix(in srgb,var(--warn) 14%,transparent)}
.chip-crit{color:var(--crit-text);border-color:color-mix(in srgb,var(--crit) 50%,transparent);background:color-mix(in srgb,var(--crit) 11%,transparent)}
.chip-info{color:var(--link);border-color:color-mix(in srgb,var(--c-primary) 45%,transparent);background:color-mix(in srgb,var(--c-primary) 10%,transparent)}
.chip-muted{color:var(--muted)}
.chip-ia{border-color:#CDB5F7}.chip-manual{border-style:dashed}
.chip button{border:0;background:none;color:inherit;cursor:pointer;padding:0 0 0 2px;font-size:14px;line-height:1}
.chips{display:flex;flex-wrap:wrap;gap:4px}
.stars{color:#E3A008;letter-spacing:1px;white-space:nowrap}.stars .off{color:var(--border)}
.ch{display:inline-flex;color:var(--muted)}

/* ---------- tabelas ---------- */
.tbl-wrap{overflow:auto;max-width:100%;-webkit-overflow-scrolling:touch}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{position:sticky;top:0;background:var(--surface-2);text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600;white-space:nowrap;padding:0;border-bottom:1px solid var(--border);z-index:1}
.tbl th button{all:unset;cursor:pointer;display:block;padding:9px 12px;width:100%;box-sizing:border-box;text-align:inherit}
.tbl th button:focus-visible{outline:2px solid var(--c-primary)}
.tbl td{padding:9px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
.tbl tbody tr:last-child td{border-bottom:0}
.tbl tr.rowlink{cursor:pointer}.tbl tr.rowlink:hover td{background:color-mix(in srgb,var(--c-primary) 6%,transparent)}
.tbl td.wrap{white-space:normal;min-width:160px;max-width:420px}
.tbl td.nowrap{white-space:nowrap}
.tbl tr.more td{text-align:center;padding:10px}
.tbl-sm td,.tbl-sm th button{padding:5px 8px}
.mbar{display:inline-flex;align-items:center;gap:8px;min-width:120px;width:100%;justify-content:flex-end}
.mbar i{display:block;height:7px;border-radius:4px;background:var(--c-sky);order:2;flex:0 0 auto;max-width:70px}
.mbar span{order:1;font-variant-numeric:tabular-nums}
.mbar-ok i{background:var(--ok)}.mbar-warn i{background:var(--warn)}.mbar-crit i{background:var(--crit)}

/* ---------- gráficos ---------- */
.chart-box{position:relative}
.chart{width:100%}
.chart-data{margin-top:6px;font-size:12px}
.chart-data summary{cursor:pointer;color:var(--link);font-weight:600;width:max-content}
.chart-data .tbl-wrap{max-height:260px;margin-top:6px;border:1px solid var(--border);border-radius:8px}

.bullet{position:relative;height:22px;border-radius:6px;overflow:hidden;background:var(--surface-2);margin-top:6px}
.bullet .z{position:absolute;top:0;bottom:0;opacity:.28}
.bullet .z-ok{background:var(--ok)}.bullet .z-warn{background:var(--warn)}.bullet .z-crit{background:var(--crit)}
.bullet .bar{position:absolute;left:0;top:7px;height:8px;background:var(--c-ink);border-radius:4px}
[data-theme=dark] .bullet .bar{background:#F2F0EB}
.bullet .tgt{position:absolute;top:2px;bottom:2px;width:3px;background:var(--c-violet);border-radius:2px}
.bullet-l{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:3px}

/* ---------- estados ---------- */
.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;color:var(--muted);padding:26px 12px}
.empty p{margin:0;font-weight:600}
.loading{display:flex;align-items:center;gap:10px;color:var(--muted);padding:40px 0;justify-content:center}
.spinner{width:20px;height:20px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--c-primary);animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.error-box{display:flex;gap:12px;align-items:flex-start;background:color-mix(in srgb,var(--crit) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--crit) 40%,transparent);color:var(--text);border-radius:12px;padding:14px 16px}
.error-box p{margin:2px 0 0;color:var(--muted)}
.banner{display:flex;gap:10px;align-items:flex-start;border-radius:12px;padding:10px 14px;margin-bottom:16px;font-size:13px;border:1px solid var(--border);background:var(--surface)}
.banner-info{border-color:color-mix(in srgb,var(--c-primary) 40%,transparent);background:color-mix(in srgb,var(--c-primary) 7%,var(--surface))}
.banner-warn{border-color:color-mix(in srgb,var(--warn) 55%,transparent);background:color-mix(in srgb,var(--warn) 10%,var(--surface))}
.banner .ic{color:var(--link);margin-top:1px}

/* ---------- recomendação ---------- */
.recos{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.reco{background:var(--surface);border:1px solid var(--border);border-left:5px solid var(--nodata);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.reco-crit{border-left-color:var(--crit)}.reco-warn{border-left-color:var(--warn)}.reco-ok{border-left-color:var(--ok)}
.reco header{display:flex;align-items:center;gap:8px}
.reco-rule{font:700 11px/1 var(--font);background:var(--c-ink);color:#fff;padding:4px 7px;border-radius:6px}
[data-theme=dark] .reco-rule{background:#4A4958}
.reco-impact{margin-left:auto;font-weight:700;font-size:16px;font-variant-numeric:tabular-nums}
.reco-impact small{font-weight:500;color:var(--muted);font-size:12px}
.reco h3{font-size:14.5px}
.reco p{margin:0;font-size:13px;color:var(--muted)}.reco p b{color:var(--text)}
.reco footer{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-top:auto;padding-top:6px;border-top:1px dashed var(--border)}
.reco-st{font-size:12px;color:var(--muted);display:flex;gap:6px;align-items:center}
select,input[type=text],input[type=number],input[type=search],input[type=date],textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:6px 9px}
textarea{width:100%}

/* ---------- segmented ---------- */
.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:3px;gap:2px}
.seg button{border:0;background:transparent;color:var(--muted);font:600 12px/1 var(--font);padding:7px 11px;border-radius:8px;cursor:pointer}
.seg button[aria-selected=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}

/* ---------- modal / toast ---------- */
dialog.modal{border:0;padding:0;border-radius:16px;background:var(--surface);color:var(--text);width:min(560px,calc(100vw - 32px));box-shadow:0 20px 60px rgba(0,0,0,.35)}
dialog.modal-wide{width:min(980px,calc(100vw - 32px))}
dialog::backdrop{background:rgba(16,24,32,.55)}
.modal-in>header{display:flex;justify-content:space-between;align-items:center;padding:16px 18px;border-bottom:1px solid var(--border)}
.modal-in>header h2{font-size:16px}
.modal-b{padding:16px 18px;max-height:70vh;overflow:auto}
.modal-in>footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--border)}
.field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px;font-weight:600;font-size:13px}
.field small{font-weight:400;color:var(--muted)}
#toasts{position:fixed;right:16px;bottom:84px;z-index:100;display:flex;flex-direction:column;gap:8px;max-width:min(420px,calc(100vw - 32px))}
.toast{display:flex;gap:10px;align-items:flex-start;background:var(--c-ink);color:#fff;padding:12px 14px;border-radius:12px;box-shadow:var(--shadow);border-left:4px solid var(--c-primary);transition:opacity .3s,transform .3s}
.toast-ok{border-left-color:var(--ok)}.toast-warn{border-left-color:var(--warn)}.toast-crit{border-left-color:var(--crit)}
.toast.out{opacity:0;transform:translateY(8px)}

/* ---------- transcript ---------- */
.tx{display:flex;flex-direction:column;gap:8px}
.bub{max-width:82%;padding:9px 12px;border-radius:14px;background:var(--surface-2);border:1px solid var(--border);white-space:pre-wrap;overflow-wrap:anywhere}
.bub-user{align-self:flex-end;background:color-mix(in srgb,var(--c-primary) 14%,var(--surface));border-color:color-mix(in srgb,var(--c-primary) 35%,transparent)}
.bub-agent{background:color-mix(in srgb,var(--c-violet) 12%,var(--surface));border-color:color-mix(in srgb,var(--c-violet) 35%,transparent)}
.bub-meta{display:flex;gap:8px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin-top:4px;white-space:normal}
.tx-ev{align-self:center;font-size:11.5px;color:var(--muted);background:var(--surface);border:1px dashed var(--border);border-radius:20px;padding:2px 10px}
dl.kv{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:0;font-size:13px}
dl.kv dt{color:var(--muted)}dl.kv dd{margin:0;font-weight:600;overflow-wrap:anywhere}

/* ---------- war room (Tempo Real) ---------- */
body.war-room{background:#22212B}
.pulse{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 0 rgba(0,226,160,.6);animation:pulse 1.6s infinite}
.pulse.paused{animation:none;background:var(--nodata)}
@keyframes pulse{70%{box-shadow:0 0 0 9px rgba(0,226,160,0)}100%{box-shadow:0 0 0 0 rgba(0,226,160,0)}}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100vw);background:var(--surface);border-left:1px solid var(--border);box-shadow:-10px 0 40px rgba(0,0,0,.35);z-index:60;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .25s}
.drawer.open{transform:none}
.drawer>header{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--border)}
.drawer>.drawer-b{flex:1;overflow:auto;padding:14px 16px}
.drawer>footer{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--border);flex-wrap:wrap}

/* ---------- login ---------- */
.login{display:grid;grid-template-columns:1.1fr 1fr;min-height:100vh}
.login-art{background:var(--grad-ai);color:#fff;display:flex;flex-direction:column;justify-content:space-between;padding:48px}
.login-art .wm{font-size:44px;font-weight:700;letter-spacing:-1px}
.login-art h1{font-size:34px;line-height:1.15;max-width:460px}
.login-art p{opacity:.9;max-width:440px}
.login-form{display:flex;align-items:center;justify-content:center;padding:32px 16px;background:var(--bg)}
.login-form form{width:min(380px,100%);background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:28px;box-shadow:var(--shadow)}
.login-form h2{font-size:20px;margin-bottom:4px}
.login-form input{width:100%;padding:11px 12px;font-size:15px}
.login-form .btn{width:100%;justify-content:center;padding:13px;font-size:14px;margin-top:6px}
.login-err{color:var(--crit-text);font-weight:600;min-height:20px;font-size:13px;margin:6px 0}

/* ---------- responsivo ---------- */
@media (max-width:1500px){.kpi-grid.hero6{grid-template-columns:repeat(3,minmax(0,1fr))}.kpi-hero .kpi-value{font-size:32px}}
@media (max-width:1180px){.c8,.c7,.c6,.c5,.c4{grid-column:span 12}.c3{grid-column:span 6}}
@media (max-width:1023px){
  .app{grid-template-columns:1fr}
  .side{position:fixed;left:0;top:0;bottom:0;width:var(--side);transform:translateX(-100%);transition:transform .25s}
  body.nav-open .side{transform:none}
  body.nav-open .scrim{display:block;position:fixed;inset:0;background:rgba(16,24,32,.5);z-index:25}
  #menu{display:inline-grid}
  .top{padding:10px 16px}
  #view{padding:16px 16px 40px}
}
@media (max-width:760px){
  .kpi-grid.hero6{grid-template-columns:repeat(2,minmax(0,1fr))}
  .c3{grid-column:span 12}
  .login{grid-template-columns:1fr}.login-art{padding:28px 20px;min-height:auto;gap:14px}.login-art h1{font-size:24px}
  .kpi-value{font-size:24px}
  #filters{width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}
  .fl,.ms summary{min-height:38px}
  .fl-cmp{display:none}
  .page-h h1{font-size:20px}
  .bub{max-width:92%}
}
@media (max-width:440px){.kpi-grid.hero6{grid-template-columns:1fr}.kpi-grid{grid-template-columns:1fr}.top-r .btn span{display:none}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media print{.side,.top,.chart-data,.card-actions{display:none!important}.app{display:block}}
