/* ============================================================
+   GRV — reset and base elements
+   Extracted without selector or value changes.
+   ============================================================ */

/* ============================================================
   GRV — Base element styles
   Light reset + element defaults so specimen cards & kits inherit
   the architectural baseline. Components rely on tokens, not these.
   ============================================================ */

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

html{ -webkit-text-size-adjust:100%; }

body{
  margin:0;
  background:var(--surface-page);
  color:var(--text-primary);
  font-family:var(--font-sans);
  font-size:var(--fs-body);
  line-height:var(--lh-body);
  font-weight:var(--fw-regular);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

img{ display:block; max-width:100%; }
picture{ display:contents; }

a{ color:inherit; text-decoration:none; }

::selection{ background:var(--accent-butter); color:var(--grv-ink); }

/* Utility primitives reused by specimen cards ----------------*/
.grv-eyebrow{
  font-family:var(--font-sans);
  font-size:var(--fs-eyebrow);
  line-height:var(--lh-label);
  font-weight:var(--fw-medium);
  letter-spacing:var(--ls-label);
  text-transform:uppercase;
  color:var(--text-muted);
}
.grv-serif{ font-family:var(--font-serif); }

html{ scroll-behavior:smooth; }
body{
  background:var(--grv-paper);
  color:var(--grv-ink);
  font-family:var(--font-sans);
  font-size:var(--fs-body);
  line-height:var(--lh-body);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
::selection{ background:var(--grv-butter); color:var(--grv-ink); }

.page{ max-width:none; margin:0 auto; }

/* ---------- Type ---------- */
.eyebrow{
  font-size:var(--fs-eyebrow); font-weight:var(--fw-medium);
  line-height:var(--lh-label); letter-spacing:var(--ls-label); text-transform:uppercase; color:var(--grv-ink-3);
}
.hero{
  margin:0; font-size:clamp(40px,5.6vw,72px); line-height:var(--lh-display);
  font-weight:var(--fw-light); letter-spacing:var(--ls-display); color:var(--grv-ink);
  text-wrap:balance;
}
.section-title{
  margin:0; font-size:var(--text-section-title); line-height:var(--lh-heading);
  font-weight:var(--fw-light); letter-spacing:var(--ls-heading); color:var(--grv-ink);
  text-wrap:pretty;
}
.section-title.serif{ font-family:var(--font-serif); font-weight:500; letter-spacing:0; font-size:clamp(34px,4vw,52px); }
.display-serif{ font-family:var(--font-serif); font-weight:500; letter-spacing:0; }
h3.t-lg{ margin:0; font-size:var(--text-h3); line-height:var(--lh-h3); font-weight:var(--fw-regular); letter-spacing:-.01em; }
.large{ margin:0; font-size:var(--fs-large); line-height:1.42; color:var(--grv-ink); font-weight:var(--fw-light); }
.lead{ margin:0; font-size:var(--text-lead); line-height:var(--lh-lead); color:var(--grv-ink-2); }
.muted{ color:var(--grv-ink-2); }
.dim{ color:var(--grv-ink-3); }
.label{ font-size:var(--fs-eyebrow); line-height:var(--lh-label); letter-spacing:var(--ls-label); text-transform:uppercase; color:var(--grv-ink-3); }
a{ color:inherit; text-decoration:none; }
img{ display:block; max-width:100%; }
