/* ===================================================================
   v50-styles.css - 20 blocos CSS do V50 escopados em #v50-base-shell
   Fonte: solos_v50.html (md5 834083d36a50d42a1febbf5388d57513)
   Gerado pela Fase 2 Passo 3.2 da migracao. NAO EDITAR DIRETAMENTE.
   Para mudancas: editar solos_v50.html, validar visualmente, reextrair
   via /tmp/build_v50_styles.py.

   DEPENDENCIAS DO ADAPTER (a implementar no Passo 3.3):

   1. body.v50-active — classe sentinela controla regras de viewport
      (overflow/height/scroll/position). Adapter adiciona em
      mount/resume, remove em pause/unmount. Regras dependentes:
      ver `body.v50-active` neste arquivo (~3 ocorrencias minimum).

   2. Espelhamento body.classList → #v50-base-shell.classList — regras
      do tipo body.classe X foram transformadas em
      #v50-base-shell.classe X. Adapter precisa MutationObserver no
      body.classList que espelha as classes relevantes no shell
      enquanto V50 esta montado (~15 regras dependem disso). Lista de
      classes a espelhar: derivar de `grep '#v50-base-shell\.' neste
      arquivo`.

   Sem esses 2 mecanismos, V50 vai renderizar mas comportamentos
   condicionais (modo diagrama, plantas-open, study-cta visible, etc.)
   nao vao ativar.
   =================================================================== */


/* ===================================================================
   BLOCO 1 — anonimo base CSS (V50 13-1905)
   =================================================================== */

  #v50-base-shell {
    --bg: #f4f4f0;
    --bg-2: #e8e8e2;
    --ink: #1a1a17;
    --ink-2: #4a4a44;
    --ink-3: #8a8a82;
    --line: #d4d4cc;
    --glass: rgba(255,255,255,0.55);
    --glass-stroke: rgba(255,255,255,0.8);
    --accent: #c3ea4f;   /* lime Solos */
    --accent-ink: #2d3a0f;
    --danger: #ff4444;
    --envelope: rgba(255,68,68,0.14);
    --envelope-edge: #ff4444;
  }

  #v50-base-shell, #v50-base-shell * { box-sizing: border-box; margin:0; padding:0; }
  body.v50-active { height:100%; width:100%; overflow:hidden; }
  #v50-base-shell {
    font-family: 'Jost', sans-serif;
    background: var(--bg);
    color: var(--ink);
    -webkit-font-smoothing: antialiased;
  }

  #v50-base-shell #app {
    position: fixed;
    inset: 0;
    display: grid;
    grid-template-columns: 360px 1fr 340px;
  }

  /* ===== PAINEL LATERAL ===== */
#v50-base-shell #panel {
    background: rgba(250, 249, 245, 0.65);
    backdrop-filter: blur(40px) saturate(180%);
    -webkit-backdrop-filter: blur(40px) saturate(180%);
    border-right: 1px solid rgba(255,255,255,0.4);
    box-shadow: inset 1px 0 0 rgba(255,255,255,0.5), 2px 0 16px rgba(0,0,0,0.03);
    padding: 24px 22px 32px;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--line) transparent;
  }
  #v50-base-shell #panel::-webkit-scrollbar { width:6px; }
  #v50-base-shell #panel::-webkit-scrollbar-thumb { background: var(--line); border-radius: 3px; }

  /* Seção avançada colapsável */
#v50-base-shell .advanced-section {
    margin-top: 8px;
  }
  #v50-base-shell .advanced-section > summary {
    cursor: pointer;
    user-select: none;
    list-style: none;
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
  #v50-base-shell .advanced-section > summary::-webkit-details-marker { display:none; }
  #v50-base-shell .advanced-section .caret {
    font-size: 10px;
    color: var(--ink-2);
    transition: transform 0.2s;
  }
  #v50-base-shell .advanced-section[open] .caret {
    transform: rotate(90deg);
  }

  /* Details colapsável inline (dentro de seções) */
#v50-base-shell .inner-advanced {
    margin-top: 14px;
    padding: 10px 12px;
    background: rgba(0,0,0,0.03);
    border-radius: 8px;
  }
  #v50-base-shell .inner-advanced > summary {
    cursor: pointer;
    user-select: none;
    list-style: none;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    color: var(--ink-2);
    font-weight: 500;
  }
  #v50-base-shell .inner-advanced > summary::-webkit-details-marker { display:none; }
  #v50-base-shell .inner-advanced .caret {
    font-size: 10px;
    color: var(--ink-3);
    transition: transform 0.2s;
  }
  #v50-base-shell .inner-advanced[open] > summary .caret {
    transform: rotate(90deg);
  }
  #v50-base-shell .inner-advanced[open] > summary {
    margin-bottom: 10px;
  }

  /* ===== PAINEL DIREITO (Dashboard de Incentivos) ===== */
#v50-base-shell #panel-right {
    background: rgba(250, 249, 245, 0.65);
    backdrop-filter: blur(40px) saturate(180%);
    -webkit-backdrop-filter: blur(40px) saturate(180%);
    border-left: 1px solid rgba(255,255,255,0.4);
    box-shadow: inset -1px 0 0 rgba(255,255,255,0.5), -2px 0 16px rgba(0,0,0,0.03);
    padding: 24px 20px 32px;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--line) transparent;
  }
  #v50-base-shell #panel-right::-webkit-scrollbar { width:6px; }
  #v50-base-shell #panel-right::-webkit-scrollbar-thumb { background: var(--line); border-radius: 3px; }

  #v50-base-shell .dash-title {
    font-family: 'Jost', sans-serif;
    font-size: 18px;
    font-weight: 600;
    color: var(--ink-1);
    margin: 0 0 4px;
    letter-spacing: -0.02em;
  }
  #v50-base-shell .dash-subtitle {
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    color: var(--ink-3);
    margin-bottom: 18px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
  }

  #v50-base-shell .dash-section {
    margin-bottom: 18px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--line);
  }

  /* ===== Padrão chips (cards de tipologia) ===== */
#v50-base-shell .padrao-grid {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;   /* [jul/2026] compacto: 3×2 (era 2×3) */
    gap: 6px;
  }
  #v50-base-shell .padrao-chip {
    background: rgba(255,255,255,0.55);
    border: 1px solid rgba(0,0,0,0.06);
    border-radius: 9px;
    padding: 6px 8px;                      /* [jul/2026] ~metade da altura (era 10px 12px) */
    cursor: pointer;
    transition: all 0.15s ease;
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
  }
  #v50-base-shell .padrao-chip:hover {
    background: rgba(255,255,255,0.8);
    border-color: rgba(0,0,0,0.12);
    transform: translateY(-1px);
  }
  #v50-base-shell .padrao-chip.active {
    background: rgba(255,255,255,0.95);
    border: 1.5px solid rgba(99,153,34,0.5);
    box-shadow: 0 1px 8px rgba(99,153,34,0.12);
  }
  #v50-base-shell .padrao-chip.active .padrao-name { color: #27500a; }
  #v50-base-shell .padrao-name {
    font-family: 'Jost', sans-serif;
    font-size: 12px;                 /* [jul/2026] compacto (era 14) */
    font-weight: 600;
    color: var(--ink-1);
    margin-bottom: 1px;
    line-height: 1.15;
  }
  #v50-base-shell .padrao-range {
    font-family: 'Jost', sans-serif;
    font-size: 9px;                  /* [jul/2026] compacto (era 11) */
    color: var(--ink-3);
    margin-bottom: 4px;
    line-height: 1.1;
  }
  #v50-base-shell .padrao-fs {
    display: inline-block;
    font-family: 'JetBrains Mono', ui-monospace, monospace;  /* [jul/2026] Fs em mono */
    font-size: 8px;                  /* [jul/2026] compacto (era 9.5) */
    font-weight: 500;
    padding: 1px 5px;
    border-radius: 6px;
    background: rgba(250, 199, 117, 0.3);
    color: #633806;
    letter-spacing: 0.01em;
  }
  #v50-base-shell .padrao-chip[data-padrao="medio"] .padrao-fs {
    background: rgba(250, 199, 117, 0.3);
    color: #633806;
  }
  #v50-base-shell .padrao-chip[data-padrao="alto"] .padrao-fs, #v50-base-shell .padrao-chip[data-padrao="luxo"] .padrao-fs {
    background: rgba(247, 193, 193, 0.5);
    color: #791F1F;
  }
  #v50-base-shell .padrao-chip[data-padrao="his"] .padrao-fs {
    background: rgba(195, 234, 79, 0.3);
    color: #27500a;
  }
  #v50-base-shell .area-alvo-fs {
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    color: var(--ink-3);
    margin-top: 6px;
  }

  /* ===== Pavimentos: input grande + botões ± ===== */
#v50-base-shell .pavs-status {
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    padding: 3px 10px;
    border-radius: 12px;
    background: rgba(195, 234, 79, 0.3);
    color: #27500a;
    font-weight: 500;
  }
  #v50-base-shell .pavs-status.warning {
    background: rgba(250, 199, 117, 0.4);
    color: #633806;
  }
  #v50-base-shell .pavs-status.error {
    background: rgba(247, 193, 193, 0.5);
    color: #791F1F;
  }
  #v50-base-shell .pavs-controls {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 6px;
    margin-top: 10px;
  }
  #v50-base-shell .pavs-btn {
    background: rgba(255,255,255,0.7);
    border: 1px solid rgba(0,0,0,0.08);
    border-radius: 8px;
    padding: 8px 0;
    font-family: 'Jost', sans-serif;
    font-size: 13px;
    font-weight: 500;
    color: var(--ink-1);
    cursor: pointer;
    transition: all 0.12s ease;
  }
  #v50-base-shell .pavs-btn:hover {
    background: rgba(255,255,255,0.95);
    border-color: rgba(0,0,0,0.18);
  }
  #v50-base-shell .pavs-btn:active {
    transform: scale(0.96);
    background: rgba(195, 234, 79, 0.3);
  }
  #v50-base-shell .dash-section-title {
    font-family: 'Jost', sans-serif;
    font-size: 9px;
    color: var(--ink-3);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin-bottom: 10px;
  }

  /* ===== Glassmorphing card genérico ===== */
#v50-base-shell .glass-card {
    background: rgba(255, 255, 255, 0.45);
    backdrop-filter: blur(20px) saturate(160%);
    -webkit-backdrop-filter: blur(20px) saturate(160%);
    border: 1px solid rgba(255, 255, 255, 0.6);
    box-shadow:
      0 1px 3px rgba(0, 0, 0, 0.04),
      0 8px 24px rgba(0, 0, 0, 0.04),
      inset 0 1px 0 rgba(255, 255, 255, 0.7);
    border-radius: 12px;
  }

  /* ===== VGV Hero (card destaque grande, estilo Imagem 2) ===== */
#v50-base-shell .vgv-hero {
    margin: 0 0 18px;
    padding: 16px 18px;
  }
  #v50-base-shell .vgv-hero-label {
    font-family: 'Jost', sans-serif;
    font-size: 9px;
    color: var(--ink-3);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    margin-bottom: 4px;
  }
  #v50-base-shell .vgv-hero-amount {
    font-family: 'Jost', sans-serif;
    font-size: 32px;
    font-weight: 700;
    color: var(--ink-1);
    line-height: 1.1;
    letter-spacing: -0.02em;
    margin-bottom: 4px;
  }
  #v50-base-shell .vgv-hero-meta {
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    color: var(--ink-3);
    margin-bottom: 12px;
  }
  #v50-base-shell .vgv-hero-meta .vgv-hero-sep { margin: 0 4px; }
  #v50-base-shell .vgv-hero-ticket {
    padding-top: 12px;
    border-top: 1px solid rgba(0,0,0,0.06);
    margin-top: 4px;
  }
  #v50-base-shell .vgv-ticket-label {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 6px;
  }
  #v50-base-shell .vgv-ticket-label > span:first-child {
    font-family: 'Jost', sans-serif;
    font-size: 8.5px;
    color: var(--ink-3);
    text-transform: uppercase;
    letter-spacing: 0.1em;
  }
  #v50-base-shell .vgv-ticket-val {
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    font-weight: 600;
    color: var(--ink-1);
  }
  #v50-base-shell .vgv-ticket-val.lime { color: #639922; }
  #v50-base-shell .vgv-ticket-slider {
    width: 100%;
    margin: 0;
  }

  /* ===== Produto Estimado (Imagem 3) ===== */
#v50-base-shell .produto-estimado {
    padding: 14px 16px;
    border-bottom: none;
  }
  #v50-base-shell .produto-formula {
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    color: var(--ink-3);
    margin-bottom: 12px;
    line-height: 1.4;
  }
  #v50-base-shell .produto-grid {
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  #v50-base-shell .produto-card {
    background: rgba(255, 255, 255, 0.55);
    border: 1px solid rgba(0,0,0,0.05);
    border-radius: 8px;
    padding: 8px 10px;
  }
  #v50-base-shell .produto-card-label {
    font-family: 'Jost', sans-serif;
    font-size: 8.5px;
    color: var(--ink-3);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-bottom: 2px;
  }
  #v50-base-shell .produto-card-val {
    font-family: 'Jost', sans-serif;
    font-size: 17px;
    font-weight: 600;
    color: var(--ink-1);
    line-height: 1.1;
  }
  #v50-base-shell .produto-card-val.lime { color: var(--lime, #639922); }
  #v50-base-shell .produto-card-sub {
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    color: var(--ink-3);
    margin-top: 2px;
  }
  #v50-base-shell .produto-result {
    background: rgba(195, 234, 79, 0.18);
    border: 1px solid rgba(99, 153, 34, 0.25);
  }
  #v50-base-shell .produto-op {
    text-align: center;
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    font-weight: 500;
    color: var(--ink-3);
    line-height: 1;
    margin: 2px 0;
  }
  #v50-base-shell .produto-status {
    margin-top: 10px;
    padding: 8px 10px;
    background: rgba(195, 234, 79, 0.15);
    border-radius: 6px;
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    color: #27500a;
    display: flex;
    align-items: center;
    gap: 6px;
  }
  #v50-base-shell .produto-status.error {
    background: rgba(226, 75, 74, 0.12);
    color: #791F1F;
  }

  /* ===== Memorial de cálculo (passo-a-passo da divisão da torre) ===== */
#v50-base-shell .memorial-calc {
    padding: 14px 16px;
    border-bottom: none;
  }
  #v50-base-shell .memorial-line {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    color: var(--ink-2);
  }
  #v50-base-shell .memorial-num {
    background: rgba(255,255,255,0.55);
    padding: 4px 9px;
    border-radius: 5px;
    border: 1px solid rgba(0,0,0,0.05);
  }
  #v50-base-shell .memorial-num strong {
    color: var(--ink-1);
    font-weight: 600;
  }
  #v50-base-shell .memorial-op {
    font-family: 'Jost', sans-serif;
    color: var(--ink-3);
    font-weight: 500;
  }
  #v50-base-shell .memorial-result {
    background: rgba(195, 234, 79, 0.18);
    border-color: rgba(99, 153, 34, 0.25);
  }
  #v50-base-shell .memorial-result strong { color: #27500a; }
  #v50-base-shell .memorial-sub {
    font-family: 'Jost', sans-serif;
    font-size: 9.5px;
    color: var(--ink-3);
    margin-top: 4px;
    margin-left: 2px;
  }
  #v50-base-shell .memorial-resumo {
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid rgba(0,0,0,0.06);
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    color: var(--ink-2);
  }
  #v50-base-shell .memorial-resumo strong {
    color: var(--ink-1);
    font-weight: 600;
    font-size: 13px;
  }

  /* Linha de incentivo: toggle + label + 2 colunas (Proj / Real) */
#v50-base-shell .inc-row {
    display: grid;
    grid-template-columns: 22px 1fr auto;
    gap: 8px;
    align-items: center;
    padding: 8px 0;
    border-bottom: 1px dashed rgba(0,0,0,0.08);
  }
  #v50-base-shell .inc-row:last-child { border-bottom: none; }
  #v50-base-shell .inc-toggle {
    appearance: none;
    width: 18px; height: 18px;
    border: 1.5px solid var(--ink-3);
    border-radius: 4px;
    cursor: pointer;
    position: relative;
    transition: all 0.15s;
  }
  #v50-base-shell .inc-toggle:checked {
    background: var(--lime, #c3ea4f);
    border-color: var(--lime, #c3ea4f);
  }
  #v50-base-shell .inc-toggle:checked::after {
    content: '✓';
    position: absolute;
    top: -2px; left: 2px;
    font-size: 14px;
    color: #2d3a0f;
    font-weight: bold;
  }
  #v50-base-shell .inc-label {
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    color: var(--ink-1);
    font-weight: 500;
  }
  #v50-base-shell .inc-values {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    line-height: 1.35;
  }
  #v50-base-shell .inc-proj { color: var(--ink-3); }
  #v50-base-shell .inc-real { color: var(--ink-1); font-weight: 600; }
  #v50-base-shell .inc-real.zero { color: var(--ink-3); font-weight: 400; }
  #v50-base-shell .inc-warn {
    margin-top: 2px;
    font-family: 'Jost', sans-serif;
    font-size: 8px;
    color: #d97706;
    text-align: right;
    line-height: 1.2;
    letter-spacing: 0.02em;
  }

  #v50-base-shell .dash-stat {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 6px 0;
    font-family: 'Jost', sans-serif;
    font-size: 11px;
  }
  #v50-base-shell .dash-stat-label { color: var(--ink-3); }
  #v50-base-shell .dash-stat-value { color: var(--ink-1); font-weight: 500; }
  #v50-base-shell .dash-stat-value.big {
    font-family: 'Jost', sans-serif;
    font-size: 22px;
    font-weight: 600;
  }

  #v50-base-shell .brand {
    display: flex;
    align-items: baseline;
    gap: 10px;
    margin-bottom: 6px;
  }
  #v50-base-shell .brand h1 {
    font-family: 'Jost', sans-serif;
    font-weight: 800;
    font-size: 22px;
    letter-spacing: -0.02em;
  }
  #v50-base-shell .brand h1 sup { font-size: 10px; font-weight: 500; opacity: 0.5; }
  #v50-base-shell .brand .ver {
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    color: var(--ink-3);
    letter-spacing: 0.06em;
  }
  #v50-base-shell .subtitle {
    font-family: 'Jost', sans-serif;
    font-size: 10.5px;
    color: var(--ink-3);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    margin-bottom: 28px;
    line-height: 1.6;
  }

  #v50-base-shell .section {
    margin-bottom: 24px;
    padding-bottom: 22px;
    border-bottom: 1px dashed var(--line);
  }
  #v50-base-shell .section:last-child { border-bottom: none; }

  #v50-base-shell .section-title {
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    color: var(--ink-3);
    text-transform: uppercase;
    letter-spacing: 0.15em;
    margin-bottom: 14px;
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
  #v50-base-shell .section-title .hint {
    text-transform: none;
    letter-spacing: 0;
    font-size: 10px;
    color: var(--ink-3);
  }

  /* Inputs / controls */
