/* ============================================================
   BASE — tokens e fundamentos
   Fonte da verdade: docs/Design System (Manual da Marca).
   4 cores oficiais (§4): Navy, Coral, Dourado, Marfim — todo o
   resto (neutros, tints, hover) é derivado dos tokens do DS.
   Marca flat: sem gradientes, sem texturas, sem blur, sem
   ícones (apenas ✓ → · tipográficos) e sem emoji.
   ============================================================ */

@font-face {
  font-family: 'Northwell';
  src:
    url('/assets/fonts/Northwell.woff2') format('woff2'),
    url('/assets/fonts/Northwell.otf') format('opentype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

:root {
  /* ---- Marca (manual §4 — não alterar) ---- */
  --color-navy: #2e6e8e;
  --color-coral: #e2725b;
  --color-gold: #f2b84b;
  --color-ivory: #faf6ee;

  /* ---- Tints/shades derivados (hover/press/fundos suaves) ---- */
  --color-navy-hover: color-mix(in oklch, var(--color-navy) 85%, black);
  --color-navy-press: color-mix(in oklch, var(--color-navy) 72%, black);
  --color-navy-tint: color-mix(in oklch, var(--color-navy) 10%, white);
  --color-navy-soft: color-mix(in oklch, var(--color-navy) 18%, white);
  --color-coral-hover: color-mix(in oklch, var(--color-coral) 87%, black);
  --color-coral-press: color-mix(in oklch, var(--color-coral) 74%, black);
  --color-coral-tint: color-mix(in oklch, var(--color-coral) 12%, white);
  --color-gold-tint: color-mix(in oklch, var(--color-gold) 16%, white);

  /* ---- Neutros quentes (derivados do próprio manual) ---- */
  --color-ink: #2b2721;
  --color-muted: #8a8378;
  --color-fill: #f4f1ea;
  --color-border-soft: #efebe4;
  --color-border: #e4dfd4;
  --color-white: #ffffff;

  /* ---- Aliases semânticos ---- */
  --surface-base: var(--color-ivory);
  --surface-raised: var(--color-white);
  --surface-inverse: var(--color-navy);
  --surface-fill: var(--color-fill);
  --text-primary: var(--color-ink);
  --text-secondary: var(--color-muted);
  --text-inverse: var(--color-ivory);
  --text-inverse-soft: color-mix(in srgb, var(--color-ivory) 86%, transparent);
  --text-inverse-faint: color-mix(in srgb, var(--color-ivory) 62%, transparent);
  --border-subtle: var(--color-border-soft);
  --border-default: var(--color-border);
  --border-inverse: color-mix(in srgb, var(--color-ivory) 22%, transparent);
  --accent-diamond: var(--color-gold); /* losango único entre "TEACHER" e "Thaís" */
  --cta-bg: var(--color-coral);
  --cta-bg-hover: var(--color-coral-hover);
  --cta-bg-press: var(--color-coral-press);
  --cta-text: var(--color-ivory);
  --focus-ring: color-mix(in srgb, var(--color-navy) 45%, transparent);

  /* ---- Tipografia (manual §5) ---- */
  --font-display: 'Montserrat', sans-serif;
  --font-body: 'Montserrat', sans-serif;
  --font-script: 'Northwell', cursive; /* assinatura "Thaís" apenas */
  --font-hand: 'Caveat', cursive; /* só "new class!" e "let's talk!" */
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;
  --weight-bold: 700;
  --tracking-wide: 0.39em; /* caps institucionais ("TEACHER") */
  --tracking-mid: 0.14em;
  --leading-tight: 1.15;
  --leading-snug: 1.3;
  --leading-normal: 1.5;
  --leading-relaxed: 1.7;
  --text-xs: 0.8125rem; /* 13px — só legendas */
  --text-sm: 0.875rem; /* 14px — mínimo de corpo (manual §5) */
  --text-base: 1rem;
  --text-md: 1.125rem;
  --text-lg: 1.375rem;
  --text-xl: 1.75rem;
  --text-2xl: 2.25rem;
  --text-3xl: 3rem;

  /* ---- Espaço e forma ---- */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;
  --space-12: 48px;
  --space-16: 64px;
  --space-20: 80px;
  --space-24: 96px;
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 16px;
  --radius-full: 999px;
  --container-max: 1120px;
  --gutter: 24px;

  /* ---- Efeitos (derivados — usar com parcimônia, flat primeiro) ---- */
  --shadow-sm: 0 1px 3px color-mix(in srgb, var(--color-ink) 10%, transparent);
  --shadow-md: 0 6px 20px color-mix(in srgb, var(--color-ink) 12%, transparent);
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
  --duration-fast: 120ms;
  --duration-base: 180ms;
  --duration-slow: 280ms;
}

*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: var(--font-body);
  background: var(--surface-base);
  color: var(--text-primary);
  font-size: var(--text-base);
  line-height: var(--leading-relaxed);
}

img {
  max-width: 100%;
  display: block;
}

a {
  text-decoration: none;
  color: inherit;
}

ul {
  list-style: none;
}

h1,
h2,
h3,
h4 {
  font-family: var(--font-display);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
}

::selection {
  background: var(--color-navy-soft);
  color: var(--text-primary);
}

*:focus-visible {
  outline: 3px solid var(--focus-ring);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

.container {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--gutter);
}

.section {
  padding: var(--space-24) 0;
  scroll-margin-top: 88px;
}

/* Eyebrow institucional: Montserrat Bold, caps, tracking largo (§5) */
.section-label {
  font-family: var(--font-display);
  font-size: var(--text-xs);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-navy);
  margin-bottom: var(--space-3);
}

