/* ── api.css ── */
/* Page-scoped styles for /api — relocated from inline style= attrs.
   Prefix is `apidoc-` to avoid colliding with the global `.api-search*` classes. */

.apidoc-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin: 1.5rem 0;
}

.apidoc-version-badge {
  font-size: .65rem;
  background: #fbbf24;
  color: #1c1917;
  padding: .05rem .35rem;
  border-radius: 3px;
  margin-left: .25rem;
}

.apidoc-mb-1 {
  margin-bottom: 1rem;
}

.apidoc-mt-half {
  margin-top: .5rem;
}

.apidoc-mt-1-5 {
  margin-top: 1.5rem;
}

.apidoc-mt-2-5 {
  margin-top: 2.5rem;
}

.apidoc-hint {
  margin-top: .75rem;
  color: #94a3b8;
}

/* ── case-studies-sna-labs.css ── */
/* Page-scoped styles for /case-studies/sna-labs — extracted from inline
   style= attributes (separation-of-concerns rule). Visually identical to
   the prior inline declarations; relocated only. */

.sna-hero-section {
  background: var(--bg-dark);
  color: var(--code-text);
}

.sna-hero-container {
  max-width: 860px;
}

.sna-kicker {
  font-size: .85rem;
  color: #a8a29e;
  text-transform: uppercase;
  letter-spacing: .1em;
  margin-bottom: .5rem;
  font-weight: 600;
}

.sna-title {
  font-size: 2.1rem;
  margin-bottom: .5rem;
  color: #fff;
  letter-spacing: -.01em;
}

.sna-subtitle {
  font-size: 1.05rem;
  max-width: 780px;
  color: var(--text-light);
  font-style: italic;
}

.sna-body-container {
  max-width: 860px;
  line-height: 1.75;
  font-size: 1rem;
}

.sna-h2 {
  margin: 2rem 0 .75rem;
}

.sna-h3 {
  margin: 1.5rem 0 .5rem;
}

.sna-list {
  margin: .5rem 0 1rem;
  padding-left: 1.4rem;
}

.sna-callout {
  margin: 1.25rem 0;
  padding: 1rem 1.25rem;
  background: rgba(251, 191, 36, .06);
  border: 1px solid rgba(251, 191, 36, .25);
  border-left: 3px solid #f59e0b;
  border-radius: 8px;
}

.sna-callout-strong {
  color: #fde68a;
}

.sna-callout-p {
  margin: .5rem 0 0;
  line-height: 1.6;
}

.sna-table-mb {
  margin-bottom: 1rem;
}

.sna-table-mb-lg {
  margin-bottom: 1.25rem;
}

.sna-note {
  color: var(--text-muted);
  font-size: .92rem;
  margin-bottom: 1.5rem;
}

.sna-note-sm {
  color: var(--text-muted);
  font-size: .9rem;
}

.sna-takeaways {
  margin: .5rem 0 1.25rem;
  padding-left: 1.4rem;
  line-height: 1.85;
}

.sna-closing {
  font-style: italic;
  color: var(--text-muted);
  margin-top: 1rem;
}

.sna-hr {
  margin: 2.5rem 0 1.25rem;
  border: 0;
  border-top: 1px solid var(--border);
}

/* ── coroutines.css ── */
/* Page-scoped styles for /coroutines — relocated from inline style= attrs. */

.coro-h2 {
  margin: 2rem 0 .5rem;
}

.coro-h2-section {
  margin: 2.5rem 0 .5rem;
}

.coro-h3 {
  margin: 1.5rem 0 .5rem;
}

.coro-mb {
  margin-bottom: 1.5rem;
}

.coro-mt {
  margin-top: 1.5rem;
}

.coro-mt-half {
  margin-top: .5rem;
}

.coro-callout {
  margin: 1rem 0 1.5rem;
}

.coro-m-0 {
  margin: 0;
}

.coro-note {
  color: var(--text-muted);
  font-size: .92rem;
}

.coro-warn-list {
  margin: .5rem 0 0;
  padding-left: 1.25rem;
}

/* ── deployment.css ── */
/* Page-scoped styles for /deployment — relocated from inline style= attrs. */

.deploy-h2 {
  margin: 2rem 0 .5rem;
}

.deploy-h2-first {
  margin: 1.5rem 0 .5rem;
}

.deploy-h3 {
  margin-top: 1rem;
}

.deploy-lead {
  color: var(--text-muted);
  margin-bottom: .75rem;
}

.deploy-table {
  margin-bottom: 1.5rem;
}

/* ── design-tradeoffs.css ── */
/* Page-scoped styles for /design-tradeoffs — extracted from inline
   style= attributes (separation-of-concerns rule). Visually identical
   to the prior inline declarations; relocated only. */

.tradeoffs-section {
  background: var(--bg-dark);
  color: var(--code-text);
}

.tradeoffs-container {
  max-width: 920px;
}

.tradeoffs-title {
  font-size: 2rem;
  margin-bottom: .5rem;
  color: #fff;
}

.tradeoffs-desc {
  font-size: 1.05rem;
  max-width: 760px;
  color: var(--text-light);
}

.tradeoffs-reading {
  margin-top: 1.75rem;
  padding: 1rem 1.25rem;
  background: var(--code-bg);
  border: 1px solid var(--border-dark);
  border-left: 3px solid var(--accent);
  border-radius: var(--radius);
  font-size: .92rem;
  color: var(--text-light);
}

.tradeoffs-strong-light {
  color: #fff;
}

.tradeoffs-link {
  color: var(--accent);
}

.tradeoffs-block {
  margin-top: 2.5rem;
}

.tradeoffs-h2 {
  font-size: 1.3rem;
  margin-bottom: .75rem;
  color: #fff;
}

.tradeoffs-p {
  color: var(--text-light);
  line-height: 1.7;
  font-size: .95rem;
}

.tradeoffs-p-sm {
  color: var(--text-light);
  line-height: 1.7;
  font-size: .95rem;
  margin-top: .5rem;
}

.tradeoffs-list {
  color: var(--text-light);
  line-height: 1.7;
  font-size: .92rem;
  margin-top: .5rem;
  padding-left: 1.5rem;
}

.tradeoffs-closing {
  margin-top: 3rem;
  padding: 1.5rem;
  background: var(--code-bg);
  border: 1px solid var(--border-dark);
  border-radius: var(--radius);
}

.tradeoffs-closing-h2 {
  font-size: 1.15rem;
  margin-bottom: .75rem;
  color: #fff;
}

.tradeoffs-closing-p {
  color: var(--text-light);
  line-height: 1.7;
  font-size: .92rem;
}

.tradeoffs-closing-p-sm {
  color: var(--text-light);
  line-height: 1.7;
  font-size: .92rem;
  margin-top: .5rem;
}

/* ── getting-started.css ── */
/* Page-scoped styles for /getting-started — extracted from inline
   style= attributes (separation-of-concerns rule). Visually identical
   to the prior inline declarations; relocated only. */

.gs-learn-cta {
  margin: 1.25rem 0;
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}

.gs-learn-cta-end {
  margin: 2.5rem 0 0;
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}

.gs-muted-sm {
  font-size: .85rem;
  color: var(--text-muted);
}

.gs-tldr {
  margin: 1.25rem 0 2rem;
  padding: 1.1rem 1.3rem;
  border-left: 4px solid var(--accent);
}

