@font-face{font-family:"Source Sans 3";src:url(/fonts/SourceSans3VF-Upright.woff2) format("woff2");font-style:normal;font-weight:200 900;font-display:swap}@font-face{font-family:"Source Sans 3";src:url(/fonts/SourceSans3VF-Italic.woff2) format("woff2");font-style:italic;font-weight:200 900;font-display:swap}:root{color-scheme:light;--bg: #f6f5f3;--surface: #eeedeb;--ink: #24272c;--ink-2: #5c626b;--rule: #d5d6d6;--rule-strong: #7e858e;--accent: #345dc8;--accent-hover: #284aa6;--focus: var(--accent);--font: "Source Sans 3", "Segoe UI", sans-serif;--frame-max: 1360px;--collection: 1200px;--record: 1040px;--measure: 66ch;--gutter: 40px;--opening: 112px;--masthead: 96px;--s-1: 8px;--s-2: 16px;--s-3: 24px;--s-4: 40px;--s-5: 64px;--s-6: 96px}*{box-sizing:border-box}html{scrollbar-gutter:stable}body{margin:0;font:18px/1.6 var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.2em;transition:color .12s ease-out}a:hover{color:var(--accent-hover);text-decoration-thickness:2px}button,input,select,textarea{font:inherit}button{color:var(--ink);background:transparent;border:1px solid var(--rule-strong);border-radius:2px;padding:7px 14px;min-height:44px;cursor:pointer}button:hover{border-color:var(--accent);color:var(--accent)}button:disabled{cursor:default;color:var(--ink-2)}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}main:focus{outline:none}[id]{scroll-margin-top:calc(var(--masthead) + 24px)}.skip-link{position:absolute;left:-999px;top:8px}.skip-link:focus{left:8px;background:var(--bg);padding:8px 16px;z-index:300}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.site-header,.page{width:min(var(--frame-max),calc(100% - 2 * var(--gutter)));margin-inline:auto}.page{padding-block:48px 96px;min-height:calc(100svh - var(--masthead))}.opening{padding-left:var(--opening)}.collection-width{max-width:var(--collection)}.record-width{max-width:var(--record)}.page-chrome{position:sticky;top:0;z-index:50;height:var(--masthead);background:var(--bg)}.site-header{height:100%;position:relative;display:grid;grid-template-columns:var(--opening) 1fr auto;grid-template-rows:44px 44px;align-content:center;border-bottom:1px solid var(--rule);font-size:16px}.brand{grid-column:2;grid-row:1;display:flex;align-items:center;width:fit-content;min-height:44px;font-weight:600;color:var(--ink);text-decoration:none;letter-spacing:.01em}.resume-link{grid-column:3;grid-row:1;align-self:center;padding-block:9px;color:var(--ink-2);font-size:16px}.site-header nav{grid-column:2 / -1;grid-row:2}.nav-list{list-style:none;margin:0;padding:0;display:flex;gap:28px;max-width:none}.nav-list a{display:flex;align-items:center;min-height:44px;width:fit-content;color:var(--ink-2);text-decoration:none;border-bottom:2px solid transparent}.nav-list a:hover{color:var(--accent)}.nav-list a[aria-current=page]{color:var(--ink);border-color:var(--accent)}.menu-toggle{display:none}.page-chrome.is-snapshot{position:relative;top:auto;animation:none}h1,h2,h3,h4{font-weight:600;line-height:1.15;margin:0;text-wrap:balance}.page h1{font-size:40px;letter-spacing:-.025em;font-weight:550;margin-bottom:16px}.page h2{font-size:26px;letter-spacing:-.015em;margin:48px 0 20px}.page h3{font-size:22px;margin:24px 0 12px}.page p{max-width:var(--measure);margin:0 0 16px}.page ul,.page ol{max-width:var(--measure)}.page .project-list,.page .card-grid,.page .collection{max-width:none}.page .collection-width{max-width:var(--collection)}.secondary,.caption,.metadata{color:var(--ink-2)}.page .caption{font-size:16px;line-height:1.5;margin-top:8px}.page .metadata,.page small{font-size:14px;line-height:1.5;color:var(--ink-2)}.page .eyebrow,.page .section-label{font-size:14px;font-weight:600;letter-spacing:.025em;line-height:1.5;margin:0 0 12px;color:var(--ink-2)}.page-opening{margin-bottom:40px}.page-opening>p{margin-bottom:8px}.actions{display:flex;flex-wrap:wrap;gap:8px 28px;align-items:center}.actions a,.text-action{display:inline-flex;align-items:center;gap:12px;min-height:44px}.media{display:block;width:100%;max-width:100%;aspect-ratio:16 / 9;object-fit:contain;background:var(--surface);border:0}.media-placeholder{display:flex;align-items:flex-end;padding:20px;color:var(--ink-2);font-size:16px;line-height:1.4;border-bottom:1px solid var(--rule)}.hero-media{margin-block:24px 40px}.project-list{list-style:none;padding:0;margin:0;display:grid;gap:40px;grid-template-columns:repeat(2,minmax(0,1fr))}.project-entry{border-top:1px solid var(--rule-strong);padding-top:20px;min-width:0}.project-entry h2,.project-entry h3{font-size:28px;margin:0 0 12px}.project-entry h2 a,.project-entry h3 a{color:var(--ink);text-decoration:none}.project-entry h2 a:hover,.project-entry h3 a:hover{color:var(--accent);text-decoration:underline}.project-entry .project-role{font-weight:600;margin:20px 0 4px}.project-entry .project-contribution{font-size:18px;line-height:1.5;margin-bottom:12px}.project-entry .project-summary{color:var(--ink-2);margin-bottom:12px}.project-identification{margin-top:20px}.project-identification .media{aspect-ratio:16 / 8}.project-entry.is-prominent{display:grid;grid-template-columns:1fr 1fr;gap:32px}.project-entry.is-prominent .project-identification{margin-top:0}.project-entry.is-prominent .media{aspect-ratio:4 / 3}.portfolio-list{grid-template-columns:repeat(6,minmax(0,1fr));gap:48px}.portfolio-list>.project-entry{grid-column:span 3}.portfolio-list>.is-prominent{grid-column:span 4}.portfolio-list>.is-text-led{grid-column:span 2}.portfolio-list .is-text-led{align-self:start}.home-opening{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(340px,1fr);gap:64px}.home-intro h1{font-size:48px}.home-intro .professional-orientation{font-size:24px;line-height:1.35;margin-bottom:32px}.content-note{border-left:2px solid var(--rule);padding-left:16px;margin-block:24px}.content-note p:last-child{margin-bottom:0}.home-work .project-list{display:block}.home-work .project-identification .media{aspect-ratio:16 / 6}.home-continuation{display:grid;grid-template-columns:1fr 1fr;gap:64px;margin-top:80px;padding-top:32px;border-top:1px solid var(--rule)}.home-continuation h2{margin-top:0}.home-continuation .project-list{display:block}.home-continuation .project-entry{border-top:0;padding-top:0}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));list-style:none;padding:0;margin:0;gap:32px}.card{min-width:0}.card h3{margin-top:16px}.card h3 a{color:var(--ink)}.console-nav{border-block:1px solid var(--rule);padding-block:8px;margin-bottom:32px}.game-frame{width:100%;aspect-ratio:16 / 9;border:1px solid var(--rule);background:var(--surface);display:grid;place-items:center}.collection{list-style:none;padding:0;margin:0;display:grid;gap:32px}@media(max-width:1439px){:root{--gutter: 32px}.home-opening{gap:48px}.portfolio-list{gap:32px}.project-entry.is-prominent{gap:24px}}@media(max-width:1100px){.project-entry.is-prominent{display:block}.project-entry.is-prominent .project-identification{margin-top:20px}.project-entry.is-prominent .media{aspect-ratio:16 / 6}}@media(max-width:1023px){:root{--gutter: 28px;--masthead: 80px;--opening: 0px}.site-header{grid-template-columns:80px 1fr auto auto;grid-template-rows:1fr;gap:20px}.brand{grid-column:2}.resume-link{grid-column:3}.menu-toggle{display:block;min-width:44px;grid-column:4;grid-row:1;align-self:center;border:0;padding-inline:0;font-size:16px}.site-header nav{display:none;grid-column:1 / -1;grid-row:auto;position:absolute;top:100%;left:calc(-1 * var(--gutter));right:calc(-1 * var(--gutter));padding:16px var(--gutter) 24px;background:var(--bg);border-bottom:1px solid var(--rule-strong)}.site-header nav.is-open{display:block}.site-header nav{max-height:calc(100svh - var(--masthead));overflow-y:auto}.site-header .nav-list{display:grid;grid-template-columns:1fr 1fr;gap:4px 24px}.site-header .nav-list a{width:100%}.page{padding-top:32px}.home-opening{grid-template-columns:1fr 1fr;gap:32px}.home-intro h1{font-size:40px}.portfolio-list{grid-template-columns:1fr 1fr}.portfolio-list>.project-entry{grid-column:span 1}}@media(max-width:700px){:root{--gutter: 20px;--s-5: 48px;--s-6: 64px}body{font-size:18px}.site-header{grid-template-columns:64px 1fr auto auto;gap:12px}.resume-link,.menu-toggle{font-size:14px}.page{padding-bottom:64px}.page h1,.home-intro h1{font-size:36px}.home-opening,.home-continuation,.project-list,.portfolio-list{grid-template-columns:1fr}.home-intro .professional-orientation{font-size:22px;margin-bottom:24px}.home-opening{gap:32px}.home-work .project-identification .media{aspect-ratio:16 / 7}.home-continuation{margin-top:48px;gap:24px}.project-entry.is-prominent .media{aspect-ratio:16 / 8}.page-opening{margin-bottom:32px}.page h2{font-size:24px}.project-entry h2,.project-entry h3{font-size:26px}}@media(max-width:359px){:root{--gutter: 16px}.site-header{grid-template-columns:56px 1fr auto auto;gap:8px}.brand{font-size:15px}.site-header .nav-list{grid-template-columns:1fr}}.site.is-turning{visibility:hidden}.page-chrome.is-hidden{opacity:0}.page-chrome.is-revealing{animation:chrome-reveal .2s ease-out both}@keyframes chrome-reveal{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.cube-overlay{position:fixed;inset:0;z-index:100;overflow:hidden;perspective:1600px;perspective-origin:50% 50%;background:var(--bg)}.cube-overlay-group{position:absolute;inset:0;transform-style:preserve-3d;transform-origin:50% 50%}.cube-panel{position:absolute;inset:0;overflow:hidden;backface-visibility:hidden;background:var(--bg);color:var(--ink);transform-origin:50% 50%}.cube-panel-inner{width:100%}:root{--mini-cube-size: 90px;--mini-cube-cam-x: -11.5deg;--mini-cube-cam-y: -14.5deg;--mini-cube-sat: 40%;--mini-cube-lo: 58%;--mini-cube-hi: 80%;--mini-cube-alpha: .4;--mini-cube-edge: rgb(255 255 255 / .5);--cube-scale: .666667}.mini-cube{position:fixed;z-index:200;pointer-events:none;top:calc(var(--masthead) / 2 - 45px);left:max(var(--gutter),calc((100% - var(--frame-max)) / 2));width:var(--mini-cube-size);height:var(--mini-cube-size)}.mini-cube.is-reading{--cube-scale: .466667}.mini-cube-presentation{width:100%;height:100%;transform-style:preserve-3d;transform:scale3d(var(--cube-scale),var(--cube-scale),var(--cube-scale));transition:transform .22s ease-out}@media(max-width:1023px){:root{--cube-scale: .466667}.mini-cube{left:calc(var(--gutter) - 13px)}.mini-cube.is-reading{--cube-scale: .355556}}@media(max-width:359px){.mini-cube{left:calc(var(--gutter) - 17px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.mini-cube-scene{width:100%;height:100%;transform-style:preserve-3d;perspective:calc(var(--mini-cube-size) * 24);transform:rotateX(var(--mini-cube-cam-x)) rotateY(var(--mini-cube-cam-y))}.mini-cube-body{position:relative;width:100%;height:100%;transform-style:preserve-3d}.mini-cube-face{position:absolute;inset:0;--shade: .5;--l: calc(var(--mini-cube-lo) + (var(--mini-cube-hi) - var(--mini-cube-lo)) * var(--shade));background:hsl(var(--h) var(--mini-cube-sat) var(--l) / var(--mini-cube-alpha));box-shadow:inset 0 0 0 1px var(--mini-cube-edge);transition:background-color .6s cubic-bezier(.45,0,.2,1)}.mini-cube-face.is-front{--h: 190;transform:translateZ(calc(var(--mini-cube-size) / 2))}.mini-cube-face.is-right{--h: 248;transform:rotateY(90deg) translateZ(calc(var(--mini-cube-size) / 2))}.mini-cube-face.is-back{--h: 232;transform:rotateY(180deg) translateZ(calc(var(--mini-cube-size) / 2))}.mini-cube-face.is-left{--h: 176;transform:rotateY(-90deg) translateZ(calc(var(--mini-cube-size) / 2))}.mini-cube-face.is-top{--h: 214;transform:rotateX(90deg) translateZ(calc(var(--mini-cube-size) / 2))}.mini-cube-face.is-bottom{--h: 204;transform:rotateX(-90deg) translateZ(calc(var(--mini-cube-size) / 2))}@media(prefers-reduced-motion:reduce){.page-chrome.is-revealing{animation-name:chrome-reveal-fade}@keyframes chrome-reveal-fade{0%{opacity:0}to{opacity:1}}}.about-body .prose{max-width:var(--measure)}.about-body .prose p:not(.eyebrow){font-size:20px;line-height:1.65}.about-body .content-note{margin-block:32px}.about-portrait{margin:32px 0;max-width:400px}.practical-info{border-top:1px solid var(--rule);margin-top:40px;padding-top:24px;max-width:var(--measure)}.practical-info h2{margin-top:0}.assessment{display:grid;gap:40px;border-top:1px solid var(--rule-strong);padding-top:24px}.assessment.has-evidence{grid-template-columns:minmax(0,1.45fr) minmax(280px,1fr)}.assessment-facts{display:grid;grid-template-columns:1fr 1.2fr;gap:24px;margin:0 0 20px}.assessment-facts dt{font-size:14px;color:var(--ink-2);margin-bottom:8px;font-weight:600}.assessment-facts dd{margin:0;font-size:18px;line-height:1.5}.assessment-facts .contribution{grid-column:1 / -1}.assessment-facts .contribution dd{font-size:22px;line-height:1.4}.record-summary{font-size:20px;line-height:1.5}.record-narrative{margin-top:48px}.record-pending{border-top:1px solid var(--rule);padding-top:24px}.record-pending h2{margin-top:0}.record-return,.record-next{margin-top:40px!important}.narrative-section{margin-block:56px}.narrative-section>p{max-width:var(--measure)}.narrative-section figure{margin:24px 0}.evidence-group{margin-block:24px 32px}.opening-evidence .evidence-group{margin-top:0}.evidence-items{display:grid;gap:24px;list-style:none;padding:0;margin:0;max-width:none!important}.evidence-items li{min-width:0}.evidence-items figure{margin:0}.evidence-items .media{max-height:560px}.evidence-items figcaption,figure>figcaption{font-size:16px;line-height:1.5;margin-top:12px}.evidence-items figcaption p{margin:8px 0 0}.evidence-stage{font-weight:600}.is-comparison .evidence-items,.is-implementation .evidence-items,.is-gallery .evidence-items{grid-template-columns:repeat(2,minmax(0,1fr))}.is-sequence .evidence-items{grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))}.is-annotated .evidence-items figure{display:grid;grid-template-columns:2fr 1fr;gap:24px;align-items:center}.is-annotated .evidence-stage{grid-column:1 / -1}.is-diagram .media{object-fit:contain}.group-interpretation{margin-top:16px!important}.media-original{display:block}.motion-media button{margin-top:8px}details{margin-top:12px}summary{cursor:pointer;min-height:44px;padding-block:8px;color:var(--accent)}@media(max-width:700px){.assessment.has-evidence,.assessment-facts{grid-template-columns:1fr;gap:20px}.is-comparison .evidence-items,.is-implementation .evidence-items,.is-gallery .evidence-items,.is-annotated .evidence-items figure{grid-template-columns:1fr}.record-narrative{margin-top:32px}}.inspiration-list{padding:0;margin:0;list-style:none;max-width:var(--collection)!important}.inspiration-entry{display:grid;grid-template-columns:140px minmax(200px,1fr) minmax(280px,1.6fr);gap:32px;padding-block:28px;border-top:1px solid var(--rule)}.inspiration-entry:first-child{border-color:var(--rule-strong)}.inspiration-entry h2{margin:0;font-size:24px}.inspiration-entry .eyebrow{padding-top:4px}.inspiration-entry p:last-child{margin-bottom:0}.inspiration-commentary .media{margin-top:20px}.quiet-empty{max-width:var(--measure);border-top:1px solid var(--rule);padding-top:28px}.quiet-empty h2{margin-top:0}@media(max-width:1023px){.inspiration-entry{grid-template-columns:112px 1fr;gap:12px 24px}.inspiration-commentary{grid-column:2}}@media(max-width:700px){.inspiration-entry{grid-template-columns:1fr;gap:8px;padding-block:24px}.inspiration-commentary{grid-column:1}.inspiration-entry .eyebrow{margin-bottom:0}}.playground-page .page-opening{margin-bottom:28px}.console{border:1px solid var(--rule);background:var(--surface)}.console-nav{margin:0;padding:8px 28px;border-top:0;border-bottom-color:var(--rule-strong)}.console-nav .nav-list{max-width:none}.console-body{padding:28px}.console-body>h2,.console-body>article>h2,.console-home-grid h2{margin-top:0}.console-home-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,1fr);gap:48px}.console-home-grid h2{font-size:22px}.console-side section+section{margin-top:28px;padding-top:24px;border-top:1px solid var(--rule)}.console-side p{color:var(--ink-2)}.game-tile{padding-top:20px;border-top:1px solid var(--rule-strong)}.game-tile h3{margin:0 0 12px;font-size:24px}.game-tile .media{aspect-ratio:16 / 7;background:var(--bg);margin-top:16px}.game-tile .build-status{font-size:16px;color:var(--ink-2)}.console-empty{max-width:var(--measure);border-top:1px solid var(--rule);padding-block:24px}.console-empty h3{margin-top:0}.tour-list{list-style:none;padding:0;max-width:none!important;margin-bottom:0}.tour-list>li{display:grid;grid-template-columns:1fr 1.5fr;gap:32px;border-top:1px solid var(--rule);padding-block:24px}.tour-list h3{margin:0 0 12px}.tour-detail ol,.tour-detail ul{padding-left:24px}.tour-detail li{padding:12px 0 12px 8px;border-top:1px solid var(--rule)}.tour-detail li p{margin-top:8px}.game-unavailable{margin-block:24px;padding:48px 24px;border-block:1px solid var(--rule);background:var(--bg)}.game-unavailable p{margin:0}.game-detail>p:has(a){margin-top:24px}@media(max-width:1023px){.console-home-grid{gap:32px}}@media(max-width:700px){.console-body{padding:20px}.console-nav{padding:8px 20px}.console-nav .nav-list{display:grid;grid-template-columns:1fr 1fr;gap:4px 24px}.console-home-grid,.tour-list>li{grid-template-columns:1fr;gap:24px}.console-body .card-grid{grid-template-columns:1fr}.game-unavailable{padding:32px 16px}}@media(max-width:359px){.console-body{padding:16px}.console-nav{padding-inline:16px}.console-nav .nav-list{gap:4px 20px}}
