@charset "utf-8";
/* ==========================================================================
   ARALEZ — documentation layer
   Loaded after styles.css. Inherits every token; defines no new colours.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Shell
   -------------------------------------------------------------------------- */
.docs-body { --header-h: 56px; }

.docs-header {
  position: fixed; z-index: 90; inset-inline: 0; inset-block-start: 0;
  height: var(--header-h);
  display: flex; align-items: center; gap: var(--sp-4);
  padding-inline: var(--sp-5);
  border-bottom: 1px solid var(--line-1);
  background: var(--glass);
  backdrop-filter: blur(14px) saturate(1.3);
  -webkit-backdrop-filter: blur(14px) saturate(1.3);
}
.docs-header .brand { gap: var(--sp-2); }
.docs-header .brand img { width: 24px; height: 22px; }
.docs-header .brand-word { font-size: var(--fs-base); }
.docs-label {
  padding-left: var(--sp-4); border-left: 1px solid var(--line-2);
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--ink-3);
}
.docs-header-actions { margin-left: auto; display: flex; align-items: center; gap: var(--sp-2); }
.version-tag {
  padding: var(--sp-1) var(--sp-3);
  border: 1px solid var(--line-1); border-radius: var(--r-full);
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: .04em; color: var(--ink-3);
}

/* Search trigger */
.search-trigger {
  flex: 1; max-width: 380px;
  display: flex; align-items: center; gap: var(--sp-3);
  height: 34px; padding-inline: var(--sp-3);
  border: 1px solid var(--line-1); border-radius: var(--r-2);
  background: var(--surface-1);
  color: var(--ink-4); font-size: var(--fs-sm);
  transition: border-color var(--d-1) var(--e-out), color var(--d-1) var(--e-out);
}
.search-trigger:hover { border-color: var(--line-2); color: var(--ink-2); }
.search-trigger svg { width: 15px; height: 15px; flex: none; stroke: currentColor; fill: none; stroke-width: 1.8; }
.search-trigger span { flex: 1; text-align: left; }
.search-trigger kbd {
  padding: 2px var(--sp-2); border: 1px solid var(--line-2); border-radius: var(--r-1);
  font-size: var(--fs-label); color: var(--ink-4); background: var(--surface-2);
}

/* Layout */
.docs-layout {
  display: grid;
  grid-template-columns: 252px minmax(0, 1fr) 216px;
  gap: var(--sp-8);
  width: min(100% - var(--sp-8), 1500px);
  margin-inline: auto;
  padding-top: var(--header-h);
}

/* --------------------------------------------------------------------------
   2. Sidebar
   -------------------------------------------------------------------------- */
.docs-sidebar {
  position: sticky; top: var(--header-h);
  height: calc(100svh - var(--header-h));
  overflow-y: auto; overscroll-behavior: contain;
  padding: var(--sp-8) 0 var(--sp-9);
  scrollbar-width: thin;
}
.nav-group + .nav-group { margin-top: var(--sp-7); }
.nav-group h2 {
  margin: 0 0 var(--sp-3); padding-inline: var(--sp-3);
  font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 500;
  letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--ink-4);
}
.docs-nav a {
  display: block;
  padding: var(--sp-2) var(--sp-3);
  border-radius: var(--r-2);
  font-size: var(--fs-sm); color: var(--ink-3);
  transition: color var(--d-1) var(--e-out), background var(--d-1) var(--e-out);
}
.docs-nav a:hover { color: var(--ink); background: var(--surface-1); }
.docs-nav a[aria-current="page"] {
  color: var(--ember); background: var(--ember-wash);
  font-weight: 560;
}

.sidebar-card {
  margin-top: var(--sp-8); padding: var(--sp-4);
  border: 1px solid var(--line-1); border-radius: var(--r-2);
  background: var(--surface-1);
}
.sidebar-card b {
  display: block; margin-bottom: var(--sp-2);
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--ember);
}
.sidebar-card p { font-size: var(--fs-xs); color: var(--ink-4); margin-bottom: var(--sp-3); line-height: 1.5; }
.sidebar-card a { display: block; font-size: var(--fs-xs); color: var(--ink-2); }
.sidebar-card a:hover { color: var(--ember); }
.sidebar-card a + a { margin-top: var(--sp-2); }

/* --------------------------------------------------------------------------
   3. On-this-page rail
   -------------------------------------------------------------------------- */
.docs-toc {
  position: sticky; top: var(--header-h);
  height: calc(100svh - var(--header-h));
  overflow-y: auto;
  padding: var(--sp-8) 0;
}
.docs-toc h2 {
  margin: 0 0 var(--sp-4);
  font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 500;
  letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--ink-4);
}
.docs-toc a {
  display: block; padding: var(--sp-2) 0 var(--sp-2) var(--sp-4);
  border-left: 1px solid var(--line-1);
  font-size: var(--fs-xs); color: var(--ink-4); line-height: 1.45;
  transition: color var(--d-1) var(--e-out), border-color var(--d-1) var(--e-out);
}
.docs-toc a:hover { color: var(--ink-2); border-left-color: var(--line-3); }
.docs-toc a[aria-current="location"] { color: var(--ember); border-left-color: var(--ember); }
.edit-link {
  display: inline-flex; align-items: center; gap: var(--sp-2);
  margin-top: var(--sp-5); padding-top: var(--sp-4);
  border-top: 1px solid var(--line-1);
  font-size: var(--fs-xs); color: var(--ink-4);
}
.edit-link:hover { color: var(--ember); }

