visualize_dataset / src /app /globals.css
mishig's picture
mishig HF Staff
Sync from GitHub via hub-sync
74a60a9 verified
@import "tailwindcss";
/* ── Design tokens ────────────────────────────────────────────────
Consolidated palette + surface scale. Use via Tailwind arbitrary
values (bg-[var(--surface-1)]) or via the semantic helpers below. */
:root {
/* surface / depth scale */
--bg: #0a0e17;
--surface-0: #0d1220;
--surface-1: #11172a;
--surface-2: #151c33;
--border-subtle: rgba(255, 255, 255, 0.05);
--border-strong: rgba(255, 255, 255, 0.1);
/* text scale */
--text-primary: #e7ebf3;
--text-muted: #9aa3b5;
--text-faint: #5b6274;
/* single accent (cyan). Orange is reserved for destructive. */
--accent: #38bdf8;
--accent-soft: rgba(56, 189, 248, 0.18);
--accent-ring: rgba(56, 189, 248, 0.55);
--radius: 6px;
}
@theme inline {
--color-bg: var(--bg);
--color-surface-0: var(--surface-0);
--color-surface-1: var(--surface-1);
--color-surface-2: var(--surface-2);
--color-accent: var(--accent);
--font-sans: var(--font-geist-sans);
--font-mono: var(--font-geist-mono);
}
html {
font-size: 18px;
}
body {
background: var(--bg);
color: var(--text-primary);
font-feature-settings:
"cv11" 1,
"ss01" 1;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
/* Numeric readouts always use tabular figures so rows don't jitter. */
.tabular,
[data-tabular] {
font-variant-numeric: tabular-nums;
}
/* ── Semantic helpers ────────────────────────────────────────────── */
.panel {
@apply rounded-md border border-white/5 bg-white/[0.02];
}
.panel-raised {
@apply rounded-md border border-white/10 bg-white/[0.03];
}
/* Scrollbar: thin, subtle, matches the surface palette. */
*::-webkit-scrollbar {
width: 10px;
height: 10px;
}
*::-webkit-scrollbar-track {
background: transparent;
}
*::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0.06);
border-radius: 10px;
border: 2px solid transparent;
background-clip: padding-box;
}
*::-webkit-scrollbar-thumb:hover {
background-color: rgba(255, 255, 255, 0.12);
background-clip: padding-box;
}
/* ── Background video (used on the landing page) ─────────────────── */
.video-background {
@apply fixed top-0 right-0 bottom-0 left-0 -z-10 overflow-hidden w-screen h-screen;
}
.video-background video {
@apply absolute top-1/2 left-1/2 pointer-events-none bg-black;
min-width: 100vw;
min-height: 100vh;
width: auto;
height: auto;
transform: translate(-50%, -50%);
object-fit: cover;
filter: brightness(0.55) saturate(0.85);
}
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(16px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-fade-in-up {
animation: fadeInUp 0.55s ease-out forwards;
}
/* Late entry β€” used for elements that should arrive after the hero stack
has settled, so they read as a quiet afterthought rather than another
simultaneous CTA. `both` fill mode keeps the element invisible during
the delay so it doesn't briefly flash with the parent's animation. */
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(6px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-fade-in-late {
animation: fadeIn 0.45s ease-out 0.55s both;
}
/* Pop animation for dropdowns β€” anchors at top-right and scales up
slightly while fading in. Short enough (140ms) to feel snappy. */
@keyframes menuPop {
from {
opacity: 0;
transform: translateY(-2px) scale(0.97);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
.animate-menu-pop {
animation: menuPop 0.14s ease-out forwards;
transform-origin: top right;
}