From 7227773fb1a6fb8dca3f4c84d2792cfc7d8ac132 Mon Sep 17 00:00:00 2001 From: MAHDTech Date: Fri, 16 Oct 2026 02:47:08 +1100 Subject: [PATCH] feat(landing): build interactive landing page with terminal emulator and telemetry comms (#4) --- config.toml | 4 + content/_index.md | 57 ++++ static/css/custom.css | 2 +- static/js/comms.js | 425 ++++++++++++++++++++++++++++++ static/js/terminal.js | 455 ++++++++++++++++++++++++++++++++ styles/input.css | 115 +++++++- templates/base.html | 2 +- templates/index.html | 597 ++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 1652 insertions(+), 5 deletions(-) create mode 100644 content/_index.md create mode 100644 static/js/comms.js create mode 100644 static/js/terminal.js create mode 100644 templates/index.html diff --git a/config.toml b/config.toml index d6b7064..9a85eae 100644 --- a/config.toml +++ b/config.toml @@ -38,6 +38,10 @@ github_org_url = "https://github.com/tars-cloud" og_image = "/images/og-banner.png" logo_path = "/images/tars-logo.svg" status_label = "SYS // NOMINAL" +hero_badge = "SYS // SOVEREIGN_MULTI_AGENT_RUNTIME // GUARDS_V3.5" +hero_headline = "Your AI Factory gives you tokens. TARS gives you governed outcomes" +hero_subtitle = "SOVEREIGN MULTI-AGENT ENGINEERING // GOVERNED BY GUARDS" +quickstart_cmd = "tars-run-issue --yolo 42" [[extra.menu_items]] name = "Docs" diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..9cc5974 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,57 @@ ++++ +title = "TARS Cloud // Governed Multi-Agent Engineering" +description = "Sovereign multi-agent engineering runtime governed by the GUARDS verification lifecycle, adversarial CASE != DOYLE verification, one human gate, and air-gapped zero-registry sovereignty." +sort_by = "weight" +template = "index.html" + +[extra] +hero_badge = "SYS // SOVEREIGN_MULTI_AGENT_RUNTIME // GUARDS_V3.5" +hero_headline = "Your AI Factory gives you tokens. TARS gives you governed outcomes" +hero_subtitle = "SOVEREIGN MULTI-AGENT ENGINEERING // GOVERNED BY GUARDS" +hero_summary = "TARS orchestrates specialized engineering spokes inside isolated git worktrees under deterministic verification gates. Builders never grade their own work, human review happens once at specification, and the entire runtime operates air-gapped with zero external registry dependencies." +cta_primary_label = "[QUICKSTART]" +cta_primary_url = "#terminal-console" +cta_secondary_label = "[DOCUMENTATION]" +cta_secondary_url = "/docs/" +cta_tertiary_label = "[ACCESS CONSOLE]" +cta_tertiary_url = "#comms-link" ++++ + +## Sovereign Multi-Agent Engineering + +Unconstrained token factories generate plausible patches without accountability, leaking regressions across branch boundaries and demanding constant human babysitting. +`TARS` replaces unstructured chat loops with a deterministic **Prime-and-Spokes** engineering runtime. +`TARS` Prime acts as the state-machine hub, delegating scoped contracts to specialized spokes (`KIPP`, `BRAND`, `ROMILLY`, `CASE`, and `DOYLE`) inside isolated git worktrees where every artifact is bound by SHA-256 digests. + +## Three Core Architectural Pillars + +### 1. Adversarial Physics (CASE != DOYLE) + +In `TARS`, the implementing spoke (`CASE`) is structurally forbidden from grading its own work (`CASE ≠ DOYLE`). +`CASE` writes code strictly within declared file boundaries inside an isolated worktree and commits a candidate revision. +An independent verification spoke (`DOYLE`) checks out the candidate revision in a separate verification environment, replays reproduction evidence (`evidence-generation-*.json`), enforces CRAP and coverage thresholds, and either certifies the contract or routes deterministic rework. + +### 2. One Human Gate with zero idle compute + +Traditional agent harnesses stall repeatedly on interactive tool-approval prompts, burning operator attention while compute sits idle. +`TARS` concentrates human judgment at a single architectural gate: `Cooper` ratifies the unified `spec.md`, `design.md`, and `structure.md` contract bundle once at the `U -> A` boundary. +Once ratified, autonomous execution waves (`--yolo`) drive `A.3 -> R.1 -> R.2 -> D.1 -> D.2 -> S.1 -> S.2` to completion with zero idle compute wait states. + +### 3. Sovereignty by Construction where air-gap is an empty registry + +`TARS` is engineered for sovereign infrastructure from day one, requiring zero mandatory SaaS control planes, zero npm runtime dependencies, and zero outbound telemetry webhooks. +Build and verification toolchains run locally through reproducible Nix / `devenv` profiles and content-addressed BLAKE3 `casita` repositories. +Operating inside a classified or disconnected enclave requires no special fork or degraded build flag: in `TARS`, an air-gap is simply an empty upstream registry. + +## The GUARDS Verification Lifecycle (`G -> U -> A -> R -> D -> S`) + +Every issue progresses through six deterministic stages with cryptographically verifiable contract handoffs: + +| Phase | Sub-Phases | Responsible Spoke | Contract Deliverables & Gate Invariants | +| :--- | :--- | :--- | :--- | +| **G // Gather** | `G.1`, `G.2` | `TARS` + `KIPP` | Operator context capture (`interview.md`), codebase research (`research.md`), and empirical reproduction receipts (`evidence-generation-*.json`). | +| **U // Understand** | `U.1` | `BRAND` | Formal specification (`spec.md`), file scope lock declaration, and evidence disposition (`evidence-disposition.json`). | +| **A // Architect** | `A.1`, `A.2`, `A.3` | `BRAND` + `ROMILLY` | Technical architecture (`design.md`), interface map (`structure.md`), **Cooper Human Gate Ratification**, and step-by-step execution plan (`plan.md`). | +| **R // Realize** | `R.1`, `R.2` | `CASE` + `DOYLE` | Isolated worktree implementation (`implementation-notes.md`) followed by adversarial `CASE != DOYLE` verification (`verification.md`). | +| **D // Demonstrate** | `D.1`, `D.2` | `DOYLE` + `KIPP` | End-to-end scenario testing (`test-report.md`) and synchronized architecture/operator documentation (`documentation.md`). | +| **S // Ship** | `S.1`, `S.2` | `DOYLE` + `KIPP` | Pull request assembly with full SHA-256 artifact lineage (`pr-manifest.md`) and independent spec/standards review (`review.md`). | diff --git a/static/css/custom.css b/static/css/custom.css index e54864d..ee31235 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -1,2 +1,2 @@ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--spacing:.25rem;--container-3xl:48rem;--container-4xl:56rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-relaxed:1.625;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-obsidian:#0a0a0c;--color-surface-raised:#121318;--color-border:#27272a;--color-accent-cyan:#00f0ff;--color-accent-cyan-bright:#00f3ff;--color-accent-amber:#ffb700;--color-text-primary:#f4f4f6;--color-text-muted:#a1a1aa;--color-status-nominal:#10b981;--color-status-fault:#ef4444;--shadow-glow-cyan:0 0 18px #00f0ff59;--shadow-glow-amber:0 0 18px #ffb70059}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.top-0{top:0}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-inline:auto}.my-6{margin-block:calc(var(--spacing) * 6)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-auto{margin-top:auto}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-16{height:calc(var(--spacing) * 16)}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-7xl{max-width:var(--container-7xl)}.flex-1{flex:1}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:var(--spacing)}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-accent-amber\/60{border-color:#ffb70099}@supports (color:color-mix(in lab, red, red)){.border-accent-amber\/60{border-color:color-mix(in oklab, var(--color-accent-amber) 60%, transparent)}}.border-accent-cyan{border-color:var(--color-accent-cyan)}.border-border{border-color:var(--color-border)}.border-transparent{border-color:#0000}.bg-accent-amber{background-color:var(--color-accent-amber)}.bg-accent-cyan{background-color:var(--color-accent-cyan)}.bg-obsidian{background-color:var(--color-obsidian)}.bg-obsidian\/60{background-color:#0a0a0c99}@supports (color:color-mix(in lab, red, red)){.bg-obsidian\/60{background-color:color-mix(in oklab, var(--color-obsidian) 60%, transparent)}}.bg-obsidian\/90{background-color:#0a0a0ce6}@supports (color:color-mix(in lab, red, red)){.bg-obsidian\/90{background-color:color-mix(in oklab, var(--color-obsidian) 90%, transparent)}}.bg-obsidian\/95{background-color:#0a0a0cf2}@supports (color:color-mix(in lab, red, red)){.bg-obsidian\/95{background-color:color-mix(in oklab, var(--color-obsidian) 95%, transparent)}}.bg-status-nominal{background-color:var(--color-status-nominal)}.bg-surface-raised{background-color:var(--color-surface-raised)}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-accent-amber{color:var(--color-accent-amber)}.text-accent-cyan{color:var(--color-accent-cyan)}.text-border{color:var(--color-border)}.text-obsidian{color:var(--color-obsidian)}.text-text-muted{color:var(--color-text-muted)}.text-text-primary{color:var(--color-text-primary)}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-90{opacity:.9}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:text-accent-cyan:is(:where(.group):hover *){color:var(--color-accent-cyan)}.group-hover\:underline:is(:where(.group):hover *){text-decoration-line:underline}}.selection\:bg-accent-cyan\/20 ::selection{background-color:#00f0ff33}@supports (color:color-mix(in lab, red, red)){.selection\:bg-accent-cyan\/20 ::selection{background-color:color-mix(in oklab, var(--color-accent-cyan) 20%, transparent)}}.selection\:bg-accent-cyan\/20::selection{background-color:#00f0ff33}@supports (color:color-mix(in lab, red, red)){.selection\:bg-accent-cyan\/20::selection{background-color:color-mix(in oklab, var(--color-accent-cyan) 20%, transparent)}}.selection\:text-accent-cyan ::selection{color:var(--color-accent-cyan)}.selection\:text-accent-cyan::selection{color:var(--color-accent-cyan)}@media (hover:hover){.hover\:border-accent-cyan:hover{border-color:var(--color-accent-cyan)}.hover\:border-border:hover{border-color:var(--color-border)}.hover\:bg-accent-cyan-bright:hover{background-color:var(--color-accent-cyan-bright)}.hover\:bg-accent-cyan\/10:hover{background-color:#00f0ff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent-cyan\/10:hover{background-color:color-mix(in oklab, var(--color-accent-cyan) 10%, transparent)}}.hover\:text-accent-cyan:hover{color:var(--color-accent-cyan)}}.focus\:not-sr-only:focus{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.focus\:fixed:focus{position:fixed}.focus\:top-3:focus{top:calc(var(--spacing) * 3)}.focus\:left-3:focus{left:calc(var(--spacing) * 3)}.focus\:z-50:focus{z-index:50}.focus\:border:focus{border-style:var(--tw-border-style);border-width:1px}.focus\:border-accent-cyan:focus{border-color:var(--color-accent-cyan)}.focus\:bg-surface-raised:focus{background-color:var(--color-surface-raised)}.focus\:px-4:focus{padding-inline:calc(var(--spacing) * 4)}.focus\:py-2:focus{padding-block:calc(var(--spacing) * 2)}.focus\:font-mono:focus{font-family:var(--font-mono)}.focus\:text-xs:focus{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.focus\:text-accent-cyan:focus{color:var(--color-accent-cyan)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-accent-cyan:focus{--tw-ring-color:var(--color-accent-cyan)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media (min-width:40rem){.sm\:my-12{margin-block:calc(var(--spacing) * 12)}.sm\:inline-flex{display:inline-flex}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:p-10{padding:calc(var(--spacing) * 10)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:py-12{padding-block:calc(var(--spacing) * 12)}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}@media (min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}}@media (min-width:64rem){.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}}}:root{--color-obsidian:#0a0a0c;--color-surface-raised:#121318;--color-border:#27272a;--color-accent-cyan:#00f0ff;--color-accent-cyan-bright:#00f3ff;--color-accent-amber:#ffb700;--color-text-primary:#f4f4f6;--color-text-muted:#a1a1aa;--color-phase-g:#00f0ff;--color-phase-u:#38bdf8;--color-phase-a:#a855f7;--color-phase-r:#ffb700;--color-phase-d:#22c55e;--color-phase-s:#10b981;--color-status-nominal:#10b981;--color-status-warn:#ffb700;--color-status-fault:#ef4444;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--shadow-glow-cyan:0 0 18px #00f0ff59;--shadow-glow-amber:0 0 18px #ffb70059}html,body{background-color:var(--color-obsidian);color:var(--color-text-primary);font-family:var(--font-sans);color-scheme:dark}code,pre,kbd,samp,.font-mono{font-family:var(--font-mono)}.prose-tars{color:var(--color-text-primary);line-height:1.75}.prose-tars h1,.prose-tars h2,.prose-tars h3,.prose-tars h4{font-family:var(--font-mono);color:var(--color-text-primary);letter-spacing:-.02em;margin-top:2rem;margin-bottom:.75rem;font-weight:700}.prose-tars p,.prose-tars ul,.prose-tars ol,.prose-tars blockquote,.prose-tars pre,.prose-tars table{margin-bottom:1.25rem}.prose-tars a{color:var(--color-accent-cyan);text-underline-offset:4px;text-decoration:underline}.prose-tars a:hover{color:var(--color-accent-cyan-bright)}.prose-tars code{background-color:var(--color-surface-raised);border:1px solid var(--color-border);color:var(--color-accent-cyan);padding:.125rem .375rem;font-size:.875em}.prose-tars pre{background-color:var(--color-obsidian);border:1px solid var(--color-border);padding:1rem;overflow-x:auto}.prose-tars pre code{color:var(--color-text-primary);background-color:#0000;border:0;padding:0}.prose-tars blockquote{border-left:2px solid var(--color-accent-amber);color:var(--color-text-muted);padding-left:1rem}.prose-tars table{border-collapse:collapse;width:100%;font-size:.875rem}.prose-tars th,.prose-tars td{border:1px solid var(--color-border);text-align:left;padding:.5rem .75rem}.prose-tars th{background-color:var(--color-surface-raised);font-family:var(--font-mono);color:var(--color-accent-cyan)}.crt-scanlines,.scanline-overlay{background-image:repeating-linear-gradient(#fff0 0 2px,#00f0ff0a 3px,#00000038 4px)}.scanline-overlay{pointer-events:none}.glow-cyan{box-shadow:var(--shadow-glow-cyan)}.glow-amber{box-shadow:var(--shadow-glow-amber)}.text-glow-cyan{text-shadow:0 0 12px #00f0ff73}.text-glow-amber{text-shadow:0 0 12px #ffb70073}.border-glow-cyan{border-color:var(--color-accent-cyan);box-shadow:0 0 12px #00f0ff40}@keyframes tars-pulse{0%,to{opacity:1;box-shadow:0 0 8px}50%{opacity:.35;box-shadow:0 0 2px}}.status-pulse{animation:2.2s cubic-bezier(.4,0,.6,1) infinite tars-pulse}.status-chip{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--color-border);background-color:var(--color-obsidian);padding:.25rem .5rem;font-size:.6875rem;line-height:1}.status-chip-nominal{color:var(--color-status-nominal);border-color:#10b98173}.status-chip-amber{color:var(--color-accent-amber);border-color:#ffb70073}.status-chip-danger{color:var(--color-status-fault);border-color:#ef444473}.tactical-panel{background-color:var(--color-surface-raised);border:1px solid var(--color-border)}@media (prefers-contrast:more){html,body{color:#fff;background-color:#000}.crt-scanlines,.scanline-overlay{background-image:none!important}.glow-cyan,.glow-amber,.border-glow-cyan{box-shadow:none!important}.text-glow-cyan,.text-glow-amber{text-shadow:none!important}.tactical-panel,.status-chip{border-color:#f4f4f6!important}}@media (prefers-reduced-motion:reduce){.status-pulse{animation:none!important}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000} \ No newline at end of file +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--spacing:.25rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-relaxed:1.625;--blur-sm:8px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-obsidian:#0a0a0c;--color-surface-raised:#121318;--color-border:#27272a;--color-accent-cyan:#00f0ff;--color-accent-cyan-bright:#00f3ff;--color-accent-amber:#ffb700;--color-text-primary:#f4f4f6;--color-text-muted:#a1a1aa;--color-phase-g:#00f0ff;--color-phase-u:#38bdf8;--color-phase-a:#a855f7;--color-phase-r:#ffb700;--color-phase-d:#22c55e;--color-phase-s:#10b981;--color-status-nominal:#10b981;--color-status-fault:#ef4444;--shadow-glow-cyan:0 0 18px #00f0ff59;--shadow-glow-amber:0 0 18px #ffb70059}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.top-0{top:0}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-inline:auto}.my-6{margin-block:calc(var(--spacing) * 6)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-auto{margin-top:auto}.mr-1{margin-right:var(--spacing)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:var(--spacing)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-16{height:calc(var(--spacing) * 16)}.h-80{height:calc(var(--spacing) * 80)}.max-h-36{max-height:calc(var(--spacing) * 36)}.max-h-56{max-height:calc(var(--spacing) * 56)}.min-h-\[1rem\]{min-height:1rem}.min-h-\[calc\(100vh-4rem\)\]{min-height:calc(100vh - 4rem)}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-7xl{max-width:var(--container-7xl)}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-1\.5{column-gap:calc(var(--spacing) * 1.5)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:var(--spacing)}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-accent-amber{border-color:var(--color-accent-amber)}.border-accent-amber\/50{border-color:#ffb70080}@supports (color:color-mix(in lab, red, red)){.border-accent-amber\/50{border-color:color-mix(in oklab, var(--color-accent-amber) 50%, transparent)}}.border-accent-amber\/60{border-color:#ffb70099}@supports (color:color-mix(in lab, red, red)){.border-accent-amber\/60{border-color:color-mix(in oklab, var(--color-accent-amber) 60%, transparent)}}.border-accent-cyan{border-color:var(--color-accent-cyan)}.border-accent-cyan\/40{border-color:#00f0ff66}@supports (color:color-mix(in lab, red, red)){.border-accent-cyan\/40{border-color:color-mix(in oklab, var(--color-accent-cyan) 40%, transparent)}}.border-accent-cyan\/50{border-color:#00f0ff80}@supports (color:color-mix(in lab, red, red)){.border-accent-cyan\/50{border-color:color-mix(in oklab, var(--color-accent-cyan) 50%, transparent)}}.border-border{border-color:var(--color-border)}.border-border\/40{border-color:#27272a66}@supports (color:color-mix(in lab, red, red)){.border-border\/40{border-color:color-mix(in oklab, var(--color-border) 40%, transparent)}}.border-border\/80{border-color:#27272acc}@supports (color:color-mix(in lab, red, red)){.border-border\/80{border-color:color-mix(in oklab, var(--color-border) 80%, transparent)}}.border-transparent{border-color:#0000}.bg-accent-amber{background-color:var(--color-accent-amber)}.bg-accent-amber\/80{background-color:#ffb700cc}@supports (color:color-mix(in lab, red, red)){.bg-accent-amber\/80{background-color:color-mix(in oklab, var(--color-accent-amber) 80%, transparent)}}.bg-accent-cyan{background-color:var(--color-accent-cyan)}.bg-accent-cyan\/15{background-color:#00f0ff26}@supports (color:color-mix(in lab, red, red)){.bg-accent-cyan\/15{background-color:color-mix(in oklab, var(--color-accent-cyan) 15%, transparent)}}.bg-obsidian{background-color:var(--color-obsidian)}.bg-obsidian\/60{background-color:#0a0a0c99}@supports (color:color-mix(in lab, red, red)){.bg-obsidian\/60{background-color:color-mix(in oklab, var(--color-obsidian) 60%, transparent)}}.bg-obsidian\/80{background-color:#0a0a0ccc}@supports (color:color-mix(in lab, red, red)){.bg-obsidian\/80{background-color:color-mix(in oklab, var(--color-obsidian) 80%, transparent)}}.bg-obsidian\/85{background-color:#0a0a0cd9}@supports (color:color-mix(in lab, red, red)){.bg-obsidian\/85{background-color:color-mix(in oklab, var(--color-obsidian) 85%, transparent)}}.bg-obsidian\/90{background-color:#0a0a0ce6}@supports (color:color-mix(in lab, red, red)){.bg-obsidian\/90{background-color:color-mix(in oklab, var(--color-obsidian) 90%, transparent)}}.bg-obsidian\/95{background-color:#0a0a0cf2}@supports (color:color-mix(in lab, red, red)){.bg-obsidian\/95{background-color:color-mix(in oklab, var(--color-obsidian) 95%, transparent)}}.bg-status-fault\/80{background-color:#ef4444cc}@supports (color:color-mix(in lab, red, red)){.bg-status-fault\/80{background-color:color-mix(in oklab, var(--color-status-fault) 80%, transparent)}}.bg-status-nominal{background-color:var(--color-status-nominal)}.bg-status-nominal\/80{background-color:#10b981cc}@supports (color:color-mix(in lab, red, red)){.bg-status-nominal\/80{background-color:color-mix(in oklab, var(--color-status-nominal) 80%, transparent)}}.bg-surface-raised{background-color:var(--color-surface-raised)}.bg-surface-raised\/60{background-color:#12131899}@supports (color:color-mix(in lab, red, red)){.bg-surface-raised\/60{background-color:color-mix(in oklab, var(--color-surface-raised) 60%, transparent)}}.bg-transparent{background-color:#0000}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent-amber{color:var(--color-accent-amber)}.text-accent-cyan{color:var(--color-accent-cyan)}.text-border{color:var(--color-border)}.text-obsidian{color:var(--color-obsidian)}.text-status-nominal{color:var(--color-status-nominal)}.text-text-muted{color:var(--color-text-muted)}.text-text-primary{color:var(--color-text-primary)}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-90{opacity:.9}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:text-accent-cyan:is(:where(.group):hover *){color:var(--color-accent-cyan)}.group-hover\:underline:is(:where(.group):hover *){text-decoration-line:underline}}.selection\:bg-accent-cyan\/20 ::selection{background-color:#00f0ff33}@supports (color:color-mix(in lab, red, red)){.selection\:bg-accent-cyan\/20 ::selection{background-color:color-mix(in oklab, var(--color-accent-cyan) 20%, transparent)}}.selection\:bg-accent-cyan\/20::selection{background-color:#00f0ff33}@supports (color:color-mix(in lab, red, red)){.selection\:bg-accent-cyan\/20::selection{background-color:color-mix(in oklab, var(--color-accent-cyan) 20%, transparent)}}.selection\:text-accent-cyan ::selection{color:var(--color-accent-cyan)}.selection\:text-accent-cyan::selection{color:var(--color-accent-cyan)}.placeholder\:text-text-muted\/60::placeholder{color:#a1a1aa99}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-text-muted\/60::placeholder{color:color-mix(in oklab, var(--color-text-muted) 60%, transparent)}}@media (hover:hover){.hover\:border-accent-amber:hover{border-color:var(--color-accent-amber)}.hover\:border-accent-cyan:hover{border-color:var(--color-accent-cyan)}.hover\:border-border:hover{border-color:var(--color-border)}.hover\:bg-accent-amber\/10:hover{background-color:#ffb7001a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent-amber\/10:hover{background-color:color-mix(in oklab, var(--color-accent-amber) 10%, transparent)}}.hover\:bg-accent-cyan:hover{background-color:var(--color-accent-cyan)}.hover\:bg-accent-cyan-bright:hover{background-color:var(--color-accent-cyan-bright)}.hover\:bg-accent-cyan\/10:hover{background-color:#00f0ff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent-cyan\/10:hover{background-color:color-mix(in oklab, var(--color-accent-cyan) 10%, transparent)}}.hover\:text-accent-amber:hover{color:var(--color-accent-amber)}.hover\:text-accent-cyan:hover{color:var(--color-accent-cyan)}.hover\:text-obsidian:hover{color:var(--color-obsidian)}}.focus\:not-sr-only:focus{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.focus\:fixed:focus{position:fixed}.focus\:top-3:focus{top:calc(var(--spacing) * 3)}.focus\:left-3:focus{left:calc(var(--spacing) * 3)}.focus\:z-50:focus{z-index:50}.focus\:border:focus{border-style:var(--tw-border-style);border-width:1px}.focus\:border-accent-cyan:focus{border-color:var(--color-accent-cyan)}.focus\:bg-surface-raised:focus{background-color:var(--color-surface-raised)}.focus\:px-4:focus{padding-inline:calc(var(--spacing) * 4)}.focus\:py-2:focus{padding-block:calc(var(--spacing) * 2)}.focus\:font-mono:focus{font-family:var(--font-mono)}.focus\:text-xs:focus{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.focus\:text-accent-cyan:focus{color:var(--color-accent-cyan)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-accent-amber:focus{--tw-ring-color:var(--color-accent-amber)}.focus\:ring-accent-cyan:focus{--tw-ring-color:var(--color-accent-cyan)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media (min-width:40rem){.sm\:my-12{margin-block:calc(var(--spacing) * 12)}.sm\:inline-flex{display:inline-flex}.sm\:h-96{height:calc(var(--spacing) * 96)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:p-10{padding:calc(var(--spacing) * 10)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:py-6{padding-block:calc(var(--spacing) * 6)}.sm\:py-12{padding-block:calc(var(--spacing) * 12)}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}}@media (min-width:64rem){.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}.lg\:py-10{padding-block:calc(var(--spacing) * 10)}.lg\:py-16{padding-block:calc(var(--spacing) * 16)}.lg\:text-\[2\.5rem\]{font-size:2.5rem}}}:root{--color-obsidian:#0a0a0c;--color-surface-raised:#121318;--color-border:#27272a;--color-accent-cyan:#00f0ff;--color-accent-cyan-bright:#00f3ff;--color-accent-amber:#ffb700;--color-text-primary:#f4f4f6;--color-text-muted:#a1a1aa;--color-phase-g:#00f0ff;--color-phase-u:#38bdf8;--color-phase-a:#a855f7;--color-phase-r:#ffb700;--color-phase-d:#22c55e;--color-phase-s:#10b981;--color-status-nominal:#10b981;--color-status-warn:#ffb700;--color-status-fault:#ef4444;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--shadow-glow-cyan:0 0 18px #00f0ff59;--shadow-glow-amber:0 0 18px #ffb70059}html,body{background-color:var(--color-obsidian);color:var(--color-text-primary);font-family:var(--font-sans);color-scheme:dark}code,pre,kbd,samp,.font-mono{font-family:var(--font-mono)}.prose-tars{color:var(--color-text-primary);line-height:1.75}.prose-tars h1,.prose-tars h2,.prose-tars h3,.prose-tars h4{font-family:var(--font-mono);color:var(--color-text-primary);letter-spacing:-.02em;margin-top:2rem;margin-bottom:.75rem;font-weight:700}.prose-tars p,.prose-tars ul,.prose-tars ol,.prose-tars blockquote,.prose-tars pre,.prose-tars table{margin-bottom:1.25rem}.prose-tars a{color:var(--color-accent-cyan);text-underline-offset:4px;text-decoration:underline}.prose-tars a:hover{color:var(--color-accent-cyan-bright)}.prose-tars code{background-color:var(--color-surface-raised);border:1px solid var(--color-border);color:var(--color-accent-cyan);padding:.125rem .375rem;font-size:.875em}.prose-tars pre{background-color:var(--color-obsidian);border:1px solid var(--color-border);padding:1rem;overflow-x:auto}.prose-tars pre code{color:var(--color-text-primary);background-color:#0000;border:0;padding:0}.prose-tars blockquote{border-left:2px solid var(--color-accent-amber);color:var(--color-text-muted);padding-left:1rem}.prose-tars table{border-collapse:collapse;width:100%;font-size:.875rem}.prose-tars th,.prose-tars td{border:1px solid var(--color-border);text-align:left;padding:.5rem .75rem}.prose-tars th{background-color:var(--color-surface-raised);font-family:var(--font-mono);color:var(--color-accent-cyan)}.crt-scanlines,.scanline-overlay{background-image:repeating-linear-gradient(#fff0 0 2px,#00f0ff0a 3px,#00000038 4px)}.scanline-overlay{pointer-events:none}.glow-cyan{box-shadow:var(--shadow-glow-cyan)}.glow-amber{box-shadow:var(--shadow-glow-amber)}.text-glow-cyan{text-shadow:0 0 12px #00f0ff73}.text-glow-amber{text-shadow:0 0 12px #ffb70073}.border-glow-cyan{border-color:var(--color-accent-cyan);box-shadow:0 0 12px #00f0ff40}@keyframes tars-pulse{0%,to{opacity:1;box-shadow:0 0 8px}50%{opacity:.35;box-shadow:0 0 2px}}.status-pulse{animation:2.2s cubic-bezier(.4,0,.6,1) infinite tars-pulse}.status-chip{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--color-border);background-color:var(--color-obsidian);padding:.25rem .5rem;font-size:.6875rem;line-height:1}.status-chip-nominal{color:var(--color-status-nominal);border-color:#10b98173}.status-chip-amber{color:var(--color-accent-amber);border-color:#ffb70073}.status-chip-danger{color:var(--color-status-fault);border-color:#ef444473}.tactical-panel{background-color:var(--color-surface-raised);border:1px solid var(--color-border)}@keyframes tars-cursor-blink{0%,49%{opacity:1}50%,to{opacity:0}}.cursor-blink{animation:1.05s step-end infinite tars-cursor-blink}@keyframes tars-breathe-cyan{0%,to{border-color:var(--color-accent-cyan);box-shadow:0 0 12px #00f0ff40}50%{border-color:var(--color-accent-cyan-bright);box-shadow:0 0 24px #00f3ff8c}}.cta-breathe-cyan{animation:2.8s ease-in-out infinite tars-breathe-cyan}.phase-chip-g,.phase-chip-u,.phase-chip-a,.phase-chip-r,.phase-chip-d,.phase-chip-s{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--color-border);background-color:var(--color-obsidian);padding:.2rem .45rem;font-size:.6875rem;font-weight:700;line-height:1}.phase-chip-g{color:var(--color-phase-g);border-color:#00f0ff73}.phase-chip-u{color:var(--color-phase-u);border-color:#38bdf873}.phase-chip-a{color:var(--color-phase-a);border-color:#a855f773}.phase-chip-r{color:var(--color-phase-r);border-color:#ffb70073}.phase-chip-d{color:var(--color-phase-d);border-color:#22c55e73}.phase-chip-s{color:var(--color-phase-s);border-color:#10b98173}.terminal-scroll{scrollbar-width:thin;scrollbar-color:var(--color-border) var(--color-obsidian)}.terminal-scroll::-webkit-scrollbar{width:6px;height:6px}.terminal-scroll::-webkit-scrollbar-track{background:var(--color-obsidian)}.terminal-scroll::-webkit-scrollbar-thumb{background-color:var(--color-border);border:1px solid var(--color-obsidian)}@media (prefers-contrast:more){html,body{color:#fff;background-color:#000}.crt-scanlines,.scanline-overlay{background-image:none!important}.glow-cyan,.glow-amber,.border-glow-cyan,.cta-breathe-cyan{box-shadow:none!important}.text-glow-cyan,.text-glow-amber{text-shadow:none!important}.tactical-panel,.status-chip,.phase-chip-g,.phase-chip-u,.phase-chip-a,.phase-chip-r,.phase-chip-d,.phase-chip-s{border-color:#f4f4f6!important}}@media (prefers-reduced-motion:reduce){.status-pulse,.cursor-blink,.cta-breathe-cyan{animation:none!important}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000} \ No newline at end of file diff --git a/static/js/comms.js b/static/js/comms.js new file mode 100644 index 0000000..8970b70 --- /dev/null +++ b/static/js/comms.js @@ -0,0 +1,425 @@ +(() => { + const TELEMETRY_EVENTS = [ + { + phase: "G.2", + chipClass: "phase-chip-g", + route: "PRIME -> KIPP", + summary: "harvest_evidence(issue=#42) -> sha256:007dd10e", + receipt: "RECEIPT // 007dd10e" + }, + { + phase: "U.1", + chipClass: "phase-chip-u", + route: "BRAND -> PRIME", + summary: "submit_contract(spec.md, evidence-disposition.json)", + receipt: "SCOPE_LOCK // 8_FILES" + }, + { + phase: "A.2", + chipClass: "phase-chip-a", + route: "COOPER -> PRIME", + summary: "ratify_bundle(spec.md, design.md, structure.md) [GATE_OPEN]", + receipt: "GATE // RATIFIED" + }, + { + phase: "A.3", + chipClass: "phase-chip-a", + route: "PRIME -> ROMILLY", + summary: "sequence_execution_plan(steps=6, scope_lock=enforced)", + receipt: "PLAN // 5feaba8e" + }, + { + phase: "R.1", + chipClass: "phase-chip-r", + route: "CASE -> PRIME", + summary: "commit_worktree(feat/landing, files=8, npm_deps=0)", + receipt: "WORKTREE // ISOLATED" + }, + { + phase: "R.2", + chipClass: "phase-chip-r", + route: "DOYLE -> PRIME", + summary: "adversarial_verify(case!=doyle, devenv_test=PASS)", + receipt: "CASE!=DOYLE // PASS" + }, + { + phase: "D.1", + chipClass: "phase-chip-d", + route: "DOYLE -> PRIME", + summary: "verify_artifacts(zola_check=0_errors, pagefind=indexed)", + receipt: "VERIFY // 0_ERRORS" + }, + { + phase: "S.2", + chipClass: "phase-chip-s", + route: "PRIME -> DOYLE", + summary: "seal_pr_review(status=APPROVED, airgap_bundle=READY)", + receipt: "SHIP // READY" + } + ]; + + const MAX_FEED_ITEMS = 12; + let eventCursor = 0; + let totalDispatchedFrames = 4; + let streamActive = true; + let streamIntervalId = null; + let latestFrameSummary = + "R.2 | DOYLE -> PRIME | adversarial_verify(case!=doyle, devenv_test=PASS)"; + + const isReducedMotion = () => + Boolean( + typeof window !== "undefined" && + window.matchMedia && + window.matchMedia("(prefers-reduced-motion: reduce)").matches + ); + + const readFormState = (overrides = {}) => { + const callsignEl = document.getElementById("comms-callsign"); + const topologyEl = document.getElementById("comms-topology"); + const messageEl = document.getElementById("comms-message"); + + const callsign = + overrides.callsign !== undefined + ? overrides.callsign + : (callsignEl && callsignEl.value.trim()) || "OPERATOR // SOVEREIGN-NODE-01"; + const topology = + overrides.topology !== undefined + ? overrides.topology + : (topologyEl && topologyEl.value.trim()) || "AIRGAP_ENCLAVE // ZERO_REGISTRY"; + const message = + overrides.message !== undefined + ? overrides.message + : (messageEl && messageEl.value.trim()) || + "Requesting sovereign runtime provisioning brief and v3.5 airgap bundle verification keys."; + const timestamp = + overrides.timestamp || new Date().toISOString(); + const frame = overrides.latestFrame || latestFrameSummary; + + return { + callsign, + topology, + message, + timestamp, + latestFrame: frame + }; + }; + + const buildTelemetryPayload = (state = {}) => { + const resolved = readFormState(state); + const lines = [ + "=== TARS_CLOUD // RFC_6068_TELEMETRY_DISPATCH ===", + `TIMESTAMP_UTC: ${resolved.timestamp}`, + `OPERATOR_CALLSIGN: ${resolved.callsign}`, + `DEPLOYMENT_TOPOLOGY: ${resolved.topology}`, + "PROTOCOL_STATE: GUARDS_V3.5 // CASE_NEQ_DOYLE // AIRGAP_READY", + `LATEST_TELEMETRY_FRAME: ${resolved.latestFrame}`, + "--- OPERATOR_MESSAGE ---", + resolved.message, + "=== END_TELEMETRY_DISPATCH ===" + ]; + return lines.join("\r\n"); + }; + + const buildMailtoUri = (state = {}) => { + const resolved = readFormState(state); + const subject = `[TARS_COMMS_LINK] ${resolved.callsign} // ${resolved.topology}`; + const body = buildTelemetryPayload(resolved); + return `mailto:cooper@tars-cloud.ai?subject=${encodeURIComponent( + subject + )}&body=${encodeURIComponent(body)}`; + }; + + const syncCommsPreview = () => { + const state = readFormState(); + const payload = buildTelemetryPayload(state); + const mailtoUri = buildMailtoUri(state); + + const previewEl = document.getElementById("comms-payload-preview"); + const mailtoAnchor = document.getElementById("comms-mailto-anchor"); + const modalUriEl = document.getElementById("comms-modal-uri"); + const modalBodyEl = document.getElementById("comms-modal-body"); + const modalMailtoEl = document.getElementById("comms-modal-mailto-link"); + + if (previewEl) { + previewEl.textContent = payload; + } + if (mailtoAnchor) { + mailtoAnchor.setAttribute("href", mailtoUri); + } + if (modalUriEl) { + modalUriEl.textContent = mailtoUri; + } + if (modalBodyEl) { + modalBodyEl.textContent = payload; + } + if (modalMailtoEl) { + modalMailtoEl.setAttribute("href", mailtoUri); + } + }; + + const setStatusMessage = (text) => { + const statusEl = document.getElementById("comms-status-msg"); + if (!statusEl) return; + statusEl.textContent = text; + }; + + const copyTextToClipboard = async (text) => { + if ( + typeof navigator !== "undefined" && + navigator.clipboard && + typeof navigator.clipboard.writeText === "function" + ) { + try { + await navigator.clipboard.writeText(text); + return true; + } catch (_err) { + // Fall through to textarea copy fallback + } + } + + if (typeof document === "undefined") return false; + try { + const helper = document.createElement("textarea"); + helper.value = text; + helper.setAttribute("readonly", ""); + helper.style.position = "fixed"; + helper.style.opacity = "0"; + document.body.appendChild(helper); + helper.select(); + const copied = document.execCommand("copy"); + document.body.removeChild(helper); + return Boolean(copied); + } catch (_err) { + return false; + } + }; + + const openFallbackModal = () => { + syncCommsPreview(); + const modal = document.getElementById("comms-fallback-modal"); + if (!modal) return; + modal.classList.remove("hidden"); + const copyBtn = document.getElementById("comms-modal-copy-btn"); + if (copyBtn) { + copyBtn.focus(); + } + }; + + const closeFallbackModal = () => { + const modal = document.getElementById("comms-fallback-modal"); + if (!modal) return; + modal.classList.add("hidden"); + }; + + const pushTelemetryEvent = (customEvent) => { + const feedEl = document.getElementById("telemetry-feed"); + const counterEl = document.getElementById("telemetry-counter"); + const item = + customEvent || TELEMETRY_EVENTS[eventCursor % TELEMETRY_EVENTS.length]; + eventCursor = (eventCursor + 1) % TELEMETRY_EVENTS.length; + totalDispatchedFrames += 1; + + const utcStamp = new Date().toISOString().slice(11, 19) + "Z"; + latestFrameSummary = `${item.phase} | ${item.route} | ${item.summary}`; + + if (counterEl) { + const padded = String(totalDispatchedFrames).padStart(2, "0"); + counterEl.textContent = `FRAMES: ${padded}`; + } + + if (feedEl) { + const row = document.createElement("div"); + row.className = + "p-2 border border-border bg-surface-raised/60 flex flex-wrap items-center justify-between gap-2"; + + const left = document.createElement("div"); + + const badge = document.createElement("span"); + badge.className = `${item.chipClass || "phase-chip-g"} mr-1.5`; + badge.textContent = item.phase; + + const route = document.createElement("span"); + route.className = "text-accent-cyan font-semibold"; + route.textContent = item.route; + + const summary = document.createElement("span"); + summary.className = "text-text-primary ml-1"; + summary.textContent = item.summary; + + left.appendChild(badge); + left.appendChild(route); + left.appendChild(summary); + + const right = document.createElement("span"); + right.className = "text-[10px] text-text-muted"; + right.textContent = `${utcStamp} // ${item.receipt || "VERIFIED"}`; + + row.appendChild(left); + row.appendChild(right); + + feedEl.appendChild(row); + + while (feedEl.children.length > MAX_FEED_ITEMS) { + feedEl.removeChild(feedEl.firstElementChild); + } + + feedEl.scrollTop = feedEl.scrollHeight; + } + + syncCommsPreview(); + }; + + const updateStreamStatusUI = () => { + const badgeEl = document.getElementById("telemetry-status-badge"); + const toggleBtn = document.getElementById("telemetry-toggle-btn"); + + if (badgeEl) { + badgeEl.textContent = streamActive ? "STREAM // ACTIVE" : "STREAM // PAUSED"; + badgeEl.className = streamActive + ? "status-chip status-chip-nominal" + : "status-chip status-chip-amber"; + } + if (toggleBtn) { + toggleBtn.textContent = streamActive ? "[PAUSE_STREAM]" : "[RESUME_STREAM]"; + } + }; + + const startStreamTimer = () => { + if (streamIntervalId) { + clearInterval(streamIntervalId); + streamIntervalId = null; + } + if (!streamActive || isReducedMotion()) return; + streamIntervalId = setInterval(() => { + if (streamActive) { + pushTelemetryEvent(); + } + }, 3200); + }; + + const toggleStream = (forceState) => { + streamActive = typeof forceState === "boolean" ? forceState : !streamActive; + updateStreamStatusUI(); + if (streamActive) { + startStreamTimer(); + } else if (streamIntervalId) { + clearInterval(streamIntervalId); + streamIntervalId = null; + } + return streamActive; + }; + + const initComms = () => { + syncCommsPreview(); + + if (isReducedMotion()) { + streamActive = false; + updateStreamStatusUI(); + } else { + startStreamTimer(); + } + + const toggleBtn = document.getElementById("telemetry-toggle-btn"); + const clearBtn = document.getElementById("telemetry-clear-btn"); + const feedEl = document.getElementById("telemetry-feed"); + + if (toggleBtn) { + toggleBtn.addEventListener("click", () => { + toggleStream(); + }); + } + + if (clearBtn && feedEl) { + clearBtn.addEventListener("click", () => { + feedEl.textContent = ""; + totalDispatchedFrames = 0; + const counterEl = document.getElementById("telemetry-counter"); + if (counterEl) { + counterEl.textContent = "FRAMES: 00"; + } + }); + } + + const callsignEl = document.getElementById("comms-callsign"); + const topologyEl = document.getElementById("comms-topology"); + const messageEl = document.getElementById("comms-message"); + + [callsignEl, topologyEl, messageEl].forEach((el) => { + if (!el) return; + el.addEventListener("input", syncCommsPreview); + el.addEventListener("change", syncCommsPreview); + }); + + const formEl = document.getElementById("comms-dispatch-form"); + const copyBtn = document.getElementById("comms-copy-btn"); + const modalCopyBtn = document.getElementById("comms-modal-copy-btn"); + const modalCloseBtn = document.getElementById("comms-modal-close-btn"); + + if (formEl) { + formEl.addEventListener("submit", async (event) => { + event.preventDefault(); + syncCommsPreview(); + const payload = buildTelemetryPayload(); + await copyTextToClipboard(payload); + setStatusMessage("RFC_6068_PACKET_READY // CLIPBOARD_AND_MODAL_SYNCED"); + openFallbackModal(); + }); + } + + if (copyBtn) { + copyBtn.addEventListener("click", async () => { + syncCommsPreview(); + const payload = buildTelemetryPayload(); + const ok = await copyTextToClipboard(payload); + setStatusMessage( + ok + ? "PACKET_COPIED // CLIPBOARD_SYNC_OK" + : "CLIPBOARD_FALLBACK // OPENED_MODAL" + ); + if (!ok) { + openFallbackModal(); + } + }); + } + + if (modalCopyBtn) { + modalCopyBtn.addEventListener("click", async () => { + const payload = buildTelemetryPayload(); + await copyTextToClipboard(payload); + setStatusMessage("PACKET_COPIED // CLIPBOARD_SYNC_OK"); + }); + } + + if (modalCloseBtn) { + modalCloseBtn.addEventListener("click", () => { + closeFallbackModal(); + }); + } + + document.addEventListener("keydown", (event) => { + if (event.key === "Escape") { + closeFallbackModal(); + } + }); + }; + + if (typeof window !== "undefined") { + window.TARSComms = { + TELEMETRY_EVENTS, + buildTelemetryPayload, + buildMailtoUri, + pushTelemetryEvent, + toggleStream, + openFallbackModal, + closeFallbackModal + }; + } + + if (typeof document !== "undefined") { + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", initComms); + } else { + initComms(); + } + } +})(); diff --git a/static/js/terminal.js b/static/js/terminal.js new file mode 100644 index 0000000..1acc2f2 --- /dev/null +++ b/static/js/terminal.js @@ -0,0 +1,455 @@ +(() => { + const TARS_LETTERS = [ + "████████╗ █████╗ ██████╗ ███████╗ ██████╗██╗ ██████╗ ██╗ ██╗██████╗ ", + "╚══██╔══╝██╔══██╗██╔══██╗██╔════╝ ██╔════╝██║ ██╔═══██╗██║ ██║██╔══██╗", + " ██║ ███████║██████╔╝███████╗ ██║ ██║ ██║ ██║██║ ██║██║ ██║", + " ██║ ██╔══██║██╔══██╗╚════██║ ██║ ██║ ██║ ██║██║ ██║██║ ██║", + " ██║ ██║ ██║██║ ██║███████║ ╚██████╗███████╗╚██████╔╝╚██████╔╝██████╔╝", + " ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚═════╝╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝" + ].join("\n"); + + const CIPHER_GLYPHS = "01#<>/\\|[]{}—=+*^~"; + const COMMAND_HISTORY = []; + let historyIndex = -1; + let activeRunTimerIds = []; + + const isReducedMotion = () => + Boolean( + typeof window !== "undefined" && + window.matchMedia && + window.matchMedia("(prefers-reduced-motion: reduce)").matches + ); + + const clearPendingTimers = () => { + while (activeRunTimerIds.length > 0) { + const id = activeRunTimerIds.pop(); + clearTimeout(id); + } + }; + + const renderAsciiTypewriter = (element) => { + const target = element || document.getElementById("tars-ascii-banner"); + if (!target) return; + + if (isReducedMotion()) { + target.textContent = TARS_LETTERS; + return; + } + + const lines = TARS_LETTERS.split("\n"); + let lineIdx = 0; + target.textContent = ""; + + const step = () => { + if (lineIdx >= lines.length) { + target.textContent = TARS_LETTERS; + return; + } + lineIdx += 1; + target.textContent = lines.slice(0, lineIdx).join("\n"); + if (lineIdx < lines.length) { + setTimeout(step, 35); + } + }; + + step(); + }; + + const scrambleText = (element) => { + const target = element || document.getElementById("tars-matrix-subtitle"); + if (!target) return; + + const finalString = + target.getAttribute("data-target-text") || + target.textContent || + "SOVEREIGN MULTI-AGENT ENGINEERING // GOVERNED BY GUARDS"; + + if (isReducedMotion()) { + target.textContent = finalString; + return; + } + + const totalFrames = 18; + let frame = 0; + + const tick = () => { + frame += 1; + const revealCount = Math.floor((frame / totalFrames) * finalString.length); + let nextText = ""; + + for (let i = 0; i < finalString.length; i += 1) { + const ch = finalString[i]; + if (ch === " " || i < revealCount) { + nextText += ch; + } else { + const randIndex = Math.floor(Math.random() * CIPHER_GLYPHS.length); + nextText += CIPHER_GLYPHS[randIndex]; + } + } + + target.textContent = nextText; + + if (frame < totalFrames) { + setTimeout(tick, 28); + } else { + target.textContent = finalString; + } + }; + + tick(); + }; + + const scrollToBottom = (outputEl) => { + if (!outputEl) return; + outputEl.scrollTop = outputEl.scrollHeight; + }; + + const appendCommandEcho = (outputEl, rawInput) => { + const row = document.createElement("div"); + row.className = "pt-1 border-t border-border/40 flex items-center gap-2"; + + const promptSpan = document.createElement("span"); + promptSpan.className = "text-accent-cyan font-semibold select-none"; + promptSpan.textContent = "cooper@tars-prime:~$"; + + const cmdSpan = document.createElement("span"); + cmdSpan.className = "text-text-primary font-semibold"; + cmdSpan.textContent = rawInput; + + row.appendChild(promptSpan); + row.appendChild(cmdSpan); + outputEl.appendChild(row); + scrollToBottom(outputEl); + }; + + const createPhaseBadge = (phaseClass, label) => { + const badge = document.createElement("span"); + badge.className = `${phaseClass} mr-1.5 inline-block`; + badge.textContent = label; + return badge; + }; + + const appendPhaseLine = (outputEl, phaseClass, badgeLabel, actorText, detailText, receiptText) => { + const line = document.createElement("div"); + line.className = "leading-relaxed flex flex-wrap items-center gap-x-1.5 gap-y-1"; + + line.appendChild(createPhaseBadge(phaseClass, badgeLabel)); + + const actor = document.createElement("span"); + actor.className = "text-accent-cyan font-semibold"; + actor.textContent = actorText; + line.appendChild(actor); + + const detail = document.createElement("span"); + detail.className = "text-text-primary"; + detail.textContent = detailText; + line.appendChild(detail); + + if (receiptText) { + const receipt = document.createElement("span"); + receipt.className = "text-status-nominal text-[11px]"; + receipt.textContent = receiptText; + line.appendChild(receipt); + } + + outputEl.appendChild(line); + scrollToBottom(outputEl); + }; + + const appendPlainLines = (outputEl, lines, colorClass = "text-text-primary") => { + const block = document.createElement("pre"); + block.className = `font-mono text-xs sm:text-sm whitespace-pre-wrap leading-relaxed ${colorClass}`; + block.textContent = lines.join("\n"); + outputEl.appendChild(block); + scrollToBottom(outputEl); + }; + + const clearTerminal = () => { + clearPendingTimers(); + const outputEl = document.getElementById("terminal-output"); + if (!outputEl) return; + outputEl.textContent = ""; + + const header = document.createElement("div"); + header.className = "text-text-muted"; + header.textContent = "TTY_01 // BUFFER_CLEARED // TARS_PRIME v3.5.0 READY"; + outputEl.appendChild(header); + scrollToBottom(outputEl); + }; + + const runStatusCommand = (outputEl) => { + appendPlainLines( + outputEl, + [ + "TARS_PRIME // RUNTIME_STATUS [NOMINAL]", + "SESSION_ID : ISSUE #42 (feat/governed-runtime)", + "GATE_MODE : SINGLE_GATE // ZERO_IDLE_COMPUTE (COOPER_RATIFIED)", + "WORKTREE_LOCK : ISOLATED // CASE != DOYLE ENFORCED", + "REGISTRY_MODE : AIRGAP_READY // EMPTY_UPSTREAM_REGISTRY", + "--------------------------------------------------------------------", + "AGENT ROLE PHASE WORKTREE_STATE", + "TARS Prime Hub Orchestrator G->S LOCKED // HUB_CONTROL", + "KIPP Research & Docs Spoke G.2 / D.2 READY // SHA256_OK", + "BRAND Spec & Architecture U.1 / A.1 READY // BUNDLE_SIGNED", + "ROMILLY Execution Planner A.3 READY // PLAN_VERIFIED", + "CASE Implementation Spoke R.1 ISOLATED // NO_SELF_GRADE", + "DOYLE Adversarial Verifier R.2/D.1/S ARMED // CASE != DOYLE" + ], + "text-text-primary" + ); + }; + + const runIssueSimulation = (outputEl, issueArg = "42") => { + clearPendingTimers(); + + const steps = [ + { + chip: "phase-chip-g", + code: "[G.1]", + actor: "TARS -> COOPER:", + detail: `Captured issue #${issueArg} operator constraints and scope invariants.`, + receipt: "[interview.md]" + }, + { + chip: "phase-chip-g", + code: "[G.2]", + actor: "KIPP -> PRIME:", + detail: "Harvested primary codebase facts and empirical reproduction receipt.", + receipt: "[evidence-generation-6.json // sha256:007dd10e]" + }, + { + chip: "phase-chip-u", + code: "[U.1]", + actor: "BRAND -> PRIME:", + detail: "Locked declared file scope and ratified evidence disposition: proceed.", + receipt: "[spec.md + evidence-disposition.json]" + }, + { + chip: "phase-chip-a", + code: "[A.1]", + actor: "BRAND -> PRIME:", + detail: "Synthesized deep-module architecture and interface contracts.", + receipt: "[design.md]" + }, + { + chip: "phase-chip-a", + code: "[A.2]", + actor: "COOPER -> GATE:", + detail: "SINGLE HUMAN GATE RATIFIED (spec.md + design.md + structure.md). Zero idle compute unlocked.", + receipt: "[GATE_OPEN // YOLO_WAVE]" + }, + { + chip: "phase-chip-a", + code: "[A.3]", + actor: "ROMILLY -> PRIME:", + detail: "Sequenced deterministic implementation plan and verification matrix.", + receipt: "[plan.md]" + }, + { + chip: "phase-chip-r", + code: "[R.1]", + actor: "CASE -> WORKTREE:", + detail: "Implemented scoped changes inside isolated git worktree (0 npm deps).", + receipt: "[implementation-notes.md]" + }, + { + chip: "phase-chip-r", + code: "[R.2]", + actor: "DOYLE -> VERIFY:", + detail: "Adversarial verification passed (CASE != DOYLE). CRAP gate and zola check clean.", + receipt: "[CASE != DOYLE // PASS]" + }, + { + chip: "phase-chip-d", + code: "[D.1]", + actor: "DOYLE -> TEST:", + detail: "Executed end-to-end build, Pagefind index, and DOM scenario verification.", + receipt: "[test-report.md // 0_ERRORS]" + }, + { + chip: "phase-chip-d", + code: "[D.2]", + actor: "KIPP -> DOCS:", + detail: "Verified domain glossary and architectural documentation parity.", + receipt: "[documentation.md]" + }, + { + chip: "phase-chip-s", + code: "[S.1]", + actor: "DOYLE -> PR:", + detail: "Assembled pull request with cryptographic SHA-256 artifact lineage.", + receipt: "[pr-manifest.md]" + }, + { + chip: "phase-chip-s", + code: "[S.2]", + actor: "DOYLE + KIPP:", + detail: `Issue #${issueArg} certified against spec and standards.`, + receipt: "[OUTCOME // GOVERNED_MERGE_READY]" + } + ]; + + if (isReducedMotion()) { + steps.forEach((step) => { + appendPhaseLine(outputEl, step.chip, step.code, step.actor, step.detail, step.receipt); + }); + return; + } + + steps.forEach((step, idx) => { + const timerId = setTimeout(() => { + appendPhaseLine(outputEl, step.chip, step.code, step.actor, step.detail, step.receipt); + }, idx * 45); + activeRunTimerIds.push(timerId); + }); + }; + + const runAuditCommand = (outputEl) => { + appendPlainLines( + outputEl, + [ + "TARS_AUDIT // WORKSPACE_SECURITY_AND_SOVEREIGNTY_REPORT", + "--------------------------------------------------------------------", + "[PASS] ADVERSARIAL_GATE : CASE != DOYLE worktree separation verified", + "[PASS] NPM_RUNTIME_DEPS : 0 package.json / 0 node_modules detected", + "[PASS] UPSTREAM_REGISTRY : 0 external registry calls (air-gap nominal)", + "[PASS] CASITA_STORE : BLAKE3 content-addressed graph verified", + "[PASS] CRAP_METRIC_GATE : Cyclomatic complexity & coverage within budget", + "[PASS] STATIC_INTEGRITY : zola check: PASS (0 broken links, <50ms)", + "--------------------------------------------------------------------", + "AUDIT_VERDICT // SOVEREIGN_COMPLIANCE_CERTIFIED (0 CVEs, 0 WARNINGS)" + ], + "text-status-nominal" + ); + }; + + const runHelpCommand = (outputEl) => { + appendPlainLines( + outputEl, + [ + "TARS_PRIME_SHELL // SUPPORTED INTERACTIVE COMMANDS:", + " tarsctl status Display Prime-and-Spokes health and worktree locks", + " tars-run-issue --yolo 42 Simulate full GUARDS (G->U->A->R->D->S) issue wave", + " tars-audit-workspace Run zero-registry air-gap, Casita BLAKE3, and CRAP audit", + " clear Clear terminal output buffer", + " help Show this command reference table" + ], + "text-accent-cyan" + ); + }; + + const executeCommand = (rawInput) => { + const outputEl = document.getElementById("terminal-output"); + if (!outputEl) return; + + const trimmed = String(rawInput == null ? "" : rawInput).trim(); + if (!trimmed) return; + + COMMAND_HISTORY.push(trimmed); + historyIndex = COMMAND_HISTORY.length; + + const normalized = trimmed.toLowerCase().replace(/\s+/g, " "); + + if (normalized === "clear") { + clearTerminal(); + return; + } + + appendCommandEcho(outputEl, trimmed); + + if (normalized === "tarsctl status" || normalized === "status") { + runStatusCommand(outputEl); + } else if ( + normalized === "tars-run-issue --yolo 42" || + normalized.startsWith("tars-run-issue") + ) { + const match = normalized.match(/(\d+)/); + const issueNum = match ? match[1] : "42"; + runIssueSimulation(outputEl, issueNum); + } else if ( + normalized === "tars-audit-workspace" || + normalized === "audit" + ) { + runAuditCommand(outputEl); + } else if (normalized === "help" || normalized === "--help" || normalized === "?") { + runHelpCommand(outputEl); + } else { + appendPlainLines( + outputEl, + [ + `ERR_UNKNOWN_COMMAND: '${trimmed}' is not a registered TARS_PRIME directive.`, + "Type 'help' to list available commands (tarsctl status, tars-run-issue --yolo 42, tars-audit-workspace, clear)." + ], + "text-accent-amber" + ); + } + }; + + const initTerminal = () => { + const asciiEl = document.getElementById("tars-ascii-banner"); + const subtitleEl = document.getElementById("tars-matrix-subtitle"); + const formEl = document.getElementById("terminal-form"); + const inputEl = document.getElementById("terminal-input"); + + if (asciiEl) { + renderAsciiTypewriter(asciiEl); + } + if (subtitleEl) { + scrambleText(subtitleEl); + } + + if (formEl && inputEl) { + formEl.addEventListener("submit", (event) => { + event.preventDefault(); + const value = inputEl.value; + inputEl.value = ""; + executeCommand(value); + }); + + inputEl.addEventListener("keydown", (event) => { + if (event.key === "ArrowUp") { + if (COMMAND_HISTORY.length === 0) return; + event.preventDefault(); + historyIndex = Math.max(0, historyIndex - 1); + inputEl.value = COMMAND_HISTORY[historyIndex] || ""; + } else if (event.key === "ArrowDown") { + if (COMMAND_HISTORY.length === 0) return; + event.preventDefault(); + historyIndex = Math.min(COMMAND_HISTORY.length, historyIndex + 1); + inputEl.value = + historyIndex < COMMAND_HISTORY.length ? COMMAND_HISTORY[historyIndex] : ""; + } + }); + } + + const presetButtons = document.querySelectorAll("[data-terminal-cmd]"); + presetButtons.forEach((btn) => { + btn.addEventListener("click", () => { + const cmd = btn.getAttribute("data-terminal-cmd"); + if (!cmd) return; + if (inputEl) { + inputEl.value = ""; + } + executeCommand(cmd); + }); + }); + }; + + if (typeof window !== "undefined") { + window.TARSTerminal = { + TARS_LETTERS, + renderAsciiTypewriter, + scrambleText, + executeCommand, + clearTerminal + }; + } + + if (typeof document !== "undefined") { + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", initTerminal); + } else { + initTerminal(); + } + } +})(); diff --git a/styles/input.css b/styles/input.css index 309d03c..8600b01 100644 --- a/styles/input.css +++ b/styles/input.css @@ -236,6 +236,106 @@ samp, border: 1px solid var(--color-border); } +/* Terminal prompt cursor & CTA breathing animations */ +@keyframes tars-cursor-blink { + 0%, + 49% { + opacity: 1; + } + 50%, + 100% { + opacity: 0; + } +} + +.cursor-blink { + animation: tars-cursor-blink 1.05s step-end infinite; +} + +@keyframes tars-breathe-cyan { + 0%, + 100% { + box-shadow: 0 0 12px rgba(0, 240, 255, 0.25); + border-color: var(--color-accent-cyan); + } + 50% { + box-shadow: 0 0 24px rgba(0, 243, 255, 0.55); + border-color: var(--color-accent-cyan-bright); + } +} + +.cta-breathe-cyan { + animation: tars-breathe-cyan 2.8s ease-in-out infinite; +} + +/* GUARDS verification phase status chips (G -> U -> A -> R -> D -> S) */ +.phase-chip-g, +.phase-chip-u, +.phase-chip-a, +.phase-chip-r, +.phase-chip-d, +.phase-chip-s { + font-family: var(--font-mono); + font-size: 0.6875rem; + line-height: 1; + font-weight: 700; + letter-spacing: 0.06em; + text-transform: uppercase; + padding: 0.2rem 0.45rem; + border: 1px solid var(--color-border); + background-color: var(--color-obsidian); +} + +.phase-chip-g { + color: var(--color-phase-g); + border-color: rgba(0, 240, 255, 0.45); +} + +.phase-chip-u { + color: var(--color-phase-u); + border-color: rgba(56, 189, 248, 0.45); +} + +.phase-chip-a { + color: var(--color-phase-a); + border-color: rgba(168, 85, 247, 0.45); +} + +.phase-chip-r { + color: var(--color-phase-r); + border-color: rgba(255, 183, 0, 0.45); +} + +.phase-chip-d { + color: var(--color-phase-d); + border-color: rgba(34, 197, 94, 0.45); +} + +.phase-chip-s { + color: var(--color-phase-s); + border-color: rgba(16, 185, 129, 0.45); +} + +/* Dark tactical terminal & telemetry scrollbars */ +.terminal-scroll { + scrollbar-width: thin; + scrollbar-color: var(--color-border) var(--color-obsidian); +} + +.terminal-scroll::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +.terminal-scroll::-webkit-scrollbar-track { + background: var(--color-obsidian); +} + +.terminal-scroll::-webkit-scrollbar-thumb { + background-color: var(--color-border); + border: 1px solid var(--color-obsidian); +} + /* Accessibility & high-contrast fallbacks */ @media (prefers-contrast: more) { html, @@ -251,7 +351,8 @@ samp, .glow-cyan, .glow-amber, - .border-glow-cyan { + .border-glow-cyan, + .cta-breathe-cyan { box-shadow: none !important; } @@ -261,13 +362,21 @@ samp, } .tactical-panel, - .status-chip { + .status-chip, + .phase-chip-g, + .phase-chip-u, + .phase-chip-a, + .phase-chip-r, + .phase-chip-d, + .phase-chip-s { border-color: #f4f4f6 !important; } } @media (prefers-reduced-motion: reduce) { - .status-pulse { + .status-pulse, + .cursor-blink, + .cta-breathe-cyan { animation: none !important; } diff --git a/templates/base.html b/templates/base.html index 286d5ab..e4f6071 100644 --- a/templates/base.html +++ b/templates/base.html @@ -151,7 +151,7 @@ -
+
{% block content %}{% endblock %}
diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..1eead01 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,597 @@ +{% extends "base.html" %} + +{% block main_class %}flex-1 w-full max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4 sm:py-6{% endblock %} + +{% block content %} +
+
+
+ + + {{ section.extra.hero_badge | default(value=config.extra.hero_badge | default(value="SYS // SOVEREIGN_MULTI_AGENT_RUNTIME // GUARDS_V3.5")) }} + + PROTOCOL // GUARDS_V3.5 +
+
+ GATE // COOPER_RATIFIED + AIRGAP // ZERO_REGISTRY +
+
+ +
+
+
+
████████╗ █████╗ ██████╗ ███████╗   ██████╗██╗      ██████╗ ██╗   ██╗██████╗ 
+╚══██╔══╝██╔══██╗██╔══██╗██╔════╝  ██╔════╝██║     ██╔═══██╗██║   ██║██╔══██╗
+   ██║   ███████║██████╔╝███████╗  ██║     ██║     ██║   ██║██║   ██║██║  ██║
+   ██║   ██╔══██║██╔══██╗╚════██║  ██║     ██║     ██║   ██║██║   ██║██║  ██║
+   ██║   ██║  ██║██║  ██║███████║  ╚██████╗███████╗╚██████╔╝╚██████╔╝██████╔╝
+   ╚═╝   ╚═╝  ╚═╝╚═╝  ╚═╝╚══════╝   ╚═════╝╚══════╝ ╚═════╝  ╚═════╝ ╚═════╝
+

{{ section.extra.hero_subtitle | default(value=config.extra.hero_subtitle | default(value="SOVEREIGN MULTI-AGENT ENGINEERING // GOVERNED BY GUARDS")) }}

+
+ +

+ {{ section.extra.hero_headline | default(value=config.extra.hero_headline | default(value="Your AI Factory gives you tokens. TARS gives you governed outcomes")) }} +

+ +

+ {{ section.extra.hero_summary | default(value="TARS orchestrates specialized engineering spokes inside isolated git worktrees under deterministic verification gates. Builders never grade their own work (CASE != DOYLE), human review happens once at specification, and the entire runtime operates air-gapped with zero external registry dependencies.") }} +

+ + + +
+
+ $ + curl -fsSL https://tars-cloud.ai/install.sh | sh +
+ +
+
+ +
+
+
+ + + + TTY_01 // TARS_PRIME_SHELL +
+ SPOKE_LOCK // ENFORCED +
+ +
+ PRESETS: + + + + + +
+ +
+
[BOOT] TARS_PRIME v3.5.0 // SOVEREIGN RUNTIME INITIALIZED
+
+ [G] + [U] + [A] + [R] + [D] + [S] + GUARDS_LIFECYCLE // READY (CASE != DOYLE) +
+
Type tars-run-issue --yolo 42, tarsctl status, tars-audit-workspace, or help.
+
+ +
+ + + + +
+
+
+
+ +
+
+
+

// 01_ARCHITECTURAL_LAWS

+

+ THREE INVARIANTS FROM PITCH.MD +

+
+ GOVERNANCE // CRYPTOGRAPHICALLY_ENFORCED +
+ +
+
+
+
+ LAW_01 // CASE != DOYLE + CASE ≠ DOYLE +
+

+ Adversarial Physics (CASE != DOYLE) +

+

+ The builder spoke (CASE) never verifies its own implementation. Every candidate commit is handed across an isolated git worktree boundary to an adversarial verifier (DOYLE) that challenges claims against reproduction hashes (evidence-generation-*.json) and CRAP metrics. +

+
+
+ BUILDER: CASE (R.1) + VERIFIER: DOYLE (R.2 / D.1) +
+
+ +
+
+
+ LAW_02 // ZERO_IDLE_COMPUTE + 1_GATE // 0_WAIT +
+

+ One Human Gate with zero idle compute +

+

+ Human judgment is concentrated at a single architectural checkpoint (Cooper ratifying spec.md + design.md + structure.md). Once ratified, unattended waves (--yolo) execute planning, implementation, verification, and PR packaging with zero idle compute. +

+
+
+ GATE: U.1 / A.2 BUNDLE + IDLE_COMPUTE: 0.00% +
+
+ +
+
+
+ LAW_03 // EMPTY_REGISTRY_AIRGAP + ZERO_SAAS +
+

+ Sovereignty by Construction where air-gap is an empty registry +

+

+ Engineered for classified and sovereign enclaves with zero mandatory SaaS control planes, zero npm runtime dependencies, and BLAKE3 content-addressed casita artifact stores. Operating air-gapped requires no special mode: an air-gap is simply an empty upstream registry. +

+
+
+ STORE: CASITA // BLAKE3 + UPSTREAM_DEPS: NONE +
+
+
+
+ +
+
+
+

// 02_SYSTEM_TOPOLOGY_AND_GUARDS_LIFECYCLE

+

+ PRIME-AND-SPOKES ARCHITECTURE & GUARDS STATE MACHINE +

+
+ PIPELINE // G -> U -> A -> R -> D -> S +
+ +
+
+ GUARDS_PHASE_PROGRESSION // DETERMINISTIC_STATE_GRAPH + 6 PHASES // 12 SUB-GATES +
+
+
+
+ G // GATHER + G.1-G.2 +
+

KIPP Research

+

interview.md + evidence JSON

+
+ +
+
+ U // UNDERSTAND + U.1 +
+

BRAND Scope

+

spec.md + scope lock

+
+ +
+
+ A // ARCHITECT + A.1-A.3 +
+

BRAND + ROMILLY

+

design.md + Cooper Gate + plan.md

+
+ +
+
+ R // REALIZE + R.1-R.2 +
+

CASE != DOYLE

+

Worktree commit + verification

+
+ +
+
+ D // DEMONSTRATE + D.1-D.2 +
+

DOYLE + KIPP

+

Scenario suite + docs sync

+
+ +
+
+ S // SHIP + S.1-S.2 +
+

DOYLE + KIPP

+

PR manifest + spec review

+
+
+
+ +
+
+ TOPOLOGY // HUB_AND_SPOKES +

Prime-and-Spokes Topology

+

+ TARS Prime coordinates five specialized spokes (KIPP, BRAND, ROMILLY, CASE, DOYLE) inside dedicated git worktrees with strict file-scope locks and SHA-256 contract receipts. +

+
+ +
+ LIFECYCLE // GUARDS_V3.5 +

Deterministic GUARDS Lifecycle

+

+ Six sequential verification phases (G -> U -> A -> R -> D -> S) protected by circuit breakers, reproduction evidence disposition, and automated rework routing when verification gates fail. +

+
+ +
+ AIRGAP // CASITA_BLAKE3 +

Airgap Bundles & Casita Storage

+

+ Every release ships with content-addressed BLAKE3 casita archives, offline WebAssembly Pagefind search indices, and POSIX install.sh SHA-256 verification. +

+
+
+ +
+ {{ section.content | safe }} +
+
+ + +{% endblock %} + +{% block scripts %} + + +{% endblock %}