@font-face{font-family:Tomorrow;src:url(/fonts/tomorrow/Tomorrow-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Tomorrow;src:url(/fonts/tomorrow/Tomorrow-Medium.ttf) format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Silkscreen;src:url(/fonts/silkscreen/Silkscreen-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Silkscreen;src:url(/fonts/silkscreen/Silkscreen-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:BetterVCR;src:url(/fonts/better-vcr/BetterVCR-25.09.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}:root{--bg: #ffffff;--fg: #0a0a0a;--muted: #404040;--border: #c6c6c6;--project-chamfer: 22px;--cut-sm: 10px;--cut-md: 14px;--shape-outline-w: 2px;--cut-sm-out: calc(var(--cut-sm) + var(--shape-outline-w));--cut-md-out: calc(var(--cut-md) + var(--shape-outline-w));--project-chamfer-out: calc(var(--project-chamfer) + var(--shape-outline-w));--pat-dither-fine: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2' height='2'%3E%3Crect width='2' height='2' fill='%23fff'/%3E%3Crect width='1' height='1' fill='%23000'/%3E%3Crect x='1' y='1' width='1' height='1' fill='%23000'/%3E%3C/svg%3E");--pat-dither-media: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Crect width='4' height='4' fill='%23fff'/%3E%3Cpath fill='%23000' d='M0 0h2v2H0zm2 2h2v2H2z'/%3E%3C/svg%3E");--pat-dither-media-m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Crect width='8' height='8' fill='%23fff'/%3E%3Cpath fill='%23000' d='M0 0h4v4H0zm4 4h4v4H4z'/%3E%3C/svg%3E");--pat-dither-heavy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Crect width='4' height='4' fill='%230a0a0a'/%3E%3Cpath fill='%23fff' d='M0 0h2v2H0zm2 2h2v2H2z'/%3E%3C/svg%3E");--pat-dither-m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Crect width='8' height='8' fill='%230a0a0a'/%3E%3Cpath fill='%23fff' d='M0 0h4v4H0zm4 4h4v4H4z'/%3E%3C/svg%3E");--pat-dither-l: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Crect width='12' height='12' fill='%230a0a0a'/%3E%3Cpath fill='%23fff' d='M0 0h6v6H0zm6 6h6v6H6z'/%3E%3C/svg%3E");--pat-dither-xl: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Crect width='16' height='16' fill='%230a0a0a'/%3E%3Cpath fill='%23fff' d='M0 0h8v8H0zm8 8h8v8H8z'/%3E%3C/svg%3E")}:root{--terminal-bg: #050505;--terminal-fg: #f5f5f5;--terminal-dim: #737373;--terminal-scroll-track: #0a0a0a;--terminal-scroll-thumb: #404040;--terminal-scroll-thumb-hover: #525252;--terminal-chrome-line: rgba(255, 255, 255, .55);--terminal-echo-ok: #4ade80;--terminal-echo-bad: #f87171}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;font-family:Tomorrow,system-ui,sans-serif;font-size:16px;line-height:1.5;color:var(--fg);background:#fff;-webkit-font-smoothing:antialiased}#app{min-height:100vh}a{color:inherit;text-decoration:none}.page{max-width:1200px;margin:0 auto;padding:0 1rem 4rem}.home-intro{max-width:42rem;margin:0 auto 2.5rem;font-size:1.05rem;line-height:1.65;color:var(--muted);text-align:center}.site-header{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;padding:1.5rem 1rem 2rem}.nav-btn{--nav-face: #fff;--nav-stripe: rgba(0, 0, 0, .06);position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;font-family:Tomorrow,system-ui,sans-serif;font-size:.875rem;font-weight:500;letter-spacing:.02em;padding:.5rem 1rem;border:none;background:transparent;color:var(--fg);cursor:pointer;transition:color .15s ease,filter .15s ease}.nav-btn:before{content:"";position:absolute;inset:calc(-1 * var(--shape-outline-w));z-index:0;background:var(--fg);clip-path:polygon(var(--cut-sm-out) 0,100% 0,100% calc(100% - var(--cut-sm-out)),calc(100% - var(--cut-sm-out)) 100%,0 100%,0 var(--cut-sm-out));pointer-events:none}.nav-btn:after{content:"";position:absolute;inset:var(--shape-outline-w);z-index:1;background-color:var(--nav-face);background-image:repeating-linear-gradient(-45deg,transparent 0 5px,var(--nav-stripe) 5px 6px);clip-path:polygon(var(--cut-sm) 0,100% 0,100% calc(100% - var(--cut-sm)),calc(100% - var(--cut-sm)) 100%,0 100%,0 var(--cut-sm));pointer-events:none}.nav-btn__label{position:relative;z-index:2}.nav-btn:hover{--nav-face: var(--fg);--nav-stripe: rgba(255, 255, 255, .14);color:#fff}.nav-btn:focus-visible{outline:2px solid var(--fg);outline-offset:3px}.nav-btn.active{--nav-face: var(--fg);--nav-stripe: rgba(255, 255, 255, .2);color:#fff}.stub-page{padding:3rem 0;text-align:center;color:var(--muted);position:relative}.stub-page:before{content:"";position:absolute;left:50%;top:0;transform:translate(-50%);width:min(100%,22rem);height:3px;background:repeating-linear-gradient(90deg,#000 0 6px,transparent 6px 12px);opacity:.35;pointer-events:none}.stub-page h1{font-family:Silkscreen,monospace;font-size:1.25rem;font-weight:400;color:var(--fg);margin:0 0 .5rem;padding-top:1.25rem;clip-path:polygon(var(--cut-sm) 0,100% 0,100% calc(100% - var(--cut-sm)),calc(100% - var(--cut-sm)) 100%,0 100%,0 var(--cut-sm));display:inline-block}.terminal-wrap{margin-bottom:1.75rem;min-width:0}.terminal-wrap>.terminal-mobile-name{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.2rem;margin:0 0 1rem;padding:0 .5rem;font-family:BetterVCR,ui-monospace,monospace;font-weight:400;font-size:clamp(1.25rem,5.5vw,1.85rem);letter-spacing:.08em;line-height:1.05;color:var(--fg)}.terminal-wrap>.terminal-mobile-name[hidden]{display:none!important}.terminal-mobile-name__line{display:block}.terminal-frame{min-width:0;--terminal-tab-h: 28px}.terminal-stack,.terminal-shadow-source{display:flex;flex-direction:column;align-items:stretch;min-width:0}.terminal-tab{display:flex;align-items:stretch;flex-wrap:nowrap;gap:0;line-height:0}.terminal-tab>*+*{margin-left:-1px}.terminal-tab--top{justify-content:flex-end;align-items:flex-end}.terminal-tab--bottom{justify-content:flex-start;align-items:flex-start;width:100%}.terminal-tab--bottom-chrome{position:relative;display:flex;align-items:stretch;flex-wrap:nowrap;gap:0;line-height:0;width:calc(2 * var(--terminal-tab-h) + 50%);max-width:100%}.terminal-tab--bottom-chrome>.terminal-tab__tri+.terminal-tab__spacer,.terminal-tab--bottom-chrome>.terminal-tab__spacer+.terminal-tab__tri{margin-left:-1px}.terminal-tab--bottom-chrome>.terminal-tab__tri,.terminal-tab--bottom-chrome>.terminal-tab__spacer{position:relative;z-index:1}.terminal-tab--bottom-progress-wrap{position:absolute;left:0;top:0;bottom:0;width:100%;z-index:2;pointer-events:none;clip-path:polygon(0 0,100% 0,calc(100% - var(--terminal-tab-h)) var(--terminal-tab-h),var(--terminal-tab-h) var(--terminal-tab-h),0 0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.terminal-tab--bottom-progress{height:100%;width:0%;background:repeating-linear-gradient(45deg,transparent 0 7px,rgba(255,255,255,.95) 7px 9px);-webkit-backface-visibility:hidden;backface-visibility:hidden}.terminal-tab__tri{display:block;flex-shrink:0;width:var(--terminal-tab-h);height:var(--terminal-tab-h);background:#000;-webkit-backface-visibility:hidden;backface-visibility:hidden}.terminal-tab__tri--top-left{clip-path:polygon(100% 100%,100% 0,0 100%)}.terminal-tab__tri--top-right{clip-path:polygon(0 100%,0 0,100% 100%)}.terminal-tab__label{display:flex;align-items:center;height:var(--terminal-tab-h);padding:0 .65rem;background:#000;color:var(--terminal-dim);flex-shrink:0;font-family:Tomorrow,ui-sans-serif,system-ui,sans-serif;font-size:.7rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap}.terminal-tab__tri--bottom-left{clip-path:polygon(100% 0,100% 100%,0 0)}.terminal-tab--bottom-chrome .terminal-tab__spacer{display:block;box-sizing:border-box;flex:1 1 auto;min-width:0;height:var(--terminal-tab-h);background:#000}.terminal-tab__tri--bottom-right{clip-path:polygon(0 0,100% 0,0 100%)}.terminal-window{background:var(--terminal-bg);color:var(--terminal-fg);border-radius:0;overflow:hidden;clip-path:polygon(var(--terminal-tab-h) 0,100% 0,100% calc(100% - var(--terminal-tab-h)),calc(100% - var(--terminal-tab-h)) 100%,0 100%,0 var(--terminal-tab-h));-webkit-font-smoothing:none;-moz-osx-font-smoothing:grayscale}.terminal-body{font-family:BetterVCR,monospace;font-size:calc(11px + .5pt);line-height:1.45;-webkit-font-smoothing:none;-moz-osx-font-smoothing:grayscale;padding:1rem 1rem 1.25rem;height:70vh;min-height:0;min-width:0;max-height:70vh;overflow-y:auto;overflow-x:hidden;cursor:text;-webkit-user-select:text;user-select:text;scrollbar-width:thin;scrollbar-color:var(--terminal-chrome-line) transparent}.terminal-body::-webkit-scrollbar{width:8px}.terminal-body::-webkit-scrollbar-track{background:transparent}.terminal-body::-webkit-scrollbar-thumb{background:var(--terminal-chrome-line);border-radius:0;border:none}.terminal-body::-webkit-scrollbar-thumb:hover{background:#ffffffb8}.terminal-body::-webkit-scrollbar-button{display:none;width:0;height:0}.terminal-body::-webkit-scrollbar-corner{background:transparent}.terminal-body:focus{outline:none}.terminal-body:focus-visible{box-shadow:inset 0 0 0 2px #ffffff1f}.terminal-log{margin:0;min-width:0;overflow-x:hidden}.terminal-line{margin:0 0 .35rem;max-width:100%;white-space:pre-wrap;overflow-wrap:break-word;overflow-x:hidden;color:var(--terminal-fg);font:inherit;-webkit-font-smoothing:none}.terminal-line.dim{color:var(--terminal-dim)}.terminal-line--ascii{margin-bottom:.75rem;white-space:pre;overflow-x:hidden}.terminal-line--ok{color:var(--terminal-echo-ok)}.terminal-line--error{color:var(--terminal-echo-bad)}.terminal-input-row{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap;margin-top:.5rem}.terminal-prompt{color:var(--terminal-fg);flex-shrink:0}.terminal-prompt:after{content:" "}.terminal-input{flex:1;min-width:120px;font:inherit;color:inherit;background:transparent;border:none;outline:none;padding:0;caret-color:#fff;caret-shape:block;-webkit-font-smoothing:none;-moz-osx-font-smoothing:grayscale}@media(prefers-reduced-motion:reduce){.terminal-tab--bottom-progress{transition:none}}@media(min-width:640px){.terminal-body{font-size:calc(12px + .5pt)}}.projects-section{padding-top:.5rem;scroll-margin-top:1rem}.projects-heading{position:relative;isolation:isolate;font-family:Silkscreen,monospace;font-size:clamp(1.25rem,4vw,1.75rem);font-weight:400;margin:0 0 1.75rem;letter-spacing:.04em;display:inline-block;padding:.4rem 1.1rem .45rem 1rem;color:var(--fg);background:transparent;border:none}.projects-heading:before{content:"";position:absolute;inset:calc(-1 * var(--shape-outline-w));z-index:0;background:var(--fg);clip-path:polygon(var(--cut-md-out) 0,100% 0,100% calc(100% - var(--cut-md-out)),calc(100% - var(--cut-md-out)) 100%,0 100%,0 var(--cut-md-out));pointer-events:none}.projects-heading:after{content:"";position:absolute;inset:var(--shape-outline-w);z-index:1;background:#fff;clip-path:polygon(var(--cut-md) 0,100% 0,100% calc(100% - var(--cut-md)),calc(100% - var(--cut-md)) 100%,0 100%,0 var(--cut-md));box-shadow:var(--cut-md) var(--cut-md) 0 #000;pointer-events:none}.projects-heading__text{position:relative;z-index:2}.project-grid{display:grid;grid-template-columns:1fr;gap:2rem}.project-card{--_surface-cut: polygon( var(--project-chamfer) 0, 100% 0, 100% calc(100% - var(--project-chamfer)), calc(100% - var(--project-chamfer)) 100%, 0 100%, 0 var(--project-chamfer) );--_surface-cut-out: polygon( calc(var(--project-chamfer) + var(--_b, var(--shape-outline-w))) 0, 100% 0, 100% calc(100% - var(--project-chamfer) - var(--_b, var(--shape-outline-w))), calc(100% - var(--project-chamfer) - var(--_b, var(--shape-outline-w))) 100%, 0 100%, 0 calc(var(--project-chamfer) + var(--_b, var(--shape-outline-w))) );min-width:0;display:flex;flex-direction:column;align-items:stretch;content-visibility:auto;contain-intrinsic-size:auto 420px}.project-card__face{position:relative;z-index:2;width:100%;transition:transform .18s ease}.project-card__face:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background:#000;opacity:.14;transform:translate(7px,8px);clip-path:var(--_surface-cut-out);pointer-events:none}.project-card:hover .project-card__face{transform:translateY(-3px)}@media(prefers-reduced-motion:reduce){.project-card__face{transition:none}.project-card:hover .project-card__face{transform:none}}.project-card__surface-outer{--_b: var(--shape-outline-w);position:relative;z-index:1;box-sizing:border-box;background:var(--fg);clip-path:var(--_surface-cut-out);padding:var(--_b)}.project-card__surface{position:relative;background-color:var(--bg);color:var(--fg);border:none;clip-path:var(--_surface-cut);overflow:hidden}.project-card__surface:after{content:"";position:absolute;left:0;top:0;width:var(--project-chamfer);height:100%;pointer-events:none;z-index:1;clip-path:polygon(0 0,100% var(--project-chamfer),100% calc(100% - var(--project-chamfer)),0 100%);background:#000}.project-card--status-concept .project-card__surface:after{background:repeating-linear-gradient(180deg,#000 0 4px,transparent 4px 10px)}.project-card--status-development .project-card__surface:after,.project-card--status-beta .project-card__surface:after{background:repeating-linear-gradient(45deg,#000 0,#000 10px,#fff 10px,#fff 20px)}.project-card--status-archival .project-card__surface:after{background:#bdbdbd}.project-card__layout{position:relative;z-index:2;display:flex;flex-direction:column;min-width:0}.project-card__drawer{position:relative;z-index:1;display:flex;flex-direction:column;align-items:flex-start;width:100%;gap:0;margin-top:.35rem}.project-card__chrome{display:inline-flex;align-items:center;gap:.45rem;margin:0;padding:.4rem .75rem;border:2px solid var(--fg);background:#fff;color:var(--fg);font-family:Tomorrow,system-ui,sans-serif;font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;-webkit-tap-highlight-color:transparent}.project-card__chrome:hover{background:#f3f3f3}.project-card__chrome:focus-visible{outline:2px solid var(--fg);outline-offset:3px}.project-card__chrome-caret{display:block;width:.4rem;height:.4rem;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-1px);transition:transform .15s ease}.project-card--details-open .project-card__chrome-caret{transform:rotate(225deg) translateY(-1px)}@media(prefers-reduced-motion:reduce){.project-card__chrome-caret{transition:none}}.project-card__drawer-panel{display:none;box-sizing:border-box;width:min(100%,22rem);margin-top:-2px;padding:.9rem 1rem 1rem;border:2px solid var(--fg);background:var(--bg)}.project-card--details-open .project-card__drawer-panel{display:block}.project-card__details-text{margin:0;font-size:.9375rem;line-height:1.55;color:var(--fg)}.project-card__media{--_media-cut: polygon( 0 0, 100% 0, 100% calc(100% - var(--project-chamfer)), calc(100% - var(--project-chamfer)) 100%, 0 100% );position:relative;flex-shrink:0;width:100%;min-height:168px;background-color:#ececec;overflow:hidden;clip-path:var(--_media-cut)}.project-card__media-stack{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}@media(max-width:719.98px){.project-card__media{height:168px}}.project-card__img{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:block;width:100%;height:100%;object-fit:contain;object-position:center;background:transparent}.project-card__img--greyscale{filter:grayscale(1) contrast(1.02)}.project-card__media-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;background:transparent}@media(min-width:720px){.project-grid{grid-template-columns:repeat(2,1fr)}.project-card__layout{flex-direction:row;align-items:stretch}.project-card__media{flex:0 0 42%;max-width:42%;min-height:168px;height:auto;align-self:stretch}}.project-card__body{flex:1;min-width:0;padding:1.25rem 1.35rem 1.35rem 1.5rem;display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;position:relative;z-index:1}.project-card__topline{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;width:100%;margin-bottom:.15rem}.project-card__project-size{font-family:Tomorrow,system-ui,sans-serif;font-size:.62rem;font-weight:500;letter-spacing:.08em;color:var(--muted)}.project-card__status{position:relative;isolation:isolate;display:inline-block;padding:0;border:none;background:transparent}.project-card__status:before{content:"";position:absolute;inset:calc(-1 * var(--shape-outline-w));z-index:0;background:var(--fg);clip-path:polygon(0 0,100% 0,100% calc(100% - var(--cut-sm-out)),calc(100% - var(--cut-sm-out)) 100%,0 100%);pointer-events:none}.project-card__status:after{content:"";position:absolute;inset:var(--shape-outline-w);z-index:1;background:#fff;clip-path:polygon(0 0,100% 0,100% calc(100% - var(--cut-sm)),calc(100% - var(--cut-sm)) 100%,0 100%);pointer-events:none}.project-card__status-label{position:relative;z-index:2;display:inline-block;padding:.26rem .65rem .26rem .72rem;font-family:Tomorrow,system-ui,sans-serif;font-size:.62rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase}.project-card--status-concept .project-card__status:after{background:#f0f0f0}.project-card--status-concept .project-card__status-label{color:var(--fg)}.project-card--status-development .project-card__status:after{background:#000}.project-card--status-development .project-card__status-label{color:#fff}.project-card--status-beta .project-card__status:after{background:repeating-linear-gradient(45deg,#f2f2f2 0,#f2f2f2 8px,#0a0a0a 8px,#0a0a0a 16px)}.project-card--status-beta .project-card__status-label{margin:2px;background:#fff;color:#000;border:2px solid #000;clip-path:polygon(0 0,100% 0,100% calc(100% - calc(var(--cut-sm) - 4px)),calc(100% - calc(var(--cut-sm) - 4px)) 100%,0 100%)}.project-card--status-live .project-card__status:after{background:#fff}.project-card--status-live .project-card__status-label{margin:2px;color:#000;background-color:#fff;clip-path:polygon(0 0,100% 0,100% calc(100% - calc(var(--cut-sm) - 4px)),calc(100% - calc(var(--cut-sm) - 4px)) 100%,0 100%)}.project-card--status-archival .project-card__status:after{background:#e8e8e8}.project-card--status-archival .project-card__status-label{color:var(--muted)}.project-card-title{font-size:1.15rem;font-weight:600;margin:0;color:var(--fg);letter-spacing:.01em;line-height:1.25}.project-card-desc{margin:0;font-size:.9rem;color:var(--muted);line-height:1.45;flex:1}.project-card__cta{position:relative;isolation:isolate;margin-top:.65rem;display:inline-flex;align-items:stretch;padding:0;border:none;background:transparent;color:#fff;cursor:pointer;text-decoration:none;transition:color .15s ease,transform .15s ease}.project-card__cta:before{content:"";position:absolute;inset:calc(-1 * var(--shape-outline-w));z-index:0;background:var(--fg);clip-path:polygon(var(--cut-md-out) 0,100% 0,100% calc(100% - var(--cut-md-out)),calc(100% - var(--cut-md-out)) 100%,0 100%,0 var(--cut-md-out));pointer-events:none}.project-card__cta-inner{position:relative;z-index:1;display:inline-flex;align-items:center;gap:.4rem;margin:var(--shape-outline-w);padding:.55rem 1.1rem .55rem 1rem;font-family:Tomorrow,system-ui,sans-serif;font-size:.78rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;background-color:#000;color:inherit;clip-path:polygon(var(--cut-md) 0,100% 0,100% calc(100% - var(--cut-md)),calc(100% - var(--cut-md)) 100%,0 100%,0 var(--cut-md))}.project-card__cta-inner:after{content:"";width:.45em;height:.45em;flex-shrink:0;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg) translateY(1px);opacity:.9}.project-card__cta:hover{color:#000;transform:translate(2px)}.project-card__cta:hover .project-card__cta-inner{background-color:#fff}.project-card__cta:focus-visible{outline:2px solid #000;outline-offset:3px}
