A self-hosted orchestration system crafted for power users. composia.xyz
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514@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; }}