.pb-wrap{padding:calc(var(--hh,57px) + 2rem) 0 4rem;background:#e9e7e2;min-height:100vh;overflow-x:hidden}.pb-backlink{margin:0 2rem 1rem;display:inline-block}.pb-head{margin:0 2rem 1.5rem}.pb-lede{color:#666;margin:.35rem 0 0;font-style:italic}.pb-region{flex-direction:column;align-items:center;font-family:Inter,system-ui,sans-serif;display:flex}.pb-stage{perspective:2200px;position:relative}.pb-book{transform-style:preserve-3d;transition:transform .8s cubic-bezier(.645,.045,.355,1);display:flex;position:absolute;inset:0}.pb-book.fade{transition:none;animation:.25s pb-fade}@keyframes pb-fade{0%{opacity:0}to{opacity:1}}.pb-half{width:50%;height:100%;position:relative}.pb-half.has{box-shadow:0 2px 8px #0000001a,8px 8px 32px #00000047}.pb-half.l.has{cursor:w-resize}.pb-half.r.has{cursor:e-resize}.pb-img{width:100%;height:100%;position:relative;overflow:hidden}.pb-img>img{object-fit:fill;-webkit-user-select:none;user-select:none;width:100%;height:100%;transition:filter .25s;display:block}.pb-half:hover .pb-img>img{filter:brightness(1.03)}.pb-zoom{cursor:zoom-in;opacity:0;color:#0f0f0f;background:#ffffffe6;border:1px solid #0f0f0f26;border-radius:999px;place-items:center;width:32px;height:32px;font-size:15px;line-height:1;transition:opacity .2s;display:grid;position:absolute;top:12px}.pb-zoom.l{left:12px}.pb-zoom.r{right:12px}.pb-half:hover .pb-zoom,.pb-zoom:focus-visible,.pb-mpage .pb-zoom{opacity:1}.pb-zoom:focus-visible{outline-offset:2px;outline:2px solid #0f0f0f}.pb-leaf{width:50%;height:100%;transform-style:preserve-3d;z-index:5;position:absolute;top:0}.pb-leaf.fwd{transform-origin:0;animation:.8s cubic-bezier(.645,.045,.355,1) forwards pb-fwd;left:50%}.pb-leaf.bwd{transform-origin:100%;animation:.8s cubic-bezier(.645,.045,.355,1) forwards pb-bwd;left:0}@keyframes pb-fwd{0%{transform:rotateY(0)}to{transform:rotateY(-180deg)}}@keyframes pb-bwd{0%{transform:rotateY(0)}to{transform:rotateY(180deg)}}.pb-leaf-face{backface-visibility:hidden;position:absolute;inset:0;box-shadow:0 2px 8px #0000001a}.pb-leaf-face.backf{transform:rotateY(180deg)}.pb-shade{pointer-events:none;opacity:0;background:linear-gradient(90deg,#00000040,#0000);animation:.8s forwards pb-shade;position:absolute;inset:0}.pb-leaf.bwd .pb-shade{background:linear-gradient(270deg,#00000040,#0000)}@keyframes pb-shade{0%{opacity:0}50%{opacity:1}to{opacity:0}}.pb-paper{color:#0f0f0f;background:#f5f5f2;width:100%;height:100%;position:relative;overflow:hidden}.pb-strip{width:calc(6 * var(--u));background:#00000014;position:absolute;top:0;bottom:0}.pb-strip.l{left:0}.pb-strip.r{right:0}.pb-print{left:calc(96 * var(--u));top:calc(120 * var(--u));width:calc(528 * var(--u));height:calc(600 * var(--u));padding:calc(8 * var(--u));box-sizing:border-box;background:#fff;position:absolute}.pb-print img{object-fit:cover;object-position:50% 45%;width:100%;height:100%;display:block}.pb-cv-t{left:calc(96 * var(--u));top:calc(772 * var(--u));max-width:calc(528 * var(--u));font-weight:800;font-size:calc(40 * var(--u));letter-spacing:calc(1.2 * var(--u));color:#0f0f0f;margin:0;line-height:1.05;position:absolute}.pb-cv-s{left:calc(96 * var(--u));top:calc(880 * var(--u));font-weight:700;font-size:max(9px, calc(12 * var(--u)));letter-spacing:calc(.96 * var(--u));color:#262626;margin:0;position:absolute}.pb-cv-m{left:calc(96 * var(--u));top:calc(904 * var(--u));font-weight:400;font-size:max(9px, calc(11 * var(--u)));color:#666;margin:0;position:absolute}.pb-cv-hint{left:0;right:0;bottom:calc(36 * var(--u));text-align:center;font-size:max(9px, calc(11 * var(--u)));color:#666;margin:0;position:absolute}.pb-back-in{justify-content:center;align-items:center;gap:calc(28 * var(--u));text-align:center;flex-direction:column;display:flex;position:absolute;inset:0}.pb-bk-t{font-weight:800;font-size:calc(28 * var(--u));color:#0f0f0f;margin:0}.pb-pill{font-weight:700;font-size:max(9px, calc(12 * var(--u)));letter-spacing:.08em;padding:calc(12 * var(--u)) calc(22 * var(--u));color:#0f0f0f;border:1px solid #0f0f0f;border-radius:999px;text-decoration:none}.pb-pill:hover,.pb-pill:focus-visible{color:#f5f5f2;background:#0f0f0f}.pb-again{font:inherit;font-size:max(9px, calc(12 * var(--u)));color:#444;cursor:pointer;background:0 0;border:0;text-decoration:underline}.pb-intro{pointer-events:none;color:#0f0f0f;position:absolute;inset:0}.pb-intro-t{left:calc(50 * var(--u));top:calc(614 * var(--u));font-weight:800;font-size:calc(52 * var(--u));letter-spacing:calc(1.56 * var(--u));margin:0;line-height:1;position:absolute}.pb-intro-s{left:calc(50 * var(--u));top:calc(670 * var(--u));font-weight:700;font-size:max(9px, calc(12 * var(--u)));letter-spacing:calc(.96 * var(--u));color:#262626;margin:0;position:absolute}.pb-intro-c1,.pb-intro-c2{top:calc(712 * var(--u));width:calc(300 * var(--u));font-size:max(9px, calc(9.5 * var(--u)));line-height:max(14px, calc(15 * var(--u)));color:#2e2e2e;position:absolute}.pb-intro-c1{left:calc(50 * var(--u))}.pb-intro-c2{left:calc(372 * var(--u))}.pb-intro-c1 p,.pb-intro-c2 p{margin:0 0 max(14px, calc(15 * var(--u)))}.pb-ctrl{align-items:center;gap:1.25rem;margin-top:1.75rem;display:flex}.pb-ctrl button{color:#0f0f0f;cursor:pointer;background:0 0;border:1px solid #0f0f0f;border-radius:999px;width:40px;height:40px;font-size:1rem}.pb-ctrl button:disabled{opacity:.3;cursor:not-allowed}.pb-ctrl button:focus-visible{outline-offset:3px;outline:2px solid #0f0f0f}.pb-ind{color:#666;text-align:center;min-width:6.5rem;font-size:12px}.pb-mobile{position:relative;overflow:hidden}.pb-mpage{aspect-ratio:720/1018;width:100%;box-shadow:0 2px 8px #0000001a,8px 8px 32px #00000047}.pb-mpage.land{aspect-ratio:1440/1018}.pb-mpage.in-r{animation:.3s pb-in-r}.pb-mpage.in-l{animation:.3s pb-in-l}@keyframes pb-in-r{0%{opacity:0;transform:translate(40%)}to{opacity:1;transform:none}}@keyframes pb-in-l{0%{opacity:0;transform:translate(-40%)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.pb-mpage.in-r,.pb-mpage.in-l{animation:.25s pb-fade}.pb-book{transition:none}}.pb-rotate{text-align:center;color:#666;margin:.75rem 0 0;font-size:12px}@media (width<=767px){.pb-backlink,.pb-head{margin-left:1rem;margin-right:1rem}}.pb-lb-bg{z-index:60;background:#0a0a0aeb;position:fixed;inset:0}.pb-lb{z-index:61;justify-content:center;align-items:center;font-family:Inter,system-ui,sans-serif;display:flex;position:fixed;inset:0}.pb-lb-img{object-fit:contain;max-width:94vw;max-height:88vh}.pb-lb-intro{width:calc(1440 * var(--u));height:calc(1018 * var(--u));display:flex}.pb-lb-intro .pb-img{width:50%}.pb-lb-x{color:#fff;cursor:pointer;background:#0006;border:1px solid #fff6;border-radius:999px;width:44px;height:44px;font-size:1.3rem;position:fixed;top:1.25rem;right:1.25rem}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pb-region h2,.pb-region p,.pb-region button,.pb-region a,.pb-lb h2,.pb-lb p{text-transform:none;font-family:Inter,system-ui,sans-serif!important}.pb-print{overflow:hidden}.pb-print img{transform-origin:50% 45%;transform:scale(1.12)translate(1.5%)}.pb-intro-c1,.pb-intro-c2{line-height:max(12px, calc(15 * var(--u)))}.pb-intro-c1 p,.pb-intro-c2 p{margin-bottom:max(12px, calc(15 * var(--u)))}.pb-print-in{width:100%;height:100%;overflow:hidden}.pb-print img{transform:scale(1.16)translate(1.5%)}@media (width<=767px){.pb-intro-below{pointer-events:auto;padding:24px 0 0;position:static}.pb-intro-below .pb-intro-t{letter-spacing:0;overflow-wrap:anywhere;font-size:32px;line-height:1.15;position:static}.pb-intro-below .pb-intro-s{letter-spacing:0;margin:12px 0 20px;font-size:12px;line-height:1.6;position:static}.pb-intro-below .pb-intro-c1,.pb-intro-below .pb-intro-c2{width:100%;font-size:15px;line-height:1.6;position:static}.pb-intro-below .pb-intro-c1 p,.pb-intro-below .pb-intro-c2 p{margin:0 0 16px}.pb-lb:has(.pb-lb-intro){align-items:flex-start;padding:64px 0 24px;overflow-y:auto}.pb-lb-intro{background:var(--background);width:94vw;height:auto;display:block}.pb-lb-intro .pb-img{width:100%;height:auto}.pb-lb-intro .pb-img>img{height:auto}.pb-lb-intro .pb-intro-below{padding:24px 16px 8px}}.ml{--ml-ink:#111827;--ml-cloud:#f4f1e8;--ml-rain:#39b9d1;--ml-chartreuse:#d7f45b;--ml-coral:#ff6b5e;background:var(--ml-cloud);color:var(--ml-ink);font-family:General Sans,system-ui,sans-serif}.ml-wrap{max-width:1180px;margin:0 auto;padding:0 1.25rem 6rem}.ml-hero{border-bottom:1px solid #1118271f;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);align-items:center;gap:2.5rem;padding-top:2.5rem;padding-bottom:3rem;display:grid}@media (width<=900px){.ml-hero{grid-template-columns:1fr;padding-top:1.5rem}}.ml-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--ml-ink);opacity:.65;margin:0 0 .9rem;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.72rem}.ml-h1{margin:0 0 1rem;font-family:Boska,Georgia,serif;font-size:clamp(2.1rem,4.4vw,3.4rem);line-height:1.02}.ml-summary{max-width:42ch;margin:0 0 1.4rem;font-size:1.05rem;line-height:1.5}.ml-meta{flex-wrap:wrap;gap:.4rem 1.6rem;margin:0 0 1.6rem;padding:0;font-size:.85rem;list-style:none;display:flex}.ml-meta dt{opacity:.6;margin-right:.35rem;font-weight:600;display:inline}.ml-meta dd{margin:0;display:inline}.ml-meta>div{gap:.3rem;display:flex}.ml-status{text-transform:uppercase;letter-spacing:.07em;border:1px solid var(--ml-ink);border-radius:999px;margin-bottom:1.4rem;padding:.3rem .65rem;font-size:.7rem;display:inline-block}.ml-cta{background:var(--ml-ink);color:var(--ml-cloud);border:1px solid var(--ml-ink);border-radius:999px;align-items:center;gap:.5rem;min-height:44px;padding:.85rem 1.4rem;font-size:.95rem;font-weight:600;text-decoration:none;transition:background .2s,color .2s;display:inline-flex}.ml-cta:hover{color:var(--ml-ink);background:0 0}.ml-cta:focus-visible,.ml a:focus-visible,.ml button:focus-visible,.ml input:focus-visible{outline:3px solid var(--ml-coral);outline-offset:3px}.ml-stage{aspect-ratio:4/3;background:linear-gradient(165deg, #fff 0%, var(--ml-cloud) 60%, #e9e4d4 100%);border:1px solid #1118271f;border-radius:1.2rem;width:100%;position:relative;overflow:hidden}.ml-stage svg{width:100%;height:100%;display:block}.ml-lab{border-bottom:1px solid #1118271f;padding:3.5rem 0}.ml-section-title{margin:0 0 .6rem;font-family:Boska,Georgia,serif;font-size:clamp(1.5rem,2.6vw,2.1rem)}.ml-section-sub{opacity:.78;max-width:60ch;margin:0 0 2rem;line-height:1.5}.ml-lab-grid{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:start;gap:2rem;display:grid}@media (width<=900px){.ml-lab-grid{grid-template-columns:1fr}}.ml-canvas{aspect-ratio:16/10;background:#fff;border:1px solid #11182724;border-radius:1rem;width:100%;position:relative;overflow:hidden}.ml-canvas svg{width:100%;height:100%;display:block}.ml-controls{flex-direction:column;gap:1.1rem;display:flex}.ml-field{flex-direction:column;gap:.4rem;display:flex}.ml-field label{text-transform:uppercase;letter-spacing:.05em;justify-content:space-between;font-size:.78rem;font-weight:600;display:flex}.ml-field input[type=text]{background:#fff;border:1px solid #1118274d;border-radius:.5rem;min-height:44px;padding:.7rem .8rem;font-family:inherit;font-size:1rem}.ml-field input[type=range]{width:100%;accent-color:var(--ml-rain);cursor:pointer;min-height:44px}.ml-fieldval{opacity:.6;text-transform:none;letter-spacing:0;font-weight:400}.ml-actions{flex-wrap:wrap;gap:.6rem;margin-top:.2rem;display:flex}.ml-btn{border:1px solid var(--ml-ink);min-width:44px;min-height:44px;color:var(--ml-ink);cursor:pointer;background:0 0;border-radius:.6rem;padding:.6rem 1.1rem;font-size:.85rem;font-weight:600;transition:background .15s,color .15s}.ml-btn:hover,.ml-btn[aria-pressed=true]{background:var(--ml-ink);color:var(--ml-cloud)}.ml-btn-primary{background:var(--ml-coral);border-color:var(--ml-coral);color:var(--ml-ink)}.ml-btn-primary:hover{background:var(--ml-ink);color:var(--ml-cloud)}.ml-presets{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.ml-preset-btn{cursor:pointer;background:#fff;border:1px solid #11182759;border-radius:999px;min-height:44px;padding:.5rem 1rem;font-size:.82rem;font-weight:600}.ml-preset-btn[aria-pressed=true]{background:var(--ml-rain);border-color:var(--ml-rain);color:var(--ml-ink)}.ml-disclaimer{opacity:.65;max-width:44ch;margin:.3rem 0 0;font-size:.76rem;font-style:italic}.ml-live{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.ml-case{border-bottom:1px solid #1118271f;padding:3.5rem 0}.ml-case p{max-width:62ch;line-height:1.6}.ml-case blockquote{max-width:58ch;margin:0;font-family:Boska,Georgia,serif;font-size:1.15rem;line-height:1.55}.ml-diagrams{grid-template-columns:repeat(4,1fr);gap:1.2rem;margin-top:1.6rem;display:grid}@media (width<=900px){.ml-diagrams{grid-template-columns:repeat(2,1fr)}}@media (width<=560px){.ml-diagrams{grid-template-columns:1fr}}.ml-diagram{background:#fff;border:1px solid #11182724;border-radius:.8rem;padding:1rem}.ml-diagram svg{width:100%;height:auto;margin-bottom:.6rem;display:block}.ml-diagram h3{margin:0 0 .3rem;font-size:.95rem}.ml-diagram p{opacity:.75;margin:0;font-size:.82rem}.ml-specimens{grid-template-columns:repeat(3,1fr);gap:1.2rem;margin-top:1.6rem;display:grid}@media (width<=900px){.ml-specimens{grid-template-columns:repeat(2,1fr)}}@media (width<=560px){.ml-specimens{grid-template-columns:1fr}}.ml-specimen{background:#fff;border:1px solid #11182724;border-radius:.8rem;overflow:hidden}.ml-specimen .ml-stage{aspect-ratio:4/3;border:none;border-bottom:1px solid #1118271a;border-radius:0}.ml-specimen figcaption{padding:.7rem .9rem;font-family:ui-monospace,monospace;font-size:.78rem}.ml-links{flex-wrap:wrap;gap:.9rem;padding:3rem 0 1rem;display:flex}.ml-links a{border:1px solid var(--ml-ink);min-height:44px;color:var(--ml-ink);border-radius:.6rem;align-items:center;gap:.4rem;padding:.7rem 1.1rem;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-flex}.ml-links a:hover{background:var(--ml-ink);color:var(--ml-cloud)}.ml-droplet{animation:linear infinite paused ml-fall}.ml-anim .ml-droplet{animation-play-state:running}@keyframes ml-fall{0%{opacity:0;transform:translateY(-8%)}12%{opacity:1}to{opacity:0;transform:translateY(112%)}}.ml-shimmer{animation:2.6s ease-in-out infinite paused ml-shimmer}.ml-anim .ml-shimmer{animation-play-state:running}@keyframes ml-shimmer{0%,to{transform:translateY(0)}50%{transform:translateY(-1.5%)}}@media (prefers-reduced-motion:reduce){.ml-droplet,.ml-shimmer{animation:none!important}}.mp-wrap{aspect-ratio:4/3;background:var(--ml-cloud,#f4f1e8);width:100%;display:block}
