@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/ibm-plex-mono-regular.ttf)format("truetype")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500 900;font-display:swap;src:url(/assets/fonts/ibm-plex-mono-semibold.ttf)format("truetype")}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#20202f;--ink:#f2f2f2;--muted:#b8b8b8;--line:#777;--hover:#1c1c1c;--rule:#aaa;--tag-line:#999;--phosphor-core:#fff6;--phosphor-glow:#ffffff26;--crt-scanline:#0004;--crt-vignette:transparent;--crt-edge:transparent;--crt-edge-mobile:transparent;--mono:"IBM Plex Mono", "Courier New", monospace}html[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f7f7f7;--ink:#0d0d0d;--muted:#474747;--line:#888;--hover:#e3e3e3;--rule:#555;--tag-line:#666;--phosphor-core:#00000024;--phosphor-glow:#0000000d;--crt-scanline:#00000012;--crt-vignette:#00000016;--crt-edge:#00000018;--crt-edge-mobile:#00000012}*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-gutter:stable;scroll-padding-top:32px}html.contact-open{overflow:hidden}body{isolation:isolate;min-height:100vh;color:var(--ink);background-color:var(--paper);font-family:var(--mono);overflow-wrap:anywhere;flex-direction:column;margin:0;display:flex}main{flex:1}a{color:inherit;text-decoration:none}a:focus-visible{outline:2px solid var(--ink);outline-offset:6px}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible{outline:2px solid var(--ink);outline-offset:6px}::selection{color:var(--paper);background:var(--ink)}h1,h2,h3,h4,p{margin:0}p{line-height:1.75}.wrap{width:min(1080px,100% - 80px);margin-inline:auto}.wordmark{letter-spacing:0;font-size:20px;font-weight:600}body{padding-left:150px}.side-nav{z-index:6;flex-direction:column;align-items:flex-start;gap:6px;display:flex;position:fixed;top:50%;left:20px;transform:translateY(-50%)}.side-nav a{min-height:44px;color:var(--muted);transform-origin:0;align-items:center;font-size:16px;transition:transform .25s,color .25s;display:flex}.side-nav a:hover{color:var(--ink)}.side-nav a[aria-current=page]{color:var(--ink);transform:translate(8px)scale(1.2)}.hero{padding-top:78px;position:relative}.hero-copy{max-width:900px}.eyebrow{letter-spacing:1.2px;text-transform:uppercase;font-size:11px;font-weight:600}.hero .eyebrow{letter-spacing:0;text-transform:none;align-items:center;gap:9px;margin-bottom:26px;font-size:15px;display:inline-flex}.dot{background:var(--ink);border-radius:0;flex-shrink:0;width:6px;height:6px;display:inline-block}h1{letter-spacing:0;font-size:clamp(76px,11.6vw,154px);font-weight:600;line-height:.94}h1 span{display:block}.hero-bottom{flex-direction:column;align-items:flex-start;gap:24px;margin-top:35px;display:flex}.intro{max-width:420px;color:var(--muted);font-size:16px}.button{border:1.5px solid var(--ink);color:var(--paper);background:var(--ink);white-space:nowrap;border-radius:0;justify-content:space-between;align-items:center;gap:30px;padding:16px 22px;font-size:13px;font-weight:600;transition:background-color .2s;display:inline-flex}.button:hover{background:var(--muted)}.button:active{background:var(--line)}.hero-sticker{flex-shrink:0;align-self:flex-start;width:clamp(148px,18vw,220px);display:grid}.hero-action{white-space:nowrap;cursor:pointer;background:0 0;border:0;padding:0;font-size:clamp(14px,1.25vw,18px);font-weight:700;line-height:1.2;display:block}.hero-action-face{border:1.5px solid var(--ink);min-height:56px;color:var(--paper);background:var(--ink);border-radius:0;flex-direction:column;justify-content:center;align-items:center;padding:12px 18px;transition:background-color .2s,color .2s,box-shadow .2s;display:flex}.hero-action[data-contact-open] .hero-action-face{--button-outline:#65ff9a;color:#fff;text-shadow:0 0 5px #ffffff40;background:#138339;border-color:#65ff9a}.hero-action:hover .hero-action-face,.hero-action:focus-visible .hero-action-face{color:var(--paper);background:var(--muted)}.hero-action:active .hero-action-face{background:var(--line)}.hero-action[data-contact-open]:not(:disabled):is(:hover,:focus-visible) .hero-action-face{color:#fff;background:#209e4c}.hero-action[data-contact-open]:not(:disabled):active .hero-action-face{color:#fff;background:#0c6d2b}.hero-foot{border-top:1px dashed var(--rule);margin-top:70px}.section{padding-block:60px}.section-heading{justify-content:space-between;align-items:end;gap:24px;margin-bottom:28px;display:flex}.section-heading .eyebrow,.about-section .eyebrow{margin-bottom:12px}h2{letter-spacing:0;font-size:clamp(30px,4vw,45px);font-weight:600;line-height:1.15}.section-heading>p{color:var(--muted);font-size:13px}.project-empty{background:var(--paper);border:1.5px solid var(--ink);border-radius:0;align-items:center;gap:30px;padding:32px;display:flex}.project-drawing{flex-shrink:0;place-items:center;width:115px;height:110px;display:grid;position:relative}.drawing-window{border:2px solid var(--ink);border-radius:0;width:76px;height:63px}.drawing-window:before{content:"";border-top:2px solid var(--ink);position:absolute;top:15px;left:0;right:0}.drawing-plus{background:var(--paper);padding:2px;font-size:30px;line-height:1;position:absolute;bottom:10px;right:4px}.empty-copy .eyebrow{color:var(--muted);font-size:10px}.empty-copy h3{letter-spacing:0;margin:9px 0;font-size:23px}.empty-copy>p:last-child{color:var(--muted);max-width:440px;font-size:13px}.status-tag{border:1px dashed var(--tag-line);white-space:nowrap;border-radius:0;align-self:flex-start;margin-left:auto;padding:7px 11px;font-size:10px}.about-section{margin-block:28px}.two-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:55px;display:grid}.about-section>.wrap{background:var(--paper);border:1px solid var(--line);border-radius:0;padding:40px}.large-copy{letter-spacing:0;margin-bottom:17px;font-size:22px;font-weight:500;line-height:1.5}.about-copy>p:not(.large-copy){color:var(--muted);font-size:14px}.about-copy>.about-note{align-items:center;gap:9px;margin-top:24px;font-size:11px;display:flex}.detail-group{margin-top:23px}.detail-group .eyebrow{margin-bottom:10px;font-size:10px}.detail-tags{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.detail-tags li{border:1px solid var(--line);background:var(--paper);border-radius:0;padding:6px 10px;font-size:12px}#experience-content>.two-columns>div{background:var(--paper);border:1px solid var(--line);border-radius:0;padding:26px}.column-title{border-bottom:1px dashed var(--line);padding-bottom:18px;font-size:16px}.timeline-empty{border-left:1px solid var(--line);margin-top:22px;padding:12px 0 12px 20px;position:relative}.timeline-dot{background:var(--paper);border:1px solid var(--line);border-radius:0;width:7px;height:7px;position:absolute;top:20px;left:-4px}.timeline-empty p{font-size:13px}.timeline-empty .muted{margin-top:6px;font-size:12px}.muted{color:var(--muted)}.timeline-entry{border-bottom:1px solid var(--line);padding-block:23px}.timeline-entry:last-child{border-bottom:0}.timeline-entry h4{margin-top:12px;font-size:20px}.organization{margin:7px 0;font-size:13px}.timeline-entry .muted{font-size:13px}.contact-section{border-top:1px dashed var(--rule);padding-block:48px 65px}.contact-section>.eyebrow{margin-bottom:18px}.contact-row{justify-content:space-between;align-items:center;gap:30px;display:flex}.contact-note{color:var(--muted);background:var(--paper);font-size:13px}.social-links{flex-wrap:wrap;gap:20px;margin-top:18px;display:flex}.text-link{text-underline-offset:5px;font-size:13px;text-decoration:underline}footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;padding-block:25px 165px;display:flex}footer .wordmark{font-size:16px}footer>a:last-child{color:var(--muted);font-size:11px}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.project-card{background:var(--paper);border:1px solid var(--ink);overflow-wrap:anywhere;border-radius:0;padding:30px}.project-number{letter-spacing:0;margin-bottom:24px;font-size:60px;font-weight:800;display:block}.project-card h3{margin:14px 0;font-size:25px}.project-card>p:not(.eyebrow){color:var(--muted);margin-bottom:22px;font-size:14px}.skip-link{z-index:10;background:var(--ink);color:var(--paper);padding:12px;position:fixed;top:10px;left:15px;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.page-panel.inner-page{padding-block:30px 65px}.inner-page h1{letter-spacing:0;font-size:clamp(24px,4.4vw,56px);font-weight:600;line-height:1.08}.inner-page .section{padding-top:30px}.inner-page .about-section{margin-top:30px}.inner-page .section-heading{flex-direction:column;align-items:start;gap:16px;margin-bottom:36px}.recent-projects{padding-block:30px 60px}.recent-projects>h2{letter-spacing:0;margin-bottom:24px;font-size:28px}.recent-projects>p{letter-spacing:0;font-size:21px;font-weight:500}.page-heading{max-width:680px;margin-bottom:40px}.page-heading .eyebrow{margin-bottom:16px}.page-heading>p:last-child{color:var(--muted);margin-top:20px;font-size:16px}.contact-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;display:grid}.contact-card{border:1.5px solid var(--ink);background:var(--paper);border-radius:0;flex-wrap:wrap;align-items:center;gap:18px;padding:26px;transition:background-color .2s;display:flex}.contact-card:is(a,button):is(:hover,:focus-visible){background:var(--hover)}.contact-icon{border:1px solid var(--ink);border-radius:0;flex-shrink:0;place-items:center;width:52px;height:52px;font-size:27px;font-weight:700;display:grid}.contact-card-copy{overflow-wrap:anywhere;flex:1;min-width:0}.contact-card h2,.contact-card h3{letter-spacing:0;font-size:23px}.contact-card p{color:var(--muted);margin-top:7px;font-size:12px}.contact-card-status{margin-left:auto;font-size:22px}.is-unavailable{border-style:dashed;border-color:var(--rule)}.is-unavailable .contact-card-status{border:1px solid var(--line);border-radius:0;padding:5px 8px;font-size:10px}.contact-dialog{width:min(840px,100% - 40px);max-height:calc(100dvh - 40px);color:var(--ink);background:var(--paper);border:1px solid var(--ink);overscroll-behavior:contain;border-radius:0;margin:auto;padding:48px;overflow-y:auto}.contact-dialog[open]{animation:.35s cubic-bezier(.2,.7,.2,1) both contact-slide-in}.contact-dialog::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#20202030}.contact-dialog[open]::backdrop{animation:.35s cubic-bezier(.2,.7,.2,1) both contact-backdrop-in}@keyframes contact-slide-in{0%{transform:translateY(calc(50dvh + 50% + 40px))}to{transform:translateY(0)}}@keyframes contact-backdrop-in{0%{-webkit-backdrop-filter:blur();backdrop-filter:blur();background-color:#0000}to{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background-color:#20202030}}.contact-dialog>.eyebrow{margin:0 50px 15px 0}.contact-dialog>h2{padding-right:25px;font-size:clamp(32px,5vw,48px)}.dialog-description{color:var(--muted);max-width:560px;margin:20px 0 32px;font-size:15px}.contact-close{border:1px solid var(--line);background:var(--paper);border-radius:0;place-items:center;width:44px;height:44px;font-size:28px;line-height:1;display:grid;position:absolute;top:18px;right:18px}.contact-close:hover{background:var(--ink);color:var(--paper)}.contact-dialog .contact-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.contact-dialog .contact-card{flex-flow:column;align-items:flex-start;gap:16px;min-width:0;padding:18px;position:relative}.contact-dialog .contact-card-status{position:absolute;top:18px;right:18px}.contact-dialog .contact-card-copy{flex:none}.contact-dialog .contact-icon{width:48px;height:48px;font-size:26px}.contact-dialog .contact-card h3{font-size:20px}.contact-card:is(button){color:inherit;font:inherit;text-align:left;cursor:pointer}.contact-grid[hidden]{display:none}.message-back{min-height:44px;color:var(--ink);font:inherit;text-underline-offset:4px;cursor:pointer;background:0 0;border:0;margin-bottom:20px;padding:8px 0;text-decoration:underline}.message-form{gap:12px;display:grid}.message-form label{font-size:14px}.message-form :is(input,textarea){border:1px solid var(--ink);width:100%;min-width:0;min-height:44px;color:var(--ink);background:var(--paper);font:inherit;border-radius:0;padding:12px;font-size:16px}.message-form textarea{resize:vertical;margin-bottom:4px}.message-form .button{justify-self:start;min-height:44px}.message-form .button:disabled{opacity:.6;cursor:wait}.message-note{color:var(--muted);margin:0 0 12px;font-size:12px;line-height:1.6}.message-feedback{overflow-wrap:anywhere;font-size:14px}.message-feedback:empty,.message-trap{display:none}:is(.message-form input,.message-form textarea,.message-back,button.contact-card):focus-visible{outline:2px solid var(--ink);outline-offset:4px}@media (min-width:1200px){.wrap{width:min(1080px,100% - 240px)}}@media (max-width:900px){.wrap{width:calc(100% - 48px)}.hero{padding-top:50px}.hero-bottom{gap:25px}.two-columns{gap:28px}.status-tag{display:none}.contact-grid{grid-template-columns:1fr}}@media (max-width:600px){.wrap{width:calc(100% - 40px)}.wordmark{font-size:18px}.hero{padding-top:35px}h1{font-size:clamp(65px,18vw,108px)}.hero-action{font-size:15px}.hero .eyebrow{font-size:13px}.hero-bottom{flex-direction:column;align-items:start;margin-top:26px}.intro{font-size:15px}.hero-foot{margin-top:42px}.section{padding-block:38px}.section-heading{display:block}.section-heading>p{margin-top:16px}.project-empty{flex-direction:column;align-items:start;gap:10px;padding:24px}.two-columns,.project-grid{grid-template-columns:1fr}.about-section>.wrap{padding:27px}.contact-row{flex-direction:column;align-items:start;gap:25px}footer{flex-wrap:wrap;padding-bottom:110px}.page-panel.inner-page{padding-block:0 30px}.contact-card{padding:20px}.contact-dialog{width:calc(100% - 24px);max-height:calc(100dvh - 24px);padding:28px 20px}.contact-dialog .contact-grid{gap:8px}.contact-dialog .contact-card{text-align:center;align-items:center;gap:12px;padding:16px 6px}.contact-dialog .contact-icon{width:36px;height:36px;font-size:22px}.contact-dialog .contact-card h3{overflow-wrap:normal;font-size:clamp(11px,3vw,16px)}.contact-dialog .contact-card p,.contact-dialog .contact-card-status[aria-hidden=true]{display:none}}.home-panel .hero-copy{max-width:none;padding-right:calc(min(34%,320px) + 30px);position:relative}.hero-name-row{--name-size:clamp(64px, 9vw, 128px);justify-content:space-between;align-items:flex-start;gap:30px;display:flex}.home-panel h1{font-size:var(--name-size);letter-spacing:0}.ascii-rain{width:min(34%,320px);min-width:0;color:var(--ink);position:absolute;top:0;bottom:-70px;right:0}.ascii-rain canvas{width:100%;height:100%;display:block;position:absolute;inset:0}@media (min-width:601px) and (max-width:900px){.hero-name-row{--name-size:clamp(40px, 6.8vw, 62px);gap:20px}}.home-page footer{padding-bottom:30px}@media (max-width:600px){.hero-name-row{--name-size:clamp(40px, 12vw, 72px);gap:24px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important}}html.panel-navigation{scroll-behavior:auto}.panel-navigation body{height:100dvh;min-height:0;overflow:hidden}.panel-navigation main{min-height:0;display:flex}.panel-navigation .page-rail{scroll-snap-type:y mandatory;scrollbar-width:none;flex-direction:column;width:100%;min-height:0;display:flex;overflow:hidden auto}.page-rail::-webkit-scrollbar{display:none}.panel-navigation .page-rail.is-sliding{scroll-snap-type:none}.panel-navigation .page-panel{overscroll-behavior-y:contain;scroll-snap-align:start;scrollbar-gutter:stable;flex:0 0 100%;min-width:0;height:100%;min-height:0;overflow-y:auto}.page-advance{display:none}.panel-navigation .page-advance{z-index:7;flex:0 0 90px;margin-top:-90px;display:block;position:relative}.next-page{width:100%;height:90px;color:var(--ink);opacity:.65;outline-offset:-6px;background:0 0;place-items:center;display:grid}.next-page[hidden]{display:none}.next-page:is(:hover,:focus-visible,:active){opacity:1}@media (prefers-reduced-motion:no-preference){.next-page svg{animation:3s ease-in-out infinite next-page-bounce}}@keyframes next-page-bounce{0%,20%,40%,to{transform:translateY(0)}10%{transform:translateY(6px)}30%{transform:translateY(3px)}}@media (max-width:600px){.continuous-navigation .page-advance{z-index:7;padding-bottom:env(safe-area-inset-bottom);display:block;position:fixed;bottom:0;left:110px;right:0}.continuous-navigation .page-panel{padding-bottom:calc(72px + env(safe-area-inset-bottom))}}@media print{.page-advance{display:none!important}}.panel-navigation footer{flex-shrink:0;padding-block:18px}.panel-navigation .page-panel.inner-page{padding-top:175px;padding-bottom:40px}.sticker-anchor{flex-shrink:0;align-self:flex-start;width:clamp(148px,18vw,220px);height:56px}.sticker-flight{z-index:5;transition:left .65s cubic-bezier(.22,1,.36,1),top .65s cubic-bezier(.22,1,.36,1);position:fixed}.sticker-flight .hero-sticker{margin:0;position:relative;inset:auto}.sticker-flight.is-positioning{transition:none}@media (max-width:600px){body{padding-left:110px}.side-nav{left:12px}.side-nav a{font-size:13px}.side-nav a[aria-current=page]{transform:translate(6px)scale(1.2)}.hero-name-row{--name-size:clamp(32px, 9vw, 54px);flex-direction:column}.ascii-rain{width:min(100%,240px);height:240px;margin-top:24px;margin-bottom:-42px;position:relative;inset:auto}.home-panel .hero-copy{padding-right:0}}@media (prefers-reduced-motion:reduce){.contact-dialog[open],.contact-dialog[open]::backdrop{animation:none}.sticker-flight{transition:none}}.crt-overlay{z-index:20;pointer-events:none;background:repeating-linear-gradient(0deg, var(--crt-scanline) 0 1px, transparent 1px 3px), repeating-linear-gradient(90deg, #ffffff04 0 1px, #0000000a 1px 2px, transparent 2px 4px);position:fixed;inset:0;overflow:hidden}.crt-overlay:before,.crt-overlay:after{content:"";pointer-events:none;position:absolute;inset:0}.crt-overlay:before{background:radial-gradient(ellipse at 50% 0%, #ffffff05, transparent 65%), radial-gradient(ellipse at center, transparent 55%, var(--crt-vignette) 100%);box-shadow:inset 0 0 35px var(--crt-edge)}.crt-overlay:after{background:linear-gradient(#0000 50%,#00000003 50%,#00000001 65%,#0000 85%);inset-block:-100%}.crt-grain{pointer-events:none;opacity:.045;background:url(/assets/crt-grain.svg);position:absolute;inset:-128px}html:not([data-crt=off]) body{text-shadow:0 0 1px var(--phosphor-core), 0 0 6px var(--phosphor-glow)}.hero-action-face,.button,.skip-link{text-shadow:none}.display-controls{z-index:21;gap:6px;display:flex;position:fixed;bottom:20px;left:20px}.display-control{border:1px solid var(--ink);background:var(--paper);width:44px;height:44px;text-shadow:none;border-radius:0;place-items:center;padding:0;font-size:12px;font-weight:600;display:grid;position:relative}.display-control-label{border:1px solid var(--ink);color:var(--ink);background:var(--paper);white-space:nowrap;visibility:hidden;opacity:0;pointer-events:none;padding:8px 10px;transition:opacity .15s;position:absolute;bottom:calc(100% + 10px);left:0}.display-control-label span{color:var(--muted)}@media (hover:hover){.display-control:hover{background:var(--hover)}.display-control:hover .display-control-label{visibility:visible;opacity:1}}.display-control:focus-visible .display-control-label,.display-control:active .display-control-label{visibility:visible;opacity:1}.display-control:active{transform:translateY(1px)}.hero-action-face,.button,.display-control,.contact-close{--button-outline:var(--ink);border-color:var(--button-outline);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--button-outline) 25%, transparent), 0 0 12px color-mix(in srgb, var(--button-outline) 35%, transparent), 0 0 32px color-mix(in srgb, var(--button-outline) 20%, transparent);transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s}.contact-close{--button-outline:var(--line)}.hero-action:not(:disabled):is(:hover,:focus-visible) .hero-action-face,:is(.button,.display-control,.contact-close):is(:hover,:focus-visible){box-shadow:inset 0 1px 0 color-mix(in srgb, var(--button-outline) 35%, transparent), 0 0 16px color-mix(in srgb, var(--button-outline) 45%, transparent), 0 0 40px color-mix(in srgb, var(--button-outline) 28%, transparent)}.hero-action:not(:disabled):active .hero-action-face,:is(.button,.display-control,.contact-close):active{box-shadow:inset 0 1px 3px #0003, 0 0 10px color-mix(in srgb, var(--button-outline) 35%, transparent), 0 0 24px color-mix(in srgb, var(--button-outline) 17%, transparent)}html[data-crt=off] .crt-overlay{display:none}@media (prefers-reduced-motion:no-preference){.crt-grain{animation:.32s step-end infinite crt-grain}.crt-overlay:after{animation:10s linear infinite crt-sweep}}@keyframes crt-grain{0%,to{transform:translate(0)}25%{transform:translate(-32px,16px)}50%{transform:translate(16px,-32px)}75%{transform:translate(-16px,32px)}}@keyframes crt-sweep{0%{transform:translateY(-40%)}to{transform:translateY(40%)}}@media (max-width:600px){.display-controls{left:12px;bottom:max(12px, env(safe-area-inset-bottom))}.crt-overlay:before{box-shadow:inset 0 0 20px var(--crt-edge-mobile)}}@media print,(forced-colors:active){.crt-overlay,.display-controls{display:none}html:not([data-crt=off]) body{text-shadow:none}}
