/* =========================================================================
   Garra Motors · Gestão de Estoque
   Identidade visual alinhada ao site WebXCar (webxcar.com.br): azul-marinho
   #001837 + azul elétrico #0036FF, com os componentes que o sistema precisa.

   O azul de marca é escuro demais para servir de "positivo" num par
   verde/vermelho, então valorização/sucesso ganharam tokens verdes próprios
   em vez de reaproveitar o acento — do contrário alta e baixa ficariam
   distinguíveis só pelo sinal do número.
   ========================================================================= */

:root{
  /* Marca WebXCar */
  --navy-950:#001837;   /* black-color   · topbar, toast, fundo do login */
  --navy-900:#031C79;   /* azul profundo · topo dos gradientes           */
  --navy-800:#10349F;   /* optional-color                                */
  --brand-600:#10349F;  /* acento escuro · hover/pressionado             */
  --brand-500:#0036FF;  /* main-color    · ação primária, foco, seleção  */
  --brand-300:#7BAAF7;  /* azul claro    · acento sobre fundo escuro     */
  --brand-100:#E2EEFF;  /* tinta clara   · chips e avisos informativos   */
  --green-700:#15803D;
  --green-500:#16A34A;
  --green-100:#DCFCE7;
  --amber-500:#F5A623;
  --amber-100:#FDECC8;
  --amber-700:#8A5B00;
  --red-500:#EF4444;
  --red-100:#FEE2E2;
  --red-700:#B91C1C;
  --blue-500:#0036FF;   /* faixa azul da placa Mercosul                  */
  --bg:#F0F2F5;
  --surface:#FFFFFF;
  --ink-900:#001837;
  --ink-600:#41525C;
  --ink-500:#5D7079;    /* paragraph-color                               */
  --ink-400:#9AA5AB;
  --line:#E5E5E5;
  --radius:14px;
  --shadow-sm:0 1px 2px rgba(0,24,55,.06);
  --shadow-md:0 10px 30px rgba(0,24,55,.12);
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--bg);
  color:var(--ink-900);
  font-family:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
}
a{color:inherit;}
.num,.display{font-family:'Space Grotesk',ui-monospace,monospace;}
[hidden]{display:none !important;}

/* ---------- Top bar ---------- */
.topbar{
  background:var(--navy-950);
  color:#fff;
  padding:0 24px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  min-height:72px;
  position:sticky;
  top:0;
  z-index:30;
}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:#fff;}
/* O logo é um wordmark largo (931x182). Fixar a altura e deixar a largura
   automática preserva a proporção sem depender do width do atributo. */
.brand-logo{height:30px;width:auto;display:block;}
.brand-sub{font-size:11.5px;color:var(--ink-400);margin-top:3px;}

