/*
 * os/tokens.css — AgudaOS "Pulse" tokens (docs/design/agudaos/BRAND.md §3, brand/pulse/tokens.css verbatim below,
 * then the BRAND §3.6 additions and the build-level derived tokens). Light on bare :root, dark twice (system + forced).
 * Loaded AFTER /static/shared/ui.css and admin.css so the Pulse values win at :root; os/bridge.css maps the classic
 * panel variables onto these inside windows (--focus, --ink and --paper mean different things in the two systems).
 *
 * Fonts: Heebo (variable), Secular One, Martian Mono (variable) — woff2 subsets from the @fontsource npm packages,
 * served from 'self' (the admin CSP allows fonts from 'self' only). Licences: os/fonts/OFL-*.txt (SIL OFL 1.1).
 */
@font-face { font-family: 'Heebo'; font-style: normal; font-display: swap; font-weight: 100 900;
  src: url('./fonts/heebo-hebrew.woff2') format('woff2-variations'), url('./fonts/heebo-hebrew.woff2') format('woff2');
  unicode-range: U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F; }
@font-face { font-family: 'Heebo'; font-style: normal; font-display: swap; font-weight: 100 900;
  src: url('./fonts/heebo-latin.woff2') format('woff2-variations'), url('./fonts/heebo-latin.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: 'Secular One'; font-style: normal; font-display: swap; font-weight: 400;
  src: url('./fonts/secular-one-hebrew.woff2') format('woff2');
  unicode-range: U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F; }
@font-face { font-family: 'Secular One'; font-style: normal; font-display: swap; font-weight: 400;
  src: url('./fonts/secular-one-latin.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: 'Martian Mono'; font-style: normal; font-display: swap; font-weight: 100 800; font-stretch: 75% 112.5%;
  src: url('./fonts/martian-mono-latin.woff2') format('woff2-variations'), url('./fonts/martian-mono-latin.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; }

/* ======================= brand/pulse/tokens.css (canonical, verbatim) ======================= */
/* AgudaOS · Pulse · OS chrome tokens (light on :root, dark twice: system + forced) */
:root{
  /* brand primitives (theme-independent) */
  --ultra:#4D38EF;
  --ultra-600:#3F2BDB;
  --ultra-700:#3422BF;
  --ultra-300:#A09CFF;
  --ultra-100:#E7E5FF;
  --volt:#D0FF48;
  --volt-600:#B8EA2C;
  --ink:#0E0D1E;
  --paper:#F9FAFE;
  /* semantic · light */
  --bg:#EFEFF9;
  --surface:#FDFDFF;
  --surface-2:#F5F5FC;
  --surface-3:#EBECF6;
  --line:#DEDEEA;
  --line-strong:#C5C6D5;
  --text:#161526;
  --text-2:#45455A;
  --text-3:#616174;
  --accent:#4D38EF;
  --accent-hover:#3F2BDB;
  --accent-press:#3422BF;
  --on-accent:#FFFFFF;
  --accent-tint:rgba(77,56,239,.10);
  --pulse:#D0FF48;
  --on-pulse:#0E0D1E;
  --pulse-ink:#53760E;
  --focus:#4D38EF;
  --success:#008246;
  --on-success:#FFFFFF;
  --success-tint:rgba(0,130,70,.10);
  --warning:#A96000;
  --on-warning:#FFFFFF;
  --warning-tint:rgba(169,96,0,.10);
  --danger:#D01B2D;
  --on-danger:#FFFFFF;
  --danger-tint:rgba(208,27,45,.09);
  --info:#006FBD;
  --on-info:#FFFFFF;
  --info-tint:rgba(0,111,189,.09);
  --hover:rgba(22,21,38,.05);
  --press:rgba(22,21,38,.09);
  --scrim:rgba(14,13,30,.40);
  --win:#FDFDFF;
  --win-bar:#FDFDFF;
  --win-stroke:rgba(22,21,38,.13);
  --win-stroke-off:rgba(22,21,38,.08);
  --win-shadow:0 28px 64px -22px rgba(40,24,140,.38), 0 10px 22px -10px rgba(14,13,30,.20);
  --win-shadow-off:0 14px 34px -20px rgba(40,24,140,.26), 0 3px 8px -4px rgba(14,13,30,.10);
  --win-veil:rgba(239,239,249,.34);
  --cap-ink:#45455A;
  --cap-hover:rgba(22,21,38,.07);
  --cap-press:rgba(22,21,38,.13);
  --cap-close:#D4202F;
  --cap-close-press:#AE1623;
  --on-cap-close:#FFFFFF;
  --menubar:rgba(249,250,254,.74);
  --menubar-solid:#F3F3FB;
  --dock:rgba(253,253,255,.76);
  --dock-solid:#FBFBFF;
  --bar-stroke:rgba(22,21,38,.09);
  --bar-hi:rgba(255,255,255,.85);
  --bar-shadow:0 18px 40px -16px rgba(40,24,140,.34);
  --flyout:#FDFDFF;
  --flyout-shadow:0 22px 50px -18px rgba(40,24,140,.40), 0 4px 12px -6px rgba(14,13,30,.16);
  --widget:rgba(253,253,255,.88);
  --widget-stroke:rgba(22,21,38,.07);
  --tooltip:#0E0D1E;
  --on-tooltip:#F3F3F9;
  --snap-ghost:rgba(77,56,239,.12);
  --wp-1:#F4F3FC;
  --wp-2:#E5E3F6;
  --wp-wave:#4D38EF;
  --wp-crest:#4D38EF;
  --wp-haze:rgba(208,255,72,.42);
  --wp-dot:rgba(22,21,38,.10);
  /* type, shape, material, motion */
  --font-display:'Secular One', 'Heebo', system-ui, sans-serif;
  --font-ui:'Heebo', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-mono:'Martian Mono', ui-monospace, 'SF Mono', Menlo, monospace;
  --r-xs:6px;
  --r-sm:10px;
  --r-md:14px;
  --r-win:14px;
  --r-lg:20px;
  --r-xl:26px;
  --r-pill:999px;
  --squircle:path('M48 0C85 0 96 11 96 48S85 96 48 96 0 85 0 48 11 0 48 0Z');
  --blur-bar:blur(20px) saturate(170%);
  --blur-panel:blur(28px) saturate(160%);
  --dur-1:120ms;
  --dur-2:180ms;
  --dur-3:280ms;
  --dur-4:420ms;
  --ease-out:cubic-bezier(.2,.8,.2,1);
  --ease-in:cubic-bezier(.4,0,1,1);
  --spring-pop:linear(0, .38 9%, .86 20%, 1.06 31%, 1.09 38%, 1.03 52%, .99 66%, 1);
  --spring-win:linear(0, .47 11%, .88 24%, 1.02 36%, 1.03 44%, 1 62%, 1);
  --menubar-h:34px;
  --dock-h:76px;
  --titlebar-h:44px;
  --cap-w:46px;
  /* tenant slot (per union; defaults shown = Ono) */
  --tenant-accent:#1C8A9E;
  --tenant-ink:#1A7F91;
  --tenant-on-accent:#0E0D1E;
  --tenant-wp-tint:192;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0B0A1A;
    --surface:#161526;
    --surface-2:#1F1E31;
    --surface-3:#29293C;
    --line:rgba(243,243,249,.10);
    --line-strong:#3E3D52;
    --text:#F3F3F9;
    --text-2:#BFBFCE;
    --text-3:#999AAB;
    --accent:#A09CFF;
    --accent-hover:#B6B3FF;
    --accent-press:#8C87FF;
    --on-accent:#0E0D1E;
    --accent-tint:rgba(160,156,255,.15);
    --pulse:#D0FF48;
    --on-pulse:#0E0D1E;
    --pulse-ink:#D0FF48;
    --focus:#D0FF48;
    --success:#56DB8F;
    --on-success:#0E0D1E;
    --success-tint:rgba(86,219,143,.14);
    --warning:#FCBE54;
    --on-warning:#0E0D1E;
    --warning-tint:rgba(252,190,84,.14);
    --danger:#FF7D7C;
    --on-danger:#0E0D1E;
    --danger-tint:rgba(255,125,124,.14);
    --info:#75C4FA;
    --on-info:#0E0D1E;
    --info-tint:rgba(117,196,250,.14);
    --hover:rgba(243,243,249,.06);
    --press:rgba(243,243,249,.11);
    --scrim:rgba(0,0,0,.58);
    --win:#161526;
    --win-bar:#1A192C;
    --win-stroke:rgba(243,243,249,.13);
    --win-stroke-off:rgba(243,243,249,.07);
    --win-shadow:0 32px 72px -20px rgba(0,0,0,.78), 0 10px 24px -10px rgba(0,0,0,.55);
    --win-shadow-off:0 16px 36px -20px rgba(0,0,0,.62), 0 3px 8px -4px rgba(0,0,0,.40);
    --win-veil:rgba(11,10,26,.34);
    --cap-ink:#BFBFCE;
    --cap-hover:rgba(243,243,249,.09);
    --cap-press:rgba(243,243,249,.15);
    --cap-close:#D4202F;
    --cap-close-press:#AE1623;
    --on-cap-close:#FFFFFF;
    --menubar:rgba(11,10,26,.64);
    --menubar-solid:#121124;
    --dock:rgba(26,25,44,.74);
    --dock-solid:#1A192C;
    --bar-stroke:rgba(243,243,249,.11);
    --bar-hi:rgba(255,255,255,.10);
    --bar-shadow:0 18px 40px -14px rgba(0,0,0,.66);
    --flyout:#211F35;
    --flyout-shadow:0 24px 56px -16px rgba(0,0,0,.80), 0 4px 12px -6px rgba(0,0,0,.5);
    --widget:rgba(22,21,38,.84);
    --widget-stroke:rgba(243,243,249,.08);
    --tooltip:#F3F3F9;
    --on-tooltip:#0E0D1E;
    --snap-ghost:rgba(160,156,255,.16);
    --wp-1:#0B0A1A;
    --wp-2:#15112F;
    --wp-wave:#8E86FF;
    --wp-crest:#D0FF48;
    --wp-haze:rgba(77,56,239,.42);
    --wp-dot:rgba(243,243,249,.07);
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#0B0A1A;
  --surface:#161526;
  --surface-2:#1F1E31;
  --surface-3:#29293C;
  --line:rgba(243,243,249,.10);
  --line-strong:#3E3D52;
  --text:#F3F3F9;
  --text-2:#BFBFCE;
  --text-3:#999AAB;
  --accent:#A09CFF;
  --accent-hover:#B6B3FF;
  --accent-press:#8C87FF;
  --on-accent:#0E0D1E;
  --accent-tint:rgba(160,156,255,.15);
  --pulse:#D0FF48;
  --on-pulse:#0E0D1E;
  --pulse-ink:#D0FF48;
  --focus:#D0FF48;
  --success:#56DB8F;
  --on-success:#0E0D1E;
  --success-tint:rgba(86,219,143,.14);
  --warning:#FCBE54;
  --on-warning:#0E0D1E;
  --warning-tint:rgba(252,190,84,.14);
  --danger:#FF7D7C;
  --on-danger:#0E0D1E;
  --danger-tint:rgba(255,125,124,.14);
  --info:#75C4FA;
  --on-info:#0E0D1E;
  --info-tint:rgba(117,196,250,.14);
  --hover:rgba(243,243,249,.06);
  --press:rgba(243,243,249,.11);
  --scrim:rgba(0,0,0,.58);
  --win:#161526;
  --win-bar:#1A192C;
  --win-stroke:rgba(243,243,249,.13);
  --win-stroke-off:rgba(243,243,249,.07);
  --win-shadow:0 32px 72px -20px rgba(0,0,0,.78), 0 10px 24px -10px rgba(0,0,0,.55);
  --win-shadow-off:0 16px 36px -20px rgba(0,0,0,.62), 0 3px 8px -4px rgba(0,0,0,.40);
  --win-veil:rgba(11,10,26,.34);
  --cap-ink:#BFBFCE;
  --cap-hover:rgba(243,243,249,.09);
  --cap-press:rgba(243,243,249,.15);
  --cap-close:#D4202F;
  --cap-close-press:#AE1623;
  --on-cap-close:#FFFFFF;
  --menubar:rgba(11,10,26,.64);
  --menubar-solid:#121124;
  --dock:rgba(26,25,44,.74);
  --dock-solid:#1A192C;
  --bar-stroke:rgba(243,243,249,.11);
  --bar-hi:rgba(255,255,255,.10);
  --bar-shadow:0 18px 40px -14px rgba(0,0,0,.66);
  --flyout:#211F35;
  --flyout-shadow:0 24px 56px -16px rgba(0,0,0,.80), 0 4px 12px -6px rgba(0,0,0,.5);
  --widget:rgba(22,21,38,.84);
  --widget-stroke:rgba(243,243,249,.08);
  --tooltip:#F3F3F9;
  --on-tooltip:#0E0D1E;
  --snap-ghost:rgba(160,156,255,.16);
  --wp-1:#0B0A1A;
  --wp-2:#15112F;
  --wp-wave:#8E86FF;
  --wp-crest:#D0FF48;
  --wp-haze:rgba(77,56,239,.42);
  --wp-dot:rgba(243,243,249,.07);
  color-scheme:dark;
}
/* Blur is allowed on the menu bar, the dock and ONE focused overlay. Everything else is solid. */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  :root{ --menubar:var(--menubar-solid); --dock:var(--dock-solid); }
}
@media (prefers-reduced-transparency: reduce){
  :root{ --menubar:var(--menubar-solid) !important; --dock:var(--dock-solid) !important; --blur-bar:none; --blur-panel:none; }
}

/* ======================= BRAND §3.6 additions + derived build tokens ======================= */
/* ------------------------------------------------------------------------
      BRAND.md §3.6 additions (mandatory) + build-level derived tokens.
   Light on bare :root, dark twice (system + forced), exactly like the canonical file above.
   --------------------------------------------------------------------------- */
:root{
  --control:#84849A;          /* input / checkbox / radio borders: 3.6:1 on surface (Commons graft) */
  --tenant-ink-dark:#2BA3B8;  /* derived per tenant for dark themes (Ono): 6.0:1 on dark surface */
  --font-ui:'Heebo','Noto Sans Arabic','Noto Sans Ethiopic','Noto Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --font-display:'Secular One','Heebo','Noto Sans Arabic',system-ui,sans-serif;
  --font-mono:'Martian Mono',ui-monospace,'SF Mono',Menlo,monospace;
  --tile-quiet:0;
  /* derived: panels (the ONE focused blurred surface), flyouts, overview */
  --panel:rgba(253,253,255,.84);
  --panel-solid:#FDFDFF;
  --panel-stroke:rgba(22,21,38,.10);
  --panel-shadow:0 30px 70px -24px rgba(40,24,140,.42),0 8px 20px -10px rgba(14,13,30,.18);
  --overview-dim:rgba(229,227,246,.62);
  --ink-ring:#0E0D1E;         /* Volt dots/badges on light surfaces get an Ink ring (BRAND §3.2) */
  --gap:#FBFBFF;
  --kiosk-bg:#0E0D1E;
  --tint-hover:rgba(77,56,239,.06);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --control:#72728A;
    --panel:rgba(26,25,44,.82);
    --panel-solid:#211F35;
    --panel-stroke:rgba(243,243,249,.10);
    --panel-shadow:0 30px 70px -20px rgba(0,0,0,.78),0 8px 20px -10px rgba(0,0,0,.5);
    --overview-dim:rgba(6,5,16,.62);
    --ink-ring:transparent;
    --gap:#1A192C;
    --tint-hover:rgba(160,156,255,.08);
  }
}
:root[data-theme="dark"]{
  --control:#72728A;
  --panel:rgba(26,25,44,.82);
  --panel-solid:#211F35;
  --panel-stroke:rgba(243,243,249,.10);
  --panel-shadow:0 30px 70px -20px rgba(0,0,0,.78),0 8px 20px -10px rgba(0,0,0,.5);
  --overview-dim:rgba(6,5,16,.62);
  --ink-ring:transparent;
  --gap:#1A192C;
  --tint-hover:rgba(160,156,255,.08);
}
/* Quiet mode for long shifts (Studio graft, BRAND §3.6 / §7.3): one Control Centre switch */
:root[data-quiet]{
  --wp-crest:var(--wp-wave);
  --wp-haze:transparent;
  --tile-quiet:1;
}

/* Tenant slots (BRAND §11): os/tenant.js sets --tenant-accent / --tenant-ink / --tenant-ink-dark / --tenant-on-accent /
   --tenant-wp-tint from GET /api/v1/tenant. The tenant colour is never used for status, focus, selection or primary buttons. */
:root { --tenant-ink-cur: var(--tenant-ink); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --tenant-ink-cur: var(--tenant-ink-dark); } }
:root[data-theme="dark"] { --tenant-ink-cur: var(--tenant-ink-dark); }
