﻿/* === CSS extraído de index.html em 2025-11-08 00:11:12 === */
:root {
  --brand: #10b981;
  --brand-hover: #059669;
  --brand-soft: rgba(16, 185, 129, 0.12);
  --slate-50: #f8fafc;
  --slate-100: #f1f5f9;
  --slate-200: #e2e8f0;
  --slate-300: #cbd5f5;
  --slate-500: #64748b;
  --slate-600: #475569;
  --slate-900: #0f172a;
  --sidebar-collapsed-width: 72px;
  --sidebar-expanded-width: 240px;
  --shadow-card: 0 4px 6px -1px rgba(15, 23, 42, 0.1), 0 2px 4px -2px rgba(15, 23, 42, 0.08);
  --danger: #ef4444;
  --danger-soft: rgba(239, 68, 68, 0.14);
  --warning: #f59e0b;
  --warning-soft: rgba(245, 158, 11, 0.14);
  --info: #3b82f6;
  --info-soft: rgba(59, 130, 246, 0.16);
}
html {
  font-size: clamp(14px, 0.95vw, 16px);
}
body {
  color: var(--slate-800);
  overflow-x: hidden;
}
h1,
h2 {
  font-size: clamp(18px, 1.4vw, 24px);
  font-weight: 600;
  color: var(--slate-900);
}
.shadow-card {
  box-shadow: var(--shadow-card);
}
.card-surface {
  background-color: #fff;
  border: 1px solid var(--slate-200);
  border-radius: 0.75rem;
  box-shadow: var(--shadow-card);
}
.kpi-card {
  background-image: linear-gradient(135deg, #ffffff 0%, #f1f5f9 100%);
  border: 1px solid var(--slate-200);
  border-radius: 0.75rem;
  box-shadow: var(--shadow-card);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.5rem;
  padding: clamp(1.25rem, 1.2vw + 0.5rem, 1.75rem);
  min-height: 120px;
}
.density-compact .tbl td,
.density-compact .tbl th {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  font-size: 13px;
}
.density-comfy .tbl td,
.density-comfy .tbl th {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
  font-size: 14px;
}
#dashboard-report-body td:first-child {
  position: sticky;
  left: 0;
  background-color: inherit;
  z-index: 5;
}
table {
  font-size: 0.9rem;
}
tbody tr:hover {
  background-color: var(--slate-100);
}
.home-card {
  background-color: #fff !important;
  border: 1px solid var(--slate-200) !important;
  border-radius: 0.75rem !important;
  box-shadow: var(--shadow-card);
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}
.home-card:hover {
  transform: translateY(-4px);
  border-color: rgba(16, 185, 129, 0.45) !important;
  box-shadow: 0 20px 48px rgba(15, 23, 42, 0.12);
}
.home-card h2 {
  font-weight: 600 !important;
  color: var(--slate-900) !important;
}
.home-card p {
  color: var(--slate-500) !important;
}
.icon-circle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  margin: 0 auto;
  border-radius: 9999px;
  background-color: var(--brand-soft);
  color: var(--brand);
}
.icon-circle svg {
  width: 2rem;
  height: 2rem;
  color: inherit;
}
input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="date"],
input[type="tel"],
input[type="search"],
input[type="file"],
select,
textarea {
  font-family: 'Inter', sans-serif;
  border-radius: 0.75rem;
  border: 1px solid var(--slate-300);
  color: var(--slate-900);
  background-color: #fff;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="date"],
input[type="tel"],
input[type="search"],
select {
  height: 2.5rem;
  padding: 0 1rem;
}
textarea {
  padding: 0.75rem 1rem;
  min-height: 8rem;
}
input:focus,
select:focus,
textarea:focus {
  outline: none;
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.3);
}
button,
.button,
label.relative {
  font-family: 'Inter', sans-serif;
  border-radius: 0.75rem;
  transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}
