/* Warm paper, ink, and one bright blue. Shared by the portfolio and project notes. */
:root{--paper:#f6f3eb;--ink:#22231f;--muted:#686961;--blue:#294ce3;--rule:#cecec3;--display:'Bricolage Grotesque',sans-serif;--body:'DM Sans',sans-serif;--mono:'DM Mono',monospace}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:30px}
body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.6 var(--body);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none;text-underline-offset:5px}
a:hover{text-decoration:underline}
button{font:inherit;cursor:pointer}
button,a{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:3px solid var(--blue);outline-offset:6px}
::selection{background:#dce3ff;color:#1733a3}
img{display:block;width:100%;max-width:100%;height:auto}
h1,h2,h3,p,figure{margin:0}
h1,h2,h3{font-family:var(--display);font-weight:600;line-height:1.04;letter-spacing:-.055em}
em{font-family:Georgia,serif;font-weight:400;letter-spacing:-.06em}
p+p{margin-top:18px}
[hidden]{display:none!important}
.shell{width:min(1320px,100%);margin:auto;padding:0 64px}
.skip-link{position:fixed;left:20px;top:-100px;z-index:10;padding:12px 20px;background:var(--blue);color:white}
.skip-link:focus{top:15px}
.site-header{height:112px;display:flex;align-items:center;border-bottom:1px solid var(--rule);gap:42px}
.brand{font:800 38px/.8 var(--display);letter-spacing:-.09em;white-space:nowrap}
.brand:hover{text-decoration:none}
.brand .accent{display:inline-block;position:relative;top:4px;font-size:43px;margin-left:3px}
.accent{color:var(--blue)}
.site-header nav{display:flex;gap:34px;margin-left:auto;font-size:15px}
.site-header nav a{padding:12px 0}
.header-location{font:12px var(--mono);margin-left:45px;color:var(--muted)}
.hero{padding:62px 0 80px}
.name-line{display:flex;align-items:center;justify-content:space-between;gap:20px}
.hero h1{font-size:clamp(84px,12.9vw,176px);font-weight:600;letter-spacing:-.06em;word-spacing:.08em;line-height:.95;white-space:nowrap}
.name-dot{color:var(--blue)}
.hero-spark{width:clamp(65px,9vw,116px);height:auto;flex-shrink:0;stroke:var(--blue);stroke-width:10;transform:rotate(10deg)}
.hero-intro-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:90px;margin-top:48px;align-items:start}
.hero-intro{font:500 clamp(25px,3vw,39px)/1.23 var(--display);letter-spacing:-.035em;max-width:650px}
.hero-intro em{color:var(--blue)}
.hero-note{padding-left:40px;font-size:15px;line-height:1.5}
.hero-note p+p{font-size:13px;margin-top:13px}
.muted{color:var(--muted)}
.text-link{display:inline-flex;align-items:center;gap:18px;min-height:44px;border-bottom:1px solid currentColor;font-size:14px;font-weight:500}
.hero-note .text-link{margin-top:18px;color:var(--blue)}
.work-rule{display:flex;justify-content:space-between;border-top:1px solid var(--ink);padding:14px 0 30px;font:12px var(--mono);color:var(--muted)}
.game-grid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,1fr);gap:46px}
.barrowlight-project{margin-top:95px}
.project-image{display:block;position:relative;overflow:hidden;background:#d9d9ce;isolation:isolate}
.project-image img{transition:transform .4s ease}
.project-image:hover img{transform:scale(1.025)}
.project-image:focus-visible{outline-offset:5px}
.game-project .project-image{aspect-ratio:1.42}
.game-project .project-image img{height:100%;object-fit:cover}
.runline-image img{object-position:50% 48%}
.barrowlight-image{background:#141821}
.barrowlight-media{position:relative}
.preview-toggle{position:absolute;left:16px;bottom:16px;min-height:44px;padding:10px 13px;border:0;border-radius:2px;background:var(--paper);color:var(--ink);font:11px var(--mono)}
.preview-toggle:hover{background:var(--blue);color:white}
.barrowlight-image img{object-position:53% 50%;object-fit:contain!important;padding:22px 0}
.image-badge{position:absolute;left:18px;top:18px;background:var(--paper);padding:7px 11px;font:11px var(--mono);border-radius:2px}
.image-open{display:grid;place-items:center;position:absolute;right:16px;bottom:16px;width:43px;height:43px;background:var(--paper);color:var(--blue);border-radius:50%;font-size:25px;transition:background .2s,color .2s}
.project-image:hover .image-open{background:var(--blue);color:white}
.project-heading{display:flex;justify-content:space-between;align-items:center;margin-top:27px;gap:10px}
.project-heading h2{font-size:clamp(35px,4.4vw,58px)}
.project-number{font:12px var(--mono);color:var(--muted)}
.project-tagline{font:500 23px/1.3 var(--display);letter-spacing:-.03em;margin-top:13px}
.project-description{font-size:16px;color:var(--muted);margin-top:14px;max-width:510px}
.project-meta{font:11px/1.7 var(--mono);color:var(--muted);margin-top:24px}
.project-links{display:flex;gap:26px;flex-wrap:wrap;margin-top:16px}
.project-links a{padding:8px 0;color:var(--blue);border-bottom:1px solid var(--blue);font-size:14px;font-weight:600}
.project-links a span{margin-left:6px}
.credit{font-size:12px;color:var(--muted);margin-top:20px;max-width:425px;line-height:1.6}
.credit a{text-decoration:underline}
.rpg-project{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);margin:75px 0 0;padding:32px 0;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:40px;align-items:center}
.rpg-image img{width:100%;height:auto}
.small-symbol{font:44px var(--display);color:var(--blue);align-self:start}
.rpg-project h2{font-size:29px;letter-spacing:-.035em}
.rpg-project p{font-size:15px;color:var(--muted);max-width:570px;margin-top:10px}
.rpg-links{display:flex;flex-wrap:wrap;align-items:start;gap:22px;margin-top:20px}
.rpg-project p.project-meta{font:11px/1.7 var(--mono);margin-top:18px}
.rpg-links a{font-size:13px;color:var(--blue)}
.team-project .eyebrow{font:11px/1.7 var(--mono);margin:0 0 15px;color:var(--blue)}
.team-project+.rpg-project{margin-top:30px;border-top:0;padding-top:0}
.baby-process{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.process-sketch{margin-top:30px}
.process-sketch figcaption{font-size:12px;line-height:1.5;color:var(--muted);margin-top:12px}
.team-title{font-size:clamp(36px,4vw,55px)}
.team-credits{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:24px 35px;margin:36px 0 0}
.team-credits>div{border-top:1px solid var(--rule);padding-top:15px}
.team-credits dt{font:500 22px var(--display);letter-spacing:-.02em}
.team-credits dd{margin:5px 0 0;font-size:14px;color:var(--muted)}
.sky-section{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.35fr);gap:50px;background:#161c29;color:#f3f1e8;padding:55px 46px 42px;margin:100px -24px 0}
.eyebrow{font:11px/1.7 var(--mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:23px}
.sky-copy .eyebrow{color:#b1bddd}
.sky-copy h2{font-size:clamp(39px,4.4vw,60px);line-height:1.03;margin-bottom:25px}
.sky-copy h2 em{color:#bac8ff}
.sky-copy>p:not(.eyebrow){font-size:15px;color:#c1c6d2;max-width:290px}
.sky-copy .text-link{color:#d0d9ff;margin-top:19px}
.sky-experiment{min-width:0;align-self:center}
.sky-viewport{position:relative;aspect-ratio:1.38;background:#070a10;border:1px solid #394253;overflow:hidden;border-radius:50% 50% 0 0}
.sky-viewport canvas,.sky-viewport img{display:block;position:absolute;width:100%;height:100%;object-fit:cover}
.sky-crosshair{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#b4b9c5;font:20px var(--mono);opacity:.6;pointer-events:none}
.sky-controls{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-top:20px}
.sky-controls>span{font:10px/1.6 var(--mono);color:#bac3d8}
.sky-controls button{background:#d6dfff;color:#172643;border:0;border-radius:2px;padding:12px 15px;font-size:12px;min-height:44px;white-space:nowrap}
.sky-controls button span{margin-left:10px;font-size:17px}
.sky-controls button:hover{background:white}
.sky-controls button:focus-visible{outline-color:#d6dfff}
.sky-caption{font-size:11px;color:#a7b0c4;margin-top:13px}
.experiment-intro{display:flex;justify-content:space-between;align-items:end;gap:30px;margin:105px 0 45px}
.experiment-intro h2{font-size:clamp(37px,4.6vw,62px)}
.experiment-intro h2 em{color:var(--blue)}
.experiment-intro p{font-size:15px;color:var(--muted);padding-right:50px}
.experiment-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:46px}
.experiment-project .project-image{aspect-ratio:1.65}
.experiment-project img{height:100%;object-fit:contain}
.neural-image{background:#726ed0}
.tiff-image{background:#ded8ca;padding:28px}
.tiff-project{margin-top:85px}
.experiment-project h3{font-size:35px;line-height:1.1;margin-top:13px;letter-spacing:-.04em}
.experiment-project>p:not(.project-meta){font-size:15px;color:var(--muted);margin-top:15px;max-width:450px}
.experiment-project>.text-link{color:var(--blue);margin-top:13px}
.archive{margin-top:65px;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.archive summary{display:flex;align-items:center;justify-content:space-between;padding:22px 0;cursor:pointer;font:500 21px var(--display);letter-spacing:-.02em;list-style:none}
.archive summary::-webkit-details-marker{display:none}
.archive summary span{font-size:30px;color:var(--blue);transition:transform .2s}
.archive[open] summary span{transform:rotate(45deg)}
.archive-links{padding:0 0 24px;display:grid;grid-template-columns:1fr 1fr;gap:0 44px}
.archive-links a{border-top:1px solid var(--rule);padding:17px 0;display:flex;flex-direction:column;gap:3px;font-size:15px}
.archive-links small{font:10px var(--mono);color:var(--muted)}
.about{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:80px;margin:120px 0 100px;align-items:start}
.about-asterisk{font-size:100px;color:var(--blue);line-height:1;display:block;margin-bottom:30px}
.about h2{font-size:clamp(36px,3.7vw,48px);line-height:1.08}
.about h2 em{white-space:nowrap}
.about-copy{padding-top:15px;color:var(--muted);font-size:16px}
.about-copy .about-lead{font:500 28px/1.25 var(--display);letter-spacing:-.04em;color:var(--ink);margin-bottom:24px}
.contact{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);padding:40px 0 44px;display:flex;align-items:end;justify-content:space-between;gap:30px}
.contact p{font-size:14px;color:var(--muted);margin-bottom:20px}
.contact h2{font-size:clamp(65px,8.5vw,115px);color:var(--blue);letter-spacing:-.065em}
.contact h2 a{display:flex;gap:26px}
.contact h2 span{font-family:var(--body);font-size:.7em;align-self:center}
.contact-email{font-size:18px;margin-bottom:9px;border-bottom:1px solid var(--ink)}
footer{padding:32px 0 40px;display:flex;align-items:center;justify-content:space-between;gap:20px;font:11px/1.6 var(--mono);color:var(--muted)}
footer div{display:flex;gap:26px}
/* Project notes */
.section-pad{padding:72px 0}
.case-hero{padding-top:65px}
.case-hero h1{font-size:clamp(62px,10vw,132px);line-height:1;margin-bottom:25px}
.case-hero-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,.8fr);gap:65px}
.case-lead{font:500 clamp(24px,2.7vw,35px)/1.25 var(--display);letter-spacing:-.035em;max-width:720px}
.hero-actions,.case-bottom-links{display:flex;flex-wrap:wrap;gap:20px;align-items:center;margin-top:32px}
.button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:14px 19px;background:var(--blue);color:white;font:500 12px var(--mono);border:1px solid var(--blue)}
.button:hover{background:#1837b8;text-decoration:none}
.plain-link,.case-text-link{display:inline-flex;align-items:center;min-height:44px;border-bottom:1px solid var(--blue);color:var(--blue);font:12px/1.5 var(--mono)}
.case-text-link{margin-top:20px}
.case-facts{margin:12px 0 0;align-self:end}
.case-facts div{border-top:1px solid var(--rule);padding:16px 0}
.case-facts dt{font:10px var(--mono);color:var(--muted);margin-bottom:8px}
.case-facts dd{font-size:15px;margin:0;line-height:1.4}
.case-banner{margin:0}
.case-banner img{height:auto;max-height:730px;object-fit:contain;background:#171c25}
.case-banner figcaption{display:flex;justify-content:space-between;gap:20px;font-size:13px;color:var(--muted);padding:15px 0;border-bottom:1px solid var(--rule)}
.case-banner figcaption span{font:10px/1.7 var(--mono);flex-shrink:0}
.case-story{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:70px}
.case-story h2{font-size:clamp(38px,4.4vw,60px)}
.case-story h2 em{color:var(--blue)}
.case-story p{color:var(--muted);font-size:16px}
.case-story .case-large{font:500 28px/1.3 var(--display);color:var(--ink);letter-spacing:-.035em;margin-bottom:22px}
.case-system{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.case-system h2{font-size:clamp(34px,4vw,55px);max-width:760px}
.case-system-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:35px;margin-top:50px}
.case-system-grid article{border-top:2px solid var(--blue);padding-top:20px}
.case-system-grid span{font:11px var(--mono);color:var(--blue)}
.case-system-grid h3{font-size:29px;line-height:1.12;margin:25px 0 15px}
.case-system-grid p{color:var(--muted);font-size:15px}
.case-banner-second{padding-top:70px}
.case-contribution{padding-bottom:90px}
.case-page footer{border-top:1px solid var(--rule)}
.parity-flow{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:35px;padding:28px;background:#e9edff;color:#203cba;font:13px/1.7 var(--mono)}
.parity-flow strong{font-weight:500}
.case-credit{border-top:1px solid var(--rule);padding:25px 0 50px;font-size:13px;color:var(--muted)}
.case-credit a{text-decoration:underline}
@media(min-width:1450px){.hero h1{font-size:176px}}
@media(max-width:1050px){
 .shell{padding:0 40px}.header-location{display:none}.hero h1{font-size:13vw}.hero-intro-grid{gap:40px}.hero-note{padding-left:10px}.game-grid,.experiment-grid{gap:30px}.sky-section{padding:40px 30px;gap:30px;margin-left:0;margin-right:0}.rpg-project{gap:28px}.about{gap:40px}.case-hero-grid{gap:35px}.case-system-grid{gap:22px}.case-story{gap:40px}.brand-name{display:none}
}
@media(max-width:720px){
 .shell{padding:0 24px}.site-header{height:86px;gap:20px}.site-header nav{gap:25px;font-size:14px}.hero{padding:40px 0 48px}.hero h1{font-size:13.4vw;letter-spacing:-.075em}.hero-spark{width:9vw;stroke-width:11}.name-line{gap:12px}.hero-intro-grid{grid-template-columns:1fr;gap:25px;margin-top:32px}.hero-intro{font-size:29px;max-width:460px}.hero-note{padding-left:0;display:grid;grid-template-columns:1fr 1fr;column-gap:20px;font-size:13px}.hero-note p+p{margin-top:0;font-size:12px}.hero-note .text-link{grid-column:1/-1;margin-top:10px;justify-self:start;font-size:13px}.work-rule{padding-bottom:24px}.game-grid{grid-template-columns:minmax(0,1fr);gap:55px}.barrowlight-project{margin-top:0}.game-project .project-image{aspect-ratio:1.55}.project-heading{margin-top:22px}.project-heading h2{font-size:44px}.project-description{max-width:none}.project-tagline{font-size:22px}.project-meta{margin-top:18px}.credit{max-width:none}.rpg-project{grid-template-columns:minmax(0,1fr);gap:24px;margin-top:45px;padding:26px 0}.rpg-project h2{font-size:25px}.rpg-links{gap:20px}.sky-section{grid-template-columns:1fr;gap:35px;margin-top:60px;padding:32px 25px}.sky-copy h2{font-size:45px}.sky-copy>p:not(.eyebrow){max-width:none}.sky-viewport{aspect-ratio:1.25}.sky-controls{flex-wrap:wrap;gap:8px}.sky-controls button{padding:11px;font-size:12px}.sky-controls>span{font-size:9px}.sky-caption{font-size:10px}.experiment-intro{margin:65px 0 32px;display:block}.experiment-intro h2{font-size:42px}.experiment-intro p{padding:0;margin-top:24px}.experiment-intro p br{display:none}.experiment-grid{grid-template-columns:minmax(0,1fr);gap:45px}.tiff-project{margin:0}.experiment-project h3{font-size:31px}.archive{margin-top:40px}.archive-links{grid-template-columns:minmax(0,1fr);padding-bottom:8px}.archive summary{font-size:19px}.about{grid-template-columns:minmax(0,1fr);gap:32px;margin:65px 0}.about-asterisk{font-size:65px;margin-bottom:20px}.about h2{font-size:37px}.about-copy{padding:0}.about-copy .about-lead{font-size:27px}.contact{display:block;padding:32px 0}.contact h2{font-size:70px}.contact h2 a{gap:20px}.contact-email{display:inline-block;margin:25px 0 0;font-size:16px}footer{align-items:start;flex-direction:column;font-size:10px;padding:25px 0}footer div{gap:25px}.section-pad{padding:45px 0}.case-hero h1{font-size:clamp(47px,12vw,85px);overflow-wrap:anywhere}.case-hero-grid{grid-template-columns:1fr;gap:30px}.case-lead{font-size:26px}.case-facts{margin:0}.case-facts div:last-child{padding-bottom:0}.case-banner figcaption{display:block;font-size:12px}.case-banner figcaption span{display:block;margin-bottom:7px}.case-story{grid-template-columns:minmax(0,1fr);gap:25px}.case-story h2{font-size:43px}.case-story .case-large{font-size:26px}.case-system h2{font-size:37px}.case-system-grid{grid-template-columns:1fr;gap:30px;margin-top:35px}.case-system-grid h3{margin:17px 0 12px}.case-banner-second{padding-top:45px}.case-credit{padding-bottom:30px}.case-bottom-links{gap:15px}.parity-flow{padding:20px;gap:10px;font-size:11px}.case-page .site-header nav{gap:20px}
}
@media(max-width:370px){.shell{padding:0 18px}.site-header nav{gap:20px;font-size:13px}.hero-intro{font-size:26px}.hero-note{gap:16px}.project-heading h2{font-size:38px}.project-links{gap:20px}.sky-section{padding:28px 20px}.sky-copy h2{font-size:40px}.about h2{font-size:32px}.contact h2{font-size:61px}.experiment-intro h2{font-size:37px}.experiment-project h3{font-size:29px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
/* Barrowlight floor generator */
.case-floors{border-top:1px solid var(--rule)}
.floor-stage{background:#171c25;padding:clamp(12px,3vw,36px)}
.floor-stage img{max-width:1000px;margin:auto;background:none;image-rendering:auto}
.floor-viewer figcaption{align-items:center}
.floor-viewer figcaption p{margin:0;flex:1;color:var(--ink)}
.floor-controls{display:flex;gap:8px;flex-shrink:0}
.floor-controls button{min-height:44px;padding:0 16px;background:var(--paper);color:var(--blue);border:1px solid var(--blue);font:500 12px var(--mono)}
.floor-controls button:hover{background:var(--blue);color:#fff}
.floor-controls button:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.floor-legend{display:flex;flex-wrap:wrap;gap:6px 18px;list-style:none;margin:0;padding:12px 0 0;font:11px/1.6 var(--mono);color:var(--muted)}
.floor-legend i{display:inline-block;width:11px;height:11px;border-radius:2px;margin-right:6px;vertical-align:-1px}
.k-start{background:#7ee081}.k-exit{background:#c84a8a}.k-boss{background:#ff5a5a}.k-vault{background:#ffd34d}.k-event{background:#c9a6ff}.k-enc{border:2px solid #ff6b5a;border-radius:50%!important}.k-prop{background:#b98a52}.k-guard{background:#6fb6ff}.k-ledge{background:#ffb35c}.k-hide{border:2px dashed #8a8a80;border-radius:50%!important}
.floor-rules{margin-top:70px}
.floor-links{margin-top:45px}
.floor-steps{margin-top:70px}
.floor-steps figcaption p b{font:500 11px var(--mono);color:var(--blue);margin-right:8px}
.step-dots{display:flex;gap:6px;list-style:none;margin:0;padding:12px 0 0}
.step-dots li{flex:1}
.step-dots button{display:block;width:100%;height:24px;padding:0;border:0;background:none;cursor:pointer}
.step-dots button::after{content:"";display:block;height:4px;background:var(--rule)}
.step-dots button[aria-current="step"]::after{background:var(--blue)}
.step-dots button:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
@media(max-width:720px){.floor-viewer figcaption p{margin:4px 0 12px}.floor-rules{margin-top:45px}.floor-steps{margin-top:45px}}