#v50-base-shell .field {
    margin-bottom: 14px;
  }
  #v50-base-shell .field label {
    display: block;
    font-family: 'Jost', sans-serif;
    font-size: 10.5px;
    color: var(--ink-2);
    margin-bottom: 6px;
  }
  #v50-base-shell .field .row {
    display: flex;
    align-items: baseline;
    gap: 10px;
  }
  #v50-base-shell .field input[type="number"] {
    flex: 1;
    border: none;
    background: transparent;
    border-bottom: 1.5px solid var(--ink);
    padding: 4px 0 6px;
    font-family: 'Jost', sans-serif;
    font-size: 18px;
    font-weight: 600;
    color: var(--ink);
    outline: none;
    transition: border-color .15s;
  }
  #v50-base-shell .field input[type="number"]:focus { border-color: var(--accent-ink); }
  #v50-base-shell .field .unit {
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    color: var(--ink-3);
  }

  /* Estilo padrão de todos os sliders do painel */
#v50-base-shell #panel input[type="range"], #v50-base-shell .field input[type="range"] {
    width: 100%;
    margin-top: 8px;
    accent-color: var(--accent);
    -webkit-appearance: none;
    appearance: none;
    height: 6px;
    background: rgba(0,0,0,0.08);
    border-radius: 3px;
    outline: none;
  }
  /* WebKit (Chrome/Safari) */
#v50-base-shell #panel input[type="range"]::-webkit-slider-thumb, #v50-base-shell .field input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: var(--accent);
    border: 2px solid var(--accent-ink);
    cursor: grab;
    transition: transform 0.15s, box-shadow 0.15s;
    box-shadow: 0 2px 6px rgba(0,0,0,0.12);
  }
  #v50-base-shell #panel input[type="range"]::-webkit-slider-thumb:hover, #v50-base-shell .field input[type="range"]::-webkit-slider-thumb:hover {
    transform: scale(1.15);
    box-shadow: 0 3px 10px rgba(0,0,0,0.18);
  }
  #v50-base-shell #panel input[type="range"]::-webkit-slider-thumb:active, #v50-base-shell .field input[type="range"]::-webkit-slider-thumb:active {
    cursor: grabbing;
  }
  /* Firefox */
#v50-base-shell #panel input[type="range"]::-moz-range-thumb, #v50-base-shell .field input[type="range"]::-moz-range-thumb {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: var(--accent);
    border: 2px solid var(--accent-ink);
    cursor: grab;
    box-shadow: 0 2px 6px rgba(0,0,0,0.12);
  }

  /* Toggle chips */
#v50-base-shell .chips {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
  }
  #v50-base-shell .chip {
    flex: 1;
    min-width: 0;
    padding: 9px 10px;
    border: 1px solid rgba(255,255,255,0.8);
    background: rgba(255,255,255,0.5);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.5);
    border-radius: 999px;
    font-family: 'Jost', sans-serif;
    font-size: 10.5px;
    text-align: center;
    cursor: pointer;
    color: var(--ink-2);
    transition: all .15s;
    user-select: none;
  }
  #v50-base-shell .chip:hover {
    background: rgba(255,255,255,0.75);
    border-color: var(--ink-2);
  }
  #v50-base-shell .chip.active {
    background: var(--ink);
    color: var(--bg);
    border-color: var(--ink);
  }

  /* Plantas — biblioteca de blocos */
#v50-base-shell .planta-lib-btn {
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    padding: 5px 9px;
    border-radius: 999px;
    border: 1px solid var(--line);
    background: rgba(255,255,255,0.5);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    transition: all .12s;
    color: var(--ink-2);
  }
  #v50-base-shell .planta-lib-btn:hover {
    border-color: var(--ink-2);
    background: rgba(255,255,255,0.85);
  }
  #v50-base-shell .planta-lib-btn .swatch {
    width: 10px;
    height: 10px;
    border-radius: 2px;
    border: 1px solid rgba(0,0,0,0.15);
  }

  /* Plantas — linha de room na lista */
#v50-base-shell .planta-room-row {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 8px;
    border-radius: 6px;
    background: rgba(255,255,255,0.4);
    font-family: 'Jost', sans-serif;
    font-size: 10px;
  }
  #v50-base-shell .planta-room-row:hover {
    background: rgba(255,255,255,0.7);
  }
  #v50-base-shell .planta-room-row .swatch {
    width: 10px;
    height: 10px;
    border-radius: 2px;
    flex-shrink: 0;
    border: 1px solid rgba(0,0,0,0.15);
  }
  #v50-base-shell .planta-room-row .name { flex: 1; color: var(--ink-2); }
  #v50-base-shell .planta-room-row .area { color: var(--ink-3); font-size: 9px; }
  #v50-base-shell .planta-room-row .del {
    cursor: pointer;
    color: var(--ink-3);
    font-weight: 300;
    font-size: 14px;
    line-height: 1;
    padding: 0 3px;
  }
  #v50-base-shell .planta-room-row .del:hover { color: #e24b4a; }

  /* ============ EDITOR PLANTA 2D ============ */
#v50-base-shell #planta-editor {
    position: fixed;
    inset: 0;
    background: #f5f3ec;
    z-index: 1000;
    display: flex;
    flex-direction: column;
    font-family: 'Jost', sans-serif;
  }
  #v50-base-shell .pe-topbar {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 16px;
    background: rgba(255,255,255,0.7);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border-bottom: 1px solid var(--line);
    flex-shrink: 0;
  }
  #v50-base-shell .pe-btn {
    padding: 8px 14px;
    border: 1px solid var(--line);
    background: rgba(255,255,255,0.8);
    border-radius: 999px;
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    cursor: pointer;
    color: var(--ink-2);
  }
  #v50-base-shell .pe-btn:hover { background: rgba(255,255,255,1); border-color: var(--ink-2); }
  #v50-base-shell .pe-btn-back { background: var(--ink); color: var(--bg); border-color: var(--ink); }
  #v50-base-shell .pe-btn-back:hover { background: var(--ink-2); color: var(--bg); }

  #v50-base-shell .pe-pav-chips { display: flex; gap: 4px; }
  #v50-base-shell .pe-chip {
    padding: 6px 12px;
    border-radius: 999px;
    border: 1px solid var(--line);
    background: rgba(255,255,255,0.5);
    font-size: 10.5px;
    cursor: pointer;
    color: var(--ink-2);
    transition: all .12s;
    user-select: none;
  }
  #v50-base-shell .pe-chip:hover { background: rgba(255,255,255,0.9); border-color: var(--ink-2); }
  #v50-base-shell .pe-chip.active { background: var(--ink); color: var(--bg); border-color: var(--ink); }

  #v50-base-shell .pe-tools { display: flex; gap: 2px; margin-left: auto; }
  #v50-base-shell .pe-tool {
    width: 36px;
    height: 36px;
    border: 1px solid var(--line);
    background: rgba(255,255,255,0.6);
    border-radius: 6px;
    font-size: 16px;
    cursor: pointer;
    color: var(--ink-2);
    transition: all .12s;
  }
  #v50-base-shell .pe-tool:hover { background: rgba(255,255,255,1); border-color: var(--ink-2); }
  #v50-base-shell .pe-tool.active { background: var(--accent); color: var(--ink); border-color: var(--ink); }

  #v50-base-shell .pe-info {
    font-size: 10px;
    color: var(--ink-3);
    font-family: 'DM Mono', ui-monospace, monospace;
    min-width: 120px;
    text-align: right;
  }

  #v50-base-shell .pe-body {
    flex: 1;
    display: flex;
    overflow: hidden;
  }
  #v50-base-shell .pe-sidebar {
    width: 200px;
    padding: 14px;
    background: rgba(255,255,255,0.4);
    overflow-y: auto;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  #v50-base-shell .pe-sidebar-left { border-right: 1px solid var(--line); }
  #v50-base-shell .pe-sidebar-right { border-left: 1px solid var(--line); }
  #v50-base-shell .pe-section-title {
    font-size: 9px;
    color: var(--ink-3);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 4px;
  }

  #v50-base-shell .pe-canvas-wrap {
    flex: 1;
    position: relative;
    background: #ece9e0;
    overflow: hidden;
  }
  #v50-base-shell #pe-svg {
    width: 100%;
    height: 100%;
    display: block;
    cursor: default;
  }
  #v50-base-shell #pe-svg.tool-rect, #v50-base-shell #pe-svg.tool-polygon { cursor: crosshair; }
  #v50-base-shell #pe-svg.tool-delete { cursor: not-allowed; }
  #v50-base-shell #pe-svg.panning { cursor: grabbing; }

  #v50-base-shell .pe-hint {
    position: absolute;
    bottom: 12px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(20, 20, 18, 0.85);
    color: var(--bg);
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 10px;
    pointer-events: none;
    opacity: 0.85;
  }

  /* SVG elements - estilo arquitetônico de planta */
#v50-base-shell .pe-rua { fill: #d8d6d0; stroke: #2a2a26; stroke-width: 0.8; }
  #v50-base-shell .pe-rua.faded { fill: #ebe9e3; stroke: #a8a59c; stroke-width: 0.5; }
  #v50-base-shell .pe-calcada { fill: #ebe8df; stroke: #5a5750; stroke-width: 0.5; }
  #v50-base-shell .pe-calcada.faded { fill: #f2f0e8; stroke: #b5b1a7; stroke-width: 0.4; }
  #v50-base-shell .pe-rua-label {
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    font-weight: 600;
    fill: #141412;
    letter-spacing: 2px;
    text-anchor: middle;
    pointer-events: none;
    text-transform: uppercase;
  }
  #v50-base-shell .pe-rua-label.faded { fill: #b5b1a7; }
  #v50-base-shell .pe-lote-bg { fill: rgba(255, 252, 245, 0.55); stroke: #141412; stroke-width: 2.5; }
  #v50-base-shell .pe-lote-bg.faded { fill: rgba(255, 252, 245, 0.30); stroke: #a8a59c; stroke-width: 1; }
  #v50-base-shell .pe-cota-lote {
    font-family: 'DM Mono', ui-monospace, monospace;
    font-size: 10px;
    font-weight: 500;
    fill: #141412;
    text-anchor: middle;
    pointer-events: none;
    paint-order: stroke;
    stroke: rgba(255,255,255,0.95);
    stroke-width: 3px;
  }
  #v50-base-shell .pe-cota-lote.faded { fill: #a8a59c; }

  /* Laje do pavimento (envelope volumétrico) — destaque em planos altos */
#v50-base-shell .pe-laje {
    fill: rgba(255, 252, 245, 0.85);
    stroke: #141412;
    stroke-width: 2.5;
    pointer-events: none;
  }
  /* Laje fantasma: representação de pavimentos anteriores (abaixo) */
#v50-base-shell .pe-laje-ghost {
    fill: rgba(255, 252, 245, 0.12);
    stroke: #a8a59c;
    stroke-width: 0.8;
    stroke-dasharray: 3 2;
    pointer-events: none;
  }
  #v50-base-shell .pe-laje-ghost-label {
    font-family: 'DM Mono', ui-monospace, monospace;
    font-size: 10px;
    font-weight: 500;
    fill: #a8a59c;
    text-anchor: start;
    pointer-events: none;
    paint-order: stroke;
    stroke: rgba(255,255,255,0.9);
    stroke-width: 2.5px;
  }
  /* Cone de recuos: envelope em cada altura crítica */
#v50-base-shell .pe-cone-env {
    fill: none;
    stroke: rgba(200, 35, 44, 0.4);
    stroke-width: 0.8;
    stroke-dasharray: 4 3;
    pointer-events: none;
  }
  #v50-base-shell .pe-cone-env-label {
    font-family: 'DM Mono', ui-monospace, monospace;
    font-size: 8px;
    fill: rgba(200, 35, 44, 0.7);
    text-anchor: start;
    pointer-events: none;
    paint-order: stroke;
    stroke: rgba(255,255,255,0.95);
    stroke-width: 2.5px;
  }
  #v50-base-shell .pe-laje-label {
    font-family: 'Jost', sans-serif;
    font-size: 13px;
    font-weight: 600;
    fill: #141412;
    text-anchor: middle;
    pointer-events: none;
    text-transform: uppercase;
    letter-spacing: 1.5px;
  }
  #v50-base-shell .pe-laje-area {
    font-family: 'DM Mono', ui-monospace, monospace;
    font-size: 10px;
    fill: #3a3a32;
    text-anchor: middle;
    pointer-events: none;
  }
  #v50-base-shell .pe-h-disp-line {
    fill: none;
    stroke: rgba(20, 20, 18, 0.4);
    stroke-width: 0.8;
    stroke-dasharray: 5 3;
    pointer-events: none;
  }
  #v50-base-shell .pe-h-disp-label {
    font-family: 'DM Mono', ui-monospace, monospace;
    font-size: 9px;
    fill: #5a5750;
    pointer-events: none;
    paint-order: stroke;
    stroke: rgba(255,255,255,0.95);
    stroke-width: 3px;
  }
  #v50-base-shell .pe-faixa-env-label {
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    font-weight: 600;
    fill: #c8232c;
    text-anchor: middle;
    pointer-events: none;
    text-transform: uppercase;
    letter-spacing: 1px;
    paint-order: stroke;
    stroke: rgba(255,255,255,0.95);
    stroke-width: 3px;
  }

  /* Laje fantasma (marco inferior) */
#v50-base-shell .pe-laje-fantasma {
    fill: rgba(200, 195, 185, 0.08);
    stroke: #b5b1a7;
    stroke-width: 0.8;
    stroke-dasharray: 4 3;
    pointer-events: none;
  }
  #v50-base-shell .pe-laje-fantasma-label {
    font-family: 'DM Mono', ui-monospace, monospace;
    font-size: 9px;
    font-weight: 500;
    fill: #8a8780;
    text-anchor: middle;
    pointer-events: none;
    letter-spacing: 1px;
  }

  /* Cone de recuos concêntricos */
#v50-base-shell .pe-cone-recuo {
    fill: none;
    stroke: #c8232c;
    stroke-width: 0.8;
    stroke-dasharray: 4 2 1 2;
    opacity: 0.55;
    pointer-events: none;
  }
  #v50-base-shell .pe-cone-recuo-label {
    font-family: 'DM Mono', ui-monospace, monospace;
    font-size: 8px;
    fill: #c8232c;
    text-anchor: middle;
    pointer-events: none;
    paint-order: stroke;
    stroke: rgba(255,255,255,0.9);
    stroke-width: 2.5px;
    opacity: 0.75;
  }
  #v50-base-shell .pe-emb-bg { fill: rgba(168, 165, 154, 0.10); stroke: #7a7770; stroke-width: 0.8; stroke-dasharray: 4 3; }
  #v50-base-shell .pe-recuo-line {
    fill: none;
    stroke: #c8232c;
    stroke-width: 1.2;
    stroke-dasharray: 8 3 2 3;
    pointer-events: none;
  }
  #v50-base-shell .pe-recuo-label {
    font-family: 'DM Mono', ui-monospace, monospace;
    font-size: 9px;
    fill: #c8232c;
    pointer-events: none;
    text-anchor: middle;
    paint-order: stroke;
    stroke: rgba(255,255,255,0.9);
    stroke-width: 3px;
  }
  #v50-base-shell .pe-norte-circle {
    fill: rgba(255,255,255,0.85);
    stroke: #141412;
    stroke-width: 1.5;
  }
  #v50-base-shell .pe-norte-arrow { fill: #141412; stroke: none; }
  #v50-base-shell .pe-norte-letter {
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    font-weight: 600;
    fill: #141412;
    text-anchor: middle;
    dominant-baseline: middle;
  }
  #v50-base-shell .pe-forbidden {
    fill: rgba(255, 68, 68, 0.14);
    stroke: none;
    pointer-events: none;
  }
  #v50-base-shell .pe-allowed-outline {
    fill: none;
    stroke: rgba(255, 68, 68, 0.6);
    stroke-width: 1.2;
    stroke-dasharray: 6 3;
    pointer-events: none;
  }
  #v50-base-shell .pe-grid { stroke: rgba(20, 20, 18, 0.03); stroke-width: 0.4; }
  #v50-base-shell .pe-grid-major { stroke: rgba(20, 20, 18, 0.06); stroke-width: 0.6; }

  #v50-base-shell .pe-room { stroke: #141412; stroke-width: 1.2; cursor: move; }
  #v50-base-shell .pe-room.selected { stroke: #c3ea4f; stroke-width: 2.5; }
  #v50-base-shell .pe-room-label {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    font-weight: 500;
    fill: #141412;
    pointer-events: none;
    text-anchor: middle;
    text-transform: uppercase;
    letter-spacing: 1px;
  }
  #v50-base-shell .pe-room-area {
    font-family: 'DM Mono', ui-monospace, monospace;
    font-size: 9px;
    fill: #3a3a32;
    pointer-events: none;
    text-anchor: middle;
  }

  #v50-base-shell .pe-preview {
    fill: rgba(195, 234, 79, 0.35);
    stroke: #3a7d00;
    stroke-width: 2.5;
    stroke-dasharray: 6 3;
    pointer-events: none;
  }
  #v50-base-shell .pe-vertex {
    fill: #c3ea4f;
    stroke: #141412;
    stroke-width: 1.5;
  }
  #v50-base-shell .pe-dim {
    font-family: 'DM Mono', ui-monospace, monospace;
    font-size: 10px;
    fill: #141412;
    pointer-events: none;
    text-anchor: middle;
    font-weight: 600;
    paint-order: stroke;
    stroke: rgba(255,255,255,0.9);
    stroke-width: 3px;
  }

  /* Selection bbox + handles (estilo Vectorworks) */
#v50-base-shell .pe-selection-box {
    fill: none;
    stroke: rgba(255, 140, 0, 0.8);
    stroke-width: 1.2;
    stroke-dasharray: 4 3;
    pointer-events: none;
  }
  #v50-base-shell .pe-handle {
    fill: #ffffff;
    stroke: #141412;
    stroke-width: 1.2;
  }
  #v50-base-shell .pe-handle:hover {
    fill: #c3ea4f;
  }
  #v50-base-shell .pe-handle-corner { fill: #c3ea4f; }
  #v50-base-shell .pe-handle-vertex { fill: #c3ea4f; }

  /* Switch */
#v50-base-shell .switch-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 0;
    font-family: 'Jost', sans-serif;
    font-size: 13px;
    color: var(--ink-2);
  }
  #v50-base-shell .switch {
    position: relative;
    width: 36px;
    height: 20px;
    background: var(--line);
    border-radius: 999px;
    cursor: pointer;
    transition: background .15s;
    flex-shrink: 0;
  }
  #v50-base-shell .switch::after {
    content: "";
    position: absolute;
    top: 2px; left: 2px;
    width: 16px; height: 16px;
    background: white;
    border-radius: 50%;
    transition: transform .2s;
  }
  #v50-base-shell .switch.on { background: var(--ink); }
  #v50-base-shell .switch.on::after { transform: translateX(16px); }

  /* Lote vertex editor */
