

:root {
  --kward-bg: #070b07;
  --kward-panel: rgba(14, 20, 12, 0.84);
  --kward-panel-strong: rgba(17, 25, 14, 0.94);
  --kward-ink: #efe8d0;
  --kward-muted: #afa88f;
  --kward-border: rgba(149, 169, 52, 0.26);
  --kward-accent: #9caf35;
  --kward-accent-bright: #d2df62;
  --kward-code: #030604;
}

html {
  background: var(--kward-bg);
  color-scheme: dark;
}

.kward-skip-link {
  background: var(--kward-accent);
  border-radius: 0 0 8px 8px;
  color: #030604;
  font-weight: 700;
  left: 50%;
  padding: 10px 20px;
  position: fixed;
  text-decoration: none;
  top: 0;
  transform: translateY(-100%);
  transition: transform 120ms ease;
  z-index: 9400;
}

.kward-skip-link:focus {
  transform: translateY(0);
}

body.kward-docs {
  background:
    radial-gradient(circle at 72% 18%, rgba(88, 112, 30, 0.24), transparent 34rem),
    radial-gradient(circle at 10% 8%, rgba(72, 89, 24, 0.18), transparent 26rem),
    linear-gradient(180deg, #080d08 0%, #060806 100%);
  color: var(--kward-ink);
  display: block;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  margin: 0;
  min-height: 100%;
  opacity: 1;
  overflow: auto;
  width: 100%;
}

body.kward-docs::before {
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.02) 1px, transparent 1px);
  background-size: 36px 36px;
  content: "";
  inset: 0;
  pointer-events: none;
  position: fixed;
  z-index: -1;
}

.kward-topbar {
  align-items: center;
  background: rgba(5, 9, 5, 0.9);
  border-bottom: 1px solid rgba(149, 169, 52, 0.22);
  box-sizing: border-box;
  display: grid;
  gap: 24px;
  grid-template-columns: 1fr auto 1fr;
  height: 88px;
  left: 0;
  padding: 0 44px;
  position: fixed;
  right: 0;
  top: 0;
  z-index: 30;
}

.kward-brand {
  align-items: center;
  color: var(--kward-ink);
  display: flex;
  gap: 14px;
  text-decoration: none;
  text-transform: uppercase;
}

.kward-brand:hover {
  background: transparent;
  color: var(--kward-ink);
}

.kward-brand-logo {
  display: block;
  height: 48px;
  image-rendering: auto;
  object-fit: contain;
  width: 48px;
}

.kward-brand strong {
  color: var(--kward-ink);
  display: block;
  font-size: 29px;
  font-weight: 800;
  letter-spacing: 0.08em;
  line-height: 1;
}

.kward-topnav {
  align-items: stretch;
  display: flex;
  gap: 18px;
  height: 100%;
  justify-content: center;
}

.kward-sr-only {
  clip: rect(0, 0, 0, 0);
  border: 0;
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  white-space: nowrap;
  width: 1px;
}

.kward-guide-search {
  justify-self: end;
  position: relative;
  width: min(280px, 24vw);
}

.kward-guide-search input {
  background: rgba(3, 6, 4, 0.72);
  border: 1px solid rgba(156, 175, 53, 0.42);
  border-radius: 999px;
  box-sizing: border-box;
  color: var(--kward-ink);
  font: inherit;
  outline: none;
  padding: 10px 14px;
  width: 100%;
}

.kward-guide-search input::placeholder {
  color: var(--kward-muted);
}

.kward-guide-search input:focus {
  border-color: var(--kward-accent-bright);
  box-shadow: 0 0 0 3px rgba(156, 175, 53, 0.18);
}

.kward-guide-search-results {
  background: rgba(5, 9, 5, 0.98);
  border: 1px solid rgba(156, 175, 53, 0.32);
  border-radius: 12px;
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.48);
  display: none;
  margin-top: 10px;
  max-height: min(460px, calc(100vh - 120px));
  overflow: auto;
  padding: 8px;
  position: absolute;
  right: 0;
  top: 100%;
  width: min(440px, calc(100vw - 32px));
  z-index: 9200;
}

.kward-guide-search-results.open {
  display: block;
}

.kward-guide-search-results a,
.kward-guide-search-empty {
  border-radius: 8px;
  color: var(--kward-ink);
  display: block;
  padding: 10px 12px;
  text-decoration: none;
}

.kward-guide-search-results a:hover,
.kward-guide-search-results a:focus {
  background: rgba(156, 175, 53, 0.13);
  color: var(--kward-ink);
}

.kward-guide-search-results a.kward-search-active {
  background: rgba(156, 175, 53, 0.2);
  color: var(--kward-accent-bright);
}

.kward-guide-search-results strong {
  color: var(--kward-accent-bright);
  display: block;
  font-size: 14px;
  margin-bottom: 4px;
}

.kward-guide-search-results span,
.kward-guide-search-empty {
  color: var(--kward-muted);
  font-size: 12px;
  line-height: 1.45;
}

.kward-nav-toggle {
  align-items: center;
  background: transparent;
  border: 1px solid rgba(156, 175, 53, 0.52);
  border-radius: 8px;
  color: var(--kward-accent-bright);
  cursor: pointer;
  display: none;
  flex-direction: column;
  font: inherit;
  gap: 5px;
  justify-content: center;
  justify-self: end;
  padding: 10px 12px;
  text-decoration: none;
}

