/* ==========================================================================
   "Starlight" style – crisp developer-docs look in the spirit of Astro
   Starlight: neutral grays, indigo accent, pill navigation, splash hero.
   ========================================================================== */

:root {
  --sl-font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --sl-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  --md-text-font-family: var(--sl-font);
  --md-code-font-family: var(--sl-mono);
}

[data-md-color-scheme="slate"] {
  --md-hue: 225;
  --sl-white: #ffffff;
  --sl-gray-1: #eceef2;
  --sl-gray-2: #c0c2c7;
  --sl-gray-3: #888b96;
  --sl-gray-4: #545861;
  --sl-gray-5: #353841;
  --sl-gray-6: #24272f;
  --sl-black: #17181c;
  --sl-accent-low: #131e4f;
  --sl-accent: #3447ff;
  --sl-accent-high: #b3c7ff;
  --sl-bg: var(--sl-black);
  --sl-bg-nav: var(--sl-gray-6);
  --sl-text: var(--sl-gray-2);
  --sl-heading: var(--sl-white);
  --sl-hairline: var(--sl-gray-5);
  --sl-text-accent: var(--sl-accent-high);
  --sl-invert: var(--sl-black);

  --md-primary-fg-color: var(--sl-bg-nav);
  --md-primary-fg-color--light: var(--sl-bg-nav);
  --md-primary-fg-color--dark: var(--sl-black);
  --md-primary-bg-color: var(--sl-white);
  --md-primary-bg-color--light: #ffffffb3;
  --md-accent-fg-color: var(--sl-accent-high);
  --md-accent-fg-color--transparent: #b3c7ff1a;
  --md-default-bg-color: var(--sl-bg);
  --md-default-fg-color: var(--sl-text);
  --md-default-fg-color--light: var(--sl-gray-3);
  --md-default-fg-color--lighter: var(--sl-gray-4);
  --md-default-fg-color--lightest: var(--sl-gray-5);
  --md-typeset-a-color: var(--sl-accent-high);
  --md-code-bg-color: var(--sl-gray-6);
  --md-code-fg-color: var(--sl-gray-1);
  --md-footer-bg-color: var(--sl-bg);
  --md-footer-bg-color--dark: var(--sl-bg);
  --md-code-hl-keyword-color: #c792ea;
  --md-code-hl-string-color: #c3e88d;
  --md-code-hl-number-color: #f78c6c;
  --md-code-hl-function-color: #82aaff;
  --md-code-hl-comment-color: #7e8494;
  --md-code-hl-constant-color: #ffcb6b;
  --md-code-hl-name-color: #d6deeb;
  --md-code-hl-operator-color: #89ddff;
  --md-code-hl-punctuation-color: #a3abc0;
}

[data-md-color-scheme="default"] {
  --sl-white: #17181c;
  --sl-gray-1: #24272f;
  --sl-gray-2: #353841;
  --sl-gray-3: #545861;
  --sl-gray-4: #888b96;
  --sl-gray-5: #d5d7dd;
  --sl-gray-6: #eceef2;
  --sl-gray-7: #f5f6f8;
  --sl-black: #ffffff;
  --sl-accent-low: #d7deff;
  --sl-accent: #3447ff;
  --sl-accent-high: #1a2a8f;
  --sl-bg: #ffffff;
  --sl-bg-nav: var(--sl-gray-7);
  --sl-text: var(--sl-gray-2);
  --sl-heading: var(--sl-white);
  --sl-hairline: #e3e5ea;
  --sl-text-accent: var(--sl-accent);
  --sl-invert: #ffffff;

  --md-primary-fg-color: var(--sl-bg-nav);
  --md-primary-fg-color--light: var(--sl-bg-nav);
  --md-primary-fg-color--dark: var(--sl-gray-6);
  --md-primary-bg-color: var(--sl-white);
  --md-primary-bg-color--light: #17181cb3;
  --md-accent-fg-color: var(--sl-accent);
  --md-accent-fg-color--transparent: #3447ff14;
  --md-default-bg-color: var(--sl-bg);
  --md-default-fg-color: var(--sl-text);
  --md-default-fg-color--light: var(--sl-gray-3);
  --md-default-fg-color--lighter: var(--sl-gray-4);
  --md-default-fg-color--lightest: var(--sl-gray-5);
  --md-typeset-a-color: var(--sl-accent);
  --md-code-bg-color: var(--sl-gray-7);
  --md-code-fg-color: var(--sl-gray-1);
  --md-footer-bg-color: var(--sl-bg);
  --md-footer-bg-color--dark: var(--sl-bg);
  --md-footer-fg-color: var(--sl-text);
  --md-footer-fg-color--light: var(--sl-gray-3);
  --md-footer-fg-color--lighter: var(--sl-gray-4);
}