#v50-base-shell .vertex-table {
    width: 100%;
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    border-collapse: collapse;
  }
  #v50-base-shell .vertex-table th {
    text-align: left;
    padding: 6px 4px;
    border-bottom: 1px solid var(--line);
    color: var(--ink-3);
    font-weight: 500;
    font-size: 9.5px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
  }
  #v50-base-shell .vertex-table td {
    padding: 4px 2px;
    border-bottom: 1px solid rgba(212,212,204,0.5);
  }
  #v50-base-shell .vertex-table td input {
    width: 100%;
    border: none;
    background: transparent;
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    padding: 3px 4px;
    border-radius: 3px;
    outline: none;
  }
  #v50-base-shell .vertex-table td input:focus { background: rgba(195,234,79,0.18); }
  #v50-base-shell .vertex-table td .rm {
    background: none;
    border: none;
    color: var(--ink-3);
    cursor: pointer;
    font-size: 14px;
    padding: 0 4px;
  }
  #v50-base-shell .vertex-table td .rm:hover { color: var(--danger); }

  #v50-base-shell .btn-add {
    margin-top: 8px;
    width: 100%;
    padding: 8px;
    background: transparent;
    border: 1px dashed var(--line);
    border-radius: 8px;
    font-family: 'Jost', sans-serif;
    font-size: 10.5px;
    color: var(--ink-2);
    cursor: pointer;
    transition: all .15s;
  }
  #v50-base-shell .btn-add:hover { background: rgba(195,234,79,0.15); border-color: var(--accent-ink); }

  #v50-base-shell .preset-row {
    display: flex;
    gap: 6px;
    margin-bottom: 10px;
  }
  #v50-base-shell .preset-btn {
    flex: 1;
    padding: 6px 4px;
    background: rgba(255,255,255,0.55);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgba(255,255,255,0.8);
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.5);
    border-radius: 6px;
    font-family: 'Jost', sans-serif;
    font-size: 9.5px;
    color: var(--ink-2);
    cursor: pointer;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    transition: all 0.15s;
  }
  #v50-base-shell .preset-btn:hover {
    background: rgba(255,255,255,0.75);
    border-color: var(--ink);
  }
  #v50-base-shell .preset-btn.preset-featured {
    background: var(--accent);
    border-color: var(--accent);
    color: var(--accent-ink);
    font-weight: 500;
    letter-spacing: 0.04em;
  }
  #v50-base-shell .preset-btn.preset-featured:hover {
    background: #b8e03c;
    border-color: var(--accent-ink);
  }

  /* Data summary */
#v50-base-shell .stats {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }
  #v50-base-shell .stat {
    background: rgba(255,255,255,0.6);
    border: 1px solid var(--line);
    border-radius: 10px;
    padding: 10px 12px;
  }
  #v50-base-shell .stat-label {
    font-family: 'Jost', sans-serif;
    font-size: 9px;
    color: var(--ink-3);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin-bottom: 2px;
  }
  #v50-base-shell .stat-value {
    font-family: 'Jost', sans-serif;
    font-weight: 700;
    font-size: 16px;
    color: var(--ink);
  }
  #v50-base-shell .stat-value .u {
    font-family: 'Jost', sans-serif;
    font-weight: 400;
    font-size: 10px;
    color: var(--ink-3);
    margin-left: 2px;
  }

  /* Formula display */
#v50-base-shell .formula {
    background: rgba(0,0,0,0.04);
    border-left: 2px solid var(--ink);
    padding: 10px 12px;
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    line-height: 1.8;
    color: var(--ink-2);
    border-radius: 2px;
  }
  #v50-base-shell .formula .strong { color: var(--ink); font-weight: 500; }


  /* ===== Sistema viário 3D ===== */
#v50-base-shell .street-mini-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
  #v50-base-shell .street-status { margin-top:10px; padding:9px 10px; border-radius:8px; background:rgba(195,234,79,0.14); border:1px solid rgba(99,153,34,0.18); font-family:'Jost',sans-serif; font-size:10.5px; color:#27500a; line-height:1.45; }
  #v50-base-shell .street-help { margin-top:8px; font-family:'Jost',sans-serif; font-size:9.5px; color:var(--ink-3); line-height:1.45; }

  /* ===== VIEWPORT 3D ===== */
#v50-base-shell #viewport {
    position: relative;
    background: var(--bg);
    overflow: hidden;
  }
  #v50-base-shell #three-canvas {
    display: block;
    width: 100%;
    height: 100%;
  }

  #v50-base-shell #hud {
    position: absolute;
    top: 20px;
    left: 20px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    pointer-events: none;
  }
  #v50-base-shell .hud-chip {
    background: var(--glass);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid var(--glass-stroke);
    border-radius: 10px;
    padding: 8px 12px;
    font-family: 'Jost', sans-serif;
    font-size: 10.5px;
    color: var(--ink-2);
    box-shadow: 0 2px 12px rgba(0,0,0,0.04);
  }
  #v50-base-shell .hud-chip strong { color: var(--ink); font-weight: 500; }

  #v50-base-shell #view-controls {
    position: absolute;
    top: 20px;
    right: 20px;
    display: flex;
    gap: 6px;
    background: var(--glass);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid var(--glass-stroke);
    border-radius: 10px;
    padding: 4px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.04);
  }
  #v50-base-shell .view-btn {
    padding: 6px 12px;
    background: transparent;
    border: none;
    border-radius: 7px;
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    color: var(--ink-2);
    cursor: pointer;
    text-transform: uppercase;
    letter-spacing: 0.08em;
  }
  #v50-base-shell .view-btn.active {
    background: var(--ink);
    color: var(--bg);
  }

  #v50-base-shell #legend {
    position: absolute;
    bottom: 20px;
    left: 20px;
    background: var(--glass);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid var(--glass-stroke);
    border-radius: 12px;
    padding: 12px 14px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.04);
    font-family: 'Jost', sans-serif;
    font-size: 10px;
    line-height: 1.9;
    color: var(--ink-2);
  }
  #v50-base-shell #legend .lg-row { display: flex; align-items: center; gap: 8px; }
  #v50-base-shell #legend .swatch {
    width: 12px; height: 12px;
    border-radius: 2px;
    border: 1px solid rgba(0,0,0,0.15);
    flex-shrink: 0;
  }

  /* North indicator */
#v50-base-shell #north {
    position: absolute;
    top: 20px;
    left: 50%;
    transform: translateX(-50%);
    background: var(--glass);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid var(--glass-stroke);
    border-radius: 999px;
    padding: 6px 14px;
    font-family: 'Jost', sans-serif;
    font-weight: 700;
    font-size: 12px;
    color: var(--ink);
    letter-spacing: 0.1em;
    pointer-events: none;
  }


  /* ===== Otimização volumétrica ===== */
#v50-base-shell .opt-card {
    padding: 12px 14px;
    background: rgba(195,234,79,0.10);
    border: 1px solid rgba(99,153,34,0.22);
    border-radius: 12px;
  }
  #v50-base-shell .opt-title {
    font-family:'Jost',sans-serif;
    font-size:10px;
    text-transform:uppercase;
    letter-spacing:.12em;
    color:#27500a;
    margin-bottom:10px;
    font-weight:600;
  }
  #v50-base-shell .opt-row {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    font-family:'Jost',sans-serif;
    font-size:11px;
    color:var(--ink-2);
    margin:7px 0;
  }
  #v50-base-shell .opt-row strong { color:var(--ink); font-weight:600; }
  #v50-base-shell .opt-checks {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:6px 10px;
    margin:10px 0 12px;
    font-family:'Jost',sans-serif;
    font-size:10.5px;
    color:var(--ink-2);
  }
  #v50-base-shell .opt-checks label { display:flex; align-items:center; gap:6px; cursor:pointer; }
  #v50-base-shell .opt-checks input { accent-color:var(--accent); }
  #v50-base-shell .btn-optimize {
    width:100%;
    border:0;
    border-radius:10px;
    padding:10px 12px;
    background:var(--accent);
    color:var(--accent-ink);
    font-family:'Jost',sans-serif;
    font-weight:700;
    font-size:12px;
    cursor:pointer;
    box-shadow:0 8px 18px rgba(99,153,34,.16);
  }
  #v50-base-shell .btn-optimize:hover { filter:brightness(.98); transform:translateY(-1px); }
  #v50-base-shell .opt-status {
    margin-top:10px;
    padding:9px 10px;
    border-radius:8px;
    background:rgba(255,255,255,.55);
    border:1px solid rgba(0,0,0,.05);
    font-family:'Jost',sans-serif;
    font-size:10px;
    color:var(--ink-2);
    line-height:1.45;
  }
  #v50-base-shell .opt-status b { color:#27500a; }
  #v50-base-shell .tower-exp-card { background:rgba(255,255,255,0.45); border-color:rgba(0,0,0,0.08); }
  #v50-base-shell .tower-exp-card .opt-title { color:var(--ink); }



  /* ===== MODO DIAGRAMA ===== */
#v50-base-shell.diagram-mode #viewport {
    background:#fbfbf7;
  }
  #v50-base-shell.diagram-mode #three-canvas {
    filter: contrast(1.22) saturate(0.35) brightness(1.06);
  }
  #v50-base-shell.diagram-mode #legend {
    border:1px solid rgba(0,0,0,0.10);
    box-shadow:0 12px 34px rgba(0,0,0,0.06);
  }
  #v50-base-shell #btn-diagrama-mode.diagram-active, #v50-base-shell.diagram-mode #btn-diagrama-mode, #v50-base-shell #btn-recuos-wire-mode.wire-active {
    background:var(--accent);
    color:var(--accent-ink);
    border-color:var(--accent);
    font-weight:700;
  }
  #v50-base-shell.diagram-mode #north, #v50-base-shell.diagram-mode #view-controls, #v50-base-shell.diagram-mode .hud-chip {
    background:rgba(255,255,255,0.86);
    border-color:rgba(0,0,0,0.08);
  }



/* ===== V22 — limpeza de painel + Diagrama BIG editorial ===== */
#v50-base-shell .pavs-controls { display:none !important; }
#v50-base-shell #modo-torre { display:none !important; }
#v50-base-shell #modo-torre.closest-hidden { display:none !important; }
/* esconde o bloco legado de modo da torre dentro do details */
#v50-base-shell details:has(#modo-torre) { display:none !important; }
#v50-base-shell .street-section-compact { padding-bottom:14px; }
#v50-base-shell .street-section-compact:not([open]) { margin-bottom:18px; }
#v50-base-shell .street-section-compact > summary { margin-bottom:0; }
#v50-base-shell .street-section-compact[open] > summary { margin-bottom:14px; }
/* Faixa envoltória com linguagem de card igual à expansão */
#v50-base-shell .section:has(#btn-sr-toggle) { padding:16px 14px 18px; border:1px solid rgba(0,0,0,0.10); border-radius:16px; background:rgba(255,255,255,0.50); box-shadow:0 1px 0 rgba(255,255,255,.65) inset; }
#v50-base-shell .section:has(#btn-sr-toggle) .section-title { color:var(--ink); font-weight:800; font-size:12px; letter-spacing:.16em; margin-bottom:14px; }
#v50-base-shell .section:has(#btn-sr-toggle) .btn-add { background:rgba(255,255,255,.65); border:1px dashed rgba(0,0,0,.14); border-radius:12px; padding:10px 12px; }
#v50-base-shell .section:has(#btn-sr-toggle) #btn-sr-toggle { background:rgba(195,234,79,.15); border-color:rgba(99,153,34,.25); color:#27500a; font-weight:600; }
#v50-base-shell .section:has(#btn-sr-toggle) #sr-list { background:rgba(255,255,255,.65)!important; border:1px solid rgba(0,0,0,.06); border-radius:12px!important; padding:12px!important; }
#v50-base-shell.diagram-mode #viewport { background:#fbfbf7; }
#v50-base-shell.diagram-mode #legend { opacity:.75; }
#v50-base-shell.diagram-mode .view-btn.diagram-active { background:var(--accent)!important; color:#1a1a17!important; }
#v50-base-shell .view-btn.wire-active { background:var(--accent)!important; color:#1a1a17!important; }



  /* ===== V24 ajustes painel/dashboard ===== */
#v50-base-shell .collapsible-card > summary {
    list-style:none;
    cursor:pointer;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
  }
  #v50-base-shell .collapsible-card > summary::-webkit-details-marker { display:none; }
  #v50-base-shell .collapsible-card .summary-title {
    font-family:'Jost',sans-serif;
    font-size:10px;
    text-transform:uppercase;
    letter-spacing:.12em;
    color:var(--ink-3);
    font-weight:600;
  }
  #v50-base-shell .collapsible-card .summary-caret { color:var(--ink-3); transition:transform .18s; }
  #v50-base-shell .collapsible-card[open] .summary-caret { transform:rotate(90deg); }
  #v50-base-shell .sr-card { background:rgba(255,255,255,0.45); border-color:rgba(0,0,0,0.08); }
  #v50-base-shell .sr-card .opt-title { color:var(--ink); }
  #v50-base-shell .sr-card .switch.on { background:var(--accent); }
  #v50-base-shell .sr-card input[type="range"], #v50-base-shell .vgv-ticket-slider {
    width:100%;
    accent-color:var(--accent);
    -webkit-appearance:none;
    appearance:none;
    height:6px;
    background:rgba(0,0,0,0.08);
    border-radius:999px;
    outline:none;
  }
  #v50-base-shell .sr-card input[type="range"]::-webkit-slider-thumb, #v50-base-shell .vgv-ticket-slider::-webkit-slider-thumb {
    -webkit-appearance:none;
    appearance:none;
    width:20px;
    height:20px;
    border-radius:50%;
    background:var(--accent);
    border:2px solid var(--accent-ink);
    box-shadow:0 2px 6px rgba(0,0,0,0.14);
    cursor:grab;
  }
  #v50-base-shell .sr-card input[type="range"]::-moz-range-thumb, #v50-base-shell .vgv-ticket-slider::-moz-range-thumb {
    width:20px;
    height:20px;
    border-radius:50%;
    background:var(--accent);
    border:2px solid var(--accent-ink);
    box-shadow:0 2px 6px rgba(0,0,0,0.14);
    cursor:grab;
  }
  #v50-base-shell .kpi-grid {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
    margin-top:12px;
  }
  #v50-base-shell .kpi-card {
    padding:10px 12px;
    background:rgba(255,255,255,0.62);
    border:1px solid rgba(0,0,0,0.07);
    border-radius:10px;
  }
  #v50-base-shell .kpi-label {
    font-family:'Jost',sans-serif;
    font-size:8.5px;
    text-transform:uppercase;
    letter-spacing:.10em;
    color:var(--ink-3);
    margin-bottom:3px;
  }
  #v50-base-shell .kpi-value {
    font-family:'Jost',sans-serif;
    font-size:18px;
    font-weight:700;
    color:var(--ink);
    letter-spacing:-.02em;
  }
  #v50-base-shell .ca-total-card {
    margin-top:14px;
    padding:13px 14px;
    background:rgba(195,234,79,.16);
    border:1px solid rgba(99,153,34,.25);
    border-radius:10px;
    display:flex;
    justify-content:space-between;
    align-items:center;
  }
  #v50-base-shell .ca-total-card .ca-label { color:#27500a !important; }
  #v50-base-shell .ca-total-card #dash-ca-total-coef { color:#27500a !important; font-size:24px !important; }


  /* ===== V25 dashboard comercial / KPIs estilo Solos SSP ===== */
#v50-base-shell .deal-summary-grid { display:grid; grid-template-columns:1fr; gap:8px; margin:0 0 14px; }
  #v50-base-shell .deal-card { padding:12px 14px; border-radius:14px; background:rgba(255,255,255,.68); border:1px solid rgba(0,0,0,.07); box-shadow:0 12px 30px rgba(0,0,0,.04), inset 0 1px 0 rgba(255,255,255,.72); }
  #v50-base-shell .deal-card-label { font-family:'Jost',sans-serif; font-size:9px; text-transform:uppercase; letter-spacing:.12em; color:var(--ink-3); margin-bottom:3px; }
  #v50-base-shell .deal-card-value { font-family:'Jost',sans-serif; font-size:20px; line-height:1.05; font-weight:750; color:var(--ink); letter-spacing:-.025em; }
  #v50-base-shell .deal-card-sub { margin-top:4px; font-family:'Jost',sans-serif; font-size:11px; color:var(--ink-3); }
  #v50-base-shell .deal-mix-bar { position:relative; height:22px; border-radius:999px; overflow:hidden; display:flex; background:#d3b990; margin-top:6px; }
  #v50-base-shell .deal-mix-cash { background:#049b68; color:white; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; }
  #v50-base-shell .deal-mix-swap { background:#d1b486; color:white; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; }
  #v50-base-shell .deal-mix-values { display:flex; justify-content:space-between; margin-top:7px; font-size:11px; font-weight:700; }
  #v50-base-shell .deal-mix-values .cash { color:#049b68; } #v50-base-shell .deal-mix-values .swap { color:#8d7658; }
  #v50-base-shell .vgv-hero { border-color:rgba(99,153,34,.22); background:rgba(255,255,255,.78); }
  #v50-base-shell .vgv-hero-amount { color:#087f57; font-size:36px; }
  #v50-base-shell .vgv-hero-price-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; padding-top:12px; margin-top:12px; border-top:1px solid rgba(99,153,34,.20); }
  #v50-base-shell .vgv-price-label { font-family:'Jost',sans-serif; font-size:10px; text-transform:uppercase; letter-spacing:.12em; color:#087f57; font-weight:700; margin-bottom:4px; }
  #v50-base-shell .vgv-price-value { font-family:'Jost',sans-serif; font-size:21px; font-weight:800; color:#087f57; white-space:nowrap; }
  #v50-base-shell .vgv-price-value.solos { color:#666; }
  #v50-base-shell .vgv-hero-ticket { margin-top:12px; padding-top:10px; border-top:1px solid rgba(0,0,0,.06); }
  #v50-base-shell .commercial-kpi-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:0 0 16px; }
  #v50-base-shell .commercial-kpi-card { min-height:104px; border-radius:16px; padding:14px 15px; background:rgba(255,255,255,.66); border:1px solid rgba(0,0,0,.07); box-shadow:0 12px 30px rgba(0,0,0,.035), inset 0 1px 0 rgba(255,255,255,.70); }
  #v50-base-shell .commercial-kpi-card.is-green { background:linear-gradient(135deg, rgba(235,247,224,.94), rgba(255,255,255,.70)); border-color:rgba(99,153,34,.22); }
  #v50-base-shell .commercial-kpi-label { font-family:'Jost',sans-serif; font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-3); margin-bottom:6px; font-weight:700; }
  #v50-base-shell .commercial-kpi-value { font-family:'Jost',sans-serif; font-size:30px; font-weight:800; line-height:1.05; color:var(--ink); letter-spacing:-.04em; }
  #v50-base-shell .commercial-kpi-card.is-green .commercial-kpi-value { color:#087f57; }
  #v50-base-shell .commercial-kpi-sub { margin-top:6px; font-family:'Jost',sans-serif; font-size:13px; line-height:1.35; color:var(--ink-3); }
  #v50-base-shell .feasibility-note { margin:0 0 16px; padding:14px 16px; border-radius:16px; background:linear-gradient(135deg, rgba(221,241,210,.88), rgba(255,255,255,.68)); border:1px solid rgba(99,153,34,.24); color:#087f57; font-family:'Jost',sans-serif; font-size:15px; line-height:1.35; font-weight:600; }


  #v50-base-shell #planta-editor .pe-tool-auto {
    width:auto !important;
    min-width:96px;
    padding:0 14px !important;
    gap:6px;
    font-weight:800;
    letter-spacing:.04em;
  }
  #v50-base-shell #planta-editor .pe-tool-auto::before { content:'✦'; font-size:11px; }



  /* =========================================================
     V29 · Floating UI + Lime System
     - mapa/3D ocupa todo o background
     - painéis laterais viram cards soltos em glassmorphism
     - verde escuro substituído pelo lime do slider
     - remove a duplicidade do preço/m²: mantém apenas Preço Venda m²
     ========================================================= */
