@font-face{font-family:jetBrainsMono;src:url(/_next/static/media/aa4388db5528a0d5-s.p.woff2) format("woff2");font-display:swap;font-weight:100 800;font-style:normal}@font-face{font-family:jetBrainsMono Fallback;src:local("Arial");ascent-override:77.57%;descent-override:22.82%;line-gap-override:0.00%;size-adjust:131.49%}.__className_b395c4{font-family:jetBrainsMono,jetBrainsMono Fallback;font-style:normal}.__variable_b395c4{--font-jetbrains-mono:"jetBrainsMono","jetBrainsMono Fallback"}@font-face{font-family:ibmPlexMono;src:url(/_next/static/media/a03e0948a34ab92a-s.p.woff2) format("woff2");font-display:swap;font-weight:600;font-style:normal}@font-face{font-family:ibmPlexMono Fallback;src:local("Arial");ascent-override:77.95%;descent-override:20.91%;line-gap-override:0.00%;size-adjust:131.49%}.__className_9a715c{font-family:ibmPlexMono,ibmPlexMono Fallback;font-weight:600;font-style:normal}.__variable_9a715c{--font-ibm-plex-mono:"ibmPlexMono","ibmPlexMono Fallback"}@font-face{font-family:tektur;src:url(/_next/static/media/3c8b031646d80089-s.p.ttf) format("truetype");font-display:swap;font-weight:400 900;font-style:normal}@font-face{font-family:tektur Fallback;src:local("Arial");ascent-override:89.25%;descent-override:26.77%;line-gap-override:0.00%;size-adjust:112.05%}.__className_344030{font-family:tektur,tektur Fallback;font-style:normal}.__variable_344030{--font-tektur:"tektur","tektur Fallback"}@font-face{font-family:silkscreen;src:url(/_next/static/media/d1fdf44682dca92f-s.ttf) format("truetype");font-display:swap;font-weight:700;font-style:normal}@font-face{font-family:silkscreen Fallback;src:local("Arial");ascent-override:58.79%;descent-override:14.27%;line-gap-override:0.00%;size-adjust:175.19%}.__className_0d438a{font-family:silkscreen,silkscreen Fallback;font-weight:700;font-style:normal}.__variable_0d438a{--font-silkscreen:"silkscreen","silkscreen Fallback"}:root{--bg:#000;--ink:#fff;--muted:rgba(255,255,255,0.48);--line:rgba(255,255,255,0.16);--line-strong:rgba(255,255,255,0.36);--brand-red:#d84a4a;--signal-teal:#2dd4bf;--signal-glow:rgba(45,212,191,0.24);--surface-hero:#dc510b;--foreground-hero:#000;--display-title:#248005;--display-shadow:#0d3f05;--display-shadow-offset:clamp(2px,0.03em,4px);--accent-on-dark:var(--surface-hero);--interactive-on-dark:#00a63e;--warm-white:#f1ddd3;--font-body:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;--font-mono:var(--font-body);--font-digital:"IBM Plex Mono",var(--font-mono);--font-role:"Tektur",var(--font-digital);--font-pixel:"Silkscreen",var(--font-digital);--layout-max:1440px;--page-pad:20px;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-7:2rem;--space-8:3rem;--type-micro:0.6875rem;--type-caption:0.75rem;--type-meta:0.78rem;--type-body:0.94rem;--type-hero:3.15rem;--type-section-title:1.8rem;--leading-title:1.12;--leading-body:1.55;--leading-meta:1.38;--motion-fast:160ms}html{scroll-behavior:smooth}body,html{background:var(--bg)}body{--font-body:var(--font-jetbrains-mono),"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;--font-mono:var(--font-body);--font-digital:var(--font-ibm-plex-mono),var(--font-mono);--font-role:var(--font-tektur),var(--font-digital);--font-pixel:var(--font-silkscreen),var(--font-digital);min-height:100vh;margin:0;color:var(--ink);font-family:var(--font-body);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}h1,h2,h3,p{margin:0}::selection{background:var(--ink);color:var(--bg)}a{color:inherit;text-decoration:none}a:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}.skip-link{position:fixed;left:var(--space-4);top:var(--space-4);z-index:50;transform:translateY(-200%);background:var(--ink);color:var(--bg);font-family:var(--font-mono);font-size:var(--type-caption);padding:.65rem .8rem}.skip-link:focus{transform:translateY(0)}.app-shell{position:relative;display:flex;flex-direction:column;min-height:100vh}.site-main{flex:1 1;width:100%;max-width:var(--layout-max);margin-inline:auto;padding-inline:var(--page-pad);padding-bottom:calc(var(--space-8) * 2.5)}.personal-page{position:relative;left:50%;width:100vw;min-height:100vh;margin-left:-50vw;background:var(--bg);color:var(--ink)}.footer-contact,.personal-hero,.projects-section{position:relative;padding-inline:var(--page-pad)}.footer-contact,.projects-section{width:100%;max-width:var(--layout-max);margin-inline:auto}.footer-contact,.hero-actions{font-family:var(--font-mono);font-size:var(--type-meta);font-weight:500;letter-spacing:0;line-height:var(--leading-meta);text-transform:none}.hero-action-links{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-6)}.hero-actions a{display:inline-flex;align-items:center;min-height:30px}.footer-contact a,.hero-actions a{transition:color .18s ease,opacity .18s ease,text-shadow .18s ease}.hero-actions a{border-bottom:1px solid var(--line-strong);padding-bottom:.18rem}.personal-hero{--hero-inline-pad:max(var(--page-pad),calc((100vw - var(--layout-max)) / 2 + var(--page-pad)));display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;grid-row-gap:var(--space-4);row-gap:var(--space-4);width:100%;min-height:100vh;min-height:100svh;padding-inline:var(--hero-inline-pad);padding-block:var(--space-6);background:var(--surface-hero);color:var(--foreground-hero)}.hero-animation-controller,.hero-primary-screen{display:contents}.hero-topbar{position:relative;z-index:3;display:grid;grid-row:1;grid-gap:var(--space-5);gap:var(--space-5);align-items:start}.hero-intro-window{display:block;width:min(100%,32rem);height:auto;justify-self:end;overflow:visible}.hero-intro-ink,.hero-intro-shadow{fill:var(--foreground-hero)}.hero-intro-surface{fill:var(--surface-hero);stroke:var(--foreground-hero);stroke-width:6}.hero-intro-rule,.hero-intro-status-line,.hero-intro-stripes{fill:none;stroke:var(--foreground-hero);stroke-width:5}.hero-intro-copy,.hero-intro-domain,.hero-intro-label,.hero-intro-status{fill:var(--foreground-hero);font-family:var(--font-digital);font-weight:700;letter-spacing:0}.hero-intro-domain{font-size:20px}.hero-intro-label,.hero-intro-status{font-size:16px}.hero-intro-copy{font-size:30px}.hero-toolbox-window{position:relative;z-index:3;grid-row:3;justify-self:center;width:min(calc(100vw - 2rem),88rem,160svh);aspect-ratio:1400/230;container-type:inline-size;color:var(--foreground-hero)}.hero-toolbox-frame{position:absolute;inset:0;display:block;width:100%;height:100%;overflow:visible}.hero-toolbox-desktop-shadow,.hero-toolbox-shadow{fill:var(--foreground-hero)}.hero-toolbox-desktop-surface,.hero-toolbox-surface{fill:var(--surface-hero);stroke:var(--foreground-hero);stroke-width:6}.hero-toolbox-desktop-rule,.hero-toolbox-rule{fill:none;stroke:var(--foreground-hero);stroke-width:5}.hero-toolbox-mobile-frame{display:none}.hero-toolbox-header{position:absolute;top:7%;right:4%;left:3.5%;display:grid;grid-template-columns:max-content max-content minmax(0,1fr);grid-gap:var(--space-4);gap:var(--space-4);align-items:center;height:17%;font-family:var(--font-digital);font-size:.75rem;font-weight:700;line-height:1}.hero-toolbox-title-mobile{display:none}.hero-toolbox-controls{display:flex;gap:.55rem}.hero-toolbox-controls span{width:.68rem;aspect-ratio:1;border-radius:50%;background:currentColor}.hero-toolbox-stripes{display:grid;grid-gap:.24rem;gap:.24rem;justify-self:end;width:9rem}.hero-toolbox-stripes span{height:3px;background:currentColor}.technology-file-list{position:absolute;top:31%;right:4%;bottom:16%;left:3.5%;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:minmax(0,1fr);grid-gap:var(--space-3);gap:var(--space-3);margin:0;padding:0;list-style:none}.technology-file{display:grid;grid-template-rows:minmax(0,1fr) max-content;grid-gap:.35rem;gap:.35rem;align-items:center;justify-items:center;justify-content:center;min-width:0;color:var(--foreground-hero);font-family:var(--font-digital);font-size:.65rem;font-weight:700;line-height:1;white-space:normal}.technology-file-document{position:relative;display:grid;width:3.5rem;height:4.35rem;place-items:center}.technology-file-outline{position:absolute;inset:0;width:100%;height:100%;overflow:visible;fill:var(--surface-hero);stroke:currentColor;stroke-linejoin:miter;stroke-width:3}.technology-file-icon{position:relative;display:block;width:1.9rem;aspect-ratio:1;background:currentColor;mask-position:center;mask-repeat:no-repeat;mask-size:contain;-webkit-mask-position:center;-webkit-mask-repeat:no-repeat;-webkit-mask-size:contain}.technology-file-name{display:block;width:100%;max-width:100%;overflow:visible;overflow-wrap:anywhere;font-size:clamp(.8rem,1.05vw,1rem);font-weight:900;line-height:1.1;text-align:center;text-overflow:clip;text-transform:uppercase}.hero-title-stage{position:relative;display:grid;grid-row:2;align-items:center;min-width:0;min-height:0;container-type:inline-size;overflow:clip;isolation:isolate}.personal-hero h1{position:relative;grid-column:1;grid-row:3;align-self:baseline;justify-self:start;z-index:2;margin-left:0;color:var(--display-title);font-family:var(--font-digital);font-size:6.75rem;font-weight:900;letter-spacing:0;line-height:.72;text-transform:none;white-space:nowrap}.hero-name-character{display:inline-block;text-shadow:calc(0px - var(--display-shadow-offset)) var(--display-shadow-offset) 0 var(--display-shadow)}.hero-role-display{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(3,min-content);align-content:center;align-items:baseline;overflow:visible;color:var(--foreground-hero);font-family:var(--font-digital);font-size:clamp(11.5rem,15vw,13.5rem);font-weight:600;letter-spacing:0;line-height:.72;pointer-events:none;-webkit-text-stroke:.025em var(--foreground-hero);text-transform:uppercase;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.hero-role-line{display:block;grid-column:1;align-self:baseline;justify-self:start;margin-left:28%;white-space:pre}.hero-role-line:first-child{grid-row:1}.hero-role-line:nth-child(2){grid-row:2}.hero-role-line:nth-child(3){grid-row:3}@media (min-width:981px){.hero-topbar{grid-template-columns:max-content minmax(28rem,32rem);justify-content:space-between}.hero-intro-window{margin-top:2.25rem;transform:translateX(-5.75rem)}.hero-role-display{grid-template-rows:repeat(3,min-content) min-content;align-content:start;font-family:var(--font-role);font-size:min(clamp(8rem,min(15vw,21.6svh),13.5rem),17.8cqi);font-weight:900;-webkit-text-stroke:0}.hero-role-line{margin-left:0}.personal-hero h1{grid-row:4;align-self:start;margin-left:1.08em;margin-top:-.4em;font-family:var(--font-role);font-size:min(clamp(4.5rem,min(calc(100vw / 12),12svh),7.5rem),15.3cqi)}.hero-toolbox-window{min-height:10rem}.technology-file-document{width:clamp(2.5rem,5.6svh,3.5rem);height:clamp(3.1rem,7svh,4.35rem)}.technology-file-icon{width:clamp(1.3rem,3svh,1.9rem)}.technology-file-name{font-size:clamp(.7rem,min(1.05vw,1.6svh),1rem)}.hero-topbar .hero-action-links{justify-content:flex-start}.hero-topbar .hero-action-output{right:auto;left:0;text-align:left}}@media (min-width:981px) and (max-height:1000px){.personal-hero{row-gap:clamp(var(--space-1),calc(7svh - 3.375rem),var(--space-4));padding-top:clamp(var(--space-2),calc(12svh - 6rem),var(--space-6));padding-bottom:clamp(var(--space-2),1.2svh,var(--space-3))}.hero-intro-window{width:min(100%,32rem,65svh);margin-top:clamp(var(--space-2),calc(16svh - 7.75rem),2.25rem)}.hero-title-stage{container-type:size}.hero-role-display{font-size:min(clamp(8rem,min(15vw,21.6svh),13.5rem),17.8cqi,42.5cqh,calc(22svh - 2rem))}.personal-hero h1{font-size:min(clamp(4.5rem,min(calc(100vw / 12),12svh),7.5rem),15.3cqi,24cqh)}.hero-toolbox-window{width:min(calc(100vw - 2rem),88rem,145svh)}}.hero-action-links{position:relative;justify-content:flex-end;min-width:15.5rem;padding-bottom:var(--space-6)}.hero-action-item{display:inline-flex}.hero-action-output{position:absolute;right:0;bottom:0;color:var(--foreground-hero);opacity:0;pointer-events:none;max-width:100%;overflow-wrap:anywhere;text-align:right;text-shadow:none;transition:color .12s linear;visibility:hidden;white-space:normal}.hero-action-item:first-child .hero-action-output{opacity:1;visibility:visible}.hero-action-links:has(.hero-action-item:focus-within) .hero-action-output,.hero-action-links:has(.hero-action-item:hover) .hero-action-output{opacity:0;visibility:hidden}.hero-action-links:has(.hero-action-item:focus-within) .hero-action-item:focus-within .hero-action-output,.hero-action-links:has(.hero-action-item:hover) .hero-action-item:hover .hero-action-output{color:var(--foreground-hero);opacity:1;visibility:visible}.personal-hero .hero-actions{font-size:.875rem;font-weight:600}.personal-hero .hero-actions a{border-color:var(--foreground-hero);color:var(--foreground-hero);text-transform:uppercase}.personal-hero .hero-actions a:hover{border-color:var(--foreground-hero);background:var(--foreground-hero);color:var(--warm-white);opacity:1;text-shadow:none}.personal-hero .hero-actions a:focus-visible{border-color:var(--foreground-hero);background:var(--warm-white);color:var(--foreground-hero);outline-color:var(--foreground-hero)}.personal-hero ::selection{background:var(--foreground-hero);color:var(--surface-hero)}.projects-section{--project-screen:#020202;--project-copy-muted:rgba(241,221,211,0.7);--project-index-resting:#00752c;display:grid;grid-gap:clamp(var(--space-8),5vw,4.5rem);gap:clamp(var(--space-8),5vw,4.5rem);padding-block:var(--space-8)}.projects-heading{position:relative;left:50%;width:100vw;margin-left:-50vw;overflow:hidden}.projects-heading h2{position:relative;display:block;isolation:isolate;width:100%;max-width:none;margin-top:0;padding-inline:max(var(--page-pad),calc((100vw - var(--layout-max)) / 2 + var(--page-pad)));color:var(--display-title);font-size:var(--type-section-title);font-weight:700;letter-spacing:0;line-height:var(--leading-title);text-shadow:calc(0px - var(--display-shadow-offset)) var(--display-shadow-offset) 0 var(--display-shadow)}.projects-title-character{position:relative;z-index:1;display:inline-block}.projects-title-line{position:absolute;top:50%;right:0;left:0;z-index:0;height:3px;background:var(--accent-on-dark);transform-origin:right center}@media (min-width:981px){.projects-section{padding-block:var(--space-7) var(--space-8)}.projects-heading h2{font-family:var(--font-role);font-size:3.75rem;font-weight:800;line-height:.82}}.project-list{display:grid;grid-gap:clamp(4rem,7vw,6.5rem);gap:clamp(4rem,7vw,6.5rem)}.project-entry{min-width:0}.project-editorial-layout{display:grid;grid-template-columns:minmax(18rem,.78fr) minmax(32rem,1.22fr);grid-template-areas:"heading media" "heading technical" "stack stack";grid-template-rows:auto minmax(11rem,1fr) 4.75rem;grid-column-gap:clamp(4rem,7vw,7rem);column-gap:clamp(4rem,7vw,7rem);grid-row-gap:clamp(var(--space-5),2.5vw,var(--space-7));row-gap:clamp(var(--space-5),2.5vw,var(--space-7));min-height:clamp(46rem,76vh,52rem)}.project-heading{grid-area:heading;min-width:0;container-type:inline-size}.project-media{grid-area:media;display:grid;place-items:center;min-width:0;min-height:0}.project-editorial-heading{position:relative;align-self:start;max-width:31rem;padding-top:var(--space-5)}.project-editorial-heading .project-title-row h3{color:var(--display-title);font-size:min(clamp(5.25rem,8vw,8rem),30cqi);line-height:.78;text-shadow:calc(0px - var(--display-shadow-offset)) var(--display-shadow-offset) 0 var(--display-shadow)}.project-entry[data-media-position=left] .project-title-row h3{text-shadow:var(--display-shadow-offset) var(--display-shadow-offset) 0 var(--display-shadow)}.project-status{position:absolute;top:0;left:0;margin:0;color:var(--accent-on-dark);font-family:var(--font-digital);font-size:clamp(.75rem,.9vw,.875rem);font-weight:700;letter-spacing:.04em;line-height:1.2;text-transform:uppercase}.project-editorial-heading .project-editorial-summary{max-width:38ch;margin-top:var(--space-7);color:var(--warm-white);font-family:var(--font-mono);font-size:clamp(.9rem,1.1vw,1.05rem);font-weight:500;line-height:1.72;text-align:justify;text-align-last:left;text-wrap:pretty}.project-editorial-summary-body,.project-editorial-summary-lead,.project-editorial-summary-visual{display:block}.project-editorial-summary-lead{white-space:pre-line}.project-editorial-summary-lead+.project-editorial-summary-body{margin-top:.35em}@media (min-width:981px){.project-editorial-layout{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"heading media" "technical technical" "stack stack";grid-template-rows:auto auto auto;column-gap:clamp(3rem,4vw,4rem);row-gap:var(--space-4);min-height:0}.project-entry[data-media-position=left] .project-editorial-layout{grid-template-areas:"media heading" "technical technical" "stack stack"}.project-editorial-heading{max-width:none}.project-editorial-heading .project-title-row h3{font-size:min(clamp(7rem,9.25vw,9.75rem),30cqi)}.project-editorial-heading .project-editorial-summary{font-size:clamp(1.08rem,1.25vw,1.25rem);line-height:1.58;-webkit-hyphens:none;hyphens:none;text-justify:inter-word}.project-entry .project-technical-index{margin-top:var(--space-4);margin-bottom:var(--space-4)}}@media (min-width:1280px){.project-editorial-heading[data-summary-layout=wrapped]{--project-editorial-inline-gap:clamp(0.85rem,1vw,1rem);display:flow-root}.project-editorial-heading[data-summary-layout=wrapped] .project-status{top:calc(0px - var(--space-4))}.project-editorial-heading[data-summary-layout=wrapped] .project-title-row{float:left;margin:0 var(--project-editorial-inline-gap) 0 0;transform:translateY(-.3rem)}.project-editorial-heading .project-title-row h3{font-size:min(clamp(8.75rem,10.5vw,10.25rem),30cqi)}.project-editorial-heading .project-editorial-summary{max-width:none;font-size:clamp(1.35rem,1.65vw,1.5rem);line-height:1.64}.project-editorial-heading[data-summary-layout=wrapped] .project-editorial-summary{margin-top:0;padding-top:0}.project-editorial-heading[data-summary-layout=wrapped] .project-editorial-summary-visual{display:contents}.project-editorial-heading[data-summary-layout=wrapped] .project-editorial-summary-lead{padding-top:var(--space-1)}.project-editorial-heading[data-summary-layout=wrapped] .project-editorial-summary-body{clear:both;margin-top:0;padding-top:.65em}.project-editorial-heading[data-summary-layout=stacked] .project-editorial-summary{margin-top:var(--space-1);padding-top:0;line-height:1.45}}.project-entry .project-media{align-self:start;justify-items:end;padding-block:0}.project-entry[data-media-position=left] .project-media{justify-items:start}.project-media-window{position:relative;width:min(100%,38rem);aspect-ratio:960/680;color:var(--accent-on-dark)}.project-media-window-frame{position:absolute;inset:0;display:block;width:100%;height:100%;overflow:visible;pointer-events:none}[data-media-position=left] .project-media-window-frame{transform:scaleX(-1);transform-origin:center}.project-media-window-shadow{fill:var(--accent-on-dark)}.project-media-window-surface{fill:var(--project-screen);stroke:var(--accent-on-dark);stroke-width:6}.project-media-window-seam{fill:none;stroke:var(--bg);stroke-linecap:square;stroke-linejoin:miter;stroke-width:5}.project-media-window-rule{fill:none;stroke:var(--accent-on-dark);stroke-width:5}.project-media-window-header{position:absolute;top:3.7%;right:8.2%;left:4.5%;display:grid;grid-template-columns:max-content minmax(0,1fr) max-content;grid-gap:var(--space-4);gap:var(--space-4);align-items:center;height:8.5%;color:var(--accent-on-dark);font-family:var(--font-digital);font-size:var(--type-micro);font-weight:700;line-height:1;text-transform:uppercase}.project-media-window-dots{display:flex;gap:.45rem}.project-media-window-dots span{width:.55rem;aspect-ratio:1;border-radius:50%;background:currentColor}.project-media-window-content{position:absolute;top:14%;right:8.2%;bottom:10.8%;left:4.5%;display:grid;grid-template-rows:minmax(0,1fr) 2.75rem;min-width:0;min-height:0}[data-media-position=left] .project-media-window-content,[data-media-position=left] .project-media-window-header{right:4.5%;left:8.2%}.project-media-index{display:inline-flex;overflow:hidden;color:var(--accent-on-dark)}.project-media-index>span{display:inline-block}.project-media-screen{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;display:grid;width:100%;place-items:center;overflow:hidden;border:0;background:var(--project-screen);color:inherit;cursor:zoom-in;font:inherit;margin:0;padding:0}.project-media-screen:focus-visible{outline:2px solid var(--interactive-on-dark);outline-offset:-2px}.project-entry .project-media-screen{height:100%;min-height:0}.project-media-transition,.project-media-transition img{display:block;width:100%;height:100%}.project-media-transition img{object-fit:contain;pointer-events:none}.project-media-controls{display:grid;grid-template-columns:2.75rem minmax(0,1fr) 2.75rem;min-height:2.75rem}.project-media-control{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--accent-on-dark);cursor:pointer;font-family:var(--font-role);font-size:1.25rem;font-weight:800;line-height:1;padding:0;transition:color var(--motion-fast) ease}.project-media-control:focus-visible,.project-media-control:hover{color:var(--interactive-on-dark);outline:0}.project-media-control:disabled{color:var(--project-copy-muted);cursor:default;opacity:.28}.project-media-name{display:block;min-width:0;align-self:center;color:var(--accent-on-dark);font-family:var(--font-digital);font-size:var(--type-meta);font-weight:600;line-height:var(--leading-body);overflow:visible;overflow-wrap:anywhere;padding-inline:var(--space-3);text-align:center;text-overflow:clip;text-transform:uppercase;white-space:normal}.project-lightbox{position:fixed;inset:0;width:100%;max-width:none;height:100vh;height:100dvh;max-height:none;margin:0;overflow:hidden;border:0;grid-template-columns:minmax(2rem,5vw) minmax(0,1fr) minmax(2rem,5vw);grid-template-rows:auto minmax(0,1fr) auto;gap:var(--space-4);align-items:center;padding:clamp(var(--space-4),4vw,var(--space-8));background:rgba(0,0,0,.94);color:var(--ink)}.project-lightbox[open]{display:grid}body:has(.project-lightbox[open]),html:has(.project-lightbox[open]){overflow:hidden}.project-lightbox::-webkit-backdrop{background:var(--bg)}.project-lightbox::backdrop{background:var(--bg)}.project-lightbox-counter{grid-column:2;grid-row:1;justify-self:center;color:var(--muted);font-size:var(--type-caption);line-height:var(--leading-meta)}.project-lightbox-close,.project-lightbox-control{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--ink);cursor:pointer;font-family:var(--font-mono);line-height:1;padding:var(--space-3);transition:color var(--motion-fast) ease}.project-lightbox-close:focus-visible,.project-lightbox-close:hover,.project-lightbox-control:focus-visible,.project-lightbox-control:hover{color:var(--interactive-on-dark);outline:0}.project-lightbox-control:disabled{color:var(--muted);cursor:default;opacity:.35}.project-lightbox-close{grid-column:3;grid-row:1;justify-self:end;font-size:1.25rem}.project-lightbox-control{grid-row:2;align-self:center;justify-self:center;font-size:clamp(1.75rem,4vw,3rem)}.project-lightbox-control-previous{grid-column:1}.project-lightbox-control-next{grid-column:3}.project-lightbox-media{grid-column:2;grid-row:2;min-width:0;min-height:0}.project-lightbox-image-wrap,.project-lightbox-media{display:flex;align-items:center;justify-content:center}.project-lightbox-image-wrap{max-width:min(76vw,1280px);max-height:calc(100vh - 9rem);max-height:calc(100dvh - 9rem)}.project-lightbox-image-wrap img{display:block;width:100%;height:auto;max-height:calc(100vh - 9rem);max-height:calc(100dvh - 9rem);object-fit:contain}.project-title-row{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-3) var(--space-4)}.project-title-row h3{display:inline-block;font-family:var(--font-role);font-weight:800}.project-technical-index{grid-area:technical;display:grid;grid-template-rows:auto auto;grid-gap:clamp(var(--space-6),2.5vw,var(--space-7));gap:clamp(var(--space-6),2.5vw,var(--space-7));align-content:start;align-items:start;min-width:0;min-height:0}.project-technical-tab-rail,.project-technical-tabs{position:relative;min-width:0}.project-technical-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));min-height:clamp(4.75rem,5.4vw,5.5rem);align-items:stretch;overflow:hidden;background:var(--bg);isolation:isolate}.project-technical-signal-band{position:absolute;z-index:0;inset:0;width:100%;height:100%;pointer-events:none}.project-technical-signal-stripes{fill:var(--accent-on-dark)}.project-technical-signal-track{animation:project-technical-belt-shift .68s linear infinite paused;transform:translateX(0)}.project-technical-index[data-signal-moving=true] .project-technical-signal-track{animation-play-state:running;will-change:transform}@keyframes project-technical-belt-shift{to{transform:translateX(72px)}}.project-technical-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;z-index:1;display:block;min-width:0;min-height:100%;border:0;background:transparent;cursor:pointer;padding:0;text-align:center}.project-technical-tab:after{position:absolute;left:50%;bottom:.35rem;width:0;height:2px;background:var(--accent-on-dark);content:"";transform:translateX(-50%);transition:width var(--motion-fast) ease}.project-technical-tab-content{display:grid;width:100%;min-height:100%;place-items:center;transform:translateY(0) scaleY(1);transform-origin:center}.project-technical-tab[data-pressed=true] .project-technical-tab-content{transform:translateY(5px) scaleY(.95)}.project-technical-tab:active .project-technical-tab-content{transform:translateY(7px) scaleY(.92)}.project-technical-tab-label,.project-technical-tab-number{grid-area:1/1;line-height:1;text-transform:uppercase;white-space:nowrap}.project-technical-tab-number{z-index:1;color:var(--project-index-resting);font-family:var(--font-role);font-size:clamp(3.45rem,4.05vw,4.85rem);font-weight:800;transition:color var(--motion-fast) ease}.project-technical-tab-label{z-index:2;max-width:calc(100% - var(--space-3));overflow:hidden;color:rgba(241,221,211,.88);font-family:var(--font-digital);font-size:clamp(.86rem,1.01vw,1.16rem);font-weight:600;text-overflow:clip;transition:color var(--motion-fast) ease}.project-technical-tab:focus-visible{outline:0}.project-technical-tab:focus-visible:after{width:2.5rem}.project-technical-index[data-interacting=true] .project-technical-tab[aria-selected=true] .project-technical-tab-number,.project-technical-tab:focus-visible .project-technical-tab-number,.project-technical-tab:hover .project-technical-tab-number{color:var(--interactive-on-dark)}.project-technical-index[data-interacting=true] .project-technical-tab[aria-selected=true] .project-technical-tab-label,.project-technical-tab:focus-visible .project-technical-tab-label,.project-technical-tab:hover .project-technical-tab-label{color:var(--warm-white)}.project-technical-detail{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:var(--space-3);gap:var(--space-3);align-items:start;width:100%;max-width:none;min-width:0;min-height:0;justify-self:stretch;align-self:start}@media (min-width:981px){.project-technical-index{--project-technical-detail-height:clamp(7.75rem,8.5vw,9rem);grid-template-rows:auto var(--project-technical-detail-height)}.project-technical-detail{grid-template-rows:minmax(2.5rem,auto) minmax(0,1fr);min-height:var(--project-technical-detail-height)}}.project-technical-detail h4{margin:0;color:var(--warm-white);font-family:var(--font-mono);font-size:clamp(1.45rem,2.2vw,2rem);font-weight:600;line-height:1.25;overflow-wrap:anywhere;text-align:left;white-space:nowrap}@media (min-width:981px){.project-technical-detail h4{font-size:min(clamp(1.45rem,2.2vw,2rem),2.4vw)}}.project-technical-detail p{max-width:none;margin:0;color:var(--project-copy-muted);font-size:clamp(.9rem,1.1vw,1.05rem);line-height:1.65;text-align:justify;text-justify:inter-word}.project-technical-scramble{display:block}.project-technology-bar{position:relative;grid-area:stack;min-width:0;line-height:var(--leading-meta)}.project-technology-bar-segmented{--technology-bar-cut:0.75rem;--technology-bar-step:0.25rem;height:5.25rem;min-height:5.25rem;overflow:hidden;margin-top:0;padding:0;background:transparent;-webkit-clip-path:polygon(var(--technology-bar-cut) 0,calc(100% - var(--technology-bar-cut)) 0,calc(100% - var(--technology-bar-cut)) var(--technology-bar-step),calc(100% - var(--technology-bar-step)) var(--technology-bar-step),calc(100% - var(--technology-bar-step)) var(--technology-bar-cut),100% var(--technology-bar-cut),100% calc(100% - var(--technology-bar-cut)),calc(100% - var(--technology-bar-step)) calc(100% - var(--technology-bar-cut)),calc(100% - var(--technology-bar-step)) calc(100% - var(--technology-bar-step)),calc(100% - var(--technology-bar-cut)) calc(100% - var(--technology-bar-step)),calc(100% - var(--technology-bar-cut)) 100%,var(--technology-bar-cut) 100%,var(--technology-bar-cut) calc(100% - var(--technology-bar-step)),var(--technology-bar-step) calc(100% - var(--technology-bar-step)),var(--technology-bar-step) calc(100% - var(--technology-bar-cut)),0 calc(100% - var(--technology-bar-cut)),0 var(--technology-bar-cut),var(--technology-bar-step) var(--technology-bar-cut),var(--technology-bar-step) var(--technology-bar-step),var(--technology-bar-cut) var(--technology-bar-step));clip-path:polygon(var(--technology-bar-cut) 0,calc(100% - var(--technology-bar-cut)) 0,calc(100% - var(--technology-bar-cut)) var(--technology-bar-step),calc(100% - var(--technology-bar-step)) var(--technology-bar-step),calc(100% - var(--technology-bar-step)) var(--technology-bar-cut),100% var(--technology-bar-cut),100% calc(100% - var(--technology-bar-cut)),calc(100% - var(--technology-bar-step)) calc(100% - var(--technology-bar-cut)),calc(100% - var(--technology-bar-step)) calc(100% - var(--technology-bar-step)),calc(100% - var(--technology-bar-cut)) calc(100% - var(--technology-bar-step)),calc(100% - var(--technology-bar-cut)) 100%,var(--technology-bar-cut) 100%,var(--technology-bar-cut) calc(100% - var(--technology-bar-step)),var(--technology-bar-step) calc(100% - var(--technology-bar-step)),var(--technology-bar-step) calc(100% - var(--technology-bar-cut)),0 calc(100% - var(--technology-bar-cut)),0 var(--technology-bar-cut),var(--technology-bar-step) var(--technology-bar-cut),var(--technology-bar-step) var(--technology-bar-step),var(--technology-bar-cut) var(--technology-bar-step));font-family:var(--font-pixel);isolation:isolate}.project-technology-list{position:relative;z-index:1;display:flex;min-width:0;align-items:center;justify-content:space-between;margin:0;padding:0;list-style:none;color:var(--warm-white);font-size:clamp(.66rem,.72vw,.8rem);font-weight:600;text-transform:uppercase;white-space:nowrap}.project-technology-bar-segmented .project-technology-list{width:100%;height:100%;gap:.35rem;padding:0;background:var(--bg)}.project-technology-segment{display:inline-flex;align-items:center;gap:clamp(.25rem,.7vw,.7rem)}.project-technology-bar-segmented .project-technology-segment{position:relative;display:grid;flex:1 1;min-width:max-content;height:100%;place-items:center;overflow:hidden;background:var(--accent-on-dark);text-align:center}.project-technology-label{position:relative;z-index:1;display:inline-block}.project-technology-bar-segmented .project-technology-label{color:var(--bg);font-size:clamp(.68rem,.82vw,.86rem);font-weight:700}.not-found-page{min-height:60vh;border-bottom:1px solid var(--line);padding:var(--space-8) var(--page-pad)}.not-found-domain{position:relative;z-index:2;color:var(--accent-on-dark);font-family:var(--font-mono);font-size:var(--type-meta);font-weight:600;line-height:var(--leading-meta)}.not-found-page h1{color:var(--brand-red);margin-top:var(--space-4);font-size:var(--type-hero);font-weight:700;letter-spacing:0;line-height:.98}.not-found-copy{max-width:52ch;color:var(--warm-white);font-size:var(--type-body);line-height:var(--leading-body)}.not-found-actions{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-6);margin-top:var(--space-5);font-family:var(--font-mono);font-size:var(--type-meta);font-weight:500;line-height:var(--leading-meta)}.not-found-actions a{border-bottom:1px solid var(--line-strong);padding-bottom:.18rem;transition:color .18s ease,opacity .18s ease,text-shadow .18s ease}.not-found-actions a:focus-visible,.not-found-actions a:hover{color:var(--signal-teal);opacity:1;text-shadow:0 0 10px var(--signal-glow)}.footer-contact{display:flex;justify-content:space-between;gap:var(--space-6);padding-top:var(--space-5);padding-bottom:calc(var(--space-5) + var(--space-8) * 2.5);font-size:var(--type-body);font-weight:600}.footer-contact a,.footer-contact-label{color:var(--accent-on-dark)}.footer-contact a{display:inline-flex;align-items:center;margin:calc(var(--space-2) * -1);padding:var(--space-2);overflow-wrap:anywhere}.footer-contact a:focus-visible,.footer-contact a:hover{color:var(--interactive-on-dark);opacity:1;text-shadow:none}@media (min-width:768px){:root{--page-pad:48px}}@media (min-width:1024px){:root{--page-pad:96px}}@media (max-width:980px){:root{--type-hero:2.35rem}.personal-hero{--hero-first-screen-height:calc(100svh - var(--space-6));grid-template-rows:auto auto;row-gap:var(--space-8);min-height:0;padding-bottom:var(--space-8)}.hero-primary-screen{display:grid;grid-row:1;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);grid-row-gap:var(--space-5);row-gap:var(--space-5);min-height:var(--hero-first-screen-height)}.hero-topbar{grid-template-columns:minmax(0,.4fr) minmax(0,.6fr);gap:clamp(var(--space-2),2vw,var(--space-5))}.hero-intro-window{grid-column:2;grid-row:1;width:100%}.hero-title-stage{grid-row:2}.hero-action-links{gap:var(--space-2) var(--space-3);justify-content:flex-start;min-width:0;width:100%}.hero-action-output{right:auto;left:0;font-size:.625rem;text-align:left}.hero-toolbox-window{grid-row:2}.projects-section{gap:var(--space-8)}.hero-role-display{grid-template-rows:repeat(3,min-content) min-content;align-content:center;font-family:var(--font-role);font-size:min(clamp(5.5rem,18vw,11rem),21cqi);font-weight:900;line-height:.72;-webkit-text-stroke:0}.hero-role-line{margin-left:0}.personal-hero h1{grid-row:4;align-self:start;margin-left:1.08em;margin-top:-.4em;font-family:var(--font-role);font-size:min(clamp(3rem,10vw,7.5rem),15.3cqi)}.project-editorial-layout{grid-template-columns:1fr;grid-template-areas:"heading" "media" "technical" "stack";grid-template-rows:auto;min-height:0}.project-entry .project-media{justify-items:center}.project-technical-index{grid-template-columns:1fr;gap:var(--space-5);align-content:normal}.project-technical-tab-rail:after,.project-technical-tab-rail:before{position:absolute;z-index:3;top:0;bottom:0;display:grid;width:1.75rem;place-items:center;opacity:0;color:var(--warm-white);font-family:var(--font-digital);font-size:1.25rem;font-weight:700;pointer-events:none;transition:opacity var(--motion-fast) ease}.project-technical-tab-rail:before{left:0;background:linear-gradient(90deg,var(--bg) 30%,transparent);content:"‹"}.project-technical-tab-rail:after{right:0;background:linear-gradient(270deg,var(--bg) 30%,transparent);content:"›"}.project-technical-tab-rail[data-overflow-left=true]:before,.project-technical-tab-rail[data-overflow-right=true]:after{opacity:1}.project-technical-tabs{grid-template-columns:repeat(5,minmax(7rem,1fr));overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}.project-technical-signal-band{width:max(100%,35rem)}.project-technical-tabs::-webkit-scrollbar{display:none}.project-technical-tab{width:100%}.project-technical-tab-content{min-height:3.75rem}.project-technical-tab-number{font-size:2.75rem}.project-technical-tab-label{font-size:.78rem}.project-technical-detail{gap:var(--space-5);max-width:42rem;justify-self:center;padding-right:0}.project-technical-detail h4{text-align:center;white-space:normal}.project-technical-detail p{margin-inline:auto;text-align:left;text-justify:auto}.project-technology-list{width:100%;gap:var(--space-2);white-space:normal}.project-technology-bar-segmented .project-technology-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(6.25rem,100%),1fr));width:100%;min-width:0;grid-gap:.35rem;gap:.35rem;background:transparent}.project-technology-bar-segmented .project-technology-segment{height:auto;min-width:0;min-height:3.5rem;padding:var(--space-3)}.project-technology-bar-segmented{height:auto;min-height:0}}@media (max-width:620px){:root{--type-hero:1.86rem;--type-section-title:1.55rem}.personal-hero{--hero-inline-pad:var(--space-3);--hero-toolbox-height:calc(39.583333vw - 0.791667rem);--hero-toolbox-resize-room:max(0px,calc(12rem - 192px));--hero-toolbox-rendered-height:calc(var(--hero-toolbox-height) + var(--hero-toolbox-resize-room));position:relative;grid-template-rows:auto minmax(0,2fr) auto auto minmax(0,1fr);row-gap:0;min-height:100svh;padding-top:var(--space-5);padding-bottom:var(--space-8)}.hero-primary-screen{display:contents}.hero-topbar{position:static;display:block;grid-row:1;min-height:clamp(5.625rem,13svh,6.5rem)}.hero-intro-window{position:absolute;top:calc(var(--space-5) + max(4.25rem, 11.5svh));right:calc(var(--hero-inline-pad) + clamp(.25rem, 2vw, .75rem));width:min(48vw,13.5rem);margin-top:0}.hero-intro-label{display:none}.hero-intro-domain{font-size:22px}.hero-intro-copy{font-size:34px;transform:translateY(-26px)}.hero-intro-status{font-size:18px}.projects-section{gap:var(--space-7);padding-block:var(--space-7)}.project-editorial-heading{width:97.5%;max-width:38rem;justify-self:start}.project-entry[data-media-position=left] .project-editorial-heading{justify-self:end}.project-editorial-heading .project-title-row,.project-editorial-heading .project-title-row h3{width:100%}.project-editorial-heading .project-title-row h3,.project-status{text-align:center}.project-status{right:0}.project-editorial-heading .project-editorial-summary{width:100%;max-width:none;margin-inline:auto;text-align:left;text-align-last:auto}.project-editorial-summary-body,.project-editorial-summary-lead{display:inline}.project-editorial-summary-lead{white-space:normal}.project-editorial-summary-lead:after{content:" "}.project-editorial-summary-lead+.project-editorial-summary-body{margin-top:0}.project-technology-bar[data-project=lens] .project-technology-list{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(3.5rem,auto))}.project-technology-bar[data-project=lens] .project-technology-segment:first-child{grid-area:1/1}.project-technology-bar[data-project=lens] .project-technology-segment:nth-child(2){grid-area:1/2}.project-technology-bar[data-project=lens] .project-technology-segment:nth-child(3){grid-area:1/3}.project-technology-bar[data-project=lens] .project-technology-segment:nth-child(4){grid-area:2/3}.project-technology-bar[data-project=lens] .project-technology-segment:nth-child(5){grid-area:2/1}.project-technology-bar[data-project=lens] .project-technology-segment:nth-child(6){grid-area:2/2}.project-technology-bar[data-project=tracer] .project-technology-list{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(3.5rem,auto));column-gap:.35rem;row-gap:2px}.project-technology-bar[data-project=tracer] .project-technology-segment:first-child{grid-area:1/1}.project-technology-bar[data-project=tracer] .project-technology-segment:nth-child(2){grid-area:1/2}.project-technology-bar[data-project=tracer] .project-technology-segment:nth-child(3){grid-area:1/3}.project-technology-bar[data-project=tracer] .project-technology-segment:nth-child(4){grid-area:2/1}.project-technology-bar[data-project=tracer] .project-technology-segment:nth-child(5){grid-area:1/4/3/5;align-self:stretch}.project-technology-bar[data-project=tracer] .project-technology-segment:nth-child(5) .project-technology-label{width:6ch;white-space:normal}.project-technology-bar[data-project=tracer] .project-technology-segment:nth-child(6){grid-area:2/2}.project-technology-bar[data-project=tracer] .project-technology-segment:nth-child(7){grid-area:2/3}.project-technology-bar[data-project] .project-technology-segment{padding:var(--space-2) var(--space-1)}.project-technology-bar[data-project] .project-technology-label{overflow-wrap:anywhere;font-size:clamp(.5rem,2.5vw,.7rem);line-height:1.25}.hero-title-stage{grid-row:3;align-items:center}.hero-role-display{justify-self:center;font-size:min(clamp(3.75rem,16.5vw,7.5rem),17.7cqi)}.hero-role-display,.hero-role-line{width:max-content;max-width:100%}.personal-hero h1{justify-self:center;margin-left:0;font-size:min(clamp(3.25rem,14vw,7.5rem),17cqi)}.hero-toolbox-window{grid-row:4;width:calc(100vw - 2rem);height:var(--hero-toolbox-rendered-height);margin-top:var(--space-6);aspect-ratio:960/380;transform:none}.hero-toolbox-desktop-frame{display:none}.hero-toolbox-mobile-frame{display:inline}.hero-toolbox-header{top:7.894737%;right:9.791667%;left:3.958333%;gap:3.333333cqw;height:9.473684%;font-size:2.083333cqw}.hero-toolbox-title-desktop{display:none}.hero-toolbox-title-mobile{display:inline}.hero-toolbox-controls{gap:1.458333cqw}.hero-toolbox-controls span{width:2.083333cqw}.hero-toolbox-stripes{gap:.729167cqw;width:22.5cqw}.hero-toolbox-stripes span{height:.520833cqw}.technology-file-list{top:25.5%;right:9.791667%;bottom:18.5%;left:5%;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:clamp(.2rem,.8svh,.4rem) min(var(--space-2),1vw)}.technology-file{gap:.15rem}.technology-file-document{width:5cqw;height:6.25cqw}.technology-file-icon{width:3cqw}.technology-file-name{font-size:clamp(.5625rem,2.25cqw,.75rem)}.hero-actions{padding-top:0}.hero-action-links{flex-wrap:nowrap;gap:var(--space-3);padding-bottom:var(--space-6)}.hero-action-output{max-width:unset;white-space:nowrap}.project-media-window-header{gap:min(var(--space-4),2vw);font-size:min(var(--type-micro),5vw)}.project-media-window-dots{gap:min(.45rem,1.5vw)}.project-media-window-dots span{width:min(.55rem,2vw)}.project-media-controls{grid-template-columns:min(2.75rem,12vw) minmax(0,1fr) min(2.75rem,12vw)}.project-media-name{padding-inline:min(var(--space-3),2vw)}.project-lightbox{grid-template-columns:minmax(1.5rem,2.5rem) minmax(0,1fr) minmax(1.5rem,2.5rem);padding:var(--space-4)}.project-lightbox-image-wrap,.project-lightbox-image-wrap img{max-width:92vw;max-height:calc(100vh - 8rem);max-height:calc(100dvh - 8rem)}.footer-contact{flex-direction:column}}@media (max-width:620px) and (min-height:740px){.personal-hero{grid-template-rows:auto minmax(0,1.9fr) auto auto minmax(0,1.1fr)}.hero-intro-window{top:calc(var(--space-5) + max(4.25rem, 11.5svh) + 12px);width:min(51vw,14.25rem)}}@media (max-width:980px) and (max-height:500px){.personal-hero{--hero-first-screen-height:calc(100svh - var(--space-6))}.hero-primary-screen{min-height:var(--hero-first-screen-height);row-gap:var(--space-2)}.hero-topbar{grid-template-columns:minmax(12rem,1fr) minmax(16rem,20rem);gap:var(--space-7);justify-content:space-between}.hero-intro-window{grid-column:2;grid-row:1;width:min(100%,20rem)}.hero-role-display{font-size:min(5.25rem,13cqi,20svh)}.personal-hero h1{font-size:min(3.5rem,9cqi,12svh)}.technology-file-name{font-size:.75rem}}@media (max-width:350px){.hero-role-display{font-size:min(3.35rem,17.7cqi)}}@container (max-width: 12rem){.hero-role-display{font-size:min(3rem,16.4cqi)}.technology-file-list{top:16%;bottom:8%}.technology-file{gap:0}.technology-file-document{width:.5rem;height:.625rem}.technology-file-icon{width:.325rem}.technology-file-name{line-height:1}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-delay:0s!important;transition-duration:.01ms!important}}