.bg-brand,
.button-primary {
  background-color: var(--brand) !important;
  color: #fff !important;
}
.bg-brand:hover,
.button-primary:hover,
.hover\:bg-brand:hover {
  background-color: var(--brand-hover) !important;
}
.text-brand {
  color: var(--brand) !important;
}
.bg-brand-soft {
  background-color: var(--brand-soft) !important;
  color: var(--brand) !important;
}
.bg-brand-soft:hover,
.hover\:bg-brand-soft:hover {
  background-color: rgba(16, 185, 129, 0.18) !important;
}
.border-brand {
  border-color: rgba(16, 185, 129, 0.45) !important;
}
.badge-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  background-color: var(--brand-soft);
  color: var(--brand);
  border-radius: 9999px;
  padding: 0.125rem 0.5rem;
  font-size: 0.75rem;
  font-weight: 600;
}
.app-alert-overlay {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  background: rgba(15, 23, 42, 0.45);
  backdrop-filter: blur(2px);
  z-index: 2147483645;
  transition: opacity 0.25s ease;
}
.app-alert-overlay[data-state="hidden"] {
  opacity: 0;
  pointer-events: none;
  visibility: hidden;
}
.app-alert-card {
  width: min(420px, 100%);
  background: #fff;
  border-radius: 1.25rem;
  padding: 1.75rem;
  box-shadow: 0 25px 60px rgba(15, 23, 42, 0.18);
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  transform: translateY(0);
  opacity: 1;
  transition: transform 0.25s ease, opacity 0.25s ease;
}
.app-alert-overlay[data-state="hidden"] .app-alert-card {
  transform: translateY(12px) scale(0.98);
  opacity: 0;
}
.app-alert-header {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
}
.app-alert-icon {
  flex-shrink: 0;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 9999px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.35rem;
  font-weight: 600;
  background-color: var(--info-soft);
  color: var(--info);
}
.app-alert-card[data-variant="success"] .app-alert-icon {
  background-color: var(--brand-soft);
  color: var(--brand);
}
.app-alert-card[data-variant="error"] .app-alert-icon {
  background-color: var(--danger-soft);
  color: var(--danger);
}
.app-alert-card[data-variant="warning"] .app-alert-icon {
  background-color: var(--warning-soft);
  color: var(--warning);
}
.app-alert-title {
  margin: 0;
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--slate-900);
}
.app-alert-message {
  margin: 0.35rem 0 0 0;
  font-size: 0.95rem;
  color: var(--slate-600);
  white-space: pre-line;
}
.app-alert-actions {
  display: flex;
  justify-content: flex-end;
}
.app-alert-button {
  min-width: 96px;
}
.bg-emerald-600,
.bg-emerald-700,
.bg-emerald-800,
.bg-emerald-900 {
  background-color: var(--brand) !important;
  color: #fff !important;
}
.hover\:bg-emerald-700:hover,
.hover\:bg-emerald-800:hover,
.hover\:bg-emerald-900:hover,
.bg-emerald-600:hover,
.bg-emerald-700:hover,
.bg-emerald-800:hover,
.bg-emerald-900:hover {
  background-color: var(--brand-hover) !important;
}
.text-emerald-600,
.text-emerald-700,
.text-emerald-800 {
  color: var(--brand) !important;
}
.bg-emerald-100 {
  background-color: rgba(16, 185, 129, 0.15) !important;
  color: var(--brand) !important;
}
.bg-gray-200,
.bg-slate-200 {
  background-color: var(--slate-50) !important;
  color: #334155 !important;
  border: 1px solid var(--slate-200) !important;
}
.bg-gray-200:hover,
.bg-slate-200:hover,
.hover\:bg-gray-300:hover {
  background-color: var(--slate-100) !important;
}
.border-gray-200 {
  border-color: var(--slate-200) !important;
}
.bg-blue-50,
.bg-green-50,
.bg-yellow-50,
.bg-red-50,
.bg-indigo-50 {
  background-color: var(--slate-50) !important;
  border-color: var(--slate-200) !important;
  color: var(--slate-900) !important;
}
.border-blue-500,
.border-green-500,
.border-yellow-500,
.border-red-500,
.border-indigo-500 {
  border-color: var(--brand) !important;
}
.text-gray-800 {
  color: var(--slate-900) !important;
}
.text-gray-600,
.text-gray-500 {
  color: var(--slate-600) !important;
}
.text-gray-700 {
  color: var(--slate-900) !important;
}
.bg-gray-800,
.bg-gray-900 {
  background-color: var(--brand) !important;
}
.hover\:bg-gray-900:hover,
.hover\:bg-gray-800:hover {
  background-color: var(--brand-hover) !important;
}
/* ============================================================
   AXLES - BLOCO ?NICO (FINAL): sem duplicações e com visibilidade
   ============================================================ */
