/* ============================================
   Reset + base typography
   ============================================ */
*,
*::before,
*::after {
  box-sizing: border-box;
}
html,
body {
  margin: 0;
  padding: 0;
}
html {
  -webkit-text-size-adjust: 100%;
}
body {
  font-family: var(--font-body);
  font-size: var(--t-base);
  line-height: 1.5;
  color: var(--pv-fg-0);
  background: var(--pv-bg-0);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

button,
input,
select,
textarea {
  font: inherit;
  color: inherit;
}

/* Controles nativos (radio/checkbox) na cor da marca, não no azul padrão */
input[type="radio"],
input[type="checkbox"] {
  accent-color: var(--pv-gold);
}

button {
  cursor: pointer;
  background: none;
  border: 0;
  padding: 0;
}

a {
  color: var(--pv-fg-0);
  text-decoration: none;
}
a:hover {
  color: var(--pv-gold-hi);
}

h1,
h2,
h3,
h4 {
  font-family: var(--font-display);
  margin: 0;
  line-height: 1.2;
}
/* Pesos da sans única Manrope (DEC-024): display forte nos títulos. */
h1,
h2 {
  font-weight: 800;
  letter-spacing: -0.02em;
}
h3,
h4 {
  font-weight: 700;
  letter-spacing: -0.01em;
}
h1 {
  font-size: var(--t-2xl);
}
h2 {
  font-size: var(--t-xl);
}
h3 {
  font-size: var(--t-lg);
}

p {
  margin: 0;
}

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

/* Focus universal */
:focus-visible {
  outline: 2px solid var(--pv-gold);
  outline-offset: 2px;
  border-radius: 4px;
}

/* Scrollbar */
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
::-webkit-scrollbar-track {
  background: var(--pv-bg-0);
}
::-webkit-scrollbar-thumb {
  background: var(--pv-bg-3);
  border-radius: 5px;
}
::-webkit-scrollbar-thumb:hover {
  background: var(--pv-line);
}

/* Utilitários */
.mono {
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
}
.serif {
  font-family: var(--font-display);
}
.uppercase {
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.muted {
  color: var(--pv-fg-2);
}
/* DEC-024 (regra de ouro T1): todos os usos atuais de .text-gold são valor
   monetário — e dinheiro assina em grafite, nunca no acento. A classe mantém
   o nome por compatibilidade; renomear fica para uma fase posterior. */
.text-gold {
  color: var(--pv-fg-0);
}
.text-xs {
  font-size: var(--t-xs);
}
.text-sm {
  font-size: var(--t-sm);
}
.text-lg {
  font-size: var(--t-lg);
}
.text-xl {
  font-size: var(--t-xl);
}
.text-2xl {
  font-size: var(--t-2xl);
}
.hidden {
  display: none !important;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
    /* M4 (revisão adversarial do drawer mobile, DEC-045): sem isto, o
       transition-delay de 220ms que `.menu-drawer-backdrop` usa pra segurar
       visibility:visible até o fade de saída terminar (layout.css) sobrevivia
       ao reduced-motion — a opacidade ia a zero quase instantânea (duração
       zerada acima), mas o elemento continuava visível/focável/interativo
       por mais 220ms depois disso. Zera o delay de qualquer transição do
       app, não só a do drawer. */
    transition-delay: 0s !important;
  }
}
