/* ──────────────────────────────────────────────────────────────────────────
   neo.css — Maestrus design system (novo site)
   Tokens: fundo #0a0908 · texto #F2ECE0 · secundário #a8a198 · apagado #6f6a62
   accent #ff8a3d (hover #ffb07a) · erro #c96a6a · ok #3dbf8c
   Fontes: body 'Space Grotesk' · títulos 'Geist Pixel'
   ────────────────────────────────────────────────────────────────────────── */

:root {
  --neo-bg: #0a0908;
  --neo-text: #F2ECE0;
  --neo-text-2: #a8a198;
  --neo-text-3: #6f6a62;
  --neo-accent: #ff8a3d;
  --neo-accent-hover: #ffb07a;
  --neo-accent-soft: #ffa057;
  --neo-err: #c96a6a;
  --neo-ok: #3dbf8c;
  --neo-border: rgba(242, 236, 224, .09);
  --neo-border-strong: rgba(242, 236, 224, .14);
  --neo-card-grad: linear-gradient(180deg, #100e0c, #0c0b09);
  --neo-font-body: 'Space Grotesk', system-ui, -apple-system, sans-serif;
  --neo-font-display: 'Geist Pixel', 'Space Grotesk', monospace;
}

/* ── Base ──────────────────────────────────────────────────────────────── */

* { box-sizing: border-box; }

.neo-body {
  margin: 0;
  min-height: 100vh;
  min-height: 100dvh;
  background: var(--neo-bg);
  color: var(--neo-text);
  font-family: var(--neo-font-body);
  font-size: 15px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  position: relative;
}

.neo-body a { color: var(--neo-accent); text-decoration: none; transition: color .15s; }
.neo-body a:hover { color: var(--neo-accent-hover); }

/* ── Fundo: grid + glow ────────────────────────────────────────────────── */

.neo-grid-bg {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background-image:
    linear-gradient(rgba(242, 236, 224, .03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(242, 236, 224, .03) 1px, transparent 1px);
  background-size: 58px 58px;
  -webkit-mask-image: radial-gradient(ellipse 120% 90% at 50% 0%, #000 35%, transparent 90%);
  mask-image: radial-gradient(ellipse 120% 90% at 50% 0%, #000 35%, transparent 90%);
}

.neo-glow {
  position: fixed;
  top: -180px;
  right: -180px;
  width: 620px;
  height: 620px;
  pointer-events: none;
  z-index: 0;
  background: radial-gradient(circle at center, rgba(255, 138, 61, .08), transparent 60%);
  filter: blur(10px);
}

/* ── Tipografia ────────────────────────────────────────────────────────── */

.neo-title {
  font-family: var(--neo-font-display);
  font-weight: 400;
  letter-spacing: .01em;
  color: var(--neo-text);
  margin: 0;
}

.neo-eyebrow {
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--neo-accent-soft);
}

.neo-muted { color: var(--neo-text-2); }
.neo-faint { color: var(--neo-text-3); }
.neo-err { color: var(--neo-err); }
.neo-ok { color: var(--neo-ok); }

/* ── Card ──────────────────────────────────────────────────────────────── */

.neo-card {
  background: var(--neo-card-grad);
  border: 1px solid var(--neo-border);
  border-radius: 18px;
  padding: 28px 24px;
}

.neo-card--hot {
  border: 1.5px solid rgba(255, 138, 61, .4);
  box-shadow: 0 24px 60px -30px rgba(255, 138, 61, .35);
}

@media (min-width: 640px) {
  .neo-card { padding: 38px 36px; }
}

/* ── Botões ────────────────────────────────────────────────────────────── */

.neo-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 13px 22px;
  border: none;
  border-radius: 12px;
  background: var(--neo-accent);
  color: #0a0908;
  font-family: var(--neo-font-body);
  font-size: 15px;
  font-weight: 700;
  cursor: pointer;
  text-decoration: none;
  box-shadow: 0 8px 28px -10px rgba(255, 138, 61, .7);
  transition: transform .15s, background .15s, box-shadow .15s;
}

.neo-btn:hover {
  transform: translateY(-2px);
  background: var(--neo-accent-hover);
  color: #0a0908;
}

/* Quando o botão é um <a> (oauth / abrir Maestrus), a regra genérica
   `.neo-body a { color: var(--neo-accent) }` (0,1,1) vencia o `.neo-btn`
   (0,1,0) → texto laranja em cima do fundo laranja. Reforça a cor do texto
   com especificidade maior (0,2,1). */
.neo-body a.neo-btn, .neo-body a.neo-btn:hover { color: #0a0908; }
.neo-body a.neo-btn-ghost { color: var(--neo-text-2); }

.neo-btn:disabled { opacity: .5; cursor: default; transform: none; }

.neo-btn-ghost {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 13px 22px;
  border: 1px solid rgba(242, 236, 224, .18);
  border-radius: 12px;
  background: transparent;
  color: #cfc8bd;
  font-family: var(--neo-font-body);
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  transition: border-color .15s, color .15s, transform .15s;
}

.neo-btn-ghost:hover { color: var(--neo-text); border-color: rgba(242, 236, 224, .32); }

.neo-btn--block, .neo-btn-ghost--block { width: 100%; }

/* ── Formulários ───────────────────────────────────────────────────────── */

.neo-label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--neo-text-2);
  margin-bottom: 6px;
}

.neo-input {
  width: 100%;
  padding: 13px 15px;
  background: rgba(20, 16, 12, .55);
  border: 1px solid var(--neo-border-strong);
  border-radius: 12px;
  color: var(--neo-text);
  font-family: var(--neo-font-body);
  font-size: 15px;
  outline: none;
  transition: border-color .15s;
}

.neo-input::placeholder { color: var(--neo-text-3); }
.neo-input:focus { border-color: var(--neo-accent); }

.neo-field { margin-bottom: 16px; }

/* ── Alertas ───────────────────────────────────────────────────────────── */

.neo-alert {
  padding: 12px 15px;
  border-radius: 12px;
  font-size: 14px;
  margin-bottom: 18px;
  border: 1px solid;
}

.neo-alert--err {
  color: var(--neo-err);
  border-color: rgba(201, 106, 106, .35);
  background: rgba(201, 106, 106, .08);
}

.neo-alert--ok {
  color: var(--neo-ok);
  border-color: rgba(61, 191, 140, .35);
  background: rgba(61, 191, 140, .08);
}

/* ── Badges ────────────────────────────────────────────────────────────── */

.neo-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .03em;
  border: 1px solid var(--neo-border-strong);
  color: var(--neo-text-2);
  background: rgba(20, 16, 12, .55);
}