body, input, .md-typeset { font-family: var(--sl-font); }
code, kbd, pre { font-family: var(--sl-mono); }

/* ---------- header & top links ---------- */
.md-header {
  background: var(--sl-bg-nav);
  color: var(--sl-heading);
  box-shadow: 0 1px 0 var(--sl-hairline);
}
.md-header__topic:first-child { font-weight: 600; font-size: .95rem; }
.md-header__button.md-logo img { height: 1.6rem; image-rendering: pixelated; }
.md-search__input {
  background: var(--sl-bg);
  border: 1px solid var(--sl-hairline);
  border-radius: 6px;
}
.md-search__input::placeholder,
.md-search__icon { color: var(--sl-gray-3); }

.md-tabs {
  background: var(--sl-bg-nav);
  box-shadow: 0 1px 0 var(--sl-hairline);
}
.md-tabs__link { font-size: .72rem; font-weight: 500; opacity: 1; color: var(--sl-gray-3); }
.md-tabs__link:hover,
.md-tabs__item--active .md-tabs__link { color: var(--sl-text-accent); }

/* ---------- sidebars ---------- */
@media screen and (min-width: 76.25em) {
  .md-sidebar--primary { box-shadow: 1px 0 0 var(--sl-hairline); }
}
.md-nav { font-size: .74rem; }
.md-nav__title,
.md-nav--primary .md-nav__item--section > .md-nav__link {
  color: var(--sl-heading);
  font-weight: 600;
  font-size: .78rem;
}
.md-sidebar--primary .md-nav__link {
  margin-top: .15rem;
  margin-left: -.55rem;
  margin-right: .4rem;
  padding: .28rem .55rem;
  border-radius: 6px;
  color: var(--sl-gray-2);
}
.md-sidebar--primary .md-nav__link:hover { color: var(--sl-heading); }
.md-sidebar--primary .md-nav__link--active {
  background: var(--sl-text-accent);
  color: var(--sl-invert) !important;
  font-weight: 600;
}
.md-nav--secondary .md-nav__title { font-size: .72rem; color: var(--sl-heading); }
.md-nav--secondary .md-nav__link { color: var(--sl-gray-3); }
.md-nav--secondary .md-nav__link--active,
.md-nav--secondary .md-nav__link:hover { color: var(--sl-text-accent); }

/* ---------- typography ---------- */
.md-typeset { font-size: .8rem; line-height: 1.75; color: var(--sl-text); }
.md-typeset h1,
.md-typeset h2,
.md-typeset h3,
.md-typeset h4 { color: var(--sl-heading); font-weight: 600; letter-spacing: -.01em; }
.md-typeset h1 { font-size: 2.1rem; line-height: 1.2; margin-bottom: 1.1rem; }
.md-typeset h2 { font-size: 1.5rem; margin-top: 2.2rem; }
.md-typeset h3 { font-size: 1.15rem; }
.md-typeset a { text-decoration: underline; text-underline-offset: 2px; }
.md-typeset .headerlink { text-decoration: none; }
.md-typeset hr { border-bottom: 1px solid var(--sl-hairline); }
.md-typeset blockquote { border-left: 3px solid var(--sl-gray-5); color: var(--sl-gray-3); }

/* ---------- code ---------- */
.md-typeset :not(pre) > code {
  background: var(--md-code-bg-color);
  border: 1px solid var(--sl-hairline);
  border-radius: 4px;
  padding: .05em .3em;
  font-size: .85em;
}
.md-typeset pre {
  border: 1px solid var(--sl-hairline);
  border-radius: 4px;
}
.md-typeset pre > code { padding: 1em 1.2em; }

