  /* ── Base ── */
  *, *::before, *::after { box-sizing: border-box; }
  html { scroll-behavior: smooth; scroll-padding-top: 5rem; }
  body { margin: 0; }
  img { max-width: 100%; height: auto; }

  /* ── Scroll reveal (progressive enhancement — content visible without JS) ── */
  @media (prefers-reduced-motion: no-preference) {
    .reveal {
      opacity: 1;
      transform: none;
      transition: opacity 0.6s ease, transform 0.6s ease;
    }
    .reveal.revealed {
      opacity: 0;
      transform: translateY(24px);
    }
  }

  /* ── Header scroll state ── */
  #site-header.scrolled {
    background: rgba(255, 248, 246, 0.95);
    backdrop-filter: blur(12px);
    box-shadow: 0 1px 0 rgba(123, 45, 58, 0.08);
  }

  /* ── Selection ── */
  ::selection {
    background: rgba(123, 45, 58, 0.15);
    color: #7B2D3A;
  }

  /* ── Focus visible ── */
  :focus-visible {
    outline: 2px solid #d4405e;
    outline-offset: 2px;
  }

  /* ── Mobile menu animation ── */
  @media (prefers-reduced-motion: no-preference) {
    #mobile-menu {
      animation: slideDown 0.25s ease forwards;
    }
    @keyframes slideDown {
      from { opacity: 0; transform: translateY(-8px); }
      to   { opacity: 1; transform: translateY(0); }
    }
  }
