@import "tailwindcss"; @import "tw-animate-css"; @import "shadcn/tailwind.css"; @import "@fontsource-variable/hanken-grotesk"; @custom-variant dark (&:is(.dark *)); :root { --radius: 0.625rem; /* Glassmorphism body — frosted surfaces over a vivid gradient field. */ --background: oklch(0.95 0.022 286); --foreground: oklch(0.19 0.03 280); --card: oklch(1 0 0 / 0.74); --card-foreground: oklch(0.19 0.03 280); --popover: oklch(1 0 0 / 0.92); --popover-foreground: oklch(0.19 0.03 280); /* Brand: indigo, rationed so it always means something. */ --primary: oklch(0.511 0.262 276.966); --primary-foreground: oklch(0.985 0 0); --secondary: oklch(0.967 0.012 280); --secondary-foreground: oklch(0.3 0.05 280); --muted: oklch(0.95 0.01 280 / 0.6); --muted-foreground: oklch(0.44 0.035 280); --accent: oklch(0.95 0.03 280); --accent-foreground: oklch(0.4 0.16 277); --destructive: oklch(0.577 0.245 27.325); --border: oklch(0.92 0.01 280); --input: oklch(0.92 0.01 280); --ring: oklch(0.585 0.233 277.117); /* Seat-state triad (load-bearing) + status colors. */ --seat-human: oklch(0.554 0.046 257.417); /* slate */ --seat-open: oklch(0.769 0.188 70.08); /* amber */ --seat-ai: oklch(0.585 0.233 277.117); /* indigo */ --approved: oklch(0.704 0.14 182.503); /* teal */ --held: oklch(0.769 0.188 70.08); /* amber */ --chart-1: oklch(0.585 0.233 277.117); --chart-2: oklch(0.704 0.14 182.503); --chart-3: oklch(0.769 0.188 70.08); --chart-4: oklch(0.554 0.046 257.417); --chart-5: oklch(0.5 0.13 300); /* Deep-indigo command-center sidebar. */ --sidebar: oklch(0.257 0.09 281.288); --sidebar-foreground: oklch(0.93 0.02 280); --sidebar-primary: oklch(0.673 0.182 276.935); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.359 0.144 278.697); --sidebar-accent-foreground: oklch(0.97 0.01 280); --sidebar-border: oklch(0.45 0.12 278 / 35%); --sidebar-ring: oklch(0.585 0.233 277.117); } body { margin: 0; font-family: "Hanken Grotesk Variable", system-ui, sans-serif; /* Vivid gradient field behind the frosted-glass surfaces — gives the glass something to lift off. */ background: radial-gradient(1200px 640px at 6% -10%, oklch(0.62 0.2 288 / 0.34), transparent 62%), radial-gradient(1050px 720px at 112% 4%, oklch(0.7 0.16 210 / 0.27), transparent 58%), radial-gradient(960px 680px at 48% 122%, oklch(0.72 0.18 334 / 0.22), transparent 62%), var(--background); background-attachment: fixed; min-height: 100vh; } @theme inline { --font-sans: "Hanken Grotesk Variable", system-ui, sans-serif; --font-heading: var(--font-sans); --color-seat-human: var(--seat-human); --color-seat-open: var(--seat-open); --color-seat-ai: var(--seat-ai); --color-approved: var(--approved); --color-held: var(--held); --color-sidebar-ring: var(--sidebar-ring); --color-sidebar-border: var(--sidebar-border); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar: var(--sidebar); --color-chart-5: var(--chart-5); --color-chart-4: var(--chart-4); --color-chart-3: var(--chart-3); --color-chart-2: var(--chart-2); --color-chart-1: var(--chart-1); --color-ring: var(--ring); --color-input: var(--input); --color-border: var(--border); --color-destructive: var(--destructive); --color-accent-foreground: var(--accent-foreground); --color-accent: var(--accent); --color-muted-foreground: var(--muted-foreground); --color-muted: var(--muted); --color-secondary-foreground: var(--secondary-foreground); --color-secondary: var(--secondary); --color-primary-foreground: var(--primary-foreground); --color-primary: var(--primary); --color-popover-foreground: var(--popover-foreground); --color-popover: var(--popover); --color-card-foreground: var(--card-foreground); --color-card: var(--card); --color-foreground: var(--foreground); --color-background: var(--background); --radius-sm: calc(var(--radius) * 0.6); --radius-md: calc(var(--radius) * 0.8); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) * 1.4); --radius-2xl: calc(var(--radius) * 1.8); --radius-3xl: calc(var(--radius) * 2.2); --radius-4xl: calc(var(--radius) * 2.6); } .dark { --background: oklch(0.17 0.035 287); --foreground: oklch(0.985 0 0); --card: oklch(0.31 0.055 286 / 0.62); --card-foreground: oklch(0.985 0 0); --popover: oklch(0.26 0.05 286 / 0.94); --popover-foreground: oklch(0.985 0 0); --primary: oklch(0.673 0.182 276.935); --primary-foreground: oklch(0.205 0.03 280); --secondary: oklch(0.3 0.04 280); --secondary-foreground: oklch(0.985 0 0); --muted: oklch(0.3 0.04 280); --muted-foreground: oklch(0.72 0.03 280); --accent: oklch(0.32 0.06 280); --accent-foreground: oklch(0.985 0 0); --destructive: oklch(0.704 0.191 22.216); --border: oklch(1 0 0 / 10%); --input: oklch(1 0 0 / 15%); --ring: oklch(0.585 0.233 277.117); --sidebar: oklch(0.21 0.07 281); --sidebar-foreground: oklch(0.93 0.02 280); --sidebar-primary: oklch(0.673 0.182 276.935); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.359 0.144 278.697); --sidebar-accent-foreground: oklch(0.97 0.01 280); --sidebar-border: oklch(1 0 0 / 10%); --sidebar-ring: oklch(0.585 0.233 277.117); } @layer base { * { @apply border-border outline-ring/50; } body { @apply text-foreground; } html { @apply font-sans; } } /* ---- Glassmorphism + gradients (app-wide, keyed on shadcn data-slots) ---- * Unlayered so they sit above Tailwind utilities; inline styles still win, so the * gradient Team cards keep their own backgrounds. */ [data-slot="card"] { backdrop-filter: blur(20px) saturate(155%); -webkit-backdrop-filter: blur(20px) saturate(155%); border: 1px solid color-mix(in oklch, white 65%, transparent); box-shadow: 0 16px 44px -20px oklch(0.32 0.13 285 / 0.42), inset 0 1px 0 0 oklch(1 0 0 / 0.55); } .dark [data-slot="card"] { border-color: color-mix(in oklch, white 16%, transparent); box-shadow: 0 18px 48px -22px oklch(0 0 0 / 0.65), inset 0 1px 0 0 oklch(1 0 0 / 0.08); } [data-slot="popover-content"], [data-slot="select-content"], [data-slot="dropdown-menu-content"], [data-slot="sheet-content"] { backdrop-filter: blur(18px) saturate(160%); -webkit-backdrop-filter: blur(18px) saturate(160%); border: 1px solid color-mix(in oklch, white 40%, transparent); } .dark [data-slot="popover-content"], .dark [data-slot="select-content"], .dark [data-slot="dropdown-menu-content"], .dark [data-slot="sheet-content"] { border-color: color-mix(in oklch, white 12%, transparent); } /* Primary actions become a gradient; secondary/outline become glass. */ [data-slot="button"][data-variant="default"] { background-image: linear-gradient(135deg, oklch(0.58 0.24 277) 0%, oklch(0.56 0.25 305) 100%); box-shadow: 0 8px 20px -10px oklch(0.5 0.23 288 / 0.7); } [data-slot="button"][data-variant="default"]:hover { background-image: linear-gradient(135deg, oklch(0.62 0.24 277) 0%, oklch(0.6 0.25 305) 100%); } [data-slot="button"][data-variant="outline"], [data-slot="button"][data-variant="secondary"] { backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); background-color: color-mix(in oklch, var(--card) 65%, transparent); border: 1px solid color-mix(in oklch, white 40%, transparent); } .dark [data-slot="button"][data-variant="outline"], .dark [data-slot="button"][data-variant="secondary"] { border-color: color-mix(in oklch, white 14%, transparent); } /* Frosted form fields — kept more opaque than cards so input text stays high-contrast. */ [data-slot="select-trigger"], [data-slot="input"], input:not([type="checkbox"]):not([type="radio"]):not([type="range"]), textarea { backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); background-color: color-mix(in oklch, white 74%, transparent) !important; border-color: color-mix(in oklch, oklch(0.5 0.04 285) 35%, transparent); } .dark [data-slot="select-trigger"], .dark [data-slot="input"], .dark input:not([type="checkbox"]):not([type="radio"]):not([type="range"]), .dark textarea { background-color: color-mix(in oklch, oklch(0.32 0.05 286) 82%, transparent) !important; border-color: color-mix(in oklch, white 16%, transparent); } /* Pills: frosted for neutral variants, gradient for the primary one. */ [data-slot="badge"][data-variant="secondary"], [data-slot="badge"][data-variant="outline"] { backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); background-color: color-mix(in oklch, white 58%, transparent); border-color: color-mix(in oklch, white 55%, transparent); } .dark [data-slot="badge"][data-variant="secondary"], .dark [data-slot="badge"][data-variant="outline"] { background-color: color-mix(in oklch, white 12%, transparent); border-color: color-mix(in oklch, white 16%, transparent); } [data-slot="badge"][data-variant="default"] { background-image: linear-gradient(135deg, oklch(0.58 0.24 277), oklch(0.56 0.25 305)); }