/* ============================================================================
   LP Sercomtel + NEX — CSS da versão publicada (standalone, sem build)
   ----------------------------------------------------------------------------
   As utilities abaixo reproduzem exatamente as classes do Tailwind usadas no
   preview (index.html do projeto), para a página publicada não depender de
   CDN nem de compilação. Mesma abordagem da LP arraia.
   Tipografia e paleta seguem o Brand Book NEX 2026.
   ========================================================================== */

/* ---------------------------------------------------------------- tipografia
   Os .ttf são os mesmos de public/fonts/ do projeto Next. */
@font-face { font-family:'Manrope'; src:url('fonts/Manrope-Regular.ttf') format('truetype');  font-weight:400; font-display:swap; }
@font-face { font-family:'Manrope'; src:url('fonts/Manrope-Medium.ttf') format('truetype');   font-weight:500; font-display:swap; }
@font-face { font-family:'Manrope'; src:url('fonts/Manrope-SemiBold.ttf') format('truetype'); font-weight:600; font-display:swap; }
@font-face { font-family:'Manrope'; src:url('fonts/Manrope-Bold.ttf') format('truetype');     font-weight:700; font-display:swap; }
@font-face { font-family:'Host Grotesk'; src:url('fonts/HostGrotesk-Regular.ttf') format('truetype');  font-weight:400; font-display:swap; }
@font-face { font-family:'Host Grotesk'; src:url('fonts/HostGrotesk-Medium.ttf') format('truetype');   font-weight:500; font-display:swap; }
@font-face { font-family:'Host Grotesk'; src:url('fonts/HostGrotesk-SemiBold.ttf') format('truetype'); font-weight:600; font-display:swap; }
@font-face { font-family:'Host Grotesk'; src:url('fonts/HostGrotesk-Bold.ttf') format('truetype');     font-weight:700; font-display:swap; }

/* -------------------------------------------------------------------- paleta
   5 cores do brand book + derivados de UI (tints do azul Sercomtel).
   Contrastes medidos estão anotados em app/globals.css do projeto. */
:root {
  --nex-o-white: #fafafa;
  --nex-cinza: #8c9690;
  --nex-chumbo: #1a1d1c;
  --nex-azul-sercomtel: #14387f;
  --nex-verde-energia: #71f697;
  --nex-surface: #eef3fb;
  --nex-surface-2: #dfe8f6;
  --nex-line: #d8e1f0;
  --nex-text-2: #5a6b8c;
  --nex-azul-fundo: #0d2657;
  /* fora da paleta de propósito: só estado de validação */
  --nex-alerta: #a52a1e;
  --nex-alerta-bg: #fdf1ef;
  --nex-alerta-line: #f0cfc9;
}

/* ---------------------------------------------------------------- base/reset */
/* border-color padrão igual ao preflight do Tailwind: toda borda visível da
   página define a cor explicitamente, então este valor é só fallback. */
*, ::before, ::after { box-sizing: border-box; border-width: 0; border-style: solid; border-color: rgb(229, 231, 235); }
html { line-height: 1.5; -webkit-text-size-adjust: 100%; tab-size: 4; }
body { margin: 0; line-height: inherit; background: var(--nex-o-white); color: var(--nex-chumbo); }
h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; margin: 0; }
p, figure, blockquote, dl, dd { margin: 0; }
ul, ol, menu { list-style: none; margin: 0; padding: 0; }
a { color: inherit; text-decoration: inherit; }
b, strong { font-weight: bolder; }
kbd { font-family: inherit; font-size: 1em; }
button, input, optgroup, select, textarea { font-family: inherit; font-feature-settings: inherit; font-size: 100%; font-weight: inherit; line-height: inherit; letter-spacing: inherit; color: inherit; margin: 0; padding: 0; }
button, select { text-transform: none; }
button { -webkit-appearance: button; appearance: button; background-color: transparent; background-image: none; cursor: pointer; }
img, svg, video, canvas { display: block; vertical-align: middle; }
img, video { max-width: 100%; height: auto; }
input::placeholder { opacity: 1; color: var(--nex-cinza); }
:disabled { cursor: default; }
[hidden] { display: none; }

* { font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif; }
.font-display, .tabular-nums {
  font-family: 'Host Grotesk', 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-variant-numeric: tabular-nums;
}

/* ----------------------------------------------------------------- animações */
@keyframes nex-pop-in { 0% { opacity: 0; transform: translateY(14px) scale(0.96); } 100% { opacity: 1; transform: translateY(0) scale(1); } }
.animate-pop-in { animation: nex-pop-in 0.45s cubic-bezier(0.22, 1, 0.36, 1) both; }
@keyframes nex-shake { 0%,100% { transform: translateX(0);} 20%{transform:translateX(-7px);}40%{transform:translateX(7px);}60%{transform:translateX(-5px);}80%{transform:translateX(5px);} }
.animate-shake { animation: nex-shake 0.4s ease-in-out; }
@keyframes nex-bounce-in { 0%{opacity:0;transform:scale(0.3);}50%{transform:scale(1.08);}70%{transform:scale(0.95);}100%{opacity:1;transform:scale(1);} }
.animate-bounce-in { animation: nex-bounce-in 0.6s cubic-bezier(0.22, 1, 0.36, 1) both; }
@keyframes nex-spin { to { transform: rotate(360deg); } }
.animate-spin { animation: nex-spin 0.8s linear infinite; }

