/* ==========================================================================
   GaragemOS V2 — Base, tipografia e utilitários
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box }

html {
  scroll-behavior: smooth;
  background: var(--bg);
  overflow-x: hidden;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  min-height: 100vh;
  min-height: 100dvh;
  /* O fundo fica em .app-backdrop (aurora + grade de pontos), atrás de tudo. */
  background: transparent;
  color: var(--text);
  font-size: var(--text-base);
  line-height: 1.5;
  letter-spacing: -.011em;
  touch-action: manipulation;
  overflow-x: hidden;
}

button, input, select, textarea { font: inherit; color: inherit }
button { cursor: pointer; color: inherit; transition: transform .16s ease, background-color .16s ease, box-shadow .16s ease, border-color .16s ease }
button:active { transform: scale(.98) }
a { color: inherit; text-decoration: none }
h1, h2, h3, p { margin-top: 0 }
h1 { font-size: var(--text-hero); line-height: 1.08; letter-spacing: -.035em; font-weight: 780; margin-bottom: 6px }
h2 { font-size: var(--text-lg); letter-spacing: -.02em; font-weight: 720; margin-bottom: 0 }
h3 { font-size: var(--text-base); font-weight: 700; margin-bottom: 0 }
small { font-size: var(--text-sm) }
::selection { background: color-mix(in srgb, var(--primary) 24%, var(--accent)); color: var(--text) }
* { scrollbar-color: var(--line-strong) transparent }

:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--primary) 60%, transparent);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
}

.skip-link { position: absolute; left: -10000px; top: 8px; background: var(--surface-solid); padding: 12px 16px; z-index: 30; border-radius: var(--radius); box-shadow: var(--shadow) }
.skip-link:focus { left: 8px }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0 }

.muted { color: var(--muted) }
.eyebrow { text-transform: uppercase; letter-spacing: .14em; font-size: var(--text-xs); font-weight: 800; color: var(--primary); margin-bottom: 4px }
.loading-state, .empty-state { padding: 40px 24px; text-align: center; color: var(--muted) }
.empty-state strong { display: block; color: var(--text); font-size: var(--text-lg); margin-bottom: 6px }
.hint { font-size: var(--text-sm); color: var(--muted) }

/* Cabeçalho de seção reutilizável */
.section-title { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); margin: 0 0 var(--space-3) }
.section-title h2 { font-size: var(--text-base); font-weight: 740 }
.section-title .link-more { font-size: var(--text-sm); font-weight: 700; color: var(--primary); white-space: nowrap }

.stack { display: flex; flex-direction: column; gap: var(--space-3) }
.inline-actions { display: flex; flex-wrap: wrap; gap: var(--space-2) }
.inline-actions .button { flex: 1 1 auto }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

