Files
boc/design/quixzoom-tokens.css
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- Add NFC ePassport roadmap (ICAO 9303, eIDAS)
- Add TensorFlow.js edge face detection (BlazeFace)
- Add structured audit logger (GDPR-compliant)
- Risk scoring support

Part of KYC Apple Native UX v1.1.0
2026-06-29 16:24:48 +00:00

155 lines
6.5 KiB
CSS

/**
* quiXzoom Design Tokens
* Sport-Tech / Nike-vibes
* Dark energy, neon precision, kinetic motion
*
* Usage: Import this file first, then apply tokens in component CSS.
* All values are CSS custom properties — never hardcode raw values.
*/
:root {
/* ─── GRAYSCALE ──────────────────────────────────────────────────────────── */
/* Light → Deep Carbon (dark-first palette) */
--qx-white: #FFFFFF;
--qx-gray-100: #F0F0F0; /* Near-white surface */
--qx-gray-400: #888888; /* Muted text, placeholders */
--qx-gray-700: #2A2A2A; /* Secondary surfaces */
--qx-deep-carbon: #0D0D0D; /* Primary background */
/* ─── ACCENT COLORS ──────────────────────────────────────────────────────── */
--qx-neon-primary: #00FF87; /* Electric green — primary CTA, highlights */
--qx-neon-secondary: #00D1FF; /* Cyan — links, hover states, secondary actions */
/* Accent with alpha for glows/overlays */
--qx-neon-primary-20: rgba(0, 255, 135, 0.20);
--qx-neon-primary-10: rgba(0, 255, 135, 0.10);
--qx-neon-secondary-20: rgba(0, 209, 255, 0.20);
/* ─── SEMANTIC COLORS ────────────────────────────────────────────────────── */
--qx-bg: var(--qx-deep-carbon);
--qx-bg-surface: var(--qx-gray-700);
--qx-text-primary: var(--qx-white);
--qx-text-muted: var(--qx-gray-400);
--qx-border: rgba(255, 255, 255, 0.08);
--qx-border-accent: var(--qx-neon-primary);
/* ─── SPACING (8px base grid) ────────────────────────────────────────────── */
--qx-space-xs: 4px;
--qx-space-sm: 8px;
--qx-space-md: 16px;
--qx-space-lg: 32px;
--qx-space-xl: 64px;
--qx-space-2xl: 96px;
--qx-space-3xl: 128px;
/* ─── TYPOGRAPHY ─────────────────────────────────────────────────────────── */
/* Font stack */
--qx-font-sans: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;
--qx-font-display: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;
--qx-font-mono: 'JetBrains Mono', 'Fira Code', 'Courier New', monospace;
/* Type scale — LOCKED, do not interpolate between these */
--qx-text-xs: 12px;
--qx-text-sm: 16px;
--qx-text-md: 24px;
--qx-text-lg: 48px;
--qx-text-xl: 64px;
/* Font weights */
--qx-weight-regular: 400;
--qx-weight-medium: 500;
--qx-weight-bold: 700;
--qx-weight-black: 900;
/* Line heights */
--qx-leading-tight: 1.0; /* Display / hero headlines */
--qx-leading-snug: 1.2; /* Subheadings */
--qx-leading-base: 1.5; /* Body text */
/* Letter spacing */
--qx-tracking-tight: -0.03em; /* Large display text */
--qx-tracking-normal: 0em;
--qx-tracking-wide: 0.08em; /* Caps labels, badges */
--qx-tracking-widest: 0.15em; /* Eyebrow text */
/* ─── EASING ──────────────────────────────────────────────────────────────── */
/* Signature quiXzoom spring — fast out, sharp entry */
--qx-ease-snap: cubic-bezier(0.16, 1, 0.3, 1);
/* Standard ease for UI micro-interactions */
--qx-ease-out: cubic-bezier(0.0, 0.0, 0.2, 1);
/* Dramatic enter for hero elements */
--qx-ease-enter: cubic-bezier(0.22, 1, 0.36, 1);
/* Subtle ease for hover states */
--qx-ease-hover: cubic-bezier(0.4, 0, 0.2, 1);
/* Duration */
--qx-duration-fast: 150ms;
--qx-duration-base: 300ms;
--qx-duration-slow: 600ms;
--qx-duration-hero: 900ms;
/* ─── BORDER RADIUS ──────────────────────────────────────────────────────── */
--qx-radius-none: 0px;
--qx-radius-sm: 4px;
--qx-radius-md: 8px;
--qx-radius-lg: 16px;
--qx-radius-pill: 9999px;
/* ─── SHADOW SYSTEM ──────────────────────────────────────────────────────── */
/* Dark-theme shadows use colored glows, not black opacity */
--qx-shadow-sm:
0 1px 2px rgba(0, 0, 0, 0.4);
--qx-shadow-md:
0 4px 16px rgba(0, 0, 0, 0.5),
0 1px 4px rgba(0, 0, 0, 0.3);
--qx-shadow-lg:
0 8px 32px rgba(0, 0, 0, 0.6),
0 2px 8px rgba(0, 0, 0, 0.4);
/* Neon glow — apply to CTAs and accent elements */
--qx-shadow-neon-primary:
0 0 0 1px var(--qx-neon-primary-20),
0 0 16px var(--qx-neon-primary-20),
0 0 32px var(--qx-neon-primary-10);
--qx-shadow-neon-secondary:
0 0 0 1px var(--qx-neon-secondary-20),
0 0 16px var(--qx-neon-secondary-20);
/* Inset glow — active states */
--qx-shadow-inset-neon:
inset 0 0 0 1px var(--qx-neon-primary-20);
/* ─── Z-INDEX SCALE ──────────────────────────────────────────────────────── */
--qx-z-base: 0;
--qx-z-raised: 10;
--qx-z-overlay: 100;
--qx-z-modal: 200;
--qx-z-toast: 300;
/* ─── TRANSITIONS (shorthand helpers) ───────────────────────────────────── */
--qx-transition-color:
color var(--qx-duration-fast) var(--qx-ease-hover),
background var(--qx-duration-fast) var(--qx-ease-hover),
border-color var(--qx-duration-fast) var(--qx-ease-hover);
--qx-transition-transform:
transform var(--qx-duration-base) var(--qx-ease-snap);
--qx-transition-all:
all var(--qx-duration-base) var(--qx-ease-snap);
}
/* ─── UTILITY: APPLY DARK BG ─────────────────────────────────────────────── */
.qx-theme {
background-color: var(--qx-bg);
color: var(--qx-text-primary);
font-family: var(--qx-font-sans);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}