@import"https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.css";: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);--bg-dot-color: rgba(255, 255, 255, .06);--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: 32px;--space-2xl: 56px;--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-ui: "Pretendard", -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", "Segoe UI", sans-serif;--font-size-hero-title: clamp(2.4rem, 5vw, 3.8rem);--font-size-section-title: clamp(1.8rem, 4vw, 2.8rem);--font-size-section-copy: 1rem;--font-size-card-title: 1.05rem;--font-size-body: .9rem;--font-size-small: .8rem;--font-size-tag: .75rem;--font-size-button: .9rem;--font-small-copy: "KoPubWorldDotum", "KoPub Dotum", "KoPubDotum", "KoPub돋움체", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;font-family:var(--font-ui);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{position:relative;display:block;background:var(--bg-gradient);background-attachment:fixed;min-height:100vh;color:var(--text-primary);min-width:320px}body:before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(circle 1px at 1px 1px,var(--bg-dot-color) 1px,transparent 0);background-size:28px 28px;opacity:.9}@media(max-width:768px){body{background-attachment:scroll}}#root{position:relative;z-index:1;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:var(--font-size-section-title);font-weight:900;line-height:1.15;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:12px 24px;background:var(--accent-gradient);color:#fff;border:none;border-radius:var(--radius-full);font-size:var(--font-size-button);font-weight:700;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:12px 24px;background:transparent;color:var(--text-primary);border:1px solid var(--glass-border);border-radius:var(--radius-full);font-size:var(--font-size-button);font-weight:700;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: #8b5cf6;--accent-secondary: #7c3aed;--accent-gradient: linear-gradient(135deg, #8b5cf6, #6d28d9);--bg-gradient: linear-gradient(135deg, #0d0718, #140a24, #1b1030);--glass-border: rgba(139, 92, 246, .14);--bg-dot-color: rgba(139, 92, 246, .1)}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:#8b5cf62e}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:#8b5cf61f;border-color:#8b5cf647;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);--bg-dot-color: rgba(6, 182, 212, .08)}body[data-theme=ai]:before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(circle 1px at 1px 1px,var(--bg-dot-color) 1px,transparent 0);background-size:28px 28px}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);--bg-dot-color: rgba(245, 158, 11, .08)}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}body[data-theme=toss]{--accent-primary: #3182F6;--accent-secondary: #60A5FA;--accent-gradient: linear-gradient(135deg, #3182F6 0%, #60A5FA 50%, #93C5FD 100%);--glass-bg: rgba(255, 255, 255, .04);--glass-border: rgba(49, 130, 246, .18);--glass-blur: blur(20px);--bg-dot-color: rgba(255, 255, 255, .07);--text-primary: #FFFFFF;--text-secondary: rgba(255, 255, 255, .72);--text-muted: rgba(255, 255, 255, .4);--bg-gradient: #07090F;--toss-glow: 0 0 40px rgba(49, 130, 246, .25), 0 0 80px rgba(49, 130, 246, .1);--toss-glow-sm: 0 0 12px rgba(49, 130, 246, .35);font-family:Pretendard,-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Malgun Gothic,sans-serif}body[data-theme=toss]{background:#07090f;background-image:radial-gradient(ellipse 80% 50% at 20% -5%,rgba(49,130,246,.18) 0%,transparent 60%),radial-gradient(ellipse 60% 40% at 80% 110%,rgba(96,165,250,.12) 0%,transparent 55%),radial-gradient(circle 1px at 1px 1px,rgba(255,255,255,.07) 1px,transparent 0);background-size:100% 100%,100% 100%,28px 28px;background-attachment:fixed,fixed,fixed;color:#fff}body[data-theme=toss] .glass-card{background:#ffffff0a!important;backdrop-filter:blur(20px)!important;-webkit-backdrop-filter:blur(20px)!important;border:1px solid rgba(49,130,246,.18);box-shadow:inset 0 1px #ffffff12,0 4px 24px #0006}body[data-theme=toss] .glass-card:hover{border-color:#3182f68c;box-shadow:inset 0 1px #ffffff1a,0 0 0 1px #3182f640,0 8px 40px #00000080,var(--toss-glow);transform:translateY(-4px)}body[data-theme=toss] .gradient-text{background:linear-gradient(135deg,#60a5fa,#3182f6 40%,#93c5fd);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}body[data-theme=toss] .section-title{font-size:clamp(2rem,5vw,3.2rem);font-weight:800;letter-spacing:-.03em;color:#fff}body[data-theme=toss] .btn-primary{background:linear-gradient(135deg,#3182f6,#1d6de0);border:1px solid rgba(96,165,250,.3);box-shadow:var(--toss-glow-sm),inset 0 1px #ffffff26;color:#fff;font-weight:700;letter-spacing:-.01em}body[data-theme=toss] .btn-primary:hover{opacity:1;background:linear-gradient(135deg,#60a5fa,#3182f6);box-shadow:0 0 20px #3182f680,0 0 40px #3182f633;transform:translateY(-2px)}body[data-theme=toss] .btn-ghost{border-color:#3182f659;color:#ffffffd9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}body[data-theme=toss] .btn-ghost:hover{background:#3182f61f;border-color:#3182f6b3;color:#93c5fd}body[data-theme=toss] .navbar--scrolled{background:#07090fd9;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-bottom:1px solid rgba(49,130,246,.15)}body[data-theme=toss] .navbar-link{color:#ffffffa6;font-weight:500}body[data-theme=toss] .navbar-link:hover{color:#fff}body[data-theme=toss] .navbar-theme-reset,body[data-theme=toss] .navbar-lang-toggle{background:#3182f614;border-color:#3182f640;color:#fff9}body[data-theme=toss] .navbar-theme-reset:hover,body[data-theme=toss] .navbar-lang-toggle:hover{background:#3182f62e;border-color:#3182f699;color:#93c5fd}body[data-theme=toss] .navbar-mobile-menu{background:#07090ff5;border-top-color:#3182f626}body[data-theme=toss] .navbar-mobile-link{color:#ffffffa6}body[data-theme=toss] .navbar-mobile-link:hover{color:#fff;background:#3182f614}body[data-theme=toss] .navbar-mobile-theme-reset,body[data-theme=toss] .navbar-mobile-lang-toggle{color:#ffffff80}body[data-theme=toss] .navbar-mobile-theme-reset:hover,body[data-theme=toss] .navbar-mobile-lang-toggle:hover{color:#93c5fd;background:#3182f614}body[data-theme=toss] .hero-orb--1{background:radial-gradient(circle,rgba(49,130,246,.55),transparent 70%);opacity:.5;filter:blur(60px)}body[data-theme=toss] .hero-orb--2{background:radial-gradient(circle,rgba(96,165,250,.4),transparent 70%);opacity:.4;filter:blur(80px)}body[data-theme=toss] .hero-greeting{font-size:1.2rem;font-weight:500;color:#fff9;letter-spacing:.08em;text-transform:uppercase}body[data-theme=toss] .hero-name{font-size:clamp(3rem,8vw,5.5rem);font-weight:900;letter-spacing:-.04em;line-height:1}body[data-theme=toss] .hero-title-text,body[data-theme=toss] .hero-cursor{color:#60a5fa}body[data-theme=toss] .hero-subtitle{font-size:1.1rem;color:#fff9;max-width:520px;margin-left:auto;margin-right:auto}body[data-theme=toss] .skills-category{color:#fff;font-weight:700;letter-spacing:-.02em}body[data-theme=toss] .skill-pill{background:#3182f614;border:1px solid rgba(49,130,246,.2);color:#ffffffbf;font-weight:500}body[data-theme=toss] .skill-pill:hover{background:#3182f62e;border-color:#3182f680;color:#93c5fd}body[data-theme=toss] .timeline-dot{background:#3182f6;border-color:#3182f6;box-shadow:0 0 10px #3182f699,0 0 20px #3182f64d}body[data-theme=toss] .timeline-period{background:#3182f61f;color:#60a5fa;border:1px solid rgba(49,130,246,.25);border-radius:999px;padding:2px 10px}body[data-theme=toss] .timeline-role{font-weight:700;letter-spacing:-.01em}body[data-theme=toss] .cert-year{color:#60a5fa;font-weight:700}body[data-theme=toss] .lang-level{color:#60a5fa;font-weight:600}body[data-theme=toss] .proj-badge--ai{background:#3182f624;color:#93c5fd;border:1px solid rgba(49,130,246,.3);font-weight:700;letter-spacing:.06em}body[data-theme=toss] .proj-badge--fe,body[data-theme=toss] .fe-badge{background:#60a5fa1a;color:#60a5fa;border:1px solid rgba(96,165,250,.25);font-weight:700;letter-spacing:.06em}body[data-theme=toss] .proj-badge--be{background:#3182f61a;color:#93c5fd;border:1px solid rgba(49,130,246,.22);font-weight:700;letter-spacing:.06em}body[data-theme=toss] .proj-tag,body[data-theme=toss] .fe-tag,body[data-theme=toss] .game-tag{background:#3182f614;border:1px solid rgba(49,130,246,.18);color:#ffffffa6}body[data-theme=toss] .proj-title,body[data-theme=toss] .fe-title,body[data-theme=toss] .game-title{font-weight:800;letter-spacing:-.02em}body[data-theme=toss] .game-badge--live{color:#34d399;background:#34d3991a;border:1px solid rgba(52,211,153,.25)}body[data-theme=toss] .slider-btn{background:#07090fb3;color:#fffc;border:1px solid rgba(49,130,246,.2);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}body[data-theme=toss] .slider-btn:hover{background:#3182f633;border-color:#3182f680;color:#93c5fd}body[data-theme=toss] .slider-dot{background:#fff3}body[data-theme=toss] .slider-dot--active{background:#3182f6;box-shadow:0 0 6px #3182f699}body[data-theme=toss] .contact-icon{color:#60a5fa;filter:drop-shadow(0 0 6px rgba(49,130,246,.5))}body[data-theme=toss] .contact-label{font-weight:700;letter-spacing:-.01em}body[data-theme=toss] .footer{background:transparent;border-top:1px solid rgba(49,130,246,.12)}body[data-theme=toss] .intro-overlay{background:#07090f;--intro-orb-rgb: 49, 130, 246;--intro-orb-core: #1D4ED8}body[data-theme=toss] .intro-title-text,body[data-theme=toss] .intro-title-cursor{color:#60a5fa}body[data-theme=toss] .intro-name{font-size:var(--font-size-hero-title);font-weight:900;letter-spacing:0}body[data-theme=toss] .intro-greeting{letter-spacing:.08em;text-transform:uppercase;font-size:.9rem;font-weight:500;color:#ffffff80}body[data-theme=toss] .intro-copy{color:#fff9}body[data-theme=toss] .intro-console{border-color:#3182f633;box-shadow:0 0 40px #3182f61a,0 4px 32px #00000080}body[data-theme=toss] .intro-status-dot{background:#3182f6;box-shadow:0 0 8px #3182f6cc,0 0 16px #3182f666}body[data-theme=toss] .intro-prompt{border-top-color:#3182f61f;background:#3182f60a}body[data-theme=toss] .intro-prompt input::placeholder{color:#ffffff4d}body[data-theme=toss] .intro-prompt button{color:#60a5fa}body[data-theme=toss] .intro-preset-card{background:#ffffff08;border-color:#3182f626;color:#ffffffa6;font-weight:600}body[data-theme=toss] .intro-preset-card:hover,body[data-theme=toss] .intro-preset-card.is-selected{background:#3182f624;border-color:#3182f68c;color:#93c5fd;box-shadow:var(--toss-glow-sm)}body[data-theme=toss] .intro-static-note{color:#ffffff59}body[data-theme=toss] .section-title{position:relative}body[data-theme=toss] .section-title:after{content:"";display:block;width:48px;height:3px;background:linear-gradient(90deg,#3182F6,transparent);border-radius:999px;margin:var(--space-sm) auto 0}body[data-theme=toss] .about-info-label{color:#fff6;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}body[data-theme=toss] .about-card-title{font-weight:800;letter-spacing:-.02em}.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: 139, 92, 246;--intro-orb-core: #ede9fe}.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:18%;top:30%;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),.36) 12%,rgba(var(--intro-orb-rgb),.2) 30%,rgba(var(--intro-orb-rgb),.07) 48%,rgba(var(--intro-orb-rgb),.02) 62%,transparent 76%);filter:blur(72px);opacity:.2;animation:intro-orb-wander 24s ease-in-out infinite}@keyframes intro-orb-wander{0%,to{left:18%;top:30%;opacity:.1;transform:translate(-50%,-50%) scale(.7);filter:blur(86px)}25%{left:74%;top:34%;opacity:.2;transform:translate(-50%,-50%) scale(.96);filter:blur(74px)}52%{left:62%;top:76%;opacity:.16;transform:translate(-50%,-50%) scale(.82);filter:blur(82px)}78%{left:24%;top:68%;opacity:.24;transform:translate(-50%,-50%) scale(1.02);filter:blur(70px)}}.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:var(--font-size-section-copy);color:var(--text-secondary);margin-bottom:var(--space-sm)}.intro-name{font-size:var(--font-size-hero-title);font-weight:900;line-height:1.1;letter-spacing:0;margin-bottom:var(--space-md)}.intro-title{min-height:2rem;margin-bottom:var(--space-lg);display:flex;align-items:center;gap:2px;color:var(--text-primary);font-size:clamp(1.05rem,2.4vw,1.5rem);font-weight:700}.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:var(--font-size-section-copy);line-height:1.7}.intro-cta{display:flex;gap:var(--space-md);flex-wrap:wrap}.intro-console{justify-self:end;width:min(100%,460px);height:420px;padding:var(--space-md);display:flex;flex-direction:column;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:var(--font-size-tag);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{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;justify-content:flex-start;gap:var(--space-sm);padding:var(--space-md);border-radius:var(--radius-sm);background:#00000029;scrollbar-width:none;-ms-overflow-style:none}.intro-chat-log:before{content:"";margin-top:auto}.intro-chat-log::-webkit-scrollbar{display:none}.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:var(--font-size-tag);font-weight:800}.intro-chat-line p{margin:0;color:var(--text-secondary);font-size:var(--font-size-body);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:var(--font-size-small);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:var(--font-size-small);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) auto auto auto;align-items:center;gap:var(--space-lg)}.navbar-logo{display:block;width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-card-title);font-weight:800;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:.875rem;font-weight:600;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-lang-toggle{padding:4px 10px;background:#ffffff0a;border:1px solid var(--glass-border);border-radius:var(--radius-full);font-size:var(--font-size-tag);font-weight:700;color:var(--text-muted);cursor:pointer;letter-spacing:.08em;transition:color var(--transition-fast),border-color var(--transition-fast),background var(--transition-fast)}.navbar-lang-toggle:hover{color:var(--text-primary);border-color:var(--accent-primary);background:#6366f114}.navbar-mobile-lang-toggle{display:block;width:100%;padding:var(--space-md) var(--space-lg);background:transparent;border:none;color:var(--text-muted);font-size:var(--font-size-button);font-weight:700;text-align:left;cursor:pointer;letter-spacing:.08em;transition:color var(--transition-fast),background var(--transition-fast);font-family:inherit}.navbar-mobile-lang-toggle:hover{color:var(--accent-primary);background:var(--glass-bg)}.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:var(--font-size-tag);font-weight:700;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:var(--font-size-button);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:var(--font-size-section-copy);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;gap:var(--space-sm)}.navbar-logo{width:auto}.navbar-links,.navbar-lang-toggle,.navbar-theme-reset,.navbar-toss-link{display:none}.navbar-hamburger{display:flex}}.navbar-toss-link{display:inline-flex;align-items:center;padding:5px 14px;border-radius:999px;background:#3182f6;color:#fff;font-size:var(--font-size-small);font-weight:700;letter-spacing:-.01em;text-decoration:none;white-space:nowrap;transition:background .2s,transform .15s}.navbar-toss-link:hover{background:#1d6de0;transform:translateY(-1px)}.navbar-mobile-toss-link{display:block;padding:12px 24px;color:#3182f6;font-weight:700;text-decoration:none;font-size:var(--font-size-button)}.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:var(--font-size-card-title);font-weight:800;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:var(--font-size-tag);font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;flex-shrink:0}.about-info-value{font-size:var(--font-size-body);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:var(--font-size-tag);font-weight:800;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:var(--font-size-small);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:var(--font-size-card-title);font-weight:800;color:var(--text-primary);margin-bottom:var(--space-lg);display:flex;align-items:center;gap:var(--space-sm)}.experience-col-icon{font-size:var(--font-size-card-title)}.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:var(--font-size-card-title);font-weight:800;color:var(--text-primary)}.timeline-period{font-size:var(--font-size-tag);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:var(--font-size-small);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:var(--font-size-small);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:.68rem;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:var(--font-size-body);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:var(--font-size-small);color:var(--text-muted)}.cert-year{font-size:var(--font-size-tag);font-weight:600;color:var(--accent-secondary);padding:2px 8px;background:#8b5cf61f;border-radius:var(--radius-full)}.global-desc{font-size:var(--font-size-body);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:var(--font-size-body);font-weight:600;color:var(--text-primary)}.lang-level{font-size:var(--font-size-tag);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:var(--font-size-tag);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:var(--font-size-section-copy)}.projects-sub-title{font-size:var(--font-size-section-copy);font-weight:800;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:var(--font-size-tag);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:var(--font-size-card-title);font-weight:800;color:var(--text-primary)}.proj-description{font-size:var(--font-size-body);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:var(--font-size-tag);color:var(--text-secondary)}.proj-links{display:flex;gap:var(--space-sm);margin-top:auto}.proj-btn{font-size:var(--font-size-button);padding:12px 24px}.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:var(--font-size-tag);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:var(--font-size-section-copy)}.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:var(--font-size-card-title);font-weight:800;color:var(--text-primary)}.game-badge{flex-shrink:0;padding:3px 10px;border-radius:var(--radius-full);font-size:var(--font-size-tag);font-weight:600;white-space:nowrap}.game-badge--live{background:#8b5cf61f;border:1px solid rgba(139,92,246,.28);color:var(--accent-primary)}.game-badge--in-development{background:#6366f126;border:1px solid rgba(99,102,241,.35);color:var(--accent-primary)}.game-description{font-size:var(--font-size-body);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:var(--font-size-tag);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:var(--font-size-body);background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;flex-shrink:0}.game-ai-text{font-size:var(--font-size-small);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:var(--font-size-button);padding:12px 24px}.contact-subtitle{text-align:center;color:var(--text-secondary);margin-top:calc(-1 * var(--space-lg));margin-bottom:var(--space-xl);font-size:var(--font-size-section-copy)}.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:1.75rem;margin-bottom:var(--space-xs)}.contact-label{font-size:var(--font-size-card-title);font-weight:800;color:var(--text-primary)}.contact-description{font-size:var(--font-size-small);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}
