/* ─────── Terminal: a phosphor screen; by day, a line printer's green-barred paper ─────── */

:root[data-skin="terminal"] {
  --background: 90 27% 95%;
  --foreground: 144 50% 13%;
  --card: 90 30% 98%;
  --card-foreground: 144 50% 13%;
  --popover: 90 30% 98%;
  --popover-foreground: 144 50% 13%;
  --primary: 146 83% 24%;
  --primary-foreground: 90 27% 96%;
  --secondary: 105 25% 89%;
  --secondary-foreground: 144 50% 13%;
  --muted: 105 25% 89%;
  --muted-foreground: 140 25% 30%;
  --accent: 105 30% 85%;
  --accent-foreground: 144 50% 13%;
  --destructive: 4 72% 44%;
  --destructive-foreground: 0 0% 100%;
  --border: 140 18% 62%;
  --input: 140 18% 52%;
  --ring: 146 83% 24%;
  --radius: 0rem;
  --band: hsl(105 32% 90%);
  --font-body: "JetBrains Mono Variable", ui-monospace, Menlo, monospace;
  --font-display: "VT323", var(--font-body);
  --font-label: var(--font-body);
}

:root.dark[data-skin="terminal"] {
  --background: 135 22% 4%;
  --foreground: 133 79% 85%;
  --card: 135 24% 6%;
  --card-foreground: 133 79% 85%;
  --popover: 135 24% 7%;
  --popover-foreground: 133 79% 85%;
  --primary: 139 100% 61%;
  --primary-foreground: 135 22% 4%;
  --secondary: 146 33% 10%;
  --secondary-foreground: 133 79% 88%;
  --muted: 146 33% 10%;
  --muted-foreground: 135 32% 60%;
  --accent: 142 33% 12%;
  --accent-foreground: 130 100% 95%;
  --destructive: 3 100% 67%;
  --destructive-foreground: 135 22% 4%;
  --border: 138 30% 19%;
  --input: 138 30% 26%;
  --ring: 139 100% 61%;
}

/* By day the paper's green bars; by night a phosphor glow. */
:root[data-skin="terminal"] body {
  background-image: repeating-linear-gradient(to bottom, transparent 0 48px, var(--band) 48px 96px);
}
:root.dark[data-skin="terminal"] body {
  background-image: none;
  text-shadow: 0 0 6px hsl(var(--primary) / 0.22);
}

/* The screen's own face for titles, set larger: it is drawn small in its em box. */
:root[data-skin="terminal"] .font-display {
  font-size-adjust: ex-height 0.56;
  font-weight: 400;
  letter-spacing: 0.02em;
}
:root[data-skin="terminal"] [data-slot="logo"] + .font-display::after {
  content: "_";
  animation: terminal-blink 1.05s steps(1) infinite;
}
@keyframes terminal-blink {
  50% {
    opacity: 0;
  }
}

:root[data-skin="terminal"] [data-slot="button"]:is([data-variant="default"], [data-variant="destructive"], [data-variant="secondary"], [data-variant="outline"]) {
  border: 1px solid hsl(var(--input));
  font-weight: 600;
}
:root[data-skin="terminal"] [data-slot="button"]:is([data-variant="default"], [data-variant="destructive"]) {
  border-color: transparent;
  text-shadow: none;
}
:root[data-skin="terminal"] [data-slot="button"][data-variant="outline"] {
  background: transparent;
}
:root[data-skin="terminal"] [data-slot="button"][data-variant="outline"]:hover {
  background-color: hsl(var(--primary));
  color: hsl(var(--primary-foreground));
  text-shadow: none;
}

:root[data-skin="terminal"] [data-slot="card"] {
  border-style: dashed;
  box-shadow: none;
}

:root[data-skin="terminal"] [data-slot="badge"] {
  font-family: var(--font-label);
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-shadow: none;
}

