:root{
  --red:#D90429;
  --red-600:#D90429;
  --red-500:#B80021;
  --red-700:#A5001D;
  --red-100:#FCEBEE;
  --red-300:#F2A7B4;
  --logo-red:#D7263D;
  --ink:#232323;
  --ink-2:#4C4C4C;
  --muted:#8A8A8A;
  --label:#919191;
  --line:#E4E4E4;
  --line-2:#EFEFEF;
  --surface:#FFFFFF;
  --surface-2:#F7F7F7;
  --bg:#FFFFFF;
  --rail:#FFFFFF;
  --rail-ink:#232323;
  --rail-muted:#919191;
  --rail-line:#E4E4E4;
  --good:#0E7A4B;
  --good-bg:#E6F4EC;
  --warn:#9A5B00;
  --warn-bg:#FDF1DE;
  --crit:#D90429;
  --crit-bg:#FCEBEE;
  --info:#3F4B5B;
  --info-bg:#F0F2F5;
  --track:#EDEDED;
  --on-accent:#FFFFFF;
  --radius:2px;
  --shadow:0 12px 32px -18px rgba(0,0,0,.28);
  --sans:"Poppins", ui-sans-serif, system-ui, sans-serif;
  --display:"Poppins", ui-sans-serif, system-ui, sans-serif;
  --mono:"Poppins", ui-sans-serif, system-ui, sans-serif;
  --track-wide:.26em;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --red:#FF3B5C; --red-600:#FF3B5C; --red-500:#FF6680; --red-700:#FF8FA2; --red-100:#2A1216; --red-300:#7A2433;
    --logo-red:#FF4D66;
    --ink:#F2F2F2; --ink-2:#C9C9C9; --muted:#9A9A9A; --label:#8C8C8C;
    --line:#2E2E2E; --line-2:#242424;
    --surface:#161616; --surface-2:#1E1E1E; --bg:#101010;
    --rail:#161616; --rail-ink:#F2F2F2; --rail-muted:#8C8C8C; --rail-line:#2E2E2E;
    --good:#5CCB94; --good-bg:#10241A; --warn:#E7B062; --warn-bg:#2A1F10;
    --crit:#FF6680; --crit-bg:#2A1216; --info:#AEB8C6; --info-bg:#1D2128;
    --track:#2A2A2A; --on-accent:#FFFFFF;
    --shadow:0 12px 32px -18px rgba(0,0,0,.8);
  }
}
:root[data-theme="dark"]{
  --red:#FF3B5C; --red-600:#FF3B5C; --red-500:#FF6680; --red-700:#FF8FA2; --red-100:#2A1216; --red-300:#7A2433;
  --logo-red:#FF4D66;
  --ink:#F2F2F2; --ink-2:#C9C9C9; --muted:#9A9A9A; --label:#8C8C8C;
  --line:#2E2E2E; --line-2:#242424;
  --surface:#161616; --surface-2:#1E1E1E; --bg:#101010;
  --rail:#161616; --rail-ink:#F2F2F2; --rail-muted:#8C8C8C; --rail-line:#2E2E2E;
  --good:#5CCB94; --good-bg:#10241A; --warn:#E7B062; --warn-bg:#2A1F10;
  --crit:#FF6680; --crit-bg:#2A1216; --info:#AEB8C6; --info-bg:#1D2128;
  --track:#2A2A2A; --on-accent:#FFFFFF;
  --shadow:0 12px 32px -18px rgba(0,0,0,.8);
}
*{box-sizing:border-box}
[hidden]{display:none !important}
html{background:var(--bg)}
body{background:var(--bg); color:var(--ink); font-family:var(--sans); font-size:14px; line-height:1.6; -webkit-font-smoothing:antialiased; margin:0}
button, input, select, textarea{font:inherit; color:inherit}
:focus-visible{outline:2px solid var(--red); outline-offset:2px}
@media (prefers-reduced-motion: reduce){*{animation:none !important; transition:none !important}}

/* ---------- shell: faixa vermelha lateral, como nos documentos ---------- */
.app{display:grid; grid-template-columns:236px minmax(0,1fr); min-height:100vh; border-left:10px solid var(--red)}
.rail{background:var(--rail); color:var(--rail-ink); display:flex; flex-direction:column; gap:22px; padding:26px 16px 20px; position:sticky; top:0; height:100vh; overflow-y:auto; border-right:1px solid var(--rail-line)}
.brand{display:flex; flex-direction:column; align-items:flex-start; gap:10px; padding:0 4px}
.brand-logo{display:block; width:124px; height:auto; color:var(--ink)}
.brand-sub{font-size:9.5px; color:var(--rail-muted); letter-spacing:var(--track-wide); text-transform:uppercase}
.nav{display:flex; flex-direction:column; gap:1px}
.nav-label{font-size:9.5px; font-weight:500; letter-spacing:var(--track-wide); text-transform:uppercase; color:var(--rail-muted); padding:0 10px 8px}
.nav-item{display:flex; align-items:center; gap:12px; width:100%; text-align:left; background:none; border:0; border-left:2px solid transparent; padding:9px 10px; color:var(--ink-2); cursor:pointer; font-size:13.5px}
.nav-item:hover{color:var(--ink); background:var(--surface-2)}
.nav-item[aria-current="true"]{color:var(--red); font-weight:600; border-left-color:var(--red); background:var(--red-100)}
.nav-item svg{width:16px; height:16px; flex:none}
.rail-foot{margin-top:auto; border-top:1px solid var(--rail-line); padding-top:18px; display:flex; flex-direction:column; gap:10px}
.role-title{font-size:9.5px; font-weight:500; letter-spacing:var(--track-wide); text-transform:uppercase; color:var(--rail-muted)}
.role-switch{display:flex; border:1px solid var(--line); padding:2px; gap:2px}
.role-switch button{flex:1; border:0; background:none; padding:6px 4px; font-size:12px; cursor:pointer; color:var(--muted)}
.role-switch button[aria-pressed="true"]{background:var(--ink); color:var(--bg); font-weight:600}
.role-pick{width:100%; background:var(--surface); color:var(--ink); border:1px solid var(--line); border-radius:var(--radius); padding:8px 9px; font-size:12.5px}

.main{min-width:0; display:flex; flex-direction:column}
.topbar{position:sticky; top:0; z-index:20; background:color-mix(in srgb, var(--bg) 92%, transparent); backdrop-filter:blur(8px); border-bottom:1px solid var(--line); padding:14px 40px; display:flex; align-items:center; gap:16px; flex-wrap:wrap}
.crumbs{display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--muted); min-width:0; flex-wrap:wrap}
.crumbs button{background:none; border:0; padding:0; cursor:pointer; color:var(--muted)}
.crumbs button:hover{color:var(--red)}
.crumbs b{color:var(--ink); font-weight:600}
.sync{margin-left:auto; display:inline-flex; align-items:center; gap:8px; font-size:10px; letter-spacing:.16em; text-transform:uppercase; white-space:nowrap; color:var(--muted)}
.sync i{width:6px; height:6px; border-radius:50%; flex:none; display:block}
.sync.ok i{background:var(--good)}
.sync.busy i{background:var(--warn)}
.sync.off{color:var(--crit)}
.sync.off i{background:var(--crit)}
.view{padding:32px 40px 72px; display:flex; flex-direction:column; gap:24px; max-width:1280px; width:100%; margin:0 auto}

/* ---------- tipografia ---------- */
.eyebrow{font-size:10.5px; font-weight:700; letter-spacing:var(--track-wide); text-transform:uppercase; color:var(--red)}
.eyebrow button, .eyebrow .linkish{text-transform:inherit; letter-spacing:inherit; font-weight:inherit; color:inherit}
h1{font-weight:700; font-size:32px; line-height:1.15; margin:8px 0 0; text-wrap:balance; letter-spacing:-.01em; color:var(--ink)}
h2{font-weight:700; font-size:11px; margin:0; letter-spacing:var(--track-wide); text-transform:uppercase; color:var(--red)}
h3{font-weight:600; font-size:14px; margin:0}
.sub{color:var(--muted); font-size:14px; margin:6px 0 0}
.page-head{display:flex; align-items:flex-end; gap:16px; flex-wrap:wrap; padding-bottom:20px; border-bottom:1px solid var(--line)}
.page-head .grow{flex:1 1 320px; min-width:0}
.num{font-variant-numeric:tabular-nums}

/* ---------- botões ---------- */
.btn{display:inline-flex; align-items:center; gap:8px; border:1px solid var(--line); background:var(--surface); padding:8px 14px; border-radius:var(--radius); cursor:pointer; font-size:13px; white-space:nowrap; color:var(--ink)}
.btn:hover{border-color:var(--ink)}
.btn-primary{background:var(--red); border-color:var(--red); color:var(--on-accent); font-weight:600}
.btn-primary:hover{background:var(--red-500); border-color:var(--red-500)}
.btn-ghost{background:none; border-color:transparent; color:var(--muted); padding:6px 8px}
.btn-ghost:hover{color:var(--ink); border-color:transparent; background:var(--surface-2)}
.btn-danger{color:var(--crit)}
.btn-danger:hover{background:var(--crit-bg); border-color:var(--crit)}
.btn-ghost.btn-danger{background:none}
.btn-ghost.btn-danger:hover{background:var(--crit-bg); color:var(--crit)}
.btn-sm{padding:5px 9px; font-size:12px}
.btn svg{width:14px; height:14px}
.btn:disabled{opacity:.6; cursor:progress}
.acts{display:inline-flex; gap:4px; justify-content:flex-end; flex-wrap:wrap}

/* ---------- superfícies ---------- */
.panel{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius)}
.panel-head{display:flex; align-items:center; gap:12px; padding:18px 20px 14px; border-bottom:1px solid var(--line); flex-wrap:wrap}
.panel-head .grow{flex:1; min-width:0}
.panel-head .hint{margin-top:4px; display:block}
.panel-body{padding:18px 20px}
.bare-head{padding-left:0; padding-right:0; border:0; padding-bottom:0}
.grid{display:grid; gap:18px}
.cols-2{grid-template-columns:repeat(auto-fit, minmax(310px,1fr))}
.cols-3{grid-template-columns:repeat(auto-fit, minmax(230px,1fr))}
.stack{display:flex; flex-direction:column; gap:16px}

