/* Cenovel website tokens. One theme (owner, 2026-10-19, draft A of two): the console's dark titanium for the header,
   the page heads and the footer, and light paper for everything read. The site looks the same whatever the visitor's
   system theme: there is no dark mode and nothing here follows prefers-color-scheme. Kept from the brand: the Cenovel
   Systems lockup, Schibsted Grotesk, the brand blue and the animated network drawings.
   One file for cenovel.com: custom properties only, no selectors beyond :root, no fonts, no components. Text pairs hold
   WCAG AA (4.5:1) on the surfaces they sit on. */
:root{
  color-scheme:light;
  /* Paper: white, a quiet near-white for a toned section, no wash. */
  --cv-page:#ffffff;
  --cv-page-low:#f5f7f9;
  /* Cards only where a whole block is a link: opaque, a hairline, a soft lift on hover. */
  --cv-card:#ffffff;
  --cv-card-edge:rgba(27,31,36,.12);
  --cv-card-shadow:0 1px 2px rgba(16,24,40,.04);
  --cv-card-shadow-hover:0 0 0 1px rgba(23,100,155,.35),0 12px 28px -14px rgba(16,24,40,.22);
  --cv-well:#f3f5f7;
  --cv-control:#ffffff;
  --cv-input:#ffffff;
  --cv-selected:rgba(23,100,155,.08);
  /* Text */
  --cv-ink:#1b1f24;
  --cv-muted:#4a5562;
  --cv-faint:#5b6673;
  /* Lines: hairlines, and the stronger line that outlines a ghost button (3:1). */
  --cv-line:rgba(27,31,36,.13);
  --cv-line-soft:rgba(27,31,36,.08);
  --cv-line-strong:#8a949f;
  /* The header and the footer: dark titanium bars, a hairline at the header's foot, and a soft shadow where the header
     stands over paper (a page without a head, or any page once scrolled, when the header turns to dark glass). Their
     words use the --cv-bar-* set below. */
  --cv-bar-bg:#1d2229;
  /* The scrolled header's glass: words on it hold 7.9:1 over white paper, the current link's underline 3:1. */
  --cv-bar-glass:rgba(29,34,41,.82);
  --cv-bar-edge:rgba(230,237,245,.08);
  --cv-header-shadow:0 8px 24px -14px rgba(0,0,0,.55);
  --cv-bar-ink:#eef1f4;
  --cv-bar-muted:#b4bdc7;
  --cv-bar-blue:#5b9be0;
  --cv-bar-blue-text:#8cbcf0;
  --cv-bar-line:rgba(230,237,245,.13);
  --cv-bar-line-soft:rgba(230,237,245,.08);
  --cv-bar-line-strong:#6b7683;
  --cv-bar-lift:rgba(230,237,245,.06);
  /* The hover tint on paper. */
  --cv-glass-lift:rgba(27,31,36,.05);
  /* Code and recordings: a calm reading surface in the page's own tone. */
  --cv-chrome-1:#262c35;
  --cv-chrome-2:#12161c;
  --cv-on-chrome:#f2f4f6;
  --cv-on-chrome-muted:#c3cad2;
  --cv-chrome-line:rgba(210,219,232,.13);
  --cv-chrome-line-strong:rgba(210,219,232,.22);
  --cv-lift:rgba(255,255,255,.06);
  --cv-chrome-focus:#8ab4ff;
  --cv-chrome-action:#17649b;
  --cv-chrome-action-hover:#0f4f80;
  --cv-on-chrome-action:#ffffff;
  --cv-code:#f5f7f9;
  --cv-code-ink:#1b1f24;
  --cv-code-edge:rgba(27,31,36,.1);
  /* Cenovel blue: actions, links and the current place. */
  --cv-blue:#17649b;
  --cv-blue-hover:#0f4f80;
  --cv-blue-text:#17649b;
  --cv-blue-soft:#e6f1fa;
  --cv-on-blue:#ffffff;
  /* States, used sparingly: a refusal and a confirmation. */
  --cv-ok:#1f6b45;
  --cv-ok-soft:#e3f1e9;
  --cv-warn:#8a4b14;
  --cv-warn-soft:#f8eddf;
  --cv-bad:#a02c2c;
  --cv-bad-soft:#f8e5e5;
  /* Framed product screens. */
  --cv-shadow:0 0 0 1px rgba(27,31,36,.08),0 20px 44px -18px rgba(16,24,40,.28);
  --cv-shadow-hover:0 0 0 1px rgba(27,31,36,.08),0 12px 28px -12px rgba(16,24,40,.28);
  /* Behind a modal (the search dialog). */
  --cv-scrim:rgba(16,22,30,.42);
  /* The page head: dark titanium under the header, with the line field over it, ending on the paper in a clean edge. */
  --cv-hero:radial-gradient(60% 120% at 100% 0%,rgba(58,120,224,.16),transparent 70%),linear-gradient(#262c35,#1b2027);
  --cv-hero-ink:#eef1f4;
  --cv-hero-muted:#c3cad2;
  --cv-hero-label:#8cbcf0;
  --cv-hero-line:rgba(184,198,217,.12);   /* the field's ink (build.py FIELD_INK) */
  --cv-hero-pulse:rgba(140,188,240,.85);
  --cv-hero-card:#ffffff;
  --cv-hero-btn:#2c6fae;
  --cv-hero-btn-ink:#ffffff;
  --cv-hero-ghost-line:#6b7683;
  --cv-hero-lift:rgba(230,237,245,.06);
  /* Section backgrounds on paper: line motifs, barely there (build.py FIELD_INK, the demo's rack). */
  --cv-motif:rgba(23,100,155,.1);
  /* Opaque surfaces: sticky table cells and the hardware faceplates in the documentation. */
  --cv-surface:#ffffff;
  --cv-surface-strong:#eef1f4;
  --cv-canvas:#f7f8fa;
  --cv-border:#c6cbd1;
  /* Shape and layout: 8 px controls, 10 px link cards, 14 px panels and frames. */
  --cv-radius-sm:8px;
  --cv-radius:10px;
  --cv-radius-lg:14px;
  --cv-container:1200px;
  /* The side margin of the page column, the header and the footer. */
  --cv-gutter:40px;
  --cv-bar:72px;
  /* Type: Schibsted Grotesk (variable), weights 400 and 500, on a website scale: body 17 px on 1.6, larger heads
     and leads, and a 70-character measure for prose and the documentation. */
  --cv-font:Schibsted,Arial,sans-serif;
  --cv-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --cv-fs-display:56px;
  --cv-fs-title:44px;
  --cv-fs-section:32px;
  --cv-fs-subhead:24px;
  --cv-fs-card:19px;
  --cv-fs-lead:20px;
  --cv-fs-body:17px;
  --cv-fs-small:15px;
  --cv-fs-meta:14px;
  --cv-measure:70ch;
  /* Buttons: website sized. */
  --cv-btn-h:44px;
  /* Motion: one 150 ms crossfade on the productive curve; lifts settle on a spring. */
  --cv-ease:cubic-bezier(.2,0,.38,.9);
  --cv-ease-spring:cubic-bezier(.34,1.56,.64,1);
  --cv-dur:150ms;
  /* Website motion (2026-10-12): entrances decelerate in; drawings and travel run at their own pace. */
  --cv-ease-enter:cubic-bezier(0,0,.3,1);
  --cv-dur-enter:480ms;
  --cv-dur-draw:900ms;
}
