﻿@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=IBM+Plex+Mono:wght@400;500&display=swap";:root{--sidebar-w: 278px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.75 "DM Sans",system-ui,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select{font:inherit}button,a,input,summary,select{outline-offset:5px}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible,select:focus-visible{outline:2px solid var(--accent)}button{cursor:pointer}button,select,input{color:var(--text);background:var(--surface);border:1px solid var(--line)}svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6}::selection{background:var(--selection);color:var(--selection-text)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.skip-link{position:fixed;top:-80px;left:20px;z-index:100;padding:10px 20px;background:var(--accent);color:var(--bg)}.skip-link:focus{top:10px}:root{color-scheme:dark;--bg: #101214;--sidebar: #15181b;--surface: #191d21;--line: #2b3035;--text: #e8ebed;--muted: #a1a9b1;--dim: #767f88;--accent: #92d4b0;--active: #20352d;--code: #121619;--selection: #365647;--selection-text: #fff;--border-strong: #41474e;--scrollbar: #3d454b;--nav-text: #c4cbd1;--nav-line: #38423c;--hover: #1f2428;--active-text: #b9eed0;--dialog: #171b1f;--dialog-border: #3c464d;--shadow: #0008;--backdrop: #05080bc4;--search-hover: #25352d;--header-bg: #101214f2;--scrim: #0009;--route-line: #46574e;--popover-line: #46534a;--popover-shadow: #0007;--frame-bg: #141a17;--frame-active: #234035;--frame-text: #d0f6e2;--frame-border: #3e6955;--frame-output: #b7c9be;--lead: #b7bfc6;--prose: #c5cdd3;--strong: #edf0f2;--quote-bg: #18231e;--inline-code-bg: #21272b;--inline-code-text: #d7e5de;--table-header: #1b2024;--table-text: #bdc6cd;--table-hover: #171e1c;--code-toolbar: #191e22;--syntax-keyword: #84baff;--syntax-string: #b7daa3;--syntax-comment: #788791;--syntax-number: #e9be87;--syntax-function: #dcc598;--syntax-operator: #9ddfce;--button-text: #101a15;--button-hover: #b0e9ca;--home-hover: #171e1b;--match-bg: #3a4d2d;--match-text: #e9f5be}:root[data-theme=light]{color-scheme:light;--bg: #fafbfc;--sidebar: #f0f3f5;--surface: #ffffff;--line: #d5dce2;--text: #182229;--muted: #4c5b66;--dim: #5f6d76;--accent: #246b48;--active: #ddeee3;--code: #f1f4f6;--selection: #c7e6d5;--selection-text: #122c1e;--border-strong: #bac5ce;--scrollbar: #a9b6c1;--nav-text: #3c4b56;--nav-line: #bfcdc5;--hover: #e4eaf0;--active-text: #1e583b;--dialog: #ffffff;--dialog-border: #b9c6cf;--shadow: #1b2d4520;--backdrop: #26354466;--search-hover: #e4f0e9;--header-bg: #fafbfcf2;--scrim: #14233466;--route-line: #a6c0b0;--popover-line: #bbcbc1;--popover-shadow: #1b2d4520;--frame-bg: #f0f7f3;--frame-active: #d9efe1;--frame-text: #183e2a;--frame-border: #6e9e81;--frame-output: #375b48;--lead: #485965;--prose: #354650;--strong: #172630;--quote-bg: #eaf3ee;--inline-code-bg: #e7edf1;--inline-code-text: #254c39;--table-header: #e8eef2;--table-text: #3f5260;--table-hover: #eaf4ef;--code-toolbar: #e6ecef;--syntax-keyword: #1857aa;--syntax-string: #286326;--syntax-comment: #596d78;--syntax-number: #87510b;--syntax-function: #715919;--syntax-operator: #176653;--button-text: #ffffff;--button-hover: #1b5639;--home-hover: #edf4ef;--match-bg: #e8ecb9;--match-text: #35420a}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);display:flex;flex-direction:column;background:var(--sidebar);border-right:1px solid var(--line);z-index:30}.brand{display:flex;gap:10px;align-items:center;padding:24px 24px 20px;color:var(--text);font-size:20px;font-weight:650;line-height:1.25;letter-spacing:-0.3px;white-space:nowrap}.brand:hover{text-decoration:none}.brand small{display:block;font-size:12px;font-weight:400;color:var(--muted);margin-top:2px}.subject-tabs{display:flex;margin:0 20px;border-bottom:1px solid var(--line);gap:12px}.subject-tabs a{position:relative;padding:10px 28px;color:var(--muted);font-size:14px;font-weight:600}.subject-tabs a[aria-current]{color:var(--accent)}.subject-tabs a[aria-current]:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--accent);border-radius:3px}.sidebar-site-navigation{display:none}.search-trigger{margin:18px 20px 15px;display:flex;align-items:center;gap:8px;padding:8px 9px;border-radius:5px;font-size:12px;color:var(--muted);white-space:nowrap}.search-trigger kbd{margin-left:auto;font-size:10px;border:1px solid var(--border-strong);border-radius:3px;padding:0 3px}.chapters{overflow-y:auto;flex:1;padding:0 13px 24px;scrollbar-width:thin;scrollbar-color:var(--scrollbar) rgba(0,0,0,0)}.nav-start{display:flex;justify-content:space-between;color:var(--muted);font-size:14px;padding:9px 12px;margin:4px 0 8px}.chapter summary{list-style:none;display:flex;align-items:center;justify-content:space-between;padding:8px 12px;cursor:pointer;font-size:14px;color:var(--nav-text)}.chapter summary::-webkit-details-marker{display:none}.chapter summary svg{width:13px;height:13px;color:var(--dim);transition:transform .15s}.chapter[open] summary{color:var(--accent)}.chapter[open] summary svg{transform:rotate(90deg);color:var(--accent)}.chapter-links{margin:2px 0 10px 13px;border-left:1px solid var(--nav-line);padding-left:8px}.chapter-links a{display:block;padding:5px 12px;font-size:13px;line-height:1.65;color:var(--muted);border-radius:4px;position:relative}.chapter-links a:hover,.nav-start:hover{color:var(--text);background:var(--hover);text-decoration:none}.chapter-links a.active,.nav-start.active{background:var(--active);color:var(--active-text)}.chapter-links a.active:before{content:"";position:absolute;left:-9px;top:2px;bottom:2px;width:2px;background:var(--accent)}.sidebar-footer{border-top:1px solid var(--line);padding:15px 18px;font-size:10px;color:var(--dim);display:flex;align-items:center;gap:6px}.sidebar-footer a{margin-left:auto;color:var(--muted)}.status-dot{width:5px;height:5px;border-radius:50%;background:var(--accent)}.nav-empty{padding:0 12px;color:var(--dim);font-size:13px}@media(max-width: 780px){.sidebar-site-navigation{display:block;padding:10px 13px 8px;border-bottom:1px solid var(--line)}.sidebar-site-links{display:grid;gap:2px}.sidebar-site-links a{padding:9px 12px;border-radius:4px;color:var(--muted);font-size:13px}.sidebar-site-links a:hover,.sidebar-site-links a[aria-current=page]{background:var(--hover);color:var(--text);text-decoration:none}.sidebar-site-links a[aria-current=page]{color:var(--accent)}}.page-shell{margin-left:var(--sidebar-w);display:grid;grid-template-columns:minmax(0, 1fr) 200px;max-width:1580px}main{min-width:0;padding:34px clamp(28px,4vw,68px) 28px;outline:none}.breadcrumb{display:flex;gap:12px;font-size:12px;line-height:1.5;margin:0 0 22px;color:var(--dim)}.breadcrumb a:last-child{color:var(--muted)}.article-header{padding-bottom:24px;border-bottom:1px solid var(--line);margin-bottom:30px}h1{font-size:clamp(32px,3.5vw,46px);line-height:1.18;letter-spacing:-1.5px;margin:0 0 16px;font-weight:650}.lead{font-size:19px;line-height:1.65;color:var(--lead);margin:0;max-width:760px}.lesson-meta{display:flex;flex-wrap:wrap;gap:20px;color:var(--dim);font-size:11px;margin-top:18px}.lesson-meta span+span:before{content:"·";margin-right:20px}.page-outline{border-left:1px solid var(--line);padding:30px 22px;min-width:0}.github-link{font-size:12px;color:var(--muted);white-space:nowrap}.outline-inner{position:sticky;top:36px;margin-top:42px}.outline-label{font:11px "IBM Plex Mono",monospace;letter-spacing:.07em;color:var(--muted)}#toc{border-left:1px solid var(--line);margin-top:14px;padding:0}#toc a{display:block;font-size:12px;color:var(--muted);line-height:1.6;padding:6px 0 6px 14px;margin-left:-1px;border-left:2px solid rgba(0,0,0,0)}#toc a.active{color:var(--accent);border-color:var(--accent)}.back-top{display:block;font-size:11px;color:var(--dim);margin-top:28px}.prose{overflow-wrap:break-word}.prose h2{font-size:26px;font-weight:600;line-height:1.35;letter-spacing:-0.5px;margin:38px 0 14px}.prose h2:first-child{margin-top:0}.prose h3{font-size:20px;font-weight:550;line-height:1.4;letter-spacing:-0.2px;margin:28px 0 12px}.prose p{margin:0 0 18px;color:var(--prose)}.prose li{color:var(--prose);margin:6px 0}.prose ul,.prose ol{padding-left:24px;margin:16px 0 23px}.prose strong{color:var(--strong);font-weight:600}.prose blockquote{border-left:2px solid var(--accent);padding:10px 20px;margin:24px 0;background:var(--quote-bg)}.prose blockquote p:last-child{margin:0}.prose hr{border:0;border-top:1px solid var(--line);margin:30px 0}code,kbd{font-family:"IBM Plex Mono",monospace}p code,li code,td code,h2 code,h3 code{font-size:.86em;background:var(--inline-code-bg);padding:2px 5px;border-radius:3px;color:var(--inline-code-text)}.table-scroll{overflow-x:auto;max-width:100%;border:1px solid var(--line);border-radius:5px;margin:18px 0 28px}.prose table{width:100%;border-collapse:collapse;font-size:13px;line-height:1.6}.prose th{background:var(--table-header);text-align:left;color:var(--text);font-weight:550}.prose th,.prose td{padding:10px 13px;border-bottom:1px solid var(--line);vertical-align:top}.prose tr:last-child td{border-bottom:0}.prose td{color:var(--table-text)}.prose tr:hover td{background:var(--table-hover)}.highlight{margin:0}.highlighter-rouge{margin:20px 0;background:var(--code);border:1px solid var(--line);border-radius:6px;overflow:hidden}.code-toolbar{display:flex;justify-content:space-between;align-items:center;background:var(--code-toolbar);border-bottom:1px solid var(--line);padding:5px 12px;font:11px "IBM Plex Mono",monospace;color:var(--muted)}.copy-code{border:0;background:rgba(0,0,0,0);color:var(--muted);font:11px "DM Sans",sans-serif;padding:2px 5px}.copy-code:hover{color:var(--accent)}pre{margin:0;padding:17px;overflow-x:auto;font:13px/1.8 "IBM Plex Mono",monospace;tab-size:4;white-space:pre}pre code{padding:0;background:none}.prose>pre{border:1px solid var(--line);border-radius:6px;margin:20px 0}.highlight .k,.highlight .kd,.highlight .kn,.highlight .kt{color:var(--syntax-keyword)}.highlight .s,.highlight .s1,.highlight .s2{color:var(--syntax-string)}.highlight .c,.highlight .c1,.highlight .cm{color:var(--syntax-comment);font-style:italic}.highlight .mi,.highlight .mf,.highlight .m{color:var(--syntax-number)}.highlight .nf,.highlight .nb{color:var(--syntax-function)}.highlight .o{color:var(--syntax-operator)}.highlight .err{color:inherit;background:none}.prose details{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:14px 0;margin:18px 0}.prose details summary{color:var(--accent);cursor:pointer;font-size:14px}.prose details[open] summary{margin-bottom:16px}.references{border-top:1px solid var(--line);margin-top:36px;padding-top:25px}.references h2{font-size:18px}.references li{font-size:13px}.lesson-pagination{border-top:1px solid var(--line);margin-top:40px;padding-top:22px;display:grid;grid-template-columns:1fr 1fr;gap:24px}.lesson-pagination a{font-size:13px}.lesson-pagination small{display:block;color:var(--dim);font-size:11px}.lesson-pagination .next{text-align:right}.article-footer{margin-top:42px;display:flex;justify-content:space-between;gap:20px;font-size:11px;color:var(--dim)}.article-footer a{color:var(--muted)}.overview-intro{max-width:680px}.learning-route{display:grid;grid-template-columns:repeat(3, 1fr);gap:20px;margin:26px 0 36px}.route-link{padding:18px 0;border-top:1px solid var(--route-line);color:var(--text)}.route-link small{display:block;color:var(--accent);font:11px "IBM Plex Mono",monospace;margin-bottom:9px}.route-link strong{font-size:17px;font-weight:550}.route-link p{font-size:13px;line-height:1.65;color:var(--muted);margin:6px 0 0}.chapter-index{margin:20px 0}.chapter-row{display:grid;grid-template-columns:32px minmax(0, 1fr) 60px;gap:14px;padding:20px 0;border-top:1px solid var(--line);align-items:start;color:var(--text)}.chapter-row:hover{text-decoration:none}.chapter-row:hover strong{color:var(--accent)}.chapter-number{font:12px "IBM Plex Mono",monospace;color:var(--dim);padding-top:5px}.chapter-row strong{font-size:17px;font-weight:550}.chapter-row p{font-size:13px;margin:4px 0 0;line-height:1.6;color:var(--muted)}.chapter-row .count{font-size:11px;color:var(--dim);text-align:right;padding-top:5px}.topic-list{list-style:none;padding:0 !important}.topic-list li{border-bottom:1px solid var(--line);margin:0;padding:13px 0}.topic-list a{font-weight:500}.topic-list span{display:block;font-size:13px;color:var(--muted);margin-top:3px}.empty-state{padding:35px 0 110px}.filter-controls{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0}.filter-controls select{padding:7px 12px;border-radius:4px;font-size:13px}.practice-item{border-top:1px solid var(--line);padding:18px 0}.practice-item small{font-size:11px;color:var(--dim)}.practice-item h3{margin:4px 0 6px;font-size:18px}.practice-item p{font-size:14px}.practice-count{font-size:12px;color:var(--dim)}dialog{background:var(--dialog);color:var(--text);border:1px solid var(--dialog-border);border-radius:10px;padding:0;width:min(680px,100vw - 32px);max-height:75vh;box-shadow:0 24px 80px var(--shadow)}dialog::backdrop{background:var(--backdrop);backdrop-filter:blur(3px)}.search-bar{display:flex;padding:15px 18px;gap:12px;border-bottom:1px solid var(--line)}.search-bar input{flex:1;min-width:0;background:rgba(0,0,0,0);border:0;font-size:16px;outline:none}.search-bar button{border-radius:4px;font-size:11px;padding:2px 6px;color:var(--muted)}#search-results{max-height:52vh;overflow:auto;padding:8px}.search-result{display:block;padding:12px 14px;border-radius:5px;color:var(--text)}.search-result:hover,.search-result:focus{background:var(--search-hover);text-decoration:none}.search-result strong{display:block;font-size:15px}.search-result small{display:block;font-size:12px;color:var(--muted);line-height:1.6;margin-top:4px}.search-result mark{background:var(--match-bg);color:var(--match-text);border-radius:2px;font-weight:600}.search-message{color:var(--muted);padding:20px;text-align:center;font-size:14px}.search-footer{border-top:1px solid var(--line);padding:10px 18px;font-size:10px;color:var(--dim);display:flex;justify-content:space-between}.mobile-header,.mobile-outline{display:none}.nav-scrim[hidden]{display:none}.frame-demo{margin:24px 0;border:1px solid var(--line);border-radius:6px;padding:20px;background:var(--frame-bg)}.frame-controls{display:flex;gap:16px;align-items:center;flex-wrap:wrap;font-size:13px}.frame-controls select{padding:6px 8px;font-size:12px}.frame-controls input{accent-color:var(--accent);max-width:150px}.frame-grid{display:flex;gap:8px;margin:22px 0}.frame-cell{flex:1;text-align:center;padding:12px 4px;border:1px solid var(--line);border-radius:4px;color:var(--dim);font-family:"IBM Plex Mono",monospace;font-size:15px}.frame-cell small{display:block;font-size:10px;font-family:"DM Sans",sans-serif}.frame-cell.in-frame{background:var(--frame-active);color:var(--frame-text);border-color:var(--frame-border)}.frame-cell.current{outline:2px solid var(--accent);outline-offset:3px}.frame-output{font-size:13px;color:var(--frame-output);margin:0 !important}.frame-output strong{color:var(--accent)}@media(min-width: 1500px){:root{--sidebar-w: 290px}.page-shell{grid-template-columns:minmax(0, 1fr) 230px}main{padding-top:36px;max-width:1040px}}@media(max-width: 1150px){.page-shell{grid-template-columns:minmax(0, 1fr)}.page-outline{display:none}.mobile-outline{display:block;font-size:13px;border-bottom:1px solid var(--line);padding:0 0 18px;margin-bottom:24px}.mobile-outline summary{cursor:pointer;color:var(--muted)}#mobile-toc a{display:block;padding:4px 0;font-size:12px}main{padding:30px 36px}}@media(max-width: 780px){:root{--sidebar-w: 278px}html{scroll-padding-top:80px}.mobile-header{display:grid}.sidebar{inset:58px auto 0 0;z-index:35;transform:translateX(-100%);transition:transform .18s}.sidebar>.brand{display:none}.nav-open .sidebar{transform:translateX(0)}.nav-scrim{position:fixed;inset:58px 0 0;background:var(--scrim);z-index:34}.page-shell{margin-left:0}.breadcrumb{font-size:11px;margin-bottom:18px}main{padding:26px 22px}h1{font-size:34px;letter-spacing:-1px}.lead{font-size:17px}.prose{font-size:15px}.prose h2{font-size:24px}.learning-route{grid-template-columns:1fr;gap:0}.route-link{padding:15px 0}.chapter-row{grid-template-columns:24px minmax(0, 1fr) 46px;gap:10px}.lesson-meta{gap:10px}.lesson-meta span+span:before{margin-right:10px}.article-footer{font-size:10px}.frame-demo{padding:14px}.frame-grid{gap:6px}.frame-cell{font-size:12px}.search-footer span{display:none}.lesson-pagination{gap:15px}.prose th,.prose td{padding:9px 11px;min-width:90px}pre{font-size:12px;padding:14px}}@media(prefers-reduced-motion: reduce){html{scroll-behavior:auto}*{transition:none !important}}.subject-switcher{position:relative;margin:0 20px 2px;border:1px solid var(--line);border-radius:5px;font-size:13px}.subject-switcher>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;padding:9px 12px;color:var(--accent);gap:8px}.subject-switcher>summary::-webkit-details-marker{display:none}.subject-switcher nav{position:absolute;top:100%;left:0;right:0;z-index:40;border:1px solid var(--popover-line);background:var(--sidebar);box-shadow:0 16px 35px var(--popover-shadow);border-radius:5px;padding:6px}.subject-switcher nav a{display:block;padding:8px;color:var(--muted);line-height:1.5}.subject-switcher nav a:hover,.subject-switcher nav a[aria-current]{background:var(--active);color:var(--accent);text-decoration:none}.subject-switcher nav small{display:block;font-size:10px;color:var(--dim)}.subject-status{color:var(--accent);font-size:14px}.home-container{width:min(1290px,100% - 96px);margin:0 auto}.home-header{border-bottom:1px solid var(--line)}.home-header-grid{display:grid;grid-template-columns:minmax(0, 1fr) auto minmax(0, 1fr);align-items:center;gap:24px;min-height:64px}.home-footer>.home-container{display:flex;justify-content:space-between;align-items:center;min-height:64px}.home-brand{display:inline-flex;align-items:center;gap:15px;color:var(--text);font-size:22px;font-weight:650;letter-spacing:.3px}.home-brand:hover{text-decoration:none}.home-nav{justify-self:center;display:flex;align-items:center;gap:30px;font:13px "IBM Plex Mono",monospace}.home-nav a,.home-footer a{color:var(--muted)}.home-nav a:hover,.home-nav a[aria-current=page]{color:var(--text);text-decoration:none}.home-nav a[aria-current=page]{position:relative}.home-nav a[aria-current=page]::after{content:"";position:absolute;left:0;right:0;bottom:-8px;height:2px;border-radius:2px;background:var(--accent)}.home-utilities{justify-self:end;display:flex;align-items:center;gap:4px}.mobile-site-menu{display:none}main.home-main{max-width:none;padding:0}.home-hero{padding:44px 0 34px}.home-hero h1{font-size:clamp(38px,4.3vw,64px);letter-spacing:-2px;line-height:1.08;margin:0 0 12px;font-weight:650}.home-description{font-size:19px;color:var(--muted);margin:0 0 22px;line-height:1.6}.home-actions{display:flex;gap:32px;align-items:center;font-size:15px}.primary-link{padding:11px 26px;border-radius:5px;background:var(--accent);color:var(--button-text);font-weight:650}.primary-link:hover{background:var(--button-hover);text-decoration:none}.subject-directory{scroll-margin-top:20px}.subject-directory h2{font-size:32px;line-height:1.25;margin:0 0 10px;letter-spacing:-0.5px}.subject-row{display:grid;grid-template-columns:32% 1fr 145px;gap:15px;align-items:center;padding:11px 12px;border-top:1px solid var(--line);color:var(--text);line-height:1.5}.subject-row:last-child{border-bottom:1px solid var(--line)}.subject-row:hover{background:var(--home-hover);text-decoration:none}.subject-row strong{font-size:18px;font-weight:550}.subject-row>span{color:var(--muted);font-size:14px}.subject-row small{font:12px "IBM Plex Mono",monospace;color:var(--muted);text-align:right}.subject-row:first-of-type small{color:var(--accent)}.home-paths{display:grid;grid-template-columns:repeat(3, 1fr);gap:0;margin:36px 0 32px}.home-paths>div{padding:0 34px;border-left:1px solid var(--line)}.home-paths>div:first-child{padding-left:0;border-left:0}.home-paths>div:last-child{padding-right:0}.home-paths h2{font-size:22px;line-height:1.3;margin:0 0 8px;letter-spacing:-0.4px}.home-paths p{font-size:14px;line-height:1.65;color:var(--muted);margin:0 0 10px}.home-paths a{font-size:14px}.home-footer{border-top:1px solid var(--line);padding:6px 0;font-size:12px}.home-footer-copy{display:inline-flex;gap:.3em}.home-footer .home-brand{font-size:17px;color:var(--text)}@media(max-width: 900px){.home-container{width:calc(100% - 48px)}.home-page .home-header{display:none}.home-page .mobile-header{display:grid}.home-page .mobile-site-menu{position:fixed;inset:58px auto 0 0;z-index:35;display:flex;width:min(300px,100vw - 48px);flex-direction:column;background:var(--sidebar);border-right:1px solid var(--line);transform:translateX(-100%);transition:transform .18s}.home-page.nav-open .mobile-site-menu{transform:translateX(0)}.home-page .nav-scrim{position:fixed;inset:58px 0 0;z-index:34;background:var(--scrim)}.mobile-site-links{display:grid;padding:18px 14px}.mobile-site-links a{padding:12px 14px;border-radius:5px;color:var(--muted);font-size:14px}.mobile-site-links a:hover,.mobile-site-links a[aria-current=page]{background:var(--hover);color:var(--text);text-decoration:none}.mobile-site-links a[aria-current=page]{color:var(--accent)}.mobile-site-menu-footer{margin-top:auto;padding:16px 20px;border-top:1px solid var(--line);font-size:12px}.subject-row{grid-template-columns:30% 1fr 95px}.subject-row strong{font-size:16px}.home-paths>div{padding:0 20px}.home-paths h2{font-size:19px}}@media(max-width: 600px){.home-container{width:calc(100% - 40px)}.home-brand{font-size:19px;gap:10px}.home-hero{padding-top:36px}.home-hero h1{font-size:38px;letter-spacing:-1.3px}.home-description{font-size:16px}.home-actions{gap:20px;font-size:13px}.primary-link{padding:11px 16px}.subject-directory h2{font-size:27px}.subject-row{grid-template-columns:minmax(0, 1fr) auto;padding:14px 0;gap:4px 10px}.subject-row>span{grid-column:1;grid-row:2;font-size:13px}.subject-row small{grid-column:2;grid-row:1;font-size:10px}.subject-row small.text-icon{justify-self:end}.home-paths{grid-template-columns:1fr;gap:22px}.home-paths>div{padding:0 !important;border-left:0}.home-paths h2{font-size:21px}.home-footer>.home-container{min-height:55px}.home-footer-copy{display:block}.home-footer-copy span{display:block}}.practice-revise{font-size:13px}.practice-count{min-height:1.6em}.github-icon{flex-shrink:0;width:18px;height:18px;fill:currentColor;stroke:none}.arrow-icon{display:block;width:1em;height:1em;flex-shrink:0;fill:currentColor;stroke:none}.text-icon{display:inline-flex;align-items:center;gap:.45em}.github-link{display:inline-flex;align-items:center;gap:7px}.icon-button{display:inline-flex;justify-content:center;align-items:center;flex-shrink:0;width:36px;height:36px;padding:8px;border:0;border-radius:6px;background:rgba(0,0,0,0);color:var(--muted)}.icon-button:hover{background:var(--hover);color:var(--text);text-decoration:none}.icon-button[hidden]{display:none}.theme-toggle svg{width:20px;height:20px;stroke-linecap:round;stroke-linejoin:round}:root:not([data-theme=light]) .theme-moon,:root[data-theme=light] .theme-sun{display:none}.header-actions,.sidebar-actions{display:flex;align-items:center;gap:4px}.sidebar-actions{margin-left:auto}.sidebar-footer{padding-top:8px;padding-bottom:8px}.sidebar-footer .icon-button{margin-left:0}.article-footer .github-link{font-size:inherit}@media(max-width: 780px){.mobile-header .icon-button{width:40px;height:40px}.mobile-header .icon-button:hover{background:var(--hover)}}.brand-mark{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--accent)}.brand-mark-icon{display:block;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:square;stroke-linejoin:miter}.home-brand .brand-mark-icon{width:22px;height:22px}.search-icon,.nav-menu-icon,.nav-close-icon{display:block;width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.nav-close-icon{display:none}.nav-open #nav-toggle .nav-menu-icon{display:none}.nav-open #nav-toggle .nav-close-icon{display:block}.header-search{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 7px 0 9px;border:1px solid var(--line);border-radius:6px;background:rgba(0,0,0,0);color:var(--muted);font:12px "IBM Plex Mono",monospace}.header-search:hover{border-color:var(--border-strong);background:var(--hover);color:var(--text)}.header-search .search-icon{width:16px;height:16px}.header-search kbd,.search-trigger kbd{font-family:"IBM Plex Mono",monospace}.header-search kbd{padding:2px 5px;border:1px solid var(--border-strong);border-radius:4px;color:var(--dim);background:var(--surface);font-size:9px;line-height:1.4}.mobile-header{position:sticky;top:0;z-index:40;grid-template-columns:80px minmax(0, 1fr) 80px;align-items:center;height:58px;padding:0 14px;background:var(--header-bg);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.mobile-header-side{display:flex;align-items:center;width:80px}.mobile-header-start{justify-content:flex-start}.mobile-header .header-actions{justify-content:flex-end}.mobile-brand{justify-self:center;display:inline-flex;align-items:center;gap:8px;min-width:0;color:var(--text);font-size:18px;font-weight:650;letter-spacing:-0.2px;white-space:nowrap}.mobile-brand:hover{text-decoration:none}.mobile-brand .brand-mark-icon{width:19px;height:19px}.diagram{margin:20px 0 28px;padding:20px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}.diagram figcaption{color:var(--strong);font-weight:600;margin-bottom:18px}.diagram-canvas{overflow-x:auto;padding:6px}.diagram-canvas>svg{display:block;width:100%;height:auto;margin:0 auto;fill:initial;stroke:initial;stroke-width:initial}.diagram-canvas a .label{text-decoration:underline;text-underline-offset:3px}.diagram-canvas a:hover .label-container,.diagram-canvas a:focus-visible .label-container{stroke:var(--accent) !important;stroke-width:3px !important}.diagram-fallback>:last-child{margin-bottom:0}@media(max-width: 600px){.diagram{padding:16px 10px}}.top-page-hero{padding:44px 0 28px;max-width:880px}.top-page-hero h1{margin:0 0 12px}.top-page-lead{margin:0;max-width:780px;color:var(--muted);font-size:18px;line-height:1.65}.about-copy{width:100%;padding-bottom:60px}.about-section{display:grid;grid-template-columns:minmax(180px, 230px) minmax(0, 1fr);gap:42px;padding:32px 0;border-top:1px solid var(--line)}.about-section h2{margin:0;font-size:21px;font-weight:600;letter-spacing:-0.3px}.about-section-body{max-width:none}.about-section-body p{margin:0 0 16px;color:var(--nav-text);font-size:15px;line-height:1.75}.about-section-body p:last-child{margin-bottom:0}.about-section .diagram{width:100%;margin:28px 0 0}.about-closing{color:var(--text)}.resource-filters{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 32px}.resource-filter{padding:7px 13px;border:1px solid var(--line);border-radius:999px;background:rgba(0,0,0,0);color:var(--muted);font-size:12px}.resource-filter:hover,.resource-filter.active{border-color:var(--accent);color:var(--text);background:var(--active)}.resource-group{margin:0 0 30px}.resource-group-heading{display:grid;grid-template-columns:max-content minmax(0, 1fr);gap:18px;align-items:baseline;margin-bottom:9px}.resource-group-heading h2{margin:0;font-size:20px;font-weight:600;letter-spacing:-0.3px}.resource-group-heading h2::before{content:"/";margin-right:12px;color:var(--accent);font-family:"IBM Plex Mono",monospace}.resource-group-heading p{margin:0;color:var(--dim);font-size:13px}.resource-list{border:1px solid var(--line);border-radius:7px;overflow:hidden}.resource-row{display:grid;grid-template-columns:24px minmax(210px, 280px) minmax(0, 1fr) auto 18px;gap:14px;align-items:center;padding:11px 15px;border-bottom:1px solid var(--line);color:var(--text)}.resource-row:last-child{border-bottom:0}.resource-row:hover{background:var(--home-hover);text-decoration:none}.resource-row>strong{font-size:14px;font-weight:600}.resource-description{min-width:0;color:var(--muted);font-size:13px;line-height:1.5}.resource-icon-wrap{display:inline-flex;align-items:center;justify-content:center;color:var(--muted)}.resource-icon{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round}.resource-row:hover .resource-icon-wrap{color:var(--accent)}.resource-row>small{justify-self:end;padding:2px 7px;border-radius:4px;background:var(--surface);color:var(--muted);font:10px "IBM Plex Mono",monospace;white-space:nowrap}.resource-open{color:var(--muted);font-weight:400;font-size:15px}.resource-row:hover .resource-open{color:var(--accent)}.resource-alias{color:var(--dim);font-weight:450}.resource-note{margin:8px 0 60px;color:var(--dim);font-size:13px}@media(max-width: 900px){.about-section{grid-template-columns:minmax(150px, 190px) minmax(0, 1fr);gap:28px}.resource-row{grid-template-columns:22px 180px minmax(0, 1fr) auto 18px;gap:12px}}@media(max-width: 650px){.top-page-hero{padding-top:34px}.top-page-lead{font-size:16px}.about-section{display:block;padding:26px 0}.about-section h2{margin-bottom:14px}.about-section-body p{font-size:14px;line-height:1.7}.resource-filters{margin-bottom:30px}.resource-group-heading{display:block}.resource-group-heading p{margin-top:4px}.resource-row{grid-template-columns:22px minmax(0, 1fr) auto;gap:5px 10px;padding:13px 12px}.resource-icon-wrap{grid-column:1;grid-row:1}.resource-row>strong{grid-column:2;grid-row:1}.resource-description{grid-column:2/-1;grid-row:2;font-size:12px}.resource-row>small{grid-column:3;grid-row:1}.resource-open{display:none}}