@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/chakra-petch-thai-500-normal.c84c09c9.woff2) format("woff2"),url(/_next/static/media/chakra-petch-thai-500-normal.b110bcf2.woff) format("woff");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/chakra-petch-vietnamese-500-normal.ed0e55ad.woff2) format("woff2"),url(/_next/static/media/chakra-petch-vietnamese-500-normal.92a99293.woff) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/chakra-petch-latin-ext-500-normal.5c054aac.woff2) format("woff2"),url(/_next/static/media/chakra-petch-latin-ext-500-normal.5a04b9af.woff) format("woff");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/chakra-petch-latin-500-normal.7344c7f0.woff2) format("woff2"),url(/_next/static/media/chakra-petch-latin-500-normal.99bc4913.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/chakra-petch-thai-600-normal.d08e2214.woff2) format("woff2"),url(/_next/static/media/chakra-petch-thai-600-normal.e1e77e51.woff) format("woff");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/chakra-petch-vietnamese-600-normal.59a541e0.woff2) format("woff2"),url(/_next/static/media/chakra-petch-vietnamese-600-normal.99e939ff.woff) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/chakra-petch-latin-ext-600-normal.411955de.woff2) format("woff2"),url(/_next/static/media/chakra-petch-latin-ext-600-normal.5f60671c.woff) format("woff");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/chakra-petch-latin-600-normal.ed259760.woff2) format("woff2"),url(/_next/static/media/chakra-petch-latin-600-normal.c400afb4.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/chakra-petch-thai-700-normal.96853e31.woff2) format("woff2"),url(/_next/static/media/chakra-petch-thai-700-normal.2fde50d0.woff) format("woff");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/chakra-petch-vietnamese-700-normal.974a9dea.woff2) format("woff2"),url(/_next/static/media/chakra-petch-vietnamese-700-normal.c1d9667f.woff) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/chakra-petch-latin-ext-700-normal.ca3e9292.woff2) format("woff2"),url(/_next/static/media/chakra-petch-latin-ext-700-normal.1ac47d16.woff) format("woff");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Chakra Petch;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/chakra-petch-latin-700-normal.cefa53b0.woff2) format("woff2"),url(/_next/static/media/chakra-petch-latin-700-normal.3c806f0f.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_next/static/media/ibm-plex-sans-cyrillic-ext-wght-normal.192d14b2.woff2) format("woff2-variations");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_next/static/media/ibm-plex-sans-cyrillic-wght-normal.b0b919fc.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_next/static/media/ibm-plex-sans-greek-wght-normal.ef1c8a30.woff2) format("woff2-variations");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_next/static/media/ibm-plex-sans-vietnamese-wght-normal.bdc4ddcb.woff2) format("woff2-variations");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_next/static/media/ibm-plex-sans-latin-ext-wght-normal.a8a9073d.woff2) format("woff2-variations");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_next/static/media/ibm-plex-sans-latin-wght-normal.a7358d2e.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_next/static/media/caveat-cyrillic-ext-wght-normal.33221405.woff2) format("woff2-variations");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_next/static/media/caveat-cyrillic-wght-normal.bd5dcda4.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_next/static/media/caveat-latin-ext-wght-normal.ecbf1ecb.woff2) format("woff2-variations");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_next/static/media/caveat-latin-wght-normal.4502a530.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}:root{--paper:#e6e9e3;--grid-minor:rgba(46,92,150,0.075);--grid-major:rgba(46,92,150,0.15);--graphite:#24272b;--lead:#535961;--construction:#8d96a2;--rule:rgba(36,39,43,0.28);--blueline:#2c4c9c;--redline:#b3372b;--on-solid:#e6e9e3;--noise-blend:multiply;--noise-opacity:0.32;--letter:"Chakra Petch","Arial Narrow",system-ui,sans-serif;--body:"IBM Plex Sans Variable","IBM Plex Sans",system-ui,sans-serif;--hand:"Caveat Variable","Caveat","Segoe Print",cursive;--step--1:0.875rem;--step-0:1.0625rem;--step-1:1.25rem;--step-2:1.6rem;--step-3:clamp(1.9rem,1.4rem + 2vw,2.8rem);--wrap:74rem;--gutter:clamp(1rem,0.4rem + 2.4vw,2.5rem);--frame-out:10px;--frame-in:28px;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#14396a;--grid-minor:rgba(255,255,255,0.045);--grid-major:rgba(255,255,255,0.1);--graphite:#f1f5fb;--lead:#bccde6;--construction:#87a6d2;--rule:rgba(241,245,251,0.3);--blueline:#ffe7a1;--redline:#ffa08b;--on-solid:#14396a;--noise-blend:soft-light;--noise-opacity:0.4;color-scheme:dark}}:root[data-theme=dark]{--paper:#14396a;--grid-minor:rgba(255,255,255,0.045);--grid-major:rgba(255,255,255,0.1);--graphite:#f1f5fb;--lead:#bccde6;--construction:#87a6d2;--rule:rgba(241,245,251,0.3);--blueline:#ffe7a1;--redline:#ffa08b;--on-solid:#14396a;--noise-blend:soft-light;--noise-opacity:0.4;color-scheme:dark}@media (max-width:700px){:root{--frame-out:5px;--frame-in:11px}}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:6rem;-webkit-text-size-adjust:100%}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.paper,body{background-color:var(--paper);background-image:linear-gradient(var(--grid-major) 1px,transparent 1px),linear-gradient(90deg,var(--grid-major) 1px,transparent 1px),linear-gradient(var(--grid-minor) 1px,transparent 1px),linear-gradient(90deg,var(--grid-minor) 1px,transparent 1px);background-size:100px 100px,100px 100px,20px 20px,20px 20px;background-attachment:fixed}body{margin:0;padding:var(--frame-in) var(--frame-in) var(--frame-in);color:var(--graphite);font-family:var(--body);font-size:var(--step-0);line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:40;opacity:var(--noise-opacity);mix-blend-mode:var(--noise-blend);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .5 0 0 0 0 .5 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}h1,h2,h3{font-family:var(--letter);font-weight:700;text-transform:uppercase;letter-spacing:.04em;line-height:1.1;margin:0;color:var(--graphite)}h3{font-size:var(--step-1)}p{margin:0}dd,dl,ol,ul{margin:0;padding:0}a{color:var(--blueline);text-decoration-thickness:1px;text-underline-offset:.22em}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px dashed var(--redline);outline-offset:3px}svg{display:block}.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter)}.muted{color:var(--lead)}.sr-only{width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip,.sr-only{position:absolute}.skip{left:2rem;top:-4rem;z-index:60;background:var(--graphite);color:var(--on-solid);padding:.6rem 1rem;font-family:var(--letter);font-weight:700}.skip:focus{top:2rem}.sheet-frame{position:fixed;inset:0;z-index:30;pointer-events:none}.zones{position:fixed;display:flex;font-family:var(--letter);font-weight:600;font-size:.6875rem;color:var(--lead);background-color:var(--paper);background-image:inherit}.zones,.zones span{background-image:linear-gradient(var(--grid-major) 1px,transparent 1px),linear-gradient(90deg,var(--grid-major) 1px,transparent 1px),linear-gradient(var(--grid-minor) 1px,transparent 1px),linear-gradient(90deg,var(--grid-minor) 1px,transparent 1px);background-size:100px 100px,100px 100px,20px 20px,20px 20px;background-attachment:fixed}.zones span{flex:1 1;display:grid;place-items:center}.zones-bottom,.zones-top{left:0;right:0;height:var(--frame-in);padding:0 var(--frame-in)}.zones-top{top:0}.zones-bottom{bottom:0}.zones-bottom span+span,.zones-top span+span{border-left:1px solid var(--rule)}.zones-top span{margin-top:var(--frame-out)}.zones-bottom span{margin-bottom:var(--frame-out)}.zones-left,.zones-right{top:var(--frame-in);bottom:var(--frame-in);width:var(--frame-in);flex-direction:column}.zones-left{left:0}.zones-right{right:0}.zones-left span+span,.zones-right span+span{border-top:1px solid var(--rule)}.zones-left span{margin-left:var(--frame-out)}.zones-right span{margin-right:var(--frame-out)}.sheet-frame:after{content:"";position:fixed;inset:var(--frame-in);border:1px solid var(--graphite);z-index:1}.frame-line{position:fixed;z-index:2;background:var(--graphite)}.frame-bottom,.frame-top{left:var(--frame-out);right:var(--frame-out);height:2px}.frame-left,.frame-right{top:var(--frame-out);bottom:var(--frame-out);width:2px}.frame-top{top:var(--frame-out)}.frame-right{right:var(--frame-out)}.frame-bottom{bottom:var(--frame-out)}.frame-left{left:var(--frame-out)}@media (max-width:700px){.zones span{visibility:hidden}.zones-bottom span+span,.zones-left span+span,.zones-right span+span,.zones-top span+span{border:0}.frame-bottom,.frame-top{height:1.5px}.frame-left,.frame-right{width:1.5px}}.btn{display:inline-flex;align-items:center;justify-content:center;font-family:var(--letter);font-weight:700;font-size:.9375rem;text-transform:uppercase;letter-spacing:.08em;text-decoration:none;padding:.7rem 1.15rem;color:var(--graphite);background:transparent;border:1.5px solid var(--graphite);cursor:pointer;transition:background-color .12s,color .12s}.btn-solid,.btn:hover{background:var(--graphite);color:var(--on-solid)}.btn-solid:hover{background:transparent;color:var(--graphite)}.btn-small{font-size:.8125rem;padding:.45rem .8rem}.cta-row{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}.redline{font-family:var(--hand);font-size:1.45rem;line-height:1.2;color:var(--redline);transform:rotate(-2deg);transform-origin:left}.site-header{position:-webkit-sticky;position:sticky;top:var(--frame-in);z-index:20;border-bottom:1.5px solid var(--graphite);background-color:var(--paper);background-image:linear-gradient(var(--grid-major) 1px,transparent 1px),linear-gradient(90deg,var(--grid-major) 1px,transparent 1px),linear-gradient(var(--grid-minor) 1px,transparent 1px),linear-gradient(90deg,var(--grid-minor) 1px,transparent 1px);background-size:100px 100px,100px 100px,20px 20px,20px 20px;background-attachment:fixed}.header-inner{display:flex;align-items:center;gap:1.5rem;min-height:4rem;max-width:none}.wordmark{display:inline-flex;align-items:center;gap:.7rem;margin-right:auto;font-family:var(--letter);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--graphite);text-decoration:none}.wordmark-box{display:inline-grid;place-items:center;width:2.1rem;height:2.1rem;border:1.5px solid var(--graphite);font-size:.85rem;letter-spacing:.04em}.nav ul{list-style:none;display:flex;gap:.25rem}.nav a{display:block;padding:.45rem .7rem;font-family:var(--letter);font-weight:600;font-size:.875rem;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;color:var(--graphite)}.nav a:hover{text-decoration:underline;text-decoration-thickness:1px}.nav a[aria-current]{text-decoration:underline;text-decoration-thickness:2.5px;text-underline-offset:.45em}.header-actions{display:flex;gap:.5rem}.menu-btn,.theme-btn{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--letter);font-weight:700;font-size:.8125rem;letter-spacing:.08em;text-transform:uppercase;color:var(--graphite);background:transparent;border:1px solid var(--graphite);padding:.45rem .7rem;cursor:pointer}.menu-btn:hover,.theme-btn:hover{background:var(--graphite);color:var(--on-solid)}.theme-swatch{width:.85rem;height:.85rem;border:1px solid;background:#14396a}:root[data-theme=dark] .theme-swatch{background:#e6e9e3}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-swatch{background:#e6e9e3}}.menu-btn{display:none}@media (max-width:860px){.menu-btn{display:inline-flex}.header-inner{gap:.5rem}.nav,.wordmark-name{display:none}.nav{position:absolute;top:100%;left:0;right:0;border-bottom:1.5px solid var(--graphite);background:inherit;background-color:var(--paper)}.nav.is-open{display:block}.nav ul{flex-direction:column;padding:.5rem var(--gutter) 1rem}.nav a{padding:.85rem 0;font-size:1.05rem;border-bottom:1px solid var(--rule)}}.hero{padding-block:clamp(2.5rem,6vw,5rem)}.hero-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);grid-gap:clamp(2rem,4vw,4rem);gap:clamp(2rem,4vw,4rem);align-items:start}.hero-kicker{font-family:var(--letter);font-weight:600;font-size:var(--step--1);letter-spacing:.1em;text-transform:uppercase;color:var(--lead);max-width:28rem}.hero-name{font-size:clamp(3.4rem,1.5rem + 7vw,7.25rem);line-height:.9;letter-spacing:.02em;margin:1.25rem 0 1.75rem;padding-bottom:1.1rem;border-bottom:4px solid var(--graphite);box-shadow:0 5px 0 -3.5px var(--paper),0 6.5px 0 -3.5px var(--graphite)}.lede{font-size:var(--step-1);line-height:1.55;max-width:32rem}.hero .cta-row{margin-top:2rem}@media (max-width:980px){.hero-grid{grid-template-columns:1fr}}.demo{position:relative;margin:0;border:1.5px solid var(--graphite);padding:.75rem .9rem 1rem}.elevation{width:100%;height:auto}.sketch.elevation .sk-txt{font-size:12px}@media (max-width:560px){.sketch.elevation .sk-txt{font-size:17px}}.demo-redline{position:absolute;top:1rem;left:4.25rem;max-width:13rem}.demo figcaption{margin-top:.75rem;font-size:var(--step--1);line-height:1.55;color:var(--lead)}.demo-view{display:block;font-family:var(--letter);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--graphite);margin-bottom:.2rem}@media (max-width:560px){.demo-redline{position:static;max-width:none;margin:.5rem 0 .25rem}}.section{padding-block:clamp(3.5rem,8vw,6rem);border-top:1px dashed var(--construction)}.view-title{display:inline-block;margin-bottom:clamp(2rem,4vw,3rem)}.view-title h2{font-size:var(--step-3);letter-spacing:.06em;padding-bottom:.35rem;border-bottom:3px solid var(--graphite);box-shadow:0 4px 0 -2.5px var(--paper),0 5px 0 -2.5px var(--graphite)}.view-ref{margin-top:.7rem;font-family:var(--letter);font-weight:600;font-size:.8125rem;letter-spacing:.1em;text-transform:uppercase;color:var(--lead)}.view-note:before{content:"/";margin:0 .6rem}.project-list{list-style:none;display:grid;grid-gap:clamp(3rem,6vw,4.5rem);gap:clamp(3rem,6vw,4.5rem)}.project{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.25fr);grid-gap:1.5rem clamp(2rem,4vw,3.5rem);gap:1.5rem clamp(2rem,4vw,3.5rem);align-items:start}.project:nth-child(2n) .project-sketch{order:2}.project-sketch{margin:0;border:1.5px solid var(--graphite);padding:1rem 1rem .75rem}.sketch{width:100%;height:auto}.project-sketch figcaption{display:flex;justify-content:space-between;gap:1rem;margin-top:.6rem;padding-top:.5rem;border-top:1px solid var(--rule);font-family:var(--letter);font-weight:700;font-size:.8125rem;letter-spacing:.1em;text-transform:uppercase}.project-sketch figcaption span{font-weight:600;color:var(--lead)}.project-head{display:flex;gap:1rem;align-items:flex-start;margin-bottom:1.25rem}.balloon{flex:none;display:inline-grid;place-items:center;width:2.4rem;height:2.4rem;border:1.5px solid var(--graphite);border-radius:50%;font-family:var(--letter);font-weight:700;font-size:1.1rem}.project h3{font-size:var(--step-2)}.project h3 a{color:var(--graphite);-webkit-text-decoration-color:var(--blueline);text-decoration-color:var(--blueline);text-decoration-thickness:2px}.project h3 a:hover{color:var(--blueline)}.project-sub{margin-top:.3rem;color:var(--lead)}.points{list-style:none;display:grid;grid-gap:.6rem;gap:.6rem}.points li{position:relative;padding-left:1.3rem;max-width:42rem}.points li:before{content:"";position:absolute;left:0;top:.78em;width:.6rem;border-top:1.5px solid var(--lead)}.project-note{margin-top:1rem;font-family:var(--letter);font-weight:700;letter-spacing:.04em}.spec{margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--rule);color:var(--lead);font-size:.9375rem}.spec-label{font-size:.75rem;letter-spacing:.1em;color:var(--graphite);margin-right:.5rem}.project-links,.spec-label{font-family:var(--letter);font-weight:700;text-transform:uppercase}.project-links{margin-top:1rem;display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;font-size:.9375rem;letter-spacing:.06em}.project .redline{margin-top:1.25rem}@media (max-width:820px){.project{grid-template-columns:1fr}.project:nth-child(2n) .project-sketch{order:0}}.sketch *{fill:none;vector-effect:non-scaling-stroke}.sk-obj{stroke:var(--graphite);stroke-width:2;stroke-linejoin:round}.sk-thin{stroke:var(--graphite);stroke-width:1}.sk-cons{stroke:var(--blueline);stroke-width:1}.sk-ctr{stroke:var(--lead);stroke-width:.9;stroke-dasharray:16 3 3 3}.sk-phan{stroke:var(--lead);stroke-width:1;stroke-dasharray:18 3 3 3 3 3}.sk-dim{stroke:var(--lead);stroke-width:.9}.sk-red{stroke:var(--redline);stroke-width:1.6}.sketch .sk-head{fill:var(--lead);stroke:none}.sketch .sk-txt{fill:var(--graphite);stroke:none;font-family:var(--letter);font-weight:700;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase}.rev-table{width:100%;border-collapse:collapse;border:2px solid var(--graphite)}.rev-table td,.rev-table th{text-align:left;vertical-align:top;border:1px solid var(--graphite);padding:1.1rem 1.25rem}.rev-table thead th{font-family:var(--letter);font-weight:700;font-size:.8125rem;letter-spacing:.12em;text-transform:uppercase;padding-block:.55rem}.rev-letter,.rev-table thead th:first-child{width:5rem;text-align:center}.rev-date,.rev-table thead th:last-child{width:11rem}.rev-letter span{position:relative;display:inline-grid;place-items:center;width:2.3rem;height:2rem;padding-top:.45rem;font-family:var(--letter);font-weight:700;isolation:isolate}.rev-letter span:after,.rev-letter span:before{content:"";position:absolute;inset:0;-webkit-clip-path:polygon(50% 0,100% 100%,0 100%);clip-path:polygon(50% 0,100% 100%,0 100%);z-index:-1}.rev-letter span:before{background:var(--graphite)}.rev-letter span:after{inset:2px 2.5px 1.5px;top:3.2px;background:var(--paper)}.rev-date{font-family:var(--letter);font-weight:600;font-size:.9375rem;letter-spacing:.04em;white-space:nowrap}.rev-table h3{font-size:1.125rem}.where{color:var(--lead);margin:.2rem 0 .8rem}@media (max-width:700px){.rev-table,.rev-table tbody,.rev-table td,.rev-table tr{display:block}.rev-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.rev-table tr{display:grid;grid-template-columns:3.75rem 1fr;border-bottom:1px solid var(--graphite)}.rev-table tr:last-child{border-bottom:0}.rev-table td{border:0;padding:.9rem 1rem}.rev-letter{grid-row:span 2;width:auto;border-right:1px solid var(--graphite)!important}.rev-date{width:auto;order:-1;grid-column:2;padding-bottom:0!important;color:var(--lead)}.rev-table td:nth-child(2){grid-column:2;padding-top:.35rem}}.about-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:clamp(2.5rem,5vw,4.5rem);gap:clamp(2.5rem,5vw,4.5rem)}.about-text{font-size:var(--step-1);line-height:1.55;max-width:34rem}.block-h{font-size:.9375rem;letter-spacing:.12em;margin:2.5rem 0 1rem;padding-bottom:.45rem;border-bottom:1.5px solid var(--graphite)}.edu{list-style:none;display:grid;grid-gap:1.25rem;gap:1.25rem}.edu-dates,.edu-school,.note-name{font-weight:600}.edu-dates{font-family:var(--letter);font-size:.875rem;letter-spacing:.06em;color:var(--lead)}.edu .muted,.notes .muted{font-size:.9375rem}.notes{list-style:none;counter-reset:note;display:grid;grid-gap:1rem;gap:1rem}.notes li{counter-increment:note;position:relative;padding-left:2rem}.notes li:before{content:counter(note) ".";position:absolute;left:0;font-family:var(--letter);font-weight:700}.bom{width:100%;border-collapse:collapse;font-size:.9375rem}.bom,.bom caption{border:2px solid var(--graphite)}.bom caption{caption-side:bottom;text-align:left;font-family:var(--letter);font-weight:700;font-size:.875rem;letter-spacing:.1em;text-transform:uppercase;padding:.6rem .75rem;border-top:0}.bom td,.bom th{border:1px solid var(--graphite);padding:.75rem;text-align:left;vertical-align:top}.bom thead th{font-size:.75rem;letter-spacing:.12em;padding-block:.45rem}.bom tbody th,.bom thead th{font-family:var(--letter);font-weight:700;text-transform:uppercase}.bom tbody th{font-size:.875rem;letter-spacing:.04em;width:8.5rem}.bom-item{width:3rem;text-align:center!important;font-family:var(--letter);font-weight:700}.bom thead th:first-child{text-align:center}@media (max-width:900px){.about-grid{grid-template-columns:1fr}}.title-block{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;grid-gap:1px;gap:1px;background:var(--graphite);border:2px solid var(--graphite)}.tb-cell{padding:.75rem 1rem 1rem;min-width:0;background-color:var(--paper);background-image:linear-gradient(var(--grid-major) 1px,transparent 1px),linear-gradient(90deg,var(--grid-major) 1px,transparent 1px),linear-gradient(var(--grid-minor) 1px,transparent 1px),linear-gradient(90deg,var(--grid-minor) 1px,transparent 1px);background-size:100px 100px,100px 100px,20px 20px,20px 20px;background-attachment:fixed}.tb-label{display:block;font-family:var(--letter);font-weight:700;font-size:.6875rem;letter-spacing:.14em;text-transform:uppercase;color:var(--lead);margin-bottom:.35rem}.tb-title{grid-column:1/3;grid-row:1/3;padding:1rem 1.25rem 1.4rem}.tb-big{font-family:var(--letter);font-weight:700;font-size:clamp(2rem,1.3rem + 3vw,3.4rem);text-transform:uppercase;letter-spacing:.04em;line-height:1;margin:.4rem 0 1rem}.tb-body{max-width:30rem}.tb-value{font-family:var(--letter);font-weight:700;font-size:1.0625rem;letter-spacing:.03em;overflow-wrap:break-word}.tb-email{grid-column:3/5;display:flex;flex-direction:column;align-items:flex-start;gap:.6rem}.tb-mail{font-size:clamp(1.2rem,.9rem + 1.2vw,1.7rem)}.copy-email{display:inline-flex}.copy-status{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.colophon{margin-top:1rem;font-family:var(--letter);font-weight:600;font-size:.8125rem;letter-spacing:.08em;color:var(--lead)}@media (max-width:860px){.title-block{grid-template-columns:1fr 1fr}.tb-email,.tb-github,.tb-title{grid-column:1/-1;grid-row:auto}.tb-sheet{display:none}}.case-hero{padding-block:clamp(2.5rem,6vw,4.5rem)}.crumb{font-family:var(--letter);font-weight:700;font-size:.875rem;letter-spacing:.1em;text-transform:uppercase;margin-bottom:1.25rem}.crumb a:before{content:"\2039\00a0"}.case-hero h1{display:inline-block;font-size:clamp(3rem,1.8rem + 5vw,6rem);line-height:.95;padding-bottom:.6rem;border-bottom:4px solid var(--graphite);box-shadow:0 5px 0 -3.5px var(--paper),0 6.5px 0 -3.5px var(--graphite)}.case-sub{font-size:var(--step-1);color:var(--lead);margin-top:1.25rem;max-width:40rem}.case-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:1px;gap:1px;background:var(--graphite);border:2px solid var(--graphite);margin:2.25rem 0;max-width:62rem}.case-facts>div{padding:.75rem 1rem .9rem;background-color:var(--paper);background-image:linear-gradient(var(--grid-major) 1px,transparent 1px),linear-gradient(90deg,var(--grid-major) 1px,transparent 1px),linear-gradient(var(--grid-minor) 1px,transparent 1px),linear-gradient(90deg,var(--grid-minor) 1px,transparent 1px);background-size:100px 100px,100px 100px,20px 20px,20px 20px;background-attachment:fixed}.case-facts dt{font-family:var(--letter);font-weight:700;font-size:.6875rem;letter-spacing:.14em;text-transform:uppercase;color:var(--lead)}.case-facts dd{margin-top:.25rem}@media (max-width:700px){.case-facts{grid-template-columns:1fr}}.case-section{padding-block:clamp(3rem,6vw,4.5rem);border-top:1px dashed var(--construction)}.case-section h2{display:inline-block;font-size:clamp(1.6rem,1.2rem + 1.6vw,2.3rem);margin-bottom:1.75rem;padding-bottom:.3rem;border-bottom:3px solid var(--graphite);box-shadow:0 4px 0 -2.5px var(--paper),0 5px 0 -2.5px var(--graphite)}.prose{max-width:44rem}.prose p+p{margin-top:1rem}.challenge-list,.feature-list{display:grid;grid-gap:1.25rem;gap:1.25rem;margin-top:2rem}.challenge-list dt,.feature-list dt{font-family:var(--letter);font-weight:700;letter-spacing:.04em;text-transform:uppercase;font-size:.9375rem}.challenge-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem 3rem;margin-top:0}.challenge-list dd,.feature-list dd{margin-top:.3rem}@media (max-width:760px){.challenge-list{grid-template-columns:1fr}}.fig{margin:2rem 0}.fig figcaption{font-size:var(--step--1);color:var(--lead);margin-top:.75rem;max-width:44rem}.fig-scroll,.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.diagram{width:100%;min-width:620px;height:auto;border:1.5px solid var(--graphite);padding:.5rem}.diagram-small{max-width:720px;min-width:480px}.diagram text{font-family:var(--letter);font-weight:600;fill:var(--graphite);text-anchor:middle}.d-group{fill:none;stroke:var(--graphite);stroke-dasharray:10 3 2 3}.diagram .d-group-label{font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;text-anchor:start;fill:var(--lead)}.d-box{fill:var(--paper);stroke:var(--graphite);stroke-width:1.2}.d-box-key{stroke-width:2.2}.diagram .d-t{font-weight:700;font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;fill:var(--graphite)}.diagram .d-s{font-size:11.5px;fill:var(--lead)}.diagram .d-edge{font-family:var(--hand);font-weight:600;font-size:16px;fill:var(--redline)}.diagram .d-left{text-anchor:start}.diagram .d-right{text-anchor:end}.d-line{fill:none;stroke:var(--graphite);stroke-width:1.3}.d-arrowhead{fill:var(--graphite)}.d-edge-line{stroke:var(--lead);stroke-width:1.1}.d-var{fill:var(--paper);stroke:var(--graphite);stroke-width:2}.d-var-p{stroke-dasharray:5 2}.d-factor{stroke:var(--graphite);stroke-width:1.2}.d-factor-prior{fill:var(--paper)}.d-factor-reproj{fill:var(--blueline)}.d-factor-para{fill:var(--redline)}.d-legend text{font-size:11.5px;text-anchor:start;fill:var(--lead);text-transform:uppercase;letter-spacing:.05em}.d-path{fill:none;stroke:var(--lead);stroke-width:1.3;stroke-dasharray:18 3 3 3 3 3}.d-ray{stroke:var(--blueline);stroke-width:1.2}.d-ball,.d-cam{fill:var(--paper);stroke:var(--graphite);stroke-width:2}.data-table{width:100%;min-width:640px;border-collapse:collapse;font-size:.9375rem;margin-top:1rem}.data-table,.data-table caption{border:2px solid var(--graphite)}.data-table caption{caption-side:bottom;text-align:left;font-family:var(--letter);font-weight:700;font-size:.875rem;letter-spacing:.1em;text-transform:uppercase;padding:.6rem .75rem;border-top:0}.data-table td,.data-table th{text-align:left;vertical-align:top;padding:.7rem .85rem;border:1px solid var(--graphite)}.data-table thead th{font-family:var(--letter);font-weight:700;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;padding-block:.45rem}.data-table tbody th{font-family:var(--letter);font-weight:700;letter-spacing:.03em;white-space:nowrap}.equation{overflow-x:auto;margin:1.5rem 0;padding:1.25rem 1rem;border:1.5px solid var(--graphite);font-size:1.15rem}.equation math{font-family:STIX Two Math,Cambria Math,Latin Modern Math,math}.steps{list-style:none;counter-reset:step;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-gap:0;gap:0;border:2px solid var(--graphite)}.steps li{counter-increment:step;display:grid;grid-gap:.25rem;gap:.25rem;align-content:start;padding:.85rem .85rem 1rem;font-size:.9375rem}.steps li+li{border-left:1px solid var(--graphite)}.steps strong{font-family:var(--letter);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.steps li strong:before{content:counter(step) ". ";color:var(--lead)}@media (max-width:900px){.steps{grid-template-columns:repeat(3,minmax(0,1fr))}.steps li:nth-child(4){border-left:0}.steps li:nth-child(n+4){border-top:1px solid var(--graphite)}}@media (max-width:520px){.steps{grid-template-columns:repeat(2,minmax(0,1fr))}.steps li:nth-child(4){border-left:1px solid var(--graphite)}.steps li:nth-child(odd){border-left:0}.steps li:nth-child(n+3){border-top:1px solid var(--graphite)}}.minor-h{font-size:.9375rem;letter-spacing:.12em;margin:2.5rem 0 1rem}.results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:2rem 3rem;gap:2rem 3rem;margin-top:1rem}.results h3{font-size:1rem;letter-spacing:.1em;margin-bottom:.9rem;padding-bottom:.4rem;border-bottom:1.5px solid var(--graphite)}@media (max-width:760px){.results{grid-template-columns:1fr}}.outcome{margin-top:2.5rem;padding:1rem 1.25rem;border:1.5px solid var(--graphite)}.outcome strong{font-family:var(--letter);text-transform:uppercase;letter-spacing:.06em}.case .redline{margin-top:1.5rem}.learned{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:0 3rem;gap:0 3rem;max-width:52rem}.learned li{padding:.6rem 0;border-bottom:1px solid var(--rule)}@media (max-width:640px){.learned{grid-template-columns:1fr}}.back-link{margin-top:2.5rem;font-family:var(--letter);font-weight:700;letter-spacing:.08em;text-transform:uppercase}.notfound{padding-block:6rem}.notfound p{margin:1rem 0 2rem;max-width:34rem}