/* OMNI design tokens 1.8.0 — the OMNI Deck design standard.
 *
 * One source for every OMNI web surface: the Deck, the Feedback Hub (Deck and
 * Connector), the Connector's /human pages and every new web app derived from
 * them. Contract and adoption guide: ABI/DESIGN-SYSTEM.md.
 *
 *   :root                     OMNI Prism, the token baseline ("Deck light")
 *   html[data-theme="goossens"]  the Deck default since 1.3.0 (Owner,
 *                             2026-10-21): the goossens.ai look, ink on paper
 *   html[data-theme="…"]      the Deck presets; "midnight-cinema" is the
 *                             standard dark mode ("Deck dark")
 *   html[data-theme="omni-contrast"]  accessibility variant (high contrast)
 *   html[data-font="…"]       font pairs; html[data-motion="calm|off"]
 *   html[data-effects="0-3"]  effects level (motion block at the end)
 *
 * Names are --omni-*. The Deck keeps --deck-* aliases (deck.css) for its
 * existing CSS. Change a value here, never in a page stylesheet.
 * Served as /public/omni-tokens.css (Deck) and /assets/omni-tokens.css
 * (Connector). */

:root {
  color-scheme: light;
  /* omni-sans: the system UI face (Segoe UI on Windows, San Francisco on
     macOS, Roboto/Cantarell on Linux). No web font is assumed. */
  --omni-font-display: "Segoe UI", -apple-system, system-ui, Roboto, Helvetica, Arial, sans-serif;
  --omni-font-body: "Segoe UI", -apple-system, system-ui, Roboto, Helvetica, Arial, sans-serif;
  --omni-font-mono: "Cascadia Code", Consolas, Menlo, "SFMono-Regular", "DejaVu Sans Mono", ui-monospace, monospace;
  --omni-primary-theme: #6366f1;
  --omni-secondary-theme: #0ea5e9;
  --omni-primary: var(--omni-primary-user, var(--omni-primary-theme));
  --omni-secondary: var(--omni-secondary-user, var(--omni-secondary-theme));
  --omni-canvas: #f3f6fb;
  --omni-canvas-strong: #e9eef8;
  --omni-surface: rgba(255,255,255,.92);
  --omni-surface-raised: #fff;
  --omni-surface-soft: #f7f9fc;
  --omni-surface-sunken: #edf1f7;
  --omni-ink: #172033;
  --omni-ink-strong: #0f172a;
  --omni-muted: #667085;
  --omni-faint: #98a2b3;
  --omni-line: #e2e7f0;
  --omni-line-strong: #cbd3e2;
  --omni-sidebar-bg: #0b1122;
  --omni-sidebar-surface: rgba(255,255,255,.055);
  --omni-sidebar-ink: #f8fafc;
  --omni-sidebar-muted: #aeb8cf;
  --omni-shadow-sm: 0 1px 2px rgba(16,24,40,.05), 0 7px 18px -14px rgba(41,50,82,.26);
  --omni-shadow: 0 1px 2px rgba(16,24,40,.035), 0 14px 40px -24px rgba(41,50,82,.3);
  --omni-shadow-lg: 0 24px 70px -36px rgba(20,28,58,.5);
  --omni-radius-theme: 16px;
  --omni-radius: var(--omni-radius-user, var(--omni-radius-theme));
  --omni-radius-sm: max(2px, calc(var(--omni-radius) * .5));
  --omni-radius-lg: calc(var(--omni-radius) * 1.45);
  --omni-density-theme: 1;
  --omni-density: var(--omni-density-user, var(--omni-density-theme));
  --omni-blur: 14px;
  --omni-border-width: 1px;
  --omni-control-height: max(44px, calc(44px * var(--omni-density)));
  --omni-space-1: calc(4px * var(--omni-density));
  --omni-space-2: calc(8px * var(--omni-density));
  --omni-space-3: calc(12px * var(--omni-density));
  --omni-space-4: calc(16px * var(--omni-density));
  --omni-space-5: calc(24px * var(--omni-density));
  --omni-space-6: calc(32px * var(--omni-density));
  --omni-space-7: calc(48px * var(--omni-density));
  /* Motion: the legacy pair follows the effects level (block at the end). */
  --omni-ease: var(--omni-ease-out);
  --omni-duration: var(--omni-motion-base);
  --omni-success: #047857;
  --omni-warning: #b45309;
  --omni-danger: #be123c;
  --omni-info: #0369a1;
  --omni-violet: #6d28d9;
  /* 1.3.0: the signal *stops* — the colour of a dot, tint, bar or ring. They
     default to the text-grade tokens above; a theme whose brand stops are too
     light for text (goossens) sets them apart, so `--omni-success` & co. are
     always safe as text on `--omni-surface` and the stops never are. */
  --omni-success-stop: var(--omni-success);
  --omni-warning-stop: var(--omni-warning);
  --omni-danger-stop: var(--omni-danger);
  --omni-info-stop: var(--omni-info);
  /* 1.7.0 (Owner 2026-10-22, "naše farby všade rovnomerne"): every state
     reads the status tokens above; on goossens they ARE the five Goossens
     stops (good aqua, watch yellow, bad magenta, info indigo, running sky).
     Running has its own pair; --omni-on-<state> is the text on a state fill
     (white by default, ink on the light goossens stops aqua / yellow). The
     delta pair (+2 %, −3 b. — a change against the previous period) is the
     ONLY green / red in the system. */
  --omni-running: var(--omni-info);
  --omni-running-stop: var(--omni-info-stop);
  --omni-on-success: var(--omni-on-signal);
  --omni-on-warning: var(--omni-on-signal);
  --omni-on-danger: var(--omni-on-signal);
  --omni-on-info: var(--omni-on-signal);
  --omni-on-running: var(--omni-on-signal);
  --omni-delta-up: var(--omni-success);
  --omni-delta-down: var(--omni-danger);
  --omni-on-delta-up: var(--omni-on-signal);
  --omni-on-delta-down: var(--omni-on-signal);
  /* The five decorative stops (1.6.0) — colour lines, cubes, chart series
     without meaning, accents. On goossens they equal the status stops; on the
     baseline they follow the theme's own colours. */
  --omni-deco-magenta: var(--omni-danger-stop);
  --omni-deco-indigo: var(--omni-violet);
  --omni-deco-aqua: var(--omni-success-stop);
  --omni-deco-sky: var(--omni-info-stop);
  --omni-deco-yellow: var(--omni-warning-stop);
  --omni-success-soft: color-mix(in oklab, var(--omni-success) 11%, var(--omni-surface-raised));
  --omni-warning-soft: color-mix(in oklab, var(--omni-warning) 11%, var(--omni-surface-raised));
  --omni-danger-soft: color-mix(in oklab, var(--omni-danger) 10%, var(--omni-surface-raised));
  --omni-info-soft: color-mix(in oklab, var(--omni-info) 10%, var(--omni-surface-raised));
  --omni-violet-soft: color-mix(in oklab, var(--omni-violet) 10%, var(--omni-surface-raised));
  --omni-primary-soft: color-mix(in oklab, var(--omni-primary) 11%, var(--omni-surface-raised));
  --omni-secondary-soft: color-mix(in oklab, var(--omni-secondary) 11%, var(--omni-surface-raised));
  --omni-focus: color-mix(in oklab, var(--omni-primary) 66%, white);
  --omni-body-art:
    radial-gradient(900px 500px at 84% -5%, color-mix(in srgb, var(--omni-primary) 12%, transparent), transparent 62%),
    radial-gradient(700px 480px at 98% 42%, color-mix(in srgb, var(--omni-secondary) 8%, transparent), transparent 68%),
    linear-gradient(145deg, #f8faff 0%, var(--omni-canvas) 48%, #f8f9fc 100%);
  --omni-sidebar-art:
    radial-gradient(450px 300px at -20% -8%, color-mix(in srgb, var(--omni-primary) 36%, transparent), transparent 62%),
    radial-gradient(350px 300px at 130% 42%, color-mix(in srgb, var(--omni-secondary) 14%, transparent), transparent 65%),
    linear-gradient(180deg, #10172b 0%, var(--omni-sidebar-bg) 100%);
  --omni-grid-color: color-mix(in srgb, var(--omni-primary) 5%, transparent);
  /* 1.2.0: shared by every OMNI web surface. */
  --omni-brand-navy: #252767;
  /* 1.3.0: the plate under the OMNI mark (sidebar, login). Navy by default;
     the goossens theme sets paper + hairline so the full-colour mark is the
     only colourful thing on white. */
  --omni-brand-plate: #252767;
  --omni-brand-plate-line: transparent;
  --omni-on-primary: #fff;
  --omni-touch-target: 44px;
  --omni-touch-target-lg: 56px;
  --omni-reading-size: 1.0625rem;
  /* 1.5.0 (kit v4, Owner 2026-10-22 "spacing & readability"): the one rhythm
     of every page. Sections 32 px apart, blocks 24 px, card padding 24 px
     (16 px on a phone, deck.css / omni-components.css media rule), row
     padding 16 px, text at line-height 1.6 and at most 72 characters wide. */
  /* 1.8.0 spacing rhythm (Owner 2026-10-22 "všetko je natlačené"): item
     12 px (a title to its description, stacked lines in an item) · group
     24 px (items of a list, blocks, grid cells, sibling collapsibles) ·
     section 48 px (sections and thematic categories); 8 · 16 · 32 on a phone. */
  --omni-gap-section: var(--omni-space-7);
  --omni-gap-block: var(--omni-space-5);
  --omni-gap-group: var(--omni-gap-block);
  --omni-gap-item: var(--omni-space-3);
  --omni-pad-card: var(--omni-space-5);
  --omni-pad-row: var(--omni-space-4);
  --omni-leading: 1.6;
  --omni-measure: 72ch;
  /* 1.6.0 (round 5, Owner 2026-10-22: "nič natlačené"): at least 8 px
     between inline elements (pills, buttons, icons, the "!" marker) and 6 px
     between stacked lines. */
  --omni-gap-inline: 8px;
  --omni-gap-line: 6px;
  /* 1.7.0 (Owner 2026-10-22 "kaskáda"): one indent step per nesting level
     (a section in a section, a section's body under its heading, a row's
     labelled texts under its title); 12 px on a phone. */
  --omni-indent-step: 24px;
  /* Text on a semantic fill (pills, the "!" marker): white on every theme. */
  --omni-on-signal: #fff;
  /* One icon scale (16 · 20 · 24) and one pill (24 px tall, 14 px icon, 6 px gap). */
  --omni-icon-sm: 16px;
  --omni-icon-md: 20px;
  --omni-icon-lg: 24px;
  --omni-icon-box: 32px;
  --omni-pill-height: 24px;
  --omni-pill-icon: 14px;
  --omni-pill-gap: 6px;
  --omni-pill-pad: 0 8px;
  --omni-pill-font: .7rem;
  /* Buttons: one height (40 px; 44 px on a coarse pointer, see .ui-button). */
  --omni-button-height: 40px;
  --omni-row-height: 48px;
}
/* A phone keeps 16 px card padding (kit v4). */
@media (max-width: 640px) {
  :root { --omni-pad-card: var(--omni-space-4); --omni-indent-step: 12px; --omni-gap-section: var(--omni-space-6); --omni-gap-block: var(--omni-space-4); --omni-gap-item: var(--omni-space-2); }
}

/* Font pairs (honest stacks, Owner 2026-10-21: "fonty / párovačky neviem
   prepnúť"). Only two kinds of font exist on an OMNI page: the self-hosted
   Montserrat (deck.css @font-face, CSP font-src 'self') and fonts that ship
   with Windows / macOS / Linux. A pair names the face it really renders —
   never a web font that is not installed (Space Grotesk, DM Sans, IBM Plex,
   JetBrains Mono, Inter were silently falling back to Segoe UI, so three
   pairs looked the same). The ids stay (they are stored in browsers). */
html[data-font="space-dm"] {
  /* Bahnschrift (Windows 10+) / Avenir Next (macOS) headings, Verdana body. */
  --omni-font-display: Bahnschrift, "Avenir Next Condensed", "Avenir Next", "DIN Alternate", "Segoe UI", sans-serif;
  --omni-font-body: Verdana, "Avenir Next", "DejaVu Sans", Geneva, sans-serif;
}
html[data-font="plex-mono"] {
  /* Consolas / Menlo mono headings, Calibri / Helvetica Neue body. */
  --omni-font-display: Consolas, Menlo, "Cascadia Code", "DejaVu Sans Mono", ui-monospace, monospace;
  --omni-font-body: Calibri, "Helvetica Neue", Carlito, "Segoe UI", Arial, sans-serif;
  --omni-font-mono: Consolas, Menlo, "Cascadia Code", "DejaVu Sans Mono", ui-monospace, monospace;
}
html[data-font="editorial"] {
  --omni-font-display: Georgia, "Times New Roman", "Liberation Serif", serif;
  --omni-font-body: "Segoe UI", -apple-system, system-ui, Helvetica, Arial, sans-serif;
}
html[data-font="humanist"] {
  --omni-font-display: "Trebuchet MS", "Gill Sans", "Segoe UI", sans-serif;
  --omni-font-body: Candara, "Gill Sans", Optima, "Segoe UI", sans-serif;
}
/* Montserrat pairs (1.3.0, Owner 2026-10-21): the goossens face on any theme.
   Montserrat is self-hosted by the Deck (deck.css @font-face, CSP font-src
   'self'); every partner is a system font, nothing is fetched from a CDN. */
html[data-font="montserrat"] {
  --omni-font-display: "Montserrat", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
  --omni-font-body: "Montserrat", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
}
html[data-font="montserrat-inter"] {
  /* Montserrat headings over the system UI face (Segoe UI / San Francisco / Roboto). */
  --omni-font-display: "Montserrat", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
  --omni-font-body: "Segoe UI", -apple-system, system-ui, Roboto, Helvetica, Arial, sans-serif;
}
html[data-font="montserrat-mono"] {
  --omni-font-display: "Montserrat", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
  --omni-font-body: "Montserrat", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
  --omni-font-mono: Consolas, Menlo, "Cascadia Code", "DejaVu Sans Mono", ui-monospace, monospace;
}
html[data-font="montserrat-serif"] {
  /* Montserrat 500 headings over Palatino (Windows: Palatino Linotype, macOS: Palatino / Charter). */
  --omni-font-display: "Montserrat", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
  --omni-font-body: "Palatino Linotype", Palatino, Charter, "Book Antiqua", "URW Palladio L", Georgia, serif;
}

html[data-theme="black-glass"] {
  color-scheme: dark;
  --omni-primary-theme:#22d3ee; --omni-secondary-theme:#a78bfa;
  --omni-canvas:#05070c; --omni-canvas-strong:#080d17;
  --omni-surface:rgba(13,20,32,.72); --omni-surface-raised:rgba(18,27,43,.94); --omni-surface-soft:rgba(255,255,255,.055); --omni-surface-sunken:#070b12;
  --omni-ink:#e8f6ff; --omni-ink-strong:#fff; --omni-muted:#9fb0c3; --omni-faint:#718298;
  --omni-line:rgba(170,220,255,.14); --omni-line-strong:rgba(170,220,255,.25);
  --omni-sidebar-bg:#030507; --omni-sidebar-surface:rgba(255,255,255,.055); --omni-sidebar-ink:#f7fbff; --omni-sidebar-muted:#9aafc3;
  --omni-shadow-sm:0 10px 30px -20px rgba(0,0,0,.85); --omni-shadow:0 24px 70px -38px rgba(0,0,0,.95),inset 0 1px rgba(255,255,255,.055); --omni-shadow-lg:0 32px 100px -40px rgba(0,0,0,1);
  --omni-radius-theme:18px; --omni-density-theme:1; --omni-blur:22px;
  --omni-success:#46e6ad; --omni-warning:#ffd166; --omni-danger:#ff7b9c; --omni-info:#56d9ff; --omni-violet:#c4a7ff;
  --omni-body-art:radial-gradient(900px 520px at 12% -10%,rgba(34,211,238,.16),transparent 65%),radial-gradient(720px 520px at 100% 36%,rgba(167,139,250,.16),transparent 67%),linear-gradient(145deg,#04060a,var(--omni-canvas));
  --omni-sidebar-art:radial-gradient(420px 360px at -10% -5%,rgba(34,211,238,.15),transparent 65%),linear-gradient(180deg,#060a11,var(--omni-sidebar-bg));
  --omni-grid-color:rgba(34,211,238,.055);
}

html[data-theme="aurora-glass"] {
  color-scheme:light;
  --omni-primary-theme:#7c3aed; --omni-secondary-theme:#06b6d4;
  --omni-canvas:#eef6ff; --omni-canvas-strong:#e2ebfb;
  --omni-surface:rgba(255,255,255,.62); --omni-surface-raised:rgba(255,255,255,.82); --omni-surface-soft:rgba(245,248,255,.65); --omni-surface-sunken:rgba(225,235,250,.72);
  --omni-ink:#19213a; --omni-ink-strong:#10162a; --omni-muted:#596681; --omni-faint:#8792aa;
  --omni-line:rgba(77,88,130,.16); --omni-line-strong:rgba(77,88,130,.28);
  --omni-sidebar-bg:#181335; --omni-sidebar-surface:rgba(255,255,255,.09); --omni-sidebar-ink:#fff; --omni-sidebar-muted:#c8c3e5;
  --omni-shadow-sm:0 8px 26px -20px rgba(51,65,120,.44); --omni-shadow:0 24px 70px -38px rgba(51,65,120,.48),inset 0 1px rgba(255,255,255,.8); --omni-shadow-lg:0 34px 100px -44px rgba(67,56,140,.55);
  --omni-radius-theme:22px; --omni-density-theme:1.04; --omni-blur:24px;
  --omni-body-art:radial-gradient(780px 540px at 6% 4%,rgba(236,72,153,.16),transparent 64%),radial-gradient(850px 560px at 92% 2%,rgba(6,182,212,.18),transparent 62%),radial-gradient(700px 520px at 70% 90%,rgba(124,58,237,.12),transparent 65%),linear-gradient(145deg,#f8fbff,var(--omni-canvas));
  --omni-sidebar-art:radial-gradient(450px 340px at -15% -5%,rgba(236,72,153,.28),transparent 66%),radial-gradient(420px 330px at 120% 45%,rgba(6,182,212,.2),transparent 68%),linear-gradient(180deg,#211945,var(--omni-sidebar-bg));
  --omni-grid-color:rgba(124,58,237,.05);
}

html[data-theme="midnight-cinema"] {
  color-scheme:dark;
  --omni-primary-theme:#818cf8; --omni-secondary-theme:#f472b6;
  --omni-canvas:#050506; --omni-canvas-strong:#09090c;
  --omni-surface:rgba(14,14,18,.88); --omni-surface-raised:#101014; --omni-surface-soft:#0b0b0e; --omni-surface-sunken:#030304;
  --omni-ink:#ededf2; --omni-ink-strong:#fff; --omni-muted:#9899a7; --omni-faint:#676873;
  --omni-line:rgba(255,255,255,.09); --omni-line-strong:rgba(255,255,255,.17);
  --omni-sidebar-bg:#040405; --omni-sidebar-surface:rgba(255,255,255,.045); --omni-sidebar-ink:#f7f7fa; --omni-sidebar-muted:#a3a3ad;
  --omni-shadow-sm:0 8px 28px -18px rgba(0,0,0,.8); --omni-shadow:0 24px 72px -36px rgba(0,0,0,.96),inset 0 1px rgba(255,255,255,.04); --omni-shadow-lg:0 38px 110px -44px #000;
  --omni-radius-theme:16px; --omni-density-theme:.96; --omni-blur:16px;
  --omni-success:#6ee7b7; --omni-warning:#f6c86f; --omni-danger:#fb8aa5; --omni-info:#7dd3fc; --omni-violet:#c4b5fd;
  --omni-body-art:radial-gradient(780px 470px at 76% -12%,rgba(94,106,210,.2),transparent 68%),radial-gradient(540px 460px at 96% 56%,rgba(244,114,182,.08),transparent 72%),linear-gradient(180deg,#0a0a0f,#020203);
  --omni-sidebar-art:linear-gradient(180deg,#0a0a0d,var(--omni-sidebar-bg)); --omni-grid-color:rgba(129,140,248,.035);
}

html[data-theme="neo-brutal"] {
  color-scheme:light;
  --omni-primary-theme:#c81d3a; --omni-secondary-theme:#e5b800;
  --omni-canvas:#fff8e8; --omni-canvas-strong:#f8eccb;
  --omni-surface:#fffdf5; --omni-surface-raised:#fff; --omni-surface-soft:#fff2c6; --omni-surface-sunken:#f7e6af;
  --omni-ink:#111; --omni-ink-strong:#000; --omni-muted:#383838; --omni-faint:#646464;
  --omni-line:#111; --omni-line-strong:#000;
  --omni-sidebar-bg:#111; --omni-sidebar-surface:#222; --omni-sidebar-ink:#fffdf5; --omni-sidebar-muted:#f0e7ce;
  --omni-shadow-sm:3px 3px 0 #111; --omni-shadow:6px 6px 0 #111; --omni-shadow-lg:10px 10px 0 #111;
  --omni-radius-theme:4px; --omni-density-theme:1.08; --omni-blur:0px; --omni-border-width:2px;
  --omni-success:#087f5b; --omni-warning:#9a4d00; --omni-danger:#c1121f; --omni-info:#0057b8; --omni-violet:#6d28d9;
  --omni-body-art:linear-gradient(90deg,rgba(0,0,0,.035) 1px,transparent 1px),linear-gradient(rgba(0,0,0,.035) 1px,transparent 1px),var(--omni-canvas); --omni-sidebar-art:linear-gradient(180deg,#242424,#090909); --omni-grid-color:rgba(0,0,0,.055);
}

html[data-theme="clay-studio"] {
  color-scheme:light;
  --omni-primary-theme:#7c3aed; --omni-secondary-theme:#db2777;
  --omni-canvas:#f2eff8; --omni-canvas-strong:#e8e2f1;
  --omni-surface:rgba(255,255,255,.72); --omni-surface-raised:#f8f5fc; --omni-surface-soft:#eee8f7; --omni-surface-sunken:#e4dced;
  --omni-ink:#332f3a; --omni-ink-strong:#201d25; --omni-muted:#655f6e; --omni-faint:#91899b;
  --omni-line:rgba(87,72,105,.12); --omni-line-strong:rgba(87,72,105,.22);
  --omni-sidebar-bg:#302743; --omni-sidebar-surface:rgba(255,255,255,.1); --omni-sidebar-ink:#fff; --omni-sidebar-muted:#d9cfe6;
  --omni-shadow-sm:5px 6px 14px rgba(107,91,128,.12),inset -2px -2px 6px rgba(111,91,135,.06),inset 2px 2px 5px #fff; --omni-shadow:12px 14px 30px rgba(107,91,128,.17),inset -4px -4px 10px rgba(111,91,135,.07),inset 3px 3px 9px #fff; --omni-shadow-lg:20px 24px 52px rgba(95,71,124,.2),inset 3px 3px 10px #fff;
  --omni-radius-theme:28px; --omni-density-theme:1.08; --omni-blur:18px;
  --omni-body-art:radial-gradient(640px 480px at 4% 2%,rgba(167,139,250,.25),transparent 68%),radial-gradient(650px 480px at 98% 78%,rgba(244,114,182,.19),transparent 68%),var(--omni-canvas); --omni-sidebar-art:radial-gradient(380px 330px at -10% -4%,rgba(167,139,250,.34),transparent 68%),linear-gradient(180deg,#49395f,var(--omni-sidebar-bg)); --omni-grid-color:rgba(124,58,237,.035);
}

html[data-theme="bento-paper"] {
  color-scheme:light;
  --omni-primary-theme:#0f766e; --omni-secondary-theme:#c2410c;
  --omni-canvas:#f3f0e8; --omni-canvas-strong:#e7e1d4;
  --omni-surface:#fcfbf7; --omni-surface-raised:#fffefa; --omni-surface-soft:#f0ece3; --omni-surface-sunken:#e6dfd2;
  --omni-ink:#27251f; --omni-ink-strong:#17150f; --omni-muted:#686256; --omni-faint:#979082;
  --omni-line:#ddd7ca; --omni-line-strong:#c9c0b0;
  --omni-sidebar-bg:#24302d; --omni-sidebar-surface:rgba(255,255,255,.07); --omni-sidebar-ink:#fffdf7; --omni-sidebar-muted:#c9d2cd;
  --omni-shadow-sm:0 1px 0 rgba(48,45,38,.08); --omni-shadow:0 8px 24px -22px rgba(48,45,38,.38); --omni-shadow-lg:0 18px 42px -32px rgba(48,45,38,.45);
  --omni-radius-theme:12px; --omni-density-theme:.9; --omni-blur:0px;
  --omni-body-art:radial-gradient(circle at 1px 1px,rgba(39,37,31,.08) 1px,transparent 0),var(--omni-canvas); --omni-sidebar-art:linear-gradient(180deg,#34423e,var(--omni-sidebar-bg)); --omni-grid-color:rgba(39,37,31,.045);
}

html[data-theme="editorial-noir"] {
  color-scheme:light;
  --omni-primary-theme:#111; --omni-secondary-theme:#7c2d12;
  --omni-canvas:#f7f5ef; --omni-canvas-strong:#e9e5db;
  --omni-surface:#fffefa; --omni-surface-raised:#fff; --omni-surface-soft:#efebe2; --omni-surface-sunken:#e6e0d4;
  --omni-ink:#171717; --omni-ink-strong:#000; --omni-muted:#55514a; --omni-faint:#80796f;
  --omni-line:#272727; --omni-line-strong:#000;
  --omni-sidebar-bg:#111; --omni-sidebar-surface:rgba(255,255,255,.06); --omni-sidebar-ink:#fff; --omni-sidebar-muted:#cfcfcf;
  --omni-shadow-sm:none; --omni-shadow:none; --omni-shadow-lg:0 18px 0 rgba(0,0,0,.12);
  --omni-radius-theme:0px; --omni-density-theme:.94; --omni-blur:0px; --omni-border-width:1px;
  --omni-body-art:linear-gradient(90deg,transparent 0 49.9%,rgba(0,0,0,.018) 50% 50.1%,transparent 50.2%),var(--omni-canvas); --omni-sidebar-art:#111; --omni-grid-color:rgba(0,0,0,.05);
}

html[data-theme="terminal-flux"] {
  color-scheme:dark;
  --omni-primary-theme:#2cff9b; --omni-secondary-theme:#23d5ff;
  --omni-canvas:#03100d; --omni-canvas-strong:#061814;
  --omni-surface:rgba(3,22,17,.9); --omni-surface-raised:#071c16; --omni-surface-soft:#061712; --omni-surface-sunken:#020b09;
  --omni-ink:#c9ffe8; --omni-ink-strong:#f1fff9; --omni-muted:#7fc8a8; --omni-faint:#4c876f;
  --omni-line:rgba(44,255,155,.2); --omni-line-strong:rgba(44,255,155,.42);
  --omni-sidebar-bg:#010806; --omni-sidebar-surface:rgba(44,255,155,.055); --omni-sidebar-ink:#dcfff0; --omni-sidebar-muted:#7cb99e;
  --omni-shadow-sm:0 0 14px rgba(44,255,155,.08); --omni-shadow:0 0 26px rgba(44,255,155,.1),inset 0 0 22px rgba(44,255,155,.02); --omni-shadow-lg:0 0 50px rgba(35,213,255,.14);
  --omni-radius-theme:2px; --omni-density-theme:.86; --omni-blur:0px;
  --omni-success:#2cff9b; --omni-warning:#ffd166; --omni-danger:#ff5f7e; --omni-info:#23d5ff; --omni-violet:#c19cff;
  --omni-body-art:repeating-linear-gradient(0deg,rgba(44,255,155,.018) 0 1px,transparent 1px 4px),linear-gradient(90deg,rgba(44,255,155,.04) 1px,transparent 1px),linear-gradient(rgba(44,255,155,.04) 1px,transparent 1px),var(--omni-canvas); --omni-sidebar-art:linear-gradient(180deg,#03110d,var(--omni-sidebar-bg)); --omni-grid-color:rgba(44,255,155,.07);
}

html[data-theme="spatial-violet"] {
  color-scheme:dark;
  --omni-primary-theme:#a78bfa; --omni-secondary-theme:#38bdf8;
  --omni-canvas:#0d0920; --omni-canvas-strong:#15102d;
  --omni-surface:rgba(37,28,66,.58); --omni-surface-raised:rgba(47,36,80,.78); --omni-surface-soft:rgba(255,255,255,.055); --omni-surface-sunken:rgba(8,6,19,.52);
  --omni-ink:#f3efff; --omni-ink-strong:#fff; --omni-muted:#b8add0; --omni-faint:#81769a;
  --omni-line:rgba(230,220,255,.14); --omni-line-strong:rgba(230,220,255,.26);
  --omni-sidebar-bg:#0a0718; --omni-sidebar-surface:rgba(255,255,255,.065); --omni-sidebar-ink:#fff; --omni-sidebar-muted:#bcb0d4;
  --omni-shadow-sm:0 12px 36px -24px rgba(0,0,0,.75),inset 0 1px rgba(255,255,255,.08); --omni-shadow:0 28px 90px -44px rgba(0,0,0,.9),inset 0 1px rgba(255,255,255,.1); --omni-shadow-lg:0 44px 120px -50px rgba(0,0,0,.95);
  --omni-radius-theme:24px; --omni-density-theme:1.05; --omni-blur:32px;
  --omni-success:#73e7bc; --omni-warning:#ffd27b; --omni-danger:#ff8aa8; --omni-info:#7dd3fc; --omni-violet:#c4b5fd;
  --omni-body-art:radial-gradient(820px 560px at 12% -8%,rgba(167,139,250,.28),transparent 67%),radial-gradient(760px 540px at 92% 42%,rgba(56,189,248,.18),transparent 70%),linear-gradient(150deg,#100b27,var(--omni-canvas)); --omni-sidebar-art:radial-gradient(460px 350px at -15% -5%,rgba(167,139,250,.25),transparent 66%),linear-gradient(180deg,#130d2b,var(--omni-sidebar-bg)); --omni-grid-color:rgba(196,181,253,.045);
}

html[data-theme="kinetic-spectrum"] {
  color-scheme:light;
  --omni-primary-theme:#6d28d9; --omni-secondary-theme:#ff3d81;
  --omni-canvas:#fff7fb; --omni-canvas-strong:#f4eaf7;
  --omni-surface:rgba(255,255,255,.9); --omni-surface-raised:#fff; --omni-surface-soft:#fff1f7; --omni-surface-sunken:#f6e8f1;
  --omni-ink:#251331; --omni-ink-strong:#16081f; --omni-muted:#6d5778; --omni-faint:#9a83a5;
  --omni-line:rgba(90,46,112,.16); --omni-line-strong:rgba(90,46,112,.28);
  --omni-sidebar-bg:#25113b; --omni-sidebar-surface:rgba(255,255,255,.08); --omni-sidebar-ink:#fff; --omni-sidebar-muted:#dfcdea;
  --omni-shadow-sm:0 6px 18px -14px rgba(109,40,217,.38); --omni-shadow:0 18px 48px -28px rgba(109,40,217,.38); --omni-shadow-lg:0 30px 84px -38px rgba(255,61,129,.4);
  --omni-radius-theme:14px; --omni-density-theme:1; --omni-blur:12px;
  --omni-body-art:radial-gradient(720px 500px at 4% 2%,rgba(255,61,129,.18),transparent 66%),radial-gradient(760px 520px at 96% 14%,rgba(0,194,255,.18),transparent 66%),radial-gradient(640px 500px at 72% 94%,rgba(255,190,11,.16),transparent 66%),linear-gradient(145deg,#fff,var(--omni-canvas)); --omni-sidebar-art:radial-gradient(400px 340px at -10% -3%,rgba(255,61,129,.34),transparent 68%),radial-gradient(370px 330px at 120% 50%,rgba(0,194,255,.2),transparent 68%),linear-gradient(180deg,#3b195c,var(--omni-sidebar-bg)); --omni-grid-color:rgba(109,40,217,.045);
}

/* Goossens — the Deck default since 1.3.0 (Owner, 2026-10-21). Derived from
   the goossens.ai brand: black and white with GLOWING, striking elements
   (Owner, 2026-10-21: "my sme čierno-bieli so svietivými výraznými prvkami").
   Ink on paper, hairlines, square tiles, Montserrat; primary = ink, electric
   indigo for links and focus. Since 1.7.0 (Owner 2026-10-22: "naše farby
   všade rovnomerne") every state is painted in the five Goossens stops —
   good aqua, watch yellow, bad magenta, info indigo, running sky, idle /
   unknown grey — as flat fills (ink text on aqua / yellow, white on magenta /
   indigo / sky). The same stops draw the hard-edged five-block colour line
   (--omni-signal-line) that marks the selected element, the cubes and chart
   series. Green and red exist only for deltas (--omni-delta-up / -down). No gradient ever fades to ink; colour is
   juxtaposed, never blended. */
html[data-theme="goossens"] {
  color-scheme:light;
  --omni-primary-theme:#0a0a0a; --omni-secondary-theme:#360cfe;
  --omni-canvas:#ffffff; --omni-canvas-strong:#f7f7f7;
  --omni-surface:#ffffff; --omni-surface-raised:#ffffff; --omni-surface-soft:#f7f7f7; --omni-surface-sunken:#f2f2f2;
  --omni-ink:#0a0a0a; --omni-ink-strong:#000; --omni-muted:#6f6f6f; --omni-faint:#8f8f8f;
  --omni-line:#e6e6e6; --omni-line-strong:#c9c9c9;
  --omni-sidebar-bg:#ffffff; --omni-sidebar-surface:#f7f7f7; --omni-sidebar-ink:#0a0a0a; --omni-sidebar-muted:#6f6f6f;
  --omni-shadow-sm:0 1px 0 rgb(255 255 255/80%) inset,0 1px 0 #e6e6e6; --omni-shadow:0 1px 0 rgb(255 255 255/80%) inset,0 8px 24px -10px rgb(10 10 10/22%); --omni-shadow-lg:0 1px 0 rgb(255 255 255/80%) inset,0 14px 32px -14px rgb(10 10 10/30%);
  --omni-radius-theme:0px; --omni-density-theme:1; --omni-blur:14px; --omni-border-width:1px;
  /* No corner radius anywhere (Owner 2026-10-22), whatever the radius slider
     or the "corners" switch say: the derived radius tokens are 0 in every
     variant; omni-components.css catches the literal radii. */
  --omni-radius:0px; --omni-radius-sm:0px; --omni-radius-lg:0px;
  /* Status colours = the Goossens stops (1.7.0, Owner 2026-10-22). Two
     grades: the STOP (--omni-*-stop: every fill, dot, pill, tile bar, chart
     status, marker) and the text grade (--omni-success & co.: the rare
     coloured word on paper — the same hue darkened to AA >= 4.5:1: teal
     5.3:1, olive 5.9:1, magenta 5.8:1, indigo 7.95:1, sky 6.0:1). Text on a
     fill: ink on aqua 13.4:1 and yellow 13.0:1; white on magenta 3.6:1,
     indigo 7.95:1, sky 2.35:1 (bold, the Owner's brand rule). Deltas are a
     vivid green #00d26a (ink text 9.8:1) and red #ff3b4a (white 3.5:1, bold)
     in the same glowing family as the stops, only where numbers compare. */
  --omni-success:#007a66; --omni-warning:#7a6200; --omni-danger:#c8005e; --omni-info:#360cfe; --omni-violet:#360cfe;
  --omni-success-stop:#00efcb; --omni-warning-stop:#f7ce00; --omni-danger-stop:#ff2383; --omni-info-stop:#360cfe;
  --omni-running:#006b8f; --omni-running-stop:#1cb3ff;
  --omni-on-success:#0a0a0a; --omni-on-warning:#0a0a0a; --omni-on-danger:#ffffff; --omni-on-info:#ffffff; --omni-on-running:#0a0a0a;
  --omni-delta-up:#00d26a; --omni-delta-down:#ff3b4a; --omni-on-delta-up:#ffffff; --omni-on-delta-down:#ffffff;
  /* The decorative stops (colour lines, kicker and chart cubes, series
     without meaning, accent pills) — the same five colours. */
  --omni-deco-magenta:#ff2383; --omni-deco-indigo:#360cfe; --omni-deco-aqua:#00efcb; --omni-deco-sky:#1cb3ff; --omni-deco-yellow:#f7ce00;
  /* Tints: a flat 10-12 % stop over paper, ink text — only where a fill would
     be too loud (table row highlights, alert bodies). */
  --omni-success-soft:color-mix(in oklab,var(--omni-success-stop) 10%,var(--omni-surface-raised)); --omni-warning-soft:color-mix(in oklab,var(--omni-warning-stop) 12%,var(--omni-surface-raised));
  --omni-danger-soft:color-mix(in oklab,var(--omni-danger-stop) 10%,var(--omni-surface-raised)); --omni-info-soft:color-mix(in oklab,var(--omni-info-stop) 10%,var(--omni-surface-raised)); --omni-violet-soft:color-mix(in oklab,var(--omni-violet) 14%,var(--omni-surface-raised));
  /* The colour line: five HARD-EDGED blocks side by side (magenta, indigo,
     aqua, sky, yellow — the goossens.ai corner), never a blend. Horizontal
     for underlines and top edges, vertical for the sidebar's active bar. */
  --omni-signal-line:linear-gradient(90deg,#ff2383 0 20%,#360cfe 20% 40%,#00efcb 40% 60%,#1cb3ff 60% 80%,#f7ce00 80% 100%);
  --omni-signal-line-v:linear-gradient(180deg,#ff2383 0 20%,#360cfe 20% 40%,#00efcb 40% 60%,#1cb3ff 60% 80%,#f7ce00 80% 100%);
  /* Focus and the indigo nav stop follow the accent (html[data-accent], below). */
  --omni-focus:var(--omni-secondary);
  /* The OMNI mark is unframed by default (Owner 2026-10-21: "logo OMNI nech
     nie je orámované"): plate = the canvas, no line; data-plate="hairline"
     and "navy" stay available as choices. */
  --omni-brand-plate:#ffffff; --omni-brand-plate-line:transparent;
  --omni-body-art:#ffffff; --omni-sidebar-art:#ffffff; --omni-grid-color:#f2f2f2;
  --omni-nav-tone:#0a0a0a; --omni-nav-tone-rgb:10,10,10;
  --omni-nav-tone-magenta:#ff2383; --omni-nav-tone-indigo:var(--omni-secondary); --omni-nav-tone-aqua:#00efcb; --omni-nav-tone-sky:#1cb3ff; --omni-nav-tone-yellow:#f7ce00;
}
/* Montserrat is the goossens default through the explicit `montserrat` font
   pair (deck-theme.js picks it as the goossens default and moves old
   goossens + omni-sans records to it once), so every pair — including
   `omni-sans` = the system face — renders exactly what its card names. The
   @font-face is in the Deck (deck.css, /public/fonts/montserrat/, CSP
   font-src 'self'); a host without it (the Connector) falls back to the
   system stack. */

/* Goossens customisation (1.3.0, Owner 2026-10-21: "možnosti customizácie,
   hlavne farieb, prepínače tematických prevedení, fonty dvojice"). Every
   switch is an attribute on <html> next to data-theme, set by deck-theme.js
   from the same local design record and only while the theme is goossens;
   each block overrides tokens only. Contract: ABI/DESIGN-SYSTEM.md
   "Goossens variants and customisation". Order matters: switches first, the
   five variants next (a variant wins over a hairline/plate switch), then the
   sidebar switch and the accent/primary rules (they win over the variant). */
html[data-theme="goossens"][data-hairline="regular"] {
  --omni-line:#c9c9c9; --omni-line-strong:#9c9c9c; --omni-brand-plate-line:#c9c9c9;
}
/* mono status: ink and grey instead of the five stops; the shape cue (filled,
   half, hollow square) is drawn by deck.css on .ui-status-dot / .ui-status i.
   The quiet opt-out and the AA way: ink fills carry white text at 17:1. */
html[data-theme="goossens"][data-status="mono"] {
  --omni-success:#0a0a0a; --omni-warning:#6f6f6f; --omni-danger:#0a0a0a; --omni-info:#6f6f6f; --omni-violet:#0a0a0a;
  --omni-success-stop:#0a0a0a; --omni-warning-stop:#6f6f6f; --omni-danger-stop:#0a0a0a; --omni-info-stop:#6f6f6f;
  --omni-running:#6f6f6f; --omni-running-stop:#6f6f6f; --omni-delta-up:#0a0a0a; --omni-delta-down:#0a0a0a; --omni-on-delta-up:#ffffff; --omni-on-delta-down:#ffffff;
  --omni-on-success:#ffffff; --omni-on-warning:#ffffff; --omni-on-danger:#ffffff; --omni-on-info:#ffffff; --omni-on-running:#ffffff;
  --omni-deco-magenta:#0a0a0a; --omni-deco-indigo:#6f6f6f; --omni-deco-aqua:#0a0a0a; --omni-deco-sky:#6f6f6f; --omni-deco-yellow:#0a0a0a;
  --omni-signal-line:linear-gradient(90deg,#0a0a0a 0 20%,#6f6f6f 20% 40%,#0a0a0a 40% 60%,#6f6f6f 60% 80%,#0a0a0a 80% 100%);
  --omni-signal-line-v:linear-gradient(180deg,#0a0a0a 0 20%,#6f6f6f 20% 40%,#0a0a0a 40% 60%,#6f6f6f 60% 80%,#0a0a0a 80% 100%);
}
/* tint off: table rows and alert bodies lose the 14 % stop tint and keep an
   outline in the stop colour (deck.css paints the border); fills stay. */
html[data-theme="goossens"][data-tint="none"] {
  --omni-success-soft:var(--omni-surface-raised); --omni-warning-soft:var(--omni-surface-raised); --omni-danger-soft:var(--omni-surface-raised); --omni-info-soft:var(--omni-surface-raised); --omni-violet-soft:var(--omni-surface-raised);
}
html[data-theme="goossens"][data-shadows="off"] {
  --omni-shadow-sm:none; --omni-shadow:none; --omni-shadow-lg:none; --omni-glow:0 0 0 0 transparent;
}
/* plate: none (default, the mark sits unframed on the canvas) · hairline
   (paper plate with the hairline) · navy (the OMNI navy plate). */
html[data-theme="goossens"][data-plate="hairline"] {
  --omni-brand-plate:#ffffff; --omni-brand-plate-line:#e6e6e6;
}
html[data-theme="goossens"][data-plate="hairline"][data-hairline="regular"] {
  --omni-brand-plate-line:#c9c9c9;
}
html[data-theme="goossens"][data-plate="none"] {
  --omni-brand-plate:var(--omni-sidebar-bg); --omni-brand-plate-line:transparent;
}
html[data-theme="goossens"][data-plate="navy"] {
  --omni-brand-plate:#252767; --omni-brand-plate-line:transparent;
}
/* ink: the paper look inverted. Signal stops unchanged; the OMNI mark keeps
   its white plate (unframed) so it stays the only full-colour thing. */
html[data-theme="goossens"][data-variant="ink"] {
  color-scheme:dark;
  --omni-primary-theme:#f5f5f5; --omni-on-primary:#0a0a0a;
  --omni-canvas:#0a0a0a; --omni-canvas-strong:#141414;
  --omni-surface:#0a0a0a; --omni-surface-raised:#111111; --omni-surface-soft:#161616; --omni-surface-sunken:#050505;
  --omni-ink:#f5f5f5; --omni-ink-strong:#ffffff; --omni-muted:#a3a3a3; --omni-faint:#7a7a7a;
  --omni-line:#2a2a2a; --omni-line-strong:#474747;
  --omni-sidebar-bg:#0a0a0a; --omni-sidebar-surface:#161616; --omni-sidebar-ink:#f5f5f5; --omni-sidebar-muted:#a3a3a3;
  --omni-shadow-sm:0 1px 0 #2a2a2a; --omni-shadow:0 8px 24px -10px rgb(0 0 0/65%); --omni-shadow-lg:0 14px 32px -14px rgb(0 0 0/75%);
  --omni-brand-plate:#ffffff; --omni-brand-plate-line:transparent;
  --omni-body-art:#0a0a0a; --omni-sidebar-art:#0a0a0a; --omni-grid-color:#161616;
  --omni-nav-tone:#f5f5f5; --omni-nav-tone-rgb:245,245,245;
  /* On ink the stops themselves read as words on dark paper; deltas brighten. */
  --omni-success:#00efcb; --omni-warning:#f7ce00; --omni-danger:#ff2383; --omni-info:#8f7bff; --omni-running:#1cb3ff;
  --omni-delta-up:#00d26a; --omni-delta-down:#ff3b4a;
}
html[data-theme="goossens"][data-variant="ink"][data-plate="hairline"] {
  --omni-brand-plate-line:#2a2a2a;
}
html[data-theme="goossens"][data-variant="ink"][data-hairline="regular"] {
  --omni-line:#474747; --omni-line-strong:#6b6b6b;
}
html[data-theme="goossens"][data-variant="ink"][data-plate="hairline"][data-hairline="regular"] {
  --omni-brand-plate-line:#474747;
}
html[data-theme="goossens"][data-variant="ink"][data-status="mono"] {
  --omni-success:#f5f5f5; --omni-warning:#a3a3a3; --omni-danger:#f5f5f5; --omni-info:#a3a3a3; --omni-violet:#f5f5f5;
  --omni-success-stop:#f5f5f5; --omni-warning-stop:#a3a3a3; --omni-danger-stop:#f5f5f5; --omni-info-stop:#a3a3a3;
  --omni-running:#a3a3a3; --omni-running-stop:#a3a3a3; --omni-delta-up:#f5f5f5; --omni-delta-down:#f5f5f5; --omni-on-delta-up:#0a0a0a; --omni-on-delta-down:#0a0a0a;
  --omni-on-success:#0a0a0a; --omni-on-warning:#0a0a0a; --omni-on-danger:#0a0a0a; --omni-on-info:#0a0a0a; --omni-on-running:#0a0a0a;
  --omni-deco-magenta:#f5f5f5; --omni-deco-indigo:#a3a3a3; --omni-deco-aqua:#f5f5f5; --omni-deco-sky:#a3a3a3; --omni-deco-yellow:#f5f5f5;
  --omni-signal-line:linear-gradient(90deg,#f5f5f5 0 20%,#a3a3a3 20% 40%,#f5f5f5 40% 60%,#a3a3a3 60% 80%,#f5f5f5 80% 100%);
  --omni-signal-line-v:linear-gradient(180deg,#f5f5f5 0 20%,#a3a3a3 20% 40%,#f5f5f5 40% 60%,#a3a3a3 60% 80%,#f5f5f5 80% 100%);
}
/* grid: paper with a 24 px hairline grid as the canvas art; cards stay white. */
html[data-theme="goossens"][data-variant="grid"] {
  --omni-body-art:linear-gradient(90deg,#f2f2f2 1px,transparent 1px) 0 0/24px 24px,linear-gradient(#f2f2f2 1px,transparent 1px) 0 0/24px 24px,#ffffff;
  --omni-grid-color:#ededed;
}
/* warm: the editorial paper. */
html[data-theme="goossens"][data-variant="warm"] {
  --omni-primary-theme:#141210;
  --omni-canvas:#faf8f3; --omni-canvas-strong:#f3efe6;
  --omni-surface:#faf8f3; --omni-surface-raised:#fffdf9; --omni-surface-soft:#f3efe6; --omni-surface-sunken:#ece7dc;
  --omni-ink:#141210; --omni-ink-strong:#000; --omni-muted:#6e675d; --omni-faint:#8f877b;
  --omni-line:#e8e2d6; --omni-line-strong:#cfc7b8;
  --omni-sidebar-bg:#faf8f3; --omni-sidebar-surface:#f3efe6; --omni-sidebar-ink:#141210; --omni-sidebar-muted:#6e675d;
  --omni-brand-plate:#fffdf9; --omni-brand-plate-line:transparent;
  --omni-body-art:#faf8f3; --omni-sidebar-art:#faf8f3; --omni-grid-color:#ece7dc;
  --omni-nav-tone:#141210; --omni-nav-tone-rgb:20,18,16;
}
html[data-theme="goossens"][data-variant="warm"][data-plate="hairline"] {
  --omni-brand-plate-line:#e8e2d6;
}
html[data-theme="goossens"][data-variant="warm"][data-hairline="regular"] {
  --omni-line:#cfc7b8; --omni-line-strong:#a99f8c;
}
html[data-theme="goossens"][data-variant="warm"][data-plate="hairline"][data-hairline="regular"] {
  --omni-brand-plate-line:#cfc7b8;
}
/* contrast: pure black on white, 2 px lines, darkened stops (AA on white and
   white on them), no shadows; the colour line uses the same AA stops; the
   focus ring is wider (deck.css). */
html[data-theme="goossens"][data-variant="contrast"] {
  --omni-primary-theme:#000;
  --omni-canvas:#fff; --omni-canvas-strong:#fff;
  --omni-surface:#fff; --omni-surface-raised:#fff; --omni-surface-soft:#fff; --omni-surface-sunken:#f2f2f2;
  --omni-ink:#000; --omni-ink-strong:#000; --omni-muted:#1a1a1a; --omni-faint:#333;
  --omni-line:#000; --omni-line-strong:#000; --omni-border-width:2px;
  --omni-sidebar-bg:#fff; --omni-sidebar-surface:#f2f2f2; --omni-sidebar-ink:#000; --omni-sidebar-muted:#1a1a1a;
  --omni-shadow-sm:none; --omni-shadow:none; --omni-shadow-lg:none; --omni-glow:0 0 0 0 transparent;
  --omni-success:#006655; --omni-warning:#5c4b00; --omni-danger:#a30050; --omni-info:#2a00c8; --omni-violet:#2a00c8;
  --omni-success-stop:#006655; --omni-warning-stop:#5c4b00; --omni-danger-stop:#a30050; --omni-info-stop:#2a00c8;
  --omni-running:#00568f; --omni-running-stop:#00568f; --omni-delta-up:#0a6630; --omni-delta-down:#a3001c; --omni-on-delta-up:#ffffff; --omni-on-delta-down:#ffffff;
  --omni-on-success:#ffffff; --omni-on-warning:#ffffff; --omni-on-danger:#ffffff; --omni-on-info:#ffffff; --omni-on-running:#ffffff;
  --omni-deco-magenta:#a30050; --omni-deco-indigo:#2a00c8; --omni-deco-aqua:#006655; --omni-deco-sky:#00568f; --omni-deco-yellow:#5c4b00;
  --omni-signal-line:linear-gradient(90deg,#a30050 0 20%,#2a00c8 20% 40%,#006655 40% 60%,#00568f 60% 80%,#5c4b00 80% 100%);
  --omni-signal-line-v:linear-gradient(180deg,#a30050 0 20%,#2a00c8 20% 40%,#006655 40% 60%,#00568f 60% 80%,#5c4b00 80% 100%);
  --omni-brand-plate:#fff; --omni-brand-plate-line:transparent;
  --omni-body-art:#fff; --omni-sidebar-art:#fff; --omni-grid-color:transparent;
  --omni-nav-tone:#000; --omni-nav-tone-rgb:0,0,0;
}
html[data-theme="goossens"][data-variant="contrast"][data-plate="hairline"] {
  --omni-brand-plate-line:#000;
}
html[data-theme="goossens"][data-variant="contrast"][data-status="mono"] {
  --omni-success:#000; --omni-warning:#1a1a1a; --omni-danger:#000; --omni-info:#1a1a1a; --omni-violet:#000;
  --omni-success-stop:#000; --omni-warning-stop:#1a1a1a; --omni-danger-stop:#000; --omni-info-stop:#1a1a1a;
  --omni-running:#1a1a1a; --omni-running-stop:#1a1a1a; --omni-delta-up:#000; --omni-delta-down:#000; --omni-on-delta-up:#fff; --omni-on-delta-down:#fff;
  --omni-deco-magenta:#000; --omni-deco-indigo:#1a1a1a; --omni-deco-aqua:#000; --omni-deco-sky:#1a1a1a; --omni-deco-yellow:#000;
  --omni-signal-line:linear-gradient(90deg,#000 0 20%,#1a1a1a 20% 40%,#000 40% 60%,#1a1a1a 60% 80%,#000 80% 100%);
  --omni-signal-line-v:linear-gradient(180deg,#000 0 20%,#1a1a1a 20% 40%,#000 40% 60%,#1a1a1a 60% 80%,#000 80% 100%);
}
/* sidebar switch: an ink cockpit under a paper page (the deck.css goossens
   block re-points the hairline/surface tokens inside .deck-sidebar). */
html[data-theme="goossens"][data-sidebar="ink"] {
  --omni-sidebar-bg:#0a0a0a; --omni-sidebar-surface:#161616; --omni-sidebar-ink:#f5f5f5; --omni-sidebar-muted:#a3a3a3; --omni-sidebar-art:#0a0a0a;
  --omni-brand-plate:#ffffff; --omni-brand-plate-line:transparent;
  --omni-nav-tone:#f5f5f5; --omni-nav-tone-rgb:245,245,245;
}
html[data-theme="goossens"][data-sidebar="ink"][data-plate="hairline"] {
  --omni-brand-plate-line:#2a2a2a;
}
/* accent: one of the five signal stops (indigo = the theme value) or a custom
   colour written by deck-theme.js as --omni-secondary-user. It drives
   --omni-secondary: links on secondary actions, the focus ring, the indigo
   nav stop and the secondary tint. */
html[data-theme="goossens"][data-accent="magenta"] { --omni-secondary-theme:#ff2383; }
html[data-theme="goossens"][data-accent="aqua"] { --omni-secondary-theme:#00efcb; }
html[data-theme="goossens"][data-accent="sky"] { --omni-secondary-theme:#1cb3ff; }
html[data-theme="goossens"][data-accent="yellow"] { --omni-secondary-theme:#f7ce00; }
/* primary: ink (default) or the accent for primary buttons. Light accents
   (aqua, yellow) keep ink text on the button. */
html[data-theme="goossens"][data-primary="accent"] { --omni-primary-theme:var(--omni-secondary); --omni-on-primary:#fff; }
html[data-theme="goossens"][data-primary="accent"][data-accent="aqua"],
html[data-theme="goossens"][data-primary="accent"][data-accent="yellow"] { --omni-on-primary:#0a0a0a; }

/* Accessibility variant: black canvas, white ink, yellow action, 2px lines,
   no translucency or soft shadows. Not a Deck preset; any page may offer it. */
html[data-theme="omni-contrast"] {
  color-scheme:dark;
  --omni-primary-theme:#ffd400; --omni-secondary-theme:#00e5ff;
  --omni-canvas:#000; --omni-canvas-strong:#000;
  --omni-surface:#000; --omni-surface-raised:#000; --omni-surface-soft:#111; --omni-surface-sunken:#1a1a1a;
  --omni-ink:#fff; --omni-ink-strong:#fff; --omni-muted:#f0f0f0; --omni-faint:#d6d6d6;
  --omni-line:#fff; --omni-line-strong:#fff;
  --omni-sidebar-bg:#000; --omni-sidebar-surface:#1a1a1a; --omni-sidebar-ink:#fff; --omni-sidebar-muted:#f0f0f0;
  --omni-shadow-sm:none; --omni-shadow:none; --omni-shadow-lg:none;
  --omni-radius-theme:12px; --omni-density-theme:1; --omni-blur:0px; --omni-border-width:2px;
  --omni-success:#00e676; --omni-warning:#ffd400; --omni-danger:#ff6b6b; --omni-info:#7fdbff; --omni-violet:#d0b3ff;
  --omni-on-primary:#000; --omni-focus:#ffd400;
  --omni-body-art:#000; --omni-sidebar-art:#000; --omni-grid-color:transparent;
}

/* Motion & effects (1.3.0, Owner 2026-10-21: "pekné animácie, hovery, pohyby —
   minimalizmus, ale moderný"). Two switches combine:
     html[data-effects="0|1|2|3"]  taste — off · subtle · balanced (default) · rich
     html[data-motion="system|calm|off"]  accessibility — system follows the OS,
                                   calm caps the taste at level 1, off (or the
                                   legacy "reduced") forces level 0
     @media (prefers-reduced-motion: reduce)  forces level 0 whatever is set
   Every animation and transition in omni-components.css and the Deck reads
   these tokens only, so one level change re-tunes the whole surface and level
   0 is a true "nothing moves". Durations never exceed 420 ms; transforms and
   opacity only. */
:root {
  --omni-effects-level: 2;
  --omni-motion-fast: 160ms;
  --omni-motion-base: 200ms;
  --omni-motion-slow: 240ms;
  --omni-ease-out: cubic-bezier(.16,1,.3,1);
  --omni-ease-in-out: cubic-bezier(.65,0,.35,1);
  --omni-ease-spring: cubic-bezier(.16,1,.3,1);
  --omni-hover-lift: -2px;
  --omni-hover-scale: 1;
  --omni-hover-nudge: 2px;
  --omni-hover-tilt: 0deg;
  --omni-press-scale: .98;
  --omni-reveal-distance: 8px;
  --omni-reveal-stagger: 40ms;
  --omni-glow: 0 0 0 0 transparent;
  --omni-underline-sweep: 1;
  --omni-draw-in: 0;
  --omni-loop-duration: 2.4s;
  /* Signal glow (goossens vivid fills): a ring and a soft bloom in the fill's
     own colour — `box-shadow:0 0 0 var(--omni-signal-glow-ring) <stop>,
     0 0 var(--omni-signal-glow-bloom) -2px <stop>`. Scaled by the effects
     level: none at 0, a ring at 1, ring + bloom at 2, wider bloom at 3. */
  --omni-signal-glow-ring: 1px;
  --omni-signal-glow-bloom: 14px;
}
html[data-effects="0"] {
  --omni-effects-level: 0;
  --omni-motion-fast: 0ms; --omni-motion-base: 0ms; --omni-motion-slow: 0ms;
  --omni-ease-out: linear; --omni-ease-in-out: linear; --omni-ease-spring: linear;
  --omni-hover-lift: 0px; --omni-hover-scale: 1; --omni-hover-nudge: 0px; --omni-hover-tilt: 0deg; --omni-press-scale: 1;
  --omni-reveal-distance: 0px; --omni-reveal-stagger: 0ms;
  --omni-glow: 0 0 0 0 transparent; --omni-underline-sweep: 0; --omni-draw-in: 0; --omni-loop-duration: 0s;
  --omni-signal-glow-ring: 0px; --omni-signal-glow-bloom: 0px;
}
html[data-effects="1"] {
  --omni-effects-level: 1;
  --omni-motion-fast: 120ms; --omni-motion-base: 120ms; --omni-motion-slow: 120ms;
  --omni-ease-out: ease-out; --omni-ease-in-out: ease-in-out; --omni-ease-spring: ease-out;
  --omni-hover-lift: 0px; --omni-hover-scale: 1; --omni-hover-nudge: 0px; --omni-hover-tilt: 0deg; --omni-press-scale: 1;
  --omni-reveal-distance: 0px; --omni-reveal-stagger: 0ms;
  --omni-glow: 0 0 0 0 transparent; --omni-underline-sweep: 0; --omni-draw-in: 0; --omni-loop-duration: 0s;
  --omni-signal-glow-ring: 1px; --omni-signal-glow-bloom: 0px;
}
html[data-effects="3"] {
  --omni-effects-level: 3;
  --omni-motion-fast: 260ms; --omni-motion-base: 320ms; --omni-motion-slow: 420ms;
  --omni-ease-out: cubic-bezier(.16,1,.3,1); --omni-ease-in-out: cubic-bezier(.65,0,.35,1); --omni-ease-spring: cubic-bezier(.34,1.56,.64,1);
  --omni-hover-lift: -4px; --omni-hover-scale: 1.01; --omni-hover-nudge: 3px; --omni-hover-tilt: -4deg; --omni-press-scale: .97;
  --omni-reveal-distance: 12px; --omni-reveal-stagger: 60ms;
  --omni-glow: 0 0 0 1px color-mix(in srgb,var(--omni-ink) 14%,transparent), 0 14px 34px -18px color-mix(in srgb,var(--omni-ink) 36%,transparent);
  --omni-underline-sweep: 1; --omni-draw-in: 1; --omni-loop-duration: 1.8s;
  --omni-signal-glow-ring: 1px; --omni-signal-glow-bloom: 22px;
}
/* calm: level 1 at most (fades only), whatever the taste says. */
html[data-motion="calm"]:not([data-effects="0"]) {
  --omni-effects-level: 1;
  --omni-motion-fast: 120ms; --omni-motion-base: 120ms; --omni-motion-slow: 120ms;
  --omni-ease-out: ease-out; --omni-ease-in-out: ease-in-out; --omni-ease-spring: ease-out;
  --omni-hover-lift: 0px; --omni-hover-scale: 1; --omni-hover-nudge: 0px; --omni-hover-tilt: 0deg; --omni-press-scale: 1;
  --omni-reveal-distance: 0px; --omni-reveal-stagger: 0ms;
  --omni-glow: 0 0 0 0 transparent; --omni-underline-sweep: 0; --omni-draw-in: 0; --omni-loop-duration: 0s;
  --omni-signal-glow-ring: 1px; --omni-signal-glow-bloom: 0px;
}
/* off / reduced / OS preference: level 0, and every leftover animation is cut. */
html[data-motion="off"], html[data-motion="reduced"] {
  --omni-effects-level: 0;
  --omni-motion-fast: 0ms; --omni-motion-base: 0ms; --omni-motion-slow: 0ms;
  --omni-ease-out: linear; --omni-ease-in-out: linear; --omni-ease-spring: linear;
  --omni-hover-lift: 0px; --omni-hover-scale: 1; --omni-hover-nudge: 0px; --omni-hover-tilt: 0deg; --omni-press-scale: 1;
  --omni-reveal-distance: 0px; --omni-reveal-stagger: 0ms;
  --omni-glow: 0 0 0 0 transparent; --omni-underline-sweep: 0; --omni-draw-in: 0; --omni-loop-duration: 0s;
  --omni-signal-glow-ring: 0px; --omni-signal-glow-bloom: 0px;
}
html[data-motion="off"] *, html[data-motion="off"] *::before, html[data-motion="off"] *::after,
html[data-motion="reduced"] *, html[data-motion="reduced"] *::before, html[data-motion="reduced"] *::after {
  scroll-behavior:auto!important; animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important;
}

/* The calm rule above is (0,2,1); the list here repeats it so the OS
   preference wins by source order instead of losing on specificity. */
@media (prefers-reduced-motion: reduce) {
  :root, html[data-effects], html[data-motion], html[data-motion="calm"]:not([data-effects="0"]) {
    --omni-effects-level: 0;
    --omni-motion-fast: 0ms; --omni-motion-base: 0ms; --omni-motion-slow: 0ms;
    --omni-ease-out: linear; --omni-ease-in-out: linear; --omni-ease-spring: linear;
    --omni-hover-lift: 0px; --omni-hover-scale: 1; --omni-hover-nudge: 0px; --omni-hover-tilt: 0deg; --omni-press-scale: 1;
    --omni-reveal-distance: 0px; --omni-reveal-stagger: 0ms;
    --omni-glow: 0 0 0 0 transparent; --omni-underline-sweep: 0; --omni-draw-in: 0; --omni-loop-duration: 0s;
    --omni-signal-glow-ring: 0px; --omni-signal-glow-bloom: 0px;
  }
}
