/* assets/css/app-v26.3.css */
/* source-style-1: anonymous */

:root{
  --ink:#1B2B22;
  --ink-soft:#3C4A40;
  --paper:#F6F3EA;
  --paper-raised:#FFFFFF;
  --line:#D8D0BC;
  --moss:#3F6B4F;
  --moss-bg:#E4EDE4;
  --ochre:#A6501E;
  --ochre-bg:#F3E2D3;
  --mustard:#8A6D1B;
  --mustard-bg:#F1E7C6;
  --serif:'Fraunces',serif;
  --sans:'Inter',sans-serif;
  --mono:'IBM Plex Mono',monospace;
}
*{box-sizing:border-box;}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);}
::selection{background:var(--mustard-bg);}
.wrap{max-width:1180px;margin:0 auto;padding:28px 24px 80px;}

/* Header */
header.top{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:2px solid var(--ink);padding-bottom:18px;margin-bottom:22px;gap:20px;flex-wrap:wrap;}
#storageWarning{background:var(--ochre-bg);color:var(--ochre);border:1px solid var(--ochre);padding:12px 16px;font-size:0.86rem;margin-bottom:18px;line-height:1.5;}
#storageWarning strong{display:block;margin-bottom:3px;}
.brand{display:flex;align-items:center;gap:16px;}
.brand-logo{height:64px;width:auto;flex-shrink:0;}
.brand h1{font-family:var(--serif);font-weight:600;font-size:2.1rem;margin:0 0 4px;letter-spacing:-0.01em;}
.brand p{margin:0;color:var(--ink-soft);font-size:0.92rem;}
.brand .loc{font-family:var(--mono);font-size:0.78rem;color:var(--ink-soft);margin-top:6px;}
.sync{font-family:var(--mono);font-size:0.72rem;color:var(--ink-soft);text-align:right;}
.sync .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--moss);margin-right:6px;}

/* Tabs */
nav.tabs{display:flex;gap:2px;margin-bottom:26px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
nav.tabs button{font-family:var(--sans);font-weight:600;font-size:0.86rem;background:none;border:none;padding:11px 16px;cursor:pointer;color:var(--ink-soft);border-bottom:2px solid transparent;transition:color .15s,border-color .15s;}
nav.tabs button:hover{color:var(--ink);}
nav.tabs button.active{color:var(--ink);border-bottom-color:var(--ochre);}

.view{display:none;}
.view.active{display:block;}

/* Cards */
.grid-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:26px;}
.card{background:var(--paper-raised);border:1px solid var(--line);padding:16px 18px;}
.card .label{font-size:0.72rem;color:var(--ink-soft);text-transform:none;margin-bottom:8px;}
.card .value{font-family:var(--serif);font-size:1.7rem;font-weight:600;line-height:1;}
.card .sub{font-family:var(--mono);font-size:0.72rem;color:var(--ink-soft);margin-top:6px;}

section.block{background:var(--paper-raised);border:1px solid var(--line);padding:22px;margin-bottom:20px;}
section.block h2{font-family:var(--serif);font-size:1.25rem;margin:0 0 16px;font-weight:600;}
section.block h3{font-family:var(--serif);font-size:1.02rem;margin:22px 0 10px;font-weight:600;}

/* Charts */
.chart-row{display:flex;gap:28px;flex-wrap:wrap;align-items:flex-start;}
.chart-main{flex:1;min-width:320px;}
.chart-side{width:220px;flex-shrink:0;}
.chart-svg text{font-family:var(--sans);fill:var(--ink-soft);}
.chart-svg .val-label{font-family:var(--mono);fill:var(--ink);font-weight:600;}
.chart-svg .grid-line{stroke:var(--line);stroke-width:1;}
.chart-svg .axis-line{stroke:var(--ink);stroke-width:1;}
.chart-legend{display:flex;gap:18px;margin-top:14px;flex-wrap:wrap;font-size:0.78rem;color:var(--ink-soft);}
.chart-legend .sw{display:inline-block;width:10px;height:10px;margin-right:6px;vertical-align:middle;border-radius:1px;}
.donut-center{font-family:var(--serif);}

/* Table */
table{width:100%;border-collapse:collapse;font-size:0.84rem;}
th{text-align:left;font-weight:600;font-size:0.72rem;color:var(--ink-soft);padding:8px 10px;border-bottom:1px solid var(--ink);}
td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle;}
tr:hover td{background:#FBF9F3;}
.mono{font-family:var(--mono);}
.right{text-align:right;}

.badge{display:inline-block;padding:3px 9px;font-size:0.72rem;font-weight:600;border-radius:2px;}
.badge.disponivel{background:var(--moss-bg);color:var(--moss);}
.badge.reservado{background:var(--mustard-bg);color:var(--mustard);}
.badge.vendido{background:var(--ochre-bg);color:var(--ochre);}
.badge.ativa{background:var(--moss-bg);color:var(--moss);}
.badge.paga{background:var(--moss-bg);color:var(--moss);}
.badge.pendente{background:var(--mustard-bg);color:var(--mustard);}
.badge.atrasada{background:var(--ochre-bg);color:var(--ochre);}
.badge.ok{background:var(--moss-bg);color:var(--moss);}
.badge.atencao{background:var(--mustard-bg);color:var(--mustard);}
.badge.critico{background:var(--ochre-bg);color:var(--ochre);}

/* Filters */
.filters{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap;align-items:center;}
input[type=text],input[type=number],input[type=date],select{
  font-family:var(--sans);font-size:0.86rem;padding:8px 10px;border:1px solid var(--line);background:var(--paper-raised);color:var(--ink);
}
input:focus,select:focus{outline:none;border-color:var(--ink);}
label.field{display:flex;flex-direction:column;gap:4px;font-size:0.76rem;color:var(--ink-soft);margin-bottom:14px;}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0 16px;}

button.btn{font-family:var(--sans);font-weight:600;font-size:0.86rem;padding:10px 18px;border:1px solid var(--ink);background:var(--ink);color:var(--paper);cursor:pointer;transition:opacity .15s;}
button.btn:hover{opacity:0.85;}
button.btn.secondary{background:none;color:var(--ink);}
button.btn.small{padding:5px 11px;font-size:0.75rem;}
button.btn:disabled{opacity:0.4;cursor:not-allowed;}

/* V25.39 — seletores visuais de condição e meio de pagamento */
.pay-option-wrap{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px;}
.pay-option-btn{font-family:var(--sans);font-size:.82rem;font-weight:700;padding:9px 12px;border:1px solid var(--line);background:var(--paper-raised);color:var(--ink);cursor:pointer;border-radius:3px;text-align:left;}
.pay-option-btn:hover{border-color:var(--ink);}
.pay-option-btn.active{background:var(--ink);color:var(--paper);border-color:var(--ink);}
.pay-option-btn.boleto.active{background:var(--ochre);border-color:var(--ochre);color:#fff;}
.pay-option-btn .pay-sub{display:block;font-size:.66rem;font-weight:500;opacity:.78;margin-top:2px;}
.pay-option-note{display:block;margin-top:6px;font-size:.72rem;line-height:1.4;color:var(--ink-soft);}
.pay-option-note.warn{color:var(--ochre);font-weight:600;}

.semaforo{padding:12px 14px;font-size:0.86rem;margin:14px 0;border-left:4px solid var(--moss);background:var(--moss-bg);color:var(--ink);}
.semaforo.warn{border-color:var(--mustard);background:var(--mustard-bg);}
.semaforo.bad{border-color:var(--ochre);background:var(--ochre-bg);}

.empty{padding:30px;text-align:center;color:var(--ink-soft);font-size:0.86rem;}
footer.foot{margin-top:40px;padding-top:16px;border-top:1px solid var(--line);font-family:var(--mono);font-size:0.7rem;color:var(--ink-soft);}

/* ============================================================
   CONTRATO — estilos de tela. A marca d'água de IMPRESSÃO fica
   em .print-watermark, dentro do bloco @media print mais abaixo,
   e se repete automaticamente em cada página impressa.
   ============================================================ */
.contrato-doc{
  position:relative;
  background-color:var(--paper-raised);
  border:1px solid var(--line);padding:0 56px 48px;font-size:0.86rem;line-height:1.65;max-width:820px;margin:0 auto;color:var(--ink);}
.letterhead-flow{display:flex;align-items:center;gap:16px;padding:28px 0 18px;border-bottom:2px solid var(--ink);margin-bottom:0;}
.letterhead-flow img{height:58px;width:auto;}
.letterhead-flow .lh-title{font-family:var(--serif);font-weight:700;font-size:1.3rem;color:var(--ink);margin:0;}
.letterhead-flow .lh-tag{font-family:var(--serif);font-style:italic;font-size:0.72rem;letter-spacing:0.08em;color:#8A6D1B;margin:2px 0 0;text-transform:uppercase;}
.contrato-banner{background:var(--ink);color:#fff;text-align:center;padding:14px 20px;font-family:var(--serif);font-weight:700;font-size:1.05rem;margin:20px 0 0;}
.contrato-subbanner{background:var(--paper);border:1px solid var(--line);border-top:none;text-align:center;padding:8px 16px;font-family:var(--serif);font-style:italic;font-size:0.78rem;color:var(--ink-soft);margin:0 0 24px;}
.anexo-title{font-family:var(--serif);text-align:center;font-size:1.1rem;font-weight:700;margin:40px 0 16px;padding-top:20px;border-top:2px solid var(--ink);}
.contrato-doc h4.clausula{font-family:var(--serif);font-size:0.98rem;font-weight:600;margin:24px 0 8px;}
.contrato-doc p{margin:0 0 10px;text-align:justify;}
.contrato-doc .quadro{border:1px solid var(--ink);padding:14px 16px;margin:14px 0;background:rgba(255,255,255,0.6);}
.contrato-doc .quadro h5{font-family:var(--sans);font-size:0.78rem;font-weight:700;margin:0 0 8px;text-transform:uppercase;letter-spacing:0.03em;}
.contrato-doc .quadro .row{display:flex;justify-content:space-between;gap:12px;padding:3px 0;font-size:0.82rem;border-bottom:1px dotted var(--line);}
.contrato-doc .quadro p{font-size:0.84rem;}
.contrato-doc .sign{margin-top:36px;text-align:center;}
.contrato-doc .sign .line{margin-top:34px;border-top:1px solid var(--ink);width:80%;margin-left:auto;margin-right:auto;padding-top:6px;font-size:0.78rem;}
.contrato-doc .rubricas-final{margin-top:26px;font-size:0.78rem;color:var(--ink-soft);text-align:center;font-style:italic;}
.contrato-missing{color:var(--ochre);font-weight:600;}
.contrato-actions{max-width:820px;margin:0 auto 16px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;}
.contract-auth-box{margin:14px 0 18px;padding:12px 14px;border:1px solid var(--line);background:var(--paper);display:flex;justify-content:space-between;align-items:flex-start;gap:18px;flex-wrap:wrap}
.contract-auth-box .auth-label{font-size:.68rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em;font-weight:700}
.contract-auth-box .auth-code{font-family:var(--mono);font-size:.92rem;font-weight:700;letter-spacing:.06em;color:var(--ink);margin-top:4px}
.contract-auth-box .auth-meta{font-size:.68rem;color:var(--ink-soft);line-height:1.45;text-align:right}
.contract-auth-inline{font-family:var(--mono);font-weight:700;letter-spacing:.04em}

.print-rubrica-footer{display:none;}
.print-letterhead{display:none;}
.print-watermark{display:none;}
@media print{
  header.top, nav.tabs, .contrato-actions, footer.foot, #storageWarning,
  #ctSelectorSection, #dtSelectorSection, #dtCalcSection, #dtControleSection{display:none !important;}
  body{background:#fff;}
  .contrato-doc{border:none;padding:104px 44px 60px;max-width:100%;background-image:none;}
  .wrap{padding:0;max-width:100%;}
  .letterhead-flow{display:none;}
  .print-letterhead{
    display:flex;position:fixed;top:0;left:0;right:0;z-index:10;
    align-items:center;justify-content:center;gap:14px;padding:14px 20px 10px;
    background:#fff;border-bottom:2px solid var(--ink);
  }
  .print-letterhead img{height:46px;width:auto;}
  .print-letterhead .lh-title{font-family:var(--serif);font-weight:700;font-size:1.05rem;color:var(--ink);margin:0;text-align:left;}
  .print-letterhead .lh-tag{font-family:var(--serif);font-style:italic;font-size:0.62rem;letter-spacing:0.07em;color:#8A6D1B;margin:1px 0 0;text-transform:uppercase;text-align:left;}
  .print-watermark{
    display:block;position:fixed;top:0;left:0;right:0;bottom:0;z-index:1;
    background-image:url("../img/brand/gran-reserva-logo-v2.webp");
    background-repeat:no-repeat;background-position:center;background-size:440px auto;
    opacity:0.07;print-color-adjust:exact;-webkit-print-color-adjust:exact;
    pointer-events:none;
  }
  .contrato-doc{position:relative;z-index:2;}
  .print-rubrica-footer{
    display:flex;position:fixed;bottom:6px;right:0;left:0;z-index:10;
    justify-content:center;gap:8px;font-family:var(--serif);font-style:italic;font-size:0.7rem;color:var(--ink);
    border-top:1px solid var(--ink);padding:6px 20px 0;background:#fff;
  }
  .print-rubrica-footer .rub-box{border-bottom:1px solid var(--ink);padding:0 4px 1px;min-width:70px;display:inline-block;text-align:center;}
}

/* Auth */
#authOverlay{position:fixed;inset:0;background:var(--paper);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:1000;padding:20px;}
.auth-error-block{background:var(--ochre-bg);color:var(--ochre);border:1px solid var(--ochre);padding:12px 16px;font-size:0.8rem;line-height:1.5;}
.auth-error-block strong{display:block;margin-bottom:3px;}
.auth-card{background:var(--paper-raised);border:1px solid var(--line);padding:38px 40px;max-width:380px;width:100%;}
.auth-card img{height:52px;display:block;margin:0 auto 16px;}
.auth-card h2{font-family:var(--serif);text-align:center;font-size:1.3rem;margin:0 0 6px;font-weight:600;}
.auth-card .auth-sub{text-align:center;color:var(--ink-soft);font-size:0.82rem;margin-bottom:24px;}
.auth-card label.field{margin-bottom:16px;}
.auth-card button.btn{width:100%;margin-top:6px;}
.auth-error{background:var(--ochre-bg);color:var(--ochre);padding:10px 12px;font-size:0.82rem;margin-bottom:14px;}
.auth-switch{text-align:center;margin-top:16px;font-size:0.8rem;color:var(--ink-soft);}
.auth-switch a{color:var(--ink);cursor:pointer;text-decoration:underline;}
#appRoot{display:none;}
.user-badge{display:flex;align-items:center;gap:10px;}
.user-badge .who{font-family:var(--mono);font-size:0.74rem;color:var(--ink-soft);}
.user-badge button.btn.small{white-space:nowrap;}
.role-badge{display:inline-block;padding:2px 8px;font-size:0.68rem;font-weight:600;border-radius:2px;background:var(--moss-bg);color:var(--moss);text-transform:uppercase;letter-spacing:0.03em;}
.role-badge.equipe{background:var(--mustard-bg);color:var(--mustard);}

/* V4.0 — Simulação de venda */
.simulator-shell{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr);gap:18px;align-items:start}.simulator-form{border:1px solid var(--line);border-radius:16px;padding:18px;background:var(--surface)}.simulator-result{position:sticky;top:18px;border:1px solid var(--line);border-radius:16px;padding:18px;background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,.008))}.simulator-result h3{margin:0 0 12px}.simulation-hero{padding:18px;border-radius:14px;border:1px solid rgba(75,224,161,.16);background:rgba(75,224,161,.055);margin-bottom:12px}.simulation-hero span{display:block;color:var(--ink-soft);font-size:.7rem;text-transform:uppercase;letter-spacing:.08em}.simulation-hero strong{display:block;font-size:1.7rem;margin-top:5px}.simulation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.simulation-kpi{border:1px solid var(--line);border-radius:12px;padding:12px}.simulation-kpi span{display:block;color:var(--ink-soft);font-size:.66rem;margin-bottom:5px}.simulation-kpi strong{font-size:.9rem}.simulation-note{margin-top:12px;padding:10px 12px;border-radius:10px;background:var(--hover);font-size:.68rem;color:var(--ink-soft);line-height:1.5}.simulation-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.simulation-empty{min-height:220px;display:grid;place-items:center;text-align:center;color:var(--ink-soft);border:1px dashed var(--line);border-radius:14px;padding:24px}.simulation-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border:1px solid var(--line);border-radius:999px;font-size:.63rem;color:var(--ink-soft);margin-bottom:10px}.simulation-badge:before{content:'●';color:#4BD68E;font-size:.55rem}@media(max-width:920px){.simulator-shell{grid-template-columns:1fr}.simulator-result{position:static}.simulation-grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.simulation-grid{grid-template-columns:1fr}}

/* --- Travas de preenchimento: sinal no próprio campo --- */
input.campo-ok{border-color:#1c9c5b !important;box-shadow:0 0 0 2px rgba(28,156,91,.12)}
input.campo-erro{border-color:#c4685a !important;box-shadow:0 0 0 2px rgba(196,104,90,.14)}
.campo-aviso{display:block;color:#c4685a;font-size:.72rem;margin-top:4px;min-height:1em}

/* --- Ficha do cliente (Portal do Cliente > Clientes) --- */
.cli-overlay{position:fixed;inset:0;background:rgba(8,12,10,.6);backdrop-filter:blur(3px);
  z-index:80;display:flex;align-items:center;justify-content:center;padding:24px}
.cli-dialog{background:var(--panel,#11150f);border:1px solid var(--line,rgba(255,255,255,.08));
  border-radius:18px;width:min(880px,100%);max-height:88vh;display:flex;flex-direction:column;
  box-shadow:0 30px 80px rgba(0,0,0,.5);overflow:hidden}
.cli-head{display:flex;align-items:flex-start;gap:16px;padding:20px 22px;
  border-bottom:1px solid var(--line,rgba(255,255,255,.08))}
.cli-head h2{margin:4px 0 0;font-size:1.15rem}
.cli-head .btn{margin-left:auto}
.cli-body{padding:20px 22px;overflow-y:auto;flex:1}
.cli-foot{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:16px 22px;
  border-top:1px solid var(--line,rgba(255,255,255,.08));background:rgba(255,255,255,.02)}
.cli-secao{margin:0 0 22px}
.cli-secao>h3{font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-soft,#8a978f);margin:0 0 4px}
.cli-secao>p{font-size:.72rem;color:var(--ink-soft,#8a978f);margin:0 0 12px;line-height:1.5}
.cli-alerta{border:1px solid rgba(216,174,82,.35);background:rgba(216,174,82,.08);
  border-radius:12px;padding:11px 13px;font-size:.72rem;line-height:1.55;margin:0 0 14px}
.cli-alerta strong{color:#e8c979}
.cli-contratos{display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 0}
.cli-contratos span{font:600 .68rem var(--mono,monospace);padding:4px 9px;border-radius:99px;
  border:1px solid var(--line,rgba(255,255,255,.12));color:var(--ink-soft,#8a978f)}
@media(max-width:720px){ .cli-overlay{padding:0} .cli-dialog{max-height:100vh;border-radius:0;height:100vh} }

/* =====================================================================
   MARCA — Gran Reserva Amarante
   Embutida como data: URI porque o sistema é um arquivo só: nada de
   depender de imagem externa que pode não carregar no plantão.
   Fundo removido, então a mesma arte serve no claro e no escuro.
   ===================================================================== */
:root{
  --gr-marca:url('../img/brand/gran-reserva-logo-v2.webp');
  --gr-logo:url('../img/brand/gran-reserva-logo-v2.webp');
}
/* selo no menu lateral do administrativo */
.brand-mark{background:var(--gr-marca) center/contain no-repeat !important;
  color:transparent !important;font-size:0 !important;box-shadow:none !important;
  border-radius:0 !important;width:38px !important;height:38px !important}
/* selo no cabeçalho do portal (público e área do cliente) */
.gr-marca>i{background:var(--gr-marca) center/contain no-repeat;
  color:transparent !important;font-size:0 !important;border-radius:0 !important;
  width:38px;height:38px;display:inline-block;flex:0 0 auto}
/* logo completo na tela de entrada */
.auth-logo{width:min(300px,72%);aspect-ratio:420/303;
  background:var(--gr-logo) left center/contain no-repeat;margin-bottom:22px}
.auth-logo-card{width:min(230px,60%);aspect-ratio:420/303;
  background:var(--gr-logo) center/contain no-repeat;margin:0 auto 18px}

/* V25.7 — correção de geometria/orientação */
.gr-official-plan-card{margin-top:30px;background:#fff;border:1px solid #DDE6DF;border-radius:24px;overflow:hidden;box-shadow:0 24px 60px rgba(18,48,34,.10)}
.gr-official-plan-head{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px 22px;border-bottom:1px solid #E7ECE8}
.gr-official-plan-head>div{display:grid;gap:5px}.gr-official-plan-head strong{font-size:1rem;color:#173124}.gr-plan-kicker{font-size:.62rem;font-weight:850;letter-spacing:.14em;color:#9A772A}
.gr-official-plan-stage{position:relative;background:#F3F6F2;padding:14px;display:grid;place-items:center}
.gr-official-plan-stage img{display:block;width:100%;max-height:720px;object-fit:contain;border-radius:15px;background:#fff}
.gr-plan-orientation-note{position:absolute;right:26px;bottom:25px;background:rgba(8,36,26,.88);color:#F6E7B8;border:1px solid rgba(216,174,82,.35);border-radius:999px;padding:8px 12px;font-size:.65rem;font-weight:750;backdrop-filter:blur(8px)}
.gr-plan-data-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #E7ECE8}.gr-plan-data-grid>div{padding:18px 20px;border-right:1px solid #E7ECE8}.gr-plan-data-grid>div:last-child{border-right:0}.gr-plan-data-grid span{display:block;font-size:.62rem;text-transform:uppercase;letter-spacing:.1em;color:#718078;font-weight:800}.gr-plan-data-grid strong{display:block;margin-top:5px;color:#173124;font-size:1.05rem}
.gr-project-accuracy-note{margin-top:14px;padding:16px 18px;border-radius:16px;background:#EEF4EF;border:1px solid #D8E4DB;color:#2B4437}.gr-project-accuracy-note strong{display:block;font-size:.78rem}.gr-project-accuracy-note p{margin:4px 0 0;font-size:.72rem;line-height:1.55;color:#65776D}
.gr-map-north{position:absolute;right:14px;top:58px;z-index:421;width:48px;height:58px;border-radius:18px;background:rgba(7,20,14,.86);border:1px solid rgba(216,174,82,.30);color:#F5E5B3;display:grid;place-items:center;align-content:center;gap:0;box-shadow:0 10px 22px rgba(0,0,0,.18);backdrop-filter:blur(9px);pointer-events:none}.gr-map-north b{font-size:.65rem;letter-spacing:.12em}.gr-map-north span{font-size:1.45rem;line-height:1}
@media(max-width:760px){.gr-official-plan-head{align-items:flex-start;flex-direction:column}.gr-plan-data-grid{grid-template-columns:1fr 1fr}.gr-plan-data-grid>div:nth-child(2){border-right:0}.gr-plan-data-grid>div:nth-child(-n+2){border-bottom:1px solid #E7ECE8}.gr-official-plan-stage{padding:7px}.gr-plan-orientation-note{right:14px;bottom:14px}}


/* V25.7 — orientação técnica x geográfica */
.gr-correct-plan .gr-official-plan-stage{background:#F5F7F4}.gr-correct-plan .gr-official-plan-stage img{max-height:760px;object-fit:contain}.gr-official-plan-head small{display:block;margin-top:3px;color:#738178;font-size:.68rem}.gr-plan-head-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.gr-location-map-badge{letter-spacing:.10em}.gr-map-north{background:rgba(6,25,17,.92)}@media(max-width:760px){.gr-plan-head-actions{justify-content:flex-start}}


/* V25.7 — satélite como padrão no mapa geográfico */
.gr-location-map-tools{position:absolute;left:12px;top:12px;z-index:430;display:flex;gap:6px;padding:4px;border-radius:999px;background:rgba(5,12,8,.82);border:1px solid rgba(255,255,255,.10);backdrop-filter:blur(10px)}
.gr-location-map-tools button{border:0;border-radius:999px;background:transparent;color:#C7D3CD;padding:7px 11px;font:800 .62rem var(--sans);cursor:pointer;letter-spacing:.04em}
.gr-location-map-tools button.on{background:#D8AE52;color:#10150F;box-shadow:0 8px 18px rgba(216,174,82,.24)}
.gr-location-map-shell .leaflet-top.leaflet-left{top:52px}
@media(max-width:560px){.gr-location-map-tools{left:8px;top:8px}.gr-location-map-tools button{padding:6px 9px;font-size:.57rem}.gr-location-map-shell .leaflet-top.leaflet-left{top:48px}}


/* V25.7 — medidas públicas do lote */
.gr-public-dims{margin:14px 0 2px;padding:14px 16px;border:1px solid rgba(20,55,36,.10);border-radius:16px;background:#F6F8F5}
.gr-public-dims-title{font-size:.68rem;font-weight:850;letter-spacing:.10em;text-transform:uppercase;color:#8A702A;margin-bottom:6px}
.gr-public-dims.compact{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0;padding:12px;background:rgba(20,55,36,.045)}
.gr-public-dims.compact>div{display:flex;justify-content:space-between;gap:8px;padding:8px 9px;border-radius:10px;background:rgba(255,255,255,.72)}
.gr-public-dims.compact span{font-size:.66rem;color:var(--tx2,#65766D)}
.gr-public-dims.compact strong{font-size:.72rem;color:var(--tx,#17231E)}
@media(max-width:560px){.gr-public-dims.compact{grid-template-columns:1fr}}


/* V25.7 — portal realmente independente do administrativo */
body.gr-portal-ativo #authOverlay,body.gr-portal-ativo #appRoot{display:none!important}
body.gr-portal-ativo{overflow-x:hidden}
.gr-admin-loading{position:fixed;inset:0;z-index:1200;display:grid;place-items:center;background:#070A09;color:#E8EFEA;font:700 .85rem var(--sans)}


/* V25.7 — confrontações legíveis no mapa público */
.gr-public-dims.compact .gr-dim-item{display:grid!important;grid-template-columns:1fr auto;align-items:center;column-gap:10px;row-gap:2px}
.gr-public-dims.compact .gr-dim-item small{grid-column:1/-1;color:#87968E;font-size:.59rem;line-height:1.25;white-space:normal}
.gr-dim-full strong em{font-style:normal;font-weight:550;color:#697970;font-size:.72rem}


/* V25.7 — Clube Gran Reserva · Pontualidade que Valoriza */
.loyalty-admin-block{margin:26px 0 20px;padding:18px;border:1px solid rgba(216,174,82,.22);border-radius:18px;background:linear-gradient(180deg,rgba(216,174,82,.055),rgba(25,73,50,.025))}
.loyalty-legal-note{border-left:3px solid #D8AE52}
.gr-clube-mini{border-color:rgba(216,174,82,.28)!important;background:linear-gradient(135deg,#FFFDF7,#F3F7F2)!important}
.gr-clube-mini-row{display:flex;align-items:center;justify-content:space-between;gap:14px}.gr-clube-mini-row>div{display:grid}.gr-clube-mini-row strong{font-size:1.2rem;color:#173124}.gr-clube-mini-row span{font-size:.72rem;color:var(--tx2)}
.gr-clube-progress{height:8px;border-radius:999px;background:#E2E9E4;overflow:hidden;margin-top:12px}.gr-clube-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#1C6A48,#D8AE52);box-shadow:0 0 18px rgba(216,174,82,.28)}.gr-clube-progress.big{height:12px;margin-top:18px}
.gr-clube-progress-label{display:flex;justify-content:space-between;font-size:.68rem;color:var(--tx3);margin-top:6px}
.gr-clube-hero{position:relative;overflow:hidden;display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center;background:linear-gradient(135deg,#071C14,#123F2C 68%,#1F5C3E);border:1px solid rgba(216,174,82,.25);border-radius:26px;padding:30px;color:#F8F3E5;box-shadow:0 24px 55px rgba(7,28,20,.18);margin-bottom:16px}
.gr-clube-hero:before{content:'';position:absolute;width:360px;height:360px;border-radius:50%;right:-140px;top:-180px;background:radial-gradient(circle,rgba(216,174,82,.18),transparent 66%)}.gr-clube-copy{position:relative;z-index:1}.gr-clube-kicker{font-size:.64rem;font-weight:900;letter-spacing:.16em;color:#E4C978}.gr-clube-hero h2{font-family:Georgia,'Times New Roman',serif;font-size:clamp(2rem,4vw,3.5rem);font-weight:500;letter-spacing:-.045em;line-height:1;margin:8px 0 12px}.gr-clube-hero h2 span{color:#E5C66C}.gr-clube-hero p{max-width:720px;color:#BBD0C3;line-height:1.7;font-size:.88rem}.gr-clube-hero p strong{color:#FFF4D0}
.gr-clube-badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.gr-clube-badges span{font-size:.64rem;font-weight:800;padding:7px 10px;border-radius:999px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.09);color:#E8F0EB}
.gr-clube-medal{position:relative;z-index:1;width:118px;height:118px;border-radius:50%;display:grid;place-items:center;align-content:center;background:radial-gradient(circle at 35% 30%,#F5D983,#D3A748 58%,#8C651E);color:#142019;border:5px solid rgba(255,255,255,.13);box-shadow:0 14px 34px rgba(0,0,0,.28),0 0 40px rgba(216,174,82,.18)}.gr-clube-medal b{font-size:2.1rem;line-height:1}.gr-clube-medal small{font-size:.65rem;font-weight:850;margin-top:2px}
.gr-clube-grid{grid-template-columns:1fr 1fr}
.gr-clube-regra{margin-top:14px}.gr-clube-rule-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}.gr-clube-rule-grid>div{padding:15px;border-radius:14px;background:#F5F8F5;border:1px solid #E3EAE5}.gr-clube-rule-grid b{width:27px;height:27px;border-radius:50%;display:grid;place-items:center;background:#113E2C;color:#E5C66C;font-size:.7rem;margin-bottom:12px}.gr-clube-rule-grid strong{display:block;font-size:.78rem;color:#173124}.gr-clube-rule-grid small{display:block;font-size:.68rem;line-height:1.5;color:#718178;margin-top:5px}
.gr-clube-note{font-size:.68rem;line-height:1.55;color:var(--tx3);margin:14px 0 0}
.gr-clube-conquistas{display:grid;gap:10px}.gr-clube-conquista{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;background:#fff;border:1px solid #E1E8E3;border-radius:17px;padding:15px 16px}.gr-clube-conquista.ready{border-color:rgba(216,174,82,.42);box-shadow:0 10px 24px rgba(216,174,82,.08)}.gr-clube-icon{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#123E2D;color:#E6C66E;font-size:1.1rem}.gr-clube-conquista.claimed .gr-clube-icon{background:#EAF2ED;color:#24623F}.gr-clube-conquista-copy{display:grid;gap:2px}.gr-clube-conquista-copy span{font-size:.62rem;text-transform:uppercase;letter-spacing:.1em;color:#8A702A;font-weight:850}.gr-clube-conquista-copy strong{font-size:.82rem;color:#173124}.gr-clube-conquista-copy small{font-size:.68rem;color:#728178}
@media(max-width:900px){.gr-clube-rule-grid{grid-template-columns:1fr 1fr}.gr-clube-grid{grid-template-columns:1fr}.gr-clube-hero{grid-template-columns:1fr}.gr-clube-medal{width:96px;height:96px}}
@media(max-width:560px){.gr-clube-rule-grid{grid-template-columns:1fr}.gr-clube-conquista{grid-template-columns:auto 1fr}.gr-clube-conquista-action{grid-column:1/-1}.gr-clube-mini-row{align-items:flex-start;flex-direction:column}}


/* V25.7 — Clube por percentual efetivamente quitado */
.loyalty-milestones-admin{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin:14px 0}
.loyalty-milestones-admin>div{padding:12px 10px;border:1px solid #E1E8E3;border-radius:13px;background:#F8FAF8;display:grid;gap:3px}
.loyalty-milestones-admin b{font-size:1.05rem;color:#173124}.loyalty-milestones-admin span{font-size:.68rem;font-weight:850;color:#8A702A}.loyalty-milestones-admin small{font-size:.61rem;line-height:1.4;color:#75837B}
.gr-clube-milestones{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-top:12px}
.gr-clube-milestone{padding:13px 10px;border-radius:14px;border:1px solid #E2E8E3;background:#F5F8F5;display:grid;gap:3px;opacity:.68}
.gr-clube-milestone.hit{opacity:1;border-color:#B9D4C2;background:#EEF6F0}.gr-clube-milestone.eligible{border-color:#D8AE52;background:#FFF9E9;box-shadow:0 8px 20px rgba(216,174,82,.09)}
.gr-clube-milestone b{font-size:1.12rem;color:#173124}.gr-clube-milestone strong{font-size:.69rem;color:#8A702A}.gr-clube-milestone small{font-size:.61rem;line-height:1.4;color:#728178}
.gr-clube-conquista.waiting{border-color:#EBCB8A;background:#FFFBF2}.gr-clube-conquista.locked{opacity:.72}
@media(max-width:980px){.loyalty-milestones-admin,.gr-clube-milestones{grid-template-columns:repeat(3,1fr)}}
@media(max-width:560px){.loyalty-milestones-admin,.gr-clube-milestones{grid-template-columns:1fr 1fr}}



/* source-style-2: gran2026Styles */

:root{
  --ink:#F4F7F5;--ink-soft:#94A19A;--paper:#0A0D0C;--paper-raised:#111513;--line:#222925;
  --moss:#75B88D;--moss-bg:#173122;--ochre:#D18B55;--ochre-bg:#352317;--mustard:#D8B75E;--mustard-bg:#342E18;
  --serif:'Inter',sans-serif;--sans:'Inter',sans-serif;--mono:'IBM Plex Mono',monospace;
  --panel:#111513;--panel-2:#151A17;--hover:#19201C;--accent:#75B88D;--danger:#E07A6D;
}
html{background:var(--paper);}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);letter-spacing:-.006em;}
body.light-theme{--ink:#172019;--ink-soft:#667269;--paper:#F4F6F4;--paper-raised:#FFFFFF;--line:#DDE3DE;--panel:#FFFFFF;--panel-2:#F8FAF8;--hover:#F0F4F1;--moss-bg:#E6F2E9;--ochre-bg:#F7E9DE;--mustard-bg:#F5EFDA;}
::selection{background:#315842;color:#fff;}
#appRoot{min-height:100%;}
.wrap{max-width:none;margin:0;padding:0 28px 64px 284px;position:relative;min-height:100%;}
header.top{height:74px;display:flex;align-items:center;justify-content:flex-end;border-bottom:1px solid var(--line);padding:0;gap:14px;margin:0 0 30px;position:sticky;top:0;background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(16px);z-index:60;}
header.top .brand{margin-right:auto;gap:0;}header.top .brand img{display:none;} header.top .brand h1{font-family:var(--sans);font-size:1rem;font-weight:650;margin:0;letter-spacing:-.02em;} header.top .brand p{display:none;}header.top .brand .loc{margin-top:2px;font-size:.66rem;text-transform:uppercase;letter-spacing:.11em;color:var(--ink-soft);}
.user-badge{gap:10px}.user-badge .sync{display:none}.user-badge .who{font-family:var(--sans);font-size:.74rem;color:var(--ink-soft);}.role-badge{border-radius:999px;padding:4px 8px;background:var(--moss-bg);}
.top-actions{display:flex;align-items:center;gap:8px}.top-search{height:38px;border:1px solid var(--line);background:var(--panel);color:var(--ink-soft);border-radius:9px;padding:0 9px 0 12px;display:flex;align-items:center;gap:9px;font:500 .76rem var(--sans);cursor:pointer}.top-search:hover{background:var(--hover);color:var(--ink)}.top-search kbd{font:500 .62rem var(--mono);padding:3px 6px;border:1px solid var(--line);border-radius:5px;color:var(--ink-soft);background:var(--paper)}
.icon-btn{width:38px;height:38px;border-radius:9px;border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer;font-size:1rem}.icon-btn:hover{background:var(--hover)}
nav.tabs{position:fixed;left:0;top:0;bottom:0;width:256px;display:flex;flex-direction:column;align-items:stretch;gap:3px;margin:0;padding:18px 14px;border:0;border-right:1px solid var(--line);background:#0D100F;z-index:80;overflow:auto;}
body.light-theme nav.tabs{background:#F8FAF8;}
.sidebar-brand{display:flex;align-items:center;gap:11px;padding:4px 8px 18px;margin-bottom:6px;border-bottom:1px solid var(--line)}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--ink);color:var(--paper);font-weight:800;font-size:.72rem;letter-spacing:.05em}.sidebar-brand strong{display:block;font-size:.82rem}.sidebar-brand span{display:block;margin-top:2px;font-size:.64rem;color:var(--ink-soft)}
.nav-caption{font-size:.58rem;font-weight:700;letter-spacing:.14em;color:#5F6A64;padding:17px 10px 6px}.nav-caption:first-of-type{padding-top:10px}
nav.tabs button{position:relative;text-align:left;border:0;border-radius:8px;padding:9px 10px;font-size:.77rem;font-weight:540;color:#929C96;background:transparent;transition:background .15s,color .15s;}nav.tabs button:hover{background:var(--hover);color:var(--ink)}nav.tabs button.active{background:#1A211D;color:#F5F7F5;border:0;box-shadow:inset 2px 0 0 var(--accent)}body.light-theme nav.tabs button.active{background:#E9F1EB;color:#172019}
nav.tabs button::before{display:inline-block;width:20px;color:#66716B;font-family:var(--mono);font-size:.7rem}nav.tabs button[data-view="painel"]::before{content:'01'}nav.tabs button[data-view="lotes"]::before{content:'02'}nav.tabs button[data-view="novaVenda"]::before{content:'03'}nav.tabs button[data-view="vendas"]::before{content:'04'}nav.tabs button[data-view="distrato"]::before{content:'05'}nav.tabs button[data-view="plano"]::before{content:'06'}nav.tabs button[data-view="receb"]::before{content:'07'}nav.tabs button[data-view="contrato"]::before{content:'08'}nav.tabs button[data-view="auditoria"]::before{content:'09'}nav.tabs button[data-view="params"]::before{content:'10'}nav.tabs button[data-view="usuarios"]::before{content:'11'}
.view{max-width:1450px;margin:0 auto}.view.active{animation:granFade .18s ease-out}@keyframes granFade{from{opacity:.3;transform:translateY(4px)}to{opacity:1;transform:none}}
.page-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin:0 0 20px}.page-heading h2,.lot-view-head h2{font-size:1.45rem;font-weight:650;letter-spacing:-.035em}.page-heading p{margin:6px 0 0;color:var(--ink-soft);font-size:.8rem}.eyebrow{font-size:.6rem;letter-spacing:.14em;font-weight:700;color:var(--accent)}.period-chip{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:7px 10px;font-size:.67rem;color:var(--ink-soft)}
.vgv-hero{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(340px,.8fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:14px}.vgv-main,.vgv-side{background:var(--panel)}.vgv-main{padding:26px 28px}.vgv-main>span,.vgv-side span{font-size:.68rem;color:var(--ink-soft)}.vgv-main>strong{display:block;font-size:2.35rem;letter-spacing:-.06em;margin:7px 0 18px;font-weight:670;font-variant-numeric:tabular-nums}.vgv-progress{height:6px;background:var(--hover);border-radius:999px;overflow:hidden}.vgv-progress i{display:block;height:100%;width:0;background:var(--accent);border-radius:999px;transition:width .35s}.vgv-main small{display:block;margin-top:8px;color:var(--ink-soft);font-size:.66rem}.vgv-side{display:grid;grid-template-columns:1fr;}.vgv-side>div{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:18px}.vgv-side>div:last-child{border-bottom:0}.vgv-side strong{font-size:.9rem;font-weight:620;font-variant-numeric:tabular-nums;text-align:right}
.grid-cards{gap:10px;margin-bottom:18px}.dashboard-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:15px 16px}.card .label{text-transform:none;font-size:.67rem;color:var(--ink-soft);margin-bottom:8px}.card .value{font-family:var(--sans);font-size:1.28rem;font-weight:650;letter-spacing:-.035em;font-variant-numeric:tabular-nums}.card .sub{font-family:var(--sans);font-size:.63rem;color:var(--ink-soft);margin-top:6px}.metric-card:first-child{box-shadow:inset 0 2px 0 var(--accent)}
section.block{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px;margin-bottom:14px}section.block h2{font-family:var(--sans);font-size:.92rem;font-weight:650;letter-spacing:-.02em;margin:0 0 16px}section.block h3{font-family:var(--sans);font-size:.82rem}
table{font-size:.76rem}th{font-size:.62rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);padding:10px 10px;border-bottom:1px solid var(--line)}td{padding:10px;border-bottom:1px solid var(--line)}tr:hover td{background:var(--hover)}.table-shell{overflow:auto;border:1px solid var(--line);border-radius:10px}.table-shell table{min-width:780px}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.badge{border-radius:999px;padding:4px 8px;font-size:.63rem}.badge.disponivel{background:#173122;color:#86C69B}.badge.reservado{background:#332C16;color:#E0C26A}.badge.vendido{background:#342117;color:#E0A06D}.badge.negociacao{background:#17283A;color:#80ADD8}.badge.bloqueado{background:#252928;color:#A4ACA8}.badge.distratado{background:#3A1D1B;color:#E69086}
.filters{gap:8px;margin-bottom:14px}.filters input,.filters select,input[type=text],input[type=number],input[type=date],input[type=password],select{height:40px;border:1px solid var(--line);background:var(--panel-2);color:var(--ink);border-radius:8px;padding:0 11px;font-size:.76rem}.filters input{min-width:240px}input:focus,select:focus{outline:2px solid color-mix(in srgb,var(--accent) 35%,transparent);outline-offset:1px;border-color:var(--accent)}label.field{font-size:.67rem;color:var(--ink-soft);gap:6px}
button.btn{border-radius:8px;border:1px solid var(--accent);background:var(--accent);color:#071009;padding:9px 14px;font-size:.75rem;font-weight:650}button.btn:hover{opacity:1;filter:brightness(1.05)}button.btn.secondary{background:transparent;color:var(--ink);border-color:var(--line)}button.btn.secondary:hover{background:var(--hover)}
.lot-view-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.segmented{display:flex;padding:3px;border:1px solid var(--line);border-radius:9px;background:var(--paper)}.segmented button{height:31px;border:0;border-radius:6px;padding:0 11px;background:transparent;color:var(--ink-soft);font:600 .68rem var(--sans);cursor:pointer}.segmented button.active{background:var(--panel-2);color:var(--ink)}
.lot-grid{display:flex;flex-direction:column;gap:18px}.quadra-group{border-top:1px solid var(--line);padding-top:13px}.quadra-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.quadra-title strong{font-size:.75rem}.quadra-title span{font-size:.62rem;color:var(--ink-soft)}.quadra-lots{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:7px}.lot-tile{min-height:92px;text-align:left;border:1px solid var(--line);background:var(--panel-2);border-radius:9px;padding:10px;cursor:pointer;color:var(--ink);display:flex;flex-direction:column;align-items:flex-start}.lot-tile:hover{border-color:#3D4842;background:var(--hover)}.lot-tile>span{font:650 .72rem var(--mono)}.lot-tile small{font-size:.58rem;color:var(--ink-soft);margin:3px 0 10px}.lot-tile strong{font-size:.7rem;font-weight:620;margin-top:auto}.lot-tile em{font-style:normal;font-size:.55rem;margin-top:5px;color:var(--ink-soft)}.lot-tile.disponivel{box-shadow:inset 0 2px 0 #5EAD7B}.lot-tile.reservado{box-shadow:inset 0 2px 0 #C6A64E}.lot-tile.vendido{box-shadow:inset 0 2px 0 #C37C4A}.lot-tile.negociacao{box-shadow:inset 0 2px 0 #6398C8}.lot-tile.bloqueado{opacity:.62}.lot-tile.distratado{box-shadow:inset 0 2px 0 #D06D62}
#lotDrawerBackdrop{position:fixed;inset:0;background:rgba(0,0,0,.56);z-index:199;display:none}#lotDrawer{position:fixed;right:0;top:0;bottom:0;width:min(420px,92vw);background:var(--panel);border-left:1px solid var(--line);z-index:200;transform:translateX(102%);transition:transform .2s ease;padding:24px;overflow:auto}#lotDrawer.open{transform:none}#lotDrawerBackdrop.open{display:block}.drawer-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.drawer-close{width:34px;height:34px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--ink);cursor:pointer}.drawer-status{margin:6px 0 18px}.drawer-price{font-size:1.85rem;font-weight:680;letter-spacing:-.05em;margin:6px 0 22px}.drawer-data{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-left:1px solid var(--line);margin-bottom:22px}.drawer-data>div{padding:13px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.drawer-data span{display:block;font-size:.6rem;color:var(--ink-soft);margin-bottom:5px}.drawer-data strong{font-size:.78rem}.drawer-actions{display:flex;gap:8px;flex-wrap:wrap}
#searchPalette{position:fixed;inset:0;background:rgba(0,0,0,.58);z-index:300;display:none;padding:12vh 18px 18px}#searchPalette.open{display:block}.palette-box{width:min(650px,100%);margin:0 auto;background:var(--panel);border:1px solid var(--line);border-radius:13px;overflow:hidden;box-shadow:0 28px 70px rgba(0,0,0,.35)}.palette-box input{width:100%;height:56px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;padding:0 18px;font-size:.9rem}.palette-results{max-height:380px;overflow:auto;padding:7px}.palette-item{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;border:0;background:transparent;color:var(--ink);padding:10px;border-radius:8px;cursor:pointer}.palette-item:hover{background:var(--hover)}.palette-item span{font-size:.75rem}.palette-item small{font-size:.62rem;color:var(--ink-soft)}
#storageWarning{border-radius:9px;background:var(--ochre-bg);border:1px solid color-mix(in srgb,var(--ochre) 45%,var(--line));color:#E6B188;padding:10px 13px;font-size:.7rem}
footer.foot{max-width:1450px;margin:34px auto 0;border-top:1px solid var(--line);font-size:.6rem}
/* Login */
#authOverlay{position:fixed;inset:0;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(420px,.75fr);align-items:stretch;padding:0;background:#090C0B;z-index:1000}.auth-showcase{display:flex;flex-direction:column;justify-content:space-between;padding:48px 56px;border-right:1px solid #1C221F;background:radial-gradient(circle at 20% 15%,rgba(117,184,141,.13),transparent 32%),#0B0E0D;overflow:hidden}.auth-kicker{font-size:.62rem;letter-spacing:.16em;color:#718078}.auth-showcase-copy{max-width:680px}.auth-showcase-copy h1{font:600 clamp(2.2rem,4.2vw,4.8rem)/.98 var(--sans);letter-spacing:-.065em;color:#F3F6F4;margin:18px 0}.auth-showcase-copy h1 em{font-style:normal;color:#86BC98}.auth-showcase-copy p{max-width:520px;color:#87938C;font-size:.92rem;line-height:1.6}.auth-pill{display:inline-block;border:1px solid #28332D;border-radius:999px;padding:6px 9px;color:#9AA89F;font-size:.64rem}.auth-visual{max-width:620px}.mini-stat{display:flex;align-items:end;justify-content:space-between;padding-bottom:12px;border-bottom:1px solid #202722;color:#7F8C84;font-size:.68rem}.mini-stat strong{font-size:1.1rem;color:#E8EDE9}.mini-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin:12px 0}.mini-grid i{height:34px;border-radius:4px;background:#15201A;border:1px solid #26342B;box-shadow:inset 0 2px 0 #5C9B72}.auth-footnote{font-size:.62rem;color:#657169}
#authOverlay>div[style*="max-width:380px"]{grid-column:2;position:absolute;top:24px;right:24px;left:auto;width:calc(min(420px,100%) - 48px)!important;z-index:2}.auth-card{grid-column:2;align-self:center;justify-self:center;width:min(390px,calc(100% - 52px));max-width:none;background:transparent;border:0;padding:0;box-shadow:none}.auth-card img{height:52px;margin:0 0 28px}.auth-card h2{font-family:var(--sans);font-size:1.65rem;letter-spacing:-.045em;margin-bottom:7px}.auth-sub{font-size:.75rem;color:#77837C;margin-bottom:24px}.auth-card label.field{margin-bottom:14px}.auth-card input{width:100%;height:44px;background:#101513;border-color:#242B27;color:#F3F6F4}.auth-card button.btn{width:100%;height:44px;margin-top:6px}.auth-error-block{border-radius:8px;font-size:.68rem}
@media(max-width:980px){.wrap{padding-left:84px;padding-right:18px}nav.tabs{width:68px;padding:14px 8px}nav.tabs .sidebar-brand{padding:4px 8px 16px}.sidebar-brand>div:last-child,.nav-caption{display:none}.brand-mark{width:34px}.tabs button{font-size:0!important;text-align:center!important;padding:10px 6px!important}.tabs button::before{font-size:.68rem!important;width:auto!important}.dashboard-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.vgv-hero{grid-template-columns:1fr}.vgv-side{grid-template-columns:repeat(3,1fr)}.vgv-side>div{display:block;border-right:1px solid var(--line);border-bottom:0}.vgv-side strong{display:block;text-align:left;margin-top:5px}.auth-showcase{padding:36px}.auth-showcase-copy h1{font-size:3rem}}
@media(max-width:720px){#authOverlay{display:flex;align-items:center;justify-content:center;padding:22px}.auth-showcase{display:none}#authOverlay>div[style*="max-width:380px"]{top:14px;right:14px;width:calc(100% - 28px)!important}.auth-card{width:100%;max-width:390px}.wrap{padding:0 12px 86px}.top-actions .top-search span,.top-actions kbd,.user-badge .who{display:none}header.top{height:62px;margin-bottom:20px}.dashboard-metrics{grid-template-columns:1fr}.vgv-main{padding:20px}.vgv-main>strong{font-size:1.8rem}.vgv-side{grid-template-columns:1fr}.vgv-side>div{display:flex;border-right:0;border-bottom:1px solid var(--line)}nav.tabs{left:8px;right:8px;top:auto;bottom:8px;width:auto;height:62px;flex-direction:row;overflow-x:auto;border:1px solid var(--line);border-radius:13px;padding:7px;background:color-mix(in srgb,var(--paper) 94%,transparent);backdrop-filter:blur(16px)}nav.tabs .sidebar-brand,.nav-caption{display:none}nav.tabs button{min-width:44px;flex:0 0 44px;padding:8px 4px!important;border-radius:8px}nav.tabs button.active{box-shadow:inset 0 -2px 0 var(--accent)}.lot-view-head{align-items:flex-end}.quadra-lots{grid-template-columns:repeat(2,minmax(0,1fr))}.filters input{min-width:100%;width:100%}.filters select{flex:1}.page-heading{display:block}.period-chip{display:inline-block;margin-top:10px}section.block{padding:14px}.chart-main{min-width:0}.chart-side{width:100%}.contrato-doc{padding-left:18px!important;padding-right:18px!important}}
@media print{nav.tabs,.top-actions,#lotDrawer,#lotDrawerBackdrop,#searchPalette,.auth-showcase{display:none!important}.wrap{padding:0!important}header.top{display:none!important}.view{max-width:none}}


/* source-style-3: gran2026V2Styles */

:root{
  --accent:#4BE0A1;
  --accent-2:#7FD6FF;
  --paper:#070A09;
  --panel:#0F1412;
  --panel-2:#131A17;
  --hover:#18211D;
  --line:#202924;
  --ink:#F3F7F4;
  --ink-soft:#8A9791;
}
body{background:
 radial-gradient(circle at 15% -10%, rgba(75,224,161,.08), transparent 24%),
 radial-gradient(circle at 85% 0%, rgba(127,214,255,.08), transparent 20%),
 var(--paper);
}
.wrap{padding-right:32px;padding-left:292px}
header.top{height:76px;padding:0 0 0 6px;background:color-mix(in srgb,var(--paper) 82%,transparent);border-bottom:1px solid rgba(255,255,255,.06)}
nav.tabs{width:268px;background:linear-gradient(180deg,#0B100E 0%,#0D1210 100%);box-shadow:inset -1px 0 0 rgba(255,255,255,.04)}
body.light-theme nav.tabs{background:linear-gradient(180deg,#FBFCFB 0%,#F2F5F3 100%)}
.sidebar-brand{padding:8px 10px 20px}.brand-mark{width:38px;height:38px;border-radius:12px;background:linear-gradient(145deg,var(--accent),#8CF0C1);color:#062418;box-shadow:0 10px 28px rgba(75,224,161,.22)}
.sidebar-brand strong{font-size:.9rem;letter-spacing:-.02em}.sidebar-brand span{font-size:.66rem}
.nav-caption{padding:18px 10px 8px;color:#66716B}
nav.tabs button{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;color:#96A29B;font-size:.78rem;font-weight:560}
nav.tabs button::before{content:"";width:8px;height:8px;border-radius:50%;background:#29342E;display:inline-block;box-shadow:0 0 0 3px transparent;transition:all .15s ease}
nav.tabs button.active{background:linear-gradient(180deg,#15201B 0%,#161F1C 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.04);color:#F6FBF8}
nav.tabs button.active::before{background:var(--accent);box-shadow:0 0 0 3px rgba(75,224,161,.15)}
.top-search,.icon-btn,.btn.secondary,.segmented,.period-chip,input[type=text],input[type=number],input[type=date],select{box-shadow:none}
.top-search{height:40px;border-radius:11px;background:rgba(255,255,255,.03);border-color:rgba(255,255,255,.06)}
.icon-btn{height:40px;width:40px;border-radius:11px;background:rgba(255,255,255,.03);border-color:rgba(255,255,255,.06)}
.grid-cards{gap:14px}
.card,section.block,.table-shell,.palette-box,#lotDrawer,.auth-card{background:linear-gradient(180deg, rgba(255,255,255,.015), rgba(255,255,255,.005)), var(--panel);border:1px solid rgba(255,255,255,.06);box-shadow:0 18px 40px rgba(0,0,0,.20)}
body.light-theme .card,body.light-theme section.block,body.light-theme .table-shell,body.light-theme .palette-box,body.light-theme #lotDrawer,body.light-theme .auth-card{box-shadow:0 10px 28px rgba(22,37,28,.06)}
.card{border-radius:16px;padding:18px 18px 16px;position:relative;overflow:hidden}
.card::after{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,var(--accent),transparent 70%);opacity:.9}
.card .label{font-size:.66rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.card .value{font-family:var(--sans);font-size:1.9rem;font-weight:700;letter-spacing:-.05em}
.card .sub{font-size:.68rem;color:var(--ink-soft)}
.page-heading h2,.lot-view-head h2,section.block h2{font-family:var(--sans);letter-spacing:-.045em}
.page-heading{margin-bottom:22px}.period-chip{padding:8px 12px;border-radius:999px;background:rgba(255,255,255,.03);border-color:rgba(255,255,255,.06)}
.vgv-hero{gap:0;border-radius:20px;overflow:hidden;border:1px solid rgba(255,255,255,.06);background:linear-gradient(90deg, rgba(75,224,161,.14), rgba(127,214,255,.04) 52%, transparent 100%)}
.vgv-main,.vgv-side{background:transparent}.vgv-main{padding:30px 30px 28px}.vgv-main>span{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;font-weight:700;color:#9AB4A6}.vgv-main>strong{font-size:2.65rem}
.vgv-progress{height:8px;background:rgba(255,255,255,.06)}.vgv-progress i{background:linear-gradient(90deg,var(--accent),var(--accent-2))}
.vgv-side{padding:12px}.vgv-side>div{border:1px solid rgba(255,255,255,.06);border-radius:14px;margin:7px 0;background:rgba(255,255,255,.025)}
.quick-actions-panel{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(0,1.2fr);gap:16px;margin:0 0 18px;padding:20px 22px;border-radius:18px;background:linear-gradient(180deg, rgba(255,255,255,.018), rgba(255,255,255,.005)), var(--panel-2);border:1px solid rgba(255,255,255,.06)}
.quick-actions-copy h3{margin:8px 0 6px;font-size:1.05rem;letter-spacing:-.03em}.quick-actions-copy p{margin:0;color:var(--ink-soft);font-size:.76rem;line-height:1.5}
.quick-actions-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.quick-action{border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.025);color:var(--ink);border-radius:14px;padding:16px;text-align:left;cursor:pointer;transition:transform .12s ease,background .15s ease,border-color .15s ease}
.quick-action:hover{transform:translateY(-1px);background:rgba(255,255,255,.04);border-color:rgba(75,224,161,.25)}
.quick-action strong{display:block;font-size:.84rem;margin-bottom:6px}.quick-action span{display:block;font-size:.7rem;color:var(--ink-soft);line-height:1.45}
.filters-premium{padding:12px;border-radius:14px;background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.05)}
.legend-chips{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border-radius:999px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);font-size:.63rem;color:var(--ink-soft)}.chip::before{content:"";width:8px;height:8px;border-radius:50%;display:inline-block}.chip-disp::before{background:#5FB976}.chip-neg::before{background:#5AA6F7}.chip-res::before{background:#D6AF56}.chip-ven::before{background:#C97D50}
.lots-shell{border-radius:20px}.quadra-group{border-top:0;padding-top:0}.quadra-title{margin-bottom:12px}.quadra-title strong{font-size:.86rem;letter-spacing:-.02em}.quadra-title span{font-size:.64rem;text-transform:uppercase;letter-spacing:.08em}.quadra-lots{gap:10px}
.lot-tile{min-height:98px;border-radius:14px;padding:12px;background:linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,.01)), var(--panel-2);border-color:rgba(255,255,255,.05)}
.lot-tile:hover{border-color:rgba(75,224,161,.25);transform:translateY(-1px)}
.lot-tile>span{font-size:.75rem}.lot-tile strong{font-size:.78rem}.lot-tile em{font-size:.58rem;text-transform:uppercase;letter-spacing:.06em}
.table-shell{border-radius:18px;overflow:hidden}.table-shell table{font-size:.82rem}.table-shell thead th{position:sticky;top:0;background:rgba(255,255,255,.02);backdrop-filter:blur(6px);z-index:2;text-transform:uppercase;letter-spacing:.06em;font-size:.64rem}
tr:hover td{background:rgba(255,255,255,.025)}
.badge{border-radius:999px;padding:5px 10px;font-size:.66rem;letter-spacing:.02em}
button.btn{border-radius:11px;border-color:transparent;background:linear-gradient(135deg,#1E9F6C,#4BE0A1);color:#062418;font-weight:700}button.btn.secondary{border:1px solid rgba(255,255,255,.08);background:transparent;color:var(--ink)}button.btn.small{border-radius:9px}
#lotDrawer{padding:26px 24px;background:linear-gradient(180deg, rgba(255,255,255,.02), rgba(255,255,255,.005)), var(--panel)}.drawer-price{font-size:2.1rem}.drawer-data{border-radius:14px;overflow:hidden;border-top:1px solid rgba(255,255,255,.06);border-left:1px solid rgba(255,255,255,.06)}.drawer-data>div{border-color:rgba(255,255,255,.06)}
.palette-box{border-radius:18px}.palette-box input{height:60px;font-size:.92rem}.palette-item{padding:12px;border-radius:10px}
#authOverlay{background:radial-gradient(circle at 18% 16%, rgba(75,224,161,.14), transparent 28%), #070A09}.auth-showcase{background:radial-gradient(circle at 30% 12%, rgba(127,214,255,.08), transparent 32%), radial-gradient(circle at 20% 16%, rgba(75,224,161,.12), transparent 28%), #090D0B;border-right:1px solid rgba(255,255,255,.06)}.auth-showcase-copy h1{font-size:clamp(2.5rem,4vw,5rem)}.auth-pill{background:rgba(255,255,255,.03)}.auth-card input{border-radius:11px}.auth-card button.btn{height:46px}
@media(max-width:1080px){.quick-actions-panel{grid-template-columns:1fr}.quick-actions-grid{grid-template-columns:1fr 1fr}}
@media(max-width:980px){.wrap{padding-left:88px}.quick-actions-grid{grid-template-columns:1fr}.legend-chips{display:none}}
@media(max-width:720px){.wrap{padding:0 12px 86px}.quick-actions-panel{padding:16px}.filters-premium{padding:10px}.lot-view-head{display:block}.lot-view-head>div:last-child{margin-top:12px}.segmented{width:100%}.segmented button{flex:1}.top-search{min-width:40px;padding:0 10px}}

.sale-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:320px}.contract-action{background:linear-gradient(135deg,#1E9F6C,#4BE0A1)!important;color:#052819!important;border-color:transparent!important;white-space:nowrap}.contract-action::before{content:'▤';margin-right:6px;font-size:.72rem}
.cad-map-panel{border-radius:20px}.cad-map-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}.cad-map-upload{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.cad-map-upload>span{font-size:.67rem;color:var(--ink-soft)}.cad-map-controls{display:flex;align-items:center;gap:6px}.cad-map-controls #cadZoomLabel{min-width:50px;text-align:center;font:600 .67rem var(--mono);color:var(--ink-soft)}.cad-map-status{padding:10px 12px;margin-bottom:12px;border:1px solid rgba(255,255,255,.06);border-radius:11px;background:rgba(255,255,255,.02);font-size:.7rem;color:var(--ink-soft)}.cad-map-viewport{height:620px;max-height:72vh;min-height:360px;position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.07);border-radius:16px;background-color:#0A0D0C;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:24px 24px;cursor:grab;touch-action:none;outline:none}.cad-map-viewport:focus{border-color:rgba(75,224,161,.35)}.cad-map-viewport.dragging{cursor:grabbing}.cad-map-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px;color:var(--ink-soft);pointer-events:none}.cad-map-empty strong{font-size:1rem;color:var(--ink);margin-bottom:7px}.cad-map-empty span{font-size:.72rem;max-width:420px;line-height:1.55}.cad-map-viewport img{position:absolute;left:50%;top:50%;max-width:none;max-height:none;transform-origin:center center;user-select:none;pointer-events:none;display:none;will-change:transform}.cad-map-help{margin-top:12px;font-size:.68rem;color:var(--ink-soft);line-height:1.55}.cad-map-help strong{color:var(--ink)}
@media(max-width:720px){.sale-actions{min-width:240px}.cad-map-viewport{height:430px;min-height:300px}.cad-map-controls{width:100%;justify-content:flex-start}.cad-map-upload>span{width:100%}}
@media print{
  .quick-actions-panel,.cad-map-panel{display:none!important}
  .print-watermark{display:block!important;position:fixed!important;inset:0!important;z-index:0!important;pointer-events:none!important;background-repeat:no-repeat!important;background-position:center center!important;background-size:440px auto!important;opacity:.065!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
  .print-watermark::after{content:attr(data-empreendimento);position:absolute;left:50%;top:66%;transform:translate(-50%,-50%) rotate(-32deg);font:700 30px/1 var(--sans);letter-spacing:.16em;color:#193628;opacity:.18;white-space:nowrap}
  .contrato-doc{position:relative!important;z-index:2!important;background:transparent!important}
}


/* source-style-4: granV22LotEditor */

.inventory-editor{display:grid;grid-template-columns:minmax(240px,.8fr) minmax(0,1.2fr);gap:18px;align-items:start}.inventory-editor-side{padding:18px;border:1px solid rgba(255,255,255,.06);border-radius:16px;background:rgba(255,255,255,.02)}.inventory-editor-side h3{font-family:var(--sans);font-size:1rem;letter-spacing:-.03em;margin:0 0 6px}.inventory-editor-side p{font-size:.72rem;color:var(--ink-soft);line-height:1.55;margin:0}.lot-edit-preview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0 16px}.lot-edit-preview>div{padding:12px;border:1px solid rgba(255,255,255,.06);border-radius:12px;background:rgba(255,255,255,.02)}.lot-edit-preview span{display:block;font-size:.58rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin-bottom:5px}.lot-edit-preview strong{font-size:.82rem;font-variant-numeric:tabular-nums}.param-info{margin:12px 0 0;padding:11px 12px;border-radius:11px;background:rgba(75,224,161,.06);border:1px solid rgba(75,224,161,.16);font-size:.69rem;color:var(--ink-soft);line-height:1.5}.param-info strong{color:var(--ink)}.drawer-edit-box{margin:20px 0;padding:15px;border:1px solid rgba(255,255,255,.07);border-radius:14px;background:rgba(255,255,255,.02)}.drawer-edit-box h3{font-size:.78rem;margin:0 0 12px}.drawer-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.drawer-edit-grid label{font-size:.62rem;color:var(--ink-soft)}.drawer-edit-grid input,.drawer-edit-grid select{width:100%;margin-top:5px}.drawer-edit-total{display:flex;justify-content:space-between;align-items:center;margin:12px 0 0;padding-top:12px;border-top:1px solid var(--line);font-size:.7rem}.drawer-edit-total strong{font-size:.9rem}@media(max-width:800px){.inventory-editor{grid-template-columns:1fr}.lot-edit-preview{grid-template-columns:1fr}.drawer-edit-grid{grid-template-columns:1fr}}


/* source-style-5: granDxfOfficialStyles */

.dxf-map-panel{border-radius:20px;overflow:hidden}.dxf-map-topbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:12px}.dxf-map-summary{display:flex;gap:14px;flex-wrap:wrap;color:var(--ink-soft);font-size:.69rem}.dxf-map-summary span{display:inline-flex;align-items:center;gap:6px}.dxf-map-summary b{color:var(--ink)}.map-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-disp{background:#4BD68E}.dot-neg{background:#5AA6F7}.dot-res{background:#D8AE52}.dot-ven{background:#E36D58}.dxf-map-controls{display:flex;align-items:center;gap:7px}.dxf-map-status{padding:10px 12px;margin-bottom:12px;border:1px solid rgba(75,224,161,.14);background:rgba(75,224,161,.045);border-radius:12px;color:var(--ink-soft);font-size:.69rem;line-height:1.45}.dxf-map-status strong{color:var(--ink)}#dxfZoomLabel{min-width:48px;text-align:center;font:600 .66rem var(--mono);color:var(--ink-soft)}.dxf-map-viewport{height:min(72vh,760px);min-height:520px;border:1px solid rgba(255,255,255,.07);border-radius:16px;overflow:hidden;background:#0A0E0C;cursor:grab;touch-action:none;user-select:none}.dxf-map-viewport.dragging{cursor:grabbing}#dxfMapSvg{width:100%;height:100%;display:block}.dxf-context-line{fill:none;stroke:#38463F;stroke-width:.55;vector-effect:non-scaling-stroke;opacity:.78}.dxf-context-green{fill:rgba(75,224,161,.06);stroke:#2F5B44;stroke-width:.6;vector-effect:non-scaling-stroke}.dxf-context-cooper{fill:none;stroke:#A17C45;stroke-width:1.1;stroke-dasharray:3 2;vector-effect:non-scaling-stroke;opacity:.75}.dxf-lot-shape{stroke:#839189;stroke-width:.62;vector-effect:non-scaling-stroke;fill:#173725;fill-opacity:.9;cursor:pointer}.dxf-lot-group:hover .dxf-lot-shape,.dxf-lot-group.selected .dxf-lot-shape{stroke:#fff;stroke-width:1.5}.dxf-lot-group.status-disponivel .dxf-lot-shape{fill:#1E6A43}.dxf-lot-group.status-negociacao .dxf-lot-shape{fill:#245D8E}.dxf-lot-group.status-reservado .dxf-lot-shape{fill:#806625}.dxf-lot-group.status-vendido .dxf-lot-shape{fill:#8E392E}.dxf-lot-group.status-bloqueado .dxf-lot-shape{fill:#3D4440;opacity:.62}.dxf-lot-group.status-distratado .dxf-lot-shape{fill:#67408B}.dxf-lot-label{font:600 2.05px var(--sans);fill:#E7F0EA;text-anchor:middle;dominant-baseline:middle;pointer-events:none;paint-order:stroke;stroke:#0B100D;stroke-width:.7px}.dxf-unidentified path{fill:#333B37;stroke:#919C96;stroke-width:.7;stroke-dasharray:2 1;vector-effect:non-scaling-stroke;opacity:.7}.dxf-unidentified text{font:700 1.65px var(--sans);fill:#C8D0CC;text-anchor:middle;dominant-baseline:middle;pointer-events:none}.dxf-road-label{font:600 2.05px var(--sans);fill:#77877E;text-anchor:middle;pointer-events:none}.dxf-quadra-label{font:800 5px var(--sans);fill:#AAB8AF;text-anchor:middle;pointer-events:none}.dxf-map-viewport.labels-off .dxf-lot-label{display:none}.dxf-map-help{margin-top:10px;color:var(--ink-soft);font-size:.66rem;line-height:1.5}.cad-official-description{margin:14px 0;border:1px solid var(--line);border-radius:12px;overflow:hidden}.cad-official-description h3{font-size:.72rem;margin:0;padding:10px 12px;background:var(--hover)}.cad-official-row{display:flex;justify-content:space-between;gap:14px;padding:8px 12px;border-top:1px solid var(--line);font-size:.67rem}.cad-official-row span{color:var(--ink-soft)}.cad-official-row strong{text-align:right;font-weight:600}@media(max-width:720px){.dxf-map-viewport{height:520px;min-height:420px}.dxf-map-summary{gap:8px}}


/* source-style-6: granV25.7Styles */

.dxf-road-surface{fill:#18211D;fill-opacity:.90;stroke:#2B3731;stroke-width:.35;vector-effect:non-scaling-stroke;pointer-events:none}
body.light-theme .dxf-road-surface{fill:#E7ECE9;stroke:#CCD6D0}
.dxf-expansion-area{fill:rgba(127,214,255,.12);stroke:#7FD6FF;stroke-width:1.05;stroke-dasharray:3 1.7;vector-effect:non-scaling-stroke;pointer-events:none}
.dxf-expansion-label text{font:800 2.15px var(--sans);fill:#9DDBFF;text-anchor:middle;paint-order:stroke;stroke:#08110D;stroke-width:.7px;pointer-events:none}.dxf-expansion-label text.sub{font-size:1.55px;font-weight:600;fill:#9BB6A8}
.dxf-road-label-v25{font-size:2.05px;fill:#D2DBD6;paint-order:stroke;stroke:#0A0E0C;stroke-width:.62px;letter-spacing:.04em}
.dxf-road-label-avenida{fill:#F2E3A2;font-weight:800;font-size:2.28px}
.dxf-road-label-projetada{fill:#C7D2CC;font-weight:650}
.dxf-expansion-zone .zone-shape{fill:rgba(58,131,211,.24);stroke:#5FAFEF;stroke-width:.8;vector-effect:non-scaling-stroke}
.dxf-expansion-zone.house-zone .zone-shape{fill:rgba(78,163,241,.14);stroke:#84CCFF;stroke-dasharray:2 1}
.dxf-zone-label{font:800 2.05px var(--sans);fill:#EAF3FF;text-anchor:middle;pointer-events:none;paint-order:stroke;stroke:#071019;stroke-width:.78px}
.dxf-zone-sub{font:700 1.62px var(--sans);fill:#BDD9F7;text-anchor:middle;pointer-events:none;paint-order:stroke;stroke:#071019;stroke-width:.68px}
.payment-retified td{opacity:.60}.payment-retified td:first-child{opacity:1}.payment-status{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:999px;font-size:.62rem;font-weight:700}.payment-status.active{background:rgba(75,224,161,.10);color:#70E7B0}.payment-status.retified{background:rgba(224,122,109,.12);color:#E99A90}.payment-status.correction{background:rgba(127,214,255,.10);color:#8EDCFF}
.audit-note{font-size:.64rem;color:var(--ink-soft);line-height:1.4}.audit-note strong{color:var(--ink)}
.sensitive-lock{padding:12px 14px;border:1px solid rgba(216,183,94,.22);background:rgba(216,183,94,.06);border-radius:12px;color:var(--ink-soft);font-size:.72rem;margin:0 0 14px}.sensitive-lock strong{color:var(--ink)}
.master-only-hidden{display:none!important}.buyer-map-box{margin:14px 0;padding:14px;border:1px solid rgba(75,224,161,.18);background:rgba(75,224,161,.055);border-radius:13px}.buyer-map-box span{display:block;font-size:.62rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em}.buyer-map-box strong{display:block;margin-top:5px;font-size:.9rem}.buyer-map-box small{display:block;margin-top:5px;color:var(--ink-soft);font-size:.66rem}
.audit-table-wrap{overflow:auto;max-height:430px;border:1px solid var(--line);border-radius:14px}.audit-table-wrap table{min-width:850px}.audit-table-wrap th{position:sticky;top:0;background:var(--panel);z-index:2}.audit-detail{max-width:360px;white-space:normal;line-height:1.4}
@media print{
  @page{size:A4 portrait;margin:27mm 16mm 20mm 16mm}
  html,body{background:#fff!important;color:#111!important}
  .contrato-doc{padding:0!important;margin:0!important;max-width:none!important;background:transparent!important;border:0!important;color:#111!important;font-size:10.5pt!important;line-height:1.52!important;box-shadow:none!important}
  .contrato-doc p{orphans:3;widows:3}
  .contrato-doc h4.clausula,.contrato-doc .quadro,.contrato-doc .sign .line,.contrato-banner,.contrato-subbanner,.anexo-title,.contract-auth-box{break-inside:avoid;page-break-inside:avoid}
  .contrato-doc h4.clausula{break-after:avoid;page-break-after:avoid}
  .contrato-doc .quadro .row{break-inside:avoid;page-break-inside:avoid}
  .print-watermark{display:block!important;position:fixed!important;inset:0!important;z-index:0!important;opacity:.065!important;background-position:center center!important;background-repeat:no-repeat!important;background-size:420px auto!important;pointer-events:none!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
  .print-letterhead{display:flex!important;position:fixed!important;top:-22mm!important;left:0!important;right:0!important;height:18mm!important;padding:2mm 0 2mm!important;background:#fff!important;z-index:20!important;border-bottom:1px solid #222!important}
  .print-rubrica-footer{display:flex!important;position:fixed!important;bottom:-15mm!important;left:0!important;right:0!important;height:11mm!important;padding-top:2mm!important;background:#fff!important;z-index:20!important}
  #contratoDoc,#distratoDoc{position:relative!important;z-index:2!important}
}


/* source-style-7: granV28Styles */

/* Entrada / login V2.8 */
#authOverlay{grid-template-columns:minmax(0,1.12fr) minmax(420px,.88fr);background:#050807!important}
.auth-showcase{position:relative;padding:56px 64px;background:radial-gradient(circle at 22% 18%,rgba(75,224,161,.14),transparent 28%),radial-gradient(circle at 78% 72%,rgba(83,139,255,.08),transparent 24%),#07100c!important;overflow:hidden}
.auth-showcase::after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:38px 38px;mask-image:linear-gradient(to bottom,transparent 0,#000 25%,#000 80%,transparent 100%);pointer-events:none}
.auth-showcase>*{position:relative;z-index:1}.auth-kicker{font-weight:800;color:#8ea097;letter-spacing:.2em}.auth-showcase-copy{max-width:720px}.auth-showcase-copy h1{font-size:clamp(2.7rem,4.5vw,5.4rem)!important;line-height:.94!important;letter-spacing:-.07em!important}.auth-showcase-copy h1 em{background:linear-gradient(90deg,#75e6aa,#8ccfff);-webkit-background-clip:text;background-clip:text;color:transparent!important}.auth-showcase-copy p{font-size:1rem!important;max-width:570px!important}.auth-pill{border-color:rgba(117,230,170,.25)!important;background:rgba(75,224,161,.06)!important;color:#9fd6b8!important;padding:7px 11px!important}
.auth-card{position:relative!important;width:min(430px,calc(100% - 54px))!important;background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.012)),#0b100e!important;border:1px solid rgba(255,255,255,.08)!important;border-radius:26px!important;padding:40px 38px!important;box-shadow:0 32px 90px rgba(0,0,0,.46)!important}.auth-card::before{content:"GR";display:grid;place-items:center;width:46px;height:46px;margin-bottom:26px;border-radius:14px;background:linear-gradient(145deg,#4be0a1,#9bf0c8);color:#062418;font:800 .82rem var(--sans);letter-spacing:.08em;box-shadow:0 12px 32px rgba(75,224,161,.18)}.auth-card img{display:none!important}.auth-card h2{text-align:left!important;font-size:1.85rem!important;letter-spacing:-.055em!important;margin:0 0 8px!important}.auth-card .auth-sub{text-align:left!important;margin-bottom:28px!important;line-height:1.55!important}.auth-card label.field{font-weight:650;color:#a8b5ae!important}.auth-card input{height:48px!important;border-radius:12px!important;background:#090d0b!important;border:1px solid #28312c!important;padding:0 14px!important}.auth-card input:focus{border-color:#4be0a1!important;box-shadow:0 0 0 3px rgba(75,224,161,.09)!important}.auth-card button.btn{height:48px!important;border-radius:12px!important;margin-top:8px!important}
/* Auditoria */
.audit-detail{min-width:340px;max-width:620px}.audit-report{white-space:normal;line-height:1.55;color:var(--ink-soft);font-size:.69rem}.audit-report .audit-lead{color:var(--ink);font-weight:700;margin-bottom:6px}.audit-report .audit-change-line{display:block;padding:3px 0;border-top:1px dotted rgba(255,255,255,.06)}.audit-report .audit-change-line b{color:#a9d9bd;font-weight:650}.audit-table-wrap{overflow:auto;max-height:680px}.audit-table-wrap thead th{position:sticky;top:0;background:var(--panel);z-index:4}
/* Reservation */
.reservation-modal{position:fixed;inset:0;z-index:500;display:none;align-items:center;justify-content:center;padding:22px;background:rgba(0,0,0,.68);backdrop-filter:blur(8px)}.reservation-modal.open{display:flex}.reservation-dialog{width:min(480px,100%);background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:24px;box-shadow:0 30px 80px rgba(0,0,0,.4)}.reservation-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px}.reservation-head h2{margin:5px 0 0;font-size:1.3rem}.reservation-lot-info{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--panel-2);margin-bottom:16px;font-size:.75rem}.reservation-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}.reservation-info-box{border:1px solid rgba(216,174,82,.24);background:rgba(216,174,82,.07);border-radius:12px;padding:12px 14px;margin:0 0 15px}.reservation-info-box span{display:block;color:var(--ink-soft);font-size:.62rem;text-transform:uppercase;letter-spacing:.08em}.reservation-info-box strong{display:block;margin:5px 0 3px;font-size:.9rem}.reservation-info-box small{color:var(--ink-soft);font-size:.66rem}.reservation-info-box .reservation-obs{margin-top:5px;font-size:.66rem;color:var(--ink-soft)}
/* Payment */
.cash-payment-card{grid-column:1/-1;border:1px solid rgba(75,224,161,.2)!important;background:linear-gradient(135deg,rgba(75,224,161,.08),rgba(127,214,255,.04)),var(--panel)!important}.cash-payment-card .value{font-size:2rem!important}.pay-now-btn{white-space:nowrap}.badge.payment-ready{background:#163427;color:#82dca7}.dxf-commercial-sector-label{font:800 3.2px var(--sans);fill:#efc86e;text-anchor:middle;pointer-events:none;paint-order:stroke;stroke:#0a0e0c;stroke-width:.8px;letter-spacing:.12em}
body.light-theme .audit-report .audit-change-line{border-color:rgba(0,0,0,.08)}
@media(max-width:720px){.auth-card{width:100%!important;padding:30px 24px!important}.audit-detail{min-width:280px}.reservation-dialog{padding:20px}}


/* source-style-8: mapV29Priority */

/* V2.9 — mapa corrigido com geometrias oficiais do DXF */
.dxf-map-viewport{background:#08100D;border-color:#24352D}
.dxf-road-surface{fill:#202A26!important;fill-opacity:1!important;stroke:#52645B!important;stroke-width:.46!important}
.dxf-context-line{display:none!important}
.dxf-context-green{fill:rgba(31,105,67,.11)!important;stroke:#2D6D4C!important;stroke-width:.6!important;opacity:.9!important}
.dxf-context-cooper{stroke:#D3A84C!important;stroke-width:1.1!important;stroke-dasharray:4 2!important;opacity:.9!important}
.dxf-road-label-v29{font:750 2.08px var(--sans);text-anchor:middle;dominant-baseline:middle;pointer-events:none;paint-order:stroke;stroke:#0A100D;stroke-width:.62px;letter-spacing:.035em}
.dxf-road-label-avenida{fill:#F2D47E!important;font-size:2.25px!important;font-weight:850!important}
.dxf-road-label-projetada{fill:#CFD9D3!important}
.dxf-expansion-zone .zone-shape{fill:#143F57!important;fill-opacity:.88!important;stroke:#67C3FF!important;stroke-width:.85!important;stroke-dasharray:2 1;vector-effect:non-scaling-stroke}
.dxf-expansion-zone.house-zone .zone-shape{fill:#174A63!important;fill-opacity:.86!important;stroke:#86D5FF!important}
.dxf-zone-label{font:850 2.2px var(--sans)!important;fill:#F3FAFF!important;text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:#071018;stroke-width:.7px}
.dxf-zone-sub{font:700 1.55px var(--sans)!important;fill:#C8E9FF!important;text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:#071018;stroke-width:.58px}
.dxf-lot-shape{stroke:#A7B5AD!important;stroke-width:.52!important}
.dxf-lot-group[data-dxf-lot^="COM-"] .dxf-lot-shape{stroke:#E5BD5E!important;stroke-width:.72!important}
.dxf-commercial-label-v29{font:900 3.2px var(--sans);fill:#F2CD75;text-anchor:middle;paint-order:stroke;stroke:#09100D;stroke-width:.7px;letter-spacing:.12em}


/* source-style-9: distratoV30Styles */

.distrato-auth-box{margin:18px 0;padding:12px 14px;border:1px solid var(--line);background:rgba(127,214,255,.045);font-size:.72rem;line-height:1.5}.distrato-auth-box strong{font-family:var(--mono);font-size:.82rem;letter-spacing:.04em}.distrato-clause-title{font-family:var(--serif);font-size:.98rem;font-weight:700;margin:24px 0 8px;text-transform:uppercase}.distrato-financial-box{border:1px solid var(--ink);margin:14px 0}.distrato-financial-row{display:flex;justify-content:space-between;gap:16px;padding:7px 10px;border-bottom:1px solid var(--line);font-size:.82rem}.distrato-financial-row:last-child{border-bottom:0}.distrato-financial-row.total{font-weight:800;background:rgba(75,224,161,.06)}.distrato-sign-grid{display:grid;grid-template-columns:1fr 1fr;gap:34px 24px;margin-top:42px}.distrato-sign-line{border-top:1px solid currentColor;text-align:center;padding-top:7px;font-size:.76rem}.distrato-witnesses{margin-top:28px;display:grid;grid-template-columns:1fr 1fr;gap:26px}.distrato-witness{font-size:.74rem;line-height:1.8}.distrato-meta{display:grid;grid-template-columns:repeat(2,1fr);border:1px solid var(--line);margin:12px 0 18px}.distrato-meta>div{padding:9px 11px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:.74rem}.distrato-meta>div:nth-child(2n){border-right:0}.distrato-meta span{display:block;color:var(--ink-soft);font-size:.64rem;margin-bottom:3px}.distrato-meta strong{font-weight:650}.distrato-note{padding:10px 12px;border-left:3px solid var(--mustard);background:var(--mustard-bg);font-size:.75rem;line-height:1.45}
@media print{#distratoDoc .distrato-auth-box,#distratoDoc .distrato-financial-box,#distratoDoc .distrato-meta,#distratoDoc .distrato-sign-grid,#distratoDoc .distrato-witnesses{break-inside:avoid;page-break-inside:avoid}#distratoDoc .distrato-clause-title{break-after:avoid;page-break-after:avoid}#distratoDoc .distrato-financial-row{break-inside:avoid;page-break-inside:avoid}#distratoDoc .distrato-note{break-inside:avoid;page-break-inside:avoid}.distrato-sign-grid{grid-template-columns:1fr 1fr!important}.distrato-witnesses{grid-template-columns:1fr 1fr!important}}


/* source-style-10: granContractPrintV31 */

/* V3.1 — paginação segura do contrato. Evita cabeçalho/rodapé fixos sobre o texto. */
.contract-print-page-start{display:none}
@media print{
  @page{size:A4 portrait;margin:13mm 15mm 14mm 15mm}
  html,body{background:#fff!important;color:#111!important;margin:0!important;padding:0!important}
  header.top,nav.tabs,.contrato-actions,footer.foot,#storageWarning,#ctSelectorSection,
  #dtSelectorSection,#dtCalcSection,#dtControleSection,#lotDrawer,#lotDrawerBackdrop,#searchPalette,
  #authOverlay,.gr-lock-overlay,.gr-master-overlay,.estorno-overlay,.quitacao-workspace,
  .print-letterhead,.print-rubrica-footer{display:none!important}
  .wrap{padding:0!important;margin:0!important;max-width:none!important}
  body.print-contract-v35 #view-contrato{display:block!important}
  body.print-contract-v35 .view:not(#view-contrato){display:none!important}

  /* A marca d'água pode repetir; ela não participa do fluxo e fica atrás do texto. */
  .print-watermark{display:block!important;position:fixed!important;inset:0!important;z-index:0!important;
    opacity:.045!important;background-position:center center!important;background-repeat:no-repeat!important;
    background-size:365px auto!important;pointer-events:none!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
  .print-watermark::after{content:attr(data-empreendimento);position:absolute;left:50%;top:64%;
    transform:translate(-50%,-50%) rotate(-31deg);font:700 22px/1 Arial,sans-serif;letter-spacing:.15em;
    color:#244735;opacity:.12;white-space:nowrap}

  .contrato-doc{position:relative!important;z-index:2!important;border:0!important;box-shadow:none!important;
    background:transparent!important;max-width:none!important;width:auto!important;margin:0!important;padding:0!important;
    color:#111!important;font-family:Arial,Helvetica,sans-serif!important;font-size:9.5pt!important;line-height:1.38!important}
  .contrato-doc p{margin:0 0 2.25mm!important;text-align:justify!important;orphans:3!important;widows:3!important}

  /* Cabeçalho somente da 1ª lauda, no fluxo normal. */
  .letterhead-flow{display:flex!important;align-items:center!important;justify-content:center!important;gap:4mm!important;
    padding:0 0 3mm!important;margin:0 0 3mm!important;border-bottom:1px solid #444!important;break-inside:avoid!important}
  .letterhead-flow img{height:12mm!important;width:auto!important}
  .letterhead-flow .lh-title{font:700 11pt Arial,sans-serif!important;margin:0!important;color:#222!important}
  .letterhead-flow .lh-tag{font:italic 7.5pt Arial,sans-serif!important;margin:.7mm 0 0!important;color:#8a6d1b!important}

  .contrato-banner{background:#fff!important;color:#111!important;border:1.2px solid #222!important;
    padding:3mm 4mm!important;margin:0!important;text-align:center!important;font:700 11.2pt Arial,sans-serif!important;
    break-inside:avoid!important;page-break-inside:avoid!important}
  .contrato-subbanner{background:#fff!important;border:1px solid #777!important;border-top:0!important;
    padding:2.5mm 3mm!important;margin:0 0 3mm!important;text-align:center!important;font:italic 8.2pt Arial,sans-serif!important;
    color:#333!important;break-inside:avoid!important}
  .contract-auth-box{display:grid!important;grid-template-columns:1fr 1fr!important;gap:5mm!important;
    padding:3mm 4mm!important;margin:0 0 4mm!important;border:1px solid #777!important;background:#fff!important;
    break-inside:avoid!important;page-break-inside:avoid!important}
  .contract-auth-box .auth-label{font-size:7pt!important}.contract-auth-box .auth-code{font-size:8.7pt!important}
  .contract-auth-box .auth-meta{font-size:7pt!important;line-height:1.35!important}

  .contrato-doc h4.clausula{font:700 10.2pt Arial,sans-serif!important;line-height:1.24!important;
    margin:4.3mm 0 2.1mm!important;break-after:avoid!important;page-break-after:avoid!important}
  .contrato-doc h4.clausula + p{break-before:avoid!important}

  /* Início de cada lauda planejada: entra no fluxo, portanto nunca cobre cláusulas. */
  .contract-print-page-start{display:flex!important;justify-content:space-between!important;align-items:center!important;gap:6mm!important;
    break-before:page!important;page-break-before:always!important;margin:0 0 5mm!important;padding:0 0 2.3mm!important;
    border-bottom:1px solid #aaa!important;color:#666!important;font:italic 7.2pt Arial,sans-serif!important;letter-spacing:.01em!important}
  .contract-print-page-start strong{font-family:'Courier New',monospace!important;font-style:normal!important;color:#555!important;font-size:7.1pt!important}
  .contract-print-page-start + h4.clausula{margin-top:0!important}

  .contrato-doc .quadro{border:1px solid #777!important;background:#fff!important;padding:3mm 4mm!important;margin:3mm 0!important;
    break-inside:avoid!important;page-break-inside:avoid!important}
  .contrato-doc .quadro h5{font:700 8.6pt Arial,sans-serif!important;margin:0 0 2.2mm!important}
  .contrato-doc .quadro p{font-size:8.7pt!important;line-height:1.38!important}
  .contrato-doc .quadro .row{display:flex!important;justify-content:space-between!important;gap:5mm!important;
    padding:1.25mm 0!important;font-size:8.4pt!important;border-bottom:1px dotted #888!important;break-inside:avoid!important}
  .contrato-doc .quadro .row span:last-child{text-align:right!important;max-width:62%!important}

  .contrato-doc .sign{margin:0!important;text-align:center!important;break-inside:avoid!important}
  .contrato-doc .sign .line{margin:13mm auto 0!important;width:86%!important;padding-top:2mm!important;
    border-top:1px solid #222!important;font-size:8pt!important;break-inside:avoid!important}
  .contrato-doc .rubricas-final{font-size:7.4pt!important;margin-top:5mm!important;line-height:1.4!important}
  .anexo-title{font:700 11pt Arial,sans-serif!important;text-align:center!important;margin:7mm 0 4mm!important;
    padding-top:4mm!important;border-top:1.2px solid #333!important;break-after:avoid!important}

  /* Mantém bloco de testemunhas junto e evita assinaturas partidas. */
  .contract-signatures-block{break-inside:avoid!important;page-break-inside:avoid!important}
  .contract-page-8-start + .quadro{margin-top:0!important}
}


/* source-style-11: quitacaoQrStyles */

.restitution-entry{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--panel-2);margin:14px 0}.restitution-entry .field{margin:0}.restitution-entry .rest-obs{grid-column:1/-1}.restitution-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;grid-column:1/-1}.rest-history{margin-top:16px}.rest-history h3{margin:0 0 10px}.rest-status-ok{padding:12px 14px;border:1px solid rgba(75,224,161,.24);border-radius:12px;background:rgba(75,224,161,.07);color:var(--ink);margin:12px 0}.rest-status-pending{padding:12px 14px;border:1px solid rgba(216,174,82,.24);border-radius:12px;background:rgba(216,174,82,.07);color:var(--ink);margin:12px 0}
.validation-box{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}.validation-result{margin-top:14px}.validation-valid{border-left:4px solid var(--moss);background:var(--moss-bg);padding:14px}.validation-invalid{border-left:4px solid var(--ochre);background:var(--ochre-bg);padding:14px}.validation-code{font:700 .82rem var(--mono);letter-spacing:.04em}
.quitacao-workspace{position:fixed;inset:0;z-index:900;display:none;background:rgba(5,8,7,.92);backdrop-filter:blur(10px);overflow:auto;padding:26px}.quitacao-workspace.open{display:block}.quitacao-shell{max-width:880px;margin:0 auto}.quitacao-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:14px;position:sticky;top:0;z-index:2;padding:10px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}.quitacao-toolbar>div{display:flex;gap:8px;flex-wrap:wrap}.quitacao-doc{position:relative;background:#fff;color:#151515;max-width:794px;margin:0 auto;padding:44px 52px 50px;min-height:1123px;font-family:Arial,Helvetica,sans-serif;line-height:1.52;font-size:13px;border:1px solid #d5d5d5}.quitacao-doc::before{content:attr(data-empreendimento);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;transform:rotate(-30deg);font:800 56px Arial,sans-serif;letter-spacing:.12em;color:rgba(42,92,62,.045);pointer-events:none}.quitacao-content{position:relative;z-index:1}.quitacao-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-bottom:16px;border-bottom:2px solid #222}.quitacao-brand h1{font-size:16px;margin:0}.quitacao-brand p{font-size:10px;margin:3px 0 0;color:#666;letter-spacing:.08em}.quitacao-title{text-align:center;margin:30px 0 22px}.quitacao-title h2{font-size:19px;margin:0;text-transform:uppercase;letter-spacing:.02em}.quitacao-title p{margin:5px 0 0;color:#555;font-size:11px}.quitacao-auth-grid{display:grid;grid-template-columns:1fr 155px;gap:18px;align-items:center;border:1px solid #777;padding:14px;margin:18px 0}.quitacao-auth-code{font:700 13px 'Courier New',monospace;word-break:break-all}.quitacao-hash{font:11px 'Courier New',monospace;color:#555;word-break:break-all;margin-top:8px}.quitacao-qr{width:145px;height:145px;margin-left:auto}.gran-qr-svg{display:block;width:100%;height:100%}.quitacao-fields{border:1px solid #aaa;margin:16px 0}.quitacao-row{display:grid;grid-template-columns:155px 1fr;border-bottom:1px solid #ddd}.quitacao-row:last-child{border-bottom:0}.quitacao-row span,.quitacao-row strong{padding:8px 10px}.quitacao-row span{background:#f5f5f5;color:#555}.quitacao-row strong{font-weight:600}.quitacao-body p{text-align:justify;margin:0 0 12px}.quitacao-note{font-size:11px;color:#555;border-left:3px solid #777;padding:9px 12px;background:#f8f8f8;margin:18px 0}.quitacao-signatures{display:grid;grid-template-columns:1fr 1fr;gap:56px 28px;margin-top:60px}.quitacao-sign{border-top:1px solid #222;text-align:center;padding-top:7px;font-size:11px}.quitacao-footer{margin-top:34px;padding-top:10px;border-top:1px solid #aaa;font-size:9px;color:#666;display:flex;justify-content:space-between;gap:15px}.quitacao-badge{display:inline-block;padding:4px 8px;border-radius:999px;background:#e7f6ec;color:#1d6b3b;font-weight:700;font-size:10px}
@media(max-width:760px){.restitution-entry{grid-template-columns:1fr 1fr}.validation-box{grid-template-columns:1fr}.quitacao-workspace{padding:8px}.quitacao-doc{padding:28px 22px;min-height:auto}.quitacao-auth-grid{grid-template-columns:1fr}.quitacao-qr{margin:0 auto}.quitacao-signatures{grid-template-columns:1fr}.quitacao-toolbar{position:static}}
@media print{
  body.print-distrato #view-contrato{display:none!important}
  body.print-distrato #view-distrato{display:block!important}
  body.print-quitacao #authOverlay,body.print-quitacao #appRoot,body.print-quitacao #reservationModal,body.print-quitacao #lotDrawerBackdrop,body.print-quitacao #lotDrawer,body.print-quitacao #searchPalette{display:none!important}
  body.print-quitacao #quitacaoWorkspace{display:block!important;position:static!important;inset:auto!important;background:#fff!important;padding:0!important;overflow:visible!important;backdrop-filter:none!important}
  body.print-quitacao .quitacao-toolbar{display:none!important}
  body.print-quitacao .quitacao-shell{max-width:none!important;margin:0!important}
  body.print-quitacao .quitacao-doc{border:0!important;box-shadow:none!important;max-width:none!important;width:auto!important;min-height:0!important;margin:0!important;padding:0!important;font-size:10pt!important;line-height:1.48!important}
  body.print-quitacao .quitacao-doc::before{position:fixed!important;font-size:48pt!important;color:rgba(42,92,62,.045)!important}
  body.print-quitacao .quitacao-content{position:relative!important;z-index:1!important}
  body.print-quitacao .quitacao-auth-grid,body.print-quitacao .quitacao-fields,body.print-quitacao .quitacao-signatures{break-inside:avoid!important;page-break-inside:avoid!important}
  body.print-quitacao .quitacao-qr{width:34mm!important;height:34mm!important}
  body.print-quitacao .quitacao-footer{break-inside:avoid!important}
}

/* V3.4 — certidão/QR */
.quitacao-row strong{word-break:break-word}.quitacao-auth-grid p strong{color:#333}.validation-valid,.validation-invalid{line-height:1.55}.validation-valid .rest-status-ok{margin-top:12px}


/* source-style-12: granV33Fixes */

/* V3.3 — correções de estabilidade */
.audit-jump-btn{display:inline-flex;align-items:center;gap:6px;margin-top:7px;padding:6px 9px;border:1px solid rgba(216,174,82,.28);border-radius:8px;background:rgba(216,174,82,.07);color:var(--ink);font:700 .65rem var(--sans);cursor:pointer}.audit-jump-btn:hover{background:rgba(216,174,82,.12)}
.audit-jump-btn::after{content:'→';font-family:var(--mono)}.audit-badge-button{border:0;cursor:pointer;font-family:inherit}.audit-badge-button:hover{outline:2px solid rgba(216,174,82,.22);outline-offset:2px}
.required-hint{font-size:.64rem;color:var(--danger);font-weight:700}.phone-invalid{border-color:var(--danger)!important;box-shadow:0 0 0 3px rgba(224,122,109,.08)!important}
/* Certidão: layout A4 estável e QR mais legível */
.quitacao-doc{box-sizing:border-box}.quitacao-auth-grid{grid-template-columns:minmax(0,1fr) 138px}.quitacao-qr{width:132px;height:132px}.quitacao-footer{align-items:flex-start}.quitacao-footer span:last-child{font-family:'Courier New',monospace;font-weight:700;color:#333}
@media print{
  body.print-quitacao{background:#fff!important;overflow:visible!important}
  body.print-quitacao #quitacaoWorkspace{display:block!important;position:static!important;width:100%!important;height:auto!important;margin:0!important;padding:0!important;overflow:visible!important;background:#fff!important}
  body.print-quitacao .quitacao-shell{width:100%!important;max-width:none!important;margin:0!important;padding:0!important}
  body.print-quitacao .quitacao-doc{display:block!important;position:relative!important;width:100%!important;max-width:180mm!important;min-height:auto!important;margin:0 auto!important;padding:0!important;border:0!important;background:#fff!important;color:#111!important;font-size:9.2pt!important;line-height:1.38!important;overflow:visible!important}
  body.print-quitacao .quitacao-doc::before{position:absolute!important;inset:22mm 0 auto 0!important;height:190mm!important;font-size:42pt!important;color:rgba(42,92,62,.04)!important;transform:rotate(-30deg)!important}
  body.print-quitacao .quitacao-head{padding-bottom:3mm!important}
  body.print-quitacao .quitacao-title{margin:6mm 0 4mm!important}
  body.print-quitacao .quitacao-auth-grid{grid-template-columns:1fr 30mm!important;gap:5mm!important;padding:3.5mm!important;margin:4mm 0!important;break-inside:avoid!important}
  body.print-quitacao .quitacao-qr{width:28mm!important;height:28mm!important}
  body.print-quitacao .quitacao-fields{margin:4mm 0!important;break-inside:avoid!important}
  body.print-quitacao .quitacao-row span,body.print-quitacao .quitacao-row strong{padding:2mm 2.5mm!important}
  body.print-quitacao .quitacao-body p{margin:0 0 2.8mm!important}
  body.print-quitacao .quitacao-note{margin:3.5mm 0!important;padding:2.5mm 3mm!important}
  body.print-quitacao .quitacao-signatures{margin-top:13mm!important;gap:12mm 8mm!important;break-inside:avoid!important}
  body.print-quitacao .quitacao-footer{margin-top:7mm!important;padding-top:2.5mm!important;break-inside:avoid!important}
}


/* source-style-13: v37-nationality-style */

.nationality-input-row{display:flex;gap:8px;align-items:center}.nationality-input-row input{flex:1;min-width:0}.nationality-quick-btn{white-space:nowrap;min-height:38px;padding:0 14px}.nationality-quick-btn:active{transform:translateY(1px)}@media(max-width:520px){.nationality-input-row{align-items:stretch}.nationality-quick-btn{padding:0 10px}}


/* source-style-14: granV38Finishing */

/* V3.8 — acabamento do cadastro e mapa sem alterar a geometria do DXF */
.field-label-row{display:inline-flex;align-items:center;gap:5px}.field-required-star{color:#d98b7b;font-weight:850;font-size:.75rem;line-height:1}.phone-input-shell{display:flex;align-items:center;height:42px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2);overflow:hidden;transition:border-color .16s,box-shadow .16s}.phone-input-shell:focus-within{border-color:rgba(75,224,161,.65);box-shadow:0 0 0 3px rgba(75,224,161,.07)}.phone-prefix{display:grid;place-items:center;height:100%;padding:0 11px;border-right:1px solid var(--line);color:var(--ink-soft);font:650 .68rem var(--mono);background:rgba(255,255,255,.018)}.phone-input-shell input{height:100%!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;flex:1;min-width:0;padding:0 12px!important}.phone-field.field-error .phone-input-shell{border-color:rgba(227,109,88,.68);box-shadow:0 0 0 3px rgba(227,109,88,.06)}.phone-field.field-error .field-hint{color:#d98b7b}.phone-valid .phone-input-shell{border-color:rgba(75,224,161,.38)}
.required-pill{display:none!important}.nationality-quick-btn{border-color:rgba(75,224,161,.16)!important;color:#a9d9bd!important;background:rgba(75,224,161,.045)!important}

.dxf-map-panel{padding:16px!important;background:linear-gradient(180deg,rgba(255,255,255,.014),rgba(255,255,255,.004)),var(--panel)!important}.dxf-map-topbar{padding:0 2px 10px;margin-bottom:0!important;border-bottom:1px solid rgba(255,255,255,.055)}.dxf-map-summary{gap:8px!important}.dxf-map-summary span{padding:6px 9px;border:1px solid rgba(255,255,255,.055);border-radius:9px;background:rgba(255,255,255,.018)}.dxf-map-controls .btn{border-radius:9px!important;min-width:34px}.dxf-map-status{display:flex!important;align-items:center;justify-content:space-between;gap:14px;margin:11px 0!important;padding:9px 11px!important;border-color:rgba(255,255,255,.055)!important;background:rgba(255,255,255,.018)!important}.dxf-map-status>div:first-child{display:flex;flex-direction:column;gap:2px}.dxf-map-status>div:first-child strong{font-size:.69rem}.dxf-map-status>div:first-child span{font-size:.61rem;color:var(--ink-soft)}.map-type-legend{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.map-type{display:inline-flex;align-items:center;gap:5px;padding:4px 7px;border-radius:7px;font-size:.57rem;font-weight:700;border:1px solid rgba(255,255,255,.06)}.map-type::before{content:"";width:7px;height:7px;border-radius:2px}.map-type.commercial::before{background:#d3a84c}.map-type.expansion::before{background:#3e91bd}.map-type.road::before{background:#59665f}
.dxf-map-viewport{height:min(76vh,790px)!important;min-height:560px!important;border-radius:14px!important;border:1px solid #293b32!important;background:radial-gradient(circle at 50% 42%,#102018 0,#09120e 68%,#070d0a 100%)!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.018),0 14px 38px rgba(0,0,0,.18)}
#dxfMapSvg{filter:saturate(.92) contrast(1.035)}.dxf-road-surface{fill:#2b3430!important;stroke:#65736c!important;stroke-width:.42!important}.dxf-context-green{fill:rgba(24,91,57,.13)!important;stroke:#347455!important;opacity:.72!important}.dxf-context-cooper{stroke:#d4a64d!important;stroke-width:1.05!important;opacity:.82!important}.dxf-lot-shape{stroke:#91a097!important;stroke-width:.48!important;fill-opacity:.94!important;transition:filter .15s}.dxf-lot-group:hover .dxf-lot-shape{stroke:#f1f5f2!important;stroke-width:1.12!important;filter:brightness(1.15)}.dxf-lot-group.selected .dxf-lot-shape{stroke:#fff!important;stroke-width:1.45!important;filter:brightness(1.16)}.dxf-lot-group.status-disponivel .dxf-lot-shape{fill:#216842!important}.dxf-lot-group.status-negociacao .dxf-lot-shape{fill:#315f83!important}.dxf-lot-group.status-reservado .dxf-lot-shape{fill:#806827!important}.dxf-lot-group.status-vendido .dxf-lot-shape{fill:#873e33!important}.dxf-lot-group.status-bloqueado .dxf-lot-shape{fill:#424b46!important}.dxf-lot-group.status-distratado .dxf-lot-shape{fill:#62457e!important}.dxf-lot-group[data-dxf-lot^="COM-"] .dxf-lot-shape{stroke:#d9b253!important;stroke-width:.72!important}.dxf-lot-group[data-dxf-lot^="COM-"]:hover .dxf-lot-shape{stroke:#ffe3a0!important}.dxf-lot-label{font-size:2px!important;fill:#eef4f0!important;stroke:#07100b!important;stroke-width:.66px!important}.dxf-road-label-v29{fill:#d4ddd8!important;font-size:1.9px!important;stroke-width:.58px!important}.dxf-road-label-avenida{fill:#f0d17a!important;font-size:2.08px!important}.dxf-zone-label{font-size:1.95px!important}.dxf-zone-sub{font-size:1.4px!important}.dxf-commercial-label-v29{font-size:2.75px!important;fill:#efc86d!important}.dxf-quadra-label{fill:rgba(220,230,224,.72)!important;font-size:4.3px!important}.dxf-map-help{margin-top:9px!important;padding:0 2px;color:#7f9187!important}
@media(max-width:760px){.dxf-map-status{align-items:flex-start;flex-direction:column}.map-type-legend{justify-content:flex-start}.dxf-map-viewport{min-height:470px!important;height:62vh!important}.phone-input-shell{height:44px}}
body.light-theme .phone-input-shell{background:#fff}.light-theme .dxf-map-panel{background:#fff!important}


/* source-style-15: v39-urbanistic-map */

#dxfMapViewport{position:relative!important;background:radial-gradient(circle at 52% 43%,#13251b 0,#0b1711 58%,#07100c 100%)!important;border:1px solid #31483b!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.025),0 20px 48px rgba(0,0,0,.24)!important}
#dxfMapSvg{filter:saturate(.96) contrast(1.055);isolation:isolate}
.urban-map-badge,.urban-map-compass,.urban-map-scale{position:absolute;z-index:8;pointer-events:none;backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px)}
.urban-map-badge{top:14px;left:14px;display:flex;flex-direction:column;gap:2px;padding:9px 11px;border:1px solid rgba(235,208,132,.2);border-radius:10px;background:rgba(7,16,12,.76);box-shadow:0 8px 20px rgba(0,0,0,.18)}
.urban-map-badge strong{font:800 .63rem var(--sans);letter-spacing:.105em;color:#ead08a}.urban-map-badge span{font-size:.54rem;color:#8fa197}
.urban-map-compass{top:14px;right:14px;width:44px;height:52px;border:1px solid rgba(255,255,255,.1);border-radius:11px;background:rgba(7,16,12,.72);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#e7d18f}
.urban-map-compass span{font:800 .58rem var(--sans);letter-spacing:.12em}.urban-map-compass b{font:400 1.22rem/1 var(--sans);margin-top:2px}
.urban-map-scale{right:14px;bottom:13px;display:flex;align-items:center;gap:7px;padding:6px 8px;border-radius:8px;background:rgba(7,16,12,.68);border:1px solid rgba(255,255,255,.08);font-size:.48rem;color:#889a90}.urban-map-scale i{display:block;width:38px;height:5px;border-left:1px solid #d7dfda;border-right:1px solid #d7dfda;border-bottom:1px solid #d7dfda}
.dxf-road-sidewalk{fill:none!important;stroke:#bcc8c1!important;stroke-width:2.4!important;opacity:.16!important;vector-effect:non-scaling-stroke;pointer-events:none}
.dxf-road-surface{fill:url(#urbanRoadGradient)!important;stroke:#84928a!important;stroke-width:.62!important;fill-opacity:1!important;filter:url(#urbanRoadShadow)}
.dxf-road-curb{fill:none!important;stroke:#d5ddd8!important;stroke-width:.22!important;opacity:.82!important;vector-effect:non-scaling-stroke;pointer-events:none}
.urban-road-axis{fill:none;stroke:#c9d0cc;stroke-width:.24;stroke-dasharray:2.2 2.1;opacity:.30;vector-effect:non-scaling-stroke;pointer-events:none}.urban-road-axis.avenida{stroke:#e2bd62;stroke-width:.32;stroke-dasharray:4 2.2;opacity:.48}
.dxf-lot-shape{stroke:#aab8b0!important;stroke-width:.46!important;fill-opacity:.96!important}.dxf-lot-group.status-disponivel .dxf-lot-shape{fill:#2a7450!important}.dxf-lot-group.status-negociacao .dxf-lot-shape{fill:#396b91!important}.dxf-lot-group.status-reservado .dxf-lot-shape{fill:#88712e!important}.dxf-lot-group.status-vendido .dxf-lot-shape{fill:#8e463a!important}.dxf-lot-group.status-bloqueado .dxf-lot-shape{fill:#48524d!important}.dxf-lot-group.status-distratado .dxf-lot-shape{fill:#6a4d88!important}.dxf-lot-group[data-dxf-lot^="COM-"].status-disponivel .dxf-lot-shape{fill:url(#urbanCommercialPattern)!important;stroke:#e0bb63!important;stroke-width:.70!important}
.dxf-lot-group:hover .dxf-lot-shape{stroke:#fff!important;stroke-width:1.08!important;filter:brightness(1.16) drop-shadow(0 0 1px rgba(255,255,255,.18))}.dxf-lot-group.selected .dxf-lot-shape{stroke:#fff!important;stroke-width:1.48!important;filter:brightness(1.18) drop-shadow(0 0 2px rgba(255,255,255,.25))}
.dxf-lot-label{font-size:1.92px!important;fill:#f4f7f5!important;stroke:#07100b!important;stroke-width:.62px!important;font-weight:720!important}.dxf-quadra-label{font-size:4.7px!important;fill:rgba(232,239,235,.58)!important;font-weight:850!important;letter-spacing:.04em}
.dxf-context-green{fill:rgba(41,112,70,.16)!important;stroke:#3f765a!important;stroke-width:.48!important;opacity:.88!important}.dxf-context-cooper{stroke:#d5aa51!important;stroke-width:1.05!important;stroke-dasharray:3.5 2!important;opacity:.90!important}
.dxf-expansion-zone .zone-shape{fill:url(#urbanExpansionPattern)!important;stroke:#72c9f2!important;stroke-width:.76!important;stroke-dasharray:2 1!important}.dxf-zone-label{fill:#d8f0ff!important;font-size:2px!important}.dxf-zone-sub{fill:#9ecce4!important;font-size:1.38px!important}
.dxf-road-label-v29{fill:#dce4df!important;font-size:1.82px!important;stroke:#101814!important;stroke-width:.58px!important;font-weight:760!important}.dxf-road-label-avenida{fill:#f1d578!important;font-size:2.1px!important;letter-spacing:.055em!important}.dxf-commercial-label-v29{fill:#f1ca6f!important;font-size:2.7px!important;letter-spacing:.045em}.dxf-unidentified path{fill:#3e4742!important;stroke:#9aa69f!important;opacity:.56!important}
@media(max-width:760px){.urban-map-badge{top:9px;left:9px;padding:7px 8px}.urban-map-compass{top:9px;right:9px}.urban-map-scale{display:none}.urban-map-badge span{display:none}}


/* source-style-16: v43-stable-dxf-birthdate */

/* V4.3 — mapa: somente geometria oficial já embutida no DXF; sem eixos/clones artificiais */
#urbanRoadAxes,.dxf-road-sidewalk,.dxf-road-curb{display:none!important}
.dxf-map-viewport{background:radial-gradient(circle at 48% 38%,#102018 0,#09130f 62%,#070d0a 100%)!important;border:1px solid #294238!important;box-shadow:inset 0 0 50px rgba(0,0,0,.20),0 16px 40px rgba(0,0,0,.18)!important}
.dxf-road-surface{fill:#303936!important;stroke:#7b8b83!important;stroke-width:.48!important;fill-opacity:1!important;filter:none!important}
.dxf-context-line{stroke:#53645b!important;stroke-width:.42!important;opacity:.55!important}
.dxf-context-green{fill:rgba(38,111,70,.15)!important;stroke:#3d7c5b!important;stroke-width:.5!important;opacity:.75!important}
.dxf-context-cooper{stroke:#d0a852!important;stroke-width:1.05!important;stroke-dasharray:3 2!important;opacity:.86!important}
.dxf-lot-shape{stroke:#a7b5ad!important;stroke-width:.5!important;fill-opacity:.94!important}
.dxf-lot-group:hover .dxf-lot-shape{stroke:#fff!important;stroke-width:1.1!important;filter:brightness(1.12)}
.dxf-lot-group.selected .dxf-lot-shape{stroke:#fff!important;stroke-width:1.45!important;filter:brightness(1.15)}
.dxf-lot-label{font-size:2px!important;fill:#f2f6f3!important;stroke:#07100b!important;stroke-width:.64px!important}
.dxf-road-label-v29{font-size:1.95px!important;fill:#d6dfda!important;stroke:#0a100d!important;stroke-width:.58px!important;letter-spacing:.025em}
.dxf-road-label-avenida{font-size:2.18px!important;fill:#f0d078!important;font-weight:850!important}
.dxf-road-label-projetada{fill:#d3ddd7!important}
.dxf-expansion-zone .zone-shape{fill:#174a63!important;fill-opacity:.58!important;stroke:#75c8f1!important;stroke-width:.82!important;stroke-dasharray:2 1!important}
.dxf-zone-label{font-size:1.9px!important;fill:#bde6fb!important}.dxf-zone-sub{font-size:1.38px!important;fill:#a8cddd!important}
.dxf-commercial-label-v29{fill:#efc86d!important;font-size:2.6px!important}
.dxf-quadra-label{font-size:4.25px!important;fill:rgba(223,232,227,.68)!important}
.sim-age-rule{margin-top:10px;padding:11px 13px;border-radius:11px;border:1px solid rgba(240,208,120,.16);background:rgba(240,208,120,.045);font-size:.72rem;line-height:1.5;color:var(--ink-soft)}
.sim-age-rule strong{color:var(--ink)}
.sim-profile-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:10px 0}
.sim-profile-card{padding:11px 12px;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.025)}
.sim-profile-card span{display:block;font-size:.63rem;color:var(--ink-soft);margin-bottom:5px;text-transform:uppercase;letter-spacing:.045em}.sim-profile-card strong{font-size:.78rem}
#simNascimento.field-error-input{border-color:#b84b3d!important;box-shadow:0 0 0 3px rgba(184,75,61,.08)!important}
@media(max-width:900px){.sim-profile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.sim-profile-grid{grid-template-columns:1fr}}


/* source-style-17: v45-distrato-doc-actions-style */

.distrato-doc-actions{border-color:rgba(75,224,161,.22)!important;background:linear-gradient(180deg,rgba(75,224,161,.055),rgba(255,255,255,.012))!important;box-shadow:0 16px 34px rgba(0,0,0,.12)}
.distrato-doc-actions .btn{min-width:220px}
@media(max-width:720px){.distrato-doc-actions .btn{width:100%;min-width:0}}
@media print{.distrato-doc-actions{display:none!important}}


/* source-style-18: v46-dxf-revisado */

/* V4.6 — DXF revisto por camada. Não converte GRASS em pavimento e não mostra linhas externas/confrontantes. */
#dxfMapViewport{background:#0d2418!important;border-color:#315344!important;box-shadow:inset 0 0 60px rgba(0,0,0,.20),0 18px 42px rgba(0,0,0,.18)!important}
#dxfMapSvg{filter:none!important;background:transparent!important}
.dxf-v46-backdrop{fill:#10301f;pointer-events:none}
.dxf-v46-green{fill:#173f2a;stroke:#397858;stroke-width:.45;vector-effect:non-scaling-stroke;pointer-events:none}
.dxf-v46-grass{fill:#174b30;stroke:#43815f;stroke-width:.42;vector-effect:non-scaling-stroke;pointer-events:none}
.dxf-v46-cooper-fill{fill:#507a4e;opacity:.58;stroke:#79a96f;stroke-width:.28;vector-effect:non-scaling-stroke;pointer-events:none}
.dxf-v46-roads{fill:#313a36;stroke:#809088;stroke-width:.34;vector-effect:non-scaling-stroke;pointer-events:none}
.dxf-v46-sidewalk-lines{fill:none;stroke:#a7b2ac;stroke-width:.24;opacity:.55;vector-effect:non-scaling-stroke;pointer-events:none}
.dxf-v46-cooper-lines{fill:none;stroke:#d8ad50;stroke-width:.62;stroke-dasharray:2.5 1.7;opacity:.92;vector-effect:non-scaling-stroke;pointer-events:none}
.dxf-v46-road-label{font-size:1.92px!important;fill:#dce5e0!important;stroke:#0a110d!important;stroke-width:.58px!important;font-weight:760!important;letter-spacing:.025em!important}
.dxf-v46-road-label.dxf-road-label-avenida{font-size:2.14px!important;fill:#efd078!important;font-weight:850!important;letter-spacing:.045em!important}
.dxf-v46-road-label.dxf-road-label-projetada{fill:#d6dfda!important}
.dxf-expansion-zone .zone-shape{fill:#174a63!important;fill-opacity:.68!important;stroke:#78cef6!important;stroke-width:.82!important;stroke-dasharray:2 1!important;vector-effect:non-scaling-stroke}
.dxf-zone-label{fill:#c5eaff!important;font-size:1.92px!important}.dxf-zone-sub{fill:#a9cfe1!important;font-size:1.38px!important}
.dxf-lot-shape{stroke:#a9b7af!important;stroke-width:.5!important;fill-opacity:.95!important;vector-effect:non-scaling-stroke}
.dxf-lot-group.status-disponivel .dxf-lot-shape{fill:#267049!important}
.dxf-lot-group.status-negociacao .dxf-lot-shape{fill:#315f83!important}
.dxf-lot-group.status-reservado .dxf-lot-shape{fill:#806827!important}
.dxf-lot-group.status-vendido .dxf-lot-shape{fill:#873e33!important}
.dxf-lot-group.status-bloqueado .dxf-lot-shape{fill:#424b46!important}
.dxf-lot-group.status-distratado .dxf-lot-shape{fill:#62457e!important}
/* Comercial continua obedecendo a cor do status; o dourado é apenas identificação do setor. */
.dxf-lot-group[data-dxf-lot^="COM-"] .dxf-lot-shape{stroke:#e1bb61!important;stroke-width:.72!important}
.dxf-lot-group[data-dxf-lot^="COM-"].status-disponivel .dxf-lot-shape{fill:#267049!important}
.dxf-lot-label{fill:#f2f6f3!important;stroke:#07100b!important;stroke-width:.64px!important;font-size:2px!important}
.dxf-unidentified path{fill:#606b65!important;stroke:#d0d8d3!important;stroke-width:.72!important;stroke-dasharray:2 1!important;opacity:.94!important}
.dxf-unidentified text{fill:#fff!important;font-size:1.48px!important;stroke:#1b211e;stroke-width:.38px;paint-order:stroke}
.dxf-commercial-label-v29{fill:#efc86d!important;font-size:2.62px!important}.dxf-quadra-label{fill:rgba(230,238,233,.72)!important;font-size:4.25px!important}
/* Elementos das tentativas anteriores não devem aparecer se restarem no DOM por cache. */
.dxf-road-surface,.dxf-context-line,.dxf-context-green,.dxf-context-cooper,#urbanRoadAxes,.dxf-road-sidewalk,.dxf-road-curb{display:none!important}
body.light-theme #dxfMapViewport{background:#dfe9e2!important}.light-theme .dxf-v46-backdrop{fill:#dce9df}.light-theme .dxf-v46-green{fill:#bcd8c4}.light-theme .dxf-v46-grass{fill:#acd2b8}.light-theme .dxf-v46-roads{fill:#7d8983}.light-theme .dxf-lot-label{stroke:#eff5f1!important;stroke-width:.32px!important;fill:#17221c!important}


/* source-style-19: v50-critical-fixes */

.toast-stack{position:fixed;right:18px;bottom:18px;z-index:240;display:grid;gap:9px;width:min(390px,calc(100vw - 36px));pointer-events:none}
.app-toast{pointer-events:auto;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:color-mix(in srgb,var(--paper) 96%,transparent);box-shadow:0 20px 45px rgba(0,0,0,.24);font-size:.76rem;line-height:1.45;animation:v50ToastIn .18s ease}
.app-toast.ok{border-color:rgba(75,224,161,.28)}.app-toast.warn{border-color:rgba(216,174,82,.38)}.app-toast.bad{border-color:rgba(227,109,88,.42)}
@keyframes v50ToastIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.field-inline-error{margin:7px 0 0;color:#e28170;font-size:.69rem;line-height:1.35}.field-v50-invalid{border-color:#b84b3d!important;box-shadow:0 0 0 3px rgba(184,75,61,.08)!important}
.buyer-type-banner{padding:11px 13px;border:1px solid var(--line);border-radius:12px;background:var(--hover);margin:10px 0 15px;color:var(--ink-soft);font-size:.72rem;line-height:1.5}.buyer-type-banner strong{color:var(--ink)}
#pjBuyerSection,#representanteSection{margin-top:17px;padding:16px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.018)}
#pjBuyerSection h3,#representanteSection h3{margin:0 0 12px}.v50-validation-summary{margin:12px 0}.v50-validation-summary:empty{display:none}
.payment-nature-badge{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;background:rgba(90,166,247,.08);border:1px solid rgba(90,166,247,.18);font-size:.61rem;color:var(--ink-soft);margin-top:5px}
.payment-status.estornado{background:rgba(227,109,88,.10);color:#e68b78;border-color:rgba(227,109,88,.24)}
.payment-estornado{opacity:.67}.payment-estornado td{text-decoration:none}
.estorno-overlay{position:fixed;inset:0;z-index:230;background:rgba(4,7,6,.72);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:18px}.estorno-card{width:min(520px,100%);border:1px solid var(--line);border-radius:18px;background:var(--paper);padding:20px;box-shadow:0 28px 64px rgba(0,0,0,.32)}.estorno-card h3{margin:0 0 7px}.estorno-card p{color:var(--ink-soft);font-size:.76rem}.estorno-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.backup-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:16px}.backup-card{padding:16px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.018)}.backup-card h3{margin-top:0}.backup-status{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0}.backup-status>div{padding:10px;border:1px solid var(--line);border-radius:10px}.backup-status span{display:block;font-size:.61rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.05em}.backup-status strong{display:block;margin-top:4px;font-size:.74rem}.backup-actions{display:flex;gap:8px;flex-wrap:wrap}.backup-actions .btn{flex:1;min-width:160px}
.plan-charge{color:#d9b253}.plan-late{color:#e48672;font-weight:700}.plan-total-due{font-weight:800;color:var(--ink)}
.audit-autofix-wrap{display:flex;justify-content:flex-end;margin:0 0 12px}.audit-autofix-wrap .btn{border-color:rgba(75,224,161,.24)}
@media(max-width:860px){.backup-grid{grid-template-columns:1fr}.backup-status{grid-template-columns:1fr}.estorno-actions{flex-direction:column}.estorno-actions .btn{width:100%}}
@media print{.toast-stack,.estorno-overlay,.backup-grid,.audit-autofix-wrap{display:none!important}}


/* source-style-20: granV242LocationStyles */

.gr-menu .gr-admin-acesso{border:1px solid rgba(216,174,82,.38)!important;background:rgba(216,174,82,.08)!important;color:#E7C879!important;border-radius:999px!important;padding:8px 12px!important}
.gr-menu .gr-admin-acesso:hover{background:rgba(216,174,82,.16)!important;border-color:rgba(216,174,82,.65)!important}
.gr-footer-admin{border:0;background:transparent;color:#A99A6D;text-decoration:underline;text-underline-offset:3px;cursor:pointer;font:600 .72rem var(--sans)}
.gr-location-section{position:relative;overflow:hidden}.gr-location-section:before{content:'';position:absolute;width:420px;height:420px;border-radius:50%;right:-170px;top:40px;background:radial-gradient(circle,rgba(216,174,82,.10),transparent 68%);pointer-events:none}
.gr-location-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:18px;margin-top:28px;align-items:stretch}
.gr-location-media,.gr-location-info{border:1px solid rgba(216,174,82,.16);border-radius:22px;background:#0C1A14;overflow:hidden;min-height:390px}
.gr-location-media{position:relative;display:grid;place-items:center;background:radial-gradient(circle at 50% 40%,rgba(75,224,161,.08),transparent 40%),#0B110E}
.gr-location-media img{width:100%;height:100%;min-height:390px;object-fit:contain;background:#0A0E0C}
.gr-location-media iframe{width:100%;height:100%;min-height:480px;border:0;background:#fff}
.gr-location-empty{display:grid;place-items:center;text-align:center;gap:8px;padding:28px;color:#77887F}.gr-location-empty span{font-size:2rem;color:#D8AE52}.gr-location-empty strong{color:#EAEFEA;font-size:.9rem}.gr-location-empty small{font-size:.7rem}
.gr-location-info{padding:32px;display:flex;flex-direction:column;justify-content:center}.gr-location-info h3{font-size:clamp(1.4rem,2vw,2rem);margin:8px 0 12px;color:#F0F4F1;letter-spacing:-.04em}.gr-location-info p{color:#87988F;line-height:1.65;font-size:.86rem}.gr-location-pin{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;margin-bottom:20px;background:rgba(216,174,82,.12);border:1px solid rgba(216,174,82,.30);color:#E7C879;font-size:1.15rem}.gr-location-map-shell{position:relative;width:100%;height:100%;min-height:390px;background:#DCE7DE}.gr-location-map{width:100%;height:100%;min-height:390px}.gr-location-map-badge{position:absolute;right:14px;top:14px;z-index:420;background:rgba(7,20,14,.84);backdrop-filter:blur(10px);color:#F7F0DC;border:1px solid rgba(216,174,82,.26);padding:8px 12px;border-radius:999px;font:700 .62rem var(--sans);letter-spacing:.08em;text-transform:uppercase;box-shadow:0 10px 20px rgba(0,0,0,.16)}.gr-location-outline-note{position:absolute;left:12px;bottom:12px;z-index:420;background:rgba(255,255,255,.94);color:#1D3B2D;padding:8px 10px;border-radius:14px;font-size:.68rem;line-height:1.45;border:1px solid rgba(19,43,32,.08);box-shadow:0 10px 20px rgba(9,24,18,.08)}.gr-location-map .leaflet-control-attribution{font-size:9px}.gr-map-tooltip{background:rgba(7,20,14,.92);color:#F6E8BE;border:1px solid rgba(216,174,82,.38);box-shadow:0 10px 22px rgba(0,0,0,.22);border-radius:999px;padding:6px 10px;font:700 .68rem var(--sans)}.gr-map-tooltip:before{border-top-color:rgba(7,20,14,.92)!important}.gr-location-tabs+.gr-location-pane .gr-location-map,.gr-location-pane .gr-location-map{min-height:390px}
/* =====================================================================
   SATÉLITE PRETO — a correção
   O Leaflet 1.9 aplica, no seu próprio CSS, `mix-blend-mode: plus-lighter`
   às imagens dos tiles. Serve para disfarçar as costuras entre tiles, e
   funciona bem numa página clara. Aqui o mapa fica sobre fundo escuro: o
   modo aditivo somava a foto de satélite ao preto do contêiner e o
   resultado era uma caixa preta com o perímetro dourado flutuando.
   O mapa de ruas escapava porque é claro e de alto contraste — por isso
   parecia que "a de dentro está certa e a externa não".
   A imagem do satélite de Amarante existe e está correta no servidor da
   Esri; era só o modo de composição. Restaurado para normal, e limitado
   aos mapas desta tela para não mexer em mais nada.
   ===================================================================== */
/* ---- barra de ajuste do perimetro (so no administrativo) ---- */
.gr-perimetro-barra{position:absolute;left:12px;top:12px;z-index:430;display:flex;flex-wrap:wrap;
  align-items:center;gap:8px;max-width:calc(100% - 24px)}
.gr-per-modo{border:1px solid rgba(216,174,82,.45);background:rgba(7,20,14,.9);color:#F6E8BE;
  padding:7px 12px;border-radius:999px;font:700 .68rem var(--sans);cursor:pointer;
  backdrop-filter:blur(8px)}
.gr-perimetro-barra.ligado .gr-per-modo{background:#D8AE52;color:#12211B;border-color:#D8AE52}
.gr-per-controles{display:flex;flex-wrap:wrap;align-items:center;gap:6px;background:rgba(7,20,14,.92);
  border:1px solid rgba(216,174,82,.28);border-radius:14px;padding:6px 8px;backdrop-filter:blur(8px)}
.gr-per-grupo{display:inline-flex;gap:3px}
.gr-per-controles button{min-width:28px;height:28px;border-radius:8px;cursor:pointer;
  border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);color:#F6E8BE;
  font:700 .8rem var(--sans);line-height:1}
.gr-per-controles button:hover{background:rgba(216,174,82,.22);border-color:rgba(216,174,82,.5)}
.gr-per-leitura{color:#C9D6CE;font:600 .66rem var(--sans);padding:0 6px;white-space:nowrap}
.gr-per-salvar{background:#2E8A5C!important;border-color:#2E8A5C!important;color:#fff!important;
  padding:0 12px!important;width:auto!important}
.gr-per-zerar{padding:0 10px!important;width:auto!important;font-size:.66rem!important}
/* no modo de ajuste o cursor conta o que o gesto faz */
.gr-location-map.gr-ajustando{cursor:move}
.gr-location-map.gr-ajustando .leaflet-interactive{cursor:move}

.gr-location-map .leaflet-tile-container img,
.gr-location-map img.leaflet-tile{
  mix-blend-mode:normal !important;
  background:transparent !important;
  filter:none !important;
}
.location-admin-block{margin:26px 0 20px;padding:18px;border:1px solid rgba(216,174,82,.18);border-radius:16px;background:linear-gradient(180deg,rgba(216,174,82,.035),rgba(255,255,255,.012))}.location-upload-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(320px,1.2fr);gap:16px;margin-top:10px}.location-upload-actions{display:flex;gap:8px;flex-wrap:wrap}.location-admin-preview{border:1px dashed var(--line);border-radius:13px;min-height:230px;display:grid;place-items:center;overflow:hidden;background:var(--paper)}.location-admin-preview img{width:100%;height:260px;object-fit:contain;background:#080C0A}.location-admin-preview iframe{width:100%;height:300px;border:0;background:#fff}.location-preview-empty{color:var(--ink-soft);font-size:.72rem;text-align:center;padding:22px}
@media(max-width:840px){.gr-location-grid,.location-upload-grid{grid-template-columns:1fr}.gr-location-media,.gr-location-info{min-height:0}.gr-location-media img{min-height:280px}.gr-menu .gr-admin-acesso{padding:7px 9px!important;font-size:.66rem!important}}
@media(max-width:620px){.gr-menu [data-ver-localizacao]{display:none}.gr-menu .gr-admin-acesso{font-size:0!important;width:36px;height:36px;padding:0!important}.gr-menu .gr-admin-acesso:after{content:'ADM';font-size:.58rem;font-weight:800}.gr-location-info{padding:22px}.gr-location-media iframe{min-height:380px}}


/* source-style-21: granV258ModernUI */

/* =====================================================================
   GRAN RESERVA V25.10 — MODERN UI LAYER
   Camada exclusivamente visual. Mantém regras, dados e impressão existentes.
   ===================================================================== */
@media screen {
  :root{
    --ink:#F5F8F6;--ink-soft:#9CAAA2;--paper:#080B0A;--paper-raised:#101513;
    --line:#25302A;--panel:#101513;--panel-2:#141B17;--hover:#18221C;
    --accent:#86C89B;--accent-strong:#63B780;--accent-soft:rgba(134,200,155,.12);
    --gold:#D8B765;--gold-soft:rgba(216,183,101,.11);--danger:#E48678;
    --shadow:0 18px 55px rgba(0,0,0,.22);--shadow-soft:0 8px 28px rgba(0,0,0,.16);
    --radius:16px;--radius-sm:11px;
  }
  body.light-theme{
    --ink:#152019;--ink-soft:#68776E;--paper:#F3F6F3;--paper-raised:#FFFFFF;
    --line:#DCE5DF;--panel:#FFFFFF;--panel-2:#F7FAF8;--hover:#EEF4F0;
    --accent:#327B50;--accent-strong:#276B43;--accent-soft:rgba(50,123,80,.10);
    --gold:#987425;--gold-soft:rgba(152,116,37,.08);--shadow:0 18px 55px rgba(30,55,40,.08);
    --shadow-soft:0 8px 28px rgba(30,55,40,.06);
  }
  html{scrollbar-color:#435148 transparent;scrollbar-width:thin}
  body{background:
      radial-gradient(circle at 82% -10%,rgba(77,150,102,.08),transparent 28%),
      radial-gradient(circle at 28% 105%,rgba(216,183,101,.035),transparent 25%),var(--paper);}
  body.light-theme{background:linear-gradient(180deg,#F7F9F7 0,#F2F5F2 100%)}
  ::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#344239;border:3px solid transparent;background-clip:padding-box;border-radius:999px}

  /* login */
  #authOverlay{grid-template-columns:minmax(0,1.38fr) minmax(430px,.62fr);background:#070A08}
  .auth-showcase{position:relative;padding:52px 62px;border-right:1px solid rgba(255,255,255,.07);
    background:radial-gradient(circle at 14% 12%,rgba(91,177,121,.18),transparent 30%),radial-gradient(circle at 84% 80%,rgba(216,183,101,.09),transparent 30%),linear-gradient(145deg,#0B100D,#080B09 68%)}
  .auth-showcase::after{content:'';position:absolute;inset:0;pointer-events:none;opacity:.20;
    background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:54px 54px;mask-image:linear-gradient(to bottom,black,transparent 78%)}
  .auth-showcase-copy,.auth-visual,.auth-kicker{position:relative;z-index:1}
  .auth-kicker{color:#8DA096;font-weight:700}.auth-pill{border-color:rgba(134,200,155,.24);background:rgba(134,200,155,.07);color:#BBD1C3}
  .auth-showcase-copy h1{max-width:800px;font-weight:620;line-height:.94;letter-spacing:-.072em;text-wrap:balance}
  .auth-showcase-copy h1 em{background:linear-gradient(90deg,#98D5AA,#D9C27C);-webkit-background-clip:text;background-clip:text;color:transparent}
  .auth-showcase-copy p{font-size:.94rem;color:#94A39A}
  .mini-grid i{height:38px;border-radius:7px;background:linear-gradient(180deg,#17241B,#121A15);border-color:#28392F;box-shadow:inset 0 2px 0 rgba(134,200,155,.6)}
  .auth-footnote{display:inline-flex;align-items:center;gap:7px;color:#829087}.auth-footnote::before{content:'';width:6px;height:6px;border-radius:50%;background:#79C393;box-shadow:0 0 12px rgba(121,195,147,.7)}
  .auth-card{padding:28px!important;border:1px solid rgba(255,255,255,.08)!important;border-radius:22px!important;background:rgba(15,20,17,.72)!important;box-shadow:0 28px 80px rgba(0,0,0,.30)!important;backdrop-filter:blur(22px)}
  .auth-card img{height:48px;margin-bottom:24px}.auth-card h2{font-size:1.72rem!important}.auth-sub{font-size:.78rem}
  .auth-card input{height:46px!important;border-radius:11px!important;background:#0B100D!important;border-color:#29342E!important;transition:border-color .16s,box-shadow .16s}
  .auth-card input:focus{border-color:#76BF90!important;box-shadow:0 0 0 4px rgba(118,191,144,.10)!important;outline:0!important}
  .auth-card button.btn{height:46px!important;border-radius:11px!important;box-shadow:0 10px 24px rgba(68,142,92,.16)}

  /* estrutura */
  .wrap{padding-left:302px;padding-right:34px;padding-bottom:74px}
  nav.tabs{width:274px;padding:20px 14px 18px;background:linear-gradient(180deg,#0C100E 0%,#0A0E0C 100%);border-right:1px solid rgba(255,255,255,.075);box-shadow:10px 0 36px rgba(0,0,0,.12)}
  body.light-theme nav.tabs{background:linear-gradient(180deg,#FBFCFB,#F5F8F5);border-right-color:#DDE5DF;box-shadow:10px 0 36px rgba(43,76,54,.035)}
  .sidebar-brand{padding:5px 8px 20px;margin-bottom:6px;gap:12px}.brand-mark{width:38px;height:38px;border-radius:12px;background:linear-gradient(145deg,#8CCD9F,#5EAF79);color:#071009;box-shadow:0 8px 24px rgba(80,162,108,.22)}
  body.light-theme .brand-mark{color:#fff;background:linear-gradient(145deg,#397D53,#245E3C)}
  .sidebar-brand strong{font-size:.88rem;letter-spacing:-.02em}.sidebar-brand span{font-size:.61rem;letter-spacing:.035em}.nav-version{display:inline-block;margin-top:6px;padding:3px 6px;border:1px solid rgba(216,183,101,.20);border-radius:999px;color:#DCC37D;font:700 .50rem/1 var(--sans);font-style:normal;letter-spacing:.08em}
  body.light-theme .nav-version{color:#876A25;border-color:rgba(135,106,37,.18);background:#FBF8EE}
  .nav-caption{padding:18px 11px 7px;color:#68766E;font-size:.54rem;letter-spacing:.16em}
  nav.tabs button{display:flex;align-items:center;gap:10px;min-height:42px;padding:8px 10px!important;border-radius:11px;font-size:.75rem;font-weight:570;color:#95A39B;letter-spacing:-.01em}
  nav.tabs button::before{display:none!important}.nav-ico{width:20px;height:20px;display:grid;place-items:center;flex:0 0 20px;color:#687870;transition:color .16s,transform .16s}.nav-ico svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
  .nav-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  nav.tabs button:hover{background:rgba(255,255,255,.045);color:#EEF4F0}.tabs button:hover .nav-ico{color:#A4D4B3;transform:translateX(1px)}
  nav.tabs button.active{background:linear-gradient(90deg,rgba(118,191,144,.15),rgba(118,191,144,.055));color:#F4F8F5;box-shadow:inset 3px 0 0 #7CC492,0 8px 22px rgba(0,0,0,.08)}
  nav.tabs button.active .nav-ico{color:#8DD1A2}.portal-badge{margin-left:auto!important}
  body.light-theme nav.tabs button:hover{background:#ECF3EE;color:#1E2B23}body.light-theme nav.tabs button.active{background:linear-gradient(90deg,#E1EFE5,#EEF5F0);color:#17301F;box-shadow:inset 3px 0 0 #3D8659}

  header.top{height:76px;margin-bottom:28px;border-bottom:1px solid color-mix(in srgb,var(--line) 84%,transparent);background:color-mix(in srgb,var(--paper) 86%,transparent);backdrop-filter:blur(22px) saturate(140%)}
  header.top .brand h1{font-size:1.02rem;font-weight:680}header.top .brand .loc{font-size:.59rem;letter-spacing:.13em}
  .top-search,.icon-btn{height:40px;border-radius:11px;border-color:var(--line);background:color-mix(in srgb,var(--panel) 88%,transparent);box-shadow:0 1px 0 rgba(255,255,255,.02)}
  .top-search:hover,.icon-btn:hover{border-color:color-mix(in srgb,var(--accent) 34%,var(--line));background:var(--panel-2)}
  .role-badge{border:1px solid color-mix(in srgb,var(--accent) 20%,var(--line));background:var(--accent-soft);color:color-mix(in srgb,var(--accent) 85%,white)}
  body.light-theme .role-badge{color:#2E7148}

  /* páginas, métricas e cards */
  .view{max-width:1510px}.view.active{animation:granV258In .24s cubic-bezier(.2,.8,.2,1)}@keyframes granV258In{from{opacity:.35;transform:translateY(7px)}to{opacity:1;transform:none}}
  .page-heading{margin-bottom:22px;align-items:center}.page-heading h2,.lot-view-head h2{font-size:1.58rem;font-weight:690;letter-spacing:-.045em;margin:3px 0 0}.page-heading p{font-size:.78rem;max-width:760px}.eyebrow{font-size:.56rem;letter-spacing:.17em;color:#87C99D}.period-chip{padding:7px 11px;border-color:color-mix(in srgb,var(--gold) 22%,var(--line));background:var(--gold-soft);color:color-mix(in srgb,var(--gold) 86%,white);font-weight:650}
  body.light-theme .period-chip{color:#806322}
  .vgv-hero{gap:0;border-color:color-mix(in srgb,var(--accent) 16%,var(--line));border-radius:20px;background:transparent;box-shadow:var(--shadow-soft);overflow:hidden}
  .vgv-main{position:relative;padding:30px 32px;background:linear-gradient(145deg,color-mix(in srgb,var(--panel) 94%,#163020),var(--panel))}.vgv-main::after{content:'';position:absolute;width:230px;height:230px;border-radius:50%;right:-90px;top:-100px;background:rgba(115,194,143,.07);filter:blur(2px)}
  .vgv-main>strong{font-size:2.52rem;font-weight:700;letter-spacing:-.065em}.vgv-progress{height:7px;background:rgba(255,255,255,.06)}.vgv-progress i{background:linear-gradient(90deg,#62B57F,#94D4A7);box-shadow:0 0 18px rgba(111,191,137,.25)}
  .vgv-side{background:var(--panel)}.vgv-side>div{padding:16px 19px}.vgv-side>div:hover{background:var(--hover)}.vgv-side strong{font-size:.92rem}
  .grid-cards{gap:12px}.dashboard-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.card{position:relative;border-radius:15px;padding:17px 18px;border-color:var(--line);background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 97%,white 1%),var(--panel));box-shadow:0 1px 0 rgba(255,255,255,.02);transition:transform .17s,border-color .17s,box-shadow .17s}.card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 25%,var(--line));box-shadow:var(--shadow-soft)}
  .card .label{font-size:.64rem;letter-spacing:.01em}.card .value{font-size:1.38rem;font-weight:690}.metric-card:first-child{box-shadow:inset 0 2px 0 #82C899}.metric-card:first-child:hover{box-shadow:inset 0 2px 0 #82C899,var(--shadow-soft)}
  section.block{border-radius:16px;padding:22px;border-color:var(--line);background:var(--panel);box-shadow:0 1px 0 rgba(255,255,255,.018);transition:border-color .17s,box-shadow .17s}section.block:hover{border-color:color-mix(in srgb,var(--accent) 12%,var(--line))}section.block h2{font-size:.96rem;font-weight:680}section.block h3{font-size:.86rem;font-weight:660}
  .semaforo{border:1px solid color-mix(in srgb,var(--moss) 28%,var(--line));border-left:3px solid var(--moss)!important;border-radius:11px!important;background:color-mix(in srgb,var(--moss-bg) 60%,transparent)!important}

  /* tabelas e filtros */
  .table-shell{border-radius:13px;border-color:var(--line);background:var(--panel);box-shadow:inset 0 1px 0 rgba(255,255,255,.015)}
  .table-shell thead th{position:sticky;top:0;z-index:2;background:color-mix(in srgb,var(--panel-2) 96%,transparent);backdrop-filter:blur(12px)}
  th{height:42px;font-size:.58rem;letter-spacing:.09em}td{height:44px;font-size:.74rem}.table-shell tbody tr:last-child td{border-bottom:0}tr:hover td{background:color-mix(in srgb,var(--hover) 78%,transparent)}
  .badge{padding:5px 9px;font-size:.59rem;font-weight:700;letter-spacing:.01em;border:1px solid transparent}
  .filters{padding:10px;border:1px solid var(--line);border-radius:13px;background:color-mix(in srgb,var(--panel) 82%,transparent)}
  .filters input,.filters select,input[type=text],input[type=number],input[type=date],input[type=password],input[type=email],input[type=tel],select,textarea{border-radius:10px!important;border-color:var(--line)!important;background:var(--panel-2)!important;transition:border-color .15s,box-shadow .15s,background .15s}
  textarea{color:var(--ink);padding:10px 11px;font:inherit}
  input:focus,select:focus,textarea:focus{outline:0!important;border-color:color-mix(in srgb,var(--accent) 75%,var(--line))!important;box-shadow:0 0 0 4px var(--accent-soft)!important;background:color-mix(in srgb,var(--panel-2) 92%,var(--accent) 2%)!important}
  label.field{font-size:.64rem;font-weight:590;letter-spacing:.005em}
  button.btn{min-height:38px;border-radius:10px;background:linear-gradient(180deg,#8DCF9F,#73BD8A);border-color:#7EC493;color:#071009;box-shadow:0 7px 18px rgba(63,132,84,.12);transition:transform .14s,filter .14s,box-shadow .14s}button.btn:hover{transform:translateY(-1px);filter:brightness(1.04);box-shadow:0 10px 25px rgba(63,132,84,.17)}button.btn:active{transform:translateY(0)}button.btn.secondary{background:var(--panel-2);border-color:var(--line);color:var(--ink);box-shadow:none}button.btn.secondary:hover{background:var(--hover);border-color:color-mix(in srgb,var(--accent) 24%,var(--line))}
  body.light-theme button.btn{background:linear-gradient(180deg,#3F8B5B,#31754B);border-color:#31754B;color:#fff}

  /* lotes */
  .segmented{border-radius:11px;padding:4px;background:var(--panel);box-shadow:inset 0 0 0 1px rgba(255,255,255,.01)}.segmented button{height:32px;border-radius:8px}.segmented button.active{background:var(--panel-2);box-shadow:0 3px 12px rgba(0,0,0,.12)}
  .quadra-group{border-top-color:var(--line)}.quadra-lots{grid-template-columns:repeat(auto-fill,minmax(138px,1fr));gap:9px}.lot-tile{min-height:98px;border-radius:13px;background:linear-gradient(180deg,var(--panel-2),color-mix(in srgb,var(--panel-2) 94%,black));transition:transform .16s,border-color .16s,box-shadow .16s}.lot-tile:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 34%,var(--line));box-shadow:0 10px 26px rgba(0,0,0,.13)}
  body.light-theme .lot-tile{background:linear-gradient(180deg,#FAFCFA,#F5F8F6)}

  /* Clube Gran Reserva */
  .loyalty-admin-block{border-radius:18px!important;background:linear-gradient(145deg,rgba(216,183,101,.065),rgba(118,191,144,.035)),var(--panel)!important;border-color:rgba(216,183,101,.20)!important;box-shadow:var(--shadow-soft)}
  .loyalty-milestones-admin>div{border-radius:13px!important;background:color-mix(in srgb,var(--panel-2) 94%,var(--gold) 2%)!important;transition:transform .15s,border-color .15s}.loyalty-milestones-admin>div:hover{transform:translateY(-2px);border-color:rgba(216,183,101,.30)!important}

  /* notificações */
  .gr-notify-panel{border-radius:18px;box-shadow:0 28px 90px rgba(0,0,0,.42);border-color:color-mix(in srgb,var(--accent) 13%,var(--line))}.gr-notify-item{border-radius:12px}.gr-bell-btn{transition:transform .15s}.gr-bell-btn:hover{transform:translateY(-1px)}

  /* portal público/cliente — retoques sem alterar sua identidade */
  #grPublico,#grCliente{--pg:#F3F6F4;--card:#FFFFFF;--linha:#DFE6E1;--tx:#142019;--tx2:#607067;--verde:#296C47;--verde2:#3C8A5C}
  #grPublico .gr-top,#grCliente .gr-top{background:rgba(255,255,255,.88);backdrop-filter:blur(18px) saturate(140%)}
  #grPublico .gr-card,#grCliente .gr-card{border-radius:18px;box-shadow:0 8px 28px rgba(29,66,43,.045)}
  #grPublico .gr-btn,#grCliente .gr-btn{border-radius:11px;box-shadow:0 8px 20px rgba(41,108,71,.10)}

  /* responsivo */
  @media(max-width:1180px){.wrap{padding-left:286px;padding-right:22px}nav.tabs{width:258px}.dashboard-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
  @media(max-width:980px){
    .wrap{padding-left:88px;padding-right:18px}nav.tabs{width:72px;padding:14px 9px}.sidebar-brand{justify-content:center;padding:4px 0 16px}.sidebar-brand>div:last-child,.nav-caption{display:none}.brand-mark{width:38px;height:38px}
    nav.tabs button{justify-content:center;padding:10px!important}.nav-label{display:none}.nav-ico{width:22px;height:22px}.nav-ico svg{width:19px;height:19px}.portal-badge{position:absolute;right:3px;top:3px;margin:0!important}
    .vgv-hero{grid-template-columns:1fr}.vgv-side{grid-template-columns:repeat(3,1fr)}
    #authOverlay{grid-template-columns:minmax(0,1fr) 410px}.auth-showcase{padding:38px}.auth-showcase-copy h1{font-size:3.1rem}.auth-card{width:min(370px,calc(100% - 34px))}
  }
  @media(max-width:720px){
    body{background:var(--paper)}.wrap{padding:0 12px 92px}.page-heading h2,.lot-view-head h2{font-size:1.35rem}.page-heading{margin-bottom:17px}.period-chip{font-size:.59rem}.dashboard-metrics{grid-template-columns:1fr}.vgv-main{padding:21px}.vgv-main>strong{font-size:1.95rem}
    nav.tabs{left:8px;right:8px;bottom:8px;top:auto;width:auto;height:68px;padding:8px;gap:3px;border:1px solid var(--line);border-radius:17px;background:color-mix(in srgb,var(--paper) 90%,transparent);box-shadow:0 18px 45px rgba(0,0,0,.34);backdrop-filter:blur(22px) saturate(130%)}
    nav.tabs button{flex:0 0 48px!important;min-width:48px!important;min-height:48px!important;border-radius:11px!important}.nav-ico{width:22px;height:22px}.nav-ico svg{width:20px;height:20px}
    nav.tabs button.active{box-shadow:inset 0 -3px 0 #80C596}.filters{padding:8px}.card{border-radius:14px}section.block{border-radius:15px;padding:15px}.quadra-lots{grid-template-columns:repeat(2,minmax(0,1fr))}
    #authOverlay{display:flex;background:radial-gradient(circle at 50% 0,rgba(91,177,121,.12),transparent 34%),#080B09}.auth-card{padding:23px!important;width:100%!important;max-width:410px}.auth-card img{height:44px}.auth-showcase{display:none}
  }
}


/* source-style-22: granV2516Performance */

/* V25.16 — resposta tátil/visual mais rápida */
button, [role="button"], nav.tabs button, .gr-btn, .quick-action, .lot-tile{
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}
nav.tabs button, button.btn, .gr-btn{will-change:transform}
@media screen{
  .view.active{animation-duration:.11s!important}
  button.btn:active,.gr-btn:active,.quick-action:active{transform:scale(.985)!important}
}
@media(prefers-reduced-motion:reduce){
  .view.active{animation:none!important}
}


/* source-style-23: v2541-hotfix-styles */

.quadro-resumo-inicial{border-width:2px!important;background:#fffdf7!important;margin:20px 0 28px!important}
.quadro-resumo-inicial h5{font-size:.9rem!important}
#nvCepMsg,#nvCepPJMsg{min-height:1.2em}
@media(max-width:720px){#nvFormaVendaBotoes,#nvMeioPagamentoBotoes,#simMeioPagamentoBotoes{display:grid;grid-template-columns:1fr 1fr}.pay-option-btn{width:100%}}


/* source-style-24: granV35Styles */

/* V3.6 — acabamento profissional e impressão segura */
.required-pill{display:inline-flex;align-items:center;margin-left:6px;padding:2px 7px;border-radius:999px;background:rgba(75,224,161,.08);border:1px solid rgba(75,224,161,.18);color:#83cda4;font-size:.56rem;font-weight:750;letter-spacing:.03em;vertical-align:middle}
.field-hint{display:block;margin-top:6px;color:var(--ink-soft);font-size:.61rem;line-height:1.35;font-weight:450}.phone-field.field-error input{border-color:rgba(227,109,88,.72)!important;box-shadow:0 0 0 3px rgba(227,109,88,.08)!important}.phone-field.field-error .field-hint{color:#e39a8d}
.validation-doc-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.08)}
.client-rectify-overlay{position:fixed;inset:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(2,5,4,.78);backdrop-filter:blur(8px)}.client-rectify-dialog{width:min(760px,100%);max-height:82vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:22px;box-shadow:0 28px 90px rgba(0,0,0,.5)}.client-rectify-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}.client-rectify-head h2{font-size:1.2rem;margin:3px 0}.client-rectify-item{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:12px;margin-top:8px}.client-rectify-item small{color:var(--ink-soft);display:block;margin-top:4px}.client-rectify-note{padding:10px 12px;border-radius:11px;background:rgba(216,174,82,.07);border:1px solid rgba(216,174,82,.18);font-size:.69rem;color:var(--ink-soft);line-height:1.45}
/* Certidão visual mais compacta */
.quitacao-doc{min-height:auto!important}.quitacao-title{margin:22px 0 16px}.quitacao-auth-grid{margin:13px 0;padding:12px}.quitacao-fields{margin:12px 0}.quitacao-body p{margin-bottom:9px}.quitacao-signatures{margin-top:42px}.quitacao-footer{margin-top:24px}
/* Contrato: rodapé de rubricas realmente repetido em todas as laudas, com espaço reservado. */
@media print{
  @page{size:A4 portrait;margin:13mm 15mm 24mm 15mm}
  body.print-contract-v35 #printRubricaFooter{display:flex!important;position:fixed!important;left:15mm!important;right:15mm!important;bottom:5mm!important;height:8mm!important;align-items:flex-end!important;justify-content:flex-end!important;gap:5mm!important;padding-top:1.8mm!important;border-top:1px solid #999!important;background:#fff!important;color:#333!important;font:7pt Arial,sans-serif!important;z-index:40!important}
  body.print-contract-v35 #printRubricaFooter .rub-box{display:inline-block!important;min-width:27mm!important;border-bottom:1px solid #222!important;text-align:center!important;padding-bottom:.7mm!important;color:#555!important}
  body.print-contract-v35 #view-contrato>.print-watermark{display:block!important;position:fixed!important;inset:0!important;opacity:.055!important;z-index:0!important;background-position:center center!important;background-repeat:no-repeat!important;background-size:365px auto!important}
  body.print-contract-v35 #view-contrato>.print-watermark::after{content:attr(data-empreendimento)!important;position:absolute!important;left:50%!important;top:57%!important;transform:translate(-50%,-50%) rotate(-31deg)!important;font:700 23px Arial,sans-serif!important;letter-spacing:.15em!important;color:#2c533f!important;opacity:.13!important;white-space:nowrap!important}
  body.print-contract-v35 .contract-signatures-block{break-inside:avoid!important;page-break-inside:avoid!important}
  body.print-contract-v35 .contrato-doc .sign{display:grid!important;grid-template-columns:1fr 1fr!important;gap:15mm 9mm!important;margin-top:11mm!important}
  body.print-contract-v35 .contrato-doc .sign .line{width:100%!important;margin:10mm 0 0!important;min-height:12mm!important;display:flex!important;align-items:flex-end!important;justify-content:center!important;line-height:1.35!important}
  body.print-contract-v35 .contrato-doc .sign .line:nth-child(3){grid-column:1/-1!important;width:48%!important;justify-self:center!important}
}


/* source-style-25: granMapaV7Styles */

/* =========================================================
   MAPA DO EMPREENDIMENTO — enquadramento, leitura e interação
   Escopo restrito ao módulo do mapa. Nenhuma geometria alterada.
   ========================================================= */
#view-mapa .dxf-map-panel{padding-bottom:14px}

/* --- barra superior: painel de status + controles --- */
#view-mapa .dxf-map-topbar{align-items:center;gap:12px;padding:10px 12px;margin-bottom:12px;
  border:1px solid rgba(255,255,255,.07);border-radius:14px;background:rgba(255,255,255,.022)}
#view-mapa .dxf-map-summary{gap:8px!important;font-size:.68rem}
#view-mapa .dxf-map-summary span{gap:7px;padding:5px 11px;border-radius:999px;
  background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);white-space:nowrap}
#view-mapa .dxf-map-summary b{font-variant-numeric:tabular-nums;font-weight:750}
#view-mapa .map-dot{width:7px;height:7px;box-shadow:0 0 0 3px rgba(255,255,255,.05)}
#view-mapa .dot-disp{background:#3FAE78}#view-mapa .dot-neg{background:#4E92C9}
#view-mapa .dot-res{background:#C9A544}#view-mapa .dot-ven{background:#C4685A}
#view-mapa .dxf-map-controls{gap:6px}
#view-mapa .dxf-map-controls .btn{min-width:34px}
#view-mapa #dxfZoomLabel{min-width:52px;font-variant-numeric:tabular-nums}
#view-mapa #dxfToggleLabels[aria-pressed="true"]{background:rgba(75,224,161,.12);
  border-color:rgba(75,224,161,.34);color:#9fe0be}

/* --- área do mapa --- */
#view-mapa .dxf-map-viewport{background:#08120D!important;cursor:grab;position:relative;
  height:min(76vh,820px);min-height:460px;border-color:rgba(255,255,255,.08)!important}
#view-mapa .dxf-map-viewport.dragging{cursor:grabbing}
#view-mapa .dxf-v46-backdrop,#view-mapa [data-oculto="1"]{display:none!important}
#view-mapa .dxf-a11y{display:none}
#dxfMapSvg{--dxf-lot-font:2.1px;--dxf-area-font:1.5px;--dxf-road-font:2.1px;
  --dxf-quadra-font:4.4px;--dxf-zone-font:2px}

/* --- vias: asfalto e meio-fio, só a geometria que já existe --- */
#view-mapa .dxf-v46-roads{fill:#222A26!important;stroke:#3D4A43!important;stroke-width:.4!important}
#view-mapa .dxf-v46-sidewalk-lines{stroke:#4C5A52!important;stroke-width:.34!important;opacity:.85!important}
#view-mapa .dxf-v46-green{fill:rgba(31,106,69,.13)!important;stroke:#2C5B43!important;opacity:.8!important}
#view-mapa .dxf-v46-grass{fill:rgba(31,106,69,.09)!important;stroke:#2A5540!important}
#view-mapa .dxf-v46-cooper-fill{fill:rgba(150,116,60,.10)!important;stroke:none!important}
#view-mapa .dxf-v46-cooper-lines{stroke:#9A7A44!important;stroke-width:.7!important;opacity:.7!important}

/* --- lotes: contraste por status, formas intactas --- */
#view-mapa .dxf-lot-shape{stroke:#8FA096!important;stroke-width:.42!important;
  fill:#1F6A45!important;fill-opacity:1!important;vector-effect:non-scaling-stroke}
#view-mapa .status-disponivel .dxf-lot-shape{fill:#1F6A45!important}
#view-mapa .status-negociacao .dxf-lot-shape{fill:#286692!important}
#view-mapa .status-reservado  .dxf-lot-shape{fill:#8A702A!important}
#view-mapa .status-vendido    .dxf-lot-shape{fill:#914136!important}
#view-mapa .status-bloqueado  .dxf-lot-shape{fill:#414A45!important;opacity:.72}
#view-mapa .status-distratado .dxf-lot-shape{fill:#674A83!important}
#view-mapa .dxf-lot-group:hover .dxf-lot-shape{stroke:#FFFFFF!important;stroke-width:1.5!important;
  filter:brightness(1.22) drop-shadow(0 0 2px rgba(255,255,255,.32))}
#view-mapa .dxf-lot-group.selected .dxf-lot-shape{stroke:#FFFFFF!important;stroke-width:1.9!important;
  filter:brightness(1.24) drop-shadow(0 0 3px rgba(255,255,255,.42))}
/* comercial: contorno dourado, mas o status manda na cor */
#view-mapa .dxf-lot-group[data-dxf-lot^="COM-"] .dxf-lot-shape{stroke:#D9B253!important;stroke-width:.8!important}
#view-mapa .dxf-lot-group[data-dxf-lot^="COM-"]:hover .dxf-lot-shape{stroke:#FFE3A0!important;stroke-width:1.6!important}
#view-mapa .dxf-unidentified path{stroke:#7E8A84!important;opacity:.5!important}

/* --- rótulos proporcionais ao zoom --- */
#view-mapa .dxf-lot-label{font-size:var(--dxf-lot-font)!important;fill:#EEF5F0!important;
  stroke:#06110B!important;stroke-width:.62px!important;paint-order:stroke;font-weight:650!important}
#view-mapa .dxf-lot-area{font-size:var(--dxf-area-font);fill:#B8CCC0;text-anchor:middle;
  dominant-baseline:middle;pointer-events:none;paint-order:stroke;stroke:#06110B;stroke-width:.5px;
  font-family:var(--mono,monospace);opacity:0;transition:opacity .12s}
#dxfMapSvg.zoom-detalhe .dxf-lot-area{opacity:.88}
#view-mapa .dxf-road-label{font-size:var(--dxf-road-font)!important}
#view-mapa .dxf-road-label-avenida{fill:#EFD79A!important;font-weight:750!important;letter-spacing:.06em}
#view-mapa .dxf-road-label-projetada{fill:#93A79B!important;font-weight:600!important;opacity:.9}
#view-mapa .dxf-quadra-label{font-size:var(--dxf-quadra-font)!important;
  fill:rgba(205,220,211,.38)!important;font-weight:800!important;letter-spacing:.04em}
#view-mapa .dxf-commercial-label-v29{fill:#E8C574!important;font-size:calc(var(--dxf-zone-font) * 1.25)!important;
  letter-spacing:.10em;font-weight:750!important}

/* --- áreas de expansão: azul petróleo discreto, atrás dos lotes --- */
#view-mapa .zone-shape,#view-mapa .dxf-expansion-zone{fill:rgba(31,74,92,.42)!important;
  stroke:#2F6377!important;stroke-width:.45!important}
#view-mapa .dxf-zone-label{fill:#9FC4D2!important;font-size:var(--dxf-zone-font)!important;
  letter-spacing:.09em;font-weight:700!important;opacity:.92}
#view-mapa .dxf-zone-sub{fill:#7FA3B1!important;font-size:calc(var(--dxf-zone-font) * .8)!important;opacity:.85}

/* --- botão Rótulos --- */
#view-mapa .dxf-map-viewport.labels-off .dxf-lot-label,
#view-mapa .dxf-map-viewport.labels-off .dxf-lot-area,
#view-mapa .dxf-map-viewport.labels-off .dxf-quadra-label{display:none!important}

/* --- tooltip --- */
#view-mapa .dxf-tip{position:absolute;z-index:6;pointer-events:none;min-width:172px;max-width:262px;
  padding:9px 11px;border-radius:11px;background:rgba(9,17,13,.96);
  border:1px solid rgba(255,255,255,.13);box-shadow:0 10px 26px rgba(0,0,0,.5);
  font-size:.66rem;line-height:1.45;color:#DCE7E0;backdrop-filter:blur(3px)}
#view-mapa .dxf-tip[hidden]{display:none}
#view-mapa .dxf-tip-h{display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding-bottom:6px;margin-bottom:6px;border-bottom:1px solid rgba(255,255,255,.10)}
#view-mapa .dxf-tip-h strong{font-size:.72rem;letter-spacing:.04em;color:#fff}
#view-mapa .dxf-tip-com{font-size:.5rem;letter-spacing:.08em;color:#E8C574;
  border:1px solid rgba(232,197,116,.4);border-radius:999px;padding:1px 6px;white-space:nowrap}
#view-mapa .dxf-tip-r{display:flex;justify-content:space-between;gap:14px}
#view-mapa .dxf-tip-r span{color:#8FA398}
#view-mapa .dxf-tip-r b{font-weight:650;font-variant-numeric:tabular-nums;text-align:right}
#view-mapa .dxf-tip-s{margin-top:7px;padding:3px 8px;border-radius:999px;text-align:center;
  font-size:.58rem;font-weight:750;letter-spacing:.05em}
#view-mapa .dxf-tip-s.status-disponivel{background:rgba(31,106,69,.34);color:#7FD8AA}
#view-mapa .dxf-tip-s.status-negociacao{background:rgba(40,102,146,.34);color:#8FC4EC}
#view-mapa .dxf-tip-s.status-reservado{background:rgba(138,112,42,.34);color:#E6C878}
#view-mapa .dxf-tip-s.status-vendido{background:rgba(145,65,54,.34);color:#F0A093}
#view-mapa .dxf-tip-s.status-bloqueado{background:rgba(65,74,69,.44);color:#B6C2BB}
#view-mapa .dxf-tip-s.status-distratado{background:rgba(103,74,131,.34);color:#C7A8E0}

/* --- responsivo --- */
@media(max-width:1100px){#view-mapa .dxf-map-viewport{height:min(70vh,640px)}}
@media(max-width:720px){
  #view-mapa .dxf-map-topbar{flex-direction:column;align-items:stretch}
  #view-mapa .dxf-map-controls{justify-content:space-between}
  #view-mapa .dxf-map-viewport{height:62vh;min-height:380px;touch-action:none}
  #view-mapa .dxf-tip{max-width:200px;font-size:.62rem}
}
@media(prefers-reduced-motion:reduce){#view-mapa .dxf-lot-area{transition:none}}

/* --- palco: mapa + trilho de informação (elimina o vazio lateral) --- */
#view-mapa .dxf-map-stage{display:flex;gap:16px;align-items:flex-start;justify-content:center}
#view-mapa .dxf-map-viewport{flex:0 0 auto;
  height:min(82vh,880px);
  width:calc(min(82vh,880px) * 307 / 374);   /* proporção real da planta */
  max-width:100%}
#view-mapa .dxf-map-rail{flex:0 1 360px;min-width:250px;display:flex;flex-direction:column;gap:12px;
  max-height:min(82vh,880px);overflow:auto}
#view-mapa .dxf-rail-card{border:1px solid rgba(255,255,255,.07);border-radius:14px;
  background:rgba(255,255,255,.022);padding:13px 15px}
#view-mapa .dxf-rail-card h4{margin:0 0 9px;font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-soft);font-weight:700}
#view-mapa .dxf-rail-empty{margin:0;font-size:.68rem;color:var(--ink-soft);line-height:1.5}
#view-mapa .dxf-rail-key{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:11px}
#view-mapa .dxf-rail-key strong{font-size:1.32rem;font-weight:750;letter-spacing:-.01em}
#view-mapa .dxf-rail-key span{font-size:.55rem;letter-spacing:.09em;text-transform:uppercase;color:#E8C574}
#view-mapa .dxf-rail-dl{margin:0;display:grid;gap:7px}
#view-mapa .dxf-rail-dl>div{display:flex;justify-content:space-between;gap:12px;font-size:.69rem}
#view-mapa .dxf-rail-dl dt{color:var(--ink-soft);margin:0}
#view-mapa .dxf-rail-dl dd{margin:0;font-weight:650;font-variant-numeric:tabular-nums;text-align:right}
#view-mapa .dxf-rail-status{margin-top:12px;padding:6px 10px;border-radius:999px;text-align:center;
  font-size:.62rem;font-weight:750;letter-spacing:.05em}
#view-mapa .dxf-rail-status.status-disponivel{background:rgba(31,106,69,.3);color:#7FD8AA}
#view-mapa .dxf-rail-status.status-negociacao{background:rgba(40,102,146,.3);color:#8FC4EC}
#view-mapa .dxf-rail-status.status-reservado{background:rgba(138,112,42,.3);color:#E6C878}
#view-mapa .dxf-rail-status.status-vendido{background:rgba(145,65,54,.3);color:#F0A093}
#view-mapa .dxf-rail-status.status-bloqueado{background:rgba(65,74,69,.4);color:#B6C2BB}
#view-mapa .dxf-rail-status.status-distratado{background:rgba(103,74,131,.3);color:#C7A8E0}
#view-mapa .dxf-rail-extra{margin-top:11px;padding-top:10px;border-top:1px solid rgba(255,255,255,.08);
  display:grid;gap:3px;font-size:.66rem}
#view-mapa .dxf-rail-extra span{color:var(--ink-soft)}
#view-mapa .dxf-rail-extra b{font-weight:650;margin-bottom:5px;display:block;line-height:1.35}
#view-mapa .dxf-rail-leg{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:.67rem;color:var(--ink-soft)}
#view-mapa .dxf-rail-leg li{display:flex;align-items:center;gap:8px}
#view-mapa .dxf-rail-leg i{width:12px;height:12px;border-radius:3px;flex:0 0 auto;border:1px solid rgba(255,255,255,.14)}
#view-mapa .dxf-rail-leg2{margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.08)}
#view-mapa .lg-disp{background:#1F6A45}#view-mapa .lg-neg{background:#286692}
#view-mapa .lg-res{background:#8A702A}#view-mapa .lg-ven{background:#914136}
#view-mapa .lg-blo{background:#414A45}#view-mapa .lg-dis{background:#674A83}
#view-mapa .lg-com{background:#1F6A45;border-color:#D9B253!important;border-width:2px!important}
#view-mapa .lg-exp{background:rgba(31,74,92,.75);border-color:#2F6377!important}
#view-mapa .lg-via{background:#222A26;border-color:#3D4A43!important}
#view-mapa .lg-ver{background:rgba(31,106,69,.35);border-color:#2C5B43!important}
#view-mapa .dxf-rail-note p{margin:0 0 8px;font-size:.66rem;line-height:1.55;color:var(--ink-soft)}
#view-mapa .dxf-rail-hint{opacity:.75;font-style:italic}

@media(max-width:1180px){
  #view-mapa .dxf-map-stage{flex-direction:column}
  #view-mapa .dxf-map-viewport{width:100%;height:min(70vh,620px);flex:1 1 auto}
  #view-mapa .dxf-map-rail{max-height:none;width:100%;flex-direction:row;flex-wrap:wrap}
  #view-mapa .dxf-rail-card{flex:1 1 240px}
}
@media(max-width:720px){
  /* a barra de navegação inferior é fixa (bottom:8px, 62px de altura);
     a folga abaixo evita que ela cubra o fim do mapa. Escopo: só esta view. */
  #view-mapa{padding-bottom:86px}
  #view-mapa .dxf-map-viewport{height:56vh;min-height:340px}
  #view-mapa .dxf-map-rail{flex-direction:column}
  #view-mapa .dxf-rail-card{flex:0 0 auto}
  #view-mapa .dxf-map-help{margin-bottom:0}
}



/* source-style-26: grPortalCss */

/* =====================================================================
   GRAN RESERVA — PORTAL (Área Pública + Área do Cliente)
   Escopo isolado sob #grPublico e #grCliente. Não afeta o admin.
   ===================================================================== */
#grPublico,#grCliente{
  --pg:#F4F6F4; --card:#FFFFFF; --linha:#E2E7E3; --linha2:#EFF2EF;
  --tx:#16211B; --tx2:#5A6B61; --tx3:#8A9A90;
  --verde:#1F6A45; --verde2:#2E8A5C; --verde-cl:#E8F3EC;
  --ambar:#8A702A; --ambar-cl:#FBF3E0; --azul:#286692; --azul-cl:#E7F0F7;
  --vermelho:#914136; --vermelho-cl:#FBEAE7; --cinza:#697A70;
  position:fixed; inset:0; z-index:900; overflow-y:auto; overflow-x:hidden;
  background:var(--pg); color:var(--tx);
  font:400 15px/1.55 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased; display:none;
}
#grPublico.on,#grCliente.on{display:block}
#grPublico *,#grCliente *{box-sizing:border-box}
.gr-wrap{max-width:1180px;margin:0 auto;padding:0 18px}
.gr-mono{font-family:ui-monospace,"SF Mono",Menlo,monospace;font-variant-numeric:tabular-nums}

/* ---- topo ---- */
.gr-top{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.94);
  backdrop-filter:blur(8px);border-bottom:1px solid var(--linha)}
.gr-top .gr-wrap{display:flex;align-items:center;gap:14px;height:62px}
.gr-marca{display:flex;align-items:center;gap:10px;font-weight:750;letter-spacing:-.01em}
.gr-marca i{width:32px;height:32px;border-radius:9px;background:var(--verde);color:#fff;
  display:grid;place-items:center;font-style:normal;font-size:.72rem;font-weight:800}
.gr-marca small{display:block;font-size:.62rem;color:var(--tx3);font-weight:500;letter-spacing:.09em}
.gr-espaco{flex:1}
.gr-menu{display:flex;gap:2px}
.gr-menu button{border:0;background:transparent;color:var(--tx2);font:600 .8rem/1 inherit;
  padding:9px 13px;border-radius:8px;cursor:pointer;white-space:nowrap}
.gr-menu button:hover{background:var(--verde-cl);color:var(--verde)}
.gr-menu .gr-sm{display:none}
.gr-menu button.on{background:var(--verde);color:#fff}

/* ---- botões ---- */
.gr-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border:1px solid var(--verde);background:var(--verde);color:#fff;
  font:650 .82rem/1 inherit;padding:12px 20px;border-radius:10px;cursor:pointer;
  transition:filter .15s}
.gr-btn:hover{filter:brightness(1.1)}
.gr-btn:disabled{opacity:.45;cursor:not-allowed;filter:none}
.gr-btn.sec{background:transparent;color:var(--verde)}
.gr-btn.sec:hover{background:var(--verde-cl)}
.gr-btn.cinza{background:transparent;border-color:var(--linha);color:var(--tx2)}
.gr-btn.cinza:hover{background:var(--linha2);color:var(--tx)}
.gr-btn.bloco{width:100%}
.gr-btn.pq{padding:8px 13px;font-size:.74rem;border-radius:8px}

/* ---- cartões / grades ---- */
.gr-card{background:var(--card);border:1px solid var(--linha);border-radius:16px;padding:22px}
.gr-grid{display:grid;gap:16px}
@media(min-width:860px){.gr-grid{grid-template-columns:repeat(auto-fit,minmax(270px,1fr))}
  .gr-2{grid-template-columns:1fr 1fr}.gr-3{grid-template-columns:repeat(3,1fr)}}
.gr-h1{font-size:clamp(1.7rem,3.6vw,2.5rem);font-weight:750;letter-spacing:-.03em;margin:0 0 6px;text-wrap:balance}
.gr-h2{font-size:1.12rem;font-weight:700;letter-spacing:-.015em;margin:0 0 14px}
.gr-sub{color:var(--tx2);margin:0 0 26px;max-width:62ch}
.gr-rot{font-size:.6rem;letter-spacing:.13em;text-transform:uppercase;color:var(--tx3);font-weight:700}
.gr-linha{display:flex;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px solid var(--linha2);font-size:.85rem}
.gr-linha:last-child{border-bottom:0}
.gr-linha span{color:var(--tx2)}
.gr-linha strong{font-weight:650;text-align:right}
.gr-forte{font-size:1.5rem;font-weight:750;letter-spacing:-.025em}

/* ---- selos de status ---- */
.gr-selo{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:999px;
  font-size:.68rem;font-weight:700;letter-spacing:.02em;white-space:nowrap}
.gr-selo::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.s-disponivel{background:var(--verde-cl);color:var(--verde)}
.s-reservado,.s-aguardando{background:var(--ambar-cl);color:var(--ambar)}
.s-negociacao{background:var(--azul-cl);color:var(--azul)}
.s-vendido{background:var(--vermelho-cl);color:var(--vermelho)}
.s-bloqueado,.s-distratado{background:#EEF1EF;color:var(--cinza)}
.s-paga{background:var(--verde-cl);color:var(--verde)}
.s-vencida{background:var(--vermelho-cl);color:var(--vermelho)}
.s-avencer{background:#EEF1EF;color:var(--cinza)}
.s-ativa{background:var(--verde-cl);color:var(--verde)}
.s-quitada{background:var(--verde-cl);color:var(--verde)}
.s-pendente,.s-aberta,.s-registrada{background:var(--ambar-cl);color:var(--ambar)}
.s-cancelada,.s-expirada,.s-estornada{background:#EEF1EF;color:var(--cinza)}
.s-parcialvencida{background:var(--vermelho-cl);color:var(--vermelho)}

/* ---- aviso de demonstração ---- */
.gr-demo{display:flex;gap:11px;align-items:flex-start;background:var(--ambar-cl);
  border:1px solid #E8D9B0;border-radius:12px;padding:13px 15px;font-size:.78rem;color:#6B5618;line-height:1.5}
.gr-demo b{display:block;margin-bottom:2px;letter-spacing:.02em}

/* ---- mapa público ---- */
.gr-mapa{border:1px solid var(--linha);border-radius:16px;overflow:hidden;background:#0B1310;
  height:min(66vh,620px);position:relative;cursor:grab;touch-action:none}
.gr-mapa.arrastando{cursor:grabbing}
.gr-mapa-linha{display:flex;gap:16px;align-items:stretch}
.gr-mapa-linha>.gr-mapa{flex:1 1 auto;min-width:0;height:min(76vh,720px)}
.gr-mapa-rail{flex:0 0 288px;display:flex;flex-direction:column;gap:12px;overflow:auto;
  max-height:min(76vh,720px)}
.gr-mapa-rail .gr-card{padding:16px}
.gr-leg{display:flex;align-items:center;gap:9px;padding:7px 0;font-size:.82rem;color:var(--tx2);
  border-bottom:1px solid var(--linha)}
.gr-leg:last-child{border-bottom:0}
.gr-leg i{width:10px;height:10px;border-radius:3px;font-style:normal;flex:0 0 auto}
.gr-leg b{margin-left:auto;color:var(--tx);font-variant-numeric:tabular-nums}
.gr-linha-btn{width:100%;background:none;border:0;border-bottom:1px solid var(--linha);
  font:inherit;text-align:left;cursor:pointer;padding:9px 0;font-size:.8rem;
  display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.gr-linha-btn span{color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gr-linha-btn strong{white-space:nowrap}
.gr-linha-btn:last-child{border-bottom:0}
.gr-linha-btn:hover span,.gr-linha-btn:hover strong{color:var(--verde)}
@media(max-width:980px){
  .gr-mapa-linha{flex-direction:column}
  .gr-mapa-linha>.gr-mapa{height:min(56vh,520px)}
  .gr-mapa-rail{flex:0 0 auto;max-height:none;flex-direction:row;flex-wrap:wrap}
  .gr-mapa-rail .gr-card{flex:1 1 240px}
}
.gr-mapa svg{width:100%;height:100%;display:block}
.gr-mapa-barra{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}
.gr-mapa-ferramentas{display:flex;gap:8px;align-items:center}
.gr-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:999px;
  background:var(--card);border:1px solid var(--linha);font-size:.74rem;color:var(--tx2)}
.gr-chip b{color:var(--tx);font-variant-numeric:tabular-nums}
.gr-chip i{width:8px;height:8px;border-radius:50%;font-style:normal}

/* ---- formulários ---- */
.gr-campo{display:block;margin-bottom:14px}
.gr-campo>span{display:block;font-size:.72rem;font-weight:650;color:var(--tx2);margin-bottom:5px}
.gr-campo input,.gr-campo select,.gr-campo textarea{
  width:100%;border:1px solid var(--linha);border-radius:10px;padding:11px 13px;
  font:400 .88rem inherit;color:var(--tx);background:var(--card);outline:0}
.gr-campo input:focus,.gr-campo select:focus{border-color:var(--verde2);box-shadow:0 0 0 3px var(--verde-cl)}
.gr-campo.erro input,.gr-campo.erro select{border-color:var(--vermelho)}
.gr-campo em{display:block;font-style:normal;font-size:.68rem;color:var(--vermelho);margin-top:4px}
.gr-fgrid{display:grid;gap:0 14px}
@media(min-width:700px){.gr-fgrid{grid-template-columns:1fr 1fr}.gr-full{grid-column:1/-1}}

/* ---- passos ---- */
.gr-passos{display:flex;gap:6px;margin-bottom:22px;flex-wrap:wrap}
.gr-passo{flex:1;min-width:88px;border-top:3px solid var(--linha);padding-top:8px;
  font-size:.66rem;color:var(--tx3);font-weight:650}
.gr-passo.on{border-top-color:var(--verde);color:var(--verde)}
.gr-passo.ok{border-top-color:var(--verde2);color:var(--tx2)}

/* ---- contagem regressiva ---- */
.gr-relogio{font-variant-numeric:tabular-nums;font-size:2.1rem;font-weight:750;letter-spacing:-.02em;color:var(--ambar)}
.gr-relogio.urgente{color:var(--vermelho)}

/* ---- pagamento ---- */
.gr-pix{display:grid;gap:16px}
@media(min-width:700px){.gr-pix{grid-template-columns:200px 1fr}}
.gr-qr{width:200px;height:200px;border:1px solid var(--linha);border-radius:12px;background:#fff;
  display:grid;place-items:center;padding:10px}
.gr-qr svg{width:100%;height:100%}
.gr-copia{font-family:ui-monospace,monospace;font-size:.68rem;word-break:break-all;color:var(--tx2);
  background:var(--linha2);border-radius:10px;padding:11px;line-height:1.5;max-height:96px;overflow:auto}

/* ---- barra de progresso ---- */
.gr-barra{height:9px;border-radius:99px;background:var(--linha);overflow:hidden;margin:10px 0 6px}
.gr-barra i{display:block;height:100%;background:var(--verde);border-radius:99px;transition:width .4s}

/* ---- tabela ---- */
.gr-tab-wrap{overflow-x:auto;border:1px solid var(--linha);border-radius:14px;background:var(--card)}
.gr-tab{width:100%;border-collapse:collapse;font-size:.82rem;min-width:640px}
.gr-tab th{text-align:left;font-size:.62rem;letter-spacing:.09em;text-transform:uppercase;
  color:var(--tx3);font-weight:700;padding:12px 14px;border-bottom:1px solid var(--linha);white-space:nowrap}
.gr-tab td{padding:12px 14px;border-bottom:1px solid var(--linha2);vertical-align:middle}
.gr-tab tr:last-child td{border-bottom:0}
.gr-tab td.num{text-align:right;font-variant-numeric:tabular-nums}

/* ---- linha do tempo ---- */
/* ---- atendimento ---- */
.gr-canais{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.gr-canal{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--linha);
  border-radius:12px;text-decoration:none;color:inherit;background:var(--pg);transition:border-color .15s}
a.gr-canal:hover{border-color:var(--verde);background:var(--verde-cl)}
.gr-canal i{width:34px;height:34px;border-radius:10px;background:var(--verde);color:#fff;
  display:grid;place-items:center;font-style:normal;font-size:1rem;flex:0 0 auto}
.gr-canal b{display:block;font-size:.86rem}
.gr-canal small{display:block;color:var(--tx2);font-size:.78rem}
.gr-chamados{display:flex;flex-direction:column;gap:12px}
.gr-chamado{background:var(--card);border:1px solid var(--linha);border-radius:14px;padding:18px}
.gr-chamado-topo{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.gr-chamado-topo b{font-size:.95rem}
.gr-chamado-topo small{display:block;color:var(--tx3);font-size:.72rem;margin-top:2px}
.gr-chamado-alt{margin:12px 0 0;padding:10px 12px;background:var(--pg);border-radius:10px;
  font-size:.78rem;color:var(--tx2);line-height:1.7}
.gr-chamado-msg{margin:12px 0 0;font-size:.86rem;color:var(--tx);white-space:pre-wrap}
.gr-chamado-resp{margin:14px 0 0;padding:12px 14px;background:var(--verde-cl);
  border-left:3px solid var(--verde);border-radius:0 10px 10px 0}
.gr-chamado-resp p{margin:6px 0 0;font-size:.86rem;white-space:pre-wrap}
.gr-chamado-aguarda{margin:12px 0 0;font-size:.76rem;color:var(--tx3);font-style:italic}

.gr-tl{list-style:none;margin:0;padding:0}
.gr-tl li{position:relative;padding:0 0 20px 28px;font-size:.84rem;color:var(--tx2)}
.gr-tl li::before{content:"";position:absolute;left:0;top:3px;width:14px;height:14px;border-radius:50%;
  border:2px solid var(--linha);background:var(--card)}
.gr-tl li::after{content:"";position:absolute;left:6px;top:19px;bottom:0;width:2px;background:var(--linha)}
.gr-tl li:last-child::after{display:none}
.gr-tl li.ok{color:var(--tx)}
.gr-tl li.ok::before{border-color:var(--verde);background:var(--verde);
  box-shadow:inset 0 0 0 2px var(--card)}
.gr-tl li b{display:block;font-weight:650}
.gr-tl li small{color:var(--tx3);font-size:.7rem}

/* ---- rodapé / celular ---- */
.gr-rodape{margin-top:44px;padding:22px 0 40px;border-top:1px solid var(--linha);
  font-size:.72rem;color:var(--tx3);line-height:1.7}
@media(max-width:720px){
  /* backdrop-filter cria bloco de contenção: com ele, a barra inferior
     (position:fixed) ficaria ancorada ao cabeçalho, não à janela. */
  .gr-top{backdrop-filter:none;background:#fff}
  .gr-top .gr-wrap{height:56px;gap:8px}
  .gr-mapa-ferramentas{margin-left:auto}
  .gr-menu{position:fixed;left:8px;right:8px;bottom:8px;z-index:30;background:rgba(255,255,255,.97);
    border:1px solid var(--linha);border-radius:14px;padding:6px;justify-content:space-between;
    box-shadow:0 6px 24px rgba(0,0,0,.09);backdrop-filter:blur(8px)}
  .gr-menu button{flex:1 1 0;min-width:0;padding:9px 2px;font-size:.6rem;border-radius:10px;
    text-align:center;overflow:hidden;white-space:nowrap}
  .gr-menu .gr-lg{display:none}
  .gr-menu .gr-sm{display:inline}
  /* só o conteúdo ganha folga para a barra inferior; o .gr-wrap do
     cabeçalho tem altura fixa e o padding o faria transbordar. */
  #grCliente>.gr-wrap,#grPublico>.gr-wrap{padding-bottom:78px}
  .gr-card{padding:17px;border-radius:14px}
  .gr-mapa{height:56vh}
}
@media(prefers-reduced-motion:reduce){#grPublico *,#grCliente *{transition:none!important}}

/* ---- Obra: barra de andamento (área do cliente) ---- */
.gr-barra{background:rgba(0,0,0,.09);border-radius:99px;height:12px;overflow:hidden;margin:10px 0}
.gr-barra>div{height:100%;border-radius:99px;background:linear-gradient(90deg,#b08d57,#d4b483);transition:width .35s ease}
.gr-lista{display:flex;flex-direction:column;gap:16px}
.gr-linha-topo{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:.95rem}
.gr-destaque{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:6px 0 4px}

/* =====================================================================
   SISTEMA DE MOVIMENTO
   Uma única escala de tempo e uma única curva para o portal inteiro.
   Antes cada componente escolhia sua duração no olho, e o conjunto ficava
   irregular: um card entrava em 150ms, o drawer em 400ms, o mapa em 220ms.
   ===================================================================== */
:root{
  --motion-instant:120ms;
  --motion-fast:180ms;
  --motion-normal:280ms;
  --motion-slow:450ms;
  --motion-cine:640ms;
  --ease-premium:cubic-bezier(.22,1,.36,1);   /* saída longa, chegada macia */
  --ease-saida:cubic-bezier(.4,0,.2,1);
  --ease-mola:cubic-bezier(.34,1.28,.64,1);   /* mola discreta, sem quicar */
}

/* =====================================================================
   LED PERIMETRAL DO LOTE
   O efeito antigo pulsava a opacidade do próprio lote — piscava, não
   percorria. Agora existe uma CAMADA SEPARADA por cima do mapa:
   o path original continua sendo o dono da geometria, do status e do
   clique; a camada é só luz e não recebe evento nenhum.

   A luz corre de verdade: stroke-dasharray recorta um trecho aceso, o
   stroke-dashoffset é animado do comprimento total até zero, e o trecho
   viaja pelo perímetro. Uma segunda faixa, mais curta e mais clara, anda
   colada na frente — é a cabeça do LED.

   PERFORMANCE: no máximo dois polígonos animados na tela (o selecionado
   e o sob o cursor), nunca os 176. Quem anima é o compositor, via CSS;
   não há requestAnimationFrame rodando à toa.
   ===================================================================== */
#grMapa .gr-led-camada{pointer-events:none}

/* o trilho: mostra o caminho inteiro por onde a luz vai passar */
#grMapa .gr-led-trilho{
  fill:none; stroke:var(--gr-led-cor,#D8AE52); opacity:.34;
  stroke-linejoin:round; stroke-linecap:round;
}
/* o preenchimento levemente iluminado do lote escolhido */
#grMapa .gr-led-preenche{
  stroke:none; fill:var(--gr-led-cor,#D8AE52); opacity:.13;
}
/* a faixa que corre */
#grMapa .gr-led-corrida{
  fill:none; stroke:var(--gr-led-cor,#D8AE52); stroke-linecap:round; stroke-linejoin:round;
  filter:drop-shadow(0 0 2px var(--gr-led-halo,rgba(216,174,82,.95)))
         drop-shadow(0 0 7px var(--gr-led-halo,rgba(216,174,82,.6)));
  animation:grLedCorre var(--gr-led-dur,2.8s) linear infinite;
}
/* a cabeça de luz, na frente da faixa */
#grMapa .gr-led-cabeca{
  fill:none; stroke:#FFF6DF; stroke-linecap:round;
  filter:drop-shadow(0 0 3px var(--gr-led-halo,rgba(216,174,82,1)))
         drop-shadow(0 0 10px var(--gr-led-halo,rgba(216,174,82,.75)));
  animation:grLedCorre var(--gr-led-dur,2.8s) linear infinite;
}
@keyframes grLedCorre{
  from{stroke-dashoffset:var(--gr-led-len,1000)}
  to  {stroke-dashoffset:0}
}

/* HOVER — deliberadamente mais fraco que a seleção: contorno claro e um
   halo curto, sem luz correndo. Os dois estados não podem se confundir. */
#grMapa .gr-hover-contorno{
  fill:none; stroke:#FFFFFF; stroke-linejoin:round; opacity:.92;
  filter:drop-shadow(0 0 2px rgba(255,255,255,.85))
         drop-shadow(0 0 6px rgba(255,255,255,.45));
  transition:opacity var(--motion-fast) var(--ease-premium);
}

/* com um lote escolhido, o resto do mapa recua — sem sumir */
#grMapa svg .dxf-lot-group{transition:opacity var(--motion-normal) var(--ease-premium)}
#grMapa svg.gr-focado .dxf-lot-group:not(.gr-aceso){opacity:.38}

#grMapa .dxf-lot-shape{transition:filter var(--motion-fast) ease, stroke-width var(--motion-fast) ease}
#grMapa .dxf-lot-group.gr-brilho .dxf-lot-shape{
  stroke:#ffffff !important; stroke-width:1.3 !important;
  filter:brightness(1.14);
}
#grMapa .dxf-lot-group.gr-aceso .dxf-lot-shape{
  stroke:#ffffff !important; stroke-width:1.5 !important;
  filter:brightness(1.2);
}
#grMapa .dxf-lot-group:focus{outline:none}
#grMapa .dxf-lot-group:focus-visible .dxf-lot-shape{stroke:#fff !important;stroke-width:1.9 !important}

/* QUEM PEDIU MENOS MOVIMENTO
   Não recebe luz correndo. Recebe o mesmo contorno destacado e o mesmo
   halo, parados — a informação de "este é o lote selecionado" continua
   inteira, só não se move. */
@media (prefers-reduced-motion:reduce){
  #grMapa .gr-led-corrida{
    animation:none; stroke-dasharray:none !important; stroke-dashoffset:0 !important; opacity:.95;
  }
  #grMapa .gr-led-cabeca{display:none}
  #grMapa svg .dxf-lot-group{transition:none}
}

/* mesmo LED no mapa administrativo */
#dxfMapSvg .dxf-lot-group:hover .dxf-lot-shape,
#dxfMapSvg .dxf-lot-group.selected .dxf-lot-shape{
  filter:brightness(1.2) drop-shadow(0 0 2px rgba(255,255,255,.95))
         drop-shadow(0 0 6px rgba(255,255,255,.6)) !important;
}
#dxfMapSvg .dxf-lot-group.selected .dxf-lot-shape{
  stroke-width:1.7 !important; animation:grLed 1.6s ease-in-out infinite;
}
/* o mapa administrativo mantém a pulsação simples de sempre: o operador
   trabalha nele o dia inteiro, luz correndo ali cansaria. */
@keyframes grLed{ 0%,100%{opacity:1} 50%{opacity:.82} }
@media (prefers-reduced-motion:reduce){
  #dxfMapSvg .dxf-lot-group.selected .dxf-lot-shape{animation:none}
}


/* =====================================================================
   DRAWER DO LOTE
   Entra pela direita com slide + fade; o mapa atrás recebe um véu leve
   com blur. O conteúdo não aparece de uma vez: cada linha entra logo
   depois da anterior, num intervalo curto, para o olho acompanhar.
   ===================================================================== */
/* O véu é de propósito quase transparente e SEM blur: o lote continua
   aceso atrás do drawer, e o ponto do LED é justamente poder vê-lo
   enquanto se lê a ficha. Escurecer o mapa apagaria o efeito. */
.gr-drawer-fundo{
  position:fixed; inset:0; z-index:950; background:rgba(22,33,27,.14);
  opacity:0; transition:opacity var(--motion-normal) var(--ease-saida);
}
.gr-drawer-fundo.aberto{opacity:1}
/* z-index acima do botão "Voltar ao sistema" (940): com o drawer aberto,
   ele é quem está por cima. */
.gr-drawer{
  position:fixed; top:0; right:0; bottom:0; z-index:951;
  width:min(392px, 94vw); padding:28px 26px 32px; overflow-y:auto;
  background:var(--card); color:var(--tx);
  border-left:1px solid var(--linha);
  box-shadow:-26px 0 60px rgba(20,40,30,.20);
  transform:translateX(26px); opacity:0; filter:blur(3px);
  transition:transform var(--motion-normal) var(--ease-premium),
             opacity   var(--motion-normal) var(--ease-saida),
             filter    var(--motion-normal) var(--ease-saida);
}
/* fio dourado na borda: a marca aparece sem gritar */
.gr-drawer::before{
  content:''; position:absolute; left:0; top:0; bottom:0; width:2px;
  background:linear-gradient(180deg,#D8AE52,rgba(216,174,82,.15));
}
.gr-drawer.aberto{transform:none; opacity:1; filter:none}
.gr-drawer-x{
  position:absolute; top:16px; right:16px; z-index:2; width:44px; height:44px;
  border:1px solid var(--linha); border-radius:9px; cursor:pointer;
  font-size:1.2rem; line-height:1; background:var(--card); color:var(--tx2);
  transition:background var(--motion-fast) var(--ease-saida), color var(--motion-fast) var(--ease-saida);
}
.gr-drawer-x:hover{background:var(--linha2); color:var(--tx)}
.gr-drawer-corpo>.gr-entra:first-child{padding-right:48px}
.gr-drawer-valor strong{font-size:1.16rem}
.gr-drawer-acoes{display:flex; flex-direction:column; gap:9px; margin-top:22px}
.gr-drawer-acoes .gr-btn{width:100%; text-align:center; text-decoration:none}

/* entrada em sequência: --i é a posição da linha, não uma duração solta */
.gr-entra{
  opacity:0; transform:translateY(7px);
  animation:grEntra var(--motion-normal) var(--ease-premium) forwards;
  animation-delay:calc(var(--i,0) * 42ms + 60ms);
}
@keyframes grEntra{to{opacity:1; transform:none}}

@media (prefers-reduced-motion:reduce){
  .gr-drawer{transition:none; transform:none; filter:none}
  .gr-drawer-fundo{transition:none}
  .gr-entra{animation:none; opacity:1; transform:none}
}
@media (max-width:620px){
  /* no celular o drawer vira folha de baixo: o polegar alcança */
  .gr-drawer{
    top:auto; left:0; right:0; width:auto; max-height:76vh;
    border-left:0; border-top:1px solid rgba(216,174,82,.30);
    border-radius:18px 18px 0 0; box-shadow:0 -22px 50px rgba(0,0,0,.5);
    transform:translateY(26px);
  }
}


/* O botão "Voltar ao sistema" vive fora de #grPublico, que é um contexto
   de empilhamento próprio — nenhum z-index de dentro passa por cima dele.
   Com o drawer aberto ele apenas sai de cena; ninguém o perde, porque o
   Esc continua fazendo a mesma coisa. */
body.gr-drawer-aberto #grSairPortal{
  opacity:0; pointer-events:none;
  transition:opacity var(--motion-fast) var(--ease-saida);
}

/* =====================================================================
   PERFIL DO CLIENTE — painel lateral
   Abre por cima, não troca de tela: quem foi corrigir o telefone não
   perde de vista onde estava.
   ===================================================================== */
.gr-perfil-btn{display:inline-flex;align-items:center;gap:8px}
.gr-avatar{display:inline-flex;align-items:center;justify-content:center;
  width:30px;height:30px;border-radius:50%;flex:0 0 auto;
  background:linear-gradient(135deg,#b08d57,#8a6d3f);color:#fff;
  font:700 .72rem/1 var(--sans,system-ui);font-style:normal;letter-spacing:.02em}
.gr-avatar.grande{width:46px;height:46px;font-size:1rem}

.gr-perfil-fundo{position:fixed;inset:0;background:rgba(12,16,14,.45);
  backdrop-filter:blur(2px);z-index:60;animation:grFade .18s ease}
@keyframes grFade{from{opacity:0}to{opacity:1}}

.gr-perfil{position:fixed;top:0;right:0;bottom:0;width:min(420px,100%);z-index:61;
  background:var(--fundo,#fbfaf7);box-shadow:-18px 0 48px rgba(0,0,0,.22);
  display:flex;flex-direction:column;transform:translateX(100%);
  transition:transform .18s ease}
.gr-perfil.on{transform:translateX(0)}
.gr-perfil>header{display:flex;align-items:center;gap:12px;padding:18px 20px;
  border-bottom:1px solid var(--linha,#e6e1d7)}
.gr-perfil>header strong{display:block;font-size:.95rem;line-height:1.25}
.gr-perfil>header small{display:block;color:var(--tx3,#8a857c);font-size:.74rem;margin-top:2px}
.gr-perfil .gr-x{margin-left:auto;background:none;border:0;font-size:1.5rem;line-height:1;
  color:var(--tx3,#8a857c);cursor:pointer;padding:2px 6px;border-radius:8px}
.gr-perfil .gr-x:hover{background:rgba(0,0,0,.06);color:var(--tx1,#2c2a26)}
.gr-perfil-corpo{padding:18px 20px 28px;overflow-y:auto;flex:1}
.gr-hr{border:0;border-top:1px solid var(--linha,#e6e1d7);margin:20px 0 16px}
.gr-btn.bloco{width:100%}

@media (max-width:520px){
  .gr-perfil{width:100%}
  .gr-perfil-btn .gr-lg{display:none}
}

/* A marca substitui o selo "GR" no cabeçalho do portal. Precisa vir depois
   da regra original e zerar o fundo verde, senão sobra um quadrado sólido. */
.gr-marca i{
  background:var(--gr-marca) center/contain no-repeat !important;
  background-color:transparent !important;
  color:transparent !important; font-size:0 !important;
  border-radius:0 !important; width:40px !important; height:40px !important;
  box-shadow:none !important;
}


/* =====================================================================
   V24 — EXPERIÊNCIA PÚBLICA PREMIUM
   ===================================================================== */
#grPublico:has(.gr-home){background:#06150F;color:#F5F4EC}
.gr-home{min-height:100%;background:radial-gradient(circle at 14% 18%,rgba(216,174,82,.15),transparent 27%),radial-gradient(circle at 84% 20%,rgba(67,165,111,.16),transparent 30%),linear-gradient(180deg,#06150F 0%,#082019 46%,#F4F6F4 46.1%,#F4F6F4 100%)}
.gr-home .gr-top{background:rgba(5,20,14,.78);border-color:rgba(255,255,255,.08);backdrop-filter:blur(18px)}
.gr-home .gr-marca{color:#fff}.gr-home .gr-marca small{color:#90A79B}.gr-home .gr-menu button{color:#B9C9C0}.gr-home .gr-menu button:hover{background:rgba(216,174,82,.12);color:#F4D58A}
.gr-hero-premium{position:relative;min-height:min(760px,calc(100vh - 62px));display:grid;align-items:center;overflow:hidden;padding:70px 0 86px}
.gr-hero-premium::before{content:'';position:absolute;inset:0;pointer-events:none;opacity:.24;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:44px 44px;mask-image:linear-gradient(to bottom,#000,transparent 82%)}
.gr-hero-orbe{position:absolute;border-radius:50%;filter:blur(2px);opacity:.6;pointer-events:none}.gr-hero-orbe.a{width:360px;height:360px;right:-110px;top:50px;background:radial-gradient(circle,rgba(216,174,82,.18),transparent 68%);animation:grFlutua 9s ease-in-out infinite}.gr-hero-orbe.b{width:280px;height:280px;left:-90px;bottom:20px;background:radial-gradient(circle,rgba(67,165,111,.2),transparent 68%);animation:grFlutua 11s ease-in-out infinite reverse}@keyframes grFlutua{0%,100%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(0,-16px,0) scale(1.05)}}
.gr-hero-grid{position:relative;z-index:2;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(340px,.92fr);gap:52px;align-items:center}.gr-hero-kicker{display:inline-flex;align-items:center;gap:9px;color:#DCC58B;font-size:.68rem;font-weight:800;letter-spacing:.17em;text-transform:uppercase}.gr-hero-kicker::before{content:'';width:34px;height:1px;background:linear-gradient(90deg,#D8AE52,transparent)}
.gr-hero-title{font-family:Georgia,'Times New Roman',serif;font-size:clamp(3.1rem,7vw,6.7rem);font-weight:500;line-height:.91;letter-spacing:-.065em;margin:24px 0 20px;color:#F8F4E7;text-wrap:balance}.gr-hero-title em{display:block;font-style:normal;background:linear-gradient(90deg,#F6E2A9,#D8AE52 55%,#F3D88F);-webkit-background-clip:text;background-clip:text;color:transparent}.gr-hero-copy{max-width:610px;color:#A9BDB1;font-size:1rem;line-height:1.75;margin:0 0 30px}.gr-hero-actions{display:flex;gap:12px;flex-wrap:wrap}
.gr-btn.ouro{border-color:#D8AE52;background:linear-gradient(135deg,#E6C56E,#B88934);color:#102017;box-shadow:0 14px 36px rgba(216,174,82,.18);transition:transform var(--motion-fast) var(--ease-premium),box-shadow var(--motion-fast)}.gr-btn.ouro:hover{transform:translateY(-2px);box-shadow:0 20px 45px rgba(216,174,82,.27);filter:none}.gr-btn.fantasma{border-color:rgba(255,255,255,.18);background:rgba(255,255,255,.04);color:#EAF2ED;backdrop-filter:blur(8px)}.gr-btn.fantasma:hover{background:rgba(255,255,255,.08);filter:none}
.gr-hero-brand-card{position:relative;min-height:430px;border:1px solid rgba(216,174,82,.2);border-radius:30px;background:linear-gradient(160deg,rgba(255,255,255,.075),rgba(255,255,255,.018));box-shadow:0 42px 90px rgba(0,0,0,.35);overflow:hidden;display:grid;place-items:center;isolation:isolate}.gr-hero-brand-card::before{content:'';position:absolute;inset:-35%;background:conic-gradient(from 210deg,transparent,rgba(216,174,82,.18),transparent 30%,rgba(55,153,101,.17),transparent 62%);animation:grAura 15s linear infinite;z-index:-1}@keyframes grAura{to{transform:rotate(360deg)}}.gr-hero-brand-card .auth-logo-card{width:min(310px,76%);filter:drop-shadow(0 22px 44px rgba(0,0,0,.34));animation:grMarcaEntra .9s var(--ease-premium) both}@keyframes grMarcaEntra{from{opacity:0;transform:translateY(18px) scale(.96);filter:blur(5px)}to{opacity:1;transform:none;filter:drop-shadow(0 22px 44px rgba(0,0,0,.34))}}.gr-hero-ring{position:absolute;width:74%;aspect-ratio:1;border:1px solid rgba(216,174,82,.13);border-radius:50%;box-shadow:0 0 70px rgba(216,174,82,.06) inset;animation:grRing 7s ease-in-out infinite}.gr-hero-ring.r2{width:91%;animation-delay:-3s;opacity:.5}@keyframes grRing{50%{transform:scale(1.035);opacity:.7}}
.gr-home-stats{position:relative;z-index:3;margin-top:-38px;display:grid;grid-template-columns:repeat(4,1fr);background:rgba(255,255,255,.96);border:1px solid #E2E7E3;border-radius:22px;box-shadow:0 24px 60px rgba(21,49,35,.13);overflow:hidden;color:#16211B}.gr-home-stat{padding:22px 24px;border-right:1px solid #E8ECE9}.gr-home-stat:last-child{border-right:0}.gr-home-stat span{display:block;color:#708078;font-size:.65rem;text-transform:uppercase;letter-spacing:.11em;font-weight:800}.gr-home-stat strong{display:block;font-size:1.65rem;margin-top:5px;letter-spacing:-.04em}.gr-home-stat small{color:#8A9A90;font-size:.7rem}
.gr-home-section{padding:86px 0;color:#16211B}.gr-home-section.alt{background:#EDF2EE}.gr-home-eyebrow{color:#8A702A;font-size:.64rem;font-weight:850;letter-spacing:.15em;text-transform:uppercase}.gr-home-section h2{font-family:Georgia,'Times New Roman',serif;font-size:clamp(2.15rem,4vw,3.7rem);font-weight:500;letter-spacing:-.045em;line-height:1.04;margin:12px 0 16px}.gr-home-lead{color:#617168;max-width:700px;font-size:.96rem;line-height:1.75}
.gr-home-features{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:34px}.gr-home-feature{position:relative;background:#fff;border:1px solid #E0E6E2;border-radius:18px;padding:24px;overflow:hidden;transition:transform var(--motion-normal) var(--ease-premium),box-shadow var(--motion-normal)}.gr-home-feature:hover{transform:translateY(-5px);box-shadow:0 20px 45px rgba(20,55,36,.09)}.gr-home-feature::after{content:'';position:absolute;right:-30px;top:-30px;width:100px;height:100px;border-radius:50%;background:radial-gradient(circle,rgba(216,174,82,.14),transparent 70%)}.gr-home-feature i{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#0B2B20;color:#DCC16F;font-style:normal;font-size:1rem;margin-bottom:22px}.gr-home-feature h3{font-size:1rem;margin:0 0 8px}.gr-home-feature p{font-size:.8rem;color:#6F7D75;line-height:1.65;margin:0}.gr-home-experience{position:relative;background:linear-gradient(180deg,#EEF4EF 0%,#F8FAF7 100%)}.gr-home-experience::before{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 14% 12%,rgba(216,174,82,.16),transparent 22%),radial-gradient(circle at 88% 72%,rgba(55,153,101,.10),transparent 30%)}.gr-home-experience .gr-wrap{position:relative;z-index:1}.gr-home-experience h2{color:#14221A;text-shadow:none}.gr-home-experience .gr-home-lead{color:#54665D;max-width:760px}.gr-home-experience .gr-home-feature{box-shadow:0 12px 28px rgba(20,55,36,.06)}

/* V25.7 — showcase completo do empreendimento */
.gr-project-showcase{padding:94px 0;background:linear-gradient(180deg,#F7F9F6 0%,#EEF4EF 100%);color:#16211B;overflow:hidden}.gr-project-showcase h2{font-family:Georgia,'Times New Roman',serif;font-size:clamp(2.15rem,4vw,3.7rem);font-weight:500;letter-spacing:-.045em;line-height:1.04;margin:12px 0 16px}.gr-project-hero-card{position:relative;margin-top:34px;border-radius:28px;overflow:hidden;min-height:520px;background:#071B14;box-shadow:0 28px 70px rgba(16,48,34,.16)}.gr-project-hero-card>img{width:100%;height:100%;min-height:520px;display:block;object-fit:cover}.gr-project-hero-overlay{position:absolute;left:0;right:0;bottom:0;padding:70px 42px 36px;color:#fff;background:linear-gradient(180deg,transparent 0%,rgba(4,18,12,.18) 18%,rgba(4,18,12,.92) 100%)}.gr-project-hero-overlay>span{display:block;color:#E3C46D;font-size:.64rem;font-weight:850;letter-spacing:.15em;text-transform:uppercase}.gr-project-hero-overlay>strong{display:block;font-family:Georgia,'Times New Roman',serif;font-size:clamp(2rem,4vw,4rem);font-weight:500;line-height:1.02;margin:8px 0}.gr-project-hero-overlay>small{display:block;max-width:660px;color:#CFDBD3;line-height:1.6}.gr-official-project-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(330px,.75fr);gap:20px;margin-top:22px}.gr-official-project-media,.gr-official-project-info{border-radius:24px;background:#fff;border:1px solid #DDE6DF;overflow:hidden;box-shadow:0 15px 38px rgba(15,50,34,.07)}.gr-official-project-media{min-height:560px;display:grid;place-items:center;background:#fff}.gr-official-project-media img{width:100%;height:560px;object-fit:contain;display:block}.gr-official-project-info{padding:34px;display:flex;flex-direction:column;justify-content:center}.gr-official-project-info h3{font-family:Georgia,'Times New Roman',serif;font-size:clamp(1.8rem,3vw,2.7rem);font-weight:500;letter-spacing:-.04em;margin:10px 0}.gr-official-project-info p{color:#66776E;line-height:1.7;font-size:.86rem}.gr-project-metrics{display:grid;grid-template-columns:1fr;gap:9px;margin:20px 0}.gr-project-metrics>div{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border-radius:14px;background:#F3F7F4;border:1px solid #E2E9E4}.gr-project-metrics span{color:#74847B;font-size:.68rem;text-transform:uppercase;letter-spacing:.09em;font-weight:800}.gr-project-metrics strong{color:#163A2A;font-size:1rem}.gr-project-disclaimer{display:block;margin-top:18px;color:#84928B;line-height:1.5}.gr-project-showcase .gr-btn.fantasma{border-color:rgba(255,255,255,.34);color:#fff}.gr-project-showcase .gr-btn.fantasma:hover{background:rgba(255,255,255,.1)}
@media(max-width:900px){.gr-official-project-grid{grid-template-columns:1fr}.gr-project-hero-card,.gr-project-hero-card>img{min-height:420px}.gr-official-project-media,.gr-official-project-media img{min-height:0;height:480px}}
@media(max-width:620px){.gr-project-showcase{padding:64px 0}.gr-project-hero-card,.gr-project-hero-card>img{min-height:360px}.gr-project-hero-overlay{padding:80px 20px 22px}.gr-project-hero-overlay .gr-hero-actions{gap:7px}.gr-official-project-info{padding:24px}.gr-official-project-media img{height:390px}.gr-menu [data-ver-projeto]{display:none}}

/* V25.7 — Galeria pública do empreendimento */
.gr-gallery-section{position:relative;overflow:hidden;background:#071B14;color:#F7F4E9;padding:92px 0;content-visibility:auto;contain-intrinsic-size:900px}
.gr-gallery-section::before{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 15% 10%,rgba(216,174,82,.12),transparent 28%),radial-gradient(circle at 88% 85%,rgba(55,153,101,.12),transparent 30%)}
.gr-gallery-section .gr-wrap{position:relative;z-index:1}.gr-gallery-section .gr-home-eyebrow{color:#D8BE78}.gr-gallery-section h2{color:#FAF6E8}.gr-gallery-section .gr-home-lead{color:#A9BDB1}
.gr-gallery-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,.75fr);grid-template-rows:repeat(2,minmax(190px,1fr));gap:14px;margin-top:36px;min-height:590px}
.gr-gallery-card{position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.09);border-radius:24px;background:#0B261C;cursor:zoom-in;isolation:isolate;box-shadow:0 20px 56px rgba(0,0,0,.18)}
.gr-gallery-card:first-child{grid-row:1 / span 2}.gr-gallery-card img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .7s var(--ease-premium),filter .5s ease}.gr-gallery-card:hover img{transform:scale(1.035);filter:saturate(1.04) contrast(1.02)}
.gr-gallery-card::after{content:'';position:absolute;inset:0;background:linear-gradient(to top,rgba(3,14,10,.76),transparent 48%);pointer-events:none}.gr-gallery-caption{position:absolute;z-index:2;left:20px;right:20px;bottom:18px;display:flex;align-items:flex-end;justify-content:space-between;gap:18px;color:#fff}.gr-gallery-caption span{display:block;color:#D8C58A;font-size:.6rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase;margin-bottom:4px}.gr-gallery-caption strong{font-size:.9rem}.gr-gallery-zoom{width:38px;height:38px;flex:0 0 38px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);backdrop-filter:blur(8px);font-size:1rem}
.gr-gallery-note{margin-top:16px;color:#789286;font-size:.7rem;line-height:1.55}
.gr-gallery-lightbox{position:fixed;inset:0;z-index:1800;display:none;align-items:center;justify-content:center;padding:24px;background:rgba(2,9,6,.9);backdrop-filter:blur(16px)}.gr-gallery-lightbox.on{display:flex;animation:grFadeIn .2s ease both}.gr-gallery-lightbox-inner{position:relative;isolation:isolate;width:min(1380px,100%);height:min(860px,92vh);display:flex;align-items:center;justify-content:center}.gr-gallery-lightbox img{position:relative;z-index:0;pointer-events:none;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:18px;box-shadow:0 35px 90px rgba(0,0,0,.48);animation:grGalleryIn .35s var(--ease-premium) both}@keyframes grGalleryIn{from{opacity:0;transform:scale(.975)}to{opacity:1;transform:none}}
.gr-gallery-close,.gr-gallery-prev,.gr-gallery-next{position:absolute;z-index:3;border:1px solid rgba(255,255,255,.16);background:rgba(6,23,16,.7);color:#fff;backdrop-filter:blur(10px);cursor:pointer;display:grid;place-items:center;transition:background .15s,transform .15s}.gr-gallery-close{right:10px;top:10px;width:44px;height:44px;border-radius:50%;font-size:1.25rem}.gr-gallery-prev,.gr-gallery-next{top:0;bottom:0;margin:auto 0;transform:none;width:48px;height:58px;border-radius:14px;font-size:1.45rem}.gr-gallery-prev{left:10px}.gr-gallery-next{right:10px}.gr-gallery-close:hover,.gr-gallery-prev:hover,.gr-gallery-next:hover{background:rgba(216,174,82,.22)}.gr-gallery-prev:hover,.gr-gallery-next:hover{transform:scale(1.04)}
.gr-gallery-lightbox-meta{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);max-width:80%;padding:9px 14px;border-radius:999px;background:rgba(5,22,15,.78);border:1px solid rgba(255,255,255,.12);color:#DDE9E2;font-size:.68rem;backdrop-filter:blur(10px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:900px){.gr-gallery-grid{grid-template-columns:1fr 1fr;grid-template-rows:420px 260px;min-height:0}.gr-gallery-card:first-child{grid-column:1 / span 2;grid-row:auto}.gr-gallery-prev{left:4px}.gr-gallery-next{right:4px}}
@media(max-width:620px){.gr-gallery-section{padding:64px 0}.gr-gallery-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;margin-left:-12px;margin-right:-12px;padding:0 12px 8px}.gr-gallery-card,.gr-gallery-card:first-child{flex:0 0 88vw;height:300px;scroll-snap-align:center}.gr-gallery-caption{left:16px;right:16px;bottom:14px}.gr-gallery-prev,.gr-gallery-next{width:42px;height:52px}.gr-gallery-lightbox{padding:10px}.gr-gallery-lightbox-meta{bottom:6px;max-width:88%}}
@media(prefers-reduced-motion:reduce){.gr-gallery-card img,.gr-gallery-lightbox img{transition:none!important;animation:none!important}.gr-gallery-card:hover img{transform:none}}

.gr-journey{margin-top:34px;display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.gr-journey-step{background:#0A241A;color:#F4F6F4;border-radius:18px;padding:20px;min-height:150px;position:relative;overflow:hidden}.gr-journey-step b{display:block;color:#D8AE52;font-size:.68rem;letter-spacing:.12em;margin-bottom:28px}.gr-journey-step strong{display:block;font-size:.93rem}.gr-journey-step small{display:block;color:#93A99D;font-size:.7rem;margin-top:6px;line-height:1.5}.gr-journey-step::after{content:'→';position:absolute;right:14px;top:14px;color:rgba(216,174,82,.38)}.gr-journey-step:last-child::after{content:'✓'}
.gr-home-cta{margin:0 0 80px;border-radius:28px;padding:46px;background:radial-gradient(circle at 83% 25%,rgba(216,174,82,.18),transparent 30%),linear-gradient(135deg,#08251B,#0C3828);color:#fff;display:flex;align-items:center;gap:28px;box-shadow:0 28px 70px rgba(8,37,27,.2)}.gr-home-cta>div:first-child{flex:1}.gr-home-cta h3{font-family:Georgia,'Times New Roman',serif;font-size:clamp(2rem,4vw,3.3rem);font-weight:500;margin:8px 0 10px;letter-spacing:-.04em}.gr-home-cta p{margin:0;color:#AFC3B8;max-width:650px}
.gr-reserva-flash{position:fixed;inset:0;z-index:1200;display:grid;place-items:center;padding:20px;background:rgba(4,18,12,.72);backdrop-filter:blur(12px);animation:grFadeIn .22s ease both}.gr-reserva-flash.saindo{animation:grFadeOut .2s ease both}.gr-reserva-flash-card{width:min(460px,100%);background:linear-gradient(160deg,#0B2C20,#081B14);color:#F7F5EC;border:1px solid rgba(216,174,82,.32);border-radius:26px;padding:34px;text-align:center;box-shadow:0 34px 90px rgba(0,0,0,.42);animation:grPop .52s var(--ease-mola) both}.gr-reserva-check{width:70px;height:70px;border-radius:50%;margin:0 auto 18px;display:grid;place-items:center;font-size:1.8rem;color:#0A261B;background:linear-gradient(145deg,#F1D98D,#C69B46);box-shadow:0 0 0 10px rgba(216,174,82,.07),0 0 45px rgba(216,174,82,.22)}.gr-reserva-flash h3{font-family:Georgia,'Times New Roman',serif;font-size:2rem;font-weight:500;margin:0 0 8px}.gr-reserva-flash p{color:#AFC2B7;margin:0 0 18px}.gr-reserva-flash strong{color:#F3D88D}@keyframes grFadeIn{from{opacity:0}to{opacity:1}}@keyframes grFadeOut{to{opacity:0}}@keyframes grPop{from{opacity:0;transform:translateY(16px) scale(.94)}to{opacity:1;transform:none}}
.gr-celebra{position:relative;min-height:100vh;background:radial-gradient(circle at 50% 12%,rgba(216,174,82,.16),transparent 24%),radial-gradient(circle at 18% 68%,rgba(45,139,89,.18),transparent 28%),linear-gradient(145deg,#06140E,#09261B 58%,#071A13);color:#F8F5EA;overflow:hidden;display:grid;place-items:center;padding:42px 18px}.gr-celebra::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.026) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.026) 1px,transparent 1px);background-size:48px 48px;mask-image:radial-gradient(circle at center,#000,transparent 74%)}.gr-celebra-particulas{position:absolute;inset:0;pointer-events:none;overflow:hidden}.gr-celebra-particulas i{position:absolute;width:4px;height:4px;border-radius:50%;background:#E8C86D;box-shadow:0 0 12px #D8AE52;opacity:0;animation:grParticula 3.8s ease-in-out infinite}.gr-celebra-particulas i:nth-child(1){left:12%;top:72%;animation-delay:.1s}.gr-celebra-particulas i:nth-child(2){left:22%;top:35%;animation-delay:1.1s}.gr-celebra-particulas i:nth-child(3){left:78%;top:28%;animation-delay:.5s}.gr-celebra-particulas i:nth-child(4){left:88%;top:65%;animation-delay:1.6s}.gr-celebra-particulas i:nth-child(5){left:66%;top:80%;animation-delay:2.1s}.gr-celebra-particulas i:nth-child(6){left:36%;top:18%;animation-delay:2.6s}@keyframes grParticula{0%,100%{opacity:0;transform:translateY(12px) scale(.5)}35%{opacity:.95}65%{opacity:.55;transform:translateY(-28px) scale(1.2)}}
.gr-celebra-card{position:relative;z-index:2;width:min(850px,100%);text-align:center}.gr-celebra-logo{width:min(250px,55%);margin:0 auto 12px}.gr-celebra-logo.auth-logo-card{animation:grMarcaEntra .8s var(--ease-premium) both}.gr-celebra-check{width:78px;height:78px;border-radius:50%;margin:10px auto 20px;display:grid;place-items:center;font-size:2rem;color:#0A251A;background:linear-gradient(145deg,#F6DF99,#C89538);box-shadow:0 0 0 12px rgba(216,174,82,.06),0 0 64px rgba(216,174,82,.24);animation:grCheck .72s var(--ease-mola) both .15s}@keyframes grCheck{from{opacity:0;transform:scale(.55) rotate(-12deg)}to{opacity:1;transform:none}}.gr-celebra-kicker{color:#D8C17D;font-size:.67rem;font-weight:850;letter-spacing:.18em;text-transform:uppercase}.gr-celebra h1{font-family:Georgia,'Times New Roman',serif;font-weight:500;font-size:clamp(2.7rem,6vw,5.5rem);line-height:.95;letter-spacing:-.055em;margin:14px 0 16px;text-wrap:balance}.gr-celebra h1 span{display:block;color:#E8C96D}.gr-celebra-copy{max-width:620px;margin:0 auto;color:#AFC1B7;font-size:.96rem;line-height:1.7}.gr-celebra-lote-wrap{position:relative;width:min(420px,82vw);min-height:235px;margin:30px auto 14px;display:grid;place-items:center}.gr-celebra-lote-wrap::before{content:'';position:absolute;width:190px;height:190px;border-radius:50%;border:1px solid rgba(232,201,109,.10);box-shadow:0 0 80px rgba(216,174,82,.08) inset}.gr-celebra-lote{position:relative;z-index:1;width:min(300px,68vw);height:225px;overflow:visible;filter:drop-shadow(0 0 20px rgba(216,174,82,.24))}.gr-celebra-lote path{fill:rgba(216,174,82,.11);stroke:#F1D785;stroke-width:2;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:100;animation:grDesenhaLote 1.55s var(--ease-premium) forwards .25s}.gr-celebra-lote path:nth-child(2){stroke:#FFF2C7;stroke-width:3;fill:none;stroke-dasharray:14 86;animation:grCorreLote 3s linear infinite 1.9s}@keyframes grDesenhaLote{to{stroke-dashoffset:0;fill:rgba(216,174,82,.12)}}@keyframes grCorreLote{to{stroke-dashoffset:-100}}.gr-celebra-meta{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:18px 0 26px}.gr-celebra-pill{padding:9px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.11);background:rgba(255,255,255,.045);color:#CAD8D0;font-size:.75rem;backdrop-filter:blur(8px)}.gr-celebra-pill b{color:#F4D77F}.gr-celebra-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.gr-celebra-nota{margin-top:18px;color:#7F988B;font-size:.7rem}.gr-celebra-demo{margin:0 auto 18px;width:min(620px,100%);border:1px solid rgba(232,200,109,.25);background:rgba(232,200,109,.07);color:#E9D89F;border-radius:12px;padding:10px 13px;font-size:.72rem}.gr-celebra-preview{display:inline-flex;align-items:center;gap:7px;margin:0 auto 12px;padding:7px 11px;border-radius:999px;border:1px solid rgba(232,200,109,.2);background:rgba(232,200,109,.06);color:#DCC77F;font-size:.64rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.gr-celebra-preview::before{content:'●';font-size:.52rem;color:#E8C96D}
.live-activity-panel{display:grid;grid-template-columns:minmax(220px,.7fr) minmax(0,1.3fr);gap:16px;margin-bottom:14px}.live-activity-intro,.live-activity-stream{background:var(--panel);border:1px solid var(--line);border-radius:15px;padding:18px}.live-activity-intro h3{font-size:1rem;margin:8px 0 6px}.live-activity-intro p{font-size:.72rem;color:var(--ink-soft);line-height:1.5;margin:0}.live-pulse{display:inline-flex;align-items:center;gap:7px;font-size:.62rem;color:#8FBFA0}.live-pulse::before{content:'';width:7px;height:7px;border-radius:50%;background:#4BE0A1;box-shadow:0 0 0 0 rgba(75,224,161,.45);animation:grPulseLive 2s infinite}@keyframes grPulseLive{70%{box-shadow:0 0 0 7px rgba(75,224,161,0)}}.live-row{display:grid;grid-template-columns:9px minmax(0,1fr) auto;gap:10px;align-items:start;padding:10px 0;border-bottom:1px solid var(--line)}.live-row:last-child{border-bottom:0}.live-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);margin-top:5px}.live-row strong{display:block;font-size:.73rem}.live-row small{display:block;color:var(--ink-soft);font-size:.62rem;margin-top:3px;line-height:1.45}.live-row time{font-size:.58rem;color:var(--ink-soft);white-space:nowrap}
@media(max-width:900px){.gr-hero-grid{grid-template-columns:1fr}.gr-hero-brand-card{min-height:300px}.gr-home-stats{grid-template-columns:repeat(2,1fr)}.gr-home-stat:nth-child(2){border-right:0}.gr-home-stat:nth-child(-n+2){border-bottom:1px solid #E8ECE9}.gr-home-features{grid-template-columns:1fr}.gr-journey{grid-template-columns:1fr 1fr}.live-activity-panel{grid-template-columns:1fr}}
@media(max-width:620px){.gr-hero-premium{padding:46px 0 68px}.gr-hero-title{font-size:clamp(2.75rem,16vw,4.1rem)}.gr-hero-brand-card{min-height:250px;border-radius:22px}.gr-home-stats{margin-top:-22px}.gr-home-stat{padding:17px}.gr-home-stat strong{font-size:1.3rem}.gr-home-section{padding:62px 0}.gr-journey{grid-template-columns:1fr}.gr-home-cta{padding:30px 24px;display:block}.gr-home-cta .gr-hero-actions{margin-top:20px}.gr-celebra{padding-top:28px}.gr-celebra-lote-wrap{min-height:205px;margin-top:24px}.gr-celebra-lote{height:195px;width:min(250px,68vw)}}
@media(prefers-reduced-motion:reduce){.gr-hero-orbe,.gr-hero-brand-card::before,.gr-hero-ring,.gr-hero-brand-card .auth-logo-card,.gr-reserva-flash-card,.gr-celebra-logo.auth-logo-card,.gr-celebra-check,.gr-celebra-particulas i,.live-pulse::before{animation:none!important}.gr-celebra-lote path{animation:none!important;stroke-dashoffset:0!important}.gr-home-feature:hover,.gr-btn.ouro:hover{transform:none}}


/* V25.10 — PORTAL V24 REFINADO */
body.gr-portal-ativo #grPublico.on{display:block!important}
body.gr-portal-ativo #authOverlay,body.gr-portal-ativo #appRoot{display:none!important}


/* source-style-27: v243-premium-additions */

/* V25.7 — sino administrativo */
.gr-notify-wrap{position:relative}.gr-bell-btn{position:relative;display:grid;place-items:center}.gr-bell-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transform-origin:50% 8%}.gr-bell-btn.ring svg{animation:grBellRing .72s cubic-bezier(.2,.8,.2,1)}
.gr-bell-btn.ring{box-shadow:0 0 0 5px rgba(216,174,82,.09),0 0 22px rgba(216,174,82,.24)}@keyframes grBellRing{0%,100%{transform:rotate(0)}15%{transform:rotate(18deg)}30%{transform:rotate(-16deg)}45%{transform:rotate(12deg)}60%{transform:rotate(-8deg)}75%{transform:rotate(4deg)}}
.gr-bell-badge{position:absolute;right:-5px;top:-6px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;display:grid;place-items:center;background:#D8AE52;color:#0B100D;border:2px solid var(--paper);font:800 .58rem/1 var(--sans);box-shadow:0 4px 12px rgba(0,0,0,.24)}
.gr-notify-panel{position:absolute;right:-42px;top:48px;width:min(390px,calc(100vw - 28px));max-height:520px;overflow:hidden;background:color-mix(in srgb,var(--paper) 98%,transparent);border:1px solid var(--line);border-radius:16px;box-shadow:0 28px 70px rgba(0,0,0,.34);z-index:560;backdrop-filter:blur(18px)}
.gr-notify-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:15px 16px;border-bottom:1px solid var(--line)}.gr-notify-head span{display:block;color:var(--ink-soft);font-size:.58rem;text-transform:uppercase;letter-spacing:.12em}.gr-notify-head strong{font-size:.86rem}.gr-notify-head button{border:0;background:transparent;color:var(--accent);font:650 .62rem var(--sans);cursor:pointer}.gr-notify-list{max-height:430px;overflow:auto;padding:7px}
.gr-notify-item{width:100%;border:0;background:transparent;color:var(--ink);display:grid;grid-template-columns:9px 1fr auto;gap:10px;text-align:left;padding:11px 10px;border-radius:10px;cursor:pointer;transition:background .15s}.gr-notify-item:hover{background:var(--hover)}.gr-notify-item .dot{width:7px;height:7px;margin-top:5px;border-radius:50%;background:transparent;border:1px solid var(--line)}.gr-notify-item.unread .dot{background:#D8AE52;border-color:#D8AE52;box-shadow:0 0 8px rgba(216,174,82,.5)}.gr-notify-item strong{display:block;font-size:.74rem}.gr-notify-item small{display:block;color:var(--ink-soft);font-size:.63rem;line-height:1.4;margin-top:3px}.gr-notify-item time{font-size:.56rem;color:var(--ink-soft);white-space:nowrap}.gr-notify-empty{padding:28px;text-align:center;color:var(--ink-soft);font-size:.7rem}
.gr-purchase-toast{position:fixed;right:18px;top:76px;z-index:1200;width:min(380px,calc(100vw - 36px));padding:15px 16px;border:1px solid rgba(216,174,82,.34);border-radius:16px;background:linear-gradient(135deg,rgba(216,174,82,.10),rgba(75,224,161,.05)),#0B100D;color:#EDF2EE;box-shadow:0 25px 60px rgba(0,0,0,.38);animation:grPurchaseIn .35s cubic-bezier(.2,.9,.2,1)}.gr-purchase-toast b{display:block;color:#E8CA79;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase}.gr-purchase-toast strong{display:block;font-size:1rem;margin:5px 0 4px}.gr-purchase-toast span{display:block;color:#AAB9B0;font-size:.72rem}.gr-purchase-toast button{margin-top:11px;border:0;background:transparent;color:#E8CA79;padding:0;font:700 .67rem var(--sans);cursor:pointer}@keyframes grPurchaseIn{from{opacity:0;transform:translateX(24px) scale(.98)}to{opacity:1;transform:none}}.gr-purchase-toast.out{opacity:0;transform:translateX(18px);transition:.28s}
tr.gr-sale-flash td{animation:grSaleFlash 2.2s ease}@keyframes grSaleFlash{0%,100%{background:transparent}15%,55%{background:rgba(216,174,82,.13)}}
/* V25.7 — spotlight do lote do cliente */
.gr-client-lot-grid{grid-template-columns:minmax(260px,.72fr) minmax(0,1.28fr)!important;align-items:stretch}.gr-client-spot-card{overflow:hidden}.gr-client-spot-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}.gr-client-spot-head>div>strong{display:block;font-size:.88rem;margin-top:4px}.gr-client-owned{font:800 .56rem var(--sans);letter-spacing:.11em;color:#E8CA79;border:1px solid rgba(216,174,82,.28);background:rgba(216,174,82,.08);padding:6px 9px;border-radius:999px;white-space:nowrap}
.gr-client-spotlight{height:330px;position:relative;overflow:hidden;border-radius:18px;border:1px solid rgba(216,174,82,.22);background:radial-gradient(circle at 50% 48%,rgba(216,174,82,.13),transparent 30%),radial-gradient(circle at 50% 50%,rgba(75,224,161,.08),transparent 56%),#07110C;display:grid;place-items:center}.gr-client-map-orbit{position:absolute;border:1px solid rgba(216,174,82,.10);border-radius:50%;pointer-events:none}.gr-client-map-orbit.a{width:260px;height:260px;animation:grOrbitPulse 4s ease-in-out infinite}.gr-client-map-orbit.b{width:390px;height:390px;animation:grOrbitPulse 5s ease-in-out infinite reverse}@keyframes grOrbitPulse{0%,100%{opacity:.28;transform:scale(.96)}50%{opacity:.6;transform:scale(1.04)}}
.gr-client-lot-svg{width:84%;height:84%;position:relative;z-index:2;overflow:visible}.gr-client-lot-halo{fill:rgba(216,174,82,.12);stroke:#D8AE52;stroke-width:11;opacity:.20;filter:blur(5px)}.gr-client-lot-base{fill:rgba(216,174,82,.15);stroke:#7B986F;stroke-width:1.8}.gr-client-lot-track{fill:none;stroke:rgba(216,174,82,.34);stroke-width:2}.gr-client-lot-runner{fill:none;stroke:#E2B957;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 3px rgba(226,185,87,.95)) drop-shadow(0 0 11px rgba(226,185,87,.7));animation:grClientLotRun 2.5s linear infinite}.gr-client-lot-head{fill:none;stroke:#FFF5D7;stroke-width:5;stroke-linecap:round;filter:drop-shadow(0 0 5px #FFF1BE) drop-shadow(0 0 14px rgba(216,174,82,.95));animation:grClientLotRun 2.5s linear infinite}@keyframes grClientLotRun{from{stroke-dashoffset:var(--spot-len,1000)}to{stroke-dashoffset:0}}
.gr-client-spot-status{position:absolute;left:14px;bottom:14px;z-index:3;display:flex;align-items:baseline;gap:9px;padding:8px 11px;border-radius:10px;background:rgba(4,9,6,.72);border:1px solid rgba(255,255,255,.08);backdrop-filter:blur(8px)}.gr-client-spot-status b{font:800 .8rem var(--mono);color:#F4D58A}.gr-client-spot-status span{font-size:.64rem;color:#B8C5BD}.gr-client-spot-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}.gr-client-spot-meta span{padding:10px;border:1px solid var(--linha);border-radius:10px}.gr-client-spot-meta small{display:block;font-size:.58rem;color:var(--tx3);margin-bottom:3px}.gr-client-spot-meta b{font-size:.72rem}.gr-client-spot-actions{display:flex;justify-content:flex-end;margin-top:10px}.gr-client-spot-note{font-size:.68rem;color:var(--tx3);line-height:1.5;margin:10px 0 0}.gr-client-spot-empty{position:absolute;inset:0;display:grid;place-items:center;color:#86978D;font-size:.76rem;z-index:3}
/* V25.7 — Google Maps */
.gr-location-tabs{position:absolute;left:12px;top:12px;z-index:4;display:flex;gap:4px;padding:4px;border-radius:999px;background:rgba(5,12,8,.78);border:1px solid rgba(255,255,255,.10);backdrop-filter:blur(10px)}.gr-location-tabs button{border:0;border-radius:999px;background:transparent;color:#AAB9B0;padding:7px 11px;font:700 .62rem var(--sans);cursor:pointer}.gr-location-tabs button.on{background:#D8AE52;color:#10150F}.gr-location-pane{display:none;width:100%;height:100%}.gr-location-pane.on{display:block}.gr-location-pane iframe,.gr-location-pane img{width:100%;height:100%;min-height:390px;border:0;object-fit:contain}.gr-google-map-frame{width:100%;height:100%;min-height:390px;border:0;filter:saturate(.88) contrast(1.02)}.location-admin-tabs{position:absolute;z-index:2;left:10px;top:10px;background:rgba(5,10,7,.78);color:#fff;border-radius:999px;padding:6px 9px;font-size:.58rem}.location-admin-tabs span{color:#D8C27E;margin-left:6px}.location-admin-preview{position:relative}.location-admin-preview .gr-google-map-frame{min-height:300px}
@media(max-width:820px){.gr-client-lot-grid{grid-template-columns:1fr!important}.gr-client-spotlight{height:300px}.gr-notify-panel{right:-86px}.gr-client-spot-meta{grid-template-columns:1fr 1fr 1fr}}@media(max-width:560px){.gr-client-spotlight{height:275px}.gr-client-spot-meta{grid-template-columns:1fr}.gr-notify-panel{position:fixed;left:10px;right:10px;top:70px;width:auto}.gr-purchase-toast{top:70px}.gr-location-tabs{left:8px;top:8px}.gr-location-tabs button{padding:6px 8px;font-size:.57rem}}
@media(prefers-reduced-motion:reduce){.gr-bell-btn.ring svg,.gr-client-map-orbit,.gr-client-lot-runner,.gr-client-lot-head,.gr-purchase-toast{animation:none!important}.gr-client-lot-runner{stroke-dasharray:none!important}.gr-client-lot-head{display:none}}


/* source-style-28: grV2525OperationalStyles */

/* V25.25 — motion leve: resposta visual sem re-render pesado. */
.view.active{animation:grV2525ViewIn .18s cubic-bezier(.2,.75,.3,1) both}
@keyframes grV2525ViewIn{from{opacity:.5;transform:translateY(5px)}to{opacity:1;transform:none}}
button,.btn,.gr-btn{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
button:not(:disabled):active,.btn:not(:disabled):active,.gr-btn:not(:disabled):active{transform:translateY(1px) scale(.985)}
.card,.gr-card,section.block{transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease}
@media (hover:hover){.card:hover,.gr-card:hover{transform:translateY(-1px)}}
.gr-client-lot-label{font-family:Inter,Arial,sans-serif;font-size:2.3px;font-weight:800;fill:#fff;stroke:#0a1b13;stroke-width:.75px;paint-order:stroke;pointer-events:none;letter-spacing:.02em}
.gr-diag-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;margin-top:14px}
.gr-diag-item{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--paper-raised)}
.gr-diag-item b{display:block;font-size:.78rem;margin-bottom:4px}.gr-diag-item small{color:var(--ink-soft);line-height:1.45}
.gr-diag-item.ok{border-left:4px solid #3f6b4f}.gr-diag-item.warn{border-left:4px solid #8a6d1b}.gr-diag-item.bad{border-left:4px solid #a6501e}
.gr-diag-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.gr-diag-summary{margin-top:12px;font-size:.82rem}
@media (prefers-reduced-motion:reduce){.view.active,.card,.gr-card,section.block,button,.btn,.gr-btn{animation:none!important;transition:none!important;transform:none!important}}


/* source-style-29: grV2531RefreshStyles */

.gr-brand-refresh{display:inline-grid;place-items:center;flex:0 0 auto;width:30px;height:30px;margin-left:7px;border:1px solid rgba(42,108,71,.20);border-radius:999px;background:rgba(42,108,71,.055);color:#2A6C47;font:700 17px/1 Arial,sans-serif;cursor:pointer;transition:transform .16s,background .16s,border-color .16s,opacity .16s;vertical-align:middle}
.gr-brand-refresh:hover{background:rgba(42,108,71,.11);border-color:rgba(42,108,71,.38);transform:translateY(-1px)}
.gr-brand-refresh:active{transform:translateY(0) scale(.96)}
.gr-brand-refresh.is-loading{animation:grBrandSpin .75s linear infinite;opacity:.72;pointer-events:none}
.gr-brand-refresh.is-ok{background:rgba(42,108,71,.14);border-color:rgba(42,108,71,.42)}
.gr-brand-refresh-admin{width:31px;height:31px;margin-left:-4px;margin-right:2px;color:var(--accent);background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 28%,var(--line))}
.gr-brand-refresh-admin:hover{background:color-mix(in srgb,var(--accent-soft) 75%,var(--panel-2));border-color:color-mix(in srgb,var(--accent) 52%,var(--line))}
#grPublico .gr-marca,#grCliente .gr-marca{align-items:center}
@keyframes grBrandSpin{to{transform:rotate(360deg)}}
@media(max-width:700px){.gr-brand-refresh{width:29px;height:29px;margin-left:4px}.gr-brand-refresh-admin{display:none}}


/* source-style-30: granV261FinalStyles */

@media screen{
:root{--v26-green:#102F27;--v26-green-2:#174638;--v26-green-3:#2D7054;--v26-gold:#B69652;--v26-gold-soft:#E2D4AE;--v26-bg:#F4F2EC;--v26-card:#FFFFFF;--v26-ink:#1E2A24;--v26-muted:#6E7973;--v26-line:#DDE3DE;--v26-ok:#3E7D59;--v26-warn:#B87C27;--v26-bad:#963F39}
body.light-theme{--paper:#F4F2EC!important;--paper-raised:#fff!important;--panel:#fff!important;--panel-2:#F9F8F4!important;--hover:#EEF2EE!important;--ink:#1E2A24!important;--ink-soft:#6E7973!important;--line:#DDE3DE!important;--accent:#2D7054!important;--accent-strong:#215B45!important;--gold:#B69652!important;--ochre:#A87834!important}
nav.tabs{background:linear-gradient(180deg,#102F27 0%,#0B241D 100%)!important;border-right:1px solid rgba(255,255,255,.07)!important;box-shadow:18px 0 48px rgba(15,47,39,.08)}
nav.tabs button{color:#B9C8C0!important;border-radius:10px!important;transition:.18s ease!important}nav.tabs button:hover{color:#fff!important;background:rgba(255,255,255,.055)!important;transform:translateX(2px)}nav.tabs button.active{color:#fff!important;background:linear-gradient(90deg,rgba(182,150,82,.24),rgba(255,255,255,.035))!important;box-shadow:inset 3px 0 0 #D3B66F!important}
.sidebar-brand{position:relative}.sidebar-brand .brand-mark{background:linear-gradient(145deg,#C7A85F,#947238)!important;box-shadow:0 9px 22px rgba(0,0,0,.18)}
.gr-v261-refresh{margin-top:10px;width:100%;display:flex;align-items:center;justify-content:center;gap:7px;padding:8px 10px;border:1px solid rgba(226,212,174,.22);border-radius:10px;background:rgba(255,255,255,.04);color:#E7D9B0;font:700 .62rem var(--sans);cursor:pointer;transition:.18s}.gr-v261-refresh:hover{background:rgba(182,150,82,.14);border-color:rgba(226,212,174,.38)}.gr-v261-refresh.is-loading .gr-ref-icon{animation:grv261spin .8s linear infinite}@keyframes grv261spin{to{transform:rotate(360deg)}}
.block,.card,.kpi,.portal-card{border-color:var(--v26-line)!important;box-shadow:0 10px 30px rgba(22,49,38,.035);transition:transform .2s ease,box-shadow .2s ease,border-color .2s}.block:hover{border-color:#CED8D0!important}.view.active{animation:grV261Page .24s cubic-bezier(.2,.75,.2,1)}@keyframes grV261Page{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
.quick-actions-panel{background:linear-gradient(135deg,#F8F6F0,#F1F5F0)!important;border:1px solid #DAE2DB!important;box-shadow:0 18px 46px rgba(29,65,48,.055)!important}.quick-action{position:relative;overflow:hidden;background:#fff!important;border:1px solid #DCE4DD!important;border-radius:14px!important;box-shadow:0 7px 20px rgba(31,67,51,.035)!important}.quick-action:before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(#B69652,#2D7054);opacity:.45}.quick-action:hover{transform:translateY(-2px)!important;border-color:#C4D1C7!important;box-shadow:0 13px 28px rgba(31,67,51,.08)!important}.quick-action strong{color:#1F392D!important}.quick-action span{color:#718078!important}
.pay-option-wrap{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px!important}.pay-option-btn{position:relative!important;min-height:70px!important;border:1px solid #D9E1DB!important;background:linear-gradient(180deg,#fff,#FAFBF8)!important;color:#22342A!important;border-radius:14px!important;padding:13px 14px 12px 46px!important;box-shadow:0 6px 18px rgba(27,62,45,.04)!important;transition:.18s ease!important;text-align:left!important}.pay-option-btn:before{position:absolute;left:13px;top:14px;width:25px;height:25px;display:grid;place-items:center;border-radius:8px;background:#EEF4EF;color:#2D7054;font-size:13px}.pay-option-btn[data-value="PIX"]::before{content:'◆'}.pay-option-btn[data-value="BOLETO"]::before{content:'▤'}.pay-option-btn[data-value="TRANSFERENCIA"]::before{content:'⇄'}.pay-option-btn[data-value="parcelado"]::before{content:'▦'}.pay-option-btn[data-value="avista"]::before{content:'✓'}.pay-option-btn:hover{transform:translateY(-1px);border-color:#B9CBBF!important;box-shadow:0 10px 24px rgba(27,62,45,.075)!important}.pay-option-btn.active{background:linear-gradient(145deg,#153D31,#235F48)!important;color:#fff!important;border-color:#235F48!important;box-shadow:0 12px 28px rgba(24,70,53,.18)!important}.pay-option-btn.active:before{background:rgba(255,255,255,.15)!important;color:#F3E1AF!important}.pay-option-btn.boleto.active{background:linear-gradient(145deg,#7B612F,#A27B37)!important;border-color:#A27B37!important}.pay-option-btn .pay-sub{opacity:.76!important;margin-top:4px!important;font-size:.64rem!important}
.gr-session-chip{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:999px;border:1px solid var(--line);background:var(--panel);font-size:.64rem;color:var(--ink-soft);white-space:nowrap}.gr-session-chip b{font-variant-numeric:tabular-nums;color:var(--ink)}.gr-session-chip.warn{border-color:rgba(184,124,39,.35);background:rgba(184,124,39,.08)}.gr-session-chip.danger{border-color:rgba(150,63,57,.4);background:rgba(150,63,57,.08);color:#8A332E}
.gr-lock-overlay,.gr-master-overlay{position:fixed;inset:0;z-index:1000000;background:rgba(5,16,12,.84);backdrop-filter:blur(15px);display:none;align-items:center;justify-content:center;padding:18px}.gr-security-card{width:min(450px,100%);background:#fff;color:#1E2A24;border-radius:22px;padding:26px;border:1px solid #DDE3DE;box-shadow:0 34px 100px rgba(0,0,0,.38)}.gr-security-card h2{margin:5px 0 7px}.gr-security-card input,.gr-security-card textarea{width:100%;margin-top:8px}.gr-security-kicker{font-size:.61rem;letter-spacing:.14em;color:#9B7838;font-weight:800}.gr-security-meta{font-size:.72rem;color:#6E7973;margin:8px 0}.gr-security-error{min-height:19px;color:#963F39;font-size:.74rem;margin:7px 0}.gr-security-actions{display:flex;gap:8px;margin-top:14px}.gr-security-actions .btn{flex:1}
.gr-v261-dashboard-extra{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0 0 18px}.gr-v261-chart{background:#fff;border:1px solid #DDE3DE;border-radius:16px;padding:16px;min-height:230px}.gr-v261-chart h3{margin:0 0 3px;font-size:.88rem}.gr-v261-chart p{margin:0 0 14px;color:#748078;font-size:.65rem}.gr-bars{height:150px;display:flex;align-items:end;gap:6px;border-bottom:1px solid #E5E9E5;padding-top:12px}.gr-bar-col{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:flex-end;height:100%;gap:5px}.gr-bar{min-height:2px;border-radius:6px 6px 2px 2px;background:linear-gradient(180deg,#4A8D69,#2D7054);transition:height .45s ease}.gr-bar.alt{background:linear-gradient(180deg,#D0AE60,#A67D38)}.gr-bar-label{font-size:.54rem;text-align:center;color:#77827C;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gr-chart-legend{display:flex;gap:10px;flex-wrap:wrap;margin-top:9px;font-size:.59rem;color:#6F7B74}.gr-chart-legend i{width:8px;height:8px;border-radius:3px;display:inline-block;margin-right:4px;background:#2D7054}.gr-chart-legend i.alt{background:#B69652}.gr-big-number{font-size:1.55rem;font-weight:800;color:#1C3D30;margin-top:18px}.gr-mini-list{display:grid;gap:8px;margin-top:13px}.gr-mini-row{display:grid;grid-template-columns:70px 1fr auto;gap:7px;align-items:center;font-size:.61rem}.gr-mini-track{height:7px;border-radius:99px;background:#EEF1EE;overflow:hidden}.gr-mini-track i{display:block;height:100%;background:#B69652;border-radius:99px}
.gr-health-panel{padding:17px;border:1px solid #DDE3DE;border-radius:16px;background:#FAFBF8;margin-bottom:15px}.gr-health-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}.gr-health-score{font-size:1.5rem;font-weight:850;color:#2D7054}.gr-health-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:13px}.gr-health-item{padding:11px;border-radius:12px;background:#fff;border:1px solid #E0E5E1;font-size:.67rem}.gr-health-item b{display:block;margin-bottom:3px}.gr-health-item.ok b{color:#3E7D59}.gr-health-item.warn b{color:#B87C27}.gr-health-item.bad b{color:#963F39}
.gr-dt-dashboard{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin:0 0 13px}.gr-dt-kpi{padding:13px;border:1px solid #DDE3DE;border-radius:13px;background:#fff}.gr-dt-kpi span{display:block;font-size:.57rem;color:#748078;text-transform:uppercase;letter-spacing:.06em}.gr-dt-kpi strong{display:block;margin-top:4px;font-size:1rem}.gr-dt-filters{display:grid;grid-template-columns:2fr repeat(4,1fr);gap:8px;margin-bottom:10px}.gr-dt-row{display:grid;grid-template-columns:1.35fr .7fr .8fr .9fr auto;gap:9px;align-items:center;padding:10px 11px;border:1px solid #E0E5E1;border-radius:11px;background:#fff;margin-top:7px;font-size:.68rem}
.gr-plan-validator{margin:12px 0 14px;padding:13px 14px;border:1px solid #DDE3DE;border-radius:13px;background:#FAFBF8}.gr-plan-validator.ok{border-color:rgba(62,125,89,.30);background:rgba(62,125,89,.055)}.gr-plan-validator.bad{border-color:rgba(150,63,57,.30);background:rgba(150,63,57,.055)}.gr-plan-validator h4{margin:0 0 8px}.gr-plan-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.gr-plan-grid div{padding:8px;background:#fff;border:1px solid #E6EAE7;border-radius:9px;font-size:.59rem}.gr-plan-grid b{display:block;font-size:.72rem;margin-top:2px}
.cli-overlay{padding:18px!important;align-items:stretch!important;justify-content:flex-end!important}.cli-dialog{width:min(960px,92vw)!important;max-width:none!important;height:calc(100vh - 36px)!important;max-height:none!important;border-radius:20px!important;display:flex!important;flex-direction:column!important;overflow:hidden!important;box-shadow:-18px 0 70px rgba(0,0,0,.30)!important}.cli-head{position:sticky;top:0;z-index:3;background:var(--panel);border-bottom:1px solid var(--line);padding-bottom:14px!important}.cli-body{overflow:auto!important;flex:1!important;padding-right:4px!important}.cli-foot{position:sticky;bottom:0;z-index:3;background:var(--panel);border-top:1px solid var(--line);padding-top:13px!important}.cli-secao{padding:16px!important;border:1px solid var(--line)!important;border-radius:14px!important;background:var(--panel-2)!important;margin-bottom:12px!important}.gr-client-tabs{display:flex;gap:5px;overflow:auto;margin:10px 0 14px;padding-bottom:3px}.gr-client-tabs button{border:1px solid var(--line);background:var(--panel-2);color:var(--ink-soft);border-radius:999px;padding:7px 11px;font:700 .61rem var(--sans);white-space:nowrap;cursor:pointer}.gr-client-tabs button.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.gr-buyer-lookup{margin:0 0 16px;padding:15px;border-radius:15px;border:1px solid #D9E2DB;background:linear-gradient(135deg,#F8F8F3,#F1F5F0)}.gr-buyer-lookup-head{display:flex;justify-content:space-between;gap:12px;align-items:end}.gr-buyer-lookup-head>div:first-child{flex:1}.gr-buyer-lookup .gr-lookup-row{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:8px;margin-top:10px}.gr-lookup-msg{margin-top:8px;font-size:.68rem;color:#69766F}.gr-lookup-msg.ok{color:#34704E}.gr-lookup-msg.warn{color:#9A6C25}
.gr-rodape-v26{margin-top:34px;padding:24px 0 30px!important;border-top:1px solid rgba(216,174,82,.16);display:grid;grid-template-columns:1.2fr 1fr auto;gap:20px;color:#8EA097!important;text-align:left!important}.gr-rodape-v26>div{display:grid;gap:4px}.gr-rodape-v26 strong{color:#F0E4BD;font-size:.82rem}.gr-rodape-v26 span{font-size:.68rem;line-height:1.45}.gr-rodape-v26 small{grid-column:1/-1;font-size:.6rem;color:#718179}.gr-footer-actions{align-content:start}
.gr-location-info{padding:34px!important;background:linear-gradient(160deg,#0E2D24,#0A201A)!important}.gr-location-info h3{font-size:1.7rem!important;line-height:1.1!important;max-width:420px}.gr-location-info .gr-home-eyebrow{color:#D7BC75!important}.gr-location-coords{color:#AFC0B7!important;opacity:1!important}.gr-location-info .gr-hero-actions{display:grid!important;grid-template-columns:1fr!important}.gr-location-info .gr-btn{width:100%!important;justify-content:center!important}.gr-location-grid{align-items:stretch!important}.gr-location-media,.gr-location-info{min-height:430px!important}
.gr-mapa-barra{border-radius:14px!important;padding:10px!important;background:rgba(255,255,255,.035)!important}.gr-chip{border-radius:999px!important}.gr-mapa-rail .gr-card{border-radius:16px!important}.gr-v26-map-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin:11px 0 13px}.gr-v26-map-filters input,.gr-v26-map-filters select{min-width:0}
.gr-gallery-section .gr-gallery-grid{position:relative}.gr-gallery-section.gr-carousel-mode .gr-gallery-grid{display:block!important;min-height:590px}.gr-gallery-section.gr-carousel-mode .gr-gallery-card{position:absolute!important;inset:0!important;opacity:0;transform:translateX(18px) scale(.995);pointer-events:none;transition:opacity .7s ease,transform .7s ease}.gr-gallery-section.gr-carousel-mode .gr-gallery-card.gr-slide-active{opacity:1;transform:none;pointer-events:auto}.gr-gallery-dots{display:flex;justify-content:center;gap:7px;margin-top:16px}.gr-gallery-dots button{width:7px;height:7px;padding:0;border:0;border-radius:99px;background:#53675D;cursor:pointer;transition:.2s}.gr-gallery-dots button.active{width:24px;background:#D6B969}.gr-gallery-playnote{text-align:center;font-size:.62rem;color:#8EA097;margin-top:9px}
.gr-print-draft-note{margin:10px 0;padding:10px 12px;border-radius:10px;border:1px solid rgba(184,124,39,.25);background:rgba(184,124,39,.07);font-size:.68rem;color:#77521E}.gr-contract-actions-v26{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.gr-simple-club{margin-bottom:15px;padding:15px;border:1px solid #DFE4DF;border-radius:15px;background:#FAFBF8}.gr-simple-club-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.gr-benefit-card{padding:12px;border:1px solid #E2E7E3;border-radius:12px;background:#fff}.gr-benefit-card span{font-size:.57rem;color:#748078;text-transform:uppercase}.gr-benefit-card strong{display:block;margin:5px 0}.gr-benefit-card small{color:#718078}
.gr-admin-footer-v26{margin:20px 0 72px;display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:center;color:var(--ink-soft);font-size:.61rem}.gr-admin-footer-v26 .dot{width:7px;height:7px;border-radius:50%;background:#3E7D59;box-shadow:0 0 0 3px rgba(62,125,89,.12)}
}
@media(max-width:1050px){.gr-v261-dashboard-extra{grid-template-columns:1fr 1fr}.gr-v261-dashboard-extra>.gr-v261-chart:last-child{grid-column:1/-1}.gr-dt-dashboard{grid-template-columns:repeat(3,1fr)}.gr-dt-filters{grid-template-columns:1fr 1fr}.gr-dt-filters>*:first-child{grid-column:1/-1}.gr-plan-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:720px){.pay-option-wrap{grid-template-columns:1fr!important}.pay-option-btn{min-height:62px!important}.gr-session-chip{position:fixed;right:12px;top:72px;z-index:900;box-shadow:0 8px 24px rgba(0,0,0,.12);background:#fff}.gr-v261-dashboard-extra{grid-template-columns:1fr}.gr-v261-dashboard-extra>.gr-v261-chart:last-child{grid-column:auto}.gr-health-grid{grid-template-columns:1fr 1fr}.gr-dt-dashboard{grid-template-columns:1fr 1fr}.gr-dt-filters{grid-template-columns:1fr}.gr-dt-filters>*:first-child{grid-column:auto}.gr-dt-row{grid-template-columns:1fr 1fr}.gr-dt-row>*:first-child{grid-column:1/-1}.gr-plan-grid{grid-template-columns:1fr 1fr}.cli-overlay{padding:0!important}.cli-dialog{width:100vw!important;height:100vh!important;border-radius:0!important}.gr-buyer-lookup .gr-lookup-row{grid-template-columns:1fr}.gr-rodape-v26{grid-template-columns:1fr}.gr-rodape-v26 small{grid-column:auto}.gr-location-media,.gr-location-info{min-height:0!important}.gr-location-info{padding:24px!important}.gr-v26-map-filters{grid-template-columns:1fr 1fr}.gr-gallery-section.gr-carousel-mode .gr-gallery-grid{min-height:350px}.gr-brand-refresh-admin{display:inline-grid!important}.gr-client-map-orbit,.gr-client-lot-runner,.gr-client-lot-head{animation-play-state:running!important}}
@media(prefers-reduced-motion:reduce){.gr-client-lot-runner,.gr-client-lot-head{animation-duration:2.2s!important;animation-iteration-count:infinite!important}.gr-gallery-section.gr-carousel-mode .gr-gallery-card{transition:opacity .3s ease!important;transform:none!important}}
@media print{
@page{size:A4 portrait;margin:14mm 15mm 22mm 15mm}
html,body{background:#fff!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
body.print-contract-v35.gr-print-draft #view-contrato>.print-watermark::after{content:'MINUTA'!important;font-size:52pt!important;color:#6F5A26!important;opacity:.095!important;letter-spacing:.12em!important}
body.print-contract-v35.gr-print-draft #contratoDoc:before{content:'DOCUMENTO PRELIMINAR · SEM EFEITO DEFINITIVO';display:block!important;border:1px solid #9A7A34!important;color:#735A22!important;background:#FBF6E7!important;padding:2.5mm 3mm!important;margin:0 0 4mm!important;text-align:center!important;font:700 8pt Arial!important;letter-spacing:.05em!important;break-inside:avoid!important}
body.print-contract-v35 .contrato-doc{font-size:9.8pt!important;line-height:1.42!important;width:100%!important;max-width:none!important}.contrato-doc table,.contrato-doc .quadro,.contract-auth-box,.contract-summary{break-inside:avoid-page!important;page-break-inside:avoid!important}.contrato-doc h1,.contrato-doc h2,.contrato-doc h3,.contrato-doc h4{break-after:avoid-page!important;page-break-after:avoid!important}.contrato-doc tr{break-inside:avoid-page!important}
}


/* ============================================================
   V26.3 — ESCALA DE LEITURA
   421 dos 486 font-size do sistema estão em rem e herdavam os
   16px padrão do navegador, o que deixava os tamanhos mais usados
   em 10px e 11px. Subir a base reescala tipografia e espaçamentos
   em rem de uma vez, sem tocar em nenhuma regra individual.
   Para reverter, basta remover este bloco.
   ============================================================ */
html{font-size:clamp(17px, 16.3px + 0.22vw, 18.5px)}

/* ------------------------------------------------------------
   V26.3 — FAIXA DE TABLET (721–900px)
   A barra inferior de aplicativo só entra em 720px. Entre 721 e
   900px os 7 itens ainda ficam no topo, com o espaçamento de
   desktop, e estouravam o container em ~97px. Aqui eles apenas
   apertam o respiro lateral; nada é escondido.
   ------------------------------------------------------------ */
@media(min-width:721px) and (max-width:900px){
  .gr-menu{gap:0}
  .gr-menu button{padding:9px 7px;font-size:.72rem}
  .gr-menu .gr-admin-acesso{padding:7px 7px!important}
}

/* ------------------------------------------------------------
   V26.3 — ALVO DE TOQUE
   Botões da barra inferior tinham ~30px de altura. O mínimo
   confortável para o dedo é 44px.
   ------------------------------------------------------------ */
@media(max-width:720px){
  .gr-menu button{min-height:44px;display:flex;align-items:center;justify-content:center}
  .gr-menu .gr-admin-acesso{min-height:44px;min-width:44px}
}

/* ------------------------------------------------------------
   V26.3 — BARRA DE NAVEGAÇÃO DO CELULAR
   .gr-menu é position:fixed; bottom:8px — deveria flutuar no rodapé
   como barra de aplicativo. Só que backdrop-filter em um ancestral
   cria bloco de contenção, e o "fixo" passa a se ancorar nele. O
   conserto que já existia (.gr-top{backdrop-filter:none}) perdia por
   especificidade para "#grPublico .gr-top" e era reativado de novo
   em "@media(max-width:520px) .gr-home .gr-top". Resultado: a barra
   aparecia colada no topo, sobre o cabeçalho.
   ------------------------------------------------------------ */
@media(max-width:720px){
  .gr-top,
  .gr-home .gr-top,
  #grPublico .gr-top,
  #grCliente .gr-top{
    backdrop-filter:none!important;
    -webkit-backdrop-filter:none!important;
  }
  /* respiro para o último bloco não ficar embaixo da barra */
  #grPublico,#grCliente{padding-bottom:76px}
}

/* ------------------------------------------------------------
   V26.4 — BUSCA DE CLIENTE COLADA NO CAMPO
   A linha de busca é um grid de duas colunas (campo + botão), mas
   abaixo de 720px virava uma coluna só e o botão caía para baixo,
   longe do campo. Aqui ele fica ao lado em qualquer largura.
   ------------------------------------------------------------ */
.gr-buyer-lookup .gr-lookup-row{grid-template-columns:minmax(0,1fr) auto!important;gap:8px!important;align-items:stretch}
.gr-buyer-lookup .gr-lookup-row #grLookupDoc{min-width:0}
.gr-buyer-lookup .gr-lookup-row #grLookupBtn{white-space:nowrap;padding-inline:16px}
@media(max-width:420px){
  .gr-buyer-lookup .gr-lookup-row{gap:6px!important}
  .gr-buyer-lookup .gr-lookup-row #grLookupBtn{padding-inline:12px;font-size:.78rem}
}

/* ------------------------------------------------------------
   V26.4 — BOTÃO CONSULTAR AO LADO DO CEP
   ------------------------------------------------------------ */
.gr-cep-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch}
.gr-cep-row input{min-width:0}
.gr-cep-row .gr-cep-btn{white-space:nowrap;padding-inline:14px}
@media(max-width:420px){.gr-cep-row{gap:6px}.gr-cep-row .gr-cep-btn{padding-inline:10px;font-size:.78rem}}

/* ============================================================
   V26.5 — CORTES DE LAYOUT
   ============================================================ */

/* Cartões de condição de venda e meio de pagamento.
   .pay-option-wrap forçava repeat(3, minmax(0,1fr)) dentro de uma célula
   de ~230px do formulário: cada cartão ficava com 73px e precisava de até
   145px, cortando "Transferência" e "+ R$ 3,60 por emissão". Agora eles
   quebram para a linha de baixo quando não cabem lado a lado. */
.pay-option-wrap{grid-template-columns:repeat(auto-fit,minmax(112px,1fr))!important}
.pay-option-btn{min-width:0;white-space:normal;overflow-wrap:anywhere;text-align:center;line-height:1.25}
.pay-option-btn .pay-sub{white-space:normal;overflow-wrap:anywhere}

/* Tabelas no celular. .table-wrap não tinha regra nenhuma, então tabelas
   mais largas que a tela eram cortadas — colunas simplesmente sumiam.
   Agora o bloco rola na horizontal e nada fica inacessível. */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
.table-wrap>table{min-width:max-content}
section.block{min-width:0}

/* ------------------------------------------------------------
   V26.5 — SELO DA MARCA NO ADMINISTRATIVO
   A regra que aplica a marca (.brand-mark{background:var(--gr-marca)})
   existia, mas era vencida por um degradê declarado depois no arquivo.
   O resultado era um quadrado dourado com as letras "GR" no lugar do
   logotipo — e espremido em 20px porque o flex o comprimia.
   ------------------------------------------------------------ */
.brand-mark,
nav.tabs .brand-mark,
.sidebar-brand .brand-mark{
  background-image:var(--gr-marca)!important;
  background-color:transparent!important;
  background-size:contain!important;
  background-position:center!important;
  background-repeat:no-repeat!important;
  width:38px!important;height:38px!important;
  flex:0 0 38px!important;
  border-radius:0!important;box-shadow:none!important;
  color:transparent!important;font-size:0!important;
}

/* ------------------------------------------------------------
   V26.6 — BARRA DE SALVAR DOS PARÂMETROS
   ------------------------------------------------------------ */
.gr-salvar-barra{position:sticky;bottom:0;z-index:20;display:flex;align-items:center;justify-content:space-between;
  gap:12px;flex-wrap:wrap;margin-top:18px;padding:12px 16px;border-radius:14px;
  border:1px solid var(--line);background:var(--paper-raised);
  box-shadow:0 -6px 24px rgba(0,0,0,.18)}
.gr-salvar-barra .gr-salvar-estado{font-size:.78rem;color:var(--ink-soft)}
.gr-salvar-barra.sujo{border-color:#B69652;background:rgba(182,150,82,.10)}
.gr-salvar-barra.sujo .gr-salvar-estado{color:#B69652;font-weight:700}
.gr-salvar-barra .btn{min-height:42px}
@media(max-width:520px){.gr-salvar-barra{flex-direction:column;align-items:stretch}.gr-salvar-barra .btn{width:100%}}

/* V26.7 — zona do setor comercial + legenda discreta */
.gr-zona-comercial{fill:rgba(225,187,97,.13);stroke:#E1BB61;stroke-width:.55;
  stroke-dasharray:2.6 1.8;vector-effect:non-scaling-stroke;pointer-events:none}
.dxf-lot-group[data-dxf-lot^="COM-"] .dxf-lot-shape{stroke:#EBCC80!important;stroke-width:.62!important}
.gr-mapa-legenda{position:absolute;left:10px;bottom:10px;z-index:6;display:flex;align-items:center;gap:14px;
  padding:5px 10px;border-radius:8px;background:rgba(8,20,15,.72);border:1px solid rgba(255,255,255,.07);
  font-size:.64rem;color:#C7D4CD;letter-spacing:.01em}
.gr-mapa-legenda span{display:flex;align-items:center;gap:6px}
.gr-mapa-legenda i{width:11px;height:11px;border-radius:2px;display:inline-block;
  background:#267049;border:1px solid #8FA298}
.gr-mapa-legenda i.com{background:rgba(225,187,97,.18);border:1px dashed #E1BB61}
@media(max-width:520px){.gr-mapa-legenda{left:6px;bottom:6px;font-size:.6rem;gap:10px}}

/* V26.7 — salvar por bloco nos Parâmetros */
.gr-bloco-salvar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  margin-top:14px;padding:10px 13px;border-radius:11px;
  border:1px solid rgba(182,150,82,.35);background:rgba(182,150,82,.09)}
.gr-bloco-salvar .gr-bloco-estado{font-size:.74rem;font-weight:600;color:#B69652}
.gr-bloco-salvar .btn{min-height:40px}
@media(max-width:520px){.gr-bloco-salvar{flex-direction:column;align-items:stretch}.gr-bloco-salvar .btn{width:100%}}

/* ============================================================
   V26.9 — CAMADA DE ACABAMENTO
   O sistema já animava, mas cada parte com sua própria duração e
   curva. Aqui definimos uma escala única de movimento e aplicamos
   às interações — é a diferença entre "tem animação" e "parece
   caro". Nada de estrutura muda; é só acabamento.
   ============================================================ */
:root{
  /* escala de movimento */
  --mov-rapido:120ms;
  --mov-base:200ms;
  --mov-calmo:320ms;
  /* curva de saída suave: começa firme e desacelera — a mesma dos
     sistemas operacionais modernos, em vez do "ease" padrão */
  --curva:cubic-bezier(.22,.61,.36,1);
  --curva-entrada:cubic-bezier(.16,.84,.44,1);
  /* elevação em três níveis, em vez de 138 sombras improvisadas */
  --elev-1:0 1px 2px rgba(12,26,20,.06), 0 2px 8px rgba(12,26,20,.05);
  --elev-2:0 4px 12px rgba(12,26,20,.09), 0 12px 28px rgba(12,26,20,.07);
  --elev-3:0 10px 30px rgba(12,26,20,.13), 0 26px 60px rgba(12,26,20,.10);
  --raio:12px;
  --raio-g:16px;
}

@media (prefers-reduced-motion: no-preference){

  /* Interações: uma curva só para tudo que responde ao toque */
  .btn,.pay-option-btn,.gr-btn,.tab,nav.tabs button,.gr-menu button,
  .palette-item,.gr-notify-item,.card,.kpi,.block,.gr-gallery-card,
  input,select,textarea,.dxf-lot-shape,.gr-cep-btn{
    transition:background-color var(--mov-base) var(--curva),
               border-color var(--mov-base) var(--curva),
               color var(--mov-base) var(--curva),
               box-shadow var(--mov-base) var(--curva),
               transform var(--mov-rapido) var(--curva),
               opacity var(--mov-base) var(--curva);
  }

  /* Resposta física ao clique — o botão afunda de leve e volta */
  .btn:active,.gr-btn:active,.pay-option-btn:active,.gr-cep-btn:active{
    transform:translateY(1px) scale(.994);
  }
  .btn:hover:not(:disabled),.gr-btn:hover:not(:disabled){
    transform:translateY(-1px);
    box-shadow:var(--elev-2);
  }

  /* Entrada da tela: o conteúdo sobe um fio ao trocar de aba, em vez
     de aparecer seco */
  .view.active{animation:grEntra var(--mov-calmo) var(--curva-entrada) both}
  @keyframes grEntra{
    from{opacity:0;transform:translateY(8px)}
    to{opacity:1;transform:none}
  }

  /* Cartões e blocos ganham profundidade só no hover, sem pular */
  .block:hover,.kpi:hover{box-shadow:var(--elev-2)}

  /* Linhas de tabela acendem ao passar */
  tbody tr{transition:background-color var(--mov-rapido) var(--curva)}
}

/* Foco visível e bonito — hoje o padrão do navegador quebra o desenho.
   Vale também para quem navega por teclado, que é acessibilidade. */
:where(.btn,.gr-btn,button,a,input,select,textarea,[tabindex]):focus-visible{
  outline:2px solid #4BE0A1;
  outline-offset:2px;
  border-radius:8px;
}
:where(input,select,textarea):focus{
  border-color:#4BE0A1;
  box-shadow:0 0 0 3px rgba(75,224,161,.14);
}

/* Barra de rolagem no tom do sistema, em vez da cinza do navegador */
*{scrollbar-width:thin;scrollbar-color:rgba(140,160,150,.45) transparent}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{background:rgba(140,160,150,.38);border-radius:99px;
  border:3px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:rgba(140,160,150,.62);background-clip:content-box}

/* Imagens e mapas não "piscam" ao carregar */
img{transition:opacity var(--mov-calmo) var(--curva)}

/* V26.9 — revelação das seções do portal ao rolar */
@media (prefers-reduced-motion: no-preference){
  .gr-revela{opacity:0;transform:translateY(22px);
    transition:opacity 620ms var(--curva-entrada), transform 620ms var(--curva-entrada)}
  .gr-revela.visivel{opacity:1;transform:none}
  .gr-gallery-card.gr-revela{transition-duration:700ms}
  .gr-gallery-card:hover img{transform:scale(1.035)}
  .gr-gallery-card img{transition:transform 900ms var(--curva)}
}

/* V26.9 — jornada acionável no portal */
.gr-journey-acionavel{position:relative;cursor:pointer;outline:none}
.gr-journey-seta{position:absolute;right:16px;bottom:14px;opacity:0;transform:translateX(-6px);
  color:#E4C578;font-size:1.05rem;line-height:1;pointer-events:none}
@media (prefers-reduced-motion: no-preference){
  .gr-journey-acionavel{transition:transform var(--mov-base) var(--curva),
    box-shadow var(--mov-base) var(--curva), border-color var(--mov-base) var(--curva)}
  .gr-journey-seta{transition:opacity var(--mov-base) var(--curva), transform var(--mov-base) var(--curva)}
  .gr-journey-acionavel:hover{transform:translateY(-3px)}
}
.gr-journey-acionavel:hover,.gr-journey-acionavel:focus-visible{
  border-color:rgba(228,197,120,.55);box-shadow:0 12px 30px rgba(0,0,0,.18)}
.gr-journey-acionavel:hover .gr-journey-seta,
.gr-journey-acionavel:focus-visible .gr-journey-seta{opacity:1;transform:none}
.gr-journey-acionavel:active{transform:translateY(-1px) scale(.995)}

/* ============================================================
   V27.1 — PALETA CONSOLIDADA
   O arquivo acumulou 678 cores distintas em 1.040 usos, e 27 dos
   51 tokens eram redefinidos em blocos posteriores — o valor final
   dependia de quem viesse por último. Aqui fica a paleta única, no
   fim do arquivo, onde ela vence. Nada de estrutura muda.

   A identidade é dourado sobre verde profundo, com papel creme.
   O verde-menta que aparecia em foco e destaques vinha de template
   e brigava com a marca: foi substituído pelo dourado.
   ============================================================ */
:root{
  /* marca */
  --marca-ouro:#D8AE52;
  --marca-ouro-claro:#EBCC80;
  --marca-ouro-escuro:#8A702A;
  --marca-verde:#173124;
  --marca-verde-medio:#2D7054;

  /* status dos lotes — mesma luminosidade percebida, para que nenhum
     grite mais alto que o outro no mapa */
  --st-disponivel:#2E7D53;
  --st-negociacao:#3A6E9E;
  --st-reservado:#A8862F;
  --st-vendido:#9B4436;
  --st-bloqueado:#4A554F;
  --st-distratado:#6B4E86;
}

/* Foco e seleção passam a usar o dourado da marca, não o menta */
:where(.btn,.gr-btn,button,a,input,select,textarea,[tabindex]):focus-visible{
  outline:2px solid var(--marca-ouro)!important;
  outline-offset:2px;
}
:where(input,select,textarea):focus{
  border-color:var(--marca-ouro)!important;
  box-shadow:0 0 0 3px rgba(216,174,82,.18)!important;
}
::selection{background:rgba(216,174,82,.28)}

/* Status do mapa vindos de um lugar só */
.dxf-lot-group.status-disponivel .dxf-lot-shape{fill:var(--st-disponivel)!important}
.dxf-lot-group.status-negociacao .dxf-lot-shape{fill:var(--st-negociacao)!important}
.dxf-lot-group.status-reservado  .dxf-lot-shape{fill:var(--st-reservado)!important}
.dxf-lot-group.status-vendido    .dxf-lot-shape{fill:var(--st-vendido)!important}
.dxf-lot-group.status-bloqueado  .dxf-lot-shape{fill:var(--st-bloqueado)!important}
.dxf-lot-group.status-distratado .dxf-lot-shape{fill:var(--st-distratado)!important}
.gr-mapa-legenda i{background:var(--st-disponivel)}
.gr-mapa-legenda i.com{background:rgba(216,174,82,.18);border:1px dashed var(--marca-ouro)}
.gr-zona-comercial{fill:rgba(216,174,82,.13);stroke:var(--marca-ouro)}
.dxf-lot-group[data-dxf-lot^="COM-"] .dxf-lot-shape{stroke:var(--marca-ouro-claro)!important}

/* ============================================================
   V27.2 — GALERIA COM MOVIMENTO (Ken Burns)
   A foto parada e a troca seca davam cara de catálogo. Aqui cada
   imagem respira: aproxima devagar enquanto está no ar e atravessa
   para a próxima em fusão, como documentário. O movimento é lento
   de propósito — rápido demais enjoa e denuncia o truque.
   ============================================================ */
@media (prefers-reduced-motion: no-preference){
  .gr-gallery-section.gr-carousel-mode .gr-gallery-card{
    transition:opacity 1100ms var(--curva), transform 1100ms var(--curva);
  }
  .gr-gallery-section.gr-carousel-mode .gr-gallery-card.gr-slide-active img{
    animation:grCinema 8200ms ease-out both;
    will-change:transform;
  }
  /* direções alternadas para não repetir o mesmo gesto */
  .gr-gallery-section.gr-carousel-mode .gr-gallery-card:nth-child(2n).gr-slide-active img{
    animation-name:grCinemaB;
  }
  .gr-gallery-section.gr-carousel-mode .gr-gallery-card:nth-child(3n).gr-slide-active img{
    animation-name:grCinemaC;
  }
  @keyframes grCinema{
    from{transform:scale(1.015) translate3d(0,0,0)}
    to{transform:scale(1.10) translate3d(-1.6%,-1.2%,0)}
  }
  @keyframes grCinemaB{
    from{transform:scale(1.10) translate3d(1.4%,1.0%,0)}
    to{transform:scale(1.015) translate3d(0,0,0)}
  }
  @keyframes grCinemaC{
    from{transform:scale(1.02) translate3d(1.5%,-0.8%,0)}
    to{transform:scale(1.09) translate3d(-1.2%,0.9%,0)}
  }
  /* no modo cinema o hover não disputa com a animação */
  .gr-gallery-section.gr-carousel-mode .gr-gallery-card:hover img{transform:none}
  /* a legenda entra junto, um instante depois da imagem */
  .gr-gallery-section.gr-carousel-mode .gr-slide-active .gr-gallery-caption{
    animation:grLegenda 900ms 220ms var(--curva-entrada) both;
  }
  @keyframes grLegenda{
    from{opacity:0;transform:translateY(14px)}
    to{opacity:1;transform:none}
  }
}

/* ============================================================
   V27.3 — INDICADOR DE SINCRONIZAÇÃO
   ============================================================ */
.gr-sync{display:flex;align-items:center;gap:9px;padding:5px 10px 5px 8px;border-radius:999px;
  border:1px solid var(--line);background:var(--paper-raised);max-width:100%}
.gr-sync .dot{width:8px;height:8px;border-radius:50%;flex:0 0 8px;background:#9AA6A0}
.gr-sync .gr-sync-texto{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.gr-sync .gr-sync-texto b{font-size:.72rem;font-weight:700;white-space:nowrap}
.gr-sync .gr-sync-texto small{font-size:.62rem;color:var(--ink-soft);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:30ch}
.gr-sync #lastSync{font-size:.6rem;color:var(--ink-soft);white-space:nowrap}
.gr-sync-acao{border:0;background:transparent;cursor:pointer;font-size:.95rem;line-height:1;
  color:var(--ink-soft);padding:4px 2px;border-radius:6px}
.gr-sync-acao:hover{color:var(--marca-ouro)}

.gr-sync.estado-ok .dot{background:#2E7D53;box-shadow:0 0 0 3px rgba(46,125,83,.16)}
.gr-sync.estado-ok .gr-sync-texto b{color:#2E7D53}
.gr-sync.estado-gravando .dot{background:var(--marca-ouro);box-shadow:0 0 0 3px rgba(216,174,82,.18)}
.gr-sync.estado-gravando .gr-sync-texto b{color:var(--marca-ouro-escuro)}
.gr-sync.estado-offline .dot{background:#9B4436;box-shadow:0 0 0 3px rgba(155,68,54,.16)}
.gr-sync.estado-offline .gr-sync-texto b{color:#9B4436}
.gr-sync.estado-aguardando .dot{background:#A8862F}
.gr-sync.estado-local .dot{background:#6B7A73}

@media (prefers-reduced-motion: no-preference){
  .gr-sync.estado-gravando .dot{animation:grPulsa 1.2s ease-in-out infinite}
  @keyframes grPulsa{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.82)}}
  .gr-sync-acao{transition:color var(--mov-base) var(--curva), transform var(--mov-base) var(--curva)}
  .gr-sync.girando .gr-sync-acao{animation:grGira .9s linear infinite}
  @keyframes grGira{to{transform:rotate(360deg)}}
}
@media(max-width:720px){.gr-sync .gr-sync-texto small,.gr-sync #lastSync{display:none}}

/* V27.5 — linha do tempo da obra na área do cliente */
.gr-obra-linha{list-style:none;margin:14px 0 0;padding:0;position:relative}
.gr-obra-linha:before{content:'';position:absolute;left:7px;top:6px;bottom:6px;width:2px;
  background:linear-gradient(180deg,rgba(216,174,82,.55),rgba(216,174,82,.08))}
.gr-obra-evento{position:relative;padding:0 0 16px 30px}
.gr-obra-evento:last-child{padding-bottom:0}
.gr-obra-evento:before{content:'';position:absolute;left:0;top:4px;width:16px;height:16px;border-radius:50%;
  border:2px solid var(--marca-ouro);background:var(--paper-raised)}
.gr-obra-evento.corrige:before{border-color:#9B4436}
.gr-obra-quando{font-size:.66rem;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}
.gr-obra-conteudo{display:flex;flex-direction:column;gap:2px;margin-top:2px}
.gr-obra-conteudo strong{font-size:.86rem}
.gr-obra-salto{font-size:.76rem;color:var(--ink-soft)}
.gr-obra-salto b{color:#2E7D53}
.gr-obra-evento.corrige .gr-obra-salto b{color:#9B4436}
.gr-obra-obs{font-size:.72rem;color:var(--ink-soft);font-style:italic;margin-top:2px}
@media (prefers-reduced-motion: no-preference){
  .gr-obra-evento{animation:grEntra 420ms var(--curva-entrada) both}
  .gr-obra-evento:nth-child(2){animation-delay:60ms}
  .gr-obra-evento:nth-child(3){animation-delay:120ms}
  .gr-obra-evento:nth-child(n+4){animation-delay:170ms}
}

/* =====================================================================
   V27.6 — copiar com um toque
   ===================================================================== */
.gr-copia{
  position:relative;
  cursor:pointer;
  padding-right:96px !important;
  min-height:44px;
  display:flex;
  align-items:center;
  word-break:break-all;
  transition:border-color var(--mov-rapido,140ms) var(--curva,ease),
             background-color var(--mov-rapido,140ms) var(--curva,ease);
}
.gr-copia:hover{ border-color:var(--marca-ouro,#D8AE52); }
.gr-copia:focus-visible{
  outline:2px solid var(--marca-ouro,#D8AE52);
  outline-offset:2px;
}
.gr-copia::after{
  content:'Copiar';
  position:absolute;
  right:6px; top:50%;
  transform:translateY(-50%);
  display:inline-flex; align-items:center; justify-content:center;
  min-width:78px; min-height:32px;
  padding:0 12px;
  border-radius:8px;
  background:var(--marca-ouro,#D8AE52);
  color:#1B1B18;
  font:600 .74rem/1 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  letter-spacing:.02em;
  white-space:nowrap;
  transition:background-color var(--mov-rapido,140ms) var(--curva,ease);
}
.gr-copia[data-copiado="1"]::after{
  content:'Copiado \2713';
  background:var(--st-disponivel,#2E7D53);
  color:#fff;
}
.gr-copia[data-copiado="erro"]::after{
  content:'Copie manualmente';
  background:var(--st-vendido,#9B4436);
  color:#fff;
}
@media (max-width:520px){
  .gr-copia{
    padding-right:12px !important;
    padding-bottom:46px !important;
    display:block;
    line-height:1.5;
  }
  .gr-copia::after{
    right:8px; left:8px; top:auto; bottom:8px;
    transform:none;
    min-height:38px;
  }
}
@media (prefers-reduced-motion:reduce){
  .gr-copia,.gr-copia::after{ transition:none; }
}

/* =====================================================================
   V27.6 — progresso positivo e novidades desde a última visita
   ===================================================================== */
.gr-card-progresso .gr-h2{
  font-variant-numeric:tabular-nums;
  color:var(--st-disponivel,#2E7D53);
}
.gr-progresso-num{
  display:flex;
  justify-content:space-between;
  gap:12px;
  margin-top:10px;
  padding-top:10px;
  border-top:1px solid rgba(127,127,127,.16);
}
.gr-progresso-num span{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.gr-progresso-num span.dir{ text-align:right; }
.gr-progresso-num small{
  font-size:.66rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--tx3,#8b8b85);
}
.gr-progresso-num strong{
  font-size:.92rem;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.gr-barra-anim > i{
  transform-origin:left center;
  animation:grBarraEntra 900ms var(--curva-entrada,cubic-bezier(.2,.8,.2,1)) both;
}
@keyframes grBarraEntra{ from{ transform:scaleX(0); } to{ transform:scaleX(1); } }

.gr-novidades{
  margin:0 0 18px;
  padding:14px 16px;
  border:1px solid rgba(216,174,82,.34);
  border-radius:14px;
  background:linear-gradient(180deg,rgba(216,174,82,.10),rgba(216,174,82,.03));
  animation:grNovEntra 520ms var(--curva-entrada,cubic-bezier(.2,.8,.2,1)) both;
}
@keyframes grNovEntra{ from{ opacity:0; transform:translateY(-6px); } to{ opacity:1; transform:none; } }
.gr-novidades-cab{ display:flex; align-items:center; gap:9px; margin-bottom:10px; }
.gr-novidades-cab strong{ font-size:.82rem; letter-spacing:.04em; text-transform:uppercase; }
.gr-novidades-pt{
  width:8px; height:8px; border-radius:50%;
  background:var(--marca-ouro,#D8AE52);
  box-shadow:0 0 0 0 rgba(216,174,82,.65);
  animation:grPulso 2.4s ease-out infinite;
}
@keyframes grPulso{
  0%{ box-shadow:0 0 0 0 rgba(216,174,82,.55); }
  70%{ box-shadow:0 0 0 9px rgba(216,174,82,0); }
  100%{ box-shadow:0 0 0 0 rgba(216,174,82,0); }
}
.gr-novidades ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.gr-novidades li{
  display:flex; align-items:center; gap:11px;
  padding:9px 10px;
  border-radius:10px;
  background:rgba(255,255,255,.045);
}
.gr-novidades li .ic{
  flex:0 0 28px; height:28px;
  display:grid; place-items:center;
  border-radius:8px;
  background:rgba(216,174,82,.16);
  font-size:.82rem;
}
.gr-novidades li .tx{ flex:1; min-width:0; display:flex; flex-direction:column; gap:1px; }
.gr-novidades li .tx b{ font-size:.85rem; font-weight:600; }
.gr-novidades li .tx small{ font-size:.73rem; color:var(--tx3,#8b8b85); }
.gr-novidades li .gr-btn{ flex:0 0 auto; min-height:34px; }
@media (max-width:520px){
  .gr-novidades li{ flex-wrap:wrap; }
  .gr-novidades li .tx{ flex:1 1 60%; }
  .gr-novidades li .gr-btn{ flex:1 1 100%; margin-top:4px; }
}
@media (prefers-reduced-motion:reduce){
  .gr-novidades,.gr-novidades-pt,.gr-barra-anim > i{ animation:none; }
}

/* V27.6 — cartão do demonstrativo de IR */
.gr-ir-lead{ margin:0 0 14px; color:var(--tx2); font-size:.86rem; line-height:1.55; }
.gr-ir-anos{ display:flex; flex-wrap:wrap; gap:9px; }
.gr-ir-anos .gr-btn{ min-height:42px; }
.gr-ir-anos .gr-btn small{ opacity:.7; font-weight:400; }
.gr-ir-nota{ margin:12px 0 0; font-size:.72rem; color:var(--tx3,#8b8b85); line-height:1.5; }
@media (max-width:520px){ .gr-ir-anos .gr-btn{ flex:1 1 calc(50% - 5px); } }

/* =====================================================================
   V27.6 — vizinhança na planta do lote do cliente
   ===================================================================== */
.gr-mini-viz{
  fill:rgba(255,255,255,.05);
  stroke:rgba(255,255,255,.17);
  stroke-width:.9;
  stroke-linejoin:round;
  animation:grVizEntra 900ms var(--curva-entrada,cubic-bezier(.2,.8,.2,1)) both;
}
@keyframes grVizEntra{ from{ opacity:0; } to{ opacity:1; } }
.gr-mini-real .gr-client-map-orbit{ opacity:.12; }
.gr-client-lot-label{
  fill:#F4D58A;
  font:800 3.1px var(--mono,ui-monospace,monospace);
  letter-spacing:.05em;
  paint-order:stroke;
  stroke:rgba(4,10,7,.85);
  stroke-width:1.1px;
}
@media (prefers-reduced-motion:reduce){ .gr-mini-viz{ animation:none; } }

/* =====================================================================
   V27.7 — parcelas legíveis no celular e a conta aberta
   No telefone a tabela de 8 colunas vira um cartão por parcela: valor,
   vencimento e situação passam a ser lidos sem rolar de lado.
   ===================================================================== */
.gr-cel-de{ display:none; }
.gr-calc{
  margin-top:16px;
  border:1px solid var(--linha,rgba(127,127,127,.2));
  border-radius:12px;
  overflow:hidden;
  background:rgba(127,127,127,.04);
}
.gr-calc > summary{
  cursor:pointer;
  list-style:none;
  display:flex; align-items:center; gap:10px;
  padding:13px 15px;
  min-height:46px;
  font-size:.83rem; font-weight:600;
  transition:background-color var(--mov-rapido,140ms) var(--curva,ease);
}
.gr-calc > summary::-webkit-details-marker{ display:none; }
.gr-calc > summary:hover{ background:rgba(216,174,82,.07); }
.gr-calc > summary:focus-visible{ outline:2px solid var(--marca-ouro,#D8AE52); outline-offset:-2px; }
.gr-calc-ic{
  flex:0 0 22px; height:22px;
  display:grid; place-items:center;
  border-radius:50%;
  background:rgba(216,174,82,.18);
  color:var(--marca-ouro,#D8AE52);
  font:700 .72rem/1 system-ui,sans-serif;
}
.gr-calc[open] > summary{ border-bottom:1px solid var(--linha,rgba(127,127,127,.2)); }
.gr-calc-corpo{ padding:6px 15px 14px; animation:grCalcAbre 260ms var(--curva-entrada,cubic-bezier(.2,.8,.2,1)) both; }
@keyframes grCalcAbre{ from{ opacity:0; transform:translateY(-4px); } to{ opacity:1; transform:none; } }
.gr-calc-item{ padding:10px 0; border-bottom:1px solid rgba(127,127,127,.12); }
.gr-calc-item:last-of-type{ border-bottom:0; }
.gr-calc-item b{ display:block; font-size:.79rem; margin-bottom:3px; }
.gr-calc-item span{ display:block; font-size:.76rem; line-height:1.55; color:var(--tx2); }
.gr-calc-pe{ margin:12px 0 0; font-size:.73rem; line-height:1.55; color:var(--tx3,#8b8b85); }

@media (max-width:640px){
  #grCliente .gr-tab-wrap{ overflow-x:visible; }
  #grCliente .gr-tab thead{
    position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0);
  }
  #grCliente .gr-tab tbody,
  #grCliente .gr-tab tbody{ display:block; width:100%; }
  #grCliente .gr-tab tr{
    display:block;
    margin:0 0 10px;
    padding:12px 14px;
    border:1px solid var(--linha,rgba(127,127,127,.2));
    border-radius:12px;
    background:rgba(127,127,127,.035);
  }
  #grCliente .gr-tab tr.gr-linha-atraso, #grCliente .gr-tab tr.gr-linha-atraso{
    border-color:rgba(155,68,54,.5);
    background:rgba(155,68,54,.07);
  }
  #grCliente .gr-tab td{
    display:flex; align-items:baseline; justify-content:space-between; gap:14px;
    padding:5px 0;
    border:0;
    text-align:right;
  }
  #grCliente .gr-tab td[data-rot]::before, #grCliente .gr-tab td[data-rot]::before{
    content:attr(data-rot);
    flex:0 0 auto;
    text-align:left;
    font-size:.7rem;
    letter-spacing:.02em;
    color:var(--tx3,#8b8b85);
    font-family:var(--sans,system-ui),sans-serif;
  }
  #grCliente .gr-tab td[data-rot=""], #grCliente .gr-tab td[data-rot=""]{
    padding-top:10px; margin-top:6px;
    border-top:1px solid rgba(127,127,127,.14);
  }
  #grCliente .gr-tab td[data-rot=""] .gr-btn, #grCliente .gr-tab td[data-rot=""] .gr-btn{
    flex:1; min-height:42px;
  }
  #grCliente .gr-tab td.gr-cel-total, #grCliente .gr-tab td.gr-cel-total{ font-size:1.02rem; }
  .gr-cel-de{ display:inline; color:var(--tx3,#8b8b85); font-weight:400; }
}
@media (prefers-reduced-motion:reduce){ .gr-calc-corpo{ animation:none; } }

/* =====================================================================
   V27.8 — usuário com acesso suspenso
   ===================================================================== */
.role-badge.bloqueado{
  background:rgba(155,68,54,.14);
  color:var(--st-vendido,#9B4436);
  border:1px solid rgba(155,68,54,.34);
  cursor:help;
}
tr.linha-suspensa > td{ opacity:.62; }
tr.linha-suspensa > td:first-child{
  box-shadow:inset 3px 0 0 var(--st-vendido,#9B4436);
  opacity:1;
}
tr.linha-suspensa .btn[data-bloquser]{
  background:var(--st-disponivel,#2E7D53);
  border-color:var(--st-disponivel,#2E7D53);
  color:#fff;
  opacity:1;
}
#usersTable .btn[data-bloquser]{ min-height:34px; }

/* =====================================================================
   V27.9 — DESIGN SYSTEM URBANNIX
   Uma camada de tokens no fim da folha. Os tokens antigos (--ink, --paper,
   --line, --moss…) passam a APONTAR para os novos, então o sistema inteiro
   repinta sem precisar caçar cor hexadecimal solta pelas 260 mil linhas.
   ===================================================================== */
:root{
  /* superfícies */
  --ux-canvas:#F5F6F3;
  --ux-surface:#FFFFFF;
  --ux-surface-2:#FAFBF9;
  --ux-surface-3:#F0F2EE;
  --ux-line:#E3E7E4;
  --ux-line-forte:#CCD4CF;

  /* marca */
  --ux-verde-900:#052A23;
  --ux-verde-800:#073B31;
  --ux-verde-700:#0A5142;
  --ux-verde-600:#0D6654;
  --ux-verde-500:#12836A;
  --ux-acao:#21B47E;
  --ux-acao-escura:#1A9468;
  --ux-grafite:#17211F;
  --ux-ouro:#C5A253;
  --ux-ouro-claro:#E0C88C;
  --ux-ouro-escuro:#9A7B37;

  /* texto */
  --ux-tx:#1D2523;
  --ux-tx2:#66736F;
  --ux-tx3:#8E9895;
  --ux-tx-inv:#F3F6F4;

  /* estados */
  --ux-ok:#1C7F54;      --ux-ok-bg:#E4F2EB;    --ux-ok-linha:#B9DCC9;
  --ux-aviso:#8F6412;   --ux-aviso-bg:#FBF1DA; --ux-aviso-linha:#E8D7A6;
  --ux-erro:#97332A;    --ux-erro-bg:#FAE9E6;  --ux-erro-linha:#EFC9C2;
  --ux-info:#12607F;    --ux-info-bg:#E4F0F5;  --ux-info-linha:#BEDAE6;

  /* forma */
  --ux-r-xs:4px; --ux-r-sm:6px; --ux-r:10px; --ux-r-lg:14px; --ux-r-xl:18px; --ux-r-pill:999px;
  --ux-s1:0 1px 2px rgba(7,59,49,.05), 0 0 0 1px rgba(7,59,49,.07);
  --ux-s2:0 4px 14px rgba(7,59,49,.07), 0 0 0 1px rgba(7,59,49,.07);
  --ux-s3:0 16px 40px rgba(7,59,49,.13), 0 0 0 1px rgba(7,59,49,.08);
  --ux-foco:0 0 0 3px rgba(33,180,126,.28);

  /* ritmo */
  --ux-lin-condensada:40px; --ux-lin:48px; --ux-lin-folgada:56px;

  /* ---- os tokens de sempre, agora apontando para o novo sistema ---- */
  --ink:var(--ux-tx);
  --ink-soft:var(--ux-tx2);
  --paper:var(--ux-canvas);
  --paper-raised:var(--ux-surface);
  --line:var(--ux-line);
  --moss:var(--ux-verde-600);
  --moss-bg:var(--ux-ok-bg);
  --ochre:var(--ux-aviso);
  --ochre-bg:var(--ux-aviso-bg);
  --mustard:var(--ux-ouro-escuro);
  --mustard-bg:#F6EFDC;
  --marca-ouro:var(--ux-ouro);
  --serif:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
}

/* Cabeçalhos deixam de ser editoriais e passam a ser de produto:
   mesma família do corpo, peso alto e tracking negativo. */
.brand h1,.card .value,section.block h2,section.block h3,
h1,h2,h3,.gr-h2,.donut-center{
  font-feature-settings:'ss01','cv05';
  letter-spacing:-0.018em;
}
.card .value,.gr-mono,.mono,td.num,th.num,.num{ font-variant-numeric:tabular-nums; }

/* =====================================================================
   V27.9 — COMPONENTES DA MARCA
   ===================================================================== */
/* --- header: logo da plataforma + seletor de empreendimento --- */
header.top{ border-bottom:1px solid var(--ux-line); align-items:center; }
.brand{ gap:14px; align-items:center; }
.brand-logo{ height:34px !important; width:auto; flex-shrink:0; }
.brand-sep{
  width:1px; height:26px; flex:0 0 1px;
  background:var(--ux-line-forte);
}
.ux-emp-switch{
  display:flex; align-items:center; gap:10px;
  min-height:44px; padding:6px 12px 6px 8px;
  border:1px solid var(--ux-line); border-radius:var(--ux-r);
  background:var(--ux-surface); cursor:pointer;
  font-family:var(--sans); text-align:left;
  transition:border-color 160ms var(--curva,ease), box-shadow 160ms var(--curva,ease), background-color 160ms var(--curva,ease);
}
.ux-emp-switch:hover{ border-color:var(--ux-line-forte); box-shadow:var(--ux-s1); }
.ux-emp-switch:focus-visible{ outline:none; box-shadow:var(--ux-foco); border-color:var(--ux-acao); }
.ux-emp-mark{ width:26px; height:26px; flex:0 0 26px; border-radius:var(--ux-r-sm); }
.ux-emp-txt{ display:flex; flex-direction:column; gap:1px; min-width:0; }
.ux-emp-txt small{
  font-size:.63rem; letter-spacing:.09em; text-transform:uppercase;
  color:var(--ux-tx3); line-height:1;
}
.ux-emp-txt strong{
  font-size:.86rem; font-weight:600; color:var(--ux-tx);
  line-height:1.25; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:34ch;
}
.ux-emp-caret{ color:var(--ux-tx3); font-size:.7rem; margin-left:2px; }

/* --- sidebar: marca da plataforma + empreendimento ativo --- */
.sidebar-brand{ align-items:center; }
img.brand-mark{
  width:34px !important; height:34px !important;
  background:none !important; border-radius:var(--ux-r-sm) !important;
  flex:0 0 34px;
}
.sidebar-brand strong{ letter-spacing:-0.01em; }
.ux-emp-nav{
  display:flex; flex-direction:column; gap:2px;
  margin:10px 0 4px; padding:10px 12px;
  border:1px solid var(--ux-line); border-left:3px solid var(--ux-verde-600);
  border-radius:var(--ux-r-sm);
  background:var(--ux-surface-2);
}
.ux-emp-nav-rot{ font-size:.6rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ux-tx3); }
.ux-emp-nav-nome{ font-size:.84rem; font-weight:650; letter-spacing:-0.01em; color:var(--ux-tx); }
.ux-emp-nav-loc{ font-size:.68rem; color:var(--ux-tx2); }

/* --- rodapé institucional --- */
.ux-foot{
  display:flex; align-items:center; justify-content:space-between;
  gap:16px; flex-wrap:wrap;
  border-top:1px solid var(--ux-line);
  padding-top:14px;
  font-size:.72rem; color:var(--ux-tx3); text-transform:none; letter-spacing:0;
}
.ux-foot-marca{ display:inline-flex; align-items:center; gap:8px; font-weight:600; color:var(--ux-tx2); }
.ux-foot-marca img{ width:18px; height:18px; border-radius:3px; }
.ux-foot-marca em{ font-style:normal; font-weight:400; color:var(--ux-tx3); }
.ux-foot-meio::before{
  content:''; display:inline-block; width:7px; height:7px; border-radius:50%;
  background:var(--ux-ok); margin-right:7px; vertical-align:middle;
}

/* --- login --- */
.auth-showcase{ background:var(--ux-verde-800) !important; }
.auth-showcase::after{
  content:''; position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(1100px 520px at 12% -10%, rgba(33,180,126,.20), transparent 62%),
    radial-gradient(760px 420px at 100% 108%, rgba(197,162,83,.14), transparent 60%);
}
.auth-showcase > *{ position:relative; z-index:1; }
.auth-logo-ux{ width:230px; max-width:64%; height:auto; display:block; margin:0 0 22px; }
.auth-pill{
  display:inline-block; padding:6px 12px; border-radius:var(--ux-r-pill);
  background:rgba(255,255,255,.09); border:1px solid rgba(255,255,255,.16);
  color:#DCEBE4; font-size:.7rem; letter-spacing:.04em;
}
.auth-showcase h1{
  font-family:var(--sans); font-weight:650; letter-spacing:-0.025em;
  font-size:clamp(1.5rem, 1.15rem + 1.4vw, 2.3rem); line-height:1.2;
  margin:18px 0 12px; color:#F2F7F4; max-width:19ch;
}
.auth-showcase h1 em{ font-style:normal; color:var(--ux-ouro-claro); }
.auth-showcase p{ color:#B6CBC2; font-size:.9rem; line-height:1.6; max-width:44ch; }
.ux-emp-atual{
  display:flex; flex-direction:column; gap:3px;
  padding:14px 16px; border-radius:var(--ux-r);
  background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12);
}
.ux-emp-atual span{ font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; color:#8FAFA3; }
.ux-emp-atual strong{ font-size:1rem; font-weight:650; color:#F2F7F4; letter-spacing:-0.01em; }
.ux-emp-atual small{ font-size:.72rem; color:#A9C2B8; }
.auth-card-logo{ width:148px; height:auto; margin:0 0 18px; display:block; }
.auth-card h2{ font-family:var(--sans); font-weight:650; letter-spacing:-0.02em; }
.auth-esqueci{
  display:block; width:100%; margin-top:12px; padding:10px;
  background:none; border:0; cursor:pointer;
  font:500 .78rem var(--sans); color:var(--ux-tx2);
  border-radius:var(--ux-r-sm);
}
.auth-esqueci:hover{ color:var(--ux-verde-600); background:var(--ux-surface-3); }
.auth-esqueci:focus-visible{ outline:none; box-shadow:var(--ux-foco); }

@media (max-width:820px){
  .ux-emp-switch .ux-emp-txt strong{ max-width:18ch; }
  .brand-logo{ height:28px !important; }
  .ux-foot{ justify-content:flex-start; }
}
@media (max-width:560px){
  .brand-sep{ display:none; }
  .ux-emp-switch{ order:3; flex:1 1 100%; }
  .auth-logo-ux{ width:178px; }
}

/* =====================================================================
   V27.9 — LINGUAGEM ÚNICA DE COMPONENTES
   Mesma função, mesma aparência: verde = ação principal, vermelho =
   destrutiva, âmbar = atenção, cinza = secundária.
   ===================================================================== */
.btn,button.btn,.gr-btn{
  font-family:var(--sans);
  font-weight:600;
  border-radius:var(--ux-r-sm);
  min-height:40px;
  transition:background-color 160ms var(--curva,ease), border-color 160ms var(--curva,ease),
             box-shadow 160ms var(--curva,ease), transform 90ms var(--curva,ease);
}
.btn:active,.gr-btn:active{ transform:translateY(1px); }
.btn:focus-visible,.gr-btn:focus-visible,
button:focus-visible,a:focus-visible,summary:focus-visible{
  outline:none; box-shadow:var(--ux-foco);
}
.btn:not(.secondary):not(.danger):not(.ghost):not(.small),
button.btn:not(.secondary):not(.danger):not(.ghost){
  background:var(--ux-verde-600);
  border:1px solid var(--ux-verde-600);
  color:#fff;
}
.btn:not(.secondary):not(.danger):not(.ghost):hover{
  background:var(--ux-verde-700); border-color:var(--ux-verde-700);
}
.btn.secondary,.gr-btn.sec{
  background:var(--ux-surface);
  border:1px solid var(--ux-line-forte);
  color:var(--ux-tx);
}
.btn.secondary:hover,.gr-btn.sec:hover{ background:var(--ux-surface-3); border-color:var(--ux-tx3); }
.btn.danger{ background:var(--ux-erro); border:1px solid var(--ux-erro); color:#fff; }
.btn.danger:hover{ filter:brightness(.93); }
.btn[disabled],.gr-btn[disabled],.btn.cinza{
  opacity:.5; cursor:not-allowed; transform:none;
}
.btn.small{ min-height:34px; font-size:.78rem; border-radius:var(--ux-r-xs); }

/* campos */
input[type=text],input[type=number],input[type=password],input[type=date],
input[type=email],input[type=tel],select,textarea{
  font-family:var(--sans);
  border-radius:var(--ux-r-sm);
  border:1px solid var(--ux-line-forte);
  background:var(--ux-surface);
  color:var(--ux-tx);
  min-height:42px;
  transition:border-color 140ms var(--curva,ease), box-shadow 140ms var(--curva,ease);
}
input:focus,select:focus,textarea:focus{
  outline:none;
  border-color:var(--ux-acao);
  box-shadow:var(--ux-foco);
}
input::placeholder,textarea::placeholder{ color:var(--ux-tx3); }
label.field{ font-size:.78rem; color:var(--ux-tx2); }

/* cartões e blocos */
.card,section.block,.param-info{
  border-radius:var(--ux-r);
  border:1px solid var(--ux-line);
  box-shadow:var(--ux-s1);
}
.card{ transition:box-shadow 180ms var(--curva,ease), transform 180ms var(--curva,ease); }
.grid-cards .card:hover{ box-shadow:var(--ux-s2); }

/* tabelas: cabeçalho fixo, números à direita, densidade padrão */
table th{
  background:var(--ux-surface-2);
  border-bottom:1px solid var(--ux-line-forte);
  color:var(--ux-tx2);
  letter-spacing:.05em;
  text-transform:uppercase;
  position:sticky; top:0; z-index:1;
}
table td{ border-bottom:1px solid var(--ux-line); }
table tbody tr{ transition:background-color 120ms var(--curva,ease); }
table tbody tr:hover{ background:var(--ux-surface-2); }
td.num,th.num{ text-align:right; }

/* selos */
.role-badge,.gr-selo,.badge,.period-chip{
  border-radius:var(--ux-r-pill);
  font-weight:600;
  letter-spacing:.02em;
}

/* navegação lateral: item ativo em verde, não em ocre */
nav.tabs button.active{ border-bottom-color:var(--ux-verde-600); color:var(--ux-tx); }
#tabs button.active,.tabs button.active{ color:var(--ux-verde-700); }

/* barra de rolagem discreta */
*::-webkit-scrollbar{ width:10px; height:10px; }
*::-webkit-scrollbar-thumb{ background:var(--ux-line-forte); border-radius:var(--ux-r-pill); border:3px solid transparent; background-clip:padding-box; }
*::-webkit-scrollbar-thumb:hover{ background:var(--ux-tx3); background-clip:padding-box; }
*::-webkit-scrollbar-track{ background:transparent; }

/* =====================================================================
   V27.9 — MODO ESCURO
   Tokens próprios por tema, não inversão. A elevação vem de superfície
   mais clara, porque sombra não funciona no escuro. O verde da marca é
   dessaturado para não vibrar contra o fundo.
   ===================================================================== */
:root[data-tema="escuro"]{
  --ux-canvas:#0C1311;
  --ux-surface:#121A18;
  --ux-surface-2:#17211E;
  --ux-surface-3:#1E2A26;
  --ux-line:#25322E;
  --ux-line-forte:#36463F;

  --ux-verde-900:#CFE6DC;
  --ux-verde-800:#0E4A3E;
  --ux-verde-700:#1A7A63;
  --ux-verde-600:#2E9C7E;
  --ux-verde-500:#3BB392;
  --ux-acao:#2FC08A;
  --ux-acao-escura:#26A276;
  --ux-grafite:#0A100E;
  --ux-ouro:#D4B679;
  --ux-ouro-claro:#E8D3A2;
  --ux-ouro-escuro:#B39551;

  --ux-tx:#E6EDEA;
  --ux-tx2:#A0AFAA;
  --ux-tx3:#75837E;
  --ux-tx-inv:#0C1311;

  --ux-ok:#46BE8B;    --ux-ok-bg:#11291F;    --ux-ok-linha:#1E4735;
  --ux-aviso:#D9AE55; --ux-aviso-bg:#2B2312; --ux-aviso-linha:#4A3D1C;
  --ux-erro:#E0796A;  --ux-erro-bg:#2C1815;  --ux-erro-linha:#4C2721;
  --ux-info:#5FB2D1;  --ux-info-bg:#12242B;  --ux-info-linha:#204049;

  --ux-s1:0 0 0 1px rgba(255,255,255,.05);
  --ux-s2:0 2px 10px rgba(0,0,0,.34), 0 0 0 1px rgba(255,255,255,.06);
  --ux-s3:0 18px 44px rgba(0,0,0,.5), 0 0 0 1px rgba(255,255,255,.07);
  --ux-foco:0 0 0 3px rgba(47,192,138,.32);

  --mustard-bg:#2B2312;
  color-scheme:dark;
}
:root[data-tema="escuro"] .brand-logo,
:root[data-tema="escuro"] .auth-card-logo,
:root[data-tema="escuro"] .ux-foot-marca img{ filter:none; }
:root[data-tema="escuro"] .brand-logo,
:root[data-tema="escuro"] .auth-card-logo{
  content:url('../img/brand/urbannix-logo-white-280.webp');
}
:root[data-tema="escuro"] .auth-showcase{ background:#09120F !important; }
:root[data-tema="escuro"] .card,
:root[data-tema="escuro"] section.block{ background:var(--ux-surface); }
:root[data-tema="escuro"] table th{ background:var(--ux-surface-2); }
:root[data-tema="escuro"] table tbody tr:hover{ background:var(--ux-surface-2); }
:root[data-tema="escuro"] .ux-emp-nav{ background:var(--ux-surface-2); }
:root[data-tema="escuro"] input,
:root[data-tema="escuro"] select,
:root[data-tema="escuro"] textarea{ background:var(--ux-surface-2); }
:root[data-tema="escuro"] .btn.secondary,
:root[data-tema="escuro"] .gr-btn.sec{ background:var(--ux-surface-2); }
:root[data-tema="escuro"] img:not([src*="brand"]):not([src*=".svg"]){ filter:brightness(.92); }

/* botão de tema */
.ux-tema{
  display:inline-flex; align-items:center; justify-content:center;
  width:40px; height:40px; flex:0 0 40px;
  border:1px solid var(--ux-line); border-radius:var(--ux-r-sm);
  background:var(--ux-surface); color:var(--ux-tx2);
  cursor:pointer; font-size:1rem; line-height:1;
  transition:background-color 160ms var(--curva,ease), color 160ms var(--curva,ease), border-color 160ms var(--curva,ease);
}
.ux-tema:hover{ background:var(--ux-surface-3); color:var(--ux-tx); border-color:var(--ux-line-forte); }
.ux-tema:focus-visible{ outline:none; box-shadow:var(--ux-foco); }
.ux-tema .ux-lua{ display:none; }
:root[data-tema="escuro"] .ux-tema .ux-sol{ display:none; }
:root[data-tema="escuro"] .ux-tema .ux-lua{ display:inline; }

/* V27.9 — painel de empreendimentos */
.ux-emp-painel{
  position:absolute; z-index:9000;
  padding:14px;
  border:1px solid var(--ux-line);
  border-radius:var(--ux-r-lg);
  background:var(--ux-surface);
  box-shadow:var(--ux-s3);
  animation:uxPainelEntra 190ms cubic-bezier(.2,.8,.2,1) both;
}
@keyframes uxPainelEntra{ from{ opacity:0; transform:translateY(-6px) scale(.985); } to{ opacity:1; transform:none; } }
.ux-emp-painel-cab{
  font-size:.62rem; letter-spacing:.11em; text-transform:uppercase;
  color:var(--ux-tx3); margin:2px 2px 10px;
}
.ux-emp-card{
  border:1px solid var(--ux-line);
  border-radius:var(--ux-r);
  padding:13px 14px;
  background:var(--ux-surface-2);
}
.ux-emp-card.ativo{ border-color:var(--ux-verde-600); box-shadow:inset 3px 0 0 var(--ux-verde-600); }
.ux-emp-card:focus-visible{ outline:none; box-shadow:var(--ux-foco); }
.ux-emp-card header{ display:flex; align-items:center; gap:10px; margin-bottom:11px; }
.ux-emp-card header img{ width:30px; height:30px; border-radius:var(--ux-r-sm); flex:0 0 30px; }
.ux-emp-card header div{ flex:1; min-width:0; display:flex; flex-direction:column; }
.ux-emp-card header strong{ font-size:.88rem; font-weight:650; letter-spacing:-0.01em; color:var(--ux-tx); }
.ux-emp-card header span{ font-size:.7rem; color:var(--ux-tx2); }
.ux-emp-tag{
  flex:0 0 auto; padding:3px 9px; border-radius:var(--ux-r-pill);
  background:var(--ux-ok-bg); color:var(--ux-ok); border:1px solid var(--ux-ok-linha);
  font-size:.62rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase;
}
.ux-emp-barra{ height:6px; border-radius:var(--ux-r-pill); background:var(--ux-surface-3); overflow:hidden; }
.ux-emp-barra > i{
  display:block; height:100%; border-radius:inherit;
  background:linear-gradient(90deg,var(--ux-verde-600),var(--ux-acao));
  animation:uxBarra 700ms cubic-bezier(.2,.8,.2,1) both;
  transform-origin:left;
}
@keyframes uxBarra{ from{ transform:scaleX(0); } to{ transform:scaleX(1); } }
.ux-emp-pct{ margin:7px 0 12px; font-size:.72rem; color:var(--ux-tx2); }
.ux-emp-num{ display:grid; grid-template-columns:1fr 1fr; gap:1px; margin:0; background:var(--ux-line); border-radius:var(--ux-r-sm); overflow:hidden; }
.ux-emp-num > div{ background:var(--ux-surface); padding:8px 10px; }
.ux-emp-num dt{ font-size:.62rem; letter-spacing:.05em; text-transform:uppercase; color:var(--ux-tx3); margin-bottom:2px; }
.ux-emp-num dd{ margin:0; font-size:.84rem; font-weight:650; color:var(--ux-tx); font-variant-numeric:tabular-nums; }
.ux-emp-novo{
  margin-top:11px; padding:11px 13px;
  border:1px dashed var(--ux-line-forte); border-radius:var(--ux-r);
  display:flex; flex-direction:column; gap:4px;
}
.ux-emp-novo strong{ font-size:.79rem; font-weight:650; color:var(--ux-tx2); }
.ux-emp-novo span{ font-size:.7rem; line-height:1.5; color:var(--ux-tx3); }
@media (prefers-reduced-motion:reduce){
  .ux-emp-painel,.ux-emp-barra > i{ animation:none; }
}

/* =====================================================================
   V27.9b — contraste no topo esquerdo e no menu (fundo verde escuro)
   ===================================================================== */
header.top .brand-logo{
  content:url('../img/brand/urbannix-logo-white-280.webp');
  height:30px !important;
}
.sidebar-brand{ gap:11px; }
.sidebar-brand strong{ color:#F2F7F4 !important; font-size:.94rem; font-weight:650; }
.sidebar-brand span{ color:#9FBCB0 !important; font-size:.68rem; }
.sidebar-brand .nav-version{ color:#7E9B90 !important; font-style:normal; font-size:.6rem; letter-spacing:.06em; }
img.brand-mark{
  background:none !important; background-image:none !important;
  width:32px !important; height:32px !important; flex:0 0 32px;
  border-radius:var(--ux-r-sm) !important;
  box-shadow:0 0 0 1px rgba(255,255,255,.10) !important;
}
.ux-emp-nav{
  background:rgba(255,255,255,.05) !important;
  border:1px solid rgba(255,255,255,.10) !important;
  border-left:3px solid var(--ux-ouro) !important;
  margin:12px 14px 6px;
}
.ux-emp-nav-rot{ color:#8FAFA3 !important; }
.ux-emp-nav-nome{ color:#F2F7F4 !important; }
.ux-emp-nav-loc{ color:#9FBCB0 !important; }
header.top .gr-brand-refresh-admin{
  width:36px !important; height:36px !important; flex:0 0 36px;
  padding:0 !important; overflow:hidden;
  display:inline-flex; align-items:center; justify-content:center;
  font-size:0 !important; line-height:0;
  border-radius:var(--ux-r-sm);
  border:1px solid rgba(255,255,255,.16);
  background:rgba(255,255,255,.06);
  color:#DCEBE4;
}
header.top .gr-brand-refresh-admin::before{ content:'↻'; font-size:15px; line-height:1; }
header.top .gr-brand-refresh-admin:hover{ background:rgba(255,255,255,.12); }
.ux-emp-painel{ z-index:100000; background:var(--ux-surface) !important; }

/* V27.9c — a marca antiga era aplicada como background com !important em
   três seletores; aqui ela sai de vez para o <img> do símbolo aparecer. */
.sidebar-brand img.brand-mark,
nav.tabs img.brand-mark,
img.brand-mark{
  background-image:none !important;
  background-color:transparent !important;
  background:none !important;
  width:32px !important; height:32px !important; flex:0 0 32px;
  border-radius:var(--ux-r-sm) !important;
  box-shadow:0 0 0 1px rgba(255,255,255,.12) !important;
}
/* o botão de sincronizar do menu virava um bloco de texto sobre a marca */
.sidebar-brand{ position:relative; flex-wrap:nowrap; padding-right:52px !important; }
.sidebar-brand .gr-v261-refresh{
  position:absolute !important;
  right:10px; top:50%; transform:translateY(-50%);
  width:34px !important; min-width:34px !important; height:34px !important;
  padding:0 !important; margin:0 !important;
  display:inline-flex !important; align-items:center; justify-content:center;
  gap:0 !important;
  font-size:0 !important; line-height:0;
  border-radius:var(--ux-r-sm) !important;
  border:1px solid rgba(255,255,255,.16) !important;
  background:rgba(255,255,255,.07) !important;
  color:#DCEBE4 !important;
  overflow:hidden; white-space:nowrap;
}
.sidebar-brand .gr-v261-refresh::before{ content:'↻'; font-size:15px; line-height:1; }
.sidebar-brand .gr-v261-refresh:hover{ background:rgba(255,255,255,.14) !important; }
.sidebar-brand > div{ min-width:0; flex:1; }
.sidebar-brand strong{ display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
@media (max-width:980px){
  .sidebar-brand{ padding-right:8px !important; }
  .sidebar-brand .gr-v261-refresh{ display:none !important; }
}

/* V27.9d — peças que tinham branco fixo e não acompanhavam o tema */
:root[data-tema="escuro"] .quick-action,
:root[data-tema="escuro"] .gr-v261-chart,
:root[data-tema="escuro"] .top-search,
:root[data-tema="escuro"] .period-chip,
:root[data-tema="escuro"] .panel,
:root[data-tema="escuro"] .gr-v261-card,
:root[data-tema="escuro"] .kpi,
:root[data-tema="escuro"] .modal,
:root[data-tema="escuro"] .drawer,
:root[data-tema="escuro"] .auth-card{
  background:var(--ux-surface) !important;
  border-color:var(--ux-line) !important;
  color:var(--ux-tx);
}
:root[data-tema="escuro"] .quick-action:hover{ background:var(--ux-surface-3) !important; }
:root[data-tema="escuro"] .gr-mini-track,
:root[data-tema="escuro"] .vgv-progress{ background:var(--ux-surface-3) !important; }
:root[data-tema="escuro"] .top-search{ color:var(--ux-tx2); }
:root[data-tema="escuro"] .top-search kbd{
  background:var(--ux-surface-3) !important; color:var(--ux-tx2) !important;
  border-color:var(--ux-line-forte) !important;
}
:root[data-tema="escuro"] .ux-emp-switch{ background:var(--ux-surface) !important; }
:root[data-tema="escuro"] .quick-action strong,
:root[data-tema="escuro"] .quick-action b,
:root[data-tema="escuro"] .gr-v261-chart text{ color:var(--ux-tx); fill:var(--ux-tx2); }
:root[data-tema="escuro"] .chart-svg text{ fill:var(--ux-tx2); }
:root[data-tema="escuro"] .chart-svg .val-label{ fill:var(--ux-tx); }
:root[data-tema="escuro"] .chart-svg .grid-line{ stroke:var(--ux-line); }
:root[data-tema="escuro"] .chart-svg .axis-line{ stroke:var(--ux-line-forte); }
/* o overlay de login também segue o tema */
:root[data-tema="escuro"] #authOverlay{ background:var(--ux-canvas); }

/* o rótulo dentro do botão de sincronizar do menu não some só com font-size */
.sidebar-brand .gr-v261-refresh > *{ display:none !important; }

/* V27.9e — painéis com gradiente claro e textos que ficavam escuros no escuro */
:root[data-tema="escuro"] .quick-actions-panel,
:root[data-tema="escuro"] .gr-v261-panel,
:root[data-tema="escuro"] .exec-panel,
:root[data-tema="escuro"] .vgv-hero{
  background:var(--ux-surface) !important;
  border-color:var(--ux-line) !important;
}
:root[data-tema="escuro"] .quick-action strong,
:root[data-tema="escuro"] .quick-action h3,
:root[data-tema="escuro"] .quick-action .qa-title,
:root[data-tema="escuro"] .quick-actions-panel h2,
:root[data-tema="escuro"] .quick-actions-panel h3,
:root[data-tema="escuro"] .gr-v261-chart h3,
:root[data-tema="escuro"] section.block h2,
:root[data-tema="escuro"] section.block h3,
:root[data-tema="escuro"] .card .value,
:root[data-tema="escuro"] h1,:root[data-tema="escuro"] h2,:root[data-tema="escuro"] h3{
  color:var(--ux-tx) !important;
}
:root[data-tema="escuro"] .quick-action{ color:var(--ux-tx); }
:root[data-tema="escuro"] .quick-action:first-line{ color:var(--ux-tx); }
:root[data-tema="escuro"] p,:root[data-tema="escuro"] .muted,
:root[data-tema="escuro"] .card .label,:root[data-tema="escuro"] .card .sub{ color:var(--ux-tx2); }
:root[data-tema="escuro"] .ux-emp-nav{ background:rgba(255,255,255,.05) !important; }

/* =====================================================================
   V27.9f — cartão de acesso com a marca da plataforma
   O selo "GR" era desenhado por ::before; agora o card mostra o
   logotipo UrbanNIX, e o acesso deixa de parecer o de um empreendimento.
   ===================================================================== */
.auth-card::before{ content:none !important; display:none !important; }
.auth-card img.auth-card-logo{
  display:block !important;
  width:154px !important; height:auto !important;
  margin:0 0 26px !important;
  content:url('../img/brand/urbannix-logo-white-280.webp');
}
.auth-card h2{
  color:#F2F7F4 !important;
  font-size:1.6rem !important;
  font-weight:650 !important;
  letter-spacing:-0.03em !important;
}
.auth-card .auth-sub{ color:#A7BCB2 !important; }
.auth-card label.field{ color:#A8B5AE !important; }
.auth-card input{ color:#EDF3F0 !important; }
.auth-card button.btn#loginSubmit,
.auth-card button.btn#setupSubmit{
  background:var(--ux-acao) !important;
  border-color:var(--ux-acao) !important;
  color:#06231A !important;
  font-weight:700 !important;
}
.auth-card button.btn#loginSubmit:hover,
.auth-card button.btn#setupSubmit:hover{ background:var(--ux-acao-escura) !important; }
#authOverlay{
  background:radial-gradient(circle at 18% 16%, rgba(33,180,126,.13), transparent 30%), #070B09 !important;
}

/* V27.9g — botões secundários dentro do cartão escuro de acesso */
.auth-card .btn.secondary,
.auth-card .btn.ghost,
.auth-card .auth-esqueci,
.auth-card button:not(#loginSubmit):not(#setupSubmit){
  background:rgba(255,255,255,.06) !important;
  border:1px solid rgba(255,255,255,.14) !important;
  color:#D5E3DC !important;
  font-weight:600 !important;
}
.auth-card .btn.secondary:hover,
.auth-card .auth-esqueci:hover,
.auth-card button:not(#loginSubmit):not(#setupSubmit):hover{
  background:rgba(255,255,255,.12) !important;
  color:#F2F7F4 !important;
  border-color:rgba(255,255,255,.24) !important;
}
.auth-card .auth-esqueci{ background:none !important; border:0 !important; }
.auth-card .auth-esqueci:hover{ background:rgba(255,255,255,.07) !important; }

/* a gradezinha decorativa da vitrine virava caixas pretas vazias */
.auth-visual .mini-grid{ gap:8px !important; }
.auth-visual .mini-grid i{
  background:rgba(255,255,255,.055) !important;
  border:1px solid rgba(255,255,255,.09) !important;
  border-radius:6px !important;
  min-height:26px;
}
.auth-visual .mini-grid i:nth-child(3),
.auth-visual .mini-grid i:nth-child(7),
.auth-visual .mini-grid i:nth-child(10){
  background:rgba(33,180,126,.22) !important;
  border-color:rgba(33,180,126,.34) !important;
}
.auth-visual .mini-grid i:nth-child(5){
  background:rgba(197,162,83,.22) !important;
  border-color:rgba(197,162,83,.36) !important;
}

/* V27.9h — a aba Portal do Cliente estourava 16px no celular */
@media (max-width:520px){
  #view-portal{ overflow-x:hidden; }
  #view-portal > *{ max-width:100%; }
  #view-portal table{ min-width:0; }
}

/* =====================================================================
   V28.0 — CENTRAL URBANNIX
   A tela da plataforma. Neutra de propósito: a cor forte fica para o
   empreendimento ativo, não para o chassi.
   ===================================================================== */
.ux-nav-central .nav-label{ font-weight:650; }
#tabs .ux-nav-central.active{ color:var(--ux-tx) !important; }

.ux-central-topo{
  display:flex; align-items:flex-start; justify-content:space-between; gap:24px;
  padding:0 0 22px; margin-bottom:22px;
  border-bottom:1px solid var(--ux-line);
}
.ux-central-rot{
  font-size:.64rem; letter-spacing:.12em; text-transform:uppercase;
  color:var(--ux-tx3); margin-bottom:7px;
}
.ux-central-h{
  margin:0 0 8px; font-size:clamp(1.5rem,1.2rem + 1vw,2.05rem);
  font-weight:650; letter-spacing:-0.03em; color:var(--ux-tx);
}
.ux-central-sub{ margin:0; max-width:58ch; font-size:.88rem; line-height:1.6; color:var(--ux-tx2); }
.ux-central-marca{ width:76px; height:76px; flex:0 0 76px; opacity:.92; }
.ux-central-secao{
  margin:30px 0 12px; font-size:.72rem; font-weight:700;
  letter-spacing:.11em; text-transform:uppercase; color:var(--ux-tx3);
}

.ux-kpis{ display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr)); gap:12px; }
.ux-kpis.compacta{ grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); }
.ux-kpi{
  min-width:0;
  display:flex; flex-direction:column; gap:4px;
  padding:15px 17px;
  border:1px solid var(--ux-line); border-radius:var(--ux-r);
  background:var(--ux-surface);
  box-shadow:var(--ux-s1);
}
.ux-kpi span{ font-size:.66rem; letter-spacing:.06em; text-transform:uppercase; color:var(--ux-tx3); }
.ux-kpi strong{
  overflow-wrap:anywhere;
  font-size:1.42rem; font-weight:650; letter-spacing:-0.028em;
  color:var(--ux-tx); font-variant-numeric:tabular-nums; line-height:1.15;
}
.ux-kpi small{ font-size:.7rem; color:var(--ux-tx2); }

.ux-emp-grade{ display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:14px; }
.ux-emp-cartao{
  padding:17px 18px;
  border:1px solid var(--ux-line); border-radius:var(--ux-r-lg);
  background:var(--ux-surface); box-shadow:var(--ux-s1);
  transition:box-shadow 180ms var(--curva,ease), border-color 180ms var(--curva,ease);
}
.ux-emp-cartao:hover{ box-shadow:var(--ux-s2); border-color:var(--ux-line-forte); }
.ux-emp-cartao header{ display:flex; align-items:center; gap:11px; margin-bottom:13px; }
.ux-emp-cartao header img{ width:36px; height:36px; flex:0 0 36px; border-radius:var(--ux-r-sm); }
.ux-emp-cartao header div{ flex:1; min-width:0; display:flex; flex-direction:column; }
.ux-emp-cartao header strong{ font-size:.96rem; font-weight:650; letter-spacing:-0.015em; color:var(--ux-tx); }
.ux-emp-cartao header span{ font-size:.72rem; color:var(--ux-tx2); }
.ux-emp-cartao .ux-emp-num{ margin-top:12px; }
.ux-emp-abrir{
  width:100%; margin-top:13px; min-height:42px;
  border:1px solid var(--ux-verde-600); border-radius:var(--ux-r-sm);
  background:var(--ux-verde-600); color:#fff;
  font:600 .84rem var(--sans); cursor:pointer;
  transition:background-color 160ms var(--curva,ease);
}
.ux-emp-abrir:hover{ background:var(--ux-verde-700); border-color:var(--ux-verde-700); }
.ux-emp-abrir:focus-visible{ outline:none; box-shadow:var(--ux-foco); }
.ux-emp-cartao.vazio{
  display:flex; flex-direction:column; justify-content:center; gap:8px;
  border-style:dashed; background:transparent; box-shadow:none;
}
.ux-emp-cartao.vazio strong{ font-size:.9rem; font-weight:650; color:var(--ux-tx2); }
.ux-emp-cartao.vazio p{ margin:0; font-size:.76rem; line-height:1.55; color:var(--ux-tx3); }

.ux-atalhos{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:11px; }
.ux-atalho{
  display:flex; flex-direction:column; gap:4px; text-align:left;
  padding:14px 16px; min-height:78px;
  border:1px solid var(--ux-line); border-radius:var(--ux-r);
  background:var(--ux-surface); cursor:pointer; font-family:var(--sans);
  transition:border-color 160ms var(--curva,ease), box-shadow 160ms var(--curva,ease), transform 160ms var(--curva,ease);
}
.ux-atalho:hover{ border-color:var(--ux-verde-600); box-shadow:var(--ux-s2); transform:translateY(-1px); }
.ux-atalho:focus-visible{ outline:none; box-shadow:var(--ux-foco); }
.ux-atalho strong{ font-size:.86rem; font-weight:650; color:var(--ux-tx); }
.ux-atalho span{ font-size:.74rem; line-height:1.5; color:var(--ux-tx2); }

@media (max-width:560px){
  .ux-central-topo{ flex-direction:column; gap:14px; }
  .ux-central-marca{ width:54px; height:54px; flex:0 0 54px; }
  .ux-kpis,.ux-kpis.compacta{ grid-template-columns:1fr 1fr; }
  .ux-kpi strong{ font-size:1.18rem; }
  .ux-emp-grade{ grid-template-columns:1fr; }
}
@media (prefers-reduced-motion:reduce){ .ux-atalho,.ux-emp-cartao{ transition:none; } }

/* V28.0 — rodapé único do administrativo e destaque da Central no menu */
.gr-admin-footer-v26{
  display:flex; align-items:center; gap:14px; flex-wrap:wrap;
  border-top:1px solid var(--ux-line) !important;
  padding-top:15px !important; margin-top:26px !important;
  font-size:.72rem !important; color:var(--ux-tx3) !important;
}
.gr-admin-footer-v26 b{ color:var(--ux-tx2); font-weight:650; }
.gr-admin-footer-v26 .dot{
  width:7px; height:7px; border-radius:50%;
  background:var(--ux-ok); display:inline-block;
}
#tabs .ux-nav-central{ position:relative; }
#tabs .ux-nav-central .nav-label{ color:#DCEBE4; }
#tabs .ux-nav-central.active{ background:rgba(255,255,255,.09) !important; }
#tabs .ux-nav-central.active .nav-label{ color:#FFFFFF !important; font-weight:700; }
#tabs .ux-nav-central .nav-ico svg{ stroke:#C5A253; fill:none; stroke-width:1.7; }

/* V28.0b — abaixo de 980px o menu vira trilho de ícones: o bloco do
   empreendimento não cabe ali e vazava por cima do conteúdo. O seletor
   do cabeçalho já mostra o empreendimento ativo nessas larguras. */
@media (max-width:980px){
  .ux-emp-nav{ display:none !important; }
}
@media (max-width:620px){
  header.top .top-actions{ gap:6px; flex-wrap:wrap; row-gap:8px; }
  header.top .top-search{ order:5; flex:1 1 100%; }
  .ux-tema{ width:38px; height:38px; flex:0 0 38px; }
}

/* =====================================================================
   V28.1 — CABEÇALHO NO CELULAR
   O cabeçalho tinha altura travada enquanto as ações quebravam em duas
   linhas: elas transbordavam e cobriam o topo do conteúdo — era isso que
   escondia a primeira tela. Agora o cabeçalho cresce, o empreendimento
   ocupa a primeira linha e as ações a segunda.
   ===================================================================== */
@media (max-width:720px){
  header.top{
    height:auto !important; min-height:0 !important;
    align-items:center !important;
    padding:8px 0 10px 6px !important;
    gap:8px !important; row-gap:8px !important;
    flex-wrap:wrap !important;
  }
  header.top .brand{ flex:1 1 100% !important; min-width:0 !important; order:1; gap:8px !important; overflow:hidden; }
  header.top .brand-sep{ display:none !important; }
  header.top .gr-brand-refresh-admin{ display:none !important; }
  .ux-emp-switch{
    flex:1 1 auto !important; min-width:0 !important; overflow:hidden;
    padding:5px 9px !important; min-height:40px !important;
  }
  .ux-emp-switch .ux-emp-txt{ min-width:0; overflow:hidden; }
  .ux-emp-switch .ux-emp-txt small{ display:none !important; }
  .ux-emp-switch .ux-emp-txt strong{
    display:block; max-width:100%; font-size:.82rem;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  .ux-emp-mark{ width:22px !important; height:22px !important; flex:0 0 22px !important; }

  header.top .top-actions{
    order:2; flex:1 1 auto !important;
    flex-wrap:nowrap !important; gap:5px !important;
    justify-content:flex-start;
  }
  header.top .top-search{
    order:0 !important;
    flex:0 0 38px !important; width:38px !important; min-width:38px !important;
    padding:0 !important; justify-content:center; overflow:hidden;
  }
  header.top .top-search span, header.top .top-search kbd{ display:none !important; }
  .ux-tema{ width:38px !important; height:38px !important; flex:0 0 38px !important; }
  header.top .user-badge{ order:3; flex:0 0 auto; }

  /* o relógio de sessão é fixo na tela e caía em cima do título */
  #grSessionChip{ display:none !important; }
}

/* V28.1 — números da Central cabendo em tela estreita */
@media (max-width:560px){
  .ux-kpis, .ux-kpis.compacta{ grid-template-columns:repeat(2,minmax(0,1fr)) !important; gap:9px !important; }
  .ux-kpi{ min-width:0; padding:12px 13px; }
  .ux-kpi span{ font-size:.62rem; }
  .ux-kpi strong{ font-size:1.02rem; letter-spacing:-0.02em; overflow-wrap:anywhere; }
  .ux-kpi small{ font-size:.66rem; }
  .ux-emp-num{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ux-emp-num > div{ min-width:0; }
  .ux-emp-num dd{ overflow-wrap:anywhere; }
  .ux-central-marca{ display:none; }
}
@media (max-width:400px){
  .ux-kpis, .ux-kpis.compacta{ grid-template-columns:1fr !important; }
  .ux-kpi strong{ font-size:1.22rem; }
}

/* V28.3 — cartão de empreendimento secundário (ainda sem números próprios) */
.ux-emp-cartao.secundario{ background:var(--ux-surface-2); }
.ux-emp-tag.neutra{
  background:var(--ux-surface-3); color:var(--ux-tx2);
  border-color:var(--ux-line-forte);
}
.ux-emp-aviso{
  margin:4px 0 0; font-size:.74rem; line-height:1.55; color:var(--ux-tx2);
}

/* V28.4 — troca de empreendimento e cadastro de um novo */
.ux-emp-card[role="button"]{ cursor:pointer; }
.ux-emp-card[role="button"]:not(.ativo):hover{
  border-color:var(--ux-verde-600);
  background:var(--ux-surface-3);
}
.ux-emp-novo-btn{
  display:flex; flex-direction:column; gap:3px; text-align:left;
  width:100%; margin-top:11px; padding:12px 13px;
  border:1px dashed var(--ux-line-forte); border-radius:var(--ux-r);
  background:transparent; cursor:pointer; font-family:var(--sans);
  transition:border-color 150ms var(--curva,ease), background-color 150ms var(--curva,ease);
}
.ux-emp-novo-btn:hover{ border-color:var(--ux-verde-600); background:var(--ux-surface-2); }
.ux-emp-novo-btn:focus-visible{ outline:none; box-shadow:var(--ux-foco); }
.ux-emp-novo-btn strong{ font-size:.8rem; font-weight:650; color:var(--ux-tx2); }
.ux-emp-novo-btn span{ font-size:.7rem; line-height:1.45; color:var(--ux-tx3); }

.ux-emp-abrir.sec{
  background:transparent; color:var(--ux-verde-600);
  border-color:var(--ux-line-forte);
}
.ux-emp-abrir.sec:hover{ background:var(--ux-surface-3); border-color:var(--ux-verde-600); }

.ux-emp-form{ display:flex; flex-direction:column; gap:10px; margin-top:14px; }
.ux-emp-form label{
  display:flex; flex-direction:column; gap:4px;
  font-size:.7rem; letter-spacing:.04em; text-transform:uppercase; color:var(--ux-tx3);
}
.ux-emp-form input, .ux-emp-form select{
  font-size:.86rem; text-transform:none; letter-spacing:0; color:var(--ux-tx);
}
.ux-emp-form-linha{ display:grid; grid-template-columns:1fr 76px; gap:10px; }
.ux-emp-form-aviso:not(:empty){
  padding:9px 11px; border-radius:var(--ux-r-sm);
  background:var(--ux-erro-bg); border:1px solid var(--ux-erro-linha);
  color:var(--ux-erro); font-size:.76rem; line-height:1.45;
}
.ux-emp-cartao.vazio{ justify-content:flex-start; }

/* V28.6 — aviso de planta ainda não carregada */
.ux-sem-mapa{
  display:flex; flex-direction:column; align-items:flex-start; gap:9px;
  max-width:660px; margin:18px 0;
  padding:26px 28px;
  border:1px dashed var(--ux-line-forte); border-radius:var(--ux-r-lg);
  background:var(--ux-surface-2);
}
.ux-sem-mapa-ic{
  width:42px; height:42px; display:grid; place-items:center;
  border-radius:12px; margin-bottom:4px;
  background:rgba(197,162,83,.15); color:var(--ux-ouro,#C5A253);
  font-size:1.25rem;
}
.ux-sem-mapa strong{ font-size:1.02rem; font-weight:650; letter-spacing:-0.015em; color:var(--ux-tx); }
.ux-sem-mapa p{ margin:0; font-size:.85rem; line-height:1.65; color:var(--ux-tx2); }
.ux-sem-mapa .ux-sem-mapa-acao{ color:var(--ux-tx3); font-size:.8rem; }
#grPublico .ux-sem-mapa{
  background:rgba(255,255,255,.05);
  border-color:rgba(255,255,255,.16);
  margin:26px auto;
}
#grPublico .ux-sem-mapa strong{ color:#F2F7F4; }
#grPublico .ux-sem-mapa p{ color:#B4CCC2; }
#grPublico .ux-sem-mapa .ux-sem-mapa-acao{ color:#8FAFA3; }

/* =====================================================================
   V29.0 — HOME INSTITUCIONAL URBANNIX
   A primeira tela pública da plataforma. Alterna faixas claras e escuras
   para não virar um bloco verde só, e reserva o verde vivo apenas para as
   chamadas de ação. Os empreendimentos guardam a identidade própria.
   ===================================================================== */
.ux-home{
  --ux-h-escuro:#073B31;
  --ux-h-escuro-2:#052A23;
  --ux-h-claro:#F5F6F3;
  --ux-h-medio:#ECEFEA;
  --ux-h-tinta:#17211F;
  --ux-h-tinta-2:#5A6763;
  --ux-h-claro-tx:#EAF2EE;
  --ux-h-claro-tx2:#AFC7BC;
  --ux-h-ouro:#C5A253;
  --ux-h-acao:#21B47E;
  background:var(--ux-h-claro);
  color:var(--ux-h-tinta);
  font-family:var(--sans,system-ui,-apple-system,'Segoe UI',sans-serif);
  min-height:100vh;
}
.ux-home *{ box-sizing:border-box; }

/* ---------- header ---------- */
.ux-home-topo{
  position:sticky; top:0; z-index:40;
  background:rgba(7,59,49,.94);
  backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(255,255,255,.10);
}
.ux-home-topo-in{
  max-width:1180px; margin:0 auto;
  padding:12px clamp(16px,4vw,34px);
  display:flex; align-items:center; justify-content:space-between; gap:18px;
}
.ux-home-marca{ display:flex; align-items:center; flex:0 0 auto; }
.ux-home-marca img{ height:32px; width:auto; display:block; }
.ux-home-menu{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.ux-home-menu a{
  padding:9px 12px; border-radius:8px;
  color:var(--ux-h-claro-tx2); text-decoration:none;
  font-size:.84rem; font-weight:500;
  transition:color 150ms ease, background-color 150ms ease;
}
.ux-home-menu a:hover{ color:#fff; background:rgba(255,255,255,.08); }
.ux-home-cliente{
  margin-left:6px; padding:9px 16px; min-height:38px;
  border:1px solid rgba(255,255,255,.26); border-radius:999px;
  background:transparent; color:#F2F7F4;
  font:600 .82rem var(--sans); cursor:pointer;
  transition:background-color 150ms ease, border-color 150ms ease;
}
.ux-home-cliente:hover{ background:rgba(255,255,255,.13); border-color:rgba(255,255,255,.4); }

/* ---------- hero ---------- */
.ux-hero{
  background:
    radial-gradient(980px 520px at 78% -10%, rgba(33,180,126,.16), transparent 64%),
    var(--ux-h-escuro);
  color:var(--ux-h-claro-tx);
  padding:clamp(52px,9vw,110px) clamp(16px,4vw,34px) clamp(48px,8vw,96px);
}
.ux-hero-in{ max-width:900px; margin:0 auto; }
.ux-hero-selo{
  display:inline-block; padding:6px 14px; border-radius:999px;
  background:rgba(197,162,83,.14); border:1px solid rgba(197,162,83,.3);
  color:#E4CE95; font-size:.68rem; font-weight:600;
  letter-spacing:.09em; text-transform:uppercase;
}
.ux-hero h1{
  margin:22px 0 16px; max-width:16ch;
  font:650 clamp(2rem,1.4rem + 2.6vw,3.5rem)/1.1 var(--sans);
  letter-spacing:-0.035em; color:#F6FAF8;
}
.ux-hero h1 em{ font-style:normal; color:var(--ux-h-ouro); }
.ux-hero p{ margin:0; max-width:52ch; font-size:clamp(.95rem,.9rem + .2vw,1.1rem); line-height:1.65; color:var(--ux-h-claro-tx2); }
.ux-hero-acoes{ display:flex; gap:12px; flex-wrap:wrap; margin-top:30px; }
.ux-hero-resumo{
  display:flex; gap:26px; flex-wrap:wrap; margin-top:38px;
  padding-top:22px; border-top:1px solid rgba(255,255,255,.12);
  font-size:.82rem; color:var(--ux-h-claro-tx2);
}
.ux-hero-resumo b{ color:#F2F7F4; font-size:1.2rem; font-weight:650; margin-right:6px; }

/* ---------- botões ---------- */
.ux-btn-primario{
  display:inline-flex; align-items:center; justify-content:center;
  min-height:48px; padding:0 26px;
  border:0; border-radius:10px;
  background:var(--ux-h-acao); color:#052B1F;
  font:700 .9rem var(--sans); text-decoration:none; cursor:pointer;
  transition:background-color 160ms ease, transform 90ms ease, box-shadow 160ms ease;
}
.ux-btn-primario:hover{ background:#2ECB90; box-shadow:0 8px 22px rgba(33,180,126,.24); }
.ux-btn-primario:active{ transform:translateY(1px); }
.ux-btn-primario:focus-visible{ outline:none; box-shadow:0 0 0 3px rgba(33,180,126,.42); }
.ux-btn-primario.largo{ width:100%; }
.ux-btn-fantasma{
  display:inline-flex; align-items:center; justify-content:center;
  min-height:48px; padding:0 22px;
  border:1px solid rgba(255,255,255,.28); border-radius:10px;
  background:transparent; color:#EAF2EE;
  font:600 .88rem var(--sans); text-decoration:none; cursor:pointer;
  transition:background-color 160ms ease, border-color 160ms ease;
}
.ux-btn-fantasma:hover{ background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.45); }
.ux-btn-fantasma:focus-visible{ outline:none; box-shadow:0 0 0 3px rgba(255,255,255,.3); }

/* ---------- seções ---------- */
.ux-secao{ padding:clamp(48px,7vw,92px) clamp(16px,4vw,34px); }
.ux-secao-clara{ background:var(--ux-h-claro); color:var(--ux-h-tinta); }
.ux-secao-media{ background:var(--ux-h-medio); color:var(--ux-h-tinta); }
.ux-secao-escura{ background:var(--ux-h-escuro-2); color:var(--ux-h-claro-tx); }
.ux-secao-in{ max-width:1180px; margin:0 auto; }
.ux-secao-cab{ max-width:640px; margin:0 0 32px; }
.ux-eyebrow{
  display:block; margin-bottom:10px;
  font-size:.68rem; font-weight:700; letter-spacing:.13em; text-transform:uppercase;
  color:var(--ux-h-ouro);
}
.ux-eyebrow.claro{ color:#E4CE95; }
.ux-secao h2{
  margin:0 0 10px;
  font:650 clamp(1.4rem,1.1rem + 1.3vw,2.15rem)/1.2 var(--sans);
  letter-spacing:-0.03em;
}
.ux-secao-cab p{ margin:0; font-size:.95rem; line-height:1.65; color:var(--ux-h-tinta-2); }

/* ---------- filtros ---------- */
.ux-filtros{ display:flex; gap:7px; flex-wrap:wrap; margin-bottom:22px; }
.ux-filtro{
  padding:8px 15px; min-height:38px;
  border:1px solid #DBE1DC; border-radius:999px;
  background:#fff; color:var(--ux-h-tinta-2);
  font:600 .78rem var(--sans); cursor:pointer;
  transition:all 150ms ease;
}
.ux-filtro:hover{ border-color:#B9C4BD; color:var(--ux-h-tinta); }
.ux-filtro.on{ background:var(--ux-h-escuro); border-color:var(--ux-h-escuro); color:#fff; }
.ux-filtro:focus-visible{ outline:none; box-shadow:0 0 0 3px rgba(33,180,126,.3); }

/* ---------- cards ---------- */
.ux-cards{ display:grid; gap:22px; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); }
.ux-card{
  display:flex; flex-direction:column;
  background:#fff; border:1px solid #E4E8E4; border-radius:20px;
  overflow:hidden;
  box-shadow:0 1px 2px rgba(7,59,49,.04);
  transition:transform 260ms cubic-bezier(.2,.8,.2,1), box-shadow 260ms ease, border-color 260ms ease;
}
.ux-card:hover{ transform:translateY(-4px); box-shadow:0 18px 44px rgba(7,59,49,.13); border-color:#D3DCD6; }
.ux-card[hidden]{ display:none; }
.ux-card-topo{ position:relative; aspect-ratio:16/9; overflow:hidden; background:var(--ux-h-escuro); }
.ux-card-foto{
  width:100%; height:100%; object-fit:cover; display:block;
  transition:transform 600ms cubic-bezier(.2,.8,.2,1);
}
.ux-card:hover .ux-card-foto{ transform:scale(1.045); }
.ux-card-grafica{
  width:100%; height:100%; display:grid; place-items:center;
  background:
    radial-gradient(420px 220px at 30% 10%, rgba(33,180,126,.20), transparent 62%),
    repeating-linear-gradient(135deg, rgba(255,255,255,.035) 0 14px, transparent 14px 28px),
    var(--ux-h-escuro);
}
.ux-card-grafica img{ width:74px; height:74px; opacity:.92; }
.ux-card-badge{
  position:absolute; left:14px; top:14px; z-index:2;
  padding:5px 12px; border-radius:999px;
  background:rgba(5,26,21,.76); border:1px solid rgba(255,255,255,.2);
  backdrop-filter:blur(6px);
  color:#E6F1EB; font-size:.66rem; font-weight:700;
  letter-spacing:.07em; text-transform:uppercase;
}
.ux-card-logo{
  position:absolute; right:14px; bottom:14px; z-index:2;
  max-width:96px; max-height:52px; width:auto; height:auto;
  filter:drop-shadow(0 3px 10px rgba(0,0,0,.5));
}
.ux-card-corpo{ padding:20px 22px 6px; flex:1; }
.ux-card-corpo h3{
  margin:0 0 4px; font:650 1.2rem/1.25 var(--sans);
  letter-spacing:-0.022em; color:var(--ux-h-tinta);
}
.ux-card-onde{ display:block; font-size:.85rem; color:var(--ux-h-tinta-2); }
.ux-card-tipo{
  display:inline-block; margin-top:10px; padding:3px 10px;
  border-radius:6px; background:#EDF2EE; color:#41564D;
  font-size:.7rem; font-weight:600;
}
.ux-card-num{
  display:grid; grid-template-columns:1fr 1fr; gap:1px;
  margin:16px 0 0; border-radius:12px; overflow:hidden; background:#E4E8E4;
}
.ux-card-num > div{ background:#FAFBF9; padding:11px 13px; }
.ux-card-num > div.largo{ grid-column:1/-1; }
.ux-card-num dt{
  font-size:.6rem; letter-spacing:.09em; text-transform:uppercase;
  color:#7D8A85; margin-bottom:3px;
}
.ux-card-num dd{
  margin:0; font-size:1.04rem; font-weight:650; color:var(--ux-h-tinta);
  font-variant-numeric:tabular-nums; letter-spacing:-0.02em;
}
.ux-card-texto{ margin:16px 0 0; font-size:.86rem; line-height:1.6; color:var(--ux-h-tinta-2); }
.ux-card-pe{ padding:18px 22px 22px; }
.ux-card-espera{
  display:flex; align-items:center; justify-content:center;
  min-height:48px; border-radius:10px;
  border:1px dashed #CFD8D2; color:#8B9792;
  font:600 .86rem var(--sans);
}
.ux-card.futuro .ux-card-topo{ aspect-ratio:16/8; }

/* ---------- números ---------- */
.ux-num-grade{ display:grid; gap:1px; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); background:rgba(255,255,255,.10); border-radius:16px; overflow:hidden; }
.ux-num{ background:var(--ux-h-escuro-2); padding:26px 22px; }
.ux-num b{
  display:block; font:650 clamp(1.5rem,1.2rem + 1vw,2.1rem)/1.1 var(--sans);
  letter-spacing:-0.032em; color:#F6FAF8; font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.ux-num span{ display:block; margin-top:7px; font-size:.78rem; color:var(--ux-h-claro-tx2); }
.ux-num-nota{ margin:16px 0 0; font-size:.72rem; color:#7E9B90; }

/* ---------- sobre ---------- */
.ux-sobre{ display:flex; align-items:center; gap:clamp(24px,5vw,64px); flex-wrap:wrap; }
.ux-sobre-texto{ flex:1 1 380px; }
.ux-sobre-texto p{ margin:0; max-width:52ch; font-size:.98rem; line-height:1.7; color:var(--ux-h-tinta-2); }
.ux-sobre-marca{ flex:0 0 auto; }
.ux-sobre-marca img{ width:clamp(120px,16vw,180px); height:auto; opacity:.95; }

/* ---------- diferenciais ---------- */
.ux-dif-grade{ display:grid; gap:14px; grid-template-columns:repeat(auto-fit,minmax(238px,1fr)); }
.ux-dif{
  display:flex; flex-direction:column; gap:5px;
  padding:20px; border-radius:14px;
  background:#fff; border:1px solid #E4E8E4;
  transition:border-color 180ms ease, transform 180ms ease;
}
.ux-dif:hover{ border-color:var(--ux-h-acao); transform:translateY(-2px); }
.ux-dif-ic{
  width:36px; height:36px; display:grid; place-items:center; margin-bottom:6px;
  border-radius:10px; background:#E7F3EC; color:#14705A; font-size:1rem;
}
.ux-dif strong{ font-size:.92rem; font-weight:650; letter-spacing:-0.012em; }
.ux-dif-tx{ font-size:.81rem; line-height:1.55; color:var(--ux-h-tinta-2); }

/* ---------- contato ---------- */
.ux-contato{ display:flex; align-items:center; justify-content:space-between; gap:32px; flex-wrap:wrap; }
.ux-contato > div:first-child{ flex:1 1 420px; }
.ux-contato p{ margin:0; max-width:46ch; font-size:.95rem; line-height:1.65; color:var(--ux-h-claro-tx2); }
.ux-contato-acoes{ display:flex; gap:12px; flex-wrap:wrap; }

/* ---------- rodapé ---------- */
.ux-rodape{ background:#041D18; color:var(--ux-h-claro-tx2); padding:clamp(34px,5vw,56px) clamp(16px,4vw,34px) 24px; }
.ux-rodape-in{
  max-width:1180px; margin:0 auto;
  display:flex; align-items:flex-start; justify-content:space-between; gap:28px; flex-wrap:wrap;
  padding-bottom:24px; border-bottom:1px solid rgba(255,255,255,.10);
}
.ux-rodape-marca{ display:flex; flex-direction:column; gap:9px; }
.ux-rodape-marca img{ height:30px; width:auto; }
.ux-rodape-marca span{ font-size:.76rem; max-width:34ch; }
.ux-rodape-links{ display:flex; gap:8px; flex-wrap:wrap; }
.ux-rodape-links a, .ux-rodape-links button{
  padding:7px 11px; border:0; border-radius:8px; background:none;
  color:var(--ux-h-claro-tx2); font:500 .82rem var(--sans);
  text-decoration:none; cursor:pointer;
  transition:color 150ms ease, background-color 150ms ease;
}
.ux-rodape-links a:hover, .ux-rodape-links button:hover{ color:#fff; background:rgba(255,255,255,.07); }
.ux-rodape-pe{
  max-width:1180px; margin:18px auto 0;
  display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap;
  font-size:.72rem; color:#6F8A80;
}
.ux-rodape-adm{
  background:none; border:0; cursor:pointer; padding:6px 8px; border-radius:6px;
  color:#5F7A70; font:500 .72rem var(--sans);
}
.ux-rodape-adm:hover{ color:#A9C4B9; background:rgba(255,255,255,.06); }

/* ---------- mobile ---------- */
@media (max-width:820px){
  .ux-home-topo-in{ flex-direction:column; align-items:stretch; gap:10px; }
  .ux-home-marca{ justify-content:space-between; }
  .ux-home-menu{ justify-content:flex-start; gap:2px; overflow-x:auto; padding-bottom:2px; }
  .ux-home-menu a{ padding:8px 10px; font-size:.8rem; white-space:nowrap; }
  .ux-home-cliente{ margin-left:2px; white-space:nowrap; }
}
@media (max-width:600px){
  .ux-cards{ grid-template-columns:1fr; }
  .ux-hero-acoes .ux-btn-primario, .ux-hero-acoes .ux-btn-fantasma{ width:100%; }
  .ux-card-num{ grid-template-columns:1fr 1fr; }
  .ux-num-grade{ grid-template-columns:1fr 1fr; }
  .ux-sobre-marca{ display:none; }
  .ux-contato-acoes{ width:100%; }
  .ux-contato-acoes > *{ flex:1 1 100%; }
  .ux-rodape-pe{ flex-direction:column; align-items:flex-start; gap:8px; }
}
@media (prefers-reduced-motion:reduce){
  .ux-card, .ux-card-foto, .ux-dif, .ux-btn-primario{ transition:none; }
}

/* V29.0b — ajustes de leitura na home */
.ux-hero h1{ max-width:20ch; }
.ux-num-grade{ grid-template-columns:repeat(auto-fit,minmax(205px,1fr)); }
.ux-num b{
  overflow-wrap:normal;          /* quebrava o valor no meio dos dígitos */
  word-break:keep-all;
  font-size:clamp(1.32rem,1.1rem + .7vw,1.9rem);
}
/* a logo do empreendimento precisa de contraste sobre a foto */
.ux-card-topo::after{
  content:''; position:absolute; inset:auto 0 0 0; height:46%;
  background:linear-gradient(180deg, transparent, rgba(4,20,16,.62));
  pointer-events:none; z-index:1;
}
.ux-card.futuro .ux-card-topo::after{ display:none; }
.ux-card-logo{ max-width:108px; max-height:58px; }
@media (max-width:600px){
  .ux-num-grade{ grid-template-columns:1fr 1fr; }
  .ux-num{ padding:20px 16px; }
  .ux-num b{ font-size:1.2rem; }
}

/* V29.1 — edição de empreendimento na Central */
.ux-emp-cartao header{ position:relative; }
.ux-emp-editar{
  flex:0 0 30px; width:30px; height:30px;
  border:1px solid var(--ux-line); border-radius:var(--ux-r-sm);
  background:var(--ux-surface-2); color:var(--ux-tx2);
  cursor:pointer; font-size:.82rem; line-height:1;
  transition:border-color 150ms ease, color 150ms ease, background-color 150ms ease;
}
.ux-emp-editar:hover{ border-color:var(--ux-verde-600); color:var(--ux-verde-600); background:var(--ux-surface-3); }
.ux-emp-editar:focus-visible{ outline:none; box-shadow:var(--ux-foco); }
.ux-emp-edicao{
  margin:0 0 14px; padding:14px;
  border:1px solid var(--ux-line); border-radius:var(--ux-r);
  background:var(--ux-surface-2);
  animation:uxEdicaoAbre 220ms cubic-bezier(.2,.8,.2,1) both;
}
@keyframes uxEdicaoAbre{ from{ opacity:0; transform:translateY(-5px); } to{ opacity:1; transform:none; } }
.ux-emp-form-botoes{ display:flex; gap:9px; }
.ux-emp-form-botoes .ux-emp-abrir{ margin-top:4px; }
@media (prefers-reduced-motion:reduce){ .ux-emp-edicao{ animation:none; } }

/* =====================================================================
   V29.2 — PLANTA DE EMPREENDIMENTO E IMPORTAÇÃO
   ===================================================================== */
.ux-planta-bloco{ padding:18px !important; }
.ux-pl{ display:grid; grid-template-columns:1fr 260px; gap:16px; align-items:start; }
.ux-pl-topo{
  grid-column:1/-1;
  display:flex; align-items:center; justify-content:space-between;
  gap:14px; flex-wrap:wrap; margin-bottom:2px;
}
.ux-pl-legendas{ display:flex; gap:14px; flex-wrap:wrap; }
.ux-pl-leg{ display:inline-flex; align-items:center; gap:6px; font-size:.74rem; color:var(--ux-tx2); }
.ux-pl-leg i{ width:11px; height:11px; border-radius:3px; flex:0 0 11px; }
.ux-pl-leg b{ color:var(--ux-tx); font-variant-numeric:tabular-nums; }
.ux-pl-medida{ font-size:.72rem; color:var(--ux-tx3); font-variant-numeric:tabular-nums; }
.ux-pl-quadro{
  border:1px solid var(--ux-line); border-radius:var(--ux-r);
  background:#07281F; overflow:hidden; min-height:340px;
  display:grid; place-items:center; padding:10px;
}
.ux-pl-svg{ width:100%; height:auto; max-height:66vh; display:block; }
.ux-pl-lote{ cursor:pointer; }
.ux-pl-lote path{ transition:fill-opacity 140ms ease, stroke-width 140ms ease; }
.ux-pl-lote:hover path{ fill-opacity:.82; }
.ux-pl-lote.sel path{ stroke:#F2E2AE; stroke-width:1.4; }
.ux-pl-lote:focus{ outline:none; }
.ux-pl-lote:focus-visible path{ stroke:#FFF6DC; stroke-width:1.8; }
.ux-pl-num{
  fill:#EAF2EE; font:600 2.6px var(--sans); text-anchor:middle;
  dominant-baseline:middle; pointer-events:none; user-select:none;
}
.ux-pl-lado{
  border:1px solid var(--ux-line); border-radius:var(--ux-r);
  background:var(--ux-surface-2); padding:14px; min-height:150px;
}
.ux-pl-vazio{ margin:0; font-size:.8rem; color:var(--ux-tx3); line-height:1.55; }
.ux-pl-info-cab{ display:flex; align-items:center; justify-content:space-between; gap:9px; margin-bottom:12px; }
.ux-pl-info-cab strong{ font-size:.95rem; font-weight:650; }
.ux-pl-selo{
  padding:3px 9px; border-radius:999px; color:#fff;
  font-size:.62rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase;
}
.ux-pl-selo.pendente{ background:var(--ux-surface-3); color:var(--ux-tx2); }
.ux-pl-info > div{
  display:flex; align-items:baseline; justify-content:space-between; gap:12px;
  padding:7px 0; border-bottom:1px solid var(--ux-line);
}
.ux-pl-info > div:last-of-type{ border-bottom:0; }
.ux-pl-info span{ font-size:.72rem; color:var(--ux-tx3); }
.ux-pl-info b{ font-size:.86rem; font-variant-numeric:tabular-nums; }
.ux-pl-aviso{ margin:10px 0 0; font-size:.74rem; line-height:1.55; color:var(--ux-tx3); }

.ux-import{
  display:flex; flex-direction:column; gap:7px;
  margin-top:13px; padding:13px 14px;
  border:1px solid rgba(33,180,126,.34); border-radius:var(--ux-r);
  background:rgba(33,180,126,.07);
}
.ux-import strong{ font-size:.82rem; font-weight:650; color:var(--ux-tx); }
.ux-import span{ font-size:.75rem; line-height:1.55; color:var(--ux-tx2); }
.ux-import .ux-emp-abrir{ margin-top:4px; }
.ux-emp-aviso.fraco{ color:var(--ux-tx3); font-size:.72rem; }

@media (max-width:900px){
  .ux-pl{ grid-template-columns:1fr; }
  .ux-pl-lado{ order:3; }
  .ux-pl-svg{ max-height:52vh; }
}
@media (prefers-reduced-motion:reduce){ .ux-pl-lote path{ transition:none; } }

/* V29.2b — o bloco da planta usa a superfície do tema, não a do painel antigo */
.ux-planta-bloco{
  background:var(--ux-surface) !important;
  border:1px solid var(--ux-line) !important;
  border-radius:var(--ux-r) !important;
  box-shadow:var(--ux-s1) !important;
}
.ux-pl-leg{ color:var(--ux-tx2) !important; }
.ux-pl-leg b{ color:var(--ux-tx) !important; }
.ux-pl-medida{ color:var(--ux-tx3) !important; }

/* =====================================================================
   V29.3 — LEADS: FUNIL NO ADMINISTRATIVO E CAPTAÇÃO NO PORTAL
   ===================================================================== */
.ux-lead-kpis{ display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:12px; margin:0 0 18px; }
.ux-lead-kpis .ux-kpi.urgente{ border-color:var(--ux-erro-linha); background:var(--ux-erro-bg); }
.ux-lead-kpis .ux-kpi.urgente strong{ color:var(--ux-erro); }
.ux-lead-kpis .ux-kpi.atencao{ border-color:var(--ux-aviso-linha); background:var(--ux-aviso-bg); }
.ux-lead-kpis .ux-kpi.atencao strong{ color:var(--ux-aviso); }

.ux-lead-area{ display:grid; grid-template-columns:minmax(0,1fr) 340px; gap:16px; align-items:start; }
.ux-funil{
  display:flex; gap:11px; overflow-x:auto; padding-bottom:10px;
  scroll-snap-type:x proximity;
}
.ux-col{
  flex:0 0 224px; scroll-snap-align:start;
  border:1px solid var(--ux-line); border-radius:var(--ux-r);
  background:var(--ux-surface-2); display:flex; flex-direction:column; max-height:70vh;
}
.ux-col-cab{
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:10px 12px; border-bottom:1px solid var(--ux-line);
  font-size:.7rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  color:var(--ux-tx2); position:sticky; top:0; background:var(--ux-surface-2); z-index:1;
  border-radius:var(--ux-r) var(--ux-r) 0 0;
}
.ux-col-cab b{ color:var(--ux-tx); font-size:.82rem; }
.ux-col-corpo{ padding:9px; display:flex; flex-direction:column; gap:8px; overflow-y:auto; }
.ux-col-vazio{ margin:6px 0; text-align:center; color:var(--ux-tx3); font-size:.8rem; }

.ux-lead{
  border:1px solid var(--ux-line); border-radius:var(--ux-r-sm);
  background:var(--ux-surface); padding:10px 11px; cursor:pointer;
  transition:border-color 150ms ease, box-shadow 150ms ease, transform 120ms ease;
}
.ux-lead:hover{ border-color:var(--ux-line-forte); box-shadow:var(--ux-s1); transform:translateY(-1px); }
.ux-lead.sel{ border-color:var(--ux-verde-600); box-shadow:inset 3px 0 0 var(--ux-verde-600); }
.ux-lead.alerta{ border-color:var(--ux-erro-linha); background:var(--ux-erro-bg); }
.ux-lead.parado{ border-color:var(--ux-aviso-linha); }
.ux-lead:focus-visible{ outline:none; box-shadow:var(--ux-foco); }
.ux-lead-topo{ display:flex; align-items:center; gap:7px; margin-bottom:5px; }
.ux-lead-topo strong{ flex:1; min-width:0; font-size:.83rem; font-weight:650;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ux-lead-tempo{ font-size:.66rem; color:var(--ux-tx3); white-space:nowrap; }
.ux-lead-farol{ width:9px; height:9px; border-radius:50%; flex:0 0 9px; background:var(--ux-tx3); }
.ux-lead-farol.verde{ background:var(--ux-ok); }
.ux-lead-farol.amarelo{ background:var(--ux-aviso); }
.ux-lead-farol.vermelho{ background:var(--ux-erro); }
.ux-lead-meta{ display:flex; flex-direction:column; gap:2px; font-size:.72rem; color:var(--ux-tx2); }
.ux-lead-rodape{ display:flex; gap:6px; flex-wrap:wrap; margin-top:7px; }
.ux-lead-origem{
  padding:2px 7px; border-radius:999px; background:var(--ux-surface-3);
  font-size:.62rem; color:var(--ux-tx2);
}
.ux-lead-perda{
  padding:2px 7px; border-radius:999px; background:var(--ux-erro-bg);
  color:var(--ux-erro); font-size:.62rem;
}

.ux-lead-det{
  border:1px solid var(--ux-line); border-radius:var(--ux-r);
  background:var(--ux-surface); padding:16px; max-height:76vh; overflow-y:auto;
}
.ux-lead-nada{ margin:0; font-size:.82rem; color:var(--ux-tx3); line-height:1.6; }
.ux-det-cab{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin-bottom:14px; }
.ux-det-cab strong{ display:block; font-size:1rem; font-weight:650; }
.ux-det-cab span{ display:block; font-size:.75rem; color:var(--ux-tx2); margin-top:2px; }
.ux-det-farol{ padding:11px 13px; border-radius:var(--ux-r-sm); margin-bottom:14px; }
.ux-det-farol strong{ display:block; font-size:.82rem; margin-bottom:2px; }
.ux-det-farol span{ font-size:.72rem; opacity:.85; }
.ux-det-farol ul{ margin:8px 0 0; padding-left:16px; font-size:.74rem; line-height:1.55; }
.ux-det-farol.verde{ background:var(--ux-ok-bg); color:var(--ux-ok); border:1px solid var(--ux-ok-linha); }
.ux-det-farol.amarelo{ background:var(--ux-aviso-bg); color:var(--ux-aviso); border:1px solid var(--ux-aviso-linha); }
.ux-det-farol.vermelho{ background:var(--ux-erro-bg); color:var(--ux-erro); border:1px solid var(--ux-erro-linha); }
.ux-det-farol.cinza{ background:var(--ux-surface-2); color:var(--ux-tx2); border:1px solid var(--ux-line); }
.ux-det-linha{ display:flex; justify-content:space-between; gap:10px; padding:7px 0; border-bottom:1px solid var(--ux-line); }
.ux-det-linha:last-child{ border-bottom:0; }
.ux-det-linha span{ font-size:.72rem; color:var(--ux-tx3); }
.ux-det-linha b{ font-size:.8rem; }
.ux-det-campo{ display:flex; flex-direction:column; gap:4px; margin-top:12px;
  font-size:.7rem; letter-spacing:.04em; text-transform:uppercase; color:var(--ux-tx3); }
.ux-det-campo select, .ux-det-campo input{ font-size:.84rem; text-transform:none; letter-spacing:0; color:var(--ux-tx); }
.ux-det-acoes{ display:flex; gap:8px; margin-top:14px; flex-wrap:wrap; }
.ux-det-h{ margin:20px 0 8px; font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ux-tx3); }
.ux-det-hist{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; }
.ux-det-hist li{ font-size:.74rem; line-height:1.5; color:var(--ux-tx2); padding-left:11px; position:relative; }
.ux-det-hist li::before{ content:''; position:absolute; left:0; top:.5em; width:5px; height:5px;
  border-radius:50%; background:var(--ux-line-forte); }
.ux-det-hist b{ color:var(--ux-tx); }
.ux-det-hist i{ font-style:normal; color:var(--ux-tx3); }
.ux-qual{ margin-top:14px; padding-top:12px; border-top:1px solid var(--ux-line); }
.ux-qual-nota{ margin:0 0 6px; font-size:.7rem; line-height:1.5; color:var(--ux-tx3); }

@media (max-width:1100px){
  .ux-lead-area{ grid-template-columns:1fr; }
  .ux-lead-det{ max-height:none; }
}

/* ---------- captação no portal ---------- */
.ux-interesse{
  padding:clamp(48px,7vw,92px) clamp(16px,4vw,34px);
  background:
    radial-gradient(820px 420px at 84% 4%, rgba(33,180,126,.14), transparent 62%),
    var(--ux-h-escuro,#073B31);
  color:var(--ux-h-claro-tx,#EAF2EE);
}
.ux-interesse-in{
  max-width:1040px; margin:0 auto;
  display:grid; grid-template-columns:1fr 420px; gap:clamp(24px,5vw,56px); align-items:center;
}
.ux-interesse-txt h2{ margin:0 0 10px; font:650 clamp(1.4rem,1.1rem + 1.2vw,2.05rem)/1.2 var(--sans); letter-spacing:-0.03em; }
.ux-interesse-txt p{ margin:0; font-size:.95rem; line-height:1.65; color:var(--ux-h-claro-tx2,#AFC7BC); max-width:40ch; }
.ux-interesse-form{
  display:flex; flex-direction:column; gap:12px;
  padding:24px; border-radius:18px;
  background:rgba(255,255,255,.055); border:1px solid rgba(255,255,255,.13);
}
.ux-interesse-form label{
  display:flex; flex-direction:column; gap:5px;
  font-size:.7rem; letter-spacing:.05em; text-transform:uppercase; color:#9FBBB0;
}
.ux-interesse-form input:not([type=checkbox]), .ux-interesse-form select{
  min-height:46px; padding:0 13px;
  border-radius:10px; border:1px solid rgba(255,255,255,.18);
  background:rgba(4,20,16,.5); color:#F2F7F4;
  font:400 .9rem var(--sans); text-transform:none; letter-spacing:0;
}
.ux-interesse-form input:focus, .ux-interesse-form select:focus{
  outline:none; border-color:var(--ux-h-acao,#21B47E);
  box-shadow:0 0 0 3px rgba(33,180,126,.26);
}
.ux-interesse-form select option{ background:#0A3A30; color:#F2F7F4; }
.ux-consent{
  flex-direction:row !important; align-items:flex-start; gap:10px !important;
  text-transform:none !important; letter-spacing:0 !important;
  font-size:.73rem !important; line-height:1.5; color:#B4CCC2 !important;
}
.ux-consent input{ margin-top:2px; width:18px; height:18px; flex:0 0 18px; accent-color:#21B47E; }
.ux-interesse-aviso:not(:empty){
  padding:9px 11px; border-radius:8px;
  background:rgba(224,121,106,.16); border:1px solid rgba(224,121,106,.34);
  color:#F0C3BB; font-size:.78rem;
}
.ux-interesse-pe{ font-size:.68rem; color:#8FAFA3; line-height:1.5; }
.ux-interesse-ok{ text-align:center; padding:18px 6px; }
.ux-interesse-ok strong{ display:block; font-size:1.05rem; margin-bottom:7px; color:#F2F7F4; }
.ux-interesse-ok p{ margin:0; font-size:.86rem; line-height:1.6; color:#AFC7BC; }
@media (max-width:860px){
  .ux-interesse-in{ grid-template-columns:1fr; }
}

/* V29.4 — tipologias de unidade na Central */
.ux-tipos{
  margin:13px 0; padding:13px 14px;
  border:1px solid var(--ux-line); border-radius:var(--ux-r);
  background:var(--ux-surface-2);
}
.ux-tipos-cab{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-bottom:10px; }
.ux-tipos-cab strong{ font-size:.8rem; font-weight:650; }
.ux-tipos-cab span{ font-size:.7rem; color:var(--ux-tx3); }
.ux-tipo-item{
  display:flex; align-items:center; gap:9px;
  padding:9px 10px; margin-bottom:7px;
  border:1px solid var(--ux-line); border-radius:var(--ux-r-sm);
  background:var(--ux-surface);
}
.ux-tipo-id{ flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.ux-tipo-id strong{ font-size:.83rem; font-weight:650; }
.ux-tipo-id span{ font-size:.71rem; color:var(--ux-tx2); }
.ux-tipo-uso{
  flex:0 0 auto; padding:3px 9px; border-radius:999px;
  background:var(--ux-surface-3); color:var(--ux-tx2);
  font-size:.66rem; font-variant-numeric:tabular-nums;
}
.ux-tipo-btn{
  flex:0 0 30px; width:30px; height:30px;
  border:1px solid var(--ux-line); border-radius:var(--ux-r-sm);
  background:var(--ux-surface-2); color:var(--ux-tx2);
  cursor:pointer; font-size:.82rem; line-height:1;
  transition:border-color 150ms ease, color 150ms ease;
}
.ux-tipo-btn:hover{ border-color:var(--ux-verde-600); color:var(--ux-verde-600); }
.ux-tipo-btn:focus-visible{ outline:none; box-shadow:var(--ux-foco); }
.ux-tipos .ux-emp-form{ margin-top:12px; padding-top:12px; border-top:1px solid var(--ux-line); }

/* V29.5 — filtros, avatar e visão geral do funil */
.ux-lead-barra{ display:flex; gap:9px; flex-wrap:wrap; align-items:center; margin:0 0 14px; }
.ux-lead-barra input[type=search]{ flex:1 1 260px; min-height:40px; }
.ux-lead-barra select{ flex:0 1 190px; min-height:40px; }
.ux-lead-barra .btn{ margin-left:auto; min-height:40px; }
.ux-lead-av{
  width:26px; height:26px; flex:0 0 26px;
  display:grid; place-items:center; border-radius:50%;
  background:var(--ux-surface-3); color:var(--ux-tx2);
  font:700 .62rem var(--sans); letter-spacing:.02em;
}
.ux-lead-av.verde{ background:var(--ux-ok-bg); color:var(--ux-ok); box-shadow:inset 0 0 0 1px var(--ux-ok-linha); }
.ux-lead-av.amarelo{ background:var(--ux-aviso-bg); color:var(--ux-aviso); box-shadow:inset 0 0 0 1px var(--ux-aviso-linha); }
.ux-lead-av.vermelho{ background:var(--ux-erro-bg); color:var(--ux-erro); box-shadow:inset 0 0 0 1px var(--ux-erro-linha); }
.ux-lead-unid{ color:var(--ux-verde-600); font-weight:600; }

.ux-visao-num{ display:flex; flex-direction:column; gap:10px; }
.ux-visao-num > div{
  padding:11px 12px; border:1px solid var(--ux-line);
  border-radius:var(--ux-r-sm); background:var(--ux-surface-2);
}
.ux-visao-num b{
  display:block; font-size:1.32rem; font-weight:650;
  letter-spacing:-0.028em; font-variant-numeric:tabular-nums; color:var(--ux-tx);
}
.ux-visao-num span{ display:block; font-size:.72rem; color:var(--ux-tx2); margin-top:2px; }
.ux-visao-num small{ display:block; font-size:.66rem; color:var(--ux-tx3); margin-top:2px; }
.ux-barras{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:7px; }
.ux-barras li{ display:grid; grid-template-columns:1fr 74px 34px; gap:8px; align-items:center; }
.ux-barras span{ font-size:.73rem; color:var(--ux-tx2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ux-barras i{ height:6px; border-radius:999px; background:var(--ux-surface-3); overflow:hidden; }
.ux-barras u{ display:block; height:100%; border-radius:inherit; background:var(--ux-verde-600); text-decoration:none; }
.ux-barras.perda u{ background:var(--ux-erro); }
.ux-barras b{ font-size:.72rem; text-align:right; font-variant-numeric:tabular-nums; color:var(--ux-tx); }
.ux-novo-lead{ margin-top:16px; padding-top:14px; border-top:1px solid var(--ux-line); }
@media (max-width:700px){
  .ux-lead-barra .btn{ margin-left:0; width:100%; }
  .ux-lead-barra select{ flex:1 1 45%; }
}

/* ===== V29.6 · FUNIL CAIXA ===== */
.ux-caixa{margin-top:14px;padding-top:14px;border-top:1px solid var(--ux-line)}
.ux-cx-linha{display:grid;grid-template-columns:1fr 88px 34px;align-items:center;gap:8px;margin:6px 0}
.ux-cx-linha>span{font-size:.82rem;color:var(--ux-tx2)}
.ux-cx-linha>strong{font-size:.86rem;text-align:right;font-variant-numeric:tabular-nums}
.ux-cx-linha>i{display:block;height:6px;border-radius:99px;background:var(--ux-line);overflow:hidden}
.ux-cx-linha>i>b{display:block;height:100%;border-radius:99px;background:var(--ux-verde-600)}
.ux-cx-linha>i>b[data-et="Em análise"]{background:#1F6F8B}
.ux-cx-linha>i>b[data-et="Aprovado"]{background:#2F7D6B}
.ux-cx-linha>i>b[data-et="Contratado"]{background:#7A5BA6}
.ux-cx-linha>i>b[data-et="Em obra"]{background:#A8712F}
.ux-cx-linha>i>b[data-et="Entregue"]{background:#2E7D53}
.ux-cx-mods{margin:10px 0 4px;font-size:.8rem;color:var(--ux-tx2);line-height:1.5}
@media (max-width:520px){.ux-cx-linha{grid-template-columns:1fr 56px 30px}}

/* ===== V29.7 · SIMULADOR ===== */
.ux-sim{margin-top:12px}
.ux-sim-t{margin:0 0 10px;font-size:1rem;font-weight:600;color:var(--ux-tx)}
.ux-sim-campos{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;align-items:end}
.ux-sim-campos label{display:flex;flex-direction:column;gap:4px;font-size:.74rem;letter-spacing:.04em;
  text-transform:uppercase;color:var(--ux-tx2)}
.ux-sim-campos input{padding:9px 10px;border:1px solid var(--ux-line);border-radius:8px;
  background:var(--ux-surface);color:var(--ux-tx);font-size:.95rem;font-variant-numeric:tabular-nums}
.ux-sim-campos input:focus{outline:2px solid var(--ux-acao);outline-offset:1px}
.ux-sim-preco{display:flex;flex-direction:column;gap:4px;justify-content:center}
.ux-sim-preco span{font-size:.74rem;letter-spacing:.04em;text-transform:uppercase;color:var(--ux-tx2)}
.ux-sim-preco strong{font-size:1.15rem;color:var(--ux-tx)}
.ux-sim-res{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px;margin-top:14px}
.ux-sim-card{border:1px solid var(--ux-line);border-radius:12px;padding:14px;background:var(--ux-surface)}
.ux-sim-card h5{margin:0 0 10px;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ux-verde-600)}
.ux-sim-card dl{margin:0}
.ux-sim-card dl>div{display:flex;justify-content:space-between;gap:10px;padding:4px 0;font-size:.86rem}
.ux-sim-card dt{color:var(--ux-tx2);margin:0}
.ux-sim-card dd{margin:0;font-variant-numeric:tabular-nums;color:var(--ux-tx)}
.ux-sim-card dl>div.forte{border-top:1px solid var(--ux-line);margin-top:6px;padding-top:8px;font-weight:600}
.ux-sim-parcela{margin-top:12px;padding:12px;border-radius:10px;background:var(--ux-canvas);
  display:flex;flex-direction:column;gap:2px}
.ux-sim-parcela>span{font-size:.74rem;letter-spacing:.04em;text-transform:uppercase;color:var(--ux-tx2)}
.ux-sim-parcela>strong{font-size:1.45rem;color:var(--ux-verde-800);font-variant-numeric:tabular-nums;line-height:1.15}
.ux-sim-parcela>small{font-size:.76rem;color:var(--ux-tx2)}
.ux-sim-parcela.nao>strong{color:#9A3A32}
.ux-sim-aviso{margin:10px 0 0;font-size:.8rem;color:#9A3A32;line-height:1.45}
.ux-sim-nota{margin:8px 0 0;font-size:.74rem;color:var(--ux-tx2);line-height:1.45}
.ux-sim-acao{margin-top:12px}
.ux-pl-simular{margin-top:10px;width:100%;padding:9px;border:1px solid var(--ux-line);border-radius:8px;
  background:var(--ux-surface);color:var(--ux-verde-600);font-weight:600;font-size:.85rem;cursor:pointer}
.ux-pl-simular:hover{border-color:var(--ux-acao)}
.ux-pr-faixa,.ux-pr-linha{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;
  align-items:end;margin:8px 0;padding-bottom:8px;border-bottom:1px dashed var(--ux-line)}
.ux-pr-faixa>strong{align-self:center;font-size:.82rem;color:var(--ux-verde-600)}
.ux-secao-sim .ux-sim{max-width:980px;margin:18px auto 0}
@media (max-width:520px){.ux-sim-res{grid-template-columns:1fr}}
.ux-det-sim{margin:12px 0;padding:10px 12px;border-radius:10px;background:var(--ux-canvas);
  display:flex;flex-direction:column;gap:3px}
.ux-det-sim strong{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ux-verde-600)}
.ux-det-sim span{font-size:.84rem;color:var(--ux-tx)}
.ux-det-sim small{font-size:.74rem;color:var(--ux-tx2)}

/* =====================================================================
   URBANNIX V29.9 — HOME PREMIUM + HABITACIONAL 92 + OFFLINE TEST
   ===================================================================== */
.ux-offline-badge{position:fixed;right:14px;bottom:14px;z-index:99999;display:grid;grid-template-columns:auto auto;gap:1px 8px;align-items:center;padding:9px 12px;border-radius:14px;background:rgba(10,48,40,.94);color:#fff;border:1px solid rgba(197,162,83,.32);box-shadow:0 12px 32px rgba(0,0,0,.18);backdrop-filter:blur(12px);font-size:11px;line-height:1.2;max-width:260px}.ux-offline-badge>span{grid-row:1/3;color:#31d29a;font-size:12px}.ux-offline-badge strong{font-size:11px}.ux-offline-badge small{opacity:.72;font-size:9px}

/* Home: profundidade e interação sem peso excessivo */
.ux-home .ux-card,.ux-home .ux-dif,.ux-jornada-grid article,.ux-exp-stack article{transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.ux-home .ux-card:hover,.ux-home .ux-dif:hover,.ux-jornada-grid article:hover,.ux-exp-stack article:hover{transform:translateY(-4px);box-shadow:0 18px 42px rgba(12,55,46,.11)}
.ux-jornada{position:relative;overflow:hidden}.ux-jornada:before{content:"";position:absolute;inset:auto -20% -55% auto;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,rgba(33,180,126,.09),transparent 67%);pointer-events:none}.ux-jornada-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:28px}.ux-jornada-grid article{position:relative;background:#fff;border:1px solid rgba(7,59,49,.10);border-radius:20px;padding:22px;min-height:148px;box-shadow:0 8px 24px rgba(7,59,49,.04)}.ux-jornada-grid article b{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:12px;background:#073b31;color:#fff;font-size:12px;letter-spacing:.08em}.ux-jornada-grid article strong{display:block;margin-top:18px;font-size:16px;color:#17211f}.ux-jornada-grid article span{display:block;margin-top:7px;color:#66736f;font-size:13px;line-height:1.55}.ux-exp-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:50px;align-items:center}.ux-exp-grid h2{max-width:680px}.ux-exp-grid p{max-width:640px;line-height:1.7}.ux-exp-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}.ux-exp-tags span{padding:8px 11px;border-radius:999px;border:1px solid rgba(7,59,49,.13);background:rgba(255,255,255,.68);font-size:11px;font-weight:700;letter-spacing:.04em;color:#0d6654}.ux-exp-stack{display:grid;gap:11px}.ux-exp-stack article{background:#fff;border:1px solid rgba(7,59,49,.1);border-radius:18px;padding:18px 20px}.ux-exp-stack small{display:block;text-transform:uppercase;letter-spacing:.13em;color:#0d6654;font-weight:800;font-size:9px}.ux-exp-stack strong{display:block;margin-top:7px;color:#17211f;line-height:1.4}

/* Painel habitacional especializado */
.ux-hab{margin:28px 0 34px;padding:24px;border-radius:24px;background:linear-gradient(145deg,#0c342c,#0f463a);color:#fff;box-shadow:0 22px 56px rgba(7,59,49,.18);border:1px solid rgba(255,255,255,.07)}.ux-hab-head{display:flex;justify-content:space-between;gap:22px;align-items:flex-start}.ux-hab-head h3{margin:5px 0 5px;font-size:24px}.ux-hab-head p{margin:0;color:rgba(255,255,255,.67);max-width:760px;line-height:1.55}.ux-hab .ux-eyebrow{color:#9ce1c7}.ux-hab-badge{border:1px solid rgba(197,162,83,.48);color:#f0cf7b;background:rgba(197,162,83,.10);border-radius:999px;padding:8px 11px;font-size:9px;letter-spacing:.12em;font-weight:900;white-space:nowrap}.ux-hab-tip{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.ux-hab-pill{display:inline-flex;gap:4px;align-items:center;padding:8px 11px;border-radius:999px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.09);font-size:11px;color:rgba(255,255,255,.76)}.ux-hab-pill b{color:#fff}.ux-hab-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px}.ux-hab-kpis>div{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:13px}.ux-hab-kpis span,.ux-hab-kpis small{display:block;color:rgba(255,255,255,.58);font-size:9px}.ux-hab-kpis strong{display:block;font-size:16px;margin:6px 0 4px}.ux-hab-grid{display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:12px;margin-top:14px}.ux-hab-card{background:#fff;color:#17211f;border-radius:18px;padding:17px;min-width:0}.ux-hab-card>header{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:14px}.ux-hab-card>header span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#71807b}.ux-hab-note{font-size:11px;line-height:1.55;color:#65726e}.ux-hab-et{display:grid;grid-template-columns:minmax(110px,1fr) 1.25fr 28px;align-items:center;gap:8px;margin:8px 0;font-size:10px}.ux-hab-et i{height:7px;background:#edf2ef;border-radius:999px;overflow:hidden}.ux-hab-et i b{display:block;height:100%;background:linear-gradient(90deg,#0d6654,#21b47e);border-radius:999px}.ux-hab-et strong{text-align:right}.ux-hab-form{margin-top:13px;padding:13px;border-radius:14px;background:#f6f8f7;border:1px solid #e4ebe7}.ux-hab-form label,.ux-hab-card [data-hab-meta] label{display:grid;gap:5px;font-size:10px;font-weight:700;color:#55635e}.ux-hab-form input,.ux-hab-form select,.ux-hab-card [data-hab-meta] input{width:100%;min-height:38px;border:1px solid #d8e1dc;border-radius:10px;background:#fff;padding:7px 9px;color:#17211f}.ux-hab-form-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ux-hab-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.ux-hab-msg{min-height:14px;margin-top:7px;color:#a35c18;font-size:10px}.ux-hab-plano-res{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.ux-hab-plano-res span{background:#edf4f0;border-radius:10px;padding:7px 9px;font-size:9px}.ux-hab-table{display:grid;gap:5px;max-height:255px;overflow:auto}.ux-hab-parc{display:grid;grid-template-columns:minmax(100px,1fr) 85px 58px 48px;align-items:center;gap:5px;border-bottom:1px solid #edf0ee;padding:6px 0;font-size:9px}.ux-hab-parc span:first-child{display:grid}.ux-hab-parc small{color:#7a8581}.ux-hab-parc .bad{color:#b54141;font-weight:800}.ux-hab-parc .ok{color:#16835d;font-weight:800}.ux-hab-parc button{border:0;border-radius:8px;background:#0d6654;color:#fff;font-size:9px;padding:6px}.ux-hab-card [data-hab-meta]{display:grid;gap:8px;margin-top:12px}.ux-hab-card [data-hab-meta] button{justify-self:start}

@media(max-width:1100px){.ux-hab-kpis{grid-template-columns:repeat(3,1fr)}.ux-hab-grid{grid-template-columns:1fr 1fr}.ux-hab-grid>.ux-hab-card:first-child{grid-column:1/-1}.ux-jornada-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.ux-offline-badge{right:8px;bottom:8px;max-width:210px}.ux-jornada-grid,.ux-exp-grid{grid-template-columns:1fr}.ux-hab{padding:16px;border-radius:18px}.ux-hab-head{display:grid}.ux-hab-badge{justify-self:start}.ux-hab-kpis{grid-template-columns:repeat(2,1fr)}.ux-hab-grid{grid-template-columns:1fr}.ux-hab-grid>.ux-hab-card:first-child{grid-column:auto}.ux-hab-form-row{grid-template-columns:1fr}.ux-hab-parc{grid-template-columns:minmax(90px,1fr) 72px 52px 45px}.ux-jornada-grid article{min-height:0}}

/* UrbanNIX V29.9 · parâmetros especializados do empreendimento habitacional */
.ux-hab-param{display:grid;gap:10px;margin-top:12px}.ux-hab-param label{display:grid;gap:6px;font-size:.72rem;font-weight:700;color:var(--ink-soft,#66736f)}.ux-hab-param input{min-height:42px;border:1px solid rgba(15,73,60,.16);border-radius:11px;background:var(--card,#fff);padding:0 12px;color:var(--ink,#1d2523);outline:none;transition:border-color .18s ease,box-shadow .18s ease}.ux-hab-param input:focus{border-color:#21b47e;box-shadow:0 0 0 3px rgba(33,180,126,.12)}.ux-hab-hint{display:block;color:var(--ink-soft,#66736f);font-size:.68rem;line-height:1.45}

/* ===== v32.1 — valor do lote no mapa das unidades (somente administrativo) ===== */
#view-mapa .dxf-lot-preco,
#view-mapa .ux-pl-preco{
  font-family:var(--mono,monospace);
  font-size:1.25px;
  font-weight:600;
  fill:#F1DFA2;
  text-anchor:middle;
  dominant-baseline:middle;
  pointer-events:none;
  user-select:none;
  paint-order:stroke;
  stroke:#06110B;
  stroke-width:.45px;
  opacity:.96;
}
#view-mapa .dxf-map-viewport.labels-off .dxf-lot-preco{display:none}
#grPublico .dxf-lot-preco,
#grPublico .ux-pl-preco{display:none!important}



/* assets/css/v30-experience.css */
/* UrbanNIX V30 — acabamento visual, consistência e experiência do cliente */
:root{
  --ux30-bg:#0B100E;--ux30-panel:#111713;--ux30-panel2:#151C18;--ux30-line:rgba(255,255,255,.075);
  --ux30-text:#F3F7F4;--ux30-muted:#93A098;--ux30-green:#38C98A;--ux30-green2:#78E0B5;
  --ux30-gold:#C9A85E;--ux30-danger:#DE776C;--ux30-info:#70AEE8;
  --ux30-radius:16px;--ux30-shadow:0 18px 48px rgba(0,0,0,.22);
}
/* controles: 1 linguagem visual em toda a aplicação */
button,.btn,.ux-btn-primario,.ux-btn-fantasma,.gr-btn{transition:transform .14s ease,filter .16s ease,background-color .16s ease,border-color .16s ease,box-shadow .16s ease}
button:active,.btn:active,.ux-btn-primario:active,.gr-btn:active{transform:translateY(1px)}
button:focus-visible,.btn:focus-visible,.gr-btn:focus-visible,.ux-btn-primario:focus-visible,.ux-btn-fantasma:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(56,201,138,.28)!important}
button.btn,.gr-btn{min-height:40px;border-radius:11px;font-weight:700}
button.btn:not(.secondary),.gr-btn:not(.sec):not(.fantasma){background:linear-gradient(135deg,var(--ux30-green),var(--ux30-green2));border-color:transparent;color:#06261A}
button.btn.secondary,.gr-btn.sec{background:transparent;border:1px solid var(--ux30-line);color:inherit}
button.btn.secondary:hover,.gr-btn.sec:hover{background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.14)}
/* layout admin */
.card,section.block,.table-shell,.quick-actions-panel,.ux-hab-card{border-radius:var(--ux30-radius)!important}
.card,section.block,.table-shell,.ux-hab-card{box-shadow:var(--ux30-shadow)}
.page-heading h2{font-weight:740}
.page-heading p,.card .sub{line-height:1.5}
/* cabeçalho/sincronização */
.ux30-sync-pill{display:flex;align-items:center;gap:8px;height:36px;padding:0 11px;border:1px solid var(--ux30-line);border-radius:999px;background:rgba(255,255,255,.025);font:650 .65rem var(--sans);color:var(--ink-soft);white-space:nowrap}
.ux30-sync-pill i{width:7px;height:7px;border-radius:50%;background:var(--ux30-green);box-shadow:0 0 0 4px rgba(56,201,138,.10)}
.ux30-sync-pill.pending i{background:var(--ux30-gold);box-shadow:0 0 0 4px rgba(201,168,94,.10)}
.ux30-sync-pill.error i{background:var(--ux30-danger);box-shadow:0 0 0 4px rgba(222,119,108,.10)}
.ux30-sync-pill small{font-weight:500;color:var(--ink-soft)}
.ux-offline-badge{border-radius:999px!important;box-shadow:0 10px 30px rgba(0,0,0,.18)!important}
/* home: acabamento mais editorial */
.ux-home-topo{box-shadow:0 8px 30px rgba(3,28,22,.12)}
.ux-hero{position:relative;overflow:hidden}
.ux-hero::after{content:"";position:absolute;right:-120px;bottom:-190px;width:520px;height:520px;border-radius:50%;border:1px solid rgba(197,162,83,.14);box-shadow:0 0 0 55px rgba(197,162,83,.025),0 0 0 110px rgba(33,180,126,.025);pointer-events:none}
.ux-hero-in{position:relative;z-index:1}
.ux-card{box-shadow:0 14px 36px rgba(11,48,39,.07)}
.ux-card:hover{transform:translateY(-5px);box-shadow:0 24px 58px rgba(7,59,49,.14)}
.ux-card-pe .ux-btn-primario{letter-spacing:-.01em}
/* experiência cliente V30 */
.gr-client-v30{margin:0 0 22px;padding:22px;border-radius:22px;background:linear-gradient(135deg,#0B3125,#114A37 62%,#183F31);border:1px solid rgba(197,162,83,.22);color:#EEF7F2;box-shadow:0 22px 52px rgba(5,35,27,.16);position:relative;overflow:hidden}
.gr-client-v30::after{content:"";position:absolute;width:260px;height:260px;border-radius:50%;right:-100px;top:-120px;background:radial-gradient(circle,rgba(201,168,94,.20),transparent 68%)}
.gr-client-v30-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;position:relative;z-index:1}
.gr-client-v30-kicker{font-size:.62rem;text-transform:uppercase;letter-spacing:.15em;color:#E2C985;font-weight:850}
.gr-client-v30 h2{margin:7px 0 5px;font-size:clamp(1.35rem,1.1rem + .7vw,1.85rem);letter-spacing:-.035em}
.gr-client-v30 p{margin:0;color:#B5CEC1;font-size:.78rem;line-height:1.55}
.gr-client-v30-tag{padding:7px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.055);font-size:.62rem;font-weight:800;color:#E9F3EE;white-space:nowrap}
.gr-client-v30-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:18px;position:relative;z-index:1}
.gr-client-v30-card{padding:12px;border-radius:13px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.08)}
.gr-client-v30-card span{display:block;color:#A8C0B4;font-size:.58rem;text-transform:uppercase;letter-spacing:.08em;margin-bottom:5px}
.gr-client-v30-card strong{display:block;color:#fff;font-size:.82rem;line-height:1.35}
.gr-client-v30-card small{display:block;color:#89A89A;font-size:.62rem;margin-top:3px}
.gr-client-v30-journey{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin-top:14px;position:relative;z-index:1}
.gr-client-v30-step{position:relative;padding:10px 9px 9px 25px;border-radius:10px;background:rgba(0,0,0,.10);color:#91AA9E;font-size:.62rem;line-height:1.35}
.gr-client-v30-step::before{content:"";position:absolute;left:9px;top:12px;width:8px;height:8px;border-radius:50%;background:#557268}
.gr-client-v30-step.done{color:#E4F3EB;background:rgba(56,201,138,.08)}
.gr-client-v30-step.done::before{background:var(--ux30-green);box-shadow:0 0 0 4px rgba(56,201,138,.10)}
.gr-client-v30-step.current{color:#FFF3D0;background:rgba(201,168,94,.10)}
.gr-client-v30-step.current::before{background:var(--ux30-gold);box-shadow:0 0 0 4px rgba(201,168,94,.10)}
.gr-client-v30-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;position:relative;z-index:1}
.gr-client-v30-actions button{border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.055);color:#EAF4EF;border-radius:9px;padding:8px 11px;font:700 .66rem var(--sans);cursor:pointer}
.gr-client-v30-actions button:hover{background:rgba(255,255,255,.10)}
/* portal: navegação mais confortável e mobile */
body.gr-portal-ativo .gr-top{box-shadow:0 10px 28px rgba(9,48,38,.06)}
body.gr-portal-ativo .gr-menu button{border-radius:10px}
body.gr-portal-ativo .gr-card{border-radius:16px}
body.gr-portal-ativo .gr-linha{min-height:42px}
@media(max-width:900px){.gr-client-v30-grid{grid-template-columns:1fr 1fr}.gr-client-v30-journey{grid-template-columns:1fr 1fr 1fr}.ux30-sync-pill small{display:none}}
@media(max-width:600px){
  .gr-client-v30{padding:18px 15px;border-radius:18px}.gr-client-v30-head{display:block}.gr-client-v30-tag{display:inline-flex;margin-top:11px}
  .gr-client-v30-grid{grid-template-columns:1fr 1fr;gap:7px}.gr-client-v30-journey{grid-template-columns:1fr 1fr}.gr-client-v30-actions{display:grid;grid-template-columns:1fr 1fr}.gr-client-v30-actions button{min-height:40px}
  body.gr-portal-ativo .gr-menu{scrollbar-width:none}body.gr-portal-ativo .gr-menu::-webkit-scrollbar{display:none}
}
@media(prefers-reduced-motion:reduce){button,.btn,.gr-btn,.ux-card{transition:none!important}}

/* assets/css/portal-client-premium.css */
/* UrbanNIX — Portal do Cliente Premium · V30.1 */
:root{--ux-gold:#caa85d;--ux-gold2:#e0c98e;--ux-ink:#10231e;--ux-green:#0b5d4b;--ux-soft:#f4f6f4;--ux-red:#b4473f}
.gr-client-brand{display:flex;align-items:center;gap:10px;min-width:0}.gr-client-brand img{width:116px;height:auto;display:block;animation:uxLogoIn .7s cubic-bezier(.2,.8,.2,1) both,uxLogoBreath 5s ease-in-out 1s infinite;filter:drop-shadow(0 6px 14px rgba(5,44,36,.08));transition:transform .25s ease,filter .25s ease}.gr-client-brand img:hover{transform:scale(1.025);filter:drop-shadow(0 8px 18px rgba(202,168,93,.18))}.gr-client-brand-copy{display:flex;flex-direction:column;min-width:0}.gr-client-brand-copy b{font-size:.77rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gr-client-brand-copy small{font-size:.58rem;letter-spacing:.12em;text-transform:uppercase;color:var(--tx3)}
@keyframes uxLogoIn{from{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}@keyframes uxLogoBreath{0%,100%{filter:drop-shadow(0 6px 14px rgba(5,44,36,.08))}50%{filter:drop-shadow(0 7px 19px rgba(202,168,93,.2))}}
.ux-client-hero{position:relative;min-height:390px;border-radius:30px;overflow:hidden;margin:0 0 22px;background:#0b1714;isolation:isolate;box-shadow:0 26px 70px rgba(8,33,28,.16)}.ux-client-hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 56%;z-index:-3;transform:scale(1.012)}.ux-client-hero:before{content:"";position:absolute;inset:0;z-index:-2;background:linear-gradient(90deg,rgba(4,20,17,.88) 0%,rgba(4,20,17,.61) 48%,rgba(4,20,17,.15) 79%),linear-gradient(0deg,rgba(3,16,13,.52),transparent 55%)}.ux-client-hero:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(115deg,rgba(202,168,93,.10),transparent 34%);pointer-events:none}.ux-client-hero-content{min-height:390px;padding:38px 40px;display:flex;flex-direction:column;justify-content:flex-end;max-width:720px;color:#fff}.ux-client-kicker{font-size:.66rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:#e5cf96;margin-bottom:10px}.ux-client-hero h2{font-family:Georgia,'Times New Roman',serif;font-weight:500;font-size:clamp(2.1rem,5vw,4rem);letter-spacing:-.04em;line-height:.95;margin:0 0 13px;color:#fff}.ux-client-unit{display:flex;gap:8px;flex-wrap:wrap;align-items:center;color:#eef4f1;font-size:.84rem}.ux-client-unit span{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.09);backdrop-filter:blur(8px);border-radius:999px}.ux-client-progress{display:grid;grid-template-columns:auto minmax(150px,260px);align-items:center;gap:12px;margin-top:19px}.ux-client-progress strong{font-size:1.55rem}.ux-client-progress-bar{height:7px;border-radius:999px;background:rgba(255,255,255,.18);overflow:hidden}.ux-client-progress-bar i{display:block;height:100%;width:var(--pct);border-radius:inherit;background:linear-gradient(90deg,#d7ba73,#f0dca6);animation:uxBarGrow 1s cubic-bezier(.22,.8,.2,1) both;transform-origin:left}.ux-client-progress small{grid-column:1/-1;color:#d1ddd8;margin-top:-6px}.ux-client-hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.ux-client-hero-actions .gr-btn{backdrop-filter:blur(8px)}
@keyframes uxBarGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.ux-welcome{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:26px 0 14px}.ux-welcome h1{margin:0;font-size:clamp(1.65rem,3vw,2.25rem);letter-spacing:-.035em}.ux-welcome p{margin:6px 0 0;color:var(--tx2);font-size:.88rem}.ux-welcome-status{font-size:.72rem;color:var(--tx2);padding:8px 11px;border-radius:999px;background:#eef4f1;border:1px solid #dce8e2;white-space:nowrap}
.ux-client-shortcuts{display:grid;grid-template-columns:repeat(5,1fr);gap:11px;margin:0 0 26px}.ux-shortcut{appearance:none;border:1px solid #e4e9e6;background:#fff;border-radius:18px;padding:16px;text-align:left;cursor:pointer;box-shadow:0 8px 24px rgba(17,45,37,.045);transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.ux-shortcut:hover{transform:translateY(-3px);box-shadow:0 15px 34px rgba(17,45,37,.09);border-color:#d5c18a}.ux-shortcut i{width:35px;height:35px;display:grid;place-items:center;border-radius:11px;background:#edf5f1;color:#0c604d;font-style:normal;font-size:1.02rem;margin-bottom:12px}.ux-shortcut b{display:block;font-size:.82rem}.ux-shortcut small{display:block;color:var(--tx3);font-size:.65rem;margin-top:4px;line-height:1.35}
.ux-journey-card{border:1px solid #e5ebe7;background:#fff;border-radius:22px;padding:19px 20px;margin:0 0 20px;box-shadow:0 10px 30px rgba(16,47,39,.045)}.ux-journey-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:18px}.ux-journey-head strong{font-size:.95rem}.ux-journey-head small{color:var(--tx3)}.ux-journey{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.ux-journey-step{position:relative;min-width:0;padding-top:19px}.ux-journey-step:before{content:"";position:absolute;left:0;right:-8px;top:6px;height:2px;background:#e1e6e3}.ux-journey-step:last-child:before{right:50%}.ux-journey-step:after{content:"";position:absolute;top:1px;left:0;width:12px;height:12px;border-radius:50%;background:#cfd8d3;border:3px solid #fff;box-shadow:0 0 0 1px #cfd8d3}.ux-journey-step.done:before,.ux-journey-step.done:after{background:#278765}.ux-journey-step.current:after{background:#caa85d;box-shadow:0 0 0 1px #caa85d,0 0 0 5px rgba(202,168,93,.13);animation:uxPulse 2.8s ease-in-out infinite}.ux-journey-step.alert:after{background:#b4473f}.ux-journey-step b{font-size:.72rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ux-journey-step small{font-size:.6rem;color:var(--tx3)}@keyframes uxPulse{50%{box-shadow:0 0 0 1px #caa85d,0 0 0 9px rgba(202,168,93,0)}}
.ux-client-gallery{margin:28px 0}.ux-client-gallery-head{display:flex;justify-content:space-between;align-items:end;gap:12px;margin-bottom:12px}.ux-client-gallery-head h3{margin:0;font-size:1.15rem}.ux-client-gallery-head p{margin:4px 0 0;font-size:.76rem;color:var(--tx3)}.ux-gallery-grid{display:grid;grid-template-columns:1.45fr .8fr .8fr;grid-template-rows:180px 180px;gap:9px}.ux-gallery-item{position:relative;border:0;padding:0;border-radius:16px;overflow:hidden;background:#e9eeeb;cursor:zoom-in}.ux-gallery-item:first-child{grid-row:1/3}.ux-gallery-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease,filter .35s ease}.ux-gallery-item:hover img{transform:scale(1.035);filter:saturate(1.04)}.ux-gallery-item span{position:absolute;left:10px;bottom:9px;color:#fff;background:rgba(6,24,20,.66);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.12);padding:5px 8px;border-radius:999px;font-size:.61rem}.ux-gallery-more:after{content:"Ver galeria";position:absolute;inset:0;display:grid;place-items:center;background:rgba(5,22,18,.56);color:#fff;font-size:.76rem;font-weight:700;letter-spacing:.04em}
.ux-video-card{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(230px,.8fr);gap:18px;align-items:center;border:1px solid #e5ebe7;border-radius:22px;background:#fff;padding:12px;margin:20px 0 30px}.ux-video-thumb{position:relative;min-height:230px;border-radius:15px;overflow:hidden;background:#091b17}.ux-video-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.ux-video-thumb button{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:58px;height:58px;border:0;border-radius:50%;background:rgba(255,255,255,.92);color:#0b493b;cursor:pointer;font-size:1.15rem;box-shadow:0 12px 30px rgba(0,0,0,.24);transition:transform .22s ease}.ux-video-thumb button:hover{transform:translate(-50%,-50%) scale(1.06)}.ux-video-copy{padding:18px}.ux-video-copy small{color:#a17e34;text-transform:uppercase;font-size:.62rem;font-weight:800;letter-spacing:.15em}.ux-video-copy h3{margin:8px 0 8px;font-size:1.25rem}.ux-video-copy p{margin:0;color:var(--tx2);font-size:.78rem;line-height:1.6}
.ux-lightbox{position:fixed;inset:0;z-index:99999;background:rgba(4,12,10,.93);display:grid;place-items:center;padding:30px;animation:uxFade .2s ease}.ux-lightbox[hidden]{display:none}.ux-lightbox-inner{position:relative;max-width:min(1160px,94vw);max-height:90vh}.ux-lightbox img{display:block;max-width:100%;max-height:82vh;object-fit:contain;border-radius:15px}.ux-lightbox video{display:block;max-width:min(1100px,92vw);max-height:82vh;border-radius:15px;background:#000}.ux-lightbox-close{position:absolute;right:-14px;top:-14px;width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:#fff;color:#111;font-size:1.2rem;cursor:pointer}.ux-lightbox-caption{color:#fff;text-align:center;margin-top:10px;font-size:.75rem;opacity:.8}.ux-loader{position:fixed;inset:0;z-index:100000;background:#071c17;display:grid;place-items:center;transition:opacity .35s ease,visibility .35s ease}.ux-loader.off{opacity:0;visibility:hidden}.ux-loader img{width:min(230px,60vw);filter:brightness(0) invert(1) drop-shadow(0 8px 25px rgba(202,168,93,.18));animation:uxLoader 1.7s ease-in-out infinite}.ux-loader small{display:block;text-align:center;color:#b9c9c2;letter-spacing:.14em;text-transform:uppercase;font-size:.58rem;margin-top:18px}@keyframes uxLoader{0%,100%{transform:translateY(0) scale(.99);opacity:.85}50%{transform:translateY(-4px) scale(1.01);opacity:1}}@keyframes uxFade{from{opacity:0}to{opacity:1}}
.ux-reveal{animation:uxReveal .48s cubic-bezier(.22,.8,.2,1) both}@keyframes uxReveal{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media(max-width:980px){.ux-client-shortcuts{grid-template-columns:repeat(3,1fr)}.ux-gallery-grid{grid-template-columns:1.2fr 1fr;grid-template-rows:190px 150px}.ux-gallery-item:first-child{grid-row:1/3}.ux-gallery-item:nth-child(n+4){display:none}.ux-video-card{grid-template-columns:1fr}.ux-video-thumb{min-height:260px}}
@media(max-width:650px){.gr-client-brand-copy{display:none}.gr-client-brand img{width:98px}.ux-client-hero{min-height:440px;border-radius:20px;margin-left:-4px;margin-right:-4px}.ux-client-hero>img{object-position:54% center}.ux-client-hero:before{background:linear-gradient(0deg,rgba(3,18,15,.91) 0%,rgba(3,18,15,.66) 53%,rgba(3,18,15,.12) 100%)}.ux-client-hero-content{min-height:440px;padding:24px 20px}.ux-client-hero h2{font-size:2.35rem}.ux-client-progress{grid-template-columns:auto 1fr}.ux-welcome{display:block}.ux-welcome-status{display:inline-block;margin-top:12px}.ux-client-shortcuts{grid-template-columns:repeat(2,1fr);gap:9px}.ux-shortcut{padding:14px}.ux-shortcut:last-child{grid-column:1/-1}.ux-journey{display:flex;overflow:auto;padding-bottom:6px;scroll-snap-type:x proximity}.ux-journey-step{min-width:126px;scroll-snap-align:start}.ux-gallery-grid{display:flex;overflow:auto;scroll-snap-type:x mandatory;gap:9px}.ux-gallery-item,.ux-gallery-item:first-child{min-width:82%;height:255px;grid-row:auto;display:block!important;scroll-snap-align:center}.ux-gallery-more:after{display:none}.ux-video-thumb{min-height:210px}.ux-video-copy{padding:10px}.ux-lightbox{padding:18px}.ux-lightbox-close{right:2px;top:-46px}}
@media(prefers-reduced-motion:reduce){.gr-client-brand img,.ux-client-progress-bar i,.ux-journey-step.current:after,.ux-loader img,.ux-reveal{animation:none!important}.ux-shortcut,.ux-gallery-item img,.ux-video-thumb button{transition:none!important}.ux-shortcut:hover{transform:none}}

/* V30.2 — preservação dos recursos clássicos do portal */
.ux-lightbox-prev,.ux-lightbox-next{position:absolute;top:50%;translate:0 -50%;width:48px;height:48px;z-index:2;display:grid;place-items:center;border:1px solid #8da99a;border-radius:50%;background:#163c2f;color:#fff;font:28px/1 system-ui;cursor:pointer;touch-action:manipulation}
.ux-lightbox-prev{left:12px}.ux-lightbox-next{right:12px}
.ux-lightbox [hidden]{display:none!important}
.ux-lightbox .ux-lightbox-close{width:48px;height:48px;z-index:3}
.ux-lightbox :is(button,video):focus-visible{outline:3px solid #e7cd8f;outline-offset:4px}
.ux-lightbox-caption{min-height:24px;font-size:14px;line-height:1.5;opacity:1;padding-inline:12px}
@media(max-width:650px){.ux-lightbox-prev{left:4px}.ux-lightbox-next{right:4px}.ux-lightbox .ux-lightbox-close{top:-54px;right:0}}
.ux-legacy-detail{margin:30px 0 12px;padding:22px;border:1px solid #e5ebe7;border-radius:22px;background:#fff;box-shadow:0 10px 30px rgba(16,47,39,.04)}
.ux-extra-links{display:flex;gap:9px;flex-wrap:wrap;margin-top:20px}
.ux-extra-links .gr-btn{min-height:38px}
@media(max-width:650px){.ux-legacy-detail{padding:16px}.ux-extra-links{display:grid;grid-template-columns:1fr 1fr}.ux-extra-links .gr-btn{width:100%}}

/* V30.3 — retorno persistente ao portal UrbanNIX */
.ux-client-backbar{display:flex;align-items:center;justify-content:flex-start;margin:0 0 12px;position:relative;z-index:20}.ux-client-back{appearance:none;border:1px solid #dce6e1;background:rgba(255,255,255,.96);color:#143c31;border-radius:999px;padding:9px 13px;font:inherit;font-size:.72rem;font-weight:750;cursor:pointer;box-shadow:0 7px 22px rgba(13,45,37,.06);transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.ux-client-back:hover{transform:translateY(-1px);border-color:#cfb36c;box-shadow:0 10px 26px rgba(13,45,37,.1)}.gr-client-brand img[role="button"]{cursor:pointer}
@media(max-width:650px){.ux-client-backbar{margin:0 0 10px}.ux-client-back{padding:9px 12px;font-size:.69rem}}

/* assets/css/v305-complete.css */
/* UrbanNIX V30.5 — acabamento completo do ALTO BALANÇO I */
:root{--ux305-bg:#f6f7f4;--ux305-card:#fff;--ux305-ink:#14231f;--ux305-muted:#68756f;--ux305-line:rgba(14,59,49,.13);--ux305-gold:#caa45d;--ux305-green:#073b31;--ux305-shadow:0 20px 55px rgba(12,34,28,.12)}
html[data-tema="escuro"]{--ux305-bg:#0c1311;--ux305-card:#121c19;--ux305-ink:#edf4f1;--ux305-muted:#9eb0a9;--ux305-line:rgba(234,244,240,.12);--ux305-shadow:0 24px 70px rgba(0,0,0,.38)}
html[data-tema="escuro"] #grPublico,html[data-tema="escuro"] #grCliente{background:var(--ux305-bg);color:var(--ux305-ink)}
html[data-tema="escuro"] #grPublico .gr-card,html[data-tema="escuro"] #grCliente .gr-card,html[data-tema="escuro"] .ux-v305-commercial{background:var(--ux305-card);border-color:var(--ux305-line);color:var(--ux305-ink)}
.ux-v305-back,.ux-v305-theme{border:1px solid rgba(255,255,255,.2)!important;background:rgba(255,255,255,.09)!important;color:#fff!important;border-radius:999px!important;padding:9px 13px!important;font-weight:700!important;letter-spacing:.01em;transition:transform .22s ease,background .22s ease,border-color .22s ease!important;white-space:nowrap}
.ux-v305-back:hover,.ux-v305-theme:hover{transform:translateY(-1px);background:rgba(255,255,255,.16)!important;border-color:rgba(255,255,255,.34)!important}
.ux-v305-theme.public{border-color:rgba(255,255,255,.24)!important}
.ux-v305-logo-btn{display:flex;align-items:center;gap:12px;border:0;background:transparent;color:inherit;padding:0;cursor:pointer;text-align:left}
.ux-v305-logo-btn img{width:112px;height:auto;display:block}
.ux-v305-logo-btn span{display:grid;gap:2px;padding-left:12px;border-left:1px solid rgba(255,255,255,.22)}
.ux-v305-logo-btn b{font-size:.78rem;letter-spacing:.075em}.ux-v305-logo-btn small{font-size:.61rem;opacity:.68;letter-spacing:.05em}
.gr-hero-premium[data-v305="1"]{position:relative;min-height:min(640px,78vh);display:flex;align-items:flex-end;overflow:hidden;background:#071d17!important;padding:0!important}
.ux-v305-hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.015);animation:ux305Hero 1.1s cubic-bezier(.2,.7,.2,1) both}
.ux-v305-hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,22,18,.9) 0%,rgba(5,22,18,.64) 47%,rgba(5,22,18,.18) 78%),linear-gradient(0deg,rgba(5,22,18,.55),transparent 55%)}
.ux-v305-hero-content{position:relative;z-index:2;width:100%;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(250px,.65fr);align-items:end;gap:36px;padding-top:96px!important;padding-bottom:66px!important;color:#fff}
.ux-v305-kicker{display:inline-flex;padding:7px 11px;border-radius:999px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);font-size:.68rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#ead5aa}
.ux-v305-hero-content h1{font-family:Fraunces,Georgia,serif;font-size:clamp(2.7rem,6vw,5.6rem);line-height:.94;max-width:760px;margin:18px 0 16px;letter-spacing:-.04em;color:#fff}
.ux-v305-hero-content p{max-width:670px;font-size:clamp(.98rem,1.5vw,1.16rem);line-height:1.68;color:rgba(255,255,255,.82)}
.ux-v305-hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:25px}.ux-v305-hero-actions .gr-btn{min-height:44px}
.ux-v305-hero-card{justify-self:end;width:min(100%,330px);padding:24px;border-radius:22px;background:rgba(12,28,24,.54);border:1px solid rgba(255,255,255,.18);backdrop-filter:blur(14px);box-shadow:0 18px 46px rgba(0,0,0,.18)}
.ux-v305-hero-card span,.ux-v305-hero-card small{display:block;color:rgba(255,255,255,.7)}.ux-v305-hero-card b{display:block;font-family:Fraunces,Georgia,serif;font-size:3rem;margin:8px 0 4px;color:#f3e3bd}
.ux-v305-project{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:0;overflow:hidden;border:1px solid var(--ux305-line);border-radius:28px;background:var(--ux305-card);box-shadow:var(--ux305-shadow)}
.ux-v305-project>img{width:100%;height:100%;min-height:430px;object-fit:cover}.ux-v305-project>div{padding:clamp(28px,5vw,58px);align-self:center}.ux-v305-project>div>span,.ux-v305-section-head>span,.ux-v305-location>span{font-size:.69rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#9a7b43}.ux-v305-project h2,.ux-v305-section-head h2,.ux-v305-location h2{font-family:Fraunces,Georgia,serif;font-size:clamp(2rem,4vw,3.4rem);line-height:1;margin:10px 0 16px;color:var(--ux305-ink)}.ux-v305-project p,.ux-v305-section-head p,.ux-v305-location p{color:var(--ux305-muted);line-height:1.65}.ux-v305-mini{display:grid;grid-template-columns:auto 1fr auto 1fr;align-items:baseline;gap:6px 10px;margin:24px 0}.ux-v305-mini b{font-size:1.7rem;color:var(--ux305-green)}html[data-tema="escuro"] .ux-v305-mini b{color:#cbdcd6}.ux-v305-mini span{font-size:.78rem;color:var(--ux305-muted)}
.ux-v305-btn{border:0;border-radius:12px;background:var(--ux305-green);color:#fff;padding:12px 16px;font-weight:800;cursor:pointer;transition:transform .2s ease,filter .2s ease}.ux-v305-btn:hover{transform:translateY(-1px);filter:brightness(1.08)}
.ux-v305-gallery-section{background:var(--ux305-bg)!important}.ux-v305-section-head{max-width:760px;margin-bottom:26px}.ux-v305-gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:220px;gap:12px}.ux-v305-media{position:relative;overflow:hidden;border:0;border-radius:18px;padding:0;cursor:zoom-in;background:#111;box-shadow:0 10px 30px rgba(12,32,26,.1)}.ux-v305-media.wide{grid-column:span 2;grid-row:span 2}.ux-v305-media img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease,filter .35s ease}.ux-v305-media:hover img{transform:scale(1.035);filter:brightness(.88)}.ux-v305-media span{position:absolute;left:12px;bottom:12px;background:rgba(4,17,14,.68);border:1px solid rgba(255,255,255,.12);backdrop-filter:blur(8px);border-radius:999px;color:#fff;padding:7px 10px;font-size:.7rem;font-weight:700}
.ux-v305-video{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(0,1.1fr);gap:30px;align-items:center;margin-top:26px;padding:20px;border:1px solid var(--ux305-line);border-radius:24px;background:var(--ux305-card)}.ux-v305-video-thumb{position:relative;border-radius:18px;overflow:hidden;min-height:260px}.ux-v305-video-thumb>img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover}.ux-v305-video-thumb>button{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:66px;height:66px;border-radius:50%;border:1px solid rgba(255,255,255,.55);background:rgba(5,28,22,.72);color:#fff;font-size:1.5rem;cursor:pointer;backdrop-filter:blur(9px);transition:transform .2s ease}.ux-v305-video-thumb>button:hover{transform:translate(-50%,-50%) scale(1.06)}.ux-v305-video>div+div{padding:10px 24px}.ux-v305-video span{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:#9a7b43;font-weight:800}.ux-v305-video h3{font-family:Fraunces,Georgia,serif;font-size:2rem;margin:8px 0}.ux-v305-video p{color:var(--ux305-muted);line-height:1.6}
.ux-v305-location{border:1px solid var(--ux305-line);border-radius:22px;background:var(--ux305-card);padding:clamp(28px,5vw,54px)}
.ux-v305-client-banner{position:relative;display:grid;grid-template-columns:170px 1fr;gap:22px;align-items:center;margin:0 0 20px;padding:12px;border:1px solid var(--ux305-line);border-radius:22px;background:var(--ux305-card);overflow:hidden}.ux-v305-client-banner img{width:170px;height:112px;object-fit:cover;border-radius:15px}.ux-v305-client-banner span{font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:#9a7b43}.ux-v305-client-banner h2{font-family:Fraunces,Georgia,serif;margin:5px 0 3px;font-size:1.75rem}.ux-v305-client-banner p{margin:0;color:var(--ux305-muted);font-size:.83rem}
.ux-v305-modal{position:fixed;inset:0;z-index:99999;background:rgba(2,8,7,.88);display:grid;place-items:center;padding:24px;backdrop-filter:blur(8px)}.ux-v305-modal[hidden]{display:none}.ux-v305-modal-in{position:relative;width:min(1120px,96vw);max-height:92vh}.ux-v305-modal-body{display:grid;place-items:center;max-height:84vh}.ux-v305-modal-body img,.ux-v305-modal-body video{max-width:100%;max-height:82vh;border-radius:16px;box-shadow:0 28px 80px rgba(0,0,0,.5)}.ux-v305-close{position:absolute;right:-12px;top:-14px;z-index:2;width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:#fff;color:#17231f;font-size:1.5rem;cursor:pointer}.ux-v305-modal-cap{color:#fff;text-align:center;padding-top:12px;font-size:.85rem}
.ux-v305-commercial{margin:18px 0 28px;padding:24px;border:1px solid var(--ux305-line);border-radius:24px;background:#fff;box-shadow:0 14px 44px rgba(12,40,31,.07)}.ux-v305-commercial-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.ux-v305-commercial-head h3{font-size:1.45rem;margin:4px 0 5px}.ux-v305-commercial-head p{margin:0;color:var(--ux305-muted);font-size:.84rem}.ux-v305-expand{border:1px solid var(--ux305-line);background:transparent;color:inherit;border-radius:12px;padding:10px 13px;font-weight:800;cursor:pointer}.ux-v305-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:18px}.ux-v305-kpis>div{padding:16px;border-radius:16px;background:rgba(7,59,49,.045);border:1px solid var(--ux305-line);display:grid;gap:4px}.ux-v305-kpis span{font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;color:var(--ux305-muted)}.ux-v305-kpis b{font-size:1.45rem}.ux-v305-kpis small{color:var(--ux305-muted)}.ux-v305-kpis .hero{background:linear-gradient(135deg,#073b31,#0c5747);color:#fff;border-color:transparent}.ux-v305-kpis .hero span,.ux-v305-kpis .hero small{color:rgba(255,255,255,.7)}
.ux-v305-units{margin-top:18px;border:1px solid var(--ux305-line);border-radius:16px;overflow:hidden;max-height:520px;overflow-y:auto}.ux-v305-unit-head,.ux-v305-unit-row{display:grid;grid-template-columns:90px minmax(200px,1.5fr) minmax(105px,.7fr) minmax(115px,.7fr) minmax(105px,.6fr);gap:12px;align-items:center;padding:10px 14px}.ux-v305-unit-head{position:sticky;top:0;z-index:2;background:var(--ux305-green);color:#fff;font-size:.68rem;text-transform:uppercase;letter-spacing:.07em}.ux-v305-unit-row{border-top:1px solid var(--ux305-line);font-size:.78rem;background:var(--ux305-card)}.ux-v305-unit-row strong{font-size:.8rem}.ux-v305-unit-row em{font-style:normal;font-size:.68rem;padding:5px 8px;background:rgba(32,138,95,.1);color:#18704d;border-radius:999px;width:max-content}
@keyframes ux305Hero{from{opacity:.2;transform:scale(1.05)}to{opacity:1;transform:scale(1.015)}}
@media(max-width:900px){.ux-v305-hero-content{grid-template-columns:1fr}.ux-v305-hero-card{justify-self:start}.ux-v305-project,.ux-v305-video{grid-template-columns:1fr}.ux-v305-project>img{min-height:310px}.ux-v305-gallery{grid-template-columns:repeat(2,1fr);grid-auto-rows:190px}.ux-v305-kpis{grid-template-columns:repeat(2,1fr)}.ux-v305-commercial-head{display:grid}.ux-v305-unit-head,.ux-v305-unit-row{grid-template-columns:72px minmax(150px,1fr) 100px 110px}.ux-v305-unit-head span:last-child,.ux-v305-unit-row em{display:none}}
@media(max-width:640px){.gr-hero-premium[data-v305="1"]{min-height:620px}.ux-v305-hero-content{padding-top:88px!important;padding-bottom:38px!important}.ux-v305-hero-content h1{font-size:2.7rem}.ux-v305-hero-card{width:100%;padding:17px}.ux-v305-hero-card b{font-size:2.25rem}.ux-v305-gallery{grid-template-columns:1fr 1fr;grid-auto-rows:155px}.ux-v305-media.wide{grid-column:span 2;grid-row:span 1}.ux-v305-video>div+div{padding:4px}.ux-v305-client-banner{grid-template-columns:96px 1fr}.ux-v305-client-banner img{width:96px;height:88px}.ux-v305-client-banner h2{font-size:1.3rem}.ux-v305-kpis{grid-template-columns:1fr 1fr}.ux-v305-unit-head,.ux-v305-unit-row{min-width:590px}.ux-v305-units{overflow:auto}.ux-v305-back span{display:none}.gr-top .gr-menu{gap:4px!important}.ux-v305-back,.ux-v305-theme{padding:7px 9px!important;font-size:.68rem!important}}
@media(prefers-reduced-motion:reduce){.ux-v305-hero-bg,.ux-v305-media img,.ux-v305-video-thumb>button,.ux-v305-back,.ux-v305-theme,.ux-v305-btn{animation:none!important;transition:none!important}}
/* V30.5 usa o retorno integrado ao cabeçalho; a barra antiga da V30.3 fica oculta. */
#uxClientBackBar{display:none!important}

/* assets/css/v306-audit-fixes.css */
/* UrbanNIX V30.6 — pós-auditoria */
#grMapa .ux-pl{margin:0;background:transparent}
#grMapa .ux-pl-quadro{min-height:460px}
#grMapa .ux-pl-svg{width:100%;height:auto;max-height:660px}
#grMapa .ux-pl-lado{margin-top:14px}
.ux-v306-legal-alert{display:flex;gap:10px;align-items:flex-start;margin:0 0 18px;padding:14px 16px;border:1px solid rgba(214,154,63,.38);border-radius:14px;background:rgba(214,154,63,.10);color:var(--tx,#e9efec)}
.ux-v306-legal-alert strong{white-space:nowrap}.ux-v306-legal-alert span{opacity:.86;line-height:1.45}
.ux-v306-legal-alert.ok{border-color:rgba(63,184,130,.35);background:rgba(63,184,130,.09)}
.ux-v306-check{display:flex;flex-direction:column;gap:2px;margin-left:auto;padding:8px 11px;border-radius:12px;font-size:.74rem;line-height:1.25}
.ux-v306-check.ok{background:rgba(44,170,119,.10);border:1px solid rgba(44,170,119,.28)}
.ux-v306-check.warn{background:rgba(214,154,63,.10);border:1px solid rgba(214,154,63,.35)}
.ux-v306-check span{opacity:.72}
html[data-tema="claro"] .ux-v306-legal-alert,body.light-theme .ux-v306-legal-alert{color:#25312d}
@media(max-width:760px){#grMapa .ux-pl-quadro{min-height:320px}.ux-v306-legal-alert{flex-direction:column}.ux-v306-check{margin-left:0;margin-top:8px}.ux-v305-commercial-head{align-items:flex-start;flex-direction:column}}
@media(prefers-reduced-motion:reduce){.ux-pl-lote,.ux-v305-logo-btn,.ux-v305-back,.ux-v305-theme{transition:none!important;animation:none!important}}
.ux-v306-contract-block{margin:18px;padding:28px;border:1px dashed rgba(214,154,63,.48);border-radius:16px;text-align:center;background:rgba(214,154,63,.07)}
.ux-v306-contract-block strong{display:block;font-size:1rem;margin-bottom:8px}.ux-v306-contract-block p{margin:0;opacity:.75;line-height:1.55}

/* assets/css/v307-visual-polish.css */
/* Visual surfaces belong to screens; A4 uses the document stylesheet. */
@media screen{
/* =====================================================================
   UrbanNIX V30.7 — revisão visual e cromática
   Camada final de design. Não altera regras de negócio nem dados.
   Objetivo: uma linguagem única entre Admin, Portal Público e Cliente.
   ===================================================================== */

:root{
  color-scheme:light;
  --ux307-canvas:#F4F5F2;
  --ux307-surface:#FFFFFF;
  --ux307-surface-2:#F8F9F6;
  --ux307-surface-3:#EEF1ED;
  --ux307-sidebar:#0B241C;
  --ux307-sidebar-2:#0E2D23;
  --ux307-sidebar-line:rgba(255,255,255,.09);
  --ux307-text:#18231E;
  --ux307-text-2:#647169;
  --ux307-text-3:#89958E;
  --ux307-line:#DDE3DE;
  --ux307-line-strong:#CBD4CE;
  --ux307-green:#1F6D51;
  --ux307-green-2:#2C8A67;
  --ux307-green-soft:#E7F1EC;
  --ux307-gold:#B8944D;
  --ux307-gold-2:#D1B46D;
  --ux307-gold-soft:#F6F0E2;
  --ux307-success:#2E8B66;
  --ux307-warning:#B98532;
  --ux307-danger:#B95750;
  --ux307-info:#4B7FA8;
  --ux307-shadow-1:0 1px 2px rgba(16,36,27,.035),0 8px 26px rgba(16,36,27,.045);
  --ux307-shadow-2:0 2px 4px rgba(16,36,27,.05),0 18px 46px rgba(16,36,27,.085);
  --ux307-shadow-3:0 28px 72px rgba(6,25,18,.16);
  --ux307-r-xs:8px;
  --ux307-r-sm:11px;
  --ux307-r:16px;
  --ux307-r-lg:22px;
  --ux307-r-xl:28px;
  --ux307-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Arial,sans-serif;
  --ux307-display:Georgia,"Times New Roman",serif;

  /* mapeia a base antiga para a identidade nova */
  --paper:var(--ux307-canvas)!important;
  --paper-raised:var(--ux307-surface)!important;
  --panel:var(--ux307-surface)!important;
  --panel-2:var(--ux307-surface-2)!important;
  --hover:var(--ux307-surface-3)!important;
  --ink:var(--ux307-text)!important;
  --ink-soft:var(--ux307-text-2)!important;
  --line:var(--ux307-line)!important;
  --accent:var(--ux307-green)!important;
  --accent-strong:#155940!important;
  --gold:var(--ux307-gold)!important;
  --ochre:var(--ux307-warning)!important;
  --ux-canvas:var(--ux307-canvas)!important;
  --ux-surface:var(--ux307-surface)!important;
  --ux-surface-2:var(--ux307-surface-2)!important;
  --ux-surface-3:var(--ux307-surface-3)!important;
  --ux-line:var(--ux307-line)!important;
  --ux-line-forte:var(--ux307-line-strong)!important;
  --ux-tx:var(--ux307-text)!important;
  --ux-tx2:var(--ux307-text-2)!important;
  --ux-tx3:var(--ux307-text-3)!important;
  --ux-verde-700:var(--ux307-green)!important;
  --ux-verde-600:var(--ux307-green-2)!important;
  --ux-acao:var(--ux307-green-2)!important;
  --ux-ouro:var(--ux307-gold)!important;
  --ux-ouro-claro:var(--ux307-gold-2)!important;
  --ux-ok:var(--ux307-success)!important;
  --ux-aviso:var(--ux307-warning)!important;
  --ux-erro:var(--ux307-danger)!important;
  --ux-info:var(--ux307-info)!important;
  --ux-s1:var(--ux307-shadow-1)!important;
  --ux-s2:var(--ux307-shadow-2)!important;
  --ux-s3:var(--ux307-shadow-3)!important;
  --ux-foco:0 0 0 3px rgba(44,138,103,.18)!important;
}

:root[data-tema="escuro"]{
  color-scheme:dark;
  --ux307-canvas:#0A100E;
  --ux307-surface:#101815;
  --ux307-surface-2:#151F1B;
  --ux307-surface-3:#1C2823;
  --ux307-sidebar:#07110D;
  --ux307-sidebar-2:#0B1914;
  --ux307-sidebar-line:rgba(255,255,255,.075);
  --ux307-text:#EDF2EF;
  --ux307-text-2:#A5B1AA;
  --ux307-text-3:#77857E;
  --ux307-line:#26332E;
  --ux307-line-strong:#35463F;
  --ux307-green:#58B791;
  --ux307-green-2:#42A77F;
  --ux307-green-soft:#132820;
  --ux307-gold:#D1B46D;
  --ux307-gold-2:#E2C98C;
  --ux307-gold-soft:#2A2416;
  --ux307-success:#63C39B;
  --ux307-warning:#DBAD59;
  --ux307-danger:#E07A72;
  --ux307-info:#79A9CE;
  --ux307-shadow-1:0 0 0 1px rgba(255,255,255,.035),0 8px 24px rgba(0,0,0,.18);
  --ux307-shadow-2:0 0 0 1px rgba(255,255,255,.045),0 20px 46px rgba(0,0,0,.28);
  --ux307-shadow-3:0 30px 80px rgba(0,0,0,.48);
}

html{background:var(--ux307-canvas);}
body{
  font-family:var(--ux307-font)!important;
  background:var(--ux307-canvas)!important;
  color:var(--ux307-text)!important;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

/* ---------- ADMIN · estrutura ---------- */
.wrap{max-width:1540px!important;padding-top:24px!important;}
header.top{
  min-height:68px!important;
  border:1px solid var(--ux307-line)!important;
  border-radius:18px!important;
  background:color-mix(in srgb,var(--ux307-surface) 92%,transparent)!important;
  box-shadow:var(--ux307-shadow-1)!important;
  backdrop-filter:blur(18px) saturate(130%);
  -webkit-backdrop-filter:blur(18px) saturate(130%);
  padding:10px 14px!important;
  margin-bottom:20px!important;
  align-items:center!important;
}
header.top .brand{gap:12px!important;align-items:center!important;}
header.top .brand-logo{height:28px!important;max-width:132px!important;object-fit:contain;}
header.top .brand-sep{height:26px!important;opacity:.55;}
header.top .ux-emp-switch{
  min-height:42px!important;
  border-radius:12px!important;
  background:var(--ux307-surface-2)!important;
  border-color:var(--ux307-line)!important;
  box-shadow:none!important;
}
header.top .ux-emp-switch:hover{background:var(--ux307-surface-3)!important;border-color:var(--ux307-line-strong)!important;}
header.top .ux-emp-switch .ux-emp-txt small{color:var(--ux307-text-3)!important;}
header.top .ux-emp-switch .ux-emp-txt strong{color:var(--ux307-text)!important;}
.top-actions{gap:7px!important;}
.top-search,.icon-btn,#themeToggle,.ux-tema,header.top .gr-brand-refresh-admin{
  min-height:40px!important;
  height:40px!important;
  border-radius:11px!important;
  border:1px solid var(--ux307-line)!important;
  background:var(--ux307-surface)!important;
  color:var(--ux307-text-2)!important;
  box-shadow:none!important;
}
.top-search:hover,.icon-btn:hover,#themeToggle:hover,.ux-tema:hover,header.top .gr-brand-refresh-admin:hover{
  background:var(--ux307-surface-3)!important;
  color:var(--ux307-text)!important;
  border-color:var(--ux307-line-strong)!important;
}
#themeToggle{width:40px!important;padding:0!important;font-size:0!important;display:grid!important;place-items:center;}
#themeToggle::before{content:'☾';font-size:16px;line-height:1;}
:root[data-tema="escuro"] #themeToggle::before{content:'☀';}
.user-badge{gap:8px!important;align-items:center!important;}
.ux30-sync-pill{background:var(--ux307-surface-2)!important;border-color:var(--ux307-line)!important;}

/* sidebar sempre escura: mais estável e com contraste melhor nos dois temas */
nav.tabs{
  background:linear-gradient(180deg,var(--ux307-sidebar-2) 0%,var(--ux307-sidebar) 100%)!important;
  border-right:1px solid var(--ux307-sidebar-line)!important;
  box-shadow:14px 0 42px rgba(4,17,12,.09)!important;
  padding-top:18px!important;
}
.sidebar-brand{padding:4px 12px 20px!important;margin-bottom:10px!important;border-bottom:1px solid var(--ux307-sidebar-line)!important;}
.sidebar-brand img.brand-mark{width:34px!important;height:34px!important;box-shadow:none!important;}
.sidebar-brand strong{color:#F4F7F5!important;font-size:.9rem!important;letter-spacing:-.02em!important;}
.sidebar-brand span{color:#93AAA0!important;}
.sidebar-brand .nav-version{color:#BDA666!important;border-color:rgba(209,180,109,.18)!important;background:rgba(209,180,109,.06)!important;}
.ux-emp-nav{
  margin:10px 10px 12px!important;
  padding:11px 12px!important;
  background:rgba(255,255,255,.045)!important;
  border:1px solid rgba(255,255,255,.075)!important;
  border-left:2px solid var(--ux307-gold)!important;
  border-radius:12px!important;
}
.ux-emp-nav-rot{color:#7F9B8F!important;}
.ux-emp-nav-nome{color:#F2F6F4!important;font-size:.8rem!important;}
.ux-emp-nav-loc{color:#91AAA0!important;}
.nav-caption{color:#607C70!important;font-size:.52rem!important;letter-spacing:.15em!important;margin:18px 12px 6px!important;}
nav.tabs button{
  min-height:42px!important;
  margin:1px 7px!important;
  padding:9px 10px!important;
  border-radius:10px!important;
  color:#A7BBB2!important;
  font-weight:560!important;
  box-shadow:none!important;
  transform:none!important;
}
nav.tabs button:hover{background:rgba(255,255,255,.055)!important;color:#FFFFFF!important;transform:none!important;}
nav.tabs button.active{
  color:#FFFFFF!important;
  background:linear-gradient(90deg,rgba(44,138,103,.24),rgba(255,255,255,.045))!important;
  box-shadow:inset 3px 0 0 var(--ux307-gold)!important;
}
nav.tabs button .nav-ico{opacity:.78;}
nav.tabs button.active .nav-ico{opacity:1;color:var(--ux307-gold-2)!important;}

/* ---------- ADMIN · tipografia e títulos ---------- */
.page-heading{margin-bottom:18px!important;align-items:flex-end!important;}
.page-heading .eyebrow,.eyebrow{color:var(--ux307-gold)!important;letter-spacing:.13em!important;font-weight:800!important;}
.page-heading h2{font-size:clamp(1.55rem,2.1vw,2.05rem)!important;letter-spacing:-.035em!important;color:var(--ux307-text)!important;margin-top:5px!important;}
.page-heading p{color:var(--ux307-text-2)!important;max-width:760px;}
.period-chip{background:var(--ux307-gold-soft)!important;border:1px solid color-mix(in srgb,var(--ux307-gold) 32%,transparent)!important;color:var(--ux307-gold)!important;padding:6px 10px!important;}

/* ---------- ADMIN · cards / dashboards ---------- */
.card,section.block,.table-shell,.quick-actions-panel,.live-activity-panel,.ux-hab-card,.param-info{
  background:var(--ux307-surface)!important;
  border:1px solid var(--ux307-line)!important;
  color:var(--ux307-text)!important;
  box-shadow:var(--ux307-shadow-1)!important;
  border-radius:var(--ux307-r)!important;
}
.card:hover,.grid-cards .card:hover{box-shadow:var(--ux307-shadow-2)!important;transform:translateY(-1px)!important;}
.card .label{color:var(--ux307-text-2)!important;font-size:.68rem!important;letter-spacing:.02em!important;}
.card .value{color:var(--ux307-text)!important;letter-spacing:-.035em!important;}
.card .sub{color:var(--ux307-text-3)!important;}
.vgv-hero{
  overflow:hidden!important;
  border:1px solid color-mix(in srgb,var(--ux307-green) 18%,var(--ux307-line))!important;
  border-radius:22px!important;
  background:
    radial-gradient(circle at 96% 0%,color-mix(in srgb,var(--ux307-gold) 13%,transparent),transparent 30%),
    linear-gradient(135deg,color-mix(in srgb,var(--ux307-green-soft) 46%,var(--ux307-surface)) 0%,var(--ux307-surface) 64%)!important;
  box-shadow:var(--ux307-shadow-1)!important;
}
.vgv-main>span,.vgv-side span{color:var(--ux307-text-2)!important;}
.vgv-main>strong,.vgv-side strong{color:var(--ux307-text)!important;}
.vgv-progress{background:var(--ux307-surface-3)!important;height:7px!important;}
.vgv-progress i{background:linear-gradient(90deg,var(--ux307-green),var(--ux307-gold-2))!important;}
.vgv-side>div{border-color:var(--ux307-line)!important;}
.quick-actions-panel{background:var(--ux307-surface)!important;padding:18px!important;}
.quick-action{
  background:var(--ux307-surface-2)!important;
  border:1px solid var(--ux307-line)!important;
  border-radius:13px!important;
  box-shadow:none!important;
  padding:15px!important;
}
.quick-action::before{width:2px!important;background:var(--ux307-gold)!important;opacity:.8!important;}
.quick-action strong{color:var(--ux307-text)!important;}
.quick-action span{color:var(--ux307-text-2)!important;}
.quick-action:hover{background:var(--ux307-surface)!important;border-color:var(--ux307-line-strong)!important;box-shadow:var(--ux307-shadow-1)!important;transform:translateY(-1px)!important;}
.live-activity-panel{overflow:hidden;}
.live-pulse{color:var(--ux307-success)!important;}

/* ---------- Tabelas / formulários ---------- */
.table-wrap,.table-shell{border-radius:14px!important;}
table{color:var(--ux307-text)!important;}
table th{
  background:var(--ux307-surface-2)!important;
  color:var(--ux307-text-3)!important;
  border-color:var(--ux307-line)!important;
  font-size:.64rem!important;
  letter-spacing:.065em!important;
}
table td{border-color:var(--ux307-line)!important;}
table tbody tr:hover td,table tbody tr:hover{background:var(--ux307-surface-2)!important;}
input[type=text],input[type=number],input[type=password],input[type=date],input[type=email],input[type=tel],select,textarea{
  background:var(--ux307-surface)!important;
  border:1px solid var(--ux307-line-strong)!important;
  color:var(--ux307-text)!important;
  border-radius:10px!important;
  box-shadow:none!important;
}
input:focus,select:focus,textarea:focus{border-color:var(--ux307-green-2)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--ux307-green-2) 15%,transparent)!important;}
label.field{color:var(--ux307-text-2)!important;}
button.btn,.gr-btn,.ux-btn-primario{
  border-radius:10px!important;
  font-weight:700!important;
  box-shadow:none!important;
}
button.btn:not(.secondary):not(.danger),.gr-btn:not(.sec):not(.fantasma),.ux-btn-primario{
  background:var(--ux307-green)!important;
  border-color:var(--ux307-green)!important;
  color:#fff!important;
}
button.btn:not(.secondary):not(.danger):hover,.gr-btn:not(.sec):not(.fantasma):hover,.ux-btn-primario:hover{background:#175C44!important;border-color:#175C44!important;filter:none!important;}
:root[data-tema="escuro"] button.btn:not(.secondary):not(.danger):hover,
:root[data-tema="escuro"] .gr-btn:not(.sec):not(.fantasma):hover{background:#70C5A2!important;border-color:#70C5A2!important;color:#071B13!important;}
button.btn.secondary,.gr-btn.sec,.ux-btn-fantasma{background:var(--ux307-surface)!important;color:var(--ux307-text)!important;border:1px solid var(--ux307-line-strong)!important;}
button.btn.secondary:hover,.gr-btn.sec:hover,.ux-btn-fantasma:hover{background:var(--ux307-surface-3)!important;}
.badge{border-radius:999px!important;padding:4px 9px!important;}
.badge.disponivel,.badge.ativa,.badge.paga,.badge.ok{background:color-mix(in srgb,var(--ux307-success) 12%,transparent)!important;color:var(--ux307-success)!important;}
.badge.reservado,.badge.pendente,.badge.atencao{background:color-mix(in srgb,var(--ux307-warning) 13%,transparent)!important;color:var(--ux307-warning)!important;}
.badge.vendido,.badge.atrasada,.badge.critico{background:color-mix(in srgb,var(--ux307-danger) 12%,transparent)!important;color:var(--ux307-danger)!important;}

/* ---------- Login ---------- */
#authOverlay{background:var(--ux307-canvas)!important;}
.auth-showcase{
  background:
    radial-gradient(circle at 12% 12%,rgba(209,180,109,.13),transparent 32%),
    radial-gradient(circle at 92% 86%,rgba(44,138,103,.20),transparent 38%),
    linear-gradient(145deg,#081B14,#0D2A20)!important;
}
.auth-card{
  border-radius:22px!important;
  border:1px solid var(--ux307-line)!important;
  background:var(--ux307-surface)!important;
  color:var(--ux307-text)!important;
  box-shadow:var(--ux307-shadow-3)!important;
}
.auth-card h2{color:var(--ux307-text)!important;}
.auth-card .auth-sub,.auth-card label.field{color:var(--ux307-text-2)!important;}
.auth-card input{color:var(--ux307-text)!important;background:var(--ux307-surface-2)!important;}
.auth-card button.btn#loginSubmit,.auth-card button.btn#setupSubmit{background:var(--ux307-green)!important;border-color:var(--ux307-green)!important;color:#fff!important;}
:root[data-tema="escuro"] .auth-card img.auth-card-logo{content:url('../img/brand/urbannix-logo-white-280.webp');}
:root:not([data-tema="escuro"]) .auth-card img.auth-card-logo{content:url('../img/brand/urbannix-logo-horizontal-280.webp');}

/* ---------- Portal público UrbanNIX / empreendimento ---------- */
#grPublico,#grCliente{background:var(--ux307-canvas)!important;color:var(--ux307-text)!important;}
#grPublico .gr-top,#grCliente .gr-top{
  background:color-mix(in srgb,var(--ux307-surface) 91%,transparent)!important;
  border-color:var(--ux307-line)!important;
  box-shadow:0 8px 28px rgba(16,36,27,.055)!important;
  backdrop-filter:blur(18px) saturate(135%);
}
.gr-top .gr-marca,.gr-top .gr-marca strong{color:var(--ux307-text)!important;}
.gr-top .gr-marca small{color:var(--ux307-text-3)!important;}
.gr-menu button{color:var(--ux307-text-2)!important;border-radius:9px!important;}
.gr-menu button:hover{background:var(--ux307-surface-3)!important;color:var(--ux307-text)!important;}
.gr-menu button.on{background:var(--ux307-green)!important;color:#fff!important;}
.gr-menu .gr-admin-acesso{border-color:color-mix(in srgb,var(--ux307-gold) 35%,transparent)!important;background:var(--ux307-gold-soft)!important;color:var(--ux307-gold)!important;}
#grPublico .gr-card,#grCliente .gr-card{background:var(--ux307-surface)!important;border-color:var(--ux307-line)!important;color:var(--ux307-text)!important;box-shadow:var(--ux307-shadow-1)!important;}

/* home pública continua cinematográfica; menu ganha contraste coerente */
#grPublico:has(.gr-home){background:#071711!important;}
.gr-home{background:radial-gradient(circle at 13% 16%,rgba(209,180,109,.13),transparent 28%),radial-gradient(circle at 84% 18%,rgba(64,143,105,.16),transparent 30%),linear-gradient(180deg,#071711 0%,#0A241A 46%,var(--ux307-canvas) 46.1%,var(--ux307-canvas) 100%)!important;}
.gr-home .gr-top{background:rgba(6,22,16,.84)!important;border-color:rgba(255,255,255,.08)!important;}
.gr-home .gr-marca,.gr-home .gr-marca strong{color:#fff!important;}
.gr-home .gr-marca small{color:#93A99F!important;}
.gr-home .gr-menu button{color:#B5C7BE!important;}
.gr-home .gr-menu button:hover{background:rgba(255,255,255,.065)!important;color:#fff!important;}
.gr-home .gr-menu button.on{background:rgba(209,180,109,.14)!important;color:#E8D09A!important;box-shadow:inset 0 -2px 0 var(--ux307-gold)!important;}
.gr-home-stats{background:var(--ux307-surface)!important;border-color:var(--ux307-line)!important;color:var(--ux307-text)!important;box-shadow:var(--ux307-shadow-3)!important;}
.gr-home-stat{border-color:var(--ux307-line)!important;}
.gr-home-stat span,.gr-home-stat small{color:var(--ux307-text-3)!important;}
.gr-home-section{color:var(--ux307-text)!important;}
.gr-home-section.alt{background:var(--ux307-surface-3)!important;}
.gr-home-section h2{color:var(--ux307-text)!important;}
.gr-home-lead{color:var(--ux307-text-2)!important;}
.gr-home-feature{background:var(--ux307-surface)!important;border-color:var(--ux307-line)!important;color:var(--ux307-text)!important;box-shadow:var(--ux307-shadow-1)!important;}
.gr-home-feature p{color:var(--ux307-text-2)!important;}
.gr-home-feature i{background:var(--ux307-sidebar)!important;color:var(--ux307-gold-2)!important;}
.gr-home-cta{background:radial-gradient(circle at 85% 20%,rgba(209,180,109,.16),transparent 31%),linear-gradient(135deg,#0A241A,#0C3426)!important;box-shadow:var(--ux307-shadow-3)!important;}

/* ---------- Hero / galeria ALTO BALANÇO I ---------- */
.gr-hero-premium[data-v305="1"]{background:#071B14!important;}
.ux-v305-hero-overlay{background:linear-gradient(90deg,rgba(4,18,13,.91) 0%,rgba(4,18,13,.67) 48%,rgba(4,18,13,.14) 82%),linear-gradient(0deg,rgba(4,18,13,.60),transparent 55%)!important;}
.ux-v305-kicker{background:rgba(209,180,109,.11)!important;border-color:rgba(226,201,140,.25)!important;color:#E6CB8D!important;}
.ux-v305-hero-content h1{font-family:var(--ux307-display)!important;font-weight:500!important;}
.ux-v305-hero-card{background:rgba(8,26,19,.62)!important;border-color:rgba(255,255,255,.14)!important;box-shadow:0 22px 54px rgba(0,0,0,.22)!important;}
.ux-v305-project,.ux-v305-video,.ux-v305-location,.ux-v305-client-banner{background:var(--ux307-surface)!important;border-color:var(--ux307-line)!important;color:var(--ux307-text)!important;box-shadow:var(--ux307-shadow-1)!important;}
.ux-v305-project h2,.ux-v305-section-head h2,.ux-v305-location h2,.ux-v305-video h3,.ux-v305-client-banner h2{color:var(--ux307-text)!important;}
.ux-v305-project p,.ux-v305-section-head p,.ux-v305-location p,.ux-v305-video p,.ux-v305-client-banner p{color:var(--ux307-text-2)!important;}
.ux-v305-gallery-section{background:var(--ux307-canvas)!important;}
.ux-v305-media{box-shadow:var(--ux307-shadow-1)!important;}
.ux-v305-btn{background:var(--ux307-green)!important;}

/* ---------- Portal do cliente ---------- */
.gr-client-shell,.gr-client-content{color:var(--ux307-text)!important;}
.gr-client-top{background:color-mix(in srgb,var(--ux307-surface) 92%,transparent)!important;border-color:var(--ux307-line)!important;}
.gr-client-brand-copy strong{color:var(--ux307-text)!important;}
.gr-client-brand-copy small{color:var(--ux307-text-3)!important;}
.ux-client-back,.ux-client-backbar button{
  background:var(--ux307-surface)!important;
  color:var(--ux307-text)!important;
  border-color:var(--ux307-line)!important;
  box-shadow:var(--ux307-shadow-1)!important;
}
.ux-welcome h1,.ux-client-gallery-head h3,.ux-video-copy h3,.ux-journey-head strong{color:var(--ux307-text)!important;}
.ux-welcome p,.ux-client-gallery-head p,.ux-video-copy p,.ux-journey-head small{color:var(--ux307-text-2)!important;}
.ux-welcome-status{background:var(--ux307-green-soft)!important;border-color:color-mix(in srgb,var(--ux307-green) 18%,var(--ux307-line))!important;color:var(--ux307-green)!important;}
.ux-shortcut,.ux-journey-card,.ux-video-card,.ux-legacy-detail{
  background:var(--ux307-surface)!important;
  border-color:var(--ux307-line)!important;
  color:var(--ux307-text)!important;
  box-shadow:var(--ux307-shadow-1)!important;
}
.ux-shortcut:hover{border-color:color-mix(in srgb,var(--ux307-gold) 45%,var(--ux307-line))!important;box-shadow:var(--ux307-shadow-2)!important;transform:translateY(-2px)!important;}
.ux-shortcut i{background:var(--ux307-green-soft)!important;color:var(--ux307-green)!important;}
.ux-shortcut b{color:var(--ux307-text)!important;}
.ux-shortcut small{color:var(--ux307-text-3)!important;}
.ux-journey-step:before{background:var(--ux307-line)!important;}
.ux-journey-step:after{border-color:var(--ux307-surface)!important;background:var(--ux307-line-strong)!important;}
.ux-journey-step.done:before,.ux-journey-step.done:after{background:var(--ux307-success)!important;}
.ux-journey-step.current:after{background:var(--ux307-gold)!important;box-shadow:0 0 0 1px var(--ux307-gold),0 0 0 5px color-mix(in srgb,var(--ux307-gold) 15%,transparent)!important;}
.ux-journey-step b{color:var(--ux307-text)!important;}
.ux-journey-step small{color:var(--ux307-text-3)!important;}
.ux-video-card{padding:14px!important;}
.ux-video-copy small{color:var(--ux307-gold)!important;}

/* tema escuro: elimina componentes ainda brancos da camada antiga */
:root[data-tema="escuro"] .ux-shortcut,
:root[data-tema="escuro"] .ux-journey-card,
:root[data-tema="escuro"] .ux-video-card,
:root[data-tema="escuro"] .ux-legacy-detail,
:root[data-tema="escuro"] .ux-v305-project,
:root[data-tema="escuro"] .ux-v305-video,
:root[data-tema="escuro"] .ux-v305-location,
:root[data-tema="escuro"] .ux-v305-client-banner,
:root[data-tema="escuro"] .gr-card,
:root[data-tema="escuro"] .quick-action{
  background:var(--ux307-surface)!important;
  border-color:var(--ux307-line)!important;
  color:var(--ux307-text)!important;
}
:root[data-tema="escuro"] .ux-client-back{background:var(--ux307-surface)!important;color:var(--ux307-text)!important;}

/* ---------- drawers / modais / overlays ---------- */
#lotDrawer,.drawer,.modal,.palette-box,.ux-emp-painel{
  background:var(--ux307-surface)!important;
  color:var(--ux307-text)!important;
  border-color:var(--ux307-line)!important;
  box-shadow:var(--ux307-shadow-3)!important;
}
#lotDrawerBackdrop,.modal-backdrop{backdrop-filter:blur(4px);}
.ux-emp-card{background:var(--ux307-surface-2)!important;border-color:var(--ux307-line)!important;}
.ux-emp-card.ativo{border-color:var(--ux307-green-2)!important;box-shadow:inset 3px 0 0 var(--ux307-green-2)!important;}

/* ---------- mapa ---------- */
#dxfMapViewport,.dxf-map-viewport{border-color:color-mix(in srgb,var(--ux307-green) 32%,#24342D)!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.02),0 18px 44px rgba(0,0,0,.16)!important;}
.gr-mapa-legenda{border-color:rgba(255,255,255,.09)!important;background:rgba(6,18,13,.82)!important;color:#D2DDD7!important;}

/* ---------- mobile ---------- */
@media(max-width:980px){
  .wrap{padding-right:16px!important;}
  nav.tabs{box-shadow:8px 0 28px rgba(4,17,12,.10)!important;}
}
@media(max-width:720px){
  .wrap{padding:8px 10px 88px!important;}
  header.top{min-height:58px!important;border-radius:14px!important;padding:8px 10px!important;margin-bottom:14px!important;}
  header.top .brand-logo{height:24px!important;}
  .top-search{width:40px!important;padding:0!important;justify-content:center!important;}
  .top-search::first-letter{font-size:18px;}
  nav.tabs{
    left:8px!important;right:8px!important;bottom:8px!important;top:auto!important;
    width:auto!important;height:64px!important;
    padding:7px!important;
    border:1px solid rgba(255,255,255,.09)!important;
    border-radius:16px!important;
    background:rgba(8,24,18,.95)!important;
    box-shadow:0 14px 46px rgba(0,0,0,.24)!important;
    backdrop-filter:blur(18px)!important;
  }
  nav.tabs button{margin:0!important;min-height:48px!important;border-radius:10px!important;}
  nav.tabs button.active{box-shadow:inset 0 -2px 0 var(--ux307-gold)!important;background:rgba(255,255,255,.07)!important;}
  .page-heading h2{font-size:1.5rem!important;}
  .vgv-hero{border-radius:18px!important;}
  .quick-actions-panel{padding:14px!important;}
  .ux-client-hero{border-radius:18px!important;}
  #grPublico .gr-top,#grCliente .gr-top{backdrop-filter:none!important;}
}
@media(max-width:520px){
  .user-badge .sync{display:none!important;}
  .top-actions{margin-left:auto!important;}
  .period-chip{font-size:.58rem!important;}
  .ux-v305-hero-content{padding-bottom:42px!important;}
  .ux-v305-hero-card{width:100%!important;justify-self:stretch!important;}
}

/* sem efeitos desnecessários para quem prefere menos movimento */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;}
}

}

/* assets/css/v308-layout-system.css */
/* =====================================================================
   UrbanNIX V30.8 — layout estrutural + tema unificado
   Última camada visual. Corrige sidebar, topbar, ritmo, contraste e dark mode.
   ===================================================================== */

/* Administrative layout and entrance effects are screen-only, never document styles. */
@media screen{
:root{
  --u8-bg:#F5F7F4;
  --u8-bg-soft:#EEF2EE;
  --u8-card:#FFFFFF;
  --u8-card-2:#F9FAF8;
  --u8-line:#DCE4DE;
  --u8-line-2:#C9D5CD;
  --u8-text:#17221D;
  --u8-muted:#66746C;
  --u8-muted-2:#8B9891;
  --u8-green:#176B4E;
  --u8-green-2:#258262;
  --u8-green-soft:#E8F3ED;
  --u8-gold:#B99347;
  --u8-gold-soft:#F7F0E1;
  --u8-side:#08271D;
  --u8-side-2:#0B3225;
  --u8-side-text:#D8E5DE;
  --u8-side-muted:#8EA79C;
  --u8-danger:#B95750;
  --u8-warn:#B98532;
  --u8-ok:#2C8A66;
  --u8-info:#4A80A7;
  --u8-r:14px;
  --u8-r-lg:20px;
  --u8-shadow:0 1px 2px rgba(13,37,28,.04),0 10px 30px rgba(13,37,28,.055);
  --u8-shadow-lg:0 22px 60px rgba(8,31,22,.12);
}

:root[data-tema="escuro"]{
  --u8-bg:#090E0C;
  --u8-bg-soft:#0D1511;
  --u8-card:#111A16;
  --u8-card-2:#16201C;
  --u8-line:#26342E;
  --u8-line-2:#374941;
  --u8-text:#EEF3F0;
  --u8-muted:#A6B2AC;
  --u8-muted-2:#7E8D86;
  --u8-green:#59B992;
  --u8-green-2:#47A980;
  --u8-green-soft:#142820;
  --u8-gold:#D3B66E;
  --u8-gold-soft:#2A2417;
  --u8-side:#07130F;
  --u8-side-2:#0A1A14;
  --u8-side-text:#E2ECE7;
  --u8-side-muted:#8FA59A;
  --u8-danger:#E17A73;
  --u8-warn:#DCAD58;
  --u8-ok:#64C29B;
  --u8-info:#7BA9CD;
  --u8-shadow:0 0 0 1px rgba(255,255,255,.025),0 12px 34px rgba(0,0,0,.20);
  --u8-shadow-lg:0 24px 70px rgba(0,0,0,.42);
}

html,body{background:var(--u8-bg)!important;color:var(--u8-text)!important;}
body{overflow-x:hidden!important;}

/* ===================== ESTRUTURA ADMIN ===================== */
#appRoot>.wrap{
  max-width:none!important;
  margin:0!important;
  min-height:100vh!important;
  padding:16px 28px 64px 284px!important;
}

nav.tabs{
  position:fixed!important;
  inset:0 auto 0 0!important;
  width:256px!important;
  height:100vh!important;
  max-height:100vh!important;
  display:flex!important;
  flex-direction:column!important;
  flex-wrap:nowrap!important;
  align-items:stretch!important;
  gap:2px!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  padding:18px 12px 22px!important;
  background:linear-gradient(180deg,var(--u8-side-2),var(--u8-side))!important;
  border:0!important;
  border-right:1px solid rgba(255,255,255,.07)!important;
  box-shadow:14px 0 42px rgba(4,20,14,.08)!important;
  scrollbar-width:thin;
  scrollbar-color:rgba(255,255,255,.13) transparent;
}
nav.tabs>*{flex:0 0 auto!important;min-width:0!important;}
nav.tabs::-webkit-scrollbar{width:6px}
nav.tabs::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:999px}
nav.tabs .sidebar-brand{
  display:flex!important;align-items:center!important;gap:10px!important;
  margin:0 0 10px!important;padding:4px 7px 16px!important;
  border-bottom:1px solid rgba(255,255,255,.08)!important;
}
.sidebar-brand .brand-mark{width:36px!important;height:36px!important;flex:0 0 36px!important;}
.sidebar-brand>div{min-width:0!important;}
.sidebar-brand strong{display:block;color:#F6FAF8!important;font-size:.91rem!important;line-height:1.15!important;}
.sidebar-brand span{display:block;color:var(--u8-side-muted)!important;font-size:.68rem!important;margin-top:2px!important;}
.sidebar-brand .nav-version{display:inline-flex!important;margin-top:6px!important;padding:2px 7px!important;border-radius:999px!important;color:#D8BD7A!important;background:rgba(211,182,110,.09)!important;border:1px solid rgba(211,182,110,.20)!important;font-size:.58rem!important;font-style:normal!important;}

.ux-emp-nav{
  margin:8px 3px 12px!important;padding:11px 12px!important;border-radius:12px!important;
  background:rgba(255,255,255,.05)!important;border:1px solid rgba(255,255,255,.08)!important;
  border-left:2px solid var(--u8-gold)!important;
}
.ux-emp-nav>*{display:block!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;}
.ux-emp-nav-rot{color:#799489!important;font-size:.55rem!important;letter-spacing:.13em!important;}
.ux-emp-nav-nome{color:#F4F8F6!important;font-size:.78rem!important;margin-top:5px!important;}
.ux-emp-nav-loc{color:#9AB0A6!important;font-size:.66rem!important;margin-top:4px!important;}

.nav-caption{
  display:block!important;margin:16px 9px 6px!important;padding:0!important;
  color:#698479!important;font-size:.51rem!important;font-weight:800!important;letter-spacing:.16em!important;
  white-space:nowrap!important;
}
nav.tabs button{
  width:100%!important;min-width:0!important;min-height:40px!important;flex:0 0 auto!important;
  display:flex!important;align-items:center!important;gap:10px!important;
  margin:1px 0!important;padding:9px 10px!important;border:0!important;border-radius:9px!important;
  color:#AFC1B8!important;background:transparent!important;font-size:.76rem!important;font-weight:580!important;
  text-align:left!important;white-space:nowrap!important;overflow:hidden!important;
  box-shadow:none!important;transform:none!important;
}
nav.tabs button::before{display:none!important;content:none!important;}
nav.tabs button .nav-ico{width:18px!important;height:18px!important;flex:0 0 18px!important;display:grid!important;place-items:center!important;color:#7D9A8E!important;opacity:1!important;}
nav.tabs button .nav-ico svg{width:17px!important;height:17px!important;fill:none!important;stroke:currentColor!important;stroke-width:1.7!important;}
nav.tabs button .nav-label{display:block!important;flex:1 1 auto!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;color:inherit!important;}
nav.tabs button:hover{background:rgba(255,255,255,.055)!important;color:#FFF!important;transform:none!important;}
nav.tabs button.active{background:linear-gradient(90deg,rgba(37,130,98,.25),rgba(255,255,255,.035))!important;color:#FFF!important;box-shadow:inset 3px 0 0 var(--u8-gold)!important;}
nav.tabs button.active .nav-ico{color:#D7BC79!important;}
#tabs .ux-nav-central .nav-label{color:inherit!important;}

/* topbar em UMA linha no desktop */
header.top{
  position:sticky!important;top:12px!important;z-index:70!important;
  width:100%!important;max-width:1510px!important;min-height:68px!important;height:auto!important;
  margin:0 auto 24px!important;padding:10px 12px!important;
  display:grid!important;grid-template-columns:minmax(250px,1fr) auto auto!important;
  align-items:center!important;gap:10px!important;flex-wrap:nowrap!important;
  border:1px solid var(--u8-line)!important;border-radius:17px!important;
  background:color-mix(in srgb,var(--u8-card) 94%,transparent)!important;
  box-shadow:var(--u8-shadow)!important;
  backdrop-filter:blur(18px) saturate(130%)!important;
}
header.top .brand{min-width:0!important;display:flex!important;align-items:center!important;gap:8px!important;margin:0!important;overflow:hidden!important;}
header.top .brand-logo,.brand-sep{display:none!important;}
header.top .ux-emp-switch{max-width:310px!important;min-width:210px!important;min-height:44px!important;overflow:hidden!important;background:var(--u8-card-2)!important;border:1px solid var(--u8-line)!important;border-radius:11px!important;box-shadow:none!important;}
.ux-emp-switch .ux-emp-txt{min-width:0!important;overflow:hidden!important;}
.ux-emp-switch .ux-emp-txt strong{display:block!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;color:var(--u8-text)!important;}
.ux-emp-switch .ux-emp-txt small{color:var(--u8-muted-2)!important;}
header.top .gr-brand-refresh-admin{display:grid!important;place-items:center!important;flex:0 0 38px!important;width:38px!important;height:38px!important;border-radius:10px!important;}
.top-actions{display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:7px!important;flex-wrap:nowrap!important;min-width:0!important;}
.top-search{min-width:220px!important;max-width:330px!important;height:40px!important;white-space:nowrap!important;overflow:hidden!important;background:var(--u8-card)!important;border:1px solid var(--u8-line)!important;color:var(--u8-muted)!important;}
.top-search span{overflow:hidden!important;text-overflow:ellipsis!important;}
.top-search kbd{flex:0 0 auto!important;}
.icon-btn,#themeToggle,.ux-tema,header.top .gr-brand-refresh-admin{
  background:var(--u8-card)!important;border:1px solid var(--u8-line)!important;color:var(--u8-muted)!important;box-shadow:none!important;
}
.icon-btn:hover,#themeToggle:hover,.ux-tema:hover,header.top .gr-brand-refresh-admin:hover{background:var(--u8-bg-soft)!important;color:var(--u8-text)!important;border-color:var(--u8-line-2)!important;}
#themeToggle{width:40px!important;min-width:40px!important;height:40px!important;padding:0!important;font-size:0!important;}
#themeToggle::before{content:'☾';font-size:17px!important;line-height:1!important;}
:root[data-tema="escuro"] #themeToggle::before{content:'☀';}
.user-badge{display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:7px!important;min-width:0!important;flex-wrap:nowrap!important;white-space:nowrap!important;}
.user-badge .sync{display:none!important;}
.user-badge .who{max-width:245px!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;color:var(--u8-muted)!important;font-size:.69rem!important;}
.user-badge .btn.small{height:38px!important;min-height:38px!important;padding:0 12px!important;}
#grSessionChip{position:static!important;transform:none!important;margin:0!important;white-space:nowrap!important;}

/* conteúdo */
.view{width:100%!important;max-width:1510px!important;margin:0 auto!important;min-width:0!important;}
.view.active{animation:u8-in .18s ease-out!important;}
@keyframes u8-in{from{opacity:.45;transform:translateY(4px)}to{opacity:1;transform:none}}
.page-heading{display:flex!important;align-items:flex-end!important;justify-content:space-between!important;gap:18px!important;margin:0 0 20px!important;}
.page-heading h1,.page-heading h2{color:var(--u8-text)!important;letter-spacing:-.035em!important;line-height:1.08!important;}
.page-heading p{color:var(--u8-muted)!important;line-height:1.55!important;}
.eyebrow,.page-heading .eyebrow{color:var(--u8-gold)!important;}
.period-chip{background:var(--u8-gold-soft)!important;border:1px solid color-mix(in srgb,var(--u8-gold) 28%,var(--u8-line))!important;color:var(--u8-gold)!important;}

/* superfícies e hierarquia */
.card,section.block,.table-shell,.quick-actions-panel,.live-activity-panel,.ux-kpi,.ux-col,.ux-lead-det,.ux-visao,.filters-premium,.param-info,.ux-hab-card{
  background:var(--u8-card)!important;border:1px solid var(--u8-line)!important;color:var(--u8-text)!important;box-shadow:var(--u8-shadow)!important;
}
.card,section.block,.table-shell,.quick-actions-panel,.live-activity-panel,.ux-lead-det,.ux-visao,.filters-premium,.param-info,.ux-hab-card{border-radius:var(--u8-r)!important;}
.card .label,.ux-kpi span{color:var(--u8-muted-2)!important;}
.card .value,.ux-kpi strong{color:var(--u8-text)!important;}
.card .sub,.ux-kpi small{color:var(--u8-muted)!important;}

/* Dashboard */
.vgv-hero{
  display:grid!important;grid-template-columns:minmax(0,1.45fr) minmax(310px,.72fr)!important;
  margin-bottom:16px!important;border-radius:20px!important;overflow:hidden!important;
  border:1px solid color-mix(in srgb,var(--u8-green) 17%,var(--u8-line))!important;
  background:radial-gradient(circle at 96% 0%,color-mix(in srgb,var(--u8-gold) 12%,transparent),transparent 32%),linear-gradient(135deg,color-mix(in srgb,var(--u8-green-soft) 50%,var(--u8-card)),var(--u8-card))!important;
  box-shadow:var(--u8-shadow)!important;
}
.vgv-main{padding:24px 26px!important;}
.vgv-main>span,.vgv-side span{color:var(--u8-muted)!important;}
.vgv-main>strong{color:var(--u8-text)!important;font-size:clamp(2rem,3vw,3.1rem)!important;letter-spacing:-.055em!important;}
.vgv-side{background:color-mix(in srgb,var(--u8-card-2) 80%,transparent)!important;}
.vgv-side strong{color:var(--u8-text)!important;}
.vgv-side>div{border-color:var(--u8-line)!important;}
.vgv-progress{height:7px!important;background:var(--u8-bg-soft)!important;border-radius:999px!important;overflow:hidden!important;}
.vgv-progress i{background:linear-gradient(90deg,var(--u8-green),var(--u8-gold))!important;}
.dashboard-metrics{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:12px!important;}
.dashboard-metrics .metric-card{min-height:118px!important;padding:16px!important;}
.quick-actions-panel{display:grid!important;grid-template-columns:minmax(230px,.7fr) minmax(0,1.7fr)!important;gap:18px!important;padding:18px!important;margin-top:16px!important;}
.quick-actions-grid{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:9px!important;}
.quick-action{min-width:0!important;background:var(--u8-card-2)!important;border:1px solid var(--u8-line)!important;border-radius:12px!important;color:var(--u8-text)!important;box-shadow:none!important;}
.quick-action span{color:var(--u8-muted)!important;}
.quick-action:hover{background:var(--u8-card)!important;border-color:var(--u8-line-2)!important;box-shadow:var(--u8-shadow)!important;transform:translateY(-1px)!important;}
.live-activity-panel{margin-top:16px!important;}

/* Leads: corrige o vazio exagerado e prioriza o funil */
#view-leads .ux-lead-barra{display:grid!important;grid-template-columns:minmax(260px,1fr) 190px 190px auto!important;gap:9px!important;align-items:center!important;}
#view-leads .ux-lead-barra>*{min-width:0!important;margin:0!important;}
#view-leads .ux-lead-kpis{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:10px!important;}
#view-leads .ux-lead-area{grid-template-columns:minmax(0,1fr) 290px!important;gap:14px!important;}
#view-leads .ux-funil{display:grid!important;grid-auto-flow:column!important;grid-auto-columns:minmax(220px,1fr)!important;gap:10px!important;overflow-x:auto!important;padding:0 0 8px!important;scrollbar-width:thin;}
#view-leads .ux-col{min-width:220px!important;min-height:300px!important;border-radius:12px!important;overflow:hidden!important;box-shadow:none!important;}
#view-leads .ux-col-cab{background:var(--u8-card-2)!important;border-color:var(--u8-line)!important;}
#view-leads .ux-lead-det{position:sticky!important;top:104px!important;max-height:calc(100vh - 125px)!important;overflow:auto!important;}
#view-leads .ux-visao-num>div{background:var(--u8-card-2)!important;border:1px solid var(--u8-line)!important;border-radius:10px!important;}

/* Tabelas e formulários */
.table-wrap,.table-shell{overflow:auto!important;}
table{color:var(--u8-text)!important;}
table th{background:var(--u8-card-2)!important;color:var(--u8-muted-2)!important;border-color:var(--u8-line)!important;}
table td{border-color:var(--u8-line)!important;}
table tbody tr:hover td{background:var(--u8-bg-soft)!important;}
input[type=text],input[type=number],input[type=password],input[type=date],input[type=email],input[type=tel],input[type=search],select,textarea{
  background:var(--u8-card)!important;color:var(--u8-text)!important;border:1px solid var(--u8-line-2)!important;border-radius:10px!important;box-shadow:none!important;
}
input::placeholder,textarea::placeholder{color:var(--u8-muted-2)!important;}
input:focus,select:focus,textarea:focus{border-color:var(--u8-green-2)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--u8-green-2) 15%,transparent)!important;outline:none!important;}
button.btn:not(.secondary):not(.danger),.gr-btn:not(.sec):not(.fantasma),.ux-btn-primario{background:var(--u8-green)!important;border-color:var(--u8-green)!important;color:#fff!important;}
button.btn.secondary,.gr-btn.sec,.ux-btn-fantasma{background:var(--u8-card)!important;border-color:var(--u8-line-2)!important;color:var(--u8-text)!important;}

/* modais/drawers */
#lotDrawer,.drawer,.modal,.palette-box,.ux-emp-painel,.modal-card,.overlay-card{
  background:var(--u8-card)!important;color:var(--u8-text)!important;border-color:var(--u8-line)!important;box-shadow:var(--u8-shadow-lg)!important;
}

/* rodapé mais discreto */
.gr-admin-footer-v26{max-width:1510px!important;margin:28px auto 0!important;padding:14px 0 0!important;color:var(--u8-muted-2)!important;}

/* portal público/cliente acompanha o mesmo tema */
#grPublico,#grCliente{background:var(--u8-bg)!important;color:var(--u8-text)!important;}
#grPublico .gr-top,#grCliente .gr-top{background:color-mix(in srgb,var(--u8-card) 94%,transparent)!important;border-color:var(--u8-line)!important;}
#grPublico .gr-card,#grCliente .gr-card,.ux-shortcut,.ux-journey-card,.ux-video-card,.ux-legacy-detail,.ux-v305-project,.ux-v305-video,.ux-v305-location,.ux-v305-client-banner{
  background:var(--u8-card)!important;border-color:var(--u8-line)!important;color:var(--u8-text)!important;
}
.gr-menu button{color:var(--u8-muted)!important;}
.gr-menu button:hover{background:var(--u8-bg-soft)!important;color:var(--u8-text)!important;}

/* Dark mode: impede branco fixo das camadas antigas */
:root[data-tema="escuro"] .card,
:root[data-tema="escuro"] section.block,
:root[data-tema="escuro"] .table-shell,
:root[data-tema="escuro"] .quick-actions-panel,
:root[data-tema="escuro"] .live-activity-panel,
:root[data-tema="escuro"] .ux-kpi,
:root[data-tema="escuro"] .ux-col,
:root[data-tema="escuro"] .ux-lead-det,
:root[data-tema="escuro"] .ux-visao,
:root[data-tema="escuro"] .filters-premium,
:root[data-tema="escuro"] .param-info,
:root[data-tema="escuro"] .ux-hab-card,
:root[data-tema="escuro"] .ux-emp-card,
:root[data-tema="escuro"] .gr-card{
  background:var(--u8-card)!important;color:var(--u8-text)!important;border-color:var(--u8-line)!important;
}
:root[data-tema="escuro"] .ux-col-cab,
:root[data-tema="escuro"] table th,
:root[data-tema="escuro"] .quick-action,
:root[data-tema="escuro"] .ux-visao-num>div{background:var(--u8-card-2)!important;}
:root[data-tema="escuro"] input,
:root[data-tema="escuro"] select,
:root[data-tema="escuro"] textarea{background:var(--u8-card-2)!important;color:var(--u8-text)!important;}

/* ===================== RESPONSIVO ===================== */
@media(max-width:1320px){
  #appRoot>.wrap{padding-left:258px!important;padding-right:20px!important;}
  nav.tabs{width:232px!important;}
  header.top{grid-template-columns:minmax(205px,1fr) auto auto!important;}
  header.top .ux-emp-switch{min-width:190px!important;max-width:260px!important;}
  .top-search{min-width:180px!important;max-width:250px!important;}
  .user-badge .who{max-width:170px!important;}
  .dashboard-metrics{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
  .quick-actions-panel{grid-template-columns:1fr!important;}
  .quick-actions-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important;}
}

@media(max-width:980px){
  #appRoot>.wrap{padding-left:88px!important;padding-right:16px!important;}
  nav.tabs{width:72px!important;padding:14px 8px!important;align-items:stretch!important;}
  nav.tabs .sidebar-brand{justify-content:center!important;padding:4px 0 14px!important;}
  .sidebar-brand>div,.ux-emp-nav,.nav-caption,nav.tabs .nav-label{display:none!important;}
  nav.tabs button{justify-content:center!important;padding:10px 6px!important;min-height:44px!important;}
  nav.tabs button .nav-ico{width:20px!important;height:20px!important;flex-basis:20px!important;}
  header.top{top:8px!important;grid-template-columns:minmax(170px,1fr) auto auto!important;}
  header.top .ux-emp-switch{min-width:165px!important;max-width:220px!important;}
  .top-search{min-width:40px!important;width:40px!important;max-width:40px!important;padding:0!important;justify-content:center!important;}
  .user-badge .who{display:none!important;}
  .top-search span,.top-search kbd{display:none!important;}
  #view-leads .ux-lead-area{grid-template-columns:1fr!important;}
  #view-leads .ux-lead-det{position:static!important;max-height:none!important;}
  .vgv-hero{grid-template-columns:1fr!important;}
  .quick-actions-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
}

@media(max-width:720px){
  #appRoot>.wrap{padding:8px 10px 86px!important;}
  nav.tabs{
    left:8px!important;right:8px!important;top:auto!important;bottom:8px!important;width:auto!important;height:64px!important;max-height:64px!important;
    flex-direction:row!important;flex-wrap:nowrap!important;overflow-x:auto!important;overflow-y:hidden!important;padding:7px!important;border:1px solid rgba(255,255,255,.09)!important;border-radius:16px!important;
    background:rgba(7,24,17,.96)!important;box-shadow:0 16px 48px rgba(0,0,0,.28)!important;
  }
  nav.tabs .sidebar-brand,.ux-emp-nav,.nav-caption{display:none!important;}
  nav.tabs button{width:46px!important;min-width:46px!important;flex:0 0 46px!important;margin:0!important;}
  header.top{position:sticky!important;top:7px!important;display:flex!important;flex-wrap:wrap!important;padding:8px!important;border-radius:14px!important;gap:7px!important;}
  header.top .brand{order:1!important;flex:1 1 calc(100% - 96px)!important;}
  header.top .ux-emp-switch{min-width:0!important;max-width:none!important;width:100%!important;}
  header.top .top-actions{order:2!important;margin-left:auto!important;}
  header.top .user-badge{order:3!important;flex:1 1 100%!important;justify-content:space-between!important;margin:0!important;padding-top:2px!important;}
  .user-badge .who{max-width:58vw!important;}
  #grSessionChip{display:none!important;}
  .page-heading{display:block!important;}
  .period-chip{display:inline-flex!important;margin-top:10px!important;}
  .dashboard-metrics{grid-template-columns:1fr!important;}
  .quick-actions-grid{grid-template-columns:1fr!important;}
  #view-leads .ux-lead-barra{grid-template-columns:1fr 1fr!important;}
  #view-leads .ux-lead-barra input{grid-column:1/-1!important;}
  #view-leads .ux-lead-barra .btn{grid-column:1/-1!important;}
  #view-leads .ux-lead-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
}

@media(max-width:460px){
  #view-leads .ux-lead-kpis{grid-template-columns:1fr!important;}
  #view-leads .ux-lead-barra{grid-template-columns:1fr!important;}
  #view-leads .ux-lead-barra>*{grid-column:1!important;}
  .vgv-main{padding:18px!important;}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important;}
}

/* Portal público também obedece ao seletor Claro/Escuro. A V30.7 deixava
   a home pública escura de forma fixa, dando a impressão de tema quebrado. */
:root[data-tema="claro"] #grPublico:has(.gr-home){background:var(--u8-bg)!important;}
:root[data-tema="claro"] .gr-home{
  background:radial-gradient(circle at 13% 13%,rgba(185,147,71,.10),transparent 25%),radial-gradient(circle at 84% 18%,rgba(37,130,98,.08),transparent 28%),linear-gradient(180deg,#F3F6F2 0%,#F7F8F6 46%,var(--u8-bg) 46.1%,var(--u8-bg) 100%)!important;
}
:root[data-tema="claro"] .gr-home .gr-top{background:rgba(255,255,255,.90)!important;border-color:var(--u8-line)!important;box-shadow:var(--u8-shadow)!important;}
:root[data-tema="claro"] .gr-home .gr-marca,
:root[data-tema="claro"] .gr-home .gr-marca strong{color:var(--u8-text)!important;}
:root[data-tema="claro"] .gr-home .gr-marca small{color:var(--u8-muted)!important;}
:root[data-tema="claro"] .gr-home .gr-menu button{color:var(--u8-muted)!important;}
:root[data-tema="claro"] .gr-home .gr-menu button:hover{background:var(--u8-bg-soft)!important;color:var(--u8-text)!important;}
:root[data-tema="claro"] .gr-home .gr-menu button.on{background:var(--u8-green-soft)!important;color:var(--u8-green)!important;box-shadow:inset 0 -2px 0 var(--u8-green)!important;}
:root[data-tema="escuro"] #grPublico:has(.gr-home){background:var(--u8-bg)!important;}
:root[data-tema="escuro"] .gr-home{background:radial-gradient(circle at 13% 16%,rgba(211,182,110,.12),transparent 28%),radial-gradient(circle at 84% 18%,rgba(71,169,128,.12),transparent 30%),linear-gradient(180deg,#071711 0%,#0A241A 46%,var(--u8-bg) 46.1%,var(--u8-bg) 100%)!important;}
}

/* assets/css/v309-performance.css */
/* UrbanNIX V30.9 LEAN — pintura mais barata sem desmontar o layout. */
html.ux-lean{scroll-behavior:auto}
html.ux-lean .top,
html.ux-lean .tabs,
html.ux-lean .auth-card,
html.ux-lean .auth-showcase,
html.ux-lean #searchPalette,
html.ux-lean .palette-box,
html.ux-lean .modal,
html.ux-lean .drawer,
html.ux-lean .ux-lightbox,
html.ux-lean .gr-notify-panel,
html.ux-lean [class*="glass"]{
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
}
html.ux-lean .card,
html.ux-lean .block,
html.ux-lean .kpi,
html.ux-lean .stat,
html.ux-lean .lead-card,
html.ux-lean .ux-v305-kpis>div,
html.ux-lean .gr-home-stat{
  box-shadow:0 2px 10px rgba(8,28,22,.055)!important;
}
html[data-tema="escuro"].ux-lean .card,
html[data-tema="escuro"].ux-lean .block,
html[data-tema="escuro"].ux-lean .kpi,
html[data-tema="escuro"].ux-lean .stat{
  box-shadow:0 2px 10px rgba(0,0,0,.16)!important;
}
html.ux-lean .view,
html.ux-lean .card,
html.ux-lean .block,
html.ux-lean .kpi,
html.ux-lean .stat,
html.ux-lean .tabs button,
html.ux-lean .btn,
html.ux-lean .icon-btn,
html.ux-lean .top-search{
  animation:none!important;
  transition:background-color .12s ease,border-color .12s ease,color .12s ease,transform .12s ease!important;
}
html.ux-lean .ux-v305-hero-bg,
html.ux-lean .gr-hero-premium img,
html.ux-lean .ux-v305-client-banner img{
  transform:none!important;
  filter:none!important;
}
html.ux-lean .ux-logo-breathe,
html.ux-lean .brand-logo,
html.ux-lean .auth-card-logo{
  animation:none!important;
}
html.ux-lean .view:not(.active){display:none!important}
html.ux-lean img{image-rendering:auto}
@media (max-width:900px){
  html.ux-lean .top,html.ux-lean .tabs{box-shadow:none!important}
  html.ux-lean .card,html.ux-lean .block{box-shadow:0 1px 5px rgba(8,28,22,.05)!important}
}
@media (prefers-reduced-motion:reduce){
  html.ux-lean *,html.ux-lean *::before,html.ux-lean *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}

/* assets/css/v311-quality.css */
/* UrbanNIX V31.1 — correções finais de interação, contraste e acessibilidade. */
:root{color-scheme:light}
html[data-tema="escuro"]{color-scheme:dark}

/* Campos de autenticação devem continuar legíveis mesmo com tema/sistema escuro. */
#authOverlay input,
#authOverlay select,
#authOverlay textarea{
  color:#17221d!important;
  background:#fff!important;
  caret-color:#0b6b58!important;
  -webkit-text-fill-color:#17221d!important;
  opacity:1!important;
}
#authOverlay input::placeholder{color:#66736d!important;opacity:1}
#authOverlay input:focus,
#authOverlay select:focus,
#authOverlay textarea:focus{
  border-color:#0b8068!important;
  box-shadow:0 0 0 3px rgba(11,128,104,.18)!important;
  outline:0!important;
}

button:focus-visible,
a:focus-visible,
[role="button"]:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible{
  outline:3px solid rgba(210,166,58,.78)!important;
  outline-offset:2px!important;
}

/* Interações discretas e baratas: somente opacity/transform. */
@media (hover:hover) and (prefers-reduced-motion:no-preference){
  .gr-btn,.btn,.ux-v305-btn,.ux-shortcut,.gr-home-feature{
    transition:transform .16s ease,box-shadow .16s ease,background-color .16s ease,color .16s ease!important;
  }
  .gr-btn:hover,.btn:hover,.ux-v305-btn:hover{transform:translateY(-1px)}
  .gr-home-feature:hover,.ux-shortcut:hover{transform:translateY(-2px)}
}

@media (max-width:640px){
  #authOverlay{padding:18px 14px!important;overflow:auto!important}
  #authOverlay .auth-card{width:min(100%,420px)!important;margin:auto!important}
  #authOverlay input,#authOverlay select,#authOverlay textarea{font-size:16px!important;min-height:46px}
  .gr-menu button,.ux-v305-btn,.gr-btn,.btn{min-height:42px}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* assets/css/v312-gran-reserva.css */
/* UrbanNIX V31.2 — identidade Gran Reserva e Área do Cliente Alto Balanço. */
#grPublico,#grCliente{
  --pg:#F7F4EC;
  --card:#FFFEFA;
  --linha:#DED8C8;
  --linha2:#EEE9DD;
  --tx:#173229;
  --tx2:#526B61;
  --tx3:#788D84;
  --verde:#0A5948;
  --verde2:#128068;
  --verde-cl:#E5F1EC;
  --ouro:#B8882E;
  --ambar:#9A6715;
  background:radial-gradient(circle at 85% 0,rgba(196,154,68,.10),transparent 30%),var(--pg);
}
#grPublico .gr-top,#grCliente .gr-top{background:rgba(7,56,46,.97)!important;border-bottom-color:rgba(230,207,151,.22)!important;color:#fff}
#grPublico .gr-menu button,#grCliente .gr-menu button{color:#DDE9E4}
#grPublico .gr-menu button:hover,#grCliente .gr-menu button:hover{background:rgba(255,255,255,.10);color:#fff}
#grPublico .gr-menu button.on,#grCliente .gr-menu button.on{background:#C39A43;color:#102C24}
#grPublico .gr-card,#grCliente .gr-card,.ux-client-gallery,.ux-journey-card,.ux-video-card,.ux-shortcut{
  border-color:var(--linha);background:var(--card);box-shadow:0 10px 30px rgba(17,54,43,.065)
}
#grPublico .gr-btn:not(.cinza):not(.sec),#grCliente .gr-btn:not(.cinza):not(.sec){background:linear-gradient(135deg,#0A5948,#087460);border-color:#0A5948;color:#fff}
#grPublico .gr-btn.ouro,#grCliente .gr-btn.ouro{background:linear-gradient(135deg,#C9A050,#A97924);border-color:#B78A34;color:#102C24}
#grPublico .gr-btn.sec,#grCliente .gr-btn.sec{border-color:#0A5948;color:#0A5948;background:#fff}
#grPublico .gr-campo select,#grCliente .gr-campo select{min-height:46px;background-color:#fff;color:#173229;border-color:#CFC7B5;font-weight:650}
#grPublico #gsSistema,#grPublico [data-sim="sistema"]{border:2px solid #B98C36;background:#FFF9E9}
.ux-finance-system{display:inline-flex;margin-top:9px;padding:5px 9px;border-radius:999px;background:#E5F1EC;color:#0A5948;font-size:.65rem;font-weight:800;letter-spacing:.03em}
.ux-client-hero:after{content:"ALTO BALANÇO I · GRAN RESERVA";position:absolute;right:18px;top:18px;padding:7px 10px;border:1px solid rgba(255,255,255,.25);border-radius:999px;background:rgba(4,31,25,.56);color:#F4DDA7;font-size:.58rem;font-weight:800;letter-spacing:.1em}

html[data-tema="escuro"] #grPublico,html[data-tema="escuro"] #grCliente{
  --pg:#071510;--card:#0D211A;--linha:#29443A;--linha2:#1A342B;
  --tx:#EFF7F3;--tx2:#BDD0C8;--tx3:#91AAA0;--verde-cl:#173B30;
  background:radial-gradient(circle at 85% 0,rgba(198,156,70,.12),transparent 30%),#071510;color:var(--tx)
}
html[data-tema="escuro"] #grPublico .gr-card,html[data-tema="escuro"] #grCliente .gr-card,
html[data-tema="escuro"] #grCliente .ux-shortcut,html[data-tema="escuro"] #grCliente .ux-journey-card,
html[data-tema="escuro"] #grCliente .ux-video-card{background:#0D211A;color:var(--tx);border-color:#29443A}
html[data-tema="escuro"] #grPublico .gr-campo select,html[data-tema="escuro"] #grCliente .gr-campo select{background:#132B23;color:#F2F7F4;border-color:#45665A}
html[data-tema="escuro"] #grPublico #gsSistema,html[data-tema="escuro"] #grPublico [data-sim="sistema"]{background:#2D2818;border-color:#C49A43;color:#FFF4D6}
html[data-tema="escuro"] .ux-finance-system{background:#183D32;color:#BFE9D8}

@media(max-width:640px){.ux-client-hero:after{display:none}#grPublico .gr-card,#grCliente .gr-card{padding:18px}.ux-welcome{align-items:flex-start}}

/* assets/css/v313-modern.css */
/* UrbanNIX V31.3 — acabamento responsivo, marca executora e comandos coerentes. */
:root{
  --ux-ink:#102b35;--ux-ink-soft:#557078;--ux-navy:#0a2941;--ux-navy-2:#123f5b;
  --ux-gold:#d4a84c;--ux-gold-soft:#f5e5b8;--ux-mint:#dff4ed;--ux-line:#dce8e6;
  --ux-radius:18px;--ux-shadow:0 18px 50px rgba(9,38,57,.12)
}
html{scroll-behavior:smooth}
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ux-ink)}
button,.btn,.gr-btn,.ux-btn-primario,.ux-btn-fantasma{min-height:44px;border-radius:12px;font-weight:750;letter-spacing:.01em}
button:disabled{cursor:not-allowed;opacity:.6}
button[data-ux-busy]{position:relative;pointer-events:none;color:transparent!important}
button[data-ux-busy]::after{content:"";position:absolute;width:15px;height:15px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:uxSpin .7s linear infinite;color:#fff}
@keyframes uxSpin{to{transform:rotate(360deg)}}
#authOverlay{background:linear-gradient(135deg,#071b2a 0%,#0d4051 52%,#123d50 100%)}
#authOverlay::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 15% 15%,rgba(212,168,76,.22),transparent 34%),radial-gradient(circle at 92% 85%,rgba(73,190,161,.15),transparent 32%);pointer-events:none}
#authOverlay .auth-card{border:1px solid rgba(255,255,255,.22);box-shadow:0 24px 70px rgba(0,0,0,.28);backdrop-filter:blur(14px)}
#authOverlay .auth-card-logo{max-width:155px;height:auto;object-fit:contain}
.ux-auth-nunes{display:flex;align-items:center;gap:10px;margin:0 0 18px;color:#f5e5b8;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;font-weight:800}.ux-auth-nunes img{width:52px;height:52px;object-fit:contain;border-radius:10px;background:#fff}.ux-admin-nunes{display:inline-flex;align-items:center;margin-left:10px}.ux-admin-nunes img{width:38px;height:38px;object-fit:contain;border-radius:9px;background:#fff}.ux-client-company{margin:0 0 18px}.ux-client-company img{width:58px;height:58px}
header.top{min-height:72px;border-bottom:1px solid var(--ux-line);box-shadow:0 6px 24px rgba(12,47,60,.06)}
.brand-logo{object-fit:contain}.ux-emp-switch{transition:background .2s,transform .2s}.ux-emp-switch:hover{transform:translateY(-1px)}
.ux30-sync-pill{border:1px solid var(--ux-line)!important;background:#fff!important;color:var(--ux-ink)!important;box-shadow:0 6px 18px rgba(12,47,60,.07)!important}
.ux30-sync-pill i{background:#2aa879!important}.ux30-sync-pill.pending i{background:var(--ux-gold)!important}.ux30-sync-pill.error i{background:#ce5e59!important}
.gr-home,.ux-home{overflow:hidden;background:linear-gradient(180deg,#f8fbfa 0%,#fff 58%,#f4f8f7 100%)}
.ux-nunes-brand{display:inline-flex;align-items:center;gap:12px;color:inherit;text-decoration:none}.ux-nunes-brand img{width:62px;height:62px;border-radius:14px;object-fit:contain;background:#fff;box-shadow:0 8px 22px rgba(0,0,0,.12)}.ux-nunes-brand span{display:grid;gap:2px}.ux-nunes-brand b{font-size:.83rem;letter-spacing:.08em;text-transform:uppercase}.ux-nunes-brand small{font-size:.65rem;opacity:.72}
.ux-nunes-marquee{position:relative;display:flex;gap:16px;overflow:hidden;padding:18px 0;background:#0a2941;border-top:1px solid rgba(255,255,255,.12);border-bottom:1px solid rgba(255,255,255,.12)}
.ux-nunes-marquee-track{display:flex;gap:16px;width:max-content;animation:uxMarquee 34s linear infinite}.ux-nunes-marquee:hover .ux-nunes-marquee-track{animation-play-state:paused}.ux-nunes-marquee img{width:220px;height:132px;object-fit:cover;border-radius:14px;opacity:.9;filter:saturate(.92);box-shadow:0 8px 26px rgba(0,0,0,.24)}
@keyframes uxMarquee{to{transform:translateX(-50%)}}
.ux-company-card{display:flex;align-items:center;gap:16px;padding:18px 20px;border:1px solid var(--ux-line);border-radius:16px;background:rgba(255,255,255,.8);box-shadow:var(--ux-shadow)}.ux-company-card img{width:76px;height:76px;object-fit:contain;border-radius:12px;background:#fff}.ux-company-card strong{display:block;color:var(--ux-navy);font-size:1rem}.ux-company-card span{display:block;color:var(--ux-ink-soft);font-size:.78rem;margin-top:4px}
.ux-executora-mark{position:absolute;right:12px;bottom:12px;display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:999px;background:rgba(255,255,255,.92);color:#0a2941;font-size:.6rem;font-weight:800;box-shadow:0 4px 12px rgba(0,0,0,.14)}.ux-executora-mark img{width:20px;height:20px;object-fit:contain;border-radius:4px;background:#fff}
.ux-nunes-footer{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:20px 0;color:var(--ux-ink-soft);font-size:.76rem}.ux-nunes-footer img{width:86px;height:86px;object-fit:contain;border-radius:14px;background:#fff}
html[data-tema="escuro"]{--ux-ink:#e8f4f0;--ux-ink-soft:#a6c0b8;--ux-line:#23463f;--ux-navy:#d7eee7;--ux-navy-2:#aed8cb}
html[data-tema="escuro"] .ux-company-card,html[data-tema="escuro"] .ux30-sync-pill{background:#102a31!important;color:var(--ux-ink)!important;border-color:#2f5a51!important}.ux-nunes-marquee{background:#081d2e}
@media(max-width:760px){
  header.top{min-height:62px}.top-search{display:none}.user-badge .sync{max-width:140px;font-size:.62rem}.ux-emp-switch{max-width:190px}.ux-emp-switch .ux-emp-txt strong{font-size:.66rem}
  .ux-nunes-marquee{padding:12px 0}.ux-nunes-marquee img{width:170px;height:104px}.ux-nunes-marquee-track{gap:10px;animation-duration:28s}
  .ux-company-card{align-items:flex-start;padding:15px}.ux-company-card img{width:62px;height:62px}.ux-nunes-footer{align-items:flex-start}.ux-nunes-footer img{width:68px;height:68px}
  .gr-btn,.btn,.ux-btn-primario,.ux-btn-fantasma{width:100%;justify-content:center}.gr-hero-actions,.ux-hero-acoes{display:grid!important;grid-template-columns:1fr;gap:10px}
}
@media(prefers-reduced-motion:reduce){.ux-nunes-marquee-track{animation:none!important}html{scroll-behavior:auto}}
/* V31.3.1 — autenticação sempre interativa após expiração/inatividade. */
#authOverlay{z-index:1000001!important;pointer-events:auto!important;isolation:isolate}
#authOverlay[style*="display: none"]{pointer-events:none!important}
#authOverlay input,#authOverlay button{pointer-events:auto!important;position:relative;z-index:2}
#grV261Lock[style*="display: none"],#grV261Master[style*="display: none"]{pointer-events:none!important}

/* assets/css/v315-experience.css */
/* UrbanNIX — one palette, readable surfaces and responsive layouts. */
:root{--ux315-bg:#f4f5f1;--ux315-card:#fff;--ux315-soft:#eaf0ed;--ux315-ink:#193a3b;--ux315-muted:#516a68;--ux315-line:#cedbd5;--ux315-accent:#205958;--ux315-gold:#d7b57b;--ux315-shadow:0 16px 50px #113a3410}
html[data-tema=escuro]{--ux315-bg:#101d1f;--ux315-card:#192b2d;--ux315-soft:#223739;--ux315-ink:#edf4ed;--ux315-muted:#b1c5c1;--ux315-line:#385051;--ux315-accent:#b5d8cd;--ux315-gold:#e3bd7d;--ux315-shadow:0 16px 50px #0002}
html body{background:var(--ux315-bg);color:var(--ux315-ink)}
html #grPublico,html #grCliente{--pg:var(--ux315-bg);--card:var(--ux315-card);--linha:var(--ux315-line);--linha2:var(--ux315-line);--tx:var(--ux315-ink);--tx2:var(--ux315-muted);--tx3:var(--ux315-muted);color:var(--ux315-ink);background:var(--ux315-bg);min-height:100dvh}
html[data-tema] #grPublico .gr-home,html[data-tema] #grPublico .ux-home{background:var(--ux315-bg);color:var(--ux315-ink)}
html[data-tema] :is(#grPublico,#grCliente) :is(.gr-card,.gr-home-stat,.gr-home-feature,.ux-sim,.ux-sim-card,.ux-company-card,.ux-journey-card,.ux-client-gallery){background:var(--ux315-card);color:var(--ux315-ink);border-color:var(--ux315-line)}
html[data-tema] :is(#grPublico,#grCliente) :is(input,select,textarea){background:var(--ux315-card)!important;color:var(--ux315-ink)!important;border-color:var(--ux315-line)!important;min-height:46px;max-width:100%;font-size:16px;color-scheme:light}
html[data-tema=escuro] :is(#grPublico,#grCliente) :is(input,select,textarea){color-scheme:dark}
html[data-tema] :is(#grPublico,#grCliente) :is(.gr-sub,.gr-home-lead,.gr-home-stat small,.gr-home-stat span,.ux-sim-nota,.ux-sim-card dt){color:var(--ux315-muted)}
html[data-tema] :is(#grPublico,#grCliente) :is(.gr-h1,.gr-h2,.gr-home-section h2,.gr-home-feature h3,.gr-home-stat strong,.ux-sim-t,.ux-sim-card h5){color:var(--ux315-ink)}
html[data-tema] :is(#grPublico,#grCliente) .gr-btn.sec{background:var(--ux315-card);color:var(--ux315-accent);border-color:var(--ux315-line)}
html[data-tema=escuro] #appRoot :is(.field input,.field select,.field textarea){background:#192b2d!important;color:#edf4ed!important;border-color:#476064!important}
html[data-tema=claro] #appRoot :is(.block,.card,.stat,.field){color:#183a35}
html[data-tema=claro] #appRoot :is(.muted,.sub,.label,.field small){color:#526760}
html[data-tema=escuro] #appRoot :is(.muted,.sub,.label,.field small){color:#b3c6be}
html body button[data-ux-busy]{pointer-events:auto;color:inherit!important}button[data-ux-busy]::after{display:none!important}
button:focus-visible,a:focus-visible,[role=button]:focus-visible{outline:3px solid #bf9247;outline-offset:4px}
[hidden]{display:none!important}.ux-client-hero:after{content:none!important}
.ux315-header{position:sticky;top:0;z-index:80;background:var(--ux315-card);border-bottom:1px solid var(--ux315-line)}
.ux315-header-inner{max-width:1400px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:14px 4vw}
.ux315-brand{display:flex;align-items:center;gap:12px;border:0;background:none;color:var(--ux315-ink);padding:0;text-align:left;flex-shrink:0}
.ux315-brand img{width:228px;height:70px;object-fit:contain;background:#fbfbf6;border-radius:7px}.ux315-brand small{display:block;font-size:11px;letter-spacing:.13em;margin-top:6px;color:var(--ux315-muted)}
.ux315-monogram{font:32px Georgia;color:var(--ux315-accent);border:1px solid var(--ux315-line);border-radius:50%;width:58px;height:58px;display:grid;place-items:center}
.ux315-header nav{display:flex;gap:6px;flex-wrap:wrap;align-items:center;justify-content:flex-end}
.ux315-header nav button{border:0;background:transparent;color:var(--ux315-ink);padding:10px 12px;font-size:12px;min-height:44px;cursor:pointer;white-space:nowrap}
.ux315-header nav .ux315-back{background:var(--ux315-soft)}
.ux315-header nav button:hover{background:var(--ux315-soft)}
.ux315-hero{position:relative;min-height:650px;display:flex;align-items:center;overflow:hidden;background:#143c42;color:#fff;isolation:isolate}
.ux315-hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:65% 55%;z-index:-3;animation:ux315-drift 24s ease-in-out infinite alternate}
.ux315-hero-shade{position:absolute;inset:0;z-index:-2;background:linear-gradient(90deg,rgba(5,28,34,.93),rgba(5,28,34,.54) 50%,rgba(5,28,34,.07)),linear-gradient(0deg,rgba(5,28,34,.6),transparent 40%)}
.ux315-hero-copy{padding:70px max(5vw,calc((100vw - 1280px)/2));width:100%;animation:ux315-enter .65s ease-out}
.ux315-eyebrow{display:block;font-size:11px;font-weight:750;letter-spacing:.2em;line-height:1.6;color:var(--ux315-muted);margin-bottom:18px}
.ux315-hero .ux315-eyebrow{color:#efd3a4}.ux315-hero h1{font:500 clamp(40px,4.8vw,74px)/1.07 Georgia,serif;letter-spacing:-.035em;margin:0 0 24px;color:#fff;max-width:790px}.ux315-hero h1 em{font-weight:400;color:#e7c99a}.ux315-hero p{font-size:17px;line-height:1.75;max-width:530px;color:#e0e9e5;margin:0 0 30px}
.ux315-actions{display:flex;flex-wrap:wrap;gap:12px}.ux315-primary,.ux315-secondary,.ux315-outline{display:inline-flex;align-items:center;justify-content:center;gap:24px;padding:14px 22px;border-radius:9px;min-height:48px;font-size:13px;font-weight:700;cursor:pointer}.ux315-primary{background:#dfbd86;color:#142f32;border:1px solid #dfbd86}.ux315-primary:hover{background:#edcf9f}.ux315-secondary{background:var(--ux315-card);color:var(--ux315-ink);border:1px solid var(--ux315-line)}.ux315-outline{background:#0c29243d;border:1px solid #ffffff85;color:#fff}.ux315-hero-credit{display:flex;align-items:center;gap:12px;margin-top:38px;font-size:11px;color:#cfddd9;line-height:1.7}.ux315-hero-credit img{width:48px;height:48px;border-radius:50%;object-fit:cover}.ux315-hero-credit b{color:white;font-size:12px}.ux315-hero-caption{position:absolute;right:30px;bottom:24px;font-size:9px;letter-spacing:.15em;color:#f5f3e8}
.ux315-stats{display:grid;grid-template-columns:repeat(4,1fr);padding:35px 5vw;background:var(--ux315-card);border-bottom:1px solid var(--ux315-line)}.ux315-stats div{display:flex;flex-direction:column;align-items:center;gap:9px;border-right:1px solid var(--ux315-line)}.ux315-stats div:last-child{border:0}.ux315-stats b{font:36px Georgia;color:var(--ux315-ink)}.ux315-stats span{font-size:12px;color:var(--ux315-muted)}
.ux315-section{max-width:1280px;padding:80px 36px;margin:auto}.ux315-section-head{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:30px}.ux315-section h1,.ux315-section h2,.ux315-sim-section h2,.ux315-location h2{font:500 clamp(30px,3.2vw,46px)/1.18 Georgia,serif;letter-spacing:-.025em;color:var(--ux315-ink);margin:0 0 14px}.ux315-section-head p{max-width:410px;line-height:1.75;font-size:14px;color:var(--ux315-muted)}.ux315-types{display:grid;grid-template-columns:1fr 1fr;gap:28px}.ux315-types article{background:var(--ux315-card);border:1px solid var(--ux315-line);border-radius:16px;overflow:hidden}.ux315-type-image{position:relative;height:290px;overflow:hidden}.ux315-type-image img{width:100%;height:100%;object-fit:cover;transition:transform .45s}.ux315-types article:hover img{transform:scale(1.035)}.ux315-type-image span{position:absolute;bottom:18px;left:20px;background:#f9f5e9;color:#16413f;padding:10px 14px;border-radius:5px;font-size:10px;letter-spacing:.14em;font-weight:800}.ux315-type-copy{padding:26px}.ux315-type-copy h3{font:26px Georgia;margin:0 0 12px}.ux315-type-copy p{color:var(--ux315-muted);font-size:13px}.ux315-type-copy strong{display:block;font-size:18px;margin:20px 0 12px}.ux315-text-link{border:0;background:transparent;padding:8px 0;color:var(--ux315-accent);cursor:pointer}
.ux315-sim-section{padding:70px max(4vw,calc((100vw - 1208px)/2));display:grid;grid-template-columns:.65fr 1.35fr;gap:44px;background:var(--ux315-soft)}.ux315-sim-section>div>p{font-size:14px;line-height:1.85;color:var(--ux315-muted)}.ux315-fine{font-size:12px!important}.ux315-sim-box{min-width:0}.ux315-sim-box>.ux-sim{margin:0;padding:24px;border-radius:16px;border:1px solid var(--ux315-line)}
html[data-tema] .ux-sim-campos{display:grid;grid-template-columns:1fr 1fr;gap:16px}html[data-tema] .ux-sim-campos label{font-size:12px;line-height:1.5;color:var(--ux315-muted)}.ux-sim-campos input,.ux-sim-campos select{width:100%;padding:10px;border:1px solid var(--ux315-line);border-radius:7px;margin-top:5px}.ux-sim-res{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:22px}.ux-sim-card{min-width:0;padding:20px;border:1px solid var(--ux315-line);border-radius:12px}.ux-sim-card dl>div{display:flex;justify-content:space-between;gap:12px;margin:10px 0}.ux-sim-card dd{margin:0;text-align:right;font-weight:600;font-size:12px}.ux-sim-card dt{font-size:11px}.ux-sim-parcela strong{font-size:26px;display:block}.ux-sim-nota,.ux-sim-aviso{font-size:11px;line-height:1.65}.ux-sim-aviso{color:#975716}.ux-sim-parcela small{display:block;line-height:1.6;font-size:11px}
.ux315-gallery{display:grid;grid-template-columns:2fr 1fr 1fr;gap:14px}.ux315-gallery button{padding:0;border:0;overflow:hidden;border-radius:12px;cursor:pointer;background:var(--ux315-soft)}.ux315-gallery button:first-child{grid-row:span 2}.ux315-gallery button:nth-child(4){grid-column:2/4}.ux315-gallery img{display:block;width:100%;height:200px;object-fit:cover;transition:transform .35s}.ux315-gallery button:first-child img{height:414px}.ux315-gallery button:hover img{transform:scale(1.04)}
.ux315-location{padding:60px 24px;background:var(--ux315-soft);text-align:center}.ux315-location p{color:var(--ux315-muted);font-size:14px;margin:20px 0 28px}.ux315-footer{padding:50px 5vw 22px;background:#112f35;color:#ecf2ed}.ux315-footer-grid{display:grid;grid-template-columns:1fr 1.4fr .65fr;gap:30px;max-width:1220px;margin:auto}.ux315-footer p{color:#b2c5c2;font-size:12px}.ux315-footer button{display:block;background:none;color:#d6e4e0;border:0;padding:9px 0;font-size:12px;text-align:left}.ux315-executor{display:flex;align-items:center;gap:18px}.ux315-executor img{width:76px;height:76px;border-radius:12px;object-fit:contain;background:white}.ux315-executor div{display:grid;gap:8px}.ux315-executor small{font-size:9px;letter-spacing:.16em;color:#dfbd86}.ux315-executor strong{font-size:15px}.ux315-executor span{font-size:11px;color:#b7cdca}.ux315-footer-bottom{max-width:1220px;margin:32px auto 0;border-top:1px solid #48605d;padding-top:22px;display:flex;justify-content:space-between;gap:16px;font-size:10px;color:#b7cdca}.ux315-footer-logo{width:180px;max-height:65px;object-fit:contain}
.ux315-filters{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:16px;align-items:end;background:var(--ux315-card);border:1px solid var(--ux315-line);padding:20px;border-radius:14px}.ux315-filters label{display:grid;gap:8px;font-size:12px;color:var(--ux315-muted)}.ux315-filters input,.ux315-filters select{min-width:0;padding:10px;border:1px solid var(--ux315-line);border-radius:8px}.ux315-unit-list{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:25px}.ux315-unit{display:grid;gap:8px;text-align:left;padding:18px;border:1px solid var(--ux315-line);border-radius:11px;background:var(--ux315-card);color:var(--ux315-ink);cursor:pointer}.ux315-unit strong{font-size:18px}.ux315-unit span,.ux315-unit small{font-size:11px;color:var(--ux315-muted)}.ux315-unit b{font-size:14px}.ux315-filtered{opacity:.16;pointer-events:none}.ux315-login-logo{display:block;width:290px;max-width:100%;margin:0 auto 28px;background:#fafbf6;border-radius:12px}.ux-pl-quadro{overflow:auto;background:var(--ux315-soft)!important;min-height:330px}.ux-pl-svg{min-width:580px;max-height:720px;display:block;width:100%}.ux-pl-num{font-size:2.2px!important;fill:#fff!important;paint-order:stroke;stroke:#193c34;stroke-width:.15px}.ux-pl-lado{min-width:0}.ux-pl-sim .ux-sim-res{grid-template-columns:1fr 1fr}
.ux315-road{fill:#465d62;stroke:#b5c4c0;stroke-width:.35}.ux315-road-line{stroke:#f0d391;stroke-width:.35;stroke-dasharray:4 3}.ux315-road-name{fill:#fff;font:700 2.9px Arial;letter-spacing:.25px;text-anchor:middle;paint-order:stroke;stroke:#465d62;stroke-width:1.2px}
.ux315-access-row{display:flex;align-items:center;flex-wrap:wrap;gap:20px;padding:20px 0;border-bottom:1px solid var(--ux315-line)}.ux315-access-row strong{min-width:140px}.ux315-access-row label{display:flex;align-items:center;gap:7px;font-size:13px}.ux315-access-row [role=status]{font-size:12px;color:var(--ux315-accent)}.ux315-overview{background:var(--ux315-card);border:1px solid var(--ux315-line);border-radius:16px;padding:28px;margin:24px 0}.ux315-overview h3{font:26px Georgia;margin:0}.ux315-overview .ux315-section-head>span{font-size:11px;color:var(--ux315-muted)}.ux315-chart-row{display:grid;grid-template-columns:220px 1fr 160px;align-items:center;gap:22px;padding:18px 0}.ux315-chart-row div>span{display:block}.ux315-chart-row b{font-size:13px}.ux315-chart-row div>span:not(:only-child){font-size:11px;color:var(--ux315-muted);margin-top:7px}.ux315-chart-track{height:16px;background:var(--ux315-soft);border-radius:8px;overflow:hidden}.ux315-chart-track>span{height:100%;background:linear-gradient(90deg,#2e7370,#c5aa73);border-radius:8px}.ux315-chart-row>strong{font-size:14px;text-align:right}
#grAdminFooter{width:100%;display:flex;flex-wrap:wrap;justify-content:space-between;gap:14px;margin-top:36px;padding:24px 0;border-top:1px solid var(--ux315-line);font-size:11px;color:var(--ux315-muted)}
html[data-enterprise=urbanix] .ux-hero{position:relative;isolation:isolate;overflow:hidden;min-height:590px;background:#10343d;color:#f1f5ef;padding-right:42%}.ux315-photo-stack{position:absolute;right:5%;top:10%;width:35%;height:80%;z-index:0;transform:rotate(-5deg);pointer-events:none}.ux315-photo-stack img{position:absolute;width:85%;height:48%;object-fit:cover;border-radius:18px;border:7px solid #dce7df;box-shadow:0 20px 45px #0004;animation:ux315-float 10s ease-in-out infinite alternate}.ux315-photo-stack img:nth-child(1){left:0;top:0}.ux315-photo-stack img:nth-child(2){right:0;top:26%;transform:rotate(7deg);animation-delay:-2s}.ux315-photo-stack img:nth-child(3){right:6%;bottom:0;transform:rotate(10deg);animation-delay:-4s}.ux-home .ux-hero-in{position:relative;z-index:2}.ux-home .ux-hero h1,.ux-home .ux-hero p{color:#f1f5ef!important}.ux-home .ux-rodape{background:#102f36;color:#eef6f0;padding:50px 5vw}.ux-home .ux-rodape button{background:transparent;border:1px solid #69817b;color:#fff;padding:10px 20px}.ux-home .ux-rodape small{display:block;padding-top:25px;color:#b5c8c2}
@keyframes ux315-drift{from{transform:scale(1)}to{transform:scale(1.05) translateX(-.5%)}}@keyframes ux315-float{from{translate:0 -5px}to{translate:0 8px}}@keyframes ux315-enter{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:901px) and (max-width:1280px){.ux315-header-inner{padding-inline:24px;gap:10px}.ux315-header nav button{font-size:11px;padding-inline:8px}.ux315-brand img{width:185px}.ux315-hero{min-height:560px}.ux315-sim-section{grid-template-columns:1fr 1.5fr;gap:28px}#appRoot .wrap{padding-inline:24px}}
@media(max-width:900px){.ux315-header-inner{flex-direction:column;align-items:stretch;gap:10px;padding:10px 18px}.ux315-brand{align-self:center}.ux315-brand img{height:52px;width:200px}.ux315-header nav{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;scrollbar-width:thin;gap:5px}.ux315-header nav button{flex:0 0 auto;font-size:11px}.ux315-section{padding:48px 22px}.ux315-section-head{align-items:flex-start;flex-direction:column;gap:10px}.ux315-sim-section{grid-template-columns:1fr;padding:48px 22px;gap:24px}.ux315-sim-section>div:first-child{max-width:600px}.ux315-stats b{font-size:29px}.ux315-stats span{font-size:10px}.ux315-types{gap:18px}.ux315-type-image{height:220px}.ux315-unit-list{grid-template-columns:repeat(3,1fr)}.ux315-filters{grid-template-columns:1fr 1fr}.ux315-footer-grid{grid-template-columns:1fr 1fr}.ux315-executor{grid-column:1/-1;grid-row:2}.ux315-chart-row{grid-template-columns:160px 1fr 130px;gap:12px}.ux315-chart-row>strong{font-size:12px}html[data-enterprise=urbanix] .ux-hero{padding-right:35%}.ux315-photo-stack{right:3%;width:30%}.ux-pl-sim .ux-sim-res{grid-template-columns:1fr}}
@media(max-width:600px){.ux315-hero{min-height:600px;align-items:flex-end}.ux315-hero-photo{object-position:60% 40%}.ux315-hero-shade{background:linear-gradient(0deg,rgba(8,32,39,.98),rgba(8,32,39,.58) 60%,rgba(8,32,39,.1))}.ux315-hero-copy{padding:115px 24px 54px}.ux315-hero h1{font-size:43px}.ux315-hero p{font-size:14px;line-height:1.7}.ux315-hero-caption{display:none}.ux315-actions{display:grid;grid-template-columns:1fr;width:100%}.ux315-hero-credit{margin-top:25px}.ux315-stats{grid-template-columns:1fr 1fr;gap:24px 0;padding:26px 14px}.ux315-stats div:nth-child(2){border:0}.ux315-types{grid-template-columns:1fr}.ux315-type-image{height:230px}.ux315-section{padding:42px 18px}.ux315-section h1,.ux315-section h2,.ux315-sim-section h2{font-size:34px}.ux315-sim-box>.ux-sim{padding:17px}html[data-tema] .ux-sim-campos{grid-template-columns:1fr 1fr;gap:12px}.ux-sim-res{grid-template-columns:1fr}.ux-sim-campos label{min-width:0}.ux315-gallery{grid-template-columns:1fr 1fr}.ux315-gallery button:first-child{grid-column:1/-1;grid-row:auto}.ux315-gallery button:first-child img{height:230px}.ux315-gallery button:nth-child(4){grid-column:1/-1}.ux315-gallery img{height:170px}.ux315-footer{padding:38px 24px 22px}.ux315-footer-grid{gap:24px}.ux315-footer-bottom{flex-direction:column;line-height:1.7}.ux315-filters{padding:15px;gap:12px}.ux315-filters button{font-size:11px;padding:8px;min-height:46px}.ux315-unit-list{grid-template-columns:1fr 1fr;gap:9px}.ux315-unit{padding:13px}.ux315-unit b{font-size:12px}.ux-pl-quadro{min-height:310px;max-height:460px}.ux-pl-svg{min-width:560px}.ux315-overview{padding:20px}.ux315-chart-row{grid-template-columns:1fr 1fr;gap:12px}.ux315-chart-track{grid-row:2;grid-column:1/-1}.ux315-chart-row>strong{grid-column:2;grid-row:1}.ux315-access-row{gap:14px}.ux315-access-row strong{width:100%}html[data-enterprise=urbanix] .ux-hero{padding-right:22px;padding-bottom:285px;min-height:790px}.ux315-photo-stack{top:auto;bottom:25px;height:235px;right:9%;width:78%;transform:rotate(-3deg)}.ux315-photo-stack img{width:65%;height:75%}#appRoot .wrap{padding:16px 12px 90px!important}#appRoot .page-heading{gap:12px;flex-wrap:wrap}#appRoot .page-heading h1,#appRoot .page-heading h2{font-size:26px}#appRoot .block{padding:17px!important;border-radius:13px}#appRoot .quadra-lots{grid-template-columns:repeat(2,minmax(0,1fr))!important}#appRoot .table-wrap{overflow-x:auto;max-width:100%;overscroll-behavior:contain}#appRoot .btn.small{width:auto;min-height:42px}#appRoot .field input,#appRoot .field select{font-size:16px;min-height:46px}#grPublico .gr-btn,#grCliente .gr-btn{max-width:100%}.ux315-header button,.ux315-footer button{width:auto!important}.gr-menu{overflow:auto}.gr-home-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important}.gr-home-stat strong{font-size:26px!important}.ux-pl-info>div{flex-wrap:wrap}.gr-admin-footer-v26{font-size:10px}}
@media(prefers-reduced-motion:reduce){.ux315-hero-photo,.ux315-photo-stack img,.ux315-hero-copy{animation:none!important}.ux315-type-image img,.ux315-gallery img{transition:none!important}html{scroll-behavior:auto!important}}
@media print{.ux315-header,.ux315-footer,.ux315-contract-controls{display:none!important}.ux315-contract{background:#fff!important;color:#111!important}}
.ux315-map-tools{display:flex;align-items:center;gap:8px;margin:12px 0;flex-wrap:wrap}.ux315-map-tools button{border:1px solid var(--ux315-line);background:var(--ux315-card);color:var(--ux315-ink);padding:8px 16px;border-radius:8px;min-height:44px}.ux315-map-tools span{font-size:13px;color:var(--ux315-muted)}.ux315-terms-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.ux315-terms-grid label{display:grid;gap:6px}.ux315-terms-grid input,.ux315-terms-grid select{width:100%;box-sizing:border-box}.ux315-housing-contract{background:white;color:#183b44;padding:24px;font:14px/1.6 Georgia,serif}.ux315-housing-contract header{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:2px solid #b99956;padding-bottom:18px}.ux315-housing-contract header img{width:240px;max-width:60%}.ux315-housing-contract h1{font-size:22px;line-height:1.3}.ux315-housing-contract h2{font-size:17px;margin-top:24px}.ux315-housing-contract table{width:100%;border-collapse:collapse}.ux315-housing-contract th,.ux315-housing-contract td{padding:9px;border-bottom:1px solid #ddd;text-align:left;background:white;color:#183b44}.ux315-housing-contract footer{display:flex;align-items:center;gap:14px;margin-top:28px;font:12px/1.5 sans-serif}.ux315-housing-contract footer img{width:65px}.ux315-draft-note{background:#f6f1e6;padding:10px;border-left:3px solid #b99956}@media(max-width:600px){.ux315-terms-grid{grid-template-columns:1fr}.ux315-housing-contract{padding:12px}.ux315-housing-contract header{align-items:flex-start;flex-direction:column}}@media print{.ux315-contract-editor{display:none!important}.ux315-housing-contract{padding:0;box-shadow:none}.ux315-housing-contract h2{break-after:avoid}.ux315-housing-contract table{break-inside:avoid}}

.ux315-data-notice{position:fixed;bottom:16px;right:16px;z-index:5000;border:1px solid var(--ux315-gold);background:var(--ux315-card);color:var(--ux315-ink);padding:12px 20px;border-radius:12px;box-shadow:var(--ux315-shadow);font:600 14px/1.5 sans-serif;max-width:calc(100vw - 32px)}

/* Final live review: readable Gran hero and a single return navigation. */
#grPublico:has(.ux315-header) .ux-voltar-vitrine{display:none!important}
html[data-tema=claro] #grPublico .gr-hero-premium .gr-hero-title{color:#173d36!important}
html[data-tema=claro] #grPublico .gr-hero-premium .gr-hero-title em{color:#8a641c!important}
html[data-tema=claro] #grPublico .gr-hero-premium .gr-hero-copy{color:#405c52!important}
html[data-tema=claro] #grPublico .gr-hero-premium .gr-hero-kicker{color:#795b24!important}
html[data-tema=escuro] #grPublico .gr-hero-premium .gr-hero-title{color:#f1f6ed!important}
html[data-tema=escuro] #grPublico .gr-hero-premium .gr-hero-title em{color:#e4c47b!important}
html[data-tema=escuro] #grPublico .gr-hero-premium .gr-hero-copy{color:#c0d2c6!important}

/* MCMV: automatic band feedback without replacing input fields. */
.ux-sim-enquadramento{grid-column:1/-1;display:grid;gap:5px;padding:16px 18px;border:1px solid var(--ux315-line);border-radius:10px;background:var(--ux315-card)}
.ux-sim-enquadramento span,.ux-sim-enquadramento small{font-size:12px;color:var(--ux315-muted)}
.ux-sim-enquadramento output{font-size:23px;font-weight:700;color:var(--ux315-ink);line-height:1.4}
.ux-sim-detalhes{margin:16px 0;line-height:1.6;font-size:12px;color:var(--ux315-muted)}
.ux-sim-detalhes summary{cursor:pointer;min-height:30px;color:var(--ux315-ink);font-weight:600}
.ux-sim-detalhes a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.ux-sim-campos small{letter-spacing:normal;text-transform:none;font-size:11px;line-height:1.6}
@media(max-width:600px){html[data-tema] .ux-sim-campos{grid-template-columns:1fr}.ux-sim-campos input,.ux-sim-campos select{font-size:16px;min-height:46px}.ux-sim-enquadramento output{font-size:21px}}

/* Simulador Alto: perfil + compra à esquerda; resultado à direita. */
html[data-tema] .ux315-sim-section{display:block;padding:68px max(28px,calc((100% - 1180px)/2));background:var(--ux315-soft)}
.ux315-sim-section>div:first-child{max-width:770px;margin:0 0 28px}.ux315-sim-section h2 br{display:none}.ux315-sim-section h2{font-size:42px}.ux315-sim-section>div:first-child p{max-width:700px}
html[data-tema] .ux315-sim-box>.ux-sim{padding:30px;background:var(--ux315-card);border:1px solid var(--ux315-line);border-radius:20px}
.ux-sim-t{margin:0 0 24px!important;font-size:20px!important;font-weight:600}
.ux-sim-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:34px;align-items:start}
.ux-sim-controles,.ux-sim-resultado{min-width:0}.ux-sim-resultado{position:sticky;top:100px}
.ux-sim-grupo{min-width:0;border:0;padding:0;margin:0 0 26px}.ux-sim-grupo legend{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:600;color:var(--ux315-ink);padding:0;margin-bottom:16px;float:none;width:auto}
.ux-sim-grupo legend b{display:grid;place-items:center;width:29px;height:29px;border:1px solid var(--ux315-line);border-radius:50%;font-size:11px;font-weight:500;color:var(--ux315-accent)}
.ux-sim-ajuda{font-size:12px!important;line-height:1.65!important;margin:0 0 15px!important;color:var(--ux315-muted)}.ux-sim-campos+.ux-sim-ajuda{margin-top:10px!important;margin-bottom:0!important}
html[data-tema] .ux-sim-campos{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:17px}.ux-sim-inteiro{grid-column:1/-1}
html[data-tema] .ux-sim-campos label{font-size:12px;letter-spacing:0;text-transform:none;gap:5px;min-width:0;color:var(--ux315-ink)}.ux-sim-campos input,.ux-sim-campos select{margin:0;min-width:0;box-sizing:border-box;font-size:15px}
.ux-sim-opcional{padding:15px 0;margin:0;border-top:1px solid var(--ux315-line)}.ux-sim-opcional summary{font-size:12px;line-height:1.6}.ux-sim-opcional summary span{font-size:10px;font-weight:400;color:var(--ux315-muted);margin-left:8px}.ux-sim-opcional[open] summary{margin-bottom:16px}
.ux-sim-resultado .ux-sim-enquadramento{padding:20px 22px;border-bottom:0;border-radius:13px 13px 0 0;background:var(--ux315-soft);gap:5px}.ux-sim-enquadramento output{font-size:27px}.ux-sim-enquadramento small{font-size:12px}
.ux-sim-resultado .ux-sim-res{display:block;margin-top:0}.ux-sim-res>.ux-sim-card{border-radius:0 0 13px 13px;padding:22px}
.ux-sim-resultado-titulo span{font-size:9px;letter-spacing:.16em;color:var(--ux315-muted)}.ux-sim-resultado-titulo h5{font-size:20px;font-weight:500;margin:5px 0 20px;color:var(--ux315-ink)}
.ux-sim-card dl>div{gap:20px;margin:13px 0;align-items:baseline}.ux-sim-card dt{font-size:12px;line-height:1.5}.ux-sim-card dd{font-size:14px;white-space:nowrap}.ux-sim-card dl .forte{border-top:1px solid var(--ux315-line);padding-top:15px;margin-top:16px}.ux-sim-card .forte dd{font-size:18px}
.ux-sim-card .ux-sim-parcela{background:var(--ux315-soft);padding:18px;border-radius:10px;margin:0 0 21px;color:var(--ux315-ink)}.ux-sim-card .ux-sim-parcela>strong{font-size:36px;line-height:1.35;color:var(--ux315-ink)}.ux-sim-card .ux-sim-parcela>span{font-size:11px;color:var(--ux315-muted)}.ux-sim-card .ux-sim-parcela.nao>strong{color:#ab4c32}html[data-tema=escuro] .ux-sim-card .ux-sim-parcela.nao>strong{color:#f4b393}
.ux-sim-comparar{margin:17px 0 0;padding:0 3px}.ux-sim-comparar summary{font-size:12px;padding:8px 0}.ux-sim-comparar .ux-sim-card{margin-top:12px;background:var(--ux315-soft)!important}
.ux-sim-preco{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:12px;padding:14px 16px;border-radius:8px;background:var(--ux315-soft)}.ux-sim-preco span{font-size:12px}.ux-sim-preco strong{font-size:22px}
.ux-pl-sim .ux-sim-layout{grid-template-columns:1fr}.ux-pl-sim .ux-sim-resultado{position:static}
@media(max-width:1000px){.ux-sim-layout{gap:22px}.ux-sim-resultado{top:120px}.ux-sim-card dd{font-size:13px}}
@media(max-width:760px){html[data-tema] .ux315-sim-section{padding:42px 16px}html[data-tema] .ux315-sim-box>.ux-sim{padding:20px 16px;border-radius:15px}.ux315-sim-section h2{font-size:34px}.ux-sim-layout{grid-template-columns:1fr;gap:22px}.ux-sim-resultado{position:static}.ux-sim-t{font-size:19px!important;margin-bottom:25px!important}.ux-sim-res>.ux-sim-card{padding:20px}.ux-sim-campos input,.ux-sim-campos select{font-size:16px!important;min-height:48px}.ux-sim-grupo{margin-bottom:25px}.ux-sim-enquadramento output{font-size:25px}}
@media(max-width:450px){html[data-tema] .ux-sim-campos{grid-template-columns:1fr}.ux-sim-inteiro{grid-column:auto}.ux-sim-card .ux-sim-parcela>strong{font-size:33px}}
/* Refreshed vector brand: transparent in light mode, white in dark mode. */
.ux315-brand img{width:240px;height:68px;background:transparent;border-radius:0}html[data-tema=escuro] .ux315-brand img{filter:none}
@media(max-width:900px){.ux315-brand img{width:215px;height:57px}}

/* Map placement is explicit: toolbar must never occupy the drawing column. */
html[data-tema] .ux-pl{grid-template-columns:minmax(0,1fr) minmax(240px,290px);grid-template-areas:"top top" "tools tools" "canvas detail";gap:16px;align-items:start}
.ux-pl>.ux-pl-topo{grid-area:top}.ux-pl>.ux315-map-tools{grid-area:tools;display:flex;align-items:center;flex-wrap:wrap;gap:9px;padding:0}.ux315-map-tools output{margin-left:auto;font-size:12px;font-variant-numeric:tabular-nums;color:var(--ux315-muted)}
html[data-tema] .ux-pl>.ux-pl-quadro{grid-area:canvas;display:block;height:clamp(380px,62vh,620px);min-width:0;min-height:0;max-height:none;padding:0;overflow:hidden;position:relative;user-select:none;background:var(--ux315-soft);border:1px solid var(--ux315-line);border-radius:12px}
html[data-tema] .ux-pl-quadro .ux-pl-svg{display:block;width:100%!important;height:100%!important;min-width:0!important;max-width:none!important;max-height:none!important;transform:none!important}
.ux-pl>.ux-pl-lado{grid-area:detail;min-width:0;max-width:100%;border:1px solid var(--ux315-line);border-radius:12px;background:var(--ux315-card);padding:20px}
.ux-pl-quadro.is-zoomed{cursor:grab}.ux-pl-quadro.is-zoomed:active{cursor:grabbing}.ux315-map-tools button:disabled{opacity:.45;cursor:default}.ux-pl-lado .ux-pl-simular{width:100%;min-height:46px;margin-top:16px}
.ux-pl:has(.ux-pl-sim:not(:empty)){grid-template-areas:"top top" "tools tools" "canvas canvas" "detail detail"}
@media(max-width:800px){html[data-tema] .ux-pl,html[data-tema] .ux-pl:has(.ux-pl-sim:not(:empty)){grid-template-columns:minmax(0,1fr);grid-template-areas:"top" "tools" "canvas" "detail"}.ux315-map-tools>span{order:2;flex-basis:100%;font-size:11px}html[data-tema] .ux-pl>.ux-pl-quadro{height:clamp(300px,55vh,500px)}.ux-pl>.ux-pl-lado{padding:18px}}
/* Render gallery and document composer, V31.5.5 */
.ux315-gallery button{position:relative;overflow:hidden;isolation:isolate;min-height:230px;border-radius:18px;background:#19382f;color:#fff;text-align:left}
.ux315-gallery button img{width:100%;height:100%;min-height:230px;object-fit:cover;transition:transform 650ms ease}
.ux315-gallery button:hover img,.ux315-gallery button:focus-visible img{transform:scale(1.045)}
.ux315-gallery button span{position:absolute;inset:auto 0 0;padding:44px 18px 18px;background:linear-gradient(transparent,rgba(7,24,19,.85));font-size:14px;font-weight:600;color:#fff}
.ux315-gallery button:last-child{grid-column:1/-1;max-height:460px}
.ux315-type-image img[src*="fachada-clara"]{object-position:50% 55%}
.ux315-operation-summary{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:20px;margin:20px 0;border:1px solid var(--line,#b6c9bf);border-radius:14px;background:var(--surface,#f2f7f3)}
.ux315-operation-summary strong{display:block;font-size:26px;margin-top:6px;color:var(--ink,#18382b)}
.ux315-terms-grid input[readonly]{font-weight:700;background:var(--surface,#edf3ee);opacity:.9}
.ux315-contract-editor [role=status]{min-height:24px;color:var(--ink,#214e37)}
.ux315-contract-editor .ux315-invalid{color:#bb332c}
.ux315-doc-actions{display:flex;flex-wrap:wrap;gap:10px}
.ux315-delivery-dialog{width:min(900px,calc(100% - 24px));max-height:90dvh;overflow:auto;border:1px solid #abc1b5;border-radius:20px;padding:28px;background:var(--bg,#fff);color:var(--ink,#18382b)}
.ux315-delivery-dialog::backdrop{background:rgba(5,18,12,.68)}
.ux315-delivery-dialog label{display:flex;flex-direction:column;gap:7px;margin-bottom:12px}
.ux315-delivery-dialog input,.ux315-delivery-dialog select,.ux315-delivery-dialog textarea{min-height:44px;border:1px solid #82988b;border-radius:8px;padding:10px;background:var(--card,#fff);color:var(--ink,#18382b);font:inherit}
.ux315-delivery-dialog [data-close]{min-width:44px;min-height:44px}
@media(max-width:700px){.ux315-gallery{grid-template-columns:1fr!important}.ux315-gallery button{min-height:240px}.ux315-gallery button:last-child{max-height:280px}.ux315-operation-summary{grid-template-columns:1fr}.ux315-doc-actions{flex-direction:column}.ux315-doc-actions button{width:100%;min-height:48px}.ux315-delivery-dialog{padding:18px}.ux315-delivery-dialog input,.ux315-delivery-dialog textarea,.ux315-delivery-dialog select,.ux315-contract-editor input,.ux315-contract-editor select{font-size:16px}.ux315-terms-grid{grid-template-columns:1fr!important}}
@media(prefers-reduced-motion:reduce){.ux315-gallery button img{transition:none!important;transform:none!important}}

/* Gran Reserva Amarante — approved presentation images, Amarante / PI. */
.gr-gran-render-hero{display:block;position:relative;width:100%;min-width:0;padding:0;border:1px solid #8b9e8b66;border-radius:24px;overflow:hidden;background:#16392e;cursor:pointer;text-align:left;box-shadow:0 20px 50px #071e2024}
.gr-gran-render-hero img{display:block;width:100%;height:auto;aspect-ratio:1616/973;object-fit:contain}
.gr-gran-render-hero>span{display:flex;flex-direction:column;gap:5px;padding:17px 20px;color:#fff;background:#16392e}
.gr-gran-render-hero b{font:500 21px/1.2 Georgia,serif}.gr-gran-render-hero small{color:#e1cfac;font-size:12px}
.gr-gran-render-hero:focus-visible,.gr-gran-renders .gr-gallery-card:focus-visible{outline:3px solid #d7b166;outline-offset:5px}
.gr-gran-renders .gr-gallery-grid{min-height:590px}.gr-gran-renders .gr-gallery-card{margin:0;padding:0 0 75px;background:#102b23}
.gr-gran-renders .gr-gallery-card img{width:100%;height:100%;object-fit:contain;transform:none!important;filter:none!important}
.gr-gran-renders .gr-gallery-card::after{display:none}.gr-gran-renders .gr-gallery-caption{bottom:16px}
@media(max-width:700px){.gr-gran-renders .gr-gallery-grid,.gr-gran-renders.gr-carousel-mode .gr-gallery-grid{min-height:410px}.gr-gran-renders .gr-gallery-card{border-radius:16px}.gr-gran-render-hero{border-radius:18px}.gr-gran-renders .gr-gallery-caption strong{font-size:14px}.gr-gran-renders .gr-gallery-caption{left:16px;right:16px}}

.gr-gran-renders .gr-home-lead{color:#c8d8cf!important}.gr-gran-renders .gr-gallery-note{color:#aec2b6!important}

/* Gran Reserva film: native controls and no media preload. */
.gr-gran-video{scroll-margin-top:110px}
.gr-gran-video .gr-gran-video-shell{max-width:1100px;margin:30px auto 0}
.gr-gran-video video{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:contain;background:#091f1a;border:1px solid #b6a57b55;border-radius:18px;box-shadow:0 16px 44px #061f2020}
.gr-gran-video video[data-orientation=vertical]{aspect-ratio:9/16;max-width:480px;margin-inline:auto}
.gr-gran-video video:focus-visible{outline:3px solid #c3a368;outline-offset:5px}
@media(max-width:600px){.gr-gran-video .gr-gran-video-shell{margin-top:22px}.gr-gran-video video{border-radius:12px}.gr-gran-video{scroll-margin-top:135px}}
/* Audit: readable amounts, keyboard focus and predictable controls in both themes. */
.ux315-header nav .ux315-back{background:var(--ux315-soft)!important;color:var(--ux315-ink)!important}
html[data-tema=escuro] .ux-sim-aviso{color:#f3ca8b}
html[data-tema=escuro] .ux315-invalid{color:#ffb6ac}
:is(#grPublico,#grCliente,#appRoot) :is(button,a,input,select,textarea,summary):focus-visible{outline:3px solid var(--ux315-accent);outline-offset:3px}
.ux-num-grade{grid-template-columns:repeat(5,minmax(0,1fr))!important}
.ux-num{min-width:0;padding-inline:18px!important}
.ux-num b{font-size:clamp(18px,1.75vw,28px)!important;line-height:1.4;white-space:normal!important;overflow-wrap:anywhere}
.ux315-data-notice{max-width:min(92vw,520px);color:var(--ux315-ink)!important;background:var(--ux315-card)!important;border:1px solid var(--ux315-line);font-size:13px;line-height:1.5;pointer-events:none;bottom:72px!important}
.ux315-filters label,.ux315-access-row label{min-width:0}
.ux315-footer button{min-height:44px;cursor:pointer}
@media(max-width:900px){.ux-num-grade{grid-template-columns:repeat(3,minmax(0,1fr))!important}.ux-num b{font-size:24px!important}}
@media(max-width:600px){.ux-num-grade{grid-template-columns:repeat(2,minmax(0,1fr))!important}.ux-num:last-child{grid-column:1/-1}.ux-num b{font-size:24px!important}.ux315-terms-grid{grid-template-columns:1fr!important}.ux315-doc-actions{display:grid;grid-template-columns:1fr;gap:10px}.ux315-doc-actions button{white-space:normal;min-height:46px}.ux315-footer-grid{grid-template-columns:1fr}.ux315-executor{grid-row:auto}.ux315-header{scroll-margin-top:12px}.ux315-section,.ux315-sim-section{scroll-margin-top:125px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}.gr-gallery-card,.ux315-photo-stack img{animation:none!important;transition:none!important}}

/* Scoped plant controls: readable and usable without precision tapping on mobile. */
.ux-pl-busca{display:flex;align-items:center;gap:10px;flex:1 1 100%;font-size:12px;color:var(--ux315-ink);min-width:0}.ux-pl-busca select{min-width:0;max-width:100%;flex:1;min-height:44px;padding:10px 12px;border:1px solid var(--ux315-line);border-radius:9px;background:var(--ux315-card);color:var(--ux315-ink);font:inherit}.ux-pl-area{pointer-events:none}.ux-pl-monte-actions{display:grid!important;gap:9px!important;border:0!important;padding:0!important}.ux-pl-monte-actions a.ux-pl-simular{display:block;text-align:center;text-decoration:none;white-space:normal;line-height:1.5;margin-top:5px}.ux-pl-monte-actions .ux-pl-aviso{margin-bottom:0}
[data-ux-planta-id="4"] .ux-pl-num{font-size:8px!important;stroke-width:.3px}[data-ux-planta-id="4"] .ux-pl-preco{display:none!important}
@media(max-width:600px){.ux-pl-busca{align-items:stretch;flex-direction:column;gap:6px}.ux-pl-busca select{width:100%;font-size:16px}.ux-pl>.ux315-map-tools button{min-width:44px;min-height:44px}}
[data-ux-planta-id="4"] .ux-pl-info .ux-pl-selo{color:#fff}

/* Simulate only when the visitor chooses to begin. */
.ux315-sim-disclosure{background:var(--ux315-card);border:1px solid var(--ux315-line);border-radius:16px;overflow:hidden}
.ux315-sim-disclosure>summary{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:104px;padding:24px 28px;cursor:pointer;list-style:none;color:var(--ux315-ink)}
.ux315-sim-disclosure>summary::-webkit-details-marker{display:none}.ux315-sim-disclosure>summary::marker{content:''}
.ux315-sim-disclosure>summary span{display:flex;flex-direction:column;gap:7px}.ux315-sim-disclosure>summary strong{font-size:19px;line-height:1.45}.ux315-sim-disclosure>summary small{font-size:14px;line-height:1.7;color:var(--ux315-muted)}
.ux315-sim-disclosure>summary>b{font-size:27px;font-weight:400;transition:transform .2s ease}
.ux315-sim-disclosure>summary:hover{background:var(--ux315-soft)}.ux315-sim-disclosure>summary:focus-visible{outline:3px solid var(--ux315-accent);outline-offset:-4px}
.ux315-sim-disclosure[open]>summary{border-bottom:1px solid var(--ux315-line)}.ux315-sim-disclosure[open]>summary>b{transform:rotate(45deg)}
.ux315-sim-disclosure>div>.ux-sim{margin:0;border:0;border-radius:0}
@media(max-width:600px){.ux315-sim-disclosure>summary{padding:22px 18px}.ux315-sim-disclosure>summary strong{font-size:17px}.ux315-sim-disclosure>summary small{font-size:13px}.ux315-sim-disclosure>div>.ux-sim{padding:18px 14px}}
@media(prefers-reduced-motion:reduce){.ux315-sim-disclosure>summary>b{transition:none}}

/* assets/css/monte-siao-contract.css */
/* Readable project-specific documents on a phone and across A4 pages. */
.ux-monte-contract,.ux-customer-manual{position:relative;isolation:isolate;max-width:100%;box-sizing:border-box;background:#fff!important;color:#172d38!important;overflow-wrap:anywhere}
.ux-monte-contract :is(h1,h2,h3,p,li,th,td,strong),.ux-customer-manual :is(h1,h2,h3,p,li,th,td,strong){color:#172d38!important}
.ux-document-watermark{position:absolute;z-index:2;top:145px;left:50%;width:76%;max-width:580px;transform:translateX(-50%) rotate(-24deg);opacity:.055;pointer-events:none;user-select:none;display:grid;justify-items:center;gap:20px;text-align:center;color:#001b35}
.ux-document-watermark img{width:90%;height:auto;max-height:190px;object-fit:contain}
.ux-document-watermark span{font:700 clamp(16px,3vw,30px)/1.2 Arial,sans-serif;letter-spacing:.12em}
.ux-customer-manual header img{width:230px;height:72px;object-fit:contain;object-position:left center}
.ux-customer-manual .ux-monte-contract-summary{width:100%;table-layout:fixed;border-collapse:collapse}
.ux-customer-manual .ux-monte-contract-summary th{width:42%;vertical-align:top}
.ux-customer-manual :is(th,td){background:#fff;color:#172d38;vertical-align:top}
.ux-customer-manual ol{padding-left:22px}.ux-customer-manual li{margin:10px 0}
.ux-document-intro{font-size:1.08em}.ux-preline{white-space:pre-wrap;overflow-wrap:anywhere}
.ux-housing-manual-actions{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}
.ux-signatures{display:flex;gap:24px;margin-top:52px;break-inside:avoid}
.ux-signatures>div{flex:1;min-width:0;border-top:1px solid #667684;text-align:center;padding-top:8px;overflow-wrap:anywhere}
.ux315-delivery-dialog [role=status]{min-height:1.5em}
.ux-monte-contract{max-width:100%;box-sizing:border-box;overflow-wrap:anywhere}
.ux-monte-contract header img{width:230px;height:72px;object-fit:contain;object-position:left center}
.ux-monte-contract h1,.ux-monte-contract h2{color:#001b35!important}
.ux-monte-contract .ux-monte-contract-summary{width:100%;table-layout:fixed;border-collapse:collapse}
.ux-monte-contract .ux-monte-contract-summary th{width:42%;font-size:13px;vertical-align:top}
.ux-monte-contract .ux-monte-contract-summary td{vertical-align:top}
.ux-monte-contract :is(th,td,p,li){overflow-wrap:anywhere}
.ux-monte-contract-pending{padding-left:22px;margin:12px 0 24px}
.ux-monte-contract-pending li{margin:7px 0}
.ux-monte-contract footer img{width:130px;height:52px;object-fit:contain}
@media(max-width:600px){.ux-monte-contract,.ux-customer-manual{padding:14px;font-size:13px}.ux-monte-contract header,.ux-customer-manual header{gap:10px;flex-wrap:wrap}.ux-monte-contract header img,.ux-customer-manual header img{max-width:100%;width:210px;height:64px}.ux-monte-contract .ux-monte-contract-summary :is(th,td),.ux-customer-manual .ux-monte-contract-summary :is(th,td){font-size:12px;padding:8px 6px}.ux-monte-contract footer{align-items:flex-start;flex-wrap:wrap}.ux-signatures{gap:14px;font-size:12px}.gr-recibo{padding:18px!important}.gr-recibo-topo{gap:12px;flex-wrap:wrap}.gr-recibo-campos{table-layout:fixed}.gr-recibo-campos td:first-child{width:34%}.gr-recibo-campos td{overflow-wrap:anywhere}.gr-recibo-ass span{min-width:0!important;width:100%;overflow-wrap:anywhere}}
@media print{
  .ux-monte-contract,.ux-customer-manual{padding:0!important;font-size:10pt;print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .ux-document-watermark{position:fixed;top:38%;width:76%;max-width:155mm;opacity:.055}
  .ux-document-watermark span{font-size:22pt}
  .contrato-doc .ux-monte-contract table,.contrato-doc .ux315-housing-contract table{break-inside:auto!important;page-break-inside:auto!important}
  .contrato-doc .ux-monte-contract tr,.contrato-doc .ux315-housing-contract tr{break-inside:avoid!important;page-break-inside:avoid!important}
  .ux-monte-contract thead{display:table-header-group}.ux-monte-contract :is(h1,h2,h3){break-after:avoid!important}
  .ux-monte-contract :is(p,li){orphans:3;widows:3}.ux-monte-contract footer{break-inside:avoid}
  .ux-customer-manual :is(h1,h2,h3){break-after:avoid}.ux-customer-manual :is(p,li){orphans:3;widows:3}
  .ux-customer-manual :is(tr,footer){break-inside:avoid}.ux-customer-manual table{break-inside:auto!important}
}

/* assets/css/v317-navigation.css */
/* Compact, explicit navigation for touch and keyboard. */
.ux317-path{max-width:1400px;margin:0 auto;padding:10px 4vw;display:flex;align-items:center;gap:16px;flex-wrap:wrap;border-bottom:1px solid var(--ux315-line);color:var(--ux315-muted);font:12px/1.5 system-ui,sans-serif}
.ux317-path button{display:inline-flex;align-items:center;gap:8px;min-height:44px;border:1px solid var(--ux315-line);background:var(--ux315-card);color:var(--ux315-ink);padding:9px 14px;border-radius:10px;font:600 13px/1.4 system-ui,sans-serif;cursor:pointer;touch-action:manipulation}
.ux317-path>span{flex:1}.ux317-path button:hover{background:var(--ux315-soft)}
.ux315-header nav button[aria-current=page]{background:var(--ux315-soft);box-shadow:inset 0 -2px var(--ux315-accent)}
.ux315-brand .ux317-gran-logo{width:64px!important;height:64px!important;object-fit:contain;background:#fffff6;border-radius:8px;flex:none}
.ux317-brand-divider{height:36px;width:1px;background:var(--ux315-line)}
.ux317-brand-banner{max-width:1200px;margin:28px auto 0;border:1px solid var(--ux315-line);border-radius:22px;overflow:hidden;background:#f4f0e8;line-height:0}
.ux317-brand-banner img{display:block;width:100%;height:auto;aspect-ratio:3/1;object-fit:contain}
.ux317-menu-toggle{display:none}
html .ux-card-logo{background:#fffff6;border-radius:9px;object-fit:contain;max-height:110px}
html .auth-logo-card{background-color:#fffff6;border-radius:12px}
@media(max-width:900px){
 .ux317-brand-banner{margin:16px 18px 0;border-radius:14px}
 .ux315-header-inner{flex-direction:row;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 18px}
 .ux315-brand{align-self:auto;min-width:0;max-width:100%}
 .ux315-header nav{width:100%;flex-wrap:wrap;overflow:visible;justify-content:flex-start;gap:4px}
 .ux315-header nav button{flex:1 1 auto;white-space:normal;line-height:1.3;min-height:44px;font-size:12px;padding:9px}
 .ux315-header nav .ux315-back{display:none}
 .ux317-path{padding:8px 18px;gap:8px}
 .ux317-path>span{font-size:11px}
 .ux-home-topo-in{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:12px!important;padding:12px 18px!important}
 .ux317-menu-toggle{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border:1px solid #7a9f93;background:#123f35;color:#fff;border-radius:10px;font:600 14px system-ui;cursor:pointer}
 html .ux-home-topo .ux-home-menu{display:none!important;flex-basis:100%;width:100%;padding:8px 0;gap:6px}
 html .ux-home-topo.ux317-menu-open .ux-home-menu{display:grid!important;grid-template-columns:1fr 1fr}
 .ux-home-menu a,.ux-home-menu button{min-height:44px;display:flex;align-items:center;justify-content:center;padding:10px!important;white-space:normal;text-align:center}
 .ux-home-topo{position:sticky;top:0;z-index:90}
}
@media(max-width:600px){
 .ux315-header{position:relative;top:auto}
 .ux315-brand .ux317-gran-logo{width:54px!important;height:54px!important}
 .ux315-brand b{font-size:14px}.ux315-brand small{font-size:11px}
 .ux317-path>span{display:none}.ux317-path{padding:8px 12px}
 .ux317-path button{font-size:12px;max-width:100%}
 .ux317-brand-banner{margin:12px 12px 0;border-radius:12px}
 .ux315-header nav button{min-width:calc(33.333% - 4px)}
 .ux315-header-inner{padding:10px 12px}
 .ux-pl-quadro{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
 .ux315-unit-list{grid-template-columns:repeat(2,minmax(0,1fr))}
 #grPublico,#grCliente{padding-bottom:env(safe-area-inset-bottom)}
}
@media print{.ux317-path,.ux317-brand-banner,.ux317-menu-toggle{display:none!important}}

/* assets/css/v318-brands-gran.css */
/* V31.8 — brand artwork, quieter hierarchy and a photo-led Gran Reserva portal. */
html img[src*="brand/urbannix-logo-v3.webp"],html img[src*="brand/lm-servicos-logo-v1.webp"]{object-fit:contain;background:#faf8f0;border-radius:8px;filter:none;padding:5px;box-sizing:border-box}
html .ux315-brand img{filter:none!important;background:#faf8f0;border-radius:8px;object-fit:contain}
html .ux315-brand img[src*="alto-balanco-logo-v3"]{object-fit:cover}
html .ux315-brand .ux317-gran-logo{height:76px!important;width:76px!important;border:1px solid #e6dfcb}
html .ux315-brand .ux317-brand-divider{display:none}
html .ux315-brand b{font:500 21px/1.1 Georgia,serif}
html .ux315-brand small{letter-spacing:.12em;font-size:10px}
html .ux-home-marca img{width:176px!important;height:59px!important;padding:6px 10px}
html .ux315-footer-logo{width:220px!important;height:74px!important}
html .ux318-footer-brand .ux318-enterprise-logo{display:block;width:170px;height:110px;object-fit:contain;filter:none;background:#faf8f0;border-radius:10px;margin-bottom:16px}
.ux318-brand-partners{display:flex;align-items:flex-start;gap:28px;flex-wrap:wrap;border-top:1px solid #46645b;padding-top:22px;margin-top:28px}
.ux318-brand-partners>div{display:grid;gap:10px}
html .ux318-brand-partners small{color:#c4d4ca;padding:0;font-size:9px;font-weight:600;letter-spacing:.12em}
.ux318-brand-partners img{width:168px;height:60px!important;object-fit:contain;display:block}
.ux318-alto-presentation{margin:0 auto 64px;padding:0 24px;max-width:1150px}
.ux318-alto-presentation img{display:block;width:100%;height:auto;border-radius:18px;object-fit:contain}
.ux318-portal-toggle{display:none}

html[data-enterprise="1"]{--ux315-bg:#f6f3eb;--ux315-card:#fffdf8;--ux315-soft:#eeeadd;--ux315-ink:#213d32;--ux315-muted:#617168;--ux315-line:#dddcd0;--ux315-accent:#21533e}
html[data-enterprise="1"][data-tema="escuro"]{--ux315-bg:#101e19;--ux315-card:#192b23;--ux315-soft:#24372d;--ux315-ink:#f3f1e7;--ux315-muted:#b3c4b9;--ux315-line:#354b3f;--ux315-accent:#d3b574}
html #grPublico .ux318-gran-home{font-family:Inter,system-ui,-apple-system,sans-serif;background:var(--ux315-bg);color:var(--ux315-ink)}
.ux318-gran-home *, .ux318-gran-home *::before,.ux318-gran-home *::after{box-sizing:border-box}
html #grPublico .ux318-gran-home .gr-wrap{width:min(1220px,calc(100% - 96px));max-width:1220px;padding:0;margin:0 auto}
.ux318-gran-home .ux317-path{padding-top:4px;padding-bottom:4px;border:0;font-size:11px}
.ux318-gran-home .ux317-path button{background:transparent;border:0;padding-left:0;min-height:38px}
.ux318-gran-home .ux318-kicker{display:block;font:600 10px/1.7 Inter,system-ui,sans-serif;letter-spacing:.19em;color:var(--ux315-accent);text-transform:uppercase}
.ux318-gran-hero{position:relative;isolation:isolate;background:#133d2e;color:#fff;min-height:620px;overflow:hidden}
.ux318-gran-hero::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#102f24 2%,#123329f0 25%,#1132287d 52%,#102b2114 85%),linear-gradient(0deg,#0c221cb0,transparent 45%);pointer-events:none}
.ux318-gran-landscape{position:absolute;inset:0;z-index:-2;display:block;width:100%;height:100%;object-fit:cover;object-position:60% 50%;animation:ux318-arrive .8s ease-out both}
.ux318-gran-hero-inner{position:relative;max-width:1316px;margin:auto;padding:76px 48px 88px;min-height:620px;display:flex;align-items:center;justify-content:space-between;gap:48px}
.ux318-gran-hero-copy{max-width:590px}
.ux318-gran-hero .ux318-kicker{color:#e0c58b}
html #grPublico .ux318-gran-hero h1{font:400 clamp(46px,5.15vw,76px)/1.03 Georgia,serif;letter-spacing:-.045em;color:#fffaf0;margin:22px 0 24px;text-shadow:none}
.ux318-gran-hero h1 em{color:#e2c38c;font-weight:400}
.ux318-gran-hero p{color:#e0e9df;max-width:440px;font-size:15px;line-height:1.8;margin:0 0 32px}
.ux318-actions{display:flex;flex-wrap:wrap;gap:12px}
html #grPublico .ux318-button{min-height:50px;display:inline-flex;align-items:center;justify-content:space-between;gap:24px;padding:14px 23px;border:1px solid transparent;border-radius:7px;font:600 13px/1.4 Inter,system-ui,sans-serif;cursor:pointer;touch-action:manipulation;text-decoration:none;transition:background .18s ease,transform .18s ease}
html #grPublico .ux318-gold{background:#e5c68b;color:#173629;border-color:#e5c68b}
html #grPublico .ux318-gold:hover{background:#f2d9a6;border-color:#f2d9a6;transform:translateY(-2px)}
html #grPublico .ux318-glass{background:#183d2c99;color:#fff8e8;border-color:#adbdab88}
html #grPublico .ux318-glass:hover{background:#204b37}
html #grPublico .ux318-solid{background:#234936;color:#fff8e8;border-color:#234936}
.ux318-image-credit{align-self:flex-end;max-width:325px;padding:18px 20px;color:#fff6e7;background:#18382cdd;border:1px solid #a4b29b66;border-radius:8px;text-align:left;cursor:pointer}
.ux318-image-credit>span{display:block;letter-spacing:.15em;font-size:8px;color:#e1c688}
.ux318-image-credit b{display:block;font:400 18px/1.5 Georgia,serif;margin-top:5px}.ux318-image-credit b span{margin-left:12px}
.ux318-image-credit small{display:block;margin-top:6px;color:#ccd8ca;font-size:10px}
.ux318-facts{max-width:1316px;margin:auto;display:grid;grid-template-columns:1fr 1fr 1.35fr 1.2fr;gap:28px;padding:32px 48px;border-bottom:1px solid var(--ux315-line);align-items:center}
.ux318-facts>div+div{border-left:1px solid var(--ux315-line);padding-left:28px}
.ux318-facts strong{display:block;color:var(--ux315-ink);font:400 32px/1.2 Georgia,serif;white-space:nowrap}
.ux318-facts strong small{font:400 16px Georgia,serif}
.ux318-facts div>span{display:block;color:var(--ux315-muted);font-size:11px;line-height:1.6;margin-top:7px}
.ux318-facts button{min-height:46px;padding:12px 0;background:none;border:0;color:var(--ux315-accent);font:600 12px/1.5 system-ui;cursor:pointer;text-align:right}
.ux318-facts button span{margin-left:16px}
html #grPublico .ux318-gran-home .ux318-section{padding:80px 0;background:var(--ux315-bg);color:var(--ux315-ink);content-visibility:visible;contain:none;overflow:visible}
.ux318-section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:48px;margin-bottom:32px}
.ux318-section-heading>div{max-width:660px}
html #grPublico .ux318-gran-home h2{font:400 clamp(32px,3.1vw,47px)/1.12 Georgia,serif;letter-spacing:-.035em;margin:12px 0 0;color:var(--ux315-ink)}
.ux318-section-heading p{max-width:320px;margin:0;font-size:13px;line-height:1.8;color:var(--ux315-muted)}
.ux318-gran-home .gr-gallery-section::before{display:none}
.ux318-gallery-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:22px;align-items:stretch}
html #grPublico .ux318-gran-home .ux318-gallery-card{margin:0;padding:0;position:relative;inset:auto;opacity:1;transform:none;grid-row:auto;grid-column:auto;min-height:0;box-shadow:none;border:0;border-radius:12px;background:var(--ux315-card);overflow:hidden}
.ux318-gallery-card::after{display:none}
.ux318-gallery-card>button{display:block;position:relative;background:var(--ux315-card);color:var(--ux315-ink);width:100%;height:100%;text-align:left;padding:0;border:0;cursor:zoom-in}
html #grPublico .ux318-gallery-card img{display:block;width:100%;height:360px;object-fit:contain;background:#e5e9dd;animation:none;transform:none;filter:none;transition:filter .25s}
.ux318-gallery-card button:hover img{filter:brightness(1.05)!important}
.ux318-gallery-card .ux318-caption{display:block;padding:20px 22px 22px;border:1px solid var(--ux315-line);border-top:0;border-radius:0 0 12px 12px}
.ux318-caption small{display:block;font-size:8px;letter-spacing:.15em;color:var(--ux315-muted);margin-bottom:8px}
.ux318-caption strong{font:400 23px/1.3 Georgia,serif;color:var(--ux315-ink)}
.ux318-image-zoom{position:absolute;top:16px;right:16px;display:grid;place-items:center;width:40px;height:40px;background:#fff9e8ee;color:#183f2e;border-radius:50%;font-size:20px}
html #grPublico .ux318-fine{color:var(--ux315-muted);font-size:11px;line-height:1.7;margin:18px 0 0}
html #grPublico .ux318-gran-home .ux318-journey{background:var(--ux315-soft)}
.ux318-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:48px;margin-top:48px}
.ux318-steps article{border-top:1px solid var(--ux315-line);padding-top:20px}
.ux318-steps article>span{font:400 32px Georgia,serif;color:var(--ux315-accent)}
.ux318-steps h3{font:400 25px/1.2 Georgia,serif;color:var(--ux315-ink);margin:20px 0 12px}
.ux318-steps p{color:var(--ux315-muted);font-size:13px;line-height:1.8;min-height:70px;margin:0}
.ux318-steps button{display:flex;gap:18px;align-items:center;min-height:48px;margin-top:12px;padding:8px 0;background:none;border:0;color:var(--ux315-accent);font:600 12px/1.5 system-ui;cursor:pointer}
.ux318-video-grid{display:grid;grid-template-columns:1fr 1.65fr;align-items:center;gap:64px}
.ux318-video-grid>div>p{font-size:14px;line-height:1.8;color:var(--ux315-muted);margin-top:24px}
.ux318-video-frame{border-radius:12px;overflow:hidden;background:#10271e;line-height:0}
.ux318-video-frame video{width:100%;max-height:480px;height:auto;display:block;object-fit:contain}
html #grPublico .ux318-gran-home .ux318-project{padding-top:0}
.ux318-plan{border:1px solid var(--ux315-line);border-radius:12px;background:var(--ux315-card);overflow:hidden}
.ux318-plan summary{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 28px;min-height:86px;cursor:pointer;list-style:none}.ux318-plan summary::-webkit-details-marker{display:none}
.ux318-plan summary b{display:block;font:400 24px/1.4 Georgia,serif;color:var(--ux315-ink)}
.ux318-plan summary small{display:block;margin-top:5px;font-size:12px;color:var(--ux315-muted)}
.ux318-plan-icon{font:300 28px/1 system-ui;color:var(--ux315-accent);transition:transform .2s}.ux318-plan[open] .ux318-plan-icon{transform:rotate(45deg)}
.ux318-plan-content{padding:0 28px 24px}.ux318-plan-content img{display:block;width:100%;max-height:720px;height:auto;object-fit:contain;background:#fff;border-radius:8px}
html #grPublico .ux318-gran-home .ux318-location{padding-top:0}
.ux318-location-grid{display:grid;grid-template-columns:1.65fr 1fr;gap:0;border:1px solid var(--ux315-line);border-radius:12px;overflow:hidden;background:var(--ux315-card)}
.ux318-location-grid .gr-location-media{min-width:0;min-height:420px;max-width:100%;border:0;border-radius:0;box-shadow:none;background:var(--ux315-soft)}
.ux318-location-copy{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:40px;background:var(--ux315-card);color:var(--ux315-ink)}
.ux318-location-mark{font:300 38px Georgia,serif;color:var(--ux315-accent)}
.ux318-location-copy h3{font:400 36px/1.1 Georgia,serif;margin:18px 0}.ux318-location-copy p{color:var(--ux315-muted);font-size:13px;line-height:1.8;margin:0 0 24px}
.ux318-location-link{background:none;border:0;color:var(--ux315-accent);padding:14px 0;margin-top:8px;min-height:44px;cursor:pointer;font-weight:600}
.ux318-final-cta{background:#183c2c;padding:58px 0;color:#fff8e8}
.ux318-final-cta>.gr-wrap{display:flex;align-items:center;justify-content:space-between;gap:36px}
.ux318-final-cta .ux318-kicker{color:#e1c38b}
html #grPublico .ux318-final-cta h2{color:#fff8e8;font-size:clamp(34px,4vw,52px)}
.ux318-final-cta p{color:#cbd9cb;font-size:13px;margin-top:22px}
.ux318-gran-home .ux315-footer{margin-top:0}
html[data-enterprise="1"] #grPublico .gr-mapa-linha{gap:24px;align-items:start}
html[data-enterprise="1"] #grPublico .gr-card{box-shadow:none;border-radius:12px}
html[data-enterprise="1"] #grPublico .gr-v26-map-filters{gap:12px;display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr;margin:16px 0}
html[data-enterprise="1"] #grPublico .gr-v26-map-filters :is(select,input){min-width:0;width:100%;padding:12px}
@keyframes ux318-arrive{from{opacity:.6;transform:scale(1.025)}to{opacity:1;transform:scale(1)}}
@media(max-width:1100px){
 .ux318-gran-hero-inner{padding:65px 36px;min-height:570px}.ux318-gran-hero{min-height:570px}.ux318-image-credit{max-width:240px}.ux318-gran-hero-copy{max-width:520px}
 .ux318-facts{padding:28px 36px;gap:18px;grid-template-columns:1fr 1fr 1.3fr}.ux318-facts>button{grid-column:1/-1;text-align:left;padding:0;min-height:28px}
 .ux318-section-heading{gap:30px}.ux318-video-grid{gap:36px}.ux318-steps{gap:28px}.ux318-location-copy{padding:28px}
}
@media(max-width:900px){
 html .ux315-header-inner{justify-content:space-between;padding:10px 18px}
 .ux318-portal-toggle{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 14px;border:1px solid var(--ux315-line);background:var(--ux315-soft);color:var(--ux315-ink);border-radius:8px;cursor:pointer;font:600 12px system-ui;flex:none}
 html .ux315-header nav{display:none;width:100%;flex-basis:100%;padding:6px 0;gap:6px;overflow:visible}
 html .ux315-header.ux317-menu-open nav{display:grid;grid-template-columns:1fr 1fr}
 html .ux315-header nav button{white-space:normal;width:100%!important;font-size:12px;border:1px solid var(--ux315-line);border-radius:7px}
 html .ux315-brand img{width:240px;height:76px}html .ux315-brand .ux317-gran-logo{width:60px!important;height:60px!important}html .ux315-brand b{font-size:18px}
 .ux318-gran-hero-inner{align-items:flex-start;flex-direction:column;gap:30px}.ux318-image-credit{align-self:flex-end;max-width:none}
 html #grPublico .ux318-gran-hero h1{font-size:60px}.ux318-gran-hero::after{background:linear-gradient(90deg,#102f24f7,#113228a8 58%,#102b2144),linear-gradient(0deg,#0c221ca0,transparent 65%)}
 .ux318-gallery-grid{grid-template-columns:1.2fr 1fr;gap:16px}html #grPublico .ux318-gallery-card img{height:270px}.ux318-caption strong{font-size:21px}
 .ux318-section-heading{align-items:flex-start;flex-direction:column;gap:18px}.ux318-section-heading p{max-width:570px}.ux318-video-grid{grid-template-columns:1fr;gap:28px}.ux318-video-grid>div:first-child{max-width:600px}
 .ux318-location-grid{grid-template-columns:1fr}.ux318-location-copy{padding:30px}.ux318-location-copy h3 br{display:none}
}
@media(max-width:600px){
 html .ux315-header-inner{padding:8px 12px;gap:8px}html .ux315-brand img{width:214px;height:66px}html .ux315-brand{gap:8px}
 html .ux315-brand{max-width:calc(100% - 82px);min-width:0}html .ux315-brand>span{min-width:0}html .ux315-brand>img{max-width:100%}
 html .ux315-brand .ux317-gran-logo{width:56px!important;height:56px!important}html .ux315-brand b{font-size:16px;max-width:180px;display:block}html .ux315-brand small{font-size:9px;letter-spacing:.05em}
 html #grPublico .ux318-gran-home .gr-wrap{width:calc(100% - 36px)}
 .ux318-gran-hero-inner{padding:210px 24px 30px;gap:24px;min-height:650px}.ux318-gran-hero{min-height:0}.ux318-gran-landscape{height:390px;object-position:center top}
 .ux318-gran-hero::after{background:linear-gradient(0deg,#133d2e 28%,#133d2ee8 48%,#133d2e18 88%)}
 .ux318-gran-hero .ux318-kicker{font-size:8px;letter-spacing:.14em}
 html #grPublico .ux318-gran-hero h1{font-size:clamp(40px,11.5vw,60px);margin:16px 0 20px;line-height:1.04}
 .ux318-gran-hero p{font-size:13px;line-height:1.8;margin-bottom:24px;max-width:400px}
 .ux318-actions{display:grid;grid-template-columns:1fr;width:100%;gap:10px}.ux318-image-credit{padding:14px 0;border:0;border-top:1px solid #a4b29b55;border-radius:0;background:none;width:100%}.ux318-image-credit b{font-size:17px}.ux318-image-credit small{font-size:9px}
 .ux318-facts{padding:26px 24px;grid-template-columns:1fr 1fr;gap:24px 18px}.ux318-facts>div+div{padding-left:18px}.ux318-facts>div:nth-child(3){grid-column:1/-1;border:0;padding-left:0}.ux318-facts strong{font-size:32px}.ux318-facts>div:nth-child(3) strong{font-size:26px}.ux318-facts div>span{font-size:11px}.ux318-facts button{font-size:12px}
 html #grPublico .ux318-gran-home .ux318-section{padding:48px 0}html #grPublico .ux318-gran-home h2{font-size:34px}.ux318-section-heading{gap:16px;margin-bottom:26px}.ux318-section-heading p{font-size:13px}
 .ux318-gallery-grid{grid-template-columns:1fr;gap:22px}html #grPublico .ux318-gallery-card img{height:auto;max-height:none;aspect-ratio:auto}.ux318-caption strong{font-size:24px}.ux318-gallery-card .ux318-caption{padding:18px 20px}.ux318-caption small{font-size:9px}
 .ux318-steps{grid-template-columns:1fr;gap:28px;margin-top:30px}.ux318-steps article{padding-top:16px}.ux318-steps article>span{font-size:27px}.ux318-steps h3{margin-top:14px}.ux318-steps p{min-height:0}.ux318-steps button{margin-top:5px;font-size:13px}
 .ux318-video-frame video{max-height:480px}.ux318-video-grid{gap:26px}.ux318-video-grid>div>p{margin-top:18px;font-size:13px}
 html #grPublico .ux318-gran-home .ux318-project,html #grPublico .ux318-gran-home .ux318-location{padding-top:0}
 .ux318-plan summary{padding:20px}.ux318-plan summary b{font-size:22px}.ux318-plan summary small{font-size:11px}.ux318-plan-content{padding:0 12px 18px}
 .ux318-location-grid .gr-location-media{min-height:340px}.ux318-location-copy{padding:26px}.ux318-location-copy h3{font-size:33px}
 .ux318-final-cta{padding:44px 0}.ux318-final-cta>.gr-wrap{align-items:flex-start;flex-direction:column;gap:24px}.ux318-final-cta .ux318-button{width:100%}
 .ux318-brand-partners{gap:22px}.ux318-brand-partners img{width:146px;height:55px!important}html .ux318-footer-brand .ux318-enterprise-logo{width:150px;height:108px}
 .ux318-alto-presentation{margin-bottom:40px;padding:0 18px}.ux318-alto-presentation img{border-radius:10px}
 html[data-enterprise="1"] #grPublico .gr-v26-map-filters{grid-template-columns:1fr 1fr;gap:10px}
}
@media(prefers-reduced-motion:reduce){.ux318-gran-home *, .ux318-gran-home *::before,.ux318-gran-home *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{.ux318-portal-toggle,.ux318-brand-partners{display:none!important}}

/* assets/css/v319-portal.css */
/* UrbanNIX: one introduction, immediate project choice, readable brand scale. */
html #grPublico .ux319-home{--u-bg:#f7f8f4;--u-card:#fff;--u-soft:#edf1eb;--u-ink:#1c3c32;--u-muted:#617269;--u-line:#dce4dd;--u-accent:#185c47;background:var(--u-bg);color:var(--u-ink);font-family:Inter,system-ui,-apple-system,sans-serif}
html[data-tema=escuro] #grPublico .ux319-home{--u-bg:#12231d;--u-card:#1a3027;--u-soft:#233b30;--u-ink:#f1f4e9;--u-muted:#b2c6b7;--u-line:#365244;--u-accent:#c9dda9}
.ux319-home *{box-sizing:border-box}.ux319-home button,.ux319-home a{touch-action:manipulation}
html #grPublico .ux319-container{width:min(1200px,calc(100% - 80px));max-width:1200px;margin:0 auto}
html #grPublico .ux319-home .ux-home-topo{position:relative;top:auto;background:var(--u-card);border-bottom:1px solid var(--u-line);box-shadow:none;z-index:90}
html #grPublico .ux319-home .ux-home-topo-in{width:min(1200px,calc(100% - 80px));padding:12px 0!important;margin:auto;gap:22px;display:flex;align-items:center;justify-content:space-between;max-width:1200px}
html #grPublico .ux319-home .ux-home-marca img{width:172px!important;height:55px!important;object-fit:contain;background:transparent;padding:0;filter:none;display:block;border:0;border-radius:0}
html[data-tema=escuro] #grPublico .ux319-home .ux-home-marca img{background:#f8f7ee;border-radius:7px;padding:5px}
html #grPublico .ux319-home .ux-home-menu{gap:10px;align-items:center;flex-wrap:wrap}
html #grPublico .ux319-home .ux-home-menu :is(a,button){color:var(--u-ink);font:500 12px/1.4 Inter,system-ui,sans-serif;border:0;background:none;border-radius:6px;padding:12px;min-height:44px}
html #grPublico .ux319-home .ux-home-menu .ux-home-cliente{background:var(--u-accent);color:var(--u-card);font-weight:600;padding:12px 18px}
html #grPublico .ux319-home .ux-home-menu [data-ux-v305-theme]{background:var(--u-soft);color:var(--u-ink);display:inline-flex!important}
html #grPublico .ux319-eyebrow{display:block;color:var(--u-accent);font:600 9px/1.7 Inter,system-ui,sans-serif;letter-spacing:.16em;text-transform:uppercase}
.ux319-intro{display:grid;grid-template-columns:1.3fr 1fr;gap:80px;align-items:center;padding:50px 0 34px}
html #grPublico .ux319-home h1{font:500 clamp(38px,4.2vw,58px)/1.05 Inter,system-ui,sans-serif;letter-spacing:-.055em;color:var(--u-ink);margin:15px 0 0;max-width:620px}
html #grPublico .ux319-home h1 em{font-family:Georgia,serif;font-weight:400;color:var(--u-accent);letter-spacing:-.045em}
.ux319-intro-copy p{font-size:14px;line-height:1.85;color:var(--u-muted);max-width:370px;margin:0 0 12px}
html #grPublico .ux319-text-button{display:inline-flex;align-items:center;justify-content:space-between;gap:15px;padding:10px 0;min-height:44px;border:0;background:none;color:var(--u-accent);font:600 12px/1.4 Inter,system-ui,sans-serif;cursor:pointer;text-decoration:none}
.ux319-portfolio{padding-bottom:52px;scroll-margin-top:20px}
.ux319-portfolio-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:12px 0 20px;border-top:1px solid var(--u-line);padding-top:23px}
html #grPublico .ux319-portfolio-heading h2{font:600 16px/1.4 Inter,system-ui,sans-serif;letter-spacing:-.02em;margin:0;color:var(--u-ink)}
.ux319-portfolio-heading>span{font-size:11px;color:var(--u-muted)}
.ux319-projects{display:grid;grid-template-columns:1fr 1fr;gap:26px}
.ux319-project{border:1px solid var(--u-line);border-radius:15px;background:var(--u-card);overflow:hidden;min-width:0;box-shadow:0 6px 18px #14362b05}
.ux319-project-photo{height:252px;position:relative;overflow:hidden;background:var(--u-soft)}
.ux319-project-photo>img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .45s ease;object-position:center}
.ux319-kind{position:absolute;top:17px;left:18px;max-width:calc(100% - 36px);background:#f5f5eae8;border:1px solid #f9faf088;border-radius:5px;color:#214d3e;padding:8px 10px;font-size:8px;font-weight:700;letter-spacing:.11em;line-height:1.5}
.ux319-photo-note{position:absolute;bottom:12px;right:14px;color:#fff;background:#123225b3;padding:5px 8px;border-radius:4px;font-size:9px}
.ux319-project-body{padding:24px 26px 22px}
.ux319-project-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:70px}
.ux319-local{display:block;font-size:10px;letter-spacing:.09em;color:var(--u-muted);margin-bottom:7px}
html #grPublico .ux319-project-heading h2{font:500 clamp(22px,2.25vw,31px)/1.14 Inter,system-ui,sans-serif;letter-spacing:-.045em;color:var(--u-ink);margin:0}
html #grPublico .ux319-project-logo{width:84px;height:66px;display:block;object-fit:contain;background:#fffff6;border-radius:7px;flex:none;filter:none;padding:3px}
.ux319-project-body>p{color:var(--u-muted);font-size:12px;line-height:1.8;margin:16px 0 18px;max-width:480px;min-height:44px}
.ux319-project-facts{display:grid;grid-template-columns:.7fr .85fr 1.6fr;gap:12px;padding:18px 0;margin:0;border-top:1px solid var(--u-line);border-bottom:1px solid var(--u-line)}
.ux319-project-facts div{min-width:0}.ux319-project-facts dt{font-size:10px;color:var(--u-muted);margin-bottom:7px}.ux319-project-facts dd{font-size:18px;letter-spacing:-.04em;font-weight:600;color:var(--u-ink);margin:0;overflow-wrap:anywhere}
.ux319-project-facts>div:last-child dd{font-size:17px}
.ux319-project-actions{display:flex;align-items:center;gap:20px;margin-top:18px;justify-content:space-between;flex-wrap:wrap}
html #grPublico .ux319-primary{min-height:46px;border:1px solid var(--u-accent);background:var(--u-accent);color:var(--u-card);display:inline-flex;align-items:center;justify-content:space-between;gap:24px;padding:13px 18px;border-radius:7px;font:600 11px/1.5 Inter,system-ui,sans-serif;cursor:pointer;text-decoration:none}
.ux319-project-actions .ux319-text-button{font-size:11px}.ux319-primary:disabled{opacity:.65;cursor:progress}
.ux319-numbers{border-top:1px solid var(--u-line);padding:26px 0 46px}
.ux319-numbers-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:26px}
html #grPublico .ux319-numbers-heading h2{font:600 15px Inter,system-ui,sans-serif;margin:0;color:var(--u-ink)}
.ux319-numbers-heading p{font-size:10px;color:var(--u-muted);margin:0}
.ux319-numbers dl{display:grid;grid-template-columns:1fr 1fr .7fr 1.2fr 1.6fr;gap:20px;margin:0}
.ux319-numbers dl>div+div{border-left:1px solid var(--u-line);padding-left:24px}
.ux319-numbers dt{font-size:10px;color:var(--u-muted);margin-bottom:10px}
.ux319-numbers dd{font-size:26px;letter-spacing:-.05em;font-weight:500;color:var(--u-ink);margin:0;white-space:nowrap}
.ux319-numbers .ux319-vgv dd{font-size:23px}
.ux319-about{background:var(--u-soft);padding:56px 0;scroll-margin-top:20px}
.ux319-about-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:60px;align-items:center}
.ux319-brand-image{margin:0;border-radius:12px;overflow:hidden;background:#ede9df;line-height:0}
.ux319-brand-image img{display:block;width:100%;height:auto;object-fit:contain}
html #grPublico .ux319-about h2{font:500 35px/1.13 Inter,system-ui,sans-serif;letter-spacing:-.04em;margin:14px 0 16px;color:var(--u-ink)}
.ux319-about p{font-size:12px;color:var(--u-muted);line-height:1.8;max-width:440px}
.ux319-about ul{padding:0;margin:24px 0 0;list-style:none;display:grid;gap:15px}
.ux319-about li{display:flex;gap:14px;align-items:flex-start;font-size:12px;line-height:1.65;color:var(--u-ink)}
.ux319-about li>span{flex:none;color:var(--u-accent);font-size:10px;font-weight:700;border-bottom:1px solid var(--u-accent);padding:2px 0}
.ux319-help{padding:52px 0;display:flex;align-items:center;justify-content:space-between;gap:40px;scroll-margin-top:20px}
html #grPublico .ux319-help h2{font:500 29px/1.15 Inter,system-ui,sans-serif;letter-spacing:-.035em;margin:14px 0 12px;color:var(--u-ink)}
.ux319-help p{font-size:12px;line-height:1.7;color:var(--u-muted);max-width:420px}
.ux319-help-links{display:grid;gap:10px;min-width:330px}
.ux319-help-links button{display:flex;align-items:center;justify-content:space-between;gap:22px;background:var(--u-card);color:var(--u-ink);min-height:50px;padding:16px 20px;border:1px solid var(--u-line);border-radius:7px;font:500 12px Inter,system-ui,sans-serif;cursor:pointer}
.ux319-footer{background:#163a2d;color:#f1f5e8;padding:36px 0 20px}
.ux319-footer-main{display:grid;grid-template-columns:1fr .8fr 1.4fr;gap:36px;align-items:start}
.ux319-footer-brand>img{width:174px;height:58px!important;background:#f8f7ee!important;padding:5px 8px!important}.ux319-footer-brand p{font-size:11px;line-height:1.8;color:#c4d2c5;margin:12px 0 0}
.ux319-footer nav{display:grid;justify-content:start;gap:4px}.ux319-footer nav :is(a,button){min-height:38px;background:none;border:0;padding:8px 0;text-align:left;color:#e0eade;text-decoration:none;font:400 11px/1.5 Inter,system-ui,sans-serif;cursor:pointer}
.ux319-footer-partners{display:flex;justify-content:space-between;gap:24px}.ux319-footer-partners>div>span{display:block;font-size:8px;font-weight:500;letter-spacing:.1em;color:#c0cfc1;margin-bottom:14px}
.ux319-footer-partners>div>img{display:block;width:150px;height:62px;object-fit:contain;background:#f8f7ee!important;border-radius:7px}
.ux319-builder{display:flex;align-items:center;gap:10px}.ux319-builder img{display:block;width:54px;height:54px;object-fit:contain;border-radius:6px}.ux319-builder strong{font:500 11px/1.6 Inter,system-ui,sans-serif;color:#f1f5e8}
.ux319-footer-bottom{display:flex;justify-content:space-between;gap:20px;border-top:1px solid #42604f;padding-top:20px;margin-top:30px!important;font-size:9px;color:#b8cbbd}
#uxClientChoose{border-top:1px solid var(--u-line);background:var(--u-soft);max-width:1200px;margin:0 auto 25px;padding:28px!important;border-radius:10px}#uxClientChoose h2{font:500 24px/1.3 Inter,system-ui!important;color:var(--u-ink);margin-bottom:20px}
@media(hover:hover) and (pointer:fine){.ux319-project-photo:hover img{transform:scale(1.025)}.ux319-home a:hover,.ux319-text-button:hover{text-decoration:underline}.ux319-help-links button:hover{border-color:var(--u-accent)}}
@media(max-width:1050px){.ux319-intro{gap:40px}.ux319-project-body{padding:20px}.ux319-project-actions{gap:6px}.ux319-project-facts dd,.ux319-project-facts>div:last-child dd{font-size:16px}.ux319-project-photo{height:220px}.ux319-numbers dl{grid-template-columns:1fr 1fr .7fr 1.2fr 1.5fr;gap:12px}.ux319-numbers dl>div+div{padding-left:14px}.ux319-numbers dd{font-size:22px}.ux319-numbers .ux319-vgv dd{font-size:19px}.ux319-about-grid{gap:35px}.ux319-footer-main{grid-template-columns:1fr 1fr}.ux319-footer-partners{grid-column:1/-1;justify-content:flex-start}}
@media(max-width:900px){html #grPublico .ux319-home .ux-home-topo-in{padding:10px 0!important;gap:8px!important}.ux319-home .ux317-menu-toggle{background:var(--u-soft);border-color:var(--u-line);color:var(--u-ink)}html #grPublico .ux319-home .ux-home-menu{padding:8px 0}.ux319-intro{padding-top:38px;gap:32px}.ux319-intro-copy p{font-size:12px}.ux319-project-heading{align-items:flex-start;min-height:70px}.ux319-project-logo{max-width:60px}.ux319-project-heading h2{font-size:24px!important}.ux319-project-actions{flex-direction:column;align-items:stretch}.ux319-project-actions button{width:100%;justify-content:space-between}.ux319-numbers dl{grid-template-columns:repeat(3,1fr);gap:24px}.ux319-numbers dl>div:nth-child(4){padding-left:0;border-left:0}.ux319-vgv{grid-column:2/-1}.ux319-numbers dd,.ux319-numbers .ux319-vgv dd{font-size:25px}.ux319-about h2{font-size:29px!important}.ux319-help{gap:24px}.ux319-help-links{min-width:280px}}
@media(max-width:760px){html #grPublico .ux319-container,html #grPublico .ux319-home .ux-home-topo-in{width:calc(100% - 36px)}.ux319-intro{grid-template-columns:1fr;gap:20px;padding:34px 0 24px}html #grPublico .ux319-home h1{font-size:clamp(37px,7.8vw,54px);line-height:1.09;letter-spacing:-.055em}.ux319-intro-copy p{font-size:13px;max-width:540px;margin-bottom:6px}.ux319-intro-copy .ux319-text-button{font-size:12px}.ux319-portfolio-heading{padding-top:18px;margin-top:0}.ux319-portfolio-heading h2{font-size:15px!important}.ux319-portfolio-heading>span{font-size:10px}.ux319-projects{grid-template-columns:1fr;gap:24px}.ux319-project-photo{height:auto;aspect-ratio:1.9/1}.ux319-project-photo>img{position:absolute;inset:0}.ux319-project-body{padding:22px}.ux319-project-heading{align-items:center;min-height:60px}html #grPublico .ux319-project-logo{max-width:none;width:75px;height:62px}.ux319-project-heading h2{font-size:26px!important}.ux319-project-body>p{font-size:12px;min-height:0}.ux319-project-facts dd,.ux319-project-facts>div:last-child dd{font-size:17px}.ux319-project-actions{flex-direction:row;gap:12px}.ux319-project-actions .ux319-primary{width:auto;flex:1;padding:14px}.ux319-project-actions .ux319-text-button{width:auto}.ux319-numbers-heading{align-items:flex-start;flex-direction:column;gap:10px}.ux319-numbers dl{grid-template-columns:1fr 1fr;gap:24px 16px}.ux319-numbers dl>div+div{border:0;padding:0}.ux319-vgv{grid-column:1/-1}.ux319-numbers dd,.ux319-numbers .ux319-vgv dd{font-size:27px}.ux319-numbers{padding-bottom:35px}.ux319-about{padding:38px 0}.ux319-about-grid{grid-template-columns:1fr;gap:32px}.ux319-brand-image img{aspect-ratio:3/1}.ux319-about p,.ux319-about li{font-size:13px}.ux319-help{padding:38px 0;align-items:stretch;flex-direction:column;gap:18px}.ux319-help-links{min-width:0}.ux319-help h2{font-size:28px!important}.ux319-footer-main{gap:25px;grid-template-columns:1fr 1fr}.ux319-footer-partners{gap:24px;flex-wrap:wrap}.ux319-footer-bottom{flex-direction:column;gap:10px;line-height:1.8}.ux319-home #uxClientChoose{margin:0 18px 24px;padding:22px!important}.ux319-home #uxClientChoose .ux315-actions{display:grid;grid-template-columns:1fr}}
@media(max-width:380px){.ux319-project-actions{flex-direction:column;align-items:stretch}.ux319-project-actions button{width:100%!important}.ux319-project-body{padding:18px}.ux319-project-heading h2{font-size:23px!important}html #grPublico .ux319-project-logo{width:62px;height:62px}.ux319-project-facts{gap:7px}.ux319-project-facts dd,.ux319-project-facts>div:last-child dd{font-size:15px}.ux319-footer-main{grid-template-columns:1fr}.ux319-footer nav{grid-template-columns:1fr 1fr;gap:4px 14px}.ux319-home .ux319-eyebrow{font-size:8px}}
@media(prefers-reduced-motion:reduce){.ux319-home *,.ux319-home *::before,.ux319-home *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Map typography is based on the actual displayed SVG, including the public clone. */
html :is(#grPublico,#view-mapa) .ux319-gran-map .dxf-lot-label{font-size:var(--dxf-lot-font)!important;fill:#f7fbf8!important;stroke:#183a29!important;stroke-width:.3px!important;font-weight:700!important;letter-spacing:0!important;paint-order:stroke fill;pointer-events:none}
html :is(#grPublico,#view-mapa) .ux319-gran-map .dxf-road-label{font-size:var(--dxf-road-font)!important;fill:#253f31!important;stroke:#e2e6df!important;stroke-width:.5px!important;font-weight:650!important;letter-spacing:.015em!important;paint-order:stroke fill;pointer-events:none;text-anchor:middle;dominant-baseline:middle}
html :is(#grPublico,#view-mapa) .ux319-gran-map .dxf-quadra-label{font-size:var(--dxf-quadra-font)!important;fill:#bad5c2!important;stroke:#203e2c!important;stroke-width:.3px!important;paint-order:stroke fill;pointer-events:none}
html :is(#grPublico,#view-mapa) .ux319-gran-map .dxf-lot-area{font-size:var(--dxf-area-font)!important;opacity:0!important;pointer-events:none}
html :is(#grPublico,#view-mapa) .ux319-gran-map.zoom-detalhe .dxf-lot-area{opacity:.9!important}
html :is(#grPublico,#view-mapa) .ux319-gran-map{filter:none!important}
.ux319-map-help{max-width:940px;font-size:13px;line-height:1.6;color:var(--tx2);margin:0 0 14px}
html #grPublico .gr-mapa-ferramentas{display:flex;gap:8px;flex-wrap:wrap}
html #grPublico .gr-mapa-ferramentas button,html .ux315-map-tools button{min-width:44px;min-height:44px;touch-action:manipulation}
html #grPublico .gr-mapa{min-width:0;user-select:none}
html .ux319-calculate{width:100%;min-height:48px;margin-top:20px}
html .ux319-correction{line-height:1.6;margin:12px 0 0}
html .ux-sim input,html .ux-sim select,html #gsEntrada,html #gsRenda{min-height:46px;font-size:16px}
html .ux-sim-controles,html .ux-sim-resultado,html .ux-sim-campos>*{min-width:0}
html .ux-sim-campos input,html .ux-sim-campos select{width:100%;max-width:100%;box-sizing:border-box}
html .ux-sim-card dd{overflow-wrap:anywhere}
html .ux-sim-detalhes summary{min-height:44px;align-content:center;cursor:pointer}
@media(max-width:1000px){html .ux-sim-layout{grid-template-columns:minmax(0,1fr);gap:24px}html .ux-sim-resultado{position:static}html .ux315-map-tools{flex-wrap:wrap}html .ux315-map-tools span{flex-basis:100%}}
@media(max-width:600px){html #grPublico .gr-2{grid-template-columns:minmax(0,1fr)}html #grPublico .gr-wrap{padding-inline:16px}html .ux-sim-campos{grid-template-columns:minmax(0,1fr)!important}html .ux315-map-tools{gap:8px}html .ux315-map-tools span{font-size:12px;line-height:1.5}html #grPublico .gr-mapa{height:65vh;min-height:380px}html #grPublico .gr-mapa-linha{grid-template-columns:minmax(0,1fr)}}


/* V32.6 — public portfolio study cards + Gran KMZ locator */
#grPublico .ux319-project-study .ux319-project-photo-brand{
  display:grid;
  place-items:center;
  min-height:310px;
  background:
    radial-gradient(circle at 25% 20%,rgba(188,145,73,.16),transparent 34%),
    linear-gradient(145deg,#eef3ed,#e4ece6);
}
html[data-tema=escuro] #grPublico .ux319-project-study .ux319-project-photo-brand{
  background:
    radial-gradient(circle at 25% 20%,rgba(226,193,120,.13),transparent 34%),
    linear-gradient(145deg,#173027,#10241d);
}
#grPublico .ux319-project-study .ux319-project-photo-brand img{
  width:min(74%,420px);
  height:auto;
  max-height:220px;
  object-fit:contain;
  filter:drop-shadow(0 18px 28px rgba(24,61,48,.12));
}
#grPublico .ux319-project-study .ux319-project-facts dd{
  white-space:normal;
  overflow-wrap:anywhere;
}
#grPublico .ux319-project-study .ux319-primary{
  background:#173e32;
}
html[data-tema=escuro] #grPublico .ux319-project-study .ux319-primary{
  background:#e9f3ec;
  color:#173e32;
}

/* V32.6.1 — client journey on UrbanNIX home */
#grPublico .ux326-client-services{
  padding-top:78px;
  padding-bottom:78px;
}
#grPublico .ux326-client-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:34px;
  margin-bottom:28px;
}
#grPublico .ux326-client-head>div{max-width:700px}
#grPublico .ux326-client-head h2{
  margin:8px 0 0;
  font-size:clamp(32px,4vw,54px);
  line-height:1.04;
  letter-spacing:-.045em;
}
#grPublico .ux326-client-head>p{
  max-width:420px;
  margin:0;
  color:var(--ux319-muted,#66776f);
  font-size:13px;
  line-height:1.7;
}
#grPublico .ux326-client-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
}
#grPublico .ux326-client-grid article{
  display:grid;
  align-content:start;
  gap:8px;
  min-width:0;
  min-height:190px;
  padding:22px;
  border:1px solid var(--ux319-line,#dbe2dd);
  border-radius:18px;
  background:var(--ux319-card,#fff);
}
#grPublico .ux326-client-grid b{
  display:grid;
  width:31px;
  height:31px;
  place-items:center;
  border-radius:50%;
  background:var(--ux319-soft,#edf2ee);
  color:var(--ux319-muted,#66776f);
  font-size:10px;
}
#grPublico .ux326-client-grid strong{
  margin-top:8px;
  color:var(--ux319-ink,#17382f);
  font-size:17px;
}
#grPublico .ux326-client-grid span{
  color:var(--ux319-muted,#66776f);
  font-size:11px;
  line-height:1.6;
}
#grPublico .ux326-client-cta{
  margin-top:18px;
}
@media(max-width:900px){
  #grPublico .ux326-client-head{align-items:flex-start;flex-direction:column}
  #grPublico .ux326-client-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:560px){
  #grPublico .ux326-client-services{padding-top:54px;padding-bottom:54px}
  #grPublico .ux326-client-grid{grid-template-columns:1fr}
  #grPublico .ux326-client-grid article{min-height:0}
}


/* V32.6.2 — WCAG AA client-journey contrast */
html[data-tema=claro] #grPublico .ux326-client-head>p,
html[data-tema=claro] #grPublico .ux326-client-grid span{
  color:#50645a;
}
html[data-tema=claro] #grPublico .ux326-client-grid b{
  color:#40554b;
  background:#e6ece7;
}
html[data-tema=escuro] #grPublico .ux326-client-head>p,
html[data-tema=escuro] #grPublico .ux326-client-grid span{
  color:#b8c9c0;
}
html[data-tema=escuro] #grPublico .ux326-client-grid b{
  color:#e3eee8;
  background:#263a31;
}


/* V32.6.3 — dark service-card surfaces */
html[data-tema=escuro] #grPublico .ux326-client-grid article{
  background:#17261f;
  border-color:#34483e;
}
html[data-tema=escuro] #grPublico .ux326-client-grid strong{
  color:#edf5f0;
}

/* Parceiros: cartoes padronizados e logos com fundo transparente. */
.ux319-footer-partners{flex-wrap:wrap;justify-content:flex-start;gap:18px 20px}.ux319-partner-logo{width:184px;height:64px;background:#fff;border-radius:10px;display:flex;align-items:center;justify-content:center;padding:10px 16px;box-sizing:border-box}.ux319-partner-logo img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}.ux-admin-nunes img,.ux-auth-nunes img,.ux-nunes-brand img{padding:4px;box-sizing:border-box;object-fit:contain}

.ux319-partner-logo img{width:100%;height:100%}

/* Celular: cabecalho do portal em uma linha (logo a esquerda, Menu a direita). */
@media (max-width:820px){html #grPublico .ux319-home .ux-home-topo-in,html #grPublico .ux-home-topo-in,.ux-home-topo-in{flex-direction:row!important;flex-wrap:wrap!important;align-items:center!important;justify-content:space-between!important;gap:10px 12px!important;padding:10px 0!important}html #grPublico .ux319-home .ux-home-topo .ux-home-marca,.ux-home-topo .ux-home-marca{flex:0 1 auto;justify-content:flex-start!important;margin:0!important}html #grPublico .ux319-home .ux-home-topo .ux-home-marca img,.ux-home-topo .ux-home-marca img{height:46px!important;width:150px!important;max-width:none!important;object-fit:contain!important;object-position:left center!important}html #grPublico .ux319-home .ux-home-topo .ux317-menu-toggle,.ux-home-topo .ux317-menu-toggle{margin:0!important;flex:0 0 auto}html #grPublico .ux319-home .ux-home-topo #uxHomeMenu,.ux-home-topo #uxHomeMenu{flex:1 0 100%!important;order:3}}


/* Celular: controles do carrossel em uma linha, controles das fotos dentro da imagem, fotos preenchendo o quadro e rodape em grade. */
.ux319-project-photo .ux334-slide{object-fit:cover!important}
.ux319-project-logo[src*="alto-balanco"]{width:104px!important;max-width:104px!important;height:52px!important;padding:4px 6px!important;box-sizing:border-box!important}
@media (max-width:820px){
.ux337-controls{display:flex!important;flex-wrap:nowrap!important;align-items:center!important;justify-content:center!important;gap:2px!important;padding:6px 10px 10px!important;min-height:0!important}
.ux337-controls .ux337-dots{grid-column:auto!important;order:2;gap:0!important;margin:0 2px!important}
.ux337-controls .ux337-dots button{width:18px!important;min-width:18px!important;height:34px!important;min-height:34px!important}
.ux337-controls>button{width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;font-size:15px!important;order:1}
.ux337-controls>button:nth-of-type(2){order:3}
.ux337-controls>button:nth-of-type(3){order:4}
.ux319-project-photo .ux334-controls{right:8px!important;bottom:8px!important;padding:2px!important;gap:0!important;max-width:calc(100% - 16px)!important;box-sizing:border-box!important}
.ux319-project-photo .ux334-controls button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;font-size:14px!important}
.ux319-project-photo .ux334-count{font-size:11px!important;min-width:28px!important;width:auto!important}
.ux319-footer-main nav{grid-template-columns:1fr 1fr!important;gap:0 12px!important;align-items:center}
.ux319-footer-main nav>*{width:100%!important;text-align:left}
.ux319-footer-partners{display:grid!important;grid-template-columns:1fr 1fr!important;gap:16px 12px!important}
.ux319-footer-partners>div{min-width:0;display:flex;flex-direction:column;justify-content:flex-end}
.ux319-footer-partners>div>span{font-size:10px!important;line-height:1.3!important;margin-bottom:6px}
.ux319-footer-partners .ux319-partner-logo{width:100%!important;height:56px!important}
.ux319-footer-partners>div:last-child:nth-child(odd){grid-column:1/-1;align-items:center;text-align:center}
.ux319-footer-partners>div:last-child:nth-child(odd) .ux319-partner-logo{width:calc(50% - 6px)!important}
}
.ux319-project-status{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0 14px;font-size:12px;line-height:1.4}
.ux319-commercial-status{display:inline-flex;align-items:center;gap:7px;padding:5px 10px;border-radius:999px;background:#e6f2eb;color:#205839;font-weight:700}
.ux319-commercial-status:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.ux319-commercial-status[data-commercial-mode="visitacao"]{background:#e9eff7;color:#274e7a}
.ux319-project-stage{color:inherit;opacity:.8}
html[data-tema="escuro"] .ux319-commercial-status{background:#203b2e;color:#b4e6c9}
html[data-tema="escuro"] .ux319-commercial-status[data-commercial-mode="visitacao"]{background:#26364d;color:#c4ddff}

/* assets/css/v320-mobile-portal.css */

/* UrbanNIX V32.0 — portal visual, mobile-first and scoped */
:root{--ux320-ink:#092d2b;--ux320-deep:#071c1b;--ux320-mint:#9dd2ae;--ux320-gold:#d6b35d;--ux320-line:rgba(157,210,174,.24);--ux320-paper:#f3f6f0}
#grPublico.ux-v320-public{background:var(--ux320-paper);overflow-x:clip;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}
#grPublico.ux-v320-public .ux319-home{overflow-x:clip;background:var(--ux320-paper);color:var(--ux320-ink)}
#grPublico.ux-v320-public .ux319-intro{position:relative;isolation:isolate;overflow:hidden;background:linear-gradient(118deg,#071d1c 0%,#0d302b 58%,#143f35 100%);color:#f6faf6;border-radius:0 0 28px 28px;box-shadow:0 18px 54px rgba(7,28,27,.18)}
#grPublico.ux-v320-public .ux319-intro:before{content:"";position:absolute;inset:-30% -10% auto auto;width:55vw;height:55vw;max-width:720px;max-height:720px;border:1px solid rgba(214,179,93,.28);border-radius:50%;transform:translate(24%,-24%);animation:ux320-orbit 18s linear infinite;pointer-events:none}
#grPublico.ux-v320-public .ux319-intro:after{content:"";position:absolute;right:8%;bottom:-65px;width:230px;height:230px;border-radius:50%;background:radial-gradient(circle,rgba(157,210,174,.28),transparent 67%);filter:blur(2px);animation:ux320-breathe 6s ease-in-out infinite;pointer-events:none}
#grPublico.ux-v320-public .ux319-intro>*{position:relative;z-index:1}
#grPublico.ux-v320-public .ux319-project{border:1px solid rgba(9,45,43,.13);box-shadow:0 14px 35px rgba(9,45,43,.08);transition:transform .35s ease,box-shadow .35s ease,border-color .35s ease}
#grPublico.ux-v320-public .ux319-project:hover{transform:translateY(-6px);border-color:rgba(80,139,108,.5);box-shadow:0 22px 48px rgba(9,45,43,.16)}
#grPublico.ux-v320-public .ux319-project-photo{position:relative;overflow:hidden}
#grPublico.ux-v320-public .ux319-project-photo img{transition:transform .65s cubic-bezier(.2,.7,.2,1),filter .35s ease}
#grPublico.ux-v320-public .ux319-project:hover .ux319-project-photo img{transform:scale(1.045);filter:saturate(1.08)}
#grPublico.ux-v320-public .ux319-project:nth-child(2){animation:ux320-rise .65s .08s both}
#grPublico.ux-v320-public .ux319-project:nth-child(3){animation:ux320-rise .65s .16s both}
#grPublico.ux-v320-public .ux319-project:nth-child(4){animation:ux320-rise .65s .24s both}
#grPublico.ux-v320-public .ux319-project-facts>div.ux-v320-money,#grPublico.ux-v320-public .ux319-vgv,#grPublico.ux-v320-public .ux-v320-money{display:none!important}
#grPublico.ux-v320-public .ux319-project-facts{grid-template-columns:repeat(2,minmax(0,1fr))}
#grPublico.ux-v320-public .ux319-project-facts>div{min-width:0}
.ux-v320-live-strip{display:flex;align-items:center;gap:10px;margin:22px auto 0;width:min(1180px,92%);padding:12px 15px;border:1px solid rgba(9,45,43,.12);border-radius:999px;background:rgba(255,255,255,.72);color:#21483e;font-size:13px;letter-spacing:.03em;box-shadow:0 8px 20px rgba(9,45,43,.05)}
.ux-v320-live-strip i{width:9px;height:9px;flex:0 0 9px;border-radius:50%;background:#61be86;box-shadow:0 0 0 0 rgba(97,190,134,.55);animation:ux320-pulse 1.8s infinite}
.ux-v320-live-strip b{font-weight:800}
#grPublico .ux-v320-vista-card{border-color:rgba(93,126,92,.48);background:linear-gradient(145deg,#fff,#eef5ec)}
#grPublico .ux-v320-vista-card .ux319-project-photo{background:#e4eee4}
#grPublico .ux-v320-vista-card .ux319-project-photo img{object-fit:contain;padding:22px;background:linear-gradient(135deg,#e4eee4,#f8fbf5)}
#grPublico .ux-v320-vista-card .ux319-project-body>p{color:#3d5b4c}
.ux-v320-coming-ribbon{position:absolute;top:16px;left:16px;z-index:2;display:inline-flex;align-items:center;min-height:30px;padding:6px 10px;border:1px solid rgba(214,179,93,.75);border-radius:999px;background:#173f35;color:#fff8df;font-size:11px;font-weight:800;letter-spacing:.12em;box-shadow:0 7px 18px rgba(7,28,27,.18)}
#grPublico .ux-v320-vista-card .ux319-project-actions{align-items:center}
#grPublico .ux-v320-vista-card [data-ux-client-project]{border-color:#9ebf8d;color:#21483e}
#grPublico.ux-v320-entering:after{content:"";position:fixed;inset:0;z-index:9999;background:rgba(7,28,27,.3);backdrop-filter:blur(2px);pointer-events:none}
#grPublico.ux-v320-entering:before{content:"Abrindo o empreendimento…";position:fixed;left:50%;top:50%;z-index:10000;transform:translate(-50%,-50%);padding:14px 18px;border-radius:999px;background:#f9fcf5;color:#12382f;font-weight:800;box-shadow:0 18px 60px rgba(0,0,0,.25);animation:ux320-breathe 1s infinite;pointer-events:none}
#grPublico.ux-v320-gran .ux318-location-grid{align-items:stretch}
#grPublico .ux-v320-gran-map{position:relative;min-height:100%;overflow:hidden;border-radius:20px;background:#102725;box-shadow:inset 0 0 0 1px rgba(214,179,93,.4)}
#grPublico .ux-v320-gran-map img{display:block;width:100%;height:100%;min-height:360px;object-fit:cover;object-position:center}
#grPublico .ux-v320-gran-map figcaption{position:absolute;left:14px;right:14px;bottom:14px;padding:10px 12px;border-radius:12px;background:rgba(7,28,27,.84);color:#eef8ef;font-size:12px;line-height:1.45;backdrop-filter:blur(8px)}
#grPublico .ux-v320-gran-map figcaption b{color:#f3d377}
.ux-v320-alto-portal{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(290px,.72fr);gap:18px;margin:32px auto;width:min(1180px,92%);padding:18px;border:1px solid rgba(9,45,43,.14);border-radius:24px;background:#092623;color:#edf7ef;box-shadow:0 22px 55px rgba(7,28,27,.16)}
.ux-v320-alto-map-wrap{min-width:0;padding:12px;border:1px solid rgba(157,210,174,.18);border-radius:18px;background:linear-gradient(145deg,#0b2f2a,#102c28)}
.ux-v320-alto-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin:2px 2px 12px}
.ux-v320-alto-head h2{margin:3px 0 0;color:#f5f8f1;font-size:clamp(22px,3vw,34px)}
.ux-v320-alto-head p{margin:0;color:#b8d0c0;font-size:13px}
.ux-v320-alto-kicker{color:#e7c66d;font-size:11px;font-weight:800;letter-spacing:.13em}
.ux-v320-alto-map-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.ux-v320-alto-map-tools button{min-height:40px;padding:8px 12px;border:1px solid rgba(157,210,174,.25);border-radius:999px;background:rgba(255,255,255,.07);color:#eef7ef;cursor:pointer}
.ux-v320-alto-map-tools button.is-on,.ux-v320-alto-map-tools button:hover{border-color:#dfc36c;background:#dfc36c;color:#19382f}
.ux-v320-alto-map-tools span{margin-left:auto;color:#abc6b5;font-size:12px}
.ux-v320-alto-svg{display:block;width:100%;height:auto;min-height:350px;border-radius:13px;background:#173c33;touch-action:pan-y}
.ux-v320-lot{cursor:pointer;outline:none}
.ux-v320-lot path{fill:#3d8069;stroke:#a3d2ae;stroke-width:.55;vector-effect:non-scaling-stroke;transition:fill .22s,stroke .22s,filter .22s}
.ux-v320-lot.is-t3 path{fill:#d3af52;stroke:#ffe39a}
.ux-v320-lot:hover path,.ux-v320-lot:focus path{filter:brightness(1.2);stroke:#fff;stroke-width:1.2}
.ux-v320-lot.is-selected path{fill:#fff0ad;stroke:#fff;stroke-width:1.5;filter:drop-shadow(0 0 7px rgba(255,224,115,.9))}
.ux-v320-lot text{fill:#f5fbf4;font:700 3.7px Arial,sans-serif;pointer-events:none;text-anchor:middle;dominant-baseline:central}
.ux-v320-lot.is-t3 text{fill:#17352d}
.ux-v320-map-legend{display:flex;gap:12px;flex-wrap:wrap;margin-top:10px;color:#b7cfbf;font-size:12px}
.ux-v320-map-legend span{display:inline-flex;align-items:center;gap:6px}
.ux-v320-map-legend i{display:inline-block;width:11px;height:11px;border-radius:3px;background:#d3af52}
.ux-v320-map-legend i.two{background:#3d8069}
.ux-v320-alto-media{display:flex;flex-direction:column;min-width:0;padding:12px;border:1px solid rgba(157,210,174,.18);border-radius:18px;background:rgba(255,255,255,.05)}
.ux-v320-media-label{color:#e7c66d;font-size:11px;font-weight:800;letter-spacing:.12em}
.ux-v320-selected{min-height:64px;margin:8px 0 12px}
.ux-v320-selected h3{margin:0 0 4px;color:#fff;font-size:24px}
.ux-v320-selected p{margin:0;color:#b8d0c0;font-size:13px}
.ux-v320-media-main{position:relative;overflow:hidden;min-height:170px;border-radius:14px;background:#173c33}
.ux-v320-media-main button,.ux-v320-media-thumbs button{padding:0;border:0;background:none;cursor:pointer}
.ux-v320-media-main img{display:block;width:100%;height:230px;object-fit:cover;transition:transform .7s ease}
.ux-v320-media-main:hover img{transform:scale(1.04)}
.ux-v320-media-main figcaption{position:absolute;left:10px;right:10px;bottom:10px;padding:7px 9px;border-radius:9px;background:rgba(7,28,27,.78);color:#fff;font-size:12px}
.ux-v320-media-thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:9px}
.ux-v320-media-thumbs button{overflow:hidden;border:1px solid rgba(157,210,174,.25);border-radius:8px;opacity:.72;transition:opacity .2s,border-color .2s,transform .2s}
.ux-v320-media-thumbs button:hover,.ux-v320-media-thumbs button.is-on{opacity:1;border-color:#dfc36c;transform:translateY(-2px)}
.ux-v320-media-thumbs img{display:block;width:100%;height:55px;object-fit:cover}
.ux-v320-media-note{margin-top:auto;padding-top:12px;color:#a6c4b1;font-size:12px;line-height:1.45}
.ux-v320-lightbox{position:fixed;inset:0;z-index:10020;display:grid;place-items:center;padding:20px;background:rgba(3,15,14,.88);backdrop-filter:blur(9px)}
.ux-v320-lightbox[hidden]{display:none}
.ux-v320-lightbox-inner{position:relative;width:min(950px,100%);padding:12px;border-radius:18px;background:#0b2925;box-shadow:0 25px 80px rgba(0,0,0,.4)}
.ux-v320-lightbox img{display:block;width:100%;max-height:78vh;object-fit:contain;border-radius:10px}
.ux-v320-lightbox-close{position:absolute;right:20px;top:20px;width:42px;height:42px;border:1px solid rgba(255,255,255,.4);border-radius:50%;background:rgba(7,28,27,.82);color:#fff;font-size:26px;cursor:pointer}
.ux-v320-lightbox-caption{padding:10px 4px 2px;color:#d4e8da;font-size:13px}
#grCliente.ux-v320-vista-client{background:linear-gradient(135deg,#092623,#123a31);color:#eef7ef}
@keyframes ux320-orbit{to{transform:translate(24%,-24%) rotate(360deg)}}
@keyframes ux320-breathe{0%,100%{opacity:.66;transform:scale(1)}50%{opacity:1;transform:scale(1.04)}}
@keyframes ux320-pulse{0%{box-shadow:0 0 0 0 rgba(97,190,134,.58)}70%{box-shadow:0 0 0 9px rgba(97,190,134,0)}100%{box-shadow:0 0 0 0 rgba(97,190,134,0)}}
@keyframes ux320-rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media(max-width:820px){
 .ux-v320-alto-portal{grid-template-columns:1fr;width:min(720px,94%);padding:12px;border-radius:18px}
 .ux-v320-alto-map-tools span{width:100%;margin-left:0}
 .ux-v320-alto-svg{min-height:330px}
 #grPublico .ux318-location-grid{grid-template-columns:1fr}
 #grPublico .ux-v320-gran-map{min-height:300px}
 #grPublico .ux-v320-gran-map img{min-height:300px}
}
@media(max-width:560px){
 #grPublico.ux-v320-public .ux319-intro{border-radius:0 0 20px 20px}
 .ux-v320-live-strip{width:92%;align-items:flex-start;border-radius:15px;font-size:12px}
 .ux-v320-coming-ribbon{top:10px;left:10px;font-size:10px}
 #grPublico.ux-v320-public .ux319-project-facts{grid-template-columns:1fr 1fr}
 .ux-v320-alto-head{display:block}
 .ux-v320-alto-head p{margin-top:7px}
 .ux-v320-alto-map-wrap,.ux-v320-alto-media{padding:9px}
 .ux-v320-alto-svg{min-height:285px}
 .ux-v320-selected h3{font-size:21px}
 .ux-v320-media-main img{height:190px}
 .ux-v320-media-thumbs{grid-template-columns:repeat(4,1fr)}
 .ux-v320-media-thumbs img{height:46px}
}
@media(prefers-reduced-motion:reduce){
 #grPublico.ux-v320-public .ux319-project,#grPublico.ux-v320-public .ux319-project:nth-child(2),#grPublico.ux-v320-public .ux319-project:nth-child(3),#grPublico.ux-v320-public .ux319-project:nth-child(4){animation:none;transition:none}
 #grPublico.ux-v320-public .ux319-intro:before,.ux-v320-public .ux319-intro:after,.ux-v320-live-strip i{animation:none}
}
@media(max-width:820px){
 body:not(.gr-portal-ativo) #appRoot .wrap{padding:10px}
 body:not(.gr-portal-ativo) #appRoot .grid-cards,body:not(.gr-portal-ativo) #appRoot .form-grid,body:not(.gr-portal-ativo) #appRoot .dashboard-grid{grid-template-columns:1fr!important}
 body:not(.gr-portal-ativo) #appRoot .table-wrap,body:not(.gr-portal-ativo) #appRoot table{max-width:100%;overflow-x:auto}
 body:not(.gr-portal-ativo) #appRoot .table-wrap{display:block}
 body:not(.gr-portal-ativo) #appRoot th,body:not(.gr-portal-ativo) #appRoot td{white-space:nowrap}
 body:not(.gr-portal-ativo) #appRoot .btn,body:not(.gr-portal-ativo) #appRoot button{min-height:42px}
}
@media(max-width:480px){
 body:not(.gr-portal-ativo) #appRoot .page-heading{display:block}
 body:not(.gr-portal-ativo) #appRoot .page-heading .actions{margin-top:10px}
}

/* assets/css/v322-legibilidade.css */
/* V32.2 — passe de legibilidade (PC, celular e tablet).
   Não redesenha nada: eleva rótulos/legendas que estavam abaixo do piso de
   leitura confortável (~11px, alguns chegando a ~7-8px no mobile) e escurece
   duas cores de texto cinza-esverdeado que ficavam com baixo contraste sobre
   fundo claro. Nenhum layout, espaçamento ou comportamento foi alterado —
   só tamanho de fonte e, em dois casos comprovadamente sobre fundo claro,
   a cor do texto. Carregado por último de propósito, para vencer os v3xx
   anteriores sem precisar editar cada um deles. */

.gr-location-map-tools button,
.lot-tile em,
.urban-map-badge span,
.urban-map-scale,
.gr-menu .gr-admin-acesso:after,
header.top .brand .loc,
th,
.badge,
.required-pill,
#view-mapa .dxf-rail-key span,
.gr-notify-head span,
.gr-location-tabs button,
.location-admin-tabs,
.gr-benefit-card span{
  font-size:.72rem;
}
.nav-caption,
.gr-notify-head button{
  font-size:.7rem;
}
.eyebrow{
  font-size:.68rem;
}
.period-chip{
  font-size:.72rem;
}

/* Cinza-esverdeado sobre fundo claro (branco ou quase-branco): contraste
   insuficiente no tamanho original. Escurecido para o mesmo tom, mais legível. */
.gr-public-dims.compact .gr-dim-item small{
  color:#5B6961;
}
.gr-benefit-card span,
.gr-benefit-card small{
  color:#5B6961;
}

/* Medido com Playwright (checador de contraste WCAG AA) em 820/1024px:
   dourado claro (#B99347, herdado de --u8-gold) sobre fundo quase-branco do
   admin no tema claro mede ~2,6:1 — abaixo do mínimo de 4,5:1. Uma correção
   anterior para o period-chip (app-v26.3.css, body.light-theme .period-chip)
   já existia, mas um patch posterior (v308) a anulou com !important. Aqui
   reaplicamos com o mesmo dourado escuro já usado no timbrado impresso
   (#8A6D1B), só no tema claro — o tema escuro já media contraste OK. */
body.light-theme .eyebrow,
body.light-theme .page-heading .eyebrow,
body.light-theme .period-chip{
  color:#8A6D1B!important;
}

/* Botão "Área do Cliente" na home pública: medido em ambos os temas com
   texto e fundo praticamente da mesma cor (contraste ~1,1-2,1:1 — quase
   invisível). Fixado por tema para casar com o fundo real de cada um. */
.ux-home-cliente{
  color:#F2F7F4;
}
html[data-tema="escuro"] .ux-home-cliente{
  color:#12251d;
}


/* V32.5 — contraste do painel administrativo auditado em 820/1024 px.
   Remove cores fixas das camadas legadas e usa os tokens do tema atual. */
.vgv-side{
  background:var(--u8-card-2)!important;
}
.vgv-main>span,
.vgv-main small,
.vgv-side span,
.gr-v261-chart p,
.gr-bar-label,
.gr-chart-legend{
  color:var(--u8-muted)!important;
}
.gr-v261-chart,
.gr-health-panel,
.gr-health-item,
.gr-dt-kpi,
.gr-plan-validator,
.gr-plan-grid div{
  background:var(--u8-card)!important;
  border-color:var(--u8-line)!important;
  color:var(--u8-text)!important;
}
.gr-big-number,
.gr-v261-chart h3,
.gr-health-score,
.gr-health-item strong,
.gr-dt-kpi strong{
  color:var(--u8-text)!important;
}
.gr-bars{
  border-color:var(--u8-line)!important;
}
.gr-mini-track,
.gr-plan-grid div{
  background:var(--u8-card-2)!important;
}
body.light-theme .period-chip,
html[data-tema="claro"] .period-chip{
  color:#70560F!important;
}


/* V32.5.1 — últimos quatro achados da auditoria WCAG. */
.live-pulse{
  color:var(--u8-green)!important;
}
html[data-tema="claro"] #grPublico .ux319-home .ux-home-menu .ux-home-cliente{
  color:#FFFFFF!important;
}
html[data-tema="escuro"] #grPublico .ux319-home .ux-home-menu .ux-home-cliente{
  color:#0B2C20!important;
}

/* assets/css/v323-alto-balanco.css */
/* V32.3 — acabamento visual do ALTO BALANÇO I (portal público, área do
   cliente e cartão comercial na Central).
   Corrige três problemas encontrados ao revisar o acumulado de v305 a v319:

   1) Tipografia inconsistente: a v307 trocou a fonte do título principal do
      herói (h1) de Fraunces para uma pilha genérica (Georgia/Times), mas
      manteve Fraunces nos demais títulos (h2 do projeto, da localização, h3
      do vídeo). O visitante via duas famílias de título diferentes na mesma
      página. Aqui a v323 carrega por último e devolve Fraunces ao h1,
      igualando à hierarquia do resto da página.

   2) Contraste: os rótulos em dourado-acinzentado (kicker/eyebrow) usavam
      #9a7b43 sobre cartão branco — abaixo de 4.5:1 no tamanho em que
      aparecem. Ajustado por tema: mais escuro no tema claro (cartão branco),
      mais claro no tema escuro (cartão quase preto) — mesma identidade,
      contraste correto nos dois.

   3) Feedback ao toque: os botões e cartões clicáveis só reagiam no hover
      (não existe hover em touch). Adicionado um estado de pressão imediato
      (:active), que aparece no instante do toque, não depois — é o que faz
      a interface responder "na hora" em celular e tablet.

   Nenhuma estrutura, grid ou texto foi alterado — só tipografia, cor de
   texto e feedback de toque. */

.ux-v305-hero-content h1{
  font-family:Fraunces,Georgia,serif!important;
  font-weight:600!important;
}

.ux-v305-project>div>span,
.ux-v305-section-head>span,
.ux-v305-location>span,
.ux-v305-video span{
  color:#7A5F2F!important;
}
:root[data-tema="escuro"] .ux-v305-project>div>span,
:root[data-tema="escuro"] .ux-v305-section-head>span,
:root[data-tema="escuro"] .ux-v305-location>span,
:root[data-tema="escuro"] .ux-v305-video span{
  color:#E6CB8D!important;
}

.ux-v305-btn:active{
  transform:scale(.97) translateY(0);
  filter:brightness(.96);
  transition:transform .1s ease-out,filter .1s ease-out;
}
.ux-v305-back:active,
.ux-v305-theme:active{
  transform:scale(.96)!important;
  transition:transform .1s ease-out!important;
}
.ux-v305-media:active img{
  transform:scale(.99);
}
.ux-v305-video-thumb>button:active{
  transform:translate(-50%,-50%) scale(.94);
}
.ux-v305-expand:active{
  transform:scale(.97);
}

@media(prefers-reduced-motion:reduce){
  .ux-v305-btn:active,
  .ux-v305-back:active,
  .ux-v305-theme:active,
  .ux-v305-media:active img,
  .ux-v305-video-thumb>button:active,
  .ux-v305-expand:active{
    transform:none;
  }
}

/* assets/css/v324-alto-balanco-experience.css */
/* Alto Balanço: content-first, original photographs, one scoped visual system.
   Palette: porcelain #f5f5f7, paper #ffffff, ink #172520, muted #526259,
   pine #174a38, bronze #876625. Native platform fonts, no remote font dependency. */
#grPublico.ux-v320-alto-active{--ab-bg:#f5f5f7;--ab-card:#fff;--ab-text:#172520;--ab-muted:#526259;--ab-line:#d9dfda;--ab-pine:#174a38;--ab-accent:#876625;--ab-soft:#e9eeeb;--ab-two:#b4cbbc;--ab-three:#ead6a5;background:var(--ab-bg);color:var(--ab-text)}
:root[data-tema=escuro] #grPublico.ux-v320-alto-active{--ab-bg:#101815;--ab-card:#19231e;--ab-text:#f3f5f3;--ab-muted:#c1ccc5;--ab-line:#42554a;--ab-pine:#b8dfc9;--ab-accent:#ebd49e;--ab-soft:#25362c;--ab-two:#6a9c82;--ab-three:#cba95b}
/* Replace duplicated promotional sections only on the Alto home; keep the real simulator, footer and other routes. */
#grPublico.ux-v320-alto-active .ux315-housing>section:not(.ux-v320-alto-portal):not(.ux315-sim-section){display:none!important}
#grPublico.ux-v320-alto-active .ux315-header{background:var(--ab-card);color:var(--ab-text);border-bottom:1px solid var(--ab-line);box-shadow:none}
#grPublico.ux-v320-alto-active .ux317-path{max-width:1280px;margin:0 auto;padding:12px 28px;color:var(--ab-muted);background:transparent}
#grPublico.ux-v320-alto-active .ux-v320-alto-portal{display:block;box-sizing:border-box;width:min(1280px,calc(100% - 56px));margin:0 auto 64px;padding:0;border:0;border-radius:0;background:transparent;color:var(--ab-text);box-shadow:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif}
#grPublico.ux-v320-alto-active .ux-v320-alto-portal *{box-sizing:border-box}
#grPublico.ux-v320-alto-active .ab-intro{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:48px 0 36px}
#grPublico.ux-v320-alto-active .ab-place{margin:0 0 12px;color:var(--ab-muted);font-size:15px;font-weight:550;letter-spacing:0}
#grPublico.ux-v320-alto-active .ab-intro h1{margin:0 0 16px;font:650 clamp(38px,5.1vw,68px)/1.08 -apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;letter-spacing:-.03em;color:var(--ab-text);text-wrap:balance}
#grPublico.ux-v320-alto-active .ab-lead{max-width:570px;margin:0;color:var(--ab-muted);font-size:19px;line-height:1.6}
#grPublico.ux-v320-alto-active .ab-stage{align-self:flex-start;flex-shrink:0;margin-top:8px;padding:9px 14px;border:1px solid var(--ab-line);border-radius:30px;font-size:13px;font-weight:550;color:var(--ab-muted)}
#grPublico.ux-v320-alto-active .ab-experience{display:grid;grid-template-columns:minmax(0,1.16fr) minmax(0,1fr);gap:32px;align-items:start}
#grPublico.ux-v320-alto-active .ux-v320-alto-media{display:block;position:static;min-width:0;padding:0;border:0;border-radius:0;background:none;color:var(--ab-text);box-shadow:none}
#grPublico.ux-v320-alto-active .ux-v320-selected{min-height:73px;margin:0 0 22px}
#grPublico.ux-v320-alto-active .ux-v320-selected h3{margin:0 0 7px;font:600 28px/1.2 -apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;letter-spacing:-.035em;color:var(--ab-text)}
#grPublico.ux-v320-alto-active .ux-v320-selected p{margin:0;color:var(--ab-muted);font-size:14px;line-height:1.5}
#grPublico.ux-v320-alto-active .ux-v320-media-main{margin:0;min-height:0;aspect-ratio:auto;overflow:hidden;border-radius:22px;background:var(--ab-card)}
#grPublico.ux-v320-alto-active .ux-v320-media-main button{position:relative;display:block;width:100%;height:350px;min-height:0;padding:0;background:transparent;border:0;cursor:zoom-in}
#grPublico.ux-v320-alto-active .ux-v320-media-main img{display:block;width:100%;height:100%;object-fit:contain;object-position:center;transform:none;transition:none!important}
#grPublico.ux-v320-alto-active .ux-v320-media-main figcaption{position:static;margin:0;padding:13px 18px;min-height:52px;background:var(--ab-card);color:var(--ab-muted);font:12px/1.6 -apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;border-top:1px solid var(--ab-line);border-radius:0;backdrop-filter:none}
#grPublico.ux-v320-alto-active .ab-expand{position:absolute;right:12px;bottom:12px;display:grid;place-items:center;width:36px;height:36px;background:var(--ab-card);color:var(--ab-text);border:1px solid var(--ab-line);border-radius:50%;font-size:20px}
#grPublico.ux-v320-alto-active .ux-v320-media-thumbs{display:flex;justify-content:center;gap:10px;margin:14px 0 0;padding:3px;overflow-x:auto;scrollbar-width:thin}
#grPublico.ux-v320-alto-active .ux-v320-media-thumbs button{flex:0 0 76px;height:60px;padding:4px;border:2px solid transparent;border-radius:12px;background:var(--ab-card);opacity:1;transform:none;cursor:pointer;transition:border-color .15s}
#grPublico.ux-v320-alto-active .ux-v320-media-thumbs button.is-on{border-color:var(--ab-pine)}
#grPublico.ux-v320-alto-active .ux-v320-media-thumbs img{width:100%;height:100%;object-fit:contain;border-radius:6px}
#grPublico.ux-v320-alto-active .ab-specs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:24px 0 0;padding-top:22px;border-top:1px solid var(--ab-line)}
#grPublico.ux-v320-alto-active .ab-specs dt{color:var(--ab-muted);font-size:12px;line-height:1.6}
#grPublico.ux-v320-alto-active .ab-specs dd{margin:5px 0 0;font-size:17px;font-weight:600;letter-spacing:-.025em;color:var(--ab-text)}
#grPublico.ux-v320-alto-active .ux-v320-media-note{margin:18px 0 0;padding:0;color:var(--ab-muted);font-size:12px;line-height:1.65}
#grPublico.ux-v320-alto-active .ux-v320-alto-map-wrap{min-width:0;padding:24px;border:1px solid var(--ab-line);border-radius:16px;background:var(--ab-card);box-shadow:none}
#grPublico.ux-v320-alto-active .ab-map-title{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin:0 0 19px}
#grPublico.ux-v320-alto-active .ab-map-title h2{margin:0;font:600 22px/1.2 -apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;letter-spacing:-.035em;color:var(--ab-text)}
#grPublico.ux-v320-alto-active .ab-map-title span{font-size:12px;color:var(--ab-muted)}
#grPublico.ux-v320-alto-active .ux-v320-alto-map-tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;padding:4px;margin:0 0 20px;background:var(--ab-soft);border-radius:14px}
#grPublico.ux-v320-alto-active .ux-v320-alto-map-tools button{min-width:0;min-height:44px;border:0;border-radius:10px;background:none;color:var(--ab-muted);font-size:14px;font-weight:600;padding:8px;cursor:pointer}
#grPublico.ux-v320-alto-active .ux-v320-alto-map-tools button[aria-pressed=true]{background:var(--ab-card);color:var(--ab-text);box-shadow:0 1px 4px #00000012}
#grPublico.ux-v320-alto-active .ab-map-stage{overflow:hidden;border-radius:16px;background:var(--ab-soft)}
#grPublico.ux-v320-alto-active .ux-v320-alto-svg{display:block;width:100%;height:310px;min-height:0;background:transparent;border:0;border-radius:0;touch-action:pan-y}
#grPublico.ux-v320-alto-active .ab-road{fill:#c5cfc8;stroke:#879a8c;stroke-width:.3}
#grPublico.ux-v320-alto-active .ux-v320-lot path{fill:var(--ab-two);stroke:var(--ab-card);stroke-width:.7;filter:none;transition:fill .12s ease}
#grPublico.ux-v320-alto-active .ux-v320-lot.is-t3 path{fill:var(--ab-three)}
#grPublico.ux-v320-alto-active .ux-v320-lot.is-t0 path{fill:#bac0c2}
#grPublico.ux-v320-alto-active .ux-v320-lot text{fill:#183124;font:600 3.3px Arial,sans-serif}
#grPublico.ux-v320-alto-active .ux-v320-lot.is-selected path{stroke:var(--ab-pine);stroke-width:2;filter:none}
#grPublico.ux-v320-alto-active .ux-v320-lot:hover path,#grPublico.ux-v320-alto-active .ux-v320-lot:focus-visible path{stroke:var(--ab-accent);stroke-width:2;filter:none}
#grPublico.ux-v320-alto-active .ux-v320-lot.ab-filtered{opacity:.16;pointer-events:none}
#grPublico.ux-v320-alto-active .ab-map-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0}
#grPublico.ux-v320-alto-active .ab-map-hint{max-width:190px;font-size:11px;line-height:1.5;color:var(--ab-muted)}
#grPublico.ux-v320-alto-active .ab-zoom{display:flex;flex-shrink:0;align-items:center;border:1px solid var(--ab-line);border-radius:11px;overflow:hidden}
#grPublico.ux-v320-alto-active .ab-zoom button{min-width:44px;min-height:44px;border:0;background:var(--ab-card);color:var(--ab-text);cursor:pointer;font:600 16px system-ui}
#grPublico.ux-v320-alto-active .ab-zoom button:disabled{opacity:.4;cursor:default}
#grPublico.ux-v320-alto-active .ab-zoom span{font-size:12px}
#grPublico.ux-v320-alto-active .ux-v320-map-legend{gap:14px;color:var(--ab-muted);font-size:11px;margin:12px 0 18px}
#grPublico.ux-v320-alto-active .ux-v320-map-legend i{background:var(--ab-three);border:1px solid var(--ab-line)}
#grPublico.ux-v320-alto-active .ux-v320-map-legend i.two{background:var(--ab-two)}
#grPublico.ux-v320-alto-active .ux-v320-map-legend i.pending{background:#bac0c2}
#grPublico.ux-v320-alto-active .ab-unit-picker{display:grid;gap:8px;font-size:12px;color:var(--ab-muted)}
#grPublico.ux-v320-alto-active .ab-unit-picker select{width:100%;min-height:46px;border:1px solid var(--ab-line);border-radius:11px;padding:10px 12px;background:var(--ab-card);color:var(--ab-text);font-size:15px}
#grPublico.ux-v320-alto-active .ab-note{margin:12px 0 0;color:var(--ab-muted);font-size:11px;line-height:1.6}
#grPublico.ux-v320-alto-active .ab-loading{padding:32px;border-radius:20px;background:var(--ab-card);color:var(--ab-text);line-height:1.6}
#grPublico.ux-v320-alto-active .ab-button{min-height:44px;padding:10px 18px;border:0;border-radius:12px;background:var(--ab-pine);color:var(--ab-card);cursor:pointer}
#grPublico.ux-v320-alto-active .ab-announcement{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#grPublico.ux-v320-alto-active .ux315-sim-section{max-width:1224px;margin:0 auto 60px;border-radius:24px;background:var(--ab-card);color:var(--ab-text)}
.ux-v320-lightbox[data-ab-managed=true]{background:#070d0beF;backdrop-filter:none;padding:24px}
.ux-v320-lightbox[data-ab-managed=true] .ux-v320-lightbox-inner{background:#18251e;padding:16px;border-radius:22px}
.ux-v320-lightbox[data-ab-managed=true] .ux-v320-lightbox-close{z-index:1;width:48px;height:48px}
.ux-v320-lightbox[data-ab-managed=true] img{height:auto;width:100%;max-height:78dvh;object-fit:contain}
@media(max-width:900px){
 #grPublico.ux-v320-alto-active .ux-v320-alto-portal{width:calc(100% - 36px)}
 #grPublico.ux-v320-alto-active .ab-intro{padding-top:30px;gap:16px;flex-wrap:wrap}
 #grPublico.ux-v320-alto-active .ab-experience{grid-template-columns:minmax(0,1fr);gap:30px}
 #grPublico.ux-v320-alto-active .ux-v320-alto-map-wrap{grid-row:1}
 #grPublico.ux-v320-alto-active .ux-v320-alto-svg{height:300px;min-height:0}
 #grPublico.ux-v320-alto-active .ux-v320-media-main button{height:380px}
 #grPublico.ux-v320-alto-active .ux-v320-alto-media{display:block}
 #grPublico.ux-v320-alto-active .ab-stage{margin:0}
 #grPublico.ux-v320-alto-active .ux315-sim-section{margin-inline:18px}
}
@media(max-width:560px){
 #grPublico.ux-v320-alto-active .ux317-path{padding-inline:18px}
 #grPublico.ux-v320-alto-active .ab-intro{padding:24px 0;gap:18px}
 #grPublico.ux-v320-alto-active .ab-lead{font-size:16px;line-height:1.6}
 #grPublico.ux-v320-alto-active .ab-intro h1{font-size:42px}
 #grPublico.ux-v320-alto-active .ux-v320-alto-map-wrap{padding:14px;border-radius:20px}
 #grPublico.ux-v320-alto-active .ab-map-title h2{font-size:22px}
 #grPublico.ux-v320-alto-active .ux-v320-alto-map-tools{margin-bottom:14px}
 #grPublico.ux-v320-alto-active .ux-v320-alto-map-tools button{font-size:13px}
 #grPublico.ux-v320-alto-active .ux-v320-alto-svg{height:240px;min-height:0}
 #grPublico.ux-v320-alto-active .ux-v320-media-main button{height:290px}
 #grPublico.ux-v320-alto-active .ab-specs dd{font-size:15px}
 #grPublico.ux-v320-alto-active .ux-v320-selected h3{font-size:26px}
}
@media(prefers-reduced-motion:reduce){#grPublico.ux-v320-alto-active *,#grPublico.ux-v320-alto-active *:before,#grPublico.ux-v320-alto-active *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

#grPublico.ux-v320-alto-active .ab-view-image{display:none}
#grPublico.ux-v320-alto-active .ab-empty .ux-v320-media-main,#grPublico.ux-v320-alto-active .ab-empty .ux-v320-media-thumbs,#grPublico.ux-v320-alto-active .ab-empty .ab-specs,#grPublico.ux-v320-alto-active .ab-empty .ab-view-image{display:none}
@media(max-width:900px){#grPublico.ux-v320-alto-active .ab-view-image{display:block;width:100%;min-height:44px;margin:12px 0 0;border:0;border-radius:12px;padding:10px;background:var(--ab-pine);color:var(--ab-card);font:600 13px system-ui;cursor:pointer}}

/* Lightbox: navegação discreta por setas, teclado e gesto lateral. */
.ux-v320-lightbox-prev,.ux-v320-lightbox-next{position:absolute;top:50%;z-index:3;transform:translateY(-50%);width:46px;height:46px;border:1px solid rgba(255,255,255,.35);border-radius:999px;background:rgba(12,28,24,.78);color:#fff;font-size:28px;line-height:1;display:grid;place-items:center;cursor:pointer}
.ux-v320-lightbox-prev{left:10px}.ux-v320-lightbox-next{right:10px}
.ux-v320-lightbox-prev:focus-visible,.ux-v320-lightbox-next:focus-visible,.ux-v320-lightbox-close:focus-visible{outline:3px solid rgba(255,255,255,.92);outline-offset:3px}
@media(max-width:560px){.ux-v320-lightbox-prev,.ux-v320-lightbox-next{width:42px;height:42px}.ux-v320-lightbox-prev{left:4px}.ux-v320-lightbox-next{right:4px}}
@media(prefers-reduced-motion:reduce){.ux-v320-lightbox-prev,.ux-v320-lightbox-next{transition:none}}


/* V32.4 — desktop simulator and header polish */
#grPublico.ux-v320-alto-active .ux315-header-inner{
  max-width:1280px;
  margin:0 auto;
  padding:12px 28px;
  gap:18px;
  align-items:center;
}
#grPublico.ux-v320-alto-active .ux315-brand{
  min-width:0;
  max-width:205px;
  flex:0 0 auto;
}
#grPublico.ux-v320-alto-active .ux315-brand img{
  width:190px!important;
  height:50px!important;
  max-width:190px;
  object-fit:contain;
  display:block;
}
#grPublico.ux-v320-alto-active .ux315-header nav{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  flex-wrap:nowrap;
  min-width:0;
}
#grPublico.ux-v320-alto-active .ux315-header nav button{
  min-height:44px;
  padding:10px 14px;
  border-radius:12px;
  font-size:14px;
  font-weight:600;
  line-height:1.15;
}
#grPublico.ux-v320-alto-active .ux315-header nav button:hover,
#grPublico.ux-v320-alto-active .ux315-header nav button:focus-visible{
  background:var(--ab-soft);
}
#grPublico.ux-v320-alto-active .ux315-header nav button[aria-current=page]{
  background:var(--ab-soft);
  color:var(--ab-text);
  box-shadow:inset 0 -2px var(--ab-pine);
}

#grPublico.ux-v320-alto-active .ux315-sim-section{
  box-sizing:border-box;
  display:block!important;
  width:min(1280px,calc(100% - 56px));
  max-width:1280px;
  margin:28px auto 64px!important;
  padding:48px 52px 44px!important;
  border:1px solid var(--ab-line);
  border-radius:16px;
  background:var(--ab-card)!important;
  color:var(--ab-text);
  overflow:visible;
}
#grPublico.ux-v320-alto-active .ux315-sim-section>div:first-child{
  max-width:760px;
  margin:0 0 30px;
}
#grPublico.ux-v320-alto-active .ux315-sim-section .ux315-eyebrow{
  display:inline-block;
  margin-bottom:10px;
  color:var(--ab-muted);
  font-size:12px;
  font-weight:750;
  letter-spacing:.16em;
}
#grPublico.ux-v320-alto-active .ux315-sim-section h2{
  max-width:760px;
  margin:0 0 18px;
  font:650 clamp(42px,4.8vw,64px)/1.02 -apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;
  letter-spacing:-.03em;
  color:var(--ab-text);
}
#grPublico.ux-v320-alto-active .ux315-sim-section h2 br{
  display:block!important;
}
#grPublico.ux-v320-alto-active .ux315-sim-section>div:first-child p{
  max-width:720px;
  margin:0 0 10px;
  color:var(--ab-muted);
  font-size:17px;
  line-height:1.7;
}
#grPublico.ux-v320-alto-active .ux315-sim-section .ux315-fine{
  font-size:12px!important;
  line-height:1.65!important;
}

#grPublico.ux-v320-alto-active .ux315-sim-box>.ux-sim{
  margin:0;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  color:var(--ab-text);
  overflow:visible;
}
#grPublico.ux-v320-alto-active .ux-sim-t{
  margin:0 0 24px!important;
  font-size:20px!important;
  font-weight:650;
  letter-spacing:-.02em;
  color:var(--ab-text)!important;
}
#grPublico.ux-v320-alto-active .ux-sim-layout{
  display:grid;
  grid-template-columns:minmax(320px,1.15fr) minmax(300px,.85fr);
  gap:24px;
  align-items:start;
}
#grPublico.ux-v320-alto-active .ux-sim-controles,
#grPublico.ux-v320-alto-active .ux-sim-resultado{
  min-width:0;
  box-sizing:border-box;
  border:1px solid var(--ab-line);
  border-radius:22px;
  background:var(--ab-card);
}
#grPublico.ux-v320-alto-active .ux-sim-controles{
  padding:22px;
}
#grPublico.ux-v320-alto-active .ux-sim-resultado{
  position:sticky;
  top:92px;
  overflow:hidden;
}
#grPublico.ux-v320-alto-active .ux-sim-grupo{
  margin:0 0 24px;
}
#grPublico.ux-v320-alto-active .ux-sim-grupo legend{
  margin-bottom:16px;
  color:var(--ab-text);
  font-size:17px;
}
#grPublico.ux-v320-alto-active .ux-sim-grupo legend b{
  border-color:var(--ab-line);
  color:var(--ab-accent);
}
#grPublico.ux-v320-alto-active .ux-sim-ajuda,
#grPublico.ux-v320-alto-active .ux-sim-campos small{
  color:var(--ab-muted)!important;
}
#grPublico.ux-v320-alto-active .ux-sim-campos{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:16px!important;
}
#grPublico.ux-v320-alto-active .ux-sim-campos label{
  display:grid;
  gap:8px!important;
  min-width:0;
  color:var(--ab-text)!important;
  font-size:12px!important;
}
#grPublico.ux-v320-alto-active .ux-sim-campos input,
#grPublico.ux-v320-alto-active .ux-sim-campos select{
  width:100%;
  min-width:0;
  height:48px;
  min-height:48px;
  margin:0;
  padding:0 14px;
  border:1px solid var(--ab-line);
  border-radius:14px;
  background:var(--ab-card);
  color:var(--ab-text);
  font-size:16px;
  line-height:1;
  box-shadow:none;
}
#grPublico.ux-v320-alto-active .ux-sim-campos input:focus,
#grPublico.ux-v320-alto-active .ux-sim-campos select:focus{
  outline:none;
  border-color:var(--ab-pine);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--ab-pine) 16%,transparent);
}
#grPublico.ux-v320-alto-active .ux-sim-inteiro{
  grid-column:1/-1;
}
#grPublico.ux-v320-alto-active .ux-sim-preco{
  border:1px solid var(--ab-line);
  border-radius:14px;
  background:var(--ab-soft);
}
#grPublico.ux-v320-alto-active .ux319-calculate{
  min-height:48px;
  margin-top:4px;
  padding:11px 18px;
  border-radius:14px;
  font-size:15px;
  font-weight:700;
}
#grPublico.ux-v320-alto-active .ux-sim-resultado .ux-sim-enquadramento{
  margin:0;
  padding:24px 22px;
  border:0;
  border-bottom:1px solid var(--ab-line);
  border-radius:0;
  background:var(--ab-soft);
}
#grPublico.ux-v320-alto-active .ux-sim-enquadramento output{
  color:var(--ab-text);
  font-size:clamp(28px,3vw,40px);
  line-height:1.08;
  letter-spacing:-.03em;
}
#grPublico.ux-v320-alto-active .ux-sim-enquadramento span,
#grPublico.ux-v320-alto-active .ux-sim-enquadramento small{
  color:var(--ab-muted);
}
#grPublico.ux-v320-alto-active .ux-sim-resultado .ux-sim-res{
  display:block;
  margin:0;
}
#grPublico.ux-v320-alto-active .ux-sim-res>.ux-sim-card{
  margin:0;
  padding:24px 22px;
  border:0;
  border-radius:0;
  background:var(--ab-card)!important;
}
#grPublico.ux-v320-alto-active .ux-sim-card .ux-sim-parcela{
  border:1px solid var(--ab-line);
  border-radius:16px;
  background:var(--ab-soft);
}
#grPublico.ux-v320-alto-active .ux-sim-card dl>div{
  gap:20px;
}
#grPublico.ux-v320-alto-active .ux-sim-card dd{
  color:var(--ab-text);
}
#grPublico.ux-v320-alto-active .ux-sim-detalhes{
  color:var(--ab-muted);
}
#grPublico.ux-v320-alto-active .ux-sim-detalhes summary{
  color:var(--ab-text);
}

@media(min-width:901px) and (max-width:1180px){
  #grPublico.ux-v320-alto-active .ux315-header-inner{padding-inline:22px;gap:10px}
  #grPublico.ux-v320-alto-active .ux315-brand{max-width:180px}
  #grPublico.ux-v320-alto-active .ux315-brand img{width:170px!important;height:46px!important}
  #grPublico.ux-v320-alto-active .ux315-header nav{gap:4px}
  #grPublico.ux-v320-alto-active .ux315-header nav button{padding-inline:10px;font-size:12px}
}

@media(max-width:1080px){
  #grPublico.ux-v320-alto-active .ux315-sim-section{padding:40px 30px 34px!important}
  #grPublico.ux-v320-alto-active .ux-sim-layout{grid-template-columns:minmax(0,1fr);gap:22px}
  #grPublico.ux-v320-alto-active .ux-sim-resultado{position:static}
}

@media(max-width:900px){
  #grPublico.ux-v320-alto-active .ux315-header-inner{
    padding:11px 18px;
    gap:10px;
  }
  #grPublico.ux-v320-alto-active .ux315-brand{
    max-width:190px;
  }
  #grPublico.ux-v320-alto-active .ux315-brand img{
    width:180px!important;
    height:48px!important;
  }
  #grPublico.ux-v320-alto-active .ux315-header nav{
    width:100%;
    gap:6px;
    overflow-x:auto;
    justify-content:flex-start;
    scrollbar-width:thin;
  }
  #grPublico.ux-v320-alto-active .ux315-header nav button{
    flex:0 0 auto;
    padding:10px 12px;
    font-size:13px;
  }
  #grPublico.ux-v320-alto-active .ux315-sim-section{
    width:calc(100% - 36px);
    margin:20px auto 48px!important;
    padding:34px 24px 30px!important;
    border-radius:24px;
  }
  #grPublico.ux-v320-alto-active .ux315-sim-box>.ux-sim{
    padding:22px;
    border-radius:24px;
  }
}

@media(max-width:600px){
  #grPublico.ux-v320-alto-active .ux315-sim-section{
    width:calc(100% - 24px);
    padding:28px 16px 24px!important;
    border-radius:22px;
  }
  #grPublico.ux-v320-alto-active .ux315-sim-section h2{
    font-size:40px;
    line-height:1.03;
  }
  #grPublico.ux-v320-alto-active .ux315-sim-section>div:first-child p{
    font-size:16px;
  }
  #grPublico.ux-v320-alto-active .ux315-sim-box>.ux-sim{
    padding:16px;
    border-radius:20px;
  }
  #grPublico.ux-v320-alto-active .ux-sim-controles{
    padding:16px;
    border-radius:18px;
  }
  #grPublico.ux-v320-alto-active .ux-sim-resultado{
    border-radius:18px;
  }
  #grPublico.ux-v320-alto-active .ux-sim-campos{
    grid-template-columns:minmax(0,1fr)!important;
  }
  #grPublico.ux-v320-alto-active .ux-sim-inteiro{
    grid-column:auto;
  }
}


/* V32.4.1 — contain narrow viewport overflow */
@media(max-width:900px){
  #grPublico.ux-v320-alto-active .ux315-header{
    max-width:100%;
    overflow-x:clip;
  }
  #grPublico.ux-v320-alto-active .ux315-header-inner{
    box-sizing:border-box;
    width:100%;
    max-width:100%;
  }
  #grPublico.ux-v320-alto-active .ux315-header nav{
    box-sizing:border-box;
    width:100%;
    max-width:100%;
    min-width:0;
  }
  #grPublico.ux-v320-alto-active .ux315-sim-section,
  #grPublico.ux-v320-alto-active .ux315-sim-box,
  #grPublico.ux-v320-alto-active .ux315-sim-box>.ux-sim,
  #grPublico.ux-v320-alto-active .ux-sim-layout,
  #grPublico.ux-v320-alto-active .ux-sim-controles,
  #grPublico.ux-v320-alto-active .ux-sim-resultado{
    box-sizing:border-box;
    min-width:0;
    max-width:100%;
  }
}
@media(max-width:360px){
  #grPublico.ux-v320-alto-active .ux315-header-inner{padding-inline:10px}
  #grPublico.ux-v320-alto-active .ux315-header nav{gap:4px}
  #grPublico.ux-v320-alto-active .ux315-header nav button{padding-inline:9px}
  #grPublico.ux-v320-alto-active .ux315-sim-section{
    width:calc(100% - 16px);
    padding-inline:12px!important;
  }
}


/* V32.4.2 — compact mobile enterprise navigation */
@media(max-width:900px){
  #grPublico.ux-v320-alto-active .ux315-header nav{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    width:100%;
    max-width:100%;
    gap:6px;
    overflow:visible;
  }
  #grPublico.ux-v320-alto-active .ux315-header nav button{
    width:100%;
    min-width:0!important;
    max-width:100%;
    min-height:44px;
    padding:9px 7px;
    white-space:normal;
    overflow-wrap:anywhere;
    text-align:center;
    justify-content:center;
  }
}
@media(max-width:360px){
  #grPublico.ux-v320-alto-active .ux315-header nav{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}


/* V32.4.3 — wrap narrow labels and simulator heading */
#grPublico.ux-v320-alto-active .ab-specs>div,
#grPublico.ux-v320-alto-active .ab-specs dd{
  min-width:0;
  max-width:100%;
}
#grPublico.ux-v320-alto-active .ab-specs dd{
  white-space:normal;
  overflow-wrap:anywhere;
}
#grPublico.ux-v320-alto-active .ux-sim-card dd{
  white-space:normal;
  overflow-wrap:anywhere;
}
@media(max-width:360px){
  #grPublico.ux-v320-alto-active .ux315-sim-section h2{
    font-size:34px;
    letter-spacing:-.035em;
    overflow-wrap:normal;
    word-break:normal;
  }
}


/* V32.5 — guided Alto simulator */
#grPublico .ux-sim-guided{
  --sim-card:var(--ab-card,var(--ux315-card,#fff));
  --sim-soft:var(--ab-soft,var(--ux315-soft,#f4f6f3));
  --sim-line:var(--ab-line,var(--ux315-line,#dce4de));
  --sim-text:var(--ab-text,var(--ux315-ink,#18332d));
  --sim-muted:var(--ab-muted,var(--ux315-muted,#64766f));
  --sim-accent:var(--ab-pine,var(--ux315-accent,#1c5b4d));
  --sim-good:#286d55;
  --sim-warn:#9a5b24;
  color:var(--sim-text);
  background:transparent;
}
#grPublico .ux-sim-guided .ux-sim-guide-intro{
  margin:0 0 26px;padding:0 0 24px;border-bottom:1px solid var(--sim-line);
}
#grPublico .ux-sim-guided .ux-sim-guide-intro>span{
  display:block;margin-bottom:8px;font-size:10px;font-weight:800;letter-spacing:.16em;color:var(--sim-muted);
}
#grPublico .ux-sim-guided .ux-sim-guide-intro h4{
  margin:0 0 8px;font-size:clamp(22px,2.2vw,30px);line-height:1.18;letter-spacing:-.035em;color:var(--sim-text);
}
#grPublico .ux-sim-guided .ux-sim-guide-intro p{
  max-width:610px;margin:0;color:var(--sim-muted);font-size:14px;line-height:1.65;
}
#grPublico .ux-sim-guided .ux-sim-layout{
  grid-template-columns:minmax(0,1.04fr) minmax(340px,.96fr);gap:28px;
}
#grPublico .ux-sim-guided .ux-sim-controles{padding:0;border:0;background:transparent}
#grPublico .ux-sim-guided .ux-sim-progress{
  margin:0 0 22px;padding:15px 17px;border:1px solid var(--sim-line);border-radius:14px;background:var(--sim-soft);
}
#grPublico .ux-sim-guided .ux-sim-progress>div{
  display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:9px;font-size:12px;color:var(--sim-muted);
}
#grPublico .ux-sim-guided .ux-sim-progress b{color:var(--sim-text);font-size:12px}
#grPublico .ux-sim-guided .ux-sim-progress-track{
  display:block;height:7px;overflow:hidden;border-radius:999px;background:color-mix(in srgb,var(--sim-line) 70%,transparent);
}
#grPublico .ux-sim-guided .ux-sim-progress-track i{
  display:block;width:0;height:100%;border-radius:inherit;background:var(--sim-accent);transition:width .2s ease;
}
#grPublico .ux-sim-guided .ux-sim-step{
  min-width:0;margin:0 0 18px;padding:22px;border:1px solid var(--sim-line);border-radius:18px;background:var(--sim-card);
}
#grPublico .ux-sim-guided .ux-sim-step legend{
  display:flex;width:100%;gap:12px;align-items:flex-start;padding:0;margin:0 0 18px;color:var(--sim-text);
}
#grPublico .ux-sim-guided .ux-sim-step legend>b{
  display:grid;flex:0 0 31px;width:31px;height:31px;place-items:center;border-radius:50%;background:var(--sim-accent);color:#fff;font-size:12px;
}
#grPublico .ux-sim-guided .ux-sim-step legend>span{
  display:grid;gap:3px;font-size:16px;font-weight:700;line-height:1.35;
}
#grPublico .ux-sim-guided .ux-sim-step legend small{
  color:var(--sim-muted);font-size:12px;font-weight:400;line-height:1.55;
}
#grPublico .ux-sim-guided .ux-sim-campos{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:15px!important;
}
#grPublico .ux-sim-guided .ux-sim-campos label{
  display:grid;min-width:0;gap:7px!important;color:var(--sim-text)!important;font-size:12px!important;font-weight:650;line-height:1.45;
}
#grPublico .ux-sim-guided .ux-sim-campos label small{
  color:var(--sim-muted)!important;font-weight:400;line-height:1.55;
}
#grPublico .ux-sim-guided .ux-sim-campos input,
#grPublico .ux-sim-guided .ux-sim-campos select{
  box-sizing:border-box;width:100%;min-width:0;min-height:50px;margin:0;padding:0 13px;border:1px solid var(--sim-line);border-radius:12px;
  background:var(--sim-card);color:var(--sim-text);font-size:16px;box-shadow:none;
}
#grPublico .ux-sim-guided .ux-sim-campos input:focus,
#grPublico .ux-sim-guided .ux-sim-campos select:focus{
  outline:none;border-color:var(--sim-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--sim-accent) 15%,transparent);
}
#grPublico .ux-sim-guided .ux-sim-field-error input,
#grPublico .ux-sim-guided .ux-sim-field-error select{
  border-color:#b36b42;background:color-mix(in srgb,#b36b42 6%,var(--sim-card));
}
#grPublico .ux-sim-guided .ux-sim-home-pick{display:grid;gap:14px}
#grPublico .ux-sim-guided .ux-sim-home-copy{
  display:flex;align-items:end;justify-content:space-between;gap:16px;
}
#grPublico .ux-sim-guided .ux-sim-home-copy strong{font-size:14px}
#grPublico .ux-sim-guided .ux-sim-home-copy small{color:var(--sim-muted);font-weight:400}
#grPublico .ux-sim-guided .ux-sim-home-options{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;
}
#grPublico .ux-sim-guided .ux-sim-home-options button{
  display:grid;gap:4px;min-width:0;min-height:104px;padding:15px;text-align:left;border:1px solid var(--sim-line);border-radius:14px;
  background:var(--sim-soft);color:var(--sim-text);cursor:pointer;transition:border-color .15s,transform .15s,background .15s;
}
#grPublico .ux-sim-guided .ux-sim-home-options button:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--sim-accent) 55%,var(--sim-line))}
#grPublico .ux-sim-guided .ux-sim-home-options button.is-active{
  border-color:var(--sim-accent);background:color-mix(in srgb,var(--sim-accent) 9%,var(--sim-card));
  box-shadow:0 0 0 2px color-mix(in srgb,var(--sim-accent) 11%,transparent);
}
#grPublico .ux-sim-guided .ux-sim-home-options button span{font-size:12px;font-weight:700}
#grPublico .ux-sim-guided .ux-sim-home-options button strong{font-size:20px;letter-spacing:-.03em}
#grPublico .ux-sim-guided .ux-sim-home-options button small{color:var(--sim-muted);font-size:10px}
#grPublico .ux-sim-guided .ux-sim-home-fixed{
  display:grid;gap:4px;padding:16px;border-radius:14px;background:var(--sim-soft);border:1px solid var(--sim-line);
}
#grPublico .ux-sim-guided .ux-sim-home-fixed span{font-size:11px;color:var(--sim-muted)}
#grPublico .ux-sim-guided .ux-sim-home-fixed strong{font-size:24px;letter-spacing:-.035em}
#grPublico .ux-sim-guided .ux-sim-home-fixed small{font-size:11px;color:var(--sim-muted)}
#grPublico .ux-sim-guided .ux-sim-advanced{
  margin:12px 0;padding:0;border:1px solid var(--sim-line);border-radius:14px;background:var(--sim-card);
}
#grPublico .ux-sim-guided .ux-sim-advanced summary{
  display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:54px;padding:0 16px;cursor:pointer;color:var(--sim-text);font-size:13px;font-weight:700;
}
#grPublico .ux-sim-guided .ux-sim-advanced summary small{
  color:var(--sim-muted);font-size:11px;font-weight:400;text-align:right;
}
#grPublico .ux-sim-guided .ux-sim-advanced[open] summary{border-bottom:1px solid var(--sim-line)}
#grPublico .ux-sim-guided .ux-sim-advanced-grid,
#grPublico .ux-sim-guided .ux-sim-advanced>.ux-sim-campos{padding:16px}
#grPublico .ux-sim-guided .ux-sim-optional{
  margin-left:5px;color:var(--sim-muted);font-size:10px;font-weight:400;
}
#grPublico .ux-sim-guided .ux-sim-primary{
  width:100%;min-height:54px;margin-top:18px;border-radius:14px;font-size:15px;font-weight:750;
}
#grPublico .ux-sim-guided .ux-sim-resultado{
  position:sticky;top:92px;overflow:hidden;border:1px solid var(--sim-line);border-radius:20px;background:var(--sim-card);
}
#grPublico .ux-sim-guided .ux-sim-enquadramento{
  padding:18px 20px;border:0;border-bottom:1px solid var(--sim-line);border-radius:0;background:var(--sim-soft);
}
#grPublico .ux-sim-guided .ux-sim-enquadramento span{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
#grPublico .ux-sim-guided .ux-sim-enquadramento output{
  display:block;margin:4px 0 2px;font-size:23px;font-weight:750;line-height:1.2;letter-spacing:-.03em;
}
#grPublico .ux-sim-guided .ux-sim-enquadramento small{font-size:11px}
#grPublico .ux-sim-guided .ux-sim-res{display:block;margin:0}
#grPublico .ux-sim-guided .ux-sim-card{padding:20px;border:0;border-radius:0;background:var(--sim-card)!important}
#grPublico .ux-sim-guided .ux-sim-result-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:17px;
}
#grPublico .ux-sim-guided .ux-sim-result-head h5{margin:4px 0 0;font-size:20px;line-height:1.25;letter-spacing:-.03em}
#grPublico .ux-sim-guided .ux-sim-status{
  display:block;font-size:9px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:var(--sim-muted);
}
#grPublico .ux-sim-guided .ux-sim-faixa-badge{
  flex:none;padding:7px 9px;border-radius:999px;background:var(--sim-soft);font-size:10px;font-weight:700;color:var(--sim-muted);
}
#grPublico .ux-sim-guided .ux-sim-result-hero{
  display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 20px;
}
#grPublico .ux-sim-guided .ux-sim-result-hero.one{grid-template-columns:1fr}
#grPublico .ux-sim-guided .ux-sim-result-hero>div{
  display:grid;align-content:start;gap:5px;min-width:0;padding:16px;border-radius:14px;background:var(--sim-soft);
}
#grPublico .ux-sim-guided .ux-sim-result-hero span{font-size:10px;color:var(--sim-muted);line-height:1.4}
#grPublico .ux-sim-guided .ux-sim-result-hero strong{font-size:clamp(22px,2.2vw,31px);line-height:1.1;letter-spacing:-.04em;overflow-wrap:anywhere}
#grPublico .ux-sim-guided .ux-sim-result-hero small{font-size:10px;line-height:1.45;color:var(--sim-muted)}
#grPublico .ux-sim-guided .ux-sim-result-empty{
  margin:0 0 18px;padding:20px;border:1px dashed var(--sim-line);border-radius:14px;background:var(--sim-soft);
}
#grPublico .ux-sim-guided .ux-sim-result-empty strong{display:block;margin-bottom:6px;font-size:18px}
#grPublico .ux-sim-guided .ux-sim-result-empty p{margin:0;font-size:12px;line-height:1.6;color:var(--sim-muted)}
#grPublico .ux-sim-guided .ux-sim-result-empty.bad{border-style:solid;border-color:#b36b42}
#grPublico .ux-sim-guided .ux-sim-breakdown{margin:0 0 18px}
#grPublico .ux-sim-guided .ux-sim-breakdown h6{margin:0 0 10px;font-size:12px;color:var(--sim-text)}
#grPublico .ux-sim-guided .ux-sim-card dl{margin:0}
#grPublico .ux-sim-guided .ux-sim-card dl>div{
  display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin:10px 0;
}
#grPublico .ux-sim-guided .ux-sim-card dt{font-size:11px;line-height:1.45;color:var(--sim-muted)}
#grPublico .ux-sim-guided .ux-sim-card dd{
  margin:0;max-width:55%;text-align:right;font-size:13px;font-weight:700;white-space:normal;overflow-wrap:anywhere;color:var(--sim-text);
}
#grPublico .ux-sim-guided .ux-sim-card dl .forte{
  margin-top:14px;padding-top:14px;border-top:1px solid var(--sim-line);
}
#grPublico .ux-sim-guided .ux-sim-card dl .forte dt{color:var(--sim-text);font-weight:700}
#grPublico .ux-sim-guided .ux-sim-card dl .forte dd{font-size:17px}
#grPublico .ux-sim-guided .ux-sim-income-check{
  display:grid;grid-template-columns:1fr auto;gap:3px 14px;margin:18px 0;padding:14px;border-radius:12px;background:var(--sim-soft);border-left:4px solid var(--sim-good);
}
#grPublico .ux-sim-guided .ux-sim-income-check.warn{border-left-color:var(--sim-warn)}
#grPublico .ux-sim-guided .ux-sim-income-check span{font-size:10px;color:var(--sim-muted)}
#grPublico .ux-sim-guided .ux-sim-income-check strong{font-size:16px}
#grPublico .ux-sim-guided .ux-sim-income-check small{grid-column:1/-1;color:var(--sim-muted);font-size:10px;line-height:1.5}
#grPublico .ux-sim-guided .ux-sim-alerts{
  margin:16px 0;padding:14px;border-radius:12px;background:color-mix(in srgb,#b8782e 9%,var(--sim-card));border:1px solid color-mix(in srgb,#b8782e 30%,var(--sim-line));
}
#grPublico .ux-sim-guided .ux-sim-alerts strong{font-size:11px}
#grPublico .ux-sim-guided .ux-sim-alerts ul{margin:8px 0 0;padding-left:18px}
#grPublico .ux-sim-guided .ux-sim-alerts li{margin:5px 0;font-size:10px;line-height:1.55;color:var(--sim-muted)}
#grPublico .ux-sim-guided .ux-sim-next{
  margin:18px 0;padding:16px;border-radius:14px;background:var(--sim-soft);
}
#grPublico .ux-sim-guided .ux-sim-next strong{font-size:12px}
#grPublico .ux-sim-guided .ux-sim-next ol{margin:10px 0 0;padding-left:20px}
#grPublico .ux-sim-guided .ux-sim-next li{margin:6px 0;font-size:11px;line-height:1.55;color:var(--sim-muted)}
#grPublico .ux-sim-guided .ux-sim-nota{font-size:10px;line-height:1.55;color:var(--sim-muted)}
#grPublico .ux-sim-guided .ux-sim-comparar{
  margin:0;padding:0 20px 20px;border:0;border-radius:0;background:var(--sim-card);
}
#grPublico .ux-sim-guided .ux-sim-comparar>summary{
  display:grid;gap:2px;min-height:50px;align-content:center;padding:0;border-top:1px solid var(--sim-line);font-size:12px;
}
#grPublico .ux-sim-guided .ux-sim-comparar>summary small{font-size:10px;font-weight:400;color:var(--sim-muted)}
#grPublico .ux-sim-guided .ux-sim-card-direct{margin:10px 0 0;padding:16px!important;border-radius:14px!important;background:var(--sim-soft)!important}
#grPublico .ux-sim-guided .ux-sim-rule{margin:14px 0 0}
#grPublico .ux-sim-guided .ux-sim-rule summary{font-size:11px}
#grPublico .ux-sim-guided .ux-sim-rule-body{padding-top:8px}
#grPublico .ux-sim-guided .ux-sim-rule-body p{font-size:10px;line-height:1.55;color:var(--sim-muted)}
@media(max-width:1080px){
  #grPublico .ux-sim-guided .ux-sim-layout{grid-template-columns:minmax(0,1fr)}
  #grPublico .ux-sim-guided .ux-sim-resultado{position:static}
}
@media(max-width:600px){
  #grPublico .ux-sim-guided .ux-sim-guide-intro{margin-bottom:18px;padding-bottom:18px}
  #grPublico .ux-sim-guided .ux-sim-step{padding:17px;border-radius:15px}
  #grPublico .ux-sim-guided .ux-sim-campos{grid-template-columns:minmax(0,1fr)!important}
  #grPublico .ux-sim-guided .ux-sim-home-options{grid-template-columns:minmax(0,1fr)}
  #grPublico .ux-sim-guided .ux-sim-home-copy{align-items:flex-start;flex-direction:column;gap:4px}
  #grPublico .ux-sim-guided .ux-sim-advanced summary{align-items:flex-start;flex-direction:column;justify-content:center;gap:2px;padding-block:10px}
  #grPublico .ux-sim-guided .ux-sim-advanced summary small{text-align:left}
  #grPublico .ux-sim-guided .ux-sim-result-hero{grid-template-columns:minmax(0,1fr)}
  #grPublico .ux-sim-guided .ux-sim-result-head{align-items:flex-start;flex-direction:column}
  #grPublico .ux-sim-guided .ux-sim-card dd{max-width:52%}
}


/* V32.5.1 — simulator trust strip and FAQ */
#grPublico.ux-v320-alto-active .ux315-sim-highlights{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin:24px 0 16px;
}
#grPublico.ux-v320-alto-active .ux315-sim-highlights span{
  display:grid;
  gap:3px;
  min-width:0;
  padding:14px 15px;
  border:1px solid var(--ab-line);
  border-radius:14px;
  background:var(--ab-card);
}
#grPublico.ux-v320-alto-active .ux315-sim-highlights b{
  color:var(--ab-text);
  font-size:13px;
  line-height:1.35;
}
#grPublico.ux-v320-alto-active .ux315-sim-highlights small{
  color:var(--ab-muted);
  font-size:10px;
  line-height:1.45;
}
#grPublico.ux-v320-alto-active .ux315-sim-faq{
  display:grid;
  grid-template-columns:minmax(220px,.72fr) minmax(0,1.28fr);
  gap:34px;
  margin:42px 0 0;
  padding:34px 0 0;
  border-top:1px solid var(--ab-line);
}
#grPublico.ux-v320-alto-active .ux315-sim-faq h3{
  margin:8px 0 10px;
  color:var(--ab-text);
  font-size:26px;
  line-height:1.12;
  letter-spacing:-.04em;
}
#grPublico.ux-v320-alto-active .ux315-sim-faq>div:first-child p{
  margin:0;
  color:var(--ab-muted);
  font-size:13px;
  line-height:1.6;
}
#grPublico.ux-v320-alto-active .ux315-sim-faq-list{
  display:grid;
  gap:8px;
}
#grPublico.ux-v320-alto-active .ux315-sim-faq-list details{
  margin:0;
  border:1px solid var(--ab-line);
  border-radius:14px;
  background:var(--ab-card);
  overflow:hidden;
}
#grPublico.ux-v320-alto-active .ux315-sim-faq-list summary{
  min-height:54px;
  display:flex;
  align-items:center;
  padding:12px 16px;
  cursor:pointer;
  color:var(--ab-text);
  font-size:13px;
  font-weight:700;
  line-height:1.4;
}
#grPublico.ux-v320-alto-active .ux315-sim-faq-list summary::marker{
  color:var(--ab-accent);
}
#grPublico.ux-v320-alto-active .ux315-sim-faq-list details p{
  margin:0;
  padding:0 16px 16px;
  color:var(--ab-muted);
  font-size:12px;
  line-height:1.65;
}
@media(max-width:900px){
  #grPublico.ux-v320-alto-active .ux315-sim-highlights{grid-template-columns:repeat(2,minmax(0,1fr))}
  #grPublico.ux-v320-alto-active .ux315-sim-faq{grid-template-columns:minmax(0,1fr);gap:20px}
}
@media(max-width:480px){
  #grPublico.ux-v320-alto-active .ux315-sim-highlights{grid-template-columns:minmax(0,1fr)}
  #grPublico.ux-v320-alto-active .ux315-sim-faq{margin-top:30px;padding-top:26px}
}


/* V32.6 — product-first simulator cards */
#grPublico .ux-sim-guided .ux-sim-home-options button{
  overflow:hidden;
  padding:0 0 15px;
  background:var(--sim-card);
}
#grPublico .ux-sim-guided .ux-sim-home-options button>img{
  width:100%;
  aspect-ratio:16/9;
  object-fit:contain;
  display:block;
  margin:0 0 12px;
  border-bottom:1px solid var(--sim-line);
}
#grPublico .ux-sim-guided .ux-sim-home-options button>span,
#grPublico .ux-sim-guided .ux-sim-home-options button>strong,
#grPublico .ux-sim-guided .ux-sim-home-options button>small,
#grPublico .ux-sim-guided .ux-sim-home-options .ux-sim-home-meta{
  margin-inline:15px;
}
#grPublico .ux-sim-guided .ux-sim-home-options .ux-sim-home-meta{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  min-width:0;
}
#grPublico .ux-sim-guided .ux-sim-home-options .ux-sim-home-meta small{
  margin:0;
  color:var(--sim-muted);
  font-size:10px;
  overflow-wrap:anywhere;
}
#grPublico .ux-sim-guided .ux-sim-home-options button.is-active>img{
  filter:saturate(1.03) contrast(1.02);
}


/* assets/css/v326-access.css */
/* UrbanNIX Access V32.6 — premium authentication experience */
#authOverlay{--auth-bg:#f2f5f3;--auth-surface:#fff;--auth-field:#fbfcfb;--auth-text:#17392f;--auth-muted:#50685e;--auth-line:#cddbd3;--auth-soft:#e8efeb;background:var(--auth-bg)!important}
html[data-tema=escuro] #authOverlay{--auth-bg:#0d1d18;--auth-surface:#172d24;--auth-field:#213b30;--auth-text:#edf6f0;--auth-muted:#b6cfc0;--auth-line:#456455;--auth-soft:#284536}
#authOverlay .auth-showcase{position:relative;overflow:hidden;background:radial-gradient(circle at 20% 8%,#173f34 0,#0b2c24 38%,#061e19 100%)!important}
#authOverlay .auth-showcase:before{content:"";position:absolute;width:620px;height:620px;border-radius:50%;right:-260px;bottom:-330px;background:radial-gradient(circle,rgba(190,213,150,.14),transparent 67%);pointer-events:none}
#authOverlay .auth-showcase-copy{max-width:680px}
#authOverlay .auth-logo-ux{width:196px;height:auto;border-radius:10px;box-shadow:0 12px 34px rgba(0,0,0,.12)}
#authOverlay .auth-pill{display:inline-flex;margin-top:22px;padding:8px 13px;border:1px solid rgba(134,204,164,.25);border-radius:999px;background:rgba(16,99,72,.13);color:#9ee2bd;font-size:11px;letter-spacing:.02em}
#authOverlay .auth-showcase h1{max-width:680px;margin:24px 0 16px;font-size:clamp(40px,4.4vw,64px)!important;line-height:1.08!important;letter-spacing:-.03em!important;font-weight:680!important}
#authOverlay .auth-showcase h1 em{font-style:normal;background:none;color:#d7e6dc!important}
#authOverlay .auth-showcase-copy>p{max-width:570px;color:rgba(237,247,241,.78)!important;font-size:15px!important;line-height:1.65!important}
#authOverlay .auth-visual{max-width:560px}
#authOverlay .ux-emp-atual{border:1px solid rgba(255,255,255,.13)!important;border-radius:16px!important;background:rgba(255,255,255,.055)!important;backdrop-filter:blur(14px);box-shadow:0 16px 45px rgba(0,0,0,.13)}
#authOverlay .mini-grid i{border-color:rgba(255,255,255,.11)!important;background:rgba(255,255,255,.05)!important;border-radius:7px!important}
#authOverlay .mini-grid i:nth-child(3n){background:rgba(23,132,91,.3)!important}
#authOverlay .mini-grid i:nth-child(5n){background:rgba(196,166,87,.22)!important}
#authOverlay .auth-card{width:min(430px,calc(100vw - 42px))!important;padding:32px!important;border:0!important;border-radius:16px!important;background:var(--auth-surface)!important;box-shadow:0 12px 40px rgba(16,44,35,.12)!important;backdrop-filter:none}
#authOverlay .auth-brand-link{display:inline-flex;border-radius:10px;transition:transform .18s ease}
#authOverlay .auth-brand-link:hover{transform:translateY(-1px)}
#authOverlay .auth-card-logo{width:148px;height:48px;object-fit:contain;background:#fff;border-radius:8px;padding:6px}
#authOverlay .auth-access-kicker{display:block;margin-top:24px;color:var(--auth-muted);font-size:12px;font-weight:700;letter-spacing:.08em}
#authOverlay .auth-card h2{margin:7px 0 7px!important;color:var(--auth-text)!important;font-size:29px!important;line-height:1.15!important;letter-spacing:-.04em!important}
#authOverlay .auth-sub{margin:0 0 24px!important;color:var(--auth-muted)!important;font-size:14px!important;line-height:1.6!important}
#authOverlay .field{display:grid;gap:8px;margin:0 0 16px!important;color:var(--auth-text)!important;font-size:14px!important;font-weight:650!important}
#authOverlay .field>input,#authOverlay .auth-password-wrap{min-height:52px;border:1px solid var(--auth-line)!important;border-radius:13px!important;background:var(--auth-field)!important;transition:border-color .18s,box-shadow .18s,background .18s}
#authOverlay .field>input{padding:0 14px!important}
#authOverlay .field>input:focus,#authOverlay .auth-password-wrap:focus-within{outline:0!important;border-color:#247c5f!important;background:var(--auth-surface)!important;box-shadow:0 0 0 4px rgba(36,124,95,.09)!important}
#authOverlay input{font-size:16px}
#authOverlay input::placeholder{color:var(--auth-muted);opacity:1}
#authOverlay .auth-password-wrap{display:flex;align-items:center}
#authOverlay .auth-password-wrap input{flex:1;min-width:0;height:50px;padding:0 10px 0 14px;border:0!important;outline:0!important;background:transparent!important;box-shadow:none!important}
#authOverlay .auth-password-toggle{min-width:64px;min-height:44px;margin-right:4px;padding:8px;border:0;border-radius:8px;background:transparent;color:var(--auth-text);font-size:13px;font-weight:650;cursor:pointer}
#authOverlay .auth-password-toggle:hover{background:var(--auth-soft);color:#175f49}
#authOverlay .auth-login-primary{display:flex!important;align-items:center;justify-content:center;gap:9px;width:100%!important;min-height:52px!important;margin-top:5px!important;border-radius:13px!important;background:#176b50!important;box-shadow:0 10px 24px rgba(23,107,80,.16)!important;font-size:16px!important;transition:transform .18s,box-shadow .18s,background .18s!important}
#authOverlay .auth-login-primary:hover{transform:translateY(-1px);background:#125e46!important;box-shadow:0 14px 30px rgba(23,107,80,.22)!important}
#authOverlay .auth-login-primary b{font-size:17px;transition:transform .18s}
#authOverlay .auth-login-primary:hover b{transform:translateX(3px)}
#authOverlay .auth-login-links{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:20px;padding-top:18px;border-top:1px solid var(--auth-line)}
#authOverlay .auth-login-links a{display:inline-flex;align-items:center;min-height:44px;color:var(--auth-text);text-decoration:none;font-size:13px;font-weight:650}
#authOverlay .auth-login-links a:hover{color:#176b50}
#authOverlay .auth-security{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:24px;color:var(--auth-muted);font-size:12px}
#authOverlay .auth-security span{width:6px;height:6px;border-radius:50%;background:#49a078;box-shadow:0 0 0 3px rgba(73,160,120,.1)}
@media(max-width:900px){#authOverlay .auth-showcase h1{font-size:42px!important}#authOverlay .auth-card{padding:28px!important}}
@media(max-width:720px){#authOverlay{align-items:flex-start!important;overflow:auto!important;padding:0 0 30px!important;background:var(--auth-bg)!important}#authOverlay .auth-showcase{min-height:auto!important;padding:28px 22px 70px!important}#authOverlay .auth-showcase-copy{width:100%}#authOverlay .auth-logo-ux{width:145px}#authOverlay .auth-pill{margin-top:16px;font-size:9px}#authOverlay .auth-showcase h1{margin-top:16px;font-size:34px!important;line-height:1.02!important}#authOverlay .auth-showcase-copy>p{font-size:15px!important}#authOverlay .auth-visual{display:none!important}#authOverlay .auth-card{position:relative!important;margin:-42px auto 0!important;width:calc(100% - 28px)!important;padding:27px 22px 24px!important;border-radius:22px!important}#authOverlay .auth-card h2{font-size:26px!important}#authOverlay .auth-login-links{align-items:flex-start;flex-direction:column}}
@media(prefers-reduced-motion:reduce){#authOverlay *{transition:none!important;animation:none!important}}


/* One enterprise footer; independent of retired ux315/ux318 footer selectors. */
:is(#grPublico,#grCliente) .ux326-footer{
  --footer-bg:#0b3027;--footer-text:#f5f3e9;--footer-muted:#bccfc5;
  margin:0;padding:0;background:var(--footer-bg);color:var(--footer-text);border:0;
  font:14px/1.6 var(--ui-font,system-ui,sans-serif);
}
.ux326-footer,.ux326-footer *{box-sizing:border-box}
.ux326-footer-shell{width:min(100% - 48px,1180px);margin:auto;padding:56px 0 24px}
.ux326-footer-top{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.7fr) minmax(0,1.15fr);gap:48px;align-items:start}
.ux326-footer-top>*{min-width:0}
.ux326-footer img{display:block;max-width:100%;object-fit:contain;object-position:center;background:#faf8f0;border-radius:10px}
.ux326-enterprise-logo{width:190px;height:96px;padding:8px 12px;margin:0 0 24px}
.ux326-footer-brand>p{max-width:36ch;margin:0 0 16px;color:var(--footer-muted)}
.ux326-footer-location{color:#e4c784;font-size:13px}
.ux326-footer-nav{display:grid;align-content:start;justify-items:start;gap:4px}
.ux326-footer-nav>strong,.ux326-footer-company>strong{display:block;margin:0 0 16px;font-size:14px;color:var(--footer-text)}
:is(#grPublico,#grCliente) .ux326-footer-nav button{
  display:flex;align-items:center;width:auto;max-width:100%;min-height:44px;
  margin:0;padding:8px 0;border:0;background:transparent;color:var(--footer-text);
  font:inherit;text-align:left;white-space:normal;cursor:pointer;
  transition:color 160ms ease-out,transform 160ms ease-out;
}
.ux326-footer-nav button:hover{color:#e4c784}
.ux326-footer-nav button:focus-visible{outline:3px solid #e4c784;outline-offset:4px}
.ux326-company-card{display:grid;grid-template-columns:72px minmax(0,1fr);gap:16px;align-items:center}
.ux326-company-card>img{width:72px;height:72px;padding:8px}
.ux326-company-card small{display:block;color:var(--footer-muted);font-size:12px}
.ux326-company-card strong{display:block;font-size:14px;color:var(--footer-text)}
.ux326-company-card p{margin:4px 0 0;font-size:13px;color:var(--footer-muted)}
.ux326-footer-ecosystem{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:40px;padding:24px 0;border-block:1px solid #456459}
.ux326-footer-ecosystem>span{color:var(--footer-muted);font-size:12px}
.ux326-footer-ecosystem>div{display:grid;grid-template-columns:repeat(2,minmax(0,156px));gap:16px;min-width:0}
.ux326-footer-ecosystem img{width:156px;height:60px;padding:8px 12px}
.ux326-footer-bottom{display:flex;justify-content:space-between;gap:24px;padding-top:24px;font-size:12px;color:var(--footer-muted)}
.ux326-footer-bottom span{max-width:55ch}
.ux326-footer-bottom span:last-child{text-align:right}
@media(max-width:1024px){
  .ux326-footer-top{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px}
  .ux326-footer-company{grid-column:1/-1;max-width:420px}
}
@media(max-width:600px){
  .ux326-footer-shell{width:calc(100% - 40px);padding-top:40px}
  .ux326-footer-top{grid-template-columns:minmax(0,1fr)}
  .ux326-footer-company{grid-column:auto}
  .ux326-footer-ecosystem{align-items:stretch;flex-direction:column;gap:16px}
  .ux326-footer-ecosystem>div{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .ux326-footer-ecosystem img{width:100%;padding:8px}
  .ux326-footer-bottom{flex-direction:column;gap:8px}
  .ux326-footer-bottom span:last-child{text-align:left}
}
@media(prefers-reduced-motion:reduce){.ux326-footer button{transition:none;transform:none}}
@media print{.ux326-footer{display:none!important}}

/* assets/css/lot-motion.css */
/* SVG paint animation works for both touch and mouse without moving lot boundaries. */
@keyframes ux-lot-available{0%,100%{fill-opacity:1}50%{fill-opacity:.64}}
@keyframes ux-lot-select{0%{fill-opacity:.45;stroke-opacity:.55}100%{fill-opacity:1;stroke-opacity:1}}
@keyframes ms-reveal{from{opacity:.65;transform:translateY(14px)}to{opacity:1;transform:none}}
/* Starting offsets are explicit SVG lengths, set before the paths animate. */
@keyframes ux-lot-trace{to{stroke-dashoffset:0px}}
@keyframes grLedCorre{to{stroke-dashoffset:0px}}
@keyframes grClientLotRun{to{stroke-dashoffset:0px}}
.ux-lot-trace{fill:none!important;stroke:#008eac;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;display:none}
.ux-pl-quadro .ux-pl-lote.sel>.ux-lot-trace{stroke:#fff1b8;stroke-width:3}
#dxfMapViewport .dxf-lot-group.selected>.ux-lot-trace{stroke:#fff1b8}
.ux-pl-quadro .ux-pl-lote.sel>path:not(.ux-lot-trace){fill-opacity:1}
/* Keep the actual moving stroke independent of SVG filter repaint bugs in
   Safari. Its contrasting runner, head and static track carry the highlight. */
#grMapa .gr-led-corrida,#grMapa .gr-led-cabeca,#grMapa .gr-hover-contorno,
.gr-client-lot-runner,.gr-client-lot-head{filter:none;vector-effect:none;pointer-events:none}
#dxfMapSvg .dxf-lot-group:hover .dxf-lot-shape,
#dxfMapSvg .dxf-lot-group.selected .dxf-lot-shape{filter:none!important}
.ux-motion-host:not(.motion-ready) .gr-led-corrida,
.ux-motion-host:not(.motion-ready) .gr-led-cabeca,
.ux-motion-host:not(.motion-ready) .gr-client-lot-runner,
.ux-motion-host:not(.motion-ready) .gr-client-lot-head,
.ux-motion-host:not(.motion-ready) .dxf-lot-group.selected .dxf-lot-shape{animation-play-state:paused!important}
@media screen and (prefers-reduced-motion:no-preference){
 .motion-ready .ux-lot-trace{display:block;animation:ux-lot-trace 2.8s linear 2}
 .map-art.motion-ready .map-lot[data-status="available"]:not(.selected),
 .ux-pl-quadro.motion-ready .ux-pl-lote[data-status="available"]:not(.sel)>path{
  animation:ux-lot-available 2.6s ease-in-out 2;
 }
 .map-art.motion-ready .map-lot.selected,
 .ux-pl-quadro.motion-ready .ux-pl-lote.sel>path:not(.ux-lot-trace){
  animation:ux-lot-select .7s ease-out;
 }
 .ms-motion-enter{animation:ms-reveal .6s cubic-bezier(.2,.7,.2,1) both;animation-delay:var(--ms-delay,0ms)}
}
/* Selection remains visible with Reduce Motion, without a moving target. */
@media(prefers-reduced-motion:reduce){
 .map-art .map-lot,.ux-pl-quadro .ux-pl-lote>path,.ms-motion-enter{animation:none!important;fill-opacity:1;stroke-opacity:1}
 .ms-motion-enter{opacity:1;transform:none}
}
@media print{.map-art .map-lot,.ux-pl-quadro .ux-pl-lote>path,.ms-motion-enter{animation:none!important;opacity:1;fill-opacity:1;transform:none}}

/* Monte Siao: contorno dourado continuo e brilho no lote selecionado. */
@keyframes ms-lot-glow{0%,100%{stroke-opacity:1}50%{stroke-opacity:.45}}
.map-art .ux-lot-trace{stroke:#d08a12}
.map-art .map-lot.selected{stroke:#002b60;stroke-width:2.6}
.map-art .map-lot.selected{stroke:#002b60;stroke-width:1.4}
.ms-led{pointer-events:none;display:none}
.ms-led-preenche{stroke:none;opacity:.13}
.ms-led-trilho{fill:none;opacity:.34;stroke-linecap:round;stroke-linejoin:round}
.ms-led-cabeca{fill:none;stroke:#fff6df;stroke-linecap:round}
@media screen and (prefers-reduced-motion:no-preference){.map-art.motion-ready .ux-lot-trace{animation:ux-lot-trace 1.9s linear infinite}.map-art.motion-ready .map-lot.selected{animation:ux-lot-select .7s ease-out}.map-art.motion-ready .ms-led{display:block}.map-art.motion-ready .ms-led-cabeca{animation:ux-lot-trace 1.9s linear infinite}}

/* assets/css/user-presence.css */
.ux-presence{position:relative;min-width:0}
.ux-presence-toggle{display:flex;align-items:center;gap:7px;white-space:nowrap}
.ux-presence-dot{display:inline-block;width:7px;height:7px;flex:0 0 7px;background:#258650;border-radius:50%}
.ux-presence-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:150;width:380px;max-width:calc(100vw - 32px);background:var(--paper,#fff);color:var(--ink,#202b23);border:1px solid var(--line,#d9dfdc);border-radius:8px;box-shadow:0 8px 24px #0002;padding:14px}
.ux-presence-panel[hidden]{display:none}
.ux-presence-panel header{display:flex;align-items:center;justify-content:space-between;gap:12px}
.ux-presence-panel header strong{font-size:14px}
.ux-presence-panel p{margin:8px 0;color:var(--ink-soft,#647269);font-size:12px}
.ux-presence-panel ul{list-style:none;margin:0;padding:0;max-height:320px;overflow-y:auto}
.ux-presence-panel li{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-top:1px solid var(--line,#d9dfdc)}
.ux-presence-panel li>.ux-presence-dot{margin-top:6px}
.ux-presence-panel li>div{min-width:0}
.ux-presence-panel li strong{display:block;font-size:13px;overflow-wrap:anywhere}
.ux-presence-panel li small{display:block;font-size:11px;color:var(--ink-soft,#647269);overflow-wrap:anywhere;line-height:1.6}
.ux-presence-empty{font-size:13px;color:var(--ink-soft,#647269)}
@media(max-width:720px){.ux-presence-panel{position:fixed;right:16px;top:80px}.ux-presence-toggle{padding:7px;font-size:11px}}

/* assets/css/pwa.css */
/* Install controls are independent of project themes and never enter printouts. */
/* Public portals occupy layer 900; keep the launcher above them and below auth (1000). */
#ux-pwa-actions{position:fixed;right:max(14px,env(safe-area-inset-right));bottom:calc(16px + env(safe-area-inset-bottom));z-index:930;display:flex;gap:6px;align-items:center;font:600 12px/1.3 system-ui,sans-serif;color:#fff;background:#073b31;border:1px solid #9dbdb0;border-radius:28px;padding:4px;box-shadow:0 5px 20px #0b151229;max-width:calc(100vw - 28px)}
html.ux-pwa-platform #ux-pwa-actions{bottom:calc(92px + env(safe-area-inset-bottom))}
/* Installation and update help remain available while the public catalog loads. */
html.ux-preboot #ux-pwa-actions{visibility:visible;z-index:100001}
html.ux-preboot #ux-pwa-dialog{visibility:visible}
#ux-pwa-actions button{min-height:38px;border:0;background:transparent;color:inherit;border-radius:22px;padding:8px 13px;font:inherit;cursor:pointer}
#ux-pwa-dismiss{min-width:38px;padding:6px!important;font-size:20px!important}
#ux-pwa-actions button:focus-visible,#ux-pwa-dialog button:focus-visible{outline:3px solid #c7a85c;outline-offset:3px}
#ux-pwa-actions[hidden],#ux-pwa-actions button[hidden],#ux-pwa-dialog [hidden]{display:none!important}
#ux-pwa-dialog{box-sizing:border-box;width:min(440px,calc(100vw - 32px));max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);overflow:auto;padding:28px;border:1px solid #d3ded8;border-radius:22px;color:#182c25;background:#fff;box-shadow:0 25px 90px #041b2440;font:14px/1.65 system-ui,sans-serif;text-align:left}
#ux-pwa-dialog::backdrop{background:#0819149c}
#ux-pwa-dialog .ux-pwa-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:18px}
#ux-pwa-dialog .ux-pwa-heading img{width:62px;height:62px;border-radius:14px}
#ux-pwa-dialog h2{font:700 23px/1.3 system-ui,sans-serif;color:#073b31;margin:0 0 14px;letter-spacing:-.02em}
#ux-pwa-dialog p{margin:0 0 14px;font:inherit;color:inherit}
#ux-pwa-instructions{background:#f1f6f3;border-radius:12px;padding:16px;margin:18px 0!important}
#ux-pwa-dialog .ux-pwa-note{font-size:12px;color:#52665c}
#ux-pwa-dialog button{font:600 14px/1.4 system-ui,sans-serif;cursor:pointer;border:1px solid #d3ded8;min-height:44px;border-radius:12px;padding:10px 16px;color:#073b31;background:#fff}
#ux-pwa-dialog #ux-pwa-close{width:44px;font-size:23px;padding:6px}
#ux-pwa-dialog #ux-pwa-confirm{width:100%;color:#fff;background:#073b31;border-color:#073b31}
#ux-pwa-dialog #ux-pwa-confirm:disabled{opacity:.55;cursor:wait}
#ux-pwa-status{font-size:12px!important;margin-top:14px!important}
@media(display-mode:standalone){#ux-pwa-install{display:none!important}}
@media print{#ux-pwa-actions,#ux-pwa-dialog{display:none!important}}

/* Fixed-size theme controls must not place their generated glyph and legacy
   text in separate grid rows (especially in standalone Safari). */
#themeToggle,#uxTema {position:relative!important;box-sizing:border-box!important;isolation:isolate;overflow:hidden!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;padding:0!important;line-height:1!important;flex-shrink:0!important}
#themeToggle {font-size:0!important}
#themeToggle::before {position:absolute!important;inset:0!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0!important;transform:none!important;font:20px/1 system-ui,sans-serif!important}
#themeToggle>span,#themeToggle>svg {display:none!important}
#uxTema>.ux-sol,#uxTema>.ux-lua {position:absolute;top:50%;left:50%;width:20px;height:20px;transform:translate(-50%,-50%);margin:0;line-height:20px;text-align:center;font-size:20px}

/* assets/css/app-intro.css */
/* The installed app uses the existing boot screen: one route, one handoff. */
html.ux-app-intro.ux-preboot #uxBoot,
html.ux-app-intro.ux-app-intro-leaving #uxBoot{
 display:flex;visibility:visible;position:fixed;inset:0;z-index:100000;isolation:isolate;
 flex-direction:column;align-items:center;justify-content:center;gap:18px;
 box-sizing:border-box;min-height:100%;overflow:hidden;
 padding:max(32px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(32px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));
 color:#f3fbf7;background:#0b1512;text-align:center;font:14px/1.6 Inter,system-ui,sans-serif;
}
html.ux-app-intro #uxBoot::before{
 content:"";position:absolute;inset:0;z-index:-2;pointer-events:none;
 background:radial-gradient(ellipse at 50% 37%,#174d3d 0%,#0c211b 36%,#0b1512 72%);
}
html.ux-app-intro #uxBoot::after{
 content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.19;
 background-image:linear-gradient(#83bfa211 1px,transparent 1px),linear-gradient(90deg,#83bfa211 1px,transparent 1px);
 background-size:64px 64px;
}
html.ux-app-intro #uxBoot .ux-boot-logo{display:none}
html.ux-app-intro #uxBoot .ux-intro-stage{
 display:flex;flex-direction:column;align-items:center;position:relative;
 width:min(100%,360px);margin:0 0 12px;padding:42px 0 0;
}
html.ux-app-intro #uxBoot .ux-intro-orbit{
 position:absolute;top:-32px;left:50%;width:248px;height:248px;margin-left:-124px;
 border:1px solid #77c4a426;border-radius:50%;pointer-events:none;
 animation:uxIntroOrbit 1.15s cubic-bezier(.2,.7,.2,1) both;
}
html.ux-app-intro #uxBoot .ux-intro-orbit::after{
 content:"";position:absolute;inset:26px;border:1px solid #b6c6a81c;border-radius:50%;
}
html.ux-app-intro #uxBoot .ux-intro-mark{
 position:relative;width:112px;height:112px;border-radius:26px;
 border:1px solid #8dd2b933;background:#0b1f1a;overflow:hidden;
 box-shadow:0 20px 48px #0004,0 0 52px #3cc79515;
 animation:uxIntroMark .8s cubic-bezier(.16,1,.3,1) both;
}
html.ux-app-intro #uxBoot .ux-intro-mark img{
 display:block;width:112px;height:112px;max-width:none;margin:0;padding:0;border:0;
 border-radius:0;background:transparent;box-sizing:border-box;
}
html.ux-app-intro #uxBoot .ux-intro-mark::after{
 content:"";position:absolute;inset:-40%;pointer-events:none;
 background:linear-gradient(110deg,transparent 35%,#ffffff24 49%,transparent 61%);
 animation:uxIntroShine 1.2s .2s ease-out both;
}
html.ux-app-intro #uxBoot .ux-intro-wordmark{
 display:flex;align-items:baseline;position:relative;margin-top:32px;
 font-size:38px;font-weight:450;line-height:1.2;letter-spacing:-1.8px;color:#f6faf7;
 animation:uxIntroType .72s .14s cubic-bezier(.16,1,.3,1) both;
}
html.ux-app-intro #uxBoot .ux-intro-wordmark span{font-weight:800}
html.ux-app-intro #uxBoot .ux-intro-wordmark i{
 display:block;width:6px;height:6px;margin-left:5px;background:#c9a04a;border-radius:50%;
}
html.ux-app-intro #uxBoot .ux-intro-tagline{
 margin:10px 0 0;max-width:100%;font:400 13px/1.6 Inter,system-ui,sans-serif;letter-spacing:.15px;color:#a8c4b8;
 animation:uxIntroType .7s .22s ease-out both;
}
html.ux-app-intro #uxBoot .ux-intro-line{
 width:88px;height:2px;margin-top:35px;overflow:hidden;border-radius:2px;background:#c4e5d51a;
}
html.ux-app-intro #uxBoot .ux-intro-line span{
 display:block;width:40px;height:100%;border-radius:inherit;background:#c9a04a;
 animation:uxIntroLine 1.35s .2s ease-in-out infinite;
}
html.ux-app-intro #uxBoot #uxBootMessage{max-width:320px;color:#b7cfc4;font-size:12px;line-height:1.7}
html.ux-app-intro #uxBoot #uxBootRetry{color:#f7fbf8;border-color:#80b69f66;background:#1c4a38}
html.ux-app-intro #uxBoot>a{color:#a8c4b8;font-size:12px}
html.ux-app-intro #uxBoot>a:focus-visible,
html.ux-app-intro #uxBoot button:focus-visible{outline:2px solid #edcb80;outline-offset:5px}
html.ux-app-intro #uxBoot[data-retry=true] .ux-intro-stage,
html.ux-app-intro #uxBoot[data-retry=true] .ux-intro-stage *,
html.ux-app-intro #uxBoot[data-retry=true] .ux-intro-stage *::after{animation:none!important}
html.ux-app-intro #uxBoot[data-retry=true] .ux-intro-line{visibility:hidden}
html.ux-app-intro.ux-app-intro-leaving #uxBoot{pointer-events:none;animation:uxIntroLeave .36s cubic-bezier(.4,0,.2,1) both}
@keyframes uxIntroMark{from{opacity:0;transform:translateY(18px) scale(.88)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes uxIntroType{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes uxIntroOrbit{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}
@keyframes uxIntroShine{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@keyframes uxIntroLine{0%{transform:translateX(-42px)}65%,100%{transform:translateX(92px)}}
@keyframes uxIntroLeave{from{opacity:1}to{opacity:0}}
@media(max-height:570px){
 html.ux-app-intro.ux-preboot #uxBoot,
 html.ux-app-intro.ux-app-intro-leaving #uxBoot{gap:12px;justify-content:flex-start;overflow-y:auto}
 html.ux-app-intro #uxBoot .ux-intro-stage{padding-top:0;margin:0 auto;flex-shrink:0}
 html.ux-app-intro #uxBoot .ux-intro-orbit{top:-70px}
 html.ux-app-intro #uxBoot .ux-intro-mark{width:88px;height:88px;border-radius:21px}
 html.ux-app-intro #uxBoot .ux-intro-mark img{width:88px;height:88px}
 html.ux-app-intro #uxBoot .ux-intro-wordmark{margin-top:20px;font-size:32px}
 html.ux-app-intro #uxBoot .ux-intro-line{margin-top:18px}
}
@media(prefers-reduced-motion:reduce){
 html.ux-app-intro #uxBoot,html.ux-app-intro #uxBoot *,html.ux-app-intro #uxBoot *::after{animation:none!important;transition:none!important}
 html.ux-app-intro #uxBoot .ux-intro-line span{transform:none;width:100%}
 html.ux-app-intro #uxBoot .ux-intro-mark::after{display:none}
}
@media print{#uxBoot{display:none!important}}

/* assets/css/account-recovery.css */
.ux-recovery-dialog{width:min(430px,calc(100vw - 32px));max-height:calc(100dvh - 32px);margin:auto;border:1px solid var(--border,#d7e2dd);border-radius:22px;padding:28px;color:var(--text,#17332b);background:var(--panel,#fff);box-shadow:0 24px 90px #001d3250;overflow:auto;font-family:inherit;box-sizing:border-box}
.ux-recovery-dialog::backdrop{background:#061e32a8;backdrop-filter:blur(5px)}
.ux-recovery-dialog h2{margin:8px 32px 14px 0;font-size:1.45rem;line-height:1.2}
.ux-recovery-dialog p,.ux-recovery-dialog small{line-height:1.55;overflow-wrap:anywhere}
.ux-recovery-dialog p{font-size:.92rem}.ux-recovery-dialog small{display:block;font-size:.78rem;opacity:.8}
.ux-recovery-dialog label{display:grid;gap:7px;font-size:.85rem;font-weight:600;margin:18px 0}
.ux-recovery-dialog input{width:100%;min-height:46px;box-sizing:border-box;border-radius:10px;border:1px solid #9dadab;background:var(--input-bg,#fff);color:inherit;padding:10px 12px;font:inherit;font-size:16px}
.ux-recovery-dialog .btn{min-height:46px;white-space:normal;width:100%;margin:12px 0 0}
.ux-recovery-dialog [hidden]{display:none!important}.ux-recovery-close{position:absolute;right:12px;top:12px}.ux-recovery-close button{display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;font-size:25px;cursor:pointer}
#glRecovery{margin:16px 0 4px;border-top:1px solid var(--borda,#ccd8d4);padding-top:14px}#glRecovery summary{cursor:pointer;font-size:.84rem;font-weight:650;min-height:32px}#glRecovery .gr-nota{font-size:.78rem;line-height:1.5}#glRecovery [hidden]{display:none!important}#glRecoveryStatus{min-height:20px;font-size:.8rem;line-height:1.5;margin:12px 0}
[data-tema="dark"] .ux-recovery-dialog{background:#14242c;color:#e6f0ed;border-color:#3e545e}[data-tema="dark"] .ux-recovery-dialog input{background:#0b1a22;color:#f4f8f6;border-color:#647881}

/* assets/css/interface-system.css */
/* UrbanNIX UI33.1 — shared visual language. Component layout belongs here;
   enterprise imagery, technical maps and document printing retain their own scope. */
@media screen{
:root{
  --ui-bg:#f2f5f3;--ui-surface:#fff;--ui-soft:#e8efeb;
  --ui-text:#17392f;--ui-muted:#50685e;--ui-line:#cddbd3;
  --ui-accent:#17674f;--ui-on-accent:#fff;--ui-focus:#17674f;
  --ui-danger:#a33135;--ui-warning:#775513;--ui-success:#196444;
  --ui-radius:16px;--ui-radius-control:10px;--ui-radius-dialog:20px;
  --ui-shadow:0 2px 4px #17392f08,0 8px 24px #17392f0a;
  --ui-shadow-overlay:0 12px 48px #102d2929;
  --ui-space-1:4px;--ui-space-2:8px;--ui-space-3:12px;
  --ui-space-4:16px;--ui-space-6:24px;--ui-space-8:32px;
  --ui-fast:140ms;--ui-motion:220ms;--ui-ease:cubic-bezier(.22,.8,.25,1);
  --ui-font:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
}
html[data-tema=escuro]{color-scheme:dark;--ui-bg:#0d1d18;--ui-surface:#172d24;--ui-soft:#213b30;--ui-text:#edf6f0;--ui-muted:#b6cfc0;--ui-line:#456455;--ui-accent:#a3ddbd;--ui-on-accent:#102d22;--ui-focus:#b4e9c9;--ui-danger:#ffb0ad;--ui-warning:#edcf8f;--ui-success:#9addb4;--ui-shadow:0 2px 4px #08191122,0 8px 24px #08191133}
html[data-tema=claro]{color-scheme:light}
html[data-tema]{--u8-bg:var(--ui-bg);--u8-bg-soft:var(--ui-soft);--u8-card:var(--ui-surface);--u8-card-2:var(--ui-soft);--u8-line:var(--ui-line);--u8-text:var(--ui-text);--u8-muted:var(--ui-muted);--u8-muted-2:var(--ui-muted);--ux315-bg:var(--ui-bg);--ux315-card:var(--ui-surface);--ux315-soft:var(--ui-soft);--ux315-ink:var(--ui-text);--ux315-muted:var(--ui-muted);--ux315-line:var(--ui-line);--ux315-accent:var(--ui-accent);--ux320-paper:var(--ui-bg);--ux320-ink:var(--ui-text)}
html body,html :is(#grPublico,#grCliente,#appRoot){font-family:var(--ui-font);font-optical-sizing:auto}
html body{line-height:1.5}
html :is(button,input,select,textarea){font-family:inherit}
html :is(input,textarea){caret-color:var(--ui-accent)}
html ::selection{background:#cde7d9;color:#123b2c}
html :is(table,.stat,.price,.gr-plan-grid){font-variant-numeric:tabular-nums}
html :is(button,.btn,.gr-btn):disabled{cursor:not-allowed}
html :is(button,[role=button],a,input,select,textarea):focus-visible{outline:3px solid var(--ui-focus)!important;outline-offset:3px!important}
html :is(button,[role=button],a){touch-action:manipulation}
html :is(button,.btn,.gr-btn):active:not(:disabled){scale:.98;transition:scale 80ms ease-out}
html :is(#appRoot,#grCliente,#grPublico) :is(.btn,.gr-btn,.icon-btn,.ux319-primary,.ux319-text-button){min-height:44px;line-height:1.35}
html :is(#appRoot,#grCliente,#grPublico) :is(input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea){min-height:46px;font-size:16px;box-sizing:border-box;max-width:100%}
html :is(.view,.block,.form-grid,.page-heading,.ux-sim-campos)>*{min-width:0}
html :is(.page-heading h1,.page-heading h2){letter-spacing:-.025em;line-height:1.2}
/* Public home: ensure each surface owns its foreground in BOTH themes. */
html[data-tema] #grPublico .ux319-home{--u-bg:var(--ui-bg);--u-card:var(--ui-surface);--u-soft:var(--ui-soft);--u-ink:var(--ui-text);--u-muted:var(--ui-muted);--u-line:var(--ui-line);--u-accent:var(--ui-accent);background:var(--ui-bg);color:var(--ui-text)}
html[data-tema] #grPublico .ux319-home .ux319-intro{background:#123e32;color:#f4f8f4;box-shadow:none;border-radius:16px;padding:clamp(24px,4vw,56px);box-sizing:border-box;margin-top:24px;gap:32px}
html[data-tema] #grPublico .ux319-home .ux319-intro h1{color:#f4f8f4!important;font-family:var(--ui-font);font-weight:650;letter-spacing:-.04em;line-height:1.08;font-size:clamp(34px,4vw,58px)}
html[data-tema] #grPublico .ux319-intro h1 em{color:#d6e9be!important}
html[data-tema] #grPublico .ux319-intro :is(p,.ux319-eyebrow,.ux319-text-button){color:#d7e6dc!important}
html[data-tema] #grPublico .ux319-intro :is(p,.ux319-text-button){font-size:16px;line-height:1.65}
html[data-tema] #grPublico .ux319-home :is(.ux319-project-body>p,.ux319-about p,.ux319-about li,.ux319-help p){font-size:15px;line-height:1.65;color:var(--ui-muted)}
html #grPublico .ux319-eyebrow{font-size:12px;letter-spacing:.12em}
html #grPublico :is(.ux319-project-facts dt,.ux319-project-city,.ux319-project-status,.ux319-footer-brand p,.ux319-footer-bottom){font-size:12px;line-height:1.55}
html[data-tema] #grPublico .ux319-home :is(.ux319-project,.ux-v320-vista-card){background:var(--ui-surface);color:var(--ui-text);border:1px solid var(--ui-line);border-radius:16px;box-shadow:none;animation:none;transform:none}
html[data-tema] #grPublico .ux-v320-vista-card .ux319-project-body>p{color:var(--ui-muted)}
html[data-tema] #grPublico .ux319-project-actions button{font-size:14px;min-height:46px;border-radius:12px}
html[data-tema] #grPublico .ux319-project-facts dd{font-size:20px;font-variant-numeric:tabular-nums}
html[data-tema] #grPublico .ux319-help-links button{font-size:15px;border-radius:12px;min-height:48px}
html[data-tema] #grPublico .ux319-home .ux-home-topo{background:var(--ui-surface);border-color:var(--ui-line)}
html[data-tema] #grPublico .ux319-home .ux-home-menu button{font-size:14px!important;min-height:44px!important;color:var(--ui-text)}
html[data-tema] #grPublico .ux319-home .ux-home-menu .ux-cta{background:var(--ui-accent)!important;color:var(--ui-surface)!important}
html #grPublico .ux319-footer nav :is(a,button){font-size:14px;min-height:44px}
html #grPublico .ux-v320-live-strip{background:var(--ui-surface);color:var(--ui-text);border-color:var(--ui-line);font-size:13px;box-shadow:none;box-sizing:border-box}
html :is(.ux319-intro:before,.ux319-intro:after,.ux-v320-live-strip i,.ux315-hero-photo,.ux315-photo-stack img){animation:none!important;filter:none!important}
html #grPublico .ux319-intro:before,html #grPublico .ux319-intro:after{display:none}
html :is(.ux319-project,.ux319-project-photo img,.ux-v320-media-main img){transition:transform 180ms ease-out,border-color 180ms ease-out!important;filter:none!important}
html #grPublico .ux319-project:hover{transform:none;box-shadow:none;border-color:var(--ui-accent)}
html :is(.ux-v320-lightbox,.ux315-delivery-modal,.ux-client-lightbox){backdrop-filter:none!important}
html :is(.ux-v320-lightbox-close,.ux317-menu-toggle,.ux318-portal-toggle){min-width:44px;min-height:44px}
html #grPublico .ux-v320-alto-map-tools button{min-height:44px;font-size:14px}
html #grPublico .ux-v320-alto-map-tools button[aria-pressed=true]{background:#dfc36c;color:#19382f;border-color:#dfc36c}
html #grPublico .ux-v320-alto-svg{min-width:0;max-width:100%;height:auto}
/* Administrative shell: one column, no ghost columns or clipped labels. */
html #appRoot nav.tabs{flex-flow:column nowrap!important;align-content:normal!important;column-count:1!important;grid-auto-flow:row!important;scrollbar-gutter:stable;box-shadow:none!important}
html #appRoot nav.tabs button{min-height:44px!important;font-size:14px!important;line-height:1.35!important}
html #appRoot nav.tabs .nav-caption{font-size:11px!important;color:#b5c8bb!important;letter-spacing:.1em!important;margin-top:20px!important}
html #appRoot nav.tabs :is(.ux-emp-nav-rot,.ux-emp-nav-loc,.sidebar-brand span){font-size:12px!important;color:#b5c8bb!important}
html #appRoot nav.tabs .ux-emp-nav-nome{font-size:14px!important}
html #appRoot header.top{display:grid!important;background:var(--ui-surface)!important;backdrop-filter:none!important;box-shadow:var(--ui-shadow)!important;grid-template-columns:minmax(200px,1fr) auto!important;gap:8px 16px!important;min-height:76px!important}
html #appRoot header.top .brand{grid-column:1;grid-row:1;min-width:0}
html #appRoot header.top .top-actions{grid-column:2;grid-row:1}
html #appRoot header.top .user-badge{grid-row:2;grid-column:1/-1;display:flex!important;justify-content:flex-end;gap:12px;max-width:none!important;flex-wrap:wrap!important}
html #appRoot header.top :is(.top-search,.ux-emp-switch){font-size:14px;min-height:44px!important}
html #appRoot header.top .who{font-size:12px!important;line-height:1.5!important}
html #appRoot :is(.block,.stat,.card,.ux-visao){background:var(--ui-surface);color:var(--ui-text);border-color:var(--ui-line);box-shadow:none;border-radius:var(--ui-radius)}
html #appRoot :is(.stat,.card) :is(.label,.muted,small){color:var(--ui-muted);font-size:13px}
html #appRoot :is(.field,.ux-det-campo){font-size:14px!important;line-height:1.5}
html #appRoot .field :is(input,select,textarea){border-color:var(--ui-line)!important;background:var(--ui-surface)!important;color:var(--ui-text)!important}
html #appRoot :is(.hero-vgv,.kpi-value,.stat strong,.stat b){font-variant-numeric:tabular-nums}
html #appRoot :is(.table-wrap,.audit-table-wrap){overflow:auto;max-width:100%;overscroll-behavior-x:contain}
html #appRoot table :is(th,td){font-size:13px;line-height:1.5}
html #appRoot .ux-col{min-width:240px}
html #appRoot :is(.ux-leads-filtros,.ux-leads-filters){gap:10px;flex-wrap:wrap}
html #appRoot :is(.ux-col-cab,.ux-leads-kpi small){font-size:12px;line-height:1.5}
html #grCliente :is(.gr-card,.ux-client-action,.ux-client-stat){border-radius:16px;box-shadow:var(--ui-shadow)}
html #grCliente :is(.gr-sub,.ux-client-action p,.ux-client-hero p){font-size:15px;line-height:1.6}
/* Shared controls and administrative work surfaces. Screen-only: never recolor A4. */
@media screen{
  html :is(#appRoot,#grCliente,#grPublico){accent-color:var(--ui-accent);scrollbar-color:var(--ui-line) var(--ui-bg)}
  html :is(#appRoot,#grCliente,#grPublico) a{text-underline-offset:.22em}
  html :is(#appRoot,#grCliente,#grPublico) :is(h1,h2,h3){text-wrap:balance}
  html :is(#appRoot,#grCliente,#grPublico) :is(p,li){text-wrap:pretty}
  html :is(#appRoot,#grCliente) :is(.btn,.gr-btn){
    border-radius:var(--ui-radius-control);font-weight:600;
    transition:background-color var(--ui-fast) ease,color var(--ui-fast) ease,border-color var(--ui-fast) ease,scale var(--ui-fast) var(--ui-ease);
  }
  html #appRoot .btn:not(.secondary):not(.danger):not(.warning):not(.success){background:var(--ui-accent);color:var(--ui-on-accent);border-color:transparent;box-shadow:none}
  html #appRoot .btn.secondary{background:var(--ui-surface);color:var(--ui-text);border-color:var(--ui-line);box-shadow:none}
  html #appRoot :is(.btn,.icon-btn)[aria-busy=true]{cursor:progress}
  html #appRoot :is(.btn,.icon-btn):disabled{opacity:.55;filter:none;scale:1}
  html #appRoot :is(.field input,.field select,.field textarea){border-radius:var(--ui-radius-control);transition:border-color var(--ui-fast) ease}
  html #appRoot :is(input,textarea)::placeholder{color:var(--ui-muted);opacity:1}
  html #appRoot :is(input,select,textarea)[aria-invalid=true]{border-color:var(--ui-danger)!important}
  html #appRoot .page-heading{gap:16px;align-items:center;margin-bottom:24px;flex-wrap:wrap}
  html #appRoot .page-heading :is(h1,h2){font-size:clamp(26px,2.7vw,36px);font-weight:650;color:var(--ui-text);margin-bottom:6px}
  html #appRoot .page-heading :is(p,.muted){color:var(--ui-muted);font-size:14px;max-width:70ch}
  html #appRoot :is(.block,.card){padding:24px}
  html #appRoot .block>.block{box-shadow:none}
  html #appRoot :is(.block,.card)>h2{font-size:20px;letter-spacing:-.02em;margin:0 0 20px}
  html #appRoot .form-grid{gap:20px 24px;align-items:start}
  html #appRoot .stat{padding:20px 24px}
  html #appRoot .stat :is(strong,b){line-height:1.2;letter-spacing:-.025em}
  html #appRoot table{border-collapse:separate;border-spacing:0;width:100%;background:var(--ui-surface)}
  html #appRoot table :is(th,td){padding:12px 16px;border-bottom:1px solid var(--ui-line);vertical-align:middle}
  html #appRoot table th{background:var(--ui-soft);color:var(--ui-text);font-weight:650;text-transform:none;letter-spacing:0}
  html #appRoot table tbody tr:focus-within{background:var(--ui-soft)}
  html #appRoot nav.tabs{background:#113d30!important}
  html #appRoot nav.tabs button{border-radius:10px!important;transition:background-color var(--ui-fast) ease,color var(--ui-fast) ease!important}
  html #appRoot nav.tabs button.active{background:#2a5947!important;box-shadow:none!important;color:#fff!important}
  html #appRoot nav.tabs button.active .nav-ico{color:#e2c784!important}
  html #appRoot .ux-emp-switch{border-radius:12px!important;background:var(--ui-soft)!important;border-color:transparent!important}
  html #appRoot header.top{border:1px solid var(--ui-line)!important;box-shadow:none!important}
  html #appRoot .gr-notify-panel{width:min(400px,calc(100vw - 32px));max-height:min(620px,75dvh);overflow:auto;background:var(--ui-surface);color:var(--ui-text);border-radius:var(--ui-radius-dialog);box-shadow:var(--ui-shadow-overlay)}
  html #appRoot :is(.gr-notify-empty,.empty-state){color:var(--ui-muted);padding:32px 24px;line-height:1.6}
  html :is(#appRoot,#grCliente) :is(.modal-card,.modal-content,.drawer){background:var(--ui-surface);color:var(--ui-text);border-radius:var(--ui-radius-dialog);max-width:calc(100vw - 24px);max-height:calc(100dvh - 32px);overflow:auto;overscroll-behavior:contain}
  html #grCliente{--tx:var(--ui-text);--tx2:var(--ui-muted);--tx3:var(--ui-muted);--linha:var(--ui-line);--papel:var(--ui-surface);background:var(--ui-bg);color:var(--ui-text)}
  html #grCliente :is(.gr-card,.ux-shortcut,.ux-journey-card,.ux-video-card,.ux-legacy-detail){background:var(--ui-surface);color:var(--ui-text);border:1px solid var(--ui-line);border-radius:16px;box-shadow:none}
  html #grCliente :is(.ux-shortcut small,.ux-welcome p,.ux-video-copy p,.ux-journey-head small,.ux-journey-step small){color:var(--ui-muted)}
  html #grCliente .ux-shortcut{padding:20px;transition:border-color var(--ui-fast) ease,scale var(--ui-fast) ease}
  html #grCliente .ux-shortcut:hover{transform:none;border-color:var(--ui-accent);box-shadow:none}
  html #grCliente .ux-shortcut i{background:var(--ui-soft);color:var(--ui-accent)}
  html #grCliente .ux-shortcut :is(b,small){font-size:14px;line-height:1.5}
  html #grCliente .ux-welcome-status{background:var(--ui-soft);border-color:var(--ui-line);color:var(--ui-text)}
  html #grCliente .ux-client-back{background:var(--ui-surface);color:var(--ui-text);border-color:var(--ui-line);box-shadow:none;min-height:44px;font-size:14px}
  html #grCliente .gr-client-brand img{animation:none;filter:none;object-fit:contain}
  html #grCliente .ux-client-hero{border-radius:16px;box-shadow:none}
  html #grCliente .ux-client-hero h2{font-family:var(--ui-font);font-size:clamp(28px,4vw,48px);line-height:1.1;letter-spacing:-.03em}
  html #grCliente .ux-journey-step.current:after{animation:none}
  html #grCliente .ux-journey-step b{font-size:13px}
  html #grCliente .ux-journey-step small{font-size:12px}
  html #grCliente .ux-reveal{animation:none}
  html #grPublico .ux319-project-body{padding:28px}
  html #grPublico .ux319-project-facts{border-color:var(--ui-line);gap:20px}
  html #grPublico .ux319-home .ux-home-topo{border-radius:0;box-shadow:none}
  html #grPublico .ux319-help{gap:32px}
  html #grPublico .ux319-help-links button{text-align:left;border-color:var(--ui-line)}
  html #grPublico .ux318-gran-home .ux318-section-heading p{font-size:16px;line-height:1.65;max-width:36ch}
  html #grPublico .ux318-gran-home .ux318-fine{font-size:13px}
  html #grPublico .ux318-button{border-radius:10px;font-size:15px;transition:background-color var(--ui-fast) ease,scale var(--ui-fast) var(--ui-ease)}
  html #grPublico .ux318-gold:hover{transform:none}
  html #grPublico .ux318-gran-hero h1{letter-spacing:-.03em}
}
@media screen and (max-width:760px){
  html #appRoot :is(.block,.card,.stat){padding:18px}
  html #appRoot .page-heading{gap:12px;margin-bottom:20px}
  html #grPublico .ux319-project-body{padding:20px}
  html #grCliente .ux-shortcut{padding:16px}
}
/* Motion answers input. No polling, observer, library or automatic carousel. */
@media screen and (prefers-reduced-motion:no-preference){
  html :is(.ux-lightbox:not([hidden]),.ux-v320-lightbox:not([hidden]),.gr-gallery-lightbox.on){animation:ui-overlay-in var(--ui-motion) var(--ui-ease)}
  html #appRoot .gr-notify-panel:not([hidden]){animation:ui-overlay-in var(--ui-motion) var(--ui-ease);transform-origin:top right}
  html :is(.ux318-gallery-card,.ux319-project-photo,.ux-gallery-item) img{transition:scale var(--ui-motion) var(--ui-ease)}
}
@media screen and (hover:hover) and (pointer:fine){
  html :is(.ux318-gallery-card,.ux319-project-photo,.ux-gallery-item):hover img{scale:1.025}
  html #appRoot table tbody tr:hover{background:var(--ui-soft)}
}
@keyframes ui-overlay-in{from{opacity:.5;translate:0 5px}to{opacity:1;translate:0 0}}
.ui-skip{position:fixed;top:8px;left:16px;z-index:200000;transform:translateY(-150%);background:var(--ui-surface);color:var(--ui-text);padding:12px 18px;border:2px solid var(--ui-focus);border-radius:12px;text-decoration:none}
.ui-skip:focus{transform:none}
.ui-legal-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 20px;padding:20px 16px calc(20px + env(safe-area-inset-bottom));border-top:1px solid var(--ui-line);background:var(--ui-surface);color:var(--ui-muted);font:13px/1.5 var(--ui-font)}
.ui-legal-nav :is(a,button){display:inline-flex;align-items:center;min-height:44px;color:inherit;text-decoration:none;background:none;border:0;padding:8px 0;font:inherit;cursor:pointer}
.ui-legal-nav a:hover{text-decoration:underline}
html #appRoot>.wrap>.ui-legal-nav{margin-top:30px}
.ui-storage-notice{font:14px/1.55 var(--ui-font);padding:18px 20px;border:1px solid var(--ui-line);border-radius:16px;background:var(--ui-surface);color:var(--ui-text);width:min(640px,calc(100vw - 28px));box-sizing:border-box;box-shadow:0 6px 28px #0002;position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:100100}
.ui-storage-notice p{color:var(--ui-muted);margin:5px 0 10px}
.ui-storage-notice a{color:var(--ui-accent)}
.ui-storage-notice button{min-height:44px;padding:10px 20px;border-radius:10px;background:var(--ui-accent);color:var(--ui-surface);border:0;font:600 14px var(--ui-font);cursor:pointer}
@media(min-width:1500px){html #appRoot header.top{grid-template-columns:minmax(210px,1fr) auto auto!important}html #appRoot header.top .user-badge{grid-row:1;grid-column:3;max-width:440px!important}}
@media(max-width:1000px){html #appRoot header.top .top-search{min-width:44px!important;width:44px!important}html #appRoot header.top .top-search :is(span,kbd){display:none!important}html #appRoot header.top .user-badge .sync{display:none!important}}
@media(max-width:760px){html[data-tema] #grPublico .ux319-home .ux319-intro{padding:26px 22px;gap:18px;margin-top:12px;border-radius:18px}html #grPublico .ux319-project-actions{gap:10px;flex-wrap:wrap}html #grPublico .ux319-project-actions button{flex:1 1 140px;width:auto!important}html #grPublico .ux319-project-heading{gap:12px}html #grPublico .ux319-project-heading h2{font-size:26px!important}html #grPublico .ux319-help-links{min-width:0}html #grPublico .ux-v320-alto-portal{width:calc(100% - 28px);box-sizing:border-box;grid-template-columns:minmax(0,1fr)}html #grPublico .ux-v320-alto-svg{min-height:240px}html #grPublico .ux-v320-media-main{margin-inline:0}}
@media(max-width:600px){html #appRoot header.top .top-actions{display:flex!important;flex:0 0 auto!important;min-width:max-content!important}html #appRoot header.top .top-actions .icon-btn{display:inline-flex!important;flex:0 0 44px!important;min-width:44px!important;width:44px!important;height:44px!important}html #appRoot header.top .ux-emp-switch{max-width:150px!important}html #appRoot header.top{top:6px!important;padding:10px!important;grid-template-columns:minmax(0,1fr) auto!important;border-radius:14px!important;margin-bottom:18px!important}html #appRoot header.top .ux-emp-switch{min-width:0!important;width:100%!important;max-width:200px!important}html #appRoot header.top .ux-emp-switch strong{font-size:12px!important}html #appRoot header.top .gr-brand-refresh-admin{display:none!important}html #appRoot header.top .top-actions{gap:4px!important}html #appRoot header.top .top-actions .top-search{display:none!important}html #appRoot header.top .user-badge{justify-content:space-between;gap:6px!important}html #appRoot header.top .who{max-width:calc(100% - 68px)!important;white-space:normal!important}html #appRoot .form-grid{grid-template-columns:minmax(0,1fr)!important}html #appRoot :is(.field,.field input,.field select,.field textarea){min-width:0!important;width:100%;max-width:100%}html #appRoot nav.tabs{padding-bottom:env(safe-area-inset-bottom)!important}html #appRoot nav.tabs .nav-label{font-size:11px!important}html .ui-legal-nav{padding-bottom:calc(80px + env(safe-area-inset-bottom))}html #grPublico .ui-legal-nav,html #grCliente .ui-legal-nav{padding-bottom:calc(24px + env(safe-area-inset-bottom))}html .ux-v320-lightbox{padding:10px}html .ux-v320-lightbox img{max-height:75dvh}}
@media(hover:hover) and (pointer:fine){html .btn:hover:not(:disabled),html .gr-btn:hover:not(:disabled){filter:brightness(1.04)}}
@media(prefers-reduced-motion:reduce){html :is(#grPublico,#grCliente,#appRoot) *,html :is(#grPublico,#grCliente,#appRoot) *::before,html :is(#grPublico,#grCliente,#appRoot) *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}html button:active{scale:1!important}html :is(.ux-lightbox,.ux-v320-lightbox,.gr-gallery-lightbox),html :is(.ux318-gallery-card,.ux319-project-photo,.ux-gallery-item) img{animation:none!important;transition:none!important;scale:1!important}}
@media(prefers-reduced-transparency:reduce){html :is(header.top,.ux315-header,.ux-v320-lightbox,.ui-storage-notice){backdrop-filter:none!important}html .ux-v320-lightbox{background:#101815!important}}
@media(prefers-contrast:more){html :is(.btn,.gr-btn,.block,.ux319-project,input,select){border:2px solid currentColor!important;box-shadow:none!important}}
/* Narrow screens retain all destinations in a labelled, native scroll strip. */
@media(max-width:980px){html #appRoot .ux-lead-barra{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}html #appRoot .ux-lead-barra>*{min-width:0;max-width:100%}html #appRoot .ux-lead-barra :is(input,.btn){grid-column:1/-1!important}}
@media(max-width:720px){html #appRoot nav.tabs{display:flex!important;flex-flow:row nowrap!important;left:0!important;right:0!important;bottom:0!important;top:auto!important;width:100%!important;height:calc(76px + env(safe-area-inset-bottom))!important;max-height:none!important;overflow-x:auto!important;overflow-y:hidden!important;border-radius:16px 16px 0 0!important;padding:6px 8px calc(6px + env(safe-area-inset-bottom))!important;box-sizing:border-box!important;scrollbar-width:none;z-index:90!important;background:#103b2c!important;scrollbar-gutter:auto}html #appRoot nav.tabs :is(.sidebar-brand,.ux-emp-nav,.nav-caption){display:none!important}html #appRoot nav.tabs button{width:82px!important;min-width:82px!important;flex:0 0 82px!important;display:flex!important;flex-direction:column!important;justify-content:center!important;gap:4px!important;padding:5px!important;border-radius:12px!important}html #appRoot nav.tabs button .nav-label{display:block!important;font-size:11px!important;line-height:1.15!important;text-align:center!important;flex:none!important;max-width:100%;white-space:normal!important;height:26px!important}html #appRoot nav.tabs button .nav-ico{width:18px!important;height:18px!important;flex:0 0 18px!important}html #appRoot nav.tabs button.active{background:#245d45!important;box-shadow:none!important}html #appRoot>.wrap{padding-bottom:100px!important}html #uxOfflineBadge{bottom:90px!important;right:10px!important;max-width:160px!important;font-size:10px!important}html #uxOfflineBadge small{display:none!important}html #appRoot .user-badge .who{display:block!important}}
@media(max-width:720px){html #appRoot .vgv-side{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:10px!important;width:100%!important}html #appRoot .vgv-side>div{min-width:0!important;display:flex!important;justify-content:space-between!important;gap:12px!important}html #appRoot .vgv-side strong{font-size:20px!important;overflow-wrap:anywhere}html #appRoot #heroVgvTotal{font-size:clamp(28px,8vw,40px)!important;overflow-wrap:anywhere}}
}
@media print{.ui-skip,.ui-storage-notice,.ui-legal-nav{display:none!important}}

/* User access dialogs sit above navigation, installation prompts and badges. */
@media screen{
  html #appRoot :is(#senhaUsuarioOverlay,#perfilUsuarioOverlay){z-index:100200!important;box-sizing:border-box!important;padding:max(16px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))!important;overflow:hidden!important;overscroll-behavior:contain!important;align-items:center!important;justify-content:center!important}
  html #appRoot :is(#senhaUsuarioOverlay,#perfilUsuarioOverlay) .cli-dialog{width:min(var(--access-dialog-width,520px),100%)!important;max-width:100%!important;height:auto!important;max-height:calc(100vh - 32px)!important;max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom))!important;min-height:0!important;overflow:hidden!important;border-radius:18px!important;box-sizing:border-box!important}
  html #appRoot :is(#senhaUsuarioOverlay,#perfilUsuarioOverlay) :is(.cli-head,.cli-foot){flex:0 0 auto!important;min-width:0!important;padding:16px!important}
  html #appRoot :is(#senhaUsuarioOverlay,#perfilUsuarioOverlay) .cli-head>div{min-width:0!important;overflow-wrap:anywhere!important}
  html #appRoot :is(#senhaUsuarioOverlay,#perfilUsuarioOverlay) .cli-head>.btn{flex:0 0 auto!important;width:auto!important}
  html #appRoot :is(#senhaUsuarioOverlay,#perfilUsuarioOverlay) .cli-body{flex:1 1 auto!important;min-height:0!important;min-width:0!important;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain!important;padding:16px!important}
  html #appRoot :is(#senhaUsuarioOverlay,#perfilUsuarioOverlay) .cli-foot>div{display:flex!important;gap:8px!important;flex-wrap:wrap!important;min-width:0!important;max-width:100%!important}
  html #appRoot :is(#senhaUsuarioOverlay,#perfilUsuarioOverlay) .cli-foot .btn{flex:1 1 auto!important;width:auto!important;min-width:0!important;white-space:normal!important}
}

/* assets/css/interface-accessibility.css */
/* Explicit navigation visibility respects role-controlled inline state. */
@media screen{
html #appRoot nav.tabs .sidebar-brand .gr-v261-refresh::before{content:'↻'!important;display:block!important;font:22px/1 var(--ui-font)!important;color:#e7f3eb!important;position:static!important;opacity:1!important;transform:none!important;width:auto!important;height:auto!important;background:none!important;border:0!important}
html #appRoot nav.tabs button[data-view][hidden],html #appRoot nav.tabs button[data-view][style*="display:none"],html #appRoot nav.tabs button[data-view][style*="display: none"]{display:none!important}
html #appRoot .gr-simple-club-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
html #appRoot .gr-benefit-card{min-width:0;background:var(--ui-surface);color:var(--ui-text);border-color:var(--ui-line);overflow-wrap:anywhere}
html #appRoot .gr-simple-club{background:var(--ui-soft);border-color:var(--ui-line)}
html #appRoot .gr-benefit-card :is(span,small){color:var(--ui-muted);font-size:12px;line-height:1.5}
html #appRoot :is(.page-heading h1,.page-heading h2,.block>h2,.vgv-main strong,.vgv-side strong){font-family:var(--ui-font)!important}
html #uxOfflineBadge{pointer-events:none!important}
@media(max-width:720px){html #appRoot .gr-simple-club-grid{grid-template-columns:minmax(0,1fr)}}
}
/* One print boundary: the application's late screen styles must never revive its chrome. */
@media print{
  /* Paper has its own palette, independent of the active screen theme. */
  :root{color-scheme:only light!important}
  body.print-contract-v35>*:not(#appRoot),
  body.print-contract-v35 #appRoot>.wrap>*:not(#view-contrato),
  body.print-contract-v35 #view-contrato>:not(#contratoDoc):not(.print-watermark):not(#printRubricaFooter){display:none!important}
  body.print-contract-v35 #appRoot,
  body.print-contract-v35 #appRoot>.wrap,
  body.print-contract-v35 #appRoot #view-contrato{display:block!important;position:static!important;width:auto!important;max-width:none!important;min-height:0!important;height:auto!important;margin:0!important;padding:0!important;background:white!important;box-shadow:none!important;border:0!important;overflow:visible!important;transform:none!important;animation:none!important;opacity:1!important}
  body.print-contract-v35 #contratoDoc{--ux-tx:#111;--ux-tx2:#444;--ink:#111;--ink-soft:#444;--ux-surface:#fff;--ux-surface-2:#f5f5f5;color:#111!important;background:transparent!important;box-shadow:none!important}
}

/* Work progress: every activity and its percentage remain visible on phones. */
@media screen and (max-width:700px){
  html #appRoot #view-obra #obraTable{display:block!important;position:relative;width:100%!important;min-width:0!important;max-width:100%!important;border:0;border-spacing:0;background:transparent;box-sizing:border-box}
  html #appRoot #view-obra #obraTable thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}
  html #appRoot #view-obra #obraTable tbody{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;width:100%;min-width:0}
  html #appRoot #view-obra #obraTable tbody tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;width:100%;min-width:0;max-width:100%;padding:16px;border:1px solid var(--ui-line,var(--line));border-radius:14px;background:var(--ui-surface,var(--card));box-sizing:border-box}
  html #appRoot #view-obra #obraTable tbody tr:focus-within{border-color:var(--ui-focus,var(--brand))}
  html #appRoot #view-obra #obraTable tbody td{display:block;width:auto!important;min-width:0!important;max-width:100%;padding:0!important;border:0!important;text-align:left!important;white-space:normal!important;overflow-wrap:anywhere;box-sizing:border-box;background:transparent!important}
  html #appRoot #view-obra #obraTable tbody td[data-label]::before{content:attr(data-label);display:block;margin-bottom:4px;font:500 12px/1.4 var(--ui-font,var(--sans));color:var(--ui-muted,var(--ink-soft))}
  html #appRoot #view-obra #obraTable tbody td:nth-child(1){grid-column:1/-1;order:0;font-weight:650;font-size:16px;line-height:1.4}
  html #appRoot #view-obra #obraTable tbody td:nth-child(1)::before,html #appRoot #view-obra #obraTable tbody td:nth-child(6)::before{display:none}
  html #appRoot #view-obra #obraTable tbody td:nth-child(2){grid-column:2;grid-row:2;order:1}
  html #appRoot #view-obra #obraTable tbody td:nth-child(3){grid-column:1;grid-row:2;order:1;font-size:18px;font-weight:650;line-height:1.4}
  html #appRoot #view-obra #obraTable tbody td:nth-child(4){grid-column:1/-1;order:2}
  html #appRoot #view-obra #obraTable tbody td:nth-child(5){grid-column:1/-1;order:3;display:flex;justify-content:space-between;align-items:baseline;gap:12px}
  html #appRoot #view-obra #obraTable tbody td:nth-child(6){grid-column:1/-1;order:4}
  html #appRoot #view-obra #obraTable tbody td[colspan]{grid-column:1/-1;grid-row:auto;font-weight:400}
  html #appRoot #view-obra #obraTable [data-obra-etapa]{display:block;width:100%!important;min-width:0!important;max-width:100%;min-height:44px!important;white-space:normal!important;box-sizing:border-box}
  html #appRoot #view-obra #obraTable [role=progressbar]{min-width:0!important;width:100%;max-width:100%;box-sizing:border-box}
}

/* assets/css/v44-interacoes-profissionais.css */
/* Integrated interaction polish; shared focus and button motion remain in interface-system.css. */
@media screen and (prefers-reduced-motion:no-preference){
 .app-toast{transition:opacity .18s ease,transform .18s ease}
 /* Theme foreground and background change together. Interpolating only the
    container makes inherited text briefly lose contrast during a theme switch. */
}
@media(prefers-reduced-motion:reduce){.app-toast{transition:none!important;animation:none!important}}

/* assets/css/desktop-ui333.css */
/* UI33.3 — desktop composition, shared alignment and a real location map. */
html #grPublico .ux318-location-grid .gr-location-map-shell{position:relative;min-width:0;width:100%;height:100%;min-height:460px;border:0;border-radius:0;overflow:hidden}
html #grPublico .ux318-location-grid .gr-location-map{width:100%;height:460px;min-height:460px;background:var(--ux315-soft)}
html #grPublico .ux318-location-grid .gr-google-map-frame{width:100%;height:460px;border:0;display:block}
html #grPublico .ux318-location-grid .gr-location-outline-note{font-size:12px;line-height:1.5}
@media screen and (min-width:1100px){
 html #grPublico .ux319-container,html #grPublico .ux319-home .ux-home-topo-in{width:calc(100% - 80px);max-width:1320px}
 html[data-tema] #grPublico .ux319-home .ux319-intro{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);padding:36px 40px;gap:48px;margin-top:24px;min-height:0}
 html[data-tema] #grPublico .ux319-home .ux319-intro h1{font-size:clamp(40px,3.6vw,56px);max-width:650px;margin-top:12px}
 html #grPublico .ux319-intro-copy p{max-width:460px}
 html #grPublico .ux319-projects{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:22px}
 html #grPublico .ux319-home .ux319-project{display:flex;flex-direction:column;min-width:0}
 html #grPublico .ux319-home .ux319-project .ux319-project-photo{height:224px;min-height:224px;flex:none;aspect-ratio:auto}
 html #grPublico .ux319-home .ux319-project-photo-brand img{position:static;width:70%;height:160px;max-height:160px;object-fit:contain;transform:none}
 html #grPublico .ux319-home .ux319-project-body{padding:22px;display:flex;flex-direction:column;flex:1}
 html #grPublico .ux319-project-heading{min-height:64px;gap:10px}
 html #grPublico .ux319-project-heading h2{font-size:25px!important;line-height:1.15;letter-spacing:-.03em}
 html #grPublico .ux319-project-logo{width:60px;height:60px;max-width:60px}
 html #grPublico .ux319-project-body>p{font-size:14px;line-height:1.65;min-height:70px;margin:16px 0 20px}
 html #grPublico .ux319-project-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:auto;padding:16px 0;min-height:80px}
 html #grPublico .ux319-project-study .ux319-project-facts{grid-template-columns:1fr 1fr 1fr}
 html[data-tema] #grPublico .ux319-project-facts dd{font-size:18px}
 html #grPublico .ux319-project-study .ux319-project-facts dd{font-size:15px}
 html #grPublico .ux319-project-actions{display:flex;flex-direction:column;align-items:stretch;gap:6px;min-height:100px}
 html #grPublico .ux319-project-actions button{width:100%;justify-content:space-between}
 html #grPublico .ux319-numbers dl{grid-template-columns:repeat(4,minmax(0,1fr))}
 html #grPublico .ux319-about-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:64px}
 html #grPublico .ux319-home .ux319-about h2{font-size:38px}
 html #grPublico .ux318-gran-home .gr-wrap{width:calc(100% - 80px);max-width:1320px}
 html #grPublico .ux315-header-inner{max-width:1400px;margin:auto;padding:12px 40px}
 html #grPublico .ux315-brand .ux317-gran-logo{width:56px!important;height:56px!important}
 html #grPublico .ux318-gran-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);width:calc(100% - 80px);max-width:1320px;min-height:0;margin:20px auto 0;border-radius:22px;background:#153d30}
 html #grPublico .ux318-gran-hero::after{display:none}
 html #grPublico .ux318-gran-landscape{position:relative;inset:auto;grid-column:2;grid-row:1;z-index:0;align-self:stretch;width:100%;height:100%;min-height:480px;object-fit:contain;background:#e5eadd;animation:none}
 html #grPublico .ux318-gran-hero-inner{grid-column:1;grid-row:1;min-width:0;min-height:480px;max-width:none;width:100%;padding:40px;display:flex;align-items:center;margin:0}
 html #grPublico .ux318-gran-hero-copy{max-width:540px;min-width:0}
 html #grPublico .ux318-gran-hero h1{font-size:clamp(42px,4.1vw,62px);line-height:1.04;margin:18px 0 20px}
 html #grPublico .ux318-gran-hero p{font-size:15px;line-height:1.7;margin-bottom:24px}
 html #grPublico .ux318-gran-hero .ux318-image-credit{display:none}
 html #grPublico .ux318-actions{gap:10px}
 html #grPublico .ux318-actions .ux318-button{padding:13px 16px;gap:14px}
 html #grPublico .ux318-facts{width:calc(100% - 80px);max-width:1320px;padding:24px 0;gap:24px;grid-template-columns:1fr 1fr 1.4fr 1.2fr}
 html #grPublico .ux318-gran-home .ux318-section{padding:56px 0}
 html #grPublico .ux318-gran-home h2{font-size:clamp(32px,2.7vw,42px)}
 html #grPublico .ux318-section-heading p{font-size:15px;max-width:390px;line-height:1.65}
 html #grPublico .ux318-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
 html #grPublico .ux318-gallery-card img{height:auto;aspect-ratio:16/10;object-fit:contain}
 html #grPublico .ux318-steps{gap:24px;margin-top:32px}
 html #grPublico .ux318-steps article{padding:24px;border:1px solid var(--ux315-line);border-radius:16px;background:var(--ux315-card);display:flex;flex-direction:column}
 html #grPublico .ux318-steps p{font-size:15px;min-height:0;flex:1}
 html #grPublico .ux318-steps button{font-size:14px}
 html #grPublico .ux318-location-grid{grid-template-columns:minmax(0,1.8fr) minmax(300px,1fr);border-radius:18px}
 html #grPublico .ux318-location-copy{padding:32px}
 html #grPublico .ux318-location-copy h3{font-size:32px}
 html #grPublico .ux318-location-copy p{font-size:15px}
}
@media screen and (max-width:600px){
 html #grPublico .ux318-location-grid .gr-location-map-shell{min-height:360px}
 html #grPublico .ux318-location-grid :is(.gr-location-map,.gr-google-map-frame){height:360px;min-height:360px}
}

/* Leaflet tiles must keep the dimensions assigned by the map engine.
   Gallery minimum heights otherwise stretch the satellite below its boundary. */
html #grPublico .leaflet-container img.leaflet-tile,
html #appRoot .leaflet-container img.leaflet-tile{
 min-height:0!important;min-width:0!important;max-height:none!important;max-width:none!important;
 object-fit:fill!important;aspect-ratio:auto!important;border:0!important;border-radius:0!important;padding:0!important;margin:0!important;
}

/* UI33.6 — portfolio first. Keep original project imagery and compact navigation. */
@media screen{
html[data-tema] #grPublico .ux319-home{--u-radius:16px}
html #grPublico .ux319-home .ux319-container,html #grPublico .ux319-home .ux-home-topo-in{width:calc(100% - 80px);max-width:1200px;margin-left:auto;margin-right:auto;box-sizing:border-box}
html #grPublico .ux319-home .ux-home-topo-in{min-height:80px;padding:12px 0;gap:28px}
html #grPublico .ux319-home .ux-home-menu{gap:8px}
html #grPublico .ux319-home .ux-home-menu a{font-size:14px;padding:10px 12px}
html #grPublico .ux319-home .ux-home-menu .ux-cta{border-radius:8px}
html #grPublico .ux319-home .ux336-intro{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(260px,.75fr);gap:64px;align-items:end;padding:48px 0 36px;background:none;border-bottom:1px solid var(--ui-line)}
html #grPublico .ux319-home .ux336-intro h1{font-family:var(--ui-font);font-size:clamp(32px,4vw,52px);font-weight:600;line-height:1.1;letter-spacing:-.045em;margin:16px 0 0;color:var(--ui-text)}
html #grPublico .ux319-home .ux336-intro p{font-size:15px;line-height:1.7;color:var(--ui-muted);max-width:360px;margin:0 0 4px}
html #grPublico .ux319-home .ux319-eyebrow{font-size:10px;letter-spacing:.17em;font-weight:650}
html #grPublico .ux319-home .ux319-portfolio{padding:28px 0 56px;border:0}
html #grPublico .ux319-home .ux319-portfolio-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}
html #grPublico .ux319-home .ux319-portfolio-heading h2{font-size:23px;line-height:1.2;letter-spacing:-.025em;font-weight:600;margin:0}
html #grPublico .ux319-home .ux319-portfolio-heading>span{font-size:12px;color:var(--ui-muted)}
html #grPublico .ux319-home .ux319-projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;align-items:stretch}
html[data-tema] #grPublico .ux319-home .ux319-project{display:flex;flex-direction:column;min-width:0;border-radius:16px;overflow:hidden;border:1px solid var(--ui-line);background:var(--ui-surface)}
html #grPublico .ux319-home .ux319-project-photo{height:auto!important;min-height:0!important;aspect-ratio:1.66!important;flex:none;background:var(--ui-soft)}
html #grPublico .ux319-home .ux334-gallery{background:var(--ui-soft)}
html #grPublico .ux319-home .ux334-gallery .ux334-slide{width:100%;height:100%;min-height:0!important;max-height:none;object-fit:contain;transform:none!important}
html #grPublico .ux319-home .ux319-kind{font-size:9px;letter-spacing:.08em;max-width:calc(100% - 28px);white-space:normal;top:14px;left:14px;padding:7px 10px;border-radius:5px}
html #grPublico .ux319-home .ux319-photo-note{font-size:9px;padding:4px 7px}
html #grPublico .ux319-home .ux334-controls{right:14px;bottom:14px;box-shadow:none}
html #grPublico .ux319-home .ux319-project-body{display:flex;flex-direction:column;flex:1;padding:24px 26px}
html #grPublico .ux319-home .ux319-project-heading{min-height:0;display:flex;align-items:center;justify-content:space-between;gap:16px}
html #grPublico .ux319-home .ux319-project-heading h2{font-family:var(--ui-font);font-size:25px!important;line-height:1.2;letter-spacing:-.035em;font-weight:600;margin:7px 0 0}
html #grPublico .ux319-home .ux319-local{font-size:11px;color:var(--ui-muted);letter-spacing:.03em}
html #grPublico .ux319-home .ux319-project-logo{width:64px;height:56px;max-width:64px;object-fit:contain;flex:none}
html #grPublico .ux319-home .ux319-project-body>p{font-size:14px;line-height:1.7;margin:16px 0 20px;min-height:0;max-width:47ch}
html #grPublico .ux319-home .ux319-project-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));min-height:0;gap:20px;padding:18px 0;margin:0 0 18px;border-top:1px solid var(--ui-line);border-bottom:0}
html #grPublico .ux319-home .ux319-project-facts dt{font-size:11px;line-height:1.4;color:var(--ui-muted);margin:0 0 6px}
html[data-tema] #grPublico .ux319-home .ux319-project-facts dd{font-size:21px;line-height:1.2;font-weight:550;margin:0}
html #grPublico .ux319-home .ux319-project-actions{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;gap:10px;min-height:0;margin-top:auto}
html[data-tema] #grPublico .ux319-home .ux319-project-actions button{width:auto;min-height:44px;padding:12px 16px;border-radius:8px;font-size:13px;gap:18px;justify-content:space-between}
html #grPublico .ux319-home .ux319-project-actions .ux319-primary{flex:1}
html[data-tema] #grPublico .ux319-home .ux319-project.ux319-project-study{grid-column:1/-1;display:grid;grid-template-columns:minmax(220px,.65fr) minmax(0,1.35fr)}
html #grPublico .ux319-home .ux319-project-study .ux319-project-photo{height:100%!important;aspect-ratio:auto!important;display:grid;place-items:center;border-radius:0}
html #grPublico .ux319-home .ux319-project-study .ux319-project-photo img{position:static;inset:auto;transform:none;width:75%;height:auto;max-height:180px;min-height:0!important;object-fit:contain}
html #grPublico .ux319-home .ux319-project-study .ux319-project-facts{grid-template-columns:repeat(3,minmax(0,1fr));padding:12px 0;margin-bottom:12px}
html[data-tema] #grPublico .ux319-home .ux319-project-study .ux319-project-facts dd{font-size:16px}
html #grPublico .ux319-home .ux319-project-study .ux319-project-body>p{margin:12px 0;max-width:65ch}
html #grPublico .ux319-home .ux319-project-study .ux319-project-actions .ux319-primary{flex:none}
html #grPublico .ux319-home .ux319-numbers{padding:28px 0 36px;border-top:1px solid var(--ui-line);border-bottom:1px solid var(--ui-line);display:grid;grid-template-columns:1fr 2fr;gap:32px;align-items:center}
html #grPublico .ux319-home .ux319-numbers h2{font-size:22px;margin:0 0 8px;line-height:1.2}
html #grPublico .ux319-home .ux319-numbers p{font-size:13px;margin:0;color:var(--ui-muted)}
html #grPublico .ux319-home .ux319-numbers dl{grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin:0}
html #grPublico .ux319-home .ux319-numbers dd{font-size:27px;letter-spacing:-.035em;line-height:1.2}
html #grPublico .ux319-home .ux319-numbers dt{font-size:11px}
html #grPublico .ux319-home .ux319-about{padding:56px 0;background:transparent}
html #grPublico .ux319-home .ux319-about-grid{grid-template-columns:1fr 1.3fr;gap:56px;align-items:center}
html #grPublico .ux319-home .ux319-brand-image{margin:0;min-height:0;padding:24px;background:var(--ui-surface);border-radius:16px;border:1px solid var(--ui-line)}
html #grPublico .ux319-home .ux319-brand-image img{height:auto;min-height:0;max-height:160px;object-fit:contain;width:100%}
html #grPublico .ux319-home :is(.ux319-about,.ux319-help,.ux326-client-head) h2{font-size:clamp(25px,2.5vw,32px);line-height:1.2;letter-spacing:-.03em;margin:12px 0 16px}
html #grPublico .ux319-home .ux326-client-services{padding:36px;border:1px solid var(--ui-line);border-radius:16px;background:var(--ui-surface)}
html #grPublico .ux319-home .ux326-client-grid{gap:16px}
html #grPublico .ux319-home .ux326-client-grid article{padding:20px;border-radius:10px;box-shadow:none;background:var(--ui-bg)}
html #grPublico .ux319-home .ux319-help{padding:56px 0;gap:48px}
html #grPublico .ux319-home .ux319-footer{padding-top:36px;border-top:1px solid var(--ui-line)}
html #grPublico .ux319-home .ux319-footer-main{gap:40px;padding-bottom:30px}
html #grPublico .ux319-home .ux319-footer-brand img{width:174px;height:58px;object-fit:contain}
html #grPublico .ux319-home .ux319-footer-bottom{padding:18px 0;font-size:11px}
html[data-tema=escuro] #grPublico .ux319-home .ux-home-menu .ux-cta{color:var(--ui-on-accent)!important}
@media(max-width:1000px){
 html #grPublico .ux319-home .ux319-container,html #grPublico .ux319-home .ux-home-topo-in{width:calc(100% - 48px)}
 html #grPublico .ux319-home .ux336-intro{gap:32px;grid-template-columns:1.3fr 1fr}
 html #grPublico .ux319-home .ux319-numbers{grid-template-columns:1fr;gap:24px}
 html #grPublico .ux319-home .ux319-project-body{padding:20px}
 html #grPublico .ux319-home .ux319-project-heading h2{font-size:22px!important}
 html #grPublico .ux319-home .ux319-project-logo{width:50px;max-width:50px}
 html #grPublico .ux319-home .ux319-project-actions{align-items:stretch;flex-direction:column}
 html[data-tema] #grPublico .ux319-home .ux319-project.ux319-project-study{grid-template-columns:.8fr 1.2fr}
 html #grPublico .ux319-home .ux319-project-study .ux319-project-actions{flex-direction:row}
}
@media(max-width:700px){
 html #grPublico .ux319-home .ux319-container,html #grPublico .ux319-home .ux-home-topo-in{width:calc(100% - 32px)}
 html #grPublico .ux319-home .ux-home-topo-in{min-height:64px;padding:10px 0;gap:12px}
 html #grPublico .ux319-home .ux336-intro{grid-template-columns:1fr;gap:20px;padding:32px 0 28px}
 html #grPublico .ux319-home .ux336-intro h1{font-size:36px;margin-top:12px}
 html #grPublico .ux319-home .ux336-intro p{font-size:14px;max-width:38ch}
 html #grPublico .ux319-home .ux319-projects{grid-template-columns:1fr;gap:24px}
 html #grPublico .ux319-home .ux319-portfolio-heading{gap:12px;align-items:start}
 html #grPublico .ux319-home .ux319-portfolio-heading h2{font-size:21px}
 html #grPublico .ux319-home .ux319-portfolio-heading>span{font-size:10px;white-space:nowrap;padding-top:4px}
 html[data-tema] #grPublico .ux319-home .ux319-project.ux319-project-study{display:flex}
 html #grPublico .ux319-home .ux319-project-study .ux319-project-photo{height:200px!important}
 html #grPublico .ux319-home .ux319-project-study .ux319-project-photo img{max-height:140px;max-width:280px}
 html #grPublico .ux319-home .ux319-project-study .ux319-project-actions{display:block}
 html #grPublico .ux319-home .ux319-project-study .ux319-project-actions button{width:100%}
 html #grPublico .ux319-home .ux319-numbers dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
 html #grPublico .ux319-home .ux319-about-grid{grid-template-columns:1fr;gap:28px}
 html #grPublico .ux319-home .ux319-brand-image{padding:20px}
 html #grPublico .ux319-home .ux319-about{padding:40px 0}
 html #grPublico .ux319-home .ux326-client-services{padding:24px 20px}
 html #grPublico .ux319-home .ux326-client-head{display:block}
 html #grPublico .ux319-home .ux326-client-grid{grid-template-columns:1fr;gap:12px}
 html #grPublico .ux319-home .ux326-client-grid article{padding:16px}
 html #grPublico .ux319-home .ux319-help{grid-template-columns:1fr;padding:40px 0;gap:24px}
 html #grPublico .ux319-home .ux319-footer-main{grid-template-columns:1fr;gap:28px}
 html #grPublico .ux319-home .ux319-footer-bottom{gap:12px;flex-wrap:wrap}
}
@media(prefers-reduced-motion:no-preference){html #grPublico .ux319-home .ux334-gallery .ux334-slide{transition:opacity .8s ease!important}}
}
@media screen{html #grPublico .ux319-home .ux319-portfolio-heading{border-top:0!important;padding-top:0!important}}
/* UI36 portal review: consistent rhythm without touching map geometry or sales flows. */
@media screen {
 html #grPublico .ux318-gran-home .gr-wrap{width:calc(100% - 64px);max-width:1280px}
 html #grPublico .ux318-gran-hero{width:calc(100% - 64px);max-width:1280px;margin-inline:auto}
 html #grPublico .ux318-gran-home .ux318-section{padding-block:56px}
 html #grPublico .ux318-gran-home h2{font-size:clamp(30px,3vw,42px);line-height:1.15;text-wrap:balance}
 html #grPublico .ux318-section-heading{gap:28px;margin-bottom:28px}
 html #grPublico .ux318-section-heading>div{min-width:0}
 html #grPublico .ux318-gran-home .ux318-section-heading p{font-size:15px;line-height:1.65;max-width:36ch}
 html #grPublico .ux318-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
 html #grPublico .ux318-gallery-card img{height:auto;min-height:0;aspect-ratio:16/10;object-fit:contain;scale:1}
 html #grPublico .ux318-caption strong{font-size:23px;line-height:1.3}
 html #grPublico .ux318-caption small{font-size:10px;line-height:1.5;letter-spacing:.1em}
 html #grPublico .ux318-location-grid{grid-template-columns:minmax(0,1.65fr) minmax(280px,1fr)}
 html #grPublico .ux318-location-copy{min-width:0;padding:30px}
 html #grPublico .ux318-location-copy h3{font-size:32px;line-height:1.15}
 html #grPublico .ux318-steps{gap:24px;margin-top:28px}
 html #grPublico .ux318-steps article{min-width:0}
 html #grPublico .ux318-steps h3{font-size:25px;line-height:1.25}
 html #grPublico .ux318-steps p{font-size:15px;line-height:1.7;min-height:0}
 html #grPublico .ux318-video-grid{gap:40px}
 html #grPublico .ux318-facts{width:calc(100% - 64px);max-width:1280px;padding:24px 0;gap:20px}
 html #grPublico .ux318-facts>div{min-width:0}
 html #grPublico .ux318-facts strong{font-size:30px;white-space:normal}
 html #grPublico .ux318-facts div>span{font-size:12px;line-height:1.5}
 html #grPublico .ux315-footer{padding:44px 32px 24px}
 html #grPublico .ux315-footer-grid{max-width:1280px;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr) minmax(160px,.65fr);gap:40px}
 html #grPublico .ux315-footer-grid>div{min-width:0}
 html #grPublico .ux315-footer p{font-size:14px;line-height:1.65;max-width:38ch}
 html #grPublico .ux315-footer button{font-size:14px;line-height:1.5;white-space:normal}
 html #grPublico .ux315-footer-bottom{max-width:1280px;font-size:12px;line-height:1.6;flex-wrap:wrap}
 html #grPublico .ux318-footer-brand .ux318-enterprise-logo{max-width:100%;min-height:0;object-fit:contain}
 html #grPublico .ux318-brand-partners{gap:20px}
 html #grPublico .ux318-brand-partners>div{min-width:0;max-width:100%}
 html #grPublico .ux318-brand-partners img{max-width:100%;min-height:0;object-fit:contain}
 html #grPublico.ux-v320-alto-active .ab-intro{padding:30px 0;gap:20px}
 html #grPublico.ux-v320-alto-active .ab-intro>div{min-width:0}
 html #grPublico.ux-v320-alto-active .ab-intro h1{font-size:clamp(34px,4vw,50px);line-height:1.12;letter-spacing:-.035em}
 html #grPublico.ux-v320-alto-active .ab-lead{font-size:17px;line-height:1.65}
 html #grPublico.ux-v320-alto-active .ab-experience{gap:28px}
 html #grPublico.ux-v320-alto-active .ux-v320-media-main{border:1px solid var(--ab-line);border-radius:16px}
 html #grPublico.ux-v320-alto-active .ux-v320-media-main button{height:clamp(240px,30vw,360px)}
 html #grPublico.ux-v320-alto-active .ux-v320-media-main img{min-height:0;object-fit:contain}
 html #grPublico.ux-v320-alto-active .ux-v320-media-thumbs{justify-content:flex-start;gap:8px}
 html #grPublico.ux-v320-alto-active .ux315-sim-section{padding:36px!important;margin-top:36px!important}
 html #grPublico.ux-v320-alto-active .ux315-sim-section h2{font-size:clamp(30px,3.5vw,42px);line-height:1.13;max-width:680px}
 html #grPublico.ux-v320-alto-active .ux315-sim-section>div:first-child p{font-size:16px;line-height:1.65}
 html #grPublico.ux-v320-alto-active .ux-v320-selected{min-height:0;margin-bottom:18px}
 html #grPublico.ux-v320-alto-active .ux-v320-selected h3{font-size:26px;line-height:1.25}
}
@media screen and (min-width:761px) and (max-width:1099px){
 html #grPublico .ux318-gran-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);width:calc(100% - 64px);max-width:1280px;min-height:0;margin:20px auto 0;border-radius:20px;background:#153d30}
 html #grPublico .ux318-gran-hero::after{display:none}
 html #grPublico .ux318-gran-landscape{position:relative;inset:auto;grid-column:2;grid-row:1;z-index:0;width:100%;height:100%;min-height:420px;object-fit:contain;background:#e5eadd;animation:none}
 html #grPublico .ux318-gran-hero-inner{grid-column:1;grid-row:1;width:100%;min-height:420px;min-width:0;max-width:none;padding:32px 26px;display:flex;align-items:center;justify-content:center;margin:0}
 html #grPublico .ux318-gran-hero-copy{width:100%;min-width:0}
 html #grPublico .ux318-gran-hero h1{font-size:clamp(34px,4.3vw,46px);line-height:1.07;margin:16px 0}
 html #grPublico .ux318-gran-hero p{font-size:14px;line-height:1.65;margin-bottom:20px}
 html #grPublico .ux318-gran-hero .ux318-image-credit{display:none}
 html #grPublico .ux318-actions .ux318-button{font-size:13px;padding:12px 14px;gap:12px}
}
@media screen and (max-width:900px){
 html #grPublico .ux318-location-grid{grid-template-columns:minmax(0,1fr)}
 html #grPublico .ux318-facts{grid-template-columns:repeat(3,minmax(0,1fr))}
 html #grPublico .ux318-facts>button{grid-column:1/-1;text-align:left}
 html #grPublico .ux315-footer-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
 html #grPublico .ux315-executor{grid-column:1/-1}
}
@media screen and (max-width:760px){
 html #grPublico .ux318-gran-home .gr-wrap{width:calc(100% - 36px)}
 html #grPublico .ux318-gran-home .ux318-section{padding-block:40px}
 html #grPublico .ux318-gran-hero{display:flex;flex-direction:column;width:calc(100% - 24px);margin:12px auto 0;min-height:0;border-radius:18px;background:#153d30}
 html #grPublico .ux318-gran-hero::after{display:none}
 html #grPublico .ux318-gran-landscape{display:block;position:relative;inset:auto;z-index:0;width:100%;height:auto;min-height:0;aspect-ratio:1616/973;object-fit:contain;background:#e5eadd;animation:none}
 html #grPublico .ux318-gran-hero-inner{display:block;min-height:0;width:100%;padding:28px 24px 30px;margin:0}
 html #grPublico .ux318-gran-hero h1{font-size:clamp(34px,7.5vw,46px);line-height:1.08;margin:16px 0}
 html #grPublico .ux318-gran-hero p{font-size:15px;line-height:1.65;margin-bottom:22px;max-width:100%}
 html #grPublico .ux318-gran-hero .ux318-kicker{font-size:10px;letter-spacing:.1em}
 html #grPublico .ux318-gran-hero .ux318-image-credit{display:none}
 html #grPublico .ux318-actions{display:flex;flex-wrap:wrap;gap:10px}
 html #grPublico .ux318-actions .ux318-button{font-size:14px;flex:1 1 180px;padding:13px 16px;gap:12px}
 html #grPublico .ux318-facts{width:calc(100% - 36px);grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;padding:24px 0}
 html #grPublico .ux318-facts>div+div{padding-left:18px}
 html #grPublico .ux318-facts>div:nth-child(3){grid-column:1/-1;padding-left:0;border-left:0}
 html #grPublico .ux318-section-heading{align-items:flex-start;flex-direction:column;gap:16px;margin-bottom:24px}
 html #grPublico .ux318-gran-home .ux318-section-heading p{max-width:100%}
 html #grPublico .ux318-gallery-grid{grid-template-columns:minmax(0,1fr);gap:20px}
 html #grPublico .ux318-gallery-card img{aspect-ratio:auto;height:auto}
 html #grPublico .ux318-steps{grid-template-columns:minmax(0,1fr);gap:24px}
 html #grPublico .ux318-video-grid{grid-template-columns:minmax(0,1fr);gap:24px}
 html #grPublico .ux318-location-copy{padding:24px}
 html #grPublico .ux315-footer{padding:36px 20px 24px}
 html #grPublico .ux315-footer-grid{grid-template-columns:minmax(0,1fr);gap:24px}
 html #grPublico .ux315-executor{grid-column:auto}
 html #grPublico.ux-v320-alto-active .ab-intro{padding:24px 0;gap:14px}
 html #grPublico.ux-v320-alto-active .ab-stage{font-size:12px}
 html #grPublico.ux-v320-alto-active .ux315-sim-section{padding:24px 18px!important;margin-top:28px!important;border-radius:16px}
 html #grPublico.ux-v320-alto-active .ux315-sim-section h2{font-size:32px}
 html #grPublico.ux-v320-alto-active .ux-v320-media-main button{height:clamp(220px,62vw,360px)}
}
/* UI34 — focused work surfaces. Screen-only and scoped to the authenticated shells. */
@media screen {
  html #appRoot > .wrap {
    background: var(--ui-bg);
  }
  html #appRoot :is(.view, .page-heading, .grid-cards, .form-grid, .filters) {
    min-width: 0;
  }
  html #appRoot .page-heading {
    align-items: center !important;
    gap: 16px !important;
  }
  html #appRoot .page-heading :is(h1, h2) {
    font-size: clamp(25px, 2.4vw, 34px) !important;
    line-height: 1.2 !important;
    font-weight: 650;
    margin: 4px 0 8px;
  }
  html #appRoot .page-heading p {
    font-size: 14px;
    margin: 0;
    max-width: 70ch;
  }
  html #appRoot .eyebrow {
    font-size: 11px;
    line-height: 1.5;
    letter-spacing: .1em;
    color: var(--ui-muted) !important;
  }
  html #appRoot :is(.card, section.block, .quick-actions-panel, .live-activity-panel, .ux-visao, .param-info) {
    border-radius: 14px !important;
    box-shadow: none !important;
  }
  html #appRoot nav.tabs {
    gap: 3px !important;
  }
  html #appRoot nav.tabs button .nav-label {
    white-space: normal !important;
    line-height: 1.35 !important;
    text-overflow: clip !important;
  }
  html #appRoot nav.tabs .nav-caption {
    margin-top: 18px !important;
    margin-bottom: 6px !important;
  }
  html #appRoot header.top {
    border-radius: 14px !important;
    margin-bottom: 28px !important;
  }
  html #appRoot header.top .user-badge .btn {
    width: auto !important;
    min-height: 40px !important;
  }
  html #appRoot .dashboard-metrics {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 195px), 1fr)) !important;
    gap: 14px !important;
  }
  html #appRoot .dashboard-metrics .metric-card {
    min-height: 112px !important;
    padding: 20px !important;
  }
  html #appRoot .dashboard-metrics .metric-card :is(.label, .sub) {
    font-size: 13px;
    line-height: 1.5;
  }
  html #appRoot .quick-actions-panel {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 18px !important;
    padding: 24px !important;
    margin-top: 24px !important;
  }
  html #appRoot .quick-actions-copy h3 {
    font-size: 19px;
    line-height: 1.3;
    margin: 4px 0 6px;
  }
  html #appRoot .quick-actions-copy p {
    font-size: 14px;
    line-height: 1.6;
    margin: 0;
    max-width: 75ch;
  }
  html #appRoot .quick-actions-grid {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr)) !important;
    gap: 12px !important;
  }
  html #appRoot .quick-action {
    min-height: 110px;
    padding: 16px !important;
    text-align: left;
    border-radius: 10px !important;
    background: var(--ui-surface) !important;
  }
  html #appRoot .quick-action strong {
    display: block;
    font-size: 14px;
    line-height: 1.4;
    margin-bottom: 6px;
  }
  html #appRoot .quick-action span {
    display: block;
    font-size: 13px;
    line-height: 1.5;
  }
  html #appRoot .quick-action:hover {
    transform: none !important;
    background: var(--ui-soft) !important;
    box-shadow: none !important;
  }
  html #appRoot .vgv-hero {
    border-radius: 14px !important;
    box-shadow: none !important;
    background: var(--ui-surface) !important;
  }
  html #appRoot .vgv-main {
    padding: 26px !important;
  }
  html #appRoot .vgv-main > strong {
    font-size: clamp(30px, 3vw, 46px) !important;
    line-height: 1.2;
    overflow-wrap: anywhere;
  }
  html #appRoot .vgv-side {
    background: var(--ui-soft) !important;
  }
  html #appRoot .view:not(#view-contrato) .form-grid {
    gap: 20px;
  }
  html #appRoot .view:not(#view-contrato) .field {
    color: var(--ui-text);
    font-weight: 550;
    gap: 8px;
  }
  html #appRoot .view:not(#view-contrato) .field :is(input:not([type=checkbox]):not([type=radio]), select, textarea) {
    font-weight: 400;
    padding: 11px 12px;
    line-height: 1.5;
  }
  html #appRoot .filters {
    flex-wrap: wrap;
    gap: 12px;
    align-items: end;
  }
  html #appRoot .filters > :is(input, select) {
    flex: 1 1 170px;
    min-width: 0;
  }
  html #appRoot :is(.table-wrap, .table-shell, .audit-table-wrap) {
    border-radius: 10px;
    scrollbar-width: thin;
    scrollbar-color: var(--ui-line) transparent;
  }
  html #appRoot :is(#recentSalesTable, #salesTable, #planoTable, #recebTable, #usersTable, #auditTable, #dtRestTable, #dtRestHistoryTable) {
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scrollbar-width: thin;
  }
  html #appRoot :is(#recentSalesTable, #salesTable, #planoTable, #recebTable, #usersTable, #auditTable, #dtRestTable, #dtRestHistoryTable) :is(th, td) {
    padding: 12px 14px;
    font-size: 13px;
    line-height: 1.5;
  }

  /* The customer portal gives actions space and preserves complete navigation labels. */
  html #grCliente .gr-client-shell {
    max-width: 1200px;
    padding-inline: 24px;
  }
  html #grCliente .gr-top > .gr-wrap {
    height: auto;
    min-height: 76px;
    padding-block: 12px;
    flex-wrap: wrap;
  }
  html #grCliente .gr-menu {
    max-width: 100%;
    gap: 4px;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scrollbar-width: thin;
  }
  html #grCliente .gr-menu button {
    flex: 0 0 auto;
    min-height: 44px;
    padding: 10px 12px;
    font-size: 13px;
    line-height: 1.4;
  }
  html #grCliente .gr-client-brand-copy b {
    font-size: 14px;
    line-height: 1.4;
  }
  html #grCliente .gr-client-brand-copy small {
    font-size: 10px;
    line-height: 1.5;
  }
  html #grCliente .ux-client-hero,
  html #grCliente .ux-client-hero-content {
    min-height: 320px;
  }
  html #grCliente .ux-client-hero-content {
    padding: 30px;
  }
  html #grCliente .ux-client-hero h2 {
    font-size: clamp(28px, 3.4vw, 40px);
    line-height: 1.15;
  }
  html #grCliente .ux-welcome {
    align-items: center;
    flex-wrap: wrap;
    gap: 14px;
    margin: 28px 0 20px;
  }
  html #grCliente .ux-welcome-status {
    white-space: normal;
    font-size: 12px;
    line-height: 1.5;
  }
  html #grCliente .ux-client-shortcuts {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr));
    gap: 14px;
  }
  html #grCliente .ux-shortcut {
    min-height: 136px;
    padding: 20px;
  }
  html #grCliente .ux-shortcut small {
    font-size: 13px;
    line-height: 1.5;
  }
  html #grCliente .ux-journey-card {
    padding: 24px;
  }
  html #grCliente .ux-journey-head {
    align-items: start;
    flex-wrap: wrap;
  }
  html #grCliente .ux-journey-step b {
    white-space: normal;
    overflow: visible;
    line-height: 1.5;
    text-overflow: clip;
  }
  html #grCliente .ux-journey-step small {
    display: block;
    margin-top: 4px;
    line-height: 1.5;
  }
  html #grCliente .gr-rot {
    font-size: 11px;
    line-height: 1.5;
    letter-spacing: .08em;
  }
  html #grCliente .gr-linha {
    gap: 12px;
    flex-wrap: wrap;
  }
  html #grCliente .gr-linha > strong {
    overflow-wrap: anywhere;
  }
}
@media screen and (min-width: 721px) and (max-width: 980px) {
  html #appRoot nav.tabs {
    width: 192px !important;
    padding: 16px 10px !important;
  }
  html #appRoot > .wrap {
    padding-left: 212px !important;
    padding-right: 18px !important;
  }
  html #appRoot nav.tabs button {
    justify-content: flex-start !important;
    padding: 10px !important;
  }
  html #appRoot nav.tabs button .nav-label {
    display: block !important;
    font-size: 12px !important;
  }
  html #appRoot nav.tabs .sidebar-brand {
    justify-content: flex-start !important;
    padding-inline: 10px !important;
  }
  html #appRoot nav.tabs .sidebar-brand > div {
    display: block !important;
  }
  html #appRoot .view:not(#view-contrato) .form-grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}
@media screen and (min-width: 721px) and (max-width: 1200px) {
  html #grCliente .gr-top > .gr-wrap {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
  }
  html #grCliente .gr-top .gr-espaco {
    display: none;
  }
  html #grCliente .gr-menu {
    width: 100%;
  }
}
@media screen and (max-width: 720px) {
  html #appRoot header.top {
    margin-bottom: 22px !important;
  }
  html #appRoot .quick-actions-panel {
    padding: 18px !important;
  }
  html #appRoot .quick-actions-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  html #appRoot .quick-action {
    padding: 14px !important;
    min-height: 116px;
  }
  html #appRoot nav.tabs {
    scroll-padding-inline: 12px;
  }
  html #grCliente .gr-client-shell {
    padding-inline: 16px;
    padding-bottom: calc(100px + env(safe-area-inset-bottom));
  }
  html #grCliente .gr-top > .gr-wrap {
    min-height: 64px;
    padding: 10px 16px;
  }
  html #grCliente .gr-menu {
    left: 0;
    right: 0;
    bottom: 0;
    max-width: 100%;
    justify-content: flex-start;
    padding: 8px 10px calc(8px + env(safe-area-inset-bottom));
    border-radius: 14px 14px 0 0;
    background: var(--ui-surface) !important;
    color: var(--ui-text);
    gap: 6px;
  }
  html #grCliente .gr-menu button {
    min-width: 88px;
    flex: 0 0 auto;
    min-height: 48px;
    padding: 10px 14px;
    font-size: 13px;
    color: var(--ui-text) !important;
  }
  html #grCliente .gr-menu button.on {
    background: var(--ui-accent) !important;
    color: var(--ui-on-accent) !important;
  }
  html #grCliente .gr-menu .gr-lg {
    display: inline;
  }
  html #grCliente .gr-menu .gr-sm {
    display: none;
  }
  html #grCliente .ux-client-hero {
    margin-inline: 0;
  }
  html #grCliente .ux-client-hero-content {
    padding: 24px;
  }
  html #grCliente .ux-client-hero-actions .gr-btn {
    width: auto;
    flex: 1 1 140px;
    min-height: 44px;
  }
  html #grCliente .ux-client-shortcuts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
  html #grCliente .ux-shortcut {
    min-height: 132px;
    padding: 16px;
  }
  html #grCliente .ux-shortcut:last-child {
    grid-column: 1 / -1;
  }
  html #grCliente .ux-journey-card {
    padding: 20px;
  }
  html #grCliente .ux-journey-step {
    min-width: 150px;
  }
}
@media screen and (max-width: 380px) {
  html #appRoot .quick-actions-grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  html #appRoot .quick-action {
    min-height: 90px;
  }
}

@media screen and (max-width: 1100px) {
  html #appRoot :is(#recentSalesTable, #salesTable, #planoTable, #recebTable, #usersTable, #auditTable, #dtRestTable, #dtRestHistoryTable) {
    display: block;
  }
}

/* The old dark-card button rule also colored the password toggle on light cards. */
@media screen {
  html #authOverlay #authCardLogin #loginPasswordToggle {
    flex: 0 0 auto;
    min-width: 72px;
    min-height: 44px;
    color: var(--auth-text) !important;
    background: var(--auth-soft) !important;
    border: 1px solid var(--auth-line) !important;
    font-size: 13px !important;
    font-weight: 650 !important;
    opacity: 1;
  }
  html #authOverlay #authCardLogin #loginPasswordToggle:hover {
    color: var(--auth-text) !important;
    background: var(--auth-line) !important;
    border-color: var(--auth-line) !important;
  }
  html #authOverlay #loginSubmit {
    color: #fff !important;
  }
  html #authOverlay .auth-showcase h1 {
    font-size: clamp(32px, 3vw, 42px) !important;
    line-height: 1.15 !important;
    letter-spacing: -.035em !important;
    max-width: 19ch;
  }
  html #authOverlay .auth-showcase-copy > p {
    max-width: 46ch !important;
    font-size: 15px !important;
    line-height: 1.7 !important;
  }
}
@media screen and (min-width: 721px) {
  html #authOverlay {
    grid-template-columns: minmax(0, 55fr) minmax(0, 45fr) !important;
    overflow-y: auto;
  }
  html #authOverlay .auth-showcase {
    padding: clamp(32px, 4vw, 64px);
    justify-content: center;
    gap: 48px;
  }
  html #authOverlay .auth-showcase-copy,
  html #authOverlay .auth-visual {
    width: 100%;
    max-width: 560px;
    margin-inline: auto;
  }
  html #authOverlay .auth-card {
    box-sizing: border-box;
    width: min(480px, calc(100% - 48px)) !important;
    max-width: 480px !important;
    padding: clamp(26px, 3vw, 40px) !important;
    margin-block: 32px;
    border: 1px solid var(--auth-line) !important;
    box-shadow: 0 8px 28px #102c230a !important;
  }
}
@media screen and (min-width: 721px) and (max-width: 900px) {
  html #authOverlay {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
  }
  html #authOverlay .auth-showcase {
    padding: 28px;
  }
  html #authOverlay .auth-card {
    width: calc(100% - 28px) !important;
    padding: 24px !important;
  }
  html #authOverlay .auth-login-links {
    align-items: flex-start;
    flex-direction: column;
    gap: 4px;
  }
}
@media screen and (max-width: 720px) {
  html #authOverlay .auth-card {
    margin: 24px auto !important;
    max-width: 460px !important;
    border: 1px solid var(--auth-line) !important;
    border-radius: 16px !important;
  }
}
/* UI34 authentication: resolve legacy dark-logo and field/button palette overrides. */
@media screen {
  html #authOverlay .auth-card img.auth-card-logo {
    content: normal !important;
    filter: none !important;
    opacity: 1 !important;
    display: block !important;
    background: #fff !important;
    object-fit: contain;
    border-radius: 8px;
    padding: 8px;
  }
  html #authOverlay .auth-card input {
    color: var(--auth-text) !important;
    -webkit-text-fill-color: var(--auth-text) !important;
    caret-color: var(--auth-text);
  }
  html #authOverlay .auth-card input::placeholder {
    color: var(--auth-muted) !important;
    -webkit-text-fill-color: var(--auth-muted) !important;
    opacity: 1 !important;
  }
  html #authOverlay .auth-card .field > input {
    background: var(--auth-field) !important;
  }
  html #authOverlay .auth-password-wrap input {
    background: transparent !important;
  }
  html #authOverlay :is(#loginSubmit, #setupSubmit) {
    background: #176b50 !important;
    border-color: #176b50 !important;
    color: #fff !important;
  }
  html #authOverlay :is(#loginSubmit, #setupSubmit):hover {
    background: #125e46 !important;
    border-color: #125e46 !important;
    color: #fff !important;
  }
  html[data-tema=escuro] #authOverlay :is(#loginSubmit, #setupSubmit) {
    background: #a3ddbd !important;
    border-color: #a3ddbd !important;
    color: #102d22 !important;
  }
  html[data-tema=escuro] #authOverlay :is(#loginSubmit, #setupSubmit):hover {
    background: #b7e7cc !important;
    border-color: #b7e7cc !important;
    color: #102d22 !important;
  }
}

/* Full-width photographic opening, following the user's Brasilidade reference. */
@media screen{
 html #grPublico .ux319-home .ux337-showcase{position:relative;width:100%;max-width:none;margin:0;padding:0;background:#153c2f;color:#fff;overflow:hidden;isolation:isolate;touch-action:pan-y}
 html #grPublico .ux337-sr{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
 html #grPublico .ux337-stage{display:grid;position:relative}
 html #grPublico .ux337-slide{grid-area:1/1;position:relative;display:grid;align-items:end;min-height:620px;height:min(760px,calc(100svh - 80px));min-width:0;opacity:0;visibility:hidden;pointer-events:none;overflow:hidden}
 html #grPublico .ux337-slide.is-current{opacity:1;visibility:visible;pointer-events:auto}
 html #grPublico .ux337-slide>.ux337-photo{display:block!important;position:absolute!important;inset:0!important;width:100%!important;height:100%!important;min-height:0!important;min-width:0!important;max-width:none!important;max-height:none!important;aspect-ratio:auto!important;object-fit:cover!important;object-position:center!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;filter:none!important;z-index:0}
 html #grPublico .ux337-slide:after{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(0deg,#092c2033,transparent 40%)}
 html #grPublico .ux337-inner{position:relative;z-index:2;width:calc(100% - 80px);max-width:1200px;margin:0 auto;padding-top:70px;box-sizing:border-box;display:flex;align-items:end}
 html #grPublico .ux337-panel{width:350px;max-width:100%;padding:30px 32px 24px;box-sizing:border-box;background:#24553fea;color:#fff;backdrop-filter:blur(4px)}
 html #grPublico .ux337-place{font-size:10px;line-height:1.4;letter-spacing:.13em;text-transform:uppercase;color:#e0ebd9}
 html #grPublico .ux337-brand{margin:22px 0 24px}
 html #grPublico .ux337-brand>img{display:block;width:132px;height:60px;max-width:132px;max-height:60px;min-height:0!important;object-fit:contain;background:#f9f8f0;padding:5px 9px;border-radius:4px;margin:0 0 16px;filter:none!important;content:normal!important;box-sizing:border-box}
 html #grPublico .ux337-brand h2{font-family:Georgia,'Times New Roman',serif;color:#fff!important;font-weight:400;font-size:31px!important;line-height:1.1;letter-spacing:-.025em;margin:0;max-width:280px;text-wrap:balance}
 html #grPublico .ux337-panel h3{font-family:var(--ui-font);font-size:22px!important;font-weight:600;line-height:1.25;color:#f4edd7!important;letter-spacing:-.025em;margin:0 0 18px;text-wrap:balance}
 html #grPublico .ux337-panel p{font-size:15px!important;line-height:1.6!important;color:#e2ede4!important;margin:0 0 24px!important;max-width:none}
 html #grPublico .ux337-link{display:flex;width:100%;align-items:center;justify-content:space-between;gap:18px;padding:15px 0;min-height:48px;border:0;border-top:1px solid #ffffff50;border-radius:0;background:transparent;color:white;font:inherit;font-size:13px;text-align:left;cursor:pointer}
 html #grPublico .ux337-link span{font-size:32px;line-height:1;font-weight:300}
 html #grPublico .ux337-link:hover{color:#f3da9f}
 html #grPublico .ux337-panel>small{display:block;font-size:9px;color:#d8e6dc;margin-top:12px;line-height:1.4}
 html #grPublico .ux337-controls{position:absolute;z-index:4;bottom:26px;right:max(40px,calc((100% - 1200px)/2));display:flex;align-items:center;gap:6px;padding:8px 10px;border:1px solid #ffffff55;border-radius:30px;background:#113629de;color:#fff}
 html #grPublico .ux337-controls>button{display:grid;place-items:center;flex:none;width:40px;height:40px;min-width:40px;min-height:40px;padding:0;border:1px solid #ffffff35;border-radius:50%;background:transparent;color:#fff;font-size:24px;font-family:var(--ui-font);line-height:1;cursor:pointer}
 html #grPublico .ux337-controls>button:last-child{font-size:17px}
 html #grPublico .ux337-controls>button:hover{background:#ffffff24}
 html #grPublico .ux337-dots{display:flex;gap:0;align-items:center}
 html #grPublico .ux337-dots>button{display:grid;place-items:center;width:26px;height:40px;min-width:26px;padding:0;border:0;background:transparent;border-radius:4px;cursor:pointer}
 html #grPublico .ux337-dots span{width:7px;height:7px;border-radius:50%;background:#ffffff80}
 html #grPublico .ux337-dots [aria-pressed=true] span{width:9px;height:9px;background:#efcf8b;outline:1px solid #efcf8b;outline-offset:3px}
 html #grPublico .ux337-count{font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap;padding:0 9px;letter-spacing:.03em}
 html #grPublico .ux337-showcase button:focus-visible{outline:3px solid #ffe4a4!important;outline-offset:3px!important}
 html #grPublico .ux319-home .ux337-showcase+.ux319-portfolio{padding-top:46px}
 @media(min-width:1600px){html #grPublico .ux337-panel{width:380px;padding:36px 38px 28px}html #grPublico .ux337-brand h2{font-size:35px!important}html #grPublico .ux337-panel h3{font-size:25px!important}html #grPublico .ux337-panel p{font-size:17px!important}}
 @media(max-width:1000px){html #grPublico .ux337-inner{width:calc(100% - 48px)}html #grPublico .ux337-panel{width:320px;padding:26px}html #grPublico .ux337-controls{right:24px;bottom:22px}html #grPublico .ux337-count{display:none}}
 @media(max-width:700px){
  html #grPublico .ux337-slide{height:auto;min-height:0;display:block;overflow:hidden}
  html #grPublico .ux337-slide>.ux337-photo{height:300px!important;object-position:center!important}
  html #grPublico .ux337-slide:after{height:300px;bottom:auto}
  html #grPublico .ux337-inner{display:block;width:calc(100% - 32px);padding-top:256px;margin:0 auto}
  html #grPublico .ux337-panel{width:100%;max-width:none;padding:24px;background:#24553ff5}
  html #grPublico .ux337-brand{display:flex;align-items:center;gap:16px;margin:16px 0 20px}
  html #grPublico .ux337-brand>img{width:90px;max-width:90px;height:60px;flex:none;margin:0}
  html #grPublico .ux337-brand h2{font-size:26px!important;max-width:none}
  html #grPublico .ux337-panel h3{font-size:23px!important;max-width:28ch;margin-bottom:14px;text-wrap:pretty}
  html #grPublico .ux337-panel p{font-size:14px!important;margin-bottom:18px!important;max-width:44ch}
  html #grPublico .ux337-link{min-height:44px;padding:12px 0}
  html #grPublico .ux337-panel>small{margin-top:6px}
  html #grPublico .ux337-controls{position:relative;bottom:auto;right:auto;justify-content:center;padding:16px;gap:8px;border:0;border-radius:0;background:#153c2f}
  html #grPublico .ux337-controls>button{width:44px;height:44px;min-width:44px;min-height:44px}
  html #grPublico .ux337-dots>button{width:28px;height:44px}
  html #grPublico .ux319-home .ux337-showcase+.ux319-portfolio{padding-top:32px}
 }
 @media(prefers-reduced-motion:no-preference){
  html #grPublico .ux319-home .ux337-slide{transition:opacity 1s ease,visibility 1s!important}
  html #grPublico .ux319-home .ux337-slide.is-current>.ux337-photo{animation:ux337Camera 7s linear both!important}
  html #grPublico .ux319-home .ux337-showcase[data-running=false] .ux337-photo{animation-play-state:paused!important}
 }
}
@keyframes ux337Camera{from{transform:scale(1)}to{transform:scale(1.055)}}

/* iPad: bound photography separately from copy; never enlarge portrait artwork into a banner. */
@media screen and (min-width:1001px) and (max-width:1366px){
 html #grPublico .ux337-slide{height:560px;min-height:560px}
 html #grPublico .ux337-inner{padding-top:24px}
 html #grPublico .ux337-panel{width:330px;padding:24px}
 html #grPublico .ux337-brand{margin:16px 0 18px}
 html #grPublico .ux337-brand>img{height:50px;width:110px;max-width:110px;margin-bottom:12px}
 html #grPublico .ux337-brand h2{font-size:28px!important}
 html #grPublico .ux337-panel h3{font-size:20px!important;margin-bottom:16px}
 html #grPublico .ux337-panel p{font-size:14px!important;line-height:1.5!important;margin-bottom:18px!important}
 html #grPublico .ux337-panel>small{margin-top:8px}
}
@media screen and (max-width:1000px){
 html #grPublico .ux337-stage{background:#163e30}
 html #grPublico .ux337-slide{display:block;height:auto;min-height:0;--ux337-photo-height:clamp(230px,48vw,400px)}
 html #grPublico .ux337-slide>.ux337-photo{height:var(--ux337-photo-height)!important;object-fit:contain!important;object-position:center!important;background:#163e30}
 html #grPublico .ux337-slide:after{height:var(--ux337-photo-height);bottom:auto;background:none}
 html #grPublico .ux337-inner{display:block;width:calc(100% - 32px);padding-top:calc(var(--ux337-photo-height) - 24px);margin:0 auto}
 html #grPublico .ux337-panel{width:100%;max-width:none;padding:24px;background:#24553ff5;backdrop-filter:none}
 html #grPublico .ux337-controls{position:relative;bottom:auto;right:auto;justify-content:center;padding:14px 16px;gap:8px;border:0;border-radius:0;background:#163e30}
 html #grPublico .ux337-controls>button{width:44px;height:44px;min-width:44px;min-height:44px}
 html #grPublico .ux337-dots>button{width:28px;height:44px}
 /* Keep tablet framing stable with a much smaller camera movement. */
 html #grPublico .ux319-home .ux337-slide.is-current>.ux337-photo{animation:none!important;transform:none}
}
@media screen and (min-width:701px) and (max-width:1000px){
 html #grPublico .ux337-panel{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);column-gap:28px;align-items:start;padding:22px 26px}
 html #grPublico .ux337-place{grid-column:1;grid-row:1;margin-bottom:12px}
 html #grPublico .ux337-brand{grid-column:1;grid-row:2/4;margin:0}
 html #grPublico .ux337-brand>img{width:104px;max-width:104px;height:50px;margin-bottom:12px}
 html #grPublico .ux337-brand h2{font-size:27px!important;max-width:230px}
 html #grPublico .ux337-panel h3{grid-column:2;grid-row:1;font-size:22px!important;margin:0 0 14px}
 html #grPublico .ux337-panel p{grid-column:2;grid-row:2;font-size:14px!important;line-height:1.5!important;margin:0 0 14px!important}
 html #grPublico .ux337-link{grid-column:2;grid-row:3;min-height:44px;padding:10px 0}
 html #grPublico .ux337-panel>small{grid-column:1;grid-row:4;margin-top:8px}
}
@media screen and (max-width:700px){
 html #grPublico .ux337-inner{padding-top:calc(var(--ux337-photo-height) - 16px)}
 html #grPublico .ux337-panel{padding:20px}
 html #grPublico .ux337-brand{margin:12px 0 16px}
 html #grPublico .ux337-brand>img{height:50px;width:80px;max-width:80px}
 html #grPublico .ux337-brand h2{font-size:24px!important}
 html #grPublico .ux337-panel h3{font-size:21px!important;margin-bottom:12px}
 html #grPublico .ux337-panel p{font-size:14px!important;line-height:1.5!important;margin-bottom:14px!important}
}

@media screen and (max-width:1000px) and (prefers-reduced-motion:no-preference){html #grPublico .ux319-home .ux337-slide.is-current>.ux337-photo{animation:ux337TabletCamera 7s ease-out both!important}}
@keyframes ux337TabletCamera{from{transform:scale(1)}to{transform:scale(1.018)}}

/* Public portfolio: project-owned perspectives, never shared with other portals. */
@media screen {
 html #grPublico .ux338-perspectives{padding:36px 0 56px}
 html #grPublico .ux338-heading{display:flex;align-items:end;justify-content:space-between;gap:28px;margin-bottom:24px}
 html #grPublico .ux338-heading h2{font-size:clamp(25px,3vw,38px);line-height:1.15;letter-spacing:-.035em;margin:12px 0 0}
 html #grPublico .ux338-heading p{max-width:360px;font-size:15px;line-height:1.7;color:var(--ui-muted);margin:0}
 html #grPublico .ux338-scenes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
 html #grPublico .ux338-scenes figure{min-width:0;margin:0;border:1px solid var(--ui-line);border-radius:16px;overflow:hidden;background:var(--ui-surface)}
 html #grPublico .ux338-scenes img{display:block;width:100%;height:auto;min-height:0;aspect-ratio:1672/941;object-fit:contain}
 html #grPublico .ux338-scenes figcaption{padding:16px;font-size:14px;color:var(--ui-text)}
 html #grPublico .ux338-actions{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:24px}
 html #grPublico .ux338-actions small{color:var(--ui-muted);line-height:1.5}
 html #grPublico .ux338-actions button{min-height:44px}
 html #grPublico .ux338-actions button:focus-visible{outline:2px solid var(--ui-text);outline-offset:4px}
}
@media screen and (max-width:700px){
 html #grPublico .ux338-heading,html #grPublico .ux338-actions{align-items:start;flex-direction:column}
 html #grPublico .ux338-scenes{grid-template-columns:1fr}
 html #grPublico .ux338-heading p{max-width:none}
 html #grPublico .ux338-actions button{width:100%;justify-content:space-between}
}
@media screen and (prefers-reduced-motion:no-preference){
 html #grPublico .ux338-actions button{transition:transform .18s ease,box-shadow .18s ease}
 html #grPublico .ux338-actions button:hover{transform:translateY(-2px);box-shadow:0 6px 16px #0002}
}

/* assets/css/urbanix-showcase.css */
/* Public portfolio: one set of surfaces, separate branding for Monte Sião. */
@media screen {
  html[data-tema] #grPublico .ux319-home {
    --ux319-card:var(--ui-surface);--ux319-soft:var(--ui-soft);
    --ux319-ink:var(--ui-text);--ux319-muted:var(--ui-muted);--ux319-line:var(--ui-line);
  }
  html[data-tema] #grPublico .ux319-home .ux-home-menu .ux-home-cliente {
    background:var(--ui-accent);color:var(--ui-on-accent)!important;
  }
  html[data-tema] #grPublico .ux319-home .ux319-primary {
    background:var(--ui-accent);border-color:var(--ui-accent);color:var(--ui-on-accent);
  }
  html #grPublico .ux319-home .ux319-project[data-ux-featured] {
    border-top:3px solid #002b60;
  }
  html[data-tema=escuro] #grPublico .ux319-home .ux319-project[data-ux-featured] {
    border-top-color:#95c5ff;
  }
  html #grPublico .ux319-home [data-ux-commercial="4"] .ux319-project-logo {
    width:118px;max-width:118px;height:58px;padding:8px;background:#fff;
  }
  html #grPublico .ux319-home [data-ux-commercial="4"] .ux319-kind {
    background:#f2f6fc;color:#002b60;border-color:#fff9;
  }
  html[data-tema] #grPublico .ux319-home [data-ux-commercial="4"] .ux319-primary {
    color:#fff;background:#002b60;border-color:#002b60;
  }
  html[data-tema=escuro] #grPublico .ux319-home [data-ux-commercial="4"] .ux319-primary {
    color:#082849;background:#a9cfff;border-color:#a9cfff;
  }
  html #grPublico .ux319-home [data-ux-commercial="4"] .ux334-controls {
    background:#062d54f2;
  }
  html #grPublico .ux337-slide[data-showcase-project="4"] .ux337-panel {
    background:#002b60f5;
  }
  html #grPublico .ux337-slide[data-showcase-project="4"] .ux337-panel :is(p,.ux337-place,small) {
    color:#e0ecf8!important;
  }
  html #grPublico .ux337-slide[data-showcase-project="4"] .ux337-panel h3 {
    color:#fff!important;
  }
  html #grPublico .ux337-slide[data-showcase-project="4"] .ux337-brand>img {
    width:154px;max-width:154px;background:#fff;
  }
  html #grPublico .ux319-home .ux319-project-actions :is(a,button) {
    min-height:46px;width:100%;box-sizing:border-box;line-height:1.5;
  }
  html #grPublico .ux319-home .ux319-project-facts dt {line-height:1.6}
  html #grPublico .ux319-home .ux319-project-facts dd {font-variant-numeric:tabular-nums;letter-spacing:-.02em}
  html #grPublico .ux337-controls {max-width:calc(100% - 32px)}
  html #grPublico .ux337-controls>button {min-width:44px;min-height:44px}
  html #grPublico .ux337-dots {flex-wrap:wrap;justify-content:center}
  html #grPublico .ux337-dots>button {min-height:44px}
}
@media screen and (max-width:700px) {
  html #grPublico .ux337-controls {
    max-width:100%;display:grid;grid-template-columns:repeat(3,44px);gap:4px 12px;
    justify-content:center;padding:10px 16px 16px;
  }
  html #grPublico .ux337-dots {grid-column:1/-1;grid-row:1}
  html #grPublico .ux337-dots>button {width:24px;min-width:24px}
  html #grPublico .ux337-count {display:none}
  html #grPublico .ux337-slide[data-showcase-project="4"] .ux337-brand>img {
    width:100px;max-width:100px;padding:8px;
  }
  html #grPublico .ux319-home [data-ux-commercial="4"] .ux319-project-logo {
    width:90px;max-width:90px;
  }
  html #grPublico .ux319-home .ux319-project-actions {flex-direction:column;align-items:stretch}
  html #grPublico .ux319-home .ux319-project-facts {gap:16px}
}
@media screen and (max-width:380px) {
  html #grPublico .ux337-brand {gap:12px}
  html #grPublico .ux337-slide[data-showcase-project="4"] .ux337-brand>img {width:78px;max-width:78px}
  html #grPublico .ux319-home [data-ux-commercial="4"] .ux319-project-logo {width:76px;max-width:76px}
}

/* assets/css/document-viewer.css */
.ux-document-viewer{padding:0;border:1px solid #cdd9e4;border-radius:16px;width:min(1160px,calc(100vw - 32px));height:calc(100vh - 32px);height:calc(100dvh - 32px);max-width:none;max-height:none;color:#18314c;background:#edf1f5;box-shadow:0 20px 90px #00172d55;overflow:hidden}
.ux-document-viewer::backdrop{background:#061c35b8}
.ux-document-shell{display:flex;flex-direction:column;height:100%;min-height:0}
.ux-document-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;background:#fff;border-bottom:1px solid #d4dee8;flex-shrink:0}
.ux-document-toolbar h2{margin:0;font:600 17px/1.35 system-ui,sans-serif;overflow-wrap:anywhere}
.ux-document-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap}
.ux-document-actions button,.ux-document-actions a{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:8px 14px;border:1px solid #becddd;border-radius:9px;background:#fff;color:#163652;text-decoration:none;font:600 14px/1.2 system-ui,sans-serif;cursor:pointer}
.ux-document-actions [hidden]{display:none!important}
.ux-document-actions [data-document-close]{background:#002b60;color:#fff;border-color:#002b60}
.ux-document-actions [data-document-close] span[aria-hidden]{font:400 28px/1 system-ui,sans-serif}
.ux-document-actions :focus-visible{outline:3px solid #32a5ee;outline-offset:3px}
.ux-document-help{font:13px/1.5 system-ui,sans-serif;margin:0;padding:8px 16px;color:#425a6e;flex-shrink:0}
.ux-document-frame{display:block;border:0;width:100%;flex:1;min-height:0;background:#fff}
.ux-document-frame[hidden],.ux-document-reader[hidden],.ux-document-reader [hidden]{display:none!important}
.ux-document-reader{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
.ux-document-paging{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;padding:8px 12px;background:#fff;border-bottom:1px solid #d4dee8;flex-shrink:0}
.ux-document-paging button{min-height:44px;border:1px solid #becddd;border-radius:9px;background:#fff;color:#163652;padding:8px 12px;font:600 14px/1.2 system-ui,sans-serif;cursor:pointer}
.ux-document-paging button:disabled{opacity:.45;cursor:default}
.ux-document-paging button:focus-visible,.ux-document-page-image:focus-visible{outline:3px solid #32a5ee;outline-offset:-3px}
.ux-document-paging span{font:600 14px/1.4 system-ui,sans-serif;min-width:110px;text-align:center}
.ux-document-page-image{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:12px;background:#dce4eb}
.ux-document-page-image img{display:block;width:100%;max-width:1600px;height:auto;margin:0 auto;background:#fff;box-shadow:0 3px 16px #18314c24}
.ux-document-reader.is-zoomed .ux-document-page-image img{width:1800px;max-width:none;margin:0}
html[data-tema="escuro"] .ux-document-viewer{background:#0c192b;color:#edf5ff;border-color:#35495f}
html[data-tema="escuro"] .ux-document-toolbar{background:#13243a;border-color:#35495f}
html[data-tema="escuro"] .ux-document-help{color:#c1d0e0}
html[data-tema="escuro"] .ux-document-actions button,html[data-tema="escuro"] .ux-document-actions a{background:#203853;color:#fff;border-color:#526d8b}
html[data-tema="escuro"] .ux-document-paging{background:#13243a;border-color:#35495f}
html[data-tema="escuro"] .ux-document-paging button{background:#203853;color:#fff;border-color:#526d8b}
html[data-tema="escuro"] .ux-document-page-image{background:#0c192b}
@media(max-width:600px){.ux-document-viewer{width:100%;height:100vh;height:100dvh;border-radius:0;border:0;margin:0}.ux-document-toolbar{gap:8px;flex-wrap:wrap;padding:calc(8px + env(safe-area-inset-top)) 12px 8px}.ux-document-toolbar h2{font-size:15px;flex:1;min-width:120px}.ux-document-actions{gap:6px}.ux-document-actions button,.ux-document-actions a{font-size:12px;padding:8px 10px}.ux-document-back{display:none}.ux-document-help{padding:6px 12px;font-size:12px}}

/* assets/css/typography.css */
/* Shared screen typography. Local OFL font; no third-party font requests.
   Keep CAD SVG units and document/print metrics under their original rules. */
@font-face{
  font-family:"Inter";
  src:url("/assets/fonts/inter-variable.woff2") format("woff2");
  font-style:normal;
  font-weight:100 900;
  font-display:swap;
}
@media screen{
  :root{
    --ui-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
    --sans:var(--ui-font);
    --mono:ui-monospace,"SFMono-Regular",Consolas,"Liberation Mono",monospace;
  }
  html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
  html body,html :is(#appRoot,#authOverlay,#grPublico,#grCliente,.va),html body.va-page{
    font-family:var(--ui-font);font-size:16px;line-height:1.6;font-optical-sizing:auto;
  }
  html :is(#appRoot,#authOverlay,#grPublico,#grCliente,.va-page,.ms-page) :is(button,input,select,textarea){font-family:var(--ui-font)}
  html :is(#appRoot,#authOverlay,#grPublico,#grCliente,.va-page,.ms-page) :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=button]):not([type=submit]),select,textarea){font-size:16px}
  html :is(#appRoot,#authOverlay,#grCliente) :is(.page-heading h1,.page-heading h2,.block>h2,.block>h3,.card .value,.stat strong,.auth-card h2){font-family:var(--ui-font);font-weight:600;letter-spacing:-.025em;line-height:1.25}
  html :is(#appRoot,#grCliente) :is(.btn,.gr-btn,.field,.ux-det-campo){font-size:14px;line-height:1.5}
  html :is(#appRoot,#grCliente) :is(.muted,.gr-sub,.gr-card p){line-height:1.6}
  html :is(#appRoot,#grCliente) :is(.mono,.sync,.gr-mono){font-family:var(--mono)}
  html :is(#appRoot,#grCliente,#grPublico) :is(table,.price,.stat,.ux-kpi,.gr-plan-grid){font-variant-numeric:tabular-nums}
  html #appRoot :is(.ux-hab-form label,.ux-hab-form-row label){font-size:14px;line-height:1.5}
  html #appRoot :is(.ux-hab-kpis span,.ux-hab-kpis small,.ux-hab-badge,.ux-hab-et,.ux-hab-pill,.ux-hab-tip,.ux-hab-hint,.ux-hab-param,.ux-lead-tempo,.ux-lead-origem,.ux-lead-perda){font-size:12px;line-height:1.55}
  html #appRoot :is(.ux-hab-note,.ux-hab-parc,.ux-hab-msg,.ux-hab-plano-res,.ux-hab-table){font-size:13px;line-height:1.6}
  html #appRoot .ux-hab-table :is(th,td){font-size:13px}
  html #appRoot .eyebrow{font-size:12px;line-height:1.55;letter-spacing:.08em}
  html #appRoot :is(.card,.metric-card) :is(.label,.sub){font-size:13px!important;line-height:1.55}
  html #grCliente :is(.gr-client-brand-copy small,.gr-rot,.ux-client-kicker,.ux-video-kicker,.ux-video-copy small,.ux-gallery-caption,.ux-welcome-status,.ux-journey-step small){font-size:12px;line-height:1.55}

  /* Public brand headings remain Georgia; body text and controls share Inter. */
  html #grPublico :is(.ux319-home,.ux318-gran-home,.ux-sim-guided){font-family:var(--ui-font)}
  html #grPublico .ux319-home .ux319-eyebrow{font-size:12px;line-height:1.55;letter-spacing:.08em}
  html #grPublico :is(.ux318-button,.ux319-primary,.ux319-text-button,.ux319-help-links button){font-family:var(--ui-font);font-size:14px;line-height:1.5}
  html #grPublico :is(.ux318-kicker,.ux318-fine,.ux318-caption p,.ux337-place,.ux337-panel>small,.ux319-builder strong){font-size:12px;line-height:1.6;letter-spacing:.03em}
  html #grPublico .ux-sim-guided :is(.ux-sim-status,.ux-sim-faixa-badge,.ux-sim-optional,.ux-sim-home-options button small,.ux-sim-home-fixed span,.ux-sim-home-fixed small,.ux-sim-enquadramento span,.ux-sim-enquadramento small,.ux-sim-advanced summary small,.ux-sim-comparar>summary small){font-size:12px;line-height:1.55}
  html #grPublico .ux-sim-guided :is(.ux-sim-result-hero span,.ux-sim-result-hero small,.ux-sim-card dt,.ux-sim-income-check span,.ux-sim-income-check small,.ux-sim-alerts strong,.ux-sim-alerts li,.ux-sim-next li,.ux-sim-nota,.ux-sim-rule summary,.ux-sim-rule-body p,.ux-sim-result-empty p){font-size:13px;line-height:1.6}
  html #grPublico .ux-sim-guided :is(.ux-sim-campos label,.ux-sim-home-options button span,.ux-sim-breakdown h6,.ux-sim-next strong){font-size:14px;line-height:1.5}
  html #grPublico .ux-sim-guided .ux-sim-campos label{font-size:14px!important}

  /* Monte Sião: readable labels/captions without changing plan lettering. */
  html .ms-page :is(h1,h2,h3){font-family:var(--ui-font)}
  html .ms-page :is(.hero h1,.section-heading h2,.intro h2){letter-spacing:-.035em}
  html .ms-page :is(.hero-intro p,.intro-details>p,.section-heading>p,.home-type>p,.execution-copy>p,.ebook-copy>p:not(.eyebrow),.contact-inner p:not(.eyebrow)){font-size:15px;line-height:1.75}
  html .ms-page :is(.eyebrow,.facts span,.hero-image figcaption,.residence-photo figcaption,.gallery-caption,.gallery-category,.media-caption,.map-legend,.map-note,.map-gesture-hint,.download-link,.lot-kind,.lot-area span,.footer-brand span,.site-footer>p,.site-footer>a,.ebook-art span){font-size:12px;line-height:1.65}
  html .ms-page .eyebrow{letter-spacing:.12em}
  html .ms-page :is(.button,.text-link,.main-nav,.header-contact,.gallery-filters button,.purchase-options a,.lot-panel label){font-size:14px;line-height:1.5}
  html .ms-page :is(.lot-panel #lot-hint,.consultation,.execution-copy .execution-address,.ms-help,.ms-check,.ms-data-use>p,.ms-status,.ms-rate,.ms-purchase-note,.ms-summary-empty>p,.mh-note,.mh-caption,.mh-warnings,.mh-warnings li,.mh-bottom-note,.mh-source-links){font-size:13px;line-height:1.65}
  html .ms-page .ebook-copy .ebook-note{font-size:13px!important;line-height:1.65}
  html .ms-page :is(.mh-house small,.mh-field small,.mh-rate-summary small){font-size:13px;line-height:1.65}
  html .ms-page :is(.ms-field>label,.ms-field>span,.mh-field>label,.mh-field>span,.ms-totals dt,.mh-totals dt,.ms-choices>label,.mh-check,.ms-review-totals dt){font-size:14px;line-height:1.5}
  html .ms-page :is(.ms-step,.ms-summary-label,.ms-schedule>summary,.ms-data-use>summary,.ms-protocol span,.ms-access>label,.mh-optional,.mh-status,.mh-schedule>summary,.mh-adjustments>summary,.mh-lines dt){font-size:12px;line-height:1.6}
  html .ms-page :is(.ms-table-scroll table,.mh-table-scroll table){font-size:12px;line-height:1.6}
  html .ms-page :is(.ms-totals,.ms-review-totals,.mh-totals,.mh-lines,.ms-table-scroll,.mh-table-scroll){font-variant-numeric:tabular-nums}
  html .ms-page :is(.ms-field input,.mh-field input,.lot-panel select){font-family:var(--ui-font);font-size:16px}

  /* Vista Alegre: both the public page and the embedded study viewer. */
  html .va :is(.va-facts span,.va-facts small,.va-legend,.va-map-badge span,.va-roadmap span,.va-viewer-stats span,.va-hero-card-head span,.va-hero-card-foot,.va-status-pill,.va-chip,.va-kicker){font-size:12px;line-height:1.55}
  html .va :is(.va-notice p,.va-viewer-head p,.va-validation li,.va-toolbar label,.va-info dt,.va-info dd,.va-info p){font-size:14px;line-height:1.6}
  html .va :is(.va-table th,.va-table td){font-size:12px;line-height:1.5}
  html .va .va-section-head>p{font-size:15px;line-height:1.65}
  html .va .va-hero-note{font-size:13px!important;line-height:1.6}
  html .va-top .va-brand small{font-size:12px;line-height:1.4}

  /* The install surface follows the app, including mobile reading sizes. */
  html #ux-pwa-actions,html #ux-pwa-dialog,html #ux-pwa-dialog :is(h2,button){font-family:var(--ui-font)}
  html #ux-pwa-actions{font-size:14px}
  html #ux-pwa-dialog{font-size:15px;line-height:1.65}
  html #ux-pwa-dialog .ux-pwa-note,html #ux-pwa-dialog #ux-pwa-status{font-size:13px!important;line-height:1.6}
  @media(max-width:600px){
    /* Central's nested grids must shrink with the 16px form controls. */
    html #appRoot #view-central .ux-emp-grade{grid-template-columns:minmax(0,1fr)}
    html #appRoot #view-central :is(.ux-emp-cartao,.ux-emp-form,.ux-emp-form label){min-width:0;overflow-wrap:anywhere}
    html #appRoot #view-central .ux-emp-form-linha{grid-template-columns:minmax(0,1fr) 76px;min-width:0}
    html #appRoot #view-central .ux-emp-form :is(input,select){min-width:0;width:100%;max-width:100%;box-sizing:border-box}
    html .ms-page .map-toolbar{flex-wrap:wrap;gap:10px;font-size:12px}
    html .ms-page .hero-image figcaption{flex-wrap:wrap;gap:6px}
    html .ms-page :is(.ms-field-row,.mh-field-row){min-width:0}
    html .ms-page .site-footer>a{white-space:normal;overflow-wrap:anywhere}
    html #grPublico .ux-sim-guided .ux-sim-result-head{flex-wrap:wrap}
  }
}
