@font-face{font-family:"Instrument Serif";font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/35f3de0ebb1cfc70-s.woff2?dpl=dpl_6bJLrLocwr81CDxoLtcEmorF2DRL) format("woff2");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:"Instrument Serif";font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/e6099e249fd938cc-s.p.woff2?dpl=dpl_6bJLrLocwr81CDxoLtcEmorF2DRL) format("woff2");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:"Instrument Serif Fallback";src:local("Times New Roman");ascent-override:117.94%;descent-override:36.93%;line-gap-override:0.00%;size-adjust:83.94%}.__className_df5fd0{font-family:"Instrument Serif","Instrument Serif Fallback";font-weight:400;font-style:normal}.__variable_df5fd0{--font-serif:"Instrument Serif","Instrument Serif Fallback"}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2?dpl=dpl_6bJLrLocwr81CDxoLtcEmorF2DRL) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2?dpl=dpl_6bJLrLocwr81CDxoLtcEmorF2DRL) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2?dpl=dpl_6bJLrLocwr81CDxoLtcEmorF2DRL) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2?dpl=dpl_6bJLrLocwr81CDxoLtcEmorF2DRL) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2?dpl=dpl_6bJLrLocwr81CDxoLtcEmorF2DRL) format("woff2");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:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2?dpl=dpl_6bJLrLocwr81CDxoLtcEmorF2DRL) format("woff2");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:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2?dpl=dpl_6bJLrLocwr81CDxoLtcEmorF2DRL) format("woff2");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:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_762cae{font-family:Inter,Inter Fallback;font-style:normal}.__variable_762cae{--font-sans:"Inter","Inter Fallback"}@property --beam{syntax:"<percentage>";inherits:true;initial-value:50%}:root{--s1:3px;--s2:6px;--s3:9px;--s4:18px;--s5:27px;--s6:36px;--s7:54px;--s8:72px;--s9:108px;--s10:144px;--bg:#08080a;--bg-lift:#0d0d11;--line:color-mix(in oklab,#ffffff 9%,transparent);--line-soft:color-mix(in oklab,#ffffff 5%,transparent);--fg:#f4f3f0;--fg-dim:#a3a2ad;--fg-faint:#6d6c78;--accent:oklch(72% 0.16 45);--accent-2:oklch(70% 0.13 285);--maxw:1152px;--col:720px;--ease:cubic-bezier(0.22,1,0.36,1);--t:.63s}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--bg:#faf9f7;--bg-lift:#ffffff;--line:color-mix(in oklab,#000000 12%,transparent);--line-soft:color-mix(in oklab,#000000 6%,transparent);--fg:#101014;--fg-dim:#55545f;--fg-faint:#8a8995}}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-sans),ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;font-size:18px;line-height:1.666;-webkit-font-smoothing:antialiased;overflow-x:hidden}body:before{inset:0;background:radial-gradient(720px circle at var(--mx,50%) var(--my,18%),color-mix(in oklab,var(--accent) 13%,transparent),transparent 63%),radial-gradient(540px circle at calc(100% - var(--mx, 50%)) 81%,color-mix(in oklab,var(--accent-2) 9%,transparent),transparent 60%)}body:after,body:before{content:"";position:fixed;z-index:0;pointer-events:none}body:after{inset:-50%;opacity:.036;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}footer,header,main{position:relative;z-index:1}a{color:inherit;text-decoration:none}h1,h2,h3{font-family:var(--font-serif),"Iowan Old Style",Georgia,serif;font-weight:400;letter-spacing:-.021em;text-wrap:balance}h1{font-size:clamp(48px,9.6vw,126px);line-height:.93;margin:0}h2{font-size:clamp(30px,5.1vw,54px);line-height:1.05;margin:0 0 var(--s5)}h3{font-size:21px;line-height:1.29;margin:0;letter-spacing:-.015em}p{margin:0 0 var(--s4);text-wrap:pretty}.dim,.lead{color:var(--fg-dim)}.lead{font-size:clamp(18px,2.1vw,24px);line-height:1.5;max-width:30ch}.wrap{width:min(100% - var(--s6),var(--maxw));margin-inline:auto}.col{max-width:var(--col)}.section{padding:clamp(72px,10.8vw,144px) 0;border-top:1px solid var(--line-soft)}.sec-head{display:grid;gap:var(--s2);margin-bottom:var(--s7)}@media (min-width:900px){.sec-head{grid-template-columns:90px 1fr;gap:0 var(--s6);align-items:start}.sec-num{padding-top:var(--s4);position:sticky;top:90px}}.sec-num{font-family:var(--font-sans);font-size:12px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:.21em;color:var(--fg-faint)}.sec-body{grid-column:2}@media (max-width:899px){.sec-body{grid-column:1}}.nav{position:sticky;top:0;z-index:40;background:color-mix(in oklab,var(--bg) 72%,transparent);-webkit-backdrop-filter:blur(18px) saturate(141%);backdrop-filter:blur(18px) saturate(141%);border-bottom:1px solid var(--line-soft)}.nav-in{width:min(100% - var(--s6),var(--maxw));margin-inline:auto;display:flex;gap:var(--s5);padding:var(--s4) 0}.nav-in,.nav-name{align-items:center}.nav-name{font-size:15px;font-weight:600;display:inline-flex;gap:var(--s3)}.nav-mark{color:var(--accent);display:block}.nav-links{margin-left:auto;display:flex;gap:var(--s5);overflow-x:auto;scrollbar-width:none}.nav-links::-webkit-scrollbar{display:none}.nav-links a{font-size:13.5px;color:var(--fg-dim);white-space:nowrap;position:relative;padding-block:var(--s1)}.nav-links a:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:right;transition:transform var(--t) var(--ease)}.nav-links a:hover{color:var(--fg)}.nav-links a:hover:after{transform:scaleX(1);transform-origin:left}.hero{padding:clamp(90px,16.2vh,189px) 0 clamp(63px,9vw,117px);position:relative}.hero-geo{position:absolute;right:-9%;top:50%;transform:translateY(-50%);color:var(--accent);opacity:.07;pointer-events:none;width:min(54vw,540px);height:auto}@media (max-width:900px){.hero-geo{right:-27%;opacity:.05}}.hero h1>span{display:block;animation:rise 1.08s var(--ease) backwards}.hero h1>span:first-child{animation-delay:.06s}.hero h1>span:nth-child(2){animation-delay:.18s}.hero h1>span:nth-child(3){animation-delay:.3s}@keyframes rise{0%{opacity:0;transform:translateY(.42em)}to{opacity:1;transform:none}}.hero .lead{margin-top:var(--s5);animation:rise 1.08s var(--ease) .36s backwards}.hero-links{gap:var(--s3);animation:rise 1.08s var(--ease) .48s backwards}.hero-links,.hero-meta{display:flex;flex-wrap:wrap;margin-top:var(--s6)}.hero-meta{gap:var(--s3) var(--s4);font-size:13.5px;color:var(--fg-faint);animation:rise 1.08s var(--ease) .54s backwards}.btn{position:relative;overflow:hidden;isolation:isolate;display:inline-flex;align-items:center;gap:var(--s2);padding:var(--s3) var(--s4);border-radius:999px;border:1px solid var(--line);font-size:14px;font-weight:500;color:var(--fg);transition:border-color var(--t) var(--ease),color var(--t) var(--ease)}.btn:before{content:"";position:absolute;inset:0;z-index:-1;background:var(--accent);transform:translateY(101%);transition:transform var(--t) var(--ease)}.btn:hover{border-color:var(--accent)}.btn:hover:before{transform:translateY(0)}.btn-solid{background:var(--fg);border-color:var(--fg);font-weight:600}.btn-solid,.btn-solid:hover{color:var(--bg)}.doors{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s3);perspective:1800px;perspective-origin:50% 40%}@media (max-width:900px){.doors{grid-template-columns:repeat(2,1fr)}}@media (max-width:560px){.doors{grid-template-columns:1fr}}.door{position:relative;aspect-ratio:1;transform-style:preserve-3d}@media (max-width:560px){.door{aspect-ratio:3/2}}.door-room{position:absolute;inset:0;border:1px solid var(--line-soft);border-radius:var(--s2);background:radial-gradient(120% 100% at 0 50%,color-mix(in oklab,var(--accent) 10%,transparent),transparent 63%),var(--bg-lift);display:grid;align-items:end;opacity:0;transition:opacity .3s var(--ease) .09s}.door.is-open .door-room{opacity:1}.door-room-in{padding:var(--s4);display:grid;gap:var(--s3)}.door-status{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--fg-faint)}.door-status[data-s=live]{color:oklch(78% .16 150)}.door-status[data-s=building]{color:var(--accent)}.door-what{font-size:14px;line-height:1.53;color:var(--fg-dim);margin:0}.door-visit{font-size:13.5px;font-weight:600;color:var(--fg);border-bottom:1px solid var(--accent);padding-bottom:2px;justify-self:start}.door-visit:hover{color:var(--accent)}.door-face{position:absolute;inset:0;font:inherit;text-align:left;cursor:pointer;border:1px solid var(--line);border-radius:var(--s2);background:linear-gradient(152deg,var(--bg-lift),color-mix(in oklab,var(--bg-lift) 60%,var(--bg)));color:var(--fg);display:grid;align-content:space-between;padding:var(--s4);transform-origin:left center;transition:transform var(--t) var(--ease),border-color var(--t) var(--ease),box-shadow var(--t) var(--ease);backface-visibility:hidden}.door-face:hover{border-color:color-mix(in oklab,var(--accent) 54%,var(--line))}@media (hover:hover) and (prefers-reduced-motion:no-preference){.door:not(.is-open) .door-face:hover{transform:rotateY(-9deg)}}.door.is-open .door-face{transform:rotateY(-108deg);box-shadow:27px 0 54px -18px rgba(0,0,0,.63);pointer-events:none}.door-n{font-family:var(--font-sans);font-size:11.5px;letter-spacing:.21em;color:var(--fg-faint);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.door-name{font-family:var(--font-serif);font-size:clamp(19px,2.1vw,27px);line-height:1.12;letter-spacing:-.021em}.door-seam{position:absolute;left:var(--s3);top:var(--s3);bottom:var(--s3);width:1px;background:linear-gradient(transparent,var(--line),transparent)}.door-knob{position:absolute;right:var(--s4);top:50%;width:var(--s2);height:var(--s2);border-radius:50%;background:var(--fg-faint);transform:translateY(-50%);transition:background var(--t) var(--ease),box-shadow var(--t) var(--ease)}.door-face:hover .door-knob{background:var(--accent);box-shadow:0 0 0 var(--s2) color-mix(in oklab,var(--accent) 18%,transparent)}.door-face:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.reveal{opacity:1}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.reveal{animation:reveal-in linear both;animation-timeline:view();animation-range:entry 0 entry 30%}@keyframes reveal-in{0%{opacity:0;transform:translateY(27px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}}}.rows{display:grid}.row{padding:var(--s5) 0;border-bottom:1px solid var(--line-soft)}.row:last-child{border-bottom:0}.row h3{margin-bottom:var(--s2)}.row p{font-size:16px;color:var(--fg-dim);margin:0;max-width:63ch}.row-meta{font-size:13px;letter-spacing:.03em;color:var(--fg-faint);margin-top:var(--s2)}.skill-group{margin-bottom:var(--s6)}.skill-label{font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:var(--s4)}.tags{display:flex;flex-wrap:wrap;gap:var(--s2)}.tag{font-size:14px;padding:var(--s2) var(--s4);border-radius:999px;border:1px solid var(--line);color:var(--fg-dim);transition:border-color var(--t) var(--ease),color var(--t) var(--ease),transform var(--t) var(--ease)}.tag:hover{border-color:var(--accent);color:var(--fg);transform:translateY(-3px)}.filters{display:flex;flex-wrap:wrap;gap:var(--s3);margin-bottom:var(--s4)}.filter{font:inherit;font-size:14px;cursor:pointer;padding:var(--s2) var(--s4);border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--fg-dim);transition:color .3s var(--ease),border-color .3s var(--ease),background .3s var(--ease)}.filter:hover{color:var(--fg)}.filter[aria-pressed=true]{color:var(--bg);background:var(--fg);border-color:var(--fg)}.theme-blurb{font-size:16px;color:var(--fg-dim);margin:0 0 var(--s7);max-width:54ch}.tweet-item{margin-bottom:var(--s6);max-width:560px}.tweet-note{font-size:17px;line-height:1.53;margin:0 0 var(--s3);padding-left:var(--s4);border-left:2px solid var(--accent);color:var(--fg)}.tweet-fallback{display:inline-block;font-size:14px;color:var(--fg-dim);border-bottom:1px solid var(--line);padding-bottom:2px}.tweet-fallback:hover{color:var(--accent);border-color:var(--accent)}.todo{border:1px dashed var(--line);border-radius:var(--s4);padding:var(--s4) var(--s5);font-size:15px;color:var(--fg-dim);max-width:60ch}.todo code{font-size:13px;color:var(--accent)}.footer{padding:var(--s9) 0;border-top:1px solid var(--line-soft)}.footer-in{display:flex;flex-wrap:wrap;gap:var(--s4);align-items:baseline;justify-content:space-between}.footer a{color:var(--fg-dim)}.footer a:hover{color:var(--accent)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation:none!important;transition-duration:.01ms!important}.door.is-open .door-face{transform:none;opacity:0;visibility:hidden}.hero .lead,.hero h1>span,.hero-links,.hero-meta{opacity:1;transform:none}}.page-head{padding:clamp(54px,9vw,108px) 0 var(--s7);display:grid;gap:var(--s3)}.page-title{font-family:var(--font-serif);font-weight:400;font-size:clamp(38px,6.9vw,81px);line-height:1.02;letter-spacing:-.021em;margin:0;text-wrap:balance}.back{font-size:13.5px;color:var(--fg-dim);justify-self:start;border-bottom:1px solid transparent;padding-bottom:2px;transition:color var(--t) var(--ease),border-color var(--t) var(--ease)}.back:hover{color:var(--accent);border-color:var(--accent)}.ways{display:grid;gap:var(--s3)}@media (min-width:720px){.ways{grid-template-columns:1fr 1fr}}.way{display:grid;gap:var(--s2);align-content:start;padding:var(--s5);border:1px solid var(--line);border-radius:var(--s2);background:var(--bg-lift);transition:border-color var(--t) var(--ease),transform var(--t) var(--ease)}.way:hover{border-color:var(--accent);transform:translateY(-3px)}.way-n{font-size:11.5px;letter-spacing:.21em;text-transform:uppercase;color:var(--fg-faint)}.way-t{font-family:var(--font-serif);font-size:27px;line-height:1.15;letter-spacing:-.021em}.way-d{font-size:15px;line-height:1.53;color:var(--fg-dim)}