/* Shared by every page: colour tokens, the sidebar shell and the home page. Demo pages add their own styles. */
:root {
  --bg: #0d0f13; --panel: #161920; --line: #2a2f3a; --text: #e4e7ec;
  --muted: #8f97a5; --accent: #5aa9ff; --warm: #ff8a3d; --good: #5fd38d; --hover: #1e222b;
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--text);
       font: 14px/1.45 system-ui, -apple-system, "Segoe UI", sans-serif; }
a { color: var(--accent); }

/* ---- shell: sidebar + page ---- */
.site { display: grid; grid-template-columns: 230px minmax(0, 1fr); min-height: 100vh; }
.site-nav { position: sticky; top: 0; height: 100vh; overflow-y: auto; display: flex; flex-direction: column;
            background: var(--panel); border-right: 1px solid var(--line); padding: 18px 12px; }
.nav-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 0 8px 14px; }
.brand { color: var(--text); font-weight: 650; font-size: 16px; text-decoration: none; }
.nav-toggle { display: none; background: #232835; color: var(--text); border: 1px solid var(--line);
              border-radius: 6px; padding: 6px 12px; font: inherit; cursor: pointer; }
.nav-body { display: flex; flex-direction: column; gap: 2px; flex: 1; }
.nav-body a { color: var(--text); text-decoration: none; padding: 7px 10px; border-radius: 6px; }
.nav-body a:hover { background: var(--hover); }
.nav-body a[aria-current="page"] { background: #1f2a3a; color: var(--accent); }
.nav-section { color: var(--muted); font-size: 11px; font-weight: 600; text-transform: uppercase;
               letter-spacing: .05em; padding: 16px 10px 6px; }
.nav-foot { margin-top: auto; padding: 16px 10px 0; color: var(--muted); font-size: 11.5px; }

@media (max-width: 900px) {
  .site { grid-template-columns: 1fr; }
  .site-nav { height: auto; z-index: 10; border-right: 0; border-bottom: 1px solid var(--line); padding: 10px 16px; }
  .nav-head { padding: 0; }
  .nav-toggle { display: block; }
  .nav-body { display: none; padding-top: 10px; }
  .site-nav.open .nav-body { display: flex; }
  .nav-foot { padding-top: 10px; }
}

/* ---- home page ---- */
.page { max-width: 860px; padding: 40px 32px; }
@media (max-width: 900px) { .page { padding: 24px 16px; } }
.page h1 { font-size: 26px; margin: 0 0 8px; }
.page .lede { color: var(--muted); font-size: 15px; margin: 0 0 28px; max-width: 640px; }
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 14px; }
.card-link { display: block; background: var(--panel); border: 1px solid var(--line); border-radius: 10px;
             padding: 16px; color: var(--text); text-decoration: none; }
.card-link:hover { border-color: var(--accent); }
.card-link h2 { font-size: 15px; margin: 0 0 6px; }
.card-link p { color: var(--muted); font-size: 13px; margin: 0; }
.notice { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; margin: 0 0 24px;
          background: var(--panel); color: var(--muted); font-size: 13px; }
.notice.bad { border-color: #7a3434; color: #ffb3b3; }
