Files
top-tickets/src/app/globals.css
T

334 lines
7.8 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@import "tailwindcss";
@theme {
--font-sans: var(--font-sans), ui-sans-serif, system-ui, sans-serif;
--font-display: var(--font-display), var(--font-sans), ui-sans-serif, sans-serif;
--font-mono: var(--font-mono), ui-monospace, monospace;
--color-bg: var(--bg);
--color-surface: var(--surface);
--color-surface-hover: var(--surface-hover);
--color-border: var(--border);
--color-border-strong: var(--border-strong);
--color-text: var(--text);
--color-text-muted: var(--text-muted);
--color-text-faint: var(--text-faint);
--color-accent: var(--accent);
--color-accent-hover: var(--accent-hover);
--color-accent-soft: var(--accent-soft);
--color-accent-soft-text: var(--accent-soft-text);
--color-danger: var(--danger);
--color-danger-soft: var(--danger-soft);
--color-danger-soft-text: var(--danger-soft-text);
--color-warning: var(--warning);
--color-warning-soft: var(--warning-soft);
--color-warning-soft-text: var(--warning-soft-text);
--color-success: var(--success);
--color-success-soft: var(--success-soft);
--color-success-soft-text: var(--success-soft-text);
--color-info: var(--info);
--color-info-soft: var(--info-soft);
--color-info-soft-text: var(--info-soft-text);
--color-rose: var(--rose);
--color-rose-soft: var(--rose-soft);
--color-rose-soft-text: var(--rose-soft-text);
/* Chart marks — validated categorical set (dataviz skill), distinct from
the softer *-soft badge tokens which are too light for dark-mode marks. */
--color-chart-1: var(--chart-1);
--color-chart-2: var(--chart-2);
--color-chart-3: var(--chart-3);
--color-chart-4: var(--chart-4);
--color-chart-muted: var(--chart-muted);
--radius-sm: var(--radius-sm-val);
--radius-md: var(--radius-md-val);
--radius-lg: var(--radius-lg-val);
}
:root {
--bg: #f8f7fb;
--surface: #ffffff;
--surface-hover: #f2effa;
--border: #e5e0f2;
--border-strong: #cec4e8;
--text: #171325;
--text-muted: #635d7a;
--text-faint: #9891ad;
--accent: #6d28d9;
--accent-hover: #5b21b6;
--accent-soft: #f0e8fe;
--accent-soft-text: #5b21b6;
--danger: #dc2626;
--danger-soft: #fef2f2;
--danger-soft-text: #b91c1c;
--warning: #d97706;
--warning-soft: #fffbeb;
--warning-soft-text: #b45309;
--success: #0d9488;
--success-soft: #ecfdf9;
--success-soft-text: #0f766e;
--info: #2563eb;
--info-soft: #eff6ff;
--info-soft-text: #1d4ed8;
--rose: #e11d48;
--rose-soft: #fff1f2;
--rose-soft-text: #be123c;
/* Chart marks — fixed categorical order, CVD-validated (accent/success/
info/warning); reorder only after re-running the validator. */
--chart-1: #6d28d9;
--chart-2: #0d9488;
--chart-3: #2563eb;
--chart-4: #d97706;
--chart-muted: var(--border-strong);
--radius-sm-val: 8px;
--radius-md-val: 12px;
--radius-lg-val: 18px;
--bg-glow: none;
--card-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
color-scheme: light;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--bg: #0b0a12;
--surface: #161320;
--surface-hover: #1d1929;
--border: #2d2640;
--border-strong: #453c60;
--text: #f1eefb;
--text-muted: #a79fc4;
--text-faint: #6f6790;
--accent: #8b5cf6;
--accent-hover: #7c3aed;
--accent-soft: #251c3f;
--accent-soft-text: #c4b5fd;
--danger: #f87171;
--danger-soft: #2a1517;
--danger-soft-text: #fca5a5;
--warning: #fbbf24;
--warning-soft: #2a2110;
--warning-soft-text: #fcd34d;
--success: #2dd4bf;
--success-soft: #0f2320;
--success-soft-text: #5eead4;
--info: #60a5fa;
--info-soft: #12203a;
--info-soft-text: #93c5fd;
--rose: #fb7185;
--rose-soft: #2a1420;
--rose-soft-text: #fda4af;
/* Darker/more saturated than the badge tokens above — validated
separately for the dark-mode lightness band (L 0.48–0.67). */
--chart-1: #8b5cf6;
--chart-2: #0d9488;
--chart-3: #3b82f6;
--chart-4: #d97706;
--chart-muted: var(--border-strong);
--bg-glow: radial-gradient(ellipse 80% 50% at 50% -10%, rgba(139, 92, 246, 0.12), transparent 60%);
--card-shadow: 0 1px 0 rgba(255, 255, 255, 0.05) inset, 0 8px 24px rgba(0, 0, 0, 0.35);
color-scheme: dark;
}
}
:root[data-theme="dark"] {
--bg: #0b0a12;
--surface: #161320;
--surface-hover: #1d1929;
--border: #2d2640;
--border-strong: #453c60;
--text: #f1eefb;
--text-muted: #a79fc4;
--text-faint: #6f6790;
--accent: #8b5cf6;
--accent-hover: #7c3aed;
--accent-soft: #251c3f;
--accent-soft-text: #c4b5fd;
--danger: #f87171;
--danger-soft: #2a1517;
--danger-soft-text: #fca5a5;
--warning: #fbbf24;
--warning-soft: #2a2110;
--warning-soft-text: #fcd34d;
--success: #2dd4bf;
--success-soft: #0f2320;
--success-soft-text: #5eead4;
--info: #60a5fa;
--info-soft: #12203a;
--info-soft-text: #93c5fd;
--rose: #fb7185;
--rose-soft: #2a1420;
--rose-soft-text: #fda4af;
--chart-1: #8b5cf6;
--chart-2: #0d9488;
--chart-3: #3b82f6;
--chart-4: #d97706;
--chart-muted: var(--border-strong);
--bg-glow: radial-gradient(ellipse 80% 50% at 50% -10%, rgba(139, 92, 246, 0.12), transparent 60%);
--card-shadow: 0 1px 0 rgba(255, 255, 255, 0.05) inset, 0 8px 24px rgba(0, 0, 0, 0.35);
color-scheme: dark;
}
/* Theme-toggle icon: both render always, CSS picks which shows — same
data-theme cascade the palette above uses, so it never needs JS state. */
.theme-toggle-btn .theme-icon-sun {
display: none;
}
.theme-toggle-btn .theme-icon-moon {
display: inline;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) .theme-toggle-btn .theme-icon-sun {
display: inline;
}
:root:not([data-theme="light"]) .theme-toggle-btn .theme-icon-moon {
display: none;
}
}
:root[data-theme="dark"] .theme-toggle-btn .theme-icon-sun {
display: inline;
}
:root[data-theme="dark"] .theme-toggle-btn .theme-icon-moon {
display: none;
}
* {
border-color: var(--border);
}
html,
body {
height: 100%;
overflow-x: hidden;
}
body {
background: var(--bg);
background-image: var(--bg-glow, none);
background-attachment: fixed;
color: var(--text);
font-family: var(--font-sans);
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
::selection {
background: var(--accent-soft);
color: var(--accent-soft-text);
}
:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
border-radius: 4px;
}
::-webkit-scrollbar {
width: 10px;
height: 10px;
}
::-webkit-scrollbar-thumb {
background: var(--border-strong);
border-radius: 999px;
}
::-webkit-scrollbar-track {
background: transparent;
}
.card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-md);
box-shadow: var(--card-shadow);
}
.btn {
display: inline-flex;
align-items: center;
gap: 0.5rem;
border-radius: var(--radius-sm);
font-weight: 600;
font-size: 0.875rem;
padding: 0.5rem 0.9rem;
transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease, transform 100ms ease;
}
.btn:active {
transform: translateY(1px);
}
.btn-primary {
background: var(--accent);
color: white;
}
.btn-primary:hover {
background: var(--accent-hover);
}
.btn-ghost {
background: transparent;
color: var(--text-muted);
border: 1px solid var(--border);
}
.btn-ghost:hover {
background: var(--surface-hover);
color: var(--text);
}
.badge {
display: inline-flex;
align-items: center;
gap: 0.35rem;
font-size: 0.75rem;
font-weight: 600;
padding: 0.15rem 0.55rem;
border-radius: 999px;
}
.badge-new {
background: var(--accent-soft);
color: var(--accent-soft-text);
}
.badge-open {
background: var(--success-soft);
color: var(--success-soft-text);
}
.badge-pending {
background: var(--warning-soft);
color: var(--warning-soft-text);
}
.badge-closed {
background: var(--border);
color: var(--text-muted);
}