:root{--bg-gradient: linear-gradient(135deg, #0a0a1a, #0d0d20, #1a0a2e);--glass-bg: rgba(255, 255, 255, .05);--glass-border: rgba(255, 255, 255, .1);--glass-blur: blur(16px);--accent-primary: #6366f1;--accent-secondary: #8b5cf6;--accent-gradient: linear-gradient(135deg, #6366f1, #8b5cf6);--text-primary: rgba(255, 255, 255, .95);--text-secondary: rgba(255, 255, 255, .7);--text-muted: rgba(255, 255, 255, .45);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 40px;--space-2xl: 64px;--space-3xl: 96px;--radius-sm: 6px;--radius-md: 12px;--radius-lg: 20px;--radius-full: 9999px;--transition-fast: .15s ease;--transition-base: .25s ease;--transition-slow: .4s ease;--section-max-width: 1100px;--navbar-height: 64px;--font-small-copy: "KoPubWorldDotum", "KoPub Dotum", "KoPubDotum", "KoPub돋움체", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.6;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{display:block;background:var(--bg-gradient);background-attachment:fixed;min-height:100vh;color:var(--text-primary);min-width:320px}@media(max-width:768px){body{background-attachment:scroll}}#root{max-width:none;width:100%}section{scroll-margin-top:var(--navbar-height)}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.glass-card{background:radial-gradient(600px circle at var(--mouse-x, -999px) var(--mouse-y, -999px),rgba(99,102,241,.1),transparent 40%),#ffffff0d;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:var(--radius-md);transition:border-color var(--transition-base),box-shadow var(--transition-base),transform var(--transition-base)}.glass-card:hover{border-color:#6366f166;box-shadow:0 0 0 1px #6366f126,0 8px 32px #00000059;transform:translateY(-3px)}.reveal{opacity:0;transform:translateY(36px);transition:opacity .65s ease var(--delay, 0s),transform .65s ease var(--delay, 0s)}.reveal.is-visible{opacity:1;transform:translateY(0)}.section{padding:var(--space-3xl) var(--space-lg)}.section-inner{max-width:var(--section-max-width);margin:0 auto}.section-title{font-size:clamp(1.75rem,4vw,2.5rem);font-weight:700;margin-bottom:var(--space-xl);text-align:center;color:var(--text-primary)}.gradient-text{background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}:where(.about-text p,.proj-subtitle,.project-description,.proj-description,.game-description,.games-subtitle,.timeline-desc li,.global-desc,.lang-score,.contact-subtitle,.contact-description,.footer-copy,.intro-chat-line p){font-family:var(--font-small-copy)}.btn-primary{display:inline-flex;align-items:center;gap:var(--space-sm);padding:.75rem 1.75rem;background:var(--accent-gradient);color:#fff;border:none;border-radius:var(--radius-full);font-size:1rem;font-weight:600;cursor:pointer;transition:opacity var(--transition-base),transform var(--transition-base);text-decoration:none}.btn-primary:hover{opacity:.88;transform:translateY(-2px)}.btn-ghost{display:inline-flex;align-items:center;gap:var(--space-sm);padding:.75rem 1.75rem;background:transparent;color:var(--text-primary);border:1px solid var(--glass-border);border-radius:var(--radius-full);font-size:1rem;font-weight:500;cursor:pointer;transition:background var(--transition-base),border-color var(--transition-base),transform var(--transition-base);text-decoration:none;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}.btn-ghost:hover{background:var(--glass-bg);border-color:var(--accent-primary);transform:translateY(-2px)}body[data-theme=backend]{--accent-primary: #22c55e;--accent-secondary: #16a34a;--accent-gradient: linear-gradient(135deg, #22c55e, #16a34a);--bg-gradient: linear-gradient(135deg, #060d06, #0a150a, #0d1a0d);--glass-border: rgba(34, 197, 94, .12)}body[data-theme=backend] .section-title:before{content:"~/portfolio $ ";color:var(--accent-primary);font-size:.6em;font-family:Courier New,Courier,monospace;font-weight:400;display:block;margin-bottom:4px;letter-spacing:0}body[data-theme=backend] .glass-card{font-family:Courier New,Courier,monospace;border-color:#22c55e26}body[data-theme=backend] .glass-card:before{content:"";display:block;width:10px;height:10px;border-radius:50%;background:#ff5f56;box-shadow:16px 0 #ffbd2e,32px 0 #27c93f;margin-bottom:14px}body[data-theme=backend] .navbar-logo:before{content:">_ ";font-family:Courier New,Courier,monospace}body[data-theme=backend] .gradient-text{background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}body[data-theme=backend] .skill-pill,body[data-theme=backend] .project-tag,body[data-theme=backend] .game-tag{background:#22c55e1f;border-color:#22c55e40;font-family:Courier New,Courier,monospace}body[data-theme=backend] .btn-primary{background:var(--accent-gradient)}body[data-theme=backend] .btn-ghost:hover{border-color:var(--accent-primary)}body[data-theme=ai]{--accent-primary: #06b6d4;--accent-secondary: #0891b2;--accent-gradient: linear-gradient(135deg, #06b6d4, #8b5cf6);--glass-border: rgba(6, 182, 212, .12)}body[data-theme=ai]:before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(rgba(6,182,212,.07) 1px,transparent 1px);background-size:40px 40px}body[data-theme=ai] .gradient-text{background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}body[data-theme=ai] .navbar-logo:before{content:">_ ";font-family:Courier New,Courier,monospace}body[data-theme=ai] .section-title:before{content:"AI · ";color:var(--accent-primary);font-size:.55em;font-weight:700;letter-spacing:.12em;display:block;margin-bottom:4px}body[data-theme=ai] .glass-card{border-color:#06b6d41f}body[data-theme=ai] .glass-card:hover{border-color:#06b6d466;box-shadow:0 0 0 1px #06b6d426,0 8px 32px #00000059}body[data-theme=ai] .skill-pill,body[data-theme=ai] .project-tag,body[data-theme=ai] .game-tag{background:#06b6d41f;border-color:#06b6d440}body[data-theme=ai] .btn-primary{background:var(--accent-gradient)}body[data-theme=ai] .btn-ghost:hover{border-color:var(--accent-primary)}body[data-theme=game]{--accent-primary: #f59e0b;--accent-secondary: #d97706;--accent-gradient: linear-gradient(135deg, #f59e0b, #ef4444);--glass-border: rgba(245, 158, 11, .12)}body[data-theme=game] .section-title:before{content:"CHAPTER · ";color:var(--accent-primary);font-size:.55em;letter-spacing:.12em;font-weight:700;display:block;margin-bottom:4px}body[data-theme=game] .gradient-text{background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}body[data-theme=game] .navbar-logo:before{content:">_ ";font-family:Courier New,Courier,monospace}body[data-theme=game] .glass-card{border-color:#f59e0b1f}body[data-theme=game] .glass-card:hover{border-color:#f59e0b73;box-shadow:0 0 0 1px #f59e0b2e,0 8px 32px #00000059}body[data-theme=game] .skill-pill,body[data-theme=game] .project-tag,body[data-theme=game] .game-tag{background:#f59e0b1f;border-color:#f59e0b40}body[data-theme=game] .btn-primary{background:var(--accent-gradient)}body[data-theme=game] .btn-ghost:hover{border-color:var(--accent-primary)}body[data-theme=game] .game-badge--live{background:#f59e0b26;border-color:#f59e0b59;color:#fbbf24}body[data-style=formal]{--transition-fast: 60ms ease;--transition-base: 80ms ease;--transition-slow: .12s ease}body[data-style=formal] .reveal{transition-duration:.18s!important}body[data-style=formal] .hero-orb{animation:none!important}body[data-style=formal] .hero-content{animation:none!important;opacity:1!important;transform:none!important}body[data-style=formal] .glass-card{transition-duration:80ms!important}.intro-overlay{position:relative;min-width:320px;overflow:hidden;color:var(--text-primary);--intro-orb-rgb: 6, 182, 212;--intro-orb-core: #e0fbff}.intro-overlay[data-intro-theme=backend]{--intro-orb-rgb: 34, 197, 94;--intro-orb-core: #dcfce7}.intro-overlay[data-intro-theme=ai]{--intro-orb-rgb: 6, 182, 212;--intro-orb-core: #e0fbff}.intro-overlay[data-intro-theme=game]{--intro-orb-rgb: 245, 158, 11;--intro-orb-core: #fff7d6}.intro-overlay:before{content:"";position:absolute;left:28%;top:45%;z-index:-1;width:min(96vw,1180px);aspect-ratio:1;border-radius:50%;pointer-events:none;transform:translate(-50%,-50%) scale(.82);background:radial-gradient(circle at 50% 50%,var(--intro-orb-core) 0%,rgba(var(--intro-orb-rgb),.55) 12%,rgba(var(--intro-orb-rgb),.3) 30%,rgba(var(--intro-orb-rgb),.1) 48%,rgba(var(--intro-orb-rgb),.03) 62%,transparent 76%);filter:blur(72px);opacity:.28;animation:intro-orb-pulse 4.8s ease-in-out infinite}@keyframes intro-orb-pulse{0%,to{opacity:.16;transform:translate(-50%,-50%) scale(.72);filter:blur(84px)}48%{opacity:.36;transform:translate(-50%,-50%) scale(1.04);filter:blur(60px)}}.intro-shell{position:relative;z-index:1;width:100%;min-height:82vh;max-width:var(--section-max-width);margin:0 auto;padding:var(--navbar-height) var(--space-lg) var(--space-2xl);display:flex;flex-direction:column}.intro-main{flex:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,.9fr);gap:var(--space-2xl);align-items:center;padding:var(--space-xl) 0}.intro-hero{text-align:left;animation:intro-entrance .9s cubic-bezier(.22,1,.36,1) both}@keyframes intro-entrance{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.intro-greeting{font-size:1.1rem;color:var(--text-secondary);margin-bottom:var(--space-sm)}.intro-name{font-size:clamp(2.5rem,8vw,4.5rem);font-weight:800;line-height:1.1;letter-spacing:0;margin-bottom:var(--space-md)}.intro-title{min-height:2.5rem;margin-bottom:var(--space-lg);display:flex;align-items:center;gap:2px;color:var(--text-primary);font-size:clamp(1.25rem,4vw,2rem);font-weight:600}.intro-title-text,.intro-title-cursor{background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.intro-title-cursor{animation:intro-blink 1s step-end infinite;font-weight:300}@keyframes intro-blink{0%,to{opacity:1}50%{opacity:0}}.intro-copy{max-width:520px;margin-bottom:var(--space-xl);color:var(--text-secondary);font-size:1.05rem;line-height:1.7}.intro-cta{display:flex;gap:var(--space-md);flex-wrap:wrap}.intro-console{width:100%;padding:var(--space-md);border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);box-shadow:0 24px 80px #0000003d}.intro-console-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding-bottom:var(--space-md);color:var(--text-muted);font-size:.82rem;font-weight:700}.intro-console-head>div{display:inline-flex;align-items:center;gap:var(--space-sm)}.intro-status-dot{width:8px;height:8px;border-radius:50%;background:var(--accent-primary);box-shadow:0 0 14px var(--accent-primary)}.intro-console-title{color:var(--text-secondary)}.intro-chat-log{min-height:210px;display:flex;flex-direction:column;justify-content:flex-end;gap:var(--space-sm);padding:var(--space-md);border-radius:var(--radius-sm);background:#00000029}.intro-chat-line{display:grid;grid-template-columns:34px minmax(0,1fr);gap:var(--space-sm);align-items:start}.intro-chat-line--visitor{max-width:86%;margin-left:auto}.intro-chat-speaker{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);background:#ffffff14;color:var(--text-primary);font-size:.72rem;font-weight:800}.intro-chat-line p{margin:0;color:var(--text-secondary);font-size:.92rem;line-height:1.55}.intro-chat-line--visitor p{color:var(--text-primary)}.intro-prompt{min-height:52px;margin-top:var(--space-md);padding:0 var(--space-sm) 0 var(--space-md);display:flex;align-items:center;gap:var(--space-sm);border:1px solid var(--glass-border);border-radius:var(--radius-sm);color:var(--text-muted);background:#00000029}.intro-prompt input{min-width:0;flex:1;border:0;outline:0;color:var(--text-primary);background:transparent;font:inherit}.intro-prompt input::placeholder{color:var(--text-muted)}.intro-prompt button{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:var(--radius-sm);background:var(--accent-gradient);color:#fff;cursor:pointer;transition:opacity var(--transition-base),transform var(--transition-base)}.intro-prompt button:hover{opacity:.88;transform:translateY(-2px)}.intro-preset-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-sm);padding-bottom:var(--space-md)}.intro-preset-card{min-height:38px;padding:0 var(--space-md);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);border:1px solid var(--glass-border);border-radius:var(--radius-full);background:#ffffff0a;color:var(--text-secondary);font:inherit;font-size:.86rem;font-weight:700;cursor:pointer;transition:background var(--transition-base),border-color var(--transition-base),color var(--transition-base)}.intro-preset-card:hover,.intro-preset-card.is-selected{border-color:var(--accent-primary);background:#6366f11a;color:var(--text-primary)}.intro-preset-icon{display:inline-flex;color:var(--accent-primary)}.intro-static-note{max-width:760px;margin:0 auto;padding-bottom:var(--space-lg);color:var(--text-muted);font-size:.86rem;line-height:1.55;text-align:center}@media(max-width:900px){.intro-main{grid-template-columns:1fr;gap:var(--space-xl);text-align:center}.intro-hero{text-align:center}.intro-title,.intro-cta{justify-content:center}.intro-copy{margin-left:auto;margin-right:auto}}@media(max-width:560px){.intro-shell{padding-left:var(--space-md);padding-right:var(--space-md)}.intro-chat-line,.intro-chat-line--visitor{max-width:100%}.intro-preset-grid{align-items:stretch;flex-direction:column}}.chatbot-toggle{position:fixed;bottom:28px;right:28px;z-index:500;width:52px;height:52px;border-radius:50%;background:var(--accent-gradient);color:#fff;border:none;font-size:1.3rem;cursor:pointer;box-shadow:0 4px 20px #06b6d466;transition:transform var(--transition-base),box-shadow var(--transition-base);display:flex;align-items:center;justify-content:center}.chatbot-toggle:hover{transform:scale(1.1);box-shadow:0 6px 28px #06b6d48c}.chatbot-window{position:fixed;bottom:90px;right:28px;z-index:499;width:320px;max-height:480px;display:flex;flex-direction:column;background:#0a0a1af2;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(6,182,212,.2);border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 8px 40px #00000080;animation:chatbot-appear .25s cubic-bezier(.22,1,.36,1) both}@keyframes chatbot-appear{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.chatbot-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);border-bottom:1px solid rgba(6,182,212,.15);flex-shrink:0}.chatbot-title{font-size:.9rem;font-weight:700;color:var(--text-primary)}.chatbot-status{font-size:.72rem;color:#22c55e}.chatbot-messages{flex:1;overflow-y:auto;padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-sm);scrollbar-width:thin;scrollbar-color:rgba(6,182,212,.2) transparent}.chatbot-msg{max-width:85%;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-size:.82rem;line-height:1.55}.chatbot-msg--bot{background:#06b6d41f;border:1px solid rgba(6,182,212,.18);color:var(--text-primary);align-self:flex-start;border-radius:2px var(--radius-sm) var(--radius-sm) var(--radius-sm)}.chatbot-msg--user{background:#6366f12e;border:1px solid rgba(99,102,241,.25);color:var(--text-primary);align-self:flex-end;border-radius:var(--radius-sm) 2px var(--radius-sm) var(--radius-sm)}.chatbot-typing{display:flex;gap:5px;align-items:center;padding:10px 14px}.chatbot-typing span{width:6px;height:6px;border-radius:50%;background:#06b6d499;animation:typing-dot 1s ease-in-out infinite}.chatbot-typing span:nth-child(2){animation-delay:.15s}.chatbot-typing span:nth-child(3){animation-delay:.3s}@keyframes typing-dot{0%,80%,to{transform:scale(.7);opacity:.4}40%{transform:scale(1.1);opacity:1}}.chatbot-quickpicks{display:flex;flex-wrap:wrap;gap:5px;padding:var(--space-sm) var(--space-md);border-top:1px solid rgba(6,182,212,.1);flex-shrink:0}.chatbot-quickpick{padding:3px 9px;background:#06b6d414;border:1px solid rgba(6,182,212,.2);border-radius:var(--radius-full);font-size:.7rem;color:var(--text-secondary);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast);text-align:left}.chatbot-quickpick:hover{background:#06b6d42e;color:var(--text-primary)}.chatbot-input-row{display:flex;gap:var(--space-sm);padding:var(--space-sm) var(--space-md) var(--space-md);flex-shrink:0}.chatbot-input{flex:1;background:#ffffff0d;border:1px solid rgba(6,182,212,.18);border-radius:var(--radius-sm);padding:7px 12px;font-size:.82rem;color:var(--text-primary);outline:none;font-family:inherit;transition:border-color var(--transition-fast)}.chatbot-input:focus{border-color:#06b6d473}.chatbot-input::placeholder{color:var(--text-muted)}.chatbot-send{background:var(--accent-gradient);border:none;border-radius:var(--radius-sm);padding:7px 12px;color:#fff;font-size:.8rem;cursor:pointer;transition:opacity var(--transition-fast)}.chatbot-send:disabled{opacity:.4;cursor:not-allowed}.gamemap-overlay{position:fixed;inset:0;z-index:900;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;animation:overlay-in .2s ease both}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.gamemap-panel{background:#0a0a1af5;border:1px solid rgba(245,158,11,.22);border-radius:var(--radius-lg);padding:var(--space-xl);width:min(360px,92vw);max-height:85vh;overflow-y:auto;animation:panel-in .25s cubic-bezier(.22,1,.36,1) both}@keyframes panel-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}.gamemap-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-lg)}.gamemap-title{font-size:1rem;font-weight:700;color:#fbbf24;letter-spacing:.08em}.gamemap-close{background:transparent;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;padding:4px 8px;border-radius:var(--radius-sm);transition:color var(--transition-fast),background var(--transition-fast)}.gamemap-close:hover{color:var(--text-primary);background:#ffffff0f}.gamemap-nodes{display:flex;flex-direction:column;align-items:center}.gamemap-node-row{display:flex;flex-direction:column;align-items:center;width:100%}.gamemap-connector{width:2px;height:20px;background:#ffffff1a;border-radius:var(--radius-full);transition:background var(--transition-base)}.gamemap-connector.is-unlocked{background:linear-gradient(to bottom,#f59e0b,#d97706)}.gamemap-node{display:flex;align-items:center;gap:var(--space-md);width:100%;padding:var(--space-sm) var(--space-lg);background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-md);cursor:pointer;color:var(--text-muted);transition:border-color var(--transition-base),background var(--transition-base),color var(--transition-base),transform var(--transition-base);text-align:left}.gamemap-node:hover{transform:translate(4px);background:#f59e0b0f;border-color:#f59e0b40;color:var(--text-primary)}.gamemap-node.is-unlocked{border-color:#f59e0b4d;background:#f59e0b0f;color:var(--text-primary)}.gamemap-node.is-unlocked:hover{border-color:#f59e0b8c;box-shadow:0 0 12px #f59e0b1f}.gamemap-node-icon{font-size:1.1rem;flex-shrink:0;width:24px;text-align:center}.gamemap-node-label{flex:1;font-size:.9rem;font-weight:600}.gamemap-node-check{font-size:.75rem;color:#fbbf24;font-weight:700;flex-shrink:0}.game-hud{position:fixed;left:50%;right:auto;bottom:var(--space-lg);z-index:90;height:36px;width:min(520px,calc(100% - 32px));transform:translate(-50%);background:#0a0a1aeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(245,158,11,.24);border-radius:var(--radius-full);box-shadow:0 12px 36px #00000052;display:flex;align-items:center;gap:var(--space-md);padding:0 var(--space-md)}.hud-level{font-size:.75rem;font-weight:700;color:#fbbf24;letter-spacing:.05em;flex-shrink:0;min-width:40px}.hud-xp-bar{flex:1;max-width:200px;height:6px;background:#ffffff14;border-radius:var(--radius-full);overflow:hidden}.hud-xp-fill{height:100%;background:linear-gradient(90deg,#f59e0b,#ef4444);border-radius:var(--radius-full);transition:width .6s cubic-bezier(.22,1,.36,1)}.hud-chapters{font-size:.72rem;color:var(--text-muted);flex-shrink:0}.hud-map-btn{margin-left:auto;padding:3px 12px;background:#f59e0b1f;border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-full);font-size:.72rem;color:#fbbf24;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast);flex-shrink:0}.hud-map-btn:hover{background:#f59e0b38;border-color:#f59e0b8c}.navbar{position:fixed;top:0;left:0;right:0;height:var(--navbar-height);z-index:100;transition:background var(--transition-base),backdrop-filter var(--transition-base),-webkit-backdrop-filter var(--transition-base),border-color var(--transition-base);border-bottom:1px solid transparent}.navbar--scrolled{background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-bottom-color:var(--glass-border)}.navbar-inner{max-width:var(--section-max-width);margin:0 auto;height:100%;padding:0 var(--space-lg);display:grid;grid-template-columns:180px minmax(0,1fr) 120px;align-items:center;gap:var(--space-lg)}.navbar-logo{display:block;width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1.2rem;font-weight:700;letter-spacing:0;text-decoration:none}.navbar-links{display:flex;justify-content:center;list-style:none;gap:var(--space-xl);min-width:0}.navbar-link{color:var(--text-secondary);font-size:.9rem;font-weight:500;text-decoration:none;transition:color var(--transition-fast)}.navbar-link:hover{color:var(--text-primary)}.navbar-hamburger{display:none;flex-direction:column;justify-content:center;gap:5px;width:36px;height:36px;background:transparent;border:none;cursor:pointer;padding:4px;justify-self:end}.navbar-hamburger span{display:block;height:2px;background:var(--text-primary);border-radius:var(--radius-full);transition:transform var(--transition-base),opacity var(--transition-base)}.navbar-hamburger.is-open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.navbar-hamburger.is-open span:nth-child(2){opacity:0}.navbar-hamburger.is-open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.navbar-theme-reset{justify-self:end;width:120px;padding:4px 12px;background:#ffffff0a;border:1px solid var(--glass-border);border-radius:var(--radius-full);font-size:.72rem;font-weight:600;color:var(--text-muted);cursor:pointer;transition:color var(--transition-fast),border-color var(--transition-fast),background var(--transition-fast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:capitalize;letter-spacing:.04em}.navbar-theme-reset:hover{color:var(--text-primary);border-color:var(--accent-primary);background:#6366f114}.navbar-mobile-theme-reset{display:block;width:100%;padding:var(--space-md) var(--space-lg);background:transparent;border:none;color:var(--text-muted);font-size:.88rem;font-weight:500;text-align:left;cursor:pointer;transition:color var(--transition-fast),background var(--transition-fast);font-family:inherit}.navbar-mobile-theme-reset:hover{color:var(--accent-primary);background:var(--glass-bg)}.navbar-mobile-menu{list-style:none;display:flex;flex-direction:column;background:#0a0a1af2;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-top:1px solid var(--glass-border);padding:var(--space-md) 0}.navbar-mobile-link{display:block;padding:var(--space-md) var(--space-lg);color:var(--text-secondary);font-size:1rem;font-weight:500;text-decoration:none;transition:color var(--transition-fast),background var(--transition-fast)}.navbar-mobile-link:hover{color:var(--text-primary);background:var(--glass-bg)}@media(max-width:768px){.navbar-inner{grid-template-columns:minmax(0,1fr) 44px}.navbar-logo{width:auto}.navbar-links,.navbar-theme-reset{display:none}.navbar-hamburger{display:flex}}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-xl);align-items:start}.about-text{display:flex;flex-direction:column;gap:var(--space-md)}.about-text p{color:var(--text-secondary);line-height:1.8}.about-card{padding:var(--space-xl)}.about-card-title{font-size:1.1rem;font-weight:700;color:var(--text-primary);margin-bottom:var(--space-lg)}.about-info-list{list-style:none;display:flex;flex-direction:column;gap:var(--space-md)}.about-info-item{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-md);padding-bottom:var(--space-md);border-bottom:1px solid var(--glass-border)}.about-info-item:last-child{border-bottom:none;padding-bottom:0}.about-info-label{font-size:.8rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;flex-shrink:0}.about-info-value{font-size:.9rem;color:var(--text-primary);text-align:right}@media(max-width:768px){.about-grid{grid-template-columns:1fr}}.skills-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-lg)}.skills-card{padding:var(--space-lg)}.skills-category{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:var(--space-md)}.skills-pills{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.skill-pill{display:inline-block;padding:4px 12px;background:#6366f126;border:1px solid rgba(99,102,241,.25);border-radius:var(--radius-full);font-size:.85rem;color:var(--text-primary);transition:transform var(--transition-fast),background var(--transition-fast);cursor:default}.skill-pill:hover{transform:scale(1.05);background:#6366f147}@media(max-width:1100px){.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.skills-grid{grid-template-columns:1fr}}.experience-layout{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-xl);align-items:start}.experience-col-title{font-size:1.05rem;font-weight:700;color:var(--text-primary);margin-bottom:var(--space-lg);display:flex;align-items:center;gap:var(--space-sm)}.experience-col-icon{font-size:1.1rem}.timeline{position:relative;padding-left:20px}.timeline:before{content:"";position:absolute;left:6px;top:8px;bottom:8px;width:2px;background:linear-gradient(to bottom,var(--accent-primary),var(--accent-secondary));border-radius:var(--radius-full);opacity:.4}.timeline-item{position:relative;margin-bottom:var(--space-lg)}.timeline-item:last-child{margin-bottom:0}.timeline-dot{position:absolute;left:-18px;top:18px;width:10px;height:10px;border-radius:50%;background:var(--accent-gradient);box-shadow:0 0 8px #6366f199}.timeline-content{padding:var(--space-lg)}.timeline-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-sm);margin-bottom:var(--space-xs);flex-wrap:wrap}.timeline-role{font-size:1rem;font-weight:700;color:var(--text-primary)}.timeline-period{font-size:.78rem;color:var(--accent-primary);font-weight:600;white-space:nowrap;padding:2px 8px;background:#6366f11f;border-radius:var(--radius-full)}.timeline-company{display:block;font-size:.85rem;color:var(--text-secondary);margin-bottom:var(--space-sm)}.timeline-desc{list-style:none;display:flex;flex-direction:column;gap:var(--space-xs)}.timeline-desc li{font-size:.85rem;color:var(--text-muted);line-height:1.6;padding-left:var(--space-md);position:relative}.timeline-desc li:before{content:"→";position:absolute;left:0;color:var(--accent-primary);font-size:.7rem;top:2px}.experience-right{display:flex;flex-direction:column;gap:var(--space-2xl)}.certs-list{display:flex;flex-direction:column;gap:var(--space-sm)}.cert-card{padding:var(--space-md) var(--space-lg);display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);flex-wrap:wrap}.cert-name{font-size:.92rem;font-weight:600;color:var(--text-primary)}.cert-meta{display:flex;align-items:center;gap:var(--space-sm);flex-shrink:0}.cert-issuer{font-size:.8rem;color:var(--text-muted)}.cert-year{font-size:.78rem;font-weight:600;color:var(--accent-secondary);padding:2px 8px;background:#8b5cf61f;border-radius:var(--radius-full)}.global-desc{font-size:.88rem;color:var(--text-secondary);line-height:1.75;margin-bottom:var(--space-lg)}.languages-list{display:flex;flex-direction:column;gap:var(--space-sm)}.lang-card{padding:var(--space-md) var(--space-lg)}.lang-header{display:flex;justify-content:space-between;align-items:center}.lang-name{font-size:.9rem;font-weight:600;color:var(--text-primary)}.lang-level{font-size:.78rem;font-weight:600;color:var(--accent-primary);padding:2px 10px;background:#6366f11f;border:1px solid rgba(99,102,241,.2);border-radius:var(--radius-full)}.lang-score{display:block;font-size:.78rem;color:var(--text-muted);margin-top:var(--space-xs);line-height:1.55;white-space:pre-line}@media(max-width:768px){.experience-layout{grid-template-columns:1fr}}.heliades-demo{position:relative;width:100%;height:360px;background:linear-gradient(180deg,#06070b,#020305);border-radius:var(--radius-md) var(--radius-md) 0 0;overflow:hidden;display:flex;align-items:center;justify-content:center}.heliades-wave{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.heliades-content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:6px}.heliades-status{font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;padding:4px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:#00000061;color:#8d9ab3;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:color .4s ease,border-color .4s ease}.heliades-orb-wrap{position:relative;width:280px;height:280px;display:flex;align-items:center;justify-content:center}.heliades-particle{position:absolute;inset:0;width:100%!important;height:100%!important;border-radius:50%}.heliades-label{position:relative;z-index:2;letter-spacing:.34em;font-size:.72rem;font-weight:300;color:#ffffff8c;text-transform:uppercase;mix-blend-mode:screen;pointer-events:none;-webkit-user-select:none;user-select:none}.heliades-demo-tag{font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:#ffffff38}.projects-sub{margin-bottom:var(--space-3xl)}.proj-subtitle{text-align:center;color:var(--text-secondary);margin-top:calc(-1 * var(--space-lg));margin-bottom:var(--space-xl);font-size:.95rem}.projects-sub-title{font-size:1.1rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.12em;margin-bottom:var(--space-lg);padding-bottom:var(--space-sm);border-bottom:1px solid var(--glass-border)}.proj-featured-card{padding:0;overflow:hidden;margin-bottom:var(--space-lg)}.proj-video-wrap{width:100%;height:420px;overflow:hidden;border-radius:var(--radius-md) var(--radius-md) 0 0;background:#000}.proj-video{width:100%;height:100%;object-fit:cover;display:block}.proj-card-body{padding:var(--space-xl)}.proj-card-body--fill{flex:1}.proj-card-header{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md)}.proj-badge{padding:3px 10px;border-radius:var(--radius-full);font-size:.72rem;font-weight:700;letter-spacing:.06em;flex-shrink:0}.proj-badge--ai{background:#06b6d426;border:1px solid rgba(6,182,212,.35);color:#06b6d4e6}.proj-badge--fe{background:#34d39926;border:1px solid rgba(52,211,153,.35);color:#34d399e6}.proj-title{font-size:1.15rem;font-weight:700;color:var(--text-primary)}.proj-description{font-size:.9rem;color:var(--text-secondary);line-height:1.7;margin-bottom:var(--space-md)}.proj-tags{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-bottom:var(--space-lg)}.proj-tag{padding:3px 10px;background:#8b5cf626;border:1px solid rgba(139,92,246,.25);border-radius:var(--radius-full);font-size:.78rem;color:var(--text-secondary)}.proj-links{display:flex;gap:var(--space-sm);margin-top:auto}.proj-btn{font-size:.85rem;padding:.5rem 1.2rem}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-lg)}.proj-card{padding:var(--space-xl);display:flex;flex-direction:column}.backend-featured-card{padding:0;overflow:hidden;margin-bottom:var(--space-lg)}.backend-slider-wrap{position:relative;width:100%;height:420px;overflow:hidden;border-radius:var(--radius-md) var(--radius-md) 0 0;background:#000}.backend-slider-img{width:100%;height:100%;object-fit:cover;display:block;animation:slide-fade-in .5s ease}@keyframes slide-fade-in{0%{opacity:0;transform:scale(1.03)}to{opacity:1;transform:scale(1)}}.slider-btn{position:absolute;top:50%;transform:translateY(-50%);background:#00000080;border:1px solid rgba(255,255,255,.2);color:#fff;border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s;z-index:2}.slider-btn:hover{background:#000000bf}.slider-btn--prev{left:12px}.slider-btn--next{right:12px}.slider-dots{position:absolute;bottom:12px;left:50%;transform:translate(-50%);display:flex;gap:6px;z-index:2}.slider-dot{width:8px;height:8px;border-radius:50%;background:#fff6;border:none;cursor:pointer;transition:background .2s}.slider-dot--active{background:#fff}.backend-card-body{padding:var(--space-xl)}.backend-card-header{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md)}.proj-badge--be{padding:3px 10px;border-radius:var(--radius-full);font-size:.72rem;font-weight:700;letter-spacing:.06em;flex-shrink:0;background:#fb923c26;border:1px solid rgba(251,146,60,.35);color:#fb923ce6}.games-subtitle{text-align:center;color:var(--text-secondary);margin-top:calc(-1 * var(--space-lg));margin-bottom:var(--space-xl);font-size:.95rem}.games-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-lg)}.game-card{padding:var(--space-xl);display:flex;flex-direction:column}.game-body{flex:1}.game-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-sm);margin-bottom:var(--space-md)}.game-title{font-size:1.15rem;font-weight:700;color:var(--text-primary)}.game-badge{flex-shrink:0;padding:3px 10px;border-radius:var(--radius-full);font-size:.75rem;font-weight:600;white-space:nowrap}.game-badge--live{background:#22c55e26;border:1px solid rgba(34,197,94,.35);color:#4ade80}.game-badge--in-development{background:#6366f126;border:1px solid rgba(99,102,241,.35);color:var(--accent-primary)}.game-description{font-size:.9rem;color:var(--text-secondary);line-height:1.7;margin-bottom:var(--space-md)}.game-tags{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-bottom:var(--space-md)}.game-tag{padding:3px 10px;background:#8b5cf626;border:1px solid rgba(139,92,246,.25);border-radius:var(--radius-full);font-size:.78rem;color:var(--text-secondary)}.game-ai-highlight{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-md);background:linear-gradient(135deg,#6366f11f,#8b5cf61f);border:1px solid rgba(99,102,241,.3);border-radius:var(--radius-sm)}.game-ai-icon{font-size:.9rem;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;flex-shrink:0}.game-ai-text{font-size:.82rem;font-weight:500;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.game-links{display:flex;gap:var(--space-sm);margin-top:auto;padding-top:var(--space-md)}.game-btn{font-size:.85rem;padding:.5rem 1.2rem}.contact-subtitle{text-align:center;color:var(--text-secondary);margin-top:calc(-1 * var(--space-lg));margin-bottom:var(--space-xl);font-size:.95rem}.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-lg);max-width:720px;margin:0 auto}.contact-card{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-xl);gap:var(--space-sm);text-decoration:none;color:inherit;transition:transform var(--transition-base),border-color var(--transition-base),background var(--transition-base)}.contact-card:hover{transform:translateY(-4px);border-color:var(--accent-primary);background:#6366f114}.contact-icon{font-size:2rem;margin-bottom:var(--space-xs)}.contact-label{font-size:1.1rem;font-weight:700;color:var(--text-primary)}.contact-description{font-size:.85rem;color:var(--text-muted);line-height:1.5}.footer{border-top:1px solid var(--glass-border);background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);padding:var(--space-lg) var(--space-lg)}.footer-inner{max-width:var(--section-max-width);margin:0 auto;text-align:center}.footer-copy{color:var(--text-muted);font-size:.875rem}