.kward-nav-toggle-bar {
  background: var(--kward-accent-bright);
  border-radius: 2px;
  display: block;
  height: 2px;
  transition: transform 140ms ease, opacity 140ms ease;
  width: 22px;
}

body.kward-nav-open .kward-nav-toggle-bar:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

body.kward-nav-open .kward-nav-toggle-bar:nth-child(2) {
  opacity: 0;
}

body.kward-nav-open .kward-nav-toggle-bar:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

.kward-nav-toggle:hover {
  background: rgba(156, 175, 53, 0.12);
  color: var(--kward-accent-bright);
}

/* Keyboard focus indicators for interactive elements. */
body.kward-docs a:focus-visible,
body.kward-docs button:focus-visible,
body.kward-docs input:focus-visible,
body.kward-docs .kward-nav-toggle:focus-visible,
body.kward-docs .kward-nav-menu-button:focus-visible {
  outline: 2px solid var(--kward-accent-bright);
  outline-offset: 2px;
}

body.kward-docs .nav_wrap,
body.kward-docs #resizer {
  display: none;
}

body.kward-docs #main {
  margin: 0;
  position: static;
}

body.kward-docs #header {
  background: transparent;
  border: 0;
  margin: 0;
  padding: 0 0 18px;
}

body.kward-docs #content {
  background: var(--kward-panel-strong);
  border: 1px solid var(--kward-border);
  border-radius: 14px;
  box-shadow: 0 26px 70px rgba(0, 0, 0, 0.28);
  padding: 38px;
}

body.kward-docs #content h1 {
  color: var(--kward-ink);
  font-size: clamp(36px, 5vw, 62px);
  letter-spacing: -0.04em;
  line-height: 0.98;
  margin-top: 0;
}

body.kward-docs #content h2,
body.kward-docs #content h3 {
  color: var(--kward-accent-bright);
}

body.kward-docs #content p,
body.kward-docs #content li {
  color: var(--kward-ink);
  font-size: 15px;
  line-height: 1.7;
}

body.kward-docs a {
  color: var(--kward-accent-bright);
}

body.kward-docs pre {
  background: var(--kward-code);
  border: 1px solid rgba(149, 169, 52, 0.22);
  border-radius: 10px;
  color: var(--kward-ink);
  overflow: auto;
  padding: 18px;
}

body.kward-docs code {
  border-radius: 6px;
}

body.kward-docs .copy-code-button {
  background: transparent;
  border: 1px solid rgba(156, 175, 53, 0.48);
  border-radius: 7px;
  color: var(--kward-accent-bright);
  cursor: pointer;
  float: right;
  font-size: 11px;
  margin: 10px 10px -34px 0;
  padding: 5px 8px;
  position: relative;
  z-index: 1;
}

body.kward-docs #footer {
  color: var(--kward-muted);
}

@media (max-width: 920px) {
  .kward-topbar {
    gap: 12px;
    grid-template-columns: 1fr auto;
    height: 76px;
    padding: 0 16px;
  }

  .kward-brand-logo {
    height: 40px;
    width: 40px;
  }

  .kward-brand strong {
    font-size: 23px;
  }

  .kward-topnav,
  .kward-guide-search {
    display: none;
  }

  .kward-nav-toggle {
    display: flex;
  }


  body.kward-docs #content {
    padding: 24px 18px;
  }
}

.kward-home {
  background: transparent;
  box-sizing: border-box;
  display: block;
  margin: 0 auto;
  max-width: 1180px;
  padding: 132px 28px 32px;
  position: static;
}

.kward-home section {
  box-sizing: border-box;
}

.kward-hero {
  align-items: center;
  display: grid;
  gap: 52px;
  grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.95fr);
  min-height: 520px;
}

.kward-eyebrow {
  align-items: center;
  border: 1px solid rgba(156, 175, 53, 0.4);
  border-radius: 8px;
  color: var(--kward-accent-bright);
  display: inline-flex;
  font-size: 13px;
  letter-spacing: 0.04em;
  margin: 0 0 28px;
  padding: 12px 16px;
  text-transform: uppercase;
}

.kward-hero h1 {
  color: var(--kward-ink);
  font-size: clamp(48px, 7vw, 76px);
  letter-spacing: -0.06em;
  line-height: 0.98;
  margin: 0 0 26px;
}

.kward-hero h1 span {
  color: var(--kward-accent-bright);
}

/*
  Hero tagline "swosh": "Your terminal." flies out to the left and is
  replaced by "Your RPC frontend." flying in from the right, then cycles
  back. The second line mirrors it from the opposite side — "Your agent."
  flies out to the right and is replaced by "Your engine." flying in from
  the left — both lines swap in sync. Pure CSS — no JS. The global
  @media (prefers-reduced-motion) rule above collapses the animation to
  the static original copy ("Your terminal. Your agent.") so it remains
  accessible and calm.
*/
.kward-swosh {
  box-sizing: content-box;
  display: inline-block;
  height: 0.98em;
  line-height: 0.98;
  margin: -0.16em -0.08em;
  overflow: hidden;
  padding: 0.16em 0.08em;
  position: relative;
  vertical-align: top;
}

.kward-hero h1 .kward-swosh-text {
  color: var(--kward-ink);
  display: inline-block;
  line-height: 0.98;
  white-space: nowrap;
  will-change: transform, opacity;
}

/* The longer text ("Your RPC frontend.") stays in flow to size the box;
   the shorter "Your terminal." overlays it absolutely. */
