@import"https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600&family=Space+Mono:wght@400;700&family=EB+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=JetBrains+Mono:wght@300;400;500;600&display=swap";:root{color-scheme:dark;font-family:DM Sans,sans-serif;--text: #eef0f4;--muted: rgba(255, 255, 255, .5);--border: rgba(255, 255, 255, .08)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#060708;color:var(--text)}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button{cursor:pointer}img,svg{display:block;max-width:100%}section[id]{scroll-margin-top:84px}.page{min-height:100vh}.explore-card{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.15rem;border-radius:12px;border:1px solid var(--card-border, rgba(255, 255, 255, .08));background:var(--card-bg, rgba(255, 255, 255, .03));transition:transform .2s ease,border-color .2s ease,background .2s ease}.explore-card:hover{transform:translateY(-2px);border-color:var(--card-accent, rgba(255, 255, 255, .25));background:var(--card-accent-bg, rgba(255, 255, 255, .06))}.explore-card strong,.explore-card span{display:block}.explore-card strong{font-size:.92rem;color:inherit}.explore-card span{font-size:.73rem;color:#ffffff6b}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes blink{0%,49%,to{opacity:1}50%{opacity:0}}@keyframes glitch{0%,95%,to{transform:translate(0)}96%{transform:translate(-2px,1px)}97%{transform:translate(2px,-1px)}98%{transform:translate(-1px,2px)}}@keyframes matrixDrop{0%{transform:translateY(-100%);opacity:1}to{transform:translateY(100vh);opacity:0}}.home-page{background:#080a0f;overflow:hidden;position:relative}.home-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#080a0f;opacity:0;pointer-events:none;transition:opacity .35s ease;z-index:400}.home-overlay.active{opacity:1}.home-topbar{position:fixed;top:0;left:0;right:0;z-index:300;display:flex;justify-content:space-between;align-items:center;padding:1.15rem 2rem}.home-logo{font-family:"DM Serif Display",serif;font-size:1.3rem}.home-stage{min-height:100vh;display:grid;grid-template-columns:.72fr 2.9fr .72fr;transition:background .5s ease;touch-action:pan-y;-webkit-user-select:none;user-select:none}.home-side-panel{border:0;background:transparent;color:#ffffffb8;padding:6.5rem 1.75rem 4rem;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;text-align:left;position:relative;transition:opacity .25s ease}.home-side-panel:after{content:"";position:absolute;top:12%;bottom:12%;width:1px;background:#ffffff14;transition:background .2s ease}.home-side-panel.left:after{right:0}.home-side-panel.right:after{left:0}.home-side-panel:hover{opacity:1}.home-side-panel:hover:after{background:#ffffff38}.home-side-path{display:inline-flex;align-items:center;gap:.5rem;font-size:.66rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#ffffff4d;margin-bottom:1.2rem}.home-side-path-line{width:22px;height:1px;background:#fff3}.home-side-icon-frame{margin-bottom:1rem}.home-side-icon{width:48px;height:48px;border-radius:14px;border:1px solid transparent;display:flex;align-items:center;justify-content:center}.home-side-icon svg,.home-card-icon svg{width:22px;height:22px}.home-side-title{font-family:"DM Serif Display",serif;font-size:clamp(1.2rem,1.8vw,1.55rem);line-height:1.08;margin:0 0 .75rem;color:#ffffffd1}.home-side-description{margin:0;max-width:190px;font-size:.84rem;line-height:1.65;color:#ffffff5c}.home-side-chevron{margin-top:1.4rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:#ffffff3d}.home-center-panel{padding:5.2rem 1rem 6rem;display:flex;align-items:center;justify-content:center}.home-featured-card{width:100%;max-width:1040px;min-height:min(78vh,700px);border-radius:24px;border:1px solid rgba(255,255,255,.1);position:relative;overflow:hidden;display:grid;grid-template-columns:1.1fr .9fr;gap:1rem;padding:2.8rem 2.3rem 1.9rem;transition:opacity .18s ease,transform .25s ease,background .4s ease}.home-featured-card.switching{opacity:0;transform:scale(.98) translateY(8px)}.home-card-glow{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.home-card-number{position:absolute;top:50%;right:.2rem;transform:translateY(-56%);font-family:"DM Serif Display",serif;font-size:clamp(9rem,20vw,18rem);color:#ffffff0b;-webkit-user-select:none;user-select:none}.home-card-main{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:flex-end}.home-card-icon{width:58px;height:58px;border-radius:18px;border:1px solid transparent;display:flex;align-items:center;justify-content:center;margin-bottom:1.2rem}.home-card-title{margin:0 0 .85rem;font-family:"DM Serif Display",serif;font-size:clamp(2.4rem,5vw,4.3rem);line-height:1.02;letter-spacing:-.03em}.home-card-stack{display:flex;gap:.85rem;flex-wrap:wrap;margin-bottom:1rem;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700}.home-card-description{max-width:520px;margin:0 0 1.45rem;color:#fff9;line-height:1.8;font-size:.92rem}.home-card-actions{display:flex;gap:.85rem}.home-card-primary{border:0;border-radius:10px;padding:.85rem 1.4rem;font-size:.9rem;font-weight:700;transition:transform .18s ease,box-shadow .18s ease}.home-card-primary:hover{transform:translateY(-2px);box-shadow:0 10px 28px #00000040}.home-card-illustration{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;padding:1rem 0;animation:float 5s ease-in-out infinite}.home-card-stats{grid-column:1 / -1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.8rem;position:relative;z-index:1;border-top:1px solid rgba(255,255,255,.08);padding-top:1.15rem}.home-card-stat{display:flex;flex-direction:column;gap:.15rem}.home-card-stat strong{font-size:1rem}.home-card-stat span{font-size:.67rem;text-transform:uppercase;letter-spacing:.08em;color:#ffffff61}.home-keyboard-hint{position:fixed;bottom:4.85rem;right:1.75rem;z-index:220;display:flex;gap:.55rem;align-items:center;padding:.55rem .8rem;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#ffffff0f;color:#ffffff57;font-size:.72rem}.home-keyboard-hint .key{border-radius:6px;border:1px solid rgba(255,255,255,.15);background:#ffffff14;padding:.1rem .45rem;color:#fff9}.home-swipe-hint{display:none}@keyframes home-card-peek{0%,to{transform:translate(0)}25%{transform:translate(-20px)}75%{transform:translate(20px)}}@keyframes home-swipe-sway{0%,to{transform:translate(-50%)}33%{transform:translate(calc(-50% - 10px))}67%{transform:translate(calc(-50% + 10px))}}.home-bottom-nav{position:fixed;bottom:1.2rem;left:50%;transform:translate(-50%);z-index:220;display:flex;flex-direction:column;align-items:center;gap:.6rem}.home-bottom-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.18em;color:#ffffff40}.home-nav-dots{display:flex;gap:.55rem}.home-nav-dot{width:9px;height:9px;border-radius:50%;border:0;transition:transform .2s ease}.home-nav-dot.active{transform:scale(1.2)}.academic-page{background:#faf9f7;color:#1a1a1a}.academic-nav{position:sticky;top:0;z-index:90;display:flex;align-items:center;justify-content:space-between;height:60px;padding:0 clamp(1.4rem,5vw,4.5rem);background:#faf9f7eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid rgba(0,0,0,.09)}.academic-nav-logo,.academic-page h1,.academic-page h2,.academic-page h3,.academic-profile-name,.academic-venue-box span{font-family:EB Garamond,serif}.academic-nav-logo{font-size:1.2rem}.academic-nav-back,.academic-nav-links a{color:#6b6b6b;font-size:.84rem}.academic-nav-links{display:flex;gap:1.6rem}.academic-shell{max-width:1120px;margin:0 auto}.academic-hero{padding:clamp(4.6rem,10vw,7rem) clamp(1.4rem,5vw,4.5rem) 3rem;display:grid;grid-template-columns:1.2fr 320px;gap:3.2rem;border-bottom:1px solid rgba(0,0,0,.09);animation:fadeUp .6s ease both}.academic-affiliation{display:inline-flex;align-items:center;gap:.45rem;color:#005bb4;color:oklch(48% .2 255);font-size:.8rem;font-weight:500;margin-bottom:1.4rem}.academic-affiliation:before{content:"◆";font-size:.55rem}.academic-hero h1{margin:0 0 .6rem;font-size:clamp(2.7rem,5vw,4.2rem);font-weight:400}.academic-subtitle{margin:0 0 1rem;font-family:EB Garamond,serif;font-style:italic;color:#6b6b6b;font-size:1.2rem}.academic-description,.academic-contact-copy,.academic-area-card p,.academic-experience-copy{color:#6b6b6b;line-height:1.85}.academic-description{max-width:560px;margin:0 0 1.8rem}.academic-hero-actions{display:flex;flex-wrap:wrap;gap:.8rem}.academic-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.72rem 1.35rem;border:0;border-radius:8px;transition:transform .15s ease,opacity .15s ease,border-color .15s ease}.academic-btn.primary{background:#005bb4;background:oklch(48% .2 255);color:#fff}.academic-btn.ghost{color:#6b6b6b;border:1px solid rgba(0,0,0,.09)}.academic-btn:hover{transform:translateY(-1px)}.academic-stats{display:flex;gap:2.6rem;margin-top:2.1rem;padding-top:1.7rem;border-top:1px solid rgba(0,0,0,.09)}.academic-stat{text-align:center}.academic-stat strong{display:block;font-family:EB Garamond,serif;font-size:2.1rem;color:#005bb4;color:oklch(48% .2 255)}.academic-stat span{display:block;font-size:.75rem;color:#6b6b6b;margin-top:.25rem}.academic-profile-card{background:#fff;border:1px solid rgba(0,0,0,.09);border-radius:14px;padding:2rem;text-align:center;box-shadow:0 8px 24px #0000000d}.academic-profile-photo{width:110px;height:110px;margin:0 auto 1rem;border-radius:50%;display:grid;place-items:center;font-size:2.15rem;color:#005bb4;color:oklch(48% .2 255);background:linear-gradient(135deg,#b1c4ec,#cbd8f3)}.academic-profile-name{font-size:1.2rem;margin-bottom:.25rem}.academic-profile-role{color:#6b6b6b;font-size:.8rem;line-height:1.6;margin-bottom:1rem}.academic-profile-links{display:flex;flex-direction:column;gap:.45rem}.academic-profile-link{border:1px solid rgba(0,0,0,.09);background:#fff;border-radius:8px;padding:.65rem;color:#6b6b6b}.academic-section{padding:clamp(3rem,7vw,5rem) clamp(1.4rem,5vw,4.5rem);border-top:1px solid rgba(0,0,0,.09)}.academic-section-label{display:inline-block;margin-bottom:.9rem;color:#005bb4;color:oklch(48% .2 255);text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;font-weight:600}.academic-section h2{margin:0 0 2rem;font-size:clamp(1.9rem,3vw,2.7rem);font-weight:400}.academic-area-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.2rem}.academic-area-card{background:#fff;border:1px solid rgba(0,0,0,.09);border-radius:12px;padding:1.5rem}.academic-area-number{display:inline-block;margin-bottom:.6rem;font-family:EB Garamond,serif;font-size:2rem;color:#2f58c838}.academic-area-card h3{margin:0 0 .45rem;font-size:1rem;font-family:DM Sans,sans-serif}.academic-pub-filters{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:1.8rem}.academic-pub-filter{border:1px solid rgba(0,0,0,.09);background:transparent;border-radius:999px;padding:.45rem .9rem;color:#6b6b6b}.academic-pub-filter.active{border-color:#005bb4;border-color:oklch(48% .2 255);color:#005bb4;color:oklch(48% .2 255);background:#2f58c814}.academic-publication-list{display:flex;flex-direction:column}.academic-publication{display:grid;grid-template-columns:96px 1fr auto;gap:1.4rem;align-items:start;padding:1.45rem 0;border-top:1px solid rgba(0,0,0,.09)}.academic-venue-box{background:#fff;border:1px solid rgba(0,0,0,.09);border-radius:10px;padding:.7rem .45rem;text-align:center}.academic-venue-box span{display:block;color:#005bb4;color:oklch(48% .2 255);font-size:.85rem}.academic-venue-box small{color:#9a9a9a}.academic-badge{display:inline-block;margin-bottom:.5rem;padding:.2rem .55rem;border:1px solid rgba(0,0,0,.09);border-radius:999px;color:#6b6b6b;font-size:.7rem}.academic-publication-copy h3{margin:0 0 .35rem;font-size:1.1rem;font-weight:400}.academic-authors,.academic-journal{margin:0;font-size:.82rem}.academic-authors{font-style:italic;color:#6b6b6b}.academic-journal{color:#9a9a9a;margin-top:.15rem}.academic-publication-link{color:#005bb4;color:oklch(48% .2 255);font-size:.86rem;white-space:nowrap}.academic-contact-grid{display:grid;grid-template-columns:1fr 1.2fr;gap:3rem}.academic-contact-row{display:flex;gap:.9rem;padding:.9rem 0;border-bottom:1px solid rgba(0,0,0,.09)}.academic-contact-row span{min-width:78px;font-size:.68rem;letter-spacing:.08em;color:#005bb4;color:oklch(48% .2 255);text-transform:uppercase;font-weight:700}.academic-contact-row p,.academic-contact-row a{margin:0;color:#6b6b6b}.academic-contact-form{display:flex;flex-direction:column}.academic-input{width:100%;border:1px solid rgba(0,0,0,.09);border-radius:8px;padding:.85rem 1rem;margin-bottom:.8rem;background:#fff;color:#1a1a1a}.academic-input:focus{outline:1px solid oklch(48% .2 255);outline-offset:0}.academic-input[type=email]{font-family:inherit}.academic-input textarea,.academic-input::placeholder{color:#9a9a9a}textarea.academic-input{min-height:120px;resize:vertical}.academic-btn.contact{width:100%}.contact-form-status{margin:.95rem 0 0;font-size:.82rem;line-height:1.6}.academic-contact-form .contact-form-status{color:#6b6b6b}.academic-contact-form .contact-form-status.is-submitting{color:#5a5a5a}.academic-contact-form .contact-form-status.is-success{color:#1c6b39}.academic-contact-form .contact-form-status.is-error{color:#a03f3f}.academic-explore{padding:0 clamp(1.4rem,5vw,4.5rem) clamp(3rem,7vw,4.5rem)}.academic-explore-label{margin:0 0 1rem;color:#6b6b6b;text-transform:uppercase;letter-spacing:.12em;font-size:.72rem}.academic-explore-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.academic-tone-game{--card-accent: oklch(62% .22 35);--card-accent-bg: oklch(62% .22 35 / .08);color:#1a1a1a}.academic-tone-software{--card-accent: oklch(62% .2 155);--card-accent-bg: oklch(62% .2 155 / .08);color:#1a1a1a}.academic-footer{max-width:1120px;margin:0 auto;padding:1.75rem clamp(1.4rem,5vw,4.5rem);border-top:1px solid rgba(0,0,0,.09);display:flex;justify-content:space-between;color:#9a9a9a;font-size:.8rem}.academic-footer a{color:#005bb4;color:oklch(48% .2 255)}.gamedev-page{background:#0c0a08;color:#f0ece8;padding-bottom:64px;position:relative;overflow-x:hidden}.gamedev-page:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.03) 2px,rgba(0,0,0,.03) 4px)}.gamedev-nav,.gamedev-hud,.gamedev-nav-links,.gamedev-btn,.gamedev-game-badge,.gamedev-game-engine,.gamedev-section-label,.gamedev-portfolio-link,.gamedev-footer,.gamedev-tagline,.gamedev-achievement{font-family:Space Mono,monospace}.gamedev-nav{position:sticky;top:0;z-index:90;height:56px;padding:0 1.6rem;display:flex;align-items:center;justify-content:space-between;background:#0c0a08eb;border-bottom:1px solid rgba(255,255,255,.07);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.gamedev-nav-logo{color:#ff572c;color:oklch(68% .22 35);font-size:.86rem;letter-spacing:.08em}.gamedev-nav-back,.gamedev-nav-links a{color:#ffffff59;font-size:.72rem}.gamedev-nav-links{display:flex;gap:1.4rem}.gamedev-hero{min-height:calc(100vh - 56px);position:relative;display:flex;align-items:center;padding:clamp(4rem,8vw,6rem) clamp(1.4rem,5vw,4.5rem)}.gamedev-hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:40px 40px;-webkit-mask-image:radial-gradient(ellipse 80% 80% at 60% 40%,black 30%,transparent 100%);mask-image:radial-gradient(ellipse 80% 80% at 60% 40%,black 30%,transparent 100%);pointer-events:none}.gamedev-hero-glow{position:absolute;top:10%;right:5%;width:min(38vw,420px);height:min(38vw,420px);background:radial-gradient(circle,oklch(68% .22 35 / .2) 0%,transparent 70%)}.gamedev-hero-content{position:relative;z-index:1;max-width:860px;animation:fadeUp .6s ease both}.gamedev-achievement{display:inline-flex;padding:.45rem .9rem;margin-bottom:1.8rem;border-radius:8px;border:1px solid oklch(68% .22 35);background:#ffffff0a;color:#ff572c;color:oklch(68% .22 35);font-size:.72rem}.gamedev-hero h1{margin:0 0 .85rem;font-family:"DM Serif Display",serif;font-size:clamp(3rem,6.8vw,6rem);line-height:1.02;font-weight:400;animation:glitch 8s ease-in-out infinite}.gamedev-hero h1 em{color:#ff572c;color:oklch(68% .22 35)}.gamedev-tagline{margin:0 0 1.2rem;color:#ffffff6b;font-size:.82rem;letter-spacing:.08em}.gamedev-tagline:before{content:"// "}.gamedev-description{max-width:520px;margin:0 0 2rem;color:#ffffff94;line-height:1.8}.gamedev-hero-stats{display:grid;grid-template-columns:repeat(3,minmax(0,max-content));gap:1.5rem;width:fit-content;margin-bottom:2rem;padding:1.15rem 1.35rem;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:#ffffff08}.gamedev-hero-stats span{display:block;color:#ffffff4d;font-size:.64rem;margin-bottom:.3rem;text-transform:uppercase;letter-spacing:.08em}.gamedev-hero-stats strong{color:#ff572c;color:oklch(68% .22 35);font-size:1.4rem}.gamedev-hero-actions{display:flex;flex-wrap:wrap;gap:.85rem}.gamedev-btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:.78rem 1.5rem;border:0;border-radius:8px;font-size:.86rem;letter-spacing:.05em}.gamedev-btn.primary{background:#ff572c;background:oklch(68% .22 35);color:#0c0a08;font-weight:700}.gamedev-btn.ghost{border:1px solid rgba(255,255,255,.12);color:#fff9}.gamedev-section{padding:clamp(3.2rem,7vw,5rem) clamp(1.4rem,5vw,4.5rem);border-top:1px solid rgba(255,255,255,.07);position:relative;z-index:1}.gamedev-section-label{display:inline-block;margin-bottom:.8rem;color:#ff572c;color:oklch(68% .22 35);font-size:.66rem;text-transform:uppercase;letter-spacing:.14em}.gamedev-section-label:before{content:"> "}.gamedev-section h2{margin:0 0 2rem;font-family:"DM Serif Display",serif;font-size:clamp(1.9rem,3.5vw,2.8rem);font-weight:400}.gamedev-game-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.2rem}.gamedev-game-card{border:1px solid rgba(255,255,255,.07);border-radius:12px;overflow:hidden;background:#110d09;transition:transform .2s ease,border-color .2s ease}.gamedev-game-card.is-clickable{cursor:pointer}.gamedev-game-card:hover{transform:translateY(-3px);border-color:#ff572c;border-color:oklch(68% .22 35)}.gamedev-game-card:focus-visible{outline:2px solid oklch(68% .22 35);outline-offset:2px}.gamedev-game-thumb{min-height:170px;position:relative;display:grid;place-items:center;overflow:hidden}.gamedev-thumb-grid{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:20px 20px}.gamedev-thumb-image,.portfolio-thumb-image{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;width:100%;height:100%;object-fit:cover}.gamedev-thumb-letter{position:relative;z-index:1;font-family:"DM Serif Display",serif;font-size:3.2rem;filter:drop-shadow(0 0 12px currentColor);animation:float 3s ease-in-out infinite}.gamedev-game-badge{position:absolute;top:10px;right:10px;border-radius:6px;padding:.25rem .55rem;background:#ff572c;background:oklch(68% .22 35);color:#0c0a08;font-size:.62rem;font-weight:700}.gamedev-game-body{padding:1.15rem}.gamedev-game-engine{display:block;color:#ffffff52;font-size:.64rem;letter-spacing:.08em;margin-bottom:.55rem}.gamedev-game-body h3{margin:0 0 .45rem;font-size:1rem}.gamedev-game-body p{margin:0 0 1rem;color:#ffffff6b;line-height:1.65;font-size:.82rem}.gamedev-game-tags,.portfolio-tags,.software-project-tags{display:flex;flex-wrap:wrap;gap:.35rem}.gamedev-game-tags span,.software-project-tags span{border:1px solid rgba(255,255,255,.08);padding:.16rem .5rem;border-radius:4px;font-size:.62rem;color:#ffffff59;font-family:Space Mono,monospace}.gamedev-game-links,.portfolio-card-links{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.9rem}.gamedev-game-link,.portfolio-card-link{display:inline-flex;align-items:center;justify-content:center;min-height:30px;border-radius:6px;padding:.3rem .6rem;border:1px solid rgba(255,255,255,.12);background:#ffffff0a;color:#ffffffb8;font-family:Space Mono,monospace;font-size:.64rem;letter-spacing:.06em;transition:border-color .2s ease,color .2s ease,background .2s ease}.gamedev-game-link:hover,.portfolio-card-link:hover{border-color:#ff572c;border-color:oklch(68% .22 35);color:#fa7c20;background:#ffffff14}.gamedev-game-password,.portfolio-card-password{margin:.65rem 0 0;color:#cbb67b;font-family:Space Mono,monospace;font-size:.64rem;letter-spacing:.04em}.gamedev-portfolio-link{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-top:1.9rem;padding-top:1.4rem;border-top:1px solid rgba(255,255,255,.07);color:#ffffff47;font-size:.7rem;letter-spacing:.08em}.gamedev-portfolio-link a{color:#ff572c;color:oklch(68% .22 35);font-size:.8rem;font-weight:700}.gamedev-skill-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.3rem 3rem}.gamedev-skill-card{padding:.95rem 0;border-bottom:1px solid rgba(255,255,255,.08)}.gamedev-skill-head{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.55rem}.gamedev-skill-head span{font-weight:600}.gamedev-skill-head small{color:#ff572c;color:oklch(68% .22 35);font-family:Space Mono,monospace}.gamedev-skill-track{height:4px;border-radius:999px;background:#ffffff0f;overflow:hidden}.gamedev-skill-fill,.software-skill-fill{height:100%;border-radius:inherit;transition:width 1s cubic-bezier(.4,0,.2,1)}.gamedev-skill-fill{background:linear-gradient(90deg,#ff572c,#fa7c20);background:linear-gradient(90deg,color(xyz 0.459 0.281 0.046),#fa7c20)}.gamedev-skill-card p{margin:.45rem 0 0;color:#ffffff4d;font-size:.68rem;font-family:Space Mono,monospace}.gamedev-experience-list,.software-experience-list{display:flex;flex-direction:column}.gamedev-experience-item{display:grid;grid-template-columns:160px 1fr;gap:2rem;padding:1.6rem 0;border-top:1px solid rgba(255,255,255,.07)}.gamedev-experience-item>span{color:#ffffff4d;font-family:Space Mono,monospace;font-size:.72rem}.gamedev-experience-item h3{margin:0 0 .25rem;font-size:1rem}.gamedev-experience-item strong{color:#ff572c;color:oklch(68% .22 35);font-family:Space Mono,monospace;font-size:.76rem}.gamedev-experience-item p{margin:.6rem 0 0;color:#ffffff6b;line-height:1.75;font-size:.84rem}.gamedev-contact-grid,.software-contact-grid{display:grid;grid-template-columns:1fr 1.2fr;gap:3rem}.gamedev-contact-copy{color:#ffffff6b;line-height:1.8;margin:0 0 1.5rem}.gamedev-contact-row,.software-contact-row{display:flex;gap:.85rem;align-items:center;padding:.75rem 0;border-bottom:1px solid rgba(255,255,255,.07)}.gamedev-contact-row span,.software-contact-row span{width:22px;color:#ff572c;color:oklch(68% .22 35);flex-shrink:0;text-align:center}.gamedev-contact-row p,.gamedev-contact-row a,.software-contact-row p,.software-contact-row a{margin:0;color:#ffffff7a}.gamedev-contact-form,.software-contact-form{display:flex;flex-direction:column}.gamedev-input,.software-input{width:100%;margin-bottom:.8rem;border-radius:8px;border:1px solid rgba(255,255,255,.08);background:#ffffff08;color:#f0ece8;padding:.85rem 1rem}.gamedev-input::placeholder,.software-input::placeholder{color:#fff3}.gamedev-input:focus,.software-input:focus{outline:1px solid rgba(255,255,255,.2)}textarea.gamedev-input,textarea.software-input{min-height:120px;resize:vertical}.gamedev-btn.contact,.software-btn.contact{width:100%}.gamedev-contact-form .contact-form-status,.software-contact-form .contact-form-status{color:#ffffff85}.gamedev-contact-form .contact-form-status.is-submitting,.software-contact-form .contact-form-status.is-submitting{color:#ffffffbd}.gamedev-contact-form .contact-form-status.is-success,.software-contact-form .contact-form-status.is-success{color:#68cb6e}.gamedev-contact-form .contact-form-status.is-error,.software-contact-form .contact-form-status.is-error{color:#ff7264;color:oklch(72% .18 28)}.gamedev-explore,.software-explore{padding:0 clamp(1.4rem,5vw,4.5rem) 2rem}.gamedev-explore p,.software-explore p{margin:0 0 1rem;color:#ffffff47;font-family:Space Mono,monospace;text-transform:uppercase;letter-spacing:.1em;font-size:.66rem}.gamedev-explore-grid,.software-explore-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.gamedev-tone-academic{--card-accent: oklch(55% .2 265);--card-accent-bg: oklch(55% .2 265 / .08)}.gamedev-tone-software{--card-accent: oklch(62% .2 155);--card-accent-bg: oklch(62% .2 155 / .08)}.gamedev-footer{padding:1.5rem clamp(1.4rem,5vw,4.5rem);border-top:1px solid rgba(255,255,255,.07);display:flex;justify-content:space-between;color:#ffffff3d;font-size:.66rem}.gamedev-footer a{color:#ff572c;color:oklch(68% .22 35)}.gamedev-hud{position:fixed;left:0;right:0;bottom:0;z-index:95;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;gap:1rem;padding:.7rem 1.4rem;background:#0c0a08f2;border-top:1px solid rgba(255,255,255,.07)}.gamedev-hud-item{display:flex;align-items:center;gap:.65rem;color:#ffffff4d;font-size:.64rem}.gamedev-hud-item>span{color:#ff572c;color:oklch(68% .22 35)}.gamedev-hud-item small{color:#ffffff61}.gamedev-hud-bar{flex:1;height:6px;border-radius:999px;background:#ffffff14;overflow:hidden}.gamedev-hud-fill{height:100%;background:linear-gradient(90deg,#ff572c,#fa7c20);background:linear-gradient(90deg,color(xyz 0.459 0.281 0.046),#fa7c20)}.gamedev-hud-fill.full{width:100%}.gamedev-hud-fill.xp{width:78%}.gamedev-hud-item.compact{justify-content:flex-end}.portfolio-page{background:#0c0a08;color:#f0ece8}.portfolio-nav,.portfolio-filter,.portfolio-search,.portfolio-result-count,.portfolio-nav-count,.portfolio-engine,.portfolio-platform,.portfolio-footer{font-family:Space Mono,monospace}.portfolio-nav{position:sticky;top:0;z-index:90;height:56px;padding:0 1.6rem;display:flex;align-items:center;justify-content:space-between;background:#0c0a08f0;border-bottom:1px solid rgba(255,255,255,.07)}.portfolio-nav-back,.portfolio-nav-count{color:#ffffff57;font-size:.72rem}.portfolio-nav-logo,.portfolio-nav-count strong{color:#ff572c;color:oklch(68% .22 35);font-size:.85rem}.portfolio-header{max-width:1180px;margin:0 auto;padding:4.8rem 1.6rem 2.4rem;animation:fadeUp .6s ease both}.portfolio-header span{color:#ff572c;color:oklch(68% .22 35);text-transform:uppercase;letter-spacing:.14em;font-size:.66rem;font-family:Space Mono,monospace}.portfolio-header span:before{content:"> "}.portfolio-header h1{margin:.7rem 0 .5rem;font-family:"DM Serif Display",serif;font-size:clamp(2.4rem,5vw,4rem);font-weight:400}.portfolio-header p{margin:0;color:#ffffff6b;line-height:1.75;max-width:620px}.portfolio-filters{position:sticky;top:56px;z-index:85;background:#0c0a08f5;border-top:1px solid rgba(255,255,255,.07);border-bottom:1px solid rgba(255,255,255,.07);padding:.9rem 1.6rem;display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.portfolio-filter-group{display:flex;gap:.45rem;flex-wrap:wrap}.portfolio-filter{border:1px solid rgba(255,255,255,.1);background:transparent;color:#ffffff59;border-radius:6px;padding:.35rem .8rem;font-size:.66rem;text-transform:uppercase;letter-spacing:.08em}.portfolio-filter.active{background:#ff572c;background:oklch(68% .22 35);border-color:#ff572c;border-color:oklch(68% .22 35);color:#0c0a08}.portfolio-search{flex:1;min-width:220px;max-width:300px;border-radius:6px;border:1px solid rgba(255,255,255,.1);background:#ffffff08;padding:.45rem .85rem;color:#f0ece8;font-size:.74rem}.portfolio-result-count{color:#ffffff4d;font-size:.68rem;margin-left:auto}.portfolio-grid-section{max-width:1180px;margin:0 auto;padding:2rem 1.6rem 3rem}.portfolio-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:1rem}.portfolio-card{border-radius:10px;overflow:hidden;border:1px solid rgba(255,255,255,.07);background:#110d09;transition:transform .2s ease,border-color .2s ease;animation:fadeUp .4s ease both}.portfolio-card.is-clickable{cursor:pointer}.portfolio-card:hover{transform:translateY(-3px);border-color:#ff572c;border-color:oklch(68% .22 35)}.portfolio-card:focus-visible{outline:2px solid oklch(68% .22 35);outline-offset:2px}.portfolio-card.is-console{border-color:#ea580c38}.portfolio-thumb{min-height:132px;position:relative;display:grid;place-items:center;overflow:hidden}.portfolio-thumb-grid{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:20px 20px}.portfolio-initial{position:relative;z-index:1;font-family:"DM Serif Display",serif;font-size:3rem;filter:drop-shadow(0 0 10px currentColor);animation:float 4s ease-in-out infinite}.portfolio-platforms{position:absolute;top:8px;right:8px;z-index:2;display:flex;flex-direction:column;gap:.28rem;align-items:flex-end}.portfolio-platform{padding:.16rem .45rem;border-radius:4px;background:#00000073;border:1px solid rgba(255,255,255,.15);font-size:.56rem;color:#ffffffb8}.portfolio-platform.web{color:#00bbc3;color:oklch(72% .18 200)}.portfolio-platform.android{color:#4cc157}.portfolio-platform.console{color:#ff7452;color:oklch(72% .18 35)}.portfolio-platform.pc{color:#78a1ff;color:oklch(72% .18 265)}.portfolio-card-body{padding:.9rem 1rem 1rem}.portfolio-engine{display:block;margin-bottom:.35rem;color:#ffffff47;font-size:.6rem}.portfolio-card-body h2{margin:0 0 .55rem;font-size:.95rem}.portfolio-tags span{border:1px solid rgba(255,255,255,.08);border-radius:4px;padding:.13rem .45rem;color:#ffffff4d;font-size:.58rem;font-family:Space Mono,monospace}.portfolio-empty{grid-column:1 / -1;text-align:center;padding:4rem 2rem;color:#ffffff3d;font-family:Space Mono,monospace;font-size:.75rem;letter-spacing:.08em}.portfolio-footer{max-width:1180px;margin:0 auto;padding:1.5rem 1.6rem 3rem;border-top:1px solid rgba(255,255,255,.07);display:flex;justify-content:space-between;color:#ffffff3d;font-size:.66rem}.portfolio-footer a{color:#ff572c;color:oklch(68% .22 35)}.software-page{background:#080c0a;color:#e8f0ea;overflow-x:hidden}.software-nav,.software-nav-links,.software-btn,.software-filter,.software-project-card:before,.software-project-tags span,.software-section-label,.software-stats,.software-footer,.software-socials button,.software-input,.software-terminal,.software-stack-terminal{font-family:JetBrains Mono,monospace}.software-nav{position:sticky;top:0;z-index:90;height:52px;padding:0 1.6rem;display:flex;align-items:center;justify-content:space-between;background:#080c0af0;border-bottom:1px solid rgba(255,255,255,.07);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.software-nav-back,.software-nav-links a{color:#ffffff59;font-size:.72rem}.software-nav-prompt{display:flex;align-items:center;gap:.4rem;color:#00ae64;color:oklch(66% .22 155);font-size:.78rem}.software-nav-cursor{animation:blink 1s step-end infinite}.software-nav-links{display:flex;gap:1.4rem}.software-nav-links a:before{content:"./";color:#ffffff2e}.software-hero{min-height:calc(100vh - 52px);position:relative;display:flex;align-items:center;padding:clamp(4rem,8vw,6rem) clamp(1.4rem,5vw,4.5rem)}.software-matrix{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;opacity:.6;pointer-events:none}.software-matrix-col{position:absolute;top:0;width:1px;color:#00ae64;color:oklch(66% .22 155);font-size:.7rem;line-height:1.2;opacity:.05;white-space:pre;animation:matrixDrop linear infinite}.software-hero-inner{position:relative;z-index:1;width:100%;max-width:900px}.software-terminal,.software-stack-terminal{background:#0d110f;border:1px solid rgba(255,255,255,.1);border-radius:12px;overflow:hidden;box-shadow:0 20px 60px #00000073}.software-terminal{margin-bottom:2rem;animation:fadeUp .7s ease both}.software-terminal-bar,.software-stack-bar{display:flex;align-items:center;gap:.5rem;padding:.7rem 1rem;border-bottom:1px solid rgba(255,255,255,.06);background:#ffffff0d}.term-btn{width:12px;height:12px;border-radius:50%}.term-btn.red{background:#ff5f57}.term-btn.yellow{background:#febc2e}.term-btn.green{background:#28c840}.software-terminal-title,.software-stack-title{margin-left:auto;color:#ffffff47;font-size:.68rem}.software-terminal-body,.software-stack-body{display:flex;flex-direction:column;gap:.2rem;padding:1.4rem;font-size:.82rem;line-height:1.85}.software-terminal-body .line{display:block;white-space:pre-wrap}.software-terminal-body .prompt,.software-stack-body span:first-child{color:#00ae64;color:oklch(66% .22 155)}.software-terminal-body .command{color:#e8f0ea}.software-terminal-body .key{color:#6592ff;color:oklch(68% .2 265)}.software-terminal-body .value{color:#fa7c20}.software-terminal-body .number{color:#fa5d36}.software-terminal-body .muted,.software-stack-body span{color:#ffffff80}.software-cursor{display:inline-block;width:8px;height:14px;background:#00ae64;background:oklch(66% .22 155);vertical-align:middle;animation:blink 1s step-end infinite}.software-headline{animation:fadeUp .7s ease .15s both}.software-headline h1{margin:0 0 1rem;font-family:"DM Serif Display",serif;font-size:clamp(2.8rem,5.6vw,5rem);line-height:1.02;font-weight:400}.software-headline h1 em{color:#00ae64;color:oklch(66% .22 155)}.software-headline p{max-width:500px;margin:0 0 1.8rem;color:#ffffff8a;line-height:1.8}.software-hero-actions{display:flex;flex-wrap:wrap;gap:.85rem;margin-bottom:2rem}.software-btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:.78rem 1.45rem;border:0;border-radius:8px;font-size:.82rem}.software-btn.primary{background:#00ae64;background:oklch(66% .22 155);color:#080c0a;font-weight:700}.software-btn.ghost{border:1px solid rgba(255,255,255,.1);color:#ffffff8f}.academic-btn:disabled,.gamedev-btn:disabled,.software-btn:disabled{cursor:wait;opacity:.72;transform:none}.software-stats{display:flex;flex-wrap:wrap;gap:1.4rem;color:#ffffff57;font-size:.78rem}.software-stats strong{color:#00ae64;color:oklch(66% .22 155)}.software-section{padding:clamp(3.2rem,7vw,5rem) clamp(1.4rem,5vw,4.5rem);border-top:1px solid rgba(255,255,255,.07)}.software-section-label{display:inline-block;margin-bottom:.8rem;font-size:.66rem;letter-spacing:.12em;color:#00ae64;color:oklch(66% .22 155);text-transform:uppercase}.software-section-label:before{content:"// "}.software-section h2{margin:0 0 2rem;font-family:"DM Serif Display",serif;font-size:clamp(1.9rem,3.5vw,2.8rem);font-weight:400}.software-filters{display:flex;flex-wrap:wrap;gap:.55rem;margin-bottom:1.8rem}.software-filter{border:1px solid rgba(255,255,255,.08);background:transparent;color:#ffffff59;border-radius:6px;padding:.35rem .8rem;text-transform:lowercase;font-size:.7rem}.software-filter.active{border-color:#00ae64;border-color:oklch(66% .22 155);color:#00ae64;color:oklch(66% .22 155);background:#00ae641a;background:oklch(66% .22 155 / .1)}.software-project-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem}.software-project-card{position:relative;padding:1.35rem;border-radius:12px;border:1px solid rgba(255,255,255,.07);background:#0c110e;transition:transform .2s ease,border-color .2s ease}.software-project-card:before{content:attr(data-lang);position:absolute;top:0;right:0;border-bottom-left-radius:8px;background:#00ae6424;background:oklch(66% .22 155 / .14);color:#00ae64;color:oklch(66% .22 155);padding:.3rem .7rem;font-size:.62rem;font-weight:600}.software-project-card:hover{transform:translateY(-3px);border-color:#00ae64;border-color:oklch(66% .22 155)}.software-project-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-bottom:1rem}.software-project-card h3{margin:0 0 .45rem;font-size:1rem}.software-project-card p{margin:0 0 1rem;color:#ffffff6b;line-height:1.65;font-size:.82rem}.software-skills-layout{display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:start}.software-skill-row{padding:.9rem 0;border-bottom:1px solid rgba(255,255,255,.06)}.software-skill-head{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.55rem}.software-skill-head span{font-size:.9rem;font-weight:500}.software-skill-head small{color:#00ae64;color:oklch(66% .22 155)}.software-skill-track{height:4px;border-radius:999px;background:#ffffff0f;overflow:hidden;margin-bottom:.45rem}.software-skill-fill{background:linear-gradient(90deg,#00ae63,#00b45b 25%,#00b755 37.5%,#00b951 43.75%,#00ba4f,#01bb4c 50%,#1ebb4c,#2dbc4c 62.5%,#42bd4b 75%,#5fbf49);background:linear-gradient(90deg,color(xyz 0.144 0.321 0.129),color(xyz 0.166 0.34 0.129) 25%,color(xyz 0.178 0.349 0.129) 37.5%,color(xyz 0.184 0.354 0.129) 43.75%,color(xyz 0.187 0.357 0.129),#01bb4c 50%,#1ebb4c,#2dbc4c 62.5%,#42bd4b 75%,#5fbf49)}.software-skill-row p{margin:0;color:#ffffff47;font-size:.66rem}.software-stack-body{font-size:.78rem}.software-experience-item{display:grid;grid-template-columns:160px 1fr;gap:2rem;padding:1.6rem 0;border-top:1px solid rgba(255,255,255,.07)}.software-experience-item>span{color:#ffffff4d;font-size:.72rem}.software-experience-item h3{margin:0 0 .25rem;font-size:1rem}.software-experience-item strong{color:#00ae64;color:oklch(66% .22 155);font-size:.78rem}.software-experience-item p{margin:.55rem 0 0;color:#ffffff6b;line-height:1.75;font-size:.84rem}.software-contact-copy{margin:0 0 1.5rem;color:#ffffff5c;line-height:1.9;font-size:.78rem}.software-socials{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1.5rem}.software-socials button{border:1px solid rgba(255,255,255,.08);background:transparent;color:#ffffff59;border-radius:6px;padding:.45rem .9rem;font-size:.72rem}.software-tone-academic{--card-accent: oklch(48% .2 255);--card-accent-bg: oklch(48% .2 255 / .08)}.software-tone-game{--card-accent: oklch(62% .22 35);--card-accent-bg: oklch(62% .22 35 / .08)}.software-footer{padding:1.5rem clamp(1.4rem,5vw,4.5rem);border-top:1px solid rgba(255,255,255,.07);display:flex;justify-content:space-between;color:#ffffff3d;font-size:.66rem}.software-footer a{color:#00ae64;color:oklch(66% .22 155)}@media (max-width: 980px){.home-page{overflow-y:auto}.home-stage{grid-template-columns:1fr}.home-side-panel{display:none}.home-center-panel{padding-top:5.5rem;animation:home-card-peek .85s ease-in-out .7s 1}.home-featured-card{grid-template-columns:1fr;min-height:auto}.home-card-illustration{display:none}.home-card-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.academic-hero,.academic-contact-grid,.gamedev-contact-grid,.software-contact-grid,.software-skills-layout,.academic-area-grid,.gamedev-skill-grid,.academic-publication,.gamedev-experience-item,.software-experience-item{grid-template-columns:1fr}}@media (max-width: 760px){.academic-nav,.gamedev-nav,.portfolio-nav,.software-nav{padding-left:1rem;padding-right:1rem}.academic-nav-links,.gamedev-nav-links,.software-nav-links{display:none}.home-topbar,.home-center-panel{padding-left:1rem;padding-right:1rem}.home-featured-card{padding:2rem 1.2rem 1.4rem}.home-card-title{font-size:clamp(2rem,12vw,3rem)}.home-keyboard-hint{display:none}.home-swipe-hint{display:flex;position:fixed;bottom:4.85rem;left:50%;transform:translate(-50%);z-index:220;align-items:center;gap:.6rem;padding:.45rem 1.1rem;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#ffffff0f;color:#ffffff73;font-size:.75rem;white-space:nowrap;pointer-events:none;animation:home-swipe-sway 2s ease-in-out 2s infinite}.home-swipe-chevron{color:#ffffffa6;font-size:1.1rem;line-height:1}.academic-explore-grid,.gamedev-explore-grid,.software-explore-grid{grid-template-columns:1fr}.gamedev-hero-stats{grid-template-columns:1fr;width:100%}.gamedev-hud{grid-template-columns:1fr 1fr}.portfolio-filters{flex-direction:column;align-items:stretch}.portfolio-search{max-width:none}.portfolio-result-count{margin-left:0}.portfolio-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.software-stats{flex-direction:column;gap:.7rem}}
