.bl,.bp{max-width:1040px;margin:0 auto;font-family:var(--font-sans),system-ui,sans-serif;font-kerning:normal;font-feature-settings:"kern","liga","calt","kern";hanging-punctuation:first allow-end last;--fs-read:1.1875rem;--fs-read-sm:1rem;--fs-card:1.25rem;--fs-card-lg:1.5rem;--lh-read:1.45;--track-caps:.08em;--read-col:34rem}.bl :is(h1,h2,h3),.bp :is(h1,h2,h3){text-rendering:optimizeLegibility;-webkit-hyphens:manual;hyphens:manual}.bl .meta,.bp .meta{letter-spacing:.08em}.bl .meta>*,.bp .meta>*{white-space:nowrap}.bl :is(em,i) :is(strong,b),.bl :is(strong,b) :is(em,i),.bp :is(em,i) :is(strong,b),.bp :is(strong,b) :is(em,i){font-style:normal}[data-s=how-to]{--sec:var(--lane-shape)}[data-s=rendering]{--sec:var(--lane-camera)}[data-s=agents]{--sec:var(--lane-sound)}[data-s=motion-sound]{--sec:var(--lane-text)}.sw{display:inline-block;width:9px;height:9px;border-radius:var(--r-in);background:var(--sec,var(--muted));flex:none}.bl-sec{display:inline-flex;align-items:center;gap:var(--sp-2)}.bl-mast{padding:var(--sp-8) 0 0}.bl-mast .kicker{color:var(--muted)}.bl-mast h1{font-size:var(--fs-h1);line-height:var(--lh-display);font-weight:var(--fw-head);letter-spacing:var(--track-display);max-width:18ch}.bl-h1-2{color:var(--muted)}.bl-dek{max-width:var(--measure);font-size:var(--fs-read);line-height:var(--lh-read);color:var(--ink-2);text-wrap:pretty}.bl-dek,.bl-rss{margin-top:var(--sp-5)}.bl-rss a{color:var(--muted);text-decoration:underline;-webkit-text-decoration-color:var(--line-2);text-decoration-color:var(--line-2);text-underline-offset:3px;transition:color var(--dur-hover) var(--ease-out)}@media (hover:hover){.bl-rss a:hover{color:var(--ink)}}.bl-bar{align-items:flex-start;justify-content:space-between;gap:var(--sp-3) var(--sp-5);margin-top:var(--sp-7)}.bl-bar,.bl-filter{display:flex;flex-wrap:wrap}.bl-filter{border:0;gap:var(--sp-2);padding:0;min-width:0}.bl-view{display:inline-flex;flex:none;padding:2px;border-radius:var(--r-pill);background:var(--surface);box-shadow:var(--ring)}.bl-view button{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:calc(var(--hit) - 4px);padding:0 var(--sp-4);border:0;border-radius:var(--r-pill);cursor:pointer;background:none;color:var(--ink-2);font:inherit;font-size:var(--fs-ui);font-weight:600;transition:background-color var(--dur-hover) var(--ease-out),color var(--dur-hover) var(--ease-out),scale var(--dur-press) var(--ease-press)}.bl-view button:active{scale:var(--press)}.bl-view svg{fill:currentColor}@media (hover:hover){.bl-view button:hover{color:var(--ink)}}.bl-view button:focus-visible{outline:var(--focus-ring);outline-offset:2px}.bl:not([data-view=list]) .bl-view [data-v=grid],.bl[data-view=list] .bl-view [data-v=list]{background:var(--ink);color:var(--bg)}.bl-filter label{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:var(--hit);padding:0 var(--sp-4);border-radius:var(--r-pill);cursor:pointer;background:var(--surface);box-shadow:var(--ring);color:var(--ink-2);font-size:var(--fs-ui);font-weight:600;transition:background-color var(--dur-hover) var(--ease-out),color var(--dur-hover) var(--ease-out),box-shadow var(--dur-hover) var(--ease-out),scale var(--dur-press) var(--ease-press)}.bl-filter label:active{scale:var(--press)}@media (hover:hover){.bl-filter label:hover{background:var(--raised);color:var(--ink)}}.bl-filter input:focus-visible+label{outline:var(--focus-ring);outline-offset:2px}.bl-filter input:checked+label{background:var(--ink);color:var(--bg);box-shadow:none}.bl-filter input:checked+label .bl-count{color:var(--bg)}.bl-count{font-family:var(--font-mono),monospace;font-size:var(--fs-label);font-weight:400;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.bl-intro{display:none;margin-top:var(--sp-4);max-width:var(--measure);color:var(--muted)}.bl:has(#f-agents:checked) .bl-grid>li:not([data-s=agents]),.bl:has(#f-how-to:checked) .bl-grid>li:not([data-s=how-to]),.bl:has(#f-motion-sound:checked) .bl-grid>li:not([data-s=motion-sound]),.bl:has(#f-rendering:checked) .bl-grid>li:not([data-s=rendering]){display:none}.bl:has(#f-agents:checked) .bl-intro[data-s=agents],.bl:has(#f-how-to:checked) .bl-intro[data-s=how-to],.bl:has(#f-motion-sound:checked) .bl-intro[data-s=motion-sound],.bl:has(#f-rendering:checked) .bl-intro[data-s=rendering]{display:block}.cv{position:relative;align-self:start;aspect-ratio:1200/630;overflow:hidden;border-radius:var(--r-in);background:var(--bg)}.cv,.cv img{display:block;width:100%}.cv img{height:100%;object-fit:cover}.bl-grid{list-style:none;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-gap:var(--sp-5);gap:var(--sp-5);margin-top:var(--sp-6)}.bl-card{grid-column:span 2;position:relative;display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border-radius:var(--r);box-shadow:var(--ring);transition:box-shadow var(--dur-hover) var(--ease-out),background-color var(--dur-hover) var(--ease-out)}.bl-min{display:none;color:var(--muted)}.bl-min:before{content:"·";margin-right:var(--sp-2)}.bl-card .bl-sec{flex-wrap:wrap;column-gap:var(--sp-2)}.bl-card .cv{border-radius:0}.bl-card-text{display:flex;flex-direction:column;gap:var(--sp-2);flex:1 1;padding:var(--sp-4)}.bl-card h2{font-size:var(--fs-card);line-height:var(--lh-sub);font-weight:var(--fw-head);letter-spacing:var(--track-sub);-webkit-line-clamp:3;min-height:calc(3 * var(--lh-sub) * 1em)}.bl-card h2,.bl-card-desc{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.bl-card-desc{color:var(--muted);font-size:var(--fs-ui);line-height:var(--lh-ui);-webkit-line-clamp:2}.bl-card h2 a:after{content:"";position:absolute;inset:0}.bl-card h2 a:focus-visible{outline:none}.bl-card:has(a:focus-visible){outline:var(--focus-ring);outline-offset:2px}@media (hover:hover) and (pointer:fine){.bl-card:hover{background:var(--surface-2);box-shadow:0 0 0 1px var(--line-2)}}@media (max-width:900px){.bl-card{grid-column:span 3}}@media (max-width:640px){.bl-mast{padding-top:var(--sp-7)}.bl-grid{grid-template-columns:minmax(0,1fr);gap:var(--sp-4)}.bl-card{grid-column:auto}.bl-bar .bl-view{margin-left:auto}}.bl[data-view=list] .bl-grid{row-gap:var(--sp-3)}.bl[data-view=list] .bl-card:not([data-feat]),.bl[data-view=list]:not(:has(#f-all:checked)) .bl-card{grid-column:1/-1;flex-direction:row;align-items:center}.bl[data-view=list] .bl-card:not([data-feat]) .cv,.bl[data-view=list]:not(:has(#f-all:checked)) .bl-card .cv{flex:none;width:11rem;margin:var(--sp-3) 0 var(--sp-3) var(--sp-3);border-radius:var(--r-in)}.bl[data-view=list] .bl-card:not([data-feat]) .bl-card-text,.bl[data-view=list]:not(:has(#f-all:checked)) .bl-card .bl-card-text{min-width:0;justify-content:center;gap:var(--sp-1);padding:var(--sp-3) var(--sp-4)}.bl[data-view=list] .bl-card:not([data-feat]) h2,.bl[data-view=list]:not(:has(#f-all:checked)) .bl-card h2{-webkit-line-clamp:2;min-height:0}.bl[data-view=list] .bl-card:not([data-feat]) .bl-card-desc,.bl[data-view=list]:not(:has(#f-all:checked)) .bl-card .bl-card-desc{-webkit-line-clamp:1}.bl[data-view=list] .bl-card:not([data-feat]) .bl-min,.bl[data-view=list]:not(:has(#f-all:checked)) .bl-card .bl-min{display:inline}@media (max-width:640px){.bl[data-view=list] .bl-card:not([data-feat]) .cv,.bl[data-view=list]:not(:has(#f-all:checked)) .bl-card .cv{width:6rem;margin:var(--sp-2) 0 var(--sp-2) var(--sp-2);align-self:flex-start}.bl[data-view=list] .bl-card:not([data-feat]) h2,.bl[data-view=list]:not(:has(#f-all:checked)) .bl-card h2{font-size:var(--fs-body)}.bl[data-view=list] .bl-card:not([data-feat]) .bl-card-desc,.bl[data-view=list]:not(:has(#f-all:checked)) .bl-card .bl-card-desc{-webkit-line-clamp:2}}.bl:has(#f-all:checked) .bl-card[data-feat] h2{min-height:0}.bl[data-view=list]:has(#f-all:checked) .bl-card[data-feat]{margin-bottom:calc(var(--sp-5) - var(--sp-3))}.bl:has(#f-all:checked) .bl-card[data-feat=lead] h2{font-size:var(--fs-panel);line-height:var(--lh-sub);-webkit-line-clamp:4}.bl:has(#f-all:checked) .bl-card[data-feat=lead] .bl-card-desc{font-size:var(--fs-body);-webkit-line-clamp:4}@media (min-width:641px){.bl:has(#f-all:checked) .bl-card[data-feat=lead]{grid-column:1/-1;flex-direction:row}.bl:has(#f-all:checked) .bl-card[data-feat=lead] .cv{flex:none;width:60%}.bl:has(#f-all:checked) .bl-card[data-feat=lead] .bl-card-text{justify-content:center;gap:var(--sp-3);padding:var(--sp-6)}.bl:has(#f-all:checked) .bl-card[data-feat=mid]{grid-column:span 3}}@media (min-width:641px) and (max-width:900px){.bl:has(#f-all:checked) .bl-card[data-feat=lead]{flex-direction:column}.bl:has(#f-all:checked) .bl-card[data-feat=lead] .cv{width:100%}.bl:has(#f-all:checked) .bl-card[data-feat=lead] .bl-card-text{padding:var(--sp-5)}}.bp-head{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:var(--sp-6);gap:var(--sp-6);padding:var(--sp-8) 0 0;align-items:end}.bp-head .kicker{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--muted);margin-bottom:var(--sp-4)}.bp-head .kicker a{color:var(--muted);transition:color var(--dur-hover) var(--ease-out)}@media (hover:hover){.bp-head .kicker a:hover{color:var(--ink)}}.bp-head h1{font-size:var(--fs-h1);line-height:var(--lh-display);font-weight:var(--fw-head);letter-spacing:var(--track-display);max-width:18ch}.bp-dek{margin-top:var(--sp-4);max-width:var(--measure);font-size:var(--fs-read);line-height:var(--lh-read);color:var(--ink-2);text-wrap:pretty}.bp-meta{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);margin-top:var(--sp-5)}.bp-hero{margin-top:var(--sp-7)}.bp-hero .cv,.bp-hero-fig,.bp-hero-fig img{border-radius:var(--r);box-shadow:var(--ring)}.bp-hero-fig{padding:var(--sp-3);background:var(--surface)}.bp-hero-fig img{display:block;width:100%;height:auto;border-radius:var(--r-in);box-shadow:none}.bp-grid{display:grid;grid-template-columns:minmax(0,var(--read-col));grid-gap:var(--sp-7);gap:var(--sp-7);margin-top:var(--sp-7)}.bp-toc{display:none}@media (min-width:1000px){.bp-grid:has(.bp-toc){grid-template-columns:240px minmax(0,var(--read-col))}.bp-toc{display:block;position:-webkit-sticky;position:sticky;top:var(--sp-7);align-self:start;padding-right:var(--sp-4);border-right:1px solid var(--line)}}.bp-toc ol{list-style:none;display:grid;grid-gap:0;gap:0;margin-top:var(--sp-3)}.bp-toc a{display:grid;grid-template-columns:var(--sp-5) 1fr;align-items:center;min-height:var(--hit);font-size:var(--fs-ui);line-height:var(--lh-ui);color:var(--ink-2);transition:color var(--dur-hover) var(--ease-out)}@media (hover:hover){.bp-toc a:hover{color:var(--ink)}}.bp-toc-n{font-family:var(--font-mono),monospace;font-size:var(--fs-label);color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.bp-body{min-width:0;counter-reset:fig h2}.bp-prose{font-size:var(--fs-read);line-height:var(--lh-read);color:var(--ink-2);overflow-wrap:break-word}.bp-prose>*+*{margin-top:.75em}.bp-prose>p:first-child{color:var(--ink)}.bp-prose strong{color:var(--ink);font-weight:var(--fw-head)}.bp-prose h2,.bp-prose h3{color:var(--ink);scroll-margin-top:24px}.bp-prose h2{font-size:var(--fs-card-lg);line-height:var(--lh-sub);letter-spacing:var(--track-sub);font-weight:var(--fw-head);margin-top:2.2em;counter-increment:h2}.bp-prose h2:before{content:counter(h2,decimal-leading-zero);display:block;margin-bottom:var(--sp-2);font-family:var(--font-mono),monospace;font-size:var(--fs-code);font-weight:400;letter-spacing:var(--track-caps);color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.bp-prose h3{font-size:var(--fs-read);line-height:1.3;font-weight:var(--fw-head);margin-top:1.6em}.bp-prose h2+*,.bp-prose h3+*{margin-top:.4em}.bp-prose a{color:var(--accent-2);text-decoration:underline;-webkit-text-decoration-color:var(--accent-line);text-decoration-color:var(--accent-line);text-decoration-thickness:1px;text-underline-offset:.2em;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;transition:-webkit-text-decoration-color var(--dur-hover) var(--ease-out);transition:text-decoration-color var(--dur-hover) var(--ease-out);transition:text-decoration-color var(--dur-hover) var(--ease-out),-webkit-text-decoration-color var(--dur-hover) var(--ease-out)}@media (hover:hover){.bp-prose a:hover{-webkit-text-decoration-color:currentColor;text-decoration-color:currentColor}}.bp-prose ol,.bp-prose ul{padding-left:1.3em}.bp-prose li+li{margin-top:.35em}.bp-prose li::marker{color:var(--muted)}.bp-prose blockquote{margin:2em 0;padding:var(--sp-1) 0 var(--sp-1) var(--sp-5);border-left:3px solid var(--sec,var(--line-2));font-size:var(--fs-card-lg);line-height:1.3;font-weight:var(--fw-head);letter-spacing:var(--track-sub);color:var(--ink);text-wrap:balance}.bp-prose hr{border:0;border-top:1px solid var(--line);margin:2.4em 0}.bp-prose :not(pre)>code{font-family:var(--font-mono),monospace;font-size:max(12px,.86em);background:var(--raised);border-radius:var(--r-in);padding:1px var(--sp-2);color:var(--ink);-webkit-box-decoration-break:clone;box-decoration-break:clone}.bp-code{position:relative;background:var(--surface);border-radius:var(--r);box-shadow:var(--ring);margin-top:1.5em;overflow:hidden}.bp-code:before{content:"";display:block;height:var(--sp-6);border-bottom:1px solid var(--line);background:var(--surface-2)}.bp-code-lbl{position:absolute;top:0;left:var(--sp-4);line-height:var(--sp-6);font-size:var(--fs-label);letter-spacing:var(--track-caps);text-transform:uppercase;color:var(--muted)}.bp-code pre,.bp-code-lbl{font-family:var(--font-mono),monospace}.bp-code pre{overflow-x:auto;padding:var(--sp-4);font-size:var(--fs-code);line-height:1.7;color:var(--ink-2);-moz-tab-size:2;tab-size:2}.bp-body figure{margin:2em 0;padding:var(--sp-3);background:var(--surface);border-radius:var(--r);box-shadow:var(--ring);counter-increment:fig}.bp-body figure:first-child{margin-top:0}.bp-body figure img,.bp-body figure video{display:block;width:100%;height:auto;border-radius:var(--r-in)}.bp-body figcaption{margin-top:var(--sp-3);padding:0 var(--sp-1);font-size:var(--fs-ui);line-height:var(--lh-body);color:var(--muted)}.bp-body figcaption:before{content:"Fig. " counter(fig,decimal-leading-zero);margin-right:var(--sp-3);font-family:var(--font-mono),monospace;font-size:var(--fs-label);letter-spacing:var(--track-caps);text-transform:uppercase;color:var(--ink-2)}.bp-prose>img,.bp-prose>p>img,.bp-prose>video{display:block;max-width:100%;height:auto;padding:var(--sp-3);background:var(--surface);border-radius:var(--r);box-shadow:var(--ring)}.bp-prose video{width:100%}.bp-prose table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:var(--fs-body);line-height:var(--lh-ui);font-feature-settings:tabular-nums lining-nums;font-variant-numeric:tabular-nums lining-nums;background:var(--surface);border-radius:var(--r);box-shadow:var(--ring);padding:var(--sp-2) var(--sp-4) var(--sp-3);margin-top:1.5em}.bp-prose th{font-family:var(--font-mono),monospace;font-size:var(--fs-label);letter-spacing:var(--track-caps);text-transform:uppercase;font-weight:400;color:var(--muted);text-align:left;white-space:nowrap}.bp-prose td,.bp-prose th{padding:var(--sp-3) var(--sp-4) var(--sp-3) 0;border-bottom:1px solid var(--line);vertical-align:top}.bp-prose tr:last-child td{border-bottom:0}.bp-prose td:first-child{color:var(--ink)}.bp-prose details{background:var(--surface);border-radius:var(--r);box-shadow:var(--ring);padding:var(--sp-3) var(--sp-4)}.bp-prose summary{cursor:pointer;color:var(--ink);font-weight:600}.bp-prose details[open]>summary{margin-bottom:var(--sp-3)}.bp-prose details>*+*{margin-top:.8em}.bp-made{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-gap:var(--sp-5);gap:var(--sp-5);align-items:center;margin-top:var(--sp-8);padding:var(--sp-6)}.bp-made-glyph{width:58px;height:30px;color:var(--ink)}.bp-made h2{font-size:var(--fs-card);font-weight:var(--fw-head);letter-spacing:var(--track-sub)}.bp-made p{margin-top:var(--sp-2);max-width:var(--measure);color:var(--ink-2);font-size:var(--fs-body);line-height:var(--lh-read)}.bp-made-act{display:flex;flex-wrap:wrap;gap:var(--sp-3)}@media (max-width:900px){.bp-made{grid-template-columns:auto minmax(0,1fr)}.bp-made-act{grid-column:1/-1}}@media (max-width:640px){.bp-made{grid-template-columns:minmax(0,1fr);padding:var(--sp-5)}.bp-made-act .btn{flex:1 1;justify-content:center}}.bp-related{margin-top:var(--sp-9)}.bp-related>h2{font-size:var(--fs-panel);letter-spacing:var(--track-head);font-weight:var(--fw-head)}@media (max-width:640px){.bp-head{padding-top:var(--sp-7)}.bl-dek,.bp-dek,.bp-prose{font-size:var(--fs-read-sm)}.bp-body figure{padding:var(--sp-2);margin-inline:calc(var(--sp-1) * -1)}}@media (prefers-reduced-motion:reduce){.bl-card,.bl-filter label,.bl-view button,.bp-prose a,.bp-toc a{transition:none}}