:root{
  /* Printed-sticker offsets, never soft glows */
  --shadow-none:none;
  --shadow-press:inset 0 2px 0 rgba(18,17,16,.2);
  --shadow-sticker:3px 3px 0 var(--ink-900);
  --shadow-sticker-gold:3px 3px 0 var(--gold-600);
  --shadow-card:2px 2px 0 rgba(18,17,16,.16);
  --shadow-lift:6px 6px 0 var(--ink-900);
  --shadow-modal:10px 10px 0 rgba(18,17,16,.5);
  --shadow-inset-well:inset 0 1px 3px rgba(18,17,16,.22);

  /* Time axis. One season is this wide on every chart on the site, without exception:
     slot width locks, axis extent does not. A three-season career renders physically
     short inside a full-width frame; an eighteen-season career fills it. */
  --season-unit:48px; /* @kind other */
  --season-gap:3px; /* @kind other */

  /* Fills used to encode rank and absence on time charts. Pattern geometry is fixed
     so 3rd never reads as 4th at a glance. */
  --fill-hatch-line:3.4px; /* @kind other */
  --fill-hatch-pitch:6px; /* @kind other */
  --fill-dot-radius:1.25px; /* @kind other */
  --fill-dot-pitch:6px; /* @kind other */
  --fill-absent-opacity:0.38; /* @kind other */

  /* Print textures — halftone dot, press grain, chalk rule */
  --texture-halftone:radial-gradient(rgba(18,17,16,.1) 0.6px,transparent 0.7px); /* @kind other */
  --texture-halftone-size:4px 4px;
  --texture-grain:repeating-linear-gradient(0deg,rgba(18,17,16,.035) 0 1px,transparent 1px 3px); /* @kind other */
  --texture-scanline:repeating-linear-gradient(0deg,rgba(18,17,16,.07) 0 1px,transparent 1px 4px); /* @kind other */
  --texture-chalkline:repeating-linear-gradient(90deg,var(--news-300) 0 1px,transparent 1px 12px); /* @kind other */
}
