@import "tailwindcss"; @import "tw-animate-css"; @import "shadcn-svelte/tailwind.css"; @custom-variant dark (&:where(.dark, .dark *)); :root { --font-sans: ui-sans-serif, system-ui, sans-serif; --code-font-family: "JetBrains Mono", Consolas, monospace; --code-font-size: 14px; --code-line-height: 1.6; --code-background: #ffffff; --code-foreground: #24292e; --code-cursor: #24292e; --background: oklch(1 0 0); --foreground: oklch(0.145 0 0); --card: oklch(1 0 0); --card-foreground: oklch(0.145 0 0); --popover: oklch(1 0 0); --popover-foreground: oklch(0.145 0 0); --primary: oklch(0.205 0 0); --primary-hover: oklch(0.145 0 0); --primary-foreground: oklch(0.985 0 0); --secondary: oklch(0.97 0 0); --secondary-foreground: oklch(0.205 0 0); --muted: oklch(0.97 0 0); --muted-foreground: oklch(0.45 0 0); --accent: oklch(0.97 0 0); --accent-foreground: oklch(0.205 0 0); --destructive: oklch(0.5 0.2 27.325); --destructive-foreground: oklch(0.985 0 0); --destructive-subtle: hsl(0 85% 95%); --destructive-subtle-foreground: hsl(0 72% 35%); --border: oklch(0.922 0 0); --input: oklch(0.65 0 0); --ring: oklch(0.45 0 0); --success: oklch(0.94 0.06 155); --success-foreground: oklch(0.3 0.1 155); --warning: oklch(0.94 0.08 85); --warning-foreground: oklch(0.32 0.09 60); --info: oklch(0.94 0.05 250); --info-foreground: oklch(0.3 0.1 250); --radius: 0.625rem; --chart-1: oklch(0.87 0 0); --chart-2: oklch(0.556 0 0); --chart-3: oklch(0.439 0 0); --chart-4: oklch(0.371 0 0); --chart-5: oklch(0.269 0 0); --sidebar: oklch(0.985 0 0); --sidebar-foreground: oklch(0.145 0 0); --sidebar-primary: oklch(0.205 0 0); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.97 0 0); --sidebar-accent-foreground: oklch(0.205 0 0); --sidebar-border: oklch(0.922 0 0); --sidebar-ring: oklch(0.708 0 0); } .dark { --code-background: #0d1117; --code-foreground: #c9d1d9; --code-cursor: #ffffff; --background: oklch(0.145 0 0); --foreground: oklch(0.985 0 0); --card: oklch(0.205 0 0); --card-foreground: oklch(0.985 0 0); --popover: oklch(0.205 0 0); --popover-foreground: oklch(0.985 0 0); --secondary: oklch(0.269 0 0); --secondary-foreground: oklch(0.985 0 0); --muted: oklch(0.269 0 0); --muted-foreground: oklch(0.75 0 0); --accent: oklch(0.269 0 0); --accent-foreground: oklch(0.985 0 0); --destructive: oklch(0.704 0.191 22.216); --destructive-foreground: oklch(0.985 0 0); --destructive-subtle: hsl(0 45% 25%); --destructive-subtle-foreground: hsl(0 90% 85%); --border: oklch(1 0 0 / 10%); --input: oklch(1 0 0 / 35%); --primary: oklch(0.922 0 0); --primary-hover: oklch(0.985 0 0); --primary-foreground: oklch(0.205 0 0); --ring: oklch(0.75 0 0); --success: oklch(0.3 0.07 155); --success-foreground: oklch(0.9 0.08 155); --warning: oklch(0.32 0.07 70); --warning-foreground: oklch(0.91 0.1 85); --info: oklch(0.3 0.08 250); --info-foreground: oklch(0.9 0.06 250); --chart-1: oklch(0.87 0 0); --chart-2: oklch(0.556 0 0); --chart-3: oklch(0.439 0 0); --chart-4: oklch(0.371 0 0); --chart-5: oklch(0.269 0 0); --sidebar: oklch(0.205 0 0); --sidebar-foreground: oklch(0.985 0 0); --sidebar-primary: oklch(0.488 0.243 264.376); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.269 0 0); --sidebar-accent-foreground: oklch(0.985 0 0); --sidebar-border: oklch(1 0 0 / 10%); --sidebar-ring: oklch(0.556 0 0); } :root[data-accent="emerald"], .dark[data-accent="emerald"] { --primary: hsl(160 84% 39%); --primary-hover: hsl(160 84% 44%); --primary-foreground: oklch(0.145 0 0); } :root[data-accent="blue"], .dark[data-accent="blue"] { --primary: hsl(221 83% 48%); --primary-hover: hsl(221 83% 45%); --primary-foreground: oklch(0.985 0 0); } :root[data-accent="violet"], .dark[data-accent="violet"] { --primary: hsl(262 83% 58%); --primary-hover: hsl(262 83% 50%); --primary-foreground: oklch(0.985 0 0); } :root[data-accent="rose"], .dark[data-accent="rose"] { --primary: hsl(347 77% 45%); --primary-hover: hsl(347 77% 40%); --primary-foreground: oklch(0.985 0 0); } :root[data-accent="amber"], .dark[data-accent="amber"] { --primary: hsl(38 92% 50%); --primary-hover: hsl(38 92% 55%); --primary-foreground: oklch(0.145 0 0); } :root[data-accent="blue"] { --ring: hsl(221 83% 40%); } :root[data-accent="emerald"] { --ring: hsl(160 84% 25%); } :root[data-accent="violet"] { --ring: hsl(262 83% 45%); } :root[data-accent="rose"] { --ring: hsl(347 77% 40%); } :root[data-accent="amber"] { --ring: hsl(38 92% 30%); } .dark[data-accent="blue"] { --ring: hsl(221 83% 70%); } .dark[data-accent="emerald"] { --ring: hsl(160 70% 65%); } .dark[data-accent="violet"] { --ring: hsl(262 83% 72%); } .dark[data-accent="rose"] { --ring: hsl(347 77% 70%); } .dark[data-accent="amber"] { --ring: hsl(38 92% 65%); } @theme inline { --font-sans: ui-sans-serif, system-ui, sans-serif; --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-foreground: var(--card-foreground); --color-popover: var(--popover); --color-popover-foreground: var(--popover-foreground); --color-primary: var(--primary); --color-primary-hover: var(--primary-hover); --color-primary-foreground: var(--primary-foreground); --color-secondary: var(--secondary); --color-secondary-foreground: var(--secondary-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); --color-accent: var(--accent); --color-accent-foreground: var(--accent-foreground); --color-destructive: var(--destructive); --color-destructive-foreground: var(--destructive-foreground); --color-destructive-subtle: var(--destructive-subtle); --color-destructive-subtle-foreground: var(--destructive-subtle-foreground); --color-success: var(--success); --color-success-foreground: var(--success-foreground); --color-warning: var(--warning); --color-warning-foreground: var(--warning-foreground); --color-info: var(--info); --color-info-foreground: var(--info-foreground); --color-border: var(--border); --color-input: var(--input); --color-ring: var(--ring); --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); --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); --radius-2xl: calc(var(--radius) * 1.8); --radius-3xl: calc(var(--radius) * 2.2); --radius-4xl: calc(var(--radius) * 2.6); } @layer base { * { @apply border-border outline-ring/50; } html { @apply scroll-smooth font-sans; } body { @apply min-h-screen font-sans antialiased bg-background text-foreground; background-image: radial-gradient( circle at top left, color-mix(in oklab, var(--primary) 12%, transparent), transparent 24% ), radial-gradient( circle at top right, color-mix(in oklab, var(--primary) 6%, transparent), transparent 18% ), linear-gradient(180deg, var(--background) 0%, var(--background) 100%); background-attachment: fixed; } @media (max-width: 767px), (prefers-reduced-motion: reduce) { body { background-attachment: scroll; } } a { @apply text-foreground; } } @keyframes navigation-progress { from { transform: translateX(-100%); } to { transform: translateX(250%); } } @layer components { .navigation-progress { @apply fixed top-0 left-0 z-[100] h-0.5 w-2/5 bg-primary; animation: navigation-progress 1.1s ease-in-out infinite; } } @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } .navigation-progress { animation: none; width: 100%; transform: none; } } @layer components { .page-shell { @apply mx-auto w-full max-w-[1600px] px-4 py-6 sm:px-6 lg:px-8; } .page-shell-workbench { @apply mx-auto w-full max-w-[1800px] px-4 py-6 sm:px-6 lg:px-8; } .page-stack { @apply space-y-6; } .page-header { @apply flex flex-wrap items-start justify-between gap-4; } .page-heading { @apply min-w-0 space-y-1; } .page-title { @apply text-2xl font-semibold tracking-tight sm:text-3xl; } .page-description { @apply text-sm leading-6 text-muted-foreground; } .section-title { @apply text-base font-semibold tracking-tight; } .page-meta { @apply text-sm text-muted-foreground; } .section-header { @apply flex flex-wrap items-start justify-between gap-3; } .section-heading { @apply min-w-0 space-y-1; } .metric-label { @apply text-xs font-medium text-muted-foreground; } .empty-state { @apply rounded-lg border border-dashed bg-muted/20 px-4 py-8 text-sm text-muted-foreground; } .metric-card { @apply rounded-lg border bg-muted/20 px-4 py-3; } .inset-card { @apply rounded-lg border bg-background px-4 py-3; } .list-row { @apply block rounded-lg border bg-background px-4 py-3 transition-colors hover:bg-accent/60; } .stat-link { @apply rounded-lg border bg-background p-3 transition-colors hover:bg-accent/60; } .code-surface { @apply rounded-lg border bg-background p-4 font-mono text-xs leading-6 whitespace-pre-wrap break-words; } .terminal-surface { @apply min-w-0 max-w-full overflow-hidden rounded-lg border bg-background; } .terminal-surface[data-fixed-cols] { overflow-x: auto; } .terminal-surface[data-fixed-cols] .terminal-host { width: max(100%, calc(var(--terminal-cols) * 1ch + 24px)); min-width: calc(var(--terminal-cols) * 1ch + 24px); } .terminal-surface[data-fixed-cols] .wterm { width: 100%; max-width: none; height: 100% !important; overflow-x: auto; } .terminal-surface[data-fixed-cols] .term-grid { width: max(100%, calc(var(--terminal-cols) * 1ch)); min-width: calc(var(--terminal-cols) * 1ch); } .task-log-accessible { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: pre; } .task-log-accessible:focus { @apply mb-3 block rounded-lg border bg-background p-3 font-mono text-xs outline-none ring-2 ring-ring ring-offset-2; position: static; width: auto; height: 12rem; margin-top: 0; overflow: auto; clip: auto; white-space: pre-wrap; } .terminal-surface .wterm { --term-font-family: var(--code-font-family); --term-font-size: var(--code-font-size); --term-line-height: var(--code-line-height); --term-bg: var(--code-background); --term-fg: var(--code-foreground); --term-cursor: var(--code-cursor); --term-color-0: #3e3e3e; --term-color-1: #970b16; --term-color-2: #07962a; --term-color-3: #c5bb94; --term-color-4: #003e8a; --term-color-5: #e94691; --term-color-6: #7cc4df; --term-color-7: #b2b2b2; --term-color-8: #666666; --term-color-9: #de0000; --term-color-10: #7ac895; --term-color-11: #d7b600; --term-color-12: #2e6cba; --term-color-13: #f29592; --term-color-14: #00c7cb; --term-color-15: #ffffff; box-sizing: border-box; width: 100%; height: 100%; max-width: 100%; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; box-shadow: none; -webkit-overflow-scrolling: touch; } .terminal-surface .term-grid { min-height: 100%; contain: layout style; will-change: auto; } .dark .terminal-surface .wterm { --term-color-0: #000000; --term-color-1: #f78166; --term-color-2: #56d364; --term-color-3: #e3b341; --term-color-4: #6ca4f8; --term-color-5: #db61a2; --term-color-6: #2b7489; --term-color-7: #ffffff; --term-color-8: #4d4d4d; --term-color-9: #f78166; --term-color-10: #56d364; --term-color-11: #e3b341; --term-color-12: #6ca4f8; --term-color-13: #db61a2; --term-color-14: #2b7489; --term-color-15: #ffffff; } .toolbar-surface { @apply rounded-lg border bg-background p-2; } .scrollbar-none { -ms-overflow-style: none; scrollbar-width: none; } .scrollbar-none::-webkit-scrollbar { display: none; } .summary-grid { @apply grid gap-3 md:grid-cols-2 xl:grid-cols-4; } .nav-pill { @apply inline-flex h-8 shrink-0 items-center justify-center rounded-md border px-3 text-xs font-medium transition-colors sm:h-9 sm:text-sm; } .nav-pill-active { @apply bg-secondary text-secondary-foreground; } .nav-pill-inactive { @apply text-muted-foreground hover:bg-accent/80 hover:text-accent-foreground; } }