/* --------------------------------------------------------------------------
   4. Article
   -------------------------------------------------------------------------- */
.docs-main { min-width: 0; padding: var(--sp-8) 0 var(--sp-12); }
.doc-article { max-width: 74ch; }

.doc-breadcrumb {
  display: flex; align-items: center; gap: var(--sp-2);
  margin-bottom: var(--sp-5);
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: .06em; text-transform: uppercase; color: var(--ink-4);
}
.doc-breadcrumb strong { color: var(--ink-2); font-weight: 500; }
.doc-breadcrumb i { font-style: normal; color: var(--line-3); }

.doc-hero { margin-bottom: var(--sp-8); }
.doc-tag {
  display: inline-block; margin-bottom: var(--sp-4);
  padding: var(--sp-1) var(--sp-3);
  border: 1px solid var(--ember-line); border-radius: var(--r-full);
  background: var(--ember-wash);
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: .06em; text-transform: uppercase; color: var(--ember);
}
.doc-hero h1 {
  font-size: var(--fs-3xl); font-weight: 560;
  line-height: var(--lh-heading); letter-spacing: var(--tr-heading);
  text-wrap: balance; margin-bottom: var(--sp-4);
}
.doc-hero h1 br { display: none; }         /* let it wrap naturally */
.doc-lede { font-size: var(--fs-md); line-height: 1.55; color: var(--ink-2); text-wrap: pretty; }

.doc-article h2 {
  margin: var(--sp-9) 0 var(--sp-4);
  padding-top: var(--sp-5);
  border-top: 1px solid var(--line-1);
  font-size: var(--fs-xl); font-weight: 560;
  line-height: var(--lh-heading); letter-spacing: var(--tr-heading);
  scroll-margin-top: calc(var(--header-h) + var(--sp-5));
}
.doc-article h3 {
  margin: var(--sp-7) 0 var(--sp-3);
  font-size: var(--fs-md); font-weight: 560; letter-spacing: -.015em;
  scroll-margin-top: calc(var(--header-h) + var(--sp-5));
}
.doc-article p { margin-bottom: var(--sp-4); color: var(--ink-2); text-wrap: pretty; }
.doc-article strong { color: var(--ink); font-weight: 560; }
.doc-article a:not(.btn):not(.copy) {
  color: var(--ember); text-decoration: underline;
  text-decoration-color: var(--ember-line); text-underline-offset: 3px;
  transition: text-decoration-color var(--d-1) var(--e-out);
}
.doc-article a:not(.btn):not(.copy):hover { text-decoration-color: var(--ember); }

.doc-article :not(pre) > code {
  padding: 1px 5px; border-radius: var(--r-1);
  border: 1px solid var(--line-1); background: var(--surface-2);
  font-size: .88em; color: var(--ink);
  overflow-wrap: anywhere;
}

.doc-article ul:not([class]), .doc-article ol:not([class]) {
  margin-bottom: var(--sp-4); padding-left: var(--sp-5); color: var(--ink-2);
}
.doc-article ul:not([class]) { list-style: none; }
.doc-article ul:not([class]) > li { position: relative; margin-bottom: var(--sp-2); }
.doc-article ul:not([class]) > li::before {
  content: "—"; position: absolute; left: calc(var(--sp-5) * -1);
  color: var(--ink-4);
}
.doc-article ol:not([class]) { list-style: decimal; }
.doc-article ol:not([class]) > li { margin-bottom: var(--sp-2); padding-left: var(--sp-1); }
.doc-article ol:not([class])::marker { color: var(--ember); }

.field-note {
  display: block; margin-top: calc(var(--sp-2) * -1); margin-bottom: var(--sp-4);
  font-size: var(--fs-xs); color: var(--ink-4);
}

/* --------------------------------------------------------------------------
   5. Callouts
   -------------------------------------------------------------------------- */
.doc-callout {
  display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--sp-4);
  margin: var(--sp-6) 0;
  padding: var(--sp-5);
  border: 1px solid var(--line-1); border-left: 2px solid var(--ink-4);
  border-radius: var(--r-2);
  background: var(--surface-1);
}
.doc-callout p { margin: 0; font-size: var(--fs-sm); color: var(--ink-2); }
.doc-callout p + p { margin-top: var(--sp-3); }
.doc-callout strong { display: block; margin-bottom: var(--sp-2); color: var(--ink); }
.callout-icon {
  display: grid; place-items: center;
  width: 20px; height: 20px; border-radius: var(--r-1);
  border: 1px solid currentColor;
  font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 600;
  color: var(--ink-4);
}
.callout-warning { border-left-color: var(--warn); background: var(--warn-wash); }
.callout-warning .callout-icon { color: var(--warn); }
.callout-info { border-left-color: var(--info); background: var(--info-wash); }
.callout-info .callout-icon { color: var(--info); }
.callout-tip { border-left-color: var(--sage); background: var(--sage-wash); }
.callout-tip .callout-icon { color: var(--sage); }

