/* ============================================================
   PYNG · site glue — Astro-side additions not in the prototype
   (skip link + generic signup status for non-hero forms).
   Loaded last so it never fights the design system.
   ============================================================ */

.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 200;
  padding: 10px 16px;
  border-radius: 0 0 var(--r-sm) 0;
  background: var(--accent);
  color: var(--on-accent);
  font-family: var(--font-body);
  font-weight: 600;
  text-decoration: none;
}
.skip-link:focus {
  left: 0;
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

/* Generic signup status (CTA bands, contact, pricing) — the hero has its own. */
.signup-status {
  min-height: 1.35rem;
  margin: var(--s3) 0 0;
  font-family: var(--font-mono);
  font-size: .78rem;
  letter-spacing: .02em;
  color: var(--muted);
}
.signup-status-success { color: var(--success); }
.signup-status-error { color: var(--danger); }

[hidden] { display: none !important; }

/* ------------------------------------------------------------------
   Long-form (article / glossary / alternatives) responsive hardening.
   pages.css collapses .art-layout to `1fr` on mobile, which keeps the
   prose grid item at min-width:auto and lets wide MDX content blow the
   track out. Force the track + items to be allowed to shrink so content
   wraps (and tables/pre scroll within their own overflow-x:auto).
   ------------------------------------------------------------------ */
.art-layout > * { min-width: 0; }
@media (max-width: 920px) {
  .art-layout { grid-template-columns: minmax(0, 1fr); }
}
.prose { max-width: 68ch; }
.prose :is(img, svg, video, iframe) { max-width: 100%; height: auto; }
