:root{--paper:#f6f4ee;--white:#fffefa;--ink:#172e3f;--muted:#54616a;--teal:#1c625c;--line:#d9ded7;--accent:#b4533a;--serif:Georgia,"Noto Serif CJK SC","Songti SC",SimSun,serif;--sans:"Source Han Sans SC","Noto Sans CJK SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}html{scroll-padding-top:100px;scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--sans);font-size:16px;line-height:1.85}a{color:var(--teal);text-underline-offset:4px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px;color:#123f3b}button,input{font:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:4px}[hidden]{display:none!important}.skip-link{position:fixed;top:-100px;left:12px;z-index:9;padding:10px 18px;background:var(--ink);color:white}.skip-link:focus{top:10px}
.site-header{height:88px;display:flex;align-items:center;justify-content:space-between;padding:0 4.3vw;border-bottom:1px solid var(--line);background:rgba(246,244,238,.98);position:sticky;top:0;z-index:3;gap:20px}.brand{font:700 24px var(--serif);color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:13px;white-space:nowrap}.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:38px;height:44px;border-bottom:3px solid var(--accent);background:var(--ink);color:var(--paper);font-size:27px}.brand-mark span{color:#d3b282}.header-actions{display:flex;align-items:center;gap:25px;font-size:14px}.header-actions a{text-decoration:none;color:var(--ink)}.beta{font-size:10px;letter-spacing:.12em;border:1px solid var(--line);padding:2px 8px}.language{border-right:1px solid var(--line);padding-right:24px}#nav-toggle{display:none;border:1px solid var(--line);background:var(--white);color:var(--ink);padding:6px 10px}
.layout{display:grid;grid-template-columns:250px minmax(0,1fr);max-width:1360px;margin:auto;padding:0 4.3vw;gap:64px}.sidebar{padding-top:45px}.sidebar nav{position:sticky;top:115px}.sidebar nav>a{display:flex;align-items:center;gap:10px;text-decoration:none;font-size:14px;color:var(--muted);padding:8px 12px;border-left:2px solid transparent;margin:3px 0}.sidebar nav>a:hover{color:var(--teal);background:#e9eee7}.sidebar nav>a[aria-current]{border-left-color:var(--teal);background:#e7ede6;color:#173e39;font-weight:700}.nav-label{font-size:10px;letter-spacing:.16em;padding-left:14px;margin:30px 0 12px;color:var(--muted)}.nav-number{color:var(--accent);font:12px Georgia,serif}.sidebar-note{border-top:1px solid var(--line);margin:40px 12px 0;padding-top:14px;display:flex;gap:14px;align-items:center}.sidebar-note>span{font:40px var(--serif);color:var(--teal)}.sidebar-note p{font-size:9px;line-height:1.7;letter-spacing:.1em}main{min-width:0;padding:54px 0 48px;max-width:880px}.eyebrow{font-size:11px;letter-spacing:.18em;color:var(--teal);margin:0 0 18px}.page-heading h1{font-family:var(--serif);font-size:clamp(30px,3.4vw,48px);letter-spacing:-.025em;line-height:1.35;margin:0 0 24px;font-weight:600;text-wrap:balance}.home .page-heading h1{font-size:clamp(38px,4.6vw,65px);max-width:740px;line-height:1.26}.lede{color:var(--muted);font-size:17px;max-width:720px;margin-bottom:26px}.heading-rule{width:56px;height:3px;background:var(--accent);margin:30px 0 36px}
.prose>p{margin:0 0 24px}.prose h2{font:600 27px/1.4 var(--serif);margin:48px 0 18px;padding-top:24px;border-top:1px solid var(--line)}.prose h3{font-size:19px;margin:28px 0 12px;line-height:1.5}.prose ul,.prose ol{padding-left:25px;margin-bottom:26px}.prose li{margin:8px 0}.prose blockquote{margin:25px 0;padding:18px 24px;border-left:3px solid var(--teal);background:#eaf0e9;color:#29483e}.prose blockquote p{margin:0}.prose code{font-family:Consolas,"Liberation Mono",monospace;font-size:.84em;background:#e8ece5;padding:2px 5px;border-radius:2px;overflow-wrap:anywhere}.prose pre{position:relative;background:#152f3b;color:#ecf2ec;padding:24px 20px;overflow:auto;border-radius:3px;line-height:1.7;font-size:14px;margin:20px 0 28px}.prose pre code{background:none;color:inherit;padding:0;overflow-wrap:normal;white-space:pre;font-size:inherit}.copy-code{position:absolute;top:5px;right:6px;border:1px solid #6c858b;background:#254754;color:#f6f4ee;padding:1px 8px;border-radius:2px;font-size:11px}.prose table{display:block;border-collapse:collapse;overflow-x:auto;width:100%;margin:24px 0 32px;font-size:14px}.prose th{text-align:left;font-size:12px;color:var(--teal);font-weight:700;white-space:nowrap;border-bottom:2px solid var(--teal);padding:12px 14px}.prose td{border-bottom:1px solid var(--line);padding:14px;vertical-align:top;min-width:120px}.prose img{max-width:100%;height:auto;border:1px solid var(--line)}.prose a{overflow-wrap:anywhere}.prose .primary-link,.prose .secondary-link{display:inline-block;text-decoration:none;padding:10px 20px;margin:0 12px 10px 0;font-size:14px;border:1px solid var(--teal)}.prose .primary-link{background:var(--teal);color:white}.prose .secondary-link{color:var(--teal)}.prose .primary-link:hover{background:#174e49}.prose .secondary-link:hover{background:#e8ece5}.catalog-filter{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 20px;align-items:center;background:#e9eee7;padding:20px;margin-bottom:28px}.catalog-filter label{font-weight:700;font-size:14px}.catalog-filter input{width:100%;min-width:0;padding:9px 13px;color:var(--ink);border:1px solid #9baea5;background:var(--white);border-radius:0;font-size:15px}.catalog-filter p{grid-column:2;font-size:12px;color:var(--muted);margin:0}.skill-entry{padding:24px 0;border-bottom:1px solid var(--line);scroll-margin-top:110px}.skill-title{display:flex;justify-content:space-between;gap:12px;align-items:baseline;flex-wrap:wrap}.skill-title h3{margin:0;font:600 22px var(--serif)}.skill-title code{font-size:11px;background:none;padding:0;color:var(--muted)}.skill-entry>p{font-size:14px;margin:12px 0}.skill-entry dl{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:16px 0}.skill-entry dt{font-size:11px;letter-spacing:.04em;color:var(--muted);margin-bottom:4px}.skill-entry dd{margin:0;font-size:14px}.skill-links{display:flex;gap:24px}.skill-links a{font-size:12px}.page-footer{border-top:1px solid var(--line);margin-top:58px;padding-top:24px;color:var(--muted);font-size:12px}.page-footer p{margin:22px 0 8px}.not-found{margin:80px auto;padding:24px;max-width:800px}.not-found h1{font:42px/1.5 var(--serif)}
@media(min-width:1500px){.layout{padding:0 40px}}@media(max-width:1050px){.layout{grid-template-columns:215px minmax(0,1fr);gap:32px;padding:0 25px}.site-header{padding:0 25px}.header-actions{gap:16px}.beta{display:none}.language{padding-right:15px}.sidebar nav>a{font-size:12px;padding:8px}.page-heading h1{font-size:36px}}
@media(max-width:760px){html{scroll-padding-top:90px}.site-header{height:auto;min-height:76px;padding:13px 20px;flex-wrap:wrap;gap:10px}.brand{font-size:21px}.brand-mark{height:34px;width:29px;font-size:22px}.header-actions{gap:12px;font-size:12px;flex:1;justify-content:flex-end}.language{padding-right:10px}.header-actions>a[href*="github.com"]{display:none}#nav-toggle{display:block;font-size:12px}.layout{display:block;padding:0 22px}.sidebar{padding:15px 0 0}.sidebar-note{display:none}.sidebar nav{position:static;display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line);padding-bottom:16px}.js .sidebar nav{display:none}.js .sidebar nav.is-open{display:grid}.nav-label{grid-column:1/-1;margin:15px 0 5px}.sidebar nav>a{font-size:13px;padding:7px 9px}main{padding-top:32px}.home .page-heading h1{font-size:40px}.page-heading h1{font-size:32px}.eyebrow{font-size:10px;letter-spacing:.09em}.lede{font-size:15px}.heading-rule{margin:23px 0 28px}.prose{font-size:15px}.prose h2{font-size:24px;margin-top:36px}.prose blockquote{padding:16px 18px}.catalog-filter{grid-template-columns:1fr;padding:16px;gap:6px}.catalog-filter p{grid-column:1}.skill-entry dl{grid-template-columns:1fr;gap:12px}.prose pre{font-size:12px;padding:25px 14px}.prose table{font-size:13px}.prose td{padding:12px 9px}.skill-title h3{font-size:21px}.page-footer{margin-top:40px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media print{.site-header,.sidebar,.copy-code{display:none}.layout{display:block;padding:0}main{max-width:none;padding:0}body{background:white}.prose pre{white-space:pre-wrap;color:black;background:#eee}.page-footer{font-size:10px}}
