
  :root { --accent: #1f4e79; --accent-soft: #e8f0f8; --sidebar-w: 280px; }
  [data-bs-theme="dark"] { --accent: #7fb2e5; --accent-soft: #1b2733; }
  html { scroll-behavior: smooth; scroll-padding-top: 1.5rem; }
  body { font-size: 0.97rem; line-height: 1.6; }
  a { color: var(--accent); }
  :focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
  main { padding: 0 2.5rem 4rem; max-width: 1100px; }
  main:focus { outline: none; }
  @media (max-width: 991px) { main { padding: 0 1rem 3rem; } }
  .cover { padding: 3rem 0 1.5rem; border-bottom: 3px solid var(--accent); margin-bottom: 1rem; }
  .cover h1 { font-weight: 800; letter-spacing: -.01em; color: var(--accent); }
  .cover .lead { max-width: 46rem; }
  .masthead { display: flex; align-items: center; gap: 1.25rem; margin-bottom: .75rem; }
  .masthead h1 { margin: 0; }
  .cover .logo { width: 7rem; height: auto; flex: none; }
  .brand img { vertical-align: -.4em; margin-right: .15rem; }
  .doc-section { padding-top: 1.5rem; margin-top: 1.5rem; border-top: 1px solid var(--bs-border-color); }
  .section-head { display: flex; align-items: baseline; gap: .8rem; margin-bottom: .8rem; }
  .section-num { font-size: 1.1rem; font-weight: 700; color: #fff; background: var(--accent); border-radius: .4rem; padding: .05rem .6rem; }
  [data-bs-theme="dark"] .section-num { color: #0d1117; }
  .section-head h2 { margin: 0; font-size: 1.6rem; font-weight: 700; }
  h3 { font-size: 1.25rem; margin-top: 1.5rem; }
  h4 { font-size: 1.05rem; margin-top: 1.2rem; }
  table { font-size: .88rem; }
  thead th { background: var(--accent-soft); color: var(--accent); white-space: nowrap; }
  code { overflow-wrap: anywhere; }
  .callout { border-left: 4px solid var(--accent); background: var(--accent-soft); padding: .8rem 1rem; margin: 1rem 0; border-radius: 0 .4rem .4rem 0; }
  .callout > :last-child { margin-bottom: 0; }
  .code { position: relative; margin: 1rem 0; }
  .code pre { margin: 0; padding: .9rem 1rem; border: 1px solid var(--bs-border-color); border-radius: .4rem; background: var(--bs-tertiary-bg); overflow-x: auto; }
  .code pre code { overflow-wrap: normal; }
  .copy-btn { position: absolute; top: .4rem; right: .4rem; font-size: .75rem; padding: .1rem .5rem; }
  html:not(.js) pre.mermaid { display: none; }
  pre.mermaid { background: transparent; border: 0; text-align: center; }
  footer { margin-top: 3rem; padding-top: 1rem; border-top: 1px solid var(--bs-border-color); color: var(--bs-secondary-color); font-size: .85rem; }
  .home main { margin: 0 auto; max-width: 1000px; padding: 0 1.25rem 4rem; }
  .home h2 { font-size: 1.35rem; font-weight: 700; margin-top: 2.2rem; }
  .doc { display: block; height: 100%; padding: 1rem 1.1rem; border: 1px solid var(--bs-border-color); border-left: 4px solid var(--accent);
    border-radius: .4rem; text-decoration: none; color: var(--bs-body-color); background: var(--bs-body-bg); }
  .doc:hover { background: var(--accent-soft); }
  .doc .t { font-weight: 700; color: var(--accent); }
  .doc .s { font-size: .8rem; color: var(--bs-secondary-color); text-transform: uppercase; letter-spacing: .05em; }
  .doc p { margin: .3rem 0 0; font-size: .92rem; }
  .skip:focus { position: fixed; top: .5rem; left: .5rem; z-index: 2000; padding: .5rem 1rem; background: var(--bs-body-bg); border: 2px solid var(--accent); }

  .topbar { position: sticky; top: 0; z-index: 4; display: flex; align-items: center; gap: .75rem; padding: .5rem 1rem;
    background: var(--bs-tertiary-bg); border-bottom: 1px solid var(--bs-border-color); }
  .topbar .brand { font-weight: 700; letter-spacing: .02em; color: var(--accent); }
  .sidebar { --nav-fg: var(--bs-body-color); --nav-muted: var(--bs-secondary-color); --nav-border: var(--bs-border-color);
    --nav-hover: var(--bs-secondary-bg); font-size: 16px; line-height: 1.5; }
  .sidebar .offcanvas-body { padding: 0; display: block; }
  .sidebar-inner { padding: 1.5rem 1rem; }
  .sidebar .top { display: flex; justify-content: space-between; align-items: center; margin-bottom: .75rem; }
  .sidebar .brand { font-weight: 700; font-size: 1.25rem; letter-spacing: .02em; color: var(--accent); text-decoration: none; }
  .sidebar .theme { font: inherit; font-size: .85rem; padding: .15rem .7rem; color: var(--nav-muted); background: transparent;
    border: 1px solid var(--nav-muted); border-radius: .35rem; cursor: pointer; }
  .sidebar .theme:hover { background: var(--nav-hover); }
  .sidebar .what { color: var(--nav-muted); font-size: .85rem; margin-bottom: 1rem; }
  .sidebar a { text-decoration: none; }
  .docnav { margin-bottom: 1rem; padding-bottom: .8rem; border-bottom: 1px solid var(--nav-border); }
  .docnav .home-link { display: block; padding: .4rem .6rem; border-radius: .35rem; font-weight: 700; font-size: 1.05rem; color: var(--accent); background: var(--accent-soft); }
  .sidebar .label { margin: .8rem .5rem .25rem; font-size: .7rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--nav-muted); }
  .docnav a.doc-link { display: block; padding: .2rem .6rem; font-size: .92rem; color: var(--nav-fg); border-radius: .3rem; }
  .docnav a.doc-link:hover { background: var(--nav-hover); }
  .docnav a.doc-link.current { font-weight: 700; color: var(--accent); }
  .sidebar .sections .label { margin-top: 0; }
  .sidebar .nav-link { display: block; padding: .3rem .5rem; border-radius: .35rem; font-size: .9rem; color: var(--nav-fg); }
  .sidebar .nav-link:hover { background: var(--nav-hover); }
  .sidebar .nav-link .num { display: inline-block; width: 2.3rem; color: var(--nav-muted); font-variant-numeric: tabular-nums; }
  .sidebar .nav-link.active { background: var(--accent-soft); color: var(--accent); font-weight: 600; }
  .gh { margin: 0 0 1rem; padding-bottom: .8rem; border-bottom: 1px solid var(--nav-border); }
  .gh a { display: block; padding: .2rem .6rem; font-size: .9rem; color: var(--nav-fg); border-radius: .3rem; }
  .gh a:hover { background: var(--nav-hover); }
  .gh a.star { margin-top: .3rem; font-weight: 600; color: var(--accent); border: 1px solid var(--accent); text-align: center; }
  @media (min-width: 992px) {
    .sidebar.offcanvas-lg { position: fixed !important; top: 0; bottom: 0; left: 0; width: var(--sidebar-w) !important; height: auto !important;
      overflow-y: auto; border-right: 1px solid var(--nav-border) !important; background: var(--bs-tertiary-bg) !important; z-index: 5; }
    body.has-pane main { margin-left: var(--sidebar-w); }
  }
  @media print {
    .sidebar, .topbar, .copy-btn, .skip { display: none !important; }
    body.has-pane main { margin-left: 0; }
    main { max-width: none; padding: 0; }
    table, figure, .code { break-inside: avoid; }
  }
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
[data-bs-theme="light"] .highlight .hll { background-color: #ffffcc }
[data-bs-theme="light"] .highlight { background: #f8f8f8; }
[data-bs-theme="light"] .highlight .c { color: #3D7B7B; font-style: italic } /* Comment */
[data-bs-theme="light"] .highlight .err { border: 1px solid #F00 } /* Error */
[data-bs-theme="light"] .highlight .k { color: #008000; font-weight: bold } /* Keyword */
[data-bs-theme="light"] .highlight .o { color: #666 } /* Operator */
[data-bs-theme="light"] .highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
[data-bs-theme="light"] .highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
[data-bs-theme="light"] .highlight .cp { color: #9C6500 } /* Comment.Preproc */
[data-bs-theme="light"] .highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
[data-bs-theme="light"] .highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
[data-bs-theme="light"] .highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
[data-bs-theme="light"] .highlight .gd { color: #A00000 } /* Generic.Deleted */
[data-bs-theme="light"] .highlight .ge { font-style: italic } /* Generic.Emph */
[data-bs-theme="light"] .highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
[data-bs-theme="light"] .highlight .gr { color: #E40000 } /* Generic.Error */
[data-bs-theme="light"] .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
[data-bs-theme="light"] .highlight .gi { color: #008400 } /* Generic.Inserted */
[data-bs-theme="light"] .highlight .go { color: #717171 } /* Generic.Output */
[data-bs-theme="light"] .highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
[data-bs-theme="light"] .highlight .gs { font-weight: bold } /* Generic.Strong */
[data-bs-theme="light"] .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
[data-bs-theme="light"] .highlight .gt { color: #04D } /* Generic.Traceback */
[data-bs-theme="light"] .highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
[data-bs-theme="light"] .highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
[data-bs-theme="light"] .highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
[data-bs-theme="light"] .highlight .kp { color: #008000 } /* Keyword.Pseudo */
[data-bs-theme="light"] .highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
[data-bs-theme="light"] .highlight .kt { color: #B00040 } /* Keyword.Type */
[data-bs-theme="light"] .highlight .m { color: #666 } /* Literal.Number */
[data-bs-theme="light"] .highlight .s { color: #BA2121 } /* Literal.String */
[data-bs-theme="light"] .highlight .na { color: #687822 } /* Name.Attribute */
[data-bs-theme="light"] .highlight .nb { color: #008000 } /* Name.Builtin */
[data-bs-theme="light"] .highlight .nc { color: #00F; font-weight: bold } /* Name.Class */
[data-bs-theme="light"] .highlight .no { color: #800 } /* Name.Constant */
[data-bs-theme="light"] .highlight .nd { color: #A2F } /* Name.Decorator */
[data-bs-theme="light"] .highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */
[data-bs-theme="light"] .highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
[data-bs-theme="light"] .highlight .nf { color: #00F } /* Name.Function */
[data-bs-theme="light"] .highlight .nl { color: #767600 } /* Name.Label */
[data-bs-theme="light"] .highlight .nn { color: #00F; font-weight: bold } /* Name.Namespace */
[data-bs-theme="light"] .highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
[data-bs-theme="light"] .highlight .nv { color: #19177C } /* Name.Variable */
[data-bs-theme="light"] .highlight .ow { color: #A2F; font-weight: bold } /* Operator.Word */
[data-bs-theme="light"] .highlight .w { color: #BBB } /* Text.Whitespace */
[data-bs-theme="light"] .highlight .mb { color: #666 } /* Literal.Number.Bin */
[data-bs-theme="light"] .highlight .mf { color: #666 } /* Literal.Number.Float */
[data-bs-theme="light"] .highlight .mh { color: #666 } /* Literal.Number.Hex */
[data-bs-theme="light"] .highlight .mi { color: #666 } /* Literal.Number.Integer */
[data-bs-theme="light"] .highlight .mo { color: #666 } /* Literal.Number.Oct */
[data-bs-theme="light"] .highlight .sa { color: #BA2121 } /* Literal.String.Affix */
[data-bs-theme="light"] .highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
[data-bs-theme="light"] .highlight .sc { color: #BA2121 } /* Literal.String.Char */
[data-bs-theme="light"] .highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
[data-bs-theme="light"] .highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
[data-bs-theme="light"] .highlight .s2 { color: #BA2121 } /* Literal.String.Double */
[data-bs-theme="light"] .highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
[data-bs-theme="light"] .highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
[data-bs-theme="light"] .highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
[data-bs-theme="light"] .highlight .sx { color: #008000 } /* Literal.String.Other */
[data-bs-theme="light"] .highlight .sr { color: #A45A77 } /* Literal.String.Regex */
[data-bs-theme="light"] .highlight .s1 { color: #BA2121 } /* Literal.String.Single */
[data-bs-theme="light"] .highlight .ss { color: #19177C } /* Literal.String.Symbol */
[data-bs-theme="light"] .highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
[data-bs-theme="light"] .highlight .fm { color: #00F } /* Name.Function.Magic */
[data-bs-theme="light"] .highlight .vc { color: #19177C } /* Name.Variable.Class */
[data-bs-theme="light"] .highlight .vg { color: #19177C } /* Name.Variable.Global */
[data-bs-theme="light"] .highlight .vi { color: #19177C } /* Name.Variable.Instance */
[data-bs-theme="light"] .highlight .vm { color: #19177C } /* Name.Variable.Magic */
[data-bs-theme="light"] .highlight .il { color: #666 } /* Literal.Number.Integer.Long */
pre { line-height: 125%; }
td.linenos .normal { color: #6e7681; background-color: #0d1117; padding-left: 5px; padding-right: 5px; }
span.linenos { color: #6e7681; background-color: #0d1117; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #e6edf3; background-color: #6e7681; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #e6edf3; background-color: #6e7681; padding-left: 5px; padding-right: 5px; }
[data-bs-theme="dark"] .highlight .hll { background-color: #6e7681 }
[data-bs-theme="dark"] .highlight { background: #0d1117; color: #E6EDF3 }
[data-bs-theme="dark"] .highlight .c { color: #8B949E; font-style: italic } /* Comment */
[data-bs-theme="dark"] .highlight .err { color: #F85149 } /* Error */
[data-bs-theme="dark"] .highlight .esc { color: #E6EDF3 } /* Escape */
[data-bs-theme="dark"] .highlight .g { color: #E6EDF3 } /* Generic */
[data-bs-theme="dark"] .highlight .k { color: #FF7B72 } /* Keyword */
[data-bs-theme="dark"] .highlight .l { color: #A5D6FF } /* Literal */
[data-bs-theme="dark"] .highlight .n { color: #E6EDF3 } /* Name */
[data-bs-theme="dark"] .highlight .o { color: #FF7B72; font-weight: bold } /* Operator */
[data-bs-theme="dark"] .highlight .x { color: #E6EDF3 } /* Other */
[data-bs-theme="dark"] .highlight .p { color: #E6EDF3 } /* Punctuation */
[data-bs-theme="dark"] .highlight .ch { color: #8B949E; font-style: italic } /* Comment.Hashbang */
[data-bs-theme="dark"] .highlight .cm { color: #8B949E; font-style: italic } /* Comment.Multiline */
[data-bs-theme="dark"] .highlight .cp { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Preproc */
[data-bs-theme="dark"] .highlight .cpf { color: #8B949E; font-style: italic } /* Comment.PreprocFile */
[data-bs-theme="dark"] .highlight .c1 { color: #8B949E; font-style: italic } /* Comment.Single */
[data-bs-theme="dark"] .highlight .cs { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Special */
[data-bs-theme="dark"] .highlight .gd { color: #FFA198; background-color: #490202 } /* Generic.Deleted */
[data-bs-theme="dark"] .highlight .ge { color: #E6EDF3; font-style: italic } /* Generic.Emph */
[data-bs-theme="dark"] .highlight .ges { color: #E6EDF3; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
[data-bs-theme="dark"] .highlight .gr { color: #FFA198 } /* Generic.Error */
[data-bs-theme="dark"] .highlight .gh { color: #79C0FF; font-weight: bold } /* Generic.Heading */
[data-bs-theme="dark"] .highlight .gi { color: #56D364; background-color: #0F5323 } /* Generic.Inserted */
[data-bs-theme="dark"] .highlight .go { color: #8B949E } /* Generic.Output */
[data-bs-theme="dark"] .highlight .gp { color: #8B949E } /* Generic.Prompt */
[data-bs-theme="dark"] .highlight .gs { color: #E6EDF3; font-weight: bold } /* Generic.Strong */
[data-bs-theme="dark"] .highlight .gu { color: #79C0FF } /* Generic.Subheading */
[data-bs-theme="dark"] .highlight .gt { color: #FF7B72 } /* Generic.Traceback */
[data-bs-theme="dark"] .highlight .g-Underline { color: #E6EDF3; text-decoration: underline } /* Generic.Underline */
[data-bs-theme="dark"] .highlight .kc { color: #79C0FF } /* Keyword.Constant */
[data-bs-theme="dark"] .highlight .kd { color: #FF7B72 } /* Keyword.Declaration */
[data-bs-theme="dark"] .highlight .kn { color: #FF7B72 } /* Keyword.Namespace */
[data-bs-theme="dark"] .highlight .kp { color: #79C0FF } /* Keyword.Pseudo */
[data-bs-theme="dark"] .highlight .kr { color: #FF7B72 } /* Keyword.Reserved */
[data-bs-theme="dark"] .highlight .kt { color: #FF7B72 } /* Keyword.Type */
[data-bs-theme="dark"] .highlight .ld { color: #79C0FF } /* Literal.Date */
[data-bs-theme="dark"] .highlight .m { color: #A5D6FF } /* Literal.Number */
[data-bs-theme="dark"] .highlight .s { color: #A5D6FF } /* Literal.String */
[data-bs-theme="dark"] .highlight .na { color: #E6EDF3 } /* Name.Attribute */
[data-bs-theme="dark"] .highlight .nb { color: #E6EDF3 } /* Name.Builtin */
[data-bs-theme="dark"] .highlight .nc { color: #F0883E; font-weight: bold } /* Name.Class */
[data-bs-theme="dark"] .highlight .no { color: #79C0FF; font-weight: bold } /* Name.Constant */
[data-bs-theme="dark"] .highlight .nd { color: #D2A8FF; font-weight: bold } /* Name.Decorator */
[data-bs-theme="dark"] .highlight .ni { color: #FFA657 } /* Name.Entity */
[data-bs-theme="dark"] .highlight .ne { color: #F0883E; font-weight: bold } /* Name.Exception */
[data-bs-theme="dark"] .highlight .nf { color: #D2A8FF; font-weight: bold } /* Name.Function */
[data-bs-theme="dark"] .highlight .nl { color: #79C0FF; font-weight: bold } /* Name.Label */
[data-bs-theme="dark"] .highlight .nn { color: #FF7B72 } /* Name.Namespace */
[data-bs-theme="dark"] .highlight .nx { color: #E6EDF3 } /* Name.Other */
[data-bs-theme="dark"] .highlight .py { color: #79C0FF } /* Name.Property */
[data-bs-theme="dark"] .highlight .nt { color: #7EE787 } /* Name.Tag */
[data-bs-theme="dark"] .highlight .nv { color: #79C0FF } /* Name.Variable */
[data-bs-theme="dark"] .highlight .ow { color: #FF7B72; font-weight: bold } /* Operator.Word */
[data-bs-theme="dark"] .highlight .pm { color: #E6EDF3 } /* Punctuation.Marker */
[data-bs-theme="dark"] .highlight .w { color: #6E7681 } /* Text.Whitespace */
[data-bs-theme="dark"] .highlight .mb { color: #A5D6FF } /* Literal.Number.Bin */
[data-bs-theme="dark"] .highlight .mf { color: #A5D6FF } /* Literal.Number.Float */
[data-bs-theme="dark"] .highlight .mh { color: #A5D6FF } /* Literal.Number.Hex */
[data-bs-theme="dark"] .highlight .mi { color: #A5D6FF } /* Literal.Number.Integer */
[data-bs-theme="dark"] .highlight .mo { color: #A5D6FF } /* Literal.Number.Oct */
[data-bs-theme="dark"] .highlight .sa { color: #79C0FF } /* Literal.String.Affix */
[data-bs-theme="dark"] .highlight .sb { color: #A5D6FF } /* Literal.String.Backtick */
[data-bs-theme="dark"] .highlight .sc { color: #A5D6FF } /* Literal.String.Char */
[data-bs-theme="dark"] .highlight .dl { color: #79C0FF } /* Literal.String.Delimiter */
[data-bs-theme="dark"] .highlight .sd { color: #A5D6FF } /* Literal.String.Doc */
[data-bs-theme="dark"] .highlight .s2 { color: #A5D6FF } /* Literal.String.Double */
[data-bs-theme="dark"] .highlight .se { color: #79C0FF } /* Literal.String.Escape */
[data-bs-theme="dark"] .highlight .sh { color: #79C0FF } /* Literal.String.Heredoc */
[data-bs-theme="dark"] .highlight .si { color: #A5D6FF } /* Literal.String.Interpol */
[data-bs-theme="dark"] .highlight .sx { color: #A5D6FF } /* Literal.String.Other */
[data-bs-theme="dark"] .highlight .sr { color: #79C0FF } /* Literal.String.Regex */
[data-bs-theme="dark"] .highlight .s1 { color: #A5D6FF } /* Literal.String.Single */
[data-bs-theme="dark"] .highlight .ss { color: #A5D6FF } /* Literal.String.Symbol */
[data-bs-theme="dark"] .highlight .bp { color: #E6EDF3 } /* Name.Builtin.Pseudo */
[data-bs-theme="dark"] .highlight .fm { color: #D2A8FF; font-weight: bold } /* Name.Function.Magic */
[data-bs-theme="dark"] .highlight .vc { color: #79C0FF } /* Name.Variable.Class */
[data-bs-theme="dark"] .highlight .vg { color: #79C0FF } /* Name.Variable.Global */
[data-bs-theme="dark"] .highlight .vi { color: #79C0FF } /* Name.Variable.Instance */
[data-bs-theme="dark"] .highlight .vm { color: #79C0FF } /* Name.Variable.Magic */
[data-bs-theme="dark"] .highlight .il { color: #A5D6FF } /* Literal.Number.Integer.Long */
