183 lines
4.8 KiB
CSS
183 lines
4.8 KiB
CSS
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');
|
|
|
|
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
@layer base {
|
|
:root {
|
|
/* ── Soft light theme — warm white + amber accent ──────────────── */
|
|
--background: 220 33% 96%; /* #F0F4FA */
|
|
--foreground: 222 47% 11%; /* #0F172A */
|
|
|
|
--card: 0 0% 100%;
|
|
--card-foreground: 222 47% 11%;
|
|
|
|
--popover: 0 0% 100%;
|
|
--popover-foreground: 222 47% 11%;
|
|
|
|
/* Amber/orange primary */
|
|
--primary: 25 95% 53%; /* #F97316 */
|
|
--primary-foreground: 0 0% 100%;
|
|
|
|
/* Sky secondary */
|
|
--secondary: 200 85% 50%; /* #0EA5E9 */
|
|
--secondary-foreground: 0 0% 100%;
|
|
|
|
--muted: 220 20% 93%;
|
|
--muted-foreground: 215 20% 48%;
|
|
|
|
--accent: 25 100% 96%;
|
|
--accent-foreground: 25 95% 40%;
|
|
|
|
--destructive: 0 84% 60%;
|
|
--destructive-foreground: 0 0% 100%;
|
|
|
|
--border: 220 20% 88%;
|
|
--input: 220 20% 88%;
|
|
--ring: 25 95% 53%;
|
|
|
|
--radius: 0.75rem;
|
|
|
|
--success: 142 71% 45%;
|
|
--warning: 38 92% 50%;
|
|
}
|
|
|
|
/* Dark theme */
|
|
.dark {
|
|
--background: 226 49% 8%;
|
|
--foreground: 220 40% 92%;
|
|
|
|
--card: 220 44% 10%;
|
|
--card-foreground: 220 40% 92%;
|
|
|
|
--popover: 220 44% 12%;
|
|
--popover-foreground: 220 40% 92%;
|
|
|
|
--primary: 25 95% 60%;
|
|
--primary-foreground: 226 49% 8%;
|
|
|
|
--secondary: 200 85% 55%;
|
|
--secondary-foreground: 226 49% 8%;
|
|
|
|
--muted: 220 30% 14%;
|
|
--muted-foreground: 220 12% 52%;
|
|
|
|
--accent: 220 30% 14%;
|
|
--accent-foreground: 220 40% 92%;
|
|
|
|
--destructive: 0 72% 51%;
|
|
--destructive-foreground: 220 40% 98%;
|
|
|
|
--border: 220 28% 17%;
|
|
--input: 220 28% 17%;
|
|
--ring: 25 95% 60%;
|
|
|
|
--success: 158 64% 52%;
|
|
--warning: 38 92% 60%;
|
|
}
|
|
}
|
|
|
|
@layer base {
|
|
* {
|
|
@apply border-border;
|
|
}
|
|
|
|
body {
|
|
@apply bg-background text-foreground;
|
|
font-family: 'Inter', system-ui, -apple-system, sans-serif;
|
|
font-feature-settings: "rlig" 1, "calt" 1;
|
|
-webkit-font-smoothing: antialiased;
|
|
}
|
|
|
|
.tabular-nums,
|
|
[data-value],
|
|
.kpi-value {
|
|
font-family: 'JetBrains Mono', ui-monospace, monospace;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
::-webkit-scrollbar { width: 4px; height: 4px; }
|
|
::-webkit-scrollbar-track { background: transparent; }
|
|
::-webkit-scrollbar-thumb {
|
|
background: hsl(220 20% 80%);
|
|
border-radius: 9999px;
|
|
}
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: hsl(220 20% 68%);
|
|
}
|
|
}
|
|
|
|
@layer utilities {
|
|
/* Glass card effect */
|
|
.glass-card {
|
|
background: rgba(255, 255, 255, 0.72);
|
|
backdrop-filter: blur(16px);
|
|
-webkit-backdrop-filter: blur(16px);
|
|
border: 1px solid rgba(255, 255, 255, 0.85);
|
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 8px 32px rgba(0, 0, 0, 0.06);
|
|
}
|
|
|
|
.panel-glow {
|
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 8px 32px rgba(0, 0, 0, 0.06);
|
|
border: 1px solid rgba(255, 255, 255, 0.9);
|
|
}
|
|
|
|
.dark .panel-glow {
|
|
box-shadow: 0 0 0 1px hsl(var(--border)), 0 4px 24px -4px hsl(226 49% 4% / 0.6);
|
|
border-color: hsl(var(--border));
|
|
}
|
|
|
|
.panel-glow-hover:hover {
|
|
box-shadow: 0 4px 24px rgba(249, 115, 22, 0.12), 0 1px 3px rgba(0,0,0,0.06);
|
|
border-color: rgba(249, 115, 22, 0.25);
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.accent-glow {
|
|
box-shadow: 0 0 20px -2px rgba(249, 115, 22, 0.4);
|
|
}
|
|
|
|
/* Smooth fade-in animation for page content */
|
|
.fade-in {
|
|
animation: fadeIn 0.3s ease-out;
|
|
}
|
|
|
|
@keyframes fadeIn {
|
|
from { opacity: 0; transform: translateY(6px); }
|
|
to { opacity: 1; transform: translateY(0); }
|
|
}
|
|
|
|
/* Slide up for cards */
|
|
.slide-up {
|
|
animation: slideUp 0.35s cubic-bezier(0.16, 1, 0.3, 1);
|
|
}
|
|
|
|
@keyframes slideUp {
|
|
from { opacity: 0; transform: translateY(12px); }
|
|
to { opacity: 1; transform: translateY(0); }
|
|
}
|
|
|
|
/* ── Spacing rhythm ─────────────────────────────────────────────────
|
|
* gap-4 (16px) — inside cards/forms
|
|
* gap-6 (24px) — between cards in a grid
|
|
* gap-8 (32px) — between page sections
|
|
* py-12 (48px) — page-top padding
|
|
* ────────────────────────────────────────────────────────────────── */
|
|
|
|
@keyframes shimmer {
|
|
0% { background-position: -1000px 0; }
|
|
100% { background-position: 1000px 0; }
|
|
}
|
|
|
|
.skeleton-shimmer {
|
|
background: linear-gradient(
|
|
90deg,
|
|
hsl(var(--muted)) 0%,
|
|
hsl(var(--accent)) 50%,
|
|
hsl(var(--muted)) 100%
|
|
);
|
|
background-size: 1000px 100%;
|
|
animation: shimmer 1.6s linear infinite;
|
|
}
|
|
}
|