.kward-swosh-text-a {
  left: 0.08em;
  position: absolute;
  top: 0.16em;
}

.kward-swosh-text-a {
  animation: kward-swosh-a 12s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
}

.kward-swosh-text-b {
  animation: kward-swosh-b 12s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
  position: relative;
}

@keyframes kward-swosh-a {
  0%, 40%   { transform: translateX(0);     opacity: 1; filter: none; }
  50%       { transform: translateX(-140%); opacity: 0; filter: blur(3px); }
  51%, 88%  { transform: translateX(140%);  opacity: 0; filter: none; }
  100%      { transform: translateX(0);     opacity: 1; filter: none; }
}

@keyframes kward-swosh-b {
  0%, 40%   { transform: translateX(140%);  opacity: 0; filter: none; }
  50%       { transform: translateX(0);     opacity: 1; filter: none; }
  88%       { transform: translateX(0);     opacity: 1; filter: none; }
  100%      { transform: translateX(-140%); opacity: 0; filter: blur(3px); }
}

/*
  Second line, mirrored: "Your agent." exits to the right while
  "Your LLM engine." enters from the left (left-to-right), in sync with
  the first swosh. Both texts keep the accent-bright color of the
  original "Your agent." span.
*/
.kward-hero h1 .kward-swosh-text-c {
  animation: kward-swosh-c 12s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
  color: var(--kward-accent-bright);
  left: 0.08em;
  position: absolute;
  top: 0.16em;
}

.kward-hero h1 .kward-swosh-text-d {
  animation: kward-swosh-d 12s cubic-bezier(0.22, 0.61, 0.36, 1) infinite;
  color: var(--kward-accent-bright);
  position: relative;
}

@keyframes kward-swosh-c {
  0%, 40%  { transform: translateX(0);     opacity: 1; filter: none; }
  50%       { transform: translateX(140%);  opacity: 0; filter: blur(3px); }
  51%, 88%  { transform: translateX(-140%); opacity: 0; filter: none; }
  100%      { transform: translateX(0);     opacity: 1; filter: none; }
}

@keyframes kward-swosh-d {
  0%, 40%  { transform: translateX(-140%); opacity: 0; filter: none; }
  50%       { transform: translateX(0);     opacity: 1; filter: none; }
  88%       { transform: translateX(0);     opacity: 1; filter: none; }
  100%      { transform: translateX(140%);  opacity: 0; filter: blur(3px); }
}

.kward-lede {
  color: var(--kward-ink);
  font-size: 19px;
  line-height: 1.7;
  margin: 0;
  max-width: 620px;
}

.kward-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  margin-top: 30px;
}

.kward-primary-button,
.kward-secondary-button {
  align-items: center;
  border-radius: 8px;
  display: inline-flex;
  font-size: 16px;
  min-height: 48px;
  padding: 0 24px;
  text-decoration: none;
}

.kward-primary-button {
  background: linear-gradient(135deg, #7c8f25, #485814);
  border: 1px solid rgba(210, 223, 98, 0.5);
  color: #fbf6d7;
}

.kward-secondary-button {
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(239, 232, 208, 0.52);
  color: var(--kward-ink);
}

.kward-supports {
  color: var(--kward-muted);
  margin-top: 24px;
}

.kward-supports span {
  color: var(--kward-accent-bright);
}

.kward-hero-art {
  align-items: center;
  display: flex;
  justify-content: center;
  min-height: 440px;
  position: relative;
}

.kward-hero-art::before {
  background: radial-gradient(circle, rgba(156, 175, 53, 0.16), transparent 66%);
  border: 1px solid rgba(156, 175, 53, 0.12);
  border-radius: 999px;
  content: "";
  height: min(32vw, 410px);
  position: absolute;
  width: min(32vw, 410px);
}

.kward-hero-art img {
  display: block;
  max-height: 430px;
  max-width: min(100%, 430px);
  object-fit: contain;
  position: relative;
}

.kward-feature-strip,
.kward-install-card,
.kward-capabilities,
.kward-cta {
  background: rgba(12, 18, 10, 0.78);
  border: 1px solid var(--kward-border);
  border-radius: 10px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.22);
  margin-top: 20px;
}

.kward-feature-strip {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  overflow: hidden;
}

.kward-feature-strip article {
  border-right: 1px solid rgba(149, 169, 52, 0.14);
  display: grid;
  grid-template-rows: 38px 74px auto;
  justify-items: center;
  padding: 26px 22px;
  text-align: center;
}

.kward-feature-strip article:last-child {
  border-right: 0;
}

.kward-feature-strip strong {
  align-self: start;
  color: var(--kward-accent);
  display: block;
  font-size: 32px;
  line-height: 1;
  margin: 0;
}

.kward-feature-strip h2 {
  align-items: center;
  align-self: stretch;
  border-bottom: 1px solid rgba(239, 232, 208, 0.72);
  box-sizing: border-box;
  color: var(--kward-ink);
  display: flex;
  font-size: 16px;
  justify-content: center;
  line-height: 1.35;
  margin: 0;
  min-height: 0;
  padding: 0 0 10px;
  width: 100%;
}

.kward-feature-strip p {
  align-self: start;
  color: var(--kward-muted);
  font-size: 13px;
  line-height: 1.5;
  margin: 14px 0 0;
}

.kward-install-card {
  display: grid;
  gap: 28px;
  grid-template-columns: 330px minmax(0, 1fr);
  padding: 26px 28px;
}

