/* SPDX-License-Identifier: LicenseRef-Airbus-Proprietary */
:root{
--navy:#00205B;--navy-700:#001a49;--navy-900:#0a1430;--navy-50:#eef2f9;--navy-100:#dde5f2;
--accent:#1763d6;--accent2:#10b981;--accent2-700:#0c8f66;--ink:#0f1b2d;--muted:#5b6b82;--line:#e3e9f2;--bg:#ffffff;--bg-soft:#f6f8fc;
--ok:#1f9d6b;--warn:#8a5200;--danger:#d4380d;--info:#167dde;
--radius:4px;--radius-lg:8px;--maxw:1140px;
/* --grad: flat, intentionally. The header bar went from navy to the theme blue;
   it now carries the same blue throughout. The variable name remains: three surfaces
   use it, and renaming it for a temporary adjustment would make more noise than good. */
--grad:#00205B;
--shadow-sm:0 1px 3px rgba(15,27,45,.07);--shadow:0 8px 28px rgba(15,27,45,.12);--shadow-lg:0 24px 60px rgba(15,27,45,.18);
--font:'Manrope','Segoe UI',system-ui,-apple-system,Roboto,sans-serif;

/* THE COLOURS OF THE PORTAL, NAMED (NEED-331).
   The sheets carried 159 colours as literals, 142 of which no token declared.
   The BRAND gate was blind to all of them while the CSS lived in Go constants
   and measured them the day NEED-330 turned it into files. They are here now,
   grouped by hue and graded by lightness.

   TWO COLOURS THE EYE CANNOT TELL APART SHARE ONE TOKEN. The fold runs at
   deltaE2000 < 2 — below what a human distinguishes, even side by side — which
   is what takes 159 colours down to 101 tokens without moving a pixel anyone
   can see. The widest step taken is 1.90. Anything visibly different stayed
   different: the twenty-four ambers below are twenty-four because they really
   are, not because four screens each invented their own.

   THESE NAMES SAY A HUE, NOT A ROLE. The semantic tokens above — --ok, --warn,
   --danger — remain the way in, and a rule should reach for one of those first.
   Come down here only for a shade no role covers. The reduction of these scales
   is a design decision and is deliberately not taken here: this step names what
   the portal paints, it does not repaint it.

   EVERY LINE ENDS WITH A SEMICOLON (NEED-387). A line break is only white
   space: without the `;` the last shade of a hue swallowed the first of the
   next one, and `--amber-25`, `--green-25`, `--accent-rgb`, `--font-mono`...
   were never defined. css_custom_properties_test.go reads the served sheet. */
/* red */
--red-25:#fdecea;--red-100:#fde8e2;--red-175:#f0cfc6;--red-250:#f3c9bd;--red-325:#f3b4ab;--red-400:#e7b3ab;--red-500:#d64545;--red-575:#c0392b;--red-650:#c23434;--red-725:#b02c09;--red-800:#a13b2c;--red-875:#a32c08;--red-950:#8c2f22;
/* amber */
--amber-25:#fff8f0;--amber-75:#fdf3e3;--amber-100:#fdeede;--amber-150:#f0dcb6;--amber-175:#f0d3a0;--amber-225:#f7c977;--amber-275:#f0c9a0;--amber-300:#e0b184;--amber-350:#f0a83c;--amber-375:#e2a300;--amber-425:#eb6834;--amber-475:#b8860b;--amber-500:#c07f00;--amber-550:#e8590c;--amber-600:#b8720b;--amber-625:#a87900;--amber-675:#c2681a;--amber-700:#b0620f;--amber-750:#a1620d;--amber-800:#b45309;--amber-825:#8a5a08;--amber-875:#8a4b0f;--amber-900:#7a5310;--amber-950:#3a2600;
/* yellow */
--yellow-25:#fff3cd;--yellow-500:#f3e2a0;--yellow-950:#8a6d00;
/* green */
--green-25:#dcfce7;--green-100:#e6f6ee;--green-150:#c6e8d8;--green-225:#cbe3cd;--green-300:#b7e2c6;--green-350:#34e3b0;--green-425:#7fd1a8;--green-500:#13b667;--green-550:#1baf7a;--green-625:#1a7f4e;--green-675:#15803d;--green-750:#047857;--green-825:#136c47;--green-875:#1e6b3a;--green-950:#256029;
/* cyan */
--cyan-25:#eef8fb;--cyan-500:#b6dde5;--cyan-950:#0e7490;
/* blue */
--blue-25:#e8f0ff;--blue-50:#c7d9f8;--blue-100:#cfd8e6;--blue-125:#c9d6ee;--blue-150:#c3cede;--blue-200:#b9c9e2;--blue-225:#aebdda;--blue-275:#aeb7c9;--blue-300:#96b5e1;--blue-325:#9fb3d6;--blue-375:#7fb0ff;--blue-400:#97a2b8;--blue-425:#7099d4;--blue-475:#7e8aa0;--blue-500:#3d86f0;--blue-550:#4d7ec5;--blue-575:#3574d4;--blue-600:#3363ab;--blue-650:#44566f;--blue-675:#1d4e9e;--blue-700:#1e4a86;--blue-750:#0a3a8c;--blue-775:#2c3a52;--blue-825:#15366f;--blue-850:#0a2152;--blue-875:#102040;--blue-925:#001536;--blue-950:#0a1428;
/* violet */
--violet-25:#f5f0ff;--violet-150:#eee7fb;--violet-250:#ddd0f7;--violet-375:#c7b6ec;--violet-500:#7c3aed;--violet-600:#6d28d9;--violet-725:#5b35c8;--violet-825:#5b3fa8;--violet-950:#5b21b6;
/* grey */
--grey-25:#fff9f7;--grey-200:#fbf8ff;--grey-400:#eef6ee;--grey-575:#808080;--grey-775:#5b5f6a;--grey-950:#000000;
/* The same colours as components, for the translucent uses: `rgba()` takes
   three numbers and cannot read a hexadecimal token. Only the bases actually
   used with an alpha are listed — a companion for every token would be fifteen
   useful lines and a hundred dead ones. */
--accent-rgb:23,99,214;--accent2-rgb:16,185,129;--amber-625-rgb:168,121,0;--amber-950-rgb:58,38,0;--bg-rgb:255,255,255;--blue-875-rgb:16,32,64;--blue-950-rgb:10,20,40;--green-350-rgb:52,227,176;--green-500-rgb:19,182,103;--grey-575-rgb:128,128,128;--grey-775-rgb:91,95,106;--grey-950-rgb:0,0,0;--ink-rgb:15,27,45;--navy-rgb:0,32,91;--red-500-rgb:214,69,69;
/* The monospace stack, written once. Four sheets spelled it out; the BRAND gate
   read `SFMono-Regular` as an off-brand typeface each time, which it is not —
   it is the second rung of a fallback ladder. A custom property is not a
   `font-family`, so the gate lets it be, and the ladder is stated in one place. */
--font-mono:ui-monospace,SFMono-Regular,Menlo,monospace;
/* THE CONSOLES' CONTROL SIZE (NEED-387): one size for every field, select and
   console button, set once. hub/console.css applies it. */
--ctl-fs:.82rem;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
/* Glyphs placed at their exact advance (NEED-408). On a 1x screen Chromium
   rounds each advance of the hinted Manrope to a whole pixel, and at the kit's
   small sizes with letter-spacing the error gathered on one joint: table
   headings read "AT TEMPTS" and "ST ATUS", the rail "Operat ions". */
body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision}
img,svg{vertical-align:middle}
h1,h2,h3,h4{line-height:1.18;color:var(--navy);margin:0 0 .5em;font-weight:700;letter-spacing:-.012em}
h1{font-size:clamp(2rem,4.4vw,3.1rem)}
h2{font-size:clamp(1.5rem,2.8vw,2.1rem)}
h3{font-size:1.18rem}
p{margin:0 0 1em}
a{color:var(--navy);text-decoration:none}
ul{margin:0 0 1em;padding-left:1.1em}
.muted{color:var(--muted)}
.aoilist{display:flex;flex-direction:column;gap:8px}
.aoirow{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:6px;padding:10px 14px;background:var(--bg)}
.aoirow:hover{border-color:var(--navy)}
.aoimeta{display:flex;flex-direction:column;gap:2px;min-width:0}
.aoimeta b{color:var(--navy)}
.aoimeta .muted{font-size:.82rem}
.aoiact{display:flex;gap:6px;flex-shrink:0}
.aoiact .btn{padding:7px 11px;font-size:.85rem}
.container{max-width:var(--maxw);margin:0 auto;padding:0 24px;width:100%}
.section{padding:76px 0}
.section.alt{background:var(--bg-soft)}
.section-head{max-width:680px;margin:0 auto 44px;text-align:center}
/* A SECTION HEADER OUTSIDE THE HOME PAGE (NEED-340). The rule above centers,
because it is written for the home and public pages; every admin screen
contradicted it with an inline `style=`, sixteen times. Same specificity as the
rule it modifies: it is the order that decides, and it is written here, just
below. */
.section-head.flush{text-align:left}
.section-head.flush>h1,.section-head.flush>h2,.section-head.flush>h3,.section-head.flush>h4{margin:0}
.section-head.flush>p{margin:.3rem 0 0}
.lead{font-size:1.18rem;color:var(--muted)}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;border-radius:999px;padding:3px 9px}
