:root{
  /* Shadow. Cards get a shadow so faint it reads as a lifted edge rather
     than a drop shadow — the benchmark look. Never a coloured glow. */
  --shadow-0:none;
  --shadow-card:0 1px 2px rgba(15,14,13,0.04),0 1px 1px rgba(15,14,13,0.03);
  --shadow-card-hover:0 2px 4px rgba(15,14,13,0.05),0 8px 20px -8px rgba(15,14,13,0.10);
  --shadow-raised:0 4px 12px -4px rgba(15,14,13,0.10);
  --shadow-overlay:0 8px 28px -10px rgba(15,14,13,0.22);
  --shadow-dialog:0 28px 72px -20px rgba(15,14,13,0.34);
  --ring-focus:0 0 0 3px rgba(240,69,60,0.32);
  --outline-focus:2px solid var(--border-focus);
  --outline-offset:2px;

  /* Glass plate — the floating caption panel over a hero image.
     One use only: HeroFeature. */
  --glass-bg:rgba(252,252,251,0.82);
  --glass-blur:saturate(150%) blur(14px); /* @kind other */
  --glass-border:rgba(255,255,255,0.6);

  /* Motion. Restrained: colour, opacity and a 2px card lift. Nothing
     animates on scroll, nothing autoplays. */
  --ease-out:cubic-bezier(0.2,0,0.2,1); /* @kind other */
  --ease-in-out:cubic-bezier(0.4,0,0.2,1); /* @kind other */
  --dur-instant:80ms; /* @kind other */
  --dur-fast:150ms; /* @kind other */
  --dur-base:220ms; /* @kind other */

  /* The one brand texture, as CSS. Used behind the newsletter block only. */
  --texture-halftone:radial-gradient(circle at center,var(--ink-100) 1.4px,transparent 1.5px); /* @kind other */
  --texture-halftone-size:12px 12px; /* @kind other */
}
