/* ============================================================================
   /docs — Neo Kinpaku redesign

   Re-skins the docs index (/docs) and per-command detail (/docs/:slug) on the
   dark lacquer kinpaku surface. Mirrors the /designing approach: remap the
   generic light tokens (--color-paper, --color-cream, etc.) at the body class
   so the inline visualizations from docs-visuals.css (.docs-viz-*) re-skin
   into the dark theme without per-rule overrides.

   Structure of this file mirrors the page structure:
     1. Page scope + base
     2. Sidebar (commands rail)
     3. /docs index — categories + command tiles
     4. /docs/:slug — breadcrumb, hero, related-commands footer
     5. Prose body — markdown rendering on lacquer
     6. Footer
   ============================================================================ */

@import "./kinpaku-tokens.css";
@import "./divider-patterns.css";


/* ============================================================================
   1. PAGE SCOPE + BASE
   ============================================================================ */

.docs-kinpaku {
  /* Surface/text/accent/font tokens default to kinpaku at :root now
     (tokens.css), so the embedded docs-viz visualizations inherit dark
     surfaces without a per-page remap. Only the --ks-muted alias (read by
     name in this file) and the page shell remain. */
  --ks-muted: var(--ks-text-muted);
  --docs-accent: var(--ks-kinpaku);
  --docs-accent-hover: var(--ks-kinpaku-pale);
  --docs-accent-line: oklch(78% 0.12 82 / 0.42);
  --docs-accent-wash: oklch(77% 0.13 82 / 0.10);
  --docs-brand-accent: var(--ks-kinpaku);
  --docs-panel-bg: var(--ks-lacquer-raised);
  --docs-panel-hover-bg: oklch(11% 0.012 82);
  --docs-row-bg: var(--ks-lacquer-raised);
  --docs-row-hover-bg: oklch(13% 0.012 82);

  background:
    linear-gradient(180deg, oklch(7% 0.006 95), oklch(4% 0.004 95));
  color: var(--ks-text);
  font-family: var(--ks-font);
  min-height: 100vh;
}

html.light .docs-kinpaku {
  --ks-champagne: oklch(16% 0 0);
  --ks-text: oklch(24% 0 0);
  --ks-text-muted: oklch(42% 0 0);
  --ks-text-faint: oklch(55% 0 0);
  --ks-rule: oklch(20% 0 0 / 0.12);
  --docs-accent: var(--ks-patina);
  --docs-accent-hover: var(--ks-patina-deep);
  --docs-accent-line: oklch(70% 0.12 188 / 0.36);
  --docs-accent-wash: oklch(70% 0.12 188 / 0.08);
  --docs-brand-accent: var(--ks-kinpaku);
  --docs-panel-bg: oklch(100% 0 0);
  --docs-panel-hover-bg: color-mix(in oklch, oklch(100% 0 0), var(--docs-accent) 4%);
  --docs-row-bg: oklch(100% 0 0);
  --docs-row-hover-bg: color-mix(in oklch, oklch(100% 0 0), var(--docs-accent) 3%);
  background: linear-gradient(180deg, var(--ks-lacquer), var(--ks-lacquer-deep));
}

.docs-kinpaku a {
  color: inherit;
}

/* Page reset: the docs layout is its own full-bleed grid, no Base.astro
   measure cap. */
.docs-kinpaku.skills-layout-page main#main {
  max-width: none;
  margin: 0;
  padding: 0;
}

.docs-kinpaku .skills-layout {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: clamp(40px, 4vw, 72px);
  padding: 0 clamp(22px, 4vw, 56px);
  align-items: start;
  max-width: 1500px;
  margin: 0 auto;
}

@media (max-width: 960px) {
  .docs-kinpaku .skills-layout {
    grid-template-columns: 1fr;
    gap: 10px;
  }
}


/* ============================================================================
   2. SIDEBAR — commands rail

   Sticky rail. Command names use the main UI family; monospace is reserved
   for literal commands and code, not navigation.
   ============================================================================ */

.docs-kinpaku .skills-sidebar {
  position: sticky;
  top: 86px;
  align-self: start;
  max-height: calc(100vh - 86px);
  overflow-y: auto;
  padding: 48px 0 64px;
  border-right: 1px solid var(--ks-rule);
  scrollbar-width: thin;
  scrollbar-color: var(--ks-rule) transparent;
}

@media (min-width: 961px) {
  .docs-kinpaku .skills-sidebar {
    min-height: calc(100vh - 86px);
  }
}

.docs-kinpaku .skills-sidebar::-webkit-scrollbar {
  width: 6px;
}

.docs-kinpaku .skills-sidebar::-webkit-scrollbar-thumb {
  background: var(--ks-rule);
  border-radius: 3px;
}

.docs-kinpaku .skills-sidebar-inner {
  padding-right: 22px;
}

.docs-kinpaku .skills-sidebar-toggle {
  display: none;
}

.docs-kinpaku .skills-sidebar-label {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

.docs-kinpaku .skills-sidebar-group {
  margin-bottom: 26px;
}

.docs-kinpaku .skills-sidebar-group:last-child {
  margin-bottom: 0;
}

.docs-kinpaku .skills-sidebar-category {
  display: block;
  font-family: var(--ks-font);
  font-size: 0.72rem;
  font-weight: 650;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--docs-accent);
  margin-bottom: 10px;
  padding: 0 0 0 14px;
}

.docs-kinpaku .skills-sidebar-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.docs-kinpaku .skills-sidebar-list li {
  margin: 0;
}

.docs-kinpaku .skills-sidebar-list a {
  display: block;
  padding: 5px 0 5px 12px;
  border-left: 2px solid transparent;
  font-family: var(--ks-font);
  font-size: 0.94rem;
  font-weight: 400;
  line-height: 1.5;
  color: var(--ks-text);
  text-decoration: none;
  transition: color 160ms var(--ks-ease),
              border-color 160ms var(--ks-ease);
}

.docs-kinpaku .skills-sidebar-list a:hover {
  color: var(--docs-accent-hover);
}

.docs-kinpaku .skills-sidebar-list a[aria-current="page"] {
  color: var(--docs-accent);
  font-weight: 600;
  border-left-color: var(--docs-accent);
}


