/* File: globals.css Path: apps/web/app/globals.css Project: AI Risk Index — airiskindex.io Author: Simon-Pierre Boucher Contact: contact@spboucher.ai Copyright © 2026 Simon-Pierre Boucher. All rights reserved. Description: Design tokens (validated dataviz palette roles), card idiom, hero wash, drawer animation. */ @tailwind base; @tailwind components; @tailwind utilities; /* Data-viz roles — reference palette (dataviz skill, references/palette.md). Charts reference roles, never raw hex; dark steps are selected, not flipped. */ :root { color-scheme: light; --page: #f9f9f7; --surface-1: #fcfcfb; --ink: #0b0b0b; --ink-2: #52514e; --muted: #898781; --grid: #e1e0d9; --baseline: #c3c2b7; --border: rgba(11, 11, 11, 0.1); --seq: #2a78d6; /* sequential blue 450 (light) */ --seq-deep: #1c5cab; --seq-track: #cde2fb; /* lighter step of the same ramp (meter/bar track) */ --wash: rgba(42, 120, 214, 0.1); /* series hue at ~10% — area wash */ --header: rgba(252, 252, 251, 0.82); } @media (prefers-color-scheme: dark) { :root { color-scheme: dark; --page: #0d0d0d; --surface-1: #1a1a19; --ink: #ffffff; --ink-2: #c3c2b7; --muted: #898781; --grid: #2c2c2a; --baseline: #383835; --border: rgba(255, 255, 255, 0.1); --seq: #3987e5; /* sequential blue 400 (dark) */ --seq-deep: #6da7ec; --seq-track: #0d366b; /* recessive step of the same ramp on dark */ --wash: rgba(57, 135, 229, 0.12); --header: rgba(13, 13, 13, 0.82); } } html { scroll-behavior: smooth; } body { background: var(--page); color: var(--ink); text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; } ::selection { background: var(--seq); color: #ffffff; } :focus-visible { outline: 2px solid var(--seq); outline-offset: 2px; border-radius: 4px; } /* Hero backdrop — two soft washes of the series hue, light and airy. */ .hero-wash { background: radial-gradient(56rem 26rem at 85% -8%, var(--wash), transparent 62%), radial-gradient(40rem 22rem at 8% -14%, var(--wash), transparent 55%); } /* Card idiom used across the site. */ .card { border: 1px solid var(--border); background: var(--surface-1); border-radius: 1rem; } .card-hover { transition: border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease; } .card-hover:hover { border-color: var(--seq); box-shadow: 0 4px 20px -8px rgba(42, 120, 214, 0.25); } @keyframes drawer-in { from { transform: translateX(100%); } to { transform: translateX(0); } }