/*
 * Sabaki UI Primitives — v4.19
 *
 * Typography + motion foundation shared across public trees.
 * Loaded AFTER design-tokens.css and BEFORE any feature-scoped CSS.
 *
 * Dashboard has a larger primitives.css with canonical component rules;
 * this file carries only the v4.19 typography + motion additions that
 * must apply at the root of the other public surfaces.
 */

/* macOS font smoothing so Manrope renders as designed (Chromium/Safari).
   Ignored on Windows/Linux. */
html {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* Balance headings (short blocks of 6 lines or fewer); prevent orphans on body
   prose (any length). Skip table cells and pre (no benefit). */
h1,
h2,
h3 {
  text-wrap: balance;
}

p,
li,
blockquote,
figcaption,
dd {
  text-wrap: pretty;
}

/* Subtle 1 px neutral image separator. Pure black at 10% opacity per
   make-interfaces-feel-better — never tinted with a palette near-black.
   Escape hatches: empty alt (decorative) and explicit .no-outline. */
img:not([alt=""]):not(.no-outline) {
  outline: 1px solid rgba(0, 0, 0, 0.1);
  outline-offset: -1px;
}

/* Tabular numerals for dynamic numeric displays — prevent layout shift when
   digit counts change. Apply via opt-in class or any of the canonical
   domain classes rendered by the public surfaces. */
[data-numeric],
.tabular-nums,
.stat-value,
.metric-value,
.kpi-value,
.portfolio-value,
.cap-table-value,
.deal-amount,
.cost-display,
.count,
.timestamp-relative,
.progress-value {
  font-variant-numeric: tabular-nums;
}