/* Mobile: collapse the sidebar behind a toggle. */
@media (max-width: 960px) {
  .docs-kinpaku .skills-sidebar {
    position: static;
    max-height: none;
    min-height: 0;
    overflow: visible;
    padding: 18px 0 0;
    border-right: 0;
    border-bottom: 1px solid var(--ks-rule);
  }

  .docs-kinpaku .skills-sidebar-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 12px 0;
    background: transparent;
    border: 0;
    color: var(--ks-text-muted);
    font-family: var(--ks-font);
    font-size: 0.92rem;
    font-weight: 500;
    letter-spacing: 0;
    text-transform: none;
    cursor: pointer;
  }

  .docs-kinpaku .skills-sidebar-toggle-chevron {
    transition: transform 220ms var(--ks-ease);
    color: var(--docs-accent);
    flex-shrink: 0;
  }

  .docs-kinpaku .skills-sidebar-toggle[aria-expanded="true"] .skills-sidebar-toggle-chevron {
    transform: rotate(180deg);
  }

  .docs-kinpaku .skills-sidebar-inner {
    display: none;
    padding: 14px 0 24px;
  }

  .docs-kinpaku .skills-sidebar-toggle[aria-expanded="true"] + .skills-sidebar-inner {
    display: block;
  }
}


/* ============================================================================
   3. /docs INDEX

   Sections, in render order:
     a. Starter hero
     b. Intent chooser
     c. Live mode callout
     d. A typical session (linear workflow of 4 commands)
     e. Pairs and chains (relational schema)
     f. Full reference (cheatsheet by lifecycle phase)
   ============================================================================ */

.docs-kinpaku .docs-index {
  padding: clamp(34px, 5vw, 70px) 0 clamp(80px, 10vw, 140px);
}


/* a. Starter rail ------------------------------------------------------ */

.docs-kinpaku .docs-start-rail {
  display: grid;
  gap: 28px;
  margin-bottom: clamp(44px, 6vw, 72px);
}

@media (max-width: 520px) {
  .docs-kinpaku .docs-index {
    padding-top: 22px;
  }

  .docs-kinpaku .docs-start-rail-title {
    font-size: 2.15rem;
  }
}

.docs-kinpaku .docs-start-rail-head {
  display: grid;
  gap: 14px;
  max-width: 780px;
}

.docs-kinpaku .docs-start-rail-title {
  font-family: var(--ks-font);
  font-style: normal;
  font-weight: 650;
  font-size: 2.6rem;
  line-height: 1.12;
  letter-spacing: 0;
  color: var(--ks-champagne);
  margin: 0;
  text-wrap: balance;
}

.docs-kinpaku .docs-start-rail-title span {
  color: var(--docs-accent);
  font-family: var(--ks-mono);
  font-weight: 500;
  font-size: 0.82em;
}

.docs-kinpaku .docs-start-rail-lede {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--ks-text);
  margin: 0;
}


/* Shared section scaffolding for the index sections ---------------- */

.docs-kinpaku .docs-chooser-section,
.docs-kinpaku .docs-manual-section,
.docs-kinpaku .docs-live,
.docs-kinpaku .docs-flow-section,
.docs-kinpaku .docs-chains-section,
.docs-kinpaku .docs-reference-section {
  margin-bottom: clamp(48px, 6vw, 76px);
}

.docs-kinpaku .docs-reference-section:last-child {
  margin-bottom: 0;
}

.docs-kinpaku .docs-chooser-title,
.docs-kinpaku .docs-manual-title,
.docs-kinpaku .docs-live-title,
.docs-kinpaku .docs-flow-title,
.docs-kinpaku .docs-chains-title,
.docs-kinpaku .docs-reference-title {
  font-family: var(--ks-font);
  font-style: normal;
  font-weight: 650;
  font-size: 1.55rem;
  line-height: 1.25;
  letter-spacing: 0;
  color: var(--ks-champagne);
  margin: 0 0 12px;
  text-wrap: balance;
}

.docs-kinpaku .docs-live-lede,
.docs-kinpaku .docs-manual-sub,
.docs-kinpaku .docs-flow-sub,
.docs-kinpaku .docs-chains-sub {
  font-size: 1rem;
  line-height: 1.65;
  color: var(--ks-text);
  margin: 0;
  max-width: 52ch;
}


/* Quick start rail ----------------------------------------------------- */

.docs-kinpaku .docs-start-rail-sequence {
  display: grid;
  gap: clamp(12px, 1.8vw, 18px);
}

.docs-kinpaku .docs-start-rail-steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  border-top: 0;
  border-bottom: 0;
}

@media (max-width: 940px) {
  .docs-kinpaku .docs-start-rail-steps {
    grid-template-columns: 1fr;
  }
}

.docs-kinpaku .docs-start-rail-step {
  display: grid;
  grid-template-rows: auto auto minmax(3.2em, auto) auto;
  gap: 10px;
  min-width: 0;
  padding: 18px 20px 20px;
  background: var(--docs-row-bg);
  border: 1px solid transparent;
  border-radius: 8px;
}

.docs-kinpaku .docs-start-rail-num {
  font-family: var(--ks-mono);
  font-size: 0.72rem;
  line-height: 1.1;
  letter-spacing: 0.18em;
  color: var(--docs-accent);
}

.docs-kinpaku .docs-start-rail-label {
  font-family: var(--ks-mono);
  font-size: 0.66rem;
  line-height: 1.1;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--ks-text-muted);
}

.docs-kinpaku .docs-start-rail-command {
  display: block;
  font-family: var(--ks-mono);
  font-size: 0.94rem;
  line-height: 1.45;
  color: var(--docs-accent-hover);
  min-height: 2.8em;
  white-space: normal;
  overflow-wrap: anywhere;
}

.docs-kinpaku .docs-start-rail-steps--number-gutter .docs-start-rail-step {
  grid-template-columns: minmax(28px, auto) minmax(0, 1fr);
  grid-template-rows: auto auto auto;
  column-gap: 12px;
  row-gap: 9px;
  padding: 18px 20px 20px;
}