.kward-install-copy {
  border-right: 1px solid rgba(149, 169, 52, 0.18);
  padding-right: 28px;
}

.kward-install-copy h2,
.kward-capabilities h2,
.kward-cta h2 {
  color: var(--kward-accent-bright);
  font-size: 28px;
  margin: 0 0 18px;
}

.kward-install-copy p,
.kward-cta p {
  color: var(--kward-muted);
  line-height: 1.6;
}

.kward-install-copy pre {
  margin: 16px 0 24px;
}

.kward-tabs {
  align-items: center;
  display: flex;
  gap: 18px;
  margin-bottom: 8px;
}

.kward-tabs span:first-child {
  border: 1px solid rgba(156, 175, 53, 0.42);
  border-radius: 999px;
  color: var(--kward-accent-bright);
  padding: 10px 16px;
}

.kward-tabs span:last-child {
  color: var(--kward-muted);
}

.kward-terminal-card pre {
  margin: 0;
}

.kward-capabilities {
  padding: 28px;
}

.kward-capabilities ul {
  display: grid;
  gap: 18px 34px;
  grid-template-columns: repeat(3, 1fr);
  list-style: none;
  margin: 0;
  padding: 0;
}

.kward-capabilities li {
  color: var(--kward-ink);
  line-height: 1.55;
  padding-left: 30px;
  position: relative;
}

.kward-capabilities li::before {
  border: 1px solid var(--kward-accent);
  border-radius: 999px;
  color: var(--kward-accent-bright);
  content: "✓";
  font-size: 12px;
  height: 17px;
  left: 0;
  line-height: 17px;
  position: absolute;
  text-align: center;
  top: 2px;
  width: 17px;
}

.kward-cta {
  align-items: center;
  display: flex;
  justify-content: space-between;
  padding: 26px 28px;
}

.kward-cta > div {
  align-items: center;
  display: grid;
  gap: 0 22px;
  grid-template-columns: 64px 1fr;
}

.kward-cta strong {
  align-items: center;
  border: 1px solid rgba(156, 175, 53, 0.38);
  border-radius: 10px;
  color: var(--kward-accent-bright);
  display: flex;
  font-size: 30px;
  grid-row: span 2;
  height: 62px;
  justify-content: center;
  width: 62px;
}

.kward-cta h2 {
  color: var(--kward-ink);
  font-size: 22px;
  margin: 0 0 8px;
}

.kward-cta p {
  margin: 0;
}

body.kward-docs .kward-home #footer {
  border-top: 1px solid rgba(149, 169, 52, 0.18);
  margin-top: 20px;
  padding-top: 24px;
}

body.kward-docs .kward-home #footer p {
  color: var(--kward-muted);
}

@media (max-width: 980px) {
  .kward-home {
    padding: 104px 16px 32px;
  }

  .kward-hero,
  .kward-install-card {
    grid-template-columns: 1fr;
  }

  .kward-hero-art {
    min-height: 280px;
  }

  .kward-hero-art img {
    max-height: 280px;
  }

  .kward-feature-strip,
  .kward-capabilities ul {
    grid-template-columns: repeat(2, 1fr);
  }

  .kward-install-copy {
    border-right: 0;
    padding-right: 0;
  }

  .kward-cta {
    align-items: flex-start;
    flex-direction: column;
    gap: 22px;
  }
}

@media (max-width: 620px) {
  .kward-feature-strip,
  .kward-capabilities ul {
    grid-template-columns: 1fr;
  }

  .kward-feature-strip article {
    border-right: 0;
    border-bottom: 1px solid rgba(149, 169, 52, 0.14);
  }

  .kward-feature-strip article:last-child {
    border-bottom: 0;
  }
}

/* Keep YARD's generated pages inside the Kward visual system. */
body.kward-docs #main {
  background: transparent;
  color: var(--kward-ink);
  display: block;
  flex: none;
  height: auto;
  min-height: auto;
  overflow: visible;
  padding: 0;
}

body.kward-docs #menu,
body.kward-docs #search {
  color: var(--kward-muted);
}

body.kward-docs #menu a,
body.kward-docs #menu .title,
body.kward-docs #search a {
  color: var(--kward-muted);
}

body.kward-docs #content a,
body.kward-docs #content a:visited,
body.kward-docs #filecontents a,
body.kward-docs #filecontents a:visited {
  color: var(--kward-accent-bright);
}

body.kward-docs #content a:hover,
body.kward-docs #filecontents a:hover {
  background: rgba(156, 175, 53, 0.16);
  border-radius: 4px;
  color: #f0f7a0;
}

body.kward-docs #content h1,
body.kward-docs #filecontents h1 {
  border-top: 0;
  color: var(--kward-ink);
  font-size: clamp(42px, 6vw, 72px);
  letter-spacing: -0.06em;
  line-height: 0.95;
  margin: 0 0 28px;
  padding-top: 0;
}

body.kward-docs #content h2,
body.kward-docs #filecontents h2 {
  border-bottom: 1px solid rgba(239, 232, 208, 0.42);
  color: var(--kward-accent-bright);
  font-size: 28px;
  margin-top: 42px;
  padding-bottom: 8px;
}

body.kward-docs #content h3,
body.kward-docs #filecontents h3 {
  color: var(--kward-accent-bright);
}

body.kward-docs #content p,
body.kward-docs #content li,
body.kward-docs #filecontents p,
body.kward-docs #filecontents li {
  color: var(--kward-ink);
  font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size: 17px;
  line-height: 1.72;
}