/* --------------------------------------------------------------------------
   6. Code
   -------------------------------------------------------------------------- */
.code-block {
  margin: var(--sp-5) 0;
  border: 1px solid var(--line-1); border-radius: var(--r-3);
  background: var(--ground-deep);
  overflow: hidden;
}
.code-label {
  display: flex; align-items: center; gap: var(--sp-3);
  padding: var(--sp-2) var(--sp-3) var(--sp-2) var(--sp-4);
  border-bottom: 1px solid var(--line-1);
  background: var(--surface-1);
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--ink-3);
}
.code-label > span:first-child { flex: 1; }
.code-block pre {
  margin: 0; padding: var(--sp-4) var(--sp-5);
  overflow-x: auto;
  font-size: var(--fs-sm); line-height: 1.7; color: var(--ink-2);
  -moz-tab-size: 2; tab-size: 2;
}
.copy-button {
  display: inline-flex; align-items: center; min-height: 24px;
  padding: 0 var(--sp-3);
  border: 1px solid var(--line-1); border-radius: var(--r-1);
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: .06em; text-transform: uppercase; color: var(--ink-4);
  transition: color var(--d-1) var(--e-out), border-color var(--d-1) var(--e-out), background var(--d-1) var(--e-out);
}
.copy-button:hover { color: var(--ink); border-color: var(--line-2); background: var(--surface-2); }
.copy-button.is-done { color: var(--sage); border-color: var(--sage); }

/* Code tabs — real ARIA tabs, wired in JS */
.code-tabs { margin: var(--sp-5) 0; border: 1px solid var(--line-1); border-radius: var(--r-3); overflow: hidden; }
.code-tab-list {
  display: flex; gap: 0;
  border-bottom: 1px solid var(--line-1);
  background: var(--surface-1);
  overflow-x: auto;
}
.code-tab-list button {
  padding: var(--sp-3) var(--sp-4);
  border-bottom: 2px solid transparent;
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: .06em; text-transform: uppercase; color: var(--ink-4);
  white-space: nowrap;
  transition: color var(--d-1) var(--e-out), border-color var(--d-1) var(--e-out);
}
.code-tab-list button:hover { color: var(--ink-2); }
.code-tab-list button[aria-selected="true"] { color: var(--ember); border-bottom-color: var(--ember); }
.code-panel { display: none; background: var(--ground-deep); }
.code-panel.active, .code-panel[data-active] { display: block; }
.code-panel pre {
  margin: 0; padding: var(--sp-4) var(--sp-5);
  overflow-x: auto; font-size: var(--fs-sm); line-height: 1.7; color: var(--ink-2);
}
.code-tabs .code-block { margin: 0; border: 0; border-radius: 0; }

/* --------------------------------------------------------------------------
   7. Tables
   -------------------------------------------------------------------------- */
.table-wrap {
  margin: var(--sp-5) 0;
  border: 1px solid var(--line-1); border-radius: var(--r-3);
  overflow-x: auto;
}
.table-wrap table { width: 100%; min-width: 460px; }
.table-wrap th, .table-wrap td {
  padding: var(--sp-3) var(--sp-4);
  text-align: left; vertical-align: top;
  border-bottom: 1px solid var(--line-1);
  font-size: var(--fs-sm);
}
.table-wrap thead th {
  position: sticky; top: 0;
  background: var(--surface-2);
  font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 500;
  letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--ink-3);
  white-space: nowrap;
}
.table-wrap tbody tr:last-child td { border-bottom: 0; }
.table-wrap td { color: var(--ink-2); }
.table-wrap td code { white-space: nowrap; }
.table-os { font-family: var(--font-mono); color: var(--ink-4); margin-right: var(--sp-1); }

/* --------------------------------------------------------------------------
   8. Structured content components
   -------------------------------------------------------------------------- */
.concept-grid { display: grid; gap: var(--sp-3); margin: var(--sp-5) 0; }
.concept-grid.three-up { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.concept-card {
  padding: var(--sp-5);
  border: 1px solid var(--line-1); border-radius: var(--r-2);
  background: var(--surface-1);
}
.concept-number {
  display: block; margin-bottom: var(--sp-3);
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: var(--tr-label); color: var(--ember);
}
.concept-card h3 { margin: 0 0 var(--sp-2); font-size: var(--fs-base); font-weight: 560; }
.concept-card p { margin: 0; font-size: var(--fs-xs); color: var(--ink-3); line-height: 1.55; }

.flow-diagram {
  display: flex; flex-wrap: wrap; align-items: stretch; gap: var(--sp-2);
  margin: var(--sp-5) 0;
}
.flow-diagram > div {
  flex: 1; min-width: 128px;
  padding: var(--sp-4);
  border: 1px solid var(--line-1); border-radius: var(--r-2);
  background: var(--surface-1);
}
.flow-diagram > div span {
  display: block; margin-bottom: var(--sp-2);
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: var(--tr-label); color: var(--ember);
}
.flow-diagram > div b { display: block; font-size: var(--fs-sm); font-weight: 560; margin-bottom: 2px; }
.flow-diagram > div small { font-size: var(--fs-label); color: var(--ink-4); line-height: 1.4; display: block; }
.flow-diagram > i {
  align-self: center; font-style: normal; color: var(--line-3);
  font-family: var(--font-mono); font-size: var(--fs-sm);
}

/* <li><span>✓</span><div><strong>…</strong> text</div></li> */
.check-list, .number-list { margin: var(--sp-5) 0; }
.check-list li {
  display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: var(--sp-3);
  padding: var(--sp-3) 0; border-bottom: 1px solid var(--line-1);
  font-size: var(--fs-sm); color: var(--ink-2);
}
.check-list li:last-child { border-bottom: 0; }
.check-list li > span { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--sage); }
.check-list strong { color: var(--ink); }