.docs-kinpaku .docs-start-rail-steps--number-gutter .docs-start-rail-num {
  grid-column: 1;
  grid-row: 1 / 4;
  padding-top: 1px;
}

.docs-kinpaku .docs-start-rail-steps--number-gutter .docs-start-rail-label,
.docs-kinpaku .docs-start-rail-steps--number-gutter .docs-start-rail-command,
.docs-kinpaku .docs-start-rail-steps--number-gutter .docs-start-rail-line {
  grid-column: 2;
}

.docs-kinpaku .docs-start-rail-line {
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--ks-text-muted);
}

.docs-kinpaku .docs-start-rail-note {
  margin: 20px 0 0;
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--ks-text-muted);
}

.docs-kinpaku .docs-start-rail-note a {
  color: var(--docs-accent);
  text-decoration: none;
  border-bottom: 1px solid var(--docs-accent-line);
}

.docs-kinpaku .docs-start-rail-note a:hover {
  color: var(--docs-accent-hover);
  border-bottom-color: var(--docs-accent-hover);
}

@media (max-width: 940px) {
  .docs-kinpaku .docs-start-rail-step,
  .docs-kinpaku .docs-start-rail-step:last-child {
    border: 1px solid transparent;
  }

  .docs-kinpaku .docs-start-rail-command {
    min-height: 0;
  }
}


/* b. Intent chooser ---------------------------------------------------- */

.docs-kinpaku .docs-chooser-head,
.docs-kinpaku .docs-manual-head {
  margin-bottom: 16px;
}

.docs-kinpaku .docs-chooser-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  border-top: 0;
}

.docs-kinpaku .docs-chooser-list-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 7px 18px;
  align-items: center;
  padding: 18px 20px;
  background: var(--docs-row-bg);
  border: 1px solid transparent;
  border-radius: 8px;
  text-decoration: none;
  color: inherit;
  transition: border-color 160ms var(--ks-ease),
              background 160ms var(--ks-ease),
              color 160ms var(--ks-ease);
}

.docs-kinpaku .docs-chooser-list-row:hover {
  background: var(--docs-row-hover-bg);
  border-color: var(--docs-accent-line);
}

.docs-kinpaku .docs-chooser-list-need {
  font-size: 0.98rem;
  font-weight: 600;
  line-height: 1.35;
  color: var(--ks-champagne);
}

.docs-kinpaku .docs-chooser-list-command {
  display: inline-flex;
  justify-self: end;
  font-family: var(--ks-mono);
  font-size: 0.74rem;
  color: var(--docs-accent-hover);
  line-height: 1.3;
  padding: 5px 8px;
  background: var(--docs-accent-wash);
  border: 1px solid var(--docs-accent-line);
  border-radius: 5px;
  white-space: nowrap;
}

@media (max-width: 520px) {
  .docs-kinpaku .docs-chooser-list-row {
    grid-template-columns: 1fr;
  }

  .docs-kinpaku .docs-chooser-list-command {
    justify-self: start;
    white-space: normal;
  }
}


/* c. Live mode callout ------------------------------------------------- */

.docs-kinpaku .docs-live {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  gap: clamp(36px, 5vw, 64px);
  align-items: center;
  padding: 0;
}

@media (max-width: 880px) {
  .docs-kinpaku .docs-live {
    grid-template-columns: 1fr;
    gap: 32px;
  }
}

.docs-kinpaku .docs-live-cta {
  margin: 26px 0 0;
}

/* Static browser frame mock. Light, low-shadow frame with a precise target
   outline and mock action bar underneath. No animation; this is a teaching
   diagram, not a demo. */
.docs-kinpaku .docs-live-figure {
  margin: 0;
}

.docs-kinpaku .docs-live-frame {
  position: relative;
  background: var(--ks-lacquer-raised);
  border: 1px solid var(--ks-rule);
  border-radius: 4px;
  overflow: hidden;
  box-shadow: 0 14px 30px oklch(0% 0 0 / 0.08);
}

.docs-kinpaku .docs-live-chrome {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 14px;
  background: transparent;
  border-bottom: 1px solid var(--ks-rule);
}

.docs-kinpaku .docs-live-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--ks-rule);
}

.docs-kinpaku .docs-live-url {
  margin-left: 12px;
  font-family: var(--ks-mono);
  font-size: 0.72rem;
  color: var(--ks-text-muted);
  letter-spacing: 0.04em;
}

.docs-kinpaku .docs-live-stage {
  position: relative;
  padding: 38px 28px 28px;
  min-height: 220px;
  background: transparent;
}

.docs-kinpaku .docs-live-target {
  position: relative;
  padding: 22px 24px;
  border: 1px solid var(--docs-accent-line);
  border-radius: 2px;
  background: var(--ks-lacquer);
  box-shadow: none;
}

.docs-kinpaku .docs-live-target-title {
  font-family: var(--ks-font-display);
  font-style: normal;
  font-weight: var(--ks-type-headline-weight);
  font-size: 1.4rem;
  line-height: 1.15;
  color: var(--ks-champagne);
}

.docs-kinpaku .docs-live-target-sub {
  margin-top: 8px;
  font-family: var(--ks-mono);
  font-size: 0.7rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--docs-accent-hover);
}

.docs-kinpaku .docs-live-bar {
  margin-top: 22px;
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 10px 14px;
  background: var(--ks-lacquer);
  border: 1px solid var(--ks-rule);
  border-radius: 2px;
  font-family: var(--ks-mono);
  font-size: 0.74rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ks-text-muted);
}

.docs-kinpaku .docs-live-bar-counter {
  color: var(--ks-champagne);
}

.docs-kinpaku .docs-live-bar-accept {
  margin-left: auto;
  color: var(--docs-accent-hover);
}

.docs-kinpaku .docs-live-bar-divider {
  width: 1px;
  align-self: stretch;
  background: var(--ks-rule);
  margin-left: auto;
}


/* d. A typical session (linear flow of commands) ----------------------- */

.docs-kinpaku .docs-flow-head {
  margin-bottom: 32px;
}

.docs-kinpaku .docs-flow {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr;
  align-items: stretch;
  gap: 0;
}

