:root{--text: #16140f;--background: #ede8de;--primary: #00c7b0;--secondary: #bbc9b0;--accent: #96b492;--body-copy: #38352f;--muted: #5f675d;--primary-ink: #006b61;--surface: #f7f3eb;--image-surface: #d7d4ca;--media-matte: #e3dac9;--modal-surface: #dedbd2;--rule: rgba(22, 20, 15, .2);--font-body: "IBM Plex Sans", "Arial", "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", "Cascadia Mono", monospace;--font-display: Georgia, "Times New Roman", serif;font-family:var(--font-body);font-size:16px;line-height:1.6;color:var(--text);background:var(--background);color-scheme:light}:root[data-theme=dark]{--text: #f3f0e8;--background: #181D23;--primary: #4ddccb;--secondary: #263c37;--accent: #52756c;--body-copy: #d1d5db;--muted: #aeb8b3;--primary-ink: #76eadc;--surface: #202725;--image-surface: #101413;--media-matte: #202936;--modal-surface: #242b29;--rule: rgba(229, 231, 235, .2);color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:var(--background)}body.modal-open{overflow:hidden}button,a{font:inherit}button,a{color:inherit}.site-shell{width:100%;min-height:100vh;padding:0 clamp(20px,4vw,64px);background:var(--background)}header{height:110px;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;border-bottom:1px solid var(--rule)}.brand{color:var(--text);font-family:var(--font-display);font-size:22px;text-decoration:none}.brand-wordmark{display:block;justify-self:start;height:54px;margin-left:9px}.brand-wordmark img{display:block;width:100%;height:100%;object-fit:contain;object-position:left center;filter:none}:root[data-theme=dark] .brand-wordmark img{filter:brightness(0) invert(1)}.header-mark,.footer-mark{object-fit:contain}.header-mark{width:48px;justify-self:center;transform:scale(2.15)}header nav{display:flex;gap:47px}.header-controls{display:flex;align-items:center;justify-self:end;gap:20px}.header-utilities{display:flex;align-items:center;gap:8px}header nav a,footer nav a{color:var(--text);font-family:var(--font-mono);font-size:14px;font-weight:500;text-decoration:none}header nav a.active,header nav a:hover,footer nav a:hover,.games-intro a{color:var(--primary-ink)}.menu-toggle{display:none;margin-left:auto;padding:4px;border:0;background:none;cursor:pointer;font-size:20px}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:70px;height:25px;padding:0 9px;border:1px solid var(--rule);border-radius:999px;background:var(--surface);color:var(--text);font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;transition:border-color .15s ease,color .15s ease,background .15s ease}.theme-toggle:hover{border-color:var(--primary);color:var(--primary-ink)}.theme-toggle:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.theme-toggle svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.intro{display:grid;grid-template-columns:30% 1fr;gap:50px;padding:56px 8px 36px;border-bottom:1px solid var(--rule)}.intro-copy{align-self:center}.intro h1,.contact h2,.modal h2{margin:0 0 25px;font-family:var(--font-display);font-size:clamp(38px,3.8vw,65px);font-weight:400;letter-spacing:-.045em;line-height:1.04}.purple-line{display:block;width:43px;height:2px;margin-bottom:29px;background:var(--primary)}.intro p,.games-intro p,.game-copy p,.contact p,.modal p{margin:0;color:var(--body-copy);line-height:1.62}.intro-art{position:relative;margin:0;height:407px;overflow:hidden;border:1px solid var(--rule);border-radius:12px;background:var(--image-surface);box-shadow:0 22px 60px #00000047}.featured-showcase{position:relative;display:block;width:100%;height:100%;padding:0;border:0;background:none;cursor:pointer;overflow:hidden}.intro-art img{width:100%;height:100%;object-fit:cover;filter:saturate(.66) contrast(1.03);transition:filter .2s ease,transform .2s ease}.featured-showcase:hover img,.featured-showcase:focus-visible img{filter:saturate(.92) contrast(1.03);transform:scale(1.012)}.featured-showcase:focus-visible{outline:2px solid var(--primary);outline-offset:-3px}.featured-caption{position:absolute;right:18px;bottom:16px;z-index:2;display:inline-flex;gap:6px;align-items:center;padding:7px 9px;border-radius:4px;background:#101315ad;color:#f7f3eb;font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.05em;text-transform:uppercase}.featured-caption b{color:#4ddccb}.games{display:grid;grid-template-columns:17% 1fr;gap:40px;padding:27px 8px 34px}.games-intro{position:sticky;top:28px;align-self:start}.games-intro h2,.services-intro h2,.about h2{margin:0 0 18px;font-family:var(--font-mono);font-size:13px;font-weight:500;text-transform:uppercase}.games-intro a,.game-copy button{display:inline-block;margin-top:20px;border:0;padding:0;background:none;font-family:var(--font-mono);font-size:14px;font-weight:500;text-decoration:none;cursor:pointer}.game-copy button{color:var(--text);transition:color .15s ease}.game-copy button:hover,.game-copy button:focus-visible{color:var(--primary-ink)}.external-project-link{display:block;width:fit-content;margin-top:11px;color:var(--primary-ink);font-family:var(--font-mono);font-size:14px;font-weight:500;text-decoration:none}.external-project-link:hover,.external-project-link:focus-visible{color:var(--text)}.games-intro span,.game-copy span{padding-left:5px}.game-list{min-width:0;padding-left:28px;border-left:1px solid var(--rule)}.game-row{display:grid;grid-template-columns:25% 1fr;gap:25px;padding:0 0 28px;margin:0 0 28px;border-bottom:1px solid var(--rule)}.game-row:last-child{margin-bottom:0}.game-heading{display:grid;grid-template-columns:28px 1fr;align-items:baseline;gap:5px}.game-heading>span{color:var(--muted);font-family:var(--font-mono);font-size:12px;font-weight:500}.game-heading h3{margin:0;font-family:var(--font-display);font-size:27px;font-weight:400;letter-spacing:-.04em;line-height:1}.game-type{color:var(--muted)!important;margin:9px 0 10px!important;font-family:var(--font-mono);font-size:13px;font-weight:500;line-height:1.5!important}.project-status{display:inline-flex;width:fit-content;margin-bottom:13px;padding:5px 8px;border:1px solid rgba(0,199,176,.65);border-radius:999px;color:var(--text);background:#00c7b029;font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.06em;line-height:1.2;text-transform:uppercase}.game-description{max-width:34ch;color:var(--body-copy)!important;font-size:16px;line-height:1.6}.game-art{display:grid;grid-template-columns:16fr 68fr 16fr;aspect-ratio:400 / 153;border:1px solid var(--rule);background:var(--image-surface);overflow:hidden;transition:grid-template-columns .12s ease}.game-art:not(:has(.extra-art)){grid-template-columns:1fr;aspect-ratio:16 / 9}.gallery-image{width:100%;min-width:0;height:100%;display:block;border:0;padding:0;background:none;cursor:pointer;overflow:hidden}.gallery-image img{width:100%;height:100%;display:block;object-fit:cover;filter:saturate(.62);transition:filter .12s ease,transform .12s ease}.gallery-image.contain img{object-fit:contain}.extra-art button.contain img,.carousel-image.contain img{object-fit:contain!important}.gallery-image:hover img,.extra-art button:hover img{filter:saturate(1);transform:scale(1.015)}.extra-art{display:contents}.extra-art button{min-width:0;height:100%;padding:0;border:0;border-left:1px solid var(--rule);background:none;cursor:pointer;overflow:hidden}.extra-art img{width:100%;height:100%;display:block;object-fit:cover;filter:saturate(.62);transition:filter .12s ease,transform .12s ease}.game-art.gallery-focus-0{grid-template-columns:68fr 16fr 16fr}.game-art.gallery-focus-1{grid-template-columns:16fr 68fr 16fr}.game-art.gallery-focus-2{grid-template-columns:16fr 16fr 68fr}.mobile-carousel{display:none}.services,.about{display:grid;grid-template-columns:17% minmax(0,1fr);gap:40px;padding:56px 8px;border-top:1px solid var(--rule)}.services-intro .purple-line{margin-bottom:22px}.services p,.about p{margin:0;color:var(--body-copy);line-height:1.62}.service-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;padding-left:28px;border-left:1px solid var(--rule)}.service{padding-top:4px}.service+.service{padding-left:28px;border-left:1px solid var(--rule)}.service-number{display:block;margin-bottom:26px;color:var(--primary-ink);font-family:var(--font-mono);font-size:12px;font-weight:500}.service h3{max-width:15ch;margin:0 0 16px;font-family:var(--font-display);font-size:clamp(25px,2.3vw,34px);font-weight:400;letter-spacing:-.04em;line-height:1.12}.service p{max-width:30ch}.about{align-items:baseline;padding-top:40px;padding-bottom:40px}.about h2{margin-bottom:0}.about p{max-width:70ch;padding-left:28px}.contact{display:grid;grid-template-columns:1fr 1fr 1fr;gap:40px;align-items:center;padding:45px 8px;border-top:1px solid var(--rule)}.contact h2{margin-bottom:12px;font-size:31px}.contact .purple-line{margin:0}.contact-copy{max-width:350px}.contact-detail{display:flex;flex-direction:column;align-items:flex-start;gap:10px}.contact-detail span{color:var(--muted);font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase}.contact-detail a{color:var(--text);font-family:var(--font-display);font-size:clamp(18px,1.5vw,23px);text-decoration:none}.contact-detail a:hover{color:var(--accent)}footer{display:grid;grid-template-columns:1fr auto 1fr;gap:20px;align-items:center;min-height:78px;padding:16px 0;border-top:1px solid var(--rule)}.footer-identity{display:flex;flex-direction:column;gap:6px}.footer-identity .brand{font-size:14px}.footer-mark{width:48px;height:48px}.footer-identity small{color:var(--muted);font-family:var(--font-mono);font-size:11px}footer nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:25px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;display:grid;place-items:center;padding:20px;background:#16140fc2}.modal{position:relative;width:min(860px,calc(100vw - 48px));overflow:hidden;border:1px solid rgba(22,20,15,.28);border-radius:14px;background:var(--modal-surface);box-shadow:0 28px 80px #00000057}.modal-media{position:relative;aspect-ratio:16 / 9;width:100%;background:var(--image-surface)}.modal-media img{display:block;width:100%;height:100%;object-fit:cover}.modal-media.portrait img{object-fit:contain}.modal-copy{padding:20px 24px 22px}.modal-kicker{display:flex;justify-content:space-between;gap:20px;align-items:center}.modal-kicker .project-status{flex:0 0 auto;margin:0}.modal h2{margin:6px 0 12px;font-size:clamp(38px,4vw,52px)}.modal .game-type{margin:0!important}.modal-summary{max-width:720px;color:var(--body-copy)!important}.case-study-details{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;margin:20px 0 0;background:var(--rule);border:1px solid var(--rule)}.case-study-details>div{padding:14px;background:var(--surface)}.case-study-details dt{margin-bottom:7px;color:var(--primary-ink);font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase}.case-study-details dd{margin:0;color:var(--text);font-size:14px;line-height:1.5}.rights-note{margin-top:14px!important;padding-top:12px;border-top:1px solid var(--rule);color:var(--body-copy)!important;font-size:13px}.modal-external-link{display:inline-flex;gap:7px;margin-top:12px;color:var(--primary-ink);font-family:var(--font-mono);font-size:14px;font-weight:500;text-decoration:none}.modal-external-link:hover,.modal-external-link:focus-visible{color:var(--text)}.close,.image-nav{position:absolute;z-index:3;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid rgba(247,243,235,.55);border-radius:50%;background:#16140fd6;color:#f7f3eb;box-shadow:0 6px 18px #0000003d;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .15s ease}.close svg,.image-nav svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.close:hover,.image-nav:hover{border-color:var(--primary);background:var(--primary-ink)}.close:focus-visible,.image-nav:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.close{top:14px;right:14px}.image-nav{top:50%;transform:translateY(-50%)}.image-nav--previous{left:14px}.image-nav--next{right:14px}@media (max-height:850px) and (min-width:801px){.modal{width:min(720px,calc(100vw - 48px))}.modal-copy{padding:14px 18px 16px}.modal h2{margin:4px 0 8px;font-size:40px}.modal-summary{font-size:14px;line-height:1.45!important}.case-study-details{margin-top:12px}.case-study-details>div{padding:10px}.case-study-details dt{margin-bottom:5px;font-size:9px}.case-study-details dd{font-size:12px;line-height:1.4}.rights-note{margin-top:9px!important;padding-top:8px;font-size:11px}.modal-external-link{margin-top:8px}}@media (max-width:800px){.site-shell{padding:0 20px}.intro{grid-template-columns:1fr 40%;gap:30px;padding-top:40px}.intro h1{font-size:clamp(30px,4.8vw,43px)}.intro-art{height:220px}.games{grid-template-columns:1fr;gap:24px}.games-intro{position:static;display:flex;align-items:end;justify-content:space-between}.games-intro p{display:none}.game-list{padding-left:0;border-left:0}.game-row{grid-template-columns:29% 1fr}.game-heading h3{font-size:20px}.game-art>img{width:100%}.services,.about{grid-template-columns:1fr;gap:32px;padding:40px 8px}.services-intro p{max-width:52ch}.service-list{gap:20px;padding-left:0;border-left:0}.service+.service{padding-left:20px}.about{gap:18px}.about p{padding-left:0}.extra-art{display:none}.contact{grid-template-columns:1fr 1fr}.contact-detail{grid-column:2}.case-study-details{grid-template-columns:1fr}}@media (max-width:640px){.service-list{grid-template-columns:1fr;gap:24px}.service{display:grid;grid-template-columns:28px minmax(0,1fr);column-gap:12px;align-items:baseline;padding-top:0}.service+.service{padding:24px 0 0;border-top:1px solid var(--rule);border-left:0}.service-number{margin-bottom:0}.service h3{max-width:none;margin-bottom:12px;font-size:27px}.service p{grid-column:2;max-width:36ch}}@media (max-width:540px){.site-shell{padding:0 16px}.overlay{padding:8px}.modal{width:calc(100vw - 16px);border-radius:10px}.modal-media img{object-fit:contain}header{position:relative;height:76px;display:grid;grid-template-columns:1fr auto 1fr;justify-content:initial}.brand{font-size:16px}.brand-wordmark{width:145px;height:34px;margin-left:0}.header-mark{width:34px;height:34px;transform:scale(1.5);justify-self:center}.header-controls{justify-self:end;display:block}header nav{position:absolute;left:0;right:0;top:76px;z-index:4;display:none;flex-direction:column;gap:0;padding:10px 16px;background:var(--background);border:1px solid var(--rule)}header nav.open{display:flex}header nav a{padding:12px 0}.menu-toggle{display:block;justify-self:end;margin-left:0}.theme-toggle{width:32px;height:32px;justify-content:center;padding:0}.theme-toggle span,.modal-summary{display:none}.case-study-details{margin-top:14px}.case-study-details>div{padding:12px}.intro{display:block;padding:32px 0 23px}.intro h1{font-size:34px}.intro p{margin-bottom:24px}.intro-art{height:177px;border-radius:8px}.featured-caption{right:10px;bottom:10px;font-size:8px}.games{padding:20px 0}.games-intro{padding-bottom:15px;border-bottom:1px solid var(--rule)}.game-row{display:block;padding-bottom:22px;margin-bottom:22px}.game-copy{margin-bottom:16px}.game-heading h3{font-size:23px}.game-description{max-width:270px}.game-copy button{margin-top:12px}.modal-kicker{align-items:flex-start;flex-direction:column;gap:10px}.modal-kicker .project-status,.desktop-gallery{display:none}.mobile-carousel{position:relative;display:grid;align-items:center;width:100%;height:auto;aspect-ratio:16 / 9;overflow:hidden;border:1px solid var(--rule);background:var(--image-surface)}.carousel-image{grid-column:1 / -1;grid-row:1;min-width:0;width:100%;height:100%;border:0;padding:0;background:none;cursor:pointer;overflow:hidden}.carousel-image img{width:100%;height:100%;display:block;object-fit:contain;filter:saturate(.72)}.carousel-button{position:absolute;top:50%;transform:translateY(-50%);z-index:3;display:grid;place-items:center;width:34px;height:54px;border:1px solid rgba(247,243,235,.58);padding:0;background:#16140fcc;color:#f7f3eb;box-shadow:0 4px 14px #0000003d;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .15s ease}.carousel-button:hover{border-color:#91a9bf;background:#2d4054}.carousel-button:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.carousel-button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.carousel-button--previous{left:0;border-left:0;border-radius:0 5px 5px 0}.carousel-button--next{right:0;border-right:0;border-radius:5px 0 0 5px}.carousel-status{position:absolute;right:0;bottom:0;margin:0;padding:5px 8px;border-top:1px solid rgba(247,243,235,.4);border-left:1px solid rgba(247,243,235,.4);background:#16140fd1;color:#f7f3eb;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;line-height:1;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:2}.carousel-image img.loaded{opacity:1}.contact{display:block;padding:27px 0}.services,.about{padding:32px 0}.contact h2{font-size:28px}.contact-copy{margin:23px 0}.contact-detail a{font-size:17px}footer{display:grid;grid-template-columns:1fr auto;gap:18px;padding:24px 0}.footer-mark{width:30px;height:30px;align-self:start}.footer-identity small{display:block;margin:9px 0 15px}footer nav{grid-column:1 / -1;justify-content:flex-start;gap:22px}.modal h2{font-size:38px}.image-nav{top:50%}}.intro-art,.gallery-image,.extra-art button,.carousel-image{position:relative;background:var(--media-matte)}.intro-art:before,.gallery-image:before,.extra-art button:before,.carousel-image:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background:var(--media-matte);animation:skeleton-pulse .8s ease-in-out infinite alternate}.intro-art.loaded:before,.gallery-image:has(img.loaded):before,.extra-art button:has(img.loaded):before,.carousel-image:has(img.loaded):before{display:none}.intro-art img,.gallery-image img,.extra-art img,.carousel-image img{position:relative;z-index:1;opacity:1}@keyframes skeleton-pulse{0%{opacity:.45}to{opacity:1}}@media (prefers-reduced-motion: reduce){.intro-art:before,.gallery-image:before,.extra-art button:before{animation:none}}