:root[data-skin="terminal"] [data-slot="input"] {
  background-color: hsl(var(--card));
}

:root[data-skin="terminal"] [data-slot="tabs-list"] {
  gap: 0.25rem;
  padding: 0;
  background: transparent;
}
:root[data-skin="terminal"] [data-slot="tabs-trigger"] {
  border: 1px solid hsl(var(--border));
}
:root[data-skin="terminal"] [data-slot="tabs-trigger"][data-state="active"] {
  border-color: hsl(var(--primary));
  background-color: hsl(var(--primary));
  color: hsl(var(--primary-foreground));
  box-shadow: none;
  text-shadow: none;
}

:root[data-skin="terminal"] [data-slot="table"] th {
  font-size: 0.72rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
:root[data-skin="terminal"] [data-slot="table"] tr {
  border-bottom-style: dashed;
}

:root[data-skin="terminal"] :is([data-slot="overlay"], [data-slot="dialog"]) {
  border-color: hsl(var(--primary) / 0.6);
  box-shadow: 0 0 0 1px hsl(var(--primary) / 0.15), 0 18px 50px -20px rgb(0 0 0 / 0.6);
}

:root[data-skin="terminal"] [data-slot="avatar"] {
  border: 1px solid currentColor;
}

/* ── The pages' own parts ── */

/* Terminal has no rounded corners at all. */
:root[data-skin="terminal"] *,
:root[data-skin="terminal"] *::before,
:root[data-skin="terminal"] *::after {
  border-radius: 0 !important;
}

:root[data-skin="terminal"] [data-slot="nav-bar"] {
  border-top-style: dashed;
  background: transparent;
}
:root[data-skin="terminal"] [data-slot="app-header"] {
  border-bottom-style: dashed;
}
:root[data-skin="terminal"] [data-slot="nav-link"]:is([aria-current="page"], [data-active]) {
  background-color: hsl(var(--primary));
  color: hsl(var(--primary-foreground));
  box-shadow: none;
  text-shadow: none;
}
:root[data-skin="terminal"] [data-slot="logo"] {
  outline: 1px solid hsl(var(--primary));
  outline-offset: 2px;
}

:root[data-skin="terminal"] [data-slot="project-icon"] {
  border: 1px dashed hsl(var(--primary));
}

/* Progress drawn in character cells, like [█████·····]. */
:root[data-skin="terminal"] [data-slot="progress"] {
  -webkit-mask-image: repeating-linear-gradient(90deg, #000 0 calc(3.333% - 2px), transparent calc(3.333% - 2px) 3.333%);
  mask-image: repeating-linear-gradient(90deg, #000 0 calc(3.333% - 2px), transparent calc(3.333% - 2px) 3.333%);
}
:root[data-skin="terminal"] [data-slot="progress-fill"] {
  background-color: hsl(var(--primary));
}

:root[data-skin="terminal"] [data-slot="stat"][data-tone] {
  border: 1px solid currentColor;
  background: transparent;
}

:root[data-skin="terminal"] [data-slot="banner"] {
  border-style: dashed;
  box-shadow: none;
}

:root[data-skin="terminal"] :is([data-slot="table-frame"], [data-slot="board-column"]) {
  border-style: dashed;
}
:root[data-skin="terminal"] [data-slot="board-column"] {
  background: transparent;
}

:root[data-skin="terminal"] [data-slot="segmented"] {
  padding: 0;
  border: 1px solid hsl(var(--border));
  background: transparent;
}
:root[data-skin="terminal"] [data-slot="segmented"] > button {
  height: 100%;
}
:root[data-skin="terminal"] [data-slot="segmented"] > [aria-pressed="true"] {
  background-color: hsl(var(--primary));
  color: hsl(var(--primary-foreground));
  box-shadow: none;
}

@media (prefers-reduced-motion: reduce) {
  :root[data-skin="terminal"] [data-slot="logo"] + .font-display::after {
    animation: none;
  }
}
