html {
  font-size: 16px;
  cursor: none;
  overflow-x: hidden;
}

body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--text-light);
  background-color: var(--bg-dark);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 400;
  line-height: 1.1;
}

p {
  line-height: 1.65;
  font-weight: 300;
}

a, button {
  cursor: none;
}

/* ── Custom Cursor ── */
.cursor {
  position: fixed;
  top: 0;
  left: 0;
  z-index: var(--z-cursor);
  pointer-events: none;
  user-select: none;
  mix-blend-mode: difference;
}

.cursor__dot {
  position: absolute;
  width: 8px;
  height: 8px;
  background: #ffffff;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  will-change: transform;
  backface-visibility: hidden;
}

.cursor__ring {
  position: absolute;
  width: 36px;
  height: 36px;
  border: 1.5px solid #ffffff;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  will-change: transform;
  backface-visibility: hidden;
  transition: width 0.35s cubic-bezier(.22,.61,.36,1),
              height 0.35s cubic-bezier(.22,.61,.36,1),
              border-color 0.35s cubic-bezier(.22,.61,.36,1),
              background 0.35s cubic-bezier(.22,.61,.36,1);
}

/* Estado hover — cursor cresce */
.cursor.is-hovering .cursor__ring {
  width: 56px;
  height: 56px;
}

/* Estado clicking */
.cursor.is-clicking .cursor__ring {
  width: 28px;
  height: 28px;
}

/* Mobile: esconde o cursor customizado */
@media (hover: none) {
  .cursor { display: none; }
  html, a, button { cursor: auto; }
}

/* ── Layout ── */
.container {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 var(--space-4);
}

@media (min-width: 1024px) {
  .container {
    padding: 0 var(--space-8);
  }
}

.section {
  padding: var(--space-16) 0;
}

@media (max-width: 767px) {
  .section {
    padding: var(--space-12) 0;
  }
}

.section--dark     { background-color: var(--bg-dark);      color: var(--text-light); }
.section--dark-alt { background-color: var(--bg-dark-alt);  color: var(--text-light); }
.section--cream    { background-color: var(--bg-cream);     color: var(--text-dark);  }
.section--cream-alt{ background-color: var(--bg-cream-alt); color: var(--text-dark);  }

/* ── Text reveal ── */
.line-wrapper {
  overflow: hidden;
  display: block;
  padding-bottom: 0.2em;
  margin-bottom: -0.2em;
}

/* ── GPU hints para elementos animados ── */
[data-reveal] .line-inner,
[data-fade],
[data-parallax] {
  will-change: transform, opacity;
  backface-visibility: hidden;
  transform: translateZ(0);
}

/* ── Transições globais com cubic-bezier premium (petralithe) ── */
:root {
  --ease-premium: cubic-bezier(.22, .61, .36, 1);
}

/* ══════════════════════════════════════════
   FOCO VISÍVEL — WCAG 2.4.7
   O site esconde o cursor real (cursor: none) e não tinha nenhuma
   regra :focus. Quem navega por teclado ficava sem referência.
   ══════════════════════════════════════════ */
:focus-visible {
  outline: 2px solid var(--accent-gold);
  outline-offset: 3px;
  border-radius: 2px;
}

/* sobre fundo creme o dourado some: usa o vinho da marca */
.section--cream :focus-visible,
.section--cream-alt :focus-visible,
.projetos :focus-visible,
.contato :focus-visible {
  outline-color: var(--accent-wine);
}

/* pular direto para o conteudo */
.skip-link {
  position: absolute;
  left: var(--space-4);
  top: -100%;
  z-index: var(--z-skip);
  padding: 0.75rem 1.25rem;
  background: var(--text-light);
  color: var(--text-dark);
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: 500;
  border-radius: 6px;
  transition: top var(--transition-fast);
}

.skip-link:focus-visible {
  top: var(--space-4);
}