/* =========================================================== layout / posição */

/* .container é componente, não utility: precisa vir ANTES das utilities para
   que .max-w-6xl consiga sobrescrever o max-width dele (mesma especificidade,
   quem vence é a ordem). É essa a ordem que o Tailwind gera. */
.container { width: 100%; }
@media (min-width: 640px)  { .container { max-width: 640px; } }
@media (min-width: 768px)  { .container { max-width: 768px; } }
@media (min-width: 1024px) { .container { max-width: 1024px; } }
@media (min-width: 1280px) { .container { max-width: 1280px; } }
@media (min-width: 1536px) { .container { max-width: 1536px; } }

.absolute { position: absolute; }
.relative { position: relative; }
.sticky { position: sticky; }
.top-0 { top: 0; }
.top-1\/2 { top: 50%; }
.left-4 { left: 1rem; }
.-top-8 { top: -2rem; }
.-right-10 { right: -2.5rem; }
.z-20 { z-index: 20; }
.pointer-events-none { pointer-events: none; }
.overflow-hidden { overflow: hidden; }

/* ============================================================== display/flex */
.flex { display: flex; }
.inline-flex { display: inline-flex; }
.grid { display: grid; }
.hidden { display: none; }
.flex-col { flex-direction: column; }
.flex-1 { flex: 1 1 0%; }
.shrink-0 { flex-shrink: 0; }
.items-start { align-items: flex-start; }
.items-center { align-items: center; }
.items-end { align-items: flex-end; }
.items-stretch { align-items: stretch; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.self-center { align-self: center; }
.grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.gap-1 { gap: 0.25rem; }
.gap-1\.5 { gap: 0.375rem; }
.gap-2 { gap: 0.5rem; }
.gap-2\.5 { gap: 0.625rem; }
.gap-3 { gap: 0.75rem; }
.gap-5 { gap: 1.25rem; }

.space-y-2\.5 > :not([hidden]) ~ :not([hidden]) { margin-top: 0.625rem; }
.space-y-3   > :not([hidden]) ~ :not([hidden]) { margin-top: 0.75rem; }

/* ================================================================= dimensões */
.h-1 { height: 0.25rem; }
.h-1\.5 { height: 0.375rem; }
.h-3 { height: 0.75rem; }
.h-4 { height: 1rem; }
.h-5 { height: 1.25rem; }
.h-6 { height: 1.5rem; }
.h-7 { height: 1.75rem; }
.h-10 { height: 2.5rem; }
.h-14 { height: 3.5rem; }
.h-20 { height: 5rem; }
.h-52 { height: 13rem; }
.h-full { height: 100%; }
.w-4 { width: 1rem; }
.w-5 { width: 1.25rem; }
.w-6 { width: 1.5rem; }
.w-10 { width: 2.5rem; }
.w-20 { width: 5rem; }
.w-52 { width: 13rem; }
.w-auto { width: auto; }
.w-full { width: 100%; }
.min-w-0 { min-width: 0; }
.min-h-screen { min-height: 100vh; }
.min-h-\[20px\] { min-height: 20px; }
.min-h-\[420px\] { min-height: 420px; }
.max-w-sm { max-width: 24rem; }
.max-w-md { max-width: 28rem; }
.max-w-6xl { max-width: 72rem; }

/* =================================================================== espaços */
.mx-auto { margin-left: auto; margin-right: auto; }
.mb-1\.5 { margin-bottom: 0.375rem; }
.mb-3 { margin-bottom: 0.75rem; }
.mt-0\.5 { margin-top: 0.125rem; }
.mt-1 { margin-top: 0.25rem; }
.mt-1\.5 { margin-top: 0.375rem; }
.mt-2 { margin-top: 0.5rem; }
.mt-3 { margin-top: 0.75rem; }
.mt-4 { margin-top: 1rem; }
.mt-5 { margin-top: 1.25rem; }
.mt-6 { margin-top: 1.5rem; }
.mt-7 { margin-top: 1.75rem; }
.p-3\.5 { padding: 0.875rem; }
.p-4 { padding: 1rem; }
.p-5 { padding: 1.25rem; }
.p-6 { padding: 1.5rem; }
.px-1 { padding-left: 0.25rem; padding-right: 0.25rem; }
.px-2\.5 { padding-left: 0.625rem; padding-right: 0.625rem; }
.px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
.px-3\.5 { padding-left: 0.875rem; padding-right: 0.875rem; }
.px-4 { padding-left: 1rem; padding-right: 1rem; }
.px-7 { padding-left: 1.75rem; padding-right: 1.75rem; }
.py-0\.5 { padding-top: 0.125rem; padding-bottom: 0.125rem; }
.py-1 { padding-top: 0.25rem; padding-bottom: 0.25rem; }
.py-1\.5 { padding-top: 0.375rem; padding-bottom: 0.375rem; }
.py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; }
.py-2\.5 { padding-top: 0.625rem; padding-bottom: 0.625rem; }
.py-3\.5 { padding-top: 0.875rem; padding-bottom: 0.875rem; }
.py-4 { padding-top: 1rem; padding-bottom: 1rem; }
.py-6 { padding-top: 1.5rem; padding-bottom: 1.5rem; }
.pb-0\.5 { padding-bottom: 0.125rem; }
.pb-1 { padding-bottom: 0.25rem; }
.pl-12 { padding-left: 3rem; }
.pr-4 { padding-right: 1rem; }

