/* ===================================================================
   CONSTRUFARE — Design system compartilhado (corretor.html + cliente.html)
   ===================================================================
   Toda regra aqui foi comparada linha a linha entre os dois portais
   antes de entrar neste arquivo — só ficou o que era IDÊNTICO (ou uma
   diferença puramente aditiva e inofensiva, comentada abaixo). Onde os
   dois divergiam de verdade (cores, layout, comportamento), a regra
   ficou local em cada HTML — ver comentário "(ficou local)" nesses
   pontos, no <style> de cada portal.

   cotacao.html e satisfacao.html NÃO importam este arquivo: usam os
   MESMOS nomes de variável (--primary-light, --green, --border,
   --card) só que com OUTRO significado (ex.: --primary-light lá é uma
   cor sólida usada em hover de botão; aqui é um verde bem transparente
   usado como fundo de destaque). Se este arquivo fosse importado lá,
   o :root local deles ainda ganharia da cascata (mesma especificidade,
   declarado depois) — mas o risco de alguém remover esse :root local
   sem perceber a armadilha é real demais para vincular o arquivo lá
   também. Ficam com CSS 100% próprio, sem risco de regressão visual.

   index.html (equipe interna) NÃO linka este arquivo — e a tentativa de
   fazê-lo foi revertida em 04/08/2026 com uma regressão medida. Motivo:
   linkar coloca as regras daqui ANTES do <style> do index, e o
   `.btn{border:none}` de lá (que fica depois, mesma especificidade) passa
   a vencer o `.btn-secondary{border:1.5px solid}` daqui — o botão perde a
   borda. Inversão de cascata entre seletores DIFERENTES, que nenhuma
   comparação regra-a-regra pega. Deduplicar ali exige análise exaustiva de
   colisão de propriedade, e o ganho (32 regras num arquivo de 307) não paga.
   O que ficou: os tokens são idênticos em 11 de 12, e o 12º (--muted) foi
   unificado no tom do index. */

:root{
  /* --muted #5A6169 (nao #6C757D, que era o valor original destes portais):
     4,45:1 sobre o --bg REPROVA no WCAG AA, que exige 4,5. O tom do index.html
     da 5,95:1. Unificar para o mais claro seria regressao de acessibilidade. */
  --primary:#1B4332;--accent:#2D6A4F;--bg:#F8F9FA;--white:#FFFFFF;--text:#212529;--muted:#5A6169;
  --red:#DC3545;--blue:#0D6EFD;--yellow:#FFC107;--green:#198754;--border:#DEE2E6;
  --primary-light:rgba(27,67,50,.08);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'Inter',system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;}
a{color:inherit;text-decoration:none;}
input,select,textarea,button{font-family:inherit;}

/* ========== LOGIN ==========
   Selector de .lf ampliado p/ incluir select/textarea (só corretor.html
   usa; cliente.html não tem <select>/<textarea> dentro de .lf, então a
   seleção extra não afeta nada lá — confirmado antes de trazer p/ cá). */
#loginScreen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1B4332 0%,#2D6A4F 50%,#40916C 100%);position:relative;overflow:hidden;}
#loginScreen::before{content:'';position:absolute;width:600px;height:600px;border-radius:50%;background:rgba(255,255,255,.03);top:-200px;right:-100px;}
#loginScreen::after{content:'';position:absolute;width:400px;height:400px;border-radius:50%;background:rgba(255,255,255,.02);bottom:-100px;left:-100px;}
.login-card{background:var(--white);border-radius:16px;padding:48px 40px;width:100%;max-width:420px;box-shadow:0 24px 64px rgba(0,0,0,.25);position:relative;z-index:1;animation:popIn .4s cubic-bezier(.22,.8,.44,1);}
@keyframes popIn{from{opacity:0;transform:scale(.93) translateY(12px)}to{opacity:1;transform:none}}
.login-logo{text-align:center;margin-bottom:32px;}
.login-logo img{width:80px;height:80px;object-fit:contain;margin-bottom:12px;}
.login-logo h1{font-size:22px;font-weight:700;color:var(--primary);letter-spacing:2px;}
.login-logo p{font-size:13px;color:var(--muted);margin-top:6px;}
.lf{margin-bottom:18px;}
.lf label{display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin-bottom:6px;}
.lf input,.lf select,.lf textarea{width:100%;padding:12px 14px;border:1.5px solid var(--border);border-radius:8px;font-size:14px;outline:none;transition:border-color .2s,box-shadow .2s;background:#FAFBFC;}
.lf input:focus,.lf select:focus,.lf textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(27,67,50,.12);}
.lf textarea{resize:vertical;min-height:80px;}
.login-btn{width:100%;padding:13px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:background .2s;box-shadow:0 4px 16px rgba(27,67,50,.3);}
.login-btn:hover{background:var(--accent);}
.login-btn:disabled{opacity:.55;cursor:not-allowed;}
#loginError{display:none;font-size:13px;color:var(--red);text-align:center;margin-top:14px;padding:10px;background:#FDF0F2;border-radius:8px;border:1px solid rgba(220,53,69,.2);}

/* PANELS */
.panel{display:none;animation:fadeUp .3s ease;}
.panel.active{display:block;}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* CARDS */
.card{background:var(--white);border-radius:12px;border:1px solid var(--border);padding:20px;box-shadow:0 2px 8px rgba(0,0,0,.04);margin-bottom:16px;transition:transform .2s;}
.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.card-title{font-size:14px;font-weight:700;color:var(--text);}
.card-icon{font-size:22px;}