.gs-tldr-head {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin-bottom: .6rem;
  font-weight: 700;
  color: var(--text);
}

.gs-tldr-bolt {
  font-size: 1.1rem;
}

.gs-tldr-platforms {
  margin-left: auto;
  font-size: .7rem;
  color: var(--text-muted);
  font-weight: 500;
}

.gs-qs-block {
  background: #0c0a09;
  color: #e7e5e4;
  padding: .8rem 1rem;
  margin: 0;
}

.gs-qs-line {
  display: flex;
  align-items: center;
  gap: .5rem;
  font-family: var(--font-mono);
  font-size: .92rem;
}

.gs-qs-prompt {
  color: #a8a29e;
}

.gs-qs-cmd {
  flex: 1;
}

.gs-qs-copy {
  background: rgba(245, 158, 11, .15);
  color: var(--accent);
  border: 1px solid rgba(245, 158, 11, .3);
  padding: .25rem .6rem;
  border-radius: 4px;
  font-size: .75rem;
  cursor: pointer;
}

.gs-tldr-foot {
  margin: .65rem 0 0;
  font-size: .82rem;
  color: var(--text-muted);
}

.gs-tldr-foot-link {
  color: var(--accent);
  font-weight: 600;
}

.gs-arch-compare {
  margin: 2rem 0 2.5rem;
}

.gs-arch-fail {
  margin-top: .75rem;
  font-size: .78rem;
  color: #991b1b;
  font-weight: 600;
}

.gs-arch-win {
  margin-top: .75rem;
  font-size: .78rem;
  color: #166534;
  font-weight: 600;
}

.gs-stepnav {
  display: flex;
  gap: .5rem;
  flex-wrap: wrap;
  margin: 1.5rem 0;
  font-size: .82rem;
}

.gs-step-link {
  padding: .4rem .8rem;
  background: var(--bg-alt);
  border: 1px solid var(--border);
  border-radius: 5px;
  color: var(--text);
  text-decoration: none;
}

.gs-h2-mt {
  margin-top: 2rem;
}

.gs-h2-mt-lg {
  margin-top: 2.5rem;
}

.gs-risk-list {
  margin: .5rem 0 0;
  padding-left: 1.25rem;
}

.gs-risk-item {
  margin-bottom: .35rem;
}

.gs-callout-mt-sm {
  margin: .5rem 0 0;
}

.gs-inline-code-block {
  display: block;
  margin-top: .5rem;
  padding: .5rem .75rem;
  background: rgba(0, 0, 0, .05);
  border-radius: 4px;
  font-size: .85rem;
}

.gs-p-mt {
  margin-top: 1.5rem;
}

.gs-scaffold-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1rem;
  margin-top: 1rem;
}

.gs-scaffold-card {
  border: 1px solid var(--border);
  padding: 1.25rem;
}

.gs-card-title {
  margin-bottom: .5rem;
}

.gs-card-desc {
  color: var(--text-muted);
  font-size: .85rem;
  margin-bottom: .75rem;
}

.gs-howitworks {
  background: var(--bg-alt);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.5rem;
  margin-top: 2rem;
}

.gs-howitworks-h3 {
  margin-bottom: .75rem;
}

.gs-howitworks-p {
  color: var(--text-muted);
  font-size: .9rem;
  line-height: 1.7;
  margin-bottom: .75rem;
}

.gs-table-sm {
  font-size: .85rem;
}

.gs-howitworks-foot {
  color: var(--text-muted);
  font-size: .85rem;
  margin-top: .75rem;
}

.gs-p-mt-sm {
  margin-top: .75rem;
}

.gs-visit-list {
  line-height: 2;
  margin-left: 1.5rem;
}

.gs-mt-1 {
  margin-top: 1rem;
}

.gs-mt-15 {
  margin-top: 1.5rem;
}

.gs-mb-1 {
  margin-bottom: 1rem;
}

/* ── home.css ── */
/* ==========================================================================
   home.css — page-scoped styles for template/pages/home.php
   Auto-loaded by template/_head.php when $page === 'home'.
   Extracted from inline style="" attributes + the inline <style> blocks
   that previously lived in home.php (separation-of-concerns refactor).
   All .home-* classes; .qs-* classes preserve the names the markup + JS use.
   ========================================================================== */