body.kward-docs #filecontents p,
body.kward-docs #filecontents li,
body.kward-docs #content p {
  max-width: 72ch;
}

body.kward-docs #content ul,
body.kward-docs #filecontents ul,
body.kward-docs #content ol,
body.kward-docs #filecontents ol {
  padding-left: 1.55rem;
}

body.kward-docs :not(pre) > code,
body.kward-docs #content :not(pre) > code,
body.kward-docs #filecontents :not(pre) > code {
  background: rgba(239, 232, 208, 0.08);
  border: 1px solid rgba(239, 232, 208, 0.18);
  border-radius: 6px;
  color: #fff7d6;
  padding: 0.08em 0.32em;
}

body.kward-docs pre,
body.kward-docs pre.code,
body.kward-docs #content pre,
body.kward-docs #content pre.code,
body.kward-docs #filecontents pre,
body.kward-docs #filecontents pre.code,
body.kward-docs .docstring pre.code,
body.kward-docs .source_code pre,
body.kward-docs .tags pre.example {
  background: #020503;
  border: 1px solid rgba(149, 169, 52, 0.34);
  border-radius: 10px;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02);
  color: var(--kward-ink);
  overflow: auto;
  padding: 18px 20px;
}

body.kward-docs pre code,
body.kward-docs pre.code code,
body.kward-docs #filecontents pre.code code {
  background: transparent;
  border: 0;
  color: inherit;
  padding: 0;
}

body.kward-docs pre.code .comment {
  color: #8f927f;
}

body.kward-docs pre.code .tstring_content,
body.kward-docs pre.code .string,
body.kward-docs pre.code .dstring {
  color: #d2df62;
}

body.kward-docs table {
  background: rgba(3, 6, 4, 0.42);
  border-color: rgba(149, 169, 52, 0.24);
  color: var(--kward-ink);
}

body.kward-docs th,
body.kward-docs td {
  border-color: rgba(149, 169, 52, 0.24);
}

body.kward-docs .summary_signature,
body.kward-docs .signature,
body.kward-docs .docstring,
body.kward-docs .tags {
  background: transparent;
  color: var(--kward-ink);
}

body.kward-docs .summary_signature {
  border-color: rgba(149, 169, 52, 0.22);
}

body.kward-docs .kward-home #footer {
  background: transparent;
  border: 0;
  color: var(--kward-muted);
  margin: 22px 0 0;
  padding: 22px 0 0;
}

/* Primary navigation: Home, Guides dropdown, Docs/API. */
.kward-topnav > a,
.kward-nav-menu-link,
.kward-nav-menu-button {
  align-items: center;
  background: transparent;
  border: 0;
  color: var(--kward-ink);
  display: flex;
  font: inherit;
  font-weight: 700;
  height: 100%;
  letter-spacing: 0.02em;
  text-decoration: none;
}

.kward-topnav > a {
  padding: 0 8px;
}

.kward-nav-menu {
  align-items: stretch;
  display: flex;
  position: relative;
}

.kward-topnav > a,
.kward-nav-menu {
  position: relative;
}

.kward-topnav > a::after,
.kward-nav-menu::after {
  background: transparent;
  bottom: 0;
  content: "";
  height: 3px;
  left: 0;
  position: absolute;
  right: 0;
}

.kward-topnav > a:hover,
.kward-topnav > a.active,
.kward-nav-menu:hover .kward-nav-menu-link,
.kward-nav-menu:hover .kward-nav-menu-button,
.kward-nav-menu.active .kward-nav-menu-link,
.kward-nav-menu.active .kward-nav-menu-button,
.kward-nav-menu.open .kward-nav-menu-link,
.kward-nav-menu.open .kward-nav-menu-button {
  background: transparent;
  color: var(--kward-accent-bright);
}

.kward-topnav > a:hover::after,
.kward-topnav > a.active::after,
.kward-nav-menu:hover::after,
.kward-nav-menu.active::after,
.kward-nav-menu.open::after {
  background: var(--kward-accent-bright);
}

.kward-nav-menu-link {
  padding: 0 2px 0 8px;
}

.kward-nav-menu-button {
  cursor: pointer;
  padding: 0 8px 0 2px;
}

.kward-nav-dropdown {
  background: rgba(5, 9, 5, 0.98);
  border: 1px solid rgba(156, 175, 53, 0.32);
  border-radius: 12px;
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.48);
  display: none;
  gap: 22px;
  grid-template-columns: repeat(4, minmax(170px, 1fr));
  left: 50%;
  opacity: 0;
  padding: 28px 22px 22px;
  pointer-events: none;
  position: absolute;
  top: 100%;
  transform: translate(-50%, -8px);
  transition: opacity 140ms ease, transform 140ms ease;
  width: min(920px, calc(100vw - 48px));
}

.kward-nav-dropdown::before {
  content: "";
  height: 18px;
  left: 0;
  position: absolute;
  right: 0;
  top: -18px;
}

.kward-nav-menu:hover .kward-nav-dropdown,
.kward-nav-menu:focus-within .kward-nav-dropdown,
.kward-nav-menu.open .kward-nav-dropdown {
  display: grid;
  opacity: 1;
  pointer-events: auto;
  transform: translate(-50%, 0);
}

.kward-nav-menu-link:focus + .kward-nav-menu-button + .kward-nav-dropdown {
  display: none;
}

