@font-face{font-family:League Spartan Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/league-spartan-vietnamese-wght-normal.COdtqR7n.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:League Spartan Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/league-spartan-latin-ext-wght-normal.DdUHL39C.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:League Spartan Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/league-spartan-latin-wght-normal.0z8Zi79b.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-opsz-italic.DTr-ymY4.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-opsz-italic.CSPGnFdO.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-opsz-italic.kJKFiXvB.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#f5f3ee;--raised:#efece5;--grid:#e7e3da;--line:#e0dcd3;--line-strong:#cbc6bb;--ink:#141513;--ink-2:#3a3d39;--ink-3:#575b56;--ink-4:#686c67;--accent:#5ccf8e;--accent-glow:#5ccf8e73;--accent-wash:#5ccf8e26;--sans:"League Spartan Variable",ui-sans-serif,system-ui,sans-serif;--mono:"Geist Mono Variable",ui-monospace,monospace;--serif:"Newsreader Variable",Georgia,serif;--wrap:1216px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:72px}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-weight:500}a{color:var(--ink);text-decoration:none}a:hover{color:var(--accent)}a:focus-visible{outline:1px solid var(--accent);outline-offset:4px}h1,h2,h3,p,dl,dd,ol{margin:0}.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}.lbl{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);font-size:11px;line-height:16px}.mono{font-family:var(--mono)}.serif{font-family:var(--serif);font-style:italic;font-weight:400!important}.acc{color:var(--accent)}.skip{position:absolute;left:-9999px}.skip:focus{z-index:10;background:var(--bg);padding:8px 12px;top:16px;left:16px}@keyframes fill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes pulse{0%{opacity:.55;transform:scale(1)}70%,to{opacity:0;transform:scale(2.6)}}@keyframes travel{0%{opacity:0;transform:translate(0)}3%{opacity:1}80%{opacity:1;transform:translate(100%)}90%,to{opacity:0;transform:translate(100%)}}@keyframes node{0%{border-color:var(--accent);color:var(--ink);box-shadow:0 0 0 3px var(--accent-wash)}14%,to{border-color:var(--line-strong);color:var(--ink-3);box-shadow:none}}@media (prefers-reduced-motion:reduce){*{animation:none!important}html{scroll-behavior:auto}}.site-head{z-index:5;backdrop-filter:blur(10px);background:#f5f3eed9;position:sticky;top:0}.head-row{justify-content:space-between;align-items:center;gap:16px;height:64px;display:flex}.brand{font-family:var(--mono);letter-spacing:.16em;white-space:nowrap;align-items:baseline;gap:12px;font-size:13px;font-weight:500;display:flex}.brand span{color:var(--accent);font-size:11px}.site-nav{align-items:center;gap:28px;display:flex}.site-nav a{color:var(--ink-3);align-items:center;min-height:44px;display:inline-flex}.site-nav a:hover,.site-nav a[aria-current]{color:var(--ink)}.head-bar{background:var(--line);height:1px;position:relative}.head-bar div{background:var(--accent);position:absolute;top:0;bottom:0;left:0}.sec{padding-top:96px;padding-bottom:96px}.sec-lg{padding-top:112px;padding-bottom:112px}.rule{border-top:1px solid var(--line)}.num-lbl{align-self:start;align-items:center;display:flex}.num-lbl i{background:var(--line-strong);width:24px;height:1px;margin:0 12px;display:inline-block}h2.h2{letter-spacing:-.02em;margin-top:24px;font-size:44px;font-weight:700;line-height:1.12}.sub{max-width:560px;color:var(--ink-3);margin-top:16px;font-size:17px;line-height:1.6}.hero{padding-top:112px;padding-bottom:96px}.hero h1{letter-spacing:-.045em;margin-top:24px;font-size:clamp(48px,8.6vw,124px);font-weight:700;line-height:.92}.hero h1 span{color:var(--ink-4)}.hero .where{color:var(--ink-3);margin-top:32px;font-size:20px}.hero .where span{color:var(--ink-2)}.meter-top{justify-content:space-between;align-items:flex-end;gap:24px;margin-top:80px;display:flex}.meter-num{font-family:var(--mono);color:var(--accent);font-size:clamp(56px,9vw,96px);font-weight:300;line-height:1}.meter-num span{font-size:24px}.meter-top .lbl{text-align:right;margin-bottom:8px}.meter-top .lbl span{color:var(--ink-2)}.track{height:40px;margin-top:24px;position:relative}.track-base{background:var(--line-strong);height:1px;position:absolute;top:16px;left:0;right:0}.track-fill{background:var(--accent);transform-origin:0;height:3px;animation:2.6s cubic-bezier(.65,0,.35,1) .4s both fill;position:absolute;top:15px;left:0}.track-dot{background:var(--accent);border-radius:50%;width:10px;height:10px;margin-left:-5px;position:absolute;top:12px}.track-dot.a{animation:.6s 3s both rise}.track-dot.b{animation:2.4s cubic-bezier(.16,1,.3,1) 3s infinite pulse}.ticks{justify-content:space-between;display:flex;position:absolute;top:24px;left:0;right:0}.ticks .lbl{font-size:10px}.ticks .on{color:var(--accent)}.facts{border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;margin-top:40px;padding-top:32px;display:grid}.facts>div{animation:.8s cubic-bezier(.16,1,.3,1) both rise}.facts>div:first-child{animation-delay:3.1s}.facts>div:nth-child(2){animation-delay:3.28s}.facts>div:nth-child(3){animation-delay:3.46s}.facts dt{align-items:center;gap:8px;display:flex}.facts dt i{background:var(--accent);border-radius:50%;width:6px;height:6px}.facts dd{letter-spacing:-.01em;margin-top:12px;font-size:26px;font-weight:600;line-height:1.25}.facts dd.serif{color:var(--ink-2);font-size:28px}.btn-line{border:1px solid var(--line-strong);height:48px;font-family:var(--mono);letter-spacing:.16em;align-items:center;gap:16px;margin-top:48px;padding:0 20px;font-size:12px;animation:.8s 3.9s both rise;display:inline-flex}.btn-line:hover{border-color:var(--accent)}.intro{grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:48px;display:grid}.intro p.big{letter-spacing:-.01em;font-size:27px;line-height:1.45}.intro p.big+p.big{color:var(--ink-2);margin-top:24px}.stats{border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));margin-top:64px;display:grid}.stats>div{padding-top:24px}.stats>div+div{border-left:1px solid var(--line);padding-left:24px}.stats .n{font-family:var(--mono);font-size:48px;font-weight:300}.stats .lbl{margin-top:12px}.cells{background:var(--line);border:1px solid var(--line);gap:1px;margin-top:48px;display:grid}.cells.four{grid-template-columns:repeat(4,minmax(0,1fr))}.cells.two{grid-template-columns:repeat(2,minmax(0,1fr))}.cell{background:var(--bg);padding:24px}.cell>.lbl{color:var(--ink-2)}.cell>.lbl.acc{color:var(--accent)}.cell .area{margin-top:20px;font-size:20px;font-weight:600}.cell .lbl+.area{margin-top:32px}.cell .area.dim{color:var(--ink-3)}.cell .note{color:var(--ink-3);margin-top:4px;font-size:15px;line-height:1.6}.project{border:1px solid var(--line-strong);background:var(--raised);grid-template-columns:repeat(2,minmax(0,1fr));gap:48px;margin-top:48px;padding:40px;display:grid;position:relative}.project:before{content:"";border-top:1px solid var(--accent);border-left:1px solid var(--accent);width:12px;height:12px;position:absolute;top:-1px;left:-1px}.project-top{justify-content:space-between;gap:16px;display:flex}.project h3{letter-spacing:-.01em;margin-top:24px;font-size:32px;font-weight:700}.project .tag{color:var(--ink-2);margin-top:12px;font-size:20px;line-height:1.35}.project .desc{color:var(--ink-3);margin-top:16px;font-size:16px;line-height:1.65}.pills{flex-wrap:wrap;gap:8px;margin-top:24px;display:flex}.pills span{border:1px solid var(--line);font-family:var(--mono);color:var(--ink-3);border-radius:999px;padding:5px 10px;font-size:11px}.project-links{font-family:var(--mono);letter-spacing:.16em;flex-wrap:wrap;gap:24px;margin-top:40px;font-size:12px;display:flex}.project-links .soon{color:var(--ink-4)}.project-links a{color:var(--ink-3)}.flow{border:1px solid var(--line);background-color:var(--bg);background-image:linear-gradient(to right,var(--grid) 1px,transparent 1px),linear-gradient(to bottom,var(--grid) 1px,transparent 1px);background-size:24px 24px;flex-direction:column;justify-content:center;padding:56px 20px 32px;display:flex;position:relative}.flow>.lbl{margin:0;position:absolute;top:12px}.flow>.lbl.l{left:16px}.flow>.lbl.r{right:16px}.flow-inner{position:relative}.flow-line{background:var(--line-strong);height:1px;position:absolute;top:17px;left:8.33%;right:8.33%}.flow-packet{height:7px;animation:3.6s linear infinite travel;position:absolute;top:14px;left:8.33%;right:8.33%}.flow-packet i{background:var(--accent);width:7px;height:7px;box-shadow:0 0 12px 2px var(--accent-glow);border-radius:50%;position:absolute;left:-3.5px}.flow ol{grid-template-columns:repeat(6,minmax(0,1fr));padding:0;list-style:none;display:grid;position:relative}.flow li{text-align:center;flex-direction:column;align-items:center;display:flex}.flow .dot{border:1px solid var(--line-strong);background:var(--bg);width:34px;height:34px;font-family:var(--mono);color:var(--ink-3);border-radius:50%;justify-content:center;align-items:center;font-size:10px;animation:3.6s linear infinite node;display:flex}.flow .step{font-family:var(--mono);letter-spacing:.12em;color:var(--ink-2);margin-top:12px;font-size:10px}.flow .tool{color:var(--ink-4);margin-top:4px;font-size:11px}.journey{background:var(--raised);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.journey-grid{grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:56px;display:grid}.journey-grid .sub{max-width:380px;margin-top:24px;line-height:1.65}.stops{padding:0;list-style:none}.stops li{grid-template-columns:64px 32px 1fr;padding-bottom:32px;display:grid}.stops li:last-child{padding-bottom:0}.stops .pct{font-family:var(--mono);color:var(--ink-4);font-size:14px}.stops .pin{justify-content:center;display:flex;position:relative}.stops .pin:before{content:"";border-left:1px dashed var(--line-strong);position:absolute;top:12px;bottom:-32px}.stops li:last-child .pin:before{display:none}.stops .pin i{border:1px dashed var(--ink-4);background:var(--raised);border-radius:50%;width:10px;height:10px;margin-top:7px;position:relative}.stops .name{color:var(--ink-3);font-size:24px;font-weight:600}.stops .when{margin-top:4px;display:block}.stops .done .pct{color:var(--ink-2)}.stops .done .pin:before{border-left:1px solid var(--accent)}.stops .done .pin i{background:var(--ink-2);border:0;width:8px;height:8px}.stops .done .name,.stops .now .name{color:var(--ink)}.stops .now .pct{color:var(--accent)}.stops .now .pin i{background:var(--accent);width:12px;height:12px;box-shadow:0 0 0 4px var(--accent-wash);border:0;margin-top:6px}.badge{border:1px solid var(--accent-glow);font-family:var(--mono);letter-spacing:.14em;color:var(--accent);white-space:nowrap;border-radius:999px;margin-left:8px;padding:2px 8px;font-size:10px}.stops .what{max-width:520px;color:var(--ink-3);margin-top:12px;line-height:1.6;display:block}.writing .h2{max-width:720px}.cells.two .cell{padding:32px}.nb-line{margin-top:24px;font-size:26px;font-weight:700;line-height:1.25}.nb-line.serif{font-size:30px}.post-date{color:var(--ink-4);font-size:12px;font-family:var(--mono);margin-top:20px}.post-title{margin-top:8px;font-size:20px;font-weight:600;line-height:1.3}.post-title.serif{font-size:23px}.post-sum{color:var(--ink-3);margin-top:8px;font-size:16px}.read{font-family:var(--mono);letter-spacing:.16em;margin-top:16px;font-size:12px;display:inline-block}.read.soon{color:var(--ink-4)}.closing{padding-top:64px}.closing .big{letter-spacing:-.03em;max-width:900px;font-size:clamp(32px,4.8vw,62px);font-weight:700;line-height:1.1}.closing .big span{color:var(--ink-4)}.closing .sub{margin-top:32px;font-size:20px}.closing .sig{font-family:var(--mono);letter-spacing:.16em;margin-top:40px;font-size:12px}.site-foot{border-top:1px solid var(--line);margin-top:128px}.foot-row{flex-wrap:wrap;justify-content:space-between;gap:32px;padding-top:56px;padding-bottom:56px;display:flex}.foot-brand{font-family:var(--mono);letter-spacing:.16em;font-size:13px;font-weight:500}.foot-links{flex-wrap:wrap;align-items:flex-start;gap:24px;display:flex}.foot-links a{color:var(--ink-3)}.foot-base{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:16px;padding-top:24px;padding-bottom:24px;display:flex}.foot-base a{color:var(--ink-4)}.page-head{padding-top:96px;padding-bottom:48px}.page-head h1{letter-spacing:-.035em;margin-top:24px;font-size:clamp(40px,6.6vw,80px);font-weight:700;line-height:1}.page-head .sub{font-size:18px}.prose{max-width:680px;color:var(--ink-2);padding-bottom:48px;font-size:18px;line-height:1.7}.prose h2{letter-spacing:-.01em;color:var(--ink);margin:48px 0 12px;font-size:26px;font-weight:700}.prose p{margin:0 0 16px}.prose a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px;text-decoration-thickness:2px}.prose a:hover{color:var(--ink);background:var(--accent-wash)}.prose code{font-family:var(--mono);font-size:.9em}@media (width<=1000px){.cells.four{grid-template-columns:repeat(2,minmax(0,1fr))}.project,.intro,.journey-grid{grid-template-columns:1fr}}@media (width<=720px){.head-row{flex-direction:column;align-items:flex-start;gap:0;height:auto;padding-top:14px;padding-bottom:2px}.site-nav{scrollbar-width:none;gap:20px;width:100%;overflow-x:auto}.site-nav::-webkit-scrollbar{display:none}.site-nav a{flex:none}html{scroll-padding-top:112px}.hero,.sec,.sec-lg{padding-top:72px;padding-bottom:72px}.meter-top{margin-top:56px}.ticks .lbl:nth-child(2n):not(.on){visibility:hidden}.facts{grid-template-columns:1fr;gap:24px}.intro p.big{font-size:21px}.stats .n{font-size:32px}.stats>div+div{padding-left:16px}h2.h2{font-size:32px}.cells.four,.cells.two{grid-template-columns:1fr}.cells.two .cell{padding:24px}.project{gap:32px;padding:24px}.project h3{font-size:26px}.flow{padding:52px 12px 24px}.flow ol{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:24px}.flow-line,.flow-packet{display:none}.stops li{grid-template-columns:48px 24px 1fr}.stops .name{font-size:19px}.badge{margin:6px 0 0;display:inline-block}.site-foot{margin-top:96px}}.btn-line.mail{animation:none}.mail-addr{text-transform:none;letter-spacing:.04em;margin-top:16px}.mail-addr a{color:var(--ink-3)}.prose blockquote{border-left:3px solid var(--accent);color:var(--ink);margin:32px 0;padding:4px 0 4px 20px;font-size:20px;font-weight:700;line-height:1.5}.prose blockquote p{margin:0}.prose .embed{justify-content:center;margin:32px 0;display:flex}.prose .embed blockquote{border:1px solid var(--line-strong);background:var(--raised);width:100%;max-width:550px;color:var(--ink-2);margin:0;padding:20px 24px;font-size:16px;font-weight:500;line-height:1.6}.prose .embed iframe{max-width:100%!important}.prose .photo{margin:48px 0 0}.prose .photo img{border-radius:4px;width:100%;height:auto;display:block}.prose .photo figcaption{font-family:var(--mono);letter-spacing:.08em;color:var(--ink-4);margin-top:12px;font-size:12px}.post-col{max-width:728px}.post-col .prose{max-width:none}.post-title a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:4px;text-decoration-thickness:1px}.post-title a:hover{color:var(--ink);text-decoration-color:var(--accent)}a.read{border:1px solid var(--ink);min-height:44px;color:var(--ink);align-items:center;margin-top:12px;padding:0 16px;font-weight:600;display:inline-flex}a.read:hover{background:var(--ink);color:var(--bg)}.post-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.post-list .cell{border:1px solid var(--line-strong);background:var(--raised)}@media (width<=720px){.post-list{grid-template-columns:1fr}}.post-title,.post-title.serif{font-family:var(--sans);font-size:24px;font-style:normal;font-weight:700;line-height:1.2}.nb-line.serif{font-family:var(--sans);font-style:normal}.post-list .post-title{font-size:28px}.post-list .cell.has-cover{grid-template-columns:200px 1fr;align-items:start;gap:24px;display:grid}.post-list .cover{aspect-ratio:1;border-radius:4px;display:block;overflow:hidden}.post-list .cover img{object-fit:cover;width:100%;height:100%;display:block}@media (width<=1000px){.post-list{grid-template-columns:1fr}}@media (width<=520px){.post-list .cell.has-cover{grid-template-columns:1fr}.post-list .cover{aspect-ratio:4/3}}.works{border:1px dashed var(--line-strong);margin-top:24px;padding:24px}.works>.lbl{color:var(--ink-2);align-items:center;gap:10px;display:flex}.works .pulse{background:var(--accent);border-radius:50%;width:8px;height:8px;position:relative}.works .pulse:after{content:"";background:var(--accent);border-radius:50%;animation:2.4s cubic-bezier(.16,1,.3,1) infinite pulse;position:absolute;inset:0}.works-line{color:var(--ink-2);margin-top:12px;font-size:17px}.works ul{margin:16px 0 0;padding:0;list-style:none}.works li{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;padding:12px 0;display:flex}.works-title{font-size:18px;font-weight:600}.brand{align-items:center;min-height:44px}.project-links a{align-items:center;min-height:44px;margin:-14px 0;display:inline-flex}.tags{flex-wrap:wrap;gap:8px;margin:20px 0 0;padding:0;list-style:none;display:flex}.tags li{border:1px solid var(--line-strong);font-family:var(--mono);letter-spacing:.06em;color:var(--ink-3);border-radius:999px;padding:4px 10px;font-size:11px}.prose pre{tab-size:4;-webkit-overflow-scrolling:touch;border-radius:6px;margin:20px 0 24px;padding:16px 18px;font-size:13.5px;line-height:1.6;overflow-x:auto}.prose pre code{font-family:var(--mono);font-size:inherit;font-weight:400}.prose :not(pre)>code{background:var(--raised);border:1px solid var(--line);color:var(--ink);word-break:break-word;border-radius:4px;padding:1px 6px;font-size:.86em}.prose h3{letter-spacing:-.01em;color:var(--ink);margin:36px 0 10px;font-size:20px;font-weight:700}.prose ul,.prose ol{margin:0 0 16px;padding-left:22px}.prose li{margin-bottom:6px}.prose table{border-collapse:collapse;width:100%;margin:16px 0 24px;font-size:15px;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px solid var(--line-strong);text-align:left;vertical-align:top;padding:10px 12px}.prose th{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-size:11px;font-weight:500}.prose strong{color:var(--ink)}.status-pill{border:1px solid var(--line-strong);color:var(--ink-2);border-radius:999px;align-items:center;gap:10px;margin-top:20px;padding:8px 14px;font-size:14px;display:inline-flex}.status-pill .pulse,.mini-stages .current i{background:var(--accent);border-radius:50%;flex:none;width:8px;height:8px;position:relative}.status-pill .pulse:after,.mini-stages .current i:after{content:"";background:var(--accent);border-radius:50%;animation:2.4s cubic-bezier(.16,1,.3,1) infinite pulse;position:absolute;inset:0}.case-facts{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 32px;margin:0 0 48px;padding:24px 0;display:grid}.case-facts dd{margin:8px 0 0;font-size:17px}.case-facts a{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}.case-h2{margin:0 0 24px;font-size:26px;font-weight:700}.case-stops{background:0 0;margin-bottom:56px}.case-stops .pin i{background:var(--bg)}.case-stops .read{margin-top:16px}.project.compact{margin-top:24px}.project.compact .tag{font-family:var(--sans);font-style:normal}.project-links a.read{margin:0}.mini-stages{align-self:center;margin:0;padding:0;list-style:none}.mini-stages li{border-top:1px solid var(--line);grid-template-columns:20px 1fr auto;align-items:center;gap:12px;padding:14px 0;font-size:17px;font-weight:600;display:grid}.mini-stages li:last-child{border-bottom:1px solid var(--line)}.mini-stages i{border:1px dashed var(--ink-4);border-radius:50%;width:8px;height:8px}.mini-stages .done i{background:var(--ink-2);border:0}.mini-stages .current i{border:0}.mini-stages .planned span:not(.lbl){color:var(--ink-3)}@media (width<=720px){.case-facts{grid-template-columns:1fr}.prose pre{border-radius:0;margin-left:-24px;margin-right:-24px;font-size:13px}}.case-facts a{align-items:center;min-height:44px;margin:-12px 0;display:inline-flex}.prose td code{white-space:nowrap}@media (width<=720px){.prose table,.prose tbody,.prose tr,.prose td{width:100%;display:block}.prose table{border-top:1px solid var(--line-strong);overflow:visible}.prose thead{display:none}.prose tr{border-bottom:1px solid var(--line-strong);padding:14px 0}.prose td{border:0;padding:4px 0}.prose td:first-child{color:var(--ink);font-weight:700}.prose td[data-label]:before{content:attr(data-label);font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-top:6px;font-size:10px;font-weight:500;display:block}.prose td:first-child[data-label]:before{margin-top:0}.prose td code{white-space:normal;word-break:break-word}}.byline{margin-top:16px}.project-art{border:1px solid var(--line);border-radius:6px;align-self:center;display:block;overflow:hidden}.project-art img{width:100%;height:auto;transition:transform .5s;display:block}.project-art:hover img{transform:scale(1.02)}.project .mini-stages{margin-top:24px}.case-art{border:1px solid var(--line);border-radius:6px;width:100%;height:auto;margin:0 0 40px;display:block}
