/* Fonts, document defaults, and the shared grain-texture overlay used on every page. */
@import url("https://api.fontshare.com/v2/css?f[]=cabinet-grotesk@500,700,800&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Inter+Tight:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap");

/* Baseline reset. Every clamp() padding/gap value across this codebase was
   authored assuming border-box sizing and zeroed default margins (this is
   what the original design's Tailwind preflight provided) — without this,
   heading/paragraph margins stack on top of flex gaps and horizontal
   padding adds to element width instead of being absorbed by it, throwing
   off spacing everywhere. */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

ul,
ol {
  list-style: none;
}

img,
svg,
video {
  display: block;
  max-width: 100%;
}

html {
  scroll-behavior: auto;
}

.sh-page {
  background: var(--sh-ink);
  color: var(--sh-bone);
  font-family: var(--sh-body);
  overflow-x: clip;
}

.sh-page ::selection {
  background: var(--sh-orange);
  color: var(--sh-ink);
}

/* ---------- grain plate ---------- */
.sh-plate {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  opacity: 0.55;
  pointer-events: none;
}