.kward-nav-menu-button:focus + .kward-nav-dropdown,
.kward-nav-menu.open .kward-nav-dropdown {
  display: grid;
}

.kward-nav-dropdown h2 {
  border-bottom: 1px solid rgba(239, 232, 208, 0.24);
  color: var(--kward-accent-bright);
  font-size: 12px;
  letter-spacing: 0.14em;
  margin: 0 0 10px;
  padding-bottom: 9px;
  text-transform: uppercase;
}

.kward-nav-dropdown a {
  border: 0;
  border-radius: 8px;
  color: var(--kward-ink);
  display: block;
  height: auto;
  padding: 8px 10px;
  text-decoration: none;
}

.kward-nav-dropdown a:hover {
  background: rgba(156, 175, 53, 0.13);
  color: var(--kward-accent-bright);
}

@media (max-width: 920px) {
  /* The nav panel: hidden until the hamburger is tapped. */
  body.kward-docs .kward-topnav {
    background: rgba(5, 9, 5, 0.98);
    border: 1px solid rgba(156, 175, 53, 0.32);
    border-radius: 12px;
    box-shadow: 0 24px 70px rgba(0, 0, 0, 0.48);
    display: none !important;
    flex-direction: column;
    gap: 2px;
    height: auto !important;
    left: 12px;
    max-height: calc(100vh - 100px);
    overflow-y: auto;
    padding: 8px;
    position: fixed;
    right: 12px;
    top: 88px;
    z-index: 40;
  }

  body.kward-docs.kward-nav-open .kward-topnav {
    display: flex !important;
  }

  /* Every nav item: reset desktop stretch/height, force visibility. */
  body.kward-docs .kward-nav-menu,
  body.kward-docs .kward-topnav > a,
  body.kward-docs .kward-nav-menu-link,
  body.kward-docs .kward-nav-menu-button {
    height: auto !important;
    opacity: 1 !important;
    pointer-events: auto !important;
    visibility: visible !important;
  }

  body.kward-docs .kward-nav-menu {
    display: flex !important;
    flex-direction: column;
    position: relative;
  }

  body.kward-docs .kward-topnav > a,
  body.kward-docs .kward-nav-menu-link {
    align-items: center;
    border: 0;
    border-radius: 8px;
    box-sizing: border-box;
    color: var(--kward-ink) !important;
    display: flex !important;
    font-weight: 700;
    padding: 14px 16px;
    text-decoration: none;
    width: 100%;
  }

  body.kward-docs .kward-nav-menu-button {
    display: none !important;
  }

  /* All dropdown links visible directly — no accordion on mobile. */
  body.kward-docs .kward-nav-dropdown {
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    display: block !important;
    grid-template-columns: 1fr !important;
    left: auto !important;
    opacity: 1 !important;
    padding: 0 0 4px 8px !important;
    pointer-events: auto !important;
    position: static !important;
    top: auto !important;
    transform: none !important;
    transition: none !important;
    width: auto !important;
  }

  body.kward-docs .kward-nav-dropdown section {
    margin-bottom: 2px;
  }

  body.kward-docs .kward-nav-dropdown h2 {
    border-bottom: 0;
    color: var(--kward-muted);
    font-size: 11px;
    letter-spacing: 0.1em;
    margin: 8px 10px 4px;
    padding: 0;
  }

  body.kward-docs .kward-nav-dropdown a {
    border-radius: 8px;
    color: var(--kward-ink) !important;
    display: block !important;
    padding: 12px 14px;
    text-decoration: none;
  }

  /* Search is hidden on mobile; it lives only in the desktop topbar. */

  .kward-page {
    padding: 104px 16px 42px;
  }

  .kward-home {
    width: calc(100% - 32px);
  }
}

/* Pages no longer use YARD's iframe/sidebar layout. */
.kward-page {
  box-sizing: border-box;
  margin: 0 auto;
  max-width: 1180px;
  padding: 124px 28px 56px;
}

.kward-content-page {
  background: transparent;
  box-sizing: border-box;
  display: block;
  margin: 0 auto;
  max-width: 980px;
  padding: 0;
  width: 100%;
}

.kward-guide-page,
.kward-api-page {
  max-width: 1100px;
}

.kward-content-page #content {
  margin: 0;
}

/* Center the frontpage as one coherent page, not a left-side YARD pane. */
body.kward-docs #main.kward-home {
  margin-left: auto;
  margin-right: auto;
  max-width: 1180px;
}

.kward-home {
  left: auto;
  right: auto;
  width: min(1180px, calc(100% - 56px));
}

.kward-hero {
  justify-content: center;
}

/* The generated YARD TOC is useful for API pages but too noisy on guide pages. */
.kward-guide-page #toc {
  display: none;
}


/* Code blocks own their copy action. */
body.kward-docs .code-copy-wrapper {
  margin: 16px 0 24px;
  position: relative;
  width: 100%;
}

body.kward-docs .code-copy-wrapper pre,
body.kward-docs .code-copy-wrapper pre.code {
  box-sizing: border-box;
  margin: 0;
  padding-right: 78px;
  width: 100%;
}

body.kward-docs .code-copy-wrapper .copy-code-button {
  float: none;
  margin: 0;
  position: absolute;
  right: 12px;
  top: 12px;
}


/* YARD's generated TOC must stay below navigation overlays and match the theme. */
body.kward-docs .kward-topbar {
  z-index: 9000;
}

