/* ==================================================================================================================
   CASPIAN DESIGN TOKENS - the ONE place that defines a colour, a size, a radius, a font or a shadow (appearance unification, owner 4/11/2026).
   Change a decision here and the whole system follows: components (static/caspian-ui.css) and the compatibility layer (static/ui/compat.css)
   read these names only. Light is the default; dark applies only on an explicit data-theme="dark" (no theme switch yet, no dark panels on content).
   Fonts are self-hosted (no Google Fonts). The reference kit's palette (#0b63e5) and fonts are a later owner decision: try them by changing
   --brand* here (one line) after the unification.
   ================================================================================================================== */
@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/inter-latin-ext-400-normal.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/inter-latin-400-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Noto Sans Arabic";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/noto-sans-arabic-arabic-400-normal.woff2") format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}
@font-face{font-family:"Inter";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/inter-latin-ext-500-normal.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/inter-latin-500-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Noto Sans Arabic";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/noto-sans-arabic-arabic-500-normal.woff2") format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}
@font-face{font-family:"Inter";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/inter-latin-ext-600-normal.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/inter-latin-600-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Noto Sans Arabic";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/noto-sans-arabic-arabic-600-normal.woff2") format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}
@font-face{font-family:"Inter";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/inter-latin-ext-700-normal.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/inter-latin-700-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Noto Sans Arabic";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/noto-sans-arabic-arabic-700-normal.woff2") format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}