@media (max-width: 880px) {
  .docs-kinpaku .docs-flow {
    grid-template-columns: 1fr;
    gap: 8px;
  }
}

.docs-kinpaku .docs-flow-step {
  display: contents;
}

.docs-kinpaku .docs-flow-link {
  display: grid;
  align-content: start;
  gap: 8px;
  padding: 22px 22px 24px;
  background: var(--docs-panel-bg);
  border: 1px solid var(--ks-rule);
  border-radius: 2px;
  text-decoration: none;
  color: inherit;
  transition: border-color 180ms var(--ks-ease),
              background 180ms var(--ks-ease);
  min-height: 100%;
}

.docs-kinpaku .docs-flow-link:hover {
  border-color: var(--docs-accent-line);
  background: var(--docs-panel-hover-bg);
}

.docs-kinpaku .docs-flow-verb {
  font-family: var(--ks-mono);
  font-size: 0.66rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--docs-accent);
}

.docs-kinpaku .docs-flow-cmd {
  font-family: var(--ks-mono);
  font-size: 0.94rem;
  color: var(--ks-champagne);
}

.docs-kinpaku .docs-flow-tag {
  font-size: 0.86rem;
  line-height: 1.45;
  color: var(--ks-text-muted);
}

.docs-kinpaku .docs-flow-arrow {
  display: grid;
  place-items: center;
  width: 36px;
  color: var(--docs-accent);
}

.docs-kinpaku .docs-flow-arrow svg {
  width: 24px;
  height: 8px;
}

@media (max-width: 880px) {
  .docs-kinpaku .docs-flow-arrow {
    width: 100%;
    height: 18px;
    transform: rotate(90deg);
  }
}

.docs-kinpaku .docs-flow-alt {
  margin: 22px 0 0;
  font-family: var(--ks-font);
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--ks-text-muted);
  max-width: 60ch;
}

.docs-kinpaku .docs-flow-alt a {
  color: var(--docs-accent);
  font-family: var(--ks-mono);
  font-size: 0.88em;
  text-decoration: none;
  border-bottom: 1px solid var(--docs-accent-line);
  transition: border-color 160ms var(--ks-ease);
}

.docs-kinpaku .docs-flow-alt a:hover {
  color: var(--docs-accent-hover);
  border-bottom-color: var(--docs-accent-hover);
}


/* e. Pairs and chains -------------------------------------------------- */

.docs-kinpaku .docs-chains-head {
  margin-bottom: 32px;
}

.docs-kinpaku .docs-chains-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

@media (max-width: 700px) {
  .docs-kinpaku .docs-chains-grid {
    grid-template-columns: 1fr;
  }
}

.docs-kinpaku .docs-chain {
  display: grid;
  gap: 10px;
  padding: 28px 28px 30px;
  background: var(--docs-panel-bg);
  border: 1px solid var(--ks-rule);
  border-radius: 2px;
}

.docs-kinpaku .docs-chain-formula {
  display: inline-flex;
  align-items: baseline;
  gap: 14px;
  margin: 0;
  font-family: var(--ks-mono);
  font-size: 1.06rem;
  line-height: 1.2;
}

.docs-kinpaku .docs-chain-cmd {
  color: var(--docs-accent);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 160ms var(--ks-ease);
}

.docs-kinpaku .docs-chain-cmd:hover {
  color: var(--docs-accent-hover);
  border-bottom-color: var(--docs-accent-hover);
}

.docs-kinpaku .docs-chain-arrow {
  color: var(--docs-accent);
  font-size: 1.1em;
}

.docs-kinpaku .docs-chain-line {
  margin: 0;
  font-size: 0.94rem;
  line-height: 1.5;
  color: var(--ks-text);
}


/* f. Full reference (cheatsheet) --------------------------------------- */

.docs-kinpaku .docs-reference-head {
  margin-bottom: 32px;
}

.docs-kinpaku .docs-reference {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 36px 48px;
}

@media (max-width: 760px) {
  .docs-kinpaku .docs-reference {
    grid-template-columns: 1fr;
    gap: 32px;
  }
}

.docs-kinpaku .docs-reference-group {
  display: grid;
  gap: 10px;
}

.docs-kinpaku .docs-reference-cat {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin: 0 0 6px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--ks-rule);
  font-family: var(--ks-mono);
  font-size: 0.72rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ks-champagne);
}

.docs-kinpaku .docs-reference-count {
  color: var(--ks-text-faint);
  font-size: 0.86em;
}

.docs-kinpaku .docs-reference-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 4px;
}

.docs-kinpaku .docs-reference-row {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr);
  align-items: baseline;
  gap: 14px;
  padding: 4px 0;
  text-decoration: none;
  color: inherit;
  transition: color 160ms var(--ks-ease);
}

.docs-kinpaku .docs-reference-row:hover .docs-reference-name {
  color: var(--docs-accent-hover);
}

.docs-kinpaku .docs-reference-row:hover .docs-reference-line {
  color: var(--ks-champagne);
}

.docs-kinpaku .docs-reference-name {
  font-family: var(--ks-mono);
  font-size: 0.92rem;
  color: var(--ks-text);
  transition: color 160ms var(--ks-ease);
}

.docs-kinpaku .docs-reference-line {
  font-size: 0.9rem;
  line-height: 1.45;
  color: var(--ks-text-muted);
  transition: color 160ms var(--ks-ease);
}


/* ============================================================================
   4. /docs/:slug — breadcrumb, hero, related-commands footer
   ============================================================================ */

.docs-kinpaku .skills-main {
  min-width: 0;
  padding: 48px 0 clamp(80px, 10vw, 140px);
}

.docs-kinpaku .skills-main--docs-index {
  padding-top: 0;
}

.docs-kinpaku .skills-detail {
  max-width: 900px;
}

.docs-kinpaku .skills-breadcrumb {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--ks-mono);
  font-size: 0.7rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ks-text-muted);
  margin: 0 0 36px;
}

.docs-kinpaku .skills-breadcrumb a {
  color: var(--ks-kinpaku);
  text-decoration: none;
  transition: color 160ms var(--ks-ease);
}

.docs-kinpaku .skills-breadcrumb a:hover {
  color: var(--ks-champagne);
}