body.kward-docs .kward-nav-dropdown {
  z-index: 9100;
}

body.kward-docs #toc,
body.kward-docs #toc.hidden,
body.kward-docs #toc.hidden:hover {
  background: rgba(5, 9, 5, 0.98);
  border: 1px solid rgba(156, 175, 53, 0.32);
  border-radius: 12px;
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.48);
  color: var(--kward-ink);
  z-index: 100;
}

body.kward-docs #toc .title,
body.kward-docs #toc .title a,
body.kward-docs #toc li,
body.kward-docs #toc a,
body.kward-docs #toc a:visited {
  color: var(--kward-accent-bright);
}

/* Content pages start at the content panel; the navbar stays in normal flow. */
body.kward-content-body .kward-topbar {
  position: relative;
}

body.kward-content-body .kward-page {
  padding-top: 40px;
}

body.kward-home-body .kward-topbar {
  position: fixed;
}

/* Do not let YARD's focus handling scroll focused main content under the header. */
body.kward-docs #main {
  outline: none;
}

body.kward-content-body #main {
  scroll-margin-top: 140px;
}

/* Give the landing hero a calmer amount of air below the fixed navbar. */
body.kward-home-body #main.kward-home {
  padding-top: 168px;
}

/* Normalize generated table-of-contents spacing. */
body.kward-docs #toc,
body.kward-docs #toc.hidden,
body.kward-docs #toc.hidden:hover {
  box-sizing: border-box;
  padding: 24px;
}

body.kward-docs #toc .title {
  margin: 0 0 18px;
}

body.kward-docs #toc .title a {
  text-decoration: none;
}

body.kward-docs #toc ol {
  margin: 0;
  padding-left: 1.7em;
}

body.kward-docs #toc li {
  line-height: 1.55;
  margin: 0 0 8px;
  padding-left: 0.15em;
}

body.kward-docs #toc li:last-child {
  margin-bottom: 0;
}

/* Keep TOC width, but make inner spacing feel even around wrapped list items. */
body.kward-docs #toc,
body.kward-docs #toc.hidden,
body.kward-docs #toc.hidden:hover {
  padding: 24px 28px;
}

body.kward-docs #toc ol {
  list-style-position: outside;
  padding-left: 1.35em;
}

body.kward-docs #toc li {
  padding-left: 0.45em;
}

body.kward-docs #toc a {
  display: inline;
}

/* Proper TOC list indentation: markers stay inside the box, text wraps cleanly. */
body.kward-docs #toc ol {
  counter-reset: kward-toc-item;
  list-style: none;
  margin: 0;
  padding-left: 0;
}

body.kward-docs #toc li {
  column-gap: 0.45em;
  counter-increment: kward-toc-item;
  display: grid;
  grid-template-columns: 2em minmax(0, 1fr);
  margin: 0 0 8px;
  padding-left: 0;
}

body.kward-docs #toc li::before {
  color: var(--kward-accent-bright);
  content: counter(kward-toc-item) ".";
  grid-column: 1;
}

body.kward-docs #toc li > a {
  grid-column: 2;
}

body.kward-docs #toc li > ol {
  grid-column: 2;
  margin-top: 6px;
}


/* Keep TOC hover states readable on the dark theme. */
body.kward-docs #toc a:hover,
body.kward-docs #toc li:hover > a {
  background: rgba(156, 175, 53, 0.16);
  border-radius: 6px;
  color: #f0f7a0;
  text-decoration: none;
}

/* The default YARD mobile search/menu button conflicts with Kward's nav. */
body.kward-docs #search {
  display: none !important;
}

body.kward-docs .kward-nav-toggle {
  position: relative;
  z-index: 9200;
}

/* Mobile navigation: z-index and color highlights. */
@media (max-width: 920px) {
  body.kward-docs .kward-topnav {
    z-index: 9300;
  }

  body.kward-docs .kward-nav-menu.open .kward-nav-menu-link,
  body.kward-docs .kward-nav-menu.open .kward-nav-menu-button,
  body.kward-docs .kward-nav-menu.active .kward-nav-menu-link,
  body.kward-docs .kward-nav-menu.active .kward-nav-menu-button {
    color: var(--kward-accent-bright);
  }
}

/* The hero logo is now transparent; remove the old placeholder halo. */
.kward-hero-art::before {
  display: none;
}

/* Remove remaining YARD light controls from API pages. */
body.kward-docs dl,
body.kward-docs dt,
body.kward-docs dd,
body.kward-docs .defines,
body.kward-docs .showSource,
body.kward-docs .showSource a,
body.kward-docs .showSource a:visited,
body.kward-docs h2 small a,
body.kward-docs .summary_toggle,
body.kward-docs .constants_summary_toggle {
  background: transparent;
  color: var(--kward-accent-bright);
}

body.kward-docs dl {
  border: 0;
}

body.kward-docs dt,
body.kward-docs dd {
  border-color: rgba(149, 169, 52, 0.24);
}

body.kward-docs .showSource,
body.kward-docs h2 small a,
body.kward-docs .summary_toggle,
body.kward-docs .constants_summary_toggle {
  border: 1px solid rgba(156, 175, 53, 0.38);
  border-radius: 6px;
  display: inline-flex;
  align-items: center;
  line-height: 1.2;
  min-height: 24px;
  padding: 4px 10px;
  text-decoration: none;
}