/* <ol class="number-list"><li><strong>…</strong> text</li> */
.number-list { list-style: decimal; padding-left: var(--sp-6); }
.number-list li { padding: var(--sp-2) 0 var(--sp-2) var(--sp-2); font-size: var(--fs-sm); color: var(--ink-2); }
.number-list li::marker { color: var(--ember); font-family: var(--font-mono); font-size: var(--fs-xs); }
.number-list strong { color: var(--ink); }

/* <ol class="step-list"><li><span>1</span><div><strong>…</strong><p>…</p></div></li>
   The number is real markup — do not also generate one with a counter. */
.step-list { margin: var(--sp-5) 0; }
.step-list li {
  display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: var(--sp-4);
  padding: var(--sp-3) 0; border-bottom: 1px solid var(--line-1);
  font-size: var(--fs-sm); color: var(--ink-2);
}
.step-list li:last-child { border-bottom: 0; }
.step-list li > span {
  display: grid; place-items: center;
  width: 24px; height: 24px; border-radius: 50%;
  border: 1px solid var(--line-2); background: var(--surface-2);
  font-family: var(--font-mono); font-size: var(--fs-label); color: var(--ember);
}
.step-list strong { display: block; margin-bottom: var(--sp-1); color: var(--ink); }
.step-list p { margin: 0; font-size: var(--fs-sm); color: var(--ink-3); }

/* <ol class="lifecycle"><li><span>01</span><div><h3>…</h3><p>…</p></div></li> */
.lifecycle { margin: var(--sp-5) 0; }
.lifecycle li {
  display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: var(--sp-4);
  padding: var(--sp-4) 0; border-bottom: 1px solid var(--line-1);
}
.lifecycle li:last-child { border-bottom: 0; }
.lifecycle li > span {
  font-family: var(--font-mono); font-size: var(--fs-xs);
  letter-spacing: .06em; color: var(--ember); padding-top: 2px;
}
.lifecycle h3 { margin: 0 0 var(--sp-1); font-size: var(--fs-sm); font-weight: 560; }
.lifecycle p { margin: 0; font-size: var(--fs-sm); color: var(--ink-3); }

/* <label><input type=checkbox><span><strong>…</strong> text</span></label> */
.security-checks { margin: var(--sp-5) 0; }
.security-checks label {
  display: grid; grid-template-columns: 16px minmax(0, 1fr); gap: var(--sp-3);
  align-items: start;
  padding: var(--sp-3) 0; border-bottom: 1px solid var(--line-1);
  font-size: var(--fs-sm); color: var(--ink-2); cursor: pointer;
}
.security-checks label:last-child { border-bottom: 0; }
.security-checks input[type="checkbox"] { width: 15px; height: 15px; margin-top: 3px; accent-color: var(--ember); }
.security-checks strong { color: var(--ink); }
.security-checks label:has(input:checked) span { color: var(--ink-4); text-decoration: line-through; }

/* .option markup is: <code>flag</code><div>description</div><span>badge</span> */
.option-list { margin: var(--sp-5) 0; border-top: 1px solid var(--line-1); }
.option {
  display: grid;
  grid-template-columns: minmax(140px, 200px) minmax(0, 1fr) auto;
  gap: var(--sp-5); align-items: start;
  padding: var(--sp-4) 0; border-bottom: 1px solid var(--line-1);
}
/* Must out-specify `.doc-article :not(pre) > code`, which is (0,1,2). */
.doc-article .option > code {
  font-family: var(--font-mono); font-size: var(--fs-xs);
  color: var(--ember); overflow-wrap: anywhere;
  background: none; border: 0; padding: 0;
  line-height: 1.7;
}
.option > div { font-size: var(--fs-sm); color: var(--ink-2); }
.option > div strong { display: block; margin-bottom: var(--sp-1); color: var(--ink); }
.option > div p { margin: 0; font-size: var(--fs-sm); color: var(--ink-3); }
.option > span {
  padding: 2px var(--sp-2); border-radius: var(--r-1);
  border: 1px solid var(--line-1); background: var(--surface-2);
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: .06em; text-transform: uppercase; color: var(--ink-4);
  white-space: nowrap;
}
.option-list.compact .option { padding: var(--sp-3) 0; }

