@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap";:root{font-family:DM Sans,sans-serif;color-scheme:light;color:var(--ink);background:var(--paper);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-optical-sizing:auto;font-weight:400;--paper: #f5f4ef;--ink: #24241f;--muted: #777770;--orange: #fa6845;--gold: #f2b749;--pacman-color: #d97706;--tech-accent: #738b3f;--line: #deddd5;--text-secondary: #686860;--surface-hero: #ede9de;--surface-about: #e9e7df;--surface-contact: #f0eee7;--surface-dot: #c9c4b5;--orbit-line: #928b7b;--header-glass: rgba(245, 244, 239, .82);--texture-grid: 3.8%;--texture-diagonal: 1.8%;--data-line: #4f8b5b}:root[data-theme=dark]{color-scheme:dark;--paper: #171815;--ink: #f2f0e8;--muted: #aaa99f;--gold: #f2b749;--pacman-color: #ffd000;--tech-accent: #c6ed76;--line: #393a34;--text-secondary: #c0bfb6;--surface-hero: #25251f;--surface-about: #23241f;--surface-contact: #1d1e1a;--surface-dot: #484940;--orbit-line: #484940;--header-glass: rgba(23, 24, 21, .84);--texture-grid: 2.2%;--texture-diagonal: 1.1%;--data-line: #b9df6b}*{box-sizing:border-box}html{scroll-behavior:smooth}body{position:relative;isolation:isolate;margin:0;min-width:320px;overflow-x:hidden;background-color:var(--paper);background-image:radial-gradient(ellipse 70% 42% at 12% -6%,color-mix(in srgb,var(--orange) 7%,transparent),transparent 72%),radial-gradient(ellipse 58% 38% at 92% 10%,color-mix(in srgb,var(--tech-accent) 6%,transparent),transparent 74%),repeating-linear-gradient(90deg,transparent 0,transparent 79px,color-mix(in srgb,var(--ink) var(--texture-grid),transparent) 80px),repeating-linear-gradient(0deg,transparent 0,transparent 79px,color-mix(in srgb,var(--ink) var(--texture-grid),transparent) 80px),repeating-linear-gradient(135deg,transparent 0,transparent 11px,color-mix(in srgb,var(--ink) var(--texture-diagonal),transparent) 12px),linear-gradient(var(--paper),var(--paper));background-attachment:fixed}.matrix-rain{position:fixed;z-index:0;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;opacity:.7;color:var(--data-line);font:11px/1.65 DM Mono,monospace;letter-spacing:.18em}.matrix-column{position:absolute;top:-30%;left:var(--matrix-x);display:block;width:18px;text-shadow:0 0 10px currentColor;animation:matrix-fall 18s linear infinite;animation-delay:var(--matrix-delay)}.matrix-column i{display:block;height:1.65em;font-style:normal}.matrix-column i:nth-child(3n){opacity:.35}.matrix-column i:nth-child(5n){opacity:.5}.matrix-column:nth-child(3n){opacity:.7;animation-duration:25s}.matrix-column:nth-child(4n){opacity:.45;animation-duration:21s}:root[data-theme=dark] .matrix-rain{opacity:.13}@keyframes matrix-fall{0%{transform:translateY(-15vh)}to{transform:translateY(145vh)}}@media(prefers-reduced-motion:reduce){.matrix-column{animation:none}}main{position:relative;z-index:1}a{color:inherit;text-decoration:none}a:focus-visible,.theme-toggle:focus-visible{outline:2px solid var(--orange);outline-offset:5px}body.custom-cursor-enabled,body.custom-cursor-enabled *:not(input):not(textarea):not(select):not([contenteditable=true]){cursor:none!important}.custom-cursor{position:fixed;top:0;left:0;z-index:2000;width:22px;height:22px;border:1.5px solid #ff4b0b;border-radius:50%;background:#ff4b0b1a;box-shadow:0 0 12px #ff4b0b66;opacity:0;pointer-events:none;will-change:transform;transition:width .18s cubic-bezier(.16,1,.3,1),height .18s cubic-bezier(.16,1,.3,1),opacity .14s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease,scale .18s cubic-bezier(.16,1,.3,1)}.custom-cursor:after{position:absolute;top:50%;left:50%;width:3px;height:3px;border-radius:50%;background:#ff4b0b;content:"";transform:translate(-50%,-50%)}.custom-cursor[data-visible=true]{opacity:1}.custom-cursor[data-hovered=true]{width:38px;height:38px;background:#ff4b0b30;box-shadow:0 0 18px #ff4b0b80}.custom-cursor[data-in-header=true]{width:10px;height:10px;border:1px solid #85847b;background:#e7e4d8;box-shadow:0 0 0 1px #85847b,0 1px 4px #0005}.custom-cursor[data-in-header=true]:after{display:none!important}.custom-cursor[data-pressed=true]{scale:.92;translate:0 -2px}@keyframes float-y{0%,to{transform:translateY(0)}50%{transform:translateY(calc(var(--float-amp, 10px) * -1))}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes stack-drift-right{0%{transform:translate(-50%)}to{transform:translate(0)}}@keyframes orbit-spin-1{0%{transform:translate(-50%,-50%) rotateX(var(--orbit-tilt-x)) rotateY(var(--orbit-tilt-y)) rotate(var(--orbit-tilt-z, 0deg))}to{transform:translate(-50%,-50%) rotateX(var(--orbit-tilt-x)) rotateY(var(--orbit-tilt-y)) rotate(calc(var(--orbit-tilt-z, 0deg) + 360deg))}}@keyframes orbit-spin-2{0%{transform:translate(-50%,-50%) rotateX(var(--orbit-tilt-x)) rotateY(var(--orbit-tilt-y)) rotate(var(--orbit-tilt-z, 0deg))}to{transform:translate(-50%,-50%) rotateX(var(--orbit-tilt-x)) rotateY(var(--orbit-tilt-y)) rotate(calc(var(--orbit-tilt-z, 0deg) - 360deg))}}@keyframes orbit-spin-3{0%{transform:translate(-50%,-50%) rotateX(var(--orbit-tilt-x)) rotateY(var(--orbit-tilt-y)) rotate(var(--orbit-tilt-z, 0deg))}to{transform:translate(-50%,-50%) rotateX(var(--orbit-tilt-x)) rotateY(var(--orbit-tilt-y)) rotate(calc(var(--orbit-tilt-z, 0deg) + 360deg))}}@keyframes orbit-spin-4{0%{transform:translate(-50%,-50%) rotateX(var(--orbit-tilt-x)) rotateY(var(--orbit-tilt-y)) rotate(var(--orbit-tilt-z, 0deg))}to{transform:translate(-50%,-50%) rotateX(var(--orbit-tilt-x)) rotateY(var(--orbit-tilt-y)) rotate(calc(var(--orbit-tilt-z, 0deg) - 360deg))}}@keyframes star-glow{0%,to{filter:drop-shadow(0 0 1px currentColor)}50%{filter:drop-shadow(0 0 7px currentColor)}}@keyframes scale-in{0%{transform:translate(-50%,-50%) rotateY(var(--scene-counter-y, 0deg)) rotateX(var(--scene-counter-x, 0deg)) scale(0);opacity:0}to{transform:translate(-50%,-50%) rotateY(var(--scene-counter-y, 0deg)) rotateX(var(--scene-counter-x, 0deg)) scale(1);opacity:1}}@keyframes plate-settle{0%{translate:-50% 0;box-shadow:0 2px 0 var(--line)}22%{translate:-50% 6px;box-shadow:0 1px 0 var(--line)}46%{translate:-50% 4px;box-shadow:0 1px 0 var(--line)}68%{translate:-50% 2px;box-shadow:0 1px 0 var(--line)}86%{translate:-50% .6px;box-shadow:0 2px 0 var(--line)}to{translate:-50% 0;box-shadow:0 2px 0 var(--line)}}.back-to-top{position:fixed;left:50%;bottom:28px;z-index:90;display:grid;width:48px;height:48px;place-items:center;border:1px solid var(--line);border-radius:50%;color:var(--ink);background:var(--surface-about);box-shadow:0 2px 0 var(--line);font:23px/1 DM Sans,sans-serif;cursor:pointer;opacity:0;visibility:hidden;pointer-events:none;translate:-50% 10px;scale:.94;transition:opacity .22s ease,visibility .22s ease,translate .26s cubic-bezier(.16,1,.3,1),scale .26s cubic-bezier(.16,1,.3,1),color .16s ease,border-color .16s ease,box-shadow .16s ease}.back-to-top.is-visible{opacity:1;visibility:visible;pointer-events:auto;translate:-50% 0;scale:1}.back-to-top:hover{color:var(--orange);border-color:var(--orange);box-shadow:0 4px 0 var(--line);translate:-50% -3px}.back-to-top:active{translate:-50% 1px;scale:.97;box-shadow:0 1px 0 var(--line)}.back-to-top.has-reached-end{animation:plate-settle 1.25s cubic-bezier(.2,.75,.25,1)}.site-header,.section-wrap,.hero{width:min(1120px,calc(100% - 96px));margin-inline:auto}.site-header{width:100%;margin-inline:0;padding-inline:max(48px,calc((100% - 1120px)/2));position:sticky;top:0;z-index:100;height:88px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:var(--paper);transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .3s ease}.site-header:not(.header-visible) .wordmark,.site-header:not(.header-visible) nav a{opacity:0;transform:translateY(-8px)}.site-header.header-visible .wordmark,.site-header.header-visible nav a{opacity:1;transform:translateY(0);transition:opacity .5s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1),color .18s ease}.site-header.header-scrolled{background:var(--header-glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 1px 0 var(--line)}.site-header.header-hidden{transform:translateY(-100%)}.wordmark{font:800 29px/1 Manrope,sans-serif;letter-spacing:-3px}.site-header nav{position:relative;display:flex;align-items:center;gap:22px;font-size:13px}.site-header nav a{transition:color .18s ease,opacity .5s ease,transform .5s ease}.site-header nav a:hover,.text-link:hover,.footer-email:hover{color:var(--orange)}.site-header nav .section-nav-link{position:relative;z-index:1;padding:10px 12px;border-radius:5px;transition:color .22s ease,opacity .5s ease,transform .5s cubic-bezier(.16,1,.3,1)}.site-header nav .section-nav-link[aria-current=location]{color:var(--ink)}.nav-active-pill{position:absolute;top:50%;left:0;z-index:0;height:36px;border:1px solid var(--line);border-radius:999px;background:var(--surface-about);box-shadow:0 2px 0 var(--line);pointer-events:none;transition:width .42s cubic-bezier(.16,1,.3,1),transform .42s cubic-bezier(.16,1,.3,1),opacity .18s ease}.nav-contact{padding:11px 15px;border:1px solid var(--line);border-radius:30px;box-shadow:0 2px 0 var(--line);transition:border-color .22s ease,box-shadow .22s ease,background-color .22s ease,translate .22s cubic-bezier(.16,1,.3,1),scale .22s cubic-bezier(.16,1,.3,1)}.nav-contact:hover{border-color:var(--orange);background:var(--surface-about);box-shadow:0 4px 0 var(--line);translate:0 -2px;scale:1.02}.nav-contact:active{box-shadow:0 1px 0 var(--line);translate:0 1px;scale:.98}.nav-contact .arrow,.round-link .arrow,.footer-email .arrow{display:inline-block;transition:translate .22s cubic-bezier(.16,1,.3,1)}.nav-contact:hover .arrow,.round-link:hover .arrow,.footer-email:hover .arrow{translate:2px -2px}.theme-toggle{display:grid;width:40px;height:40px;place-items:center;padding:0;border:1px solid var(--line);border-radius:50%;color:var(--ink);background:var(--surface-about);font:18px/1 DM Sans,sans-serif;cursor:pointer;box-shadow:0 2px 0 var(--line);transition:opacity .5s ease,transform .12s ease,box-shadow .12s ease}.language-toggle{display:grid;min-width:40px;height:40px;place-items:center;padding:0 8px;border:1px solid var(--line);border-radius:20px;color:var(--ink);background:var(--surface-about);font:10px DM Mono,monospace;cursor:pointer;transition:color .18s ease,border-color .18s ease,background .18s ease,transform .18s ease}.language-toggle:hover{color:var(--orange);border-color:var(--orange);transform:translateY(-2px)}.language-toggle:active{transform:translateY(1px)}.theme-toggle:hover{color:var(--orange);border-color:var(--orange);box-shadow:0 4px 0 var(--line);transform:translateY(-2px)}.theme-toggle:active{transform:translateY(1px);box-shadow:0 1px 0 var(--line)}:root[data-theme-transitioning=true] .theme-toggle:hover{color:var(--ink);border-color:var(--line);background:var(--surface-about);box-shadow:0 2px 0 var(--line);transform:none}.site-header:not(.header-visible) .theme-toggle{opacity:0;transform:translateY(-8px)}.site-header.header-visible .theme-toggle{opacity:1;transform:translateY(0)}.site-header.header-visible .theme-toggle:active{transform:translateY(1px)}.arrow{font-size:17px;margin-left:8px}.menu-toggle{display:none;width:42px;height:42px;place-items:center;padding:0;border:1px solid var(--line);border-radius:50%;color:var(--ink);background:var(--surface-about);box-shadow:0 2px 0 var(--line);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:border-color .18s ease,color .18s ease}.menu-toggle:hover,.menu-toggle[aria-expanded=true]{color:var(--orange);border-color:var(--orange)}.menu-toggle:focus-visible{outline:2px solid var(--orange);outline-offset:2px}.menu-toggle-lines{position:relative;display:block;width:16px;height:10px}.menu-toggle-lines span{position:absolute;left:0;width:100%;height:1.5px;border-radius:2px;background:currentColor;transition:top .26s cubic-bezier(.16,1,.3,1),transform .26s cubic-bezier(.16,1,.3,1)}.menu-toggle-lines span:first-child{top:0}.menu-toggle-lines span:last-child{top:calc(100% - 1.5px)}.menu-toggle[aria-expanded=true] .menu-toggle-lines span{top:calc(50% - .75px)}.menu-toggle[aria-expanded=true] .menu-toggle-lines span:first-child{transform:rotate(45deg)}.menu-toggle[aria-expanded=true] .menu-toggle-lines span:last-child{transform:rotate(-45deg)}.icon{display:inline-block;flex-shrink:0;width:1em;height:1em;vertical-align:-.125em}.icon-arrow{width:.8em;height:.8em;vertical-align:-.05em}.github-project-meta .icon{width:11px;height:11px}.github-open,.arrow{display:inline-flex;align-items:center}.hero{--marquee-width: min(1120px, calc(100vw - 96px) );padding-top:108px}.eyebrow{margin:0;font:11px/1.5 DM Mono,monospace;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}.status-dot{display:inline-block;width:7px;height:7px;margin:0 8px 1px 0;border-radius:50%;background:#81a77a;animation:pulse 2.5s ease-in-out infinite}.profile-intro{display:grid;grid-template-columns:238px minmax(0,1fr);align-items:center;gap:52px;margin:30px 0 36px}.profile-photo-frame{position:relative;width:100%;aspect-ratio:4 / 4.8;overflow:hidden;border:1px solid var(--line);border-radius:10px;background:var(--surface-about)}.profile-photo-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;background:radial-gradient(ellipse at 50% 35%,#fa68451c,transparent 52%),linear-gradient(145deg,var(--surface-about),var(--surface-hero))}.profile-photo-initials{color:var(--muted);font:700 56px/1 Manrope,sans-serif;letter-spacing:-.08em;opacity:.58}.profile-photo-caption,.profile-photo-index{color:var(--muted);font:9px DM Mono,monospace;letter-spacing:.08em}.profile-photo-index{position:absolute;right:12px;bottom:12px;z-index:1;padding:6px 8px;background:var(--paper)}.profile-photo{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.profile-photo[hidden]{display:none}.profile-role{margin:0 0 12px;color:var(--muted);font:11px DM Mono,monospace;letter-spacing:.06em;text-transform:uppercase}.profile-role span{color:var(--orange);padding-inline:4px}.profile-name{margin:0 0 17px;font:700 clamp(42px,6.2vw,76px)/.98 "Manrope",sans-serif;letter-spacing:-.075em}.profile-summary{width:100%;max-width:640px;margin:0;color:var(--text-secondary);font-size:15px;line-height:1.75;text-align:justify}.profile-specialties{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-width:550px;margin-top:22px}.specialty-card{min-width:0;display:flex;align-items:center;gap:12px;min-height:58px;padding:8px 14px 8px 9px;border:1px solid var(--line);border-radius:999px;background:color-mix(in srgb,var(--surface-hero) 70%,transparent);transition:border-color .18s ease,transform .18s ease,background .18s ease,box-shadow .18s ease}.specialty-card-game{--specialty-color: var(--pacman-color, #d97706)}.specialty-card-web{--specialty-color: var(--tech-accent)}.specialty-card:hover{border-color:var(--specialty-color, var(--tech-accent));background:color-mix(in srgb,var(--specialty-color, var(--tech-accent)) 8%,var(--surface-hero));box-shadow:0 4px 16px color-mix(in srgb,var(--specialty-color, var(--tech-accent)) 22%,transparent);transform:translateY(-2px)}.specialty-card:hover .specialty-icon{border-color:var(--specialty-color, var(--tech-accent))}.specialty-card:hover .specialty-index{color:var(--specialty-color, var(--tech-accent))}.specialty-icon{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:0 0 30px;width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:var(--paper);transition:border-color .18s ease}.pacman-svg{display:block;width:17px;height:17px;overflow:visible}.pacman-jaw-top{transform-box:view-box;transform-origin:8px 10px;transform:rotate(-24deg);fill:var(--pacman-color, #d97706);transition:transform .18s ease}.pacman-jaw-bottom{transform-box:view-box;transform-origin:8px 10px;transform:rotate(24deg);fill:var(--pacman-color, #d97706);transition:transform .18s ease}.pacman-pellet{fill:var(--pacman-color, #d97706);transform-box:view-box;transform-origin:17.2px 10px;transition:transform .18s ease,opacity .18s ease}.specialty-card-game:hover .pacman-jaw-top{animation:pacman-chomp-top .34s ease-in-out infinite alternate}.specialty-card-game:hover .pacman-jaw-bottom{animation:pacman-chomp-bottom .34s ease-in-out infinite alternate}.specialty-card-game:hover .pacman-pellet{animation:pacman-pellet-pulse .34s ease-in-out infinite alternate}@keyframes pacman-chomp-top{0%{transform:rotate(-26deg)}to{transform:rotate(-3deg)}}@keyframes pacman-chomp-bottom{0%{transform:rotate(26deg)}to{transform:rotate(3deg)}}@keyframes pacman-pellet-pulse{0%{opacity:.95;transform:scale(1)}to{opacity:.25;transform:scale(.65)}}@media(prefers-reduced-motion:reduce){.specialty-card-game:hover .pacman-jaw-top,.specialty-card-game:hover .pacman-jaw-bottom,.specialty-card-game:hover .pacman-pellet{animation:none}}.web-icon:before,.web-icon:after{position:absolute;content:""}.web-icon:before{top:6px;right:5px;bottom:6px;left:5px;border:1px solid var(--tech-accent);border-radius:2px}.web-icon:after{top:10px;left:6px;right:6px;border-top:1px solid var(--tech-accent)}.specialty-copy{min-width:0;display:grid;gap:4px}.specialty-copy strong{overflow:hidden;color:var(--ink);font:600 11px/1.2 Manrope,sans-serif;text-overflow:ellipsis;white-space:nowrap}.specialty-copy small{overflow:hidden;color:var(--muted);font:8px DM Mono,monospace;text-overflow:ellipsis;white-space:nowrap}.specialty-index{align-self:start;margin-left:auto;color:var(--tech-accent);font:8px DM Mono,monospace;transition:color .18s ease}.profile-links{display:flex;flex-wrap:wrap;align-items:center;gap:22px;margin-top:26px}.profile-primary-link,.profile-secondary-link{font-size:12px;transition:color .18s ease}.profile-primary-link{padding:12px 16px;border-radius:24px;color:var(--paper);background:var(--ink)}.profile-primary-link:hover{background:var(--orange)}.profile-primary-link span,.profile-secondary-link span{margin-left:8px}.profile-secondary-link:hover{color:var(--orange)}.tech-stack{margin:0 0 58px;padding:12px 0 13px;border-block:1px solid var(--line)}.tech-stack-heading{display:flex;justify-content:space-between;margin-bottom:8px;color:var(--muted);font:9px DM Mono,monospace;letter-spacing:.1em}.tech-stack-count{color:var(--tech-accent)}.tech-marquee{overflow-x:clip;overflow-y:visible;padding:3px 0;outline:none}.tech-marquee:focus-visible{outline:2px solid var(--tech-accent);outline-offset:3px}.tech-marquee-track{display:flex;width:max-content;animation:stack-drift-right 34s linear infinite;will-change:transform}.tech-marquee:hover .tech-marquee-track,.tech-marquee:focus .tech-marquee-track{animation-play-state:paused}.tech-marquee-group{--tech-chip-gap: clamp(10px, 1.8vw, 24px);display:grid;flex:0 0 var(--marquee-width);width:var(--marquee-width);grid-template-columns:repeat(var(--tech-count),minmax(0,1fr));column-gap:var(--tech-chip-gap);justify-items:center}.tech-marquee-group+.tech-marquee-group{margin-left:var(--tech-chip-gap)}.tech-chip{display:inline-flex;align-items:center;justify-content:center;width:60px;height:60px;padding:11px;border:1px solid var(--line);border-radius:999px;background:var(--surface-about);box-shadow:0 2px 8px #24241f0a;transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease,background .18s ease}.tech-chip:hover{border-color:var(--chip-color, var(--tech-accent));background:color-mix(in srgb,var(--chip-color, var(--tech-accent)) 8%,var(--surface-about));box-shadow:0 0 12px color-mix(in srgb,var(--chip-color, var(--tech-accent)) 24%,transparent),0 0 30px color-mix(in srgb,var(--chip-color, var(--tech-accent)) 14%,transparent);transform:scale(1.08)}:root[data-theme=dark] .tech-chip[title=Unity]{--chip-color: #ecefe4}:root[data-theme=dark] .tech-chip[title=Unity] img{filter:invert(1)}.tech-chip img{display:block;width:34px;height:34px;object-fit:contain}.hero-statement{margin:0 0 22px;font:500 clamp(38px,6.5vw,76px)/1.02 "Manrope",sans-serif;letter-spacing:-.075em}.hero-statement span:not(.hero-line){color:var(--orange)}h1,h2,h3,p{margin-top:0}h1{margin:25px 0;font:500 clamp(53px,8vw,104px)/.99 "Manrope",sans-serif;letter-spacing:-.075em}h1 span{color:var(--orange)}.hero-line{display:inline-block;will-change:opacity,transform}.hero-bottom{display:flex;justify-content:space-between;align-items:end}.hero-copy{max-width:360px;margin:0;color:var(--text-secondary);font-size:15px;line-height:1.7}.text-link{font-size:12px;padding-bottom:5px;border-bottom:1px solid #aaa99f;transition:color .18s ease}.text-link span{margin-left:14px;font-size:17px}.hero-art-wrap{margin-top:50px;will-change:transform}.hero-art{height:350px;position:relative;overflow:hidden;border-radius:3px;background:var(--surface-hero);background-image:linear-gradient(to right,color-mix(in srgb,var(--ink) 5%,transparent) 1px,transparent 1px),linear-gradient(to bottom,color-mix(in srgb,var(--ink) 5%,transparent) 1px,transparent 1px);background-size:36px 36px}.hero-art-scene{position:absolute;top:0;right:0;bottom:0;left:0;perspective:1100px;transform-style:preserve-3d;cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;transition:transform .18s ease-out}.hero-art-scene *{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.hero-art-scene.is-dragging{cursor:grabbing;transition:none}.hero-art:focus-visible{outline:2px solid var(--orange);outline-offset:4px}.art-rotation-controls{position:absolute;z-index:20;right:16px;bottom:16px;display:grid;grid-template-columns:repeat(3,32px);grid-template-rows:repeat(2,32px);gap:3px;padding:5px;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--surface-hero) 88%,transparent);box-shadow:0 4px 16px #24241f18;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.art-rotation-controls button{display:grid;place-items:center;padding:0;border:1px solid transparent;border-radius:8px;color:var(--ink);background:transparent;font:18px/1 DM Sans,sans-serif;cursor:pointer;touch-action:none;transition:color .16s ease,background .16s ease,border-color .16s ease}.art-rotation-controls button:nth-child(1){grid-column:2;grid-row:1}.art-rotation-controls button:nth-child(2){grid-column:1;grid-row:2}.art-rotation-controls button:nth-child(3){grid-column:2;grid-row:2}.art-rotation-controls button:nth-child(4){grid-column:3;grid-row:2}.art-rotation-controls button:hover,.art-rotation-controls button:focus-visible{color:var(--orange);border-color:var(--orange);background:var(--surface-about)}.art-caption{position:absolute;top:22px;left:24px;z-index:2;font:9px DM Mono,monospace;letter-spacing:.06em;color:var(--muted)}.art-sun{position:absolute;width:96px;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at var(--sun-light-x, 30%) var(--sun-light-y, 24%),#fff2ce 0%,#ffc68a 12%,#ff8d58 28%,var(--orange) 48%,#d94832 73%,#7f2b27 100%);box-shadow:inset 5px 6px 12px #fff0c966,inset -12px -14px 18px #70251e66,0 0 32px #fa684550,0 7px 18px #c94b3040;top:50%;left:50%;transform:translate(-50%,-50%) rotateY(var(--scene-counter-y, 0deg)) rotateX(var(--scene-counter-x, 0deg)) scale(0);animation:scale-in .9s cubic-bezier(.16,1,.3,1) 1s forwards;z-index:5}.art-sun:after{content:"";position:absolute;top:13%;left:19%;width:34%;height:20%;border-radius:50%;background:linear-gradient(180deg,#fff4d999,#fff4d900);filter:blur(2px);transform:rotate(-28deg)}.art-sun-hit-area{position:absolute;z-index:20;top:50%;left:50%;width:96px;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;cursor:pointer;touch-action:manipulation}.art-orbit{position:absolute;top:50%;left:50%;transform-style:preserve-3d;cursor:pointer;pointer-events:none;overflow:visible;transform:translate(-50%,-50%) rotateX(var(--orbit-tilt-x)) rotateY(var(--orbit-tilt-y)) rotate(var(--orbit-tilt-z, 0deg))}.orbit-one{--orbit-tilt-x: 52deg;--orbit-tilt-y: -28deg;--orbit-tilt-z: 18deg;--orbit-color: #ff7e54;--orbit-glow: #ff7e5490;width:300px;height:300px;animation:orbit-spin-1 110s linear infinite}.orbit-two{--orbit-tilt-x: 62deg;--orbit-tilt-y: 36deg;--orbit-tilt-z: -40deg;--orbit-color: #f2b749;--orbit-glow: #f2b74990;width:460px;height:460px;animation:orbit-spin-2 170s linear infinite}.orbit-three{--orbit-tilt-x: 44deg;--orbit-tilt-y: -48deg;--orbit-tilt-z: 65deg;--orbit-color: #5cc49f;--orbit-glow: #5cc49f90;width:620px;height:620px;animation:orbit-spin-3 230s linear infinite}.orbit-four{--orbit-tilt-x: 68deg;--orbit-tilt-y: -14deg;--orbit-tilt-z: -15deg;--orbit-color: #ab90df;--orbit-glow: #ab90df90;width:800px;height:800px;animation:orbit-spin-4 290s linear infinite}.art-orbit-hit{fill:none;stroke:transparent;stroke-width:14px;pointer-events:stroke;cursor:pointer}.art-orbit-line{fill:none;stroke:color-mix(in srgb,var(--orbit-color) 40%,var(--orbit-line));stroke-width:1.5px;pointer-events:none;transition:stroke .24s ease,filter .24s ease,stroke-width .24s ease}.art-orbit-satellite{fill:var(--orbit-color);pointer-events:none;filter:drop-shadow(0 0 6px var(--orbit-glow));transition:fill .24s ease,filter .24s ease,r .24s ease}.art-orbit:hover .art-orbit-line{stroke:var(--orange);stroke-width:2.2px;filter:drop-shadow(0 0 6px #fa6845cc)}.art-orbit:hover .art-orbit-satellite{fill:var(--orange);filter:drop-shadow(0 0 10px #fa6845) drop-shadow(0 0 16px #fa684599)}.floating-el{position:absolute;transform-style:preserve-3d}.art-star{display:block;color:#5f7263;font-size:24px;cursor:pointer;transform:rotateY(var(--scene-counter-y, 0deg)) rotateX(var(--scene-counter-x, 0deg));animation:star-glow 3.5s ease-in-out infinite;transition:color .22s ease,transform .22s ease}.art-star .icon{display:block}.art-star:hover{color:var(--orange);transform:rotateY(var(--scene-counter-y, 0deg)) rotateX(var(--scene-counter-x, 0deg)) scale(1.2)}.star-one-wrap{top:28%;left:27%}.star-two-wrap{right:25%;bottom:22%}.star-three-wrap{top:21%;right:36%}.star-four-wrap{bottom:17%;left:39%}.star-five-wrap{top:57%;right:17%}.star-two{font-size:16px;color:var(--orange);animation-delay:1.2s}.star-three{font-size:13px;animation-delay:.8s}.star-four{font-size:19px;color:#95896f;animation-delay:1.6s}.star-five{font-size:12px;color:var(--orange);animation-delay:2.2s}.animated-text{overflow:visible}.at-clip{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.12em;margin-bottom:-.12em}.at-inner{display:inline-block;transition-property:transform,opacity;transition-timing-function:cubic-bezier(.16,1,.3,1);will-change:transform,opacity}.work-section{padding-top:125px;padding-bottom:130px}.section-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:38px}.section-heading h2{margin:10px 0 0;font:600 43px/1.1 Manrope,sans-serif;letter-spacing:-.06em}.accent{color:var(--orange)}.section-note{margin:0 0 3px;color:var(--muted);font-size:12px;line-height:1.7;text-align:right}.work-tabs{display:flex;gap:8px;margin:-14px 0 26px}.work-tab{padding:9px 15px;border:1px solid var(--line);border-radius:30px;color:var(--muted);background:transparent;box-shadow:0 2px 0 var(--line);font:11px DM Mono,monospace;cursor:pointer;transition:color .22s ease,border-color .22s ease,background-color .22s ease,box-shadow .22s ease,translate .22s cubic-bezier(.16,1,.3,1)}.work-tab:hover{color:var(--ink);border-color:var(--orange);box-shadow:0 4px 0 var(--line);translate:0 -2px}.work-tab:active{box-shadow:0 1px 0 var(--line);translate:0 1px}.work-tab[aria-selected=true]{color:var(--ink);border-color:var(--muted);background:var(--surface-about)}.work-tab:focus-visible{outline:2px solid var(--orange);outline-offset:2px}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;gap:20px}.project{display:flex;flex-direction:column;min-width:0}.project>.github-project-card{flex:1}.project-art:before{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(#24241f0b 1px,transparent 1px),linear-gradient(90deg,#24241f0b 1px,transparent 1px);background-size:28px 28px;content:"";pointer-events:none}.project-art{height:310px;position:relative;display:grid;place-items:center;overflow:hidden;border-radius:4px;transition:box-shadow .24s ease}.project-art:hover{box-shadow:0 12px 40px -10px #24241f1f}.github-project-card{position:relative;display:flex;min-height:310px;flex-direction:column;padding:20px;border:1px solid var(--line);border-radius:6px;color:var(--ink);background:color-mix(in srgb,var(--surface-about) 78%,transparent);transition:border-color .2s ease,background .2s ease,box-shadow .2s ease}.github-project-card:hover{border-color:var(--muted);background:var(--surface-about);box-shadow:0 12px 34px -18px color-mix(in srgb,var(--ink) 35%,transparent)}.github-project-topline{display:flex;align-items:center;gap:10px}.github-mark{display:inline-flex;color:var(--ink);font-size:20px;line-height:1}.github-project-card .project-index{position:static;margin-left:auto}.github-open{margin-left:4px;color:var(--muted);font-size:18px;transition:color .18s ease,transform .18s ease}.github-project-card:hover .github-open{color:var(--orange);transform:translate(2px,-2px)}.github-project-card h3{margin:42px 0 12px;font:600 21px/1.1 Manrope,sans-serif;letter-spacing:-.045em}.github-project-card p{display:-webkit-box;margin:0;overflow:hidden;color:var(--text-secondary);font-size:12px;line-height:1.65;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3}.github-project-meta{display:flex;flex-wrap:wrap;gap:12px;margin-top:auto;padding-top:24px;color:var(--muted);font:10px DM Mono,monospace}.github-project-meta>span{display:inline-flex;align-items:center;gap:5px}.itch-game-card{padding:0;overflow:hidden}.itch-game-cover{display:block;flex-shrink:0;height:150px;overflow:hidden;border-bottom:1px solid var(--line);background:var(--surface-hero)}.itch-game-cover img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .4s cubic-bezier(.16,1,.3,1)}.itch-game-card:hover .itch-game-cover img{transform:scale(1.04)}.itch-game-body{display:flex;flex:1;flex-direction:column;padding:16px 20px 20px}.itch-game-card h3{margin:18px 0 10px}.github-language-dot{width:8px;height:8px;border-radius:50%;background:var(--language-color, var(--tech-accent));box-shadow:0 0 0 2px color-mix(in srgb,var(--language-color, var(--tech-accent)) 18%,transparent)}.peach{background:#ead6c6}.lavender{background:#d9d7e8}.mint{background:#d7e0d3}.project-index{position:absolute;top:17px;left:17px;font:9px DM Mono,monospace;opacity:.3}.project-index:hover{position:absolute;top:17px;left:17px;font:9px DM Mono,monospace;opacity:1}.project-label{position:absolute;z-index:1;font:700 19px Manrope,sans-serif;letter-spacing:-.05em}.project-open{position:absolute;right:16px;bottom:14px;width:29px;height:29px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;font-size:15px;box-shadow:0 2px 0 var(--line);transition:background .22s ease,color .22s ease,transform .24s cubic-bezier(.16,1,.3,1),box-shadow .22s ease}.project-art:hover .project-open{color:var(--paper);background:var(--ink);transform:translate(2px,-2px);box-shadow:0 4px 0 var(--line)}.project-art:active .project-open{transform:translate(2px,-1px);box-shadow:0 1px 0 var(--line)}.project-shape{position:absolute;width:180px;height:180px;border:1px solid #24241f45;border-radius:50%;transition:transform .5s cubic-bezier(.16,1,.3,1)}.project-art:hover .project-shape{transform:rotate(25deg) scale(1.08)}.project-shape.orbit:before,.project-shape.orbit:after{position:absolute;content:"";border:1px solid #24241f45;border-radius:50%;top:20px;right:-25px;bottom:20px;left:-25px;transform:rotate(50deg)}.project-shape.orbit:after{transform:rotate(-50deg)}.project-shape.block{width:140px;height:140px;border-radius:42% 58% 62% 38%/45% 39% 61% 55%;background:#afaacb;border:0}.project-shape.sun{width:145px;height:145px;background:#a7b79f;border:0;box-shadow:0 0 0 22px #a7b79f40,0 0 0 44px #a7b79f20}.project-meta{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 10px;padding-top:15px}.project-meta h3{min-width:0;margin:0;font:600 14px Manrope,sans-serif;letter-spacing:-.025em;overflow-wrap:anywhere}.project-meta p{flex-shrink:0;margin:0;font-size:10px}:root[data-theme=light] .work-section .project-index,:root[data-theme=light] .work-section .project-label{color:#625f57}:root[data-theme=dark] .work-section .project-index,:root[data-theme=dark] .work-section .project-label{color:#24241f}:root[data-theme=dark] .work-section .project-art.peach{background:#dfbda7}:root[data-theme=dark] .work-section .project-art.lavender{background:#c1bdd7}:root[data-theme=dark] .work-section .project-art.mint{background:#b9c9b2}:root[data-theme=dark] .work-section .project-shape.block{background:#9690b7}:root[data-theme=dark] .work-section .project-shape.sun{background:#879a7d;box-shadow:0 0 0 22px #879a7d40,0 0 0 44px #879a7d20}:root[data-theme=dark] .work-section .project-shape{transition-duration:.3s}:root[data-theme-transitioning=true] .work-section .project-art:hover{box-shadow:none}:root[data-theme-transitioning=true] .work-section .project-art:hover .project-shape{transform:none}:root[data-theme-transitioning=true] .work-section .project-art:hover .project-open{color:inherit;background:transparent;transform:none;box-shadow:0 2px 0 var(--line)}.about-section{background:var(--surface-about);padding:95px 0 100px}.about-inner h2,.about-heading{margin:35px 0 45px;font:500 clamp(40px,6vw,68px)/1.2 "Manrope",sans-serif;letter-spacing:-.07em}.about-bottom{display:flex;align-items:end;justify-content:space-between;gap:25px}.about-bottom>p{max-width:460px;margin:0;color:var(--text-secondary);font-size:14px;line-height:1.8}.contact-section{position:relative;overflow:hidden;padding:112px 0 120px;background-color:var(--surface-contact);background-image:radial-gradient(var(--surface-dot) .7px,transparent .7px);background-size:18px 18px}.contact-inner{position:relative;z-index:1}.contact-intro{max-width:760px}.contact-intro .eyebrow{color:var(--text-secondary)}.contact-intro h2{margin:24px 0 18px;font:500 clamp(42px,7vw,82px)/1.05 "Manrope",sans-serif;letter-spacing:-.075em;overflow-wrap:anywhere}.contact-copy{margin:0;color:var(--text-secondary);font-size:14px;line-height:1.8}.contact-pattern{position:absolute;top:10px;right:5%;width:180px;aspect-ratio:1;perspective:520px;transform-style:preserve-3d;pointer-events:none}.contact-pattern span{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid var(--surface-dot);border-radius:50%;transform-style:preserve-3d;transform:rotateX(62deg) rotateY(-12deg) rotate(-20deg) scaleY(.38);animation:contact-orbit-z 18s linear infinite}.contact-pattern span:nth-child(2){transform:rotateX(56deg) rotateY(18deg) rotate(40deg) scaleY(.38);animation-name:contact-orbit-z-alt;animation-duration:24s;animation-direction:reverse}.contact-pattern span:nth-child(3){top:36%;right:36%;bottom:36%;left:36%;border:0;background:var(--orange);border-radius:50%;box-shadow:0 0 0 15px #fa684526;animation:contact-planet-pulse 4s ease-in-out infinite}@keyframes contact-orbit-z{0%{transform:rotateX(62deg) rotateY(-12deg) rotate(-20deg) scaleY(.38)}50%{transform:rotateX(48deg) rotateY(22deg) rotate(160deg) scaleY(.38)}to{transform:rotateX(62deg) rotateY(-12deg) rotate(340deg) scaleY(.38)}}@keyframes contact-orbit-z-alt{0%{transform:rotateX(56deg) rotateY(18deg) rotate(40deg) scaleY(.38)}50%{transform:rotateX(72deg) rotateY(-24deg) rotate(-140deg) scaleY(.38)}to{transform:rotateX(56deg) rotateY(18deg) rotate(-320deg) scaleY(.38)}}@keyframes contact-planet-pulse{0%,to{scale:1;box-shadow:0 0 0 15px #fa684526}50%{scale:1.08;box-shadow:0 0 0 21px #fa684526,0 0 28px #fa684540}}@media(prefers-reduced-motion:reduce){.contact-pattern span{animation:none}}.contact-list{max-width:850px;margin-top:58px;border-top:1px solid var(--surface-dot)}.contact-row-wrap{border-bottom:1px solid var(--surface-dot)}.contact-row{display:grid;grid-template-columns:26px 36px minmax(190px,1fr) minmax(170px,auto) 24px;align-items:center;gap:18px;min-width:0;min-height:92px;transition:color .2s ease,padding .2s ease}.contact-row:hover{color:var(--orange);padding-inline:8px}.contact-index{color:var(--muted);font:10px DM Mono,monospace}.contact-platform-icon{display:block;width:20px;height:20px;color:var(--ink);fill:currentColor;transition:color .18s ease,transform .18s ease}.contact-row:hover .contact-platform-icon{color:currentColor;transform:scale(1.08)}.contact-label-group{display:grid;min-width:0;gap:5px}.contact-label{font:600 19px Manrope,sans-serif;letter-spacing:-.04em}.contact-detail{color:var(--muted);font-size:11px}.contact-value{min-width:0;color:var(--text-secondary);font-size:12px;overflow-wrap:anywhere}.contact-row .arrow{justify-self:end;margin:0;font-size:18px}.round-link{display:inline-flex;align-items:center;padding:13px 17px;border:1px solid var(--line);border-radius:40px;font-size:11px;box-shadow:0 2px 0 var(--line);transition:background .22s ease,border-color .22s ease,box-shadow .22s ease,translate .22s cubic-bezier(.16,1,.3,1)}.round-link:hover{background:var(--paper);border-color:var(--muted);box-shadow:0 4px 0 var(--line);translate:0 -2px}.round-link:active{box-shadow:0 1px 0 var(--line);translate:0 1px}.site-footer{min-height:116px;display:flex;align-items:center;justify-content:space-between;gap:20px}.site-footer>p{margin:0;color:var(--muted);font-size:12px}.footer-email{font-size:13px;transition:color .18s ease}.copyright{color:var(--muted);font:9px DM Mono,monospace}@media(max-width:760px){.section-wrap,.hero{width:min(100% - 40px,560px)}.site-header{width:100%;height:72px;padding-inline:20px}.menu-toggle{display:grid}.site-header nav{position:absolute;top:100%;left:0;right:0;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:6px 10px;padding:12px 20px 20px;border-bottom:1px solid var(--line);background:var(--paper);box-shadow:0 18px 30px -24px color-mix(in srgb,var(--ink) 45%,transparent);font-size:15px;opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .22s ease,transform .28s cubic-bezier(.16,1,.3,1),visibility 0s linear .28s}.site-header.menu-open nav{opacity:1;visibility:visible;transform:translateY(0);transition:opacity .22s ease,transform .28s cubic-bezier(.16,1,.3,1),visibility 0s}.nav-active-pill{display:none}.site-header nav .section-nav-link{grid-column:1 / -1;padding:13px 4px;border-bottom:1px solid var(--line);border-radius:0}.site-header nav .section-nav-link[aria-current=location]{color:var(--orange)}.site-header nav .language-toggle{grid-column:2;grid-row:3}.site-header nav .theme-toggle{grid-column:3;grid-row:3}.nav-contact{grid-column:1;grid-row:3;justify-self:start;margin-top:8px;padding:11px 15px}.site-header nav .language-toggle,.site-header nav .theme-toggle{margin-top:8px}.hero{--marquee-width: max(840px, calc(100vw + 520px) );padding-top:78px}.profile-intro{grid-template-columns:170px minmax(0,1fr);gap:24px;margin:24px 0 28px}.profile-name{font-size:clamp(32px,6vw,44px)}.profile-summary{font-size:13px}.profile-links{gap:14px;margin-top:19px}.profile-primary-link{padding:10px 13px}.hero-statement{font-size:clamp(39px,8vw,58px)}h1{font-size:clamp(49px,11vw,76px)}.hero-bottom{align-items:start;flex-direction:column;gap:21px}.hero-copy{max-width:390px}.hero-art{height:260px}.hero-art-wrap{margin-top:35px}.art-sun,.art-sun-hit-area{width:72px}.orbit-one{width:220px;height:220px}.orbit-two{width:340px;height:340px}.orbit-three{width:460px;height:460px}.orbit-four{width:580px;height:580px}.work-section{padding-top:88px;padding-bottom:90px}.section-heading h2{font-size:36px}.section-note{font-size:10px}.project-grid{grid-template-columns:1fr;gap:27px}.project-art{height:min(75vw,380px)}.project-meta h3{font-size:15px}.project-meta p{font-size:11px}.about-section{padding:72px 0 76px}.contact-section{padding:80px 0 88px}.contact-pattern{top:20px;right:-36px;width:120px;opacity:.65}.contact-list{margin-top:42px}.contact-row{grid-template-columns:22px 28px 1fr 24px;gap:12px;min-height:84px}.contact-platform-icon{width:18px;height:18px}.contact-value{grid-column:3;grid-row:2;font-size:11px}.contact-row .arrow{grid-column:4;grid-row:1 / span 2}.about-inner h2,.about-heading{font-size:clamp(39px,9vw,58px)}.about-bottom{align-items:start;flex-direction:column}.site-footer{min-height:150px;display:grid;grid-template-columns:1fr auto;grid-template-areas:"brand brand" "prompt prompt" "cta cta" "copyright copyright";align-content:start;align-items:start;row-gap:5px;padding-block:25px}.site-footer .wordmark{grid-area:brand}.site-footer>p{grid-area:prompt;justify-self:start;margin-top:12px;text-align:left}.site-footer .footer-email{grid-area:cta;justify-self:start;text-align:left}.site-footer .copyright{grid-area:copyright}}@media(max-width:420px){.section-heading{align-items:start;flex-direction:column;gap:14px}.profile-intro{grid-template-columns:1fr;gap:24px}.profile-photo-frame{width:min(190px,66%)}.profile-name{font-size:clamp(39px,11vw,52px)}.profile-role{font-size:10px}.profile-specialties{grid-template-columns:1fr}.hero-statement{font-size:clamp(37px,10vw,48px)}.section-note{text-align:left}.project-meta{align-items:start;flex-direction:column;gap:5px}.back-to-top{bottom:18px;width:44px;height:44px}}@media(max-width:560px){.profile-intro{grid-template-columns:1fr;gap:24px}.profile-photo-frame{width:min(190px,66%)}.tech-stack{margin-bottom:44px}}@media(max-width:420px){.tech-chip{width:48px;height:48px;padding:8px}.tech-chip img{width:30px;height:30px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.art-sun{animation:none;transform:translate(-50%,-50%) rotateY(var(--scene-counter-y, 0deg)) rotateX(var(--scene-counter-x, 0deg)) scale(1);opacity:1}.tech-marquee-track{animation:none!important;transform:none!important}}