/* WELCOME CARD */
.welcome-card{background:linear-gradient(135deg,#1B4332,#2D6A4F);color:#fff;border:none;padding:24px;position:relative;overflow:hidden;}
.welcome-card::after{content:'';position:absolute;width:200px;height:200px;border-radius:50%;background:rgba(255,255,255,.05);top:-60px;right:-40px;}
.welcome-card h2{font-size:20px;font-weight:700;margin-bottom:4px;}
.welcome-card p{font-size:13px;opacity:.8;}

/* STAT CARDS
   (corretor.html tinha "cursor:default" a mais no .stat-card — é o valor
   padrão do cursor num <div>, então tirar não muda nada na tela.) */
.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px;}
.stat-card{background:var(--white);border-radius:12px;border:1px solid var(--border);padding:16px;box-shadow:0 2px 8px rgba(0,0,0,.04);position:relative;overflow:hidden;}
.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--sc,var(--primary));border-radius:12px 12px 0 0;}
.stat-card .stat-icon{font-size:20px;margin-bottom:4px;}
.stat-card .stat-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);}
.stat-card .stat-value{font-size:20px;font-weight:700;color:var(--text);line-height:1.2;margin:2px 0;}
.stat-card .stat-sub{font-size:11px;color:var(--muted);}

/* PILLS (as 5 cores comuns; corretor.html soma .pill.orange/.pill.purple
   local — cliente.html não usa essas duas variantes) */
.pill{display:inline-flex;align-items:center;padding:4px 10px;border-radius:100px;font-size:11px;font-weight:600;white-space:nowrap;}
.pill.green{background:rgba(25,135,84,.1);color:#198754;}
.pill.red{background:rgba(220,53,69,.1);color:#DC3545;}
.pill.yellow{background:rgba(255,193,7,.15);color:#997404;}
.pill.blue{background:rgba(13,110,253,.1);color:#0D6EFD;}
.pill.gray{background:rgba(108,117,125,.1);color:#6C757D;}

/* FILTER BAR (corretor.html soma "align-items:center" local — cliente.html
   não define align-items, então fica no valor inicial "stretch"; manter
   essa diferença em vez de igualar os dois evita mudar o layout de cliente.html) */
.filter-bar{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap;}
.fb{padding:6px 14px;border-radius:100px;border:1.5px solid var(--border);background:var(--white);font-size:12px;font-weight:500;color:var(--muted);cursor:pointer;transition:all .2s;}
.fb.active{border-color:var(--primary);background:var(--primary-light);color:var(--primary);}

/* TABLE (corretor.html soma hover cinza claro nas linhas — cliente.html
   nunca teve; ficou local em corretor.html em vez de virar comportamento
   novo pro cliente.html) */
.table-wrap{background:var(--white);border-radius:12px;border:1px solid var(--border);overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.04);margin-bottom:16px;}
.data-table{width:100%;border-collapse:collapse;}
.data-table thead th{padding:10px 14px;text-align:left;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);background:#F8F9FA;border-bottom:1px solid var(--border);white-space:nowrap;}
.data-table tbody tr{border-bottom:1px solid #F0F2F4;}
.data-table tbody tr:last-child{border-bottom:none;}
.data-table tbody td{padding:10px 14px;font-size:13px;vertical-align:middle;}

/* BUTTONS (corretor.html soma .btn-danger/.btn-warning local — cliente.html
   não usa essas duas variantes) */
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s;border:none;}
.btn-primary{background:var(--primary);color:#fff;box-shadow:0 2px 8px rgba(27,67,50,.2);}
.btn-primary:hover{background:var(--accent);}
.btn-secondary{background:var(--white);color:var(--text);border:1.5px solid var(--border);}
.btn-secondary:hover{background:#F8F9FA;border-color:var(--primary);}
.btn-sm{padding:6px 10px;font-size:11px;}
.btn:disabled{opacity:.5;cursor:not-allowed;}

/* SECTION TITLE */
.sec-title{font-size:15px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:8px;}

/* EMPTY STATE */
.empty-state{text-align:center;padding:40px 20px;color:var(--muted);}
.empty-state .es-icon{font-size:44px;margin-bottom:10px;display:block;}
.empty-state p{font-size:13px;}

/* LOADING */
.loading-text{text-align:center;padding:40px;color:var(--muted);font-size:13px;}
.spinner{display:inline-block;width:16px;height:16px;border:2px solid rgba(27,67,50,.2);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle;margin-right:6px;}
@keyframes spin{to{transform:rotate(360deg)}}

/* TOAST */
.toast-container{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:8px;}
.toast{padding:14px 20px;border-radius:10px;font-size:13px;font-weight:500;color:#fff;box-shadow:0 8px 24px rgba(0,0,0,.15);animation:toastIn .3s ease;max-width:340px;}
.toast.success{background:var(--green);}
.toast.error{background:var(--red);}
.toast.info{background:var(--blue);}
@keyframes toastIn{from{opacity:0;transform:translateY(-10px) scale(.95)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(-10px) scale(.95)}}

/* Badge da torre ao lado do número da unidade (ex.: 203 [Torre A]) —
   idêntico nos dois portais, só em posições diferentes no arquivo original. */
.torre-badge{display:inline-block;background:#E7F2EC;color:#1B4332;border:1px solid #C4E0D2;font-size:10px;font-weight:700;letter-spacing:.2px;padding:1px 6px;border-radius:6px;vertical-align:middle;white-space:nowrap;margin-left:4px;}