/* --- Hero ---------------------------------------------------------------- */
.home-hero-tagline {
  font-size: 1.4rem; color: #fef3c7; font-weight: 600;
  margin: .5rem auto .75rem; position: relative;
}
.home-hero-sub {
  font-size: .95rem; color: #94a3b8; margin-top: .25rem;
}
.home-hero-why {
  font-size: .78rem; color: #a8a29e; margin-top: .5rem;
}
.home-hero-why a { color: #fde68a; text-decoration: none; }

.home-hero-code-pre { margin: 0; }
.home-hero-code-pre code {
  background: transparent; padding: 0; font-size: .82rem;
}

/* --- Benchmark intro + table -------------------------------------------- */
.home-bench-intro {
  text-align: center; color: #a8a29e; font-size: .92rem;
  margin: 1.75rem auto 0; max-width: 640px; position: relative;
}
.home-bench-method-code {
  background: rgba(255,255,255,.05); padding: .1rem .25rem; border-radius: 3px;
}

.home-bench-table-wrap { margin-top: 1.5rem; position: relative; }
.home-bench-table {
  margin: 0 auto; border-collapse: collapse; font-size: .78rem;
  max-width: 740px; width: 100%;
}
.home-bench-table tr { border-bottom: 1px solid rgba(255,255,255,.06); }
.home-bench-table tr.home-bench-head { border-bottom: 1px solid rgba(255,255,255,.1); }
.home-bench-table tr.home-bench-group { background: rgba(255,255,255,.02); }
.home-bench-table th {
  text-align: right; padding: .4rem .6rem; color: #94a3b8; font-weight: 600;
}
.home-bench-table th.home-bench-th-left { text-align: left; }
.home-bench-table td { padding: .35rem .6rem; color: #94a3b8; }
.home-bench-table td.home-bench-dash { color: #64748b; }
.home-bench-table td.home-bench-num { text-align: right; }
.home-bench-table td.home-bench-group-label {
  color: #64748b; font-size: .65rem; text-transform: uppercase;
  letter-spacing: .05em; font-weight: 700;
}
.home-bench-table td.home-bench-group-label .home-bench-group-note {
  font-weight: 400; text-transform: none; letter-spacing: 0;
}
.home-bench-table tr.home-bench-row-zeal td { padding: .4rem .6rem; }
.home-bench-table td.home-bench-zeal {
  color: var(--accent); font-weight: 700;
}
.home-bench-table td.home-bench-zeal .home-bench-tag {
  color: #64748b; font-weight: 400; font-size: .68rem;
}
.home-bench-table tr.home-bench-row-express td { padding: .4rem .6rem; }
.home-bench-table td.home-bench-express { color: #e2e8f0; }
.home-bench-table td.home-bench-express .home-bench-tag {
  color: #64748b; font-size: .68rem;
}
.home-bench-table tr.home-bench-row-other td { padding: .3rem .6rem; }
.home-bench-table td.home-bench-other-name { color: #64748b; }
.home-bench-table td.home-bench-other-num {
  text-align: right; color: #94a3b8; font-weight: 500; font-size: .75rem;
}

.home-bench-callout {
  text-align: center; margin-top: 1.25rem; padding: .85rem 1rem;
  background: rgba(245,158,11,.05); border: 1px solid rgba(245,158,11,.2);
  border-radius: 8px; max-width: 760px; margin-left: auto; margin-right: auto;
}
.home-bench-callout p {
  margin: 0 0 .55rem 0; color: #e7e5e4; font-size: .85rem; line-height: 1.55;
}
.home-bench-callout p.home-bench-callout-last { margin: 0; }
.home-bench-callout strong { color: var(--accent); }
.home-bench-callout strong.home-bench-callout-alt { color: #e2e8f0; }
.home-bench-perflink {
  text-align: center; color: #94a3b8; font-size: .85rem; margin-top: 1.25rem;
}
.home-bench-perflink a {
  color: var(--accent); font-weight: 600; text-decoration: none;
}

/* --- Live AI chat source-toggle ----------------------------------------- */
.home-chat-source-hint { margin-left: .5rem; color: var(--text-muted); }
.home-chat-src-hidden { display: none; }

/* --- Section background utilities --------------------------------------- */
.home-section-altbg { background: var(--bg-alt); }
.home-section-darkbg {
  background: var(--bg-dark); color: #e2e8f0;
  padding-top: 3rem; padding-bottom: 3rem;
}
.home-section-migrate { background: var(--bg-dark); color: var(--code-text); }
.home-section-return { background: var(--bg-alt); }

/* --- Quick Start: fresh-machine one-liner ------------------------------- */
.home-qs-fresh {
  background: rgba(245,158,11,.06); border: 1px solid rgba(245,158,11,.22);
  border-radius: 8px; padding: 1rem 1.25rem; margin-bottom: 2rem;
  max-width: 760px; margin-left: auto; margin-right: auto;
}
.home-qs-fresh-head {
  display: flex; align-items: center; gap: .5rem; margin-bottom: .6rem;
}
.home-qs-fresh-head .home-qs-fresh-bolt { font-size: 1.1rem; }
.home-qs-fresh-head strong { color: #fff; }
.home-qs-fresh-block {
  background: #0c0a09; padding: .65rem .85rem; margin: 0; border: none;
}
.home-qs-fresh-line {
  display: flex; align-items: center; gap: .5rem;
  font-family: var(--font-mono); font-size: .88rem;
}
.home-qs-fresh-prompt { color: #a8a29e; }
.home-qs-fresh-cmd { flex: 1; color: #e7e5e4; }
.home-qs-fresh-copy {
  background: rgba(245,158,11,.18); color: var(--accent);
  border: 1px solid rgba(245,158,11,.32); padding: .2rem .55rem;
  border-radius: 4px; font-size: .72rem; cursor: pointer;
}
.home-qs-fresh-note {
  margin: .55rem 0 0; font-size: .78rem; color: #94a3b8;
}
.home-qs-fresh-note a { color: var(--accent); }

/* --- Quick Start: header + tabs ----------------------------------------- */
.home-qs-header {
  display: flex; align-items: baseline; justify-content: space-between;
  margin-bottom: 1.5rem; flex-wrap: wrap; gap: 1rem;
}
.home-qs-header h2 { color: #fff; margin-bottom: .25rem; }
.home-qs-header p { color: #94a3b8; margin: 0; }
.qs-tabs { display: flex; gap: .5rem; font-size: .78rem; }
.qs-out-code { color: #fbbf24; }

/* --- Quick Start tabs / panels / blocks (was inline <style>) ------------- */
.qs-tabs button {
  background: transparent; color: #94a3b8; border: 1px solid rgba(255,255,255,.1);
  padding: .45rem .85rem; border-radius: 6px; cursor: pointer; font-weight: 500;
  font-size: .78rem; transition: all .15s; font-family: var(--font);
}
.qs-tabs button:hover { color: #e2e8f0; border-color: rgba(255,255,255,.2); }
.qs-tabs button.active {
  background: var(--accent); border-color: var(--accent); color: #fff;
}
.qs-panel { display: none; }
.qs-panel.active { display: block; }
.qs-block {
  background: #0a0f1e; border: 1px solid rgba(255,255,255,.06);
  border-radius: 10px; padding: 1.25rem 1.5rem; margin-bottom: 1rem;
  font-family: var(--font-mono); font-size: .87rem;
}
.qs-line {
  display: flex; align-items: center; gap: .85rem;
  padding: .35rem 0; line-height: 1.6;
}
.qs-num {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border-radius: 50%;
  background: rgba(99,102,241,.15); color: var(--accent);
  font-size: .72rem; font-weight: 700; flex-shrink: 0;
  font-family: var(--font);
}
.qs-arrow {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; color: #10b981; font-size: 1rem; flex-shrink: 0;
}
.qs-prompt { color: #64748b; margin-right: .4rem; user-select: none; }
.qs-cmd { color: #e2e8f0; flex: 1; word-break: break-all; }
.qs-out { color: #94a3b8; font-style: italic; flex: 1; }
.qs-out a { color: #818cf8; }
.qs-copy {
  background: transparent; color: #64748b; border: 1px solid rgba(255,255,255,.08);
  padding: .15rem .55rem; border-radius: 4px; cursor: pointer; font-size: .68rem;
  font-family: var(--font); transition: all .15s;
}
.qs-copy:hover { color: #e2e8f0; border-color: rgba(255,255,255,.2); background: rgba(255,255,255,.03); }
.qs-copy.copied { color: #10b981; border-color: #10b981; }
.qs-note {
  color: #64748b; font-size: .82rem; padding: .25rem .5rem;
}
.qs-note code { background: rgba(255,255,255,.05); padding: .1rem .35rem; border-radius: 3px; color: #cbd5e1; }
.qs-note a { color: #818cf8; }
.qs-prereq {
  margin-top: 1.5rem; padding-top: 1.5rem;
  border-top: 1px solid rgba(255,255,255,.05);
  display: flex; align-items: center; gap: .6rem; flex-wrap: wrap;
  font-size: .78rem;
}
.qs-prereq-label { color: #64748b; text-transform: uppercase; letter-spacing: .05em; font-size: .68rem; font-weight: 700; margin-right: .25rem; }
.qs-prereq code {
  background: rgba(255,255,255,.04); color: #cbd5e1;
  padding: .2rem .55rem; border-radius: 4px; font-size: .76rem;
  border: 1px solid rgba(255,255,255,.06);
}
.qs-prereq-link { color: #818cf8; margin-left: auto; font-weight: 500; }
@media (max-width: 768px) {
  .qs-tabs { width: 100%; flex-wrap: wrap; }
  .qs-tabs button { flex: 1; min-width: 0; padding: .4rem .5rem; font-size: .72rem; }
  .qs-prereq-link { margin-left: 0; width: 100%; margin-top: .5rem; }
  .qs-cmd { font-size: .78rem; }
}

/* --- Migrate-your-PHP-codebase section ---------------------------------- */
.home-migrate-wrap { max-width: 860px; }
.home-migrate-title { color: #fff; }
.home-migrate-desc { color: var(--text-light); }
.home-migrate-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; margin-top: 1.5rem;
}
.home-migrate-card {
  background: var(--code-bg); border: 1px solid var(--border-dark);
  border-radius: var(--radius); padding: 1.25rem;
}
.home-migrate-card.home-migrate-card-accent { border-color: var(--accent); }
.home-migrate-card h3 {
  font-size: .95rem; margin-bottom: .75rem;
}
.home-migrate-card.home-migrate-card-today h3 { color: var(--danger); }
.home-migrate-card.home-migrate-card-accent h3 { color: var(--accent); }
.home-migrate-card.home-migrate-card-accent h3 code { font-size: 1rem; }
.home-migrate-card p {
  font-size: .85rem; color: var(--text-light); margin: 0;
}
.home-migrate-card.home-migrate-card-accent p { color: var(--code-text); }
.home-migrate-ladder {
  margin-top: 1.5rem; color: var(--text-light); font-size: .92rem; line-height: 1.65;
}
.home-migrate-ladder a { color: var(--accent); }
.home-migrate-cta { text-align: center; margin-top: 1.75rem; }
.home-migrate-cta .home-migrate-cta-wp { margin-left: .5rem; }

/* --- Return-conventions table ------------------------------------------- */
.home-return-table { margin-top: 1.5rem; }
.home-return-table th.home-return-col-return { width: 30%; }
.home-return-table th.home-return-col-result { width: 35%; }
.home-return-foot { margin-top: 1rem; text-align: center; }

/* ── http.css ── */
/* Page-scoped styles for /http — relocated from inline style= attrs. */

.http-table {
  margin-bottom: 2rem;
}

/* ── learn-ai-chat.css ── */
/* Page-scoped styles for /learn/ai-chat — relocated from inline style= attrs. */

.lai-srclink {
  color: #f59e0b;
}

/* ── learn-auth.css ── */
/* Page-scoped styles for /learn/auth — relocated from inline style= attrs. */

.lauth-srclink {
  color: #f59e0b;
}

.lauth-details {
  margin-top: .75rem;
}

.lauth-login-form {
  margin-top: .5rem;
}

.lauth-note {
  font-size: .9rem;
  color: var(--text-muted);
}

/* ── learn-htmx.css ── */
/* Page-scoped styles for /learn/htmx — relocated from inline style= attrs. */

.lhx-center {
  text-align: center;
  padding: 1rem 0;
}

.lhx-h2 {
  margin-top: 2rem;
}

.lhx-h3 {
  margin-top: 1.25rem;
}

.lhx-list {
  margin: .5rem 0;
  line-height: 1.7;
}

.lhx-tryit-line {
  margin: .25rem 0;
}

.lhx-tryit-note {
  margin: .25rem 0;
  font-size: .85rem;
  color: #9ca3af;
}

.lhx-link {
  color: #fbbf24;
}

.lhx-note {
  margin-top: .75rem;
  font-size: .9rem;
  color: #9ca3af;
}

/* ── learn-mental-model.css ── */
/* Page-scoped styles for /learn/mental-model — relocated from inline style= attrs. */

.lmm-modes {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin: 1.25rem 0;
}

.lmm-mode-title {
  text-align: center;
  margin: 0 0 .5rem;
  font-size: .82rem;
  text-transform: uppercase;
  letter-spacing: .05em;
}

.lmm-mode-title-coro {
  color: var(--accent, #f59e0b);
}

.lmm-mode-title-super {
  color: #78716c;
}

.lmm-mode-caption {
  text-align: center;
  color: #78716c;
  font-size: .82rem;
  margin: .35rem 0 0;
}

/* ── learn-notes.css ── */
/* Page-scoped styles for /learn/notes — relocated from inline style= attrs. */

.lnotes-details {
  margin-top: 1rem;
}

.lnotes-reg-form {
  margin-top: .75rem;
}

.lnotes-srclink {
  color: #f59e0b;
}

/* ── learn-react-vs-php.css ── */
/* Page-scoped styles for /learn/react-vs-php — relocated from inline style= attrs. */

.rvp-table {
  width: 100%;
  border-collapse: collapse;
  margin: 1rem 0;
  font-size: .88rem;
}

.rvp-table thead tr {
  border-bottom: 2px solid #e7e5e4;
  text-align: left;
}

.rvp-table tbody tr {
  border-bottom: 1px solid #f5f5f4;
}

.rvp-table tbody tr:last-child {
  border-bottom: none;
}

.rvp-table th,
.rvp-table td {
  padding: .55rem;
}

/* ── learn-sessions.css ── */
/* Page-scoped styles for /learn/sessions — relocated from inline style= attrs. */

.lsess-center {
  text-align: center;
  padding: 1.25rem 0;
}

.lsess-counter-status {
  margin-top: .85rem;
}

.lsess-popup-line {
  margin: .85rem 0 0;
  font-size: .85rem;
  color: #78716c;
}

.lsess-h3 {
  margin-top: 1.5rem;
}

.lsess-list {
  margin: .5rem 0;
  line-height: 1.7;
}

/* ── learn-tictactoe.css ── */
/* Page-scoped styles for /learn/tictactoe — relocated from inline style= attrs. */

.lttt-details {
  margin-top: 1rem;
}

.lttt-reg-form {
  margin-top: .75rem;
}

.lttt-note {
  color: #78716c;
  font-size: .85rem;
  margin-top: .25rem;
}

/* ── learn-websocket.css ── */
/* Page-scoped styles for /learn/websocket — relocated from inline style= attrs. */

.lws-subtitle {
  margin-top: -.5rem;
  color: #78716c;
  font-size: .88rem;
}

/* ── learn.css ── */
/* Page-scoped styles for /learn — relocated from inline style= attrs. */

.lidx-modes {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin: 1.25rem 0;
}

.lidx-mode-title {
  text-align: center;
  margin: 0 0 .5rem;
  font-size: .82rem;
  text-transform: uppercase;
  letter-spacing: .05em;
}

.lidx-mode-title-trad {
  color: #78716c;
}

.lidx-mode-title-zeal {
  color: var(--accent, #f59e0b);
}

.lidx-mode-caption {
  text-align: center;
  color: #78716c;
  font-size: .82rem;
  margin: .35rem 0 0;
}

/* ── legacy-apps.css ── */
/* Page-scoped styles for /legacy-apps (extracted from inline style= attrs + <style> block). */

.legacy-callout-proof {
  margin: 1.25rem 0;
  border-left: 4px solid #fbbf24;
}

.legacy-screenshots {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1rem;
  margin: 2rem 0;
}

.legacy-shot {
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-md);
}

.legacy-shot-img {
  width: 100%;
  display: block;
}

.legacy-shot-caption {
  padding: .5rem .75rem;
  background: var(--bg-alt);
  font-size: .82rem;
  color: var(--text-muted);
  text-align: center;
}

.legacy-callout-zero { margin-bottom: 2rem; }

/* margin-top heading rhythm utilities (extracted from inline style="margin-top:N"). */
.legacy-mt-sm { margin-top: 1.25rem; }
.legacy-mt-md { margin-top: 1.5rem; }
.legacy-mt-prose { margin-top: 1rem; }
.legacy-mt-lg { margin-top: 2rem; }
.legacy-mt-xl { margin-top: 2.5rem; }
.legacy-mt-half { margin-top: .5rem; }
.legacy-mt-prose-mb { margin: 1rem 0; }

.legacy-list-loose { line-height: 1.7; }
.legacy-list-steps { line-height: 2; }

.legacy-two-col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin: 1rem 0;
}

.legacy-shim-note {
  margin: 1.25rem 0;
  padding: 1rem 1.25rem;
  background: rgba(251,191,36,.06);
  border: 1px solid rgba(251,191,36,.25);
  border-left: 3px solid var(--accent);
  border-radius: var(--radius);
}

.legacy-shim-note-title { color: #fde68a; }

.legacy-shim-note-body {
  margin: .5rem 0 0;
  line-height: 1.6;
}

/* AI config converter UI */
.converter-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  margin: 1.5rem 0;
}

.legacy-convert-left { border-right: 1px solid var(--border); }

.legacy-convert-bar {
  padding: .5rem .75rem;
  background: var(--bg-alt);
  font-size: .78rem;
  font-weight: 600;
  color: var(--text-muted);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.legacy-convert-preset {
  font-size: .75rem;
  padding: .2rem .4rem;
  border-radius: 4px;
  border: 1px solid var(--border);
  background: var(--bg);
}

.legacy-convert-input {
  width: 100%;
  min-height: 280px;
  border: none;
  padding: .75rem;
  font-family: var(--font-mono);
  font-size: .82rem;
  background: var(--code-bg);
  color: var(--code-text);
  resize: vertical;
  outline: none;
}

.legacy-convert-actions {
  padding: .5rem .75rem;
  background: var(--bg-alt);
  display: flex;
  align-items: center;
  gap: .5rem;
}

.legacy-convert-btn {
  padding: .4rem 1.2rem;
  background: var(--accent);
  color: #fff;
  border: none;
  border-radius: 5px;
  cursor: pointer;
  font-size: .82rem;
  font-weight: 600;
}

.legacy-convert-status {
  font-size: .75rem;
  color: var(--text-muted);
}

.legacy-convert-copy {
  font-size: .72rem;
  padding: .15rem .5rem;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--bg);
  cursor: pointer;
  color: var(--text-muted);
}

.legacy-convert-output {
  min-height: 280px;
  padding: .75rem;
  margin: 0;
  font-family: var(--font-mono);
  font-size: .82rem;
  background: var(--code-bg);
  color: var(--code-text);
  overflow: auto;
  white-space: pre-wrap;
}

.legacy-convert-placeholder { color: var(--text-muted); }

.legacy-convert-footer {
  padding: .5rem .75rem;
  background: var(--bg-alt);
  font-size: .72rem;
  color: var(--text-muted);
}

@media (max-width: 768px) {
  .converter-split { grid-template-columns: 1fr; }
}

/* ── middleware.css ── */
/* Page-scoped styles for /middleware — relocated from inline style= attrs. */

.mw-h2 {
  margin: 1.5rem 0 .5rem;
}

.mw-h2-demos {
  margin: 2rem 0 .5rem;
}

.mw-h2-ref {
  margin: 2.5rem 0 .5rem;
}

.mw-h3 {
  margin-top: 1.5rem;
}

.mw-table {
  margin-bottom: 2rem;
}

.mw-note {
  color: var(--text-muted);
  font-size: .9rem;
  margin-top: .75rem;
}

.mw-note-custom {
  color: var(--text-muted);
  font-size: .92rem;
}

/* ── migration.css ── */
/* Page-scoped styles for /migration — extracted from inline style=
   attributes and the inline <style> block (separation-of-concerns
   rule). Visually identical to the prior inline declarations. */

.mig-container {
  max-width: 960px;
}

.mig-h2-mt-lg {
  margin-top: 2.5rem;
}

.mig-h2-mt-xl {
  margin-top: 3rem;
}

.mig-stack-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.25rem;
  margin-top: 1rem;
}

.mig-qs-pad {
  padding: 1.25rem 1.5rem;
}

.mig-qs-pad-accent {
  padding: 1.25rem 1.5rem;
  border-color: var(--accent);
}

.mig-qs-h3 {
  margin: 0 0 .85rem;
  font-size: 1rem;
}

.mig-qs-h3-accent {
  margin: 0 0 .85rem;
  font-size: 1rem;
  color: var(--accent);
}

.mig-list-plain {
  list-style: none;
  padding: 0;
  margin: 0;
  font-size: .88rem;
  line-height: 1.8;
}

.mig-stack-note {
  margin: .75rem 0 0;
  color: #a8a29e;
  font-size: .78rem;
}

.mig-cmd-center {
  text-align: center;
  margin: .5rem 0 1rem;
}

.mig-cmd-pill {
  font-size: 1.05rem;
  color: var(--accent);
  background: rgba(245, 158, 11, .1);
  padding: .4rem .8rem;
  border-radius: 6px;
}

.mig-ladder-intro {
  margin-bottom: 1.25rem;
}

.mig-ladder-grid {
  display: grid;
  gap: .75rem;
}

.mig-rung {
  padding: 1rem 1.25rem;
}

.mig-rung-accent {
  border-color: var(--accent);
}

.mig-rung-row {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 1rem;
  align-items: start;
}

.mig-rung-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: rgba(245, 158, 11, .18);
  color: var(--accent);
  font-size: .85rem;
  font-weight: 700;
  flex-shrink: 0;
}

.mig-rung-title {
  font-weight: 700;
  font-size: 1rem;
  margin-bottom: .4rem;
}

.mig-rung-code {
  display: block;
  font-size: .78rem;
  color: #fde68a;
  background: rgba(245, 158, 11, .08);
  padding: .4rem .6rem;
  border-radius: 4px;
  margin-bottom: .5rem;
}

.mig-rung-desc {
  margin: 0 0 .4rem;
  font-size: .88rem;
  line-height: 1.6;
}

.mig-rung-wins {
  margin: .25rem 0 0;
  font-size: .82rem;
  line-height: 1.5;
}

.mig-rung-wins-label {
  color: var(--accent);
}

.mig-rung-tradeoff {
  margin: .15rem 0 0;
  font-size: .82rem;
  line-height: 1.5;
  color: #a8a29e;
}

.mig-bridge-list {
  line-height: 1.8;
  margin-top: .5rem;
}

.mig-h3-sub {
  margin-top: 1.5rem;
  font-size: 1.05rem;
}

.mig-p-mt {
  margin-top: 1rem;
}

.mig-p-mt-sm {
  margin-top: .75rem;
}

.mig-fit-h3 {
  margin: 0 0 .75rem;
  font-size: 1rem;
}

.mig-fit-h3-accent {
  margin: 0 0 .75rem;
  font-size: 1rem;
  color: var(--accent);
}

/* Live config converter */
.mig-converter-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  margin: 1.5rem 0;
}

.mig-converter-left {
  border-right: 1px solid var(--border);
}

.mig-converter-bar {
  padding: .5rem .75rem;
  background: var(--bg-alt);
  font-size: .78rem;
  font-weight: 600;
  color: var(--text-muted);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.mig-converter-preset {
  font-size: .75rem;
  padding: .2rem .4rem;
  border-radius: 4px;
  border: 1px solid var(--border);
  background: var(--bg);
}

.mig-converter-input {
  width: 100%;
  min-height: 280px;
  border: none;
  padding: .75rem;
  font-family: var(--font-mono);
  font-size: .82rem;
  background: var(--code-bg);
  color: var(--code-text);
  resize: vertical;
  outline: none;
}

.mig-converter-actions {
  padding: .5rem .75rem;
  background: var(--bg-alt);
  display: flex;
  align-items: center;
  gap: .5rem;
}

.mig-converter-btn {
  padding: .4rem 1.2rem;
  background: var(--accent);
  color: #fff;
  border: none;
  border-radius: 5px;
  cursor: pointer;
  font-size: .82rem;
  font-weight: 600;
}

.mig-converter-status {
  font-size: .75rem;
  color: var(--text-muted);
}

.mig-converter-copy {
  font-size: .72rem;
  padding: .15rem .5rem;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--bg);
  cursor: pointer;
  color: var(--text-muted);
}

.mig-converter-output {
  min-height: 280px;
  padding: .75rem;
  margin: 0;
  font-family: var(--font-mono);
  font-size: .82rem;
  background: var(--code-bg);
  color: var(--code-text);
  overflow: auto;
  white-space: pre-wrap;
}

.mig-converter-placeholder {
  color: var(--text-muted);
}

.mig-converter-foot {
  padding: .5rem .75rem;
  background: var(--bg-alt);
  font-size: .72rem;
  color: var(--text-muted);
}

.mig-cta-center {
  text-align: center;
}

.mig-cta-spaced {
  margin-left: .5rem;
}

.mig-closing-note {
  text-align: center;
  margin-top: 1.5rem;
  color: #a8a29e;
  font-size: .85rem;
}

@media (max-width: 768px) {
  .mig-converter-split {
    grid-template-columns: 1fr;
  }
}

/* ── performance.css ── */
/* Page-scoped styles for /performance (extracted from inline style= attrs). */

.perf-container { max-width: 900px; }

.perf-method { margin-top: 2rem; }

.perf-inline-code {
  background: rgba(255,255,255,.05);
  padding: .1rem .3rem;
  border-radius: 3px;
}

.perf-inline-code-06 {
  background: rgba(255,255,255,.06);
  padding: .1rem .3rem;
  border-radius: 3px;
}

.perf-h2 { margin: 3rem 0 1rem; }

.perf-findings-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}

.perf-finding { padding: 1.1rem 1.3rem; }

.perf-finding-title {
  margin: 0 0 .35rem;
  color: var(--accent);
  font-size: 1.05rem;
}

.perf-finding-lead {
  margin: 0 0 .4rem;
  color: #cbd5e1;
  font-size: .92rem;
  line-height: 1.55;
}

.perf-finding-note {
  margin: .4rem 0 0;
  color: #94a3b8;
  font-size: .82rem;
}

.perf-finding-table {
  margin: .4rem 0;
  font-size: .88rem;
}

.perf-right { text-align: right; }

.perf-cell-accent {
  text-align: right;
  color: var(--accent);
  font-weight: 700;
}

.perf-cell-accent-plain {
  text-align: right;
  color: var(--accent);
}

.perf-cell-muted {
  text-align: right;
  color: #64748b;
}

.perf-cell-dim {
  text-align: right;
  color: #94a3b8;
}

.perf-cell-amber {
  text-align: right;
  color: #fde68a;
  font-weight: 700;
}

.perf-cell-danger {
  text-align: right;
  color: #fca5a5;
  font-weight: 700;
}

.perf-cell-danger-plain {
  text-align: right;
  color: #fca5a5;
}

.perf-lead {
  margin-bottom: 1rem;
  color: #cbd5e1;
}

.perf-th-left { text-align: left; }

.perf-row-tint { background: rgba(255,255,255,.02); }

.perf-section-label {
  color: #94a3b8;
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .05em;
  font-weight: 700;
}

.perf-row-highlight { background: rgba(245,158,11,.05); }

.perf-row-sweep-peak { background: rgba(245,158,11,.06); }

.perf-cell-zeal {
  text-align: right;
  color: var(--accent);
  font-weight: 700;
}

.perf-zeal-name {
  color: var(--accent);
  font-weight: 700;
}

.perf-zeal-sub {
  color: #64748b;
  font-weight: 400;
  font-size: .78rem;
}

.perf-express-sub {
  color: #64748b;
  font-size: .78rem;
}

.perf-totals {
  text-align: center;
  margin-top: .75rem;
  color: #94a3b8;
  font-size: .85rem;
}

.perf-accent-strong { color: var(--accent); }

.perf-para-note {
  margin: .6rem 0 0;
  color: #94a3b8;
  font-size: .85rem;
}

.perf-link-accent { color: var(--accent); }

.perf-h3-spaced { margin-top: 1.5rem; }

.perf-h3-spaced-2 { margin-top: 2rem; }

.perf-sweep-table { margin: .5rem 0; }

.perf-sweep-summary {
  margin-top: .75rem;
  color: #94a3b8;
  font-size: .85rem;
  line-height: 1.55;
}

.perf-csv-links {
  margin-top: .5rem;
  color: #64748b;
  font-size: .78rem;
}

.perf-recipe-note {
  margin: .5rem 0;
  color: #94a3b8;
  font-size: .88rem;
}

.perf-install-lead {
  margin: .5rem 0 .75rem;
  color: #cbd5e1;
}

.perf-install-note {
  margin: .5rem 0 0;
  color: #94a3b8;
  font-size: .85rem;
}

.perf-caveats {
  color: #cbd5e1;
  line-height: 1.7;
  padding-left: 1.2rem;
  margin: 0;
}

.perf-source {
  margin-top: 2rem;
  color: #64748b;
  font-size: .85rem;
}

/* ── responses.css ── */
/* Page-scoped styles for /responses — relocated from inline style= attrs. */

.resp-mt-half {
  margin-top: .5rem;
}

.resp-mt-1 {
  margin-top: 1rem;
}

.resp-mt-2 {
  margin-top: 2rem;
}

.resp-mt-2-5 {
  margin-top: 2.5rem;
}

.resp-mb-1 {
  margin-bottom: 1rem;
}

.resp-mb-2 {
  margin-bottom: 2rem;
}

.resp-m-0 {
  margin: 0;
}

.resp-callout {
  margin: 1rem 0 1.5rem;
}

.resp-list {
  margin-left: 1.2rem;
}

.resp-note {
  margin-top: .5rem;
  color: var(--text-muted);
  font-size: .92rem;
}

/* ── routing.css ── */
/* Page-scoped styles for /routing — relocated from inline style= attrs. */

.route-h2 {
  margin: 2rem 0 .5rem;
}

.route-h2-section {
  margin: 2.5rem 0 .5rem;
}

.route-h2-top {
  margin-top: 2.5rem;
}

.route-mb-1 {
  margin-bottom: 1rem;
}

.route-mb-1-5 {
  margin-bottom: 1.5rem;
}

.route-mt-1 {
  margin-top: 1rem;
}

.route-my-sm {
  margin: .75rem 0;
}

.route-my-1 {
  margin: 1rem 0;
}

/* ── sessions.css ── */
/* Page-scoped styles for /sessions — relocated from inline style= attrs. */

.sess-h2 {
  margin: 1.5rem 0 .5rem;
}

.sess-h2-sub {
  margin: 1.75rem 0 .5rem;
}

.sess-table-mb-2 {
  margin-bottom: 2rem;
}

.sess-table-mb-1 {
  margin-bottom: 1rem;
}

.sess-mt {
  margin-top: 1.5rem;
}

.sess-note {
  font-size: .9rem;
  color: var(--text-muted);
}

.sess-muted {
  color: var(--text-muted);
}

/* ── store.css ── */
/* Page-scoped styles for /store — relocated from inline style= attrs. */

.store-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
  margin-bottom: 2rem;
}

.store-grid-tight {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
  margin-bottom: 1.5rem;
}

.store-h2 {
  margin: 2rem 0 .5rem;
}

.store-h2-section {
  margin: 2.5rem 0 .5rem;
}

.store-h3 {
  margin: 1.5rem 0 .5rem;
}

.store-lead {
  color: var(--text-muted);
  margin-bottom: 1.5rem;
}

.store-lead-tight {
  color: var(--text-muted);
  margin-bottom: 1rem;
}

.store-mt-1 {
  margin-top: 1rem;
}

.store-mt {
  margin-top: 1.5rem;
}

.store-col-good {
  color: var(--success);
  margin-bottom: .75rem;
}

.store-col-bad {
  color: var(--danger);
  margin-bottom: .75rem;
}

.store-col-list {
  font-size: .9rem;
  line-height: 1.8;
  color: var(--text-muted);
}

/* ── streaming.css ── */
/* Page-scoped styles for /streaming — relocated from inline style= attrs. */

.stream-note {
  margin-top: .5rem;
  color: var(--text-muted);
  font-size: .92rem;
}

.stream-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
  margin-bottom: 2rem;
}

.stream-h2 {
  margin: 2rem 0 1rem;
}

.stream-h2-section {
  margin: 2.5rem 0 1rem;
}

.stream-case {
  margin-bottom: 1.5rem;
}

.stream-case-body {
  padding: 1rem;
  background: var(--bg-alt);
}

.stream-case-hint {
  font-size: .85rem;
  margin-bottom: .75rem;
}

.stream-out {
  margin-top: .75rem;
  font-family: var(--font-mono);
  font-size: .78rem;
  padding: .75rem;
  background: var(--code-bg);
  color: var(--code-text);
  border-radius: 6px;
  min-height: 60px;
}

.stream-sse-out {
  margin-top: .75rem;
}

.stream-mt {
  margin-top: 1.5rem;
}

/* ── templates.css ── */
/* Page-scoped styles for /templates — relocated from inline style= attrs. */

.tpl-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin: 1.5rem 0;
}

.tpl-mb {
  margin-bottom: 1.5rem;
}

.tpl-version-badge {
  font-size: .65rem;
  background: #fbbf24;
  color: #1c1917;
  padding: .05rem .35rem;
  border-radius: 3px;
  margin-left: .25rem;
}

.tpl-note {
  color: var(--text-muted);
  font-size: .92rem;
}

.tpl-mt {
  margin-top: 1.5rem;
}

.tpl-fragment-list {
  margin: .5rem 0;
  line-height: 1.7;
}

.tpl-tryit-line {
  margin: .25rem 0;
}

.tpl-tryit-link {
  color: #fbbf24;
}

.tpl-tryit-note {
  margin: .25rem 0;
  font-size: .85rem;
  color: #9ca3af;
}

.tpl-why-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1rem;
  margin-top: 1rem;
}

.tpl-why-card {
  padding: 1rem;
}

/* ── vs-fpm.css ── */
/* Page-scoped styles for /vs-fpm (extracted from inline style= attrs). */

.vsfpm-container { max-width: 900px; }

.vsfpm-tldr { margin-top: 1.5rem; }

.vsfpm-h2 { margin: 3rem 0 1rem; }

.vsfpm-arch-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}

.vsfpm-arch-card { padding: 1.1rem 1.3rem; }

.vsfpm-arch-card-accent {
  padding: 1.1rem 1.3rem;
  border-left: 3px solid var(--accent);
}

.vsfpm-arch-title-muted {
  margin: 0 0 .5rem;
  color: #94a3b8;
  font-size: 1.05rem;
}

.vsfpm-arch-title-accent {
  margin: 0 0 .5rem;
  color: var(--accent);
  font-size: 1.05rem;
}

.vsfpm-arch-pre {
  background: rgba(0,0,0,.35);
  padding: .7rem;
  border-radius: 6px;
  font-size: .78rem;
  line-height: 1.4;
  margin: .4rem 0;
  overflow-x: auto;
}

.vsfpm-arch-note-muted {
  margin: .5rem 0 0;
  color: #94a3b8;
  font-size: .82rem;
}

.vsfpm-arch-note-light {
  margin: .5rem 0 0;
  color: #cbd5e1;
  font-size: .82rem;
}

.vsfpm-lead { color: #cbd5e1; margin-bottom: 1rem; }

.vsfpm-lead-muted {
  color: #94a3b8;
  margin-bottom: 1rem;
  font-size: .85rem;
}

.vsfpm-th-left { text-align: left; }

.vsfpm-right { text-align: right; }

.vsfpm-cell-accent {
  text-align: right;
  color: var(--accent);
  font-weight: 700;
}

.vsfpm-row-tint { background: rgba(255,255,255,.02); }

.vsfpm-note-muted {
  margin: .7rem 0 0;
  color: #94a3b8;
  font-size: .85rem;
}

.vsfpm-prose {
  color: #cbd5e1;
  line-height: 1.65;
}

.vsfpm-prose-mt {
  color: #cbd5e1;
  line-height: 1.65;
  margin-top: 1rem;
}

.vsfpm-prose-mt-07 {
  color: #cbd5e1;
  line-height: 1.65;
  margin-top: .7rem;
}

.vsfpm-cell-amber {
  text-align: right;
  color: #fde68a;
}

.vsfpm-cell-amber-bold {
  text-align: right;
  color: #fde68a;
  font-weight: 700;
}

.vsfpm-cell-danger {
  text-align: right;
  color: #fca5a5;
}

.vsfpm-cell-danger-bold {
  text-align: right;
  color: #fca5a5;
  font-weight: 700;
}

.vsfpm-h2-tight { margin: 2.5rem 0 1rem; }

.vsfpm-callout-amber {
  margin-top: 1rem;
  padding: 1rem 1.2rem;
  background: rgba(251,191,36,.06);
  border: 1px solid rgba(251,191,36,.25);
  border-left: 3px solid var(--accent);
  border-radius: var(--radius);
}

.vsfpm-callout-amber-title { color: #fde68a; }

.vsfpm-callout-amber-body {
  margin: .5rem 0 0;
  color: #cbd5e1;
  line-height: 1.6;
  font-size: .95rem;
}

.vsfpm-callout-amber-foot {
  margin: .6rem 0 0;
  color: #94a3b8;
  line-height: 1.55;
  font-size: .85rem;
}

.vsfpm-foot-light { color: #cbd5e1; }

.vsfpm-list {
  color: #cbd5e1;
  line-height: 1.7;
  font-size: .95rem;
  margin-top: .5rem;
  padding-left: 1.5rem;
}

.vsfpm-callout-slate {
  margin-top: 1rem;
  padding: 1rem 1.2rem;
  background: rgba(148,163,184,.08);
  border-left: 3px solid #94a3b8;
  border-radius: var(--radius);
}

.vsfpm-callout-slate-title { color: #cbd5e1; }

.vsfpm-callout-slate-body {
  margin: .5rem 0 0;
  color: #94a3b8;
  line-height: 1.55;
  font-size: .9rem;
}

.vsfpm-prose-mt-08 {
  color: #cbd5e1;
  line-height: 1.65;
  margin-top: .8rem;
}

.vsfpm-proof {
  margin: 3rem 0 0;
  padding: 1.2rem 1.4rem;
  background: rgba(251,191,36,.05);
  border: 1px solid rgba(251,191,36,.25);
  border-left: 3px solid var(--accent);
  border-radius: var(--radius);
}

.vsfpm-proof-title {
  margin: 0 0 .5rem;
  color: #fde68a;
  font-size: 1.1rem;
}

.vsfpm-proof-body {
  margin: 0;
  color: #cbd5e1;
  line-height: 1.6;
}

.vsfpm-link-accent { color: var(--accent); }

.vsfpm-link-accent-strong {
  color: var(--accent);
  font-weight: 600;
}

.vsfpm-h3-accent {
  margin: 2rem 0 .75rem;
  color: var(--accent);
}

.vsfpm-inline-code {
  background: rgba(255,255,255,.06);
  padding: .1rem .3rem;
  border-radius: 3px;
}

.vsfpm-next-list {
  color: #cbd5e1;
  line-height: 1.8;
  font-size: .95rem;
}

/* ── websocket.css ── */
/* Page-scoped styles for /websocket — relocated from inline style= attrs. */

.ws-h2 {
  margin: 2rem 0 1rem;
}

.ws-panel-hint {
  font-size: .85rem;
  margin-bottom: .75rem;
}

/* ── why-zealphp.css ── */
/* Page-scoped styles for /why-zealphp (extracted from inline style= attrs). */

.why-section {
  background: var(--bg-dark);
  color: var(--code-text);
}

.why-container { max-width: 860px; }

.why-title {
  font-size: 2rem;
  margin-bottom: .5rem;
  color: #fff;
}

.why-desc {
  font-size: 1.1rem;
  max-width: 700px;
  color: var(--text-light);
}

.why-proof {
  margin-top: 1.5rem;
  padding: 1rem 1.25rem;
  background: rgba(251,191,36,.08);
  border-left: 4px solid #fbbf24;
  border-radius: 6px;
  font-size: .9rem;
  color: var(--text-light);
}

.why-proof-strong { color: #fde68a; }

.why-proof-link { color: #fde68a; }

.why-proof-link-bold {
  color: #fde68a;
  font-weight: 600;
}

.why-block { margin-top: 2.5rem; }

.why-h2 {
  font-size: 1.3rem;
  margin-bottom: 1rem;
  color: #fff;
}

.why-h2-wide {
  font-size: 1.3rem;
  margin-bottom: 1.25rem;
  color: #fff;
}

.why-prose {
  color: var(--text-light);
  line-height: 1.7;
  font-size: .95rem;
}

.why-prose-spaced {
  color: var(--text-light);
  line-height: 1.7;
  font-size: .95rem;
  margin-top: .75rem;
}

.why-cards {
  display: grid;
  gap: 1rem;
}

.why-card {
  background: var(--code-bg);
  border: 1px solid var(--border-dark);
  border-radius: var(--radius);
  padding: 1.25rem;
}

.why-card-title {
  color: var(--accent);
  font-size: .95rem;
  margin-bottom: .5rem;
}

.why-card-body {
  color: var(--text-light);
  font-size: .88rem;
  line-height: 1.6;
  margin: 0;
}

.why-note {
  color: var(--text-light);
  font-size: .88rem;
  margin-bottom: 1.25rem;
}

.why-table-scroll { overflow-x: auto; }

.why-compare-table {
  font-size: .82rem;
  min-width: 700px;
}

/* Scoped under .why-compare-table so this beats the global `.ztable th`
 * rule (both carry the .ztable class on the <table>): `.ztable th` is
 * specificity (0,1,1) and was overriding this header's dark background
 * back to the light --bg-alt, leaving light --code-text on a light
 * surface (invisible). `.why-compare-table th.why-compare-th` is
 * (0,2,1), so the dark code-style header wins. */
.why-compare-table th.why-compare-th {
  background: var(--code-bg);
  color: var(--code-text);
  border-bottom: 2px solid rgba(255,255,255,.15);
}

.why-zealphp-row { background: rgba(245,158,11,.08); }

.why-zealphp-cell {
  color: var(--accent);
  font-weight: 700;
}

.why-octane-intro {
  color: var(--text-light);
  font-size: .88rem;
  line-height: 1.6;
  margin-bottom: 1rem;
}

.why-octane-list {
  color: var(--text-light);
  font-size: .88rem;
  line-height: 1.6;
  padding-left: 1.25rem;
  margin-bottom: 1rem;
}

.why-octane-list-item { margin-bottom: .5rem; }

.why-strong-white { color: #fff; }

.why-octane-outro {
  color: var(--text-light);
  font-size: .88rem;
  line-height: 1.6;
}

.why-ladder-intro {
  color: var(--text-light);
  font-size: .88rem;
  line-height: 1.6;
  margin-bottom: 1rem;
}

.why-ladder {
  display: grid;
  gap: .5rem;
  margin-bottom: 2rem;
}

.why-ladder-step {
  display: flex;
  gap: .75rem;
  align-items: baseline;
  font-size: .88rem;
}

.why-ladder-num {
  color: var(--accent);
  font-weight: 700;
  min-width: 1.5rem;
}

.why-ladder-text { color: var(--text-light); }

.why-ladder-text-final {
  color: #fff;
  font-weight: 600;
}

.why-fit-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
}

.why-fit-good {
  color: var(--success);
  font-size: .9rem;
  margin-bottom: .75rem;
}

.why-fit-bad {
  color: var(--danger);
  font-size: .9rem;
  margin-bottom: .75rem;
}

.why-fit-list {
  list-style: none;
  padding: 0;
  margin: 0;
  font-size: .85rem;
  color: var(--text-light);
}

.why-fit-item { padding: .3rem 0; }

.why-fit-note {
  margin-top: .85rem;
  color: var(--text-muted);
  font-size: .78rem;
  line-height: 1.55;
}

.why-fit-note-strong { color: #cbd5e1; }

.why-fit-note-link { color: var(--accent); }

.why-bench-intro {
  color: var(--text-light);
  font-size: .88rem;
  line-height: 1.6;
}

.why-bench-method { margin-top: 1rem; }

.why-bench-inline-code {
  background: rgba(255,255,255,.05);
  padding: .1rem .25rem;
  border-radius: 3px;
}

.why-bench { margin-top: 1rem; }

.why-bench-reproduce {
  color: var(--text-muted);
  font-size: .82rem;
  margin-top: 1rem;
}

.why-bench-reproduce-code {
  background: var(--code-bg);
  padding: .2rem .5rem;
  border-radius: 4px;
  color: var(--text-light);
}

.why-cta {
  margin-top: 3rem;
  text-align: center;
  padding: 2rem 0;
  border-top: 1px solid var(--border-dark);
}

.why-cta-title {
  font-size: 1.2rem;
  margin-bottom: .5rem;
  color: #fff;
}

.why-cta-desc {
  color: var(--text-light);
  margin-bottom: 1.25rem;
}

.why-cta-btn {
  font-size: 1rem;
  padding: .75rem 2rem;
}