/* ---------- KPIs: caixa cinza com barra vermelha ---------- */
.kpis{display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:14px}
.modal .kpis{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.kpi{padding:16px 18px 16px 20px; background:var(--surface-2); border-left:4px solid var(--red); display:flex; flex-direction:column; gap:4px; min-width:0}
.kpi-k{font-size:9.5px; font-weight:500; letter-spacing:var(--track-wide); text-transform:uppercase; color:var(--label)}
.kpi-v{font-size:24px; font-weight:700; letter-spacing:-.01em; font-variant-numeric:tabular-nums; color:var(--ink); line-height:1.25; overflow-wrap:anywhere}
.kpi-v.neg{color:var(--red)}
.kpi-n{font-size:12px; color:var(--muted)}
.kpi-n strong{color:var(--red); font-weight:700}

/* ---------- medidores ---------- */
.meter{display:block; height:4px; background:var(--track); overflow:hidden; position:relative}
.meter i{display:block; height:100%; background:var(--red); min-width:3px}
.meter i.good{background:var(--good)}
.meter i.warn{background:var(--warn)}
.meter-row{display:flex; flex-direction:column; gap:8px}
.meter-legend{display:flex; justify-content:space-between; gap:12px; font-size:12px; color:var(--muted)}
.meter-legend b{color:var(--ink)}
.bars{display:flex; flex-direction:column; gap:12px}
.bar{display:grid; grid-template-columns:minmax(96px,132px) minmax(0,1fr) auto; align-items:center; gap:12px; font-size:12.5px}
.bar-name{color:var(--ink-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.bar-track{height:8px; background:var(--track); position:relative}
.bar-fill{position:absolute; inset:0 auto 0 0; background:var(--red); min-width:3px}
.bar-val{font-variant-numeric:tabular-nums; font-size:12.5px; font-weight:600; color:var(--ink)}

/* ---------- tabelas: rótulos espaçados e fios finos ---------- */
.tw{overflow-x:auto}
table{border-collapse:collapse; width:100%; font-size:13px; min-width:620px}
th{font-weight:500; font-size:9.5px; letter-spacing:.22em; text-transform:uppercase; color:var(--label); text-align:left; padding:12px 16px; border-bottom:1px solid var(--line); white-space:nowrap}
td{padding:12px 16px; border-bottom:1px solid var(--line); vertical-align:middle}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:var(--surface-2)}
td.r, th.r{text-align:right}
td.money{font-variant-numeric:tabular-nums; white-space:nowrap}
tfoot td{padding:12px 16px; border-top:1px solid var(--ink); font-weight:700}
.linkish{background:none; border:0; padding:0; cursor:pointer; color:var(--ink); font:inherit; font-weight:600; text-align:left}
.linkish:hover{color:var(--red)}

/* ---------- pills ---------- */
.pill{display:inline-flex; align-items:center; gap:5px; font-size:10px; padding:3px 8px; white-space:nowrap; font-weight:600; letter-spacing:.08em; text-transform:uppercase; border-radius:var(--radius)}
.pill svg{width:10px; height:10px}
.pill.good{background:var(--good-bg); color:var(--good)}
.pill.warn{background:var(--warn-bg); color:var(--warn)}
.pill.crit{background:var(--crit-bg); color:var(--crit)}
.pill.info{background:var(--info-bg); color:var(--info)}
.pill.mute{background:var(--surface-2); color:var(--muted)}
.pill.line{background:none; border:1px solid var(--line); color:var(--muted); font-weight:500}
.pill-row{display:flex; flex-wrap:wrap; gap:6px}

/* ---------- cards de imóvel e empresa ---------- */
.pcard{display:flex; flex-direction:column; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; text-align:left; cursor:pointer; padding:0; font:inherit; color:inherit; width:100%}
.pcard:hover{border-color:var(--ink); box-shadow:var(--shadow)}
.pcard-hero{display:block; aspect-ratio:16/6; background:var(--surface-2) center/cover no-repeat; border-bottom:3px solid var(--red)}
.pcard-stripe{display:block; height:3px; background:var(--red)}
.pcard-stripe.pool{background:var(--ink)}
.pcard-in{padding:18px 20px; display:flex; flex-direction:column; gap:14px; min-width:0}
.pcard-top{display:flex; align-items:flex-start; gap:10px; justify-content:space-between}
.pcard-name{display:block; font-weight:700; font-size:18px; line-height:1.25}
.pcard-addr{display:block; font-size:12px; color:var(--muted); margin-top:2px}
.pcard-stats{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; border-top:1px solid var(--line); padding-top:12px}
.stat-k{display:block; font-size:9px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--label)}
.stat-v{font-size:15px; font-weight:600; font-variant-numeric:tabular-nums; display:block}
.stat-v.neg{color:var(--red)}

.gblock{border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden}
.gblock-head{display:flex; align-items:center; gap:12px; padding:16px 20px; border-bottom:1px solid var(--line); flex-wrap:wrap; border-left:4px solid var(--red)}
.gblock-head .grow{flex:1; min-width:0}
.gblock-title{font-weight:700; font-size:16px}
.gblock-body{padding:18px; display:grid; gap:14px; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); background:var(--surface-2)}

/* ---------- layout em colunas ---------- */
.split{display:grid; grid-template-columns:minmax(0,1fr) 340px; gap:24px; align-items:start}
.split > aside{position:sticky; top:72px}
.sec-head{display:flex; align-items:baseline; gap:12px; justify-content:space-between}
.cards{display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:18px; align-items:stretch}
.bankcards{display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:18px}
.bankcard{border:1px solid var(--line); border-radius:var(--radius); padding:16px 18px; background:var(--surface)}
.bankcard.flip{border-left:3px solid var(--red)}
.bankcard-head{display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:8px}
.bankcard-head h3{font-size:15px; font-weight:600; margin:3px 0 0}
.bankcard .kv-row{padding:7px 0}
.bankcard .kv-row b{font-size:13px; text-align:right; word-break:break-word}
.bank-src{position:absolute; left:-9999px; width:1px; height:1px; opacity:0}
.bank-src.show{position:static; width:100%; height:120px; opacity:1; margin-top:10px; font-size:12px; border:1px solid var(--line); border-radius:var(--radius); padding:8px; background:var(--surface-2); color:var(--ink)}
.cocards{display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:18px; align-items:stretch}
.cocard{display:flex; flex-direction:column; gap:14px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:20px}
.cocard.flip{border-left:3px solid var(--red)}
.cocard-head{display:flex; align-items:flex-start; gap:12px}
.cocard-head h3{font-size:17px; font-weight:600; margin:2px 0 3px}
.cocard-head .hint{display:block}
.cocard-stats{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 16px; border-top:1px solid var(--line); padding-top:14px}
.cocard-foot{display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-top:auto}
.cogroup{display:flex; flex-direction:column; gap:14px}
.cogroup + .cogroup{margin-top:28px; padding-top:24px; border-top:1px solid var(--line)}
.cogroup-head{display:flex; align-items:flex-end; gap:16px; flex-wrap:wrap}
.cogroup-head .grow{flex:1 1 240px; min-width:0}
.cocard-head .grow{flex:1; min-width:0}
.cogroup-head h3{font-size:16px; font-weight:600; margin:0 0 3px}
.cogroup-head .hint{display:block}
.cogroup-nums{display:flex; gap:24px; flex-wrap:wrap}
.cogroup-nums span{display:block}
.cogroup-nums em{display:block; font-style:normal; font-size:9px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--label)}
.cogroup-nums b{font-size:15px; font-weight:600; font-variant-numeric:tabular-nums}
.cogroup-nums b.red{color:var(--red)}
@media(max-width:700px){ .cogroup-nums{gap:16px} .cocard-stats{grid-template-columns:repeat(2,minmax(0,1fr))} }
.cards > .pcard, .grid > .pcard{height:100%}
.pcard-hero.empty{display:grid; place-items:center; background:var(--surface-2); color:var(--line)}
.pcard-hero.empty .brand-logo{width:88px; opacity:.35; color:var(--muted)}
.pcard-in{flex:1}
.pcard-stats{margin-top:auto}
tr.row-link, .kv-row.row-link{cursor:pointer}
.kv-row.row-link:hover{background:var(--surface-2)}

/* ---------- cabeçalho do imóvel: informações + foto ---------- */
.phead{display:grid; grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr); gap:32px; align-items:stretch; padding-bottom:24px; border-bottom:1px solid var(--line)}
.phead-info{display:flex; flex-direction:column; gap:14px; min-width:0; justify-content:center}
.phead-info h1{margin:0}
.phead-info .sub{margin:-8px 0 0}
.phead-info .eyebrow .linkish{color:inherit; font:inherit; letter-spacing:inherit; text-transform:inherit}
.meta{display:grid; grid-template-columns:repeat(4,minmax(0,auto)); gap:10px 28px; justify-content:start}
.meta > span{display:flex; flex-direction:column; gap:4px; min-width:0}
.meta em{font-style:normal; font-size:9.5px; font-weight:500; letter-spacing:.22em; text-transform:uppercase; color:var(--label)}
.meta b{font-weight:600; font-size:14px}
.phead-photo{position:relative; min-height:230px; border:0; padding:0; background:var(--surface-2) center/cover no-repeat; border-bottom:4px solid var(--red); cursor:zoom-in; display:block; width:100%}
.phead-photo span{position:absolute; left:0; bottom:0; background:var(--surface); color:var(--muted); font-size:11px; padding:5px 10px}
.phead-photo.empty{display:grid; place-items:center; align-content:center; gap:10px; cursor:default}
.phead-photo.empty .brand-logo{width:110px; opacity:.35; color:var(--muted)}
.phead-photo.empty span{position:static; background:none}