/* <div><code>key</code><span>type · required</span><p>…</p></div> */
.schema-list { margin: var(--sp-5) 0; border-top: 1px solid var(--line-1); }
.schema-list > div {
  display: grid;
  grid-template-columns: minmax(130px, 180px) minmax(0, 1fr);
  grid-template-areas: "key meta" "key body";
  gap: var(--sp-1) var(--sp-5);
  padding: var(--sp-4) 0; border-bottom: 1px solid var(--line-1);
}
.doc-article .schema-list > div > code {
  grid-area: key;
  font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--ember);
  background: none; border: 0; padding: 0; overflow-wrap: anywhere;
}
.schema-list > div > span {
  grid-area: meta;
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: .04em; color: var(--ink-4);
}
.schema-list > div > p { grid-area: body; margin: 0; font-size: var(--fs-sm); color: var(--ink-2); }
.schema-list-two-column { columns: 2; column-gap: var(--sp-7); }
.schema-list-two-column > div { break-inside: avoid; }

.comparison-grid, .manifest-grid, .module-grid, .deploy-doc-grid,
.recipe-grid, .link-cards, .doc-download-grid, .artifact-doc-grid {
  display: grid; gap: var(--sp-3); margin: var(--sp-5) 0;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.compare-card, .format-card, .recipe, .module-core,
.link-cards > a, .doc-download-grid > a, .doc-download-grid > div {
  padding: var(--sp-5);
  border: 1px solid var(--line-1); border-radius: var(--r-2);
  background: var(--surface-1);
}
.compare-card h3, .format-card h3, .recipe h3 {
  margin: 0 0 var(--sp-3); font-size: var(--fs-base); font-weight: 560;
}
/* format cards open with a bare <span>.zip</span> format tag */
.compare-card > span:first-child, .format-card > span:first-child {
  display: inline-block; margin-bottom: var(--sp-3);
  padding: 2px var(--sp-2); border-radius: var(--r-1);
  border: 1px solid var(--ember-line); background: var(--ember-wash);
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: .04em; color: var(--ember);
}
.compare-card p, .format-card p, .recipe p { margin: 0 0 var(--sp-3); font-size: var(--fs-sm); color: var(--ink-3); }
.compare-card ul, .format-card ul { font-size: var(--fs-xs); color: var(--ink-3); }
.compare-card li, .format-card li { padding: var(--sp-1) 0 var(--sp-1) var(--sp-4); position: relative; }
.compare-card li::before, .format-card li::before {
  content: "—"; position: absolute; left: 0; color: var(--ink-4);
}

/* <a><span>label</span><strong>title</strong><i>↗</i></a> */
.link-cards > a, .doc-download-grid > a {
  display: block; text-decoration: none !important;
  transition: border-color var(--d-1) var(--e-out), background var(--d-1) var(--e-out);
}
.link-cards > a:hover, .doc-download-grid > a:hover { border-color: var(--ember-line); background: var(--surface-2); }
.link-cards > a > span, .doc-download-grid > a > span {
  display: block; margin-bottom: var(--sp-2);
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--ink-4);
}
.link-cards > a > strong, .doc-download-grid > a > strong {
  display: block; font-size: var(--fs-sm); font-weight: 560; color: var(--ink) !important;
}
.link-cards > a > i, .doc-download-grid > a > i {
  display: inline-block; margin-top: var(--sp-3);
  font-style: normal; font-size: var(--fs-xs); color: var(--ember);
}
.doc-download-grid > a > small {
  display: block; margin-top: var(--sp-1);
  font-family: var(--font-mono); font-size: var(--fs-label); color: var(--ink-4);
}

/* <div class="recipe"><div><span>label</span><button>Copy</button></div><pre>…</pre></div> */
.recipe { padding: 0; overflow: hidden; }
.recipe > div:first-child {
  display: flex; align-items: center; gap: var(--sp-3);
  padding: var(--sp-2) var(--sp-3) var(--sp-2) var(--sp-4);
  border-bottom: 1px solid var(--line-1); background: var(--surface-2);
}
.recipe > div:first-child > span {
  flex: 1;
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--ink-3);
}
.recipe pre {
  margin: 0; padding: var(--sp-4);
  background: var(--ground-deep);
  font-size: var(--fs-sm); overflow-x: auto; color: var(--ink-2);
}

.manifest-details {
  margin: var(--sp-3) 0;
  border: 1px solid var(--line-1); border-radius: var(--r-2);
  background: var(--surface-1);
  overflow: hidden;
}
.manifest-details summary {
  padding: var(--sp-4);
  cursor: pointer; list-style: none;
  font-size: var(--fs-sm); font-weight: 560; color: var(--ink);
  display: flex; align-items: center; gap: var(--sp-3);
}
.manifest-details summary::-webkit-details-marker { display: none; }
.manifest-details summary::before {
  content: "+"; font-family: var(--font-mono); color: var(--ember);
  font-size: var(--fs-sm); width: 12px;
}
.manifest-details[open] summary::before { content: "−"; }
.manifest-details summary:hover { background: var(--surface-2); }
.manifest-body { padding: 0 var(--sp-4) var(--sp-4); }
/* manifest chips are <code> children, not spans */
.manifest-chips { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.doc-article .manifest-chips > code {
  padding: var(--sp-1) var(--sp-3);
  border: 1px solid var(--line-1); border-radius: var(--r-1);
  background: var(--surface-2);
  font-family: var(--font-mono); font-size: var(--fs-label);
  color: var(--ink-3); letter-spacing: .02em;
}

/* <div class="artifact-group-head"><span class="artifact-os">⊞</span><div><p>OS</p><h2>…</h2></div></div> */
.artifact-group { margin: var(--sp-8) 0; }
.artifact-group-head {
  display: flex; align-items: center; gap: var(--sp-4);
  margin-bottom: var(--sp-4);
  padding-bottom: var(--sp-4); border-bottom: 1px solid var(--line-1);
}
.artifact-group-head > div > p {
  margin: 0 0 2px;
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--ink-4);
}
/* neutralise the global h2 treatment inside this header */
.doc-article .artifact-group-head h2 {
  margin: 0; padding: 0; border: 0;
  font-size: var(--fs-lg); font-weight: 560;
}
.artifact-os {
  display: grid; place-items: center;
  width: 34px; height: 34px; flex: none;
  border: 1px solid var(--ember-line); border-radius: var(--r-2);
  background: var(--ember-wash);
  font-family: var(--font-mono); font-size: var(--fs-md); color: var(--ember);
}

