:root{--bg:#fff;--ink:#0b0b0c;--text:#5c5c62;--soft:#8d8d94;--fill:#f1f1f3;--tile:#0b0b0c;--on-tile:#fff;--l0:#ebedf0;--l1:#9be9a8;--l2:#40c463;--l3:#30a14e;--l4:#216e39;--panel:#fff;--panel-shadow:0 32px 90px #00000029, 0 4px 14px #0000000f;--scrim:#0c0c0e2e;--chip:#fff;--sky-top:#e8f0f7;--sky-mid:#f2f6fa;--sky-low:#f9fbfc;--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--out:cubic-bezier(.22, 1, .36, 1);--spring:cubic-bezier(.34, 1.56, .64, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0b0b0c;--ink:#f4f4f6;--text:#a2a2a9;--soft:#74747b;--fill:#1f1f22;--tile:#f4f4f6;--on-tile:#0b0b0c;--l0:#161b22;--l1:#0e4429;--l2:#006d32;--l3:#26a641;--l4:#39d353;--panel:#151517;--panel-shadow:0 32px 90px #000000b3;--scrim:#00000080;--chip:#2e2e33;--sky-top:#0e1622;--sky-mid:#121a27;--sky-low:#161d29}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}*{box-sizing:border-box}html{background:var(--bg);scrollbar-gutter:stable;-webkit-text-size-adjust:100%}html.locked{overflow:hidden}body{background:var(--bg);color:var(--text);font:400 18px/1.62 var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0}#page{min-height:100svh;position:relative;overflow-x:clip}.col{width:min(100% - 40px,560px);margin:0 auto}.col.top{padding-top:clamp(72px,17vh,168px)}.col.end{padding-bottom:120px}.rise{animation:rise .75s var(--out) backwards;animation-delay:var(--d,0s)}@keyframes rise{0%{opacity:0;filter:blur(6px);transform:translateY(10px)}}.who{margin:0 0 30px}.who h1{font:600 18px/1.45 var(--font);letter-spacing:-.01em;color:var(--ink);margin:0}.who p{color:var(--soft);margin:0}.story p{text-wrap:pretty;margin:0 0 1.05em}.link{color:var(--ink);border-radius:4px;font-weight:520;text-decoration:none;transition:opacity .2s}@media (hover:hover){.link:hover{opacity:.6}.app:hover .tile{transform:translateY(-1px)}.circle:hover svg{transform:rotate(90deg)}.btn:hover svg.arrow{transform:translate(1.5px,-1.5px)}}.app{color:var(--ink);white-space:nowrap;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:7px;font-weight:560;text-decoration:none}.link:focus-visible,.app:focus-visible,.circle:focus-visible,.btn:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.tile{--g:100%;vertical-align:-.27em;background:var(--tile);width:1.24em;height:1.24em;color:var(--on-tile);transition:transform .35s var(--spring), filter .45s ease;border-radius:27%;margin-right:.32em;display:inline-block;position:relative;overflow:hidden;box-shadow:0 1px 1.5px #00000029,0 3px 8px -2px #00000024}.story .tile{animation:pop .6s var(--spring) backwards}@keyframes pop{0%{opacity:0;transform:scale(.4)}}.app:active .tile{transform:scale(.9)}.tile .g{left:calc((100% - var(--g)) / 2);top:calc((100% - var(--g)) / 2);width:var(--g);height:var(--g);fill:currentColor;transition:transform .55s var(--spring), opacity .25s ease;position:absolute}.tile[data-out] .g{opacity:0;transition:transform .18s ease-in,opacity .14s ease-in;transform:scale(.3)}.tile[data-dim]{filter:brightness(.62)saturate(1.15)}.tile[data-away]{visibility:hidden}.tile img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.tile-goat{--g:62%}.tile-nearra{--g:66%}.tile-gameli{--g:63%}.tile-pinny{color:#111214;background:#ffd54a}.tile-ambi{background:#5c63b6}.tile.big{vertical-align:top;flex:none;width:64px;height:64px;margin:0;box-shadow:0 1px 2px #00000024,0 10px 24px -8px #00000047}.rook{background:currentColor;display:block;-webkit-mask:url(/glyphs/rook.png) 50%/contain no-repeat;mask:url(/glyphs/rook.png) 50%/contain no-repeat}.stage{z-index:70;pointer-events:none;color:var(--ink);position:absolute;inset:0;overflow:clip}.fx{fill:none;stroke:currentColor;stroke-linecap:round;width:100%;height:100%;position:absolute;top:0;left:0;overflow:visible}.contrail path{stroke-width:1.5px;opacity:.22}.water{stroke-width:1.6px;opacity:.36}.ping ellipse{stroke-width:1.5px}.dust circle{fill:currentColor;stroke:none}.obj{will-change:transform;position:absolute;top:0;left:0}.obj.bottom{transform-origin:50% 100%}.obj>svg,.obj>.rook{fill:currentColor;width:100%;height:100%;display:block;overflow:visible}.obj>svg path{stroke:var(--bg);stroke-width:3px;vector-effect:non-scaling-stroke;paint-order:stroke;stroke-linejoin:round}.obj>svg path[fill=none]{stroke:currentColor;vector-effect:none;paint-order:normal}.obj.halo>.rook{filter:drop-shadow(0 0 1px var(--bg)) drop-shadow(0 0 1px var(--bg))}.crown{color:#f2b705}.zz{font:700 1em/1 var(--font);color:var(--ink);text-shadow:0 0 2px var(--bg), 0 0 2px var(--bg);place-items:center;display:grid}.note{background:linear-gradient(160deg,#fff6,#fff0 45%),linear-gradient(#0000 65%,#0000000d),#ffd54a;border-radius:3px;box-shadow:0 6px 14px -4px #0000004d,0 1px 2px #0000001f}.flyer{z-index:80;transform-origin:0 0;pointer-events:none;will-change:transform;position:fixed;top:0;left:0}.scrim{z-index:50;background:var(--scrim);position:fixed;inset:0}.drawer{z-index:60;background:var(--panel);box-shadow:var(--panel-shadow);flex-direction:column;display:flex;position:fixed;overflow:hidden}@media (width>=760px){.drawer{border-radius:28px;width:440px;top:12px;bottom:12px;right:12px}.grab{display:none}}@media (width<=759.98px){.drawer{height:min(92svh,860px);padding-bottom:env(safe-area-inset-bottom);border-radius:28px 28px 0 0;bottom:0;left:0;right:0}}.drawer-top{touch-action:none;justify-content:flex-end;padding:14px 14px 0;display:flex;position:relative}.grab{background:var(--fill);border-radius:3px;width:38px;height:5px;margin-left:-19px;position:absolute;top:8px;left:50%}.circle{background:var(--fill);width:40px;height:40px;color:var(--ink);cursor:pointer;transition:transform .3s var(--spring);border:0;border-radius:50%;place-items:center;padding:0;display:grid}.circle svg{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;width:20px;height:20px;transition:transform .4s var(--spring)}.circle:active{transform:scale(.9)}.drawer-body{overscroll-behavior:contain;flex-direction:column;flex:1;min-height:0;padding:0 28px 28px;display:flex;overflow-y:auto}.drawer-head{align-items:center;gap:16px;margin-top:-6px;display:flex}.drawer h2{font:650 26px/1.15 var(--font);letter-spacing:-.02em;color:var(--ink);margin:0}.where{color:var(--soft);margin:4px 0 0;font-size:15px;line-height:1.3}.line{color:var(--text);margin:20px 0 0;font-size:17px;line-height:1.55}.actions{gap:10px;margin-top:22px;display:flex}.btn{background:var(--ink);height:48px;color:var(--bg);font:600 15px/1 var(--font);white-space:nowrap;transition:transform .3s var(--spring);border-radius:12px;flex:1 1 0;justify-content:center;align-items:center;gap:8px;padding:0 14px;text-decoration:none;display:inline-flex}.btn:active{transform:scale(.96)}.btn.quiet{background:var(--fill);color:var(--ink)}.btn svg{fill:currentColor;width:17px;height:17px}.btn svg.arrow{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;transition:transform .3s var(--spring)}@media (width<=759.98px){.actions{flex-direction:column}.btn{flex:none}}.screens{scroll-snap-type:x mandatory;scrollbar-width:none;flex:1 0 auto;gap:12px;height:clamp(320px,52vh,600px);margin:26px -28px 0;padding:0 28px 6px;scroll-padding:0 28px;display:flex;overflow-x:auto}.screens::-webkit-scrollbar{display:none}.screens img{aspect-ratio:600/1299;scroll-snap-align:start;background:var(--fill);-webkit-user-select:none;user-select:none;border-radius:20px;flex:none;width:auto;height:100%;box-shadow:0 1px 2px #00000014,0 10px 26px -10px #00000038}.year{margin-top:76px}.year-head{grid-template-columns:1fr auto;align-items:end;margin-bottom:16px;display:grid}.total{font:650 46px/1 var(--font);letter-spacing:-.035em;color:var(--ink);font-variant-numeric:tabular-nums;grid-column:1/-1;margin:0}.sub{color:var(--soft);margin:10px 0 0;font-size:15px;line-height:1.3}.readout{min-height:1.3em;font:500 12px/1.6 var(--mono);color:var(--soft);text-align:right;white-space:nowrap;margin:10px 0 0}.cal-scroll{scrollbar-width:none;overflow-x:auto}.cal-scroll::-webkit-scrollbar{display:none}.cal{grid-template-columns:repeat(var(--weeks), minmax(6px, 1fr));grid-template-rows:auto;gap:3px;min-width:min-content;display:grid}.mon{font:500 11px/1 var(--mono);color:var(--soft);white-space:nowrap;grid-row:1;padding-bottom:5px}.d{aspect-ratio:1;background:var(--l0);opacity:0;transition:transform .55s var(--spring), opacity .35s ease;border-radius:2.5px;display:block;transform:scale(.3)}.year.in .d{opacity:1;transition-delay:calc(var(--i) * 1ms);transform:none}.year.settled .d{transition-delay:0s}.year.settled .d:hover{transform:scale(1.6)}.d.l1{background:var(--l1)}.d.l2{background:var(--l2)}.d.l3{background:var(--l3)}.d.l4{background:var(--l4)}@media (width<=600px){body{font-size:17px}.year{margin-top:64px}.total{font-size:40px}.cal-scroll{margin:0 -20px;padding:0 20px}.cal{grid-template-columns:repeat(var(--weeks), 9px)}}@media (prefers-reduced-motion:reduce){.rise,.story .tile{animation:none}.d,.year.in .d{opacity:1;transition:none;transform:none}}.corner{z-index:40;gap:8px;display:flex;position:absolute;top:20px;right:20px}.corner .circle{position:relative}.mode svg{width:22px;height:22px;overflow:visible}.mode .body{fill:currentColor;transform-box:fill-box;transform-origin:50%;transition:transform .55s var(--spring)}.mode .cut{transition:transform .55s var(--spring)}.mode .rays{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linecap:round;transform-origin:12px 12px;opacity:0;transition:opacity .25s ease, transform .55s var(--spring);transform:scale(.5)rotate(-60deg)}.mode.dark .body{transform:scale(.64)}.mode.dark .cut{transform:translate(8px,-8px)}.mode.dark .rays,.mode:focus-visible .tip{opacity:1;transform:none}@media (hover:hover){.mode:hover .tip{opacity:1;transform:none}}.sound svg{width:22px;height:22px;overflow:visible}.sound .speaker{fill:currentColor;stroke:currentColor;stroke-width:1.2px;stroke-linejoin:round}.sound .wave,.sound .mute{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linecap:round;transform-box:view-box;transform-origin:11px 12px;transition:transform .45s var(--spring), opacity .2s ease}.sound .wave{opacity:0;transform:scale(.5)}.sound.on .wave{opacity:1;transform:none}.sound.on .wave.two{transition-delay:70ms}.sound.on .mute{opacity:0;transform:scale(.4)rotate(-45deg)}.tip{background:var(--ink);color:var(--bg);font:500 12px/1 var(--font);white-space:nowrap;opacity:0;transition:opacity .2s ease, transform .3s var(--out);pointer-events:none;border-radius:8px;padding:6px 9px;position:absolute;top:calc(100% + 8px);right:0;transform:translateY(-4px)}.sound:focus-visible .tip{opacity:1;transform:none}@media (hover:hover){.sound:hover .tip{opacity:1;transform:none}}.game{background:linear-gradient(180deg, var(--sky-top) 0%, var(--sky-mid) 62%, var(--sky-low) 100%);-webkit-user-select:none;user-select:none;touch-action:manipulation;border-radius:24px;height:300px;margin-top:72px;position:relative;overflow:hidden}.game.playing{touch-action:none;cursor:crosshair}.game canvas{width:100%;height:100%;position:absolute;inset:0}.hud{pointer-events:none;justify-content:space-between;align-items:center;display:flex;position:absolute;top:14px;left:18px;right:18px}.score{font:650 28px/1 var(--font);letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums}.lives{color:var(--ink);gap:6px;display:flex}.lives svg{fill:currentColor;width:18px;height:18px;transition:opacity .3s}.lives svg.lost{opacity:.18}.lives.hurt{animation:.4s shake}@keyframes shake{20%{transform:translate(-4px)}45%{transform:translate(4px)}70%{transform:translate(-2px)}}.game-card{text-align:center;pointer-events:none;animation:rise .6s var(--out) backwards;flex-direction:column;justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.game-card .btn{pointer-events:auto;flex:none;margin-top:14px;padding:0 28px}.ask{color:var(--ink);margin:0;font-weight:560}.result{color:var(--text);margin:0;font-size:17px}.result b{font:650 46px/1 var(--font);letter-spacing:-.035em;color:var(--ink);font-variant-numeric:tabular-nums;margin-bottom:4px;display:block}.best{color:var(--soft);margin:6px 0 0;font-size:14px}@media (width<=600px){.corner{top:14px;right:14px}.game{height:280px;margin-top:64px}}@media (prefers-reduced-motion:reduce){.project,.who .face{transition:none;animation:none}}.who{position:relative}.me{font:inherit;color:inherit;letter-spacing:inherit;cursor:default;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:6px;padding:0}.me:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.who .face{object-fit:cover;background:var(--fill);opacity:0;width:62px;height:62px;transition:opacity .2s ease, transform .55s var(--spring);pointer-events:none;border-radius:50%;margin-top:-31px;position:absolute;top:50%;left:-84px;transform:translate(14px)scale(.5)rotate(-14deg);box-shadow:0 10px 22px -10px #00000073}.who.show .face{opacity:1;transform:none}@media (width<=759.98px){.who .face{width:58px;height:58px;margin-top:0;top:-76px;left:0;transform:translateY(12px)scale(.5)rotate(-14deg)}}.projects{margin-top:64px}.projects-head{justify-content:space-between;align-items:center;margin-bottom:22px;display:flex}.projects-head h2{font:600 18px/1.4 var(--font);letter-spacing:-.01em;color:var(--ink);margin:0}.views{background:var(--fill);border-radius:12px;gap:2px;padding:3px;display:flex}.views button{width:34px;height:30px;color:var(--ink);cursor:pointer;transition:background .2s ease, box-shadow .2s ease, transform .3s var(--spring);background:0 0;border:0;border-radius:9px;place-items:center;padding:0;display:grid}.views button.on{background:var(--chip);box-shadow:0 1px 2px #0000001a,0 2px 6px #0000000f}.views button:active{transform:scale(.92)}.views button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.views svg{fill:currentColor;width:17px;height:17px}.project-list{gap:46px;display:grid}.projects.grid .project-list{grid-template-columns:1fr 1fr;gap:30px 20px}.project{min-width:0;animation:rise .6s var(--out) backwards;animation-delay:calc(var(--i) * 50ms)}.project-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px;display:flex}.project-name{color:var(--ink);border-radius:4px;font-weight:560;text-decoration:none}.project-name:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.project-where{color:var(--soft);white-space:nowrap;font-size:13px}.card{aspect-ratio:1200/630;background:var(--fill);isolation:isolate;-webkit-tap-highlight-color:transparent;transition:transform .45s var(--spring), box-shadow .45s ease;border-radius:18px;display:block;position:relative;overflow:hidden;box-shadow:0 1px 2px #0000000f,0 14px 34px -18px #00000052}.projects.list .card{margin:0 -20px}.card:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.card.live{transform:translateY(-2px);box-shadow:0 2px 4px #0000000f,0 24px 44px -20px #0006}.card:active{transform:scale(.99)}.slides{transform:translateY(calc(var(--shot) * -100%));transition:transform .85s cubic-bezier(.65,0,.35,1);display:block;position:absolute;inset:0}.slides img{object-fit:cover;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.go{color:#0b0b0c;opacity:0;width:34px;height:34px;transition:opacity .25s ease, transform .45s var(--spring);background:#fff;border-radius:50%;place-items:center;display:grid;position:absolute;top:12px;right:12px;transform:scale(.6)translate(-6px,6px);box-shadow:0 4px 12px -4px #0000004d}.card.live .go{opacity:1;transform:none}.go svg{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;width:17px;height:17px}.project-line{color:var(--text);margin:12px 0 0;font-size:15px;line-height:1.5}.projects.grid .project-name{font-size:16px}@media (width<=600px){.projects{margin-top:56px}.projects.list .card{margin:0}.projects.grid .project-where{display:none}}.copy{white-space:nowrap;position:relative}.link.email{font:inherit;color:var(--ink);text-underline-offset:4px;cursor:pointer;background:0 0;border:0;padding:0;font-weight:520;text-decoration:underline;text-decoration-thickness:1.5px}@media (hover:hover){.link.email:hover{opacity:1}}.copy-tip{background:var(--panel);color:var(--ink);font:500 14px/1 var(--font);white-space:nowrap;opacity:0;transition:opacity .18s ease, transform .32s var(--spring);pointer-events:none;border-radius:10px;align-items:center;gap:6px;padding:7px 11px 7px 9px;display:inline-flex;position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%,5px)scale(.96);box-shadow:0 0 0 1px #00000014,0 6px 16px -6px #0000002e}:root[data-theme=dark] .copy-tip{box-shadow:0 0 0 1px #ffffff1a,0 8px 20px -6px #0009}.copy-tip svg{fill:none;stroke:currentColor;stroke-width:1.9px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.copy.done .copy-tip,.copy .link:focus-visible+.copy-tip{opacity:1;transform:translate(-50%)}.copy.done .copy-tip{animation:copied .4s var(--spring)}@keyframes copied{40%{transform:translate(-50%,-2px)scale(1.06)}}@media (hover:hover){.copy:hover .copy-tip{opacity:1;transform:translate(-50%)}}.foot{flex-wrap:wrap;gap:10px;margin-top:64px;display:flex}.social{background:var(--fill);height:46px;color:var(--ink);font:560 15px/1 var(--font);opacity:0;-webkit-tap-highlight-color:transparent;transition:background .2s ease, color .2s ease, transform .35s var(--spring);border-radius:12px;align-items:center;gap:9px;padding:0 16px 0 14px;text-decoration:none;display:inline-flex}.foot.in .social{opacity:1;animation:rise .6s var(--out) backwards;animation-delay:calc(var(--i) * 80ms)}.social .mark{fill:currentColor;flex:none;width:19px;height:19px}.social .out{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;opacity:0;width:0;height:14px;transition:width .3s var(--out), margin .3s var(--out), opacity .2s ease, transform .35s var(--spring);margin-left:-9px;transform:translate(-4px,4px)}.social:active{transform:scale(.96)}.social:focus-visible{outline:2px solid var(--ink);outline-offset:3px}@media (hover:hover){.social:hover{background:var(--ink);color:var(--bg)}.social:hover .out{opacity:1;width:14px;margin-left:0;transform:none}}@media (width<=600px){.foot{grid-template-columns:repeat(3,1fr);display:grid}.social{justify-content:center;padding:0 10px}}@media (prefers-reduced-motion:reduce){.social,.foot.in .social{opacity:1;animation:none}}
