/* General Studios brand, matching generalstudio.org */
[data-md-color-scheme="slate"] {
  --gs-bg: #0b0b0c;
  --gs-surface: #161617;
  --gs-surface-2: #1d1d1f;
  --gs-line: rgba(255, 255, 255, 0.12);
  --gs-text: #f5f5f7;
  --gs-muted: #a1a1a6;
  --gs-accent: #ffde59;
  --gs-accent-ink: #1b1600;

  --md-default-bg-color: var(--gs-bg);
  --md-default-fg-color: var(--gs-text);
  --md-default-fg-color--light: var(--gs-muted);
  --md-default-fg-color--lighter: rgba(245, 245, 247, 0.32);
  --md-default-fg-color--lightest: var(--gs-line);
  --md-primary-fg-color: var(--gs-bg);
  --md-primary-fg-color--light: var(--gs-surface);
  --md-primary-fg-color--dark: var(--gs-bg);
  --md-primary-bg-color: var(--gs-text);
  --md-primary-bg-color--light: var(--gs-muted);
  --md-accent-fg-color: var(--gs-accent);
  --md-accent-fg-color--transparent: rgba(255, 222, 89, 0.1);
  --md-typeset-color: var(--gs-text);
  --md-typeset-a-color: var(--gs-accent);
  --md-code-bg-color: var(--gs-surface);
  --md-footer-bg-color: var(--gs-bg);
  --md-footer-bg-color--dark: var(--gs-bg);
  --md-footer-fg-color--light: var(--gs-muted);
  --md-admonition-bg-color: var(--gs-surface);
}

/* header + tabs */
.md-header, .md-tabs { background: var(--gs-bg); }
.md-header { border-bottom: 1px solid var(--gs-line); box-shadow: none; }
.md-header--shadow { box-shadow: none; }
.md-tabs { border-bottom: 1px solid var(--gs-line); }
.md-header__button.md-logo { padding: 0.3rem 0.2rem; margin-right: 0.6rem; }
.md-header__button.md-logo img { height: 1.6rem; width: auto; }
.md-header__title { color: var(--gs-muted); font-weight: 500; }
.md-tabs__link--active, .md-tabs__link:hover { color: var(--gs-text); }

/* search box */
.md-search__form { background: var(--gs-surface-2); border-radius: 999px; }
.md-search__form:hover { background: var(--gs-surface); }

/* type */
.md-typeset h1, .md-typeset h2, .md-typeset h3 { color: var(--gs-text); font-weight: 600; letter-spacing: -0.02em; }
.md-typeset h1 { font-size: 2.2em; }
.md-typeset a:hover { color: var(--gs-text); }
.md-nav__link--active, .md-nav__link:hover { color: var(--gs-accent) !important; }

.gs-eyebrow {
  font-family: var(--md-code-font-family); font-size: 0.6rem; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--gs-accent); margin: 0 0 0.6rem;
}
.gs-lede { color: var(--gs-muted); font-size: 1.05em; max-width: 36em; }

/* buttons: brand pill */
.md-typeset .md-button {
  border-radius: 999px; font-weight: 600; padding: 0.5em 1.4em;
  border-color: var(--gs-line); color: var(--gs-text);
}
.md-typeset .md-button--primary, .md-typeset .md-button--primary:hover {
  background: var(--gs-accent); border-color: var(--gs-accent); color: var(--gs-accent-ink);
}
.md-typeset .md-button:not(.md-button--primary):hover { border-color: var(--gs-accent); color: var(--gs-accent); background: transparent; }

/* product cards */
.md-typeset .grid.cards > ul > li {
  background: var(--gs-surface); border: 1px solid var(--gs-line); border-radius: 12px;
}
.md-typeset .grid.cards > ul > li:hover { border-color: var(--gs-accent); box-shadow: none; }
.md-typeset .grid.cards > ul > li > p:first-child strong { font-size: 1.05em; }

