:root{--font-system: -apple-system, BlinkMacSystemFont, "SF Pro", "Segoe UI", Roboto, system-ui, sans-serif;--bg: #fbfbfd;--fg: #1d1d1f;--accent: #0a7ea4;--card: #ffffff;--border: rgba(0, 0, 0, .1);--nav-bg: rgba(251, 251, 253, .72);--muted: color-mix(in srgb, var(--fg) 62%, transparent);--max: 68rem;--nav-h: 3.25rem;--radius: 16px;--gap: clamp(1rem, 3vw, 2rem);--section-pad: clamp(3.5rem, 9vw, 7rem)}@media(prefers-color-scheme:dark){:root{--bg: #050506;--fg: #f5f5f7;--accent: #64d2ff;--card: #16161a;--border: rgba(255, 255, 255, .14);--nav-bg: rgba(5, 5, 6, .62)}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:var(--bg)}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{margin:0;font-family:var(--font-system);background:transparent;color:var(--fg);line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.bg-fx{position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(55rem 45rem at 50% -8%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 70%),radial-gradient(40rem 40rem at 85% 20%,color-mix(in srgb,var(--accent) 9%,transparent),transparent 65%)}@media(prefers-color-scheme:light){.bg-fx{opacity:.6}}@media(prefers-reduced-motion:no-preference){@supports (animation-timeline: scroll()){.bg-fx{animation:bg-drift linear both;animation-timeline:scroll(root);animation-range:0 200vh}@keyframes bg-drift{to{transform:translateY(22vh) scale(1.12);opacity:.7}}}}a{color:inherit}img,video{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.skip-link{position:absolute;left:-999px}.skip-link:focus{left:1rem;top:1rem;z-index:20;background:var(--card);padding:.5rem .9rem;border-radius:8px;border:1px solid var(--border)}.nav{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:1rem;height:var(--nav-h);padding:0 clamp(1rem,4vw,2rem);padding-top:env(safe-area-inset-top);background:var(--nav-bg);border-bottom:1px solid var(--border);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.nav__brand{font-weight:600;text-decoration:none;white-space:nowrap}.nav__links{display:flex;gap:clamp(.75rem,2.5vw,1.5rem);overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.nav__links::-webkit-scrollbar{display:none}.nav__links a{display:inline-flex;align-items:center;gap:.4rem;text-decoration:none;color:var(--muted);font-size:.9rem;white-space:nowrap;transition:color .2s ease}.nav__links a:hover{color:var(--fg)}.nav__icon{width:20px;height:20px;display:none}@media(max-width:40rem){.nav__label{display:none}.nav__icon{display:block}.nav__links{gap:clamp(.4rem,2.5vw,1.4rem)}.nav__links a{padding:.3rem}.nav__icon{width:18px;height:18px}}.to-top{position:fixed;right:clamp(1rem,4vw,2rem);bottom:calc(clamp(1rem,4vw,2rem) + env(safe-area-inset-bottom));z-index:9;display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border-radius:50%;background:var(--nav-bg);border:1px solid var(--border);color:var(--fg);-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);box-shadow:0 6px 22px #00000047;visibility:hidden;opacity:0;pointer-events:none;transform:translateY(.75rem) scale(.9);transition:visibility .2s ease,opacity .2s ease,color .2s ease,border-color .2s ease,transform .2s ease}.to-top.is-visible{visibility:visible;opacity:1;pointer-events:auto;transform:none}@media(prefers-reduced-motion:reduce){.to-top,.to-top.is-visible{transform:none}}.top-sentinel{position:absolute;top:0;left:0;width:1px;height:60vh;pointer-events:none}.to-top:hover{color:var(--accent);border-color:var(--accent)}.to-top:active{transform:scale(.94)}.to-top svg{width:20px;height:20px}.section{max-width:var(--max);margin-inline:auto;padding:var(--section-pad) clamp(1.25rem,5vw,2rem);scroll-margin-top:calc(var(--nav-h) + 1rem - var(--section-pad))}.section__title{font-size:clamp(1.75rem,5vw,2.75rem);font-weight:700;letter-spacing:-.02em;margin:0 0 clamp(1.5rem,4vw,2.5rem)}.hero{min-height:100svh;display:grid;place-content:center;padding:calc(var(--nav-h) + 2rem) clamp(1.25rem,5vw,2rem) 3rem}.hero__inner{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.5rem}.hero__eyebrow{margin:0;color:var(--muted);font-size:clamp(.85rem,2.5vw,1rem);letter-spacing:.02em}.hero__name{margin:.25rem 0 0;font-size:clamp(2.75rem,11vw,6rem);font-weight:700;letter-spacing:-.03em;line-height:1.02}.hero__tagline{margin:.35rem 0 0;font-size:clamp(1.15rem,4vw,1.9rem);font-weight:500;color:var(--muted)}.hero__availability{margin:.75rem 0 0;font-size:clamp(.9rem,2.5vw,1.05rem);color:var(--muted);max-width:34rem;line-height:1.5}.hero__availability span{display:block}.hero__actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-top:1.75rem}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.7rem 1.4rem;border-radius:980px;font-size:1rem;font-weight:500;text-decoration:none;transition:transform .15s ease,background .2s ease,border-color .2s ease}.btn:active{transform:scale(.97)}.btn--primary{background:var(--accent);color:#fff}.btn--primary:hover{filter:brightness(1.05)}.btn--ghost{border:1px solid var(--border);color:var(--fg)}.btn--ghost:hover{border-color:var(--accent);color:var(--accent)}.hero__resume{margin:1.1rem 0 0;font-size:.95rem}.hero__resume a{color:var(--muted);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.hero__resume a:hover{color:var(--accent)}.about__body{font-size:clamp(1.1rem,2.6vw,1.4rem);max-width:46rem;color:var(--fg);margin:0 0 clamp(2rem,5vw,3rem)}.skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:var(--gap)}.skills__group h3{margin:0 0 .6rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.skills__group ul{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:.4rem}.skills__group li{font-size:.85rem;padding:.3rem .7rem;border:1px solid var(--border);border-radius:980px}.skills__group--text .cred{margin:0;font-size:.9rem}.skills__group--text .cred--sub{margin-top:.15rem;font-size:.85rem;color:var(--muted)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.card__body{padding:1.25rem}.card__title{margin:0 0 .35rem;font-size:1.2rem;font-weight:600}.card__title a{text-decoration:none}.card__title a:hover{color:var(--accent)}.card__meta{margin:0 0 .6rem;font-size:.85rem;color:var(--muted)}.card__blurb{margin:0;color:var(--muted)}.showcase{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));gap:var(--gap)}.card__media{width:100%;aspect-ratio:16 / 9;object-fit:cover;background:var(--card)}.card__media--placeholder{display:grid;place-content:center;color:#fff;font-weight:600;letter-spacing:.01em;text-align:center;padding:1rem;background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 45%,#000))}.card__badges{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.9rem}.badge{font-size:.8rem;padding:.35rem .75rem;border:1px solid var(--border);border-radius:8px;text-decoration:none;color:var(--muted)}.badge:hover{color:var(--fg);border-color:var(--accent)}.store-badge{display:inline-flex;align-items:center;height:40px;border-radius:8px;text-decoration:none;transition:opacity .15s ease}.store-badge:hover{opacity:.82}.store-badge img{display:block;width:auto;height:40px}.store-badge--google-play img{height:59.524px;margin:-9.762px}.store-badge--steam{background:#171a21;padding:0 .85rem;border:1px solid rgba(255,255,255,.16)}.store-badge--steam img{height:24px}.store-badge--epic-games-store,.store-badge--meta-quest{flex-direction:column;align-items:flex-start;justify-content:center;padding:0 .85rem;color:#fff;border:1px solid rgba(255,255,255,.16)}.store-badge--epic-games-store{background:#121212}.store-badge--meta-quest{background:#1c1e21}.store-badge__pre{font-size:.55rem;text-transform:uppercase;letter-spacing:.07em;opacity:.78;line-height:1.2}.store-badge__name{font-size:.86rem;font-weight:600;line-height:1.2;white-space:nowrap}.card__credit{margin-top:.75rem;font-size:.72rem;line-height:1.4;color:var(--muted);opacity:.75}.timeline{display:grid;gap:var(--gap)}.role{padding:clamp(1.25rem,3vw,1.75rem);background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}.role__head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;align-items:baseline}.role__title{margin:0;font-size:1.2rem;font-weight:600}.role__title span{color:var(--muted);font-weight:500}.role__meta{margin:0;font-size:.85rem;color:var(--muted);white-space:nowrap}.role__stack{margin:.5rem 0 .9rem;font-size:.85rem;color:var(--muted)}.role__highlights{margin:0;padding-left:1.1rem;display:grid;gap:.4rem}.role__highlights li{color:var(--fg)}.role__engagement{margin-top:1.1rem;padding-left:1rem;border-left:2px solid var(--border)}.role__engagement-head{margin:0;font-size:.95rem;font-weight:600}.role__engagement-head span{color:var(--muted);font-weight:400;white-space:nowrap}.role__engagement .role__stack{margin:.35rem 0 .7rem}.timeline__more>summary{cursor:pointer;list-style:none;width:fit-content;margin-inline:auto;display:flex;align-items:center;gap:.4rem;padding:.4rem .6rem;font-size:.85rem;color:var(--muted);transition:color .2s ease}.timeline__more>summary::-webkit-details-marker{display:none}.timeline__more>summary:after{content:"▾";font-size:.7em;transition:transform .2s ease}.timeline__more[open]>summary:after{transform:rotate(180deg)}.timeline__more>summary:hover{color:var(--fg)}.timeline__more-list{display:grid;gap:var(--gap);margin-top:var(--gap)}.role--compact{padding:0 0 0 clamp(1rem,3vw,1.5rem);background:none;border:0;border-left:2px solid var(--border);border-radius:0}.role--compact .role__title{font-size:1.05rem}.role--compact .role__highlights li{font-size:.92rem;color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));gap:var(--gap)}.project{padding:1.25rem}.tags{display:flex;flex-wrap:wrap;gap:.4rem;margin:.9rem 0 0;padding:0;list-style:none}.tags li{font-size:.75rem;color:var(--muted);padding:.25rem .6rem;border:1px solid var(--border);border-radius:980px}.section--contact{text-align:center}.contact{display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(1rem,4vw,2.5rem);margin:0;padding:0;list-style:none;font-size:clamp(1.05rem,3vw,1.35rem)}.contact a{text-decoration:none}.contact a:hover{color:var(--accent)}.contact__foot{margin:1.5rem 0 0;color:var(--muted)}.blog{max-width:44rem;margin-inline:auto;padding:calc(var(--nav-h) + 3rem) clamp(1.25rem,5vw,2rem) 5rem}.blog__heading{font-size:clamp(2rem,6vw,3rem);letter-spacing:-.02em;margin:0 0 2rem}.blog__list{list-style:none;margin:0;padding:0;display:grid;gap:1rem}.blog__item a{display:block;padding:1.25rem;border:1px solid var(--border);border-radius:var(--radius);text-decoration:none;transition:border-color .2s ease}.blog__item a:hover{border-color:var(--accent)}.blog__item h2{margin:0;font-size:1.3rem}.blog__date,.post__date{color:var(--muted);font-size:.85rem;margin:.35rem 0}.blog__desc{margin:.5rem 0 0;color:var(--muted)}.blog__empty{color:var(--muted)}.post__back{display:inline-block;margin-bottom:1.5rem;color:var(--muted);text-decoration:none}.post__title{font-size:clamp(1.9rem,6vw,3rem);letter-spacing:-.02em;margin:0}.post__content{margin-top:2rem;font-size:1.1rem}.post__content h2{margin:2rem 0 .75rem;font-size:1.5rem}.post__content p,.post__content ul{margin:0 0 1.1rem}.post__content a{color:var(--accent)}.explore{display:none;position:fixed;inset:0;z-index:100;background:#000}.explore.is-open{display:block}.explore-open,.explore-open body{overflow:hidden}.explore #glcanvas{display:block;width:100%;height:100%;outline:none;touch-action:none}.explore__status{position:absolute;inset-inline:0;top:50%;margin:0;transform:translateY(-50%);padding:0 1.5rem;text-align:center;color:#f5f5f7;font-size:.95rem}.explore__close{position:absolute;top:max(1rem,env(safe-area-inset-top));right:max(1rem,env(safe-area-inset-right));padding:.5rem 1.1rem;border:1px solid rgba(255,255,255,.28);border-radius:980px;background:#00000073;backdrop-filter:blur(8px);color:#f5f5f7;font:inherit;font-size:.9rem;cursor:pointer}.explore__close:hover{border-color:#64d2ff;color:#64d2ff}@media(scripting:enabled){[data-reveal]{opacity:0;transition:opacity .6s ease}[data-reveal].is-visible{opacity:1}}@media(prefers-reduced-motion:reduce){[data-reveal]{opacity:1!important;transition:none}.btn:active{transform:none}}
