:root{color-scheme:light;--white:#FFFFFF;--panel:#F5F7FA;--ink:#0D1017;--soft:#3C4350;--muted:#6E7684;--line:#E6E9EE;--blue:#2563EB;--violet:#8B5CF6;--feather:linear-gradient(100deg,#2563EB,#06B6D4 50%,#8B5CF6);--sans:"Geist",-apple-system,"SF Pro Text","Segoe UI",system-ui,sans-serif;--mono:"Geist Mono",ui-monospace,"SF Mono",Menlo,monospace}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:84px}body,html{background:var(--white)}body{margin:0;color:var(--ink);font:400 17px/1.65 var(--sans);-webkit-font-smoothing:antialiased}img{display:block;max-width:100%;height:auto}h1,h2,h3,p{margin:0}a{color:var(--blue);text-underline-offset:3px}:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:8px}.bar{position:-webkit-sticky;position:sticky;top:env(safe-area-inset-top,0);z-index:10;background:rgba(255,255,255,.86);backdrop-filter:saturate(1.6) blur(14px);-webkit-backdrop-filter:saturate(1.6) blur(14px);border-bottom:1px solid var(--line)}.bar-in{max-width:1240px;margin-inline:auto;padding-inline:clamp(18px,4vw,48px);height:64px;gap:24px}.bar-in,.brand{display:flex;align-items:center}.brand{gap:9px;font-weight:500;font-size:1.125rem;letter-spacing:-.03em;color:var(--ink);text-decoration:none}.brand img{width:28px;height:28px;border-radius:7px}.bar nav{margin-left:auto;display:flex;gap:22px}.bar nav a{color:var(--soft);font-size:.9375rem}.bar nav a,.button{text-decoration:none}.button{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;background:var(--ink);color:var(--white);font-weight:500;font-size:.875rem}.page{max-width:1240px;margin-inline:auto;padding-inline:clamp(18px,4vw,48px);grid-template-columns:240px minmax(0,1fr);grid-gap:clamp(28px,5vw,72px);gap:clamp(28px,5vw,72px);padding-block:56px 96px}.page,.toc{display:grid}.toc{position:-webkit-sticky;position:sticky;top:96px;align-self:start;grid-gap:4px;gap:4px;font-size:.9375rem}.toc p{font:500 .75rem/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}.toc a{color:var(--soft);text-decoration:none;padding:5px 10px;border-radius:8px;margin-left:-10px}.toc a:hover{background:var(--panel);color:var(--ink)}h1{font-weight:400;font-size:clamp(2.5rem,6vw,4rem);letter-spacing:-.05em;line-height:1.04;text-wrap:balance}.gradient{background:var(--feather);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}.lede{margin-top:20px;font-size:1.25rem;line-height:1.5;color:var(--soft);max-width:40rem}.loop{margin:36px 0 0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:12px;gap:12px;counter-reset:loop}.loop li{counter-increment:loop;padding:18px;border-radius:16px;background:var(--panel);font-size:.9375rem;color:var(--soft);display:grid;grid-gap:6px;gap:6px;align-content:start}.loop li:before{content:counter(loop);font:500 .8125rem/1 var(--mono);color:var(--muted)}.loop b{color:var(--ink);font-weight:500;font-size:1.0625rem;letter-spacing:-.02em}section{margin-top:88px;display:grid;grid-gap:22px;gap:22px}.num{font:500 .8125rem/1 var(--mono);letter-spacing:.06em;color:var(--muted);text-transform:uppercase}h2{font-weight:400;font-size:clamp(1.75rem,3.6vw,2.5rem);letter-spacing:-.04em;line-height:1.1;text-wrap:balance}h3{font-weight:500;font-size:1.125rem;letter-spacing:-.02em;margin-top:10px}section li,section>p{color:var(--soft);max-width:44rem}section ol,section ul{margin:0;padding-left:1.25rem;display:grid;grid-gap:8px;gap:8px}section li::marker{color:var(--muted)}b,strong{font-weight:500}b,code,strong{color:var(--ink)}code{font:.875em var(--mono);background:var(--panel);padding:2px 6px;border-radius:6px}kbd{font:500 .8125rem/1 var(--mono);padding:4px 7px;border-radius:7px;background:var(--white);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line),0 1px 0 1px var(--line);white-space:nowrap}figure{margin:6px 0 0}figure img{border-radius:12px;box-shadow:0 0 0 1px rgba(13,16,23,.1),0 30px 60px -30px rgba(13,16,23,.4);background:#1E1E1E}figure.small img{max-width:620px}figcaption{margin-top:12px;font-size:.875rem;color:var(--muted);max-width:44rem}.tip{padding:16px 18px;border-radius:14px;background:var(--panel);font-size:.9375rem;color:var(--soft);max-width:44rem}.tip b{color:var(--ink)}.table{overflow-x:auto;max-width:100%}table{border-collapse:collapse;width:100%;max-width:44rem;font-size:.9375rem}td,th{text-align:left;padding:11px 12px 11px 0;border-bottom:1px solid var(--line);vertical-align:top;color:var(--soft)}th{font:500 .75rem/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}td:last-child{white-space:nowrap}footer{border-top:1px solid var(--line);padding-block:32px;font-size:.875rem;color:var(--muted)}footer div{max-width:1240px;margin-inline:auto;padding-inline:clamp(18px,4vw,48px);display:flex;flex-wrap:wrap;gap:10px 24px;justify-content:space-between}@media (max-width:920px){.page{grid-template-columns:minmax(0,1fr);padding-top:36px}.toc{position:static;grid-template-columns:repeat(2,minmax(0,1fr));padding:18px;border-radius:16px;background:var(--panel)}.toc p{grid-column:1/-1}.toc a{margin-left:0}.loop{grid-template-columns:repeat(2,minmax(0,1fr))}.bar nav{display:none}.bar .button{margin-left:auto}}@media (max-width:520px){body{font-size:16px}.loop,.toc{grid-template-columns:minmax(0,1fr)}section{margin-top:64px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.toc a{display:flex;gap:10px;align-items:baseline}.toc a span{font:500 .6875rem/1 var(--mono);color:var(--muted);min-width:1.4em}.toc{max-height:calc(100vh - 120px);overflow-y:auto;scrollbar-width:thin}main{min-width:0}section h3{margin-top:18px}section h3:first-of-type{margin-top:10px}.keys{display:inline-flex;gap:3px;white-space:nowrap}.or{color:var(--muted);padding-inline:4px}td:last-child{white-space:normal}.table+.table{margin-top:6px}section .table table{max-width:44rem}td kbd{margin-inline:1px}i{font-style:normal;color:var(--ink)}@media (max-width:920px){.toc{max-height:none;overflow:visible}}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:18px;gap:18px;margin-top:6px}.grid2 figure{margin:0}.grid2 figcaption{margin-top:8px}@media (max-width:600px){.grid2{grid-template-columns:minmax(0,1fr)}}