#v50-base-shell {
    --lime:#C3EA4F;
    --lime-strong:#B7F34A;
    --lime-soft:rgba(195,234,79,.18);
    --lime-stroke:rgba(195,234,79,.42);
    --floating-panel:rgba(250,249,245,.76);
    --floating-border:rgba(255,255,255,.84);
    --floating-shadow:0 28px 80px rgba(15,15,12,.12), 0 8px 22px rgba(15,15,12,.07), inset 0 1px 0 rgba(255,255,255,.88);
  }

  #v50-base-shell #app {
    display:block !important;
    position:fixed;
    inset:0;
    overflow:hidden;
    background:var(--bg);
  }

  #v50-base-shell #viewport {
    position:fixed !important;
    inset:0 !important;
    width:100vw !important;
    height:100vh !important;
    z-index:0 !important;
    background:var(--bg) !important;
  }

  #v50-base-shell #three-canvas {
    width:100vw !important;
    height:100vh !important;
  }

  #v50-base-shell #panel, #v50-base-shell #panel-right {
    position:absolute !important;
    top:22px !important;
    bottom:22px !important;
    z-index:20 !important;
    border:1px solid var(--floating-border) !important;
    border-radius:28px !important;
    background:linear-gradient(145deg, rgba(255,255,255,.80), var(--floating-panel)) !important;
    backdrop-filter:blur(34px) saturate(160%) !important;
    -webkit-backdrop-filter:blur(34px) saturate(160%) !important;
    box-shadow:var(--floating-shadow) !important;
    overflow-y:auto !important;
    overflow-x:hidden !important;
  }

  #v50-base-shell #panel {
    left:22px !important;
    width:min(348px, calc(50vw - 42px)) !important;
    border-right:1px solid var(--floating-border) !important;
    padding:24px 22px 32px !important;
  }

  #v50-base-shell #panel-right {
    right:22px !important;
    width:min(356px, calc(50vw - 42px)) !important;
    border-left:1px solid var(--floating-border) !important;
    padding:24px 20px 32px !important;
  }

  #v50-base-shell #panel:hover, #v50-base-shell #panel-right:hover {
    box-shadow:0 34px 92px rgba(15,15,12,.14), 0 10px 26px rgba(15,15,12,.08), inset 0 1px 0 rgba(255,255,255,.92) !important;
  }

  #v50-base-shell #viewbar {
    z-index:30 !important;
    top:22px !important;
  }

  #v50-base-shell #hud, #v50-base-shell #legend {
    z-index:12 !important;
  }

  /* Lime replaces dark green accents */
#v50-base-shell .vgv-hero-amount, #v50-base-shell .vgv-price-label, #v50-base-shell .vgv-price-value, #v50-base-shell .commercial-kpi-card.is-green .commercial-kpi-value, #v50-base-shell .feasibility-note, #v50-base-shell .padrao-chip.active .padrao-name, #v50-base-shell .street-status, #v50-base-shell .opt-status b, #v50-base-shell .memorial-result strong, #v50-base-shell .ca-total-card .ca-label, #v50-base-shell .ca-total-card #dash-ca-total-coef, #v50-base-shell #dash-ca-total-coef, #v50-base-shell #dash-torreR-pavs, #v50-base-shell #dash-total-vendavel, #v50-base-shell .deal-mix-values .cash {
    color:var(--lime-strong) !important;
  }

  #v50-base-shell .vgv-hero {
    border-color:var(--lime-stroke) !important;
    background:rgba(255,255,255,.78) !important;
    box-shadow:0 1px 3px rgba(0,0,0,.04), 0 8px 24px rgba(0,0,0,.05), inset 0 1px 0 rgba(255,255,255,.92) !important;
  }

  #v50-base-shell .commercial-kpi-card.is-green, #v50-base-shell .feasibility-note, #v50-base-shell .street-status, #v50-base-shell .section:has(#btn-sr-toggle) #btn-sr-toggle {
    background:linear-gradient(135deg, rgba(195,234,79,.16), rgba(255,255,255,.70)) !important;
    border-color:var(--lime-stroke) !important;
  }

  #v50-base-shell .padrao-chip.active {
    border-color:var(--lime-stroke) !important;
    box-shadow:0 0 0 1px rgba(195,234,79,.22), 0 14px 34px rgba(195,234,79,.10) !important;
  }

  #v50-base-shell .deal-mix-cash {
    background:linear-gradient(90deg, var(--lime-strong), var(--lime)) !important;
    color:#1a1a17 !important;
  }

  #v50-base-shell input[type="range"]::-webkit-slider-thumb, #v50-base-shell .vgv-ticket-slider::-webkit-slider-thumb {
    background:var(--lime) !important;
    border-color:#1a1a17 !important;
    box-shadow:0 0 0 4px rgba(195,234,79,.18), 0 8px 18px rgba(0,0,0,.20) !important;
  }
  #v50-base-shell input[type="range"]::-moz-range-thumb, #v50-base-shell .vgv-ticket-slider::-moz-range-thumb {
    background:var(--lime) !important;
    border-color:#1a1a17 !important;
    box-shadow:0 0 0 4px rgba(195,234,79,.18), 0 8px 18px rgba(0,0,0,.20) !important;
  }

  /* V29: keep only one editable m² price. Hide Solos comparison and remove duplicate text area. */
#v50-base-shell .vgv-hero-price-grid {
    grid-template-columns:1fr !important;
    gap:0 !important;
  }
  #v50-base-shell .vgv-hero-price-grid > div:nth-child(2) {
    display:none !important;
  }
  #v50-base-shell #dash-vgv-hero-precom2 {
    display:none !important;
  }
  #v50-base-shell .vgv-hero-meta .vgv-hero-sep {
    display:none !important;
  }
  #v50-base-shell #dash-vgv-ticket-display {
    color:var(--lime-strong) !important;
    font-size:24px !important;
    letter-spacing:-.02em !important;
  }
  #v50-base-shell .vgv-price-label {
    color:var(--ink-3) !important;
  }

  /* Floating panels responsive: on narrow screens stack as bottom sheets */
  @media (max-width: 980px) {
    #v50-base-shell #panel, #v50-base-shell #panel-right {
      width:calc(100vw - 28px) !important;
      left:14px !important;
      right:auto !important;
      max-height:42vh !important;
    }
    #v50-base-shell #panel { top:14px !important; bottom:auto !important; }
    #v50-base-shell #panel-right { top:auto !important; bottom:14px !important; }
  }



/* ===================================================================
   BLOCO 2 — solos-v31-final-css (V50 1907-1999)
   =================================================================== */

/* V31 · versão final para implantação: header popup, cards limpos, tabela e memorial abaixo */
body.v50-active { overflow-x:hidden !important; overflow-y:auto !important; }
#v50-base-shell { background:#e7e5df !important; }
#v50-base-shell #app { position:relative !important; inset:auto !important; width:100vw !important; height:100vh !important; min-height:100vh !important; overflow:hidden !important; }
#v50-base-shell #viewport { position:absolute !important; inset:0 !important; }
#v50-base-shell #three-canvas { width:100vw !important; height:100vh !important; }

/* topo flutuante do ativo */
#v50-base-shell .project-topbar { position:absolute; top:18px; left:50%; transform:translateX(-50%); z-index:45; display:flex; align-items:center; gap:18px; min-width:min(1160px, calc(100vw - 820px)); max-width:calc(100vw - 760px); padding:10px 14px; border-radius:18px; background:rgba(250,249,245,.82); border:1px solid rgba(255,255,255,.86); box-shadow:0 18px 55px rgba(16,16,12,.10), inset 0 1px 0 rgba(255,255,255,.9); backdrop-filter:blur(26px) saturate(150%); font-family:'Jost',sans-serif; white-space:nowrap; }
#v50-base-shell .topbar-brand { font-weight:850; font-size:18px; letter-spacing:-.03em; }
#v50-base-shell .topbar-brand span { font-size:11px; color:#8a8a82; background:rgba(0,0,0,.06); border-radius:8px; padding:2px 6px; margin-left:6px; }
#v50-base-shell .topbar-tabs { display:flex; gap:14px; align-items:center; padding-left:8px; border-left:1px solid rgba(0,0,0,.08); }
#v50-base-shell .topbar-tabs button { border:0; background:transparent; color:#8a8a82; font-size:11px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; cursor:pointer; padding:5px 0; }
#v50-base-shell .topbar-tabs button.active { color:#171713; border-bottom:2px solid #171713; }
#v50-base-shell .topbar-asset { margin-left:auto; display:flex; align-items:center; gap:8px; font-size:13px; letter-spacing:.06em; text-transform:uppercase; }
#v50-base-shell .topbar-pill { display:inline-flex; align-items:center; height:24px; padding:0 9px; border-radius:8px; background:rgba(195,234,79,.25); color:#38600a; border:1px solid rgba(195,234,79,.45); font-size:10px; font-weight:800; }
#v50-base-shell .topbar-pill.muted { background:rgba(0,0,0,.07); color:#75756f; border-color:rgba(0,0,0,.08); }
#v50-base-shell .topbar-actions { display:flex; gap:8px; }
#v50-base-shell .topbar-actions button { border:1px solid rgba(0,0,0,.08); background:rgba(255,255,255,.72); border-radius:10px; height:32px; padding:0 12px; font-size:11px; font-weight:750; cursor:pointer; }
#v50-base-shell .topbar-actions .save { background:#111; color:#fff; }

/* controles de câmera centralizados e reduzidos */
#v50-base-shell #view-controls { position:absolute !important; top:92px !important; left:50% !important; right:auto !important; transform:translateX(-50%) !important; z-index:42 !important; width:auto !important; max-width:unset !important; justify-content:center !important; }
#v50-base-shell #view-controls .view-btn[data-view="topo"], #v50-base-shell #view-controls .view-btn[data-view="lat"], #v50-base-shell #view-controls #btn-alma-mode, #v50-base-shell #view-controls #btn-diagrama-mode { display:none !important; }
#v50-base-shell #btn-planta-mode::after { content:' 2D'; opacity:.65; font-weight:800; }
#v50-base-shell #btn-recuos-wire-mode { background:var(--lime,#C3EA4F) !important; color:#1a1a17 !important; font-weight:900 !important; }
#v50-base-shell #btn-recuos-wire-mode::after { content:' LIMPOS'; opacity:.75; }
#v50-base-shell #north { top:148px !important; }
#v50-base-shell #legend { display:none !important; }

/* lote: só terreno em L + contexto */
#v50-base-shell .lot-row-clean { grid-template-columns:1fr !important; }
#v50-base-shell .lot-row-clean .preset-featured { width:100% !important; font-weight:850 !important; }
#v50-base-shell .lot-context-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:10px; }
#v50-base-shell .lot-context-card { border:1px solid rgba(0,0,0,.07); background:rgba(255,255,255,.62); border-radius:12px; padding:10px 12px; }
#v50-base-shell .lot-context-card span { display:block; font-size:8.5px; text-transform:uppercase; letter-spacing:.12em; color:#8a8a82; margin-bottom:3px; }
#v50-base-shell .lot-context-card strong { font-size:13px; color:#171713; }

/* cards verdes: fundo padrão, sem glow/sombra verde */
#v50-base-shell .vgv-hero, #v50-base-shell .commercial-kpi-card.is-green, #v50-base-shell .feasibility-note { background:rgba(255,255,255,.66) !important; border-color:rgba(0,0,0,.07) !important; box-shadow:0 12px 30px rgba(0,0,0,.035), inset 0 1px 0 rgba(255,255,255,.70) !important; }
#v50-base-shell .vgv-hero { border-left:0 !important; }
#v50-base-shell .vgv-hero-amount { color:#171713 !important; }
#v50-base-shell .commercial-kpi-card.is-green .commercial-kpi-value { color:#171713 !important; }
#v50-base-shell .feasibility-note { color:#394622 !important; }
#v50-base-shell .vgv-price-value, #v50-base-shell .vgv-price-label, #v50-base-shell .deal-mix-values .cash { color:var(--lime-strong,#B7F34A) !important; }

/* esconder informações técnicas de terreno do painel direito */
#v50-base-shell #panel-right .dash-section:has(#dash-area-lote) { display:none !important; }

/* evitar sobreposição visual de cards internos */
#v50-base-shell .glass-card .glass-card, #v50-base-shell .produto-estimado.glass-card, #v50-base-shell .memorial-calc.glass-card { box-shadow:none !important; }

