237 lines
5.6 KiB
CSS
237 lines
5.6 KiB
CSS
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
|
|
|
|
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
/* Secuird Design System - Enterprise Identity & Access Platform
|
|
Authoritative, infrastructure-grade aesthetic with slate/charcoal/muted blue palette
|
|
Colors are HSL for theming flexibility
|
|
*/
|
|
|
|
@layer base {
|
|
:root {
|
|
/* Core palette - Light blue-gray with teal accent */
|
|
--background: 216 22% 94%; /* cool blue-gray — cards lift clearly off this */
|
|
--foreground: 222 47% 9%; /* near-black navy */
|
|
|
|
--card: 0 0% 100%; /* pure white — 6% lightness gap over bg */
|
|
--card-foreground: 222 47% 9%;
|
|
|
|
--popover: 0 0% 100%;
|
|
--popover-foreground: 222 47% 9%;
|
|
|
|
/* Primary — teal, fully saturated, dark enough to read on white */
|
|
--primary: 173 65% 36%;
|
|
--primary-foreground: 0 0% 100%;
|
|
|
|
/* Secondary — cool blue-gray, clearly darker than bg */
|
|
--secondary: 216 20% 91%;
|
|
--secondary-foreground: 222 47% 18%;
|
|
|
|
/* Muted — noticeably darker than secondary, used for section bg */
|
|
--muted: 216 18% 88%;
|
|
--muted-foreground: 222 18% 42%;
|
|
|
|
/* Accent — same teal as primary */
|
|
--accent: 173 65% 36%;
|
|
--accent-foreground: 0 0% 100%;
|
|
|
|
/* Semantic */
|
|
--destructive: 0 72% 48%;
|
|
--destructive-foreground: 0 0% 100%;
|
|
|
|
--success: 152 60% 30%;
|
|
--success-foreground: 0 0% 100%;
|
|
|
|
--warning: 38 90% 48%;
|
|
--warning-foreground: 0 0% 100%;
|
|
|
|
--info: 199 80% 44%;
|
|
--info-foreground: 0 0% 100%;
|
|
|
|
/* UI chrome */
|
|
--border: 216 18% 84%; /* clearly visible on white card */
|
|
--input: 216 18% 92%;
|
|
--ring: 173 65% 36%;
|
|
|
|
--radius: 0.5rem;
|
|
|
|
/* Sidebar */
|
|
--sidebar-background: 222 30% 95%;
|
|
--sidebar-foreground: 222 47% 18%;
|
|
--sidebar-primary: 173 65% 36%;
|
|
--sidebar-primary-foreground: 0 0% 100%;
|
|
--sidebar-accent: 216 20% 88%;
|
|
--sidebar-accent-foreground: 222 47% 9%;
|
|
--sidebar-border: 216 18% 84%;
|
|
--sidebar-ring: 173 65% 36%;
|
|
--sidebar-muted: 222 20% 48%;
|
|
|
|
/* Gradients */
|
|
--gradient-brand: linear-gradient(135deg, hsl(173 65% 36%), hsl(173 65% 28%));
|
|
--gradient-accent: linear-gradient(135deg, hsl(173 65% 36%), hsl(173 65% 28%));
|
|
--gradient-subtle: linear-gradient(135deg, hsl(216 28% 97%), hsl(216 18% 93%));
|
|
|
|
/* Shadows — stronger alpha so cards lift off the bg */
|
|
--shadow-sm: 0 1px 2px 0 hsl(222 47% 9% / 0.10);
|
|
--shadow-md: 0 4px 6px -1px hsl(222 47% 9% / 0.14), 0 2px 4px -2px hsl(222 47% 9% / 0.10);
|
|
--shadow-lg: 0 10px 15px -3px hsl(222 47% 9% / 0.14), 0 4px 6px -4px hsl(222 47% 9% / 0.10);
|
|
--shadow-card: 0 2px 6px 0 hsl(222 47% 9% / 0.10), 0 1px 2px -1px hsl(222 47% 9% / 0.08);
|
|
}
|
|
|
|
.dark {
|
|
--background: 222 47% 6%;
|
|
--foreground: 210 40% 98%;
|
|
|
|
--card: 222 47% 9%;
|
|
--card-foreground: 210 40% 98%;
|
|
|
|
--popover: 222 47% 9%;
|
|
--popover-foreground: 210 40% 98%;
|
|
|
|
--primary: 173 58% 45%;
|
|
--primary-foreground: 222 47% 11%;
|
|
|
|
--secondary: 222 40% 15%;
|
|
--secondary-foreground: 210 40% 98%;
|
|
|
|
--muted: 222 40% 15%;
|
|
--muted-foreground: 215 20% 65%;
|
|
|
|
--accent: 173 58% 39%;
|
|
--accent-foreground: 0 0% 100%;
|
|
|
|
--destructive: 0 62% 40%;
|
|
--destructive-foreground: 0 0% 100%;
|
|
|
|
--success: 152 69% 36%;
|
|
--success-foreground: 0 0% 100%;
|
|
|
|
--warning: 38 92% 55%;
|
|
--warning-foreground: 0 0% 100%;
|
|
|
|
--info: 199 89% 53%;
|
|
--info-foreground: 0 0% 100%;
|
|
|
|
--border: 222 40% 18%;
|
|
--input: 222 40% 18%;
|
|
--ring: 173 58% 45%;
|
|
|
|
--sidebar-background: 222 47% 6%;
|
|
--sidebar-foreground: 215 20% 85%;
|
|
--sidebar-primary: 173 58% 45%;
|
|
--sidebar-primary-foreground: 0 0% 100%;
|
|
--sidebar-accent: 222 40% 12%;
|
|
--sidebar-accent-foreground: 210 40% 98%;
|
|
--sidebar-border: 222 40% 15%;
|
|
--sidebar-ring: 173 58% 45%;
|
|
--sidebar-muted: 215 16% 55%;
|
|
}
|
|
}
|
|
|
|
@layer base {
|
|
* {
|
|
@apply border-border;
|
|
}
|
|
|
|
html {
|
|
font-family: 'Inter', system-ui, -apple-system, sans-serif;
|
|
}
|
|
|
|
body {
|
|
@apply bg-background text-foreground antialiased;
|
|
font-feature-settings: "cv11", "ss01";
|
|
}
|
|
|
|
/* Smooth focus states */
|
|
:focus-visible {
|
|
@apply outline-none ring-2 ring-ring ring-offset-2 ring-offset-background;
|
|
}
|
|
}
|
|
|
|
@layer components {
|
|
/* Auth card for public pages */
|
|
.auth-card {
|
|
@apply bg-card rounded-xl p-8 shadow-card border border-border;
|
|
}
|
|
|
|
/* Section header styling */
|
|
.section-header {
|
|
@apply text-lg font-semibold text-foreground mb-1;
|
|
}
|
|
|
|
.section-description {
|
|
@apply text-sm text-muted-foreground;
|
|
}
|
|
|
|
/* Status badges */
|
|
.status-badge {
|
|
@apply inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium;
|
|
}
|
|
|
|
.status-badge-success {
|
|
@apply bg-success/10 text-success;
|
|
}
|
|
|
|
.status-badge-warning {
|
|
@apply bg-warning/10 text-warning;
|
|
}
|
|
|
|
.status-badge-error {
|
|
@apply bg-destructive/10 text-destructive;
|
|
}
|
|
|
|
.status-badge-info {
|
|
@apply bg-info/10 text-info;
|
|
}
|
|
|
|
/* Page layout helpers */
|
|
.page-container {
|
|
@apply p-6 lg:p-8 max-w-5xl;
|
|
}
|
|
|
|
.page-header {
|
|
@apply mb-8;
|
|
}
|
|
|
|
.page-title {
|
|
@apply text-2xl font-semibold text-foreground tracking-tight;
|
|
}
|
|
|
|
.page-description {
|
|
@apply text-muted-foreground mt-1;
|
|
}
|
|
}
|
|
|
|
@layer utilities {
|
|
/* Animation utilities */
|
|
.animate-fade-in {
|
|
animation: fadeIn 0.3s ease-out;
|
|
}
|
|
|
|
.animate-slide-in {
|
|
animation: slideIn 0.3s ease-out;
|
|
}
|
|
|
|
@keyframes fadeIn {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes slideIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(-8px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
}
|