.bp-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:60;pointer-events:none}.bp-progress span{display:block;height:100%;background:var(--ink);transition:width .3s var(--ease-out)}.bp-head{padding:clamp(56px,7vw,80px) 0 clamp(48px,6vw,64px);text-align:center}.bp-head-inner{max-width:900px;margin-inline:auto;padding-inline:var(--gutter)}.bp-meta{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:32px;font-size:14px;font-weight:500;color:var(--ink)}.bp-meta .dot{color:var(--mute)}.bp-title{font-size:clamp(32px,4vw,48px);line-height:1.2;letter-spacing:-.04em;font-weight:500;color:var(--ink);margin-bottom:24px}.bp-summary{max-width:700px;margin:0 auto 40px;font-size:clamp(16px,1.4vw,18px);line-height:1.5;font-weight:500;color:var(--mute)}.bp-author{display:flex;justify-content:center;font-size:14px;font-weight:500;color:var(--ink)}.bp-author,.bp-author a{align-items:center;gap:8px}.bp-author a{display:inline-flex;transition:opacity .2s var(--ease)}.bp-author a:hover{opacity:.8}.bp-avatar{width:28px;height:28px;border-radius:6px;object-fit:cover;background:var(--soft);display:inline-flex;align-items:center;justify-content:center;font-size:12px;color:var(--ink)}.bp-hero{max-width:1440px;margin:0 auto 48px;padding-inline:20px}.bp-hero-credit{margin:10px 4px 0;font-size:12px;color:var(--mute);text-align:right}.bp-hero-credit a{color:inherit;text-decoration:underline;text-underline-offset:2px}.bp-hero-frame{position:relative;width:100%;aspect-ratio:16/9;border-radius:16px;overflow:hidden;background:var(--soft)}.bp-layout{max-width:1200px;margin-inline:auto;padding:48px var(--gutter);display:flex;gap:clamp(32px,3vw,48px)}.bp-toc{width:220px;flex:0 0 auto}.bp-side{width:260px;flex:0 0 auto}.bp-sticky{position:-webkit-sticky;position:sticky;top:calc(var(--nav-h) + 24px)}.bp-back{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--ink-2);margin-bottom:24px;transition:color .2s var(--ease)}.bp-back:hover{color:var(--ink)}.bp-back svg{width:16px;height:16px}.bp-toc ul{display:grid;gap:12px;margin-top:16px}.bp-toc nav a{display:block;font-size:14px;line-height:1.4;color:var(--mute);transition:color .2s var(--ease)}.bp-toc nav a:hover{color:var(--ink)}.bp-toc .l-h1,.bp-toc .l-h2{font-weight:500}.bp-toc .l-h3{padding-left:12px;opacity:.85}.bp-toc .l-h4{padding-left:20px;opacity:.7}.bp-article{flex:1;min-width:0;padding-bottom:32px}.bp-article-inner{max-width:720px}.bp-body{color:var(--ink);font-size:16px;line-height:1.625}.bp-body>:first-child{margin-top:0}.bp-body p{margin:0 0 20px}.bp-body h1,.bp-body h2{font-size:24px;line-height:1.3;font-weight:700;letter-spacing:-.015em;margin:40px 0 16px;scroll-margin-top:calc(var(--nav-h) + 40px)}.bp-body h3{font-size:20px;line-height:1.35;letter-spacing:-.01em;margin:32px 0 12px}.bp-body h3,.bp-body h4{font-weight:600;scroll-margin-top:calc(var(--nav-h) + 40px)}.bp-body h4{font-size:18px;margin:24px 0 8px}.bp-body b,.bp-body strong{font-weight:700}.bp-body em{font-style:italic}.bp-body u{text-decoration:underline}.bp-body s{text-decoration:line-through}.bp-body a{color:var(--ink);text-decoration:underline;text-underline-offset:2px;transition:opacity .2s var(--ease)}.bp-body a:hover{opacity:.7}.bp-body ol,.bp-body ul{margin:20px 0;padding-left:24px;display:grid;gap:8px}.bp-body ul{list-style:disc outside}.bp-body ol{list-style:decimal outside}.bp-body li{padding-left:4px}.bp-body li::marker{color:var(--mute)}.bp-body blockquote{border-left:4px solid var(--line);padding-left:20px;margin:32px 0;font-style:italic;font-size:18px;color:var(--ink-2)}.bp-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.875em;background:var(--soft);border-radius:4px;padding:2px 8px}.bp-body pre{background:var(--tile);border-radius:12px;padding:20px;margin:24px 0;overflow-x:auto;font-size:14px;line-height:1.55}.bp-body pre code{background:none;padding:0}.bp-body .bl-code{margin:24px 0}.bp-body .bl-code .k{display:block;margin-bottom:8px}.bp-body .bl-code pre{margin:0}.bp-body .bl-figure{margin:32px 0}.bp-body .bl-figure img{width:100%;border-radius:12px}.bp-body .bl-figure figcaption{text-align:center;font-size:14px;color:var(--mute);margin-top:12px}.bp-body img{border-radius:12px}.bp-body .bl-table-wrap{overflow-x:auto;margin:24px 0;border-radius:12px;box-shadow:inset 0 0 0 1px var(--line)}.bp-body table{width:100%;min-width:520px;border-collapse:collapse;font-size:15px}.bp-body td,.bp-body th{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top}.bp-body th{background:var(--tile);font-weight:600}.bp-body tr:last-child td{border-bottom:0}.bp-share{margin-top:48px;padding-top:32px;border-top:1px solid var(--line);display:flex;align-items:center;gap:12px;flex-wrap:wrap}.bp-share .lbl{font-size:14px;font-weight:500;color:var(--ink)}.bp-share a,.bp-share button{width:36px;height:36px;border-radius:50%;border:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;background:var(--soft);color:var(--mute);transition:background .2s var(--ease),color .2s var(--ease),transform .1s ease-out}.bp-share a:hover,.bp-share button:hover{background:var(--tile-2);color:var(--ink)}.bp-share a:active,.bp-share button:active{transform:scale(.94)}.bp-share svg{width:16px;height:16px}.bp-share .copied{font-size:13px;color:var(--mute)}.bp-side h3{font-size:16px;font-weight:500;color:var(--mute);margin-bottom:24px}.bp-side-item{display:block;margin-bottom:24px}.bp-side-item:last-child{margin-bottom:0}.bp-side-item h4{font-size:16px;font-weight:500;line-height:1.35;color:var(--ink);margin-bottom:4px;transition:opacity .2s var(--ease)}.bp-side-item:hover h4{opacity:.7}.bp-side-item p{font-size:14px;color:var(--mute);font-variant-numeric:tabular-nums}.bp-mobile-back{display:none;padding:0 20px 32px}.bp-state{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:80px var(--gutter)}.bp-state h1{font-size:36px;font-weight:500;letter-spacing:-.03em;margin-bottom:16px}.bp-state p{color:var(--mute);margin-bottom:32px}.bp-spinner{width:32px;height:32px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--ink);animation:bp-spin .8s linear infinite}@keyframes bp-spin{to{transform:rotate(1turn)}}@media (max-width:1279px){.bp-side{display:none}}@media (max-width:1023px){.bp-toc{display:none}.bp-mobile-back{display:block}}@media (prefers-reduced-motion:reduce){.bp-spinner{animation-duration:2s}}