/* ==========================================================================
   Shared base styles — ashleybhopkins.com
   ==========================================================================
   Rules that are byte-identical (post whitespace-normalization) across the
   homepage AND every case-study page. Kept deliberately small: most
   same-named classes between the two page types (.hero, nav, footer,
   .footer-name, .gradient-band, body, etc.) turned out to have DIFFERENT
   rule bodies once diffed — see DESIGN.md → Inconsistencies. Merging those
   into one file would have silently broken one page type, so only the
   rules confirmed identical live here. Everything else stays in
   case-study.css or is still inline on the homepage (home.css candidate for
   Phase 11).
   ========================================================================== */

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

html { scroll-behavior: smooth; }

.footer-links a:hover { color: var(--ink); }

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

/* Touch devices: kill the custom cursor.
   Both page types render .cursor and .cursor-ring and set `body { cursor: none }`.
   Those two elements are position:fixed with no top/left — the mousemove handler is
   what positions them. A phone or tablet never fires mousemove, so they were being
   left at their static origin and showing up as a stray dot and half-circle stuck in
   the top-left corner of every page. `hover: none` / `pointer: coarse` covers phones
   and tablets while leaving mouse-driven laptops (including touchscreen laptops,
   which report `hover: hover`) untouched. Restoring `cursor: auto` also means a real
   pointer reappears if a mouse is later attached to a tablet. */
@media (hover: none), (pointer: coarse) {
  .cursor, .cursor-ring { display: none !important; }
  body { cursor: auto !important; }
}

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