/* seções abaixo do mapa */
#v50-base-shell .below-analysis { position:relative; z-index:5; background:#e7e5df; padding:34px 30px 56px; font-family:'Jost',sans-serif; }
#v50-base-shell .below-inner { max-width:1760px; margin:0 auto; display:grid; gap:22px; }
#v50-base-shell .below-card { background:rgba(255,255,255,.78); border:1px solid rgba(255,255,255,.88); border-radius:24px; box-shadow:0 22px 60px rgba(16,16,12,.10), inset 0 1px 0 rgba(255,255,255,.9); padding:24px 26px; }
#v50-base-shell .below-card-head { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; margin-bottom:14px; }
#v50-base-shell .below-card h3 { margin:0; font-size:14px; text-transform:uppercase; letter-spacing:.16em; color:#8a8a82; }
#v50-base-shell .below-card p { margin:6px 0 0; color:#171713; font-size:14px; }
#v50-base-shell .table-legend { font-size:12px; color:#777; display:flex; align-items:center; gap:8px; }
#v50-base-shell .table-legend span, #v50-base-shell .dot { display:inline-block; width:10px; height:10px; border-radius:50%; }
#v50-base-shell .ok { background:#19a95b; }#v50-base-shell .warn { background:#d98000; }#v50-base-shell .no { background:#d92c2c; }
#v50-base-shell .lote-table-wrap { overflow:auto; }
#v50-base-shell .lote-table { width:100%; border-collapse:collapse; font-size:16px; white-space:nowrap; }
#v50-base-shell .lote-table th { text-align:left; color:#aaa; text-transform:uppercase; letter-spacing:.12em; font-size:12px; font-weight:650; padding:12px 14px; border-bottom:1px solid rgba(0,0,0,.06); }
#v50-base-shell .lote-table td { padding:14px; border-bottom:1px solid rgba(0,0,0,.05); font-weight:650; color:#171713; }
#v50-base-shell .lote-table td:first-child { letter-spacing:.05em; color:#777; }
#v50-base-shell .lote-table .row-ok { background:rgba(25,169,91,.045); }
#v50-base-shell .lote-table .row-no { background:rgba(217,44,44,.035); }
#v50-base-shell .lote-table tfoot td { color:#555; font-weight:800; background:rgba(255,255,255,.42); }
#v50-base-shell .pill-soft, #v50-base-shell .pill-null { border-radius:999px; padding:3px 10px; font-size:12px; }
#v50-base-shell .pill-soft { background:rgba(195,234,79,.32); color:#38600a; }
#v50-base-shell .pill-null { background:rgba(255,0,0,.08); color:#d66; }
#v50-base-shell .score-card { display:grid; grid-template-columns:260px 1fr 260px; gap:30px; align-items:center; }
#v50-base-shell .score-main { display:flex; align-items:center; gap:18px; border-right:1px solid rgba(0,0,0,.06); }
#v50-base-shell .score-main strong { font-size:52px; color:#19a95b; line-height:1; }
#v50-base-shell .score-main span { font-size:14px; color:#777; }
#v50-base-shell .score-bars { display:grid; gap:16px; }
#v50-base-shell .score-bars span { display:block; text-transform:uppercase; letter-spacing:.14em; font-size:12px; color:#8a8a82; margin-bottom:8px; }
#v50-base-shell .bar { height:10px; background:rgba(0,0,0,.08); border-radius:999px; overflow:hidden; }
#v50-base-shell .bar i { display:block; height:100%; background:linear-gradient(90deg,var(--lime,#C3EA4F),#19a95b); border-radius:999px; }
#v50-base-shell .bar.orange i { background:#d98000; }
#v50-base-shell .score-side { border-left:1px solid rgba(0,0,0,.06); padding-left:28px; color:#999; }
#v50-base-shell .score-side b { text-transform:uppercase; letter-spacing:.16em; color:#aaa; }
#v50-base-shell .memorial-grid-final { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
#v50-base-shell .memorial-grid-final > div { background:rgba(255,255,255,.64); border:1px solid rgba(0,0,0,.06); border-radius:18px; padding:18px; }
#v50-base-shell .memorial-grid-final h4 { margin:0 0 12px; font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:#8a8a82; }
#v50-base-shell .memorial-grid-final p { display:flex; justify-content:space-between; gap:12px; border-bottom:1px solid rgba(0,0,0,.04); padding:8px 0; margin:0; color:#777; }
#v50-base-shell .memorial-grid-final b { color:#171713; }
#v50-base-shell .memorial-note { margin-top:14px; border-radius:16px; padding:14px 16px; background:rgba(195,234,79,.15); color:#394622; font-weight:600; }
@media (max-width:1280px) { #v50-base-shell .project-topbar { min-width:auto; max-width:calc(100vw - 420px); gap:10px; } #v50-base-shell .topbar-tabs { display:none; } #v50-base-shell .score-card { grid-template-columns:1fr; } #v50-base-shell .memorial-grid-final { grid-template-columns:1fr 1fr; } }


/* ===================================================================
   BLOCO 3 — solos-v32-topbar-cta-css (V50 2000-2023)
   =================================================================== */

body.v50-active {scroll-behavior:smooth!important;}
#v50-base-shell #app {height:100vh!important;min-height:100vh!important;overflow:hidden!important;}
#v50-base-shell #panel, #v50-base-shell #panel-right {top:38px!important;bottom:26px!important;}
#v50-base-shell #panel {left:28px!important;width:min(360px,calc(50vw - 48px))!important;}
#v50-base-shell #panel-right {right:28px!important;width:min(370px,calc(50vw - 48px))!important;}
#v50-base-shell .project-topbar {position:absolute!important;top:38px!important;left:calc(min(360px,calc(50vw - 48px)) + 56px)!important;right:calc(min(370px,calc(50vw - 48px)) + 56px)!important;width:auto!important;min-width:0!important;max-width:none!important;transform:none!important;z-index:60!important;justify-content:center!important;gap:12px!important;padding:10px 12px!important;border-radius:18px!important;background:rgba(250,249,245,.84)!important;border:1px solid rgba(255,255,255,.92)!important;box-shadow:0 24px 70px rgba(15,15,12,.12),inset 0 1px 0 rgba(255,255,255,.95)!important;backdrop-filter:blur(28px) saturate(165%)!important;-webkit-backdrop-filter:blur(28px) saturate(165%)!important;overflow:hidden!important;}
#v50-base-shell .project-topbar .topbar-brand {flex:0 0 auto!important;font-size:18px!important;}
#v50-base-shell .project-topbar .topbar-tabs {flex:1 1 auto!important;min-width:0!important;gap:14px!important;justify-content:center!important;overflow:hidden!important;}
#v50-base-shell .project-topbar .topbar-tabs button {white-space:nowrap!important;font-size:11px!important;}
#v50-base-shell .project-topbar .topbar-asset {flex:0 1 auto!important;min-width:0!important;margin-left:0!important;overflow:hidden!important;}
#v50-base-shell .project-topbar .topbar-asset strong {overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;max-width:160px!important;display:inline-block!important;}
#v50-base-shell .project-topbar .topbar-pill, #v50-base-shell .project-topbar .topbar-actions {flex:0 0 auto!important;}
#v50-base-shell #view-controls {top:104px!important;z-index:50!important;}
#v50-base-shell #north {top:166px!important;}
#v50-base-shell .v32-study-cta {position:fixed;left:50%;bottom:26px;transform:translateX(-50%);z-index:90;display:inline-flex;align-items:center;gap:10px;height:48px;padding:0 24px;border:1px solid rgba(255,255,255,.86);border-radius:999px;background:linear-gradient(135deg,var(--lime,#C3EA4F),#a7ef24);color:#171713;font-family:'Jost',sans-serif;font-size:12px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;box-shadow:0 16px 42px rgba(183,243,76,.42),inset 0 1px 0 rgba(255,255,255,.75);animation:v32Pulse 2s infinite;}
#v50-base-shell .v32-study-cta:hover {transform:translateX(-50%) translateY(-2px);box-shadow:0 22px 60px rgba(183,243,76,.50),inset 0 1px 0 rgba(255,255,255,.82);}
#v50-base-shell .v32-study-cta .dot {width:10px;height:10px;border-radius:50%;background:#171713;opacity:.88;}
@keyframes v32Pulse{0%{box-shadow:0 0 0 0 rgba(183,243,76,.58),0 16px 42px rgba(183,243,76,.38)}70%{box-shadow:0 0 0 18px rgba(183,243,76,0),0 16px 42px rgba(183,243,76,.38)}100%{box-shadow:0 0 0 0 rgba(183,243,76,0),0 16px 42px rgba(183,243,76,.38)}}
#v50-base-shell.v32-below-visible .v32-study-cta {opacity:.18;pointer-events:auto;}
#v50-base-shell.v32-below-visible .v32-study-cta:hover {opacity:1;}
@media(max-width:1280px) {#v50-base-shell .project-topbar {left:390px!important;right:390px!important;gap:8px!important}#v50-base-shell .project-topbar .topbar-tabs {gap:10px!important}#v50-base-shell .project-topbar .topbar-asset strong {max-width:110px!important}}
@media(max-width:980px) {#v50-base-shell .project-topbar {left:14px!important;right:14px!important;top:14px!important}#v50-base-shell #panel {top:78px!important}#v50-base-shell .v32-study-cta {bottom:18px;max-width:calc(100vw - 36px);justify-content:center}}


/* ===================================================================
   BLOCO 4 — solos-v33-final-polish (V50 2024-2026)
   =================================================================== */

#v50-base-shell {--v33-bg:#f7f5ef;--v33-panel-bg:rgba(250,249,245,.82)}#v50-base-shell {background:var(--v33-bg)!important}#v50-base-shell .project-topbar {position:fixed!important;top:18px!important;left:24px!important;right:24px!important;width:auto!important;min-width:0!important;max-width:none!important;height:54px!important;transform:none!important;z-index:260!important;display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:14px!important;padding:8px 18px!important;border-radius:20px!important;background:rgba(250,249,245,.88)!important;border:1px solid rgba(255,255,255,.92)!important;box-shadow:0 18px 50px rgba(15,15,12,.10),inset 0 1px 0 rgba(255,255,255,.92)!important;backdrop-filter:blur(28px) saturate(160%)!important;-webkit-backdrop-filter:blur(28px) saturate(160%)!important;overflow:hidden!important}#v50-base-shell .project-topbar .topbar-brand {font-size:18px!important;min-width:max-content!important}#v50-base-shell .project-topbar .topbar-tabs {display:flex!important;flex:0 1 auto!important;gap:18px!important;padding-left:12px!important}#v50-base-shell .project-topbar .topbar-tabs button {font-size:11px!important;letter-spacing:.13em!important}#v50-base-shell .project-topbar .topbar-asset {margin-left:auto!important;flex:0 1 auto!important;min-width:0!important}#v50-base-shell .project-topbar .topbar-asset strong {max-width:260px!important}#v50-base-shell .project-topbar .topbar-actions {margin-left:10px!important}#v50-base-shell #panel, #v50-base-shell #panel-right {top:96px!important;bottom:28px!important;z-index:80!important}#v50-base-shell #view-controls {top:96px!important;left:50%!important;transform:translateX(-50%)!important;z-index:90!important;max-width:min(620px,calc(100vw - 860px))!important}#v50-base-shell #north {top:168px!important;z-index:70!important}#v50-base-shell .v32-study-cta {height:34px!important;padding:0 16px!important;bottom:22px!important;gap:7px!important;font-size:9.5px!important;letter-spacing:.11em!important;border-radius:999px!important;box-shadow:0 10px 28px rgba(183,243,76,.28),inset 0 1px 0 rgba(255,255,255,.72)!important;animation:v33PulseSoft 2.8s infinite!important;z-index:150!important}#v50-base-shell .v32-study-cta .dot {width:6px!important;height:6px!important}#v50-base-shell .v32-study-cta:hover {transform:translateX(-50%) translateY(-1px)!important;box-shadow:0 12px 34px rgba(183,243,76,.34),inset 0 1px 0 rgba(255,255,255,.82)!important}@keyframes v33PulseSoft{0%{box-shadow:0 0 0 0 rgba(183,243,76,.35),0 10px 28px rgba(183,243,76,.22)}70%{box-shadow:0 0 0 10px rgba(183,243,76,0),0 10px 28px rgba(183,243,76,.22)}100%{box-shadow:0 0 0 0 rgba(183,243,76,0),0 10px 28px rgba(183,243,76,.22)}}#v50-base-shell.v32-below-visible .v32-study-cta {opacity:.16!important}#v50-base-shell .below-analysis {background:var(--v33-bg)!important;padding:28px 26px 54px!important}#v50-base-shell .below-card {background:rgba(250,249,245,.82)!important;border:1px solid rgba(255,255,255,.9)!important;box-shadow:0 18px 52px rgba(16,16,12,.08),inset 0 1px 0 rgba(255,255,255,.9)!important;border-radius:22px!important;padding:20px 22px!important}#v50-base-shell .below-card h3 {font-size:12px!important;letter-spacing:.15em!important}#v50-base-shell .below-card p {font-size:12px!important}#v50-base-shell .table-legend {font-size:10px!important}#v50-base-shell .lote-table {font-size:12px!important}#v50-base-shell .lote-table th {font-size:9.5px!important;padding:10px 12px!important;letter-spacing:.13em!important}#v50-base-shell .lote-table td {font-size:12px!important;padding:11px 12px!important;font-weight:650!important}#v50-base-shell .lote-table tfoot td {font-size:12px!important;padding:12px!important}#v50-base-shell .pill-soft, #v50-base-shell .pill-null {font-size:10px!important;padding:2px 8px!important}#v50-base-shell .score-main strong {font-size:42px!important}#v50-base-shell .score-main span, #v50-base-shell .score-side {font-size:12px!important}#v50-base-shell .score-bars span {font-size:10px!important}#v50-base-shell .memorial-grid-final {gap:12px!important}#v50-base-shell .memorial-grid-final>div {padding:14px!important;border-radius:16px!important;background:rgba(255,255,255,.55)!important}#v50-base-shell .memorial-grid-final h4 {font-size:10px!important;margin-bottom:8px!important}#v50-base-shell .memorial-grid-final p {font-size:12px!important;padding:6px 0!important}#v50-base-shell .memorial-note {font-size:12px!important;padding:12px 14px!important}@media(max-width:1280px) {#v50-base-shell .project-topbar {left:18px!important;right:18px!important;gap:10px!important}#v50-base-shell .project-topbar .topbar-tabs {gap:12px!important}#v50-base-shell .project-topbar .topbar-asset strong {max-width:150px!important}#v50-base-shell #panel, #v50-base-shell #panel-right {top:92px!important}}@media(max-width:980px) {#v50-base-shell .project-topbar {top:12px!important;left:12px!important;right:12px!important;height:auto!important;min-height:50px!important}#v50-base-shell .project-topbar .topbar-tabs {display:none!important}#v50-base-shell #panel {top:82px!important}#v50-base-shell #panel-right {top:auto!important}}


/* ===================================================================
   BLOCO 5 — solos-v34-sidebar-glass-refino (V50 2029-2123)
   =================================================================== */

/* V34 — refinamento final: sidebars abaixo da topbar + glass liquid + CTA discreto */
#v50-base-shell {
  --v34-glass-bg: rgba(255,255,255,.62);
  --v34-glass-bg-strong: rgba(255,255,255,.74);
  --v34-glass-border: rgba(255,255,255,.88);
  --v34-line-soft: rgba(20,20,18,.075);
  --v34-shadow: 0 18px 60px rgba(18,18,14,.095), inset 0 1px 0 rgba(255,255,255,.92);
}
/* Sidebars descem e ficam claramente abaixo da barra superior */
#v50-base-shell #panel, #v50-base-shell #panel-right {
  top:118px!important;
  bottom:28px!important;
  background:linear-gradient(145deg,rgba(255,255,255,.74),rgba(248,247,241,.58))!important;
  border:1px solid var(--v34-glass-border)!important;
  box-shadow:var(--v34-shadow)!important;
  backdrop-filter:blur(34px) saturate(165%)!important;
  -webkit-backdrop-filter:blur(34px) saturate(165%)!important;
}
#v50-base-shell #view-controls {top:118px!important;}
#v50-base-shell #north {top:190px!important;}
/* Remove área do lote duplicada na sidebar esquerda */
#v50-base-shell #lote-area-inline {display:none!important;}
/* Evita duplicação de bairro/zoneamento: fica só o bloco compacto do ativo */
#v50-base-shell .v30-lote-source, #v50-base-shell .v30-lote-note {display:none!important;}
#v50-base-shell .lot-context-grid {grid-template-columns:1fr 1fr!important;gap:10px!important;margin-top:14px!important;}
#v50-base-shell .lot-context-card {
  background:linear-gradient(145deg,rgba(255,255,255,.68),rgba(250,249,244,.42))!important;
  border:1px solid rgba(255,255,255,.86)!important;
  box-shadow:0 14px 34px rgba(18,18,14,.055), inset 0 1px 0 rgba(255,255,255,.92)!important;
  border-radius:18px!important;
  backdrop-filter:blur(24px) saturate(150%)!important;
  -webkit-backdrop-filter:blur(24px) saturate(150%)!important;
  padding:15px 14px!important;
}
#v50-base-shell .lot-context-card span {font-size:9.5px!important;letter-spacing:.16em!important;color:rgba(40,40,36,.48)!important;}
#v50-base-shell .lot-context-card strong {font-size:16px!important;line-height:1.15!important;color:#181816!important;}
/* Cards pequenos com glass liquid / sem glow verde pesado */
#v50-base-shell .deal-card, #v50-base-shell .commercial-kpi-card, #v50-base-shell .dash-stat, #v50-base-shell .glass-card, #v50-base-shell .vgv-hero, #v50-base-shell .feasibility-note {
  background:linear-gradient(145deg,rgba(255,255,255,.70),rgba(250,249,244,.48))!important;
  border:1px solid rgba(255,255,255,.88)!important;
  box-shadow:0 14px 34px rgba(18,18,14,.055), inset 0 1px 0 rgba(255,255,255,.94)!important;
  backdrop-filter:blur(24px) saturate(155%)!important;
  -webkit-backdrop-filter:blur(24px) saturate(155%)!important;
}
#v50-base-shell .commercial-kpi-card.is-green, #v50-base-shell .vgv-hero {
  background:linear-gradient(145deg,rgba(255,255,255,.72),rgba(248,247,242,.52))!important;
  border-color:rgba(255,255,255,.88)!important;
}
#v50-base-shell .commercial-kpi-card.is-green::before, #v50-base-shell .vgv-hero::before {display:none!important;}
/* Dashboard: fontes menores e leitura mais premium */
#v50-base-shell #panel-right {font-size:12px!important;}
#v50-base-shell #panel-right .dash-title {font-size:21px!important;line-height:1.05!important;margin-bottom:6px!important;}
#v50-base-shell #panel-right .dash-subtitle {font-size:9.5px!important;letter-spacing:.14em!important;margin-bottom:18px!important;}
#v50-base-shell .deal-summary-grid {gap:9px!important;}
#v50-base-shell .deal-card {padding:13px 14px!important;border-radius:17px!important;}
#v50-base-shell .deal-card-label, #v50-base-shell .commercial-kpi-label, #v50-base-shell .vgv-hero-label, #v50-base-shell .vgv-price-label {font-size:9px!important;letter-spacing:.13em!important;}
#v50-base-shell .deal-card-value {font-size:21px!important;line-height:1.08!important;}
#v50-base-shell .deal-card-sub {font-size:10.5px!important;}
#v50-base-shell .deal-mix-bar {height:22px!important;border-radius:999px!important;font-size:11px!important;}
#v50-base-shell .deal-mix-values {font-size:10.5px!important;margin-top:7px!important;}
#v50-base-shell .vgv-hero {padding:17px 18px!important;border-radius:19px!important;}
#v50-base-shell .vgv-hero-amount {font-size:42px!important;line-height:.98!important;color:#181816!important;}
#v50-base-shell .vgv-hero-meta {font-size:12px!important;}
#v50-base-shell .vgv-price-value {font-size:22px!important;color:#181816!important;}
#v50-base-shell .vgv-price-value.solos {font-size:20px!important;color:#6b6b66!important;}
#v50-base-shell .commercial-kpi-grid {gap:10px!important;}
#v50-base-shell .commercial-kpi-card {padding:14px 15px!important;border-radius:18px!important;}
#v50-base-shell .commercial-kpi-value {font-size:28px!important;line-height:1.02!important;color:#181816!important;}
#v50-base-shell .commercial-kpi-sub {font-size:12px!important;line-height:1.35!important;}
#v50-base-shell .feasibility-note {font-size:12px!important;line-height:1.35!important;padding:13px 15px!important;border-radius:17px!important;}
#v50-base-shell .dash-section-title {font-size:10px!important;letter-spacing:.14em!important;}
#v50-base-shell .dash-stat {padding:10px 0!important;background:transparent!important;border:none!important;box-shadow:none!important;backdrop-filter:none!important;}
#v50-base-shell .dash-stat-label {font-size:12px!important;color:#7c7b74!important;}
#v50-base-shell .dash-stat-value {font-size:13px!important;font-weight:700!important;}
/* CTA lote a lote: menor e discreto */
#v50-base-shell .v32-study-cta {
  height:28px!important;
  padding:0 12px!important;
  bottom:18px!important;
  gap:6px!important;
  font-size:8.5px!important;
  letter-spacing:.12em!important;
  font-weight:800!important;
  opacity:.92!important;
  box-shadow:0 8px 22px rgba(183,243,76,.20), inset 0 1px 0 rgba(255,255,255,.76)!important;
  animation:v34PulseTiny 3.2s infinite!important;
}
#v50-base-shell .v32-study-cta .dot {width:5px!important;height:5px!important;}
@keyframes v34PulseTiny{0%{box-shadow:0 0 0 0 rgba(183,243,76,.28),0 8px 22px rgba(183,243,76,.18)}70%{box-shadow:0 0 0 7px rgba(183,243,76,0),0 8px 22px rgba(183,243,76,.18)}100%{box-shadow:0 0 0 0 rgba(183,243,76,0),0 8px 22px rgba(183,243,76,.18)}}
#v50-base-shell.v32-below-visible .v32-study-cta {opacity:.12!important;}
/* Mobile/tablet safeguard */
@media(max-width:1280px) {#v50-base-shell #panel, #v50-base-shell #panel-right {top:112px!important;}#v50-base-shell #view-controls {top:112px!important}#v50-base-shell .project-topbar .topbar-asset strong {max-width:180px!important}#v50-base-shell .deal-card-value {font-size:19px!important}#v50-base-shell .vgv-hero-amount {font-size:36px!important}#v50-base-shell .commercial-kpi-value {font-size:24px!important}}
@media(max-width:980px) {#v50-base-shell #panel {top:88px!important}#v50-base-shell #panel-right {top:auto!important}#v50-base-shell .v32-study-cta {height:30px!important}}


/* ===================================================================
   BLOCO 6 — solos-v35-polish-motion (V50 2126-2309)
   =================================================================== */

/* V35 — polish final: sidebars abaixo da topbar, motion suave, hover Apple e sliders vivos */
#v50-base-shell {
  --v35-top-offset: 136px;
  --v35-ease: cubic-bezier(.2,.8,.2,1);
  --v35-shadow-rest: 0 18px 60px rgba(18,18,14,.08), inset 0 1px 0 rgba(255,255,255,.92);
  --v35-shadow-hover: 0 26px 86px rgba(18,18,14,.12), 0 8px 24px rgba(18,18,14,.06), inset 0 1px 0 rgba(255,255,255,.96);
}

/* Libera a barra superior: sidebars mais baixas */
#v50-base-shell #panel, #v50-base-shell #panel-right {
  top: var(--v35-top-offset) !important;
  bottom: 28px !important;
  will-change: transform, opacity, box-shadow, backdrop-filter !important;
  transition:
    transform .42s var(--v35-ease),
    box-shadow .42s var(--v35-ease),
    background .42s var(--v35-ease),
    border-color .42s var(--v35-ease),
    backdrop-filter .42s var(--v35-ease) !important;
  box-shadow: var(--v35-shadow-rest) !important;
}
#v50-base-shell #view-controls { top: var(--v35-top-offset) !important; }
#v50-base-shell #north { top: calc(var(--v35-top-offset) + 72px) !important; }