/* <div class="artifact-items"><div><strong>label</strong><span>values</span></div>…</div> */
.artifact-items { display: grid; gap: 0; }
.artifact-items > div {
  display: grid; grid-template-columns: minmax(120px, 170px) minmax(0, 1fr);
  gap: var(--sp-5);
  padding: var(--sp-3) 0; border-bottom: 1px solid var(--line-1);
}
.artifact-items > div:last-child { border-bottom: 0; }
.artifact-items > div > strong { font-size: var(--fs-sm); font-weight: 560; color: var(--ink); }
.artifact-items > div > span { font-size: var(--fs-sm); color: var(--ink-3); }
.artifact-filter { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin: var(--sp-5) 0; }
.artifact-filter button {
  padding: var(--sp-2) var(--sp-4);
  border: 1px solid var(--line-1); border-radius: var(--r-full);
  background: var(--surface-1);
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3);
  transition: all var(--d-1) var(--e-out);
}
.artifact-filter button:hover { color: var(--ink); border-color: var(--line-2); }
.artifact-filter button[aria-pressed="true"], .artifact-filter button.active {
  background: var(--ember-wash); border-color: var(--ember-line); color: var(--ember);
}
.filtered-out { display: none; }

.file-tree, .module-map, .tool-groups, .command-manifest, .implementation-notes, .tool-lines {
  margin: var(--sp-5) 0;
  padding: var(--sp-5);
  border: 1px solid var(--line-1); border-radius: var(--r-3);
  background: var(--surface-1);
  font-size: var(--fs-sm);
}

/* <div><span class="tree-folder">▾</span><strong>dir/</strong></div>
   <div class="depth-1"><span>◇</span><code>file</code></div> */
.file-tree { font-family: var(--font-mono); font-size: var(--fs-xs); line-height: 2; color: var(--ink-2); }
.file-tree > div { display: flex; align-items: baseline; gap: var(--sp-3); }
.file-tree strong { color: var(--ink); font-weight: 500; }
.file-tree > div > span { color: var(--ink-4); width: 10px; flex: none; }
.doc-article .file-tree code { background: none; border: 0; padding: 0; color: var(--ink-2); font-size: 1em; }
.tree-folder { color: var(--ember) !important; }
.file-tree .depth-1 { padding-left: var(--sp-5); }
.file-tree .depth-2 { padding-left: var(--sp-10); }

/* <div><strong>…</strong><p>…</p></div> repeated */
.implementation-notes > div + div, .command-manifest > div + div {
  margin-top: var(--sp-4); padding-top: var(--sp-4); border-top: 1px solid var(--line-1);
}
.implementation-notes strong, .command-manifest strong {
  display: block; margin-bottom: var(--sp-2); font-size: var(--fs-sm); color: var(--ink);
}
.implementation-notes p, .command-manifest p { margin: 0; font-size: var(--fs-sm); color: var(--ink-3); }

/* <div class="module-core"><code>main.rs</code><span>role</span></div><i></i><div class="module-grid">… */
.module-map { display: flex; flex-direction: column; align-items: stretch; gap: var(--sp-3); }
.module-map > i {
  align-self: center; width: 1px; height: 20px; background: var(--line-2);
}
.module-core { text-align: center; border-color: var(--ember-line) !important; }
.module-grid { margin: 0 !important; }
.module-grid > div, .module-core {
  padding: var(--sp-4);
  border: 1px solid var(--line-1); border-radius: var(--r-2);
  background: var(--surface-2);
}
.doc-article .module-map code {
  display: block; margin-bottom: 2px;
  background: none; border: 0; padding: 0;
  font-size: var(--fs-xs); color: var(--ember);
}
.module-map span { font-size: var(--fs-label); color: var(--ink-4); letter-spacing: .02em; }

/* <p><code>command</code><b>output file</b></p> */
.tool-lines > p {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--sp-3);
  margin: 0; padding: var(--sp-2) 0; border-bottom: 1px solid var(--line-1);
}
.tool-lines > p:last-child { border-bottom: 0; }
.doc-article .tool-lines code {
  flex: 1; background: none; border: 0; padding: 0;
  font-size: var(--fs-xs); color: var(--ink-2);
}
.tool-lines b {
  font-family: var(--font-mono); font-size: var(--fs-label);
  color: var(--ember); font-weight: 500; white-space: nowrap;
}

