/* src/styles/tokens.css
 * Root design tokens, reset/base, tabular-numerals helper, and the two fixed
 * background layers (app-bg / app-grid).
 *
 * C37 (John, 2026-10-01): this file is the reference dashboard's tokens.css,
 * byte for byte in every rule and every token it defines. Near-black page,
 * subtle white-wash cards, periwinkle accent. Do not tint it for the brand.
 *
 * Case Leverage adds exactly two tokens, at the foot of :root: --accent-fill
 * and --accent-fill-2, the Electric Blue (#2563eb) used for PRIMARY BUTTON
 * FILLS ONLY, with white text. The rest of the brand is two images: the
 * sidebar mark and the sign-in wordmark.
 *
 * Font note (verbatim reference behaviour): Inter is declared in --font but never
 * loaded (no @font-face, @import or <link>), so it renders in Inter only on
 * machines that already have it installed and falls back to the system UI font
 * everywhere else. public/index.html therefore carries no font links.
 */

:root {
    --bg: #06070a;
    --bg-elev: #0c0e13;
    --card: rgba(255, 255, 255, .022);
    --card-hover: rgba(255, 255, 255, .04);
    --hairline: rgba(255, 255, 255, .07);
    --hairline-strong: rgba(255, 255, 255, .12);
    --text: #f4f6fb;
    --text-dim: #9aa3b2;
    --text-faint: #5c6472;
    --accent: #6d8bff;
    --accent-2: #8b6dff;
    --accent-glow: rgba(109, 139, 255, .55);
    --pos: #37e0a6;
    --neg: #ff6b7d;
    --radius: 16px;
    /* Opaque fill for a frozen (sticky) table column. It has to be opaque, not
       a --card style translucent wash, because the scrolling cells slide
       underneath it and a pace-coloured cell would otherwise read through.
       Values are the ones the frozen column already used as literals in
       app.css, kept byte-identical so nothing changes visually. */
    --table-frozen-bg: #090b10;
    --table-frozen-bg-hover: #0d0f15;
    --font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    /* Case Leverage: primary button fills only (white text on them). */
    --accent-fill: #2563eb;
    --accent-fill-2: #1d4ed8
}

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0
}

html,
body,
#root {
    height: 100%
}

body {
    background: var(--bg);
    color: var(--text);
    font-family: var(--font);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    font-feature-settings: "cv11", "ss01";
    letter-spacing: -.01em;
    overflow-x: hidden
}

.tnum {
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum"
}

.app-bg {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 0;
    pointer-events: none;
    background: radial-gradient(60% 50% at 15% -5%, rgba(109, 139, 255, .16), transparent 60%), radial-gradient(55% 45% at 92% 8%, rgba(139, 109, 255, .13), transparent 62%), radial-gradient(50% 40% at 50% 105%, rgba(55, 224, 166, .06), transparent 60%)
}

.app-grid {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 0;
    pointer-events: none;
    background-image: linear-gradient(var(--hairline) 1px, transparent 1px), linear-gradient(90deg, var(--hairline) 1px, transparent 1px);
    background-size: 46px 46px;
    -webkit-mask-image: radial-gradient(90% 70% at 50% 0%, black, transparent 78%);
    mask-image: radial-gradient(90% 70% at 50% 0%, black, transparent 78%);
    opacity: .4
}
