:root{--ink:#000;--paper:#fff;--cream:#f3efe6;--muted:#0000009e;--bw:3px;--shadow:6px 6px 0 var(--ink);--gutter:clamp(16px, 4vw, 56px);--max:1240px;--bar:68px;--ease:cubic-bezier(.23, 1, .32, 1);--display:"Bebas Neue", Impact, sans-serif;--text:"Josefin Sans", system-ui, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased}@media not ((hover:hover) and (pointer:fine)){html{scroll-snap-type:y mandatory}}body{background:var(--cream);color:var(--ink);font:400 18px/1.5 var(--text);margin:0}h1,h2,h3,p,ul,ol{margin:0;padding:0}ul,ol{list-style:none}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}img,svg{max-width:100%;display:block}::selection{background:var(--ink);color:var(--paper)}:focus-visible{outline:3px solid var(--ink);outline-offset:3px}a:active,button:active{transition:scale .12s var(--ease);scale:.97}.bar{z-index:10;height:var(--bar);padding-inline:max(var(--gutter), (100% - var(--max)) / 2);align-items:center;gap:28px;display:flex;position:fixed;inset:0 0 auto}.bar-name{letter-spacing:-.4px;margin-right:auto;padding-top:4px;font-size:20px;font-weight:700}.bar-links{gap:6px;font-size:16px;font-weight:600;display:flex}.bar-links a{border:2px solid #0000;padding:7px 12px 4px;transition:border-color .15s ease-out,background-color .15s ease-out,color .15s ease-out}.bar-links a span{opacity:.6;font-size:13px}.bar-links a:hover{border-color:var(--ink)}.bar-links a[aria-current]{background:var(--ink);color:var(--paper)}.bar-socials{gap:2px;display:flex}.bar-socials a{place-items:center;width:38px;height:38px;transition:background-color .15s ease-out,color .15s ease-out;display:grid}.bar-socials a:hover{background:var(--brand,var(--ink));color:#fff}main{position:relative}.snaps{pointer-events:none;width:1px;position:absolute;inset:0 auto auto 0}.snaps>div{scroll-snap-align:start;scroll-snap-stop:always;width:1px;position:absolute;left:0}.screen{background-color:var(--bg,var(--cream));border-top:var(--bw) solid var(--ink);background-image:radial-gradient(#00000021 1px,#0000 1.4px);background-size:22px 22px;min-height:100svh;display:flex;position:sticky;top:0}.screen:after{content:"";opacity:calc(var(--cover,0) * .45);pointer-events:none;will-change:opacity;background:#000;position:absolute;inset:0}.screen-inner{transform:scale(calc(1 - var(--cover,0) * .07));transform-origin:50% 35%;will-change:transform;width:min(100% - 2 * var(--gutter), var(--max));padding:calc(var(--bar) + 16px) 0 40px;flex-direction:column;justify-content:center;gap:28px;margin-inline:auto;display:flex}.screen-inner:has(>.footer){padding-bottom:18px}.screen-head{border-bottom:var(--bw) solid var(--ink);align-items:end;gap:18px;padding-bottom:6px;display:flex}.screen-num{font:400 clamp(28px, 3vw, 40px) / 1 var(--display);background:var(--ink);color:var(--bg);align-self:center;padding:6px 10px 2px}.screen-head h2{font:400 clamp(60px, 9vw, 120px) / .82 var(--display);margin-right:auto;padding-top:.1em}.more{border:2px solid var(--ink);background:var(--paper);white-space:nowrap;align-items:center;gap:8px;margin-bottom:8px;padding:8px 14px 5px;font-weight:700;transition:background-color .15s ease-out,color .15s ease-out;display:inline-flex}.more+.more{margin-left:-8px}.more:hover{background:var(--brand,var(--ink));color:var(--brand-fg,var(--paper))}.more .icon{margin-top:-3px}.panel,.project{background:var(--paper);border:var(--bw) solid var(--ink);box-shadow:var(--shadow)}.panel{padding:22px}.hero{border-top:0}.hero .screen-inner{padding-top:calc(var(--bar) + 8vh);justify-content:space-between;gap:48px}.hero-name{font:400 clamp(64px, 14vw, 210px) / .86 var(--display);text-transform:uppercase}.hero-line{vertical-align:top;margin-right:.2em;padding-top:.06em;display:inline-block;overflow:hidden}.hero-line:last-child{margin-right:0}.hero-line>span{animation:rise-in .9s var(--ease) both;animation-delay:calc(.1s + var(--i) * 90ms);display:block}.hero-role b{color:var(--ink)}.hero-role{max-width:60ch;color:var(--muted);text-wrap:balance;animation:fade-up .7s var(--ease) .3s both;margin-top:18px;font-size:clamp(20px,2vw,26px);font-weight:600;line-height:1.35}.hero-index{grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:18px;display:grid}.hero-index a{background:var(--bg);border:var(--bw) solid var(--ink);box-shadow:var(--shadow);transition:translate .18s var(--ease), box-shadow .18s var(--ease);animation:fade-up .6s var(--ease) both;animation-delay:calc(.45s + var(--i) * 80ms);gap:2px;padding:16px 18px 14px;display:grid;position:relative}.hero-index a:hover{box-shadow:9px 9px 0 var(--ink);translate:-3px -3px}.hero-index-num{font:400 22px/1 var(--display)}.hero-index-title{font:400 clamp(40px, 4.4vw, 60px) / .9 var(--display);padding-top:4px}.hero-index-blurb{font-size:16px;font-weight:600}.hero-index-arrow{transition:translate .18s var(--ease);font-size:26px;font-weight:700;position:absolute;top:12px;right:16px}.hero-index a:hover .hero-index-arrow{translate:0 4px}.hero{overflow-x:clip}.hero .screen-inner{position:relative}.stickers{inset:var(--bar) 0 0;z-index:2;pointer-events:none;position:absolute}.sticker{left:var(--x);top:var(--y);rotate:var(--r);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;pointer-events:auto;transition:scale .2s var(--ease), rotate .3s var(--ease);animation:.5s cubic-bezier(.34,1.56,.64,1) both slap;animation-delay:calc(.7s + var(--i) * 90ms);place-items:center;display:grid;position:absolute}.sticker:hover{scale:1.05}.sticker.is-dragging{cursor:grabbing;rotate:0deg;scale:1.1}.sticker-cut{filter:drop-shadow(3px 0 #fff)drop-shadow(-3px 0 #fff)drop-shadow(0 3px #fff)drop-shadow(0 -3px #fff)drop-shadow(4px 6px 6px #00000038);gap:2px}.sticker-cut b{font:400 36px/.9 var(--display);letter-spacing:.01em;color:var(--ink);padding-top:3px}.sticker.is-dragging.sticker-cut{filter:drop-shadow(3px 0 #fff)drop-shadow(-3px 0 #fff)drop-shadow(0 3px #fff)drop-shadow(0 -3px #fff)drop-shadow(10px 16px 14px #00000040)}.sticker-emblem{pointer-events:none;width:92px}.sticker-portrait{pointer-events:none;width:223px}.sticker.sticker-me{filter:drop-shadow(4px 6px 6px #00000038)}.sticker.is-dragging.sticker-me{filter:drop-shadow(10px 16px 14px #00000040)}.sticker-github{color:var(--ink)}.sticker-claude{color:#d97757}.sticker-monkeytype{color:#e2b714}.sticker-spotify{color:#1ed760}@keyframes slap{0%{opacity:0;scale:1.5;rotate:calc(var(--r) - 14deg)}}.projects{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;display:grid}.project{height:100%;transition:translate .18s var(--ease), box-shadow .18s var(--ease);flex-direction:column;display:flex}.project:hover{box-shadow:9px 9px 0 var(--ink);translate:-3px -3px}.project:hover .project-thumb img{scale:1.05}.project-thumb{aspect-ratio:16/9;border-bottom:var(--bw) solid var(--ink);display:block;overflow:hidden}.project-thumb img{object-fit:cover;object-position:top;width:100%;height:100%;transition:scale .4s var(--ease)}.project-bar{justify-content:space-between;align-items:baseline;gap:8px;padding:12px 14px 9px;display:flex}.project h3{min-width:0;font-size:19px;font-weight:700;line-height:1.15}.project-year{color:var(--muted);font-size:14px;font-weight:600}.tabs{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}.tab{background:var(--paper);border:2px solid var(--ink);color:var(--ink);border-radius:0;align-items:baseline;gap:8px;padding:8px 12px 5px;font-size:16px;font-weight:700;transition:background-color .15s ease-out,color .15s ease-out;display:inline-flex}.tab:hover{background:var(--cream)}.tab[aria-pressed=true]{background:var(--ink);color:var(--paper)}.tab-count{opacity:.6;font-variant-numeric:tabular-nums;font-size:13px}.heat-scroll{scrollbar-width:thin;padding-bottom:4px;overflow-x:auto}.heat-months,.heat-grid{grid-template-columns:repeat(53,minmax(10px,1fr));column-gap:4px;min-width:700px;display:grid}.heat-months{color:var(--muted);height:22px;font-size:13px}.heat-months span{white-space:nowrap}.heat-grid{grid-template-rows:repeat(7,auto);grid-auto-flow:column;row-gap:4px}.day{aspect-ratio:1;background:#ebe7de}.day[data-l="1"]{background:#9be9a8}.day[data-l="2"]{background:#40c463}.day[data-l="3"]{background:#2a9a4b}.day[data-l="4"]{background:#0e5c2b}[data-source=claude] .day[data-l="1"]{background:#f6d5c6}[data-source=claude] .day[data-l="2"]{background:#eda98a}[data-source=claude] .day[data-l="3"]{background:#d97757}[data-source=claude] .day[data-l="4"]{background:#9c4325}.heat-bar{flex-wrap:wrap;gap:8px 28px;margin-bottom:20px;display:flex}.heat-bar .tabs{margin-bottom:0}.heat-grid .day{animation:pop .45s var(--ease) both;animation-delay:calc(var(--c) * 9ms)}.heat:not(.is-in) .heat-grid .day{animation-play-state:paused}.heat-grid .day.is-hover{outline:2px solid var(--ink);outline-offset:1px}.heat-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;display:flex}.heat-detail{color:var(--muted);font-variant-numeric:tabular-nums}@media (width<=640px){.heat-detail{flex-basis:100%;min-height:2lh}}.heat-detail b{color:var(--ink)}.heat-legend{color:var(--muted);align-items:center;gap:4px;font-size:14px;display:flex}.heat-legend .day{width:13px;margin-inline:1px}.games-list{gap:10px;margin-top:14px;display:grid}.games-list li{grid-template-columns:92px minmax(120px,220px) 1fr auto;align-items:center;gap:14px;display:grid}.games-list img{object-fit:cover;border:2px solid var(--ink);width:92px;height:35px}.game-name{white-space:nowrap;text-overflow:ellipsis;padding-top:3px;font-weight:700;overflow:hidden}.game-bar{height:14px;width:max(4px, calc(var(--w) * 100%));background:var(--ink);transform-origin:0;transition:transform .9s var(--ease);transition-delay:calc(var(--i) * 70ms)}.games:not(.is-in) .game-bar{transform:scaleX(0)}.game-hours{font-variant-numeric:tabular-nums;text-align:right;min-width:64px;padding-top:3px;font-weight:600}.games-recent{color:var(--muted);font-size:15px}.play-grid{gap:20px;display:grid}.card-head{font:400 26px/1 var(--display);letter-spacing:.02em}@media (width>=1100px){.play-grid{grid-template-columns:1fr 1fr}.games-list{gap:4px}.games-list li,.music-song{min-height:59px}}.games,.music{flex-direction:column;display:flex}.games-recent,.music-foot{margin-top:auto;padding-top:18px}.music-list{gap:4px;margin-top:14px;display:grid}.music-song{width:calc(100% + 8px);color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:12px;margin-inline:-4px;padding:4px;transition:background-color .15s ease-out;display:flex}.music-song:hover{background:var(--cream)}.music-song[aria-pressed=true]{background:var(--ink);color:var(--paper)}.music-song[aria-pressed=true] .music-text span{color:inherit;opacity:.7}.music-play{flex:none;display:grid}.music-play>*{grid-area:1/1}.music-play img{object-fit:cover;border:2px solid var(--ink);width:44px;height:44px}.music-icon{border:2px solid var(--ink);color:#fff;opacity:0;background:#00000080;place-items:center;width:44px;height:44px;transition:opacity .15s ease-out;display:grid}.music-song:hover .music-icon,.music-song:focus-visible .music-icon,.music-song[aria-pressed=true] .music-icon{opacity:1}.music-text{min-width:0;padding-top:3px;display:grid}.music-text b,.music-text span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.music-text span{color:var(--muted);font-size:14px}.music-foot{color:var(--muted);font-size:15px}.music-foot b{color:var(--ink)}.music-foot a{color:var(--ink);text-underline-offset:3px;font-weight:700;text-decoration:underline}.footer{border-top:2px solid var(--ink);flex-wrap:wrap;justify-content:space-between;gap:8px 24px;padding-top:14px;font-size:15px;font-weight:600;display:flex}.footer a{text-underline-offset:3px;text-decoration:underline}@keyframes rise-in{0%{transform:translateY(105%)}}@keyframes fade-up{0%{opacity:0;transform:translateY(16px)}}@keyframes pop{0%{opacity:0;transform:scale(.4)}}.screen:not(.hero) .screen-head,.screen:not(.hero) .panel,.projects li{opacity:0;transition:opacity .6s var(--ease), transform .6s var(--ease);transform:translateY(24px)}.screen.is-active .screen-head,.screen.is-active .panel,.screen.is-active .projects li{opacity:1;transform:none}.screen.is-active .panel{transition-delay:.12s}.projects li{transition-delay:calc(.12s + var(--i) * 60ms)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.screen .screen-head,.screen .panel,.projects li{opacity:1;transform:none}.games:not(.is-in) .game-bar{transform:none}}@media (width<=900px){.bar-links{display:none}.projects{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){:root{--bw:2px;--shadow:4px 4px 0 var(--ink);--bar:56px}body{font-size:17px}.bar{background:var(--cream);border-bottom:2px solid var(--ink);gap:8px}.bar-name{font-size:17px}.bar-socials a{width:32px;height:32px}.bar-socials .icon{width:17px;height:17px}.screen-inner{gap:20px;padding-bottom:28px}.screen-head{flex-wrap:wrap;gap:10px}.screen-head .more{margin-bottom:4px}.hero .screen-inner{padding-top:calc(var(--bar) + 3vh);gap:20px}.hero-index{grid-template-columns:1fr;gap:10px}.hero-index a{grid-template-columns:auto 1fr;align-items:baseline;column-gap:12px;padding:9px 14px 7px}.hero-index-title{font-size:30px}.hero-index-blurb{grid-column:2}.hero-main{order:0}.stickers{order:1;height:172px;position:relative;inset:auto}.hero .screen-inner{padding-bottom:16px}.hero-index{order:2}.hero-name{font-size:15vw}.sticker{left:var(--mx);top:var(--my)}.sticker-emblem{width:56px}.sticker-portrait{width:119px}.sticker-cut b{font-size:24px}.sticker-github .icon{width:54px;height:54px}.sticker-claude svg{width:64px;height:64px}.sticker-monkeytype svg{width:58px;height:58px}.sticker-spotify .icon{width:54px;height:54px}.projects{gap:14px}.project-bar{padding:10px 10px 7px}.project h3{font-size:15px}.project-year{display:none}.panel{padding:14px}.tabs{scrollbar-width:none;flex-wrap:nowrap;margin-bottom:14px;overflow-x:auto}.tab{flex:none}.games-list li{grid-template-columns:64px minmax(0,1fr) auto;row-gap:6px}.games-list img{width:64px;height:24px}.game-hours{grid-area:1/3}.game-bar{grid-column:1/-1}}
