
*{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#0a1018;--panel:#0f1826;--line:#1f3048;--fg:#d6e4f2;--dim:#7f95ad;--acc:#56b8ff;--mono:'JetBrains Mono',ui-monospace,Consolas,monospace}
html{-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--fg);font-family:var(--mono);font-size:15px;line-height:1.65}
a{color:var(--acc);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:1060px;margin:0 auto;padding:0 20px}
header.site{border-bottom:1px solid var(--line);padding:14px 0;position:sticky;top:0;background:rgba(10,16,24,.93);backdrop-filter:blur(6px);z-index:10}
header.site .wrap{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.brand{font-weight:700;letter-spacing:.04em}
.brand .dot{color:var(--acc)}
nav a{color:var(--dim);margin-left:18px;font-size:13px}
nav a:hover{color:var(--fg);text-decoration:none}
.kicker{color:var(--acc);font-size:12px;letter-spacing:.22em;text-transform:uppercase;margin-bottom:6px}
.lead{color:var(--dim);font-size:13.5px;margin-bottom:18px;max-width:78ch}
section{padding:54px 0;border-bottom:1px solid var(--line)}
h1{font-size:clamp(21px,4.5vw,32px);font-weight:700;line-height:1.35;letter-spacing:-.01em}
h2{font-size:20px;margin-bottom:8px}
.sub{color:var(--dim);margin-top:14px;max-width:72ch}
.btns{margin-top:26px;display:flex;gap:12px;flex-wrap:wrap}
.btn{display:inline-block;border:1px solid var(--acc);color:var(--acc);padding:10px 18px;font-size:13px;letter-spacing:.06em}
.btn:hover{background:var(--acc);color:#061220;text-decoration:none}
.btn.ghost{border-color:var(--line);color:var(--dim)}
.btn.ghost:hover{background:var(--panel);color:var(--fg)}
.grid{display:grid;gap:14px}
.g3{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
.g2{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
.card{border:1px solid var(--line);background:var(--panel);padding:18px;display:block;color:var(--fg)}
a.card:hover{border-color:var(--acc);text-decoration:none}
.card .name{font-weight:700;color:var(--acc)}
.card .meta{color:var(--dim);font-size:12px;margin:6px 0 10px}
.card p{font-size:13px;color:var(--fg);opacity:.9}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}
.stat{border:1px solid var(--line);background:var(--panel);padding:18px}
.stat .v{font-size:26px;font-weight:700;color:var(--acc)}
.stat .l{font-size:12px;color:var(--dim);margin-top:4px}
.pipe{border:1px solid var(--line);background:var(--panel);padding:6px 0;overflow-x:auto}
.step{display:flex;gap:16px;padding:14px 20px;border-bottom:1px dashed var(--line);align-items:baseline}
.step:last-child{border-bottom:none}
.step .n{color:var(--acc);font-weight:700;white-space:nowrap}
.step .t b{color:#fff}
.step .t{font-size:14px}
.step .t .d{color:var(--dim);font-size:13px;display:block;margin-top:2px}
.algos .card b{color:#fff}
.algos .card .where{display:block;margin-top:10px;font-size:12px}
table.flist{width:100%;border-collapse:collapse;font-size:13.5px}
table.flist td{padding:7px 10px;border-bottom:1px solid var(--line)}
table.flist td.r{text-align:right;color:var(--dim);white-space:nowrap}
table.flist tr:hover{background:var(--panel)}
.modhead{display:flex;justify-content:space-between;align-items:baseline;margin:34px 0 10px;flex-wrap:wrap;gap:6px}
.modhead h2{color:var(--acc)}
.modhead .mm{color:var(--dim);font-size:12px}
footer{padding:40px 0;color:var(--dim);font-size:12.5px;line-height:1.9}
.tagrow{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.tag{border:1px solid var(--line);color:var(--dim);font-size:12px;padding:4px 10px}
.crumbs{font-size:13px;color:var(--dim);margin-bottom:18px}
.codebox{border:1px solid var(--line);background:#0c141f;overflow-x:auto;font-size:12.8px;line-height:1.55}
.codebox pre{padding:14px 16px}
.hl .linenos{color:#3d5066;user-select:none}
.doc{border:1px solid var(--line);background:var(--panel);padding:22px;display:block;color:var(--fg)}
.doc:hover{border-color:var(--acc);text-decoration:none}
.doc .t{font-weight:700;color:var(--acc);font-size:16px}
.doc .m{color:var(--dim);font-size:12px;margin:8px 0 10px}
.doc p{font-size:13px;opacity:.9}
.doc .act{display:inline-block;margin-top:14px;border:1px solid var(--acc);color:var(--acc);padding:7px 14px;font-size:12px;letter-spacing:.06em}
.hl a{color:inherit;text-decoration:none}
@media(max-width:640px){nav a{margin-left:12px}section{padding:40px 0}}

pre { line-height: 125%; }
td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: #aaaaaa; 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; }
.hl .hll { background-color: #404040 }
.hl { background: #202020; color: #D0D0D0 }
.hl .c { color: #ABABAB; font-style: italic } /* Comment */
.hl .err { color: #A61717; background-color: #E3D2D2 } /* Error */
.hl .esc { color: #D0D0D0 } /* Escape */
.hl .g { color: #D0D0D0 } /* Generic */
.hl .k { color: #6EBF26; font-weight: bold } /* Keyword */
.hl .l { color: #D0D0D0 } /* Literal */
.hl .n { color: #D0D0D0 } /* Name */
.hl .o { color: #D0D0D0 } /* Operator */
.hl .x { color: #D0D0D0 } /* Other */
.hl .p { color: #D0D0D0 } /* Punctuation */
.hl .ch { color: #ABABAB; font-style: italic } /* Comment.Hashbang */
.hl .cm { color: #ABABAB; font-style: italic } /* Comment.Multiline */
.hl .cp { color: #FF3A3A; font-weight: bold } /* Comment.Preproc */
.hl .cpf { color: #ABABAB; font-style: italic } /* Comment.PreprocFile */
.hl .c1 { color: #ABABAB; font-style: italic } /* Comment.Single */
.hl .cs { color: #E50808; font-weight: bold; background-color: #520000 } /* Comment.Special */
.hl .gd { color: #FF3A3A } /* Generic.Deleted */
.hl .ge { color: #D0D0D0; font-style: italic } /* Generic.Emph */
.hl .ges { color: #D0D0D0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.hl .gr { color: #FF3A3A } /* Generic.Error */
.hl .gh { color: #FFF; font-weight: bold } /* Generic.Heading */
.hl .gi { color: #589819 } /* Generic.Inserted */
.hl .go { color: #CCC } /* Generic.Output */
.hl .gp { color: #AAA } /* Generic.Prompt */
.hl .gs { color: #D0D0D0; font-weight: bold } /* Generic.Strong */
.hl .gu { color: #FFF; text-decoration: underline } /* Generic.Subheading */
.hl .gt { color: #FF3A3A } /* Generic.Traceback */
.hl .kc { color: #6EBF26; font-weight: bold } /* Keyword.Constant */
.hl .kd { color: #6EBF26; font-weight: bold } /* Keyword.Declaration */
.hl .kn { color: #6EBF26; font-weight: bold } /* Keyword.Namespace */
.hl .kp { color: #6EBF26 } /* Keyword.Pseudo */
.hl .kr { color: #6EBF26; font-weight: bold } /* Keyword.Reserved */
.hl .kt { color: #6EBF26; font-weight: bold } /* Keyword.Type */
.hl .ld { color: #D0D0D0 } /* Literal.Date */
.hl .m { color: #51B2FD } /* Literal.Number */
.hl .s { color: #ED9D13 } /* Literal.String */
.hl .na { color: #BBB } /* Name.Attribute */
.hl .nb { color: #2FBCCD } /* Name.Builtin */
.hl .nc { color: #71ADFF; text-decoration: underline } /* Name.Class */
.hl .no { color: #40FFFF } /* Name.Constant */
.hl .nd { color: #FFA500 } /* Name.Decorator */
.hl .ni { color: #D0D0D0 } /* Name.Entity */
.hl .ne { color: #BBB } /* Name.Exception */
.hl .nf { color: #71ADFF } /* Name.Function */
.hl .nl { color: #D0D0D0 } /* Name.Label */
.hl .nn { color: #71ADFF; text-decoration: underline } /* Name.Namespace */
.hl .nx { color: #D0D0D0 } /* Name.Other */
.hl .py { color: #D0D0D0 } /* Name.Property */
.hl .nt { color: #6EBF26; font-weight: bold } /* Name.Tag */
.hl .nv { color: #40FFFF } /* Name.Variable */
.hl .ow { color: #6EBF26; font-weight: bold } /* Operator.Word */
.hl .pm { color: #D0D0D0 } /* Punctuation.Marker */
.hl .w { color: #666 } /* Text.Whitespace */
.hl .mb { color: #51B2FD } /* Literal.Number.Bin */
.hl .mf { color: #51B2FD } /* Literal.Number.Float */
.hl .mh { color: #51B2FD } /* Literal.Number.Hex */
.hl .mi { color: #51B2FD } /* Literal.Number.Integer */
.hl .mo { color: #51B2FD } /* Literal.Number.Oct */
.hl .sa { color: #ED9D13 } /* Literal.String.Affix */
.hl .sb { color: #ED9D13 } /* Literal.String.Backtick */
.hl .sc { color: #ED9D13 } /* Literal.String.Char */
.hl .dl { color: #ED9D13 } /* Literal.String.Delimiter */
.hl .sd { color: #ED9D13 } /* Literal.String.Doc */
.hl .s2 { color: #ED9D13 } /* Literal.String.Double */
.hl .se { color: #ED9D13 } /* Literal.String.Escape */
.hl .sh { color: #ED9D13 } /* Literal.String.Heredoc */
.hl .si { color: #ED9D13 } /* Literal.String.Interpol */
.hl .sx { color: #FFA500 } /* Literal.String.Other */
.hl .sr { color: #ED9D13 } /* Literal.String.Regex */
.hl .s1 { color: #ED9D13 } /* Literal.String.Single */
.hl .ss { color: #ED9D13 } /* Literal.String.Symbol */
.hl .bp { color: #2FBCCD } /* Name.Builtin.Pseudo */
.hl .fm { color: #71ADFF } /* Name.Function.Magic */
.hl .vc { color: #40FFFF } /* Name.Variable.Class */
.hl .vg { color: #40FFFF } /* Name.Variable.Global */
.hl .vi { color: #40FFFF } /* Name.Variable.Instance */
.hl .vm { color: #40FFFF } /* Name.Variable.Magic */
.hl .il { color: #51B2FD } /* Literal.Number.Integer.Long */