.docs-kinpaku .skills-breadcrumb span[aria-hidden] {
  color: var(--ks-text-faint);
}


/* Hero — eyebrow (category), title (/impeccable name), lede. */
.docs-kinpaku .sub-page-header {
  margin-bottom: clamp(40px, 5vw, 64px);
}

.docs-kinpaku .sub-page-eyebrow {
  display: block;
  font-family: var(--ks-mono);
  font-size: var(--ks-type-eyebrow-size);
  letter-spacing: var(--ks-type-eyebrow-track);
  text-transform: uppercase;
  color: var(--ks-kinpaku);
  margin: 0 0 16px;
}

/* Command name (h1) — display scale, kinpaku gold so it carries the
   page identity. */
.docs-kinpaku .sub-page-title {
  font-family: var(--ks-font-display);
  font-weight: var(--ks-type-display-weight);
  font-size: var(--ks-type-display-size);
  line-height: var(--ks-type-display-line);
  letter-spacing: var(--ks-type-display-track);
  color: var(--ks-kinpaku);
  margin: 0 0 20px;
  text-wrap: balance;
}

.docs-kinpaku .sub-page-lede {
  font-size: 1.08rem;
  line-height: 1.65;
  color: var(--ks-text);
  margin: 0;
  max-width: 56ch;
}


/* Related commands footer — chips with relation label + command name. */
.docs-kinpaku .skills-relationships {
  margin-top: clamp(56px, 7vw, 88px);
  padding-top: 32px;
  border-top: 1px solid var(--ks-rule);
}

.docs-kinpaku .skills-relationships-title {
  font-family: var(--ks-mono);
  font-size: 0.7rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--ks-kinpaku);
  font-weight: 400;
  margin: 0 0 18px;
}

.docs-kinpaku .skills-relationships-list {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.docs-kinpaku .skills-relationship-chip {
  display: inline-grid;
  grid-auto-flow: column;
  align-items: baseline;
  gap: 10px;
  padding: 10px 14px;
  border: 1px solid var(--ks-rule);
  border-radius: 2px;
  background: var(--ks-lacquer-raised);
  text-decoration: none;
  transition: border-color 180ms var(--ks-ease),
              background 180ms var(--ks-ease);
}

.docs-kinpaku .skills-relationship-chip:hover {
  border-color: var(--ks-kinpaku);
  background: oklch(11% 0.012 82);
}

.docs-kinpaku .skills-relationship-label {
  font-family: var(--ks-mono);
  font-size: 0.64rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ks-text-faint);
}

.docs-kinpaku .skills-relationship-name {
  font-family: var(--ks-mono);
  font-size: 0.88rem;
  color: var(--ks-kinpaku);
}


/* ============================================================================
   5. PROSE BODY — markdown rendering on lacquer
   ============================================================================ */

/* Vertical rhythm.

   One base unit: 1em (≈ 16-17px at the prose font-size). Everything is a
   multiple of that.

     - paragraph-to-paragraph (sibling)          = 1em
     - paragraph-to-list                         = 1em (sibling rule)
     - list-item-to-list-item                    = 0.25em (members of one thought)
     - list-to-paragraph                         = 1em (sibling rule)
     - block (pre/blockquote/hr) to neighbor     = 1.4em (breathes more)
     - h2 above body                             = 1.6em (anchor, not chasm)
     - h3 above body                             = 1.2em
     - heading to its body                       = 0.4em (kept tight)
*/

.docs-kinpaku .prose {
  font-family: var(--ks-font);
  font-size: 1.02rem;
  line-height: 1.7;
  color: var(--ks-text);
  max-width: 76ch;
}

/* Single source of truth for margins:
   - `.prose > *` zeros every direct child's margin (universal selector,
     beats browser default but loses to element-selector rules).
   - `.prose > * + *` adds the sibling gap.
   - Element-specific overrides (h2, h3, h4) inherit from the same family.
   Element-selector rules elsewhere in this file MUST NOT set `margin`
   shorthand or `margin-top` — they'd outrank the sibling rule and starve
   blocks of their spacing (this happened with the list + p combo). */
.docs-kinpaku .prose > * {
  margin: 0;
}

.docs-kinpaku .prose > * + * {
  margin-top: 1em;
}

/* Blocks (pre, blockquote, hr) get extra breath above and below. */
.docs-kinpaku .prose > pre + *,
.docs-kinpaku .prose > * + pre,
.docs-kinpaku .prose > blockquote + *,
.docs-kinpaku .prose > * + blockquote,
.docs-kinpaku .prose > .docs-note + *,
.docs-kinpaku .prose > * + .docs-note,
.docs-kinpaku .prose > hr + *,
.docs-kinpaku .prose > * + hr {
  margin-top: 1.4em;
}

/* Note / callout block for prose docs (e.g. the GitHub Copilot built-in
   aside under Step 1). Full hairline frame + faint gold-tinted ground so it
   reads as an aside without a one-sided accent stripe (the side-tab tell the
   detector flags). The gold icon carries the accent. */
.docs-kinpaku .prose .docs-note {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 16px;
  background: color-mix(in oklch, var(--ks-kinpaku) 6%, var(--ks-lacquer-raised));
  border: 1px solid var(--ks-rule);
  border-radius: 4px;
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--ks-text);
}
.docs-kinpaku .prose .docs-note-icon {
  flex: none;
  width: 20px;
  height: 20px;
  margin-top: 1px;
  color: var(--ks-kinpaku);
}
.docs-kinpaku .prose .docs-note-icon svg {
  display: block;
  width: 100%;
  height: 100%;
  fill: currentColor;
}
.docs-kinpaku .prose .docs-note-text {
  flex: 1 1 auto;
  min-width: 0;
}
.docs-kinpaku .prose .docs-note-text strong {
  color: var(--ks-champagne);
  font-weight: 600;
}

.docs-kinpaku .prose h1,
.docs-kinpaku .prose h2,
.docs-kinpaku .prose h3,
.docs-kinpaku .prose h4 {
  font-family: var(--ks-font-display);
  color: var(--ks-champagne);
  font-style: normal;
  line-height: 1.2;
  scroll-margin-top: 96px;
  /* Intentionally no margin — see `.prose > *` rule above. */
}