.tool-groups > div + div { margin-top: var(--sp-5); padding-top: var(--sp-5); border-top: 1px solid var(--line-1); }
.tool-groups h4 {
  margin: 0 0 var(--sp-3);
  font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 500;
  letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--ink-4);
}

/* <details><summary><span>…</span><i></i></summary><div>…</div></details> */
.accordion { margin: var(--sp-5) 0; }
.accordion details {
  border: 1px solid var(--line-1); border-radius: var(--r-2);
  background: var(--surface-1);
  overflow: hidden;
}
.accordion details + details { margin-top: var(--sp-2); }
.accordion summary {
  display: flex; align-items: center; gap: var(--sp-3);
  padding: var(--sp-4);
  cursor: pointer; list-style: none;
  font-size: var(--fs-sm); font-weight: 560; color: var(--ink);
}
.accordion summary::-webkit-details-marker { display: none; }
.accordion summary::before {
  content: "+"; font-family: var(--font-mono); color: var(--ember); width: 12px; flex: none;
}
.accordion details[open] summary::before { content: "−"; }
.accordion summary:hover { background: var(--surface-2); }
.accordion summary > span { flex: 1; }
.accordion details > div { padding: 0 var(--sp-4) var(--sp-4) calc(var(--sp-4) + 24px); }
.accordion details > div p { margin: 0; font-size: var(--fs-sm); color: var(--ink-2); }

.doc-next {
  display: flex; align-items: center; gap: var(--sp-4);
  margin-top: var(--sp-10); padding-top: var(--sp-6);
  border-top: 1px solid var(--line-1);
}
.doc-next > span {
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--ink-4);
}
.doc-next a {
  margin-left: auto;
  display: inline-flex; align-items: center; gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-5);
  border: 1px solid var(--line-1); border-radius: var(--r-2);
  background: var(--surface-1);
  text-decoration: none !important; color: var(--ink) !important;
  transition: border-color var(--d-1) var(--e-out), background var(--d-1) var(--e-out);
}
.doc-next a:hover { border-color: var(--ember-line); background: var(--surface-2); }
.doc-next a strong { font-size: var(--fs-sm); font-weight: 560; }
.doc-next a i { font-style: normal; color: var(--ember); }

/* Builders */
.command-builder, .route-builder {
  margin: var(--sp-5) 0;
  border: 1px solid var(--line-1); border-radius: var(--r-3);
  background: var(--surface-1);
  overflow: hidden;
}
.builder-controls, .route-controls {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(178px, 1fr));
  gap: var(--sp-4);
  padding: var(--sp-5);
  border-bottom: 1px solid var(--line-1);
}
.builder-controls label, .route-controls label {
  display: flex; flex-direction: column; gap: var(--sp-2);
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--ink-4);
}
.builder-controls select, .builder-controls input,
.route-controls select, .route-controls input {
  height: 34px; padding-inline: var(--sp-3);
  border: 1px solid var(--line-2); border-radius: var(--r-2);
  background: var(--ground); color: var(--ink);
  font-family: var(--font-mono); font-size: var(--fs-xs);
  letter-spacing: 0; text-transform: none;
  transition: border-color var(--d-1) var(--e-out);
}
.builder-controls select:hover, .route-controls select:hover { border-color: var(--line-3); }
.toggle-row { flex-direction: row !important; align-items: center; gap: var(--sp-3) !important; }
.toggle-row input[type="checkbox"] { width: 15px; height: 15px; accent-color: var(--ember); }
.route-wide { grid-column: 1 / -1; }
.builder-result, .route-results { background: var(--ground-deep); }
.builder-result pre, .route-results pre {
  margin: 0; padding: var(--sp-4) var(--sp-5);
  overflow-x: auto; font-size: var(--fs-sm); line-height: 1.7; color: var(--ink-2);
}
.route-results .code-block { margin: 0; border: 0; border-radius: 0; border-top: 1px solid var(--line-1); }

/* --------------------------------------------------------------------------
   9. Search palette
   -------------------------------------------------------------------------- */