/* Entrada suave das camadas */
#v50-base-shell .project-topbar {
  animation: v35TopbarIn .72s var(--v35-ease) both !important;
  will-change: transform, opacity, box-shadow !important;
  transition: box-shadow .35s var(--v35-ease), background .35s var(--v35-ease), transform .35s var(--v35-ease) !important;
}
#v50-base-shell #panel { animation: v35SidebarLeftIn .78s var(--v35-ease) .08s both !important; }
#v50-base-shell #panel-right { animation: v35SidebarRightIn .78s var(--v35-ease) .14s both !important; }
#v50-base-shell #view-controls { animation: v35FadeIn .7s var(--v35-ease) .18s both !important; }
#v50-base-shell .v32-study-cta { animation: v35CtaIn .75s var(--v35-ease) .28s both, v34PulseTiny 3.4s infinite 1.2s !important; }

@keyframes v35TopbarIn{
  from{ opacity:0; transform: translateY(-18px); filter: blur(10px); }
  to{ opacity:1; transform: translateY(0); filter: blur(0); }
}
@keyframes v35SidebarLeftIn{
  from{ opacity:0; transform: translateX(-22px) scale(.985); filter: blur(8px); }
  to{ opacity:1; transform: translateX(0) scale(1); filter: blur(0); }
}
@keyframes v35SidebarRightIn{
  from{ opacity:0; transform: translateX(22px) scale(.985); filter: blur(8px); }
  to{ opacity:1; transform: translateX(0) scale(1); filter: blur(0); }
}
@keyframes v35FadeIn{
  from{ opacity:0; transform: translateX(-50%) translateY(-8px); filter: blur(8px); }
  to{ opacity:1; transform: translateX(-50%) translateY(0); filter: blur(0); }
}
@keyframes v35CtaIn{
  from{ opacity:0; transform: translateX(-50%) translateY(16px) scale(.96); filter: blur(8px); }
  to{ opacity:.92; transform: translateX(-50%) translateY(0) scale(1); filter: blur(0); }
}

/* Hover inteligente tipo Apple: eleva, melhora blur e dá profundidade sem gritar */
#v50-base-shell #panel:hover, #v50-base-shell #panel-right:hover {
  transform: translateY(-3px) scale(1.004) !important;
  box-shadow: var(--v35-shadow-hover) !important;
  background: linear-gradient(145deg,rgba(255,255,255,.80),rgba(248,247,241,.62)) !important;
  border-color: rgba(255,255,255,.96) !important;
  backdrop-filter: blur(38px) saturate(178%) !important;
  -webkit-backdrop-filter: blur(38px) saturate(178%) !important;
}
#v50-base-shell .project-topbar:hover {
  transform: translateY(-1px) !important;
  box-shadow: 0 18px 58px rgba(16,16,12,.12), inset 0 1px 0 rgba(255,255,255,.95) !important;
  background: rgba(250,249,245,.88) !important;
}

/* Cards: micro elevação Apple */
#v50-base-shell .deal-card, #v50-base-shell .commercial-kpi-card, #v50-base-shell .glass-card, #v50-base-shell .vgv-hero, #v50-base-shell .lot-context-card, #v50-base-shell .padrao-chip, #v50-base-shell .below-card, #v50-base-shell .memorial-grid-final > div {
  transition: transform .32s var(--v35-ease), box-shadow .32s var(--v35-ease), background .32s var(--v35-ease), border-color .32s var(--v35-ease) !important;
  will-change: transform, box-shadow !important;
}
#v50-base-shell .deal-card:hover, #v50-base-shell .commercial-kpi-card:hover, #v50-base-shell .glass-card:hover, #v50-base-shell .vgv-hero:hover, #v50-base-shell .lot-context-card:hover, #v50-base-shell .padrao-chip:hover, #v50-base-shell .below-card:hover, #v50-base-shell .memorial-grid-final > div:hover {
  transform: translateY(-2px) scale(1.006) !important;
  box-shadow: 0 18px 46px rgba(18,18,14,.09), inset 0 1px 0 rgba(255,255,255,.96) !important;
  background: linear-gradient(145deg,rgba(255,255,255,.82),rgba(250,249,244,.56)) !important;
  border-color: rgba(255,255,255,.96) !important;
}

/* Sidebar direita ainda mais discreta */
#v50-base-shell #panel-right .dash-title { font-size:19px !important; }
#v50-base-shell #panel-right .dash-subtitle { font-size:9px !important; margin-bottom:14px !important; }
#v50-base-shell #panel-right .deal-card-label, #v50-base-shell #panel-right .commercial-kpi-label, #v50-base-shell #panel-right .vgv-hero-label, #v50-base-shell #panel-right .vgv-price-label, #v50-base-shell #panel-right .dash-section-title { font-size:8.5px !important; }
#v50-base-shell #panel-right .deal-card-value { font-size:19px !important; }
#v50-base-shell #panel-right .vgv-hero-amount { font-size:36px !important; }
#v50-base-shell #panel-right .vgv-price-value { font-size:20px !important; }
#v50-base-shell #panel-right .commercial-kpi-value { font-size:23px !important; }
#v50-base-shell #panel-right .commercial-kpi-sub, #v50-base-shell #panel-right .deal-card-sub, #v50-base-shell #panel-right .dash-stat-label, #v50-base-shell #panel-right .dash-stat-value { font-size:11px !important; }
#v50-base-shell #panel-right .deal-card, #v50-base-shell #panel-right .commercial-kpi-card, #v50-base-shell #panel-right .vgv-hero { padding:12px 13px !important; border-radius:16px !important; }

/* Microinterações de slider: track preenchido + thumb elástico */
#v50-base-shell input[type="range"] {
  --range-progress: 0%;
  appearance:none !important;
  -webkit-appearance:none !important;
  height:8px !important;
  border-radius:999px !important;
  outline:none !important;
  cursor:pointer !important;
  background: linear-gradient(90deg, var(--accent) 0%, var(--accent) var(--range-progress), rgba(0,0,0,.08) var(--range-progress), rgba(0,0,0,.08) 100%) !important;
  transition: filter .25s var(--v35-ease), opacity .25s var(--v35-ease), background .15s linear !important;
}
#v50-base-shell input[type="range"]:hover {
  filter: brightness(1.02) saturate(1.05) !important;
}
#v50-base-shell input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance:none !important;
  width:22px !important;
  height:22px !important;
  border-radius:50% !important;
  background:var(--accent) !important;
  border:3px solid #171713 !important;
  box-shadow: 0 0 0 6px rgba(195,234,79,.18), 0 10px 22px rgba(0,0,0,.22) !important;
  transition: transform .22s var(--v35-ease), box-shadow .22s var(--v35-ease), filter .22s var(--v35-ease) !important;
}
#v50-base-shell input[type="range"]::-webkit-slider-thumb:hover {
  transform: scale(1.12) !important;
  box-shadow: 0 0 0 9px rgba(195,234,79,.20), 0 12px 28px rgba(0,0,0,.24) !important;
}
#v50-base-shell input[type="range"].is-sliding::-webkit-slider-thumb, #v50-base-shell input[type="range"]:active::-webkit-slider-thumb {
  transform: scale(1.22) !important;
  box-shadow: 0 0 0 12px rgba(195,234,79,.22), 0 14px 34px rgba(0,0,0,.26) !important;
}
#v50-base-shell input[type="range"]::-moz-range-thumb {
  width:22px !important;
  height:22px !important;
  border-radius:50% !important;
  background:var(--accent) !important;
  border:3px solid #171713 !important;
  box-shadow: 0 0 0 6px rgba(195,234,79,.18), 0 10px 22px rgba(0,0,0,.22) !important;
  transition: transform .22s var(--v35-ease), box-shadow .22s var(--v35-ease) !important;
}
#v50-base-shell input[type="range"].is-sliding::-moz-range-thumb, #v50-base-shell input[type="range"]:active::-moz-range-thumb { transform: scale(1.22) !important; }

/* Botão lote a lote menor e mais discreto */
#v50-base-shell .v32-study-cta {
  height:24px !important;
  padding:0 10px !important;
  font-size:7.8px !important;
  letter-spacing:.10em !important;
  bottom:16px !important;
}
#v50-base-shell .v32-study-cta .dot { width:4px !important; height:4px !important; }

@media (prefers-reduced-motion: reduce) {
  #v50-base-shell, #v50-base-shell *, #v50-base-shell *::before, #v50-base-shell *::after { animation:none !important; transition:none !important; }
}
@media(max-width:1280px) {
  #v50-base-shell #panel, #v50-base-shell #panel-right { top:118px !important; }
  #v50-base-shell #view-controls { top:118px !important; }
}


/* ===================================================================
   BLOCO 7 — solos-v26-plantas-alma-patch (V50 14528-14835)
   =================================================================== */

  /* v26 — limpeza do HUD principal */
#v50-base-shell #view-controls .view-btn[data-view="topo"], #v50-base-shell #view-controls .view-btn[data-view="lat"], #v50-base-shell #btn-alma-mode, #v50-base-shell #btn-diagrama-mode, #v50-base-shell #legend { display:none !important; }
  #v50-base-shell #view-controls { gap:8px; padding:5px; }
  #v50-base-shell #btn-planta-mode::after { content:' 2D'; opacity:.65; font-weight:600; }
  #v50-base-shell #btn-recuos-wire-mode::after { content:' limpos'; opacity:.65; font-weight:600; }

  /* v26 — editor de plantas com linguagem Alma */
#v50-base-shell #planta-editor { background:#f2eee4 !important; }
  #v50-base-shell #planta-editor .pe-topbar {
    background:rgba(247,244,235,.88) !important;
    border-bottom:1px solid rgba(20,20,18,.10) !important;
    box-shadow:0 10px 24px rgba(20,20,18,.05);
  }
  #v50-base-shell #planta-editor .pe-body { background:#f2eee4 !important; }
  #v50-base-shell #planta-editor .pe-canvas-wrap {
    background:#eee9dd !important;
    background-image:radial-gradient(rgba(20,20,18,.035) 1px, transparent 1px) !important;
    background-size:20px 20px !important;
  }
  #v50-base-shell #planta-editor .pe-sidebar {
    background:rgba(247,244,235,.72) !important;
    border-color:rgba(20,20,18,.08) !important;
  }
  #v50-base-shell #planta-editor #pe-svg { background:transparent !important; }
  #v50-base-shell #planta-editor .pe-grid { stroke:rgba(20,20,18,.025) !important; }
  #v50-base-shell #planta-editor .pe-grid-major { stroke:rgba(20,20,18,.045) !important; }
  #v50-base-shell #planta-editor .pe-lote-bg { fill:rgba(255,255,255,.38) !important; stroke:rgba(20,20,18,.25) !important; stroke-width:1.2 !important; }
  #v50-base-shell #planta-editor .pe-lote-bg.faded { opacity:.18 !important; filter:blur(.35px); }
  #v50-base-shell #planta-editor .pe-laje {
    fill:rgba(255,252,245,.95) !important;
    stroke:#111 !important;
    stroke-width:3.2 !important;
    filter:drop-shadow(0 14px 14px rgba(20,20,18,.12));
  }
  #v50-base-shell #planta-editor .pe-laje-ghost { fill:rgba(255,252,245,.12) !important; stroke:rgba(20,20,18,.16) !important; stroke-width:.8 !important; stroke-dasharray:6 5 !important; }
  #v50-base-shell #planta-editor .pe-cone-env { stroke:rgba(220,38,38,.22) !important; stroke-width:1 !important; stroke-dasharray:7 5 !important; }
  #v50-base-shell #planta-editor .pe-cone-env-label, #v50-base-shell #planta-editor .pe-h-disp-label { opacity:.58; }
  #v50-base-shell #planta-editor .pe-room {
    stroke:#111 !important;
    stroke-width:2.1 !important;
    filter:drop-shadow(0 8px 9px rgba(20,20,18,.13));
  }
  #v50-base-shell #planta-editor .pe-room-label { font-size:15px !important; font-weight:800 !important; letter-spacing:.06em !important; }
  #v50-base-shell #planta-editor .pe-room-area { font-size:10px !important; }
  #v50-base-shell #planta-editor .pe-rua, #v50-base-shell #planta-editor .pe-calcada { opacity:.55; }
  #v50-base-shell #planta-editor .pe-rua.faded, #v50-base-shell #planta-editor .pe-calcada.faded { opacity:.18; }
  #v50-base-shell #planta-editor .pe-chip.disabled {
    opacity:.32 !important;
    pointer-events:none !important;
    filter:grayscale(1);
  }
  #v50-base-shell #planta-editor .pe-chip.disabled::after {
    content:' indisponível';
    font-size:9px;
    opacity:.65;
    margin-left:5px;
    text-transform:none;
    letter-spacing:0;
  }
  #v50-base-shell #planta-editor .pe-tool[data-tool="delete"] { display:none !important; }
  #v50-base-shell #planta-editor .pe-tools {
    gap:8px !important;
    align-items:center;
  }
  #v50-base-shell #planta-editor .pe-tool {
    width:auto !important;
    min-width:110px !important;
    height:36px !important;
    padding:0 12px !important;
    border-radius:999px !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    gap:7px !important;
    font-size:12px !important;
    font-family:'Jost', sans-serif !important;
    font-weight:700 !important;
    letter-spacing:.02em;
  }
  #v50-base-shell #planta-editor .pe-tool.active {
    background:#c3ea4f !important;
    border-color:#111 !important;
    color:#111 !important;
    box-shadow:0 0 0 4px rgba(195,234,79,.22);
  }
  #v50-base-shell #planta-editor .pe-tool .pe-tool-ico { font-size:15px; line-height:1; }
  #v50-base-shell #planta-editor .pe-tool .pe-tool-txt { white-space:nowrap; }
  #v50-base-shell #planta-editor .pe-info { min-width:180px !important; }
  #v50-base-shell #pe-north-rotator {
    position:absolute;
    right:30px;
    top:74px;
    z-index:50;
    display:flex;
    align-items:center;
    gap:7px;
    padding:7px 9px;
    border-radius:999px;
    border:1px solid rgba(20,20,18,.14);
    background:rgba(247,244,235,.82);
    backdrop-filter:blur(12px);
    box-shadow:0 10px 28px rgba(20,20,18,.08);
  }
  #v50-base-shell #pe-north-rotator button {
    width:30px;height:30px;border-radius:999px;border:1px solid rgba(20,20,18,.18);
    background:#fffdf7;color:#111;cursor:pointer;font-weight:800;font-size:14px;
  }
  #v50-base-shell #pe-north-rotator .north-label { font-size:10px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:rgba(20,20,18,.58); }
  #v50-base-shell #pe-north-rotator .north-angle { min-width:34px; text-align:center; font-family:'DM Mono', monospace; font-size:10px; color:rgba(20,20,18,.55); }
  #v50-base-shell #pe-north-rotator .north-dial {
    width:38px;height:38px;border-radius:999px;border:2px solid #111;display:flex;align-items:center;justify-content:center;font-weight:900;background:#fffdf7;
    transform:rotate(var(--north-rotation,0deg));
  }
  #v50-base-shell .solos-v26-penthouse-card {
    padding:14px;
    border:1px solid rgba(0,0,0,.08);
    border-radius:14px;
    background:rgba(255,255,255,.55);
    margin-top:10px;
  }
  #v50-base-shell .solos-v26-penthouse-card .hint { font-size:10px; color:var(--ink-3); line-height:1.45; margin-top:8px; }


  /* =========================================================
     V29 · Floating UI + Lime System
     - mapa/3D ocupa todo o background
     - painéis laterais viram cards soltos em glassmorphism
     - verde escuro substituído pelo lime do slider
     - remove a duplicidade do preço/m²: mantém apenas Preço Venda m²
     ========================================================= */
#v50-base-shell {
    --lime:#C3EA4F;
    --lime-strong:#B7F34A;
    --lime-soft:rgba(195,234,79,.18);
    --lime-stroke:rgba(195,234,79,.42);
    --floating-panel:rgba(250,249,245,.76);
    --floating-border:rgba(255,255,255,.84);
    --floating-shadow:0 28px 80px rgba(15,15,12,.12), 0 8px 22px rgba(15,15,12,.07), inset 0 1px 0 rgba(255,255,255,.88);
  }

  #v50-base-shell #app {
    display:block !important;
    position:fixed;
    inset:0;
    overflow:hidden;
    background:var(--bg);
  }

  #v50-base-shell #viewport {
    position:fixed !important;
    inset:0 !important;
    width:100vw !important;
    height:100vh !important;
    z-index:0 !important;
    background:var(--bg) !important;
  }

  #v50-base-shell #three-canvas {
    width:100vw !important;
    height:100vh !important;
  }

  #v50-base-shell #panel, #v50-base-shell #panel-right {
    position:absolute !important;
    top:22px !important;
    bottom:22px !important;
    z-index:20 !important;
    border:1px solid var(--floating-border) !important;
    border-radius:28px !important;
    background:linear-gradient(145deg, rgba(255,255,255,.80), var(--floating-panel)) !important;
    backdrop-filter:blur(34px) saturate(160%) !important;
    -webkit-backdrop-filter:blur(34px) saturate(160%) !important;
    box-shadow:var(--floating-shadow) !important;
    overflow-y:auto !important;
    overflow-x:hidden !important;
  }

  #v50-base-shell #panel {
    left:22px !important;
    width:min(348px, calc(50vw - 42px)) !important;
    border-right:1px solid var(--floating-border) !important;
    padding:24px 22px 32px !important;
  }

  #v50-base-shell #panel-right {
    right:22px !important;
    width:min(356px, calc(50vw - 42px)) !important;
    border-left:1px solid var(--floating-border) !important;
    padding:24px 20px 32px !important;
  }

  #v50-base-shell #panel:hover, #v50-base-shell #panel-right:hover {
    box-shadow:0 34px 92px rgba(15,15,12,.14), 0 10px 26px rgba(15,15,12,.08), inset 0 1px 0 rgba(255,255,255,.92) !important;
  }

  #v50-base-shell #viewbar {
    z-index:30 !important;
    top:22px !important;
  }

  #v50-base-shell #hud, #v50-base-shell #legend {
    z-index:12 !important;
  }

  /* Lime replaces dark green accents */
