/* Usability defaults; each site keeps its own type, palette, layout and identity. */
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-padding-block: 1rem;
}

/* The empty ad template must not leave a 250px hole in an unconfigured site. */
.gpt-lazy[hidden] { display: none !important; }

:where(a, button, input, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid var(--focus, currentColor) !important;
  outline-offset: 3px !important;
}

/* Keep navigation and footer labels quiet while making them easy to tap. */
:is(.compact-header, .site-header, .site-head) nav a,
:is(footer, .compact-footer) nav a,
.reading-entry {
  min-height: 44px !important;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
}

main :is(.article-reader, .reading-body, .article-body, .prose, .legal) {
  line-height: 1.7;
}
main :is(.article-reader, .reading-body, .article-body, .prose, .legal) p {
  max-inline-size: 70ch;
  overflow-wrap: break-word;
}

@media (max-width: 767px) {
  input:not([type="radio"]):not([type="checkbox"]):not([type="range"]),
  textarea,
  select {
    font-size: max(1rem, 16px) !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

@media (forced-colors: active) {
  :where(a, button, input, textarea, summary, [tabindex]):focus-visible {
    outline-color: Highlight !important;
  }
}
