:root{color-scheme:dark;--ink: #090b0d;--white: #f0f3f0;--paper: #f4f6f4;--muted: #aebbbf;--accent: #a5ffac;--rule: #364249;--mono: "IBM Plex Mono", "Courier New", monospace;--display: Inter, Arial, sans-serif;--edge: clamp(18px, 3.15vw, 64px);--bar: 64px;--ease: cubic-bezier(.2, .75, .3, 1)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--ink);color:var(--white);font:400 1rem / 1.6 var(--mono)}h1,h2,h3,p{margin:0}a{color:inherit}button{font:inherit}button,a{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid currentColor;outline-offset:4px}section:focus,article:focus{outline:none}.skip-link{position:fixed;z-index:4;top:6px;left:var(--edge);padding:.65rem;background:var(--ink);color:var(--white);translate:0 -150%}.skip-link:focus{translate:0}.topbar{position:fixed;z-index:3;top:0;inset-inline:0;display:flex;align-items:center;justify-content:space-between;gap:1rem;height:var(--bar);padding-inline:var(--edge);color:#fff;mix-blend-mode:difference;pointer-events:none}.topbar a,.topbar button,.close-button{display:inline-flex;align-items:center;min-height:44px;text-decoration:none;text-transform:uppercase;font-size:.8125rem;line-height:1.1;pointer-events:auto}.topbar a:hover,.topbar button:hover{text-decoration:underline;text-underline-offset:4px}.topbar .brand{font:700 .875rem / 1 var(--display);letter-spacing:-.045em}.topbar-actions{display:flex;gap:clamp(12px,2vw,28px)}.topbar-actions button,.close-button{gap:.35rem;border:0;padding:0;color:inherit;background:transparent;cursor:pointer}.talk-link:after{content:"";margin-left:5px;width:3px;height:3px;background:currentColor}dialog{color:var(--ink);background:var(--paper);color-scheme:light;border:0}dialog::backdrop{background:#0b111bd9}body:has(dialog[open]){overflow:hidden}.site-menu{top:0;right:0;bottom:0;left:0;margin:0;width:100%;height:100%;max-width:none;max-height:none;background:transparent;padding:8px var(--edge) 32px}.site-menu::backdrop{background:#f4f6f4e8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.menu-panel{width:min(100%,16rem);margin-inline-start:auto}.menu-panel form,.project-dialog form{display:flex;justify-content:flex-end}.close-button:hover,.menu-links a:hover{text-decoration:underline;text-underline-offset:4px}.menu-panel ol{list-style:none;margin:14px 0 24px;padding:0}.menu-panel nav a{display:flex;justify-content:space-between;align-items:center;min-height:38px;padding:4px 8px;text-transform:uppercase;text-decoration:none}.menu-panel nav a:is(:hover,:focus-visible){color:var(--paper);background:var(--ink)}.menu-links{display:grid;justify-items:start;gap:4px;padding-inline:8px}.menu-links a{text-decoration:none}.menu-links a:before{content:"› "}.section-title{font:600 clamp(2rem,5vw,4.75rem) / .98 var(--display);letter-spacing:-.065em;text-transform:uppercase}.eyebrow{font-size:.8125rem;font-weight:500;letter-spacing:.035em;text-transform:uppercase}.muted{color:var(--muted)}.info-section{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.65fr);gap:clamp(30px,5vw,80px);padding:clamp(60px,10vw,144px) var(--edge);border-block-end:1px solid var(--rule);background:#0b1115}.experience-row{display:grid;grid-template-columns:minmax(110px,.42fr) minmax(0,1fr);gap:14px;border-block-start:1px solid var(--rule);padding:20px 0 26px}.experience-row h3{font:600 1.4rem / 1.2 var(--display);letter-spacing:-.035em}.experience-row div p{margin-top:.45rem}.experience-row p,.stack-grid p{font-size:.875rem}.experience-highlight{color:var(--accent)}.stack-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px}.stack-grid>div{border-block-start:1px solid var(--rule);padding-block-start:13px}.stack-grid h3{margin-bottom:.5rem}.footer{display:flex;justify-content:space-between;gap:14px;padding:22px var(--edge);border-top:1px solid var(--rule);color:var(--muted);font-size:.75rem;text-transform:uppercase}@media(max-width:760px){.info-section{grid-template-columns:1fr}.footer{flex-wrap:wrap}}@media(max-width:480px){.topbar .brand{font:500 .77rem / 1 var(--mono);letter-spacing:-.035em}.topbar a,.topbar button{font-size:.75rem}.topbar{gap:8px}.experience-row{grid-template-columns:1fr;gap:4px}.stack-grid{gap:22px 16px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.hero{position:relative;isolation:isolate;display:grid;align-items:center;min-height:100svh;overflow:clip;padding:var(--bar) var(--edge);background:#040607}.hero-grid,.hero-signal{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.hero-grid{z-index:-3;-webkit-mask-image:radial-gradient(ellipse 84% 79% at 50% 47%,#000 41%,transparent 95%);mask-image:radial-gradient(ellipse 84% 79% at 50% 47%,#000 41%,transparent 95%)}.portrait{position:absolute;z-index:-2;top:-20svh;left:50%;width:max(150svh,71vw);aspect-ratio:1;transform:translate3d(calc(-43% + var(--look-x, 0px)),var(--look-y, 0px),0);transition:transform .5s var(--ease);filter:drop-shadow(2px 0 #39677f) drop-shadow(-2px 0 #263f43);-webkit-mask-image:linear-gradient(#000 63%,transparent 98%);mask-image:linear-gradient(#000 63%,transparent 98%)}.portrait-mask{position:relative;height:100%;clip-path:polygon(1% 100%,2.2% 86%,4.5% 73%,5.3% 69%,8.5% 65%,15% 61%,23% 58%,28% 55%,30.2% 52%,31% 49%,31.7% 45.5%,29% 42.8%,28% 40%,27.4% 35.5%,28.1% 31%,28.3% 27%,27.9% 23%,29.5% 20.2%,32% 18%,34.7% 16.1%,38% 15%,40% 14.6%,44% 14.5%,48% 15.3%,51.7% 16.5%,55.4% 19.1%,57.4% 21.5%,58.2% 23.5%,58.6% 27%,58% 31%,57.2% 34%,55.5% 40%,54.6% 46%,52% 49%,50.2% 51.6%,50% 56.4%,59% 58%,65% 60%,69.4% 62%,72% 65%,74% 70%,76.7% 79%,80% 90%,82% 100%)}.portrait-mask img{display:block;width:100%;height:auto;filter:grayscale(1) brightness(.74) contrast(1.26) sepia(.48) hue-rotate(147deg) saturate(1.6)}.portrait-mask:after{position:absolute;top:0;right:0;bottom:0;left:0;content:"";background:repeating-linear-gradient(90deg,#0008 0 1px,transparent 1px 4px),repeating-linear-gradient(0deg,#0007 0 1px,transparent 1px 4px),linear-gradient(103deg,#000 24%,#02090cc9 36%,#02090c55 46%,transparent 54%,#0005 75%)}.hero-signal{z-index:-1;background:radial-gradient(ellipse at 51% 46%,transparent 26%,#0204055e 78%,#000 100%),repeating-linear-gradient(0deg,#0004 0 1px,transparent 1px 3px)}.hero-signal:after{position:absolute;top:0;right:0;bottom:0;left:0;content:"";background:repeating-linear-gradient(0deg,#a6dfef12 0 1px,transparent 1px 3px);-webkit-mask-image:linear-gradient(transparent,#000,transparent);mask-image:linear-gradient(transparent,#000,transparent);animation:scan 9s linear 3;height:35px}@keyframes scan{0%{transform:translateY(-35px)}to{transform:translateY(100svh)}}.hero-copy{display:flex;justify-content:space-between;align-items:center;gap:24px}.hero-name h1,.work-index h2{font:600 clamp(1.5rem,2.45vw,2.4rem) / 1 var(--display);letter-spacing:-.07em;text-transform:uppercase}.hero-name,.hero-intro{text-shadow:0 1px 12px #000,0 1px 4px #000}.hero-name p{display:flex;justify-content:space-between;width:94%;color:#c9d3d6;font-size:.75rem;text-transform:uppercase}.hero-intro{max-width:31ch;font-size:.8125rem;line-height:1.35;text-transform:uppercase}.hero-next{position:absolute;bottom:18px;left:var(--edge);display:inline-flex;align-items:center;gap:.5rem;min-height:44px;font-size:.75rem;text-decoration:none;text-transform:uppercase}.hero-next:hover{text-decoration:underline;text-underline-offset:4px}.about,.contact{position:relative;display:grid;align-items:center;min-height:88svh;padding:calc(var(--bar) + 20px) var(--edge);background:#070c12;isolation:isolate}.about:before,.contact:before{position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;content:"";background:linear-gradient(90deg,#070c12 5%,#070c12db 36%,#07122127 85%),repeating-linear-gradient(0deg,#0005 0 1px,transparent 1px 4px),url(/work/globalforce.jpg) right 44% / cover no-repeat}.about-inner{width:min(100%,34rem);border-inline-start:1px dashed #b6c4cb;padding-inline-start:clamp(18px,2.2vw,32px)}.about-inner>*+*,.contact-inner>*+*{margin-top:1rem}.about-lead{font:600 clamp(1.6rem,3vw,3rem) / 1.08 var(--display);letter-spacing:-.045em}.text-link,.contact a{display:inline-block;text-underline-offset:5px}.text-link:hover,.contact a:hover{color:var(--accent)}.contact:before{background:linear-gradient(90deg,#050a10f5 5%,#061019c9 43%,#07122155 85%),repeating-linear-gradient(0deg,#0005 0 1px,transparent 1px 4px),url(/work/multiplayer.jpg) center 52% / cover no-repeat}.contact h2{font-size:clamp(3rem,8vw,8rem)}.contact address{display:flex;flex-wrap:wrap;gap:10px 25px;font-style:normal}@media(max-width:760px){.hero{align-items:end;padding-bottom:70px}.hero-name{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.hero-intro{max-width:34ch;font-size:1rem}.portrait{top:5svh;width:max(105vw,103svh)}.hero-signal{background:linear-gradient(transparent 52%,#030506f5 87%),repeating-linear-gradient(0deg,#0004 0 1px,transparent 1px 3px)}.about:before,.contact:before{opacity:.72}}@media(prefers-reduced-motion:reduce){.portrait{transform:translate(-43%);transition:none}.hero-signal:after{animation:none}}.work{display:grid;grid-template-columns:minmax(216px,19vw) minmax(0,1fr);gap:1vw;padding:9svh var(--edge) 8svh;color:var(--ink);background:var(--paper);background-image:radial-gradient(ellipse at 50% 48%,#fff 25%,#e8efec);color-scheme:light}.work-index{position:sticky;z-index:1;top:max(var(--bar),calc(50svh - 2rem));align-self:start}.work-index ol{list-style:none;margin:.4rem 0 0;padding:0}.work-index h2{font-size:clamp(1.48rem,2.1vw,2.4rem)}.work-index a{position:relative;display:inline-block;min-height:24px;padding-left:.55rem;color:#465259;font-size:.75rem;line-height:1.35;text-decoration:none;text-transform:uppercase}.work-index a:is(:hover,[aria-current]){color:var(--ink)}.work-index a:hover{text-decoration:underline}.work-index a[aria-current]:before{position:absolute;top:.55em;left:0;width:3px;height:3px;border-radius:50%;background:currentColor;content:""}.work-gallery{min-width:0}.work-scene{display:grid;align-items:center;min-height:82svh;scroll-margin-top:12svh;perspective:1100px}.work-screen{position:relative;isolation:isolate;display:block;width:min(100%,54vw,1100px);aspect-ratio:1.58;padding:0;overflow:hidden;color:#fff;background:#121820;border:0;clip-path:polygon(3% 3.5%,15% 1.6%,32% .5%,50% 0,68% .5%,85% 1.6%,97% 3.5%,98.7% 19%,99.6% 35%,100% 50%,99.6% 65%,98.7% 81%,97% 96.5%,85% 98.4%,68% 99.5%,50% 100%,32% 99.5%,15% 98.4%,3% 96.5%,1.3% 81%,.4% 65%,0 50%,.4% 35%,1.3% 19%);cursor:pointer;text-align:left}.work-screen:focus-visible{clip-path:none;outline-color:var(--ink)}.work-screen img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:50% 56%;transition:transform .46s var(--ease)}.work-screen:hover img{transform:scale(1.045)}.work-screen:after{position:absolute;z-index:0;top:0;right:0;bottom:0;left:0;content:"";background:linear-gradient(155deg,#000a,#0003 43%,transparent 64%,#0007),repeating-linear-gradient(0deg,#0004 0 1px,transparent 1px 3px);pointer-events:none}.screen-copy{position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:flex-start;padding:clamp(16px,3vw,50px);text-shadow:0 1px 9px #000b}.screen-title{max-width:15ch;margin-top:.35rem;font:700 clamp(1.6rem,4.25vw,5rem) / .96 var(--display);letter-spacing:-.065em}.screen-meta,.screen-open{font-size:clamp(.64rem,1vw,.9rem);text-transform:uppercase}.screen-open{margin-top:auto}.work-screen:is(:hover,:focus-visible) .screen-open{text-decoration:underline;text-underline-offset:4px}.project-dialog{width:min(calc(100% - 32px),720px);max-height:calc(100% - 32px);padding:12px clamp(18px,4vw,48px) clamp(22px,4vw,48px)}.project-dialog h2{font:700 clamp(1.8rem,5vw,3.8rem) / 1 var(--display);letter-spacing:-.065em}.project-dialog h2,.project-dialog p+p{margin-top:.75rem}.project-role{margin-top:.6rem;font-weight:600}.project-flow,.project-metrics{margin-block:1rem;padding-inline-start:1.5rem;font-size:.85rem}.project-tech{border-top:1px solid #adb9b9;padding-top:1rem;font-size:.85rem}@supports (animation-timeline: view()){@media(prefers-reduced-motion:no-preference){.work-scene>h3{perspective:inherit}.work-screen{animation:screen-curve linear both;animation-timeline:view(block)}}}@keyframes screen-curve{0%{transform:translate(12%) rotateX(31deg) rotate(5deg) scale(.9)}45%,55%{transform:none}to{transform:translate(-7%) rotateX(-31deg) rotate(-5deg) scale(.9)}}@media(max-width:760px){.work{grid-template-columns:1fr;gap:20px;padding-top:var(--bar)}.work-index{position:static}.work-index ol{display:flex;flex-wrap:wrap;column-gap:.55rem}.work-index a{display:inline-flex;align-items:center;min-height:32px}.work-index a[aria-current]:before{top:calc(50% - 1px)}.work-gallery{margin-inline:calc(-1 * var(--edge));overflow:clip}.work-scene{min-height:0;margin-bottom:7svh;scroll-margin-top:var(--bar)}.work-screen{width:100%;aspect-ratio:1.25}.work-screen:focus-visible{outline-offset:-4px;outline-color:#fff}.screen-copy{padding:20px max(var(--edge),7%)}.work-scene:last-child{margin-bottom:0}}@media(prefers-reduced-motion:reduce){.work-screen img{transition:none}}
