{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "afterglow",
  "homepage": "https://afterglow.thebuilder.dk",
  "items": [
    {
      "name": "theme",
      "type": "registry:theme",
      "title": "Terminal Theme",
      "description": "The tokens, typography, motion and CRT effects used by every component.",
      "categories": [
        "theme"
      ],
      "files": [],
      "cssVars": {
        "dark": {
          "amber": "#ffbc57",
          "azure": "#8dbdf5",
          "ember": "#ff5a65",
          "ink": "#e9f6f1",
          "ink-muted": "#87a39d",
          "line": "rgb(132 255 224 / 0.22)",
          "line-strong": "rgb(132 255 224 / 0.55)",
          "panel": "#0b1515",
          "panel-raised": "#091212",
          "panel-sunken": "#081210",
          "phosphor": "#86fadd",
          "phosphor-bright": "#d9ffef",
          "phosphor-dim": "#4d8477",
          "signal": "#ff5b82",
          "signal-soft": "#e84970",
          "violet": "#b890ff",
          "void": "#05090a",
          "window-bevel-dark": "#5c7269",
          "window-bevel-light": "#e7eeeb",
          "window-border": "#263d38",
          "window-close": "#ff5d7f",
          "window-collapse": "#ffd45d",
          "window-control": "#2b443e",
          "window-footer": "#536c65",
          "window-footer-text": "#263e38",
          "window-grip": "#3d554f",
          "window-inset": "#d8e2de",
          "window-rule": "#1b302b",
          "window-surface": "#b6c4be",
          "window-text": "#09100f",
          "window-text-muted": "#38544d",
          "window-titlebar-dark": "#a2b4ac",
          "window-titlebar-light": "#c3cfca",
          "window-zoom": "#68d9b4",
          "accent": "#17403a",
          "accent-foreground": "#d9ffef",
          "background": "#05090a",
          "border": "rgb(132 255 224 / 0.22)",
          "card": "#0b1515",
          "card-foreground": "#e9f6f1",
          "chart-1": "#86fadd",
          "chart-2": "#ff5b82",
          "chart-3": "#ffbc57",
          "chart-4": "#8dbdf5",
          "chart-5": "#b890ff",
          "destructive": "#ff5a65",
          "destructive-foreground": "#ffffff",
          "foreground": "#e9f6f1",
          "info": "#8dbdf5",
          "input": "rgb(132 255 224 / 0.22)",
          "metric": "#d9ffef",
          "muted": "#0d1b1a",
          "muted-foreground": "#87a39d",
          "popover": "#091212",
          "popover-foreground": "#e9f6f1",
          "primary": "#86fadd",
          "primary-foreground": "#05090a",
          "radius": "0rem",
          "ring": "#d9ffef",
          "scrim": "rgb(1 5 6 / 0.72)",
          "secondary": "#10201f",
          "secondary-foreground": "#86fadd",
          "sidebar": "#091212",
          "sidebar-accent": "#17403a",
          "sidebar-accent-foreground": "#d9ffef",
          "sidebar-border": "rgb(132 255 224 / 0.22)",
          "sidebar-foreground": "#e9f6f1",
          "sidebar-primary": "#86fadd",
          "sidebar-primary-foreground": "#05090a",
          "sidebar-ring": "#d9ffef",
          "warning": "#ffbc57"
        },
        "light": {
          "amber": "#ffbc57",
          "azure": "#8dbdf5",
          "ember": "#ff5a65",
          "ink": "#e9f6f1",
          "ink-muted": "#87a39d",
          "line": "rgb(132 255 224 / 0.22)",
          "line-strong": "rgb(132 255 224 / 0.55)",
          "panel": "#0b1515",
          "panel-raised": "#091212",
          "panel-sunken": "#081210",
          "phosphor": "#86fadd",
          "phosphor-bright": "#d9ffef",
          "phosphor-dim": "#4d8477",
          "signal": "#ff5b82",
          "signal-soft": "#e84970",
          "violet": "#b890ff",
          "void": "#05090a",
          "window-bevel-dark": "#5c7269",
          "window-bevel-light": "#e7eeeb",
          "window-border": "#263d38",
          "window-close": "#ff5d7f",
          "window-collapse": "#ffd45d",
          "window-control": "#2b443e",
          "window-footer": "#536c65",
          "window-footer-text": "#263e38",
          "window-grip": "#3d554f",
          "window-inset": "#d8e2de",
          "window-rule": "#1b302b",
          "window-surface": "#b6c4be",
          "window-text": "#09100f",
          "window-text-muted": "#38544d",
          "window-titlebar-dark": "#a2b4ac",
          "window-titlebar-light": "#c3cfca",
          "window-zoom": "#68d9b4",
          "accent": "#17403a",
          "accent-foreground": "#d9ffef",
          "background": "#05090a",
          "border": "rgb(132 255 224 / 0.22)",
          "card": "#0b1515",
          "card-foreground": "#e9f6f1",
          "chart-1": "#86fadd",
          "chart-2": "#ff5b82",
          "chart-3": "#ffbc57",
          "chart-4": "#8dbdf5",
          "chart-5": "#b890ff",
          "destructive": "#ff5a65",
          "destructive-foreground": "#ffffff",
          "foreground": "#e9f6f1",
          "info": "#8dbdf5",
          "input": "rgb(132 255 224 / 0.22)",
          "metric": "#d9ffef",
          "muted": "#0d1b1a",
          "muted-foreground": "#87a39d",
          "popover": "#091212",
          "popover-foreground": "#e9f6f1",
          "primary": "#86fadd",
          "primary-foreground": "#05090a",
          "radius": "0rem",
          "ring": "#d9ffef",
          "scrim": "rgb(1 5 6 / 0.72)",
          "secondary": "#10201f",
          "secondary-foreground": "#86fadd",
          "sidebar": "#091212",
          "sidebar-accent": "#17403a",
          "sidebar-accent-foreground": "#d9ffef",
          "sidebar-border": "rgb(132 255 224 / 0.22)",
          "sidebar-foreground": "#e9f6f1",
          "sidebar-primary": "#86fadd",
          "sidebar-primary-foreground": "#05090a",
          "sidebar-ring": "#d9ffef",
          "warning": "#ffbc57"
        },
        "theme": {
          "background-image-beam": "linear-gradient(180deg, transparent 44%, color-mix(in srgb, var(--phosphor) 16%, transparent) 50%, transparent 56%)",
          "background-image-window-grip": "repeating-linear-gradient(-45deg, transparent 0 2px, var(--window-grip) 2px 3px)",
          "background-image-window-titlebar": "repeating-linear-gradient(var(--window-titlebar-light) 0 1px, var(--window-titlebar-dark) 1px 3px)",
          "font-heading": "var(--font-mono)",
          "font-mono": "var(--afterglow-font-mono, ui-monospace, monospace)",
          "font-sans": "var(--afterglow-font-sans, ui-sans-serif, sans-serif)",
          "text-1xs": "0.6875rem",
          "text-2xs": "0.625rem",
          "text-3xs": "0.5625rem",
          "text-4xs": "0.55rem",
          "tracking-terminal": "0.1em",
          "tracking-terminal-2xl": "0.16em",
          "tracking-terminal-3xl": "0.18em",
          "tracking-terminal-lg": "0.12em",
          "tracking-terminal-sm": "0.08em",
          "tracking-terminal-xl": "0.14em",
          "tracking-terminal-xs": "0.06em",
          "color-amber": "var(--amber)",
          "color-azure": "var(--azure)",
          "color-ember": "var(--ember)",
          "color-ink": "var(--ink)",
          "color-ink-muted": "var(--ink-muted)",
          "color-line": "var(--line)",
          "color-line-strong": "var(--line-strong)",
          "color-panel": "var(--panel)",
          "color-panel-raised": "var(--panel-raised)",
          "color-panel-sunken": "var(--panel-sunken)",
          "color-phosphor": "var(--phosphor)",
          "color-phosphor-bright": "var(--phosphor-bright)",
          "color-phosphor-dim": "var(--phosphor-dim)",
          "color-signal": "var(--signal)",
          "color-signal-soft": "var(--signal-soft)",
          "color-violet": "var(--violet)",
          "color-void": "var(--void)",
          "color-window-bevel-dark": "var(--window-bevel-dark)",
          "color-window-bevel-light": "var(--window-bevel-light)",
          "color-window-border": "var(--window-border)",
          "color-window-close": "var(--window-close)",
          "color-window-collapse": "var(--window-collapse)",
          "color-window-control": "var(--window-control)",
          "color-window-footer": "var(--window-footer)",
          "color-window-footer-text": "var(--window-footer-text)",
          "color-window-grip": "var(--window-grip)",
          "color-window-inset": "var(--window-inset)",
          "color-window-rule": "var(--window-rule)",
          "color-window-surface": "var(--window-surface)",
          "color-window-text": "var(--window-text)",
          "color-window-text-muted": "var(--window-text-muted)",
          "color-window-titlebar-dark": "var(--window-titlebar-dark)",
          "color-window-titlebar-light": "var(--window-titlebar-light)",
          "color-window-zoom": "var(--window-zoom)",
          "color-accent": "var(--accent)",
          "color-accent-foreground": "var(--accent-foreground)",
          "color-background": "var(--background)",
          "color-border": "var(--border)",
          "color-card": "var(--card)",
          "color-card-foreground": "var(--card-foreground)",
          "color-chart-1": "var(--chart-1)",
          "color-chart-2": "var(--chart-2)",
          "color-chart-3": "var(--chart-3)",
          "color-chart-4": "var(--chart-4)",
          "color-chart-5": "var(--chart-5)",
          "color-destructive": "var(--destructive)",
          "color-destructive-foreground": "var(--destructive-foreground)",
          "color-foreground": "var(--foreground)",
          "color-info": "var(--info)",
          "color-input": "var(--input)",
          "color-metric": "var(--metric)",
          "color-muted": "var(--muted)",
          "color-muted-foreground": "var(--muted-foreground)",
          "color-popover": "var(--popover)",
          "color-popover-foreground": "var(--popover-foreground)",
          "color-primary": "var(--primary)",
          "color-primary-foreground": "var(--primary-foreground)",
          "color-ring": "var(--ring)",
          "color-scrim": "var(--scrim)",
          "color-secondary": "var(--secondary)",
          "color-secondary-foreground": "var(--secondary-foreground)",
          "color-sidebar": "var(--sidebar)",
          "color-sidebar-accent": "var(--sidebar-accent)",
          "color-sidebar-accent-foreground": "var(--sidebar-accent-foreground)",
          "color-sidebar-border": "var(--sidebar-border)",
          "color-sidebar-foreground": "var(--sidebar-foreground)",
          "color-sidebar-primary": "var(--sidebar-primary)",
          "color-sidebar-primary-foreground": "var(--sidebar-primary-foreground)",
          "color-sidebar-ring": "var(--sidebar-ring)",
          "color-warning": "var(--warning)",
          "animate-alarm": "terminal-alarm 2.4s var(--ease-terminal) infinite",
          "animate-beam": "terminal-beam 1s var(--ease-terminal) both",
          "animate-caret": "terminal-caret 1.1s steps(1) infinite",
          "animate-chart-in": "terminal-chart-in 260ms steps(6, end) both",
          "animate-close": "terminal-close 120ms steps(3, end) forwards",
          "animate-fade-in": "terminal-fade-in 140ms ease-out",
          "animate-fade-out": "terminal-fade-out 120ms ease-in forwards",
          "animate-flicker": "terminal-flicker 3.7s steps(1) infinite",
          "animate-glitch": "terminal-glitch 1.9s steps(1) infinite",
          "animate-glyph": "terminal-glyph 800ms steps(4) infinite",
          "animate-jitter": "terminal-jitter 260ms steps(1) infinite",
          "animate-led": "terminal-led 1.6s steps(2) infinite",
          "animate-line-in": "terminal-line-in 420ms var(--ease-terminal) both",
          "animate-open": "terminal-open 180ms steps(4, end)",
          "animate-pixel": "terminal-pixel 800ms linear infinite",
          "animate-power-line-in": "terminal-power-line-in 590ms var(--ease-terminal) both",
          "animate-power-line-out": "terminal-power-line-out 620ms var(--ease-terminal) both",
          "animate-power-off": "terminal-power-off 260ms var(--ease-terminal) both",
          "animate-power-on": "terminal-power-on 440ms var(--ease-terminal) 150ms both",
          "animate-roll": "terminal-roll 6.5s linear infinite",
          "animate-select-fold-in-down": "terminal-select-fold-in-down 140ms steps(4, end)",
          "animate-select-fold-in-up": "terminal-select-fold-in-up 140ms steps(4, end)",
          "animate-select-fold-out-down": "terminal-select-fold-out-down 100ms steps(3, end) forwards",
          "animate-select-fold-out-up": "terminal-select-fold-out-up 100ms steps(3, end) forwards",
          "animate-slide-in-bottom": "terminal-slide-in-bottom 220ms var(--ease-terminal)",
          "animate-slide-in-left": "terminal-slide-in-left 220ms var(--ease-terminal)",
          "animate-slide-in-right": "terminal-slide-in-right 220ms var(--ease-terminal)",
          "animate-slide-in-top": "terminal-slide-in-top 220ms var(--ease-terminal)",
          "animate-slide-out-bottom": "terminal-slide-out-bottom 170ms var(--ease-terminal) forwards",
          "animate-slide-out-left": "terminal-slide-out-left 170ms var(--ease-terminal) forwards",
          "animate-slide-out-right": "terminal-slide-out-right 170ms var(--ease-terminal) forwards",
          "animate-slide-out-top": "terminal-slide-out-top 170ms var(--ease-terminal) forwards",
          "animate-sweep": "terminal-sweep 1.15s ease-in-out infinite",
          "animate-toast-in": "terminal-toast-in 180ms steps(3, end) both",
          "animate-toast-out": "terminal-toast-out 100ms steps(2, end) forwards",
          "animate-type": "terminal-type 560ms steps(24) both",
          "ease-terminal": "cubic-bezier(0.2, 0.7, 0.3, 1)",
          "radius-2xl": "0px",
          "radius-lg": "0px",
          "radius-md": "0px",
          "radius-sm": "0px",
          "radius-xl": "0px",
          "shadow-glow": "0 0 18px color-mix(in srgb, var(--phosphor) 18%, transparent)",
          "shadow-glow-destructive": "0 0 18px color-mix(in srgb, var(--destructive) 20%, transparent)",
          "shadow-glow-line": "0 0 16px 1px color-mix(in srgb, var(--phosphor) 55%, transparent)",
          "shadow-glow-progress": "0 0 12px color-mix(in srgb, var(--phosphor) 50%, transparent)",
          "shadow-glow-signal": "0 0 34px 2px color-mix(in srgb, var(--signal) 55%, transparent)",
          "shadow-glow-slider": "0 0 10px color-mix(in srgb, var(--phosphor) 35%, transparent)",
          "shadow-glow-slider-hover": "0 0 14px color-mix(in srgb, var(--phosphor) 60%, transparent)",
          "shadow-glow-slider-track": "0 0 10px color-mix(in srgb, var(--phosphor) 45%, transparent)",
          "shadow-glow-strong": "0 0 34px 2px color-mix(in srgb, var(--phosphor) 40%, transparent), inset 0 0 0 1px color-mix(in srgb, var(--phosphor) 20%, transparent)",
          "shadow-kbd": "0 2px 0 rgb(0 0 0 / 0.45)",
          "shadow-panel": "0 2rem 5rem rgb(0 0 0 / 0.7), 0 0 50px color-mix(in srgb, var(--phosphor) 8%, transparent)",
          "shadow-panel-signal": "0 2rem 5rem rgb(0 0 0 / 0.7), 0 0 50px color-mix(in srgb, var(--signal) 10%, transparent)",
          "shadow-signal-control": "inset 0 0 0 1px rgb(255 255 255 / 0.12), 0 0 18px color-mix(in srgb, var(--signal) 12%, transparent)",
          "shadow-window": "0 2rem 8rem #000",
          "text-shadow-phosphor": "0 0 8px color-mix(in srgb, var(--phosphor) 35%, transparent)",
          "text-shadow-signal": "0 0 10px rgb(255 91 130 / 0.45)"
        }
      },
      "css": {
        ":root[data-phosphor=\"blue\"]": {
          "--phosphor": "#78a9ff",
          "--phosphor-bright": "#d7e5ff",
          "--phosphor-dim": "#587db8",
          "--info": "#67e8f9"
        },
        ":root[data-phosphor=\"cyan\"]": {
          "--phosphor": "#67e8f9",
          "--phosphor-bright": "#cffafe",
          "--phosphor-dim": "#58abb8",
          "--info": "#b890ff"
        },
        ":root[data-phosphor=\"grey\"]": {
          "--phosphor": "#c5cbc9",
          "--phosphor-bright": "#f4f7f6",
          "--phosphor-dim": "#99a4a1"
        },
        ":root[data-phosphor=\"magenta\"]": {
          "--phosphor": "#f09be7",
          "--phosphor-bright": "#ffd5fa",
          "--phosphor-dim": "#cf8ac8",
          "--signal": "#67e8f9",
          "--signal-soft": "#58abb8"
        },
        ":root[data-phosphor=\"orange\"]": {
          "--phosphor": "#ff9d4d",
          "--phosphor-bright": "#ffe1bd",
          "--phosphor-dim": "#d48950",
          "--warning": "#f4e66d"
        },
        ":root[data-phosphor=\"red\"]": {
          "--phosphor": "#ff9a9a",
          "--phosphor-bright": "#ffe0e0",
          "--phosphor-dim": "#b86f6f",
          "--signal": "#f09be7",
          "--signal-soft": "#cf8ac8"
        },
        ":root[data-phosphor=\"yellow\"]": {
          "--phosphor": "#f4e66d",
          "--phosphor-bright": "#fff9c2",
          "--phosphor-dim": "#b4a753",
          "--warning": "#ff9d4d"
        },
        ":is([data-slot=\"input\"], [data-slot=\"textarea\"], [data-slot=\"checkbox\"], [data-slot=\"radio-group-item\"], [data-slot=\"switch\"], [data-slot=\"select-trigger\"], [data-slot=\"command-input\"], [data-slot=\"input-otp\"]):focus-visible, :is([data-slot=\"prompt\"], [data-slot=\"shell-prompt\"]) input:focus-visible": {
          "outline-style": "none"
        },
        ":root[data-phosphor]:not([data-phosphor=\"green\"])": {
          "--accent": "color-mix(in oklab, var(--phosphor) 22%, #08100f)",
          "--accent-foreground": "var(--phosphor-bright)",
          "--border": "color-mix(in srgb, var(--phosphor) 22%, transparent)",
          "--card": "color-mix(in oklab, var(--phosphor) 6%, #070a0a)",
          "--chart-1": "var(--phosphor)",
          "--input": "var(--border)",
          "--line": "var(--border)",
          "--line-strong": "color-mix(in srgb, var(--phosphor) 55%, transparent)",
          "--metric": "var(--phosphor-bright)",
          "--muted": "color-mix(in oklab, var(--phosphor) 7%, #070a0a)",
          "--muted-foreground": "color-mix(in oklab, var(--phosphor) 54%, #9aa5a2)",
          "--panel": "color-mix(in oklab, var(--phosphor) 6%, #070a0a)",
          "--panel-raised": "color-mix(in oklab, var(--phosphor) 5%, #060909)",
          "--panel-sunken": "color-mix(in oklab, var(--phosphor) 4%, #050808)",
          "--popover": "var(--panel-raised)",
          "--primary": "var(--phosphor)",
          "--ring": "var(--phosphor-bright)",
          "--secondary": "color-mix(in oklab, var(--phosphor) 9%, #080c0b)",
          "--secondary-foreground": "var(--phosphor)",
          "--sidebar": "var(--panel-raised)",
          "--sidebar-accent": "var(--accent)",
          "--sidebar-accent-foreground": "var(--phosphor-bright)",
          "--sidebar-border": "var(--border)",
          "--sidebar-primary": "var(--phosphor)",
          "--sidebar-ring": "var(--phosphor-bright)"
        },
        ":where(a, button, input, textarea, select, summary, [tabindex]):focus-visible": {
          "outline-style": "solid"
        },
        "@keyframes terminal-alarm": {
          "0%, 100%": {
            "border-color": "transparent",
            "box-shadow": "0 0 0 rgb(255 91 130 / 0)"
          },
          "8%": {
            "border-color": "rgb(255 184 202 / 0.95)",
            "box-shadow": "0 0 34px 2px rgb(255 91 130 / 0.55), inset 0 0 0 3rem rgb(255 91 130 / 0.3)"
          },
          "18%": {
            "border-color": "transparent",
            "box-shadow": "0 0 0 rgb(255 91 130 / 0)"
          },
          "28%": {
            "border-color": "rgb(255 184 202 / 0.95)",
            "box-shadow": "0 0 34px 2px rgb(255 91 130 / 0.55), inset 0 0 0 3rem rgb(255 91 130 / 0.3)"
          },
          "42%": {
            "border-color": "transparent",
            "box-shadow": "0 0 0 rgb(255 91 130 / 0)"
          }
        },
        "@keyframes terminal-beam": {
          "30%": {
            "opacity": "1"
          },
          "from": {
            "opacity": "0",
            "transform": "translateY(-58%)"
          },
          "to": {
            "opacity": "0",
            "transform": "translateY(58%)"
          }
        },
        "@keyframes terminal-caret": {
          "50%": {
            "opacity": "0"
          }
        },
        "@keyframes terminal-chart-in": {
          "from": {
            "clip-path": "inset(0 100% 0 0)",
            "opacity": "0.35"
          },
          "to": {
            "clip-path": "inset(0)",
            "opacity": "1"
          }
        },
        "@keyframes terminal-close": {
          "to": {
            "opacity": "0",
            "transform": "scale(0.98)"
          }
        },
        "@keyframes terminal-fade-in": {
          "from": {
            "opacity": "0"
          }
        },
        "@keyframes terminal-fade-out": {
          "to": {
            "opacity": "0"
          }
        },
        "@keyframes terminal-flicker": {
          "0%, 100%": {
            "filter": "brightness(1)"
          },
          "6%": {
            "filter": "brightness(1.07)"
          },
          "7%": {
            "filter": "brightness(0.93)"
          },
          "9%": {
            "filter": "brightness(1.02)"
          },
          "38%": {
            "filter": "brightness(1)"
          },
          "41%": {
            "filter": "brightness(0.9)"
          },
          "42%": {
            "filter": "brightness(1.06)"
          },
          "44%": {
            "filter": "brightness(1)"
          },
          "71%": {
            "filter": "brightness(1.04)"
          },
          "72%": {
            "filter": "brightness(0.96)"
          }
        },
        "@keyframes terminal-glitch": {
          "0%, 100%": {
            "clip-path": "inset(100% 0 0 0)",
            "transform": "none"
          },
          "4%": {
            "clip-path": "inset(14% 0 62% 0)",
            "transform": "translateX(var(--glitch-shift, 3px))"
          },
          "8%": {
            "clip-path": "inset(58% 0 26% 0)",
            "transform": "translateX(calc(var(--glitch-shift, 3px) * -0.7))"
          },
          "11%": {
            "clip-path": "inset(100% 0 0 0)",
            "transform": "none"
          },
          "46%": {
            "clip-path": "inset(34% 0 48% 0)",
            "transform": "translateX(calc(var(--glitch-shift, 3px) * 1.3))"
          },
          "49%": {
            "clip-path": "inset(100% 0 0 0)",
            "transform": "none"
          }
        },
        "@keyframes terminal-glyph": {
          "to": {
            "transform": "translateY(-100%)"
          }
        },
        "@keyframes terminal-jitter": {
          "0%": {
            "transform": "translateX(0)"
          },
          "25%": {
            "transform": "translateX(0.6px)"
          },
          "50%": {
            "transform": "translateX(-0.4px)"
          },
          "75%": {
            "transform": "translateX(0.3px)"
          }
        },
        "@keyframes terminal-led": {
          "50%": {
            "opacity": "0.45"
          }
        },
        "@keyframes terminal-line-in": {
          "from": {
            "clip-path": "inset(-0.25em -0.12em 100% -0.06em)",
            "opacity": "0",
            "transform": "translateY(0.4em)"
          },
          "to": {
            "clip-path": "inset(-0.25em -0.12em -0.25em -0.06em)",
            "opacity": "1",
            "transform": "none"
          }
        },
        "@keyframes terminal-open": {
          "from": {
            "opacity": "0",
            "transform": "scale(0.97) translateY(0.7rem)"
          }
        },
        "@keyframes terminal-pixel": {
          "0%, 12.49%": {
            "opacity": "1"
          },
          "12.5%, 24.99%": {
            "opacity": "0.62"
          },
          "25%, 37.49%": {
            "opacity": "0.34"
          },
          "37.5%, 100%": {
            "opacity": "0.16"
          }
        },
        "@keyframes terminal-power-line-in": {
          "0%": {
            "opacity": "0",
            "transform": "scaleX(0.04)"
          },
          "22%": {
            "opacity": "1",
            "transform": "scaleX(1)"
          },
          "40%": {
            "opacity": "1",
            "transform": "scaleX(1)"
          },
          "100%": {
            "opacity": "0",
            "transform": "scaleX(1)"
          }
        },
        "@keyframes terminal-power-line-out": {
          "0%": {
            "opacity": "0",
            "transform": "scaleX(1)"
          },
          "22%": {
            "opacity": "1",
            "transform": "scaleX(1)"
          },
          "55%": {
            "opacity": "1",
            "transform": "scaleX(1)"
          },
          "100%": {
            "opacity": "0",
            "transform": "scaleX(0.04)"
          }
        },
        "@keyframes terminal-power-off": {
          "0%": {
            "filter": "brightness(1)",
            "opacity": "1",
            "transform": "scale(1, 1)"
          },
          "60%": {
            "filter": "brightness(2.4)",
            "opacity": "1",
            "transform": "scale(1.04, 0.06)"
          },
          "85%": {
            "filter": "brightness(3)",
            "opacity": "1",
            "transform": "scale(1.06, 0.008)"
          },
          "100%": {
            "filter": "brightness(3)",
            "opacity": "0",
            "transform": "scale(1.06, 0.006)"
          }
        },
        "@keyframes terminal-power-on": {
          "0%": {
            "filter": "brightness(2.6)",
            "opacity": "1",
            "transform": "scale(1.06, 0.006)"
          },
          "35%": {
            "filter": "brightness(1.9)",
            "transform": "scale(1.03, 0.09)"
          },
          "100%": {
            "filter": "brightness(1)",
            "transform": "scale(1, 1)"
          }
        },
        "@keyframes terminal-roll": {
          "from": {
            "transform": "translateY(-120%)"
          },
          "to": {
            "transform": "translateY(240%)"
          }
        },
        "@keyframes terminal-select-fold-in-down": {
          "from": {
            "clip-path": "inset(0 0 100% 0)"
          }
        },
        "@keyframes terminal-select-fold-in-up": {
          "from": {
            "clip-path": "inset(100% 0 0 0)"
          }
        },
        "@keyframes terminal-select-fold-out-down": {
          "to": {
            "clip-path": "inset(100% 0 0 0)"
          }
        },
        "@keyframes terminal-select-fold-out-up": {
          "to": {
            "clip-path": "inset(0 0 100% 0)"
          }
        },
        "@keyframes terminal-slide-in-bottom": {
          "from": {
            "transform": "translateY(100%)"
          }
        },
        "@keyframes terminal-slide-in-left": {
          "from": {
            "transform": "translateX(-100%)"
          }
        },
        "@keyframes terminal-slide-in-right": {
          "from": {
            "transform": "translateX(100%)"
          }
        },
        "@keyframes terminal-slide-in-top": {
          "from": {
            "transform": "translateY(-100%)"
          }
        },
        "@keyframes terminal-slide-out-bottom": {
          "to": {
            "transform": "translateY(100%)"
          }
        },
        "@keyframes terminal-slide-out-left": {
          "to": {
            "transform": "translateX(-100%)"
          }
        },
        "@keyframes terminal-slide-out-right": {
          "to": {
            "transform": "translateX(100%)"
          }
        },
        "@keyframes terminal-slide-out-top": {
          "to": {
            "transform": "translateY(-100%)"
          }
        },
        "@keyframes terminal-sweep": {
          "from": {
            "transform": "translateX(-110%)"
          },
          "to": {
            "transform": "translateX(300%)"
          }
        },
        "@keyframes terminal-toast-in": {
          "0%": {
            "filter": "brightness(1)",
            "opacity": "0",
            "transform": "none"
          },
          "34%": {
            "filter": "brightness(1.9)",
            "opacity": "1",
            "transform": "none"
          },
          "67%": {
            "filter": "brightness(1.25)",
            "opacity": "0.35",
            "transform": "none"
          },
          "100%": {
            "filter": "brightness(1)",
            "opacity": "1",
            "transform": "none"
          }
        },
        "@keyframes terminal-toast-out": {
          "from": {
            "transform": "none"
          },
          "to": {
            "filter": "brightness(1.5)",
            "opacity": "0",
            "transform": "none"
          }
        },
        "@keyframes terminal-type": {
          "from": {
            "clip-path": "inset(-0.4em 100% -0.4em -0.1em)"
          },
          "to": {
            "clip-path": "inset(-0.4em -0.15em -0.4em -0.1em)"
          }
        },
        "@layer base": {
          "::selection": {
            "background": "var(--signal)",
            "color": "#fff"
          },
          ":root": {
            "color-scheme": "dark",
            "scrollbar-color": "var(--phosphor-dim) transparent",
            "scrollbar-width": "thin"
          },
          ":where(a, button, input, textarea, select, summary, [tabindex]):focus-visible": {
            "outline": "2px solid var(--phosphor-bright)",
            "outline-offset": "3px"
          },
          "*": {
            "border-color": "var(--border)"
          },
          "body": {
            "-webkit-font-smoothing": "antialiased",
            "background": "var(--background)",
            "color": "var(--foreground)",
            "font-family": "var(--font-sans)",
            "text-rendering": "optimizeLegibility"
          },
          "html": {
            "overflow-y": "scroll",
            "scrollbar-gutter": "stable"
          }
        },
        "@layer components": {
          ".typeset": {
            "--typeset-flow": "1.25em",
            "--typeset-leading": "1.75",
            "--typeset-measure": "80ch",
            "--typeset-size": "1rem",
            "& :where(:not(pre) > code, kbd)": {
              "background-color": "var(--muted)",
              "border": "1px solid var(--line)",
              "color": "var(--phosphor-bright)",
              "font-family": "var(--font-mono)",
              "font-size": "0.85em",
              "padding": "0.1em 0.3em"
            },
            "& :where(a:hover)": {
              "color": "var(--phosphor-bright)",
              "text-decoration-color": "currentColor"
            },
            "& :where(a)": {
              "color": "var(--phosphor)",
              "font-weight": "500",
              "text-decoration-color": "var(--line-strong)",
              "text-decoration-line": "underline",
              "text-underline-offset": "0.18em"
            },
            "& :where(blockquote)": {
              "border-inline-start": "2px solid var(--phosphor)",
              "color": "var(--muted-foreground)",
              "margin-inline": "0",
              "padding-inline-start": "1em"
            },
            "& :where(caption, figcaption)": {
              "color": "var(--muted-foreground)",
              "font-size": "0.875em",
              "margin-block-start": "0.75em",
              "text-align": "start"
            },
            "& :where(dd)": {
              "color": "var(--muted-foreground)",
              "margin-block-start": "0.25em",
              "margin-inline-start": "1em"
            },
            "& :where(dt)": {
              "color": "var(--phosphor-bright)",
              "font-family": "var(--font-mono)",
              "font-weight": "600",
              "margin-block-start": "0.75em"
            },
            "& :where(h1, h2, h3, h4, h5, h6)": {
              "color": "var(--phosphor-bright)",
              "font-family": "var(--font-heading)",
              "font-weight": "600",
              "line-height": "1.3",
              "margin-block-end": "0",
              "margin-block-start": "calc(var(--typeset-flow) * 1.4)"
            },
            "& :where(h1, h2, h3, h4, h5, h6) + *": {
              "margin-block-start": "0.5em"
            },
            "& :where(h1)": {
              "font-size": "2em"
            },
            "& :where(h2)": {
              "font-size": "1.5em"
            },
            "& :where(h3)": {
              "font-size": "1.25em"
            },
            "& :where(h4)": {
              "font-size": "1em"
            },
            "& :where(h5)": {
              "color": "var(--phosphor)",
              "font-size": "0.875em"
            },
            "& :where(h6)": {
              "color": "var(--phosphor-dim)",
              "font-size": "0.75em",
              "letter-spacing": "var(--tracking-terminal-lg)",
              "text-transform": "uppercase"
            },
            "& :where(hr)": {
              "border": "0",
              "border-block-start": "1px solid var(--line)",
              "margin-block-end": "0",
              "margin-block-start": "calc(var(--typeset-flow) * 2)"
            },
            "& :where(li)": {
              "margin-block-start": "0.5em",
              "padding-inline-start": "0.25em"
            },
            "& :where(li)::marker": {
              "color": "var(--phosphor-dim)"
            },
            "& :where(mark)": {
              "background": "var(--amber)",
              "color": "var(--void)",
              "padding": "0.05em 0.2em"
            },
            "& :where(ol)": {
              "list-style-type": "decimal"
            },
            "& :where(p, ul, ol, pre, blockquote, table, details, dl, figure)": {
              "margin-block-end": "0",
              "margin-block-start": "var(--typeset-flow)"
            },
            "& :where(pre code)": {
              "background": "transparent",
              "border": "0",
              "color": "inherit",
              "font-family": "inherit",
              "font-size": "inherit",
              "padding": "0"
            },
            "& :where(pre)": {
              "background-color": "var(--panel-sunken)",
              "border": "1px solid var(--line)",
              "color": "var(--phosphor)",
              "font-family": "var(--font-mono)",
              "font-size": "0.875em",
              "line-height": "1.6",
              "overflow-x": "auto",
              "padding": "1em",
              "tab-size": "2"
            },
            "& :where(strong, b)": {
              "color": "var(--phosphor-bright)",
              "font-weight": "600"
            },
            "& :where(summary)": {
              "color": "var(--phosphor-bright)",
              "cursor": "pointer",
              "font-family": "var(--font-mono)",
              "font-weight": "600"
            },
            "& :where(summary)::marker": {
              "color": "var(--phosphor)"
            },
            "& :where(table)": {
              "border-block-end": "1px solid var(--line)",
              "border-collapse": "collapse",
              "font-variant-numeric": "tabular-nums",
              "width": "100%"
            },
            "& :where(th, td)": {
              "border-block-start": "1px solid var(--line)",
              "padding": "0.65em 0.75em",
              "text-align": "start",
              "vertical-align": "top"
            },
            "& :where(th)": {
              "color": "var(--phosphor-bright)",
              "font-family": "var(--font-mono)",
              "font-size": "0.75em",
              "letter-spacing": "var(--tracking-terminal)",
              "text-transform": "uppercase"
            },
            "& :where(ul, ol)": {
              "padding-inline-start": "1.5em"
            },
            "& :where(ul)": {
              "list-style-type": "square"
            },
            "& > :where(:first-child), & > :where(:first-child) > :where(:first-child), & :where(li, blockquote, td, th) > :where(:first-child)": {
              "margin-block-start": "0"
            },
            "color": "var(--foreground)",
            "font-family": "var(--font-sans)",
            "font-size": "var(--typeset-size)",
            "line-height": "var(--typeset-leading)",
            "max-width": "var(--typeset-measure)",
            "overflow-wrap": "break-word"
          }
        },
        "@media (prefers-reduced-motion: reduce)": {
          ".animate-alarm, .data-open\\:animate-alarm, .data-closed\\:animate-alarm, .after\\:animate-alarm::after, .animate-beam, .data-open\\:animate-beam, .data-closed\\:animate-beam, .after\\:animate-beam::after, .animate-caret, .data-open\\:animate-caret, .data-closed\\:animate-caret, .after\\:animate-caret::after, .animate-chart-in, .data-open\\:animate-chart-in, .data-closed\\:animate-chart-in, .after\\:animate-chart-in::after, .animate-close, .data-open\\:animate-close, .data-closed\\:animate-close, .after\\:animate-close::after, .animate-fade-in, .data-open\\:animate-fade-in, .data-closed\\:animate-fade-in, .after\\:animate-fade-in::after, .animate-fade-out, .data-open\\:animate-fade-out, .data-closed\\:animate-fade-out, .after\\:animate-fade-out::after, .animate-flicker, .data-open\\:animate-flicker, .data-closed\\:animate-flicker, .after\\:animate-flicker::after, .animate-glitch, .data-open\\:animate-glitch, .data-closed\\:animate-glitch, .after\\:animate-glitch::after, .animate-glyph, .data-open\\:animate-glyph, .data-closed\\:animate-glyph, .after\\:animate-glyph::after, .animate-jitter, .data-open\\:animate-jitter, .data-closed\\:animate-jitter, .after\\:animate-jitter::after, .animate-led, .data-open\\:animate-led, .data-closed\\:animate-led, .after\\:animate-led::after, .animate-line-in, .data-open\\:animate-line-in, .data-closed\\:animate-line-in, .after\\:animate-line-in::after, .animate-open, .data-open\\:animate-open, .data-closed\\:animate-open, .after\\:animate-open::after, .animate-pixel, .data-open\\:animate-pixel, .data-closed\\:animate-pixel, .after\\:animate-pixel::after, .animate-power-line-in, .data-open\\:animate-power-line-in, .data-closed\\:animate-power-line-in, .after\\:animate-power-line-in::after, .animate-power-line-out, .data-open\\:animate-power-line-out, .data-closed\\:animate-power-line-out, .after\\:animate-power-line-out::after, .animate-power-off, .data-open\\:animate-power-off, .data-closed\\:animate-power-off, .after\\:animate-power-off::after, .animate-power-on, .data-open\\:animate-power-on, .data-closed\\:animate-power-on, .after\\:animate-power-on::after, .animate-roll, .data-open\\:animate-roll, .data-closed\\:animate-roll, .after\\:animate-roll::after, .animate-select-fold-in-down, .data-open\\:animate-select-fold-in-down, .data-closed\\:animate-select-fold-in-down, .after\\:animate-select-fold-in-down::after, .animate-select-fold-in-up, .data-open\\:animate-select-fold-in-up, .data-closed\\:animate-select-fold-in-up, .after\\:animate-select-fold-in-up::after, .animate-select-fold-out-down, .data-open\\:animate-select-fold-out-down, .data-closed\\:animate-select-fold-out-down, .after\\:animate-select-fold-out-down::after, .animate-select-fold-out-up, .data-open\\:animate-select-fold-out-up, .data-closed\\:animate-select-fold-out-up, .after\\:animate-select-fold-out-up::after, .animate-slide-in-bottom, .data-open\\:animate-slide-in-bottom, .data-closed\\:animate-slide-in-bottom, .after\\:animate-slide-in-bottom::after, .animate-slide-in-left, .data-open\\:animate-slide-in-left, .data-closed\\:animate-slide-in-left, .after\\:animate-slide-in-left::after, .animate-slide-in-right, .data-open\\:animate-slide-in-right, .data-closed\\:animate-slide-in-right, .after\\:animate-slide-in-right::after, .animate-slide-in-top, .data-open\\:animate-slide-in-top, .data-closed\\:animate-slide-in-top, .after\\:animate-slide-in-top::after, .animate-slide-out-bottom, .data-open\\:animate-slide-out-bottom, .data-closed\\:animate-slide-out-bottom, .after\\:animate-slide-out-bottom::after, .animate-slide-out-left, .data-open\\:animate-slide-out-left, .data-closed\\:animate-slide-out-left, .after\\:animate-slide-out-left::after, .animate-slide-out-right, .data-open\\:animate-slide-out-right, .data-closed\\:animate-slide-out-right, .after\\:animate-slide-out-right::after, .animate-slide-out-top, .data-open\\:animate-slide-out-top, .data-closed\\:animate-slide-out-top, .after\\:animate-slide-out-top::after, .animate-sweep, .data-open\\:animate-sweep, .data-closed\\:animate-sweep, .after\\:animate-sweep::after, .animate-toast-in, .data-open\\:animate-toast-in, .data-closed\\:animate-toast-in, .after\\:animate-toast-in::after, .animate-toast-out, .data-open\\:animate-toast-out, .data-closed\\:animate-toast-out, .after\\:animate-toast-out::after, .animate-type, .data-open\\:animate-type, .data-closed\\:animate-type, .after\\:animate-type::after": {
            "animation": "none !important"
          }
        },
        "@utility scanlines": {
          "background-image": "repeating-linear-gradient(to bottom, transparent 0 2px, rgb(0 0 0 / 0.16) 2px 3px)",
          "mix-blend-mode": "multiply"
        },
        "@utility scanlines-soft": {
          "background-image": "repeating-linear-gradient(to bottom, transparent 0 3px, rgb(0 0 0 / 0.09) 3px 4px)",
          "mix-blend-mode": "multiply"
        },
        "@utility screen-grille": {
          "background-image": "repeating-linear-gradient(to right, rgb(255 90 90 / 0.55) 0 1px, rgb(90 255 120 / 0.55) 1px 2px, rgb(90 120 255 / 0.55) 2px 3px)",
          "mix-blend-mode": "multiply"
        },
        "@utility terminal-caret": {
          "background-color": "currentColor",
          "display": "inline-block",
          "flex-shrink": "0",
          "height": "1em",
          "vertical-align": "-0.125em",
          "width": "1ch"
        }
      }
    },
    {
      "name": "accordion",
      "type": "registry:ui",
      "title": "Accordion",
      "description": "Sections that open one at a time or many. The marker is a plus that rotates into a minus.",
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/accordion.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "alert",
      "type": "registry:ui",
      "title": "Alert",
      "description": "A notice with a lit left edge and a matching icon. Four tones.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/alert.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "alert-dialog",
      "type": "registry:ui",
      "title": "Alert Dialog",
      "description": "A pink confirmation dialog for destructive or irreversible actions.",
      "dependencies": [
        "@base-ui/react"
      ],
      "registryDependencies": [
        "@afterglow/button"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/alert-dialog.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "avatar",
      "type": "registry:ui",
      "title": "Avatar",
      "description": "Initials in mono inside a bordered square.",
      "dependencies": [
        "@base-ui/react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/avatar.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "badge",
      "type": "registry:ui",
      "title": "Badge",
      "description": "A bordered rectangle of tracked-out mono for a status or a count. Eight variants.",
      "dependencies": [
        "@base-ui/react",
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/badge.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "breadcrumb",
      "type": "registry:ui",
      "title": "Breadcrumb",
      "description": "A path in mono, separated by slashes, with the current segment in white.",
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/breadcrumb.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "button",
      "type": "registry:ui",
      "title": "Button",
      "description": "Seven variants and five sizes in uppercase mono. `primary` is filled phosphor; `signal` marks urgent states.",
      "dependencies": [
        "@base-ui/react",
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/button.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "calendar",
      "type": "registry:ui",
      "title": "Calendar",
      "description": "A square month grid with phosphor selection, an amber today marker and Afterglow navigation buttons.",
      "dependencies": [
        "date-fns",
        "lucide-react",
        "react-day-picker"
      ],
      "registryDependencies": [
        "@afterglow/button"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/calendar.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "card",
      "type": "registry:ui",
      "title": "Card",
      "description": "A panel with a colored left edge. One `accent` property drives both the edge and the title.",
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/card.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "chart",
      "type": "registry:ui",
      "title": "Chart",
      "description": "Recharts wired to the five chart colors, terminal tooltip and stepped reveal.",
      "dependencies": [
        "recharts"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/chart.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "checkbox",
      "type": "registry:ui",
      "title": "Checkbox",
      "description": "`[ ]` and `[x]`. A square that fills with the beam when it is on.",
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/checkbox.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "collapsible",
      "type": "registry:ui",
      "title": "Collapsible",
      "description": "The accordion without the styling, for when you have drawn the trigger yourself.",
      "dependencies": [
        "@base-ui/react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/collapsible.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "command",
      "type": "registry:ui",
      "title": "Command",
      "description": "A search line and a list that narrows as you type. Groups, shortcuts, and a dialog wrapper.",
      "dependencies": [
        "cmdk",
        "lucide-react"
      ],
      "registryDependencies": [
        "@afterglow/dialog"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/command.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "context-menu",
      "type": "registry:ui",
      "title": "Context Menu",
      "description": "A system menu at the pointer, with choices, submenus, shortcut hints and destructive actions.",
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/context-menu.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "dialog",
      "type": "registry:ui",
      "title": "Dialog",
      "description": "Opens in four steps rather than on a curve, with one pass of the beam down the panel.",
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/dialog.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "dropdown-menu",
      "type": "registry:ui",
      "title": "Dropdown Menu",
      "description": "Items, checkbox and radio items, submenus, and shortcut hints in the same mono as the keys.",
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/dropdown-menu.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "empty",
      "type": "registry:ui",
      "title": "Empty",
      "description": "A dashed hairline box for a list with nothing in it.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/empty.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "hover-card",
      "type": "registry:ui",
      "title": "Hover Card",
      "description": "A bordered preview panel for a link, with one phosphor edge and room for interactive content.",
      "dependencies": [
        "@base-ui/react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/hover-card.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "input",
      "type": "registry:ui",
      "title": "Input",
      "description": "A hairline field in mono with a phosphor caret. Focus brightens the border instead of adding a ring.",
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/input.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "input-otp",
      "type": "registry:ui",
      "title": "Input OTP",
      "description": "One cell per character, with a drawn caret in the active one.",
      "dependencies": [
        "input-otp",
        "lucide-react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/input-otp.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "kbd",
      "type": "registry:ui",
      "title": "Kbd",
      "description": "A key with two pixels of implied depth under it. Pass `glyph` for `⌘`, `⇧` and `↵`.",
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/kbd.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "label",
      "type": "registry:ui",
      "title": "Label",
      "description": "A field's name, set as an eyebrow. Small, tracked out, phosphor.",
      "dependencies": [
        "@base-ui/react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/label.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "pagination",
      "type": "registry:ui",
      "title": "Pagination",
      "description": "Page numbers as joined cells, so a run of them reads as one control.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@afterglow/button"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/pagination.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "popover",
      "type": "registry:ui",
      "title": "Popover",
      "description": "A bordered panel anchored to its trigger.",
      "dependencies": [
        "@base-ui/react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/popover.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "progress",
      "type": "registry:ui",
      "title": "Progress",
      "description": "Three pixels of track and a light in it. Pass `indeterminate` for a segment that sweeps and leaves.",
      "dependencies": [
        "@base-ui/react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/progress.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "radio-group",
      "type": "registry:ui",
      "title": "Radio Group",
      "description": "Terminal-style radio marks in their unchecked and checked states: `( )` and `(•)`.",
      "dependencies": [
        "@base-ui/react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/radio-group.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "resizable",
      "type": "registry:ui",
      "title": "Resizable",
      "description": "Panels split by a hairline that lights when you take hold of it.",
      "dependencies": [
        "react-resizable-panels",
        "lucide-react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/resizable.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "scroll-area",
      "type": "registry:ui",
      "title": "Scroll Area",
      "description": "A hairline track and a square thumb, in place of the operating system's own.",
      "dependencies": [
        "@base-ui/react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/scroll-area.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "select",
      "type": "registry:ui",
      "title": "Select",
      "description": "A trigger that reads as a field, and a list whose chosen row carries a lit left edge.",
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/select.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "separator",
      "type": "registry:ui",
      "title": "Separator",
      "description": "One pixel of the border color, horizontal or vertical.",
      "dependencies": [
        "@base-ui/react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/separator.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "sheet",
      "type": "registry:ui",
      "title": "Sheet",
      "description": "A drawer from any of the four edges. The edge it slides from keeps a lit border.",
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/sheet.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "skeleton",
      "type": "registry:ui",
      "title": "Skeleton",
      "description": "Placeholder rows in dim phosphor.",
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/skeleton.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "slider",
      "type": "registry:ui",
      "title": "Slider",
      "description": "A hairline track, a lit range, and a square handle. Single value or range.",
      "dependencies": [
        "@base-ui/react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/slider.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "spinner",
      "type": "registry:ui",
      "title": "Spinner",
      "description": "A lit pixel travelling a 3x3 grid, four brightness levels trailing behind it.",
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/spinner.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "switch",
      "type": "registry:ui",
      "title": "Switch",
      "description": "A squared-off rocker in two sizes.",
      "dependencies": [
        "@base-ui/react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/switch.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "table",
      "type": "registry:ui",
      "title": "Table",
      "description": "A manifest in mono with hairline rules. `is-numeric` gives a cell amber tabular figures.",
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/table.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "tabs",
      "type": "registry:ui",
      "title": "Tabs",
      "description": "Two variants: joined segments and a quieter line.",
      "dependencies": [
        "@base-ui/react",
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/tabs.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "textarea",
      "type": "registry:ui",
      "title": "Textarea",
      "description": "A multiline field that grows with its content.",
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/textarea.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "toast",
      "type": "registry:ui",
      "title": "Toast",
      "description": "Sonner alerts that blink into place with a border, tint and icon for each tone.",
      "dependencies": [
        "sonner",
        "lucide-react"
      ],
      "registryDependencies": [
        "@afterglow/spinner"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/toast.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "toggle",
      "type": "registry:ui",
      "title": "Toggle",
      "description": "A button that stays down.",
      "dependencies": [
        "@base-ui/react",
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/toggle.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "toggle-group",
      "type": "registry:ui",
      "title": "Toggle Group",
      "description": "Toggles joined the way the segmented tabs are.",
      "dependencies": [
        "@base-ui/react",
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@afterglow/toggle"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/toggle-group.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "tooltip",
      "type": "registry:ui",
      "title": "Tooltip",
      "description": "A compact label with one lit edge and no arrow.",
      "dependencies": [
        "@base-ui/react"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/ui/tooltip.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "alarm-button",
      "type": "registry:component",
      "title": "Alarm Button",
      "description": "Two flashes and a rest, the way a warning lamp blinks. Pointing at it stops the flashing.",
      "registryDependencies": [
        "@afterglow/button"
      ],
      "files": [
        {
          "path": "registry/terminal/components/alarm-button.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "boot-log",
      "type": "registry:component",
      "title": "Boot Log",
      "description": "A self test that prints itself line by line, at its final height from the first frame.",
      "registryDependencies": [
        "@afterglow/caret"
      ],
      "files": [
        {
          "path": "registry/terminal/components/boot-log.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "caret",
      "type": "registry:component",
      "title": "Caret",
      "description": "A blinking block that follows the surrounding font size.",
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/components/caret.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "connector",
      "type": "registry:component",
      "title": "Connector",
      "description": "A rule extending left or right from a heading.",
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/components/connector.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "eyebrow",
      "type": "registry:component",
      "title": "Eyebrow",
      "description": "The tracked-out line above a heading, with an optional block caret.",
      "registryDependencies": [
        "@afterglow/caret"
      ],
      "files": [
        {
          "path": "registry/terminal/components/eyebrow.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "led",
      "type": "registry:component",
      "title": "LED",
      "description": "A status lamp and the line it sits in. Four tones, and the idle one holds still.",
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/components/led.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "prompt",
      "type": "registry:component",
      "title": "Prompt",
      "description": "A shell line. Sigil, field and caret share one row with no border between them.",
      "registryDependencies": [
        "@afterglow/caret"
      ],
      "files": [
        {
          "path": "registry/terminal/components/prompt.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "scanlines",
      "type": "registry:component",
      "title": "Scanlines",
      "description": "The glass. Two densities, a multiply blend, and a fixed mode for putting a whole page behind one sheet.",
      "categories": [
        "effects"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/components/scanlines.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "screen",
      "type": "registry:component",
      "title": "Screen",
      "description": "A framed CRT surface. Scanlines by default, with the aperture grille, bloom, roll bar and grain opt in.",
      "categories": [
        "effects"
      ],
      "registryDependencies": [
        "@afterglow/scanlines",
        "@afterglow/grain"
      ],
      "files": [
        {
          "path": "registry/terminal/components/screen.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "shell",
      "type": "registry:component",
      "title": "Shell",
      "description": "A command transcript and prompt with command history. Bring the commands and their effects.",
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "dependencies": [
        "class-variance-authority"
      ],
      "files": [
        {
          "path": "registry/terminal/components/shell.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "terminal-window",
      "type": "registry:component",
      "title": "Terminal Window",
      "description": "Window chrome in three conventions: macOS, Windows, or a slim hairline version. Resizable and collapsible.",
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/components/terminal-window.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "date-picker",
      "type": "registry:block",
      "title": "Date Picker",
      "description": "A calendar, popover and button composed into an installable single-date picker.",
      "categories": [
        "forms"
      ],
      "dependencies": [
        "date-fns",
        "lucide-react"
      ],
      "registryDependencies": [
        "@afterglow/button",
        "@afterglow/calendar",
        "@afterglow/popover"
      ],
      "files": [
        {
          "path": "registry/terminal/blocks/date-picker.tsx",
          "type": "registry:component",
          "target": "components/date-picker.tsx"
        }
      ]
    },
    {
      "name": "operator-dashboard",
      "type": "registry:block",
      "title": "Operator Dashboard",
      "description": "A full-page operations dashboard with boot status, volume health, rebuild progress and a shell.",
      "categories": [
        "dashboard",
        "application"
      ],
      "registryDependencies": [
        "@afterglow/alarm-button",
        "@afterglow/badge",
        "@afterglow/boot-log",
        "@afterglow/button",
        "@afterglow/card",
        "@afterglow/connector",
        "@afterglow/eyebrow",
        "@afterglow/kbd",
        "@afterglow/led",
        "@afterglow/progress",
        "@afterglow/shell",
        "@afterglow/scanlines",
        "@afterglow/table"
      ],
      "files": [
        {
          "path": "registry/terminal/blocks/operator-dashboard/dashboard.tsx",
          "type": "registry:component",
          "target": "components/operator-dashboard.tsx"
        },
        {
          "path": "registry/terminal/blocks/operator-dashboard/page.tsx",
          "type": "registry:page",
          "target": "app/operator-dashboard/page.tsx"
        }
      ]
    },
    {
      "name": "terminal",
      "type": "registry:style",
      "title": "Terminal Preset",
      "description": "The shared theme and every registry component in one `shadcn init` preset.",
      "extends": "none",
      "dependencies": [
        "@base-ui/react",
        "class-variance-authority",
        "clsx",
        "cmdk",
        "date-fns",
        "input-otp",
        "lucide-react",
        "react-day-picker",
        "react-resizable-panels",
        "recharts",
        "sonner",
        "tailwind-merge"
      ],
      "registryDependencies": [
        "@afterglow/theme",
        "@afterglow/accordion",
        "@afterglow/alert",
        "@afterglow/alert-dialog",
        "@afterglow/avatar",
        "@afterglow/badge",
        "@afterglow/breadcrumb",
        "@afterglow/button",
        "@afterglow/calendar",
        "@afterglow/card",
        "@afterglow/chart",
        "@afterglow/checkbox",
        "@afterglow/collapsible",
        "@afterglow/command",
        "@afterglow/context-menu",
        "@afterglow/dialog",
        "@afterglow/dropdown-menu",
        "@afterglow/empty",
        "@afterglow/hover-card",
        "@afterglow/input",
        "@afterglow/input-otp",
        "@afterglow/kbd",
        "@afterglow/label",
        "@afterglow/pagination",
        "@afterglow/popover",
        "@afterglow/progress",
        "@afterglow/radio-group",
        "@afterglow/resizable",
        "@afterglow/scroll-area",
        "@afterglow/select",
        "@afterglow/separator",
        "@afterglow/sheet",
        "@afterglow/skeleton",
        "@afterglow/slider",
        "@afterglow/spinner",
        "@afterglow/switch",
        "@afterglow/table",
        "@afterglow/tabs",
        "@afterglow/textarea",
        "@afterglow/toast",
        "@afterglow/toggle",
        "@afterglow/toggle-group",
        "@afterglow/tooltip",
        "@afterglow/alarm-button",
        "@afterglow/boot-log",
        "@afterglow/caret",
        "@afterglow/connector",
        "@afterglow/eyebrow",
        "@afterglow/led",
        "@afterglow/prompt",
        "@afterglow/scanlines",
        "@afterglow/screen",
        "@afterglow/shell",
        "@afterglow/terminal-window",
        "@afterglow/use-reduced-motion",
        "@afterglow/typewriter",
        "@afterglow/scramble",
        "@afterglow/grain",
        "@afterglow/glitch"
      ],
      "files": []
    },
    {
      "name": "use-reduced-motion",
      "type": "registry:hook",
      "title": "Use Reduced Motion",
      "description": "Reads the reduced-motion query and re-reads it when the setting changes, for the effects CSS cannot switch off.",
      "categories": [
        "effects"
      ],
      "files": [
        {
          "path": "registry/terminal/hooks/use-reduced-motion.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "typewriter",
      "type": "registry:component",
      "title": "Typewriter",
      "description": "A line that types itself one character at a time, at its finished width from the first frame.",
      "categories": [
        "effects"
      ],
      "registryDependencies": [
        "@afterglow/caret",
        "@afterglow/use-reduced-motion"
      ],
      "files": [
        {
          "path": "registry/terminal/components/typewriter.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "scramble",
      "type": "registry:component",
      "title": "Scramble",
      "description": "Text resolving out of glyph soup, left to right. On mount, on hover, or when it scrolls into view.",
      "categories": [
        "effects"
      ],
      "registryDependencies": [
        "@afterglow/use-reduced-motion"
      ],
      "files": [
        {
          "path": "registry/terminal/components/scramble.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "grain",
      "type": "registry:component",
      "title": "Grain",
      "description": "Tube noise over anything. A static filter by default, or a capped canvas loop that pauses off screen.",
      "categories": [
        "effects"
      ],
      "registryDependencies": [
        "@afterglow/use-reduced-motion"
      ],
      "files": [
        {
          "path": "registry/terminal/components/grain.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glitch",
      "type": "registry:component",
      "title": "Glitch",
      "description": "Channel separation over a subtree. Two colour-shifted copies clipped into bands that jump on steps.",
      "categories": [
        "effects"
      ],
      "registryDependencies": [
        "@afterglow/theme"
      ],
      "files": [
        {
          "path": "registry/terminal/components/glitch.tsx",
          "type": "registry:component"
        }
      ]
    }
  ]
}
