@font-face {
  font-family: "Geist Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/fonts/atmina-geist-cyrillic-ext-normal.woff2") format("woff2");
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

@font-face {
  font-family: "Geist Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/fonts/atmina-geist-cyrillic-normal.woff2") format("woff2");
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

@font-face {
  font-family: "Geist Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/fonts/atmina-geist-vietnamese-normal.woff2") format("woff2");
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

@font-face {
  font-family: "Geist Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/fonts/atmina-geist-latin-ext-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

@font-face {
  font-family: "Geist Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/fonts/atmina-geist-latin-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

@font-face {
  font-family: "Geist Mono Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/fonts/atmina-geist-mono-cyrillic-ext-normal.woff2") format("woff2");
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

@font-face {
  font-family: "Geist Mono Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/fonts/atmina-geist-mono-cyrillic-normal.woff2") format("woff2");
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

@font-face {
  font-family: "Geist Mono Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/fonts/atmina-geist-mono-symbols2-normal.woff2") format("woff2");
  unicode-range: U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F;
}

@font-face {
  font-family: "Geist Mono Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/fonts/atmina-geist-mono-vietnamese-normal.woff2") format("woff2");
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

@font-face {
  font-family: "Geist Mono Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/fonts/atmina-geist-mono-latin-ext-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

@font-face {
  font-family: "Geist Mono Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/fonts/atmina-geist-mono-latin-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

@font-face {
  font-family: "DM Serif Display";
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url("/fonts/atmina-dm-serif-display-latin-ext-400-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

@font-face {
  font-family: "DM Serif Display";
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url("/fonts/atmina-dm-serif-display-latin-400-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

@font-face {
  font-family: "DM Serif Display";
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url("/fonts/atmina-dm-serif-display-latin-ext-400-italic.woff2") format("woff2");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

@font-face {
  font-family: "DM Serif Display";
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url("/fonts/atmina-dm-serif-display-latin-400-italic.woff2") format("woff2");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
:root {
  --atmina-yellow: oklch(0.886 0.187 95.3);
  --atmina-yellow-dim: oklch(0.795 0.166 92);
  --atmina-black: oklch(0.196 0.005 195);
  --atmina-black-elev: oklch(0.232 0.005 195);
  --atmina-black-subtle: oklch(0.262 0.005 195);
  --atmina-stone-canvas: oklch(0.991 0.001 106.4);
  --atmina-stone-soft: oklch(0.94 0.004 91.4);
  --atmina-stone-border: oklch(0.882 0.003 106.5);
  --atmina-surface: oklch(1 0 0);
  --atmina-ink: oklch(0.15 0 89.9);
  --atmina-ink-muted: oklch(0.535 0.008 88.7);

  --atmina-font-display:
    "DM Serif Display", "Iowan Old Style", Georgia, ui-serif, serif;
  --atmina-font-display-weight: 700;
  --atmina-font-sans:
    "Geist Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI",
    sans-serif;
  --atmina-font-sans-weight: 450;
  --atmina-font-mono:
    "Geist Mono Variable", "JetBrains Mono", ui-monospace, "SF Mono", Menlo,
    monospace;
}

:root {
  color-scheme: light;
  --radius: 0.625rem;

  --background: var(--atmina-stone-canvas);
  --foreground: var(--atmina-ink);

  --card: var(--atmina-surface);
  --card-foreground: var(--atmina-ink);
  --card-top-shadow:
    0 -8px 20px -13px color-mix(in oklab, var(--foreground) 12%, transparent),
    0 -1px 3px -1px color-mix(in oklab, var(--foreground) 5%, transparent);
  --sidebar-edge-shadow:
    7px 0 20px -16px color-mix(in oklab, var(--foreground) 12%, transparent),
    1px 0 3px -2px color-mix(in oklab, var(--foreground) 5%, transparent);

  --popover: var(--atmina-surface);
  --popover-foreground: var(--atmina-ink);

  --primary: var(--atmina-yellow);
  --primary-foreground: var(--atmina-black);

  --secondary: var(--atmina-stone-soft);
  --secondary-foreground: var(--atmina-ink);

  --muted: var(--atmina-stone-soft);
  --muted-foreground: var(--atmina-ink-muted);

  --accent: var(--atmina-stone-soft);
  --accent-foreground: var(--atmina-ink);

  --destructive: oklch(0.577 0.245 27.3);
  --destructive-foreground: oklch(0.985 0 0);
  --success: oklch(0.44 0.12 154);
  --success-foreground: oklch(0.985 0 0);
  --warning: oklch(0.48 0.11 75);
  --warning-foreground: oklch(0.985 0 0);
  --info: oklch(0.48 0.1 245);
  --info-foreground: oklch(0.985 0 0);

  --border: var(--atmina-stone-border);
  --input: oklch(0.82 0.004 100);
  --ring: var(--atmina-ink);

  --chart-1: var(--atmina-yellow);
  --chart-2: var(--atmina-black);
  --chart-3: oklch(0.62 0.15 250);
  --chart-4: oklch(0.7 0.15 30);
  --chart-5: oklch(0.58 0.14 160);

  --sidebar: var(--atmina-surface);
  --sidebar-foreground: var(--atmina-ink);
  --sidebar-primary: var(--atmina-yellow);
  --sidebar-primary-foreground: var(--atmina-black);
  --sidebar-accent: var(--atmina-stone-soft);
  --sidebar-accent-foreground: var(--atmina-ink);
  --sidebar-border: var(--atmina-stone-border);
  --sidebar-ring: var(--atmina-ink);

  --content-viewer-rule: var(--atmina-stone-border);
  --content-viewer-code-bg: oklch(0.16 0.006 195);
  --content-viewer-code-fg: oklch(0.975 0.004 95);
  --content-viewer-link: oklch(0.42 0.008 88.7);
}

.dark {
  color-scheme: dark;
  --background: var(--atmina-black);
  --foreground: oklch(0.974 0.003 95);

  --card: var(--atmina-black-elev);
  --card-foreground: oklch(0.974 0.003 95);
  --card-top-shadow: none;

  --popover: var(--atmina-black-elev);
  --popover-foreground: oklch(0.974 0.003 95);

  --primary: var(--atmina-yellow);
  --primary-foreground: var(--atmina-black);

  --secondary: var(--atmina-black-subtle);
  --secondary-foreground: oklch(0.974 0.003 95);

  --muted: var(--atmina-black-subtle);
  --muted-foreground: oklch(0.722 0.005 195);

  --accent: var(--atmina-black-subtle);
  --accent-foreground: oklch(0.974 0.003 95);

  --destructive: oklch(0.704 0.191 22);
  --destructive-foreground: oklch(0.985 0 0);
  --success: oklch(0.72 0.14 154);
  --success-foreground: var(--atmina-black);
  --warning: oklch(0.78 0.13 80);
  --warning-foreground: var(--atmina-black);
  --info: oklch(0.72 0.12 245);
  --info-foreground: var(--atmina-black);

  --border: oklch(1 0 0 / 0.08);
  --input: oklch(1 0 0 / 0.14);
  --ring: oklch(0.974 0.003 95);

  --chart-1: var(--atmina-yellow);
  --chart-2: oklch(0.974 0.003 95);
  --chart-3: oklch(0.72 0.15 250);
  --chart-4: oklch(0.77 0.15 30);
  --chart-5: oklch(0.68 0.14 160);

  --sidebar: var(--atmina-black-elev);
  --sidebar-foreground: oklch(0.974 0.003 95);
  --sidebar-primary: var(--atmina-yellow);
  --sidebar-primary-foreground: var(--atmina-black);
  --sidebar-accent: var(--atmina-black-subtle);
  --sidebar-accent-foreground: oklch(0.974 0.003 95);
  --sidebar-border: oklch(1 0 0 / 0.08);
  --sidebar-ring: oklch(0.974 0.003 95);

  --content-viewer-rule: oklch(1 0 0 / 0.12);
  --content-viewer-code-bg: oklch(0.135 0.006 195);
  --content-viewer-code-fg: oklch(0.975 0.004 95);
  --content-viewer-link: var(--atmina-yellow);
}

@media (prefers-color-scheme: dark) {
  :root[data-atmina-color-scheme="system"] {
    color-scheme: dark;
    --background: var(--atmina-black);
    --foreground: oklch(0.974 0.003 95);

    --card: var(--atmina-black-elev);
    --card-foreground: oklch(0.974 0.003 95);
    --card-top-shadow: none;

    --popover: var(--atmina-black-elev);
    --popover-foreground: oklch(0.974 0.003 95);

    --primary: var(--atmina-yellow);
    --primary-foreground: var(--atmina-black);

    --secondary: var(--atmina-black-subtle);
    --secondary-foreground: oklch(0.974 0.003 95);

    --muted: var(--atmina-black-subtle);
    --muted-foreground: oklch(0.722 0.005 195);

    --accent: var(--atmina-black-subtle);
    --accent-foreground: oklch(0.974 0.003 95);

    --destructive: oklch(0.704 0.191 22);
    --destructive-foreground: oklch(0.985 0 0);
    --success: oklch(0.72 0.14 154);
    --success-foreground: var(--atmina-black);
    --warning: oklch(0.78 0.13 80);
    --warning-foreground: var(--atmina-black);
    --info: oklch(0.72 0.12 245);
    --info-foreground: var(--atmina-black);

    --border: oklch(1 0 0 / 0.08);
    --input: oklch(1 0 0 / 0.14);
    --ring: oklch(0.974 0.003 95);

    --chart-1: var(--atmina-yellow);
    --chart-2: oklch(0.974 0.003 95);
    --chart-3: oklch(0.72 0.15 250);
    --chart-4: oklch(0.77 0.15 30);
    --chart-5: oklch(0.68 0.14 160);

    --sidebar: var(--atmina-black-elev);
    --sidebar-foreground: oklch(0.974 0.003 95);
    --sidebar-primary: var(--atmina-yellow);
    --sidebar-primary-foreground: var(--atmina-black);
    --sidebar-accent: var(--atmina-black-subtle);
    --sidebar-accent-foreground: oklch(0.974 0.003 95);
    --sidebar-border: oklch(1 0 0 / 0.08);
    --sidebar-ring: oklch(0.974 0.003 95);

    --content-viewer-rule: oklch(1 0 0 / 0.12);
    --content-viewer-code-bg: oklch(0.135 0.006 195);
    --content-viewer-code-fg: oklch(0.975 0.004 95);
    --content-viewer-link: var(--atmina-yellow);
  }
}

.yellow {
  color-scheme: light;
  --background: var(--atmina-yellow);
  --foreground: var(--atmina-black);

  --card: oklch(0.196 0.005 195 / 0.05);
  --card-foreground: var(--atmina-black);

  --popover: var(--atmina-yellow);
  --popover-foreground: var(--atmina-black);

  --primary: var(--atmina-black);
  --primary-foreground: var(--atmina-yellow);

  --secondary: oklch(0.196 0.005 195 / 0.08);
  --secondary-foreground: var(--atmina-black);

  --muted: oklch(0.196 0.005 195 / 0.06);
  --muted-foreground: oklch(0.281 0.005 195);

  --accent: oklch(0.196 0.005 195 / 0.1);
  --accent-foreground: var(--atmina-black);

  --destructive: oklch(0.45 0.2 27);
  --destructive-foreground: oklch(0.985 0 0);
  --success: oklch(0.38 0.11 154);
  --success-foreground: oklch(0.985 0 0);
  --warning: oklch(0.4 0.1 55);
  --warning-foreground: oklch(0.985 0 0);
  --info: oklch(0.42 0.1 245);
  --info-foreground: oklch(0.985 0 0);

  --border: oklch(0.196 0.005 195 / 0.18);
  --input: oklch(0.196 0.005 195 / 0.28);
  --ring: var(--atmina-black);

  --sidebar: var(--atmina-yellow);
  --sidebar-foreground: var(--atmina-black);
  --sidebar-primary: var(--atmina-black);
  --sidebar-primary-foreground: var(--atmina-yellow);
  --sidebar-accent: oklch(0.196 0.005 195 / 0.08);
  --sidebar-accent-foreground: var(--atmina-black);
  --sidebar-border: oklch(0.196 0.005 195 / 0.18);
  --sidebar-ring: var(--atmina-black);

  background-color: var(--background);
  color: var(--foreground);
}

.content-viewer .prose {
  --tw-prose-body: var(--foreground);
  --tw-prose-headings: var(--foreground);
  --tw-prose-lead: var(--muted-foreground);
  --tw-prose-links: var(--content-viewer-link);
  --tw-prose-bold: var(--foreground);
  --tw-prose-counters: var(--muted-foreground);
  --tw-prose-bullets: color-mix(in oklab, var(--foreground) 48%, transparent);
  --tw-prose-hr: var(--content-viewer-rule);
  --tw-prose-quotes: var(--foreground);
  --tw-prose-quote-borders: var(--content-viewer-rule);
  --tw-prose-captions: var(--muted-foreground);
  --tw-prose-code: var(--foreground);
  --tw-prose-pre-code: var(--content-viewer-code-fg);
  --tw-prose-pre-bg: var(--content-viewer-code-bg);
  --tw-prose-th-borders: var(--content-viewer-rule);
  --tw-prose-td-borders: var(--content-viewer-rule);
  /* A dark application may contain a light or yellow reading surface.
   * Both typography palettes must resolve against the viewer’s own tokens. */
  --tw-prose-invert-body: var(--foreground);
  --tw-prose-invert-headings: var(--foreground);
  --tw-prose-invert-lead: var(--muted-foreground);
  --tw-prose-invert-links: var(--content-viewer-link);
  --tw-prose-invert-bold: var(--foreground);
  --tw-prose-invert-counters: var(--muted-foreground);
  --tw-prose-invert-bullets: color-mix(in oklab, var(--foreground) 48%, transparent);
  --tw-prose-invert-hr: var(--content-viewer-rule);
  --tw-prose-invert-quotes: var(--foreground);
  --tw-prose-invert-quote-borders: var(--content-viewer-rule);
  --tw-prose-invert-captions: var(--muted-foreground);
  --tw-prose-invert-code: var(--foreground);
  --tw-prose-invert-pre-code: var(--content-viewer-code-fg);
  --tw-prose-invert-pre-bg: var(--content-viewer-code-bg);
  --tw-prose-invert-th-borders: var(--content-viewer-rule);
  --tw-prose-invert-td-borders: var(--content-viewer-rule);
}

.content-viewer .prose :is(a, [data-slot="markdown-link"]) {
  color: var(--content-viewer-link);
  text-decoration-line: underline;
  text-underline-offset: 0.2em;
}

.content-viewer
  .prose
  :is(a, [data-slot="markdown-link"]):is(:hover, :focus-visible) {
  color: var(--foreground);
}

.content-viewer .prose :is(h1, h2, h3, h4, h5, h6) {
  color: var(--foreground);
  letter-spacing: 0;
  line-height: 1.08;
}

:root:not([data-atmina-typography="utility"])
  .content-viewer
  .prose
  :is(h1, h2, h3, h4, h5, h6),
:root:not([data-atmina-typography="utility"]) .content-viewer-editorial-title {
  font-family: var(--atmina-font-display);
  font-weight: var(--atmina-font-display-weight);
}

:root[data-atmina-typography="utility"]
  .content-viewer
  .prose
  :is(h1, h2, h3, h4, h5, h6),
:root[data-atmina-typography="utility"] .content-viewer-editorial-title {
  font-family: var(--atmina-font-sans);
  font-weight: 600;
}

.content-viewer .prose h1 {
  font-size: 2rem;
  margin-bottom: 1rem;
  margin-top: 0;
}

.content-viewer .prose h2 {
  font-size: 1.5rem;
  margin-bottom: 0.75rem;
  margin-top: 2rem;
}

.content-viewer .prose h3 {
  font-size: 1.25rem;
  margin-bottom: 0.625rem;
  margin-top: 1.5rem;
}

.content-viewer .prose h4 {
  font-size: 1.125rem;
  margin-bottom: 0.5rem;
  margin-top: 1.25rem;
}

.content-viewer .prose h5 {
  font-size: 1rem;
  margin-bottom: 0.45rem;
  margin-top: 1rem;
}

.content-viewer .prose h6 {
  font-size: 0.875rem;
  margin-bottom: 0.4rem;
  margin-top: 0.875rem;
}

.content-viewer .prose :not(pre) > code {
  background-color: color-mix(in oklab, var(--foreground) 7%, transparent);
  color: var(--foreground);
}

.content-viewer .prose pre {
  position: relative;
  isolation: isolate;
  border: 0;
  background-color: var(--content-viewer-code-bg);
  box-shadow: none;
  color: var(--content-viewer-code-fg);
}

.content-viewer .prose pre code {
  position: relative;
  z-index: 1;
  border-radius: 0;
  background-color: transparent;
  box-shadow: none;
  color: inherit;
  font-size: 13px;
  line-height: 1.65;
  padding: 0;
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scrollbar-gutter: stable; }

/* Yellow supplies dark application borders; do not inherit the pale reader rule. */
:root[data-atmina-color-scheme="yellow"] { --content-viewer-rule: var(--border); }
:root[data-atmina-color-scheme="yellow"] :is(.shell-control, .docs-search input, .docs-search button) { border-color: var(--input); }

body {
  margin: 0;
  background: var(--background);
  color: var(--muted-foreground);
  font-family: var(--atmina-font-sans);
  font-weight: var(--atmina-font-sans-weight);
  font-size: 17px;
  line-height: 1.65;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas: "header" "main" "pagination" "outline" "nav" "footer";
  padding: 0 1.25rem 4rem;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

@media (min-width: 60rem) {
  body {
    grid-template-columns: 17rem minmax(0, 1fr);
    grid-template-rows: auto 1fr auto auto;
    grid-template-areas: "header header" "nav main" "nav pagination" "nav footer";
    justify-content: center;
    column-gap: 3rem;
    padding: 0 2rem 5rem;
  }
}

header {
  grid-area: header;
  height: 44px;
  border-bottom: 1px solid var(--content-viewer-rule);
  display: flex;
  align-items: center;
  gap: 1rem;
  margin: 0 -1.25rem 2rem;
  padding: 0 1.25rem;
}

.wordmark { display: inline-flex; }
.wordmark img { display: block; height: 1.25rem; width: auto; }
.kb-home { color: var(--foreground); font-size: 0.75rem; font-weight: 600; text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; max-width: 5rem; }
.header-bar { display: contents; }
.search-icon { display: none; }
header:has(.docs-search) .header-controls { margin-left: 0; }

.header-controls { display: flex; align-items: center; gap: 0.35rem; margin-left: auto; min-width: 0; }
.shell-control, .docs-search button {
  min-height: 28px;
  border: 1px solid var(--content-viewer-rule);
  border-radius: 0.5rem;
  width: 4.5rem;
  box-shadow: 0 1px 2px color-mix(in oklab, var(--foreground) 8%, transparent);
  color: var(--foreground);
  font-size: 0.75rem;
  line-height: 26px;
  padding: 0 0.625rem;
  text-decoration: none;
}
.skip-link { position: fixed; left: 1rem; top: -4rem; z-index: 1; background: var(--background); padding: 0.5rem; }
.skip-link:focus { top: 0.5rem; }

main { grid-area: main; min-width: 0; width: 100%; max-width: 48rem; justify-self: center; }

#menu {
  grid-area: nav;
  border-top: 1px solid var(--content-viewer-rule);
  padding-top: 1.5rem;
  font-size: 0.95rem;
}

@media (min-width: 60rem) {
  #menu {
    border-top: 0;
    border-right: 1px solid var(--content-viewer-rule);
    padding: 0 1.5rem 0 0;
    position: sticky;
    top: 2rem;
    align-self: start;
    max-height: calc(100vh - 4rem);
    overflow-y: auto;
  }
}

.docs-search { margin: 0 0 0 auto; display: flex; align-items: center; gap: 0.4rem; }

.docs-search label {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted-foreground);
  margin: 0 0 0.4rem;
}

.docs-search-row { display: flex; gap: 0.4rem; }

.docs-search input {
  flex: 1 1 auto;
  min-width: 0;
  font: inherit;
  font-size: 0.95rem;
  height: 28px;
  padding: 0 0.5rem;
  color: var(--foreground);
  background: var(--background);
  border: 1px solid var(--content-viewer-rule);
  border-radius: 0.5rem;
}

.docs-search button {
  flex: 0 0 auto;
  font: inherit;
  font-size: 0.95rem;
  background: var(--background);
  cursor: pointer;
}

.docs-search button:hover { border-color: var(--content-viewer-link); }

.docs-results { list-style: none; margin: 0; padding: 0; }
.docs-results li { margin: 0 0 1.5rem; }
.docs-results a { font-size: 1.1rem; font-weight: 600; }
.docs-results p { margin: 0.25rem 0 0; color: var(--muted-foreground); }

/* Native popover and ordinary form controls keep preference selection script-free. */
/* Match ModeToggle compact and DropdownMenuContent/Item in the application. */
header .theme-trigger { display: inline-grid; place-items: center; anchor-name: --reader-theme-trigger; width: 28px; height: 28px; min-height: 28px; padding: 0; flex-shrink: 0; border: 1px solid var(--input); border-radius: 8px; background: var(--background); color: var(--foreground); box-shadow: 0 1px 2px rgb(0 0 0 / 0.05); }
header .theme-trigger .lucide-circle,
#reader-theme .lucide-circle { fill: var(--primary); color: var(--primary); }
.system-theme-dark { display: none; }
@media (prefers-color-scheme: dark) { .system-theme-light { display: none; } .system-theme-dark { display: block; } }
#reader-theme { position: fixed; position-anchor: --reader-theme-trigger; inset: auto; top: calc(anchor(bottom) + 4px); right: anchor(right); margin: 0; padding: 4px; min-width: 128px; max-width: calc(100vw - 2rem); max-height: calc(100dvh - 5rem); overflow-y: auto; overflow-x: hidden; background: var(--popover); color: var(--popover-foreground); border: 1px solid var(--border); border-radius: calc(var(--radius) - 2px); box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); outline: none; font: 450 14px/20px var(--atmina-font-sans); -webkit-font-smoothing: antialiased; }
#reader-theme fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
#reader-theme legend { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
#reader-theme button { display: flex; align-items: center; gap: 8px; width: 100%; padding: 6px 8px; border: 0; border-radius: calc(var(--radius) - 4px); font: inherit; text-align: left; color: inherit; background: transparent; cursor: default; outline: none; }
#reader-theme button:is(:hover, :focus-visible) { background: var(--accent); color: var(--accent-foreground); }
#reader-theme svg { width: 16px; height: 16px; flex-shrink: 0; pointer-events: none; }
@media (max-width: 59.999rem) { header .theme-trigger { display: none; } }

/* Native modal focus containment also survives rotation to a desktop width. */
html:has(#mobile-menu[open]) { overflow: hidden; }
#mobile-menu { display: none; position: fixed; inset: 0; margin: 0; width: 100%; max-width: none; height: 100dvh; max-height: none; border: 0; padding: 0; overflow: hidden; background: transparent; color: var(--muted-foreground); font: inherit; }
#mobile-menu[open] { display: grid; grid-template-columns: minmax(2.5rem, 1fr) minmax(0, 24rem); }
#mobile-menu::backdrop { background: rgb(0 0 0 / 35%); }
.mobile-menu-backdrop { appearance: none; border: 0; padding: 0; background: transparent; }
.mobile-menu-panel { display: flex; flex-direction: column; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 0 1.25rem max(1.25rem, env(safe-area-inset-bottom)); background: var(--background); }
.mobile-menu-heading { flex-shrink: 0; position: sticky; top: 0; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding-block: max(0.75rem, env(safe-area-inset-top)) 0.75rem; background: var(--background); border-bottom: 1px solid var(--content-viewer-rule); color: var(--foreground); }
.mobile-menu-heading strong { min-width: 0; overflow-wrap: anywhere; line-height: 1.35; }
.mobile-menu-heading button { display: grid; place-items: center; min-width: 44px; min-height: 44px; width: auto; background: var(--background); flex-shrink: 0; }
#mobile-menu a { display: flex; align-items: center; min-height: 44px; padding-block: 0.5rem; line-height: 1.4; }
#mobile-menu a[aria-current="page"] { text-decoration: underline; text-underline-offset: 0.2em; }
@media (max-width: 59.999rem) {
  :where(main, main [id]):target { scroll-margin-top: 5rem; }
  body { grid-template-areas: "header" "search" "main" "pagination" "outline" "footer"; }
  header { display: contents; }
  .header-bar { grid-area: header; position: sticky; top: 0; z-index: 2; display: flex; align-items: center; gap: 0.5rem; min-width: 0; margin: 0 -1.25rem 2rem; padding: 0.5rem 1.25rem; background: var(--background); border-bottom: 1px solid var(--content-viewer-rule); }
  body:has(.docs-search) .header-bar { margin-bottom: 0; }
  .wordmark { flex-shrink: 0; }
  .wordmark img { height: 1.5rem; }
  .kb-home { max-width: none; font-size: 0.875rem; }
  .header-controls { display: contents; }
  .menu-jump { margin-left: auto; flex-shrink: 0; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; box-shadow: none; }
  header .docs-search { grid-area: search; margin: 0.75rem 0 2rem; max-width: 48rem; justify-self: center; }
  .docs-search, .docs-search-row { width: 100%; min-width: 0; }
  .docs-search-row { position: relative; }
  .docs-search input { flex: 1; width: 0; min-height: 44px; font-size: 1rem; padding-right: 3rem; }
  .docs-search input::placeholder { color: var(--muted-foreground); opacity: 1; }
  .shell-control { min-height: 44px; font-size: 0.875rem; background: var(--background); }
  .docs-search button { position: absolute; right: 0; top: 0; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; box-shadow: none; background: transparent; }
  .search-icon { display: block; }
  .search-submit-label { display: none; }
  #menu { display: none; }

}

.mobile-menu-links { min-height: 0; overflow-y: auto; overscroll-behavior: contain; flex: 1 1 auto; }
.mobile-menu-appearance { flex-shrink: 0; border-top: 1px solid var(--content-viewer-rule); padding-top: 0.75rem; color: var(--foreground); }
.mobile-menu-appearance fieldset { margin: 0; padding: 0; border: 0; min-width: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.25rem; }
.mobile-menu-appearance legend { font-size: 0.75rem; font-weight: 600; margin-bottom: 0.5rem; }
.mobile-menu-appearance button { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.25rem; min-height: 52px; padding: 0.25rem; font: inherit; font-size: 0.75rem; color: inherit; background: transparent; border: 1px solid transparent; border-radius: 0.5rem; }
.mobile-menu-appearance button[aria-pressed="true"] { background: var(--accent); border-color: var(--content-viewer-rule); font-weight: 600; }
.mobile-menu-appearance button:hover { background: var(--accent); }

.reader-menu h2, .reader-menu h3 {
  font-family: var(--atmina-font-sans);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--foreground);
  margin: 1.5rem 0 0.5rem;
}

.reader-menu ul { list-style: none; margin: 0; padding: 0; }
.reader-menu li { margin: 0.2rem 0; }

.reader-menu a {
  display: block;
  padding: 0.15rem 0;
  padding-inline-start: 0.5rem;
  color: inherit;
  text-decoration: none;
}

.reader-menu a:hover { text-decoration: underline; }
.reader-menu a[aria-current="page"] { font-weight: 600; color: var(--content-viewer-link); }

.pagination { grid-area: pagination; display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; max-width: 48rem; width: 100%; justify-self: center; margin-top: 2.5rem; }
.pagination a { min-width: 0; overflow-wrap: anywhere; }
.pagination a[rel="next"] { text-align: right; }
.pagination a span { display: inline-block; width: 100%; text-decoration: none; color: var(--muted-foreground); font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.08em; }
.docs-release { margin: 0 0 1rem; color: var(--muted-foreground); font-size: 0.8125rem; }
.page-outline { grid-area: outline; display: none; font-size: 0.875rem; }
.page-outline a { text-decoration: none; }
.page-outline a:is(:hover, :focus-visible) { text-decoration: underline; }
footer { grid-area: footer; max-width: 48rem; width: 100%; justify-self: center; margin-top: 2rem; padding-top: 1rem; border-top: 1px solid var(--content-viewer-rule); }
footer .reading-utilities { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }
footer .platform-attribution { display: flex; flex-wrap: wrap; align-items: center; column-gap: 1.25rem; margin-top: 1rem; font-size: 0.75rem; }
footer .platform-attribution a { display: inline-flex; align-items: center; min-height: 44px; color: var(--muted-foreground); text-decoration: none; }
footer .platform-attribution a:is(:hover, :focus-visible) { color: var(--foreground); text-decoration: underline; }
footer .shell-control { width: auto; }

@media (min-width: 80rem) {
  body { grid-template-columns: 17rem minmax(0, 1fr) 18rem; grid-template-areas: "header header header" "nav main outline" "nav pagination outline" "nav footer outline"; }
  .page-outline { display: block; position: sticky; top: 2rem; align-self: start; }
  .page-outline-title { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.08em; }
  .page-outline ol { list-style: none; padding: 0; }
  .page-outline li[data-depth="3"] { padding-left: 1rem; }
}

a { color: var(--content-viewer-link); }

:focus-visible {
  outline: 2px solid var(--ring);
  outline-offset: 2px;
}

main > h1,
:root[data-atmina-color-scheme] main.content-viewer .prose h1 {
  color: color-mix(in oklab, var(--foreground) 80%, var(--background));
  font-family: var(--atmina-font-display);
  font-size: clamp(2.25rem, 5vw, 3rem);
  font-weight: var(--atmina-font-display-weight);
  line-height: 1.05;
  margin: 0 0 1rem;
}

main > p { margin: 0 0 1rem; }

:root[data-atmina-color-scheme] main.content-viewer .prose :is(h2, h3, h4, h5, h6) {
  font-family: var(--atmina-font-sans);
  font-weight: 600;
  line-height: 1.25;
}

.prose { max-width: 48rem; overflow-wrap: anywhere; }
.kb-markdown-image { display: block; height: auto; max-width: 100%; }
.kb-image-fallback { color: var(--muted-foreground); text-decoration: underline dotted; text-underline-offset: 0.2em; }

@media (min-width: 60rem) {
  header { margin: 0 -2rem 3rem; padding: 0 2rem; }
  .menu-jump { display: none; }
  .kb-home { font-size: 0.875rem; max-width: 16rem; }
  .docs-search input { width: 12rem; }
  header .docs-search { margin-right: -0.65rem; }
}
.prose > :first-child { margin-top: 0; }
:root[data-atmina-color-scheme] main.content-viewer .prose h2 { font-size: 1.25rem; margin: 2.25rem 0 0.75rem; }
:root[data-atmina-color-scheme] main.content-viewer .prose h3 { font-size: 1.1rem; margin: 1.75rem 0 0.5rem; }
:root[data-atmina-color-scheme] main.content-viewer .prose h4 { font-size: 1rem; margin: 1.5rem 0 0.5rem; }
:root[data-atmina-color-scheme] main.content-viewer .prose h5 { font-size: 0.95rem; margin: 1.25rem 0 0.45rem; }
:root[data-atmina-color-scheme] main.content-viewer .prose h6 { font-size: 0.875rem; margin: 1rem 0 0.4rem; }
.prose p, .prose ul, .prose ol, .prose blockquote { margin: 0 0 1rem; }
.prose ul, .prose ol { padding-left: 1.4rem; }
.prose li { margin: 0.25rem 0; }
.prose hr { border: 0; border-top: 1px solid var(--content-viewer-rule); margin: 2rem 0; }

.prose blockquote {
  border-left: 3px solid var(--content-viewer-rule);
  padding-left: 1rem;
  color: var(--muted-foreground);
}

.prose code {
  border-radius: 4px;
  padding: 0.1em 0.35em;
  font-family: var(--atmina-font-mono);
  font-size: 0.875em;
  /* Geist Mono's contextual ligatures draw "-#" and "##" as joined glyphs, so
     an inline reference such as ATM-#### reads as struck through. Code is
     shown as typed. */
  font-variant-ligatures: none;
}

.prose pre {
  border-radius: 8px;
  padding: 1rem;
  overflow-x: auto;
}

.prose table {
  border-collapse: collapse;
  display: block;
  overflow-x: auto;
  width: 100%;
  margin: 0 0 1rem;
}

.prose th, .prose td {
  border: 1px solid var(--content-viewer-rule);
  padding: 0.4rem 0.65rem;
  text-align: left;
}

.prose th { background: var(--muted); }

.prose img { max-width: 100%; height: auto; }
.kb-image-fallback { color: var(--muted-foreground); text-decoration: underline dotted; text-underline-offset: 0.2em; }

.evidence-pill { display: inline-flex; align-items: center; justify-content: center; min-width: 1.5rem; height: 1.5rem; margin: 0 0.15rem; border: 1px solid var(--content-viewer-rule); border-radius: 999px; color: var(--foreground); text-decoration: none; vertical-align: baseline; }
.evidence-pill svg { width: 0.875rem; height: 0.875rem; stroke-width: 2; }
.evidence-pill.unresolved, .memory-reference.missing, .memory-reference.invalid { color: var(--destructive); text-decoration: underline dotted; text-underline-offset: 0.2em; }
.evidence-pill.agent-session { color: var(--muted-foreground); }
.memory-reference.self-reference { color: var(--muted-foreground); text-decoration: underline dotted; text-underline-offset: 0.2em; }
.public-sources, .public-link-contexts { max-width: 48rem; margin-top: 2.5rem; padding-top: 1.25rem; border-top: 1px solid var(--content-viewer-rule); }
.public-sources h2, .public-link-context h2 { margin: 0 0 0.75rem; font-size: 1rem; }
.public-sources ol, .public-link-context ul { margin: 0; padding-left: 1.25rem; }
.public-link-context + .public-link-context { margin-top: 1.5rem; }
