.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}:root{--ink: #111;--paper: #fff;--muted: #555;--accent: #ef6a1f;--line: 3px;--radius: 1rem;--max: 72rem;--font: "nexa-text", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100dvh;display:flex;flex-direction:column;font-family:var(--font);font-weight:500;font-size:1rem;line-height:1.55;color:var(--ink);background:var(--paper)}main{flex:1;outline:none}img,video,iframe{max-width:100%;display:block}img,video{height:auto}a{color:inherit;text-underline-offset:.18em;text-decoration-thickness:.08em}a:hover{text-decoration-thickness:.14em}h1,h2,h3{line-height:1.15;margin:0 0 .5em}h1{font-size:clamp(1.9rem,4vw,3rem);font-weight:800;letter-spacing:-.01em}h2{font-size:clamp(1.3rem,2.4vw,1.75rem);font-weight:800}p{margin:0 0 1em}.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:fixed;top:.75rem;left:.75rem;z-index:1000;padding:.6rem 1rem;background:var(--paper);color:var(--ink);border:var(--line) solid var(--ink);border-radius:.75rem;font-weight:700;transform:translateY(-200%)}.skip-link:focus{transform:none}:focus{outline:none}:focus-visible{outline:3px dashed var(--ink);outline-offset:4px;border-radius:.5rem}.boil{position:relative;display:block}.boil img{width:100%;height:auto}.boil .f1{position:absolute;inset:0;opacity:0}html.boil-1 .boil .f0{opacity:0}html.boil-1 .boil .f1{opacity:1}.site-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;padding:1.5rem clamp(1rem,4vw,3rem) 0;max-width:90rem;width:100%;margin:0 auto}.site-header .brand{justify-self:center;width:min(14rem,30vw)}.site-header .avatar{width:6rem}.site-header .brand-portfolio{justify-self:center;width:min(13rem,28vw)}.site-header .utility{grid-column:1 / -1;display:flex;justify-content:flex-end;gap:1.25rem;font-size:.85rem;order:-1}.site-header .utility a{text-decoration:none;border-bottom:2px solid transparent}.site-header .utility a:hover{border-bottom-color:currentColor}.site-header.compact{padding-top:1rem}.site-header.compact .avatar{width:4rem}.site-header.compact .brand{width:min(10rem,28vw)}.site-header.compact .brand-portfolio{width:min(9rem,26vw)}.site-footer{margin-top:5rem;padding:2.5rem 1rem 3rem;text-align:center;font-size:.9rem;border-top:var(--line) solid var(--ink)}.site-footer ul{list-style:none;padding:0;margin:0 0 1.25rem;display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem 1.5rem}.site-footer a{text-decoration:none}.site-footer a:hover,.footer-contact a{text-decoration:underline}.footer-copy{color:var(--muted);font-size:.8rem;margin:0}.room{max-width:100rem;margin:2rem auto 0;padding:0 1rem}.room-scene{position:relative;aspect-ratio:1440 / 440}.room-floor{position:absolute;left:50%;top:23.6%;width:177.8%;max-width:none;transform:translate(-50%);pointer-events:none;z-index:0}.room-scene{overflow:clip;overflow-clip-margin:1rem}.room-window{position:absolute;left:var(--x);top:var(--y);width:var(--w);z-index:1}.room-objects{list-style:none;margin:0;padding:0}.room-object{position:absolute;left:var(--x);top:var(--y);width:var(--w);z-index:2}.room-link{display:block;text-decoration:none;text-align:center;border-radius:1.5rem}.room-art{display:block;transition:transform .25s ease-out}.room-link:hover .room-art,.room-link:focus-visible .room-art{transform:translateY(-4px) scale(1.03)}.room-label{display:inline-block;margin-top:.5rem;padding:.2rem .75rem;font-size:clamp(.7rem,1vw,.9rem);font-weight:800;letter-spacing:.18em;text-transform:uppercase;background:var(--paper);border:2.5px solid var(--ink);border-radius:999px;transition:background .15s,color .15s}.room-link:hover .room-label,.room-link:focus-visible .room-label{background:var(--ink);color:var(--paper)}.room-link:focus-visible{outline-offset:.5rem}.ph{width:100%;height:auto;fill:none;stroke:var(--ink);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:9 7}.room-hint{text-align:center;margin-top:3rem;color:var(--muted);font-size:.95rem}@media(max-width:760px){.room-scene{aspect-ratio:auto}.room-floor,.room-window{display:none}.room-objects{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem 1rem;align-items:end;padding:1rem 0 2rem;background:repeating-linear-gradient(to bottom,transparent 0 calc(100% / 3 - 3px),var(--ink) calc(100% / 3 - 3px) calc(100% / 3))}.room-object{position:static;width:auto}.room-object .room-art{width:70%;margin:0 auto}.obj-about .room-art,.obj-workshop .room-art{width:45%}.obj-web{grid-column:1 / -1}.obj-web .room-art{width:60%}.room-label{font-size:.75rem;margin-bottom:.75rem}.site-header{grid-template-columns:1fr;justify-items:center;gap:.5rem}.site-header .brand,.site-header .brand-portfolio{width:12rem}.site-header .utility{justify-content:center}}.page{max-width:var(--max);margin:0 auto;padding:2rem clamp(1rem,4vw,2rem) 0}.crumbs{font-size:.85rem;margin-bottom:.75rem}.crumbs a{text-decoration:none}.crumbs a:hover{text-decoration:underline}.lead{font-size:clamp(1.05rem,1.6vw,1.25rem);max-width:42rem;color:var(--muted)}.section-hero{display:grid;grid-template-columns:minmax(8rem,14rem) 1fr;gap:clamp(1rem,4vw,3rem);align-items:center;margin-bottom:3rem}.section-hero-art{display:block;max-width:14rem}.section-hero-art .ph{width:auto;max-height:13rem;margin:0 auto}@media(max-width:640px){.section-hero{grid-template-columns:6rem 1fr;gap:1rem}}.group-title{margin:3rem 0 1.25rem;font-size:1rem;letter-spacing:.16em;text-transform:uppercase}.studio-title{display:flex;align-items:center;gap:.6rem}.studio-title img{height:1.4rem;width:auto}.work-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:1.5rem}.work-grid.large{grid-template-columns:repeat(auto-fill,minmax(min(100%,26rem),1fr))}.work-card-link{display:flex;flex-direction:column;height:100%;text-decoration:none;background:var(--card, var(--paper));border:var(--line) solid var(--ink);border-radius:var(--radius);overflow:hidden;transition:transform .2s ease,box-shadow .2s ease}.work-card-link:hover{transform:translateY(-3px);box-shadow:6px 6px 0 var(--ink)}.work-card-media{display:block;aspect-ratio:16 / 10;background:var(--media, #f2f2f2);border-bottom:var(--line) solid var(--ink)}.work-card-media img{width:100%;height:100%;object-fit:cover}.work-card-media.logo{display:grid;place-items:center;padding:2rem;background:#fff}.work-card-media.logo img{width:auto;height:auto;max-height:5rem;max-width:70%;object-fit:contain}.work-card-body{display:flex;flex-direction:column;gap:.35rem;padding:1rem 1.15rem 1.25rem}.work-card-kicker{font-size:.7rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}.work-card-title{font-size:1.2rem;font-weight:800;line-height:1.2}.size-large .work-card-title{font-size:1.5rem}.work-card-summary{color:var(--muted);font-size:.95rem}.work-card-meta{margin-top:auto;padding-top:.5rem;font-family:var(--mono);font-size:.75rem;color:var(--muted)}.studio-grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:1rem}.studio-card a{display:flex;flex-direction:column;gap:.35rem;height:100%;padding:1.1rem;text-decoration:none;background:var(--card, var(--paper));border:2px solid var(--ink);border-radius:.75rem}.studio-card a:hover{box-shadow:4px 4px 0 var(--ink)}.studio-card img{height:2.5rem;width:auto;max-width:9rem;object-fit:contain;object-position:left;margin-bottom:.5rem}.studio-name{font-weight:800}.studio-role{font-size:.85rem;color:var(--muted)}.project-meta{display:flex;flex-wrap:wrap;gap:1rem 2.5rem;margin:-1.5rem 0 2.5rem;padding:1rem 0;border-block:2px solid var(--ink)}.project-meta dt{font-size:.7rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.project-meta dd{margin:.15rem 0 0}.project-video,.play{margin:0 0 2.5rem}.play-frame{position:relative;aspect-ratio:900 / 636;border:var(--line) solid var(--ink);border-radius:var(--radius);overflow:hidden;background:#000}.play-frame img{width:100%;height:100%;object-fit:cover;opacity:.55}.play-frame iframe{width:100%;height:100%;border:0;display:block}.play-start{position:absolute;inset:50% auto auto 50%;translate:-50% -50%;font-size:1.1rem}html[data-theme=games] .play-start{background:var(--accent);color:#111;border-color:var(--accent)}.play-hint{margin-top:.75rem;font-size:.9rem;color:var(--muted)}.project-video video{width:100%;border:var(--line) solid var(--ink);border-radius:var(--radius);background:#000}.prose{max-width:42rem}.prose h2{margin-top:2rem}.prose li{margin-bottom:.35rem}.prose blockquote{margin:1.25rem 0;padding:.9rem 1.1rem;border:2px dashed var(--accent);border-radius:.75rem;background:color-mix(in srgb,var(--accent) 8%,transparent)}.prose blockquote p{margin:0}.prose code{font-family:var(--mono);font-size:.9em}.downloads{display:flex;flex-wrap:wrap;gap:1rem;margin:2rem 0}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.7rem 1.3rem;font:inherit;font-weight:800;text-decoration:none;cursor:pointer;color:var(--ink);background:var(--paper);border:var(--line) solid var(--ink);border-radius:999px;transition:background .15s,color .15s}.btn:hover{background:var(--ink);color:var(--paper)}.btn[disabled]{opacity:.6;cursor:progress}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,18rem),1fr));gap:1rem;margin:2.5rem 0}.g-item{padding:0;border:var(--line) solid var(--ink);border-radius:var(--radius);overflow:hidden;background:#f2f2f2;cursor:zoom-in}.g-item.wide{grid-column:1 / -1}.g-item img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.g-item:hover img{transform:scale(1.02)}.project-pdf iframe{width:100%;height:36rem;border:var(--line) solid var(--ink);border-radius:var(--radius);background:#fff}.project-pdf figcaption{margin-top:.5rem}.credits{color:var(--muted);font-size:.9rem}.pager{display:grid;grid-template-columns:1fr auto 1fr;gap:1rem;align-items:center;margin-top:4rem;padding-top:1.5rem;border-top:2px solid var(--ink);font-size:.95rem}.pager a{text-decoration:none;font-weight:700}.pager a span{display:block;font-size:.75rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.pager-next{text-align:right}.pager-all{font-size:.85rem;text-decoration:underline!important}@media(max-width:640px){.pager{grid-template-columns:1fr 1fr}.pager-all{grid-column:1 / -1;order:3;text-align:center}}html.lb-open{overflow:hidden}.lightbox{width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent}.lightbox::backdrop{background:#ffffffe0;backdrop-filter:blur(4px)}.lb-figure{margin:0;width:100%;height:100%;display:grid;place-items:center;padding:4.5rem 4.5rem 3rem}.lb-figure img{max-width:100%;max-height:calc(100dvh - 8rem);object-fit:contain;border:var(--line) solid #111;border-radius:.5rem}.lb-caption{margin-top:.75rem;font-size:.9rem;color:#111;text-align:center}.lb-btn{position:fixed;width:3.25rem;height:3.25rem;border-radius:50%;border:0;cursor:pointer;background:#111 center / 55% no-repeat;color:#fff}.lb-close{top:1.25rem;right:1.25rem;background-image:url(/img/close.png);background-size:100%}.lb-prev,.lb-next{top:50%;transform:translateY(-50%);background-image:url(/img/arrow.png);background-size:100%}.lb-prev{left:1.25rem;transform:translateY(-50%) rotate(180deg)}.lb-next{right:1.25rem}.lb-btn[hidden]{display:none}.lb-btn:focus-visible{outline-color:#111}@media(max-width:640px){.lb-figure{padding:4.5rem .75rem 3rem}.lb-prev,.lb-next{top:auto;bottom:1rem;transform:none}.lb-prev{transform:rotate(180deg)}}.index-group{margin-top:2.5rem}.index-group h2 a{text-decoration:none}.index-list{list-style:none;padding:0;margin:0;border-top:2px solid var(--ink)}.index-list a{display:grid;grid-template-columns:minmax(10rem,18rem) 1fr auto;gap:1rem;padding:.8rem .25rem;border-bottom:1px solid #ccc;text-decoration:none}.index-list a:hover{background:#f5f5f5}.ix-title{font-weight:800}.ix-summary{color:var(--muted)}.ix-year{font-family:var(--mono);font-size:.85rem;color:var(--muted)}@media(max-width:640px){.index-list a{grid-template-columns:1fr auto}.ix-summary{grid-column:1 / -1;grid-row:2}}.letter{display:grid;grid-template-columns:7rem 1fr;gap:2rem;padding:clamp(1.25rem,4vw,2.5rem);background:var(--card);border:var(--line) solid var(--ink);border-radius:var(--radius)}@media(max-width:640px){.letter{grid-template-columns:1fr}.letter-avatar{width:6rem}}.contact{margin-top:3rem;max-width:42rem}.contact-form .field{display:flex;flex-direction:column;gap:.35rem}.contact-form label{font-weight:800;font-size:.9rem}.contact-form input,.contact-form textarea{font:inherit;padding:.75rem .9rem;color:var(--ink);background:#fff;border:var(--line) solid var(--ink);border-radius:.75rem}.contact-form textarea{resize:vertical}.contact-form .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.form-status[data-state=ok]{font-weight:800}.form-status[data-state=error]{color:#b00020;font-weight:700}.form-alt,.contact-links{color:var(--muted);font-size:.9rem}.notfound{text-align:center;padding-top:4rem}.notfound .btn{margin:.25rem}html[data-theme=web]{--paper: #eef1f5;--card: #fff;--accent: #2f6b4f;--muted: #4a5360}html[data-theme=web] .work-card-link{border-radius:.6rem}html[data-theme=web] .work-card-link:before{content:"";display:block;height:1.6rem;border-bottom:var(--line) solid var(--ink);background:radial-gradient(circle at .9rem 50%,var(--ink) .28rem,transparent .3rem),radial-gradient(circle at 1.8rem 50%,var(--ink) .28rem,transparent .3rem),radial-gradient(circle at 2.7rem 50%,var(--ink) .28rem,transparent .3rem),#fff}html[data-theme=web] h1{font-family:var(--mono);font-weight:700;letter-spacing:-.02em}html[data-theme=web] h1:after{content:"_";animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}html[data-theme=games]{--paper: #101010;--ink: #f4f1ea;--card: #181818;--media: #000;--accent: #ffb000;--muted: #b9b3a6;color-scheme:dark}html[data-theme=games] body:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:50;background:repeating-linear-gradient(to bottom,rgba(255,255,255,.035) 0 1px,transparent 1px 3px)}html[data-theme=games] h1,html[data-theme=games] .work-card-title{text-transform:uppercase;letter-spacing:.06em;color:var(--accent)}html[data-theme=games] .boil img,html[data-theme=games] .ph{filter:invert(1) hue-rotate(180deg)}html[data-theme=games] .work-card-link:hover{box-shadow:6px 6px 0 var(--accent)}html[data-theme=graphic]{--paper: #f6f1e7;--card: #fffdf8;--accent: #c4501a;--muted: #5d554a}html[data-theme=graphic] .work-card:nth-child(odd) .work-card-link{rotate:-.8deg}html[data-theme=graphic] .work-card:nth-child(2n) .work-card-link{rotate:.9deg}html[data-theme=graphic] .work-card-link:hover{rotate:0deg}html[data-theme=graphic] .g-item{box-shadow:4px 5px #0000001f}html[data-theme=workshop]{--paper: #e7d6b8;--card: #fbf4e6;--accent: #7a3e12;--muted: #5a4630}html[data-theme=workshop] body{background-image:radial-gradient(circle,rgba(60,40,20,.22) 2px,transparent 2.5px);background-size:28px 28px}html[data-theme=workshop] .work-card-link{position:relative;overflow:visible}html[data-theme=workshop] .work-card-link:before{content:"";position:absolute;top:-.7rem;left:50%;width:4.5rem;height:1.4rem;translate:-50% 0;rotate:-3deg;background:#fff4c8d9;border:1px solid rgba(0,0,0,.15);z-index:2}html[data-theme=workshop] .work-card-media{border-radius:calc(var(--radius) - 3px) calc(var(--radius) - 3px) 0 0;overflow:hidden}html[data-theme=about]{--paper: #fbfaf5;--card: #fff;--accent: #2a5db0;--muted: #50505a}html[data-theme=about] .letter{background-image:repeating-linear-gradient(to bottom,transparent 0 1.55rem,rgba(42,93,176,.12) 1.55rem calc(1.55rem + 1px))}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:0s!important;animation:none!important;scroll-behavior:auto!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