body.kward-docs .showSource:hover,
body.kward-docs h2 small a:hover,
body.kward-docs .summary_toggle:hover,
body.kward-docs .constants_summary_toggle:hover {
  background: rgba(156, 175, 53, 0.14);
  color: #f0f7a0;
}

/* API metadata boxes inherit alternating white rows from YARD; theme them explicitly. */
body.kward-docs .box_info dl dt,
body.kward-docs .box_info dl dd,
body.kward-docs .box_info dl:nth-child(odd) > *,
body.kward-docs .box_info dl:nth-child(even) > * {
  background: rgba(3, 6, 4, 0.72);
  border-color: rgba(149, 169, 52, 0.28);
  color: var(--kward-ink);
}

body.kward-docs .box_info dl dt {
  color: var(--kward-accent-bright);
}

body.kward-docs .box_info a,
body.kward-docs .box_info a:visited,
body.kward-docs .box_info .defines {
  background: transparent;
  color: var(--kward-accent-bright);
}

/* Let API metadata rows use the full content width. */
body.kward-docs .box_info dl dd {
  max-width: none;
}

/* Markdown tables should match the dark documentation theme. */
body.kward-docs #content table,
body.kward-docs #filecontents table {
  background: rgba(3, 6, 4, 0.72);
  border: 1px solid rgba(149, 169, 52, 0.34);
  border-collapse: collapse;
  color: var(--kward-ink);
  display: block;
  overflow-x: auto;
  width: 100%;
}

body.kward-docs #content th,
body.kward-docs #content td,
body.kward-docs #filecontents th,
body.kward-docs #filecontents td {
  background: transparent;
  border: 1px solid rgba(149, 169, 52, 0.28);
  color: var(--kward-ink);
  padding: 10px 14px;
}

body.kward-docs #content tr:nth-child(even) td,
body.kward-docs #filecontents tr:nth-child(even) td {
  background: rgba(156, 175, 53, 0.06);
}

body.kward-docs #content th,
body.kward-docs #filecontents th {
  background: rgba(156, 175, 53, 0.12);
  color: var(--kward-accent-bright);
}

/* Override YARD's row-level white table striping. */
body.kward-docs .docstring table tr,
body.kward-docs #filecontents table tr,
body.kward-docs .docstring table tr:nth-child(odd),
body.kward-docs #filecontents table tr:nth-child(odd),
body.kward-docs .docstring table tr:nth-child(even),
body.kward-docs #filecontents table tr:nth-child(even) {
  background: rgba(3, 6, 4, 0.72);
}

body.kward-docs .docstring table tr:nth-child(even),
body.kward-docs #filecontents table tr:nth-child(even) {
  background: rgba(156, 175, 53, 0.06);
}

body.kward-docs .docstring table th,
body.kward-docs #filecontents table th {
  background: rgba(156, 175, 53, 0.12);
}

/* Index/listing pills should not inherit YARD's light backgrounds. */
body.kward-docs .index_inline_list li,
body.kward-docs ul.toplevel li {
  background: transparent;
}

body.kward-docs .index_inline_list a,
body.kward-docs ul.toplevel a,
body.kward-docs .index_inline_list a:visited,
body.kward-docs ul.toplevel a:visited {
  background: rgba(3, 6, 4, 0.72);
  border: 1px solid rgba(156, 175, 53, 0.32);
  border-radius: 6px;
  color: var(--kward-accent-bright);
  display: inline-block;
  line-height: 1.2;
  padding: 6px 10px;
  text-decoration: none;
}

body.kward-docs .index_inline_list a:hover,
body.kward-docs ul.toplevel a:hover {
  background: rgba(156, 175, 53, 0.16);
  color: #f0f7a0;
}

/* Browser/YARD hover defaults can invert index pills; keep them readable. */
body.kward-docs .index_inline_list a:hover,
body.kward-docs .index_inline_list a:focus,
body.kward-docs .index_inline_list a:active,
body.kward-docs ul.toplevel a:hover,
body.kward-docs ul.toplevel a:focus,
body.kward-docs ul.toplevel a:active {
  background: rgba(156, 175, 53, 0.22) !important;
  color: #f0f7a0 !important;
  text-decoration: none;
}

/* Respect users who prefer reduced motion. */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}

/* Printable documentation: white background, black text, hide navigation. */
@media print {
  body.kward-docs {
    background: #fff;
    color: #000;
  }

  .kward-topbar,
  .kward-skip-link,
  .kward-guide-search,
  .kward-nav-toggle,
  #toc,
  .copy-code-button,
  .code-copy-wrapper .copy-code-button {
    display: none !important;
  }

  body.kward-docs #content,
  body.kward-docs #filecontents {
    background: #fff;
    border: 0;
    box-shadow: none;
    color: #000;
    padding: 0;
  }

  body.kward-docs #content h1,
  body.kward-docs #content h2,
  body.kward-docs #content h3,
  body.kward-docs #filecontents h1,
  body.kward-docs #filecontents h2,
  body.kward-docs #filecontents h3 {
    color: #000;
  }

  body.kward-docs #content p,
  body.kward-docs #content li,
  body.kward-docs #filecontents p,
  body.kward-docs #filecontents li {
    color: #000;
  }

  body.kward-docs #content a,
  body.kward-docs #filecontents a {
    color: #000;
    text-decoration: underline;
  }

  body.kward-docs pre {
    background: #f4f4f4;
    border: 1px solid #ccc;
    color: #000;
  }

  .kward-page {
    padding: 0;
    max-width: none;
  }
}