/* admonitions */
.md-typeset .admonition, .md-typeset details { border-radius: 10px; border-width: 1px; border-color: var(--gs-line); box-shadow: none; }
.md-typeset .admonition.tip, .md-typeset details.question { border-left: 3px solid var(--gs-accent); }
.md-typeset .tip > .admonition-title, .md-typeset .question > summary { background: rgba(255, 222, 89, 0.08); }
.md-typeset .tip > .admonition-title::before, .md-typeset .question > summary::before { background-color: var(--gs-accent); }

/* PDF viewer */
.pdf-viewer { width: 100%; height: 80vh; border: 1px solid var(--gs-line); border-radius: 12px; background: var(--gs-surface); }

/* footer */
.md-footer-meta { border-top: 1px solid var(--gs-line); }
.md-copyright a { color: var(--gs-muted); }
.md-copyright a:hover { color: var(--gs-accent); }

/* keep the logo in the header at every width (Material hides it on narrow screens) */
.md-header__button.md-logo { display: inline-block !important; }
@media screen and (max-width: 76.2344em) {
  .md-header__button.md-logo img { height: 1.3rem; }
  .md-header__title { margin-left: 0.2rem; }
}
.md-typeset .admonition.tip { border-color: var(--gs-line); border-left-color: var(--gs-accent); }

/* ---------- manual components ---------- */

/* keyboard keys */
.md-typeset kbd {
  background: var(--gs-surface-2); color: var(--gs-text);
  box-shadow: 0 0.1rem 0 rgba(0,0,0,.6), inset 0 0 0 1px var(--gs-line);
  border-radius: 6px; font-family: var(--md-code-font-family); font-size: 0.78em;
}
.md-typeset .keys span { color: var(--gs-muted); padding: 0 0.15em; }
.md-typeset .gs-key-hit-kbd kbd { background: var(--gs-accent); color: var(--gs-accent-ink); }
.md-typeset tr.gs-key-hit td { background: rgba(255, 222, 89, 0.12); transition: background .15s; }
.md-typeset tr td { transition: background .6s; }
.gs-keytest {
  display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem 0.8rem;
  padding: 0.7rem 0.9rem; border: 1px dashed var(--gs-line); border-radius: 10px; color: var(--gs-muted);
}
.gs-keytest p { margin: 0; }
.gs-keytest-out { color: var(--gs-accent); font-weight: 600; }

/* checklists */
.md-typeset .task-list-control .task-list-indicator::before { background-color: var(--gs-line); }
.md-typeset .task-list-control [type=checkbox]:checked + .task-list-indicator::before { background-color: var(--gs-accent); }
.md-typeset .task-list-item { transition: opacity .2s; }
.md-typeset .task-list-item.gs-done { opacity: 0.55; }
.md-typeset .task-list-item.gs-done > :not(ul) { text-decoration: line-through; text-decoration-color: var(--gs-muted); }
.gs-progress { display: flex; align-items: center; gap: 0.8rem; margin: 0.6rem 0 0.4rem; font-size: 0.7rem; color: var(--gs-muted); }
.gs-progress-track { flex: 1; height: 6px; border-radius: 999px; background: var(--gs-surface-2); overflow: hidden; }
.gs-progress-fill { height: 100%; width: 0; background: var(--gs-accent); border-radius: 999px; transition: width .3s; }
.gs-progress.complete .gs-progress-label { color: var(--gs-accent); font-weight: 600; }
.gs-progress-reset { color: var(--gs-muted); border: 1px solid var(--gs-line); border-radius: 999px; padding: 0.1rem 0.6rem; cursor: pointer; font: inherit; }
.gs-progress-reset:hover { color: var(--gs-accent); border-color: var(--gs-accent); }

/* filter box */
.gs-filter { position: sticky; top: 3.4rem; z-index: 2; display: flex; align-items: center; gap: 0.8rem;
  margin: 1rem 0 1.4rem; padding: 0.4rem 0; background: var(--gs-bg); }