/* ---------- gastos ---------- */
.filters{display:flex; gap:6px; flex-wrap:wrap; padding:12px 20px; border-bottom:1px solid var(--line); background:var(--surface-2)}
.fchip{border:1px solid var(--line); background:var(--surface); padding:5px 11px; font-size:12px; cursor:pointer; color:var(--ink-2); border-radius:999px}
.fchip span{color:var(--label); margin-left:4px; font-variant-numeric:tabular-nums}
.fchip:hover{border-color:var(--ink)}
.fchip[aria-pressed="true"]{background:var(--ink); color:var(--bg); border-color:var(--ink)}
.fchip[aria-pressed="true"] span{color:inherit; opacity:.7}
.obs{display:flex; gap:6px; align-items:flex-start; margin-top:5px; font-size:11.5px; color:var(--ink-2); max-width:440px}
.obs svg{width:13px; height:13px; flex:none; margin-top:2px; color:var(--red)}
.tbl-gastos td{vertical-align:top}
.chips{display:flex; flex-wrap:wrap; gap:6px}
.chip{display:inline-flex; align-items:center; gap:5px; max-width:220px; font-size:11.5px; padding:3px 8px; border:1px solid var(--line); color:var(--ink); text-decoration:none}
.chip span{overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.chip svg{width:12px; height:12px; color:var(--red); flex:none}
.modal-body > section, .doc-cols > section{display:flex; flex-direction:column; gap:12px}
.modal-body h2{padding-bottom:8px; border-bottom:1px solid var(--line)}
.doc-cols{display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:20px}
.obs-box{margin:0; padding:12px 14px; background:var(--surface-2); border-left:4px solid var(--red); font-size:13.5px; color:var(--ink)}
.rm{display:inline-flex; align-items:center; gap:6px; font-size:11.5px; color:var(--muted); cursor:pointer; letter-spacing:0; text-transform:none}
.rm input:checked + *, .rm:has(input:checked){color:var(--red)}
.check{display:flex; align-items:center; gap:8px; font-size:13px; color:var(--ink-2); cursor:pointer}
.drop.ready{border-style:solid; border-color:var(--ink)}
.field label.drop{font-size:13px; font-weight:400; letter-spacing:0; text-transform:none; color:var(--ink)}
.split aside .kv-row{flex-wrap:nowrap; align-items:flex-start}
.split aside .kv-row > span:first-child{flex:1; min-width:0}
.split aside .kv-row > b{flex:none; white-space:nowrap}

/* ---------- herói do imóvel ---------- */
.hero{display:block; width:100%; aspect-ratio:21/6; max-height:300px; background:var(--surface-2) center/cover no-repeat}

/* ---------- abas ---------- */
.tabs{display:flex; gap:4px; border-bottom:1px solid var(--line); overflow-x:auto}
.tab{background:none; border:0; border-bottom:2px solid transparent; padding:11px 14px; cursor:pointer; color:var(--muted); font-size:11px; letter-spacing:.1em; text-transform:uppercase; white-space:nowrap; margin-bottom:-1px; font-weight:500}
.tab:hover{color:var(--ink)}
.tab[aria-selected="true"]{color:var(--red); border-bottom-color:var(--red); font-weight:700}
.tab .cnt{font-size:10px; color:var(--label); margin-left:6px; letter-spacing:0}

/* ---------- cronograma ---------- */
.tl{display:flex; flex-direction:column}
.tl-item{display:grid; grid-template-columns:22px minmax(0,1fr); gap:14px; padding-bottom:20px; position:relative}
.tl-item:last-child{padding-bottom:0}
.tl-rail{display:flex; flex-direction:column; align-items:center; gap:4px}
.tl-dot{width:12px; height:12px; border:2px solid var(--line); background:var(--surface); margin-top:5px; flex:none}
.tl-dot.done{background:var(--red); border-color:var(--red)}
.tl-dot.doing{background:var(--surface); border-color:var(--red); box-shadow:0 0 0 3px var(--red-100)}
.tl-line{width:1px; flex:1; background:var(--line); min-height:12px}
.tl-body{display:flex; flex-direction:column; gap:6px; padding-bottom:4px; min-width:0}
.tl-title{display:flex; gap:10px; align-items:center; flex-wrap:wrap}
.tl-title .acts{margin-left:auto}
.tl-meta{font-size:12px; color:var(--muted)}

/* ---------- fotos ---------- */
.photos{display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:16px}
.photo{border:1px solid var(--line); overflow:hidden; background:var(--surface)}
.photo-img{aspect-ratio:4/3; max-width:100%; display:grid; place-items:center; background:
   repeating-linear-gradient(135deg, var(--surface-2) 0 10px, var(--line-2) 10px 20px); color:var(--muted)}
.photo-img svg{width:26px; height:26px; opacity:.5}
.photo-cap{padding:10px 12px; font-size:12px; display:flex; flex-direction:column; gap:2px}
.photo-cap b{font-weight:600; font-size:13px}
.photo-cap span{color:var(--muted); font-size:11px}
.photo-cap .acts{margin-top:4px; justify-content:flex-start}

/* ---------- comprovantes ---------- */
.rcpt{display:flex; align-items:center; gap:12px; border:1px solid var(--line); padding:12px; background:var(--surface); min-width:0}
.rcpt-ico{width:34px; height:42px; flex:none; background:var(--surface-2); border-left:3px solid var(--red); display:grid; place-items:center; color:var(--red); font-size:9px; font-weight:700; letter-spacing:.08em}
.rcpt-txt{min-width:0; display:flex; flex-direction:column; gap:1px}
.rcpt-txt b{font-size:13px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.rcpt-txt span{font-size:11px; color:var(--muted)}

/* ---------- formulários e modais ---------- */
.backdrop{position:fixed; inset:0; background:rgba(0,0,0,.42); z-index:50; display:grid; place-items:start center; padding:5vh 16px 16px; overflow-y:auto}
.modal{background:var(--surface); border-left:8px solid var(--red); width:min(680px,100%); box-shadow:var(--shadow)}
.modal.wide{width:min(900px,100%)}
.modal-head{display:flex; align-items:flex-start; gap:12px; padding:22px 24px 16px; border-bottom:1px solid var(--line)}
.modal-head .grow{flex:1; min-width:0}
.modal-head h2{font-size:20px; letter-spacing:-.005em; text-transform:none; color:var(--ink)}
.modal-body{padding:22px 24px; display:flex; flex-direction:column; gap:16px}
.modal-foot{display:flex; justify-content:flex-end; gap:10px; padding:16px 24px; border-top:1px solid var(--line); background:var(--surface-2); flex-wrap:wrap}
.modal-foot .spread{margin-right:auto}
.field{display:flex; flex-direction:column; gap:6px; min-width:0}
.field label{font-size:9.5px; font-weight:500; letter-spacing:.22em; text-transform:uppercase; color:var(--label)}
.field input, .field select, .field textarea{font-size:13.5px; padding:9px 11px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--ink); width:100%}
.field input:focus, .field select:focus, .field textarea:focus{border-color:var(--ink); outline:none}
.field input[type="number"]{font-variant-numeric:tabular-nums}
.frow{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:14px}
.hint{font-size:12px; color:var(--muted)}
.note{display:flex; align-items:flex-start; gap:10px; font-size:12.5px; padding:12px 14px; background:var(--surface-2); border-left:4px solid var(--muted); color:var(--ink-2)}
.note svg{width:15px; height:15px; flex:none; margin-top:3px}
.note.info{border-left-color:var(--ink)}
.note.warn{border-left-color:var(--warn); background:var(--warn-bg); color:var(--warn)}
.note.crit{border-left-color:var(--red); background:var(--crit-bg); color:var(--crit)}
.empty{padding:36px 16px; text-align:center; color:var(--muted); font-size:13px; display:flex; flex-direction:column; align-items:center; gap:14px}
.fview{display:block; height:min(68vh,620px); overflow:auto; padding:14px; background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius); text-align:center}
.fview img{max-width:100%; display:inline-block}
.fview.center{display:flex; align-items:center; justify-content:center}
.fview iframe{width:100%; height:100%; border:0; background:#fff}
.pdf-page{display:block; margin:0 auto 12px; max-width:100%; background:#fff; box-shadow:0 1px 8px rgba(0,0,0,.14)}
.notelist{list-style:none; margin:0; padding:0; display:flex; flex-direction:column}
.notelist li{display:flex; align-items:flex-start; gap:12px; padding:12px 0; border-bottom:1px solid var(--line-2)}
.notelist li:last-child{border-bottom:0; padding-bottom:0}
.notelist li > div{flex:1; min-width:0}
.notelist p{margin:0 0 3px; font-size:13.5px}
.gblock.orphan .gblock-head{border-left-color:var(--warn)}
.orphan-acts{display:flex; gap:8px; flex-wrap:wrap; padding:14px 18px; border-top:1px solid var(--line)}
.feed-body{margin:4px 0 0; font-size:12.5px; color:var(--ink-2); line-height:1.55}
.feed li > div > b{font-weight:600}
.phonefield{display:flex; flex-wrap:wrap; gap:8px}
.phonefield select{flex:0 0 132px; width:132px}
.phonefield input{flex:1 1 128px; min-width:0}
/* ---------- etapas do flip (portal) ---------- */
.fsteps{list-style:none; margin:0; padding:0; display:flex; flex-direction:column}
.fsteps li{display:flex; align-items:flex-start; gap:12px; padding:11px 0; border-bottom:1px solid var(--line-2)}
.fsteps li:last-child{border-bottom:0}
.fsteps .grow{flex:1; min-width:0; display:flex; flex-direction:column; gap:2px}
.fsteps b{font-size:13.5px; font-weight:600}
.fstep-dot{flex:none; width:20px; height:20px; border-radius:50%; border:2px solid var(--line); margin-top:1px; display:grid; place-items:center}
.fstep-dot svg{width:11px; height:11px; color:#fff}
.fsteps li.done .fstep-dot{background:var(--good); border-color:var(--good)}
.fsteps li.doing .fstep-dot{border-color:var(--red); box-shadow:0 0 0 3px var(--red-100)}
.fsteps li.doing b{color:var(--red)}
.fstep-pct{font-size:12.5px; font-weight:600; font-variant-numeric:tabular-nums; color:var(--muted); flex:none}
.fsteps li.done .fstep-pct{color:var(--good)}
.pcard.veh{cursor:default}
.pcard.veh:hover{border-color:var(--line); box-shadow:none}
/* ---------- processos: quadro tipo mural ---------- */
.pboard-wrap{padding:0}
.pboard{display:flex; gap:16px; align-items:flex-start; overflow-x:auto; padding:18px 20px 22px; background:var(--surface-2)}
.pcol{flex:0 0 306px; display:flex; flex-direction:column; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden}
.pcol.done{opacity:.72}
.pcol-head{display:flex; flex-direction:column; gap:4px; padding:14px 16px; border-bottom:1px solid var(--line); border-top:3px solid var(--red); cursor:pointer}
.pcol-head:hover{background:var(--surface-2)}
.pcol-head b{font-size:15px; font-weight:700; line-height:1.3}
.pcol-tag{font-size:9px; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:var(--red)}
.pcol-body{display:flex; flex-direction:column; gap:12px; padding:14px; background:var(--surface-2); flex:1}
.pcard{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:12px 13px; display:flex; flex-direction:column; gap:8px}
.pcard.done{border-left:3px solid var(--good)}
.pcard-head{display:flex; gap:10px; align-items:flex-start; cursor:pointer}
.pcard-head:hover b{color:var(--red)}
.pcard-head .grow{flex:1; min-width:0; display:flex; flex-direction:column; gap:2px}
.pcard-head b{font-size:13.5px; font-weight:600; line-height:1.35}
.pnum{flex:none; width:22px; height:22px; border-radius:50%; background:var(--ink); color:var(--bg); display:grid; place-items:center; font-size:11px; font-weight:700; margin-top:1px}
.pcard.done .pnum{background:var(--good)}
.pmeter{margin:-2px 0 0}
.pmeta{display:inline-flex; align-items:center; gap:4px; font-size:11px; color:var(--muted); margin-right:8px}
.pmeta svg{width:12px; height:12px; color:var(--red)}
.pchips{display:inline-flex; flex-wrap:wrap; gap:4px}
.pchip{display:inline-flex; align-items:center; gap:4px; font-size:10.5px; padding:2px 7px; border:1px solid var(--line); border-radius:999px; color:var(--ink-2); background:var(--surface-2)}
.pchip svg{width:10px; height:10px; color:var(--red)}
.psubs{list-style:none; margin:2px 0 0; padding:0; display:flex; flex-direction:column; border-top:1px solid var(--line-2)}
.psubs li{display:flex; gap:8px; align-items:flex-start; padding:7px 0; border-bottom:1px solid var(--line-2); cursor:pointer}
.psubs li:last-child{border-bottom:0}
.psubs li:hover b{color:var(--red)}
.psubs .grow{flex:1; min-width:0; display:flex; flex-direction:column; gap:1px}
.psubs b{font-size:12.5px; font-weight:500}
.psubs em{font-style:normal; font-size:11px; color:var(--muted)}
.pdot{flex:none; width:9px; height:9px; border-radius:50%; border:2px solid var(--line); margin-top:4px}
.pdot.on{background:var(--good); border-color:var(--good)}
.psub-add, .pcard-add, .pcol-newbtn{border:1px dashed var(--line); background:transparent; color:var(--muted); border-radius:var(--radius); cursor:pointer; font:inherit; font-size:12px; padding:8px 10px; display:flex; align-items:center; justify-content:center; gap:6px}
.psub-add{margin-top:2px}
.psub-add:hover, .pcard-add:hover, .pcol-newbtn:hover{border-color:var(--red); color:var(--ink); background:var(--red-100)}
.psub-add svg, .pcard-add svg{width:12px; height:12px; color:var(--red)}
.pcol-new{flex:0 0 220px; background:transparent; border:0}
.pcol-newbtn{flex-direction:column; gap:6px; padding:26px 16px; width:100%; border-style:dashed}
.pcol-newbtn svg{width:22px; height:22px; color:var(--red)}
.pcol-newbtn b{font-size:13px; color:var(--ink)}
.pvend{display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:8px 16px; max-height:220px; overflow-y:auto}
@media (max-width:700px){ .pboard{padding:14px 12px} .pcol{flex:0 0 264px} }
/* ---------- organograma societário ---------- */
.orgblock{border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden}
.orgblock + .orgblock{margin-top:22px}
.org-head{display:flex; align-items:center; gap:12px; flex-wrap:wrap; padding:16px 20px; border-bottom:1px solid var(--line); border-left:4px solid var(--red)}
.org-head .grow{flex:1; min-width:0}
.org-head h2{font-size:16px; letter-spacing:0; text-transform:none; color:var(--ink)}
.org{padding:22px 20px 24px; background:var(--surface-2)}
.org-top{display:flex; justify-content:center}
.org-stem{width:2px; height:26px; background:var(--line); margin:0 auto}
.org-row{display:flex; gap:14px; overflow-x:auto; padding:0 2px 10px; scrollbar-width:thin; justify-content:safe center}
.org-hint{display:block; text-align:center; margin:2px 0 0}
.org-node{position:relative; flex:0 0 206px; padding-top:26px}
.org-node::before{content:""; position:absolute; top:0; left:50%; width:2px; height:26px; background:var(--line)}
.org-node::after{content:""; position:absolute; top:0; left:-7px; right:-7px; height:2px; background:var(--line)}
.org-node:first-child::after{left:50%}
.org-node:last-child::after{right:50%}
.org-node:only-child::after{display:none}
.org-card{display:flex; flex-direction:column; gap:5px; align-items:stretch; text-align:left; width:100%;
  background:var(--surface); border:1px solid var(--line); border-top:3px solid var(--red); border-radius:var(--radius);
  padding:13px 14px; font:inherit; color:inherit}
.org-card.click{cursor:pointer}
.org-card.click:hover{border-color:var(--ink); box-shadow:var(--shadow)}
.org-eyebrow{font-size:9px; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:var(--red)}
.org-co{max-width:320px; border-top-color:var(--ink); background:var(--surface)}
.org-co.flip{border-top-color:var(--red)}
.org-name{font-weight:700; font-size:14px; line-height:1.3; overflow-wrap:anywhere}
.org-sub{font-size:11.5px; color:var(--muted)}
.org-pct{font-size:24px; font-weight:700; letter-spacing:-.01em; font-variant-numeric:tabular-nums; color:var(--red); line-height:1.1; margin-top:2px}
.org-meter{display:block; margin:2px 0 4px}
.org-kv{display:flex; justify-content:space-between; gap:8px; align-items:baseline; font-size:11.5px}
.org-kv em{font-style:normal; color:var(--label); letter-spacing:.04em}
.org-kv b{font-weight:600; font-variant-numeric:tabular-nums; color:var(--ink)}
.org-kv.red b{color:var(--red)}
.org-tag{margin-top:6px; font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); display:inline-flex; align-items:center; gap:5px}
.org-tag svg{width:11px; height:11px}
.org-tag.good{color:var(--good)}
.org-card.org-add{align-items:center; justify-content:center; gap:7px; text-align:center; min-height:150px; cursor:pointer;
  border:1px dashed var(--muted); border-top:1px dashed var(--muted); background:transparent; color:var(--muted)}
.org-card.org-add:hover{border-color:var(--red); color:var(--ink); background:var(--red-100)}
.org-card.org-add svg{width:22px; height:22px; color:var(--red)}
.org-card.org-add b{font-size:13px; color:var(--ink)}
@media (max-width:700px){ .org{padding:18px 12px} .org-node{flex:0 0 178px} }
.swatches{display:flex; flex-wrap:wrap; gap:9px}
.swatch{width:28px; height:28px; border-radius:50%; background:var(--tc); border:2px solid transparent; box-shadow:0 0 0 1px var(--line); cursor:pointer; padding:0}
.swatch.on{border-color:var(--surface); box-shadow:0 0 0 2px var(--ink)}
.loclinks{display:flex; flex-wrap:wrap; gap:8px; margin:10px 0 2px}
.loclink{display:inline-flex; align-items:center; gap:7px; padding:7px 13px; border:1px solid var(--line); border-radius:999px;
  background:var(--surface); color:var(--ink); font-size:13px; font-weight:600; text-decoration:none; line-height:1; transition:.15s}
.loclink svg{width:16px; height:16px; color:var(--red); flex:none}
.loclink:hover{border-color:var(--red); background:rgba(200,16,46,.06)}
.photo-img.vid{position:relative; background:#0D0D0D}
.photo-img.vid.link{display:block; min-height:150px}
.photo-img.vid video{width:100%; height:100%; object-fit:cover; display:block}
.photo-img .play{position:absolute; inset:0; display:flex; align-items:center; justify-content:center; pointer-events:none}
.photo-img .play svg{width:42px; height:42px; color:#fff; filter:drop-shadow(0 2px 8px rgba(0,0,0,.5))}
.lightbox video{max-width:100%; max-height:min(72vh,640px); display:block; margin:0 auto; background:#000}
.stars{display:inline-flex; gap:2px; align-items:center}
.stars i{width:15px; height:15px; color:var(--line)}
.stars i svg{width:100%; height:100%; display:block}
.stars i.on{color:var(--red)}
.stars i.on svg{fill:currentColor}
.stars.sm i{width:13px; height:13px}
.fv-load{display:flex; align-items:center; justify-content:center; gap:10px; height:100%; color:var(--muted); font-size:13px}
.spin{width:14px; height:14px; border:2px solid var(--line); border-top-color:var(--red); border-radius:50%; animation:spin .8s linear infinite; display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}
.fview.empty{display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; padding:36px 24px; text-align:center; color:var(--muted)}
.fview.empty svg{width:34px; height:34px; opacity:.6}
.fview.empty p{max-width:460px; margin:0; font-size:13.5px}
.fv-url{width:min(520px,100%); padding:9px 10px; border:1px solid var(--line); border-radius:var(--radius); font-size:12.5px; background:var(--surface); color:var(--ink)}
#fv-msg{margin-right:auto; text-align:left}
#fv-msg.red{color:var(--red)}
.gate{min-height:100vh; border-left:10px solid var(--red); background:var(--bg)}
.gate-split{display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr); min-height:100vh}
.gate-side{background:#0D0D0D; color:#F2F2F2; padding:48px 52px; display:flex; flex-direction:column; gap:34px; justify-content:space-between}
.gate-side .gate-logo{width:136px; color:#fff}
.gate-side-sub{display:block; margin-top:10px; font-size:9.5px; letter-spacing:var(--track-wide); text-transform:uppercase; color:#9A9A9A}
.gate-side-mid h1{font-size:34px; line-height:1.18; font-weight:600; letter-spacing:-.02em; margin:0 0 14px; color:#FFFFFF}
.gate-side-mid p{margin:0; color:#B5B5B5; font-size:14px; max-width:420px}
.gate-side-list{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; font-size:12.5px; color:#B5B5B5}
.gate-side-list li{padding-left:16px; position:relative}
.gate-side-list li::before{content:""; position:absolute; left:0; top:8px; width:6px; height:6px; background:var(--red)}
.gate-form{display:flex; align-items:center; justify-content:center; padding:48px 32px; background:var(--bg)}
.gate-form-in{width:100%; max-width:380px; display:flex; flex-direction:column; gap:12px}
.gate-form-in h2{font-size:23px; font-weight:600; letter-spacing:-.01em; margin:4px 0 0; color:var(--ink); text-transform:none}
.gate-form-in .ghint{margin:0 0 6px; font-size:13px; color:var(--muted)}
.gwho{margin:0; font-size:12px; color:var(--muted)}
.gfield{display:flex; flex-direction:column; gap:6px}
.gfield label{font-size:9.5px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--label)}
.gfield input{width:100%; padding:11px 12px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--ink); font-size:14px}
.gfield input:focus{outline:2px solid var(--red); outline-offset:1px}
.btn-block{width:100%; justify-content:center}
.gerr{margin:2px 0 0; font-size:12.5px; color:var(--red)}
.gate-code{display:flex; align-items:center; justify-content:space-between; gap:10px; background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius); padding:10px 12px; font-size:13px; word-break:break-all}
.gate-code .lbl{font-size:9.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--label)}
@media (max-width:900px){ .gate-split{grid-template-columns:1fr} .gate-side{padding:32px 24px; gap:22px} .gate-side-mid h1{font-size:26px} .gate-side-list{display:none} }
.gate-logo{width:132px; height:auto; color:var(--ink)}
.gate-cards{display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:18px; width:100%; text-align:left}
.gate-card{display:flex; flex-direction:column; gap:12px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:24px; border-top:3px solid var(--red)}
.gate-card h2{font-size:17px; font-weight:600; margin:0}
.gate-card p{margin:0; font-size:13px; color:var(--muted)}
.gate-card ul{margin:0; padding-left:16px; font-size:12.5px; color:var(--muted); display:flex; flex-direction:column; gap:4px}
.gate-card .btn{margin-top:auto; justify-content:center}
.gate-card.soft{border-top-color:var(--line)}
.gate-code{display:flex; align-items:center; justify-content:space-between; gap:10px; background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius); padding:10px 12px; font-variant-numeric:tabular-nums; font-size:13px; word-break:break-all}
.gate-foot{font-size:12px; color:var(--muted); max-width:620px}
.gate-load{display:flex; align-items:center; gap:10px; color:var(--muted); font-size:13px}
.toast{position:fixed; left:50%; bottom:26px; transform:translateX(-50%); background:var(--ink); color:var(--bg); padding:11px 18px; border-left:4px solid var(--red); font-size:13px; z-index:80; box-shadow:var(--shadow); max-width:calc(100vw - 32px); text-align:center}

/* ---------- linhas chave/valor (como os dados para transferência) ---------- */
.kv{display:flex; flex-direction:column}
.kv-row{display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px 14px; padding:11px 0; border-bottom:1px solid var(--line); font-size:13.5px; align-items:center}
.kv-row:last-child{border-bottom:0}
.kv-row > span:first-child{font-size:9.5px; font-weight:500; letter-spacing:.22em; text-transform:uppercase; color:var(--label); min-width:0}
.kv-row > span:first-child b, .kv-row > span:first-child .hint{letter-spacing:0; text-transform:none}
.kv-row > span:first-child b{font-size:13.5px; color:var(--ink)}
.kv-row > span:first-child .hint{font-size:11.5px}
.kv-row b{font-weight:600; text-align:right}

/* ---------- arquivos ---------- */
.photo-img img{width:100%; height:100%; object-fit:cover; display:block}
.photo-img.has-img{background:var(--surface-2); cursor:zoom-in; padding:0; border:0; width:100%}
a.rcpt{color:inherit; text-decoration:none}
a.rcpt:hover{border-color:var(--ink)}
.rcpt-ico.img{background-size:cover; background-position:center; color:transparent}
.filelink{display:inline-flex; align-items:center; gap:6px; color:var(--ink); font-weight:600; text-decoration:none; border-bottom:1px solid var(--red)}
.filelink:hover{color:var(--red)}
.filelink svg{width:13px; height:13px; flex:none; color:var(--red)}
.drop{border:1px dashed var(--muted); padding:16px; display:flex; align-items:center; gap:12px; background:var(--surface-2); cursor:pointer}
.drop:hover, .drop.over{border-color:var(--red); background:var(--red-100)}
.drop svg{width:22px; height:22px; color:var(--red); flex:none}
.drop b{display:block; font-weight:600; font-size:13px}
.drop input{position:absolute; width:1px; height:1px; opacity:0; pointer-events:none}
.drop-prev{width:44px; height:44px; object-fit:cover; flex:none}
.lightbox{display:flex; flex-direction:column; gap:10px}
.lightbox img{width:100%; max-height:70vh; object-fit:contain; background:var(--surface-2)}
.progress{height:3px; background:var(--track); overflow:hidden}
.progress i{display:block; height:100%; width:40%; background:var(--red); animation:slide 1.1s ease-in-out infinite}
@keyframes slide{0%{transform:translateX(-100%)}100%{transform:translateX(250%)}}
.lockcard{max-width:560px; margin:8vh auto 0; border-left:4px solid var(--red)}
.lockcard .brand-logo{width:150px; margin-bottom:6px}

@media (max-width:1100px){
  .split{grid-template-columns:minmax(0,1fr)}
  .split > aside{position:static; display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:16px}
  .meta{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:900px){
  .phead{grid-template-columns:minmax(0,1fr); gap:20px}
  .phead-photo{order:-1; min-height:180px}
  .app{grid-template-columns:minmax(0,1fr); border-left-width:6px}
  .rail{position:static; height:auto; overflow:visible; gap:16px; padding:18px 16px; border-right:0; border-bottom:1px solid var(--rail-line)}
  .brand-logo{width:112px}
  .nav{flex-direction:row; flex-wrap:wrap}
  .nav-label{display:none}
  .nav-item{width:auto; border-left:0; border-bottom:2px solid transparent}
  .nav-item[aria-current="true"]{border-bottom-color:var(--red)}
  .rail-foot{margin-top:0}
  .view{padding:24px 16px 48px}
  .topbar{padding:12px 16px}
  h1{font-size:26px}
  .gblock-body{padding:12px}
}

/* ============================ portal do investidor ============================ */
.portal{min-height:100vh; border-left:10px solid var(--red); background:var(--bg); display:flex; flex-direction:column}
.p-preview{display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:8px 24px; background:var(--ink); color:var(--bg); font-size:12px}
.p-preview select{background:transparent; color:inherit; border:1px solid rgba(255,255,255,.35); padding:4px 8px; font-size:12px}
.p-preview select option{color:#232323}
.p-preview .btn{margin-left:auto; background:transparent; color:inherit; border-color:rgba(255,255,255,.35)}
.p-top{background:var(--surface); border-bottom:1px solid var(--line); position:sticky; top:0; z-index:20}
.p-top-in{max-width:1180px; margin:0 auto; padding:16px 28px 10px; display:flex; align-items:center; gap:20px}
.p-logo{background:none; border:0; padding:0; cursor:pointer; color:var(--ink)}
.p-logo .brand-logo{width:112px}
.p-user{margin-left:auto; text-align:right; display:flex; flex-direction:column; gap:2px; min-width:0}
.p-user b{font-size:14px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.lbl{font-size:9.5px; font-weight:500; letter-spacing:.22em; text-transform:uppercase; color:var(--label)}
.p-nav{border-top:1px solid var(--line-2)}
.p-nav-in{max-width:1180px; margin:0 auto; padding:0 20px; display:flex; gap:2px; overflow-x:auto; scrollbar-width:none}
.p-nav-in::-webkit-scrollbar{display:none}
.p-nav-item{display:flex; align-items:center; gap:8px; background:none; border:0; border-bottom:3px solid transparent; padding:12px 12px 11px; cursor:pointer; color:var(--ink-2); font-size:13.5px; white-space:nowrap}
.p-nav-item svg{width:16px; height:16px; flex:none; color:var(--muted)}
.p-nav-item:hover{color:var(--ink)}
.p-nav-item[aria-current="true"]{color:var(--red); border-bottom-color:var(--red); font-weight:600}
.p-nav-item[aria-current="true"] svg{color:var(--red)}
.p-main{max-width:1180px; width:100%; margin:0 auto; padding:32px 28px 64px; display:flex; flex-direction:column; gap:24px; flex:1}
.p-foot{max-width:1180px; width:100%; margin:0 auto; padding:18px 28px 28px; border-top:1px solid var(--line); font-size:11px; color:var(--label)}
.p-head{display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap}
.p-head h1{margin-top:6px}
.p-back{align-self:flex-start; background:none; border:0; padding:0; color:var(--muted); cursor:pointer; font-size:13px}
.p-back:hover{color:var(--red)}
.p-grid{display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,1fr); gap:20px; align-items:start}
.red{color:var(--red)}
strong.red{font-weight:600}
.prose{margin:0; font-size:14px; line-height:1.7; color:var(--ink-2)}
.gloss{font-weight:400 !important; text-align:right; color:var(--ink-2); max-width:60%}
.okbox{display:flex; align-items:center; gap:10px; padding:14px; background:var(--good-bg); color:var(--good); font-size:13.5px}
.okbox svg{width:16px; height:16px; flex:none}

/* gráfico de composição */
.commit{display:flex; flex-direction:column; gap:16px}
.commit-head{display:flex; justify-content:space-between; align-items:flex-end; gap:16px; flex-wrap:wrap}
.hero-num{font-size:44px; font-weight:700; line-height:1.1; letter-spacing:-.02em; margin:4px 0 2px; font-variant-numeric:proportional-nums}
.commit-pct{text-align:right; display:flex; flex-direction:column; gap:2px}
.commit-pct b{font-size:26px; font-weight:700; color:var(--red)}
.cbar{display:flex; gap:2px; height:24px; background:transparent}
.cbar.sm{height:12px}
.cseg{display:block; min-width:3px; height:100%; cursor:default}
.cseg.paid{background:var(--red)}
.cseg.open{background:repeating-linear-gradient(135deg, var(--red-300) 0 4px, color-mix(in srgb, var(--red-300) 45%, var(--surface)) 4px 7px)}
.cseg.rest{background:var(--track)}
.cbar .cseg:last-child{border-radius:0 4px 4px 0}
.legend{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px}
.legend.inline{display:flex; flex-wrap:wrap; gap:8px 20px}
.lg{display:flex; gap:9px; align-items:flex-start; min-width:0}
.lg > div{display:flex; flex-direction:column; min-width:0}
.lg span{font-size:12px; color:var(--ink-2)}
.lg b{font-size:16px; font-weight:700; font-variant-numeric:tabular-nums}
.lg em{font-style:normal; font-size:11px; color:var(--muted)}
.legend.inline .lg{align-items:center}
.sw{width:12px; height:12px; flex:none; margin-top:3px; display:inline-block}
.legend.inline .sw{margin-top:0}
.sw.paid{background:var(--red)}
.sw.open{background:repeating-linear-gradient(135deg, var(--red-300) 0 3px, color-mix(in srgb, var(--red-300) 45%, var(--surface)) 3px 5px)}
.sw.rest{background:var(--track)}
.ln{width:18px; height:0; border-top:2px solid; flex:none; display:inline-block}
.ln.called{border-color:var(--ink-2)}
.ln.paid{border-color:var(--red)}
.ln.ref{border-top-width:1px; border-color:var(--muted)}
.pbars{display:flex; flex-direction:column; gap:14px}
.pbar{display:grid; grid-template-columns:minmax(120px,220px) minmax(0,1fr) auto; gap:14px; align-items:center}
.pbar-v{font-size:12.5px; color:var(--muted); white-space:nowrap}
.pbar-v b{color:var(--ink); font-weight:600}

/* gráfico de linha */
.tchart{width:100%; margin-top:10px}
.tchart svg{display:block; overflow:visible}
.tchart .g{stroke:var(--line); stroke-width:1}
.tchart .ax{fill:var(--label); font-size:10.5px; font-family:var(--sans)}
.tchart .lab{fill:var(--ink-2); font-size:11px; font-family:var(--sans)}
.tchart .lab.strong{fill:var(--ink); font-weight:700}
.tchart .ref{stroke:var(--muted); stroke-width:1}
.tchart .l{fill:none; stroke-width:2; stroke-linejoin:round; stroke-linecap:round}
.tchart .l.called{stroke:var(--ink-2)}
.tchart .l.paid{stroke:var(--red)}
.tchart .dot{stroke:var(--surface); stroke-width:2}
.tchart .dot.called{fill:var(--ink-2)}
.tchart .dot.paid{fill:var(--red)}
.tchart .xh{stroke:var(--muted); stroke-width:1}
.ctip{position:fixed; z-index:90; pointer-events:none; background:var(--surface); color:var(--ink); border:1px solid var(--line); box-shadow:var(--shadow); padding:8px 10px; font-size:12px; line-height:1.55; display:none; max-width:260px}
.ctip .muted{color:var(--muted)}
.sw-ln{display:inline-block; width:12px; border-top:2px solid; margin-right:6px; vertical-align:middle}
.sw-ln.called{border-color:var(--ink-2)}
.sw-ln.paid{border-color:var(--red)}

/* atualizações e documentos */
.feed{list-style:none; margin:0; padding:0; display:flex; flex-direction:column}
.feed li{display:grid; grid-template-columns:92px minmax(0,1fr); gap:14px; padding:10px 0; border-bottom:1px solid var(--line)}
.feed li:last-child{border-bottom:0}
.feed-d{font-size:12px; color:var(--muted); font-variant-numeric:tabular-nums; padding-top:2px}
.feed em{display:block; font-style:normal; font-size:9.5px; letter-spacing:.18em; text-transform:uppercase; color:var(--label); margin-bottom:2px}
.feed .linkish, .feed b{font-weight:600}
.docgrid{display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:18px 24px; margin-bottom:12px}
.docgroup h3{font-size:10.5px; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--red); padding-bottom:8px; border-bottom:1px solid var(--line); margin-bottom:6px}
.docgroup h3 .cnt{color:var(--label); letter-spacing:0; margin-left:4px}
.doclist{display:flex; flex-direction:column}
.docrow{display:grid; grid-template-columns:34px minmax(0,1fr) auto; gap:12px; align-items:center; padding:8px 0; border-bottom:1px solid var(--line-2)}
.docrow:last-child{border-bottom:0}
.docrow > div{display:flex; flex-direction:column; min-width:0}
.docrow b{font-weight:600; font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.docrow .rcpt-ico{width:30px; height:36px}
.docproj .thumb{width:56px; height:42px; background:center/cover no-repeat; flex:none}
.filters.bare{background:none; border:0; padding:0}

@media (max-width:900px){
  .portal{border-left-width:6px}
  .p-top-in{padding:12px 16px 8px}
  .p-main{padding:22px 16px 48px}
  .p-grid{grid-template-columns:minmax(0,1fr)}
  .legend{grid-template-columns:minmax(0,1fr)}
  .hero-num{font-size:36px}
  .pbar{grid-template-columns:minmax(0,1fr); gap:6px}
  .p-user .lbl{display:none}
  .feed li{grid-template-columns:minmax(0,1fr); gap:2px}
  .gloss{max-width:none; text-align:left}
  .commit-pct{text-align:left}
}

/* ============================ comunicação, novidades, riscos, fiscal ============================ */
.badge{display:inline-grid; place-items:center; min-width:18px; height:18px; padding:0 5px; border-radius:999px; background:var(--red); color:#fff; font-size:10.5px; font-weight:700; margin-left:auto; line-height:1}
.p-nav-item .badge{margin-left:4px}
.badge.light{background:#fff; color:var(--red); margin-left:6px}
.p-contact{flex:none}
.p-out{flex:none; color:var(--muted)}
.p-contact svg{width:15px; height:15px}
.newsbox{border-left:4px solid var(--red)}
.newtag{display:inline-block; background:var(--red); color:#fff; font-size:9px; letter-spacing:.14em; padding:1px 6px; margin-right:8px; font-weight:700}
.feed li.is-new{background:linear-gradient(90deg, var(--red-100), transparent 70%)}
.thread{display:flex; flex-direction:column; gap:10px; max-height:420px; overflow-y:auto; padding-right:4px}
.msg{max-width:86%; padding:10px 12px; background:var(--surface-2); border-left:3px solid var(--line)}
.msg.me{align-self:flex-end; background:var(--red-100); border-left-color:var(--red)}
.msg-meta{font-size:10.5px; color:var(--label); letter-spacing:.04em; margin-bottom:3px}
.msg-body{font-size:13.5px; color:var(--ink); white-space:normal; overflow-wrap:anywhere}
.composer{display:flex; flex-direction:column; gap:10px; border-top:1px solid var(--line); padding-top:14px}
.risks{display:flex; flex-direction:column; gap:12px}
.risk{border:1px solid var(--line); border-left:4px solid var(--warn); padding:14px 16px; display:flex; flex-direction:column; gap:10px; background:var(--surface)}
.risk.lv-alto{border-left-color:var(--red)}
.risk.lv-baixo{border-left-color:var(--info)}
.risk.done{opacity:.72; border-left-color:var(--good)}
.risk-top{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.risk-top h3{margin-right:auto; font-size:15px; font-weight:700}
.risk-sec p{margin:3px 0 0; font-size:13.5px; color:var(--ink-2)}
.comms{display:flex; flex-direction:column; gap:20px}
.comms-split{display:grid; grid-template-columns:280px minmax(0,1fr); min-height:320px}
.thread-list{border-right:1px solid var(--line); display:flex; flex-direction:column}
.thread-item{display:flex; align-items:center; gap:8px; text-align:left; background:none; border:0; border-bottom:1px solid var(--line-2); padding:12px 16px; cursor:pointer; border-left:3px solid transparent}
.thread-item > span:first-child{display:flex; flex-direction:column; min-width:0}
.thread-item .hint{overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:200px}
.thread-item:hover{background:var(--surface-2)}
.thread-item.on{background:var(--red-100); border-left-color:var(--red)}
.thread-pane{padding:16px 20px; display:flex; flex-direction:column; gap:14px; min-width:0}
@media (max-width:900px){
  .comms-split{grid-template-columns:minmax(0,1fr)}
  .thread-list{border-right:0; border-bottom:1px solid var(--line)}
  .p-contact span:not(.badge){display:none}
  .p-top-in{gap:12px}
}

/* ---- planilha de lançamentos ---- */
.led-tabs{margin-top:10px}
.sheet-bar{display:flex; flex-direction:column; gap:0; border-bottom:1px solid var(--line)}
.sheet-bar .filters{border-bottom:0; padding-bottom:6px}
.sheet-bar .filters + .filters{padding-top:0; padding-bottom:14px}
.fsearch, .fsel{border:1px solid var(--line); background:var(--surface); color:var(--ink); padding:5px 12px; font-size:12px; border-radius:999px; min-width:0}
.fsearch{margin-left:auto; width:240px; max-width:100%}
.fsearch:focus, .fsel:focus{outline:none; border-color:var(--ink)}
.tchip .dot{display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--tc); margin-right:6px; vertical-align:0}
.acts-row{display:flex; gap:8px; flex-wrap:wrap; align-items:center}
.sheet-wrap{border-top:0}
table.sheet{min-width:1400px; width:100%; font-size:12.5px; table-layout:fixed}
.sheet th{padding:10px 8px; background:var(--surface)}
.sheet td{padding:0; border-right:1px solid var(--line-2); height:40px}
.sheet td:last-child, .sheet th:last-child{border-right:0}
.sheet .ci{display:block; width:100%; border:0; background:transparent; padding:10px 8px; min-width:0; border-radius:0; font-size:12.5px; color:var(--ink); text-overflow:ellipsis}
.sheet .ci::placeholder{color:var(--label)}
.sheet .ci:hover{background:var(--surface-2)}
.sheet .ci:focus{outline:2px solid var(--red); outline-offset:-2px; background:var(--surface); text-overflow:clip}
.sheet .ci[data-dirty="1"]{background:var(--warn-bg)}
.sheet .ci.saved{background:var(--good-bg); transition:background .6s}
.sheet .ci.num{text-align:right; font-variant-numeric:tabular-nums; font-weight:600}
.sheet input[type="date"].ci{font-variant-numeric:tabular-nums; padding-right:4px}
.sheet select.ci{cursor:pointer}
.sheet .tsel{appearance:none; -webkit-appearance:none; width:auto; max-width:calc(100% - 12px); margin:0 6px; padding:4px 12px; border-radius:999px; font-size:11px; font-weight:600;
  background:color-mix(in srgb, var(--tc) 18%, transparent); color:color-mix(in srgb, var(--tc) 72%, var(--ink))}
.sheet .tsel:hover{background:color-mix(in srgb, var(--tc) 28%, transparent)}
.sheet .tsel option{background:var(--surface); color:var(--ink)}
.sheet tr.s-new td{background:var(--surface-2); border-bottom:2px solid var(--ink)}
.sheet tr.s-new .ci:hover{background:var(--surface)}
.sheet tbody tr:not(.s-new):hover td{background:color-mix(in srgb, var(--surface-2) 60%, transparent)}
.sheet td.r{padding:0 8px}
.sheet td.nowrap{white-space:nowrap}
.cell-docs{display:flex; gap:4px; flex-wrap:wrap; align-items:center; padding:5px 8px}
.cell-new{display:flex; align-items:center; gap:2px; padding-right:4px}
.cell-new .ci{flex:1}
.cadd{display:inline-grid; place-items:center; width:26px; height:26px; flex:none; border:1px solid transparent; background:none; color:var(--muted); cursor:pointer; border-radius:var(--radius); padding:0}
.cadd svg{width:14px; height:14px}
.cadd:hover{border-color:var(--line); color:var(--ink); background:var(--surface)}
.cadd.del:hover{color:var(--red)}
.cadd.eye.on{color:var(--red)}
.fcount{font-size:10px; font-weight:700; background:var(--ink); color:var(--bg); border-radius:999px; padding:1px 6px}
.dchip{display:inline-flex; align-items:center; gap:4px; max-width:100%; font-size:11px; padding:2px 7px; border:1px solid var(--line); color:var(--ink); text-decoration:none; background:var(--surface); border-radius:var(--radius)}
.dchip span{overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:110px}
.dchip svg{width:11px; height:11px; color:var(--red); flex:none}
.dchip:hover{border-color:var(--red)}
.sheet-empty{padding:28px 16px !important; text-align:center; color:var(--muted)}
.sheet-help{padding:12px 20px 16px; margin:0}
.sheet-help svg{width:12px; height:12px; vertical-align:-2px; color:var(--red)}
.sheet tfoot td{padding:12px 8px; height:auto}
.tpill{display:inline-block; padding:3px 10px; border-radius:999px; font-size:11px; font-weight:600; white-space:nowrap;
  background:color-mix(in srgb, var(--tc) 16%, transparent); color:color-mix(in srgb, var(--tc) 72%, var(--ink))}
.tsum{display:flex; flex-direction:column; gap:14px}
.tsum-bar{display:flex; height:12px; background:var(--track); overflow:hidden; border-radius:var(--radius)}
.tsum-bar i{display:block; height:100%; background:var(--tc); min-width:3px}
.tsum-bar i + i{border-left:2px solid var(--surface)}
.tsum-leg{display:flex; flex-wrap:wrap; gap:10px 36px}
.tsum-leg > div{display:flex; align-items:baseline; gap:8px; min-width:0}
.tsum-leg .dot{width:9px; height:9px; border-radius:50%; background:var(--tc); flex:none; align-self:center}
.tsum-k{font-size:12px; color:var(--ink-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.tsum-leg b{margin-left:6px; font-size:13px}
.tsum-leg .hint{font-size:11px; min-width:30px; text-align:right}
/* investidor: planilha limpa */
table.ledger{min-width:980px; font-size:12.5px}
.ledger th{padding:12px 12px}
.ledger td{padding:13px 12px; vertical-align:top}
.ledger td.amt{font-weight:700}
.ledger .obs-cell{color:var(--ink-2); max-width:260px; line-height:1.45}
.ledger .lk{display:inline-flex; align-items:center; gap:4px; font-size:12px; font-weight:600; color:var(--ink); text-decoration:none; border-bottom:1px solid var(--red); white-space:nowrap}
.ledger .lk svg{width:12px; height:12px; color:var(--red)}
.ledger .lk:hover{color:var(--red)}
.ledger .paid{display:inline-flex; align-items:center; gap:4px; font-size:12px; color:var(--good); font-weight:600}
.ledger .paid svg{width:12px; height:12px}
.ledger tbody tr:hover td{background:var(--surface-2)}
.ledger.mini{min-width:760px; font-size:12px}
.ledger.mini td{padding:8px 10px}
.ledger tr.bad td{color:var(--muted); background:var(--crit-bg)}
.pastebox{min-height:90px; border:1px dashed var(--ink); padding:18px; font-size:13px; color:var(--ink-2); background:var(--surface-2); outline:none; cursor:text; border-radius:var(--radius)}
.pastebox:empty::before{content:attr(data-ph); color:var(--muted)}
.pastebox:focus{border-color:var(--red); border-style:solid}
@media (max-width:760px){
  .fsearch{margin-left:0; width:100%}
  table.ledger{min-width:0}
  .ledger thead{display:none}
  .ledger, .ledger tbody, .ledger tr, .ledger td, .ledger tfoot{display:block; width:100%}
  .ledger tbody tr{padding:12px 16px; border-bottom:1px solid var(--line); display:grid; grid-template-columns:1fr 1fr; gap:6px 12px}
  .ledger td{padding:0; border:0}
  .ledger td::before{content:attr(data-l); display:block; font-size:9px; letter-spacing:.2em; text-transform:uppercase; color:var(--label); margin-bottom:2px}
  .ledger td.r{text-align:left}
  .ledger td[data-l="Observações"]{grid-column:1 / -1; max-width:none}
  .ledger tfoot tr{display:flex; justify-content:space-between; padding:12px 16px}
  .ledger tfoot td{width:auto; border:0; padding:0}
}

.sheet th:last-child, .sheet td:last-child{position:sticky; right:0; z-index:1; background:var(--surface); box-shadow:-1px 0 0 var(--line)}
.sheet tr.s-new td:last-child{background:var(--surface-2)}
.sheet tr.s-new td:last-child .btn{padding:6px 10px}
.sheet tr.s-new td:last-child .btn svg{width:12px; height:12px}

/* ---- flip ---- */
.fbadge{display:inline-flex; align-items:center; background:var(--ink); color:var(--bg); font-size:9px; font-weight:700; letter-spacing:.2em; text-transform:uppercase; padding:3px 7px 3px 9px; margin-right:8px; vertical-align:2px; border-left:3px solid var(--red); border-radius:var(--radius)}
.eyebrow .fbadge{letter-spacing:.2em}
.pcard-name .fbadge{vertical-align:3px}
.flip-panel{border-top:3px solid var(--ink)}
.flip-kpis{padding:16px 20px 0}
.flip-body{display:grid; grid-template-columns:1fr; gap:22px}
.flip-tbl{min-width:520px}
.flip-kv{display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); column-gap:28px}
.tsum-bar.tall{height:22px}
.neg{color:var(--red)} .pos{color:var(--good)}
.flip-box{display:flex; flex-direction:column; gap:12px; padding:14px 16px; background:var(--surface-2); border-left:3px solid var(--ink)}
.flip-box[hidden]{display:none !important}
.filters.bare + .grid, .filters.bare + .cards{margin-top:0}

/* ---- assistente IA ---- */
.ai-panel{border-top:3px solid var(--red)}
.ai-chat{display:flex; flex-direction:column; gap:16px; max-height:520px; overflow-y:auto; padding:4px 4px 4px 0}
.ai-turn{display:flex; flex-direction:column; gap:10px}
.ai-q{align-self:flex-end; max-width:80%; background:var(--ink); color:var(--bg); padding:10px 14px; border-radius:14px 14px 2px 14px}
.ai-q .msg-body{color:inherit}
.ai-a{display:flex; gap:10px; align-items:flex-start; max-width:88%}
.ai-av{flex:none; width:30px; height:30px; border-radius:50%; background:var(--red); color:#fff; display:grid; place-items:center; font-weight:700; font-size:13px}
.ai-bub{background:var(--surface-2); border-left:3px solid var(--red); padding:10px 14px; min-width:0; display:flex; flex-direction:column; gap:6px}
.ai-meta{font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--label); font-weight:600}
.ai-text{font-size:13.5px; line-height:1.55; color:var(--ink); overflow-wrap:anywhere}
.ai-text p{margin:0 0 6px} .ai-text p:last-child{margin-bottom:0}
.ai-text ul{margin:4px 0 6px; padding-left:18px} .ai-text li{margin:2px 0}
.ai-err{color:var(--red); font-size:12.5px; margin:6px 0 0}
.ai-thinking{color:var(--muted); font-size:13px}
.ai-thinking i{display:inline-block; width:4px; height:4px; margin-left:3px; border-radius:50%; background:var(--muted); animation:aiDot 1.2s infinite}
.ai-thinking i:nth-child(2){animation-delay:.2s} .ai-thinking i:nth-child(3){animation-delay:.4s}
@keyframes aiDot{0%,80%,100%{opacity:.2} 40%{opacity:1}}
@media (prefers-reduced-motion: reduce){ .ai-thinking i{animation:none; opacity:.6} }
.ai-hand{display:flex; gap:6px; align-items:flex-start; font-size:12px; color:var(--good)}
.ai-hand svg{width:13px; height:13px; flex:none; margin-top:2px}
.ai-fwd{font-size:12px; color:var(--muted); align-self:flex-start; background:none; border:0; padding:0; cursor:pointer; text-decoration:underline; text-underline-offset:2px}
.ai-fwd:hover{color:var(--red)}
.ai-sugg{display:flex; flex-wrap:wrap; gap:6px}
.ai-compose{display:flex; gap:10px; align-items:flex-end; border-top:1px solid var(--line); padding-top:14px}
.ai-compose textarea{flex:1; min-width:0; resize:vertical; font-size:14px; padding:10px 12px; border:1px solid var(--line); background:var(--surface); color:var(--ink); border-radius:var(--radius)}
.ai-compose textarea:focus{outline:none; border-color:var(--ink)}
.ai-foot{margin:0; font-size:11.5px}
.via{color:var(--red); font-weight:600}
details.direct{border-top:1px solid var(--line); padding-top:12px}
details.direct summary{cursor:pointer; font-size:13px; font-weight:600; color:var(--ink-2)}
details.direct[open] summary{margin-bottom:10px}
.ai-log{border:1px solid var(--line); background:var(--surface-2); padding:10px 14px}
.ai-log summary{cursor:pointer; font-size:13px}
.ai-log-list{display:flex; flex-direction:column; gap:10px; margin-top:10px; max-height:320px; overflow-y:auto}
.ai-log-row{border-top:1px solid var(--line); padding-top:10px}
.ai-log-q{display:flex; flex-wrap:wrap; gap:6px 10px; align-items:center; font-size:13px}
.ai-log-a{font-size:12.5px; color:var(--ink-2); margin-top:4px}
.ai-log-a p{margin:0 0 4px} .ai-log-a ul{margin:2px 0; padding-left:18px}
.ai-set{margin-top:18px; padding-top:16px; border-top:1px solid var(--line); display:flex; flex-direction:column; gap:10px}
.ai-set h3{margin:0; font-size:12px; letter-spacing:.2em; text-transform:uppercase; color:var(--red)}
@media (max-width:700px){ .ai-q, .ai-a{max-width:100%} .ai-compose{flex-direction:column; align-items:stretch} }

.ai-av.big{width:38px; height:38px; font-size:16px}
.cadu-card{border-left:3px solid var(--red)}
.cadu-card .panel-head{align-items:center}
.comms > .cadu-card{grid-column:1 / -1}

/* ---- rentabilidade ---- */
.rchart{display:flex; flex-direction:column; gap:14px}
.rrow{display:grid; grid-template-columns:minmax(140px, 220px) 1fr auto; gap:14px; align-items:center}
.rname{text-align:left; font-weight:600; color:var(--ink); font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.rtrack{position:relative; display:flex; gap:2px; height:22px; background:var(--track); border-radius:0 4px 4px 0}
.rseg{display:block; height:100%; min-width:2px}
.rseg.cap{background:var(--ink-2)}
.rseg.gain{background:var(--good); border-radius:0 4px 4px 0}
.rseg.loss{background:repeating-linear-gradient(135deg, var(--red) 0 3px, color-mix(in srgb, var(--red) 45%, transparent) 3px 6px); border-radius:0 4px 4px 0}
.rmark{position:absolute; top:-5px; bottom:-5px; width:3px; margin-left:-1.5px; background:var(--red); box-shadow:0 0 0 2px var(--surface); border-radius:2px}
.rval{display:flex; flex-direction:column; align-items:flex-end; font-size:13px; min-width:110px}
.rval span{font-size:12px; font-weight:600}
.rleg{margin-top:4px; flex-wrap:wrap}
.sw.rcap{background:var(--ink-2)} .sw.rgain{background:var(--good)}
.sw.rloss{background:repeating-linear-gradient(135deg, var(--red) 0 3px, color-mix(in srgb, var(--red) 45%, transparent) 3px 6px)}
.rmark-sw{display:inline-block; width:3px; height:14px; background:var(--red); border-radius:2px}
.rtbl{min-width:900px}
.rtbl td:first-child{min-width:210px}
table.cf{min-width:0}
table.cf td, table.cf th{padding:10px 10px}
tr.proj td{color:var(--muted); font-style:italic}
.rent-mini .panel-body{display:flex; flex-wrap:wrap; gap:14px 40px; align-items:center}
.rent-mini .panel-body > div{display:flex; flex-direction:column; gap:2px}
.rent-mini b{font-size:20px}
.rent-mini .btn{margin-left:auto}
.dist-split{margin-top:12px}
@media (max-width:700px){ .rrow{grid-template-columns:1fr auto} .rtrack{grid-column:1 / -1; grid-row:2} .rent-mini .btn{margin-left:0} }

/* ---- obra ao vivo ---- */
.live-player{position:relative; aspect-ratio:16/9; background:#0d0d0d; color:#fff; overflow:hidden; display:flex; flex-direction:column; justify-content:space-between; padding:14px 16px; border-radius:var(--radius); isolation:isolate}
.live-player.sm{min-height:0}
.live-bg{position:absolute; inset:-10px; background:center/cover no-repeat; filter:grayscale(1) blur(3px) brightness(.35); z-index:-2}
.live-scan{position:absolute; inset:0; z-index:-1; background:repeating-linear-gradient(0deg, rgba(255,255,255,.035) 0 1px, transparent 1px 3px), radial-gradient(ellipse at center, transparent 40%, rgba(0,0,0,.6))}
.live-top, .live-bottom{display:flex; justify-content:space-between; align-items:center; gap:10px; font-size:10px; letter-spacing:.2em; font-weight:600}
.live-bottom{color:rgba(255,255,255,.6)}
.live-pill{display:inline-flex; align-items:center; gap:6px; background:#D90429; color:#fff; padding:3px 8px; border-radius:2px; opacity:.55}
.live-pill i{width:7px; height:7px; border-radius:50%; background:#fff; animation:livePulse 1.6s infinite}
.live-soon{border:1px solid rgba(255,255,255,.5); padding:3px 8px; border-radius:2px}
.live-center{display:flex; flex-direction:column; align-items:center; text-align:center; gap:6px; padding:0 10px}
.live-center svg{width:34px; height:34px; color:#fff; opacity:.9}
.live-center b{font-size:17px; font-weight:600}
.live-player.sm .live-center b{font-size:14px}
.live-center span{font-size:12.5px; color:rgba(255,255,255,.72); max-width:340px}
@keyframes livePulse{0%,100%{opacity:1} 50%{opacity:.25}}
@media (prefers-reduced-motion: reduce){ .live-pill i{animation:none} }
.live-banner{display:grid; grid-template-columns:1.2fr 1fr; gap:28px; align-items:center; background:var(--ink); color:var(--bg); padding:28px 30px; border-left:4px solid var(--red)}
.live-banner h2{font-size:28px; margin:6px 0 8px; color:inherit; letter-spacing:0; text-transform:none}
.live-banner p{margin:0 0 14px; color:color-mix(in srgb, var(--bg) 75%, transparent); font-size:14px; line-height:1.55}
.live-list{list-style:none; padding:0; margin:0 0 18px; display:flex; flex-direction:column; gap:7px; font-size:13px}
.live-list li{display:flex; gap:8px; align-items:center}
.live-list svg{width:15px; height:15px; color:var(--red)}
.live-cta{display:flex; gap:10px; flex-wrap:wrap; align-items:center}
.live-banner .btn:not(.btn-primary){background:transparent; color:inherit; border-color:color-mix(in srgb, var(--bg) 35%, transparent)}
.live-body{display:grid; grid-template-columns:1.5fr 1fr; gap:22px; align-items:start}
.live-side{display:flex; flex-direction:column; gap:14px}
.live-steps{list-style:none; margin:0; padding:0; display:flex; gap:6px}
.live-steps li{flex:1; display:flex; flex-direction:column; gap:6px; font-size:11px; color:var(--muted)}
.live-steps i{display:grid; place-items:center; height:24px; font-style:normal; font-weight:700; font-size:11px; background:var(--surface-2); color:var(--muted); border-radius:var(--radius)}
.live-steps i svg{width:12px; height:12px}
.live-steps li.done i{background:var(--ink); color:var(--bg)}
.live-steps li.now i{background:var(--red); color:#fff}
.live-steps li.now{color:var(--ink); font-weight:600}
.live-tag{position:absolute; top:12px; right:12px; display:inline-flex; align-items:center; gap:6px; background:rgba(13,13,13,.82); color:#fff; font-style:normal; font-size:9.5px; letter-spacing:.18em; text-transform:uppercase; font-weight:600; padding:5px 9px; border-left:3px solid #D90429}
.live-tag b{width:6px; height:6px; border-radius:50%; background:#D90429; animation:livePulse 1.6s infinite}
@media (max-width:860px){ .live-banner, .live-body{grid-template-columns:1fr} .live-banner{padding:22px 18px} }


/* ---- quadro de avisos do portal: linha do tempo com marcador por tipo ---- */
.avisos{list-style:none; margin:0; padding:0}
.avisos li{display:grid; grid-template-columns:16px minmax(0,1fr); gap:14px; padding:0 0 20px; position:relative}
.avisos li:last-child{padding-bottom:0}
.avisos li::before{content:""; position:absolute; left:7px; top:15px; bottom:0; width:1px; background:var(--line)}
.avisos li:last-child::before{display:none}
.aviso-trilho{position:relative; display:block}
.aviso-trilho i{position:absolute; left:3px; top:5px; width:9px; height:9px; border-radius:50%; background:var(--muted); z-index:1}
.avisos li[data-tipo="upd"]  .aviso-trilho i{background:var(--red)}
.avisos li[data-tipo="rep"]  .aviso-trilho i{background:var(--ink)}
.avisos li[data-tipo="call"] .aviso-trilho i{background:var(--warn)}
.avisos li[data-tipo="dist"] .aviso-trilho i{background:var(--good)}
.avisos li[data-tipo="msg"]  .aviso-trilho i{background:var(--info)}
.avisos li.is-new .aviso-trilho i{box-shadow:0 0 0 3px var(--red-100)}
.aviso-top{display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-bottom:4px}
.aviso-tipo{font-size:9.5px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--muted)}
.avisos li[data-tipo="upd"]  .aviso-tipo{color:var(--red)}
.avisos li[data-tipo="rep"]  .aviso-tipo{color:var(--ink-2)}
.avisos li[data-tipo="call"] .aviso-tipo{color:var(--warn)}
.avisos li[data-tipo="dist"] .aviso-tipo{color:var(--good)}
.avisos li[data-tipo="msg"]  .aviso-tipo{color:var(--info)}
.aviso-onde{font-size:11.5px; color:var(--muted); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.aviso-data{font-size:11.5px; color:var(--label); font-variant-numeric:tabular-nums; margin-left:auto; flex:0 0 auto}
.aviso-tit{margin:0; font-size:15px; font-weight:600; line-height:1.35; color:var(--ink)}
.aviso-tit .linkish, .aviso-tit a{font:inherit; color:inherit}
.aviso-tit .linkish:hover{color:var(--red)}
.aviso-corpo{margin:6px 0 0; font-size:13px; color:var(--ink-2); line-height:1.6; max-width:80ch}
@media (max-width:640px){
  .avisos li{grid-template-columns:12px minmax(0,1fr); gap:11px}
  .avisos li::before{left:5px}
  .aviso-trilho i{left:1px; width:8px; height:8px}
  .aviso-data{margin-left:0}
}


/* ---- selo do que veio do fornecedor ---- */
.vbadge{display:inline-flex; align-items:center; gap:5px; font-size:9px; font-weight:700;
  letter-spacing:.1em; text-transform:uppercase; padding:2px 7px; border-radius:var(--radius);
  background:var(--info-bg); color:var(--info); white-space:nowrap; vertical-align:middle}
.vbadge.novo{background:var(--warn-bg); color:var(--warn)}