/* Wrapper que ocupa a largura da linha do formul rio */
.axles-viewport{ width: 100%; }
/* Container dos cart es de eixos */
#vehicle-modal #axle-tire-inputs-container{
  width: 100%;
  display: flex;
  flex-wrap: wrap;          /* quebra no mobile */
  gap: .6rem;
  overflow-x: auto;         /* rolagem lateral se apertar */
  overflow-y: hidden;
  padding-bottom: .25rem;
  scrollbar-width: auto;
  scrollbar-color: #cbd5e1 #f1f5f9;
}
/* Scrollbar (WebKit) */
#vehicle-modal #axle-tire-inputs-container::-webkit-scrollbar{ height: 8px; }
#vehicle-modal #axle-tire-inputs-container::-webkit-scrollbar-track{ background:#f1f5f9; border-radius:9999px; }
#vehicle-modal #axle-tire-inputs-container::-webkit-scrollbar-thumb{ background:#cbd5e1; border-radius:9999px; }
/* Desktop: mant m os 4 em linha */
@media (min-width:1024px){
  #vehicle-modal #axle-tire-inputs-container{
    flex-wrap: nowrap;
    gap: .5rem;
  }
}
/* Cart o de cada eixo (r tulo + input +  ) */
#vehicle-modal #axle-tire-inputs-container .axle-input-group{
  display: inline-flex;
  align-items: center;
  gap: .48rem;
  padding: .34rem .56rem;
  border: 1px solid #e5e7eb;
  border-radius: .6rem;
  background: #fff;
  flex: 0 0 auto;             /* não quebra */
  min-width: 192px;           /* confort vel para r tulo + controles */
}
/*  rea do input e dos bot es   */
#vehicle-modal #axle-tire-inputs-container .axle-spin-wrap{
  position: relative;
  width: 136px;               /* largura til para input +   */
}
/* O input do n mero (VIS VEL) */
#vehicle-modal #axle-tire-inputs-container .axle-spin-wrap input[type="number"]{
  width: 62px;                /*  rea do n mero */
  min-width: 62px;
  height: 32px;
  padding: 8 76px 8 16px;      /* reserva espa o para os bot es   direita */
  text-align: center;
  font-size: 16px;
  line-height: 32px;
  /* garante o texto vis vel em qualquer cascata */
  color: #111827;
  -webkit-text-fill-color: #111827;
  opacity: 1;
  text-indent: 0;
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 8px;
  appearance: textfield;      /* evita skins diferentes do navegador */
}
/* Bot es   posicionados   direita do input */
#vehicle-modal #axle-tire-inputs-container .axle-spin{
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  gap: 8px;
}
#vehicle-modal #axle-tire-inputs-container .axle-spin button{
  width: 26px;
  height: 26px;
  line-height: 24px;
  font-size: 16px;
  border: 1px solid #cbd5e1;
  border-radius: 8px;
  background: #fff;
}
#vehicle-modal #axle-tire-inputs-container .axle-spin-wrap input[readonly]{
  caret-color: transparent;   /* sem cursor piscando */
  user-select: none;
}
/* =========================
   Mobile (layout enxuto)
   ========================= */