.section-title {
  font-size: clamp(1.75rem, 3.5vw, var(--text-2xl));
  color: var(--text-primary);
  margin-bottom: var(--space-4);
}

.section-sub {
  font-size: var(--text-md);
  color: var(--text-secondary);
  max-width: 36em;
  margin-bottom: var(--space-12);
}

.center-section {
  text-align: center;
}

.center-section .section-sub {
  margin-left: auto;
  margin-right: auto;
}

/* ---- Botões: pílula, estados calmos (hover escurece, press ~0.97) ---- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: 13px 28px;
  border-radius: var(--radius-full);
  font-family: var(--font-body);
  font-weight: var(--weight-semibold);
  font-size: var(--text-sm);
  letter-spacing: 0.01em;
  cursor: pointer;
  border: 1.5px solid transparent;
  white-space: nowrap;
  transition:
    background var(--duration-base) var(--ease-standard),
    color var(--duration-base) var(--ease-standard),
    border-color var(--duration-base) var(--ease-standard),
    transform var(--duration-fast) var(--ease-standard);
}

/* `.btn`'s own display:inline-flex would otherwise beat the UA [hidden]
   rule at equal specificity — restore it explicitly wherever .btn is
   toggled via the hidden attribute (e.g. the diagnostic quiz's step buttons). */
.btn[hidden] {
  display: none;
}

.btn:active {
  transform: scale(0.97);
}

.btn-sm {
  padding: 9px 20px;
  font-size: var(--text-xs);
}

.btn-lg {
  padding: 16px 36px;
  font-size: var(--text-md);
}

.btn-primary {
  background: var(--cta-bg);
  color: var(--cta-text);
}

.btn-primary:hover {
  background: var(--cta-bg-hover);
  color: var(--cta-text);
}

.btn-primary:active {
  background: var(--cta-bg-press);
}

.btn-secondary {
  background: transparent;
  color: var(--color-navy);
  border-color: var(--color-navy);
}

.btn-secondary:hover {
  background: var(--color-navy);
  color: var(--color-ivory);
}

.btn-ghost {
  background: transparent;
  color: var(--color-navy);
}

.btn-ghost:hover {
  background: var(--color-navy-tint);
}

.btn-outline-ivory {
  background: transparent;
  color: var(--color-ivory);
  border-color: var(--border-inverse);
}

.btn-outline-ivory:hover {
  background: color-mix(in srgb, var(--color-ivory) 12%, transparent);
  border-color: var(--color-ivory);
  color: var(--color-ivory);
}

.btn .arrow {
  font-family: inherit;
}

/* ---- Badges (pílulas de rótulo) ---- */
.badge {
  display: inline-flex;
  align-items: center;
  font-family: var(--font-body);
  font-weight: var(--weight-semibold);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-mid);
  text-transform: uppercase;
  padding: 8px 16px;
  border-radius: var(--radius-full);
  border: 1px solid transparent;
}

.badge-navy {
  background: var(--color-navy-tint);
  color: var(--color-navy);
}

.badge-coral {
  background: var(--color-coral-tint);
  color: var(--color-coral-press);
}

.badge-neutral {
  background: var(--surface-fill);
  color: var(--text-secondary);
}

.badge-ivory {
  background: color-mix(in srgb, var(--color-ivory) 10%, transparent);
  color: var(--text-inverse-soft);
  border-color: var(--border-inverse);
}

/* ---- Acentos tipográficos ---- */
.hand-accent {
  font-family: var(--font-hand);
  font-weight: 600;
  font-size: var(--text-xl);
  line-height: 1;
}

.dot-sep {
  color: var(--text-secondary);
  padding: 0 var(--space-2);
}

/* ---- Animação de entrada (calma, sem bounce) ---- */
.fade-in {
  opacity: 0;
  transform: translateY(16px);
  transition:
    opacity 0.45s var(--ease-standard),
    transform 0.45s var(--ease-standard);
}

.fade-in.visible {
  opacity: 1;
  transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  .fade-in {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .btn,
  .btn:active {
    transition: none;
    transform: none;
  }
}

.skip-link {
  position: absolute;
  left: -999px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
  z-index: 10000;
  background: var(--surface-raised);
  color: var(--color-navy);
  padding: var(--space-3) var(--space-6);
  border-radius: var(--radius-full);
  border: 1px solid var(--border-default);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  outline: none;
}

.skip-link:focus {
  left: var(--space-4);
  top: var(--space-4);
  width: auto;
  height: auto;
}

.color-primary {
  color: var(--color-navy);
}

.btn-with-margin {
  margin-top: var(--space-6);
}

@media (max-width: 600px) {
  .section {
    padding: var(--space-16) 0;
  }

  .container {
    padding: 0 var(--space-4);
  }
}