:root{
  --bg:#e9edf3; --surface:#ffffff; --surface-2:#f4f6f9; --surface-3:#eceff4;
  --fg:var(--t1); --muted:var(--t3); --faint:var(--t3);   /* V245: text has three colours only (--t1 / --t2 / --t3, static/ui/caspian-standard.css); the old names read them, nothing is lighter than --t3 */
  --line:#d3dae4; --line-2:#e6eaf0;
  --brand:#0b4fd6; --brand-hover:#0943b6; --brand-active:#083a9e; --brand-fg:#ffffff; --brand-soft:#e8effc; --brand-ring:rgba(11,79,214,.22);
  --ok:var(--g-fg); --ok-soft:var(--g-bg); --warn:var(--a-fg); --warn-soft:var(--a-bg); --bad:var(--bad-k); --bad-soft:var(--r-bg); --info:var(--b-fg); --info-soft:var(--b-bg);   /* V245: the status inks and tints are the chip colours of the standard */
  --r-ctl:8px; --r-card:12px; --r-hero:14px;
  --shadow-1:0 1px 2px rgba(15,23,41,.06); --shadow-2:0 1px 2px rgba(15,23,41,.05),0 10px 28px -14px rgba(15,23,41,.22);
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px;
  --ctl-h:28px; --ctl-h-lg:32px; --ctl-h-sm:26px; --tab-h:32px; --row-h:44px;   /* V235 (owner 7/11): inputs, selects and buttons 28px in forms, 26px in tables; only the page's main primary button 32px */
  --font:"Noto Sans Arabic","Inter",system-ui,sans-serif; --mono:"Inter","Noto Sans Arabic",system-ui,sans-serif;   /* V245 (owner 11/11): Inter + Noto Sans Arabic; --mono stays as a NAME for document numbers but is Inter with tabular figures (no monospace in the UI) */
  --t-badge:11.5px; --t-page:22px; --t-lead:18px; --t-section:15px; --t-body:14px; --t-small:13px; --t-micro:12px;   /* the ONE type scale: nothing on screen is below --t-micro (12px) */
}
:root[dir="ltr"]{--font:"Inter","Noto Sans Arabic",system-ui,sans-serif}
:root[data-theme="dark"]{--bg:#0c1220;--surface:#141b2b;--surface-2:#192234;--surface-3:#1f2a3f;--line:#273146;--line-2:#1f2838;--brand:#6a9af5;--brand-hover:#86adf7;--brand-active:#5b8ef0;--brand-fg:#0b1324;--brand-soft:#1b2a47;--brand-ring:rgba(106,154,245,.3);--shadow-1:none;--shadow-2:none;color-scheme:dark}
/* layout sizes and interaction values the kit does not define (the shell and the panel need them) */
/* the state inks again under names no stylesheet redefines (the workspace sheet shadows --ok / --warn / --bad inside .wk with references to themselves): a scope that needs the real ones reads these */
:root{--ok-ink:var(--ok); --warn-ink:var(--warn); --bad-ink:var(--bad)}
:root{--sidebar-w:var(--cds-sidebar-w,264px);--header-h:60px;--panel-w:min(520px,90vw);--focus-ring:0 0 0 4px var(--brand-ring);--motion:150ms}
/* form controls carry a darker border than cards and rules (3:1 against the surface): one token for every field, button outline and tab rule */
:root{--control-line:#8593a6}
:root[data-theme="dark"]{--control-line:#56627a}
/* icons (Lucide, self-hosted: static/ui/icons): one size, one stroke */
:root{--icon:20px; --icon-sm:16px; --icon-sw:1.65}
/* density: compact is the default (44px rows); the toggle on a table switches to comfortable */
:root{--row-h-comfort:52px; --scrim:rgba(15,23,41,.38); --on-dark:#ffffff; --hairline-on-brand:rgba(255,255,255,.12); --shadow-dock:rgba(15,23,41,.25)}

/* ==================================================================================================================
   MODULE COLOURS (owner 6/11/2026, option B "Module colours"): the five modules of the system, each a SOLID colour (icon strokes, tiles, edges, the dot
   before a group label), a SOFT background (derived: 13% of the solid over white) and an INK (the solid, darkened only as far as needed so text and a white
   button label reach WCAG AA 4.5:1 on the soft background and on white). The Appearance page (Settings) overrides these names from the database; nothing else
   in the system names a module colour. A page's module is its <main data-module> (v230_appearance.NAV is the ONE route table).
   Status colours (ok / warn / bad / info + soft) are defined above. Contrast of every pair: docs/ui-baseline/module-colours.md (tools/ui/contrast_check.py).
   ================================================================================================================== */
:root{
  --m-ops:#0b4fd6;  --m-ops-s:#e8efff;  --m-ops-ink:#0b4fd6;
  --m-doc:#6d4fd8;  --m-doc-s:#f0ecff;  --m-doc-ink:#6d4fd8;
  --m-com:#c26a0a;  --m-com-s:#fff1e0;  --m-com-ink:#a75b09;
  --m-fin:#0f8a5f;  --m-fin-s:#e2f5ec;  --m-fin-ink:#0e7c56;
  --m-mgmt:#0e7f8c; --m-mgmt-s:#e0f4f6; --m-mgmt-ink:#0d7985;
  --m-sys:#5d6b7e; --m-sys-s:#eceff3; --m-sys-ink:#46546a;
  --m:var(--m-ops); --m-s:var(--m-ops-s); --m-ink:var(--m-ops-ink);
  --shadow-lift:0 10px 28px -12px rgba(15,23,41,.22);
}
main[data-module="ops"]{--m:var(--m-ops);--m-s:var(--m-ops-s);--m-ink:var(--m-ops-ink)}
main[data-module="doc"]{--m:var(--m-doc);--m-s:var(--m-doc-s);--m-ink:var(--m-doc-ink)}
main[data-module="com"]{--m:var(--m-com);--m-s:var(--m-com-s);--m-ink:var(--m-com-ink)}
main[data-module="fin"]{--m:var(--m-fin);--m-s:var(--m-fin-s);--m-ink:var(--m-fin-ink)}
main[data-module="mgmt"]{--m:var(--m-mgmt);--m-s:var(--m-mgmt-s);--m-ink:var(--m-mgmt-ink)}
main[data-module="sys"]{--m:var(--m-sys);--m-s:var(--m-sys-s);--m-ink:var(--m-sys-ink)}
/* the same names for any element that declares its module (the sidebar items and group labels, a card on another module's page) */
[data-mod="ops"]{--m:var(--m-ops);--m-s:var(--m-ops-s);--m-ink:var(--m-ops-ink)}
[data-mod="doc"]{--m:var(--m-doc);--m-s:var(--m-doc-s);--m-ink:var(--m-doc-ink)}
[data-mod="com"]{--m:var(--m-com);--m-s:var(--m-com-s);--m-ink:var(--m-com-ink)}
[data-mod="fin"]{--m:var(--m-fin);--m-s:var(--m-fin-s);--m-ink:var(--m-fin-ink)}
[data-mod="mgmt"]{--m:var(--m-mgmt);--m-s:var(--m-mgmt-s);--m-ink:var(--m-mgmt-ink)}
[data-mod="sys"]{--m:var(--m-sys);--m-s:var(--m-sys-s);--m-ink:var(--m-sys-ink)}
/* dark theme (only on an explicit data-theme="dark"): lighter solids over dark softs */
:root[data-theme="dark"]{--m-ops:#7aa3ff;--m-ops-s:#17223a;--m-ops-ink:#7aa3ff;--m-doc:#a995ff;--m-doc-s:#231d3d;--m-doc-ink:#a995ff;--m-com:#f0a34d;--m-com-s:#2c2010;--m-com-ink:#f0a34d;--m-fin:#52c48f;--m-fin-s:#13281d;--m-fin-ink:#52c48f;--m-mgmt:#4fc6d2;--m-mgmt-s:#102a2d;--m-mgmt-ink:#4fc6d2;--shadow-lift:0 10px 28px -12px rgba(0,0,0,.6);--m-sys:#9aa7ba;--m-sys-s:#222831;--m-sys-ink:#aab5c6}
