/* ==========================================================
 * app/static/app.css — GERADO. Nao edite a mao.
 *
 * Fonte: app/static/index.html
 * Gerador: scripts/gerar_css.py   (rode-o apos mexer nas classes)
 *
 * Contem apenas as classes utilitarias efetivamente usadas na tela.
 * Substitui a Play CDN do Tailwind, que dependia de rede externa.
 * ========================================================== */

*, ::before, ::after { box-sizing: border-box; border: 0 solid #e2e8f0; }
* { margin: 0; }
html { -webkit-text-size-adjust: 100%; }
body { font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  line-height: 1.5; }
h1, h2, h3, h4, p { font-size: inherit; font-weight: inherit; }
button, input, select, textarea { font: inherit; color: inherit;
  background: transparent; }
button { cursor: pointer; }
table { border-collapse: collapse; }
svg { display: block; }
[hidden] { display: none !important; }

/* --- Utilitarios ---------------------------------------------- */
.align-top { vertical-align:top; }
.antialiased { -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale; }
.bg-amber-50 { background-color:#fffbeb; }
.bg-amber-500 { background-color:#f59e0b; }
.bg-emerald-100 { background-color:#d1fae5; }
.bg-emerald-700 { background-color:#047857; }
.bg-marca-100 { background-color:#E8EEF8; }
.bg-marca-500 { background-color:#2E5AAC; }
.bg-marca-900 { background-color:#0F2557; }
.bg-purple-100 { background-color:#f3e8ff; }
.bg-red-100 { background-color:#fee2e2; }
.bg-red-50 { background-color:#fef2f2; }
.bg-slate-100 { background-color:#f1f5f9; }
.bg-slate-200 { background-color:#e2e8f0; }
.bg-slate-300 { background-color:#cbd5e1; }
.bg-slate-50 { background-color:#f8fafc; }
.bg-slate-800 { background-color:#1e293b; }
.bg-slate-900\/70 { background-color:rgba(15, 23, 42, 0.7); }
.bg-white { background-color:#ffffff; }
.bg-white\/15 { background-color:rgba(255, 255, 255, 0.15); }
.block { display:block; }
.border { border-width:1px;border-style:solid; }
.border-2 { border-width:2px;border-style:solid; }
.border-amber-200 { border-color:#fde68a; }
.border-b { border-bottom-width:1px;border-bottom-style:solid; }
.border-dashed { border-style:dashed; }
.border-emerald-300 { border-color:#6ee7b7; }
.border-l-2 { border-left-width:2px;border-left-style:solid; }
.border-marca-500 { border-color:#2E5AAC; }
.border-marca-500\/20 { border-color:rgba(46, 90, 172, 0.2); }
.border-red-200 { border-color:#fecaca; }
.border-red-300 { border-color:#fca5a5; }
.border-slate-100 { border-color:#f1f5f9; }
.border-slate-200 { border-color:#e2e8f0; }
.border-slate-300 { border-color:#cbd5e1; }
.border-slate-400 { border-color:#94a3b8; }
.border-t { border-top-width:1px;border-top-style:solid; }
.border-traco { border-color:#74869f; }
.border-white\/25 { border-color:rgba(255, 255, 255, 0.25); }
.break-words { overflow-wrap:break-word; }
.cursor-pointer { cursor:pointer; }
.decoration-red-400 { text-decoration-color:#f87171; }
.divide-slate-100 { --cor-divisor:#f1f5f9; }
.fixed { position:fixed; }
.flex { display:flex; }
.flex-1 { flex:1 1 0%; }
.flex-col { flex-direction:column; }
.flex-wrap { flex-wrap:wrap; }
.font-bold { font-weight:700; }
.font-medium { font-weight:500; }
.font-normal { font-weight:400; }
.font-semibold { font-weight:600; }
.gap-1 { gap:0.25rem; }
.gap-2 { gap:0.5rem; }
.gap-3 { gap:0.75rem; }
.gap-4 { gap:1rem; }
.gap-x-4 { column-gap:1rem; }
.gap-y-2 { row-gap:0.5rem; }
.grid { display:grid; }
.grid-cols-2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.h-1\.5 { height:0.375rem; }
.h-10 { height:2.5rem; }
.h-14 { height:3.5rem; }
.h-2 { height:0.5rem; }
.h-3\.5 { height:0.875rem; }
.h-4 { height:1rem; }
.h-5 { height:1.25rem; }
.h-6 { height:1.5rem; }
.h-9 { height:2.25rem; }
.h-full { height:100%; }
.hidden { display:none; }
.inline-block { display:inline-block; }
.inline-flex { display:inline-flex; }
.inset-0 { top:0;right:0;bottom:0;left:0; }
.italic { font-style:italic; }
.items-baseline { align-items:baseline; }
.items-center { align-items:center; }
.items-start { align-items:flex-start; }
.justify-between { justify-content:space-between; }
.justify-center { justify-content:center; }
.leading-tight { line-height:1.25; }
.line-through { text-decoration-line:line-through; }
.max-w-5xl { max-width:64rem; }
.max-w-6xl { max-width:72rem; }
.max-w-md { max-width:28rem; }
.mb-1 { margin-bottom:0.25rem; }
.mb-2 { margin-bottom:0.5rem; }
.mb-3 { margin-bottom:0.75rem; }
.mb-4 { margin-bottom:1rem; }
.mb-6 { margin-bottom:1.5rem; }
.mb-8 { margin-bottom:2rem; }
.min-h-screen { min-height:100vh; }
.min-w-0 { min-width:0; }
.ml-1 { margin-left:0.25rem; }
.ml-3 { margin-left:0.75rem; }
.ml-auto { margin-left:auto; }
.mt-0\.5 { margin-top:0.125rem; }
.mt-1 { margin-top:0.25rem; }
.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; }
.mx-auto { margin-left:auto;margin-right:auto; }
.normal-case { text-transform:none; }
.opacity-80 { opacity:0.8; }
.outline-none { outline:2px solid transparent;outline-offset:2px; }
.overflow-auto { overflow:auto; }
.overflow-hidden { overflow:hidden; }
.overflow-x-auto { overflow-x:auto; }
.p-2 { padding:0.5rem; }
.p-3 { padding:0.75rem; }
.p-4 { padding:1rem; }
.p-5 { padding:1.25rem; }
.p-6 { padding:1.5rem; }
.p-8 { padding:2rem; }
.pl-2 { padding-left:0.5rem; }
.place-items-center { place-items:center; }
.pr-2 { padding-right:0.5rem; }
.pt-2 { padding-top:0.5rem; }
.px-1\.5 { padding-left:0.375rem;padding-right:0.375rem; }
.px-2 { padding-left:0.5rem;padding-right:0.5rem; }
.px-3 { padding-left:0.75rem;padding-right:0.75rem; }
.px-4 { padding-left:1rem;padding-right:1rem; }
.px-6 { padding-left:1.5rem;padding-right:1.5rem; }
.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-12 { padding-top:3rem;padding-bottom:3rem; }
.py-2 { padding-top:0.5rem;padding-bottom:0.5rem; }
.py-2\.5 { padding-top:0.625rem;padding-bottom:0.625rem; }
.py-3 { padding-top:0.75rem;padding-bottom:0.75rem; }
.py-4 { padding-top:1rem;padding-bottom:1rem; }
.py-8 { padding-top:2rem;padding-bottom:2rem; }
.rounded { border-radius:0.25rem; }
.rounded-2xl { border-radius:1rem; }
.rounded-full { border-radius:9999px; }
.rounded-lg { border-radius:0.5rem; }
.rounded-md { border-radius:0.375rem; }
.rounded-t-lg { border-top-left-radius:0.5rem;border-top-right-radius:0.5rem; }
.rounded-xl { border-radius:0.75rem; }
.select-none { user-select:none; }
.shadow-sm { box-shadow:0 1px 2px 0 rgba(15,23,42,.06); }
.shrink-0 { flex-shrink:0; }
.text-2xl { font-size:1.5rem;line-height:2rem; }
.text-\[10px\] { font-size:10px;line-height:14px; }
.text-amber-700 { color:#b45309; }
.text-amber-800 { color:#92400e; }
.text-center { text-align:center; }
.text-emerald-700 { color:#047857; }
.text-left { text-align:left; }
.text-marca-700 { color:#1B3B7F; }
.text-marca-900 { color:#0F2557; }
.text-purple-700 { color:#7e22ce; }
.text-red-700 { color:#b91c1c; }
.text-right { text-align:right; }
.text-slate-400 { color:#94a3b8; }
.text-slate-500 { color:#64748b; }
.text-slate-600 { color:#475569; }
.text-slate-700 { color:#334155; }
.text-slate-800 { color:#1e293b; }
.text-slate-900 { color:#0f172a; }
.text-sm { font-size:0.875rem;line-height:1.25rem; }
.text-white { color:#ffffff; }
.text-white\/60 { color:rgba(255, 255, 255, 0.6); }
.text-white\/80 { color:rgba(255, 255, 255, 0.8); }
.text-xs { font-size:0.75rem;line-height:1rem; }
.tracking-wide { letter-spacing:0.025em; }
.transition { transition-property:color,background-color,border-color,opacity,box-shadow,transform;transition-duration:150ms;transition-timing-function:cubic-bezier(.4,0,.2,1); }
.transition-all { transition-property:all;transition-duration:150ms;transition-timing-function:cubic-bezier(.4,0,.2,1); }
.truncate { overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.underline { text-decoration-line:underline; }
.uppercase { text-transform:uppercase; }
.w-1\/4 { width:25%; }
.w-10 { width:2.5rem; }
.w-14 { width:3.5rem; }
.w-3\.5 { width:0.875rem; }
.w-4 { width:1rem; }
.w-5 { width:1.25rem; }
.w-6 { width:1.5rem; }
.w-9 { width:2.25rem; }
.w-full { width:100%; }
.whitespace-nowrap { white-space:nowrap; }
.z-50 { z-index:50; }

/* --- hover: ------------------------------ */
.hover\:bg-emerald-50:hover { background-color:#ecfdf5; }
.hover\:bg-emerald-800:hover { background-color:#065f46; }
.hover\:bg-marca-100\/40:hover { background-color:rgba(232, 238, 248, 0.4); }
.hover\:bg-marca-700:hover { background-color:#1B3B7F; }
.hover\:bg-red-50:hover { background-color:#fef2f2; }
.hover\:bg-slate-50:hover { background-color:#f8fafc; }
.hover\:bg-slate-50\/70:hover { background-color:rgba(248, 250, 252, 0.7); }
.hover\:bg-slate-700:hover { background-color:#334155; }
.hover\:bg-white:hover { background-color:#ffffff; }
.hover\:bg-white\/10:hover { background-color:rgba(255, 255, 255, 0.1); }
.hover\:border-marca-500:hover { border-color:#2E5AAC; }
.hover\:text-marca-900:hover { color:#0F2557; }
.hover\:text-red-700:hover { color:#b91c1c; }
.hover\:underline:hover { text-decoration-line:underline; }

/* --- focus: ------------------------------ */
.focus\:border-marca-500:focus { border-color:#2E5AAC; }
.focus\:outline-none:focus { outline:2px solid transparent;outline-offset:2px; }
.focus\:ring-2:focus { box-shadow:0 0 0 2px var(--cor-anel,rgba(46,90,172,.35)); }
.focus\:ring-marca-100:focus { --cor-anel:#E8EEF8; }

/* --- disabled: ------------------------------ */
.disabled\:cursor-not-allowed:disabled { cursor:not-allowed; }
.disabled\:opacity-40:disabled { opacity:0.4; }
.disabled\:opacity-50:disabled { opacity:0.5; }

/* --- Compostas ------------------------------- */
@keyframes pulsa { 50% { opacity: .5; } }
.animate-pulse { animation: pulsa 2s cubic-bezier(.4,0,.6,1) infinite; }
.divide-y > * + * { border-top-width: 1px; border-top-style: solid;
  border-top-color: var(--cor-divisor, #e2e8f0); }
.space-y-1 > * + * { margin-top: 0.25rem; }
.space-y-2 > * + * { margin-top: 0.5rem; }
.space-y-3 > * + * { margin-top: 0.75rem; }
.space-y-4 > * + * { margin-top: 1rem; }
.space-y-6 > * + * { margin-top: 1.5rem; }

@media (min-width: 40rem) {
  .sm\:grid-cols-2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .sm\:grid-cols-4 { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .sm\:h-16 { height:4rem; }
}

/* --- Acessibilidade (WCAG 2.1 AA) ----------------------------- */
/* Anel de foco por teclado. Vem depois dos utilitarios para vencer
   `.outline-none` por ordem de cascata. `:focus-visible` (e nao
   `:focus`) para nao desenhar o anel em cliques de mouse. */
:focus-visible { outline: 2px solid #2E5AAC; outline-offset: 2px; }

/* Respeita quem pediu menos animacao no sistema operacional
   (WCAG 2.3.3). A barra indeterminada vira estatica em vez de
   deslizar sem parar. */
@media (prefers-reduced-motion: reduce) {
  *, ::before, ::after { animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important; }
}

/* Texto so para leitor de tela: fora da vista, dentro da arvore de
   acessibilidade. `display:none` esconderia dos dois. */
.apenas-leitor { position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0);
  white-space: nowrap; border-width: 0; }
