@charset "UTF-8";
@font-face{font-family:Geist;src:url("fonts/geist-variable.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
:root{color-scheme:light dark;--paper:#111214;--surface:#191b1e;--ink:#f1f2f4;--muted:#a1a6ae;--line:#31353c;--accent:#afc7df;--button-ink:#142435;--radius:20px;--spring:cubic-bezier(.2,.8,.2,1);font:100%/1.6 Geist,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-synthesis:none;font-optical-sizing:auto}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:28px}
body{margin:0;background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased}
h1,h2,h3,p,figure,dl,dd{margin:0} h1,h2,h3{text-wrap:balance} p{text-wrap:pretty}
a{color:inherit;text-underline-offset:.25em;text-decoration-thickness:1px}
button{font:inherit;color:inherit;cursor:pointer} a,button,summary{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
img{display:block;width:100%;height:auto} strong{color:var(--ink);font-weight:550}
button{border:0} ::selection{background:var(--accent);color:var(--button-ink)}
:focus-visible{outline:2px solid var(--accent);outline-offset:5px}
.wrap{width:min(1280px,calc(100% - 96px));margin-inline:auto}
.skip-link{position:fixed;left:20px;top:-100px;z-index:100;padding:10px 18px;background:var(--ink);color:var(--paper);border-radius:10px}.skip-link:focus{top:12px}
.site-header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:27px 0;border-bottom:1px solid var(--line)}
.identity{font-size:.93rem;font-weight:550;letter-spacing:-.025em;text-decoration:none;display:flex;align-items:baseline;gap:18px}.identity span{font-size:.73rem;letter-spacing:0;color:var(--muted);font-weight:400}
.site-header nav{display:flex;align-items:center;gap:30px;font-size:.78rem}.site-header nav a{text-decoration:none;min-height:44px;display:flex;align-items:center;gap:7px;color:var(--muted)}.site-header nav a:hover{color:var(--ink)}
.hero{display:grid;grid-template-columns:.93fr 1.1fr;gap:42px;align-items:center;padding:28px 0 24px;min-height:0}

.hero-copy{min-width:0}.hero h1{font-size:clamp(4.4rem,7.4vw,6.5rem);letter-spacing:-.07em;line-height:.98;font-weight:440;margin:0 0 25px;white-space:nowrap}
.hero-description{font-size:.94rem;line-height:1.7;color:var(--muted);max-width:40ch}
.hero-actions{display:flex;align-items:center;gap:25px;margin-top:25px}.hero-actions .button{border-radius:7px;min-height:46px;padding:10px 20px;gap:26px;background:var(--ink);border-color:var(--ink);color:var(--paper)}.resume-link{display:inline-flex;align-items:center;gap:18px;min-height:44px;font-size:.82rem;color:var(--muted);text-decoration:none}.resume-link:hover{color:var(--ink);text-decoration:underline}.button{display:inline-flex;align-items:center;justify-content:center;gap:24px;min-height:48px;padding:11px 24px;border-radius:999px;font-size:.82rem;font-weight:550;text-decoration:none;transition:transform 350ms var(--spring),background 150ms,border-color 150ms}.primary{background:var(--accent);color:var(--button-ink);border:1px solid var(--accent)}.secondary{background:transparent;color:var(--ink);border:1px solid var(--line)}.button:hover{transform:translateY(-2px)}.button:active{transform:scale(.97)}.secondary:hover{border-color:var(--muted)}
.hero-visual{position:relative;min-width:0;padding:0;background:none;border:0}

.image-button{position:relative;display:block;padding:0;width:100%;overflow:hidden;background:#17191c;border:1px solid #41454b;border-radius:12px;transition:transform 500ms var(--spring),box-shadow 500ms var(--spring)}
.hero-screen{border-radius:8px;border-color:var(--line);box-shadow:none}.hero-screen:hover{transform:translateY(-3px)}.hero-screen:active{transform:scale(.995)}
.expand-image{position:absolute;right:12px;bottom:12px;width:32px;height:32px;display:grid;place-items:center;background:#24282de8;border:1px solid #606975;border-radius:50%;color:#f1f2f4;transition:background 150ms}.image-button:hover .expand-image{background:#3c444d}
.hero-visual figcaption{display:flex;align-items:center;gap:12px;margin-top:16px;color:var(--ink);font-size:.85rem;line-height:1.3}.hero-visual figcaption>img{width:25px;height:25px;filter:invert(1)}.hero-visual figcaption>span>span{display:block;color:var(--muted);font-size:.68rem;margin-top:5px}.hero-visual figcaption>a{margin-left:auto;display:grid;place-items:center;min-width:44px;min-height:44px;text-decoration:none;font-size:1.3rem}
.proof{padding:25px 0 0;border-top:1px solid var(--line)}.proof dl{display:grid;grid-template-columns:repeat(3,1fr)}.proof dl>div{display:flex;align-items:center;gap:22px;padding-inline:32px;border-left:1px solid var(--line)}.proof dl>div:first-child{border:0;padding-left:0}.proof dl>div:last-child{padding-right:0}.proof dt{font-size:2.7rem;line-height:1;letter-spacing:-.06em;font-weight:500;white-space:nowrap}.proof dt>span{font-size:1.05rem;letter-spacing:-.02em;margin-left:4px;color:var(--muted)}.proof dd{font-size:.8rem;line-height:1.4}.proof dd>span{display:block;font-size:.66rem;color:var(--muted);margin-top:5px}.proof>p{font-size:.6rem;color:var(--muted);margin-top:17px;text-align:right}
.work{padding:66px 0 40px}.section-heading{display:block;margin-bottom:24px}.section-heading h2{font-size:1.65rem;font-weight:530;letter-spacing:-.045em;line-height:1.2}.section-heading>p{margin-top:9px;font-size:.75rem;color:var(--muted)}
.project-explorer{display:flex;min-height:410px;gap:1px;overflow:hidden;background:var(--line);border:1px solid var(--line);border-radius:var(--radius)}.project{position:relative;background:var(--surface);min-width:0;flex:1}.project.is-active{flex:3}.project-toggle{height:80px;display:flex;align-items:center;justify-content:space-between;width:100%;padding:23px 24px;background:transparent;text-align:left;gap:12px;cursor:default}.enhanced .project-toggle{cursor:pointer}.project-toggle:focus-visible{outline-offset:-5px;border-radius:var(--radius)}.project-name{display:block;font-size:1.5rem;font-weight:530;letter-spacing:-.045em;line-height:1.25}.toggle-icon{font-size:1.4rem;color:var(--muted);transition:transform 350ms var(--spring)}.is-active .toggle-icon{transform:rotate(45deg)}
.project-cover{height:175px;object-fit:cover;object-position:72% 44%}.enhanced .project:not(.is-active) .project-cover{height:calc(100% - 80px);position:absolute;top:80px;object-position:66% center;opacity:.64;transition:opacity 250ms}.enhanced .project:not(.is-active):hover .project-cover{opacity:.85}.project-body{padding:21px 24px 24px}.enhanced .project:not(.is-active) .project-body{display:none}
.project-role{font-size:.66rem;color:var(--muted);line-height:1.4}.project-role>span{display:block;margin-top:4px}.project-lead{font-size:1.12rem;font-weight:500;letter-spacing:-.025em;line-height:1.4;margin:14px 0 19px;max-width:42ch}.project-facts{display:grid;gap:11px}.project-facts>div{display:grid;grid-template-columns:112px 1fr;gap:14px;font-size:.72rem;line-height:1.55}.project-facts dt{font-weight:500;color:var(--ink)}.project-facts dd{color:var(--muted)}
.engineering-details{margin-top:19px;border-top:1px solid var(--line);font-size:.72rem;color:var(--muted)}.engineering-details summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;min-height:44px;color:var(--ink)}.engineering-details summary::-webkit-details-marker{display:none}.engineering-details summary>span{font-size:1.1rem;transition:transform 250ms var(--spring)}.engineering-details[open] summary>span{transform:rotate(45deg)}.engineering-details>p{margin-bottom:12px}.project-links{display:flex;align-items:center;gap:25px;flex-wrap:wrap;margin-top:5px;font-size:.69rem}.project-links a,.text-button{min-height:44px;display:inline-flex;align-items:center;gap:9px;color:var(--accent);text-decoration:none}.text-button{padding:0;background:none;font-size:inherit}.project-links a:hover,.text-button:hover{text-decoration:underline;text-underline-offset:4px}
.crytica{display:grid;grid-template-columns:.85fr 1.5fr;gap:80px;padding:37px 0 46px;border-bottom:1px solid var(--line)}.crytica h2{font-size:1.9rem;letter-spacing:-.045em;line-height:1.2;font-weight:530;margin:0 0 13px}.crytica>div:last-child{max-width:67ch}.crytica-lead{font-size:1.15rem;font-weight:500;letter-spacing:-.025em;margin-bottom:9px;line-height:1.4}.crytica p:not(.project-role):not(.crytica-lead){font-size:.82rem;line-height:1.7;color:var(--muted)}.crytica .crytica-detail{font-size:.71rem!important;margin-top:13px}
.engineering{display:grid;grid-template-columns:.95fr 1.15fr;gap:90px;padding:68px 0}.engineering-heading h2{font-size:clamp(1.9rem,2.8vw,2.65rem);line-height:1.15;letter-spacing:-.055em;font-weight:530;margin:0 0 20px}.engineering-heading>p:last-child{font-size:.79rem;line-height:1.7;color:var(--muted)}.loop-statement{font-size:1.3rem;line-height:1.5;font-weight:480;letter-spacing:-.025em;max-width:33ch;margin-bottom:28px}.loop-statement [data-reveal]{color:var(--ink)}
.workflow{list-style:none;counter-reset:step;margin:0;padding:0}.workflow li{position:relative;counter-increment:step;padding:17px 0 17px 38px;border-top:1px solid var(--line)}.workflow li:last-child{padding-bottom:0}.workflow li::before{content:"0" counter(step);position:absolute;left:0;top:19px;color:var(--accent);font-size:.66rem}.workflow h3{font-size:.84rem;font-weight:530;letter-spacing:-.01em}.workflow p{margin-top:5px;font-size:.73rem;color:var(--muted);line-height:1.6;max-width:54ch}
.contact{display:grid;grid-template-columns:1fr auto;gap:30px;padding:43px 0 28px;border-top:1px solid var(--line)}.contact h2{font-size:2.4rem;font-weight:530;letter-spacing:-.05em;line-height:1.2;margin:0 0 15px}.contact-email{display:inline-flex;align-items:center;gap:25px;font-size:.92rem;color:var(--accent);text-decoration:none;min-height:44px}.contact-email:hover{text-decoration:underline}.contact-links{display:flex;align-self:end;gap:24px;font-size:.76rem}.contact-links>a{min-height:44px;display:flex;align-items:center;gap:8px;text-decoration:none}.contact-links>a:hover{color:var(--accent)}.footer-note{grid-column:1/-1;display:flex;justify-content:space-between;gap:30px;border-top:1px solid var(--line);padding-top:21px;margin-top:11px;font-size:.62rem;color:var(--muted)}.footer-note span{display:block;margin-top:3px}.footer-note>p:last-child{text-align:right}
.lightbox{padding:20px;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:var(--radius);width:min(1400px,calc(100% - 44px));max-width:none;max-height:calc(100dvh - 44px);overflow:auto}.lightbox::backdrop{background:#080a0de0;backdrop-filter:blur(12px)}.lightbox-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;font-size:.78rem;color:var(--muted)}.close-image{background:none;padding:0 5px;min-height:44px;display:flex;align-items:center;gap:16px;color:var(--ink)}.close-image span{font-size:1.7rem}.lightbox-image{background:#131517}.lightbox-image img{width:100%;height:auto;max-height:calc(100dvh - 210px);object-fit:contain}.lightbox-footer{display:flex;align-items:center;justify-content:space-between;gap:30px;margin-top:14px;font-size:.72rem;color:var(--muted)}.lightbox-footer>div{display:flex;align-items:center;gap:12px}.lightbox-footer button{background:var(--surface);border:1px solid var(--line);border-radius:50%;width:44px;height:44px;flex-shrink:0;color:var(--ink)}.lightbox-footer a{white-space:nowrap;margin-right:10px}
.not-found{padding:120px 0}.not-found h1{font-size:clamp(2rem,6vw,5rem);letter-spacing:-.06em;font-weight:500}.not-found p{margin-top:24px;color:var(--muted)}
@media(prefers-color-scheme:light){:root{--paper:#f7f7f5;--surface:#fff;--ink:#1b1f24;--muted:#626a74;--line:#dadddf;--accent:#3b5977;--button-ink:#fff}.hero-visual figcaption>img{filter:none}}
@media(min-width:1440px){.hero{padding-block:65px;min-height:560px}.hero h1{font-size:6.5rem}}
@media(max-width:1100px){.wrap{width:calc(100% - 64px)}.hero{gap:28px;min-height:460px;padding-block:40px}.hero h1{font-size:clamp(4rem,7.2vw,5rem)}.hero-description{font-size:.86rem}.hero-visual figcaption{margin-top:16px}.proof dl>div{gap:15px;padding-inline:22px}.proof dt{font-size:2.4rem}.proof dd{font-size:.7rem}.proof dd>span{font-size:.59rem}.project.is-active{flex:2.7}.project-toggle{padding:22px 19px}.project-name{font-size:1.3rem}.project-body{padding:20px}.project-facts>div{grid-template-columns:91px 1fr;font-size:.67rem;gap:10px}.crytica{gap:50px}.engineering{gap:50px}}
@media(max-width:900px){.identity{display:block}.identity span{display:none}.hero{grid-template-columns:.9fr 1.05fr;gap:24px;min-height:440px}.hero h1{font-size:clamp(3.5rem,7.5vw,4.2rem)}.hero-actions{gap:10px}.button{padding:10px 20px;gap:18px;font-size:.75rem}.hero-visual figcaption>span>span{max-width:24ch;font-size:.6rem}.hero-visual figcaption{font-size:.75rem;gap:9px;margin-top:16px}.hero-description{font-size:.79rem}.proof dl>div{display:block;padding-inline:22px}.proof dt{font-size:2.25rem;margin-bottom:10px}.proof dd{font-size:.73rem}.section-heading{align-items:start;gap:30px}.section-heading>p{max-width:33ch}.project.is-active{flex:2.7}.project-toggle{padding:20px 16px;align-items:start}.project-name{font-size:1.15rem}.project-body{padding:19px 16px}.project-lead{font-size:1rem}.project-facts>div{display:block;font-size:.7rem}.project-facts dd{margin-top:3px}.project-cover{height:150px}.enhanced .project:not(.is-active) .project-cover{top:80px;height:calc(100% - 80px)}.engineering{grid-template-columns:.95fr 1.1fr;gap:40px}.engineering-heading h2{font-size:1.9rem}.contact h2{font-size:2rem}.contact-links{gap:17px}.contact-email{font-size:.8rem}}
/* Four projects retain readable content widths by stacking below desktop. */
@media(min-width:651px) and (max-width:1200px){.project-explorer{display:block;min-height:0;background:var(--surface)}.project+.project{border-top:1px solid var(--line)}.project-toggle{padding:22px 24px;align-items:center}.project-name{font-size:1.5rem}.project-body{padding:22px 24px 24px}.project-facts>div{display:grid;grid-template-columns:112px 1fr;font-size:.75rem;gap:14px}.project-facts dd{margin:0}.enhanced .project:not(.is-active) .project-cover{height:80px;width:42%;position:absolute;right:0;top:0;opacity:.43;object-position:67% center;pointer-events:none}.enhanced .project:not(.is-active) .project-toggle{position:relative;z-index:1}.project-lead{font-size:1.15rem}.project-cover{height:240px}}
@media(max-width:650px){.wrap{width:calc(100% - 40px)}.site-header{padding:17px 0;gap:16px}.identity{font-size:.81rem;line-height:1.3;max-width:130px}.site-header nav{gap:15px;font-size:.66rem}.site-header nav a{min-height:44px}.site-header nav a:nth-child(2){display:none}.hero{display:flex;flex-direction:column;align-items:stretch;gap:22px;padding:26px 0 21px;min-height:0}.hero h1{font-size:clamp(3.25rem,14.5vw,5.5rem);margin:0 0 18px}.hero-description{font-size:.82rem;max-width:43ch}.hero-actions{margin-top:18px}.button{padding:11px 23px;min-height:46px;font-size:.76rem;gap:26px}.hero-screen img{aspect-ratio:16/9;object-fit:contain}.hero-visual figcaption{margin-top:16px;font-size:.76rem}.hero-visual figcaption>span>span{max-width:none;font-size:.61rem}.proof{padding-top:21px}.proof dl>div{padding-inline:14px}.proof dt{font-size:1.85rem;margin-bottom:8px}.proof dt>span{font-size:.71rem;margin-left:3px}.proof dd{font-size:.62rem;line-height:1.45}.proof dd>span{font-size:.54rem;line-height:1.4;margin-top:4px}.proof>p{font-size:.53rem;text-align:left;margin-top:13px}.work{padding:40px 0 10px}.section-heading{display:block;margin-bottom:19px}.section-heading h2{font-size:1.6rem}.section-heading>p{font-size:.7rem;max-width:none;margin-top:8px}.project-explorer{display:block;min-height:0;background:var(--surface)}.project+.project{border-top:1px solid var(--line)}.project-toggle{padding:19px 21px;align-items:center}.project-name{font-size:1.4rem}.project-body{padding:20px 21px}.project-cover{height:165px}.enhanced .project:not(.is-active) .project-cover{height:80px;width:42%;position:absolute;right:0;top:0;opacity:.43;object-position:67% center;pointer-events:none}.enhanced .project:not(.is-active) .project-toggle{position:relative;z-index:1;padding-right:20px}.project-toggle .toggle-icon{color:var(--ink)}.project-role{font-size:.62rem}.project-role>span{display:inline;margin-left:8px}.project-lead{font-size:1.13rem;margin:14px 0 18px}.project-facts>div{display:grid;grid-template-columns:90px 1fr;font-size:.71rem;gap:12px}.project-facts dd{margin:0}.project-facts{gap:13px}.engineering-details{font-size:.71rem;margin-top:15px}.project-links{font-size:.71rem;gap:26px}.crytica{display:block;padding:30px 0 33px}.crytica>div:last-child{margin-top:22px}.crytica h2{font-size:1.8rem;margin:0 0 11px}.crytica-lead{font-size:1.02rem}.crytica p:not(.project-role):not(.crytica-lead){font-size:.77rem}.crytica .crytica-detail{font-size:.66rem!important}.engineering{display:block;padding:37px 0}.engineering-heading h2{font-size:2.1rem;margin:0 0 15px}.engineering-heading>p:last-child{font-size:.73rem}.engineering-loop{margin-top:29px}.loop-statement{font-size:1.12rem;margin-bottom:22px;max-width:30ch}.workflow li{padding-block:16px}.workflow h3{font-size:.8rem}.workflow p{font-size:.71rem}.contact{display:block;padding:32px 0 25px}.contact h2{font-size:1.9rem}.contact-email{font-size:.77rem;gap:15px}.contact-links{gap:28px;margin-top:18px;font-size:.75rem}.footer-note{display:block;margin-top:28px;font-size:.61rem}.footer-note>p:last-child{text-align:left;margin-top:17px}.lightbox{width:calc(100% - 20px);padding:14px;max-height:calc(100dvh - 20px)}.lightbox-footer{display:block;font-size:.65rem}.lightbox-footer>div{justify-content:space-between;margin-top:12px}.lightbox-image img{max-height:calc(100dvh - 260px)}.lightbox-footer a{margin-right:auto}.not-found{padding-top:80px}}
@media(max-width:360px){.wrap{width:calc(100% - 32px)}.hero h1{font-size:3.25rem}.hero-description{font-size:.79rem}.site-header nav{gap:13px;font-size:.62rem}.identity{font-size:.73rem}.button{padding-inline:18px;gap:22px}.proof dl>div{padding-inline:10px}.proof dd{font-size:.56rem}.proof dt{font-size:1.65rem}.proof dt>span{font-size:.63rem}.hero-visual figcaption>span>span{font-size:.55rem}.project-role>span{display:block;margin:4px 0 0}.project-facts>div{display:block}.project-facts dd{margin-top:3px}.contact-email{font-size:.7rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}.hero-screen,.hero-screen:hover{transform:none}.loop-statement [data-reveal]{opacity:1!important}}
@media(prefers-reduced-transparency:reduce){.lightbox::backdrop{backdrop-filter:none;background:#080a0d}.expand-image{background:#24282d}}
@media(prefers-contrast:more){:root{--muted:#c9cdd3;--line:#7b8795}.project-cover{opacity:1!important}.hero-visual figcaption>span>span{color:var(--ink)}}
@media(prefers-color-scheme:light) and (prefers-contrast:more){:root{--muted:#37404b;--line:#697582}}

/* Preserve the complete review workspace when GamePack is open. */
.project.is-active .gamepack-cover,html:not(.enhanced) .gamepack-cover{height:auto;aspect-ratio:2788/1664;object-fit:contain;background:#08090b}