.top-nav{display:flex;gap:4px;margin-left:8px;}
.top-nav a{
  color:rgba(255,255,255,.72);
  text-decoration:none;
  font-size:13.5px;
  font-weight:600;
  padding:8px 12px;
  border-radius:8px;
  white-space:nowrap;
}
.top-nav a:hover{background:rgba(255,255,255,.08);color:#fff;}
/* Sobre a topbar #001837 o azul de marca não se lê — o item ativo usa o
   azul claro da paleta e um preenchimento mais forte para compensar. */
.top-nav a.active{background:rgba(0,54,255,.30);color:var(--brand-300);}

.top-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.user-chip{
  display:flex;align-items:center;gap:9px;
  padding:6px 6px 6px 12px;
  border-radius:999px;
  background:rgba(255,255,255,.07);
  font-size:13px;
}
.user-chip .avatar{
  width:28px;height:28px;border-radius:50%;
  background:var(--brand-500);color:#fff;
  display:grid;place-items:center;
  font-weight:700;font-size:12px;
  font-family:'Space Grotesk',sans-serif;
}
.user-chip a{color:var(--ink-400);text-decoration:none;font-size:12px;padding-right:6px;}
.user-chip a:hover{color:#fff;}

/* ---------- Botões ---------- */
.btn{
  font-family:'Inter',sans-serif;
  font-weight:600;
  font-size:13.5px;
  border-radius:9px;
  border:1px solid transparent;
  padding:10px 16px;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  transition:transform .12s ease,filter .12s ease,background .12s ease,border-color .12s ease;
  white-space:nowrap;
  text-decoration:none;
  line-height:1.1;
}
.btn:active:not(:disabled){transform:translateY(1px) scale(.985);}
.btn:disabled{opacity:.55;cursor:not-allowed;}
.btn-primary{background:var(--brand-500);color:#fff;}
.btn-primary:hover:not(:disabled){background:var(--brand-600);}
.btn-ghost{background:rgba(255,255,255,.06);color:#fff;border-color:rgba(255,255,255,.16);}
.btn-ghost:hover:not(:disabled){background:rgba(255,255,255,.13);}
.btn-light{background:#fff;color:var(--ink-900);border-color:var(--line);}
.btn-light:hover:not(:disabled){background:#F7FBFC;border-color:var(--ink-400);}
.btn-danger{background:var(--red-500);color:#fff;}
.btn-danger:hover:not(:disabled){filter:brightness(1.06);}
.btn-danger-outline{background:transparent;border-color:var(--red-500);color:var(--red-500);}
.btn-danger-outline:hover:not(:disabled){background:var(--red-100);}
.btn-sm{padding:7px 12px;font-size:12.5px;border-radius:8px;}
.btn-block{width:100%;}

/* ---------- Layout ---------- */
.wrap{max-width:1320px;margin:0 auto;padding:26px 24px 64px;}
.section-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:16px;
  margin:36px 0 14px;flex-wrap:wrap;
}
.section-head h2{
  font-family:'Space Grotesk',sans-serif;
  font-size:19px;margin:0;
  display:flex;align-items:center;gap:8px;
}
.section-head .hint{font-size:13px;color:var(--ink-500);}

.card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:22px;
}
.card.flush{padding:0;overflow:hidden;}

/* ---------- KPIs ---------- */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-top:22px;}
.kpi{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:18px 20px;
}
.kpi-label{font-size:12.5px;color:var(--ink-500);font-weight:600;text-transform:uppercase;letter-spacing:.4px;}
.kpi-value{font-family:'Space Grotesk',sans-serif;font-size:26px;font-weight:700;margin-top:6px;line-height:1.15;}
.kpi-delta{font-size:12.5px;margin-top:6px;font-weight:600;display:inline-flex;align-items:center;gap:4px;}
.up{color:var(--green-700);}
.down{color:var(--red-500);}
.neutral{color:var(--ink-500);}

/* ---------- Gráfico ---------- */
.chart-wrap{height:280px;position:relative;margin-top:10px;}
/* Estado vazio do gráfico: compacto de propósito — reservar 280px de altura
   para uma frase deixa a tela com um buraco no lugar do gráfico. */
.chart-empty{
  min-height:150px;display:grid;place-items:center;text-align:center;
  color:var(--ink-500);font-size:13.5px;line-height:1.6;padding:26px 20px;
}
.chart-empty.compact{min-height:78px;padding:18px;}

/* ---------- Barra de filtros ---------- */
.toolbar{
  display:flex;gap:10px;flex-wrap:wrap;align-items:center;
  margin:0 0 14px;
}
.toolbar .spacer{flex:1 1 auto;}
.field{display:flex;flex-direction:column;gap:5px;}
.field label{font-size:11.5px;font-weight:700;color:var(--ink-500);text-transform:uppercase;letter-spacing:.4px;}
.field-hint{font-size:11.5px;color:var(--ink-400);line-height:1.4;}
.input,.select,.textarea{
  font-family:'Inter',sans-serif;
  font-size:13.5px;
  padding:9px 12px;
  border:1px solid var(--line);
  border-radius:9px;
  background:#fff;
  color:var(--ink-900);
  min-height:38px;
  transition:border-color .12s ease,box-shadow .12s ease;
}
.input:focus,.select:focus,.textarea:focus{
  outline:none;
  border-color:var(--brand-500);
  box-shadow:0 0 0 3px rgba(0,54,255,.16);
}
.input::placeholder,.textarea::placeholder{color:var(--ink-400);}
.textarea{min-height:96px;resize:vertical;line-height:1.5;}
.input-search{min-width:260px;}
.input-plate{
  font-family:'Space Grotesk',sans-serif;
  font-size:20px;font-weight:700;
  letter-spacing:4px;text-transform:uppercase;
  text-align:center;padding:12px;
}

/* ---------- Tabela ---------- */
.table-scroll{overflow-x:auto;}
table{width:100%;border-collapse:collapse;font-size:13.8px;}
thead th{
  text-align:left;
  font-size:11.5px;
  text-transform:uppercase;
  letter-spacing:.4px;
  color:var(--ink-500);
  font-weight:700;
  padding:14px 14px 10px;
  border-bottom:1px solid var(--line);
  white-space:nowrap;
  background:#fff;
}
thead th.right{text-align:right;}
tbody td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:middle;}
tbody td.right{text-align:right;}
tbody tr{transition:background .1s ease;}
tbody tr.clickable{cursor:pointer;}
tbody tr.clickable:hover{background:#F7FBFC;}
tbody tr:last-child td{border-bottom:none;}
.veh-name{font-weight:700;}
.veh-model{color:var(--ink-500);font-weight:500;font-size:12.6px;margin-top:1px;}
.veh-cell{display:flex;align-items:center;gap:11px;min-width:230px;}
/* contain, e não cover: a API devolve ora a foto do veículo, ora o logo da
   marca. Recortar para preencher decapita o logo — "Toyota" virava "OY". */
.veh-thumb{
  width:54px;height:38px;border-radius:6px;
  object-fit:contain;padding:3px;
  background:#fff;border:1px solid var(--line);flex:none;
}
.veh-thumb.placeholder{
  display:grid;place-items:center;color:var(--ink-400);font-size:15px;
  background:#F7FBFC;
}

.plate{
  display:inline-flex;flex-direction:column;width:88px;
  border-radius:5px;overflow:hidden;border:1px solid rgba(0,0,0,.13);
  box-shadow:var(--shadow-sm);
  font-family:'Space Grotesk',sans-serif;
  background:#fff;
}
.plate-top{
  background:var(--blue-500);color:#fff;font-size:7px;font-weight:700;
  letter-spacing:1px;text-align:center;padding:1.5px 0;
}
.plate-top.old{background:#4B5565;}
.plate-body{
  background:#fff;color:var(--ink-900);text-align:center;
  font-weight:700;font-size:14px;letter-spacing:2px;padding:2px 0 3px;
}
.plate.none .plate-body{color:var(--ink-400);letter-spacing:1px;font-size:11px;}

.fipe-code{color:var(--ink-500);font-variant-numeric:tabular-nums;font-size:12.8px;white-space:nowrap;}
.stock-time{font-weight:600;white-space:nowrap;}
.stock-time small{display:block;font-weight:500;font-size:11.5px;color:var(--ink-500);margin-top:1px;}
/* Destaque a partir de 90 dias parado: é onde o tempo de garagem deixa de
   ser um dado e passa a pedir decisão sobre o preço. */
.stock-time.aged{color:var(--amber-700);}
.value-cell{font-family:'Space Grotesk',sans-serif;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;}
.muted{color:var(--ink-500);}

.delta-chip{
  display:inline-flex;align-items:center;gap:3px;
  font-size:12px;font-weight:700;padding:3px 8px;border-radius:20px;white-space:nowrap;
}
.delta-chip.up{background:var(--green-100);color:var(--green-700);}
.delta-chip.down{background:var(--red-100);color:var(--red-700);}
.delta-chip.flat{background:#F0F2F5;color:var(--ink-500);}

.tag{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11px;font-weight:700;letter-spacing:.3px;
  padding:3px 8px;border-radius:6px;text-transform:uppercase;
  background:#F0F2F5;color:var(--ink-600);white-space:nowrap;
}
.tag.warn{background:var(--amber-100);color:var(--amber-700);}
.tag.danger{background:var(--red-100);color:var(--red-700);}
.tag.ok{background:var(--green-100);color:var(--green-700);}

.row-actions{display:flex;gap:6px;justify-content:flex-end;}
.icon-btn{
  width:32px;height:32px;border-radius:8px;border:1px solid var(--line);
  background:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
  color:var(--ink-500);transition:all .12s ease;font-size:14px;line-height:1;
}
.icon-btn:hover{border-color:var(--ink-400);color:var(--ink-900);background:#F7FBFC;}
.icon-btn.danger:hover{border-color:var(--red-500);color:var(--red-500);background:var(--red-100);}

.empty-state{text-align:center;padding:56px 20px;color:var(--ink-500);}
.empty-state strong{display:block;color:var(--ink-900);font-size:15px;margin-bottom:6px;}

/* ---------- Modal ---------- */
.overlay{
  position:fixed;inset:0;background:rgba(0,24,55,.55);
  display:none;align-items:center;justify-content:center;z-index:60;
  padding:20px;backdrop-filter:blur(2px);overflow-y:auto;
}
.overlay.active{display:flex;}
.modal{
  background:var(--surface);
  border-radius:18px;
  width:100%;max-width:640px;
  padding:24px;
  box-shadow:0 20px 60px rgba(0,24,55,.35);
  animation:pop .16s ease;
  margin:auto;
}
.modal.wide{max-width:880px;}
@keyframes pop{from{transform:scale(.96);opacity:0;}to{transform:scale(1);opacity:1;}}
.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;}
.modal-title{font-family:'Space Grotesk',sans-serif;font-size:20px;font-weight:700;line-height:1.25;}
.modal-sub{color:var(--ink-500);font-size:13px;margin-top:3px;}
.modal-close{
  width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:#fff;
  cursor:pointer;font-size:15px;color:var(--ink-500);flex:none;line-height:1;
}
.modal-close:hover{background:#F7FBFC;color:var(--ink-900);}
.modal-stats{display:flex;gap:26px;margin:18px 0 4px;flex-wrap:wrap;}
.modal-stat-label{font-size:11.5px;color:var(--ink-500);text-transform:uppercase;letter-spacing:.4px;font-weight:700;}
.modal-stat-value{font-family:'Space Grotesk',sans-serif;font-size:21px;font-weight:700;margin-top:3px;}
.modal-chart-wrap{height:230px;margin-top:16px;}
.modal-foot{display:flex;gap:10px;justify-content:flex-end;margin-top:20px;flex-wrap:wrap;}
.modal-body{margin-top:18px;}

/* ---------- Formulários em grade ---------- */
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;}
/* Divisor de blocos dentro de um formulário longo: sem ele, "Vínculo FIPE"
   pareceria só mais um campo entre os dados do veículo. */
.form-section{
  font-size:11.5px;font-weight:700;color:var(--ink-500);
  text-transform:uppercase;letter-spacing:.4px;
  margin:22px 0 12px;padding-bottom:7px;border-bottom:1px solid var(--line);
}
.form-grid .full{grid-column:1 / -1;}
.form-grid .field{gap:6px;}

/* ---------- Lista de versões FIPE ---------- */
.fipe-options{display:flex;flex-direction:column;gap:10px;margin-top:6px;}
.fipe-option{
  display:flex;gap:12px;align-items:center;
  border:1px solid var(--line);border-radius:11px;padding:12px;
  cursor:pointer;transition:border-color .12s ease,background .12s ease;
  background:#fff;
}
.fipe-option:hover{border-color:var(--ink-400);}
/* Na consulta rápida a versão FIPE é só leitura: não há o que escolher, e o
   cursor de clique prometeria uma ação que não existe. */
.fipe-option.static{cursor:default;}
.fipe-option.static:hover{border-color:var(--line);}
.fipe-option.selected{border-color:var(--brand-500);background:rgba(0,54,255,.06);box-shadow:0 0 0 1px var(--brand-500) inset;}
.fipe-option input{accent-color:var(--brand-500);flex:none;}
.fipe-option img{
  width:64px;height:46px;object-fit:contain;padding:3px;
  border-radius:6px;background:#fff;border:1px solid var(--line);flex:none;
}
.fipe-option .info{flex:1;min-width:0;}
.fipe-option .title{font-weight:700;font-size:13.5px;line-height:1.3;}
.fipe-option .meta{font-size:12px;color:var(--ink-500);margin-top:3px;}
.fipe-option .price{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:15px;white-space:nowrap;}

/* ---------- Avisos ---------- */
.alert{
  border-radius:11px;padding:13px 15px;font-size:13.3px;line-height:1.5;
  display:flex;gap:10px;align-items:flex-start;
  border:1px solid transparent;
}
.alert .icon{flex:none;font-size:15px;line-height:1.2;}
.alert-info{background:var(--brand-100);border-color:#B9D2FF;color:var(--navy-900);}
.alert-warn{background:var(--amber-100);border-color:#F3D9A4;color:var(--amber-700);}
.alert-danger{background:var(--red-100);border-color:#FBC4C4;color:var(--red-700);}
.alert-ok{background:var(--green-100);border-color:#A7E5BC;color:var(--green-700);}
.alert + .alert{margin-top:10px;}
.alert strong{font-weight:700;}

/* ---------- Progresso ---------- */
.progress{height:8px;border-radius:99px;background:#E8EAEE;overflow:hidden;margin-top:10px;}
.progress > span{display:block;height:100%;background:var(--brand-500);width:0;transition:width .3s ease;}

/* ---------- Toast ---------- */
.toast{
  position:fixed;bottom:24px;right:24px;
  background:var(--navy-950);color:#fff;
  padding:13px 18px;border-radius:10px;font-size:13.5px;
  display:flex;align-items:center;gap:10px;
  max-width:380px;box-shadow:0 10px 30px rgba(0,0,0,.25);
  transform:translateY(20px);opacity:0;pointer-events:none;
  transition:all .25s ease;z-index:90;
}
.toast.show{transform:translateY(0);opacity:1;}
.toast-dot{width:8px;height:8px;border-radius:50%;background:var(--brand-300);flex:none;}
.toast.error .toast-dot{background:var(--red-500);}
.toast.warn .toast-dot{background:var(--amber-500);}

/* ---------- Spinner ---------- */
.spinner{
  width:15px;height:15px;border-radius:50%;
  border:2px solid rgba(255,255,255,.35);border-top-color:#fff;
  animation:spin .7s linear infinite;flex:none;
}
.spinner.dark{border-color:rgba(0,24,55,.2);border-top-color:var(--ink-900);}
@keyframes spin{to{transform:rotate(360deg);}}

/* ---------- Login ---------- */
.login-page{
  min-height:100vh;display:grid;place-items:center;padding:24px;
  background:radial-gradient(1100px 520px at 50% -10%,var(--navy-900) 0%,var(--navy-950) 62%);
}
.login-card{
  width:100%;max-width:400px;background:var(--surface);
  border-radius:18px;padding:32px 30px;box-shadow:0 26px 70px rgba(0,0,0,.4);
}
.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:24px;}
.login-brand .brand-logo{height:32px;}
.login-card .field{margin-bottom:14px;}
.login-card .input{width:100%;}
.login-foot{margin-top:22px;text-align:center;font-size:11.5px;color:var(--ink-400);line-height:1.6;}

/* ---------- Ficha técnica ---------- */
.spec-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:2px;background:var(--line);border-radius:11px;overflow:hidden;border:1px solid var(--line);}
.spec{background:#fff;padding:12px 14px;}
.spec dt{font-size:11px;font-weight:700;color:var(--ink-500);text-transform:uppercase;letter-spacing:.4px;}
.spec dd{margin:4px 0 0;font-size:13.8px;font-weight:600;word-break:break-word;}
.hero-vehicle{display:flex;gap:22px;flex-wrap:wrap;align-items:flex-start;}
.hero-vehicle img{width:260px;max-width:100%;border-radius:12px;border:1px solid var(--line);background:#F0F2F5;}

/* ---------- Importação ---------- */
.import-steps{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap;}
.step{
  display:flex;align-items:center;gap:9px;padding:10px 14px;
  border:1px solid var(--line);border-radius:10px;background:#fff;font-size:13px;font-weight:600;
  color:var(--ink-500);
}
.step .n{
  width:22px;height:22px;border-radius:50%;background:#F0F2F5;color:var(--ink-500);
  display:grid;place-items:center;font-size:11.5px;font-weight:700;flex:none;
}
.step.active{border-color:var(--brand-500);color:var(--ink-900);}
.step.active .n{background:var(--brand-500);color:#fff;}
.step.done .n{background:var(--green-100);color:var(--green-700);}

.preview-table{max-height:420px;overflow:auto;border:1px solid var(--line);border-radius:11px;}
.preview-table table{font-size:12.8px;}
.preview-table thead th{position:sticky;top:0;z-index:2;}

.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:18px;}
.tabs button{
  border:none;background:none;padding:10px 14px;font-size:13.5px;font-weight:600;
  color:var(--ink-500);cursor:pointer;border-bottom:2px solid transparent;font-family:inherit;
}
.tabs button.active{color:var(--ink-900);border-bottom-color:var(--brand-500);}

footer.page-foot{text-align:center;color:var(--ink-400);font-size:12px;padding:34px 0 10px;line-height:1.7;}
footer.page-foot a{color:var(--ink-500);}

/* ---------- Responsivo ---------- */
@media (max-width:1100px){
  .kpi-grid{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:880px){
  .topbar{flex-direction:column;align-items:stretch;padding:14px 18px;gap:12px;}
  .top-nav{margin-left:0;overflow-x:auto;}
  .top-actions{justify-content:space-between;}
  .wrap{padding:20px 16px 56px;}
  table{font-size:12.8px;}
  .form-grid{grid-template-columns:1fr;}
  .input-search{min-width:0;width:100%;}
  .toolbar .field{flex:1 1 160px;}
}
@media (max-width:560px){
  .kpi-grid{grid-template-columns:1fr;}
  .modal{padding:20px 18px;}
  .hero-vehicle img{width:100%;}
}

/* ---------- Impressão ---------- */
@media print{
  .topbar,.toolbar,.row-actions,.btn,.toast{display:none !important;}
  body{background:#fff;}
  .card{border:none;padding:0;}
  .wrap{padding:0;max-width:none;}
}