/* ---------- tables & asides ---------- */
.md-typeset table:not([class]) { border: 1px solid var(--sl-hairline); border-radius: 0; font-size: .74rem; box-shadow: none; }
.md-typeset table:not([class]) th { background: var(--sl-bg-nav); color: var(--sl-heading); font-weight: 600; }
.md-typeset table:not([class]) td { border-top: 1px solid var(--sl-hairline); }
.md-typeset .admonition,
.md-typeset details {
  border: 0;
  border-left: 4px solid var(--sl-accent);
  border-radius: 0;
  background: var(--md-accent-fg-color--transparent);
  box-shadow: none;
}

/* ---------- footer ---------- */
.md-footer { border-top: 1px solid var(--sl-hairline); }
.md-footer__inner { padding-top: .8rem; }

/* ==========================================================================
   Home page: splash hero + cards
   ========================================================================== */
.gc-only-game { display: none !important; }
.gc-only-docs { display: inline; }

.gc-hero {
  background:
    radial-gradient(520px 300px at 75% 40%, color-mix(in srgb, var(--sl-accent) 22%, transparent), transparent 70%),
    var(--sl-bg);
  border-bottom: 1px solid var(--sl-hairline);
  text-align: center;
}
.gc-hero__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 4.2rem .8rem 3.8rem;
}
.gc-hero__kicker {
  margin: 0 0 1rem;
  padding: .2rem .75rem;
  font-size: .68rem;
  font-weight: 600;
  color: var(--sl-text-accent);
  background: var(--md-accent-fg-color--transparent);
  border: 1px solid color-mix(in srgb, var(--sl-text-accent) 30%, transparent);
  border-radius: 999px;
}
.gc-hero__title {
  margin: 0;
  font-weight: 700;
  font-size: clamp(2.4rem, 7vw, 4rem);
  line-height: 1.1;
  letter-spacing: -.025em;
  color: var(--sl-heading);
}
.gc-hero__title span {
  background: linear-gradient(120deg, var(--sl-text-accent), #b98cff);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.gc-hero__lead {
  max-width: 32rem;
  margin: 1.1rem auto 1.4rem;
  font-size: 1rem;
  line-height: 1.6;
  color: var(--sl-gray-3);
}
.gc-worlds { justify-content: center; gap: .5rem; margin-bottom: 2rem; }
.gc-world {
  display: inline-flex; align-items: center; gap: .4rem;
  font-size: .7rem; font-weight: 500;
  color: var(--sl-gray-2);
}
.gc-world + .gc-world::before { content: "·"; margin-right: .5rem; color: var(--sl-gray-4); }

.gc-hero__actions { justify-content: center; gap: .8rem; }
.gc-btn {
  display: inline-flex; align-items: center; gap: .45rem;
  padding: .6rem 1.25rem;
  font-size: .78rem; font-weight: 600;
  color: var(--sl-heading) !important;
  border: 1px solid var(--sl-gray-4);
  border-radius: 999px;
  text-decoration: none !important;
  transition: border-color .15s, background .15s;
}
.gc-btn:hover { border-color: var(--sl-text-accent); }
.gc-btn--primary {
  color: var(--sl-invert) !important;
  background: var(--sl-text-accent);
  border-color: var(--sl-text-accent);
}
.gc-btn--primary:hover { background: var(--sl-heading); border-color: var(--sl-heading); }
.gc-arrow { transition: transform .15s; }
.gc-btn:hover .gc-arrow { transform: translateX(3px); }

.gc-home { max-width: 52rem; margin: 0 auto; }
.gc-home h2 { margin-top: 2.2rem; font-size: 1.3rem; }
.md-typeset a.gc-card {
  padding: 1rem 1.1rem;
  border: 1px solid var(--sl-hairline);
  background: var(--sl-bg);
  color: var(--sl-text);
  border-radius: 0;
  transition: border-color .15s, background .15s;
}
.md-typeset a.gc-card:hover { border-color: var(--sl-text-accent); background: var(--md-accent-fg-color--transparent); }
.gc-card__meta { font-size: .64rem; color: var(--sl-gray-3); }
.gc-card__label { font-size: .92rem; font-weight: 600; color: var(--sl-heading); }
.gc-card__label::after { content: " →"; color: var(--sl-text-accent); opacity: 0; transition: opacity .15s; }
.md-typeset a.gc-card:hover .gc-card__label::after { opacity: 1; }