.neo-badge--accent {
  color: var(--neo-accent);
  border-color: rgba(255, 138, 61, .4);
  background: rgba(255, 138, 61, .08);
}

.neo-badge--ok {
  color: var(--neo-ok);
  border-color: rgba(61, 191, 140, .4);
  background: rgba(61, 191, 140, .08);
}

.neo-badge--err {
  color: var(--neo-err);
  border-color: rgba(201, 106, 106, .4);
  background: rgba(201, 106, 106, .08);
}

/* ── Tabela dark ───────────────────────────────────────────────────────── */

.neo-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

.neo-table th {
  text-align: left;
  padding: 10px 14px;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--neo-text-3);
  border-bottom: 1px solid var(--neo-border-strong);
}

.neo-table td {
  padding: 12px 14px;
  border-bottom: 1px solid var(--neo-border);
  color: var(--neo-text-2);
}

.neo-table td:first-child { color: var(--neo-text); }
.neo-table tr:last-child td { border-bottom: none; }
.neo-table tbody tr { transition: background .15s; }
.neo-table tbody tr:hover { background: rgba(242, 236, 224, .025); }

/* ── Layout auth (login / registro / onboarding) ───────────────────────── */

.neo-auth {
  position: relative;
  z-index: 1;
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 28px 18px 40px;
}

.neo-auth-brand {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-bottom: 26px;
  color: var(--neo-text);
}

.neo-auth-brand:hover { color: var(--neo-text); }

.neo-auth-brand .brand-ico {
  width: 38px;
  height: 38px;
  display: inline-block;
  background: #F2ECE0;
  -webkit-mask: var(--ico) center / contain no-repeat;
  mask: var(--ico) center / contain no-repeat;
  filter: drop-shadow(0 0 12px rgba(255, 138, 61, .4));
}
.neo-auth-brand:hover .brand-ico { filter: drop-shadow(0 0 16px rgba(255, 138, 61, .65)); }

.neo-auth-brand .brand-word {
  font-family: 'Syne', sans-serif;
  font-weight: 700;
  font-size: 25px;
  letter-spacing: -.04em;
  color: #F2ECE0;
}

.neo-auth-card { width: 100%; max-width: 420px; }

.neo-auth h1, .neo-auth h2 {
  font-family: var(--neo-font-display);
  font-weight: 400;
  font-size: 26px;
  letter-spacing: .01em;
  margin: 0 0 8px;
}

.neo-auth-sub { color: var(--neo-text-2); font-size: 14.5px; margin: 0 0 24px; }

.neo-auth-alt {
  color: var(--neo-text-2);
  font-size: 14px;
  text-align: center;
  margin: 20px 0 0;
}

.neo-lang {
  display: flex;
  gap: 4px;
  margin-top: 26px;
}

.neo-lang .lang { display: flex; gap: 4px; }

.neo-lang a {
  padding: 5px 11px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .05em;
  color: var(--neo-text-3);
  border: 1px solid transparent;
  transition: color .15s, border-color .15s;
}

.neo-lang a:hover { color: var(--neo-text-2); }

.neo-lang a.on {
  color: var(--neo-accent);
  border-color: rgba(255, 138, 61, .35);
  background: rgba(255, 138, 61, .07);
}

/* ── Spinner ───────────────────────────────────────────────────────────── */

.neo-spin {
  width: 16px;
  height: 16px;
  border: 2px solid rgba(10, 9, 8, .3);
  border-top-color: #0a0908;
  border-radius: 50%;
  display: inline-block;
  animation: neo-sp .7s linear infinite;
}

.neo-spin--accent {
  border-color: rgba(255, 138, 61, .25);
  border-top-color: var(--neo-accent);
}

@keyframes neo-sp { to { transform: rotate(360deg); } }