.docs-kinpaku .prose > * + h2 {
  margin-top: 1.6em;
}

.docs-kinpaku .prose > * + h3 {
  margin-top: 1.2em;
}

.docs-kinpaku .prose > * + h4 {
  margin-top: 1em;
}

.docs-kinpaku .prose > h2 + *,
.docs-kinpaku .prose > h3 + *,
.docs-kinpaku .prose > h4 + * {
  margin-top: 0.4em;
}

/* h2/h3 follow the DESIGN.md type scale exactly:
   - h2 (Headline): Alumni Sans, clamp 2.6-3.4rem, weight 600
   - h3 (Title):    Albert Sans,           1.18rem,            weight 500
   - h4:            Albert Sans,           1rem,               weight 600 (utility)
*/
.docs-kinpaku .prose h2 {
  font-family: var(--ks-font-display);
  font-size: var(--ks-type-headline-size);
  font-weight: var(--ks-type-headline-weight);
  line-height: var(--ks-type-headline-line);
  letter-spacing: -0.005em;
  text-wrap: balance;
}

.docs-kinpaku .prose h3 {
  font-family: var(--ks-font);
  font-size: var(--ks-type-title-size);
  font-weight: var(--ks-type-title-weight);
  line-height: var(--ks-type-title-line);
  color: var(--ks-kinpaku);
}

.docs-kinpaku .prose h4 {
  font-family: var(--ks-font);
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--ks-champagne);
}

/* Lists. Margins are handled by the universal `> *` reset + sibling rule
   above; only set list-specific padding and line-height here. */
.docs-kinpaku .prose ul,
.docs-kinpaku .prose ol {
  padding-left: 1.4rem;
  line-height: 1.6;
}

.docs-kinpaku .prose li + li {
  margin-top: 0.5em;
}

.docs-kinpaku .prose li::marker {
  color: var(--ks-kinpaku);
}

/* When a list item wraps multi-block content, hug its internals. */
.docs-kinpaku .prose li > p {
  margin: 0;
}
.docs-kinpaku .prose li > * + * {
  margin-top: 0.35em;
}

.docs-kinpaku .prose a {
  color: var(--ks-kinpaku);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
  text-decoration-color: oklch(78% 0.12 82 / 0.4);
  transition: text-decoration-color 160ms var(--ks-ease);
}

.docs-kinpaku .prose a:hover {
  text-decoration-color: var(--ks-kinpaku);
}

.docs-kinpaku .prose strong {
  color: var(--ks-champagne);
  font-weight: 600;
}

.docs-kinpaku .prose em {
  font-style: italic;
  color: var(--ks-champagne);
}

/* Inline code — champagne mono on a graphite chip. The chip is the
   affordance; color stays neutral so a paragraph full of inline
   references doesn't vibrate. Kinpaku is reserved for links, h3s,
   eyebrows, and CTAs. `--ks-graphite-2` (≈19% lightness) reads as the
   neutral gray the chip wants without picking up cool tint. */
.docs-kinpaku .prose code {
  font-family: var(--ks-mono);
  font-size: 0.84em;
  color: var(--ks-code-fg);
  background: var(--ks-code-bg);
  border: 0;
  padding: 0.14em 0.36em;
  border-radius: var(--ks-code-radius);
}

.docs-kinpaku .prose :not(pre) > code {
  overflow-wrap: anywhere;
}

html.light .docs-kinpaku .prose code {
  background: oklch(25% 0.02 95 / 0.08);
}

/* Inline code that is itself a link — get the kinpaku cue back, since
   the link semantic is the meaningful one. */
.docs-kinpaku .prose a code {
  color: var(--ks-code-cmd);
}

/* Fenced code blocks — deep lacquer terminal. Astro/Shiki emits dual-theme
   CSS variables from site/lib/impeccable-shiki-theme.mjs; the wrapper keeps
   the surface in the kinpaku token system while token spans swap by theme. */
.docs-kinpaku .prose pre,
.docs-kinpaku .prose .code-block,
.docs-kinpaku .prose pre.astro-code {
  margin: 0;
  padding: 22px 24px;
  background: var(--ks-code-block-bg) !important;
  color: var(--ks-code-block-fg) !important;
  border: 1px solid var(--ks-code-block-border);
  border-radius: var(--ks-code-block-radius);
  overflow-x: auto;
  font-family: var(--ks-mono);
  font-size: 0.84rem;
  line-height: 1.6;
  max-width: 100%;
}

.docs-kinpaku .prose pre.astro-code span {
  color: var(--shiki-dark, var(--ks-code-block-fg));
}

html.light .docs-kinpaku .prose pre.astro-code span {
  color: var(--shiki-light, var(--ks-code-block-fg));
}

.docs-kinpaku .prose > * + pre.astro-code,
.docs-kinpaku .prose > * + pre,
.docs-kinpaku .prose > * + .code-block-wrap {
  margin-top: 1.25em;
}

.docs-kinpaku .prose :is(p, ul, ol) + :is(pre.astro-code, pre, .code-block-wrap) {
  margin-top: 1.25em;
}

.docs-kinpaku .prose pre code,
.docs-kinpaku .prose .code-block code {
  background: transparent;
  border: 0;
  padding: 0;
  color: inherit;
  font-size: inherit;
  border-radius: 0;
}

html.light .docs-kinpaku .prose pre code,
html.light .docs-kinpaku .prose .code-block code {
  background: transparent;
}

.docs-kinpaku .prose .code-block-wrap {
  position: relative;
  margin: 0;
}

/* Copy button on dark — match the kinpaku button voice. */
.docs-kinpaku .code-block-copy {
  position: absolute;
  top: 10px;
  right: 10px;
  padding: 4px 10px;
  background: var(--ks-lacquer-raised);
  border: 1px solid var(--ks-rule);
  color: var(--ks-text-muted);
  border-radius: 2px;
  font-family: var(--ks-mono);
  font-size: 0.62rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  cursor: pointer;
  opacity: 0;
  transition: opacity 180ms var(--ks-ease),
              border-color 180ms var(--ks-ease),
              color 180ms var(--ks-ease);
}