#v50-base-shell .vgv-hero-amount, #v50-base-shell .vgv-price-label, #v50-base-shell .vgv-price-value, #v50-base-shell .commercial-kpi-card.is-green .commercial-kpi-value, #v50-base-shell .feasibility-note, #v50-base-shell .padrao-chip.active .padrao-name, #v50-base-shell .street-status, #v50-base-shell .opt-status b, #v50-base-shell .memorial-result strong, #v50-base-shell .ca-total-card .ca-label, #v50-base-shell .ca-total-card #dash-ca-total-coef, #v50-base-shell #dash-ca-total-coef, #v50-base-shell #dash-torreR-pavs, #v50-base-shell #dash-total-vendavel, #v50-base-shell .deal-mix-values .cash {
    color:var(--lime-strong) !important;
  }

  #v50-base-shell .vgv-hero {
    border-color:var(--lime-stroke) !important;
    background:rgba(255,255,255,.78) !important;
    box-shadow:0 1px 3px rgba(0,0,0,.04), 0 8px 24px rgba(0,0,0,.05), inset 0 1px 0 rgba(255,255,255,.92) !important;
  }

  #v50-base-shell .commercial-kpi-card.is-green, #v50-base-shell .feasibility-note, #v50-base-shell .street-status, #v50-base-shell .section:has(#btn-sr-toggle) #btn-sr-toggle {
    background:linear-gradient(135deg, rgba(195,234,79,.16), rgba(255,255,255,.70)) !important;
    border-color:var(--lime-stroke) !important;
  }

  #v50-base-shell .padrao-chip.active {
    border-color:var(--lime-stroke) !important;
    box-shadow:0 0 0 1px rgba(195,234,79,.22), 0 14px 34px rgba(195,234,79,.10) !important;
  }

  #v50-base-shell .deal-mix-cash {
    background:linear-gradient(90deg, var(--lime-strong), var(--lime)) !important;
    color:#1a1a17 !important;
  }

  #v50-base-shell input[type="range"]::-webkit-slider-thumb, #v50-base-shell .vgv-ticket-slider::-webkit-slider-thumb {
    background:var(--lime) !important;
    border-color:#1a1a17 !important;
    box-shadow:0 0 0 4px rgba(195,234,79,.18), 0 8px 18px rgba(0,0,0,.20) !important;
  }
  #v50-base-shell input[type="range"]::-moz-range-thumb, #v50-base-shell .vgv-ticket-slider::-moz-range-thumb {
    background:var(--lime) !important;
    border-color:#1a1a17 !important;
    box-shadow:0 0 0 4px rgba(195,234,79,.18), 0 8px 18px rgba(0,0,0,.20) !important;
  }

  /* V29: keep only one editable m² price. Hide Solos comparison and remove duplicate text area. */
#v50-base-shell .vgv-hero-price-grid {
    grid-template-columns:1fr !important;
    gap:0 !important;
  }
  #v50-base-shell .vgv-hero-price-grid > div:nth-child(2) {
    display:none !important;
  }
  #v50-base-shell #dash-vgv-hero-precom2 {
    display:none !important;
  }
  #v50-base-shell .vgv-hero-meta .vgv-hero-sep {
    display:none !important;
  }
  #v50-base-shell #dash-vgv-ticket-display {
    color:var(--lime-strong) !important;
    font-size:24px !important;
    letter-spacing:-.02em !important;
  }
  #v50-base-shell .vgv-price-label {
    color:var(--ink-3) !important;
  }

  /* Floating panels responsive: on narrow screens stack as bottom sheets */
  @media (max-width: 980px) {
    #v50-base-shell #panel, #v50-base-shell #panel-right {
      width:calc(100vw - 28px) !important;
      left:14px !important;
      right:auto !important;
      max-height:42vh !important;
    }
    #v50-base-shell #panel { top:14px !important; bottom:auto !important; }
    #v50-base-shell #panel-right { top:auto !important; bottom:14px !important; }
  }



/* ===================================================================
   BLOCO 8 — solos-v28-plantas-inteligentes-style (V50 15125-15312)
   =================================================================== */

  /* V28 — plantas inteligentes + acabamento Alma */
#v50-base-shell #planta-editor .pe-tool-auto {min-width:130px !important;background:rgba(195,234,79,.18) !important;border:1px solid rgba(17,17,17,.22) !important;color:#111 !important;font-weight:800 !important;}
  #v50-base-shell #planta-editor .pe-tool-auto::before { content:'✦'; margin-right:6px; }
  #v50-base-shell #planta-editor .pe-room[data-ai="1"] { filter:drop-shadow(0 10px 13px rgba(20,20,18,.12)); }
  #v50-base-shell #planta-editor .pe-room-label { paint-order:stroke; stroke:#fffaf0; stroke-width:3px; stroke-linejoin:round; }
  #v50-base-shell #planta-editor .pe-room-area { paint-order:stroke; stroke:#fffaf0; stroke-width:2px; stroke-linejoin:round; }
  #v50-base-shell #planta-editor .pe-smart-note {position:absolute; left:50%; bottom:22px; transform:translateX(-50%);z-index:60; padding:9px 14px; border-radius:999px;background:rgba(17,17,17,.72); color:#fff; font-size:11px; letter-spacing:.02em;box-shadow:0 12px 30px rgba(17,17,17,.16); pointer-events:none;}
  #v50-base-shell #planta-editor .pe-chip.ai-ready::before {content:'●'; color:#79b90f; margin-right:5px; font-size:8px; vertical-align:middle;}


  /* =========================================================
     V29 · Floating UI + Lime System
     - mapa/3D ocupa todo o background
     - painéis laterais viram cards soltos em glassmorphism
     - verde escuro substituído pelo lime do slider
     - remove a duplicidade do preço/m²: mantém apenas Preço Venda m²
     ========================================================= */
#v50-base-shell {
    --lime:#C3EA4F;
    --lime-strong:#B7F34A;
    --lime-soft:rgba(195,234,79,.18);
    --lime-stroke:rgba(195,234,79,.42);
    --floating-panel:rgba(250,249,245,.76);
    --floating-border:rgba(255,255,255,.84);
    --floating-shadow:0 28px 80px rgba(15,15,12,.12), 0 8px 22px rgba(15,15,12,.07), inset 0 1px 0 rgba(255,255,255,.88);
  }

  #v50-base-shell #app {
    display:block !important;
    position:fixed;
    inset:0;
    overflow:hidden;
    background:var(--bg);
  }

  #v50-base-shell #viewport {
    position:fixed !important;
    inset:0 !important;
    width:100vw !important;
    height:100vh !important;
    z-index:0 !important;
    background:var(--bg) !important;
  }

  #v50-base-shell #three-canvas {
    width:100vw !important;
    height:100vh !important;
  }

  #v50-base-shell #panel, #v50-base-shell #panel-right {
    position:absolute !important;
    top:22px !important;
    bottom:22px !important;
    z-index:20 !important;
    border:1px solid var(--floating-border) !important;
    border-radius:28px !important;
    background:linear-gradient(145deg, rgba(255,255,255,.80), var(--floating-panel)) !important;
    backdrop-filter:blur(34px) saturate(160%) !important;
    -webkit-backdrop-filter:blur(34px) saturate(160%) !important;
    box-shadow:var(--floating-shadow) !important;
    overflow-y:auto !important;
    overflow-x:hidden !important;
  }

  #v50-base-shell #panel {
    left:22px !important;
    width:min(348px, calc(50vw - 42px)) !important;
    border-right:1px solid var(--floating-border) !important;
    padding:24px 22px 32px !important;
  }

  #v50-base-shell #panel-right {
    right:22px !important;
    width:min(356px, calc(50vw - 42px)) !important;
    border-left:1px solid var(--floating-border) !important;
    padding:24px 20px 32px !important;
  }

  #v50-base-shell #panel:hover, #v50-base-shell #panel-right:hover {
    box-shadow:0 34px 92px rgba(15,15,12,.14), 0 10px 26px rgba(15,15,12,.08), inset 0 1px 0 rgba(255,255,255,.92) !important;
  }

  #v50-base-shell #viewbar {
    z-index:30 !important;
    top:22px !important;
  }

  #v50-base-shell #hud, #v50-base-shell #legend {
    z-index:12 !important;
  }

  /* Lime replaces dark green accents */
#v50-base-shell .vgv-hero-amount, #v50-base-shell .vgv-price-label, #v50-base-shell .vgv-price-value, #v50-base-shell .commercial-kpi-card.is-green .commercial-kpi-value, #v50-base-shell .feasibility-note, #v50-base-shell .padrao-chip.active .padrao-name, #v50-base-shell .street-status, #v50-base-shell .opt-status b, #v50-base-shell .memorial-result strong, #v50-base-shell .ca-total-card .ca-label, #v50-base-shell .ca-total-card #dash-ca-total-coef, #v50-base-shell #dash-ca-total-coef, #v50-base-shell #dash-torreR-pavs, #v50-base-shell #dash-total-vendavel, #v50-base-shell .deal-mix-values .cash {
    color:var(--lime-strong) !important;
  }

  #v50-base-shell .vgv-hero {
    border-color:var(--lime-stroke) !important;
    background:rgba(255,255,255,.78) !important;
    box-shadow:0 1px 3px rgba(0,0,0,.04), 0 8px 24px rgba(0,0,0,.05), inset 0 1px 0 rgba(255,255,255,.92) !important;
  }

  #v50-base-shell .commercial-kpi-card.is-green, #v50-base-shell .feasibility-note, #v50-base-shell .street-status, #v50-base-shell .section:has(#btn-sr-toggle) #btn-sr-toggle {
    background:linear-gradient(135deg, rgba(195,234,79,.16), rgba(255,255,255,.70)) !important;
    border-color:var(--lime-stroke) !important;
  }

  #v50-base-shell .padrao-chip.active {
    border-color:var(--lime-stroke) !important;
    box-shadow:0 0 0 1px rgba(195,234,79,.22), 0 14px 34px rgba(195,234,79,.10) !important;
  }

  #v50-base-shell .deal-mix-cash {
    background:linear-gradient(90deg, var(--lime-strong), var(--lime)) !important;
    color:#1a1a17 !important;
  }

  #v50-base-shell input[type="range"]::-webkit-slider-thumb, #v50-base-shell .vgv-ticket-slider::-webkit-slider-thumb {
    background:var(--lime) !important;
    border-color:#1a1a17 !important;
    box-shadow:0 0 0 4px rgba(195,234,79,.18), 0 8px 18px rgba(0,0,0,.20) !important;
  }
  #v50-base-shell input[type="range"]::-moz-range-thumb, #v50-base-shell .vgv-ticket-slider::-moz-range-thumb {
    background:var(--lime) !important;
    border-color:#1a1a17 !important;
    box-shadow:0 0 0 4px rgba(195,234,79,.18), 0 8px 18px rgba(0,0,0,.20) !important;
  }

  /* V29: keep only one editable m² price. Hide Solos comparison and remove duplicate text area. */
#v50-base-shell .vgv-hero-price-grid {
    grid-template-columns:1fr !important;
    gap:0 !important;
  }
  #v50-base-shell .vgv-hero-price-grid > div:nth-child(2) {
    display:none !important;
  }
  #v50-base-shell #dash-vgv-hero-precom2 {
    display:none !important;
  }
  #v50-base-shell .vgv-hero-meta .vgv-hero-sep {
    display:none !important;
  }
  #v50-base-shell #dash-vgv-ticket-display {
    color:var(--lime-strong) !important;
    font-size:24px !important;
    letter-spacing:-.02em !important;
  }
  #v50-base-shell .vgv-price-label {
    color:var(--ink-3) !important;
  }

  /* Floating panels responsive: on narrow screens stack as bottom sheets */
  @media (max-width: 980px) {
    #v50-base-shell #panel, #v50-base-shell #panel-right {
      width:calc(100vw - 28px) !important;
      left:14px !important;
      right:auto !important;
      max-height:42vh !important;
    }
    #v50-base-shell #panel { top:14px !important; bottom:auto !important; }
    #v50-base-shell #panel-right { top:auto !important; bottom:14px !important; }
  }



/* ===================================================================
   BLOCO 9 — solos-v30-lapide-clean (V50 15346-15367)
   =================================================================== */

  #v50-base-shell { --lime:#c3ea4f; --lime-strong:#a9ee35; --lime-stroke:rgba(195,234,79,.48); }
  #v50-base-shell .v30-lote-source {display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px;}
  #v50-base-shell .v30-lote-card {padding:12px 14px;border-radius:16px;background:rgba(255,255,255,.68);border:1px solid rgba(0,0,0,.06);box-shadow:inset 0 1px 0 rgba(255,255,255,.86),0 10px 26px rgba(0,0,0,.035);}
  #v50-base-shell .v30-lote-label {font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:4px;}
  #v50-base-shell .v30-lote-value {font-size:17px;font-weight:700;color:var(--ink);}
  #v50-base-shell .v30-lote-chip {margin-top:10px;display:flex;align-items:center;justify-content:center;width:100%;padding:12px 14px;border-radius:16px;border:1px solid var(--lime-stroke);background:linear-gradient(135deg,rgba(195,234,79,.94),rgba(195,234,79,.78));color:#182008;font-weight:800;letter-spacing:.05em;text-transform:uppercase;box-shadow:0 12px 28px rgba(195,234,79,.18),inset 0 1px 0 rgba(255,255,255,.65);}
  #v50-base-shell .v30-lote-note {margin-top:8px;font-size:11px;line-height:1.35;color:var(--ink-3);}
  #v50-base-shell #panel .section:has(.sr-card) {background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important;}
  #v50-base-shell #panel .section:has(.sr-card)>.section-title {padding:0 2px 10px!important;}
  #v50-base-shell .sr-card {margin:0!important;border-radius:24px!important;background:rgba(255,255,255,.72)!important;border:1px solid rgba(0,0,0,.08)!important;box-shadow:0 18px 42px rgba(0,0,0,.05),inset 0 1px 0 rgba(255,255,255,.88)!important;}
  #v50-base-shell .vgv-hero, #v50-base-shell .commercial-kpi-card.is-green, #v50-base-shell .feasibility-note, #v50-base-shell .street-status {background:rgba(255,255,255,.72)!important;border-color:rgba(0,0,0,.08)!important;box-shadow:0 14px 34px rgba(0,0,0,.045),inset 0 1px 0 rgba(255,255,255,.86)!important;}
  #v50-base-shell .vgv-hero-amount, #v50-base-shell .vgv-price-value, #v50-base-shell .commercial-kpi-card.is-green .commercial-kpi-value, #v50-base-shell .deal-mix-values .cash {color:#1a1a17!important;}
  #v50-base-shell .vgv-price-label, #v50-base-shell .commercial-kpi-card.is-green .commercial-kpi-label {color:var(--ink-3)!important;}
  #v50-base-shell .vgv-hero {border-left:4px solid var(--lime)!important;}
  #v50-base-shell .commercial-kpi-card.is-green {border-left:3px solid var(--lime)!important;}
  #v50-base-shell .deal-mix-cash {background:var(--lime)!important;color:#1a1a17!important;}
  #v50-base-shell #view-controls {position:absolute!important;top:22px!important;left:50%!important;right:auto!important;transform:translateX(-50%)!important;max-width:min(640px,calc(100vw - 850px))!important;width:max-content!important;justify-content:center!important;flex-wrap:wrap!important;z-index:45!important;}
  @media(max-width:1200px) {#v50-base-shell #view-controls {max-width:calc(100vw - 40px)!important;top:12px!important;}}
  #v50-base-shell .v30-hidden-terreno {display:none!important;}
  #v50-base-shell #legend {display:none!important;}


/* ===================================================================
   BLOCO 10 — solos-v39-planta-sync-refino-css (V50 15421-15451)
   =================================================================== */

/* 1) Dashboard: remove a sombra/halo verde dos cards menores */
#v50-base-shell #panel-right .commercial-kpi-card.is-green, #v50-base-shell #panel-right .commercial-kpi-card, #v50-base-shell #panel-right .vgv-hero, #v50-base-shell #panel-right .deal-card {
  box-shadow: 0 10px 28px rgba(20,20,16,.045), inset 0 1px 0 rgba(255,255,255,.82) !important;
}
#v50-base-shell #panel-right .commercial-kpi-card.is-green {
  border-left: 1px solid rgba(0,0,0,.045) !important;
  background: rgba(255,255,255,.54) !important;
}
#v50-base-shell #panel-right .commercial-kpi-card.is-green .commercial-kpi-value {
  color: #141412 !important;
}
/* 2) Remove indicação de norte do 3D; mantém o controle de norte do editor 2D */
#v50-base-shell:not(.planta-open) #north { display:none !important; }
/* 3) Planta: labels menores e mais editoriais, para não poluir */
#v50-base-shell #planta-editor .pe-room-label {
  font-size: 10.5px !important;
  letter-spacing: .045em !important;
  font-weight: 800 !important;
}
#v50-base-shell #planta-editor .pe-room-area {
  font-size: 8px !important;
  opacity: .76 !important;
}
#v50-base-shell #planta-editor .pe-recuo-label { opacity:.32!important; font-size:7px!important; }
/* 4) Badges no topo do editor menos repetitivos */
#v50-base-shell #planta-editor .pe-topbar::after { content:'planta sincronizada ao 3D' !important; }


/* ===================================================================
   BLOCO 11 — solos-v40-terreo-norte-css (V50 15727-15737)
   =================================================================== */

  #v50-base-shell #pe-north-rotator {
    top:auto!important;
    right:28px!important;
    bottom:86px!important;
    z-index:46!important;
  }
  #v50-base-shell #pe-north-rotator .north-label {font-size:9px!important;}
  #v50-base-shell #pe-north-rotator button {width:28px!important;height:28px!important;}
  #v50-base-shell #pe-north-rotator .north-dial {width:34px!important;height:34px!important;}


/* ===================================================================
   BLOCO 12 — v41-sidebar-order-refino (V50 15753-15774)
   =================================================================== */

/* V41 — refinamento sidebar esquerda + ordem dashboard */
#v50-base-shell #panel > .section:first-of-type > .section-title { display:none !important; }
#v50-base-shell #panel .brand .ver {
  font-size: 13px !important;
  letter-spacing: .12em !important;
  text-transform: none !important;
  color: rgba(28,28,24,.58) !important;
}
#v50-base-shell #panel .brand h1 { margin-bottom:2px !important; }
#v50-base-shell #panel .preset-row { margin-top: 14px !important; }
/* Produto estimado fica abaixo da soma dos incentivos: reduzir peso visual para virar apoio técnico */
#v50-base-shell #panel-right .produto-estimado {
  margin-top: 12px !important;
  background: rgba(255,255,255,.48) !important;
  border: 1px solid rgba(0,0,0,.055) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.80), 0 10px 28px rgba(18,18,14,.035) !important;
}
#v50-base-shell #panel-right .produto-estimado .produto-card {
  background: rgba(255,255,255,.52) !important;
}


/* ===================================================================
   BLOCO 13 — solos-v42-plan-fixes-css (V50 15904-15941)
   =================================================================== */

  #v50-base-shell .pe-v42-zone-label {
    font-family:'Jost',sans-serif;
    font-weight:800;
    font-size:12px;
    text-transform:uppercase;
    letter-spacing:.04em;
    fill:#141412;
    pointer-events:none;
    paint-order:stroke;
    stroke:rgba(255,255,255,.92);
    stroke-width:4px;
  }
  #v50-base-shell .pe-v42-sub {
    font-family:'DM Mono',ui-monospace,monospace;
    font-size:8.5px;
    fill:#5c5a52;
    pointer-events:none;
    paint-order:stroke;
    stroke:rgba(255,255,255,.92);
    stroke-width:3px;
  }
  #v50-base-shell .v42-note {
    position:absolute;
    left:50%;
    bottom:52px;
    transform:translateX(-50%);
    background:rgba(20,20,18,.88);
    color:#f6f3ea;
    padding:8px 14px;
    border-radius:999px;
    font-family:'Jost',sans-serif;
    font-size:11px;
    z-index:30;
    pointer-events:none;
    box-shadow:0 10px 28px rgba(0,0,0,.18);
  }


/* ===================================================================
   BLOCO 14 — solos-v43-force-plan-css (V50 16253-16260)
   =================================================================== */

  #v50-base-shell #pe-auto-plan.v43-active {
    background:#C3EA4F !important;
    color:#1a1a17 !important;
    border-color:#1a1a17 !important;
    font-weight:900 !important;
  }


