:root{--c-keyword:#c792ea;--c-string:#a5e075;--c-number:#f78c6c;--c-function:#82aaff;--c-type:#ffcb6b;--c-variable:#f07178;--c-meta:#89ddff;--c-operator:#89ddff;--c-comment:#6b7a9e;--c-punct:#a6accd;--c-literal:#f78c6c;--c-attr:#ffcb6b;--c-deleted:#ff6b6b;--c-added:#57d9a3}:root[data-theme=dark-read]{--c-keyword:#e2a6dd;--c-string:#b9cf8c;--c-number:#f0a970;--c-function:#e8c06a;--c-type:#e6c98c;--c-variable:#e79b8f;--c-meta:#8fd0cf;--c-operator:#8fd0cf;--c-comment:#8c7f66;--c-punct:#c4b7a0;--c-literal:#f0a970;--c-attr:#e6c98c;--c-deleted:#e78a72;--c-added:#74cf9a}:root[data-theme=sepia]{--c-keyword:#7b3fa0;--c-string:#3f6f2f;--c-number:#a3520a;--c-function:#1f6b86;--c-type:#8a5a08;--c-variable:#a8442f;--c-meta:#2f6f74;--c-operator:#6b5f45;--c-comment:#8a7f68;--c-punct:#5b5240;--c-literal:#a3520a;--c-attr:#8a5a08;--c-deleted:#b13a22;--c-added:#3f8f5f}:root[data-theme=light]{--c-keyword:#a626a4;--c-string:#0a7d3a;--c-number:#b45309;--c-function:#0550ae;--c-type:#953800;--c-variable:#b31d28;--c-meta:#0e7490;--c-operator:#5c6684;--c-comment:#6b7280;--c-punct:#42506f;--c-literal:#b45309;--c-attr:#953800;--c-deleted:#b31d28;--c-added:#047857}.hljs{color:var(--ink);background:transparent}.hljs-comment,.hljs-quote{color:var(--c-comment);font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:var(--c-keyword)}.hljs-string,.hljs-doctag,.hljs-template-string,.hljs-regexp{color:var(--c-string)}.hljs-number,.hljs-literal{color:var(--c-number)}.hljs-title,.hljs-title.function_,.hljs-section,.hljs-name,.hljs-selector-id{color:var(--c-function)}.hljs-title.class_,.hljs-class .hljs-title,.hljs-type,.hljs-built_in,.hljs-builtin-name{color:var(--c-type)}.hljs-variable,.hljs-template-variable,.hljs-attr,.hljs-selector-attr,.hljs-property{color:var(--c-variable)}.hljs-attribute{color:var(--c-attr)}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-symbol,.hljs-bullet,.hljs-link{color:var(--c-meta)}.hljs-operator,.hljs-punctuation{color:var(--c-operator)}.hljs-params{color:var(--c-punct)}.hljs-deletion{color:var(--c-deleted);background:color-mix(in srgb,var(--c-deleted) 12%,transparent)}.hljs-addition{color:var(--c-added);background:color-mix(in srgb,var(--c-added) 12%,transparent)}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-formula,.hljs-code{color:var(--c-string)}.hljs-tag{color:var(--c-punct)}.hljs-tag .hljs-name{color:var(--c-keyword)}.hljs-tag .hljs-attr{color:var(--c-attr)}.hljs-tag .hljs-string{color:var(--c-string)}@font-face{font-family:Vazirmatn;src:url(/fonts/Vazirmatn-Regular.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/fonts/Vazirmatn-Medium.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/fonts/Vazirmatn-Bold.woff2) format("woff2");font-weight:700;font-display:swap}@font-face{font-family:InterLocal;src:url(/fonts/Inter-400.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:InterLocal;src:url(/fonts/Inter-600.woff2) format("woff2");font-weight:600;font-display:swap}@font-face{font-family:InterLocal;src:url(/fonts/Inter-700.woff2) format("woff2");font-weight:700;font-display:swap}@font-face{font-family:JBMono;src:url(/fonts/JetBrainsMono-400.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:JBMono;src:url(/fonts/JetBrainsMono-600.woff2) format("woff2");font-weight:600;font-display:swap}:root{--bg:#0b0f1a;--bg-2:#0f1524;--panel:#121a2e;--panel-2:#18223c;--line:#202b47;--line-2:#2b3a5f;--ink:#e8eefc;--ink-2:#aab6d6;--muted:#7d89ad;--gold:#fdb813;--gold-2:#ffc94b;--cyan:#48dfe3;--violet:#9d7bff;--green:#57d9a3;--red:#ff6b6b;--accent:var(--gold);--code-bg:#0d1322;--sidebar-w:clamp(264px,24vw,320px);--sans-en:"InterLocal",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--sans-fa:"InterLocal","Vazirmatn",ui-sans-serif,system-ui,sans-serif;--mono:"JBMono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;--radius:14px;--read-measure:72ch;--topbar-h:56px;--shadow:0 30px 80px -24px rgba(0,0,0,.55);--shadow-sm:0 10px 30px -14px rgba(0,0,0,.5)}:root[data-theme=light]{--bg:#f6f7fb;--bg-2:#eef1f8;--panel:#ffffff;--panel-2:#f3f5fb;--line:#e3e7f1;--line-2:#d3d9e8;--ink:#16203a;--ink-2:#42506f;--muted:#5c6684;--gold:#b45309;--gold-2:#a16207;--cyan:#0e7490;--violet:#6d28d9;--green:#047857;--red:#dc2626;--code-bg:#f6f8fa;--shadow:0 24px 60px -22px color-mix(in srgb,var(--ink) 24%,transparent);--shadow-sm:0 12px 30px -16px color-mix(in srgb,var(--ink) 20%,transparent)}:root[data-theme=dark-read]{--bg:#191510;--bg-2:#1e1913;--panel:#241e16;--panel-2:#2c2419;--line:#362c20;--line-2:#473a29;--ink:#ece2d0;--ink-2:#c4b7a0;--muted:#a1937a;--gold:#f0b64a;--gold-2:#f5c86a;--cyan:#63cdd1;--violet:#b498f0;--green:#74cf9a;--red:#e78a72;--accent:var(--gold);--code-bg:#15110b}:root[data-theme=sepia]{--bg:#f3ecdc;--bg-2:#efe6d2;--panel:#fbf5e9;--panel-2:#f1e7d3;--line:#e0d4bb;--line-2:#d0c1a2;--ink:#2c2618;--ink-2:#5b5240;--muted:#756a52;--gold:#8a6508;--gold-2:#7a5a08;--cyan:#2f7d82;--violet:#6a4bc0;--green:#3f8f5f;--red:#c0472f;--code-bg:#efe7d5;--shadow:0 24px 60px -22px color-mix(in srgb,var(--ink) 22%,transparent);--shadow-sm:0 12px 30px -16px color-mix(in srgb,var(--ink) 18%,transparent)}*{box-sizing:border-box}.num,.cp-num,.gl-count,.st-tab,kbd,code,.mono{font-variant-numeric:tabular-nums}[hidden]{display:none!important}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans-en);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased}body[data-lang=fa]{font-family:var(--sans-fa)}a{color:var(--cyan);text-decoration:none}a:hover{text-decoration:underline}::selection{background:color-mix(in srgb,var(--accent) 30%,transparent);color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}.skip{position:fixed;top:10px;inset-inline-start:10px;z-index:300;transform:translateY(-160%);background:var(--panel);color:var(--ink);border:1px solid var(--accent);border-radius:9px;padding:9px 14px;font-weight:600;transition:transform .18s}.skip:focus{transform:translateY(0);text-decoration:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}*{scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:6px;border:2px solid var(--bg)}body[data-lang=fa] .only-en,body[data-lang=en] .only-fa{display:none!important}.app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}body[data-lang=fa]{direction:rtl}body[data-lang=en]{direction:ltr}.sidebar{position:sticky;top:0;height:100vh;overflow-y:auto;background:linear-gradient(180deg,var(--bg-2),var(--bg));border-inline-end:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;gap:16px}.brand{display:flex;align-items:center;gap:11px;padding:4px 8px;color:inherit}.brand:hover{text-decoration:none}.brand .mark{width:40px;height:40px;flex:0 0 auto;border-radius:12px;object-fit:contain;padding:5px;background:linear-gradient(155deg,var(--panel-2),var(--panel));border:1px solid var(--line-2);box-shadow:inset 0 1px color-mix(in srgb,#fff 7%,transparent)}:root[data-theme=dark] .brand .mark,:root[data-theme=dark-read] .brand .mark{background:radial-gradient(circle at 50% 38%,color-mix(in srgb,var(--ink) 14%,var(--panel-2)),var(--panel))}.brand h1{font-size:15px;margin:0;line-height:1.25;font-weight:700;letter-spacing:-.01em;color:var(--ink)}.brand small{display:block;color:var(--muted);font-size:11px;font-weight:500}.controls{display:flex;gap:8px}.controls button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 10px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink-2);border-radius:10px;font:inherit;font-size:12.5px;cursor:pointer;transition:.15s;font-weight:600}.controls button:hover{border-color:var(--accent);color:var(--ink)}.sidenav{display:grid;grid-template-columns:1fr 1fr;gap:5px}.sidenav a{display:flex;align-items:center;gap:7px;padding:8px 10px;border:1px solid var(--line);background:transparent;border-radius:9px;color:var(--ink-2);font-size:12px;font-weight:600;text-decoration:none;transition:border-color .15s,color .15s,background-color .15s}.sidenav a svg{color:var(--muted);flex:0 0 auto}.sidenav a:hover svg,.sidenav a.cur svg{color:var(--accent)}.sidenav a:hover{border-color:var(--accent);color:var(--ink);text-decoration:none}.sidenav a.cur{border-color:var(--accent);color:var(--ink);background:var(--panel-2)}.search{position:relative}.search input{width:100%;padding:10px 12px 10px 34px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);border-radius:10px;font:inherit;font-size:13.5px}body[data-lang=fa] .search input{padding:10px 34px 10px 12px}.search svg{position:absolute;inset-inline-start:10px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--muted);pointer-events:none}.search .kbd{position:absolute;inset-inline-end:9px;top:50%;transform:translateY(-50%);font-family:var(--mono);font-size:10px;color:var(--muted);border:1px solid var(--line-2);border-radius:5px;padding:1px 5px;pointer-events:none}.progress-mini{display:flex;align-items:center;gap:9px;padding:2px 8px;color:var(--muted);font-size:12px}.progress-mini .bar{flex:1;height:5px;background:var(--line);border-radius:4px;overflow:hidden}.progress-mini .bar i{display:block;height:100%;width:0;background:var(--green);transition:width .3s}nav.toc{display:flex;flex-direction:column;gap:2px;overflow-y:auto}.toc .group{margin-top:12px}.toc .group-label{width:100%;display:flex;align-items:center;gap:8px;border:0;background:none;cursor:pointer;font:inherit;font-size:12.5px;font-weight:600;color:var(--ink-2);padding:9px 11px;border-radius:8px;text-align:start;transition:color .15s,background-color .15s}.toc .group-label:hover{color:var(--ink);background:var(--panel)}.toc .group-label .chev{flex:0 0 auto;transition:transform .18s}body[data-lang=fa] .toc .group-label .chev{transform:scaleX(-1)}.toc .group.open .group-label .chev{transform:rotate(90deg)}body[data-lang=fa] .toc .group.open .group-label .chev{transform:scaleX(-1) rotate(90deg)}.toc .group-label .gl-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.toc .group-label .gl-count{flex:0 0 auto;font-family:var(--mono);font-size:10px;letter-spacing:0;color:var(--muted);background:var(--panel-2);border-radius:999px;padding:1px 7px}.toc .group.open .group-label{color:var(--ink)}.toc .group-items{display:none}.toc .group.open .group-items{display:block}.toc .group-items .item{padding-inline-start:20px}.toc a.item{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:9px;color:var(--ink-2);font-size:14.5px;line-height:1.5;cursor:pointer;border:1px solid transparent;transition:background-color .15s,color .15s}.toc a.item:hover{background:var(--panel);color:var(--ink);text-decoration:none}.toc a.item.active{background:var(--panel-2);color:var(--ink);border-color:var(--line-2);font-weight:600}.toc a.item .tick{width:5px;height:5px;flex:0 0 auto;border-radius:50%;background:transparent}.toc a.item.read .tick{background:var(--green)}.toc a.item.read{color:var(--ink-2)}.toc a.item.read .num{color:color-mix(in srgb,var(--green) 78%,var(--muted))}.toc a.item .num{color:var(--muted);font-family:var(--mono);font-size:11px;min-width:20px;font-variant-numeric:tabular-nums}.toc a.item.hidden,.toc .group.hidden{display:none}.main{min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;min-height:var(--topbar-h);padding:9px 20px;background:color-mix(in srgb,var(--bg) 80%,transparent);backdrop-filter:blur(12px) saturate(1.3);border-bottom:1px solid var(--line)}.topbar .hamburger{display:none;place-items:center;background:var(--panel);border:1px solid var(--line-2);color:var(--ink);width:38px;height:38px;border-radius:9px;cursor:pointer;flex:0 0 auto}.topbar .crumb{flex:1;min-width:0;display:flex;align-items:center;gap:7px;color:var(--ink-2);font-size:13px;white-space:nowrap;overflow:hidden}.topbar .crumb a{color:var(--muted);text-decoration:none;flex:0 0 auto}.topbar .crumb a:hover{color:var(--ink)}.topbar .crumb .cat{color:var(--muted);flex:0 1 auto;overflow:hidden;text-overflow:ellipsis}.topbar .crumb .cur{color:var(--ink);font-weight:600;overflow:hidden;text-overflow:ellipsis}.topbar .crumb .sep{color:var(--muted);flex:0 0 auto;font-size:12px}.topbar .spacer{flex:0 0 auto}.tb-tools{display:flex;align-items:center;gap:8px;flex:0 0 auto}.tb-search{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 11px;border:1px solid var(--line-2);background:var(--panel);color:var(--muted);border-radius:9px;font:inherit;font-size:12.5px;cursor:pointer;transition:border-color .15s,color .15s}.tb-search:hover{border-color:var(--accent);color:var(--ink)}.tb-search .kbd{font-family:var(--mono);font-size:10px;border:1px solid var(--line-2);border-radius:5px;padding:1px 5px}.tb-ctl{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 11px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink-2);border-radius:9px;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;transition:border-color .15s,color .15s}.tb-ctl:hover{border-color:var(--accent);color:var(--ink)}.reading-bar{position:absolute;inset-inline:0;bottom:-1px;height:2px;background:transparent;z-index:21}.reading-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--gold),var(--cyan))}@media (max-width:640px){.topbar .crumb,.tb-search .lbl,.tb-themename{display:none}}article.doc{max-width:948px;margin:0 auto;padding:30px 28px 90px;width:100%}.doc .md>p,.doc .md>ul,.doc .md>ol,.doc .md>blockquote,.doc .md>h2,.doc .md>h3,.doc .md>h4,.doc .summary{max-width:var(--read-measure)}.doc .eyebrow{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:12.5px;color:var(--muted);margin:0 0 .55rem}.doc .eyebrow>:first-child{color:var(--ink-2);font-weight:600}.doc .ch-diff{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;border:1px solid var(--line-2);vertical-align:middle;font-family:var(--sans-en)}body[data-lang=fa] .doc .ch-diff{font-family:var(--sans-fa)}.doc .ch-diff.d-beginner{color:var(--green);border-color:color-mix(in srgb,var(--green) 45%,var(--line-2))}.doc .ch-diff.d-mid{color:var(--cyan);border-color:color-mix(in srgb,var(--cyan) 45%,var(--line-2))}.doc .ch-diff.d-senior{color:var(--gold-2);border-color:color-mix(in srgb,var(--gold) 45%,var(--line-2))}.doc .ch-time{display:inline-block;color:var(--muted);font-size:11.5px;font-variant-numeric:tabular-nums;text-transform:none;letter-spacing:0;font-family:var(--sans-en)}body[data-lang=fa] .doc .ch-time{font-family:var(--sans-fa)}.doc .prereqs{font-size:13px;color:var(--muted);margin:8px 0 0}.doc .prereqs a{color:var(--cyan);margin-inline-start:6px}.doc h1.title{font-size:clamp(1.7rem,3.6vw,2.5rem);line-height:1.15;margin:.4rem 0 .5rem;font-weight:700;letter-spacing:-.02em;text-wrap:balance}.doc .summary{color:var(--ink-2);font-size:1.05rem;margin:0 0 8px}.doc .docactions{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 8px}.doc .readtoggle{display:inline-flex;align-items:center;gap:7px;margin:0;padding:7px 13px;border-radius:9px;white-space:nowrap;font-size:12.5px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink-2);cursor:pointer;font:inherit;font-size:13px;font-weight:600;transition:border-color .15s,color .15s}.doc .readtoggle:not(.read):hover{border-color:var(--accent);color:var(--ink)}.doc .readtoggle:active{transform:translateY(1px)}.doc .readtoggle.read{border-color:var(--green);color:var(--green)}.doc hr.rule{border:0;height:1px;background:var(--line);margin:22px 0}.md{font-size:16px}:root[data-reading=wide] .md{max-width:var(--read-measure)}.md h2{font-size:1.5rem;margin:2.2rem 0 .9rem;padding-bottom:.35rem;border-bottom:1px solid var(--line);font-weight:700;letter-spacing:-.01em;scroll-margin-top:70px}.md h3{font-size:1.2rem;margin:1.6rem 0 .6rem;font-weight:700;color:var(--ink);scroll-margin-top:70px}.md h4{font-size:1.02rem;margin:1.2rem 0 .5rem;font-weight:600;color:var(--ink-2)}.md p{margin:.7rem 0;overflow-wrap:anywhere}.md ul,.md ol{margin:.6rem 0;padding-inline-start:1.5rem}.md li{margin:.3rem 0;overflow-wrap:anywhere}.md strong{color:var(--ink);font-weight:700}.md a{color:var(--cyan)}.md blockquote{margin:1rem 0;padding:.6rem 1rem;border-inline-start:3px solid var(--accent);background:var(--panel);border-radius:0 8px 8px 0;color:var(--ink-2)}.md .callout{--co:var(--cyan);margin:1.25rem 0;border:1px solid var(--line);border-inline-start:4px solid var(--co);border-radius:12px;overflow:hidden;background:color-mix(in srgb,var(--co) 7%,var(--panel))}.md .callout .co-h{display:flex;align-items:center;gap:.55rem;font-weight:700;color:var(--ink);padding:.6rem .95rem;background:color-mix(in srgb,var(--co) 13%,transparent);border-bottom:1px solid color-mix(in srgb,var(--co) 22%,var(--line));font-size:.96rem;letter-spacing:-.01em}.md .callout .co-ic{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:26px;height:26px;border-radius:8px;color:var(--co);background:color-mix(in srgb,var(--co) 15%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--co) 25%,transparent)}.md .callout .co-ic svg{display:block}.md .callout .co-b{padding:.5rem .95rem .2rem}.md .callout .co-b>:first-child{margin-top:.35rem}.md .callout .co-b>:last-child{margin-bottom:.7rem}.md .callout .co-b pre{margin:.7rem 0}.md .co-tip{--co:var(--gold)}.md .co-analogy{--co:var(--violet)}.md .co-note{--co:var(--cyan)}.md .co-key{--co:var(--green)}.md .co-warn{--co:var(--red)}.md .co-interview{--co:#e05aa6}.md .co-summary{--co:var(--cyan)}.md .co-summary{background:color-mix(in srgb,var(--cyan) 9%,var(--panel))}.md :not(pre)>code{font-family:var(--mono);font-size:.86em;background:var(--panel-2);color:var(--gold-2);padding:.12em .4em;border-radius:6px;border:1px solid var(--line);direction:ltr;unicode-bidi:isolate}.md a,.md strong,.md em{unicode-bidi:isolate}.md .seq{unicode-bidi:isolate;direction:ltr;white-space:nowrap}.md table{border-collapse:collapse;width:100%;margin:1rem 0;font-size:.92rem;display:block;overflow-x:auto}.md th,.md td{border:1px solid var(--line);padding:9px 12px;text-align:start;vertical-align:top}.md thead th{background:var(--panel-2);font-weight:700;color:var(--ink)}.md tbody tr:nth-child(2n){background:color-mix(in srgb,var(--panel) 50%,transparent)}.md pre{position:relative;margin:1.1rem 0;background:var(--code-bg);border:1px solid var(--line);border-radius:12px;overflow:hidden}.md pre>code{display:block;padding:16px 18px;overflow-x:auto;font-family:var(--mono);font-size:13.5px;line-height:1.6;direction:ltr;text-align:left;tab-size:2;color:var(--code-fg,var(--ink));background:transparent}.md .codeblock{margin:1.15rem 0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--code-bg)}.md .codeblock pre{margin:0;border:0;border-radius:0;background:transparent}.md .codeblock pre>code{padding:14px 18px 16px}.md .cb-bar,.md .sqltabs .st-bar{background:var(--panel);border-bottom:1px solid var(--line)}.md .cb-bar{display:flex;align-items:center;gap:10px;padding:6px 8px 6px 14px;min-height:36px;direction:ltr}body[data-lang=fa] .md .cb-bar{padding:6px 14px 6px 8px}.md .cb-lang{font-family:var(--mono);font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}.md .cb-actions{margin-inline-start:auto;display:flex;align-items:center;gap:6px}.md .cb-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-2);background:color-mix(in srgb,var(--code-bg) 70%,transparent);color:var(--ink-2);border-radius:8px;padding:5px 10px;min-height:30px;font:inherit;font-size:11.5px;font-weight:600;cursor:pointer;transition:border-color .15s,color .15s,background-color .15s}.md .cb-btn:hover:not(:disabled){border-color:var(--accent);color:var(--ink)}.md .cb-btn:disabled{opacity:.55;cursor:default}.md .cb-btn.run{color:var(--green)}.md .cb-btn.run:hover:not(:disabled){border-color:var(--green)}.md .cb-btn.done{color:var(--green);border-color:var(--green)}.md .cb-btn svg{flex:0 0 auto}@media (max-width:560px){.md .cb-btn span{display:none}.md .cb-btn{padding:5px 9px}}.md .sqltabs{margin:1.15rem 0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--code-bg)}.md .sqltabs .st-bar{display:flex;gap:4px;padding:7px 8px 0;background:var(--panel);border-bottom:1px solid var(--line);direction:ltr;overflow-x:auto;scrollbar-width:none}.md .sqltabs .st-bar::-webkit-scrollbar{display:none}.md .sqltabs .st-tab{flex:0 0 auto;border:1px solid transparent;border-bottom:0;background:transparent;color:var(--muted);font:inherit;font-family:var(--mono);font-size:11.5px;font-weight:600;letter-spacing:.02em;padding:7px 14px;border-radius:9px 9px 0 0;cursor:pointer;transition:color .15s,background-color .15s;position:relative;top:1px;min-height:32px}.md .sqltabs .st-tab:hover{color:var(--ink)}.md .sqltabs .st-tab.on{color:var(--accent);background:var(--code-bg);border-color:var(--line);box-shadow:0 -2px 0 0 var(--accent) inset}.md .sqltabs .st-panel{margin:0}.md .sqltabs .st-panel pre{margin:0;border:0;border-radius:0;background:transparent}.md .sqltabs .st-panel pre>code{padding:14px 18px 16px}.md .sqltabs .st-actions{margin-inline-start:auto;padding-bottom:6px}.md .mermaid-diagram{margin:1.3rem 0;padding:16px 14px;background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow-x:auto;text-align:center;direction:ltr}.md .mermaid-diagram svg{max-width:100%;height:auto;display:inline-block}.pager{display:flex;gap:12px;margin-top:40px;justify-content:space-between}.pager a{flex:1;max-width:48%;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--ink);transition:.18s}.pager a:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-2px)}.pager a .k{display:block;font-size:11px;color:var(--muted);font-family:var(--mono);margin-bottom:3px}.pager a.next{text-align:end}.pager .empty{flex:1;max-width:48%}.home{max-width:1000px;margin:0 auto;padding:48px 28px}.home .hero{text-align:center;padding:30px 0 10px}.home h1{font-size:clamp(2rem,5vw,3rem);margin:.2rem 0;font-weight:700;letter-spacing:-.02em}.home .lede{color:var(--ink-2);font-size:1.15rem;max-width:60ch;margin:12px auto 0}.home .stat-row{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin:26px 0}.home .stat{border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:14px 20px;min-width:120px}.home .stat b{display:block;font-size:1.6rem;color:var(--gold-2);font-weight:700}.home .stat span{font-size:12px;color:var(--muted)}.home .cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;margin-top:24px}.home .cat{position:relative;overflow:hidden;border:1px solid var(--line);background:var(--panel);border-radius:14px;padding:18px 20px;transition:transform .18s,border-color .18s,box-shadow .18s;text-decoration:none;color:var(--ink);display:block}.home .cat:before{content:"";position:absolute;top:0;inset-inline-start:0;height:3px;width:0;background:var(--cat-accent,var(--gold));transition:width .28s ease}.home .cat:hover{border-color:color-mix(in srgb,var(--cat-accent,var(--accent)) 55%,var(--line-2));transform:translateY(-3px);text-decoration:none;box-shadow:var(--shadow-sm)}.home .cat:hover:before{width:100%}.home .cat:active{transform:translateY(-1px)}.home .cat .cat-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.home .cat .cat-ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;color:var(--cat-accent,var(--accent));background:color-mix(in srgb,var(--cat-accent,var(--accent)) 13%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--cat-accent,var(--accent)) 22%,transparent);transition:background-color .18s}.home .cat:hover .cat-ic{background:color-mix(in srgb,var(--cat-accent,var(--accent)) 20%,transparent)}.home .cat .cat-n{font-family:var(--mono);font-size:11px;color:var(--cat-accent,var(--accent));opacity:.85}.home .cat h3{margin:4px 0 6px;font-size:1.05rem}.home .cat p{margin:0;color:var(--muted);font-size:13px}.home .cat .count{color:var(--cat-accent,var(--accent));font-family:var(--mono);font-size:12px}.backdrop{display:none}@media (max-width:960px){.app{grid-template-columns:1fr}.sidebar{position:fixed;z-index:60;inset-inline-start:0;top:0;width:min(88vw,340px);transform:translate(-102%);transition:transform .25s;box-shadow:0 0 60px #00000080}body[data-lang=fa] .sidebar{transform:translate(102%)}.sidebar.open,body[data-lang=fa] .sidebar.open,body[data-lang=en] .sidebar.open{transform:translate(0)}.backdrop.show{display:block;position:fixed;inset:0;background:#00000080;z-index:55}.topbar .hamburger{display:grid;place-items:center}}@media (max-width:560px){body{font-size:15.5px}.topbar{padding:10px 14px;gap:10px}article.doc{padding:22px 16px 72px}.doc .summary{font-size:1rem}.md h2{font-size:1.3rem;margin:1.8rem 0 .7rem}.md h3{font-size:1.12rem}.md pre>code{padding:14px;font-size:.82rem}.md .callout .co-h{padding:.55rem .8rem}.md .callout .co-b{padding:.45rem .8rem .1rem}.md table{font-size:.88rem}.md th,.md td{padding:7px 10px}.home .stat-row{gap:8px}.home .stat{flex:1 1 0;min-width:0;padding:12px 8px;text-align:center}.home .stat b{font-size:1.35rem}.pager{flex-direction:column}.pager a,.pager .empty{max-width:none;width:100%}.pager a.next{text-align:start}.pager .empty{display:none}}.cmdk{position:fixed;inset:0;z-index:200;display:none;padding-top:12vh;justify-content:center;background:color-mix(in srgb,var(--bg) 55%,rgba(0,0,0,.5));backdrop-filter:blur(4px)}.cmdk.open{display:flex}.cmdk-panel{width:min(680px,92vw);height:max-content;max-height:70vh;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line-2);border-radius:16px;overflow:hidden;box-shadow:var(--shadow)}.cmdk-panel input{border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);font:inherit;font-size:1.05rem;padding:16px 18px;outline:none}.cmdk-list{overflow-y:auto;padding:8px}.cmdk-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;cursor:pointer;color:var(--ink-2)}.cmdk-item .n{font-family:var(--mono);font-size:11px;color:var(--muted);min-width:22px;flex:0 0 auto;padding-top:2px}.cmdk-main{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.cmdk-item .t{color:var(--ink);font-weight:600;font-size:.95rem;line-height:1.35}.cmdk-item .cmdk-snip{color:var(--ink-2);font-size:12px;line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.cmdk-item .cmdk-snip mark,.cmdk-item .t mark{background:color-mix(in srgb,var(--accent) 32%,transparent);color:inherit;border-radius:3px;padding:0 1px}.cmdk-item .c{font-size:11px;color:var(--muted);margin-inline-start:auto;font-family:var(--mono);flex:0 0 auto;align-self:flex-start;padding-top:2px}.cmdk-item{align-items:flex-start}.cmdk-item.sel,.cmdk-item:hover{background:var(--panel-2)}.cmdk-empty{padding:26px;text-align:center;color:var(--muted)}.cmdk.keys{padding-top:14vh}.keys-panel{max-width:460px}.keys-h{padding:16px 20px;border-bottom:1px solid var(--line);font-weight:700;color:var(--ink)}.keys-list{margin:0;padding:10px 12px 14px;display:flex;flex-direction:column;gap:2px}.keys-list>div{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:9px}.keys-list>div:hover{background:var(--panel-2)}.keys-list dt{flex:0 0 auto;display:flex;gap:4px;align-items:center;min-width:96px;color:var(--muted);font-size:12px}.keys-list dd{margin:0;color:var(--ink-2);font-size:13.5px}.keys-list kbd{font-family:var(--mono);font-size:11px;color:var(--ink);background:var(--panel-2);border:1px solid var(--line-2);border-bottom-width:2px;border-radius:6px;padding:2px 7px;line-height:1.4}.md mark.hit{background:color-mix(in srgb,var(--gold) 38%,transparent);color:inherit;border-radius:3px;padding:0 2px;box-shadow:0 0 0 1px color-mix(in srgb,var(--gold) 40%,transparent)}.quiz{position:fixed;inset:0;z-index:190;display:none;align-items:center;justify-content:center;padding:20px;background:color-mix(in srgb,var(--bg) 70%,rgba(0,0,0,.6));backdrop-filter:blur(4px)}.quiz.open{display:flex}.quiz-card{width:min(720px,96vw);max-height:88vh;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line-2);border-radius:18px;overflow:hidden;box-shadow:var(--shadow)}.quiz-top{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line)}.quiz-top .qbar{flex:1;height:6px;background:var(--line);border-radius:4px;overflow:hidden}.quiz-top .qbar i{display:block;height:100%;width:0;background:var(--gold);transition:width .3s}.quiz-top .qx{background:none;border:0;color:var(--muted);font-size:22px;cursor:pointer;line-height:1}.quiz-body{padding:22px;overflow-y:auto}.quiz-q{font-size:1.15rem;font-weight:700;color:var(--ink);margin:0 0 6px}.quiz-a{margin-top:14px;border-top:1px dashed var(--line-2);padding-top:14px;color:var(--ink-2);display:none}.quiz-a.show{display:block}.quiz-a pre{margin:.7rem 0}.quiz-actions{display:flex;flex-wrap:wrap;gap:10px;padding:16px 22px;border-top:1px solid var(--line)}.quiz-actions button{padding:10px 16px;border-radius:10px;border:1px solid var(--line-2);background:var(--panel-2);color:var(--ink);font:inherit;font-weight:600;cursor:pointer;font-size:.9rem}.quiz-actions button.primary{background:var(--gold);color:#0b0f1a;border-color:var(--gold)}.quiz-actions button.good{border-color:var(--green);color:var(--green)}.quiz-actions button.bad{border-color:var(--red);color:var(--red)}.quiz-actions .grow{flex:1}.quiz-result{text-align:center;padding:30px 20px}.quiz-result img{width:120px;height:auto;margin:0 auto 10px;display:block}.quiz-result .score{font-size:2.4rem;font-weight:800;color:var(--gold-2)}.doc .quizbtn .ic{opacity:.9}.onpage-slot{display:none}.onpage-toc{font-size:12.5px}.onpage-toc .oh{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:0 8px 8px;font-weight:700}.onpage-toc a{display:block;padding:5px 9px;color:var(--ink-2);border-radius:7px;line-height:1.45;text-decoration:none;font-weight:600;transition:color .15s,background-color .15s}.onpage-toc a:hover{color:var(--ink);background:var(--panel)}.onpage-toc a.h3{padding-inline-start:20px;font-size:11.8px;font-weight:400;color:var(--muted)}.onpage-toc a.h3:before{content:"";position:absolute;inset-inline-start:9px;top:.95em;width:5px;height:1px;background:var(--line-2)}.onpage-toc a.h3{position:relative}.onpage-toc a.cur{color:var(--accent);font-weight:700;background:color-mix(in srgb,var(--accent) 8%,transparent)}@media (min-width:1160px){.chapter-wrap{display:grid;grid-template-columns:minmax(0,1fr) 212px;gap:48px;align-items:start;max-width:1340px;margin:0 auto}.chapter-wrap article.doc{max-width:none;margin:0}.onpage-slot{display:block;position:sticky;top:calc(var(--topbar-h) + 24px);max-height:calc(100vh - var(--topbar-h) - 48px);overflow-y:auto;padding-top:38px}.onpage-toc{border-inline-start:1px solid var(--line);padding-inline-start:14px}}.md pre code[contenteditable=true]:focus{outline:1px dashed color-mix(in srgb,var(--green) 55%,transparent);outline-offset:-2px}.md .codeblock .runout{border-top:1px solid var(--line);background:color-mix(in srgb,var(--panel) 55%,var(--code-bg));padding:11px 16px;font-family:var(--mono);font-size:12.5px;line-height:1.55;white-space:pre-wrap;color:var(--ink-2);direction:ltr;text-align:left;max-height:320px;overflow:auto}.md .runout .ok{color:var(--green)}.md .runout .err{color:var(--red)}@media print{.sidebar,.topbar,.pager,.doc .readtoggle,.md .cb-actions,.onpage-toc,.cmdk,.quiz,.skip,.sidenav{display:none!important}.md .codeblock,.md .sqltabs{border-color:#ccc}.md .sqltabs .st-panel[hidden]{display:block!important}.app{display:block}body{background:#fff;color:#000;font-size:12pt}article.doc{max-width:none;padding:0}.md pre{border:1px solid #ccc}.md pre>code{color:#111;background:#f6f8fa}}.tb-keys{font-family:var(--mono);font-weight:700;min-width:36px;justify-content:center}@media (max-width:640px){.tb-keys{display:none}}
