/* Operations — base element defaults & primitives.
 * Kept minimal so consumers inherit the editorial feel without heavy resets.
 */

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

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-serif);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* Links — brick red, subtle underline on hover */
a {
  color: var(--link);
  text-decoration: none;
  transition: opacity var(--dur-fast) var(--ease);
}
a:hover { opacity: 0.72; }

/* Editorial headings default to serif */
h1, h2, h3, h4 {
  font-family: var(--font-serif);
  font-weight: var(--fw-med);
  color: var(--text);
  letter-spacing: var(--tracking-tight);
  line-height: var(--lh-snug);
  margin: 0;
}

/* ---- Utility primitives shared across cards & kits ---- */

/* Uppercase tracked monospace section label */
.op-label {
  font-family: var(--font-mono);
  font-size: var(--fs-label);
  font-weight: var(--fw-med);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--text-muted);
}

/* Monospace meta value (dates, counts, due) */
.op-meta {
  font-family: var(--font-mono);
  font-size: var(--fs-meta);
  letter-spacing: var(--tracking-meta);
  color: var(--text-muted);
}

/* Hairline divider */
.op-rule {
  border: 0;
  border-top: var(--border-w) solid var(--border);
  margin: 0;
}

::selection { background: var(--brick-tint); }