@media (max-width: 767px){
  html, body {
    margin: 0; padding: 0; width: 100%; overflow-x: hidden;
  }
  .container {
    width: 100%; max-width: 100%;
    padding-left: 0; padding-right: 0; margin: 0;
  }
  #vehicle-modal {
    width: 100%; max-width: 100%;
    margin: 0; padding: .5rem;
  }
  #vehicle-modal .modal-content {
    width: 100%;
    max-width: 98vw;
    margin: .5rem auto;
    padding: .75rem;
    max-height: 90vh;
    overflow-y: auto;
    overflow-x: hidden;
    border-radius: 1rem;
  }
  #axle-config-container {
    width: 100%;
    display: flex; flex-direction: column; align-items: stretch;
  }
  /* ===== Assignment (Gerenciar pneus no Ve culo) - Mobile apenas ===== */
  #assignment-view main{ display: flex; flex-direction: column; gap: 12px; }
  #assignment-view .lg\:col-span-1, #assignment-view .lg\:col-span-2 { width: 100%; }
  #assignment-view #vehicle-selection-list{ max-height: 38vh; overflow-y: auto; }
  #assignment-view #assignment-chassis-container { margin-top: 8px; }
  #assignment-view #assignment-chassis-svg{
    min-height: 300px;
    height: 72vh !important; /* mais espa o para 3/4 eixos em retrato */
    max-height: 78vh;
    overflow: hidden;
    padding: 16px 10px 14px 18px;  /* mais folga e espa o   esquerda para a cabine */
  }
  #assignment-view #assignment-chassis-svg svg{
    display: block;
    margin: 0 auto;
    width: auto !important;
    height: 100% !important;
    max-height: 100%;
    transform: none !important;      /* sem rota o/escala via CSS: JS cuida */
    transform-origin: center !important;
    max-width: none !important;
  }
}
/* Desktop e geral: manter modal est vel com rolagem interna */
#vehicle-modal .modal-content{
  max-height: 86vh;
  overflow-y: auto;
  overflow-x: hidden;
}
/* ===== Modal animations ===== */
.modal-enter {
  animation: modal-fade-in 0.25s ease-out forwards;
}
.modal-leave {
  animation: modal-fade-out 0.22s ease-in forwards;
}
@keyframes modal-fade-in {
  from { opacity: 0; transform: translateY(16px) scale(0.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes modal-fade-out {
  from { opacity: 1; transform: translateY(0) scale(1); }
  to   { opacity: 0; transform: translateY(16px) scale(0.97); }
}
/* ===== Fallback de visibilidade para n meros dos eixos (aplicar por ?ltimo) ===== */
#vehicle-modal #axle-tire-inputs-container input[type="number"]{
  color:#111827 !important;
  -webkit-text-fill-color:#111827 !important;
  opacity:1 !important;
  text-indent:0 !important;
} /* ? FECHE AQUI */
/* Tamanhos espec ficos para reboques/ca ambas */
/* Ajustes ESCOPO VEHICLE MODAL para tipos espec ficos */
#vehicle-modal .chassis-wrap-modal.chassis-cacamba {
  width: 100%;
  max-height: 500px;          /* moderado: não encosta em baixo */
  overflow: visible;
}
#vehicle-modal .chassis-wrap-modal.chassis-cacamba svg {
  max-width: 100%;
  max-height: 480px;          /* limite confort vel */
  transform: translateY(-20px) scale(0.85);  /* sobe um pouco mais para evitar corte */
  transform-origin: top center;
}
/* Tamanhos menores para carros */
#vehicle-modal .chassis-wrap-modal.chassis-leves {
  width: 520px;         /* ligeiramente maior para melhorar a leitura */
  max-height: 260px;
}
#vehicle-modal .chassis-wrap-modal.chassis-leves svg {
  max-height: 260px;
  transform: scale(0.97);     /* ~10% menor que o atual */
  transform-origin: top center;
}
/* Reserva de espa o para ?rea do preview dentro do modal */
#vehicle-modal .chassis-wrap-modal{
  min-height: 320px;
}
/* Caminh es: limite por quantidade de eixos */
/* Wrapper e SVG padr o (como no backup) */
.chassis-wrap-modal{
  width: auto;
  max-width: 95vw;
  margin: .25rem auto;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  overflow: hidden;          /* evita rolagem interna; modal assume o scroll */
  border-radius: 12px;
  height: 340px;             /* altura fixa mais compat vel com max-height do SVG */
  padding-bottom: 12px;      /* cria folga para não cortar as rodas na base */
}
.chassis-wrap-modal svg{ 
  display: block; 
  width: auto;               
  height: auto;              /* evita corte pela borda inferior */
  max-width: 90%;            
  max-height: 350px;         
}
/* Caminh es: levanta um pouco a arte para evitar corte na base */
#vehicle-modal .chassis-wrap-modal.chassis-caminhoes svg{
  transform: translateY(-16px);
  transform-origin: top center;
}
/* ===== Sidebar prototype overrides ===== */
#app::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
#app::-webkit-scrollbar-track {
  background: rgba(148, 163, 184, 0.2);
  border-radius: 999px;
}
#app::-webkit-scrollbar-thumb {
  background: rgba(56, 189, 248, 0.5);
  border-radius: 999px;
}
.sidebar-link {
  width: 100%;
  border-left: 4px solid transparent;
  color: #e2e8f0;
  border-radius: 0.5rem;
  transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}
.sidebar-link svg {
  width: 1.25rem;
  height: 1.25rem;
  flex-shrink: 0;
}
.sidebar-link.is-active {
  color: #34d399;
  border-left-color: #34d399;
  background-color: rgba(16, 185, 129, 0.12);
}
.sidebar-link.is-active svg {
  color: inherit;
}
.sidebar-group {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.sidebar-group .sidebar-sublink {
  border-left: 3px solid transparent;
}
.sidebar-group .sidebar-sublink.is-active {
  border-left-color: #34d399;
}
.sidebar-group .sidebar-caret {
  transition: transform 0.3s ease;
}
.sidebar-group.is-open .sidebar-caret {
  transform: rotate(180deg);
}
.sidebar-group.is-open .sidebar-submenu {
  display: flex;
}
.sidebar-submenu {
  display: none;
  flex-direction: column;
  gap: 0.25rem;
  padding-left: 0.5rem;
}
.sidebar-submenu .sidebar-link {
  border-radius: 0.375rem;
}
#app-sidebar {
  width: var(--sidebar-collapsed-width);
}
@media (min-width: 1024px) {
  #app-sidebar {
    width: var(--sidebar-expanded-width);
  }
}
.app-main {
  padding-left: 0;
  margin-left: 0;
  transition: margin-left 0.3s ease;
}
.app-main.sidebar-open {
  margin-left: var(--sidebar-collapsed-width);
}
@media (min-width: 1024px) {
  .app-main.sidebar-open {
    margin-left: var(--sidebar-expanded-width);
  }
}
#vehicle-register-modal .modal-content {
  margin: 0 auto;
}
@media (min-width: 768px) {
  .app-main.sidebar-open #vehicle-register-modal {
    padding-left: calc(1.5rem + var(--sidebar-collapsed-width));
    padding-right: 1.5rem;
  }
}
@media (min-width: 1024px) {
  .app-main.sidebar-open #vehicle-register-modal {
    padding-left: calc(1.5rem + var(--sidebar-expanded-width));
    padding-right: 1.5rem;
  }
}