.search-modal { position: fixed; inset: 0; z-index: 200; display: none; }
.search-modal.is-open { display: block; }
.search-backdrop { position: absolute; inset: 0; background: rgba(3, 8, 7, .72); backdrop-filter: blur(3px); }
.search-dialog {
  position: relative;
  width: min(100% - var(--sp-8), 620px);
  margin: 10vh auto 0;
  border: 1px solid var(--line-2); border-radius: var(--r-3);
  background: var(--surface-1);
  overflow: hidden;
  box-shadow: 0 24px 64px rgba(0, 0, 0, .5);
}
.search-input-row {
  display: flex; align-items: center; gap: var(--sp-3);
  padding: var(--sp-4) var(--sp-5);
  border-bottom: 1px solid var(--line-1);
}
.search-input-row svg { width: 17px; height: 17px; stroke: var(--ink-4); fill: none; stroke-width: 1.8; flex: none; }
.search-input-row input {
  flex: 1; border: 0; background: none; outline: none;
  font-size: var(--fs-md); color: var(--ink);
}
.search-input-row input::placeholder { color: var(--ink-4); }
.search-results { max-height: 56vh; overflow-y: auto; padding: var(--sp-2); }
.search-result {
  display: block; width: 100%; text-align: left;
  padding: var(--sp-3) var(--sp-4);
  border-radius: var(--r-2);
  transition: background var(--d-1) var(--e-out);
}
.search-result:hover, .search-result.is-active { background: var(--surface-2); }
.search-result b { display: block; font-size: var(--fs-sm); font-weight: 560; color: var(--ink); }
.search-result small {
  display: block; margin-top: 2px;
  font-size: var(--fs-xs); color: var(--ink-4);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.search-result .crumb {
  font-family: var(--font-mono); font-size: var(--fs-label);
  letter-spacing: .06em; text-transform: uppercase; color: var(--ember);
}
.search-empty { padding: var(--sp-8); text-align: center; font-size: var(--fs-sm); color: var(--ink-4); }
.search-footer {
  display: flex; gap: var(--sp-5);
  padding: var(--sp-3) var(--sp-5);
  border-top: 1px solid var(--line-1);
  background: var(--surface-2);
  font-size: var(--fs-label); color: var(--ink-4);
}
.search-footer kbd {
  padding: 1px 5px; border: 1px solid var(--line-2); border-radius: var(--r-1);
  background: var(--ground); margin-right: var(--sp-1);
}

/* --------------------------------------------------------------------------
   10. Responsive
   -------------------------------------------------------------------------- */
/* Inline TOC: hidden by default, revealed once the right rail is dropped.
   The base rule MUST precede the media query — equal specificity means
   source order wins, and a media query does not change that. */
.toc-inline {
  display: none;
  margin: 0 0 var(--sp-7);
  padding: var(--sp-4) var(--sp-5);
  border: 1px solid var(--line-1); border-radius: var(--r-2);
  background: var(--surface-1);
}
.toc-inline h2 {
  margin: 0 0 var(--sp-3); padding: 0; border: 0;
  font-family: var(--font-mono); font-size: var(--fs-label); font-weight: 500;
  letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--ink-4);
}
.toc-inline a { display: block; padding: var(--sp-1) 0; font-size: var(--fs-xs); color: var(--ink-2); }
.toc-inline a:hover { color: var(--ember); }
.toc-inline a[aria-current="location"] { color: var(--ember); }

@media (max-width: 1240px) {
  .docs-layout { grid-template-columns: 232px minmax(0, 1fr); gap: var(--sp-7); }
  .docs-toc { display: none; }
  .toc-inline { display: block; }   /* replaces the rail instead of vanishing */
}

/* Base state must come BEFORE the media query that reveals it — same
   specificity means source order decides, media query or not. */
.docs-menu-toggle { display: none; }

@media (max-width: 940px) {
  .docs-layout { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .docs-sidebar {
    position: fixed; z-index: 80;
    inset-block: var(--header-h) 0; inset-inline-start: 0;
    width: 268px; padding-inline: var(--sp-4);
    border-right: 1px solid var(--line-1);
    background: var(--ground);
    transform: translateX(-102%);
    transition: transform var(--d-2) var(--e-out);
  }
  .docs-sidebar.is-open { transform: none; }
  .docs-menu-toggle { display: inline-grid; }
  .search-trigger span, .search-trigger kbd { display: none; }
  .search-trigger { flex: none; width: 34px; justify-content: center; padding: 0; }
  .docs-label { display: none; }
  .concept-grid.three-up,
  .comparison-grid, .manifest-grid, .module-grid, .deploy-doc-grid,
  .recipe-grid, .link-cards, .doc-download-grid, .artifact-doc-grid { grid-template-columns: 1fr; }
  .option, .schema-list > div { grid-template-columns: 1fr; gap: var(--sp-2); grid-template-areas: none; }
  .schema-list-two-column { columns: 1; }
  .artifact-items > div { grid-template-columns: 1fr; gap: var(--sp-1); }
  .option > span { justify-self: start; }
}

@media (max-width: 560px) {
  .docs-layout { width: calc(100% - var(--sp-6)); }
  .doc-hero h1 { font-size: var(--fs-2xl); }
  .version-tag { display: none; }
}

/* Narrow phones: shed header actions instead of overflowing. Both stay
   reachable — GitHub via the sidebar card, Download via the landing page. */
@media (max-width: 400px) {
  .docs-header { padding-inline: var(--sp-3); gap: var(--sp-2); }
  .docs-header-actions a[href*="github"] { display: none; }
}
@media (max-width: 360px) {
  .docs-header-actions .btn-primary { display: none; }
}

/* --------------------------------------------------------------------------
   11. Print — a doc page must export as a clean runbook
   -------------------------------------------------------------------------- */
@media print {
  .docs-header, .docs-sidebar, .docs-toc, .toc-inline,
  .search-modal, .doc-next, .copy-button, .artifact-filter,
  .command-builder, .route-builder { display: none !important; }
  .docs-layout { display: block; width: 100%; padding-top: 0; }
  .docs-main { padding: 0; }
  .doc-article { max-width: none; }
  .doc-article h2 { break-after: avoid; }
  .code-block, .table-wrap, .doc-callout, .concept-card { break-inside: avoid; }
  .code-panel { display: block !important; }   /* print every tab, not just the open one */
  .manifest-details { break-inside: avoid; }
  .manifest-details[open] summary::before, .manifest-details summary::before { content: ""; }
  .manifest-body { display: block !important; }
}