.docs-kinpaku .code-block-wrap:hover .code-block-copy,
.docs-kinpaku .code-block-copy:focus-visible {
  opacity: 1;
}

.docs-kinpaku .code-block-copy::before {
  content: "Copy";
}

.docs-kinpaku .code-block-copy:hover {
  border-color: var(--ks-kinpaku);
  color: var(--ks-kinpaku);
}

.docs-kinpaku .code-block-copy.is-copied {
  opacity: 1;
  border-color: var(--ks-kinpaku);
  color: var(--ks-lacquer-deep);
  background: var(--ks-kinpaku);
}

.docs-kinpaku .code-block-copy.is-copied::before {
  content: "Copied";
}

.docs-kinpaku .prose blockquote {
  margin: 0;
  padding: 6px 0 6px 22px;
  border-block: 0;
  border-left: 2px solid var(--ks-kinpaku);
  color: var(--ks-text);
  font-style: italic;
}

.docs-kinpaku .prose .docs-context-note {
  padding: 4px 0 4px 20px;
  border-left: 2px solid var(--ks-kinpaku);
  color: var(--ks-text-muted);
}

.docs-kinpaku .prose hr {
  border: 0;
  height: 1px;
  background: var(--ks-rule);
  margin: 32px 0;
}

.docs-kinpaku .prose table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.92rem;
}

.docs-kinpaku .prose th,
.docs-kinpaku .prose td {
  padding: 10px 14px;
  text-align: left;
  border-bottom: 1px solid var(--ks-rule);
  vertical-align: top;
}

.docs-kinpaku .prose th {
  font-family: var(--ks-mono);
  font-size: 0.7rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ks-kinpaku);
  font-weight: 500;
  border-bottom-color: var(--ks-kinpaku);
}

@media (max-width: 760px) {
  .docs-kinpaku .prose table {
    display: block;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .docs-kinpaku .prose th,
  .docs-kinpaku .prose td {
    min-width: 11rem;
  }
}

/* Design Context guide -------------------------------------------------

   The context page needs a quick mental model before it becomes reference
   prose. Keep these modules small, sharp, and readable inside the normal
   documentation measure.
*/

.docs-kinpaku .prose .docs-context-flow {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px;
  background: var(--ks-rule);
  border: 1px solid var(--ks-rule);
  border-radius: 6px;
  overflow: hidden;
}

.docs-kinpaku .prose .docs-context-flow-source,
.docs-kinpaku .prose .docs-context-flow-output {
  display: grid;
  gap: 8px;
  min-width: 0;
  padding: 18px;
  background: var(--ks-lacquer-raised);
}

.docs-kinpaku .prose .docs-context-flow-source--generated {
  background: var(--ks-lacquer-raised);
}

.docs-kinpaku .prose .docs-context-flow-output {
  grid-column: 1 / -1;
  grid-template-columns: minmax(0, 0.74fr) minmax(0, 1.26fr);
  column-gap: 20px;
  align-items: center;
  background: var(--ks-lacquer);
}

.docs-kinpaku .prose .docs-context-flow-label {
  font-family: var(--ks-mono);
  font-size: 0.62rem;
  line-height: 1.2;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--docs-accent);
}

.docs-kinpaku .prose .docs-context-flow-source strong,
.docs-kinpaku .prose .docs-context-flow-output strong {
  color: var(--ks-champagne);
  font-family: var(--ks-mono);
  font-size: 0.84rem;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.docs-kinpaku .prose .docs-context-flow-source span:last-child,
.docs-kinpaku .prose .docs-context-flow-output span:last-child {
  color: var(--ks-text-muted);
  font-size: 0.9rem;
  line-height: 1.45;
}

.docs-kinpaku .prose .docs-context-flow-output .docs-context-flow-label,
.docs-kinpaku .prose .docs-context-flow-output span:last-child {
  grid-column: 1;
}

.docs-kinpaku .prose .docs-context-flow-output strong {
  grid-column: 2;
  grid-row: 1 / 3;
  align-self: center;
}

.docs-kinpaku .prose :is(.docs-context-details, .docs-prose-details) {
  border-top: 1px solid var(--ks-rule);
  border-bottom: 1px solid var(--ks-rule);
  padding: 0;
}

.docs-kinpaku .prose :is(.docs-context-details, .docs-prose-details) + :is(.docs-context-details, .docs-prose-details) {
  margin-top: 0;
  border-top: 0;
}

.docs-kinpaku .prose :is(.docs-context-details, .docs-prose-details) summary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  padding: 16px 0;
  color: var(--ks-champagne);
  font-weight: 600;
  cursor: pointer;
  list-style: none;
}

.docs-kinpaku .prose :is(.docs-context-details, .docs-prose-details) summary::-webkit-details-marker {
  display: none;
}

.docs-kinpaku .prose :is(.docs-context-details, .docs-prose-details) summary::after {
  content: "+";
  font-family: var(--ks-mono);
  color: var(--docs-accent);
  font-weight: 500;
}

.docs-kinpaku .prose :is(.docs-context-details, .docs-prose-details)[open] summary::after {
  content: "-";
}

.docs-kinpaku .prose :is(.docs-context-details, .docs-prose-details) summary:focus-visible {
  outline: 2px solid var(--ks-patina);
  outline-offset: 4px;
}

.docs-kinpaku .prose :is(.docs-context-details, .docs-prose-details) > div {
  display: grid;
  gap: 0.8em;
  padding: 0 0 18px;
  color: var(--ks-text);
}

.docs-kinpaku .prose :is(.docs-context-details, .docs-prose-details) > div > * {
  margin: 0;
}

.docs-kinpaku .prose :is(.docs-context-details, .docs-prose-details) ul {
  padding-left: 1.4rem;
}

@media (max-width: 760px) {
  .docs-kinpaku .prose .docs-context-flow {
    grid-template-columns: 1fr;
  }

  .docs-kinpaku .prose .docs-context-flow-output {
    grid-column: auto;
    grid-template-columns: 1fr;
    gap: 8px;
  }
}


