/* ===========================================================================
   GD Engenharia — Gestão Predial · Design System (premium, marca GD)
   Paleta: navy #0f2a43 · dourado #c9a227 · slate/greys · estados semânticos
   =========================================================================== */
:root {
  --navy: #0f2a43;
  --navy-2: #16395c;
  --navy-3: #1e4b76;
  --gold: #c9a227;
  --gold-soft: #e7d9a5;
  --ink: #1a2430;
  --muted: #6b7b8b;
  --line: #e2e8ef;
  --line-2: #eef2f6;
  --bg: #f4f6f9;
  --card: #ffffff;
  --danger: #c0392b;
  --warn: #e67e22;
  --ok: #2e7d32;
  --info: #1e6fb8;
  --radius: 12px;
  --radius-sm: 8px;
  --shadow: 0 1px 3px rgba(16,42,67,.08), 0 4px 20px rgba(16,42,67,.06);
  --shadow-lg: 0 10px 40px rgba(16,42,67,.18);
  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body { font-family: var(--font); color: var(--ink); background: var(--bg); font-size: 15px; line-height: 1.5; -webkit-font-smoothing: antialiased; }
.boot { display: grid; place-items: center; height: 100vh; color: var(--muted); }
a { color: var(--navy-3); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2, h3, h4 { color: var(--navy); margin: 0 0 .4em; line-height: 1.25; }
.muted { color: var(--muted); }
.small { font-size: 12.5px; }
.xsmall { font-size: 11px; }
.mt { margin-top: 14px; }
.nowrap { white-space: nowrap; }

/* ---------- Layout ---------- */
.layout { display: grid; grid-template-columns: 264px 1fr; min-height: 100vh; }
.sidebar { background: linear-gradient(180deg, var(--navy) 0%, #0b2036 100%); color: #dce6f0; display: flex; flex-direction: column; position: sticky; top: 0; height: 100vh; }
.brand { padding: 20px 18px 14px; border-bottom: 1px solid rgba(255,255,255,.08); background: rgba(255,255,255,.03); }
.brand svg { display: block; }
.nav { padding: 12px 10px; flex: 1; overflow-y: auto; }
.nav-item { display: flex; align-items: center; gap: 11px; padding: 10px 13px; border-radius: 10px; color: #b9c8d8; font-weight: 500; font-size: 14px; margin-bottom: 3px; transition: all .15s; }
.nav-item:hover { background: rgba(255,255,255,.07); color: #fff; text-decoration: none; }
.nav-item.active { background: linear-gradient(90deg, rgba(201,162,39,.22), rgba(201,162,39,.06)); color: #fff; box-shadow: inset 3px 0 0 var(--gold); }
.nav-item.destaque { background: linear-gradient(90deg, rgba(201,162,39,.20), rgba(201,162,39,.04)); color: #fff; box-shadow: inset 3px 0 0 var(--gold); font-weight: 700; border: 1px solid rgba(201,162,39,.35); }
.nav-item.destaque:hover { background: linear-gradient(90deg, rgba(201,162,39,.30), rgba(201,162,39,.10)); }
.nav-star { margin-left: auto; color: var(--gold); font-size: 12px; }
.nav-ico { font-size: 17px; width: 22px; text-align: center; }
.side-foot { padding: 14px; border-top: 1px solid rgba(255,255,255,.08); }
.user-chip { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.avatar { width: 38px; height: 38px; border-radius: 50%; background: var(--gold); color: var(--navy); display: grid; place-items: center; font-weight: 700; font-size: 16px; }
.user-meta { line-height: 1.2; overflow: hidden; }
.user-meta strong { display: block; color: #fff; font-size: 13.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.user-meta span { font-size: 11.5px; color: #9fb1c4; }
.credit { margin-top: 10px; font-size: 10.5px; color: #7e93a8; letter-spacing: .2px; }
.content { padding: 26px 30px 60px; overflow-x: hidden; }
.demo-banner { background: #fff4e0; border: 1px solid #f0d9a8; color: #8a5a00; padding: 9px 14px; border-radius: 10px; margin-bottom: 18px; font-size: 13.5px; }

/* Faixa de destaque: Conformidade para Seguradora (foco principal) */
.seg-banner { display: flex; align-items: center; gap: 16px; background: linear-gradient(100deg, var(--navy), var(--navy-3)); color: #fff; border-radius: 14px; padding: 15px 20px; margin-bottom: 18px; box-shadow: var(--shadow); border-left: 5px solid var(--gold); text-decoration: none; transition: transform .15s, box-shadow .15s; }
.seg-banner:hover { transform: translateY(-1px); text-decoration: none; box-shadow: var(--shadow-lg); }
.seg-banner-ico { font-size: 30px; line-height: 1; }
.seg-banner-txt { flex: 1; min-width: 0; }
.seg-banner-txt strong { display: block; font-size: 16px; color: #fff; }
.seg-banner-txt span { font-size: 13px; color: #cdd9e6; }
.seg-banner-txt b { color: #fff; }
.seg-pend { color: #ffb4ab !important; } .seg-ok { color: #a7e3b8 !important; }
.seg-banner-cta { background: var(--gold); color: var(--navy); font-weight: 700; padding: 9px 15px; border-radius: 9px; white-space: nowrap; font-size: 13px; }
@media (max-width: 720px) { .seg-banner { flex-wrap: wrap; } .seg-banner-cta { width: 100%; text-align: center; } }

/* ---------- Page head ---------- */
.page-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; margin-bottom: 20px; flex-wrap: wrap; }
.page-head h2 { font-size: 24px; margin: 0; }
.page-head .muted { margin: 3px 0 0; font-size: 13.5px; }
.head-actions { display: flex; gap: 8px; flex-wrap: wrap; }

/* ---------- Cards ---------- */
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 20px; box-shadow: var(--shadow); margin-bottom: 18px; }
.card.no-pad { padding: 0; overflow: hidden; }
.card-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 12px; }
.card-head.pad { padding: 16px 20px; margin-bottom: 0; border-bottom: 1px solid var(--line-2); }
.card-head h3 { margin: 0; }
.stack > * { margin-bottom: 18px; }
.stack > *:last-child { margin-bottom: 0; }
.grid-2 { display: grid; grid-template-columns: 1.4fr 1fr; gap: 18px; align-items: start; }
.cards-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }

/* ---------- KPIs ---------- */
.kpi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 14px; margin-bottom: 20px; }
.kpi { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px 18px; box-shadow: var(--shadow); position: relative; overflow: hidden; }
.kpi::after { content: ""; position: absolute; right: -16px; top: -16px; width: 64px; height: 64px; border-radius: 50%; background: var(--line-2); }
.kpi-ico { font-size: 20px; position: relative; z-index: 1; }
.kpi-n { font-size: 30px; font-weight: 800; color: var(--navy); line-height: 1.1; position: relative; z-index: 1; }
.kpi-l { font-size: 12.5px; color: var(--muted); position: relative; z-index: 1; }
.kpi-danger .kpi-n { color: var(--danger); } .kpi-danger::after { background: #fbe6e3; }
.kpi-warn .kpi-n { color: var(--warn); } .kpi-warn::after { background: #fdeede; }

/* ---------- Buttons ---------- */
.btn { display: inline-flex; align-items: center; gap: 6px; border: 1px solid transparent; border-radius: 9px; padding: 9px 15px; font-size: 14px; font-weight: 600; font-family: var(--font); cursor: pointer; transition: all .15s; background: #eef2f6; color: var(--navy); white-space: nowrap; }
.btn:hover { transform: translateY(-1px); box-shadow: 0 3px 10px rgba(16,42,67,.12); }
.btn:active { transform: translateY(0); }
.btn-primary { background: var(--navy); color: #fff; }
.btn-primary:hover { background: var(--navy-2); }
.btn-outline { background: #fff; border-color: var(--navy); color: var(--navy); }
.btn-ghost { background: transparent; color: var(--muted); border-color: transparent; }
.btn-ghost:hover { background: var(--line-2); box-shadow: none; }
.btn-danger { background: var(--danger); color: #fff; }
.btn-danger-ghost { color: var(--danger); }
.btn-block { width: 100%; justify-content: center; }
.btn-sm { padding: 6px 11px; font-size: 12.5px; border-radius: 8px; }
.btn-xs { padding: 4px 8px; font-size: 11.5px; border-radius: 7px; }
.btn-row { display: flex; gap: 10px; flex-wrap: wrap; }

/* ---------- Badges ---------- */
.badge { display: inline-block; padding: 2px 9px; border-radius: 20px; font-size: 11px; font-weight: 700; border: 1px solid transparent; line-height: 1.6; }
.risk-critico { background: #fbe6e3; color: var(--danger); border-color: #eeb8b0; }
.risk-regular { background: #fdeede; color: #b3600f; border-color: #f2d4a8; }
.risk-minimo { background: #e6f4ea; color: var(--ok); border-color: #b6dcc0; }
.st-vencida { background: #fbe6e3; color: var(--danger); border-color: #eeb8b0; }
.st-alerta { background: #fdeede; color: #b3600f; border-color: #f2d4a8; }
.st-urgente { background: #fde2d4; color: #b23a0f; border-color: #f2b48a; font-weight: 700; }
.st-emdia { background: #e6f4ea; color: var(--ok); border-color: #b6dcc0; }
.st-semdata { background: #eef2f6; color: var(--muted); border-color: #dbe3ea; }

/* ===== Modo monocromático (preto e branco) opcional =====
   O filtro é aplicado nos elementos diretamente (não em um ancestral comum)
   para não quebrar a barra lateral (sticky) nem os modais/toasts (fixed). */
[data-mono="on"] .sidebar,
[data-mono="on"] .content,
[data-mono="on"] .login-wrap,
[data-mono="on"] .modal-overlay,
[data-mono="on"] #toasts { filter: grayscale(1); }
.badge.oblig { background: #ede7fb; color: #6b3fd1; border-color: #d3c6f5; }
.badge.cat { }
.mini { font-size: 11.5px; padding: 2px 8px; border-radius: 6px; margin-right: 5px; }
.mini.crit { background: #fbe6e3; color: var(--danger); }
.mini.reg { background: #fdeede; color: #b3600f; }
.mini.min { background: #e6f4ea; color: var(--ok); }

/* ---------- Tables ---------- */
.table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.table th { background: #f6f8fa; color: var(--muted); text-align: left; padding: 11px 14px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .3px; border-bottom: 1px solid var(--line); }
.table td { padding: 11px 14px; border-bottom: 1px solid var(--line-2); vertical-align: top; }
.table tr:hover td { background: #fafbfc; }
.table tr.st-vencida-row td { box-shadow: inset 3px 0 0 var(--danger); }
.table tr.st-alerta-row td { box-shadow: inset 3px 0 0 var(--warn); }

/* ---------- Forms ---------- */
.form label { display: block; font-size: 13px; font-weight: 600; color: #3a4757; margin-bottom: 12px; }
.form input, .form select, .form textarea { width: 100%; margin-top: 5px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 9px; font-size: 14px; font-family: var(--font); background: #fff; color: var(--ink); font-weight: 400; }
.form input:focus, .form select:focus, .form textarea:focus { outline: none; border-color: var(--navy-3); box-shadow: 0 0 0 3px rgba(30,75,118,.12); }
.form textarea { resize: vertical; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 18px; }
.form-grid .col-2 { grid-column: 1 / -1; }
/* form-grid usada sem o wrapper .form (modais, comparação de laudos): o rótulo
   precisa ficar em bloco e o controle em largura total, senão o campo cola no
   texto do label (ex.: "Edificação<select>" sem respiro). */
.form-grid:not(.form) > label { display: block; font-size: 13px; font-weight: 600; color: #3a4757; margin-bottom: 12px; }
.form-grid:not(.form) > label select,
.form-grid:not(.form) > label input,
.form-grid:not(.form) > label textarea {
  width: 100%; margin-top: 5px; padding: 9px 11px; border: 1px solid var(--line);
  border-radius: 9px; font-size: 14px; font-family: var(--font); background: #fff; color: var(--ink); font-weight: 400;
}
.form-grid:not(.form) > label select:focus,
.form-grid:not(.form) > label input:focus,
.form-grid:not(.form) > label textarea:focus { outline: none; border-color: var(--navy-3); box-shadow: 0 0 0 3px rgba(30,75,118,.12); }
[data-theme="dark"] .form-grid:not(.form) > label select,
[data-theme="dark"] .form-grid:not(.form) > label input,
[data-theme="dark"] .form-grid:not(.form) > label textarea { background: #1b2734; color: var(--ink); border-color: #2c3a48; }
.form-actions { display: flex; gap: 10px; margin-top: 6px; }
.chk-inline { display: flex; align-items: center; gap: 8px; }
.chk-inline input { width: auto; margin: 0; }
.form-err { background: #fbe6e3; color: var(--danger); padding: 8px 12px; border-radius: 8px; font-size: 13px; margin-bottom: 10px; }

/* ---------- Empty state ---------- */
.empty { text-align: center; padding: 40px 20px; color: var(--muted); }
.empty-icon { font-size: 40px; margin-bottom: 8px; }
.empty h3 { color: var(--navy); margin-bottom: 4px; }

/* ---------- Login ---------- */
.login-wrap { display: grid; grid-template-columns: 1fr 1fr; min-height: 100vh; }
.login-card { display: flex; flex-direction: column; justify-content: center; max-width: 420px; margin: 0 auto; padding: 40px 34px; width: 100%; }
.login-logo { margin-bottom: 22px; }
.login-card h1 { font-size: 22px; }
.login-sub { color: var(--muted); font-size: 13.5px; margin: 0 0 20px; }
.login-hint { background: #eaf5ff; border: 1px solid #bfe0fb; color: #0b4a7a; padding: 10px 12px; border-radius: 9px; font-size: 12.5px; margin-bottom: 16px; }
.login-or { text-align: center; margin: 16px 0; position: relative; color: var(--muted); font-size: 12px; }
.login-or::before, .login-or::after { content: ""; position: absolute; top: 50%; width: 42%; height: 1px; background: var(--line); }
.login-or::before { left: 0; } .login-or::after { right: 0; }
.login-foot { margin-top: 22px; font-size: 11.5px; color: var(--muted); text-align: center; }
.login-sub2 { color: var(--muted); font-size: 13px; line-height: 1.55; margin: 0 0 16px; }
.login-topbar { display: flex; justify-content: flex-end; margin-bottom: 4px; }
.mono-toggle { background: none; border: 1px solid var(--line); color: var(--muted); font: 600 12px var(--font); padding: 6px 12px; border-radius: 20px; cursor: pointer; display: inline-flex; align-items: center; gap: 5px; transition: border-color .2s, color .2s; }
.mono-toggle:hover { border-color: var(--navy-3); color: var(--ink); }
.login-links { display: flex; justify-content: space-between; gap: 10px; margin-top: 12px; flex-wrap: wrap; }
.link-btn { background: none; border: 0; padding: 4px 2px; color: var(--navy-3); font: 600 13px var(--font); cursor: pointer; text-decoration: underline; }
.link-btn:hover { color: var(--gold); }
/* Campo de senha com botão "ver senha" (olho) */
.pw-wrap { position: relative; display: block; }
.pw-wrap input { width: 100%; padding-right: 42px; }
.pw-eye { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); background: none; border: 0; cursor: pointer; font-size: 17px; line-height: 1; padding: 4px 6px; border-radius: 6px; opacity: .75; }
.pw-eye:hover { opacity: 1; background: var(--line-2); }
[data-theme="dark"] .link-btn { color: #7fb2e6; }
.login-bg { background: linear-gradient(150deg, var(--navy) 0%, #0a1c2f 100%); display: grid; place-items: center; color: #fff; }
.login-bg-inner { text-align: center; padding: 40px; }
.login-bg-inner blockquote { color: var(--gold-soft); font-size: 17px; font-style: italic; max-width: 320px; margin: 24px auto 0; line-height: 1.5; }

/* ---------- Dashboard specifics ---------- */
.pend-list { display: flex; flex-direction: column; gap: 6px; }
.pend-row { display: grid; grid-template-columns: 1fr auto; gap: 8px 14px; padding: 11px 0; border-bottom: 1px solid var(--line-2); align-items: center; }
.pend-row:last-child { border-bottom: 0; }
.pend-side { text-align: right; }
.pend-row .row-actions { grid-column: 1 / -1; }
.row-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.fc-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.fc-cell { background: var(--line-2); border-radius: 10px; padding: 12px 8px; text-align: center; }
.fc-dias { font-size: 11.5px; color: var(--muted); }
.fc-val { font-size: 17px; font-weight: 800; color: var(--navy); white-space: nowrap; }
.fc-forn { list-style: none; padding: 0; margin: 8px 0 0; }
.fc-forn li { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px solid var(--line-2); font-size: 13px; }
.orc-line { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin: 10px 0 4px; font-size: 13px; padding-top: 10px; border-top: 1px solid var(--line-2); }
.risk-bars { display: flex; flex-direction: column; gap: 9px; margin: 10px 0 14px; }
.risk-bar-row { display: grid; grid-template-columns: 90px 1fr 28px; align-items: center; gap: 10px; }
.risk-bar { height: 10px; background: var(--line-2); border-radius: 6px; overflow: hidden; }
.risk-bar-fill { height: 100%; border-radius: 6px; min-width: 2px; }
.risk-bar-n { font-weight: 700; text-align: right; font-size: 13px; }

/* ---------- Chips ---------- */
.chips { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.chip { border: 1px solid var(--line); background: #fff; border-radius: 20px; padding: 6px 14px; font-size: 13px; font-weight: 600; color: var(--muted); cursor: pointer; }
.chip.active { background: var(--navy); color: #fff; border-color: var(--navy); }

/* ---------- Edificação / cards ---------- */
.edif-card, .laudo-card, .forn-card { display: flex; flex-direction: column; }
.edif-top, .forn-top { display: flex; gap: 12px; align-items: flex-start; margin-bottom: 10px; }
.edif-ico, .forn-ico { font-size: 26px; }
.edif-card h3, .laudo-card h3, .forn-card h3 { font-size: 16px; margin: 0; }
.edif-tags, .laudo-counts { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }
.tag { background: var(--line-2); color: #4a5a6a; font-size: 11.5px; padding: 2px 9px; border-radius: 6px; }
.edif-stats { display: flex; gap: 14px; color: var(--muted); font-size: 12.5px; margin-bottom: 12px; }
.edif-actions { display: flex; gap: 6px; flex-wrap: wrap; margin-top: auto; }
.laudo-top { display: flex; justify-content: space-between; align-items: center; }
.forn-info { font-size: 13px; color: #45535f; display: flex; flex-direction: column; gap: 3px; margin-bottom: 12px; }

/* ---------- Accordion (checklist) ---------- */
.acc { border: 1px solid var(--line); border-radius: 10px; margin-bottom: 8px; overflow: hidden; }
.acc-head { display: flex; justify-content: space-between; align-items: center; padding: 11px 14px; cursor: pointer; background: #f8fafc; font-weight: 600; color: var(--navy); font-size: 14px; }
.acc-head:hover { background: #f1f5f9; }
.acc-badge { font-size: 11.5px; color: var(--muted); font-weight: 600; }
.acc-body { display: none; padding: 6px 14px 12px; }
.acc.open .acc-body { display: block; }
.chk-row { display: grid; grid-template-columns: 1fr 130px 1fr; gap: 10px; align-items: center; padding: 6px 0; border-bottom: 1px solid var(--line-2); }
.chk-row:last-child { border-bottom: 0; }
.chk-item { font-size: 13px; }
.chk-row select, .chk-row input { padding: 6px 9px; border: 1px solid var(--line); border-radius: 7px; font-size: 13px; font-family: var(--font); }

/* ---------- Anomalias ---------- */
.anom-card { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; border-left-width: 4px; }
.risk-border-critico { border-left-color: var(--danger); }
.risk-border-regular { border-left-color: var(--warn); }
.risk-border-minimo { border-left-color: var(--ok); }
.anom-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.anom-head .btn { margin-left: auto; }
.anom-head .btn + .btn { margin-left: 4px; }
.anom-card p { margin: 4px 0; font-size: 13.5px; }
.anom-foto { max-width: 200px; max-height: 150px; border-radius: 8px; border: 1px solid var(--line); margin-top: 6px; }
.foto-ctrl { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 6px; }
.grade-help { margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--line); }
.gh-item { margin-bottom: 6px; }

/* ---------- Catalog modal ---------- */
.cat-list { max-height: 50vh; overflow-y: auto; margin-top: 6px; }
.cat-item { display: grid; grid-template-columns: auto 1fr; gap: 4px 10px; padding: 10px; border: 1px solid var(--line-2); border-radius: 8px; margin-bottom: 6px; cursor: pointer; font-weight: 400; }
.cat-item:hover { background: #f8fafc; }
.cat-item input { grid-row: span 3; align-self: center; }
.cat-item > span { grid-column: 2; }
.cat-item .cat-meta { font-size: 11.5px; }
.cat-base { font-size: 10.5px; }

/* ---------- Modal ---------- */
.modal-overlay { position: fixed; inset: 0; background: rgba(12,26,42,.55); display: grid; place-items: center; z-index: 1000; padding: 20px; backdrop-filter: blur(2px); }
.modal-box { background: #fff; border-radius: 14px; width: 100%; max-width: 620px; max-height: 90vh; display: flex; flex-direction: column; box-shadow: var(--shadow-lg); overflow: hidden; }
.modal-report { max-width: 860px; }
.modal-head { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px; border-bottom: 1px solid var(--line); }
.modal-head h3 { margin: 0; }
.modal-x { background: none; border: 0; font-size: 26px; line-height: 1; color: var(--muted); cursor: pointer; }
.modal-body { padding: 20px; overflow-y: auto; }
.modal-foot { padding: 14px 20px; border-top: 1px solid var(--line); display: flex; justify-content: flex-end; gap: 10px; flex-wrap: wrap; background: #fafbfc; }
.msg-preview { background: #f6f8fa; border: 1px solid var(--line); border-radius: 8px; padding: 12px; font-size: 12.5px; white-space: pre-wrap; font-family: ui-monospace, monospace; max-height: 240px; overflow: auto; }

/* ---------- Report preview (in modal) ---------- */
.report-preview { background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 22px 26px; font-family: Georgia, "Times New Roman", serif; position: relative; }
.report-preview .rp-title { font-size: 18px; text-align: center; color: var(--navy); text-transform: uppercase; }
.report-preview h2 { font-size: 13px; border-left: 4px solid var(--gold); padding-left: 8px; margin: 16px 0 6px; }
.report-preview table { width: 100%; border-collapse: collapse; font-size: 12px; margin: 6px 0; }
.report-preview .rp-kv th { text-align: left; width: 180px; color: var(--muted); padding: 3px 6px; vertical-align: top; }
.report-preview .rp-kv td { padding: 3px 6px; }
.report-preview .rp-table th { background: var(--navy); color: #fff; padding: 5px 6px; text-align: left; }
.report-preview .rp-table td { border: 1px solid var(--line); padding: 5px 6px; }
.report-preview .rp-table tr.nc td { background: #fdecec; }
.report-preview .rp-table td.rp-base { font-size: 10px; color: #45535f; white-space: nowrap; }
.report-preview .rp-anom { border: 1px solid var(--line); border-radius: 6px; padding: 10px; margin: 8px 0; }
.report-preview .rp-badge { color: #fff; padding: 1px 8px; border-radius: 10px; font-size: 9px; margin-right: 6px; font-family: var(--font); }
.report-preview .rp-foto { max-width: 240px; border: 1px solid var(--line); border-radius: 4px; margin-top: 6px; }
.report-preview .rp-class { padding: 8px 12px; border-radius: 6px; font-family: var(--font); font-size: 12px; margin: 8px 0; background: #eef1f4; border-left: 5px solid #999; }
.report-preview .rp-class-critico { background: #fdecec; border-color: var(--danger); }
.report-preview .rp-class-regular { background: #fff4e8; border-color: var(--warn); }
.report-preview .rp-class-minimo { background: #eafaf0; border-color: var(--ok); }
.report-preview .rp-sign { margin-top: 30px; text-align: center; font-family: var(--font); font-size: 12px; }
.report-preview .rp-sign-line { width: 220px; border-top: 1px solid #333; margin: 0 auto 6px; }
.report-preview .rp-ul { font-family: var(--font); font-size: 12px; }
.report-preview.demo { filter: grayscale(.15); }

/* ---------- Destaque do Diário de Obra (RDO) no Painel ---------- */
.rdo-cta { display: flex; align-items: center; gap: 16px; border-left: 6px solid var(--gold); background: linear-gradient(90deg, rgba(201,162,39,.10), var(--card) 60%); }
.rdo-cta .rdo-cta-ico { font-size: 34px; line-height: 1; flex: 0 0 auto; }
.rdo-cta .rdo-cta-txt { flex: 1 1 auto; min-width: 0; }
.rdo-cta .rdo-cta-txt h3 { margin: 0 0 2px; color: var(--navy); }
.rdo-cta .rdo-cta-txt p { margin: 0; color: var(--muted); font-size: .86rem; }
.rdo-cta .btn-lg { flex: 0 0 auto; font-size: 1rem; padding: 12px 20px; }
@media (max-width: 640px) { .rdo-cta { flex-wrap: wrap; } .rdo-cta .btn-lg { width: 100%; } }

/* ---------- Watermark ---------- */
.watermark { position: absolute; inset: 0; background-repeat: repeat; background-position: top left; pointer-events: none; z-index: 5; border-radius: 8px; }

/* ---------- Sobre ---------- */
.about-brand { text-align: center; }
.about-logo { margin-bottom: 10px; }
.about-list { list-style: none; padding: 0; margin: 12px 0; text-align: left; display: inline-block; }
.about-list li { padding: 5px 0; font-size: 14px; color: #45535f; }
.credit-strong { font-weight: 700; color: var(--navy); margin-top: 12px; }
.bullets { padding-left: 18px; } .bullets li { margin: 6px 0; font-size: 14px; }
.lei-list { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.lei-item { border: 1px solid var(--line-2); border-radius: 10px; padding: 12px 14px; }
.lei-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 13.5px; }
.lei-head .lei-jur { white-space: nowrap; }
.honesty { border-left: 4px solid var(--gold); background: #fffdf6; }

/* ---------- Toasts ---------- */
#toasts { position: fixed; bottom: 22px; right: 22px; z-index: 2000; display: flex; flex-direction: column; gap: 10px; }
.toast { background: var(--navy); color: #fff; padding: 12px 18px; border-radius: 10px; box-shadow: var(--shadow-lg); font-size: 13.5px; opacity: 0; transform: translateX(40px); transition: all .3s; max-width: 340px; }
.toast.show { opacity: 1; transform: translateX(0); }
.toast.success { background: #1f7a3a; } .toast.warn { background: #b3600f; } .toast.info { background: var(--navy-3); }

/* ---------- Grids extras ---------- */
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; align-items: start; margin-bottom: 18px; }
.sec-title { margin: 8px 0 12px; font-size: 16px; }
.sub-head { grid-column: 1 / -1; font-weight: 700; color: var(--navy); border-top: 1px solid var(--line-2); padding-top: 12px; margin-top: 4px; }

/* ---------- Gauge / componentes do índice ---------- */
.gauge-card { text-align: center; }
.chart-gauge { width: 100%; max-width: 220px; height: auto; }
.gauge-comp { text-align: left; margin-top: 6px; }
.comp-row { display: grid; grid-template-columns: 130px 1fr 32px; align-items: center; gap: 9px; margin: 6px 0; font-size: 12.5px; }
.comp-label { color: var(--muted); }
.comp-track { height: 8px; background: var(--line-2); border-radius: 5px; overflow: hidden; }
.comp-fill { height: 100%; border-radius: 5px; }
.comp-val { text-align: right; font-weight: 700; }

/* ---------- Charts (donut / barras / timeline) ---------- */
.chart-donut-wrap { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.chart-donut { width: 150px; height: 150px; flex: 0 0 auto; }
.chart-donut-wrap .ck-legend { flex-direction: column; }
.ck-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; }
.ck-legend.mt-sm { margin-top: 8px; }
.ck-leg { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--ink); }
.ck-dot { width: 11px; height: 11px; border-radius: 3px; display: inline-block; }
.chart-hbars { display: flex; flex-direction: column; gap: 8px; }
.ck-bar-row { display: grid; grid-template-columns: 120px 1fr auto; align-items: center; gap: 10px; font-size: 12.5px; }
.ck-bar-label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--muted); }
.ck-bar-track { background: var(--line-2); border-radius: 5px; height: 12px; overflow: hidden; }
.ck-bar-fill { height: 100%; border-radius: 5px; min-width: 2px; }
.ck-bar-val { font-weight: 700; white-space: nowrap; }
.chart-timeline { width: 100%; height: auto; }
.chart-qr { display: block; }

/* ---------- Verificação de integridade ---------- */
.hash { font-family: ui-monospace, monospace; font-size: 12px; color: var(--navy-3); }
.verif-ok { background: #e6f4ea; color: #1f7a3a; padding: 12px 14px; border-radius: 8px; font-size: 15px; margin-bottom: 12px; }
.verif-bad { background: #fbe6e3; color: #c0392b; padding: 12px 14px; border-radius: 8px; font-size: 15px; margin-bottom: 12px; }
.verif-qr { text-align: center; margin: 10px 0; }
.verif-qr svg { width: 130px; height: 130px; }
.rp-kv2 { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.rp-kv2 th { text-align: left; width: 120px; color: var(--muted); padding: 4px 6px; vertical-align: top; }
.rp-kv2 td { padding: 4px 6px; word-break: break-all; }
.rp-kv2 code { font-family: ui-monospace, monospace; font-size: 11px; }

/* ---------- Vistoria legal / legislação ---------- */
.legal-row { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line-2); }
.legal-row:last-child { border-bottom: 0; }
.leg-card .leg-card-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.leg-card .leg-card-head h3 { margin: 0; font-size: 15px; }
.leg-meta { margin-top: 8px; }
.leg-upload { border-left: 4px solid var(--gold); }
.brk-list { display: flex; flex-direction: column; gap: 6px; margin-bottom: 8px; }
.brk-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.brk-row input { width: 150px; margin-top: 0; }
.sys-checks { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 4px; }
.sys-check { font-weight: 400; font-size: 13px; display: flex; align-items: center; gap: 7px; margin-bottom: 0; }
.sys-check input { width: auto; margin: 0; }
.ext-details { margin-top: 10px; }
.ext-details summary { cursor: pointer; color: var(--navy-3); font-size: 13px; font-weight: 600; }

/* ---------- Catálogo de obrigatoriedades (NRs) ---------- */
.obr-toolbar { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 14px; }
.obr-search { flex: 1; min-width: 220px; padding: 9px 12px; border: 1px solid var(--line); border-radius: 9px; font-size: 14px; font-family: var(--font); background: var(--card); color: var(--ink); }
.obr-search:focus { outline: none; border-color: var(--navy-3); box-shadow: 0 0 0 3px rgba(30,75,118,.12); }
.obr-grid { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); }
.obr-card { display: flex; flex-direction: column; }
.obr-head { display: flex; justify-content: space-between; gap: 8px; align-items: flex-start; margin-bottom: 8px; }
.obr-head h3 { font-size: 15px; margin: 0; }
.obr-badges { display: flex; gap: 4px; flex-wrap: wrap; justify-content: flex-end; }
.obr-meta { display: flex; flex-direction: column; gap: 3px; font-size: 12.5px; color: #45535f; margin-bottom: 8px; }
.obr-nota { margin: 0 0 10px; }
.obr-segs { display: flex; gap: 5px; flex-wrap: wrap; margin-top: auto; }
[data-theme="dark"] .obr-search { background: #1b2734; border-color: #2c3a48; }
[data-theme="dark"] .obr-meta { color: #b9c8d8; }

/* ---------- Painel: terceiros NÃO isentam o contratante ---------- */
.resp-solidaria { background: linear-gradient(100deg, var(--navy), var(--navy-3)); color: #eaf1f8; border-radius: 14px; padding: 18px 22px; margin-bottom: 14px; box-shadow: var(--shadow-lg); border-left: 6px solid var(--gold); }
.resp-head { display: flex; gap: 14px; align-items: flex-start; }
.resp-ico { font-size: 30px; line-height: 1; }
.resp-head h3 { margin: 0 0 4px; color: #fff; font-size: 18px; letter-spacing: .2px; }
.resp-lead { margin: 0; font-size: 13.5px; color: #d3e0ee; line-height: 1.5; }
.resp-list { margin: 14px 0 6px; padding-left: 20px; display: grid; gap: 9px; }
.resp-list li { font-size: 13px; line-height: 1.5; color: #e7eef6; }
.resp-list strong { color: #fff; }
.resp-base { display: inline-block; margin-top: 2px; font-size: 11.5px; color: var(--gold); font-weight: 600; }
.resp-nota { margin: 8px 0 0; font-size: 11.5px; color: #b9c8d8; font-style: italic; }
.obr-prazo-tip { background: #eef6ef; border: 1px solid #cfe6d3; border-left: 4px solid var(--ok); border-radius: 9px; padding: 9px 13px; margin: 0 0 14px; color: #2f513a; }
[data-theme="dark"] .obr-prazo-tip { background: #14261a; border-color: #245231; color: #bfe6c8; }
@media (max-width: 720px) { .resp-head { flex-wrap: wrap; } }

/* ---------- Sidebar extras ---------- */
.side-actions { display: flex; gap: 8px; align-items: center; }
.icon-btn { width: auto; }
#btnInstall { margin-top: 8px; border-color: var(--gold); color: var(--gold-soft); }

/* ===================== MODO VISTORIA DE CAMPO (móvel) ===================== */
.campo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 14px; }
.campo-card { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; text-align: left; background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 18px; cursor: pointer; font-family: var(--font); transition: transform .15s, box-shadow .15s; }
.campo-card:hover { transform: translateY(-2px); box-shadow: var(--shadow); border-color: var(--navy-3); }
.campo-card-ico { font-size: 26px; }
.campo-card-tt { font-weight: 700; font-size: 16px; color: var(--ink); }
.campo-card-sub { font-size: 12.5px; color: var(--muted); }
.campo-card-go { margin-top: 8px; font-weight: 700; font-size: 13px; color: var(--navy-3); }
.campo-toolbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 14px; }
.gps-chip { font-size: 12.5px; padding: 7px 12px; border-radius: 20px; background: #eef2f6; color: var(--muted); border: 1px solid var(--line); font-variant-numeric: tabular-nums; }
.gps-chip.ok { background: #e6f4ea; color: #1e6b34; border-color: #b6dcc0; font-weight: 600; }
.campo-sys-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 10px; }
.campo-sys { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; cursor: pointer; font-family: var(--font); text-align: left; min-height: 78px; }
.campo-sys:hover { border-color: var(--navy-3); }
.campo-sys-ico { font-size: 20px; }
.campo-sys-tt { font-weight: 600; font-size: 13px; color: var(--ink); line-height: 1.25; }
.campo-sys-st { font-size: 11.5px; color: var(--muted); }
.campo-sys-st .nc { color: var(--danger); }
.campo-chk { display: flex; flex-direction: column; gap: 12px; }
.campo-chk-item p { margin: 0 0 7px; font-size: 13.5px; line-height: 1.4; }
.campo-chk-btns { display: flex; gap: 8px; }
.chk-btn { flex: 1; min-height: 42px; border-radius: 10px; border: 1.5px solid var(--line); background: var(--card); font: 700 13px var(--font); cursor: pointer; color: var(--muted); }
.chk-btn.chk-ok.on { background: #e6f4ea; border-color: #2e7d32; color: #1e6b34; }
.chk-btn.chk-nc.on { background: #fbe6e3; border-color: #c0392b; color: #a93226; }
.chk-btn.chk-na.on { background: #eef2f6; border-color: #6b7b8b; color: #45535f; }
.campo-anom { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--line-2); font-size: 13.5px; }
.campo-anom:last-child { border-bottom: 0; }
.campo-foot { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 16px; position: sticky; bottom: 12px; }
.campo-foot .btn { min-height: 50px; font-size: 15px; box-shadow: var(--shadow-lg); }
.campo-foto-btn { text-align: center; cursor: pointer; min-height: 48px; display: flex; align-items: center; justify-content: center; }
.campo-thumb { width: 96px; height: 96px; object-fit: cover; border-radius: 9px; border: 1px solid var(--line); margin: 4px 6px 0 0; }
.campo-fotos-mini { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.campo-fotos-mini figure { margin: 0; }
.assin-pad { width: 100%; max-width: 520px; height: 180px; border: 1.5px dashed var(--navy-3); border-radius: 10px; background: #fff; touch-action: none; display: block; margin: 10px 0 6px; }
@media (max-width: 720px) {
  .campo-foot { grid-template-columns: 1fr; }
  .campo-sys-grid { grid-template-columns: 1fr 1fr; }
}

/* ===================== EVOLUÇÃO ENTRE LAUDOS (Máquina do Tempo) ============ */
.evo-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 12px; margin: 14px 0; }
.evo-row { display: flex; align-items: flex-start; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--line-2); font-size: 13.5px; }
.evo-row:last-child { border-bottom: 0; }

/* ===================== PLACA QR (passaporte da edificação) ================ */
.rp-placa { border: 3px solid var(--navy); border-radius: 16px; max-width: 420px; margin: 10px auto; padding: 26px 24px; text-align: center; background: #fff; }
.rp-placa-head { font: 700 20px Georgia, serif; color: var(--navy); margin-bottom: 12px; }
.rp-placa-qr { width: 240px; height: 240px; margin: 0 auto 12px; image-rendering: pixelated; }
.rp-placa-txt { font-family: var(--font); font-size: 14px; margin: 0 0 8px; }
.rp-placa-end { font-family: var(--font); font-size: 12px; color: #55636f; margin: 0 0 12px; }
.rp-placa-foot { border-top: 2px solid var(--gold); padding-top: 10px; font: 700 12px var(--font); letter-spacing: .06em; color: var(--navy); text-transform: uppercase; }

/* ===================== EDITOR DE ANOTAÇÃO SOBRE FOTO ===================== */
.modal-foto-editor { max-width: 880px; }
.fe-toolbar { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }
.fe-tool { border: 1.5px solid var(--line); background: var(--card); border-radius: 9px; padding: 8px 12px; font: 600 13px var(--font); cursor: pointer; color: var(--muted); }
.fe-tool.on { border-color: var(--navy-3); color: var(--navy-3); background: #eaf1f8; }
.fe-cor { width: 26px; height: 26px; border-radius: 50%; border: 2px solid var(--line); cursor: pointer; }
.fe-cor.on { border-color: var(--ink); transform: scale(1.15); }
.fe-sep { width: 1px; height: 22px; background: var(--line); margin: 0 4px; }
.fe-wrap { max-height: 60vh; overflow: auto; border: 1px solid var(--line); border-radius: 10px; background: #222; }
#feCanvas { display: block; width: 100%; height: auto; touch-action: none; cursor: crosshair; }
.campo-thumb-btn { position: relative; border: 0; background: none; padding: 0; cursor: pointer; }
.campo-thumb-edit { position: absolute; right: 10px; bottom: 6px; font-size: 14px; background: rgba(255,255,255,.85); border-radius: 6px; padding: 1px 4px; }
[data-theme="dark"] .fe-tool.on { background: #16283a; }

/* Fotos de campo e assinatura nos relatórios */
.rp-fotos-campo { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 8px; }
.rp-figura { margin: 0; }
.rp-figura figcaption { font: 400 10.5px var(--font); color: #55636f; max-width: 280px; margin-top: 3px; }
.rp-assin img { max-width: 300px; max-height: 120px; border-bottom: 1px solid #333; }

/* ===================== DARK MODE ===================== */
[data-theme="dark"] {
  --ink: #e7edf3; --muted: #93a4b5; --bg: #0e1621; --card: #16212e;
  --line: #28353f; --line-2: #1d2934;
  --shadow: 0 1px 3px rgba(0,0,0,.45), 0 6px 22px rgba(0,0,0,.35);
  --shadow-lg: 0 12px 44px rgba(0,0,0,.55);
}
[data-theme="dark"] body { background: var(--bg); color: var(--ink); }
[data-theme="dark"] .table th { background: #1b2734; color: var(--muted); border-bottom-color: var(--line); }
[data-theme="dark"] .table td { border-bottom-color: var(--line-2); }
[data-theme="dark"] .table tr:hover td { background: #1b2734; }
[data-theme="dark"] .form input, [data-theme="dark"] .form select, [data-theme="dark"] .form textarea,
[data-theme="dark"] .chk-row input, [data-theme="dark"] .chk-row select, [data-theme="dark"] .brk-row input { background: #1b2734; color: var(--ink); border-color: #2c3a48; }
[data-theme="dark"] .kpi::after { background: #20303e; }
[data-theme="dark"] .chip { background: #16212e; color: var(--muted); border-color: var(--line); }
[data-theme="dark"] .chip.active { background: var(--gold); color: #1a2430; border-color: var(--gold); }
[data-theme="dark"] .acc-head { background: #1b2734; color: var(--ink); }
[data-theme="dark"] .acc-head:hover { background: #22323f; }
[data-theme="dark"] .fc-cell, [data-theme="dark"] .ck-bar-track, [data-theme="dark"] .comp-track, [data-theme="dark"] .risk-bar { background: #20303e; }
[data-theme="dark"] .tag { background: #20303e; color: #b9c8d8; }
[data-theme="dark"] .btn { background: #22323f; color: #dbe6f0; }
[data-theme="dark"] .btn-primary { background: var(--navy-3); color: #fff; }
[data-theme="dark"] .btn-outline { background: transparent; border-color: var(--navy-3); color: #9fc3e6; }
[data-theme="dark"] .btn-ghost { background: transparent; color: var(--muted); }
[data-theme="dark"] .modal-box { background: var(--card); color: var(--ink); }
[data-theme="dark"] .modal-foot { background: #121c27; }
[data-theme="dark"] .modal-head, [data-theme="dark"] .modal-foot { border-color: var(--line); }
[data-theme="dark"] .msg-preview { background: #121c27; border-color: var(--line); }
[data-theme="dark"] .card-head.pad { border-bottom-color: var(--line); }
[data-theme="dark"] .cat-item:hover { background: #1b2734; }
[data-theme="dark"] .honesty { background: #1c2330; }
[data-theme="dark"] .login-hint { background: #10283a; border-color: #1d4b6b; color: #cfe6fb; }
/* O relatório é sempre CLARO (para impressão/exportação) mesmo no dark mode */
[data-theme="dark"] .report-preview { background: #fff; color: #1a2430; }
[data-theme="dark"] .report-preview .muted { color: #7a8794; }
[data-theme="dark"] .report-preview .rp-kv th { color: #5b6b7b; }

/* ---------- Responsive ---------- */
@media (max-width: 900px) {
  /* minmax(0,1fr) impede que o max-content da barra de navegação estique a
     coluna além da largura da tela (causava rolagem horizontal no celular). */
  .layout { grid-template-columns: minmax(0, 1fr); }
  .sidebar { position: static; height: auto; flex-direction: row; flex-wrap: wrap; align-items: center; min-width: 0; }
  .brand { border: 0; flex: 1; }
  .nav { display: flex; flex-wrap: wrap; width: 100%; order: 3; padding: 8px; }
  .nav-item { margin: 2px; }
  .side-foot { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; border: 0; width: auto; min-width: 0; max-width: 100%; }
  .side-foot .btn-block { width: auto; }
  .user-chip { min-width: 0; }
  .credit { display: none; }
  .grid-2 { grid-template-columns: 1fr; }
  .form-grid { grid-template-columns: 1fr; }
  .login-wrap { grid-template-columns: 1fr; }
  .login-bg { display: none; }
  .lei-list { grid-template-columns: 1fr; }
  .content { padding: 18px; }
}

/* ===== Refino tipográfico — mais elegante, menos infantil (mantém as cores) =====
   Números: peso mais fino + algarismos tabulares + leve aperto de tracking.
   Emojis: um pouco menores e sutis (não dá para "afinar" um emoji, mas reduzir
   tamanho e opacidade tira o ar infantil). */
.kpi-n { font-weight: 600; font-variant-numeric: tabular-nums; letter-spacing: -.015em; }
.fc-val, .comp-val, .ck-bar-val, .risk-bar-n, .rk-n { font-weight: 600; font-variant-numeric: tabular-nums; }
.kpi-l { letter-spacing: .01em; }
.badge, .st-urgente { font-weight: 600; }
.kpi-ico { font-size: 17px; opacity: .82; }
.seg-banner-ico { font-size: 23px; opacity: .9; }
.empty-icon { font-size: 31px; opacity: .7; }
.edif-ico, .forn-ico { font-size: 21px; opacity: .88; }
.resp-ico { font-size: 23px; opacity: .9; }
.campo-card-ico { font-size: 21px; opacity: .9; }
.campo-sys-ico { font-size: 17px; opacity: .88; }
/* botão de ver/ocultar senha agora usa o ícone do engenheiro (SVG) */
.pw-eye { display: inline-flex; align-items: center; justify-content: center; font-size: 0; padding: 2px 6px; }
.pw-eye .eng-ico { display: block; }

/* ===== Aba Fiscal de Obras/Auditor ===== */
.premium-tag { display:inline-block; vertical-align:middle; margin-left:8px; background:var(--gold,#c9a227);
  color:#0f2a43; font-size:10.5px; font-weight:700; letter-spacing:.08em; padding:3px 8px; border-radius:20px; }
.fisc-bar { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin:4px 0 16px; }
.fisc-bar-lbl { font-weight:600; color:var(--navy,#0f2a43); }
.fisc-bar-info { color:var(--muted); font-size:13px; }
.fisc-bar select { padding:8px 11px; border:1px solid var(--line); border-radius:9px; font-size:14px;
  font-family:var(--font); background:#fff; color:var(--ink); min-width:220px; }
.fisc-hint { background:var(--navy-050,#eef4fb); border:1px solid var(--line); border-radius:10px;
  padding:11px 14px; margin:0 0 14px; font-size:14px; color:var(--ink); }
.fisc-orgaos { display:flex; flex-direction:column; gap:16px; }
.fisc-org { background:var(--card); border:1px solid var(--line); border-left:4px solid var(--org,#274863);
  border-radius:12px; box-shadow:var(--shadow); overflow:hidden; }
.fisc-org-head { display:flex; align-items:center; gap:12px; padding:14px 16px; border-bottom:1px solid var(--line-2); }
.fisc-org-ico { font-size:22px; line-height:1; }
.fisc-org-head h3 { margin:0; font-size:16px; color:var(--org,#274863); }
.fisc-org-head p { margin:2px 0 0; font-size:12.5px; }
.fisc-org-n { margin-left:auto; font-size:11.5px; font-weight:600; color:var(--muted);
  background:var(--line-2); padding:3px 9px; border-radius:20px; white-space:nowrap; }
.fisc-docs { display:flex; flex-direction:column; }
.fisc-doc { display:grid; grid-template-columns:1fr; gap:8px; padding:12px 16px; border-top:1px solid var(--line-2);
  border-left:3px solid transparent; }
.fisc-doc:first-child { border-top:0; }
.fisc-doc.st-ok { border-left-color:#2e7d5b; background:rgba(46,125,91,.035); }
.fisc-doc.st-vencido { border-left-color:#b23a48; background:rgba(178,58,72,.045); }
.fisc-doc.st-pendente { border-left-color:#b9791b; }
.fisc-doc.st-na { border-left-color:#c3ccd6; opacity:.72; }
@media (min-width:820px){ .fisc-doc { grid-template-columns:1fr 340px; align-items:center; } }
.fisc-doc-tt { font-size:14px; color:var(--ink); }
.fisc-dot { display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:6px; vertical-align:middle; }
.fisc-doc-oq { font-size:12.5px; color:var(--muted); margin-top:3px; }
.fisc-doc-meta { display:flex; flex-wrap:wrap; gap:12px; margin-top:6px; font-size:11.5px; color:var(--muted); }
.fisc-doc-ctrl { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.fisc-doc-ctrl .fisc-obs { grid-column:1 / -1; }
.fisc-doc-ctrl select, .fisc-doc-ctrl input { width:100%; padding:7px 9px; border:1px solid var(--line);
  border-radius:8px; font-size:13px; font-family:var(--font); background:#fff; color:var(--ink); }
.fisc-doc-ctrl select:focus, .fisc-doc-ctrl input:focus { outline:none; border-color:var(--navy-3);
  box-shadow:0 0 0 3px rgba(30,75,118,.12); }
.fisc-disclaimer { margin-top:16px; font-size:12px; color:var(--muted); background:var(--warn-050,#fdeede);
  border:1px solid #f2d9a8; border-radius:10px; padding:11px 14px; }
[data-theme="dark"] .fisc-bar select,
[data-theme="dark"] .fisc-doc-ctrl select, [data-theme="dark"] .fisc-doc-ctrl input { background:#1b2734; color:var(--ink); border-color:#2c3a48; }
[data-theme="dark"] .fisc-hint { background:#16222f; }
[data-theme="dark"] .fisc-disclaimer { background:#2a2413; border-color:#4a3d1c; }
[data-theme="dark"] .premium-tag { color:#0f2a43; }

/* ===== Fiscal inteligente: selos automáticos, alertas e minimizar ===== */
.fisc-tag { font-size:11px; font-weight:700; margin-left:4px; }
.fisc-auto { display:inline-block; margin-left:6px; font-size:10.5px; font-weight:600; padding:1px 7px; border-radius:20px; vertical-align:middle; }
.fisc-auto.venc { background:rgba(178,58,72,.14); color:#b23a48; }
.fisc-auto.av   { background:rgba(185,121,27,.16); color:#b9791b; }
.fisc-auto.okd  { background:rgba(46,125,91,.14); color:#2e7d5b; }
.fisc-doc.st-a_vencer { border-left-color:#b9791b; background:rgba(185,121,27,.05); }
/* minimizar / restaurar por órgão */
.fisc-org-head { cursor:pointer; user-select:none; }
.fisc-org-head:hover { background:rgba(0,0,0,.02); }
.fisc-chevron { margin-left:10px; color:var(--muted); font-size:12px; transition:transform .15s ease; }
.fisc-org.collapsed .fisc-chevron { transform:rotate(-90deg); }
.fisc-org.collapsed .fisc-docs { display:none; }
.fisc-toolbar { display:flex; align-items:center; justify-content:space-between; gap:10px; margin:2px 0 12px; flex-wrap:wrap; }
/* lista de alertas fiscais (Painel e Agenda) */
.fisc-alert-list { display:flex; flex-direction:column; }
.fisc-alert-row { display:flex; align-items:center; gap:10px; padding:9px 4px; border-top:1px solid var(--line-2); text-decoration:none; color:var(--ink); }
.fisc-alert-row:first-child { border-top:0; }
.fisc-alert-row:hover { background:rgba(0,0,0,.02); }
.fisc-alert-dot { width:9px; height:9px; border-radius:50%; flex:none; }
.fisc-alert-main { flex:1; font-size:13.5px; }
.fisc-alert-side { font-size:12.5px; font-weight:600; white-space:nowrap; }
[data-theme="dark"] .fisc-org-head:hover, [data-theme="dark"] .fisc-alert-row:hover { background:rgba(255,255,255,.04); }

/* ===== Emojis remanescentes (views internas): dessaturados p/ sobriedade ===== */
.edif-ico, .forn-ico, .resp-ico, .campo-card-ico, .campo-sys-ico, .fisc-org-ico {
  filter: grayscale(42%) contrast(0.96);
}

/* ============================================================================
   REFINO PREMIUM — tipografia Archivo/IBM Plex Mono, ícones SVG autorais
   (GDI) e detalhes de acabamento. Mantém a paleta navy/dourado da marca.
   ============================================================================ */
:root{
  --font-disp:"Archivo",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}
h1,h2,h3,h4,.page-head h2,.kpi-n,.brand-title,.login-card h1{font-family:var(--font-disp);letter-spacing:-.01em}
.nav-item{font-family:var(--font-disp);letter-spacing:.005em}
.kpi-l,.table th,.premium-tag,.leg-card .leg-card-head,.fc-dias{font-family:var(--font-mono)}

/* ---- Ícone base (SVG monoline) ---- */
.gdi{display:inline-block;width:1.15em;height:1.15em;vertical-align:-.17em;stroke-width:1.7}
.nav-ico,.kpi-ico,.seg-banner-ico,.empty-icon{filter:none!important}

/* ---- Menu lateral: ícones SVG com estado dourado no ativo ---- */
.nav-ico{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;color:#8ea6bd;font-size:0}
.nav-ico .gdi{width:20px;height:20px;vertical-align:middle}
.nav-item:hover .nav-ico{color:#fff}
.nav-item.active .nav-ico,.nav-item.destaque .nav-ico{color:var(--gold)}

/* ---- KPIs: número em display + "chip" de ícone tingido ---- */
.kpi-ico{width:36px;height:36px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;
  background:linear-gradient(160deg,#fbf3db,#f2e3ba);color:var(--navy);border:1px solid #ecdcab;
  box-shadow:0 1px 2px rgba(16,42,67,.08);margin-bottom:10px;opacity:1}
.kpi-ico .gdi{width:20px;height:20px}
.kpi-danger .kpi-ico{background:linear-gradient(160deg,#fdeae6,#f8d5cf);border-color:#f0c2ba;color:var(--danger)}
.kpi-warn .kpi-ico{background:linear-gradient(160deg,#fdf1de,#f8e2bf);border-color:#f1d6a5;color:#b3600f}
.kpi{border-radius:14px}
.kpi-n{font-size:32px;letter-spacing:-.02em}

/* ---- Títulos de cartão com ícone dourado ---- */
.card h3{display:flex;align-items:center;gap:9px;font-size:16px}
.card h3 .gdi{width:19px;height:19px;color:var(--gold);flex:none;vertical-align:middle}
.card-head h3{margin:0}

/* ---- Cartões: filete dourado superior + sombra mais rica ---- */
.card{position:relative;border-radius:14px;box-shadow:0 1px 2px rgba(16,42,67,.06),0 12px 34px rgba(16,42,67,.09)}
.card::before{content:"";position:absolute;top:0;left:20px;right:20px;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(201,162,39,.55),transparent)}
.card.no-pad::before,.report-preview::before{display:none}

/* ---- Faixa "Conformidade para Seguradora" e vazios ---- */
.seg-banner{border-radius:16px}
.seg-banner-ico{width:auto;height:auto;display:inline-flex}
.seg-banner-ico .gdi{width:28px;height:28px;color:var(--gold-soft)}
.empty-icon{opacity:1}
.empty-icon .gdi{width:34px;height:34px;color:var(--muted)}

/* ---- Botões: ícone SVG inline discreto ---- */
.btn .gdi{width:1.05em;height:1.05em;vertical-align:-.16em;margin-right:.4em}

/* ---- Barra lateral premium: acabamento mais escuro e nítido ---- */
.sidebar{background:linear-gradient(185deg,#123553 0%,#0c2138 55%,#081a2c 100%);box-shadow:inset -1px 0 0 rgba(255,255,255,.05)}
.nav-item{border-radius:11px}
.nav-item.active{box-shadow:inset 3px 0 0 var(--gold),0 6px 18px rgba(0,0,0,.22)}
.brand{background:rgba(255,255,255,.04)}
.page-head h2{font-size:26px}

/* ============================================================================
   MÓDULO GESTÃO DE OBRA — Diário (RDO), Materiais e Cronograma/Medições
   ========================================================================== */
/* Deixa a coluna de conteúdo poder encolher (grid item tem min-width:auto por
   padrão) — sem isto, um filho largo estica a área e gera rolagem horizontal no
   celular. Só ajuda: telas que já cabem não mudam. */
.content { min-width: 0; }
.obra-bar { margin: 0 0 14px; display: inline-flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.obra-tag { background: #fff7e0; border: 1px solid #e6c96a; color: #8a6d1a; border-radius: 14px; padding: 4px 11px; font-size: 12px; font-weight: 700; }
[data-theme="dark"] .obra-tag { background: rgba(201,162,39,.15); color: #e6c96a; }
.central-demotag { font-size: 11px; font-weight: 700; color: #8a6d1a; background: #fff7e0; border: 1px solid #e6c96a; border-radius: 10px; padding: 1px 7px; margin-top: 3px; align-self: flex-start; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
[data-theme="dark"] .central-demotag { background: rgba(201,162,39,.15); color: #e6c96a; }
.obra-sel { display: inline-flex; align-items: center; gap: 8px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 7px 12px; box-shadow: var(--shadow); font-weight: 600; color: var(--navy); }
.obra-sel span { font-size: 13px; }
.obra-sel select { border: 0; background: transparent; color: var(--ink); font: inherit; font-weight: 700; padding: 2px 4px; max-width: 60vw; }
.obra-empty-cta { text-align: center; margin-top: 14px; }
[data-theme="dark"] .obra-sel { color: #cfe0f0; }
[data-theme="dark"] .obra-sel select { color: var(--ink); }

/* --- Diário de Obra (RDO) --- */
.rdo-card { display: flex; flex-direction: column; gap: 8px; }
.rdo-card-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.rdo-date { display: flex; flex-direction: column; }
.rdo-day { font-weight: 800; font-size: 16px; color: var(--navy); }
.rdo-num { font-size: 11px; color: var(--muted); letter-spacing: .04em; }
.rdo-clima { font-size: 18px; letter-spacing: 1px; }
.rdo-metrics { display: flex; gap: 14px; font-size: 13px; color: var(--ink); font-weight: 600; }
.rdo-ocor { margin: 0; font-size: 12px; }
[data-theme="dark"] .rdo-day { color: #cfe0f0; }

.rdo-sec { margin-bottom: 14px; }
.rdo-sec h3 { margin: 0 0 10px; font-size: 15px; color: var(--navy); }
[data-theme="dark"] .rdo-sec h3 { color: #cfe0f0; }
.rdo-sec-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.rdo-sec-head h3 { margin: 0; }
.rdo-clima-tbl select { width: 100%; }
.rdo-total { margin: 10px 0 0; font-size: 14px; color: var(--ink); }
.rdo-total strong { color: var(--navy); font-size: 17px; }
[data-theme="dark"] .rdo-total strong { color: var(--gold-soft); }

.rdo-row { display: flex; gap: 8px; align-items: center; margin-bottom: 7px; }
.rdo-row-main { flex: 1 1 auto; min-width: 0; }
.rdo-row-qtd { width: 84px; flex: 0 0 auto; text-align: right; }
.rdo-row input, .rdo-ativ input, .rdo-ativ textarea, .rdo-sec textarea { border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 8px 10px; font: inherit; background: var(--card); color: var(--ink); }
.rdo-sec textarea { width: 100%; resize: vertical; }
.rdo-row-del { flex: 0 0 auto; width: 30px; height: 30px; border: 1px solid var(--line); background: var(--card); color: var(--danger); border-radius: var(--radius-sm); cursor: pointer; font-size: 14px; line-height: 1; }
.rdo-row-del:hover { background: #fbeceb; }
[data-theme="dark"] .rdo-row input, [data-theme="dark"] .rdo-ativ input, [data-theme="dark"] .rdo-ativ textarea, [data-theme="dark"] .rdo-sec textarea, [data-theme="dark"] .rdo-row-del { background: #1b2734; border-color: #2c3a48; }
.rdo-ativ { border: 1px dashed var(--line); border-radius: var(--radius-sm); padding: 10px; margin-bottom: 9px; }
.rdo-ativ-desc { width: 100%; resize: vertical; margin-bottom: 7px; }
.rdo-ativ-meta { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.rdo-ativ-meta input { flex: 1 1 140px; }
.rdo-ativ-meta select { flex: 0 0 auto; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 8px; background: var(--card); color: var(--ink); }
[data-theme="dark"] .rdo-ativ-meta select { background: #1b2734; border-color: #2c3a48; }

.rdo-foto-btn { margin-bottom: 10px; }
/* Duas ações de foto no RDO: vistoria (câmera) + anexar do aparelho */
.rdo-foto-acoes { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.rdo-foto-acoes .rdo-foto-btn { margin-bottom: 0; }
@media (max-width: 560px) { .rdo-foto-acoes { grid-template-columns: 1fr; } }
.rdo-fotos { display: flex; flex-wrap: wrap; gap: 10px; }
.rdo-foto { position: relative; width: 128px; }
.rdo-foto img { width: 128px; height: 128px; object-fit: cover; border-radius: var(--radius-sm); border: 1px solid var(--line); }
.rdo-foto-del { position: absolute; top: 4px; right: 4px; width: 24px; height: 24px; border: 0; border-radius: 50%; background: rgba(192,57,43,.92); color: #fff; cursor: pointer; font-size: 12px; }
.rdo-foto-gps { position: absolute; bottom: 4px; left: 4px; font-size: 13px; filter: drop-shadow(0 1px 2px rgba(0,0,0,.6)); }
.rdo-foot { display: flex; justify-content: flex-end; gap: 10px; flex-wrap: wrap; margin: 6px 0 30px; }

/* --- Materiais --- */
.mat-alerta { background: #fdf3e6; border: 1px solid #f0c896; color: #8a5a12; border-radius: var(--radius-sm); padding: 10px 14px; margin-bottom: 14px; font-size: 13.5px; }
[data-theme="dark"] .mat-alerta { background: #2e2410; border-color: #5a4415; color: #e7c98a; }
.table-wrap { overflow-x: auto; }
.mat-tbl td, .ext-tbl td { vertical-align: middle; }
.mat-saldo { font-weight: 700; white-space: nowrap; }
.mat-min { color: var(--muted); white-space: nowrap; }
.mat-acoes { white-space: nowrap; text-align: right; }
.mat-acoes .btn { margin-left: 4px; }
.mat-baixo { background: rgba(230,126,34,.08); }
.mov-cab { margin: 0 0 12px; padding-bottom: 8px; border-bottom: 1px solid var(--line); }
.mov-in { color: var(--ok); font-weight: 700; }
.mov-out { color: var(--danger); font-weight: 700; }

/* --- Cronograma & Medições --- */
.cron-geral { text-align: center; padding: 18px; margin-bottom: 16px; }
.cron-geral-lbl { font-size: 13px; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }
.cron-geral-pct { font-size: 40px; font-weight: 800; color: var(--navy); line-height: 1.1; margin: 4px 0 10px; }
[data-theme="dark"] .cron-geral-pct { color: var(--gold-soft); }
.cron-card { display: flex; flex-direction: column; gap: 8px; }
.cron-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.cron-desc { display: flex; flex-direction: column; gap: 2px; }
.cron-desc strong { color: var(--navy); }
[data-theme="dark"] .cron-desc strong { color: #cfe0f0; }
.cron-pct { font-size: 22px; font-weight: 800; color: var(--navy); }
[data-theme="dark"] .cron-pct { color: var(--gold-soft); }
.cron-meta { margin: 0; }

.progress { height: 10px; background: var(--line); border-radius: 999px; overflow: hidden; }
.progress-lg { height: 16px; }
.progress-fill { height: 100%; background: linear-gradient(90deg, var(--navy-3), var(--navy)); border-radius: 999px; transition: width .4s ease; }
.progress-fill.mid { background: linear-gradient(90deg, #d8a13a, var(--gold)); }
.progress-fill.full { background: linear-gradient(90deg, #35a05a, var(--ok)); }

/* ============================================================================
   OBRA v2 — Impedimentos, Compras & Entregas, Gantt, Painel, modo botões grandes
   ========================================================================== */
/* Filtros em chip */
.chip-filtros { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.chip-f { padding: 6px 12px; border: 1px solid var(--line); border-radius: 999px; background: var(--card); color: var(--muted); font: 600 12.5px var(--font); cursor: pointer; }
.chip-f.on { background: var(--navy); color: #fff; border-color: var(--navy); }
[data-theme="dark"] .chip-f { background: #1b2734; border-color: #2c3a48; }
[data-theme="dark"] .chip-f.on { background: var(--navy-3); border-color: var(--navy-3); }

/* Badge genérico de status (impedimentos/compras — cor vem do inline) */
.imp-badge, .cmp-badge { display: inline-block; padding: 2px 9px; border-radius: 999px; border: 1px solid; font-size: 11.5px; font-weight: 700; }

/* Impedimentos */
.imp-card { display: flex; flex-direction: column; gap: 7px; }
.imp-top { display: flex; justify-content: space-between; align-items: center; }
.imp-desc { margin: 0; font-weight: 600; color: var(--ink); }
.imp-fotos { display: flex; gap: 6px; }
.imp-fotos img { width: 56px; height: 56px; object-fit: cover; border-radius: 6px; border: 1px solid var(--line); }

/* Compras & Entregas */
.cmp-card { display: flex; flex-direction: column; gap: 8px; }
.cmp-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.cmp-item { display: flex; flex-direction: column; }
.cmp-item strong { color: var(--navy); }
[data-theme="dark"] .cmp-item strong { color: #cfe0f0; }
.cmp-fluxo { display: flex; align-items: center; gap: 0; }
.cmp-step { flex: 1; height: 4px; position: relative; background: var(--line); }
.cmp-step:first-child { border-radius: 4px 0 0 4px; }
.cmp-step:last-child { border-radius: 0 4px 4px 0; }
.cmp-step.done, .cmp-step.now { background: var(--navy-3); }
.cmp-dot { position: absolute; right: -6px; top: -4px; width: 12px; height: 12px; border-radius: 50%; background: var(--card); border: 2px solid var(--line); z-index: 1; }
.cmp-step.now .cmp-dot { box-shadow: 0 0 0 3px rgba(30,75,118,.18); }
.cmp-datas { margin: 0; }

/* Gantt (Etapas da Obra) */
.cron-gantt-card h3 { margin: 0 0 12px; font-size: 15px; color: var(--navy); }
[data-theme="dark"] .cron-gantt-card h3 { color: #cfe0f0; }
.gantt-head { display: flex; justify-content: space-between; font-size: 11px; color: var(--muted); margin-bottom: 6px; }
.gantt-hoje-lbl { color: var(--danger); font-weight: 700; }
.gantt-row { display: flex; align-items: center; gap: 10px; margin-bottom: 7px; }
.gantt-lbl { width: 34%; max-width: 200px; font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gantt-track { position: relative; flex: 1; height: 22px; background: var(--line-2); border-radius: 6px; }
.gantt-bar { position: absolute; top: 3px; height: 16px; background: var(--navy-3); border-radius: 5px; overflow: hidden; min-width: 8px; }
.gantt-bar-fill { height: 100%; background: linear-gradient(90deg, #2e7d32, #1b7a3e); opacity: .9; }
.gantt-bar-fill.mid { background: linear-gradient(90deg, #d8a13a, var(--gold)); }
.gantt-bar-fill.full { background: linear-gradient(90deg, #35a05a, var(--ok)); }
.gantt-bar-pct { position: absolute; right: 4px; top: 0; font-size: 10px; color: #fff; line-height: 16px; text-shadow: 0 1px 1px rgba(0,0,0,.4); }
.gantt-hoje { position: absolute; top: -2px; bottom: -2px; width: 2px; background: var(--danger); z-index: 2; }
[data-theme="dark"] .gantt-track { background: #1b2734; }

/* KPIs do Painel */
.kpi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin-bottom: 16px; }
.kpi { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px; text-align: center; box-shadow: var(--shadow); }
.kpi-ico { font-size: 22px; }
.kpi-val { font-size: 30px; font-weight: 800; color: var(--navy); line-height: 1.1; margin: 2px 0; }
[data-theme="dark"] .kpi-val { color: var(--gold-soft); }
.kpi-lbl { font-size: 12px; color: var(--muted); }
.kpi-warn { border-color: #f0c896; background: #fdf6ec; }
.kpi-warn .kpi-val { color: #b5651d; }
.kpi-ok { border-color: #bfe3c6; }
[data-theme="dark"] .kpi-warn { background: #2a2210; border-color: #5a4415; }
[data-theme="dark"] .kpi-warn .kpi-val { color: #e7c98a; }

/* Painel — colunas e linhas */
.painel-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 14px; }
@media (max-width: 720px) { .painel-cols { grid-template-columns: 1fr; } }
.painel-gestao h3, .painel-resumo h3 { margin: 0 0 6px; font-size: 15px; color: var(--navy); }
[data-theme="dark"] .painel-gestao h3, [data-theme="dark"] .painel-resumo h3 { color: #cfe0f0; }
.painel-linha { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--line-2); }
.painel-linha span { color: var(--muted); font-size: 13px; }
.painel-linha strong { color: var(--ink); }
.painel-inter { margin: 6px 0 0; font-size: 13.5px; }
.painel-item { padding: 7px 0; border-bottom: 1px solid var(--line-2); font-size: 13px; }
.painel-item:last-child { border-bottom: 0; }

/* Modo "botões grandes / alto contraste" (Mestre de obras) --------------------
   Só afeta quem ligar (data-ui-grande="on") — não muda a experiência dos demais. */
[data-ui-grande="on"] { font-size: 17px; }
[data-ui-grande="on"] .btn { padding: 13px 20px; font-size: 16px; border-width: 2px; }
[data-ui-grande="on"] .btn-xs { padding: 9px 14px; font-size: 14px; }
[data-ui-grande="on"] .nav-item { font-size: 16px; padding: 13px 14px; }
[data-ui-grande="on"] .kpi-val { font-size: 34px; }
[data-ui-grande="on"] .chip-f { font-size: 14px; padding: 9px 15px; }
[data-ui-grande="on"] input, [data-ui-grande="on"] select, [data-ui-grande="on"] textarea { font-size: 16px; }
[data-ui-grande="on"] .rdo-day, [data-ui-grande="on"] .imp-desc, [data-ui-grande="on"] .cmp-item strong { font-size: 1.08em; }
[data-ui-grande="on"] .page-head h2 { font-size: 26px; }

/* ============================================================================
   VISTORIA DE OBRA (FVS) — checklist guiado, botões grandes, conformidade
   ========================================================================== */
.v-ok { color: var(--ok); font-weight: 700; }
.v-nc { color: var(--danger); font-weight: 700; }
.v-na { color: var(--muted); font-weight: 700; }

.vist-card { display: flex; flex-direction: column; gap: 8px; }
.vist-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.vist-ico { font-size: 18px; margin-right: 4px; }
.vist-resumo { display: flex; gap: 14px; font-size: 14px; }

/* Escolha do modelo (modal) */
.vist-grupo { margin-bottom: 14px; }
.vist-grupo h4 { margin: 0 0 8px; font-size: 14px; color: var(--navy); }
[data-theme="dark"] .vist-grupo h4 { color: #cfe0f0; }
.vist-tpls { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; }
.vist-tpl { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: left; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--card); color: var(--ink); cursor: pointer; font: 600 13.5px var(--font); }
.vist-tpl:hover { border-color: var(--gold); box-shadow: var(--shadow); }
[data-theme="dark"] .vist-tpl { background: #1b2734; border-color: #2c3a48; }

/* Sessão de vistoria */
.vist-sec { margin-bottom: 14px; }
.vist-sec h3 { margin: 0 0 10px; font-size: 15px; color: var(--navy); }
[data-theme="dark"] .vist-sec h3 { color: #cfe0f0; }
.vist-progress { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 9px 14px; margin-bottom: 14px; font-size: 13.5px; box-shadow: var(--shadow); }
[data-theme="dark"] .vist-progress { background: #16212e; }

.vist-item { padding: 12px 0; border-bottom: 1px solid var(--line-2); }
.vist-item:last-child { border-bottom: 0; }
.vist-item-txt { font-weight: 600; margin-bottom: 8px; }
.vist-opts { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.vist-opt { flex: 1 1 100px; min-width: 90px; padding: 12px 10px; border: 2px solid var(--line); border-radius: var(--radius-sm); background: var(--card); color: var(--muted); font: 700 14px var(--font); cursor: pointer; transition: all .12s; }
.vist-opt:hover { border-color: var(--navy-3); }
.vist-opt.on.conforme { background: #e7f5e9; border-color: var(--ok); color: #1c6a24; }
.vist-opt.on.nc { background: #fdeceb; border-color: var(--danger); color: #a5271b; }
.vist-opt.on.na { background: #eef1f4; border-color: var(--muted); color: #48586a; }
[data-theme="dark"] .vist-opt { background: #1b2734; border-color: #2c3a48; }
[data-theme="dark"] .vist-opt.on.conforme { background: #16321c; }
[data-theme="dark"] .vist-opt.on.nc { background: #3a1a17; }
[data-theme="dark"] .vist-opt.on.na { background: #26313d; }
.vist-obs { width: 100%; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 7px 10px; font: inherit; background: var(--card); color: var(--ink); }
[data-theme="dark"] .vist-obs { background: #1b2734; border-color: #2c3a48; }

.vist-foto-btn { margin-bottom: 10px; }
.vist-ass-campos { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.vist-ass-campos input { flex: 1 1 160px; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 8px 10px; font: inherit; background: var(--card); color: var(--ink); }
[data-theme="dark"] .vist-ass-campos input { background: #1b2734; border-color: #2c3a48; }
.vist-ass-ok { display: flex; align-items: center; gap: 14px; }
.vist-ass-img { max-height: 70px; border: 1px solid var(--line); border-radius: 6px; background: #fff; padding: 4px; }

/* ============================================================================
   MÓDULO CLIENTE/CONSTRUTORA — Fornecedores+, Licitações, Docs legais, Solicitações
   ========================================================================== */
/* Selo de acesso restrito (Diretoria/cliente) */
.acesso-restrito { background: linear-gradient(135deg, #0f2a43, #16395c); color: #eaf3f8; border-radius: var(--radius-sm); padding: 9px 16px; margin-bottom: 14px; font-size: 13.5px; font-weight: 600; box-shadow: var(--shadow); }
.acesso-restrito strong { color: var(--gold-soft); }
.add-obra-btn { margin-top: 6px; opacity: .85; }

/* Fornecedores avançado */
.forn2-card { display: flex; flex-direction: column; gap: 6px; }
.forn2-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.forn2-top strong { color: var(--navy); }
[data-theme="dark"] .forn2-top strong { color: #cfe0f0; }
.forn2-docs { display: flex; gap: 6px; flex-wrap: wrap; }
.doc-chip { display: inline-block; font-size: 11px; border: 1px solid var(--line); border-radius: 999px; padding: 2px 8px; color: var(--muted); }
.doc-chip.off { opacity: .6; }

/* Licitações + comparativo */
.lic-card { display: flex; flex-direction: column; gap: 6px; }
.lic-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.lic-top strong { color: var(--navy); }
[data-theme="dark"] .lic-top strong { color: #cfe0f0; }
.lic-tbl td, .lic-tbl th { vertical-align: middle; }
.lic-val { font-weight: 800; white-space: nowrap; }
.lic-acts { white-space: nowrap; text-align: right; }
.lic-acts .btn, .lic-acts .rdo-row-del { margin-left: 3px; }
.prop-min { background: rgba(46,125,50,.12); }
.prop-min .lic-val { color: #1c6a24; }
.prop-max { background: rgba(192,57,43,.10); }
.prop-max .lic-val { color: #a5271b; }
.prop-venc { outline: 2px solid var(--gold); outline-offset: -2px; }
[data-theme="dark"] .prop-min { background: rgba(46,125,50,.22); }
[data-theme="dark"] .prop-min .lic-val { color: #7fd08a; }
[data-theme="dark"] .prop-max { background: rgba(192,57,43,.2); }
[data-theme="dark"] .prop-max .lic-val { color: #f0938a; }
.lic-economia { margin: 8px 0 0; font-size: 13.5px; }

/* Documentos legais */
.doc-alerta { background: #fdf3e6; border: 1px solid #f0c896; color: #8a5a12; border-radius: var(--radius-sm); padding: 11px 15px; margin-bottom: 14px; font-size: 13.5px; }
.doc-alerta ul { margin: 6px 0 0; padding-left: 20px; }
.doc-alerta li { margin: 2px 0; }
[data-theme="dark"] .doc-alerta { background: #2e2410; border-color: #5a4415; color: #e7c98a; }

/* Solicitações + thread */
.sol-card { display: flex; flex-direction: column; gap: 6px; }
.sol-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.sol-tipo { display: inline-block; font-size: 11px; font-weight: 700; color: #fff; background: var(--navy-3); border-radius: 999px; padding: 2px 9px; }
.thread { display: flex; flex-direction: column; gap: 10px; }
.thread-msg { max-width: 88%; padding: 10px 13px; border-radius: 12px; background: var(--line-2); }
.thread-orig { align-self: flex-start; border-top-left-radius: 3px; }
.thread-owner { align-self: flex-end; background: #e7f0fa; border-top-right-radius: 3px; }
[data-theme="dark"] .thread-msg { background: #1b2734; }
[data-theme="dark"] .thread-owner { background: #17324c; }
.thread-autor { font-size: 11px; color: var(--muted); margin-bottom: 3px; }
.thread-txt { font-size: 14px; }
.acesso-cli { border: 1px dashed var(--gold); }

/* ============================================================================
   MÓDULO EXECUTIVO — gauge de saúde, prognóstico, barras duplas, orçamento,
   Central de Obras e feed de alertas.
   ========================================================================== */
/* Gauge circular (anel de progresso) */
.gauge { width: 128px; height: 128px; display: block; }
.gauge-track { stroke: var(--line); }
[data-theme="dark"] .gauge-track { stroke: #26313d; }
.gauge-pct { font: 800 30px var(--font); }
.gauge-sub { font: 600 12px var(--font); fill: var(--muted); }

/* Hero de saúde (cartão principal do Painel) */
.saude-hero { display: flex; align-items: center; gap: 20px; border-left: 6px solid var(--line); }
.saude-hero.saude-green { border-left-color: #2e7d32; }
.saude-hero.saude-yellow { border-left-color: #e0a012; }
.saude-hero.saude-red { border-left-color: #c0392b; }
.saude-hero.saude-sem_dados { border-left-color: #8a8f98; }
.saude-gauge { flex: 0 0 auto; }
.saude-info { flex: 1; min-width: 0; }
.saude-badge { font: 800 17px var(--font); }
.saude-frase { margin: 6px 0 12px; font-size: 14.5px; color: var(--ink); }
.saude-metrs { display: flex; gap: 22px; flex-wrap: wrap; }
.saude-metrs .sm { display: flex; flex-direction: column; }
.saude-metrs .sm span { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.saude-metrs .sm strong { font-size: 20px; color: var(--navy); }
[data-theme="dark"] .saude-metrs .sm strong { color: #cfe0f0; }
@media (max-width: 560px) { .saude-hero { flex-direction: column; text-align: center; } .saude-metrs { justify-content: center; } }

/* Prognóstico (a "cereja") */
.prog-card h3 { margin: 0 0 12px; font-size: 15px; color: var(--navy); }
[data-theme="dark"] .prog-card h3 { color: #cfe0f0; }
.prog-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 560px) { .prog-grid { grid-template-columns: 1fr; } }
.prog-item { background: var(--bg); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 14px; }
[data-theme="dark"] .prog-item { background: #14202c; }
.prog-lbl { font-size: 12.5px; color: var(--muted); }
.prog-val { font-size: 24px; font-weight: 800; color: var(--navy); margin: 3px 0; }
[data-theme="dark"] .prog-val { color: var(--gold-soft); }
.prog-sub { font-size: 12.5px; font-weight: 600; }
.prog-sub.ruim { color: var(--danger); }
.prog-sub.bom { color: var(--ok); }

/* Barra dupla (planejado × executado, orçado × realizado) */
.bd-row { margin-bottom: 12px; }
.bd-lbl { font-size: 13px; color: var(--ink); margin-bottom: 5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bd-bars { display: flex; flex-direction: column; gap: 4px; }
.bd-bar { position: relative; height: 20px; background: var(--line-2); border-radius: 5px; overflow: hidden; }
.bd-fill { height: 100%; border-radius: 5px; transition: width .4s ease; }
.bd-bar span { position: absolute; right: 8px; top: 0; line-height: 20px; font-size: 11px; font-weight: 700; color: var(--ink); }
[data-theme="dark"] .bd-bar { background: #1b2734; }

/* Colunas do Painel (físico + orçado lado a lado) */
.painel-cols2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
.painel-cols2:empty { display: none; }
@media (max-width: 760px) { .painel-cols2 { grid-template-columns: 1fr; } }

/* Feed de alertas */
.alerta-item { display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; background: var(--card); border: 1px solid var(--line); border-left-width: 4px; border-radius: var(--radius-sm); padding: 10px 12px; margin-bottom: 7px; cursor: pointer; font: inherit; color: var(--ink); }
.alerta-item:hover { box-shadow: var(--shadow); }
.alerta-sev1 { border-left-color: var(--danger); }
.alerta-sev2 { border-left-color: var(--warn); }
.alerta-txt { flex: 1; font-size: 13.5px; }
.alerta-go { color: var(--muted); font-weight: 700; }
[data-theme="dark"] .alerta-item { background: #16212e; border-color: #28353f; }

/* Orçamento */
.orc-resumo { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 12px; margin-bottom: 16px; }
.orc-kpi { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px; box-shadow: var(--shadow); }
.orc-kpi-lbl { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.orc-kpi-val { font-size: 22px; font-weight: 800; color: var(--navy); }
[data-theme="dark"] .orc-kpi-val { color: #cfe0f0; }
.orc-cat { margin-bottom: 14px; }
.orc-cat-top { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-bottom: 5px; flex-wrap: wrap; }
.orc-cat-nome { font-weight: 700; }
.orc-cat-val { font-size: 13px; color: var(--muted); }

/* Planilha Contratual (importação da licitação) */
.pl-dica { margin: -6px 0 14px; }
.pl-resumo { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin-bottom: 16px; }
.pl-cod { font-family: var(--font-mono); font-size: 12px; color: var(--muted); white-space: nowrap; }
.pl-tbl td { font-size: 13px; }
.pl-tbl tr.pl-etapa td { background: #eef3f9; font-weight: 700; color: var(--navy); text-transform: uppercase; letter-spacing: .02em; font-size: 12px; }
[data-theme="dark"] .pl-tbl tr.pl-etapa td { background: #1b2734; color: #cfe0f0; }
.pl-sub { margin-top: 2px; }
.pl-legenda { margin: -6px 0 12px; }
.pl-bar { position: relative; height: 5px; margin-top: 4px; background: var(--line-2, #e6ebf1); border-radius: 3px; overflow: hidden; }
.pl-bar-ped { position: absolute; left: 0; top: 0; bottom: 0; background: #8fb7e8; }
.pl-bar-ent { position: absolute; left: 0; top: 0; bottom: 0; background: #2e7d32; }
[data-theme="dark"] .pl-bar { background: #2c3a48; }
.cmp-vinc-hint { background: #eef3f9; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 8px 10px; font-size: 12.5px; }
[data-theme="dark"] .cmp-vinc-hint { background: #1b2734; border-color: #2c3a48; }
.rf-busca { margin: 4px 0 12px; }
.rf-busca input { width: 100%; padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); font-size: 14px; background: var(--card); color: inherit; }
.rf-fonte { display: block; margin: 4px 0 10px; font-size: 12.5px; color: var(--muted); }
.rf-fonte input { display: block; width: 100%; max-width: 340px; margin-top: 4px; padding: 8px 10px; border: 1px solid var(--line); border-radius: var(--radius-sm); font-size: 14px; background: var(--card); color: inherit; }
.cfg-emp-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 10px; padding-top: 12px; border-top: 1px solid var(--line); }
.cfg-emp-head h3 { margin: 0; font-size: 16px; }
.pl-vazio { border: 1px dashed var(--line); border-radius: var(--radius); padding: 22px; text-align: center; color: var(--muted); background: var(--card); }
.pl-vazio p { margin: 4px 0; }
.pl-previa { border: 1px solid var(--gold, #c9a227); border-radius: var(--radius); padding: 14px; margin-bottom: 16px; background: #fffdf5; box-shadow: var(--shadow); }
[data-theme="dark"] .pl-previa { background: #23262a; border-color: #6b5d1f; }
.pl-previa-top { margin-bottom: 8px; }
.pl-avisos { background: #fff6e5; border: 1px solid #f0c674; color: #8a6d1a; border-radius: var(--radius-sm); padding: 8px 10px; font-size: 12.5px; margin-bottom: 10px; }
[data-theme="dark"] .pl-avisos { background: #2e2812; border-color: #6b5d1f; color: #e6c86a; }
.pl-previa-acts { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
.pl-rodape { margin-top: 12px; }

/* Central de Obras */
.central-resumo { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; }
.cr-item { flex: 1; min-width: 110px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 14px; text-align: center; box-shadow: var(--shadow); }
.cr-item strong { display: block; font-size: 26px; font-weight: 800; color: var(--navy); }
[data-theme="dark"] .cr-item strong { color: #cfe0f0; }
.cr-item span { font-size: 12px; color: var(--muted); }
.cr-green { border-top: 3px solid #2e7d32; } .cr-yellow { border-top: 3px solid #e0a012; } .cr-red { border-top: 3px solid #c0392b; }
.central-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; }
.central-card { display: flex; align-items: center; gap: 14px; text-align: left; background: var(--card); border: 1px solid var(--line); border-left-width: 5px; border-radius: var(--radius); padding: 14px; cursor: pointer; font: inherit; color: var(--ink); box-shadow: var(--shadow); transition: box-shadow .15s; }
.central-card:hover { box-shadow: var(--shadow-lg); }
.central-card.saude-green { border-left-color: #2e7d32; } .central-card.saude-yellow { border-left-color: #e0a012; } .central-card.saude-red { border-left-color: #c0392b; } .central-card.saude-sem_dados { border-left-color: #8a8f98; }
.central-gauge { flex: 0 0 auto; width: 76px; }
.central-gauge .gauge { width: 76px; height: 76px; }
.central-gauge .gauge-pct { font-size: 30px; }
.central-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.central-nome { color: var(--navy); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
[data-theme="dark"] .central-nome { color: #cfe0f0; }
.central-sem { font-size: 13px; font-weight: 700; }
.central-metrs { display: flex; gap: 12px; font-size: 12.5px; color: var(--ink); margin-top: 3px; }
.central-alr { color: var(--danger); font-weight: 700; }
.central-go { color: var(--muted); font-size: 20px; font-weight: 700; flex: 0 0 auto; }

/* Auditoria diamante: aviso cruzado CND × habilitação */
.forn2-cndwarn { font-size: 11px; color: #c0392b; background: rgba(192,57,43,.08); border: 1px solid rgba(192,57,43,.25); border-radius: 6px; padding: 3px 8px; margin: 4px 0 2px; }

/* Curva S e histograma (padrão-diamante) */
.curvas-wrap, .hg-wrap { overflow-x: auto; }
.curvas { width: 100%; min-width: 340px; height: auto; }
.hg { width: 100%; min-width: 280px; height: auto; }
.cs-grid { stroke: var(--line); stroke-width: 1; }
.cs-ax { font-size: 9px; fill: var(--muted); }
.cs-hoje { stroke: #c0392b; stroke-width: 1; stroke-dasharray: 3 3; }
.cs-hoje-t { font-size: 9px; fill: #c0392b; }
.hg-val { font-size: 8px; fill: var(--muted); }
.curvas-leg { display: flex; gap: 16px; font-size: 12px; color: var(--muted); margin-top: 6px; }
.curvas-leg i { display: inline-block; width: 14px; height: 4px; border-radius: 2px; vertical-align: middle; margin-right: 5px; }
/* EVM card */
.evm-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; margin-top: 4px; }
.evm-item { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 10px 12px; text-align: center; }
.evm-val { font-size: 22px; font-weight: 800; }
.evm-lbl { font-size: 11px; color: var(--muted); }
.evm-sub { font-size: 10px; color: var(--muted); }
.abc-A { display:inline-block; min-width:20px; padding:1px 6px; border-radius:5px; font-weight:800; font-size:12px; background:#2e7d3222; color:#2e7d32; }
.abc-B { display:inline-block; min-width:20px; padding:1px 6px; border-radius:5px; font-weight:800; font-size:12px; background:#e0a01222; color:#b5651d; }
.abc-C { display:inline-block; min-width:20px; padding:1px 6px; border-radius:5px; font-weight:700; font-size:12px; background:#8a8f9822; color:#5b6b7b; }

/* ===== Cronograma v2 — abas, Gantt SVG, painel EVM, simulação ============ */
.crono-head-acts{display:flex;gap:8px;flex-wrap:wrap}
.crono-abas{display:flex;gap:6px;margin:0 0 12px;flex-wrap:wrap}
.crono-aba{border:1px solid var(--line,#dbe2ea);background:#fff;border-radius:20px;padding:7px 14px;cursor:pointer;font-size:.86rem;color:#33404e}
.crono-aba.on{background:#0f213c;border-color:#0f213c;color:#fff;font-weight:600}
.crono-sim-banner{background:#fff7e0;border:1px solid #e6c96a;border-radius:10px;padding:9px 12px;margin:0 0 12px;font-size:.88rem;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.crono-sim-acts{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.crono-sim-on{background:#fff7e0;border-radius:8px;padding:8px 10px;font-size:.88rem}
.crono-erro{background:#fbecec;border:1px solid #e2b4b4;color:#7c2d2d;border-radius:10px;padding:9px 12px;margin:0 0 10px;font-size:.88rem}
.crono-aviso{background:#fff7e0;border:1px solid #e6c96a;color:#6b5312;border-radius:10px;padding:8px 12px;margin:0 0 10px;font-size:.84rem}
.crono-gantt-tools{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.crono-chips{display:flex;gap:6px;flex-wrap:wrap}
.crono-chip{border:1px solid var(--line,#dbe2ea);background:#f6f8fb;border-radius:16px;padding:4px 11px;font-size:.8rem;cursor:pointer;color:#3a4653}
.crono-chip.on{background:#1e4b76;border-color:#1e4b76;color:#fff}
.crono-tools-r{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.crono-base-sel{font-size:.8rem;color:#5a6675;display:flex;gap:6px;align-items:center}
.crono-base-sel select{padding:4px 8px;border:1px solid var(--line,#dbe2ea);border-radius:8px;font-size:.8rem}
.crono-legenda{display:flex;gap:14px;flex-wrap:wrap;font-size:.76rem;color:#5a6675;margin-top:8px;align-items:center}
.crono-legenda .lg{display:inline-block;width:16px;height:9px;border-radius:3px;vertical-align:middle;margin-right:4px;background:#7fa6c8;border:1px solid transparent}
.lg-crit{background:#e05252!important;border-color:#b23b3b!important}
.lg-quase{background:#f2c14e!important;border-color:#c99b23!important}
.lg-atras{background:#f0a3a3!important;border-color:#d97575!important}
.lg-done{background:#63b58c!important}
.lg-ghost{background:#cfd6de!important;height:5px!important}
/* Gantt v2 */
.g2-wrap{display:flex;border:1px solid var(--line,#e4e8ee);border-radius:10px;overflow:hidden;background:#fff}
.g2-col-lbl{width:230px;min-width:230px;border-right:1px solid var(--line,#e4e8ee);background:#fbfcfe}
.g2-lbl-head{height:34px;display:flex;align-items:center;padding:0 10px;font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:#8a97a5;border-bottom:1px solid var(--line,#e4e8ee);font-weight:700}
.g2-lbl{display:flex;align-items:center;gap:4px;border-bottom:1px solid #f0f3f7;font-size:.82rem;color:#2c3945;cursor:default;overflow:hidden;white-space:nowrap}
.g2-lbl-fase{font-weight:700;color:#0f213c;background:#f4f6fa}
.g2-lbl-crit .g2-lbl-tx{color:#a83232}
.g2-lbl-tx{overflow:hidden;text-overflow:ellipsis;flex:1}
.g2-lbl-pct{font-size:.72rem;color:#8a97a5;padding-right:8px}
.g2-tg{width:16px;text-align:center;cursor:pointer;color:#5a6675;flex-shrink:0}
.g2-tg-vazio{cursor:default}
.g2-col-svg{flex:1;min-width:0}
.g2-svg-scroll{overflow-x:auto;overflow-y:hidden}
.g2-svg{display:block}
.g2-head-bg{fill:#fbfcfe}
.g2-mes-l{stroke:#e4e8ee}
.g2-mes-t{font-size:11px;fill:#5a6675;font-weight:600}
.g2-row-l{stroke:#f0f3f7}
.g2-fds{fill:#f5f7fa}
.g2-hoje{stroke:#b8862f;stroke-width:1.6;stroke-dasharray:4 3}
.g2-hoje-t{font-size:10px;fill:#b8862f;font-weight:700}
.g2-ghost{fill:#cfd6de}
.g2-bar-bg{fill:#7fa6c8;stroke:#5f8db3;cursor:grab}
.g2-bar-fill{fill:#3c6f9d;pointer-events:none}
.g2-bar.done .g2-bar-bg{fill:#9fd0b5;stroke:#63b58c}
.g2-bar.done .g2-bar-fill{fill:#3f9268}
.g2-bar.atras .g2-bar-bg{fill:#f0b3b3;stroke:#d97575}
.g2-bar.atras .g2-bar-fill{fill:#c65555}
.g2-bar.quase .g2-bar-bg{stroke:#c99b23;stroke-width:2;fill:#f6d98a}
.g2-bar.quase .g2-bar-fill{fill:#d9ae3e}
.g2-bar.crit .g2-bar-bg{stroke:#b23b3b;stroke-width:2.4;fill:#eb8f8f}
.g2-bar.crit .g2-bar-fill{fill:#cf4b4b}
.g2-bar.dragging .g2-bar-bg{opacity:.75;cursor:grabbing}
.g2-bar-cpm{font-size:10px;fill:#123;opacity:.75;pointer-events:none}
.g2-resize{fill:transparent;cursor:ew-resize}
.g2-marco path{fill:#0f213c;stroke:#0f213c}
.g2-marco.crit path{fill:#b23b3b;stroke:#b23b3b}
.g2-marco.done path{fill:#2f8f5b;stroke:#2f8f5b}
.g2-marco-t{font-size:10.5px;fill:#33404e}
.g2-fase{fill:#31465f}
.g2-fase-p{fill:#31465f}
.g2-dep{fill:none;stroke-width:1.6;opacity:.85}
/* Painel EVM */
.crono-badge{border-radius:10px;padding:10px 14px;font-weight:700;margin:0 0 12px;font-size:.95rem}
.crono-badge-verde{background:#e7f4ef;color:#0d6b52;border:1px solid #bfe3d4}
.crono-badge-amarelo{background:#fff7e0;color:#8a6d1a;border:1px solid #e6c96a}
.crono-badge-vermelho{background:#fbecec;color:#a83232;border:1px solid #e2b4b4}
.crono-badge-cinza{background:#f2f4f7;color:#5a6675;border:1px solid #dde3ea}
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;margin-bottom:12px}
.kpi-card{border-radius:12px;padding:12px 14px;border:1px solid var(--line,#e4e8ee);background:#fff}
.kpi-verde{border-left:5px solid #2f8f5b}
.kpi-amarelo{border-left:5px solid #d9ae3e}
.kpi-vermelho{border-left:5px solid #c65555}
.kpi-cinza{border-left:5px solid #aeb8c2}
.kpi-top{font-size:.78rem;color:#5a6675;font-weight:600;display:flex;align-items:center;gap:6px}
.kpi-info{margin-left:auto;width:18px;height:18px;border-radius:50%;border:1px solid #b9c3cd;background:#fff;color:#5a6675;font-size:.7rem;cursor:pointer;line-height:1}
.kpi-val{font-size:1.55rem;font-weight:800;color:#0f213c;margin:4px 0 2px}
.kpi-sub{font-size:.75rem;color:#5a6675}
.cv-wrap svg,.hf-svg{width:100%;height:auto;display:block}
.cv-pv{fill:none;stroke:#3b6fb3;stroke-width:2;stroke-dasharray:6 4}
.cv-ev{fill:none;stroke:#2f8f5b;stroke-width:2.5}
.cv-ac{fill:none;stroke:#b23b3b;stroke-width:2}
.cv-grid{stroke:#eef1f5}
.cv-ax{font-size:10px;fill:#8a97a5}
.cv-hoje{stroke:#b8862f;stroke-dasharray:3 3}
.cv-es{stroke:#b8862f;stroke-width:2.4}
.cv-es-t{font-size:10.5px;fill:#b8862f;font-weight:700}
.cv-leg{display:flex;gap:14px;font-size:.76rem;color:#5a6675;margin-top:6px;flex-wrap:wrap}
.cv-leg i{display:inline-block;width:16px;height:3px;vertical-align:middle;margin-right:5px}
.hf-bar{fill:#9db8d6}
.hf-bar.pico{fill:#e8a25c}
.hf-pico{cursor:pointer}
.hf-ac{stroke:#b23b3b;stroke-width:2}
.hf-media{stroke:#8a97a5;stroke-dasharray:4 3}
.crono-info{font-size:.9rem;line-height:1.55;color:#2c3945}
/* Editor de vínculos */
.dep-row{display:flex;gap:6px;align-items:center;margin:5px 0;font-size:.82rem}
.dep-row select,.dep-row input{padding:5px 7px;border:1px solid var(--line,#dbe2ea);border-radius:7px;font-size:.8rem}
.dep-id{flex:2;min-width:0}.dep-tipo{flex:1.4}.dep-lag{width:64px}
/* Cenários / export / wizard */
.cen-card .cen-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.crono-exp-grid{display:grid;gap:8px}
.crono-wiz{display:grid;gap:12px}
.wiz-passo{display:flex;gap:10px;align-items:flex-start;font-size:.9rem}
.wiz-n{width:26px;height:26px;border-radius:8px;background:#0f213c;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;flex-shrink:0}
label.chk{display:flex;gap:8px;align-items:center;font-size:.88rem}
@media (max-width:640px){.g2-col-lbl{width:150px;min-width:150px}.crono-gantt-tools{flex-direction:column;align-items:flex-start}}

/* ===== Defesa do Prazo (pleito) + chuva no Gantt ========================= */
.g2-chuva{fill:#dcebfa}
.lg-chuva{background:#dcebfa!important;border-color:#a9c9e8!important}
.pl-card h3{display:flex;align-items:center;gap:8px}
.pl-selo{font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;background:#0f213c;color:#d8b25e;border-radius:5px;padding:2px 7px;font-weight:700}
.pl-stats{display:flex;gap:10px;align-items:stretch;flex-wrap:wrap;margin:10px 0}
.pl-stat{flex:1;min-width:130px;border:1px solid var(--line,#e4e8ee);border-radius:10px;padding:9px 11px;text-align:center;background:#f8fafc}
.pl-stat.pl-ok{border-color:#bfe3d4;background:#f0faf5}
.pl-stat.pl-ruim{border-color:#e2b4b4;background:#fdf3f3}
.pl-n{font-size:1.5rem;font-weight:800;color:#0f213c}
.pl-stat.pl-ok .pl-n{color:#0d6b52}
.pl-stat.pl-ruim .pl-n{color:#a83232}
.pl-l{font-size:.72rem;color:#5a6675;line-height:1.3}
.pl-op{display:flex;align-items:center;font-size:1.3rem;color:#8a97a5;font-weight:700}
@media (max-width:640px){.pl-op{display:none}}

/* ===== Ajudas ⓘ de campo + mapa de conexões ============================== */
.fld{display:inline-flex;align-items:center;gap:6px}
.fld-info{width:17px;height:17px;font-size:.66rem;flex-shrink:0}
label .fld{margin-bottom:2px}
.aj-box{font-size:.9rem;color:#2c3945;display:grid;gap:10px}
.aj-sec{line-height:1.5}
.aj-k{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:#8a97a5;font-weight:700;margin-bottom:2px}
.aj-ex{background:#f6f8fb;border:1px dashed #d6dde6;border-radius:8px;padding:8px 11px}
.aj-auto{background:#f0faf5;border:1px solid #bfe3d4;border-radius:8px;padding:8px 11px}
.aj-auto .aj-k{color:#0d6b52}
.aj-ref{font-size:.74rem;color:#8a97a5;font-style:italic;border-top:1px solid #eef1f5;padding-top:7px}
.crono-aba-conx{margin-left:auto;border-style:dashed;color:#1e4b76}
.conx-grid{display:grid;gap:9px;max-height:56vh;overflow-y:auto;padding-right:4px}
.conx-card{border:1px solid #e4e8ee;border-radius:10px;padding:9px 12px;display:grid;grid-template-columns:auto auto 1fr;gap:4px 10px;align-items:baseline;background:#fff}
.conx-de{font-weight:700;color:#0f213c;font-size:.86rem;white-space:nowrap}
.conx-seta{color:#b8862f;font-weight:800}
.conx-para{font-size:.84rem;color:#1e4b76;font-weight:600}
.conx-como{grid-column:1/-1;font-size:.8rem;color:#5a6675;line-height:1.42}
.exp-row{display:flex;align-items:center;gap:8px}
.exp-row .btn{flex:1;justify-content:flex-start}
@media (max-width:640px){.crono-aba-conx{margin-left:0}}

/* ===== Roteiro vivo + Guia navegável + frase de vínculo ================== */
.rot-card{border-left:4px solid #b8862f;margin-bottom:10px}
.rot-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.rot-acts{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.rot-linha{display:flex;align-items:center;gap:0;flex-wrap:wrap;row-gap:8px}
.rot-passo{display:flex;align-items:center;gap:6px;border:1px solid #dbe2ea;border-radius:18px;padding:4px 11px 4px 6px;font-size:.76rem;color:#5a6675;cursor:pointer;background:#fff;white-space:nowrap}
.rot-passo span{max-width:170px;overflow:hidden;text-overflow:ellipsis}
.rot-passo.ok{background:#f0faf5;border-color:#bfe3d4;color:#0d6b52}
.rot-passo.agora{background:#0f213c;border-color:#0f213c;color:#fff;font-weight:700;box-shadow:0 2px 8px rgba(15,33,60,.25)}
.rot-lig{width:14px;height:2px;background:#dbe2ea;flex-shrink:0}
.guia-nav-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.guia-dots i{display:inline-block;width:9px;height:9px;border-radius:50%;background:#dbe2ea;margin-left:5px;cursor:pointer}
.guia-dots i.on{background:#b8862f}
.guia-t{margin:2px 0 8px;color:#0f213c}
.guia-corpo{font-size:.92rem;color:#2c3945;line-height:1.55;max-height:56vh;overflow-y:auto;padding-right:6px}
.guia-corpo p{margin:0 0 8px}
.guia-qa{list-style:none;margin:4px 0;padding:0}
.guia-qa li{padding:6px 0 6px 14px;position:relative;border-bottom:1px dashed #eef1f5}
.guia-qa li:before{content:"";position:absolute;left:0;top:13px;width:6px;height:6px;border-radius:50%;background:#b8862f}
.guia-box{background:#f6f8fb;border:1px dashed #d6dde6;border-radius:9px;padding:9px 12px;margin:8px 0;font-size:.88rem}
.guia-passos{margin:8px 0 8px 4px;padding-left:16px}
.guia-passos li{margin-bottom:6px}
.guia-diagrama{background:#f6f8fb;border-radius:10px;padding:12px;text-align:center;margin:8px 0}
.gd-bar{display:inline-block;padding:7px 16px;border-radius:6px;color:#fff;font-size:.84rem;font-weight:600}
.gd-a{background:#7fa6c8;border:1px solid #5f8db3}
.gd-b{background:#eb8f8f;border:2px solid #b23b3b}
.gd-seta{display:inline-block;margin:0 10px;color:#3b6fb3;font-weight:800;font-size:1.2rem}
.gd-leg{font-size:.78rem;color:#5a6675;margin-top:8px}
.dep-row-wrap{margin:6px 0}
.dep-frase{font-size:.78rem;color:#0d6b52;background:#f0faf5;border:1px solid #d5eee2;border-radius:7px;padding:5px 10px;margin-top:3px;line-height:1.35}
.dep-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}

/* ===== Botão 📖 flutuante do motor didático ============================== */
.dida-fab{position:fixed;right:18px;bottom:18px;width:46px;height:46px;border-radius:50%;border:none;background:#0f213c;color:#fff;font-size:1.25rem;cursor:pointer;box-shadow:0 4px 14px rgba(15,33,60,.35);z-index:850;display:flex;align-items:center;justify-content:center;transition:transform .15s}
.dida-fab:hover{transform:scale(1.08);background:#16305a}
@media (max-width:640px){.dida-fab{right:12px;bottom:74px}}

/* ===== Importação da planilha orçamentária =============================== */
.imp-tabela{max-height:44vh;overflow-y:auto}
.imp-tabela .table td{padding:4px 7px;font-size:.82rem}
.imp-off td{opacity:.42}
.imp-cat{padding:3px 6px;border:1px solid var(--line,#dbe2ea);border-radius:6px;font-size:.76rem}
.imp-total{margin:8px 0 6px;font-size:.9rem;color:#0f213c;text-align:right}
.imp-dest{display:grid;gap:5px;background:#f6f8fb;border-radius:8px;padding:9px 12px;font-size:.86rem}

/* plano automático na importação */
.imp-plano{border-top:1px dashed #d6dde6;margin-top:6px;padding-top:8px;display:grid;gap:6px}
.imp-plano-campos{display:flex;gap:14px;flex-wrap:wrap}
.imp-plano-campos label{display:grid;gap:3px;font-size:.82rem;color:#33404e}
.imp-plano-campos input,.imp-plano-campos select{padding:6px 8px;border:1px solid var(--line,#dbe2ea);border-radius:7px}
.imp-prazo-par{display:flex;gap:6px}
.imp-prazo-par input{width:80px}

/* ===== Aba 🧰 Insumos ==================================================== */
.ins-intro h3{display:flex;align-items:center;gap:8px}
.ins-card summary{cursor:pointer;display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;list-style:none}
.ins-card summary::-webkit-details-marker{display:none}
.ins-card summary:before{content:"▸";color:#b8862f;margin-right:4px}
.ins-card[open] summary:before{content:"▾"}
.ins-per{font-size:.78rem;color:#5a6675}
.ins-chips{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 4px}
.ins-chip{background:#eef2f8;border:1px solid #d9e2ee;color:#1e4b76;border-radius:14px;padding:3px 10px;font-size:.74rem}
.ins-tab td{padding:4px 8px;font-size:.84rem}
.ins-reuso{color:#0d6b52;font-weight:700}
.ins-direto{cursor:help;font-size:.82rem;opacity:.85}
.imp-acoes{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.imp-secao td{background:#eef4fb}
.imp-secao.imp-off td{background:#f4f8fc}
[data-theme="dark"] .imp-secao td{background:rgba(80,130,190,.14)}
.ins-fer{font-size:.8rem;color:#5a6675;margin:6px 0 2px;line-height:1.5}
.ins-nrec{background:#fff7e0;border:1px dashed #e6c96a;border-radius:9px;padding:8px 11px;margin-top:8px;font-size:.82rem}
.ins-nrec-lista{display:grid;gap:6px;margin-top:6px}
.ins-nrec-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.ins-nrec-desc{flex:1;min-width:180px}
.ins-nrec-comp{max-width:260px;padding:4px 6px;border:1px solid #dbe2ea;border-radius:7px;font-size:.76rem}
.ins-nrec-qtd{width:74px;padding:4px 6px;border:1px solid #dbe2ea;border-radius:7px}
.ins-vazias{font-size:.86rem}
.ins-add-btn{background:#f6f8fb;border:1px dashed #b9c3cd;border-radius:14px;padding:3px 10px;font-size:.76rem;color:#33404e;cursor:pointer;margin:2px}
.ins-add-btn:hover{background:#eef2f8}
.ins-actions{align-items:center;flex-wrap:wrap}
.ins-sel-info{font-size:.8rem;color:#33404e;background:#eef2f8;border:1px solid #d9e2ee;border-radius:14px;padding:4px 11px;white-space:nowrap}
.ins-sel-info strong{color:#1e4b76}
.ins-print-et{margin-left:auto;flex:none}
.ins-chk-master{cursor:pointer}
.ins-chk{cursor:pointer}
.ins-sug{cursor:help;font-size:.9rem}
