/* ======================================================================
   SV-PLATE — componente único de placa veicular padrão MERCOSUL
   Usado em toda a aplicação (cliente, parceiro, despachante).
   ====================================================================== */

.sv-plate {
  --p-h: 56px;             /* altura padrão */
  --p-w: calc(var(--p-h) * 3.05);
  --p-radius: calc(var(--p-h) * .11);
  --p-border: max(1px, calc(var(--p-h) * .035));
  --p-top-h: calc(var(--p-h) * .32);
  --p-num-h: calc(var(--p-h) - var(--p-top-h));
  --p-num-fs: calc(var(--p-h) * .55);
  --p-top-fs: calc(var(--p-h) * .18);

  position: relative;
  display: inline-flex;
  flex-direction: column;
  width: var(--p-w);
  height: var(--p-h);
  background: #fff;
  border: var(--p-border) solid #1b1b1b;
  border-radius: var(--p-radius);
  overflow: hidden;
  box-shadow:
    inset 0 0 0 1px rgba(0,0,0,.08),
    0 1px 2px rgba(0,0,0,.10);
  font-family: 'Inter', system-ui, sans-serif;
  user-select: none;
  vertical-align: middle;
  line-height: 1;
  flex-shrink: 0;
}

/* Faixa superior azul "BRASIL" + bandeira BR */
.sv-plate-top {
  height: var(--p-top-h);
  background: linear-gradient(180deg, #0b3a7a 0%, #0e4790 100%);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  font-size: var(--p-top-fs);
  font-weight: 800;
  letter-spacing: calc(var(--p-h) * .025);
}
.sv-plate-top::before,
.sv-plate-top::after {
  content: '';
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  height: calc(var(--p-top-h) * .85);
  border-radius: 2px;
}
/* Mercosul (lateral esquerda) */
.sv-plate-top::before {
  left: calc(var(--p-h) * .06);
  width: calc(var(--p-h) * .22);
  background:
    radial-gradient(circle at 50% 25%, #fff 0 1px, transparent 1.5px) 0 0 / 100% 50% no-repeat,
    radial-gradient(circle at 30% 75%, #fff 0 1px, transparent 1.5px) 0 100% / 100% 50% no-repeat,
    radial-gradient(circle at 70% 75%, #fff 0 1px, transparent 1.5px) 0 100% / 100% 50% no-repeat,
    linear-gradient(180deg, #0b3a7a, #0e4790);
}
/* Bandeira do Brasil (lateral direita) */
.sv-plate-top::after {
  right: calc(var(--p-h) * .06);
  width: calc(var(--p-top-h) * 1.4);
  background:
    radial-gradient(ellipse at center, #fff 0 8%, #0c3a8c 8% 14%, #fff 14% 16%, transparent 16%) center / 60% 60% no-repeat,
    linear-gradient(135deg,
      #fbe21a 0 35%,
      transparent 35% 65%,
      #fbe21a 65% 100%),
    #009b3a;
  background-blend-mode: normal;
}
/* Versão simplificada da bandeira (mais legível em pequenos tamanhos) */
.sv-plate-top .sv-plate-flag {
  position: absolute;
  right: calc(var(--p-h) * .06);
  top: 50%;
  transform: translateY(-50%);
  width: calc(var(--p-top-h) * 1.4);
  height: calc(var(--p-top-h) * .85);
  background:
    radial-gradient(circle at center, #003a8c 18%, transparent 19%) center / 100% 100% no-repeat,
    linear-gradient(135deg, #ffdf00 30%, transparent 30% 70%, #ffdf00 70%),
    #00a859;
  border-radius: 1px;
  z-index: 2;
  box-shadow: 0 0 0 1px rgba(0,0,0,.15);
}
.sv-plate-top .sv-plate-flag::before {
  content: '';
  position: absolute; inset: 25% 20%;
  background: radial-gradient(circle at 30% 60%, #fff 0 6%, transparent 7%),
              radial-gradient(circle at 70% 40%, #fff 0 5%, transparent 6%),
              radial-gradient(circle at 50% 70%, #fff 0 5%, transparent 6%),
              #002776;
  border-radius: 50%;
}
.sv-plate-top .sv-plate-brasil {
  position: relative;
  z-index: 1;
  padding: 0 calc(var(--p-h) * .04);
  /* não usar a bandeira CSS dupla — esconde a do ::after */
}
.sv-plate-top.has-flag::after { display: none; }

/* Faixa inferior: número da placa */
.sv-plate-num {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'JetBrains Mono', 'SF Mono', 'Consolas', monospace;
  font-weight: 800;
  color: #0a0a0a;
  font-size: var(--p-num-fs);
  letter-spacing: calc(var(--p-h) * .04);
  text-transform: uppercase;
  background:
    linear-gradient(180deg, #ffffff 0%, #f4f4f4 100%);
  position: relative;
}
.sv-plate-num::before,
.sv-plate-num::after {
  content: '';
  position: absolute;
  width: calc(var(--p-h) * .12);
  height: calc(var(--p-h) * .12);
  background: #0a0a0a;
  opacity: .55;
  border-radius: 2px;
}
.sv-plate-num::before { left: calc(var(--p-h) * .08); top: calc(var(--p-h) * .08); }
.sv-plate-num::after  { left: calc(var(--p-h) * .08); bottom: calc(var(--p-h) * .08); }

/* Tamanhos pré-definidos */
.sv-plate.sm { --p-h: 32px; }
.sv-plate.md { --p-h: 44px; }
.sv-plate.lg { --p-h: 64px; }
.sv-plate.xl { --p-h: 88px; }

/* Modo "—" (placa desconhecida) */
.sv-plate.is-empty .sv-plate-num {
  color: #9ca3af;
  font-weight: 500;
  letter-spacing: 0;
}

/* ----------------------------------------------------------------------
   SV-VEHICLE — ícone unificado de veículo (carrinho neutro)
   Usado nos cards de consulta/histórico do despachante e parceiro
   para manter consistência com a área do cliente.
   ---------------------------------------------------------------------- */
.sv-vicon {
  --vi-size: 44px;
  position: relative;
  width: var(--vi-size);
  height: var(--vi-size);
  border-radius: calc(var(--vi-size) * .22);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #f3f4f6;
  color: #94a3b8;
  font-size: calc(var(--vi-size) * .42);
  flex-shrink: 0;
  overflow: hidden;
  box-shadow: inset 0 0 0 1px rgba(15,23,42,.06);
}
.sv-vicon .sv-vicon-fb {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  pointer-events: none;
}
.sv-vicon .sv-vicon-img {
  position: relative; z-index: 1;
  width: 100%; height: 100%;
  object-fit: contain;
  padding: calc(var(--vi-size) * .08);
  background: transparent;
}
/* Quando a silhueta carrega, esconde o fallback */
.sv-vicon .sv-vicon-img[data-resolved] ~ .sv-vicon-fb,
.sv-vicon:has(.sv-vicon-img[data-resolved]) .sv-vicon-fb { display: none; }
.sv-vicon.is-moto, .sv-vicon.is-truck { background: #f3f4f6; }
.sv-vicon.sm { --vi-size: 36px; }
.sv-vicon.md { --vi-size: 52px; }
.sv-vicon.lg { --vi-size: 64px; }