/* Two-column editorial hero (when the command has a registered demo).
   Demo on the left, h1 + lede on the right. Mirrors the old pre-Astro
   layout: a slightly wider demo column (1.15fr) against a comfortable
   text measure on the right (1fr). Collapses to single-column below
   the breakpoint where the demo would be too cramped.

   When there's no demo, the page renders the existing single-column
   sub-page-header — no docs-hero wrapper, no grid. */
.docs-kinpaku .docs-hero--with-demo {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  gap: clamp(28px, 4vw, 48px);
  align-items: center;
  margin: 0 0 clamp(40px, 5vw, 64px);
}

@media (max-width: 880px) {
  .docs-kinpaku .docs-hero--with-demo {
    grid-template-columns: 1fr;
    gap: 32px;
  }
}

/* In the two-column hero, the h1 + lede sits in the right column and
   doesn't need its own bottom margin (the grid gap handles spacing). */
.docs-kinpaku .docs-hero--with-demo .sub-page-header {
  margin: 0;
}

/* Command demo (rendered client-side by Doc.astro from
   site/scripts/demos/commands/<id>.js). Same demos the homepage's
   command carousel uses — one source of truth in the demo JS, two
   surfaces that render from it.

   Matches the homepage's dark dual-tone treatment: lacquer-raised
   container with a subtle kinpaku-grid backing, then `before` and
   `after` sides each picking up a different radial glow. The demo
   content's `--color-*` tokens stay remapped to kinpaku (no local
   light override) — shapes render light-on-dark and the kinpaku
   accent shines. */
.docs-kinpaku .docs-command-demo {
  margin: 0;
  border: 1px solid var(--ks-rule);
  border-radius: 4px;
  overflow: hidden;
  background: var(--ks-lacquer-raised);
}

.docs-kinpaku .docs-command-demo :is(.split-comparison, .demo-split-comparison) {
  max-width: none;
  margin: 0;
  padding: 0;
}

.docs-kinpaku .docs-command-demo .split-container {
  height: 300px;
  max-width: none;
  border-radius: 0;
  border: 0;
  border-bottom: 1px solid var(--ks-rule);
  background:
    linear-gradient(90deg, oklch(78% 0.12 82 / 0.04) 1px, transparent 1px),
    linear-gradient(180deg, oklch(78% 0.12 82 / 0.035) 1px, transparent 1px),
    var(--ks-lacquer-raised);
  background-size: 24px 24px;
}

.docs-kinpaku .docs-command-demo .split-before {
  background:
    linear-gradient(90deg, oklch(10% 0.006 95 / 0.92), oklch(12% 0.012 60 / 0.72)),
    radial-gradient(circle at 28% 25%, oklch(78% 0.12 82 / 0.12), transparent 11rem);
}

.docs-kinpaku .docs-command-demo .split-after {
  /* Doc.astro initSplitCompare uses skewAngle: 0 — vertical seam, not the
     angled default from sub-pages.css / main.css. */
  clip-path: polygon(50% 0%, 100% 0%, 100% 100%, 50% 100%);
  background:
    linear-gradient(90deg, oklch(8% 0.006 95 / 0.92), oklch(10% 0.006 95 / 0.96)),
    radial-gradient(circle at 82% 26%, oklch(78% 0.12 82 / 0.14), transparent 12rem);
}

.docs-kinpaku .docs-command-demo .split-divider {
  background: var(--ks-kinpaku);
  box-shadow: 0 0 20px oklch(78% 0.12 82 / 0.4);
  transform: translateX(-50%) !important;
}

.docs-kinpaku .docs-command-demo .demo-caption {
  padding: 10px 16px;
  font-family: var(--ks-mono);
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  color: var(--ks-text-muted);
  background: var(--ks-lacquer-deep);
  text-align: center;
}


/* Visualization wrappers inside the markdown body.

   Default: .docs-viz-hero is a transparent layout container — no card
   chrome, no border. The inner mock owns its own surface treatment, so
   we don't get card-in-card.

   When the wrapper contains a multi-tile group (.docs-viz-flow), apply
   the tinted-plinth pattern from .ks-bento on the homepage:
   - the wrapper becomes a graphite mat
   - tiles sit on top in flat lacquer with no borders
   - the gap between tiles is the plinth showing through as inset gutters
   - depth contrast carries the edges; no double borders required */

.docs-kinpaku .prose .docs-viz-hero {
  margin: 0;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
}

.docs-kinpaku .prose .docs-viz-hero:has(.docs-viz-flow),
.docs-kinpaku .prose .docs-viz-hero:has(.docs-viz-variants) {
  padding: 24px;
  background: var(--ks-graphite-2);
  border-radius: 2px;
}

.docs-kinpaku .prose .docs-viz-flow {
  gap: 8px;
}

.docs-kinpaku .prose .docs-viz-flow-step,
.docs-kinpaku .prose .docs-viz-variant {
  background: var(--ks-lacquer);
  border: 0;
  border-radius: 2px;
}

.docs-kinpaku .prose .docs-viz-flow-step + .docs-viz-flow-step {
  margin-left: 0;
}

.docs-kinpaku .prose .docs-viz-flow-step + .docs-viz-flow-step::before {
  left: -8px;
  width: 8px;
}

/* Accent / active states get a kinpaku-tinted fill instead of the
   bordered/glow treatment from docs-visuals.css. */
.docs-kinpaku .prose .docs-viz-flow-step--accent,
.docs-kinpaku .prose .docs-viz-variant.is-active {
  background: oklch(78% 0.12 82 / 0.16);
  box-shadow: none;
}

/* Per-variant theming in docs-visuals.css uses paper/cream/light-magenta
   on the v1/v3 backgrounds — both off-brand here. Re-skin to lacquer
   ramps so the variants still differ but stay kinpaku. */
.docs-kinpaku .prose .docs-viz-variant--v1 {
  background: var(--ks-lacquer);
}
.docs-kinpaku .prose .docs-viz-variant--v3 {
  background: var(--ks-lacquer-deep);
}

.docs-kinpaku .prose .docs-viz-caption {
  margin-top: 16px;
  color: var(--ks-text-muted);
}


/* ============================================================================
   6. FOOTER on dark surface
   ============================================================================ */

/* Footer chrome moved to kinpaku-kit.css (.kinpaku-chrome .site-footer). */
