@config "../tailwind.config.ts"; @import "tailwindcss"; body { font-family: var(--font-geist-sans), "SF Pro Display", "Segoe UI", sans-serif; position: relative; min-height: 100%; background-attachment: fixed; text-rendering: optimizeLegibility; } .font-super-mono { font-family: var(--font-geist-mono), "SF Mono", "Segoe UI Mono", monospace; } @layer base { :root { --background: 240 21.052631735801697% 14.901961386203766%; /* base */ --foreground: 226 63.93442749977112% 88.03921341896057%; /* text */ --muted: 237 16.239316761493683% 22.94117659330368%; /* surface0 */ --muted-foreground: 227 35.29411852359772% 80.0000011920929%; /* subtext1 */ --popover: 240 21.052631735801697% 14.901961386203766%; /* base */ --popover-foreground: 226 63.93442749977112% 88.03921341896057%; /* text */ --card: 240 21.052631735801697% 14.901961386203766%; /* base */ --card-foreground: 226 63.93442749977112% 88.03921341896057%; /* text */ --border: 234 13.20754736661911% 31.176471710205078%; /* surface1 */ --input: 234 13.20754736661911% 31.176471710205078%; /* surface1 */ --primary: 217 91.86992049217224% 75.88235139846802%; /* accent - Blue */ --primary-foreground: 240 21.052631735801697% 14.901961386203766%; /* base */ --secondary: 237 16.239316761493683% 22.94117659330368%; /* surface0 */ --secondary-foreground: 226 63.93442749977112% 88.03921341896057%; /* text */ --accent: 237 16.239316761493683% 22.94117659330368%; /* surface0 */ --accent-foreground: 226 63.93442749977112% 88.03921341896057%; /* text */ --destructive: 343 81.25% 74.90196228027344%; /* red */ --destructive-foreground: 240 21.311475336551666% 11.96078434586525%; /* mantle */ --ring: 226 63.93442749977112% 88.03921341896057%; /* text */ --radius: 0.5rem; --chart-1: 343 81.25% 74.90196228027344%; /* red */ --chart-2: 170 57.35294222831726% 73.33333492279053%; /* teal */ --chart-3: 217 91.86992049217224% 75.88235139846802%; /* blue */ --chart-4: 41 86.04651093482971% 83.13725590705872%; /* yellow */ --chart-5: 115 54.09836173057556% 76.07843279838562%; /* green */ --sidebar-background: 0 0% 98%; --sidebar-foreground: 240 5.3% 26.1%; --sidebar-primary: 240 5.9% 10%; --sidebar-primary-foreground: 0 0% 98%; --sidebar-accent: 240 4.8% 95.9%; --sidebar-accent-foreground: 240 5.9% 10%; --sidebar-border: 220 13% 91%; --sidebar-ring: 217.2 91.2% 59.8%; --glow-1: 217 91.86992049217224% 75.88235139846802%; --glow-2: 170 57.35294222831726% 73.33333492279053%; --glow-3: 343 81.25% 74.90196228027344%; --grain-opacity: 0.08; } .dark { --sidebar-background: 240 5.9% 10%; --sidebar-foreground: 240 4.8% 95.9%; --sidebar-primary: 224.3 76.3% 48%; --sidebar-primary-foreground: 0 0% 100%; --sidebar-accent: 240 3.7% 15.9%; --sidebar-accent-foreground: 240 4.8% 95.9%; --sidebar-border: 240 3.7% 15.9%; --sidebar-ring: 217.2 91.2% 59.8%; } } @theme { --color-background: hsl(var(--background)); --color-foreground: hsl(var(--foreground)); --color-muted: hsl(var(--muted)); --color-muted-foreground: hsl(var(--muted-foreground)); --color-popover: hsl(var(--popover)); --color-popover-foreground: hsl(var(--popover-foreground)); --color-card: hsl(var(--card)); --color-card-foreground: hsl(var(--card-foreground)); --color-primary: hsl(var(--primary)); --color-primary-foreground: hsl(var(--primary-foreground)); --color-secondary: hsl(var(--secondary)); --color-secondary-foreground: hsl(var(--secondary-foreground)); --color-accent: hsl(var(--accent)); --color-accent-foreground: hsl(var(--accent-foreground)); --color-destructive: hsl(var(--destructive)); --color-destructive-foreground: hsl(var(--destructive-foreground)); --color-border: hsl(var(--border)); --color-input: hsl(var(--input)); --color-ring: hsl(var(--ring)); --color-chart-1: hsl(var(--chart-1)); --color-chart-2: hsl(var(--chart-2)); --color-chart-3: hsl(var(--chart-3)); --color-chart-4: hsl(var(--chart-4)); --color-chart-5: hsl(var(--chart-5)); --color-sidebar: hsl(var(--sidebar-background)); --color-sidebar-foreground: hsl(var(--sidebar-foreground)); --color-sidebar-primary: hsl(var(--sidebar-primary)); --color-sidebar-primary-foreground: hsl(var(--sidebar-primary-foreground)); --color-sidebar-accent: hsl(var(--sidebar-accent)); --color-sidebar-accent-foreground: hsl(var(--sidebar-accent-foreground)); --color-sidebar-border: hsl(var(--sidebar-border)); --color-sidebar-ring: hsl(var(--sidebar-ring)); --radius-lg: var(--radius); --radius-md: calc(var(--radius) - 2px); --radius-sm: calc(var(--radius) - 4px); } @layer base { * { @apply border-border; } body { @apply bg-background text-foreground; isolation: isolate; } h1, h2, h3 { @apply tracking-tight; } a { text-decoration: underline; text-decoration-color: hsl(var(--primary) / 0.35); text-underline-offset: 0.18em; transition: color 150ms ease, text-decoration-color 150ms ease; } a:hover { text-decoration-color: hsl(var(--primary) / 0.85); } :focus-visible { outline: 2px solid hsl(var(--ring) / 0.6); outline-offset: 2px; } ::selection { background: hsl(var(--primary) / 0.25); color: hsl(var(--foreground)); } } /* https://dev.to/derick1530/how-to-create-scrollable-element-in-tailwind-without-a-scrollbar-4mbd */ @layer utilities { .no-scrollbar::-webkit-scrollbar { display: none; } .no-scrollbar { -ms-overflow-style: none; scrollbar-width: 0; } .page-container { @apply mx-auto w-full max-w-6xl px-4 sm:px-8; } .section-title { @apply text-xl sm:text-2xl font-semibold text-text; } .panel { @apply rounded-3xl bg-base/50 ring-1 ring-surface1/60 shadow-lg; } .panel-blur { @apply rounded-3xl bg-base/50 ring-1 ring-surface1/60 shadow-lg backdrop-blur-lg; } .panel-soft { @apply rounded-3xl border border-surface1/60 bg-base/40; } .glass-soft { @apply rounded-3xl bg-base/35 ring-1 ring-surface0/60 shadow-lg backdrop-blur-md; } .stat-card { @apply rounded-2xl border border-surface1/60 bg-base/40 p-3 shadow-md; } } @utility border-border { border-color: hsl(var(--border)); } body::before { content: ""; position: fixed; inset: 0; z-index: 1; pointer-events: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E"); opacity: var(--grain-opacity); mix-blend-mode: soft-light; }