/* ===================================================================
   BLOCO 15 — solos-v49-css (V50 16553-16598)
   =================================================================== */

  #v50-base-shell #pe-auto-plan {
    background:#C3EA4F !important;
    color:#141412 !important;
    border-color:#141412 !important;
    font-weight:900 !important;
    min-width:165px !important;
  }
  #v50-base-shell #pe-front-controls-v49 {
    display:flex;
    align-items:center;
    gap:6px;
    margin-left:8px;
  }
  #v50-base-shell #pe-front-controls-v49 button {
    height:36px;
    padding:0 11px;
    border-radius:999px;
    border:1px solid rgba(0,0,0,.12);
    background:rgba(255,255,255,.74);
    font-family:'Jost',sans-serif;
    font-size:10px;
    font-weight:800;
    cursor:pointer;
    color:#1a1a17;
  }
  #v50-base-shell #pe-front-controls-v49 button.active {
    background:#141412;
    color:#f5f3ec;
    border-color:#141412;
  }
  #v50-base-shell .pe-v49-note {
    position:fixed;
    left:50%;
    bottom:58px;
    transform:translateX(-50%);
    z-index:2147483647;
    background:rgba(20,20,18,.92);
    color:#f6f3ea;
    padding:9px 16px;
    border-radius:999px;
    font:700 11px Jost,sans-serif;
    box-shadow:0 12px 30px rgba(0,0,0,.24);
    pointer-events:none;
  }


/* ===================================================================
   BLOCO 16 — solos-v36-topbar-sidebars-fontfix (V50 17314-17346)
   =================================================================== */

#v50-base-shell {--v36-sidebar-top:154px;}
#v50-base-shell .project-topbar {position:fixed!important;top:18px!important;left:24px!important;right:24px!important;height:54px!important;z-index:5000!important;transform:none!important;isolation:isolate!important;}
#v50-base-shell .project-topbar:hover {transform:translateY(-1px)!important;}
#v50-base-shell #panel, #v50-base-shell #panel-right {top:var(--v36-sidebar-top)!important;bottom:28px!important;z-index:120!important;}
#v50-base-shell #view-controls {top:calc(var(--v36-sidebar-top) + 2px)!important;z-index:150!important;}
#v50-base-shell #north {top:calc(var(--v36-sidebar-top) + 74px)!important;}
#v50-base-shell #panel-right {font-size:10.5px!important;line-height:1.25!important;}
#v50-base-shell #panel-right .dash-title {font-size:17px!important;line-height:1!important;margin:0 0 5px!important;}
#v50-base-shell #panel-right .dash-subtitle {font-size:8px!important;letter-spacing:.13em!important;margin-bottom:12px!important;}
#v50-base-shell #panel-right .deal-summary-grid {gap:7px!important;}
#v50-base-shell #panel-right .deal-card, #v50-base-shell #panel-right .commercial-kpi-card, #v50-base-shell #panel-right .vgv-hero {padding:10px 11px!important;border-radius:14px!important;}
#v50-base-shell #panel-right .deal-card-label, #v50-base-shell #panel-right .commercial-kpi-label, #v50-base-shell #panel-right .vgv-hero-label, #v50-base-shell #panel-right .vgv-price-label, #v50-base-shell #panel-right .dash-section-title {font-size:7.6px!important;letter-spacing:.12em!important;line-height:1.15!important;}
#v50-base-shell #panel-right .deal-card-value {font-size:16.5px!important;line-height:1!important;letter-spacing:-.02em!important;}
#v50-base-shell #panel-right .deal-card-sub {font-size:9px!important;}
#v50-base-shell #panel-right .deal-mix-bar {height:18px!important;font-size:9.5px!important;}
#v50-base-shell #panel-right .deal-mix-values {font-size:9px!important;}
#v50-base-shell #panel-right .vgv-hero {padding:13px 14px!important;}
#v50-base-shell #panel-right .vgv-hero-amount {font-size:30px!important;line-height:.96!important;letter-spacing:-.045em!important;}
#v50-base-shell #panel-right .vgv-hero-meta {font-size:10px!important;}
#v50-base-shell #panel-right .vgv-price-value {font-size:17px!important;line-height:1.05!important;}
#v50-base-shell #panel-right .vgv-price-value.solos {font-size:15.5px!important;}
#v50-base-shell #panel-right .commercial-kpi-grid {gap:8px!important;}
#v50-base-shell #panel-right .commercial-kpi-value {font-size:20px!important;line-height:1!important;letter-spacing:-.025em!important;}
#v50-base-shell #panel-right .commercial-kpi-sub {font-size:10px!important;line-height:1.25!important;}
#v50-base-shell #panel-right .feasibility-note {font-size:10px!important;padding:10px 12px!important;border-radius:14px!important;}
#v50-base-shell #panel-right .dash-stat {padding:7px 0!important;}
#v50-base-shell #panel-right .dash-stat-label {font-size:10px!important;}
#v50-base-shell #panel-right .dash-stat-value {font-size:11px!important;}
#v50-base-shell .v32-study-cta {height:22px!important;padding:0 9px!important;font-size:7.2px!important;bottom:14px!important;}
#v50-base-shell .v32-study-cta .dot {width:3.5px!important;height:3.5px!important;}
@media(max-width:1280px) {#v50-base-shell {--v36-sidebar-top:146px;}#v50-base-shell #panel, #v50-base-shell #panel-right {top:var(--v36-sidebar-top)!important;}#v50-base-shell #view-controls {top:calc(var(--v36-sidebar-top) + 2px)!important;}#v50-base-shell #panel-right .vgv-hero-amount {font-size:28px!important;}#v50-base-shell #panel-right .commercial-kpi-value {font-size:18px!important;}#v50-base-shell #panel-right .deal-card-value {font-size:15px!important;}}


/* ===================================================================
   BLOCO 17 — solos-v37-topbar-asset-sidebar-sync (V50 17348-17372)
   =================================================================== */

/* V37 — topbar limpa, endereço movido para sidebar esquerda e sidebars mais próximas da topbar */
#v50-base-shell {--v37-sidebar-top:112px;}
#v50-base-shell .project-topbar {top:18px!important;left:24px!important;right:24px!important;height:54px!important;z-index:5000!important;}
/* Remove infos duplicadas da topbar: endereço, ZEU e bairro agora ficam na sidebar esquerda */
#v50-base-shell .project-topbar .topbar-asset {display:none!important;}
#v50-base-shell .project-topbar .topbar-tabs {margin-left:12px!important;}
#v50-base-shell .project-topbar .topbar-actions {margin-left:auto!important;}
#v50-base-shell #panel, #v50-base-shell #panel-right {top:var(--v37-sidebar-top)!important;bottom:28px!important;}
#v50-base-shell #view-controls {top:calc(var(--v37-sidebar-top) + 6px)!important;}
#v50-base-shell #north {top:calc(var(--v37-sidebar-top) + 78px)!important;}
/* Card largo para endereço */
#v50-base-shell .lot-context-grid {grid-template-columns:1fr 1fr!important;gap:10px!important;}
#v50-base-shell .lot-context-card-wide {grid-column:1 / -1!important;}
#v50-base-shell .lot-context-card {background:rgba(255,255,255,.48)!important;border:1px solid rgba(255,255,255,.74)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.75),0 10px 26px rgba(20,20,16,.045)!important;backdrop-filter:blur(18px) saturate(150%)!important;-webkit-backdrop-filter:blur(18px) saturate(150%)!important;}
/* Dashboard ainda mais discreto */
#v50-base-shell #panel-right .dash-title {font-size:16px!important;}
#v50-base-shell #panel-right .deal-card-value {font-size:15px!important;}
#v50-base-shell #panel-right .vgv-hero-amount {font-size:27px!important;}
#v50-base-shell #panel-right .commercial-kpi-value {font-size:17px!important;}
#v50-base-shell #panel-right .deal-card-label, #v50-base-shell #panel-right .commercial-kpi-label, #v50-base-shell #panel-right .vgv-hero-label, #v50-base-shell #panel-right .vgv-price-label, #v50-base-shell #panel-right .dash-section-title {font-size:7px!important;}
#v50-base-shell #panel-right .deal-card, #v50-base-shell #panel-right .commercial-kpi-card, #v50-base-shell #panel-right .vgv-hero {padding:9px 10px!important;}
#v50-base-shell #panel-right .dash-stat-label, #v50-base-shell #panel-right .dash-stat-value {font-size:9.5px!important;}
@media(max-width:1280px) {#v50-base-shell {--v37-sidebar-top:106px;}#v50-base-shell #panel, #v50-base-shell #panel-right {top:var(--v37-sidebar-top)!important;}#v50-base-shell #view-controls {top:calc(var(--v37-sidebar-top) + 6px)!important;}}


/* ===================================================================
   BLOCO 18 — solos-v38-ui-sync-ia-css (V50 17375-17393)
   =================================================================== */

#v50-base-shell {--v38-sidebar-top:96px;}
#v50-base-shell .project-topbar {top:18px!important;z-index:6000!important;}
#v50-base-shell #panel, #v50-base-shell #panel-right {top:var(--v38-sidebar-top)!important;bottom:28px!important;}
#v50-base-shell #view-controls {top:calc(var(--v38-sidebar-top) + 8px)!important;}
#v50-base-shell #north {top:calc(var(--v38-sidebar-top) + 82px)!important;}
#v50-base-shell #panel .brand {align-items:baseline!important;gap:10px!important;margin-bottom:14px!important;}
#v50-base-shell #panel .brand h1 {font-size:25px!important;letter-spacing:-.05em!important;}
#v50-base-shell #panel .brand .ver {font-size:11px!important;letter-spacing:.10em!important;text-transform:none!important;}
#v50-base-shell #panel .section:first-of-type .section-title {display:none!important;}
#v50-base-shell #panel .v38-address-chip, #v50-base-shell #panel .v30-lote-chip {min-height:48px!important;border-radius:18px!important;font-size:12px!important;letter-spacing:.11em!important;color:#172008!important;background:linear-gradient(135deg,rgba(195,234,79,.98),rgba(195,234,79,.84))!important;box-shadow:0 16px 32px rgba(195,234,79,.18),inset 0 1px 0 rgba(255,255,255,.74)!important;}
#v50-base-shell .v38-asset-note {margin-top:8px;font-size:10.5px;line-height:1.42;color:var(--ink-3);}
#v50-base-shell .v38-ai-pill {display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;background:rgba(195,234,79,.20);border:1px solid rgba(195,234,79,.40);color:#375206;font-size:9px;font-weight:800;letter-spacing:.10em;text-transform:uppercase;}
#v50-base-shell #three-canvas {transform:translateY(26px)!important;transform-origin:center center!important;}
#v50-base-shell.planta-open #three-canvas {transform:none!important;}
#v50-base-shell #planta-editor .pe-topbar::after {content:'sync 3D ativo';margin-left:auto;margin-right:12px;height:28px;display:inline-flex;align-items:center;padding:0 10px;border-radius:999px;background:rgba(195,234,79,.18);color:#405b0a;border:1px solid rgba(195,234,79,.45);font-family:'Jost',sans-serif;font-size:9px;letter-spacing:.10em;text-transform:uppercase;font-weight:800;}
#v50-base-shell .pe-smart-note.v38 {background:rgba(250,249,245,.88)!important;border-color:rgba(195,234,79,.44)!important;}
@media(max-width:1280px) {#v50-base-shell {--v38-sidebar-top:90px;}#v50-base-shell #three-canvas {transform:translateY(18px)!important;}}


/* ===================================================================
   BLOCO 19 — v39-terreo-inteligente-css (V50 17425-17505)
   =================================================================== */

  /* Planta 2D com linguagem mais próxima do 3D / implantação premium */
#v50-base-shell #planta-editor {
    background: radial-gradient(circle at 50% 35%, rgba(255,255,255,.92), rgba(244,242,235,.92) 58%, rgba(235,232,222,.92)) !important;
  }
  #v50-base-shell #pe-toolbar {
    background: rgba(255,255,255,.72) !important;
    backdrop-filter: blur(18px) saturate(1.05) !important;
    -webkit-backdrop-filter: blur(18px) saturate(1.05) !important;
    border-bottom: 1px solid rgba(30,30,24,.08) !important;
    box-shadow: 0 18px 44px rgba(30,30,24,.08) !important;
  }
  #v50-base-shell #pe-svg .pe-grid { stroke: rgba(28,28,24,.035) !important; }
  #v50-base-shell #pe-svg .pe-grid-major { stroke: rgba(28,28,24,.06) !important; }
  /* ESTRUTURAL: blocos arquitetônicos (lobby, loja, salão, núcleo) — linha preta grossa */
#v50-base-shell #pe-svg .pe-room.structural {
    stroke: rgba(18,18,14,.92) !important;
    stroke-width: 1.6px !important;
    filter: drop-shadow(0 8px 12px rgba(18,18,14,.10));
  }
  /* SOFT: circulações, jardins, varandas, transição — linha cinza fina, sem sombra */
#v50-base-shell #pe-svg .pe-room.soft {
    stroke: rgba(80,80,72,.45) !important;
    stroke-width: 0.6px !important;
    filter: none !important;
  }
  /* Default (caso não tenha classe) */
#v50-base-shell #pe-svg .pe-room:not(.structural):not(.soft) {
    stroke: rgba(18,18,14,.92) !important;
    stroke-width: 1.25px !important;
  }
  #v50-base-shell #pe-svg .pe-room.selected {
    stroke: #c3ea4f !important;
    stroke-width: 2.5px !important;
  }
  #v50-base-shell #pe-svg .pe-room-label {
    letter-spacing: .04em !important;
    font-weight: 800 !important;
    paint-order: stroke !important;
    stroke: rgba(255,255,255,.85) !important;
    stroke-width: 3px !important;
    text-anchor: middle !important;
  }
  /* Soft labels: peso menor, cinza */
#v50-base-shell #pe-svg .pe-room-label.soft {
    font-weight: 600 !important;
    fill: rgba(60,60,55,.72) !important;
    letter-spacing: .03em !important;
  }
  #v50-base-shell #pe-svg .pe-room-area {
    opacity: .60 !important;
    text-anchor: middle !important;
  }
  #v50-base-shell #pe-svg .pe-room-area.soft { opacity: .42 !important; }
  #v50-base-shell #pe-svg .pe-tower-projection {
    fill: none;
    stroke: rgba(8,8,6,.78);
    stroke-width: 1.05px;
    stroke-dasharray: 7 4;
    vector-effect: non-scaling-stroke;
    pointer-events: none;
  }
  #v50-base-shell #pe-svg .pe-tower-projection-label {
    font-size: 8px;
    letter-spacing: .12em;
    text-transform: uppercase;
    fill: rgba(8,8,6,.52);
    font-weight: 700;
    pointer-events: none;
  }
  #v50-base-shell #pe-svg .pe-garden-tree {
    fill: rgba(123,165,91,.58);
    stroke: rgba(72,105,52,.35);
    stroke-width: .8px;
    pointer-events:none;
  }
  #v50-base-shell #pe-svg .pe-garden-dot {
    fill: rgba(91,132,64,.32);
    pointer-events:none;
  }


/* ===================================================================
   BLOCO 20 — solos-v40-parametric-plan-css (V50 17919-17929)
   =================================================================== */

  #v50-base-shell #planta-editor .pe-tool-auto {min-width:150px!important;background:linear-gradient(135deg,rgba(195,234,79,.92),rgba(255,255,255,.72))!important;border-color:rgba(20,20,18,.32)!important;color:#141412!important;box-shadow:0 10px 26px rgba(195,234,79,.18)!important;}
  #v50-base-shell #planta-editor .pe-tool-auto.v40-running {filter:saturate(1.2) brightness(.98);transform:translateY(1px);}
  #v50-base-shell #pe-smart-note.v40-note {max-width:520px!important;background:rgba(20,20,18,.88)!important;color:#f5f3ec!important;line-height:1.35!important;text-align:left!important;}
  #v50-base-shell #planta-editor .pe-room[data-ai-zone="fachada_ativa"] {stroke-width:1.8!important;}
  #v50-base-shell #planta-editor .pe-tower-projection-v40 {fill:none;stroke:#111;stroke-width:1.05;stroke-dasharray:5 3;pointer-events:none;}
  #v50-base-shell #planta-editor .pe-tower-projection-label-v40 {font-family:'Jost',sans-serif;font-size:8px;font-weight:800;letter-spacing:.10em;text-transform:uppercase;fill:#111;paint-order:stroke;stroke:rgba(255,255,255,.92);stroke-width:3px;pointer-events:none;}
  #v50-base-shell #planta-editor .pe-flow-line-v40 {fill:none;stroke:#111;stroke-width:.7;stroke-dasharray:2 3;opacity:.45;pointer-events:none;}
  #v50-base-shell #planta-editor .pe-flow-label-v40 {font-family:'Jost',sans-serif;font-size:7px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;fill:#111;opacity:.52;paint-order:stroke;stroke:rgba(255,255,255,.92);stroke-width:2px;pointer-events:none;}
  #v50-base-shell #planta-editor .pe-garden-dot-v40 {fill:rgba(67,105,35,.36);stroke:rgba(20,20,18,.20);stroke-width:.45;pointer-events:none;}


/* ===================================================================
   DEFESA ANTI-FLICKER — esconde hardcodes ate motor renderizar
   Adicionado pos-3.3.A (D4.A) para mitigar flicker de "AL TIETE 626"
   e similares enquanto V50 motor inicializa.
   Adapter adiciona .v50-ready ~100ms apos mount.
   =================================================================== */
#v50-base-shell:not(.v50-ready) .lot-context-grid,
#v50-base-shell:not(.v50-ready) [data-preset],
#v50-base-shell:not(.v50-ready) .vgv-hero {
  opacity: 0;
  transition: opacity 0.2s;
}
#v50-base-shell.v50-ready .lot-context-grid,
#v50-base-shell.v50-ready [data-preset],
#v50-base-shell.v50-ready .vgv-hero {
  opacity: 1;
}

/* ============================================================
   V51-ALIGN — alinhamento sidebars com topbar

   Bug: sidebars (#panel, #panel-right) estavam position:absolute
   resolvendo containing block diferente da topbar (position:fixed).
   Resultado: ESQ 22px deslocada pra dentro, DIR 8px estourando
   pra fora da topbar em viewport real.

   Fix: mudar sidebars para position:fixed (mesmo frame da topbar),
   larguras simétricas (360 cada), insets 24px casando com topbar.

   Cascade winner garantido por ser o último bloco do arquivo.
   Carregamento: v50-styles.css é o último CSS de modulo carregado
   (índice 7 nos stylesheets).
   ============================================================ */
#v50-base-shell #panel,
#v50-base-shell #panel-right {
  position: fixed !important;
  width: 360px !important;
}
#v50-base-shell #panel {
  left: 24px !important;
  right: auto !important;
}
#v50-base-shell #panel-right {
  right: 24px !important;
  left: auto !important;
}