.gs-filter input {
  flex: 1; font: inherit; font-size: 0.8rem; color: var(--gs-text);
  background: var(--gs-surface); border: 1px solid var(--gs-line); border-radius: 999px; padding: 0.55rem 1rem;
}
.gs-filter input:focus { outline: none; border-color: var(--gs-accent); }
.gs-filter-count { font-size: 0.7rem; color: var(--gs-muted); white-space: nowrap; }
.md-typeset .gs-nomatch { color: var(--gs-muted); }

/* LEDs */
.gs-led { display: inline-block; width: 0.75em; height: 0.75em; border-radius: 50%; vertical-align: -0.05em;
  background: currentColor; box-shadow: 0 0 0.5em currentColor; }
.gs-led.green { color: #3ddc5f; }
.gs-led.yellow { color: #ffde59; }
.gs-led.red { color: #ff4d4f; }
.gs-led.blink { animation: gs-blink 1s steps(1) infinite; }
.gs-led.dblink { animation: gs-dblink 1.4s linear infinite; }
@keyframes gs-blink { 50% { opacity: 0.12; box-shadow: none; } }
@keyframes gs-dblink { 0%,12%,28%,40% { opacity: 1; } 13%,27%,41%,100% { opacity: 0.12; box-shadow: none; } }
@media (prefers-reduced-motion: reduce) { .gs-led.blink, .gs-led.dblink { animation: none; opacity: 0.6; } }
.gs-led-legend { display: grid; grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr)); gap: 0.6rem; margin: 1rem 0; }
.gs-led-legend > div { display: grid; grid-template-columns: auto 1fr; column-gap: 0.7rem; align-items: center;
  padding: 0.7rem 0.9rem; background: var(--gs-surface); border: 1px solid var(--gs-line); border-radius: 10px; }
.gs-led-legend .gs-led { grid-row: span 2; width: 1rem; height: 1rem; }
.gs-led-legend b { font-size: 0.75rem; }
.gs-led-legend span:not(.gs-led) { font-size: 0.7rem; color: var(--gs-muted); }

/* coverage fringe strip */
.gs-fringe { display: grid; grid-template-columns: 1fr 1fr 1fr; border-radius: 10px; overflow: hidden; margin: 1rem 0;
  border: 1px solid var(--gs-line); }
.gs-fringe > div { padding: 0.8rem 1rem; display: flex; flex-direction: column; gap: 0.15rem; }
.gs-fringe b { font-size: 0.75rem; }
.gs-fringe span { font-size: 0.65rem; color: var(--gs-muted); }
.gs-fringe .clean { background: rgba(61, 220, 95, 0.12); }
.gs-fringe .choppy { background: repeating-linear-gradient(90deg, rgba(255,222,89,.16) 0 6px, transparent 6px 10px); }
.gs-fringe .gone { background: var(--gs-surface); color: var(--gs-muted); }

/* cards: icon accent */
.md-typeset .grid.cards .lg { color: var(--gs-accent); }
.md-typeset .grid.cards .lg.gs-red { color: #ff4d4f; }

/* tabs */
.md-typeset .tabbed-labels > label { color: var(--gs-muted); }
.md-typeset .tabbed-labels > label:hover { color: var(--gs-text); }
.md-typeset .tabbed-set > input:checked + label, .md-typeset .tabbed-labels > label.tabbed-label--active { color: var(--gs-accent); }
.md-typeset .tabbed-labels::before { background: var(--gs-accent); }

/* collapsibles */
.md-typeset details.abstract, .md-typeset details.tip { border-left: 3px solid var(--gs-accent); }
.md-typeset .abstract > summary, .md-typeset details.tip > summary { background: var(--gs-surface); }
.md-typeset .abstract > summary::before, .md-typeset details.tip > summary::before { background-color: var(--gs-accent); }
.md-typeset details > summary::after { color: var(--gs-muted); }

/* code annotations */
.md-typeset .md-annotation__index::after { background: var(--gs-accent); }
.md-typeset .md-annotation__index { color: var(--gs-accent-ink); }

/* mermaid */
:root, [data-md-color-scheme="slate"] {
  --md-mermaid-font-family: var(--md-text-font-family);
  --md-mermaid-edge-color: var(--gs-muted);
  --md-mermaid-node-bg-color: var(--gs-surface-2);
  --md-mermaid-node-fg-color: var(--gs-text);
  --md-mermaid-label-bg-color: var(--gs-bg);
  --md-mermaid-label-fg-color: var(--gs-text);
}

/* abbreviation tooltips */
.md-typeset abbr { text-decoration: underline dotted var(--gs-muted); cursor: help; }

/* tables: tighter, zebra on dark */
.md-typeset table:not([class]) { border: 1px solid var(--gs-line); border-radius: 10px; font-size: 0.72rem; }
.md-typeset table:not([class]) th { background: var(--gs-surface); color: var(--gs-text); }
.md-typeset table:not([class]) td { border-top-color: var(--gs-line); }
.md-typeset table:not([class]) tbody tr:hover { background: rgba(255,255,255,0.025); box-shadow: none; }

/* keep setting / call names whole; they wrap between names instead */
.md-typeset td:first-child code { white-space: nowrap; word-break: normal; }

/* collapsibles: brand line instead of Material's per-type colours */
.md-typeset details.tip, .md-typeset details.abstract, .md-typeset details.question {
  border-color: var(--gs-line); border-left-color: var(--gs-accent);
}
.md-typeset details.question > summary { background: var(--gs-surface); }

/* ---------- Cat Generator manual ---------- */
.gs-led.amber { color: #ffb020; }
.gs-led.off { color: #3a3a3d; box-shadow: none; }
.gs-led.blink-fast { animation: gs-blink 0.4s steps(1) infinite; }
@media (prefers-reduced-motion: reduce) { .gs-led.blink-fast { animation: none; opacity: 0.6; } }

.gs-nameplate table { max-width: 26rem; }
.gs-nameplate thead { display: none; }

/* LCD */
.gs-lcd {
  display: inline-block; padding: 0.6rem 0.8rem; border-radius: 6px;
  background: #b7d36a; box-shadow: inset 0 0 0 2px #7f9a3b, inset 0 0 18px rgba(0,0,0,.25);
  font-family: var(--md-code-font-family); color: #1d2a06;
}
.gs-lcd pre { margin: 0; padding: 0; background: none; font: inherit; font-size: 0.95rem; line-height: 1.25;
  letter-spacing: 0.06em; white-space: pre; color: inherit; }
.gs-lcd.inverse { background: #1d2a06; color: #b7d36a; }
.gs-lcd.inverse.blink-off { color: #1d2a06; }

/* panel */
.gs-genpanel { margin: 1rem 0 1.6rem; padding: 1rem; background: var(--gs-surface); border: 1px solid var(--gs-line); border-radius: 14px; }
.gs-panel-face { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.4rem; padding: 1rem;
  background: #232325; border-radius: 10px; border: 1px solid #000; }
.gs-panel-brand { font-weight: 800; letter-spacing: 0.08em; color: #111; background: #ffcd11; padding: 0.15rem 0.5rem; border-radius: 3px; font-size: 0.8rem; }
.gs-lamps { display: flex; gap: 1rem; }
.gs-lamps span { display: flex; flex-direction: column; align-items: center; gap: 0.35rem; font-size: 0.55rem; letter-spacing: 0.1em; color: var(--gs-muted); }
.gs-lamps .gs-led { width: 1.1rem; height: 1.1rem; }
.gs-panel-controls { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.9rem; align-items: center; }
.gs-seg { display: inline-flex; border: 1px solid var(--gs-line); border-radius: 999px; overflow: hidden; }
.gs-seg button, .gs-btn { font: inherit; font-size: 0.7rem; font-weight: 600; color: var(--gs-text); background: transparent;
  border: 0; padding: 0.4rem 0.9rem; cursor: pointer; }
.gs-seg button + button { border-left: 1px solid var(--gs-line); }
.gs-seg button.on { background: var(--gs-accent); color: var(--gs-accent-ink); }
.gs-btn { border: 1px solid var(--gs-line); border-radius: 999px; }
.gs-btn:hover:not(:disabled), .gs-seg button:hover:not(.on) { color: var(--gs-accent); }
.gs-btn.on { border-color: var(--gs-accent); color: var(--gs-accent); }
.gs-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.gs-btn.gs-estop { background: #c62828; border-color: #c62828; color: #fff; }
.gs-btn.gs-estop.on { background: transparent; color: #ff6b6b; border-color: #ff6b6b; }
.gs-panel-status { display: flex; flex-wrap: wrap; gap: 0.3rem 1rem; margin-top: 0.8rem; font-size: 0.68rem; color: var(--gs-muted); }
.gs-panel-state { font-family: var(--md-code-font-family); color: var(--gs-text); }

/* page viewer + mode switch */
.gs-lcdpages, .gs-modeswitch { display: flex; flex-wrap: wrap; align-items: center; gap: 0.8rem; margin: 1rem 0 1.4rem;
  padding: 1rem; background: var(--gs-surface); border: 1px solid var(--gs-line); border-radius: 14px; }
.gs-autocycle { font-size: 0.68rem; color: var(--gs-muted); display: flex; gap: 0.35rem; align-items: center; }
.gs-values { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.md-typeset .gs-values code.t { color: #3ddc5f; }
.md-typeset .gs-values code.f { color: var(--gs-muted); }

/* start timeline */
.gs-timeline, .gs-soundline { display: flex; gap: 3px; margin: 1rem 0 1.4rem; font-size: 0.65rem; }
.gs-timeline > div, .gs-soundline > div { flex: var(--w, 3) 1 0; min-width: 0; padding: 0.6rem 0.6rem; border-radius: 6px;
  background: var(--gs-surface-2); display: flex; flex-direction: column; gap: 0.15rem; }
.gs-timeline b, .gs-soundline b { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gs-timeline span { color: var(--gs-muted); }
.gs-timeline > div:nth-child(1) { background: rgba(255,176,32,.16); }
.gs-timeline > div:nth-child(2), .gs-timeline > div:nth-child(3), .gs-timeline > div:nth-child(4) { background: rgba(61,220,95,.10); }
.gs-timeline .online { flex: 3 1 0; background: rgba(61,220,95,.22); }
.gs-soundline .alert { background: rgba(255,176,32,.16); }
.gs-soundline .start { background: rgba(255,222,89,.14); }
.gs-soundline .fade { flex: 0 0 1.4rem; padding: 0; background: linear-gradient(90deg, rgba(255,222,89,.14), rgba(61,220,95,.18)); }
.gs-soundline .run { background: rgba(61,220,95,.18); }
.gs-soundline .stop { background: var(--gs-surface-2); }

/* exhaust */
.gs-smoke { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.6rem; margin: 1rem 0; }
.gs-smoke > div { padding: 0.8rem; background: var(--gs-surface); border: 1px solid var(--gs-line); border-radius: 10px;
  display: flex; flex-direction: column; gap: 0.15rem; font-size: 0.7rem; }
.gs-smoke span { color: var(--gs-muted); }
.gs-smoke i { display: block; height: 2.6rem; margin-bottom: 0.5rem; border-radius: 6px; }
.gs-smoke .lightoff i { background: radial-gradient(ellipse at 50% 80%, rgba(20,20,20,.95), rgba(60,60,60,.4) 55%, transparent 75%); }
.gs-smoke .light i { background: radial-gradient(ellipse at 50% 80%, rgba(200,200,205,.25), transparent 70%); }
.gs-smoke .heavy i { background: radial-gradient(ellipse at 50% 80%, rgba(45,45,45,.9), rgba(90,90,90,.45) 60%, transparent 80%); }
@media screen and (max-width: 30em) { .gs-smoke { grid-template-columns: 1fr; } .gs-timeline, .gs-soundline { flex-wrap: wrap; } }