/* ================================================================ tipografia */
.text-\[10px\] { font-size: 10px; }
.text-\[11px\] { font-size: 11px; }
.text-\[12px\] { font-size: 12px; }
.text-\[13px\] { font-size: 13px; }
.text-\[15px\] { font-size: 15px; }
.text-sm { font-size: 0.875rem; line-height: 1.25rem; }
.text-base { font-size: 1rem; line-height: 1.5rem; }
.text-lg { font-size: 1.125rem; line-height: 1.75rem; }
.text-2xl { font-size: 1.5rem; line-height: 2rem; }
.text-3xl { font-size: 1.875rem; line-height: 2.25rem; }
.text-4xl { font-size: 2.25rem; line-height: 2.5rem; }
.text-5xl { font-size: 3rem; line-height: 1; }
.font-light { font-weight: 300; }
.font-medium { font-weight: 500; }
.font-semibold { font-weight: 600; }
.font-bold { font-weight: 700; }
.leading-none { line-height: 1; }
.leading-tight { line-height: 1.25; }
.leading-snug { line-height: 1.375; }
.leading-relaxed { line-height: 1.625; }
.tracking-tight { letter-spacing: -0.025em; }
.tracking-wider { letter-spacing: 0.05em; }
.uppercase { text-transform: uppercase; }
.underline { text-decoration-line: underline; }
.line-through { text-decoration-line: line-through; }
.text-left { text-align: left; }
.text-center { text-align: center; }
.truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.antialiased { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }

/* ============================================================= bordas/sombra */
.border { border-width: 1px; }
.border-t { border-top-width: 1px; }
.rounded-xl { border-radius: 0.75rem; }
.rounded-2xl { border-radius: 1rem; }
.rounded-3xl { border-radius: 1.5rem; }
.rounded-full { border-radius: 9999px; }
.shadow-sm { box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); }

/* ============================================================ interação/misc */
.cursor-pointer { cursor: pointer; }
.outline-none { outline: 2px solid transparent; outline-offset: 2px; }
.-translate-y-1\/2 { transform: translateY(-50%); }
.transition-all { transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; }
.transition-colors { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; }
.duration-300 { transition-duration: 300ms; }
.duration-500 { transition-duration: 500ms; }
.ease-out { transition-timing-function: cubic-bezier(0, 0, 0.2, 1); }

/* ============================================================== breakpoints */
/* Setas do "como funciona": só aparecem quando os três cards cabem na mesma
   linha (>=1024px). Abaixo disso os cards quebram em linhas e a seta sobraria
   no fim de uma delas. O display vem de estilo inline, por isso o !important. */
@media (max-width: 1023px) {
  .nex-passo-seta { display: none !important; }
}

@media (min-width: 640px) {
  .sm\:flex-row { flex-direction: row; }
  .sm\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 768px) {
  .md\:flex { display: flex; }
  .md\:mx-0 { margin-left: 0; margin-right: 0; }
  .md\:h-7 { height: 1.75rem; }
  .md\:h-9 { height: 2.25rem; }
  .md\:gap-4 { gap: 1rem; }
  .md\:p-8 { padding: 2rem; }
  .md\:p-9 { padding: 2.25rem; }
  .md\:py-4 { padding-top: 1rem; padding-bottom: 1rem; }
  .md\:py-10 { padding-top: 2.5rem; padding-bottom: 2.5rem; }
  .md\:self-start { align-self: flex-start; }
  .md\:w-auto { width: auto; }
  .md\:text-left { text-align: left; }
  .md\:text-3xl { font-size: 1.875rem; line-height: 2.25rem; }
  .md\:text-4xl { font-size: 2.25rem; line-height: 2.5rem; }
  .md\:text-\[28px\] { font-size: 28px; }
}
@media (min-width: 1024px) {
  .lg\:gap-8 { gap: 2rem; }
  .lg\:grid-cols-\[0\.95fr_1\.05fr\] { grid-template-columns: 0.95fr 1.05fr; }
}

/* ============================================ seletor de distribuidora
   Campo nativo, para funcionar bem no teclado do celular. So tiramos a
   aparencia padrao do sistema e desenhamos a setinha, para casar com os
   inputs da LP. */
.nex-select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27 fill=%27none%27 stroke=%27%236B7280%27 stroke-width=%272%27%3E%3Cpath d=%27M5 8l5 5 5-5%27/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 20px 20px;
  padding-right: 44px;
  cursor: pointer;
}
.nex-select:focus { border-color: var(--nex-azul-sercomtel); }
