@font-face{font-family:Inter Tight;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-tight-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Tight;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-tight-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{color-scheme:light;--bg:#fff;--tile:#f0f0ef;--tile-2:#e8e8e6;--line:#e6e6e4;--ink:#0a0a0a;--muted:#5f5f5f;--soft:#a8a8a8;--faint:#c4c4c2;--ok:#16a34a;--font:"Inter Tight",-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;--wrap:76rem;--gutter:clamp(1rem,4vw,2.5rem);--r:20px}*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-color:#cfcfcd transparent;scroll-padding-top:5.5rem}body{background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.55}body.menu-open{overflow:hidden}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}img{max-width:100%;display:block}h1,h2,h3,p{margin:0}::selection{background:var(--ink);color:var(--bg)}:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:6px}.skip{z-index:60;background:var(--ink);color:var(--bg);border-radius:999px;padding:.6rem 1rem;font-size:.85rem;transition:top .2s;position:absolute;top:-4rem;left:1rem}.skip:focus{top:1rem}svg.i{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:1.05rem;height:1.05rem}.wrap{max-width:var(--wrap);padding-inline:var(--gutter);margin-inline:auto}.label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.72rem;font-weight:500}.eyebrow{color:var(--ink);font-size:1rem;font-weight:500;display:block}.display{letter-spacing:-.04em;text-wrap:balance;font-weight:600;line-height:1.02}.display .soft{color:var(--soft)}h1.display{font-size:clamp(2.6rem,7.2vw,5.5rem)}h2.display{font-size:clamp(2rem,4.6vw,3.4rem)}.section-title{letter-spacing:-.03em;font-size:clamp(1.5rem,2.6vw,2rem);font-weight:600;line-height:1.15}.lede{color:var(--muted);max-width:36rem;font-size:1.05rem;line-height:1.6}.btn{border:1px solid var(--line);background:var(--bg);border-radius:999px;align-items:center;gap:.55rem;padding:.8rem 1.35rem;font-size:.95rem;font-weight:500;line-height:1;transition:transform .15s,border-color .15s,background .15s,color .15s;display:inline-flex}.btn:hover{border-color:var(--ink)}.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn.primary:hover{background:#2a2a2a;border-color:#2a2a2a}.btn svg.i{transition:transform .15s}.btn:hover svg.i{transform:translate(3px)}.btn.sm{padding:.6rem 1.05rem;font-size:.85rem}.round{border:1px solid var(--line);background:var(--bg);width:3rem;height:3rem;color:var(--ink);border-radius:50%;flex:none;place-items:center;transition:background .2s,border-color .2s,color .2s;display:inline-grid}.round svg.i{transition:transform .2s}.top{z-index:40;background:color-mix(in srgb,var(--bg) 86%,transparent);-webkit-backdrop-filter:blur(14px);transition:box-shadow .2s;position:sticky;top:0}.top.scrolled{box-shadow:0 1px 0 var(--line)}.top-in{align-items:center;gap:1.5rem;height:4.5rem;display:flex}.brand{letter-spacing:-.02em;color:var(--soft);align-items:center;gap:.65rem;font-size:1.05rem;font-weight:500;display:flex}.brand b{color:var(--ink);margin-left:.3em;font-weight:700}.brand img{object-fit:cover;object-position:50% 25%;border-radius:50%;width:2.1rem;height:2.1rem}.top-menu{flex:1;align-items:center;gap:1.5rem;min-width:0;display:flex}.nav{align-items:center;gap:.15rem;margin-inline:auto;display:flex}.nav a{color:var(--muted);border-radius:999px;align-items:center;gap:.5rem;padding:.5rem .8rem;font-size:.92rem;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.nav a:hover{color:var(--ink);background:var(--tile)}.nav a.active{color:var(--ink)}.nav a svg.i,.nav kbd,.nav a.menu-only{display:none}.top-right{align-items:center;gap:.6rem;margin-left:auto;display:flex}.seg{border:1px solid var(--line);background:var(--bg);border-radius:999px;padding:.2rem;display:flex}.seg a{color:var(--muted);border-radius:999px;padding:.3rem .6rem;font-size:.72rem;font-weight:500;transition:background .15s,color .15s;display:block}.seg a:hover{color:var(--ink)}.seg a[aria-current]{background:var(--ink);color:#fff}.menu-toggle{border:1px solid var(--line);background:var(--bg);cursor:pointer;border-radius:50%;place-items:center;width:2.75rem;height:2.75rem;margin-left:auto;display:none}.menu-toggle .ic-close,.top.open .menu-toggle .ic-open{display:none}.top.open .menu-toggle .ic-close{display:block}.menu-links{display:none}main{padding:1.5rem 0 5rem}.page{gap:clamp(4rem,8vw,7rem);display:grid}.section-head{justify-content:space-between;align-items:flex-end;gap:1.5rem;margin-bottom:1.75rem;display:flex}.section-head .lede{margin-top:.5rem;font-size:.98rem}.split{grid-template-columns:minmax(0,1fr) minmax(0,2.2fr);align-items:start;gap:2rem 4rem;display:grid}.split .section-title{position:sticky;top:5.5rem}.hero{gap:2.25rem;padding-top:clamp(1.5rem,4vw,3.5rem);display:grid}.hero-top{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.status{border:1px solid var(--line);color:var(--muted);border-radius:999px;align-items:center;gap:.5rem;padding:.4rem .85rem .4rem .7rem;font-size:.82rem;font-weight:500;display:inline-flex}.status:before{content:"";background:var(--ok);border-radius:50%;flex:none;width:.5rem;height:.5rem;animation:2.4s ease-out infinite pulse}@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--ok) 55%,transparent)}70%,to{box-shadow:0 0 0 6px #0000}}.hero h1{max-width:18ch}.hero-foot{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end;gap:2rem;display:grid}.actions{flex-wrap:wrap;gap:.6rem;display:flex}.hero .lede{justify-self:end;max-width:30rem}.work.rows li{padding:0;display:block}.work a{grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:1.5rem;padding:1.1rem 0;display:grid}.work .thumb{background:var(--tile);border-radius:16px;place-items:center;width:4.5rem;height:4.5rem;transition:background .25s;display:grid;overflow:hidden}.work a:hover .thumb{background:var(--tile-2)}.work .thumb .app-icon{border-radius:22%;width:2.75rem;height:2.75rem;transition:transform .4s cubic-bezier(.2,.7,.2,1);box-shadow:0 6px 16px #0000001f}.work .thumb .shot-thumb{object-fit:cover;object-position:50% 0;width:100%;height:100%;transition:transform .5s cubic-bezier(.2,.7,.2,1)}.work .thumb .glyph{background:var(--bg);border-radius:22%;place-items:center;width:2.75rem;height:2.75rem;transition:transform .4s cubic-bezier(.2,.7,.2,1);display:grid}.work .thumb .glyph svg{fill:none;width:50%;height:50%;stroke:var(--ink);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.work a:hover .app-icon,.work a:hover .glyph{transform:translateY(-2px)scale(1.04)}.work a:hover .shot-thumb{transform:scale(1.04)}.work .text{min-width:0}.work h3{letter-spacing:-.02em;font-size:1.1rem;font-weight:600;line-height:1.3}.work p{color:var(--muted);margin-top:.2rem;font-size:.92rem;line-height:1.45}.work .kind{color:var(--muted);white-space:nowrap;font-size:.8rem}.work a:hover .round{background:var(--ink);border-color:var(--ink);color:#fff}.work a:hover .round svg.i{transform:translate(2px,-2px)}.work-link,.more a{display:block}.tile{aspect-ratio:16/10;border-radius:var(--r);background:var(--tile);place-items:center;transition:background .25s;display:grid;position:relative;overflow:hidden}.work-link:hover .tile,.more a:hover .tile{background:var(--tile-2)}.tile .app-icon{border-radius:22%;width:clamp(5rem,12vw,8rem);height:auto;transition:transform .5s cubic-bezier(.2,.7,.2,1);position:relative;box-shadow:0 18px 40px #00000024}.tile .glyph{aspect-ratio:1;background:var(--bg);border-radius:22%;place-items:center;width:clamp(5rem,12vw,8rem);transition:transform .5s cubic-bezier(.2,.7,.2,1);display:grid;position:relative;box-shadow:0 18px 40px #0000001a}.tile .glyph svg{fill:none;width:40%;height:40%;stroke:var(--ink);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.work-link:hover .app-icon,.work-link:hover .glyph{transform:translateY(-4px)scale(1.03)}.work-row .label{margin-bottom:.2rem;display:block}.work-row{justify-content:space-between;align-items:center;gap:1.5rem;margin-top:1rem;display:flex}.work-row h3{letter-spacing:-.02em;font-size:1.15rem;font-weight:600;line-height:1.3}.work-row p{color:var(--muted);margin-top:.2rem;font-size:.92rem;line-height:1.45}.work-link:hover .round,.more a:hover .round{background:var(--ink);border-color:var(--ink);color:#fff}.work-link:hover .round svg.i,.more a:hover .round svg.i{transform:translate(3px)}.tags{flex-wrap:wrap;gap:.35rem;display:flex}.tags span{background:var(--bg);color:var(--muted);border-radius:999px;padding:.2rem .6rem;font-size:.72rem;line-height:1.5}.rows{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.rows li{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;gap:.2rem 2rem;padding:1.35rem 0;display:grid}.rows h3{letter-spacing:-.015em;font-size:1.05rem;font-weight:600;line-height:1.3}.rows .when{color:var(--muted);text-align:right;white-space:nowrap;font-size:.9rem}.rows .role{color:var(--muted);font-size:.92rem}.rows .desc{color:var(--muted);grid-column:1/-1;max-width:48rem;margin-top:.35rem;font-size:.95rem;line-height:1.55}.tools{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:1fr;gap:.75rem;display:grid}.tool{background:var(--tile);border-radius:16px;align-items:center;gap:.75rem;min-width:0;min-height:4.6rem;padding:.75rem .85rem;transition:background .2s;display:flex}.tool:hover{background:var(--tile-2)}.tool .logo{background:var(--bg);border-radius:50%;flex:none;place-items:center;width:2.6rem;height:2.6rem;display:grid}.tool .logo img{width:1.3rem;height:1.3rem}.tool div{min-width:0}.tool b{font-size:.92rem;font-weight:600;line-height:1.25;display:block}.tool span{color:var(--muted);font-size:.78rem;line-height:1.3;display:block}.also{color:var(--muted);margin-top:1.25rem;font-size:.95rem;line-height:1.55}.also b{color:var(--ink);font-weight:500}.more{grid-template-columns:minmax(0,1fr);display:grid}.more a{display:block}.more .tile{aspect-ratio:3;align-items:flex-end;gap:.6rem;padding:1rem;display:flex}.peek{grid-template-columns:repeat(5,minmax(0,1fr));gap:.6rem;width:100%;display:grid}.peek span{aspect-ratio:3/4;background:var(--bg);border-radius:12px;display:block;overflow:hidden}.peek span:nth-child(2n){transform:translateY(-1.25rem)}.peek img{object-fit:cover;width:100%;height:100%;transition:transform .5s cubic-bezier(.2,.7,.2,1)}.more a:hover .peek img{transform:scale(1.04)}.contact-head{text-align:center;justify-items:center;gap:1rem;margin-bottom:3rem;display:grid}.contact{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:3rem;display:grid}.contact-intro{color:var(--muted);max-width:28rem;font-size:1rem;line-height:1.6}.direct{border-top:1px solid var(--line);margin-top:1.5rem;display:grid}.direct>div{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:.75rem;padding:.95rem 0;font-size:.95rem;display:flex}.direct .val{align-items:center;gap:.6rem;min-width:0;display:flex}.direct a:hover{text-underline-offset:3px;text-decoration:underline}form{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.field{gap:.4rem;min-width:0;display:grid}.field.full{grid-column:1/-1}.field label{color:var(--muted);font-size:.78rem;font-weight:500}input,select,textarea{border:1px solid var(--line);background:var(--bg);border-radius:14px;width:100%;padding:.85rem 1rem;font-size:.95rem;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--ink);outline:0}textarea{resize:vertical;min-height:8rem}select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 1.3rem),calc(100% - 1rem);background-repeat:no-repeat;background-size:.3rem .3rem}.submit{background:var(--ink);color:#fff;cursor:pointer;border:0;border-radius:999px;grid-column:1/-1;justify-self:start;padding:.9rem 1.5rem;font-size:.95rem;font-weight:500;transition:background .15s}.submit:hover{background:#2a2a2a}.form-error{color:#dc2626;grid-column:1/-1;font-size:.85rem}.form-error:empty{display:none}.form-note{color:var(--soft);grid-column:1/-1;font-size:.8rem}.copy{border:1px solid var(--line);background:var(--bg);width:2rem;height:2rem;color:var(--muted);cursor:pointer;border-radius:50%;flex:none;place-items:center;padding:0;transition:border-color .15s,color .15s;display:grid}.copy svg.i{width:.9rem;height:.9rem}.copy .ic-done,.copy.done .ic-copy{display:none}.copy.done .ic-done{display:block}.copy:hover,.copy.done{border-color:var(--ink);color:var(--ink)}.foot{background:var(--ink);color:#fff;padding:3.5rem 0 2rem}.foot-top{border-bottom:1px solid #ffffff24;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:2rem;padding-bottom:2.5rem;display:grid}.brand-foot{color:#ffffff80;font-size:1.6rem}.brand-foot b{color:#fff}.foot-top p{color:#ffffffb3;max-width:30rem;margin-top:.75rem;font-size:.95rem;line-height:1.55}.foot-pills{flex-wrap:wrap;justify-content:flex-end;gap:.6rem;display:flex}.foot-pills a{border:1px solid #ffffff38;border-radius:999px;align-items:center;gap:.5rem;padding:.65rem 1.1rem;font-size:.88rem;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.foot-pills a:hover{color:var(--ink);background:#fff}.foot-bottom{color:#fff9;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-top:1.5rem;font-size:.85rem;display:flex}.foot-bottom nav,.foot-meta{flex-wrap:wrap;gap:1.25rem;display:flex}.foot-bottom a:hover{color:#fff}.foot-pills .with-copy{align-items:center;padding:0;display:inline-flex}.foot-pills .with-copy a{border:0}.foot-pills .copy{color:#ffffffb3;background:0 0;border:0;border-left:1px solid #ffffff38;border-radius:0 999px 999px 0;width:2.6rem;height:2.6rem;margin-right:.1rem}.foot-pills .copy:hover,.foot-pills .copy.done{color:#fff;background:#ffffff1a}.ov-hero{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:2.5rem;padding-top:clamp(1rem,3vw,2.5rem);display:grid}.ov-portrait img{object-fit:cover;object-position:50% 25%;background:var(--tile);border-radius:50%;width:clamp(7rem,12vw,10rem);height:clamp(7rem,12vw,10rem)}.ov-id{gap:1.1rem;display:grid}.ov-id .meta-row{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.ov-id h1{max-width:none}.ov-id h1 .soft{display:block}.ov-facts{color:var(--muted);flex-wrap:wrap;gap:.5rem 1.5rem;margin:0;padding:0;font-size:.95rem;list-style:none;display:flex}.ov-facts li{align-items:center;gap:.45rem;display:inline-flex}.ov-facts svg.i{width:1rem;height:1rem;color:var(--soft)}.ov-facts a:hover{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.ov .section-title{align-items:center;gap:.6rem;display:flex}.ov .section-title svg.i{width:1.3rem;height:1.3rem;color:var(--soft)}.ov-cards{gap:1.25rem;display:grid}.ov-card{border-radius:var(--r);background:var(--tile);gap:1.1rem;padding:1.5rem;display:grid}.ov-card-head{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:1rem;display:grid}.ov-card .app-icon{border-radius:22%;width:3.75rem;height:3.75rem;box-shadow:0 8px 20px #0000001f}.ov-card .glyph{background:var(--bg);border-radius:22%;place-items:center;width:3.75rem;height:3.75rem;display:grid}.ov-card .glyph svg{fill:none;width:45%;height:45%;stroke:var(--ink);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.ov-card h3{letter-spacing:-.02em;font-size:1.25rem;font-weight:600;line-height:1.25}.ov-card h3 a:hover{text-underline-offset:3px;text-decoration:underline}.ov-sum{color:var(--muted);margin-top:.15rem;font-size:.95rem;line-height:1.45}.ov-kind{background:var(--bg);white-space:nowrap;border-radius:999px;align-items:center;gap:.4rem;padding:.35rem .8rem;font-size:.78rem;font-weight:500;display:inline-flex}.ov-kind svg.i{width:.85rem;height:.85rem;color:var(--soft)}.ov-meta{flex-wrap:wrap;gap:.5rem 2rem;margin:0;font-size:.9rem;display:flex}.ov-meta div{flex-wrap:wrap;align-items:center;gap:.3rem .5rem;line-height:1.4;display:flex}.ov-meta dt{color:var(--muted);align-items:center;gap:.35rem;font-weight:500;line-height:1.4;display:inline-flex}.ov-meta dt svg.i{width:.9rem;height:.9rem;color:var(--soft)}.ov-meta dd{color:var(--ink);margin:0;line-height:1.4}.ov-hl{color:#262626;gap:.45rem;margin:0;padding:0;font-size:.95rem;line-height:1.5;list-style:none;display:grid}.ov-hl li{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:.55rem;display:grid}.ov-hl svg.i{width:.9rem;height:.9rem;color:var(--soft);margin-top:.3rem}.ov-card-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1.5rem;display:flex}.ov-card .tags span{background:var(--bg)}.ov-links{flex-wrap:wrap;gap:.5rem;display:flex}.ov-games{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:0;padding:0;list-style:none;display:grid}.ov-games a{border-radius:var(--r);background:var(--tile);grid-template-columns:6rem minmax(0,1fr);align-items:start;gap:1rem;padding:1rem;transition:background .2s;display:grid}.ov-games a:hover{background:var(--tile-2)}.ov-games img{object-fit:cover;background:var(--bg);border-radius:12px;width:6rem;height:8rem}.ov-game-text{align-content:start;gap:.25rem;min-width:0;display:grid}.ov-game-text b{letter-spacing:-.015em;font-size:1.05rem;font-weight:600}.ov-genre{color:var(--muted);font-size:.82rem}.ov-game-sum{color:var(--muted);font-size:.9rem;line-height:1.45}.ov-play{color:var(--ink);align-items:center;gap:.35rem;margin-top:.35rem;font-size:.85rem;font-weight:500;display:inline-flex}.ov-play svg.i{width:.9rem;height:.9rem}.ov-rows li{grid-template-columns:auto minmax(0,1fr) auto;gap:.2rem 1rem}.ov-rows .ov-dot{background:var(--tile);width:2.5rem;height:2.5rem;color:var(--ink);border-radius:50%;grid-row:1/span 2;place-items:center;display:grid}.ov-rows .ov-dot svg.i{width:1.05rem;height:1.05rem}.ov-rows .role{grid-column:2}.ov-rows .desc{grid-column:2/-1;max-width:none}.ov-rows .when{align-items:center;gap:.4rem;display:inline-flex}.ov-rows .when svg.i{width:.9rem;height:.9rem;color:var(--soft)}.ov-skills{gap:.75rem;display:grid}.ov-skills .label{margin-top:.5rem}.ov-skills .label:first-child{margin-top:0}.skills{flex-wrap:wrap;gap:.5rem;display:flex}.skills span{background:var(--tile);border-radius:999px;align-items:center;gap:.5rem;padding:.45rem .9rem;font-size:.9rem;display:inline-flex}.skills .logo-chip img{width:1rem;height:1rem}.skills .logo-chip b{font-weight:600}.skills .logo-chip i{color:var(--muted);font-size:.82rem;font-style:normal}@media print{@page{margin:12mm}html{scroll-behavior:auto}body{color:#000;font-size:10.5pt}.top,.foot,.skip,.no-print{display:none!important}main{padding:0}.page{gap:1.4rem}.js .reveal:not(.in){opacity:1;transition:none;transform:none}.split{display:block}.split .section-title{margin-bottom:.6rem;font-size:1.2rem;position:static}.ov-hero{gap:1.5rem}.ov-portrait img{width:6rem;height:6rem}h1.display{font-size:2rem}.ov-card,.ov-games a{background:0 0;border:1px solid #ddd;padding:1rem}.ov-cards{gap:.75rem}.ov-card{gap:.7rem}.ov-card-head,.ov-hl li,.ov-card-foot,.ov-games a{break-inside:avoid}.ov-card .app-icon,.ov-card .glyph{box-shadow:none;width:3rem;height:3rem}.ov-hl{font-size:.9rem}.section-head{margin-bottom:.75rem;display:block}.section-head .label{display:none}.ov-games{gap:.6rem}.ov-games a{align-items:flex-start;display:flex}.ov-games img{flex:none;width:4.5rem;height:6rem}.ov-game-sum{display:none}.ov-card .tags span,.ov-kind,.skills span,.ov-rows .ov-dot{background:0 0;border:1px solid #ddd}.ov-links .btn{border-color:#ddd}.rows li{break-inside:avoid;padding:.6rem 0}.ov-skills{break-inside:avoid}}.page-hero{gap:1.25rem;padding-top:clamp(1rem,3vw,2.5rem);display:grid}.page-hero .meta-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.page-hero h1{max-width:20ch}.back{border:1px solid var(--line);border-radius:999px;justify-self:start;align-items:center;gap:.5rem;padding:.75rem 1.25rem;font-size:.92rem;font-weight:500;transition:border-color .15s;display:inline-flex}.back:hover{border-color:var(--ink)}.gallery{grid-template-columns:repeat(6,minmax(0,1fr));gap:1.5rem;margin:0;padding:0;list-style:none;display:grid}.gallery li{grid-column:span 2}.gallery li:nth-child(-n+2){grid-column:span 3}.shot{cursor:zoom-in;text-align:left;background:0 0;border:0;width:100%;padding:0;display:block}.frame{border-radius:var(--r);aspect-ratio:3/4;background:var(--tile);display:block;overflow:hidden}.frame img{object-fit:cover;width:100%;height:100%;transition:transform .6s cubic-bezier(.2,.7,.2,1)}.shot:hover .frame img{transform:scale(1.03)}.cap{justify-content:space-between;align-items:baseline;gap:1rem;margin-top:.85rem;display:flex}.cap b{letter-spacing:-.01em;font-size:1rem;font-weight:600}.cap span{color:var(--muted);font-size:.82rem}.lightbox{color:#fff;background:#0a0a0af5;border:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0}.lightbox::backdrop{background:0 0}.lightbox[open]{grid-template-rows:minmax(0,1fr) auto;place-items:center;display:grid}.lightbox figure{place-items:center;width:100%;height:100%;min-height:0;margin:0;padding:4.5rem 4.5rem 0;display:grid}.lightbox img{object-fit:contain;border-radius:12px;max-width:100%;max-height:100%}.lightbox figcaption{color:#8d8d8d;text-align:center;padding:1rem 1rem 1.5rem;font-size:.8rem}.lightbox figcaption b{color:#fff;font-size:.95rem;font-weight:600}.lb-btn{color:#fff;cursor:pointer;background:#1c1c1ce6;border:1px solid #2a2a2a;border-radius:50%;place-items:center;width:2.75rem;height:2.75rem;transition:background .15s;display:grid;position:absolute}.lb-btn:hover{background:#2a2a2a}.lb-close{top:1.25rem;right:1.25rem}.lb-prev{top:50%;left:1.25rem;transform:translateY(-50%)}.lb-next{top:50%;right:1.25rem;transform:translateY(-50%)}.crumbs{align-items:center;gap:.4rem;font-size:1rem;font-weight:500;display:flex}.crumbs a{color:var(--muted);transition:color .15s}.crumbs a:hover{color:var(--ink)}.crumbs span[aria-hidden]{color:var(--faint)}.project-hero .app-icon{border-radius:22%;width:4.5rem;height:4.5rem;box-shadow:0 10px 24px #0000001f}.project-hero .glyph{background:var(--tile);border-radius:22%;place-items:center;width:4.5rem;height:4.5rem;display:grid}.project-hero .glyph svg{fill:none;width:40%;height:40%;stroke:var(--ink);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.project-hero .summary{color:var(--muted);max-width:40rem;font-size:clamp(1.05rem,1.6vw,1.3rem);line-height:1.5}.project-cover{aspect-ratio:2;border-radius:var(--r);background:var(--tile);place-items:center;display:grid;overflow:hidden}.project-cover img{object-fit:cover;object-position:50% 0;width:100%;height:100%}.project-cover img.contain{object-fit:contain;object-position:50% 100%;padding:clamp(1rem,3vw,2rem) clamp(1rem,3vw,2rem) 0}.project{grid-template-columns:minmax(0,1fr) minmax(0,2.4fr);align-items:start;gap:2.5rem 4rem;display:grid}.meta{gap:1.4rem;display:grid;position:sticky;top:5.5rem}.meta .label{color:var(--ink);letter-spacing:.04em;margin-bottom:.35rem;font-size:.8rem;display:block}.meta .val{color:var(--muted);font-size:.95rem}.meta .tags span{background:var(--tile)}.meta .links{flex-wrap:wrap;gap:.5rem;display:flex}.prose{color:#262626;font-size:1.02rem;line-height:1.7}.prose>:not(.shots){max-width:44rem}.prose>:first-child{margin-top:0}.prose h2{letter-spacing:-.025em;color:var(--ink);margin:2.5rem 0 .75rem;font-size:1.5rem;font-weight:600;line-height:1.2}.prose h2:first-child{margin-top:0}.prose p{margin:0 0 1rem}.prose ul{gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:grid}.prose li{padding-left:1.2rem;position:relative}.prose li:before{content:"";background:var(--soft);width:.45rem;height:1px;position:absolute;top:.75em;left:0}.prose a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--faint);text-underline-offset:3px}.prose strong{color:var(--ink);font-weight:600}.prose code{background:var(--tile);border-radius:5px;padding:.1em .35em;font-size:.92em}.prose img{border-radius:var(--r);background:var(--tile);margin:1.5rem 0}.prose .shots{grid-template-columns:repeat(4,1fr);gap:1rem;margin:1.5rem 0 2rem;display:grid}.prose .shots.wide{grid-template-columns:repeat(2,1fr)}.prose .shots img{width:100%;height:auto;margin:0}.pager{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;display:grid}.pager a{display:block}.pager .tile{aspect-ratio:16/8}.js .reveal{opacity:0;transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1);transform:translateY(12px)}.js .reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js .reveal{opacity:1;transition:none;transform:none}.btn,.submit,.peek img,.frame img,.tile .app-icon,.tile .glyph,.work .thumb img,.work .thumb .glyph{transition:none}.shot:hover .frame img,.more a:hover .peek img,.work a:hover .app-icon,.work a:hover .glyph,.work a:hover .shot-thumb{transform:none}.status:before{box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 22%,transparent);animation:none}}@media (width<=1023px){.top-in{height:4rem}.menu-toggle{display:grid}.top-menu{max-height:calc(100dvh - 4rem);padding:1rem var(--gutter) 1.5rem;background:var(--bg);border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:1.5rem;display:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.top.open .top-menu{display:flex}.nav{flex-direction:column;align-items:stretch;gap:.1rem;margin:0}.nav a{border-radius:12px;padding:.75rem .6rem;font-size:1.05rem}.nav a svg.i,.nav a.menu-only{display:inline-flex}.nav a.active{background:var(--tile)}.top-right{justify-content:space-between;margin:0}.menu-links{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:.4rem;padding-top:1.25rem;display:grid}.menu-links a{color:var(--muted);border-radius:10px;align-items:center;gap:.6rem;padding:.6rem;font-size:.95rem;display:flex}.split{grid-template-columns:1fr;gap:1.25rem}.split .section-title{position:static}.tools{grid-template-columns:repeat(2,minmax(0,1fr))}.project{grid-template-columns:1fr;gap:2rem}.meta{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:1.25rem 2rem;position:static}}@media (width<=760px){.hero-foot,.contact,.more,.foot-top{grid-template-columns:1fr}.more .tile{aspect-ratio:16/10}.peek{grid-template-columns:repeat(3,minmax(0,1fr))}.peek span:nth-child(n+4){display:none}.work a{grid-template-columns:auto minmax(0,1fr) auto;gap:1rem}.work .kind{display:none}.work .thumb{border-radius:12px;width:3.5rem;height:3.5rem}.work .thumb .app-icon,.work .thumb .glyph{width:2.25rem;height:2.25rem}.work .round{width:2.5rem;height:2.5rem}.hero .lede{justify-self:start}.foot-pills{justify-content:flex-start}.prose .shots{grid-template-columns:repeat(2,1fr)}.prose .shots.wide{grid-template-columns:1fr}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.gallery li,.gallery li:nth-child(-n+2){grid-column:span 1}.gallery li:first-child{grid-column:1/-1}.rows li{grid-template-columns:1fr}.rows .when{text-align:left;order:-1;font-size:.82rem}.ov-hero{grid-template-columns:1fr;gap:1.25rem}.ov-card-head{grid-template-columns:auto minmax(0,1fr)}.ov-kind{grid-column:1/-1;justify-self:start}.ov-games{grid-template-columns:1fr}.ov-rows li{grid-template-columns:auto minmax(0,1fr)}.ov-rows .when{order:0;grid-column:2}.ov-rows .ov-dot{grid-row:1/span 3}.section-head{flex-direction:column;align-items:flex-start;gap:.75rem}}@media (width<=480px){form{grid-template-columns:1fr}.cap{flex-direction:column;gap:0}.lightbox figure{padding:4.5rem .75rem 0}.lb-prev,.lb-next{top:auto;bottom:1rem;transform:none}.pager{grid-template-columns:1fr}}.games{grid-template-columns:repeat(4,minmax(0,1fr));gap:1.5rem;margin:0;padding:0;list-style:none;display:grid}.game{flex-direction:column;height:100%;display:flex}.game .frame{position:relative}.game:hover .frame img{transform:scale(1.03)}.play-chip{color:var(--ink);opacity:0;background:#fff;border-radius:999px;align-items:center;gap:.4rem;padding:.6rem 1.1rem .6rem .9rem;font-size:.88rem;font-weight:500;transition:opacity .2s,transform .2s;display:inline-flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(.9)}.game .frame:after{content:"";background:#0a0a0a00;transition:background .2s;position:absolute;inset:0}.game:hover .frame:after,.game:focus-visible .frame:after{background:#0a0a0a4d}.game:hover .play-chip,.game:focus-visible .play-chip{opacity:1;transform:translate(-50%,-50%)scale(1)}@media (hover:none){.play-chip{opacity:1;background:#ffffffeb;padding:.4rem .8rem .4rem .6rem;font-size:.78rem;inset:auto .6rem .6rem auto;transform:none}.game .frame:after{display:none}}.game .cap{flex-direction:column;align-items:flex-start;gap:.1rem}.game-sum{color:var(--muted);margin-top:.4rem;font-size:.85rem;line-height:1.45}.player{background:0 0;border:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0}.player::backdrop{backdrop-filter:blur(3px);background:#0a0a0ab8}.player[open]{place-items:center;display:grid}.player-box{--h:min(54rem,calc(100dvh - 5.5rem));width:min(calc(var(--h) * 9 / 16),calc(100vw - 2rem));background:var(--bg);border-radius:22px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 24px 60px #00000059}.player-bar{border-bottom:1px solid var(--line);align-items:center;gap:.4rem;height:3rem;padding:0 .5rem 0 1rem;display:flex}.player-bar b{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.92rem;font-weight:600;overflow:hidden}.player-btn{border:1px solid var(--line);background:var(--bg);cursor:pointer;border-radius:50%;place-items:center;width:2.25rem;height:2.25rem;transition:border-color .15s;display:grid}.player-btn:hover{border-color:var(--ink)}.player-screen{height:var(--h);background:#111}.player-screen iframe{border:0;width:100%;height:100%;display:block}@media (prefers-reduced-motion:reduce){.game:hover .frame img{transform:none}}@media (width<=1023px){.games{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=760px){.games{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}}@media (width<=560px),(height<=560px){.player-box{border-radius:0;width:100vw;height:100dvh}.player-bar{padding-top:env(safe-area-inset-top);height:calc(3rem + env(safe-area-inset-top))}.player-screen{height:auto;padding-bottom:env(safe-area-inset-bottom);flex:1}}
