*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary: #1b1a16;--bg-secondary: #232119;--bg-card: #2a2721;--bg-card-hover: #332f27;--accent: #22c55e;--accent-light: #4ade80;--accent-dim: rgba(34, 197, 94, .15);--accent-glow: rgba(34, 197, 94, .3);--gradient: var(--accent);--text-primary: #f7f5ef;--text-secondary: #b6b0a4;--text-muted: #7c7668;--text-accent: #4ade80;--stroke: #f7f5ef;--shadow-color: #22c55e;--c-yellow: #fde047;--c-pink: #ff5ca2;--c-cyan: #22d3ee;--c-orange: #fb923c;--c-purple: #c4b5fd;--bw: 2.5px;--bw-lg: 3px;--shadow-hard-sm: 3px 3px 0 var(--shadow-color);--shadow-hard: 5px 5px 0 var(--shadow-color);--shadow-hard-lg: 8px 8px 0 var(--shadow-color);--border: var(--stroke);--border-medium: var(--stroke);--border-accent: var(--stroke);--shadow-sm: var(--shadow-hard-sm);--shadow: var(--shadow-hard);--shadow-lg: var(--shadow-hard-lg);--shadow-accent: var(--shadow-hard);--shadow-card: var(--shadow-hard);--bg-tag: var(--c-yellow);--radius-sm: 4px;--radius: 6px;--radius-lg: 8px;--radius-xl: 10px;--transition: all .15s cubic-bezier(.4, 0, .2, 1);--transition-fast: all .12s cubic-bezier(.4, 0, .2, 1);--header-height: 68px;--icon-invert: invert(1) brightness(2)}[data-theme=light]{--bg-primary: #fdf3e3;--bg-secondary: #fbe9c8;--bg-card: #ffffff;--bg-card-hover: #fffdf7;--accent: #16a34a;--accent-light: #22c55e;--accent-dim: #dcfce7;--accent-glow: rgba(22, 163, 74, .25);--text-primary: #111111;--text-secondary: #3f3f3f;--text-muted: #6f6f6f;--text-accent: #15803d;--stroke: #111111;--shadow-color: #111111;--icon-invert: none}html{scroll-behavior:smooth;font-size:16px}body{font-family:Plus Jakarta Sans,Inter,-apple-system,BlinkMacSystemFont,sans-serif;background-color:var(--bg-primary);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;transition:background-color .3s ease,color .3s ease}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:var(--bg-secondary);border-left:2px solid var(--stroke)}::-webkit-scrollbar-thumb{background:var(--accent);border:2px solid var(--stroke)}::-webkit-scrollbar-thumb:hover{background:var(--accent-light)}::selection{background:var(--accent);color:#fff}.reveal{opacity:0;transform:translateY(28px);transition:opacity .55s cubic-bezier(.4,0,.2,1),transform .55s cubic-bezier(.4,0,.2,1)}.reveal.visible{opacity:1;transform:translateY(0)}.section{padding:100px 0;position:relative}.section-inner{max-width:1120px;margin:0 auto;padding:0 32px}.section-header{margin-bottom:64px}.section-label{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;background:var(--accent);color:#fff;border:var(--bw) solid var(--stroke);border-radius:var(--radius-sm);box-shadow:var(--shadow-hard-sm);font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;margin-bottom:22px}.section-title{font-size:clamp(2rem,4.5vw,2.9rem);font-weight:900;line-height:1.1;color:var(--text-primary);letter-spacing:-.03em}.section-subtitle{margin-top:16px;font-size:1.05rem;color:var(--text-secondary);max-width:540px;line-height:1.65;font-weight:500}.section-divider{width:100%;height:3px;background:var(--stroke)}.go-top-btn{position:fixed;bottom:32px;left:32px;width:48px;height:48px;border-radius:var(--radius);background:var(--accent);color:#fff;border:var(--bw) solid var(--stroke);font-size:1.2rem;font-weight:900;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-hard-sm);opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity .2s ease,transform .12s ease,box-shadow .12s ease;z-index:90}.go-top-btn--visible{opacity:1;transform:translateY(0);pointer-events:auto}.go-top-btn:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard)}.go-top-btn:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--shadow-color)}@media (max-width: 480px){.go-top-btn{bottom:20px;left:20px;width:44px;height:44px}}.btn{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border:var(--bw) solid var(--stroke);border-radius:var(--radius);font-size:.9rem;font-weight:800;font-family:inherit;cursor:pointer;text-decoration:none;box-shadow:var(--shadow-hard-sm);transition:transform .12s ease,box-shadow .12s ease,background .15s ease;outline:none;white-space:nowrap}.btn:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard)}.btn:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--shadow-color)}.btn-primary{background:var(--accent);color:#fff}.btn-outline{background:var(--bg-card);color:var(--text-primary)}.gradient-text{color:var(--accent);-webkit-text-fill-color:currentColor}.card{background:var(--bg-card);border:var(--bw) solid var(--stroke);border-radius:var(--radius-lg);box-shadow:var(--shadow-hard);transition:transform .15s ease,box-shadow .15s ease}.card:hover{transform:translate(-3px,-3px);box-shadow:var(--shadow-hard-lg)}.tag{display:inline-flex;align-items:center;padding:4px 10px;background:var(--c-yellow);color:#111;border:2px solid #111;border-radius:var(--radius-sm);font-size:.74rem;font-weight:800}.theme-switch{display:flex;align-items:center;gap:7px;cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0}.theme-switch input{display:none}.theme-switch-icon{font-size:.85rem;color:var(--text-secondary);line-height:1;transition:color .2s}.theme-switch-icon--active{color:var(--accent)}.theme-switch-pill{width:46px;height:24px;background:var(--bg-card);border:2px solid var(--stroke);border-radius:var(--radius-sm);position:relative;box-shadow:2px 2px 0 var(--shadow-color);transition:background .25s}.theme-switch-pill:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:2px;background:var(--accent);transition:transform .2s cubic-bezier(.4,0,.2,1)}[data-theme=light] .theme-switch-pill:after{transform:translate(22px)}@media (max-width: 768px){.section{padding:72px 0}.section-inner{padding:0 20px}.section-header{margin-bottom:44px}}.header{position:fixed;top:0;left:0;right:0;z-index:100;height:var(--header-height);transition:background .3s ease,border-color .3s ease,backdrop-filter .3s ease;border-bottom:var(--bw) solid transparent}.header--scrolled{background:var(--bg-secondary);border-bottom-color:var(--stroke)}.header-inner{max-width:1160px;margin:0 auto;padding:0 28px;height:100%;display:flex;align-items:center;justify-content:space-between;gap:20px}.header-logo{display:flex;align-items:center;gap:10px;text-decoration:none;flex-shrink:0}.header-avatar{width:38px;height:38px;border-radius:var(--radius-sm);overflow:hidden;border:var(--bw) solid var(--stroke);background:var(--accent);position:relative;flex-shrink:0}.avatar-img{width:100%;height:100%;object-fit:cover;display:block}.avatar-initials{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:.82rem;font-weight:700;color:#fff}.header-name{font-size:.98rem;font-weight:800;color:var(--text-primary);letter-spacing:-.02em;white-space:nowrap}.header-nav{display:flex;align-items:center;gap:2px;flex:1;justify-content:center}.nav-link{padding:6px 13px;font-size:.87rem;font-weight:700;color:var(--text-secondary);text-decoration:none;border:2px solid transparent;border-radius:var(--radius-sm);transition:var(--transition-fast)}.nav-link:hover{color:var(--text-primary);background:var(--accent-dim)}.nav-link--active{color:#fff;background:var(--accent);border-color:var(--stroke)}.header-right{display:flex;align-items:center;gap:10px;flex-shrink:0}.hamburger{display:none;align-items:center;justify-content:center;width:40px;height:40px;background:var(--bg-card);border:var(--bw) solid var(--stroke);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;font-size:1rem;box-shadow:2px 2px 0 var(--shadow-color);transition:transform .12s ease,box-shadow .12s ease;flex-shrink:0}.hamburger:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--shadow-color)}.hamburger:active{transform:translate(1px,1px);box-shadow:0 0 0 var(--shadow-color)}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:98;background:transparent;cursor:default}.mobile-menu-dialog{position:absolute;top:calc(100% + 8px);right:18px;width:220px;background:var(--bg-card);border:var(--bw) solid var(--stroke);border-radius:var(--radius-lg);box-shadow:var(--shadow-hard);padding:8px;display:flex;flex-direction:column;gap:2px;animation:dialogSlideIn .2s cubic-bezier(.4,0,.2,1) both;z-index:99}@keyframes dialogSlideIn{0%{opacity:0;transform:translateY(-10px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.mobile-menu-link{display:flex;align-items:center;padding:10px 14px;font-size:.92rem;font-weight:700;color:var(--text-secondary);text-decoration:none;border:2px solid transparent;border-radius:var(--radius-sm);transition:var(--transition-fast);animation:linkFadeIn .25s ease both}@keyframes linkFadeIn{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}.mobile-menu-link:hover{color:var(--text-primary);background:var(--accent-dim)}.mobile-menu-link--active{color:#fff;background:var(--accent);border-color:var(--stroke);font-weight:800}@media (max-width: 860px){.header-nav{display:none}.hamburger{display:flex}}@media (max-width: 480px){.header-inner{padding:0 16px}.mobile-menu-dialog{right:12px}}.engineering-web{position:relative;width:100%;max-width:460px;aspect-ratio:1;margin:auto}.radar-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible}.radar-center-pulse{animation:radar-pulse 2.4s ease-in-out infinite}@keyframes radar-pulse{0%,to{opacity:1;r:7}50%{opacity:.6;r:10}}.web-node{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;z-index:2}.node-dot{width:14px;height:14px;border-radius:3px;background:var(--accent);border:2.5px solid var(--stroke);transition:transform .2s ease;flex-shrink:0}.web-node:hover .node-dot{transform:scale(1.4) rotate(45deg)}.node-label{color:var(--text-primary);font-weight:800;font-size:.82rem;text-align:center;line-height:1.35;white-space:nowrap}.node-tooltip{opacity:0;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);min-width:160px;padding:9px 13px;border-radius:var(--radius-sm);background:var(--bg-card);border:2px solid var(--stroke);color:var(--text-primary);font-size:.78rem;font-weight:600;white-space:nowrap;pointer-events:none;transition:opacity .22s ease;box-shadow:var(--shadow-hard-sm);z-index:10}.web-node:hover .node-tooltip{opacity:1}@media (max-width: 900px){.engineering-web{max-width:340px}.node-label{font-size:.72rem}}@media (max-width: 480px){.engineering-web{max-width:280px}}.hero{position:relative;min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:calc(var(--header-height) + 40px) 0 80px;overflow:hidden}.hero-bg{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.hero-glow{display:none}.hero-grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black 35%,transparent 100%);mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black 35%,transparent 100%)}[data-theme=light] .hero-grid{background-image:linear-gradient(rgba(0,0,0,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.06) 1px,transparent 1px)}.hero-inner{max-width:1120px;margin:0 auto;padding:0 32px;display:grid;grid-template-columns:1fr 380px;grid-template-areas:"content visual" "actions visual";column-gap:64px;row-gap:36px;align-items:start;width:100%}.hero-content{grid-area:content;display:flex;flex-direction:column;gap:0;animation:heroFadeIn .9s cubic-bezier(.4,0,.2,1) both}.hero-actions{grid-area:actions;display:flex;flex-direction:column;gap:0;animation:heroFadeIn .9s .15s cubic-bezier(.4,0,.2,1) both}@keyframes heroFadeIn{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.hero-eyebrow{display:inline-flex;align-self:flex-start;align-items:center;gap:8px;padding:6px 14px;background:var(--c-yellow);color:#111;border:var(--bw) solid #111;border-radius:var(--radius-sm);box-shadow:var(--shadow-hard-sm);font-size:.78rem;font-weight:800;letter-spacing:.04em;margin-bottom:22px}.hero-eyebrow-dot{width:9px;height:9px;border-radius:2px;border:1.5px solid #111;background:#16a34a;animation:pulse 2s ease-in-out infinite}.hero-title{font-size:clamp(2.5rem,5.5vw,4rem);font-weight:900;line-height:1.05;letter-spacing:-.04em;color:var(--text-primary);margin-bottom:20px}.hero-typing-row{display:flex;align-items:center;flex-wrap:wrap;gap:0;font-size:clamp(1.3rem,3vw,1.9rem);font-weight:700;margin-bottom:28px;min-height:2.2em}.hero-typing-prefix{color:var(--text-secondary);margin-right:6px}.hero-typing-word{color:var(--accent-light);min-width:1ch}.hero-cursor{color:var(--accent);animation:blink 1s step-end infinite;margin-left:2px;font-weight:300}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.hero-summary{font-size:1.05rem;color:var(--text-secondary);line-height:1.75;max-width:560px;margin-bottom:36px}.hero-ctas{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:44px}.hero-btn{padding:12px 26px;font-size:.92rem}.hero-connect{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.hero-connect-label{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted)}.hero-social-links{display:flex;align-items:center;gap:10px}.hero-social-link{display:inline-flex;align-items:center;gap:7px;padding:9px 14px;border-radius:var(--radius-sm);border:var(--bw) solid var(--stroke);color:var(--text-primary);font-size:.82rem;font-weight:700;text-decoration:none;transition:transform .12s ease,box-shadow .12s ease,background .15s ease;background:var(--bg-card);box-shadow:2px 2px 0 var(--shadow-color)}.hero-social-link svg{font-size:1rem}.hero-social-link:hover{color:#fff;background:var(--accent);transform:translate(-2px,-2px);box-shadow:var(--shadow-hard-sm)}.hero-visual{grid-area:visual;align-self:center;animation:heroFadeIn .9s .2s cubic-bezier(.4,0,.2,1) both}.hero-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-xl);padding:32px;display:flex;flex-direction:column;align-items:center;gap:20px;box-shadow:var(--shadow-card);position:relative;overflow:hidden}.hero-card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--gradient);opacity:.5}.hero-card-avatar{width:110px;height:110px;border-radius:50%;background:var(--gradient);border:3px solid var(--border-accent);overflow:hidden;position:relative;flex-shrink:0;box-shadow:0 0 0 6px #10b9811a}.hero-card-img{width:100%;height:100%;object-fit:cover;display:block}.hero-card-initials{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:800;color:#fff;letter-spacing:.02em}.hero-card-info{text-align:center}.hero-card-name{font-size:1.2rem;font-weight:800;color:var(--text-primary);margin-bottom:4px;letter-spacing:-.01em}.hero-card-role{font-size:.88rem;color:var(--accent-light);font-weight:600;margin-bottom:6px}.hero-card-location{font-size:.8rem;color:var(--text-secondary)}.hero-card-stats{display:flex;align-items:center;gap:20px;width:100%;background:#ffffff05;border:1px solid var(--border);border-radius:var(--radius);padding:14px 20px}.hero-stat{flex:1;text-align:center}.hero-stat-num{display:block;font-size:1.3rem;font-weight:800;color:var(--text-primary);letter-spacing:-.02em;line-height:1;margin-bottom:4px}.hero-stat-label{display:block;font-size:.68rem;color:var(--text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.06em}.hero-stat-divider{width:1px;height:30px;background:var(--border);flex-shrink:0}.hero-card-tags{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.hero-scroll-cue{position:absolute;bottom:32px;left:50%;transform:translate(-50%);display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-sm);border:var(--bw) solid var(--stroke);background:var(--bg-card);color:var(--text-primary);font-size:.85rem;text-decoration:none;box-shadow:2px 2px 0 var(--shadow-color);animation:bounce 2.5s ease-in-out infinite;transition:background .15s ease,color .15s ease}.hero-scroll-cue:hover{color:#fff;background:var(--accent)}@keyframes bounce{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(6px)}}@media (max-width: 900px){.hero-inner{grid-template-columns:1fr;grid-template-areas:"content" "visual" "actions";row-gap:36px;text-align:center}.hero-eyebrow,.hero-ctas,.hero-connect{justify-content:center}.hero-eyebrow{align-self:center}.hero-summary{margin-left:auto;margin-right:auto}.hero-visual{max-width:400px;margin:0 auto;width:100%}}@media (max-width: 480px){.hero-inner{padding:0 20px;row-gap:28px}.hero-typing-row{justify-content:center}.hero-social-link span{display:none}}.about-grid{display:grid;grid-template-columns:1fr 340px;gap:64px;align-items:start}.about-text-col{display:flex;flex-direction:column;gap:22px}.about-para{font-size:1.02rem;color:var(--text-secondary);line-height:1.8}.about-para:first-of-type{font-size:1.08rem;color:var(--text-primary)}.about-links{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:8px}.about-social-btn{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:var(--radius-sm);border:var(--bw) solid var(--stroke);color:var(--text-primary);font-size:.85rem;font-weight:700;text-decoration:none;transition:transform .12s ease,box-shadow .12s ease,background .15s ease;background:var(--bg-card);box-shadow:2px 2px 0 var(--shadow-color)}.about-social-btn:hover{color:#fff;background:var(--accent);transform:translate(-2px,-2px);box-shadow:var(--shadow-hard-sm)}.about-resume-btn{padding:9px 20px;font-size:.88rem}.about-highlights-col{display:flex;flex-direction:column;gap:20px}.about-highlights{display:flex;flex-direction:column;gap:12px}.about-highlight-card{display:flex;align-items:center;gap:14px;padding:16px 18px;background:var(--bg-card);border:var(--bw) solid var(--stroke);border-left:8px solid var(--card-accent, var(--accent));border-radius:var(--radius);box-shadow:var(--shadow-hard-sm);cursor:default;transition:transform .12s ease,box-shadow .12s ease}.about-highlight-card:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard)}.about-highlight-icon{font-size:1.3rem;flex-shrink:0}.about-highlight-label{font-size:.92rem;font-weight:600;color:var(--text-primary)}.about-quickfacts{background:var(--bg-card);border:var(--bw) solid var(--stroke);border-radius:var(--radius-lg);box-shadow:var(--shadow-hard);padding:22px 24px;display:flex;flex-direction:column;gap:0}.about-fact{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:2px dashed var(--stroke);gap:12px}.about-fact:last-child{border-bottom:none}.about-fact-key{font-size:.8rem;color:var(--text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.05em;flex-shrink:0}.about-fact-val{font-size:.88rem;color:var(--text-primary);font-weight:600;text-align:right}.about-fact-available{color:var(--accent);display:flex;align-items:center;gap:6px;font-weight:800}.about-available-dot{width:9px;height:9px;border-radius:2px;border:1.5px solid var(--stroke);background:var(--accent);animation:pulse 2s ease-in-out infinite;flex-shrink:0}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@media (max-width: 900px){.about-grid{grid-template-columns:1fr;gap:44px}.about-highlights-col{order:-1}.about-highlights{display:grid;grid-template-columns:repeat(3,1fr)}.about-highlight-card{flex-direction:column;text-align:center;gap:10px;border-left:none;border-top:3px solid var(--card-accent, var(--accent));padding:20px 14px}}@media (max-width: 600px){.about-highlights{grid-template-columns:1fr}.about-highlight-card{flex-direction:row;text-align:left;border-left:3px solid var(--card-accent, var(--accent));border-top:none;padding:14px 18px}}.exp-list{display:flex;flex-direction:column;gap:0}.exp-item{display:grid;grid-template-columns:28px 1fr;gap:0 28px;position:relative}.exp-item:last-child .exp-line{display:none}.exp-spine{display:flex;flex-direction:column;align-items:center;padding-top:24px;flex-shrink:0}.exp-dot{width:16px;height:16px;border-radius:3px;flex-shrink:0;position:relative;z-index:1;border:2.5px solid var(--stroke)}.exp-line{flex:1;width:3px;background:var(--stroke);margin-top:6px;min-height:40px}.exp-card{margin-bottom:28px;padding:28px}.exp-card-header{display:flex;align-items:flex-start;gap:16px;margin-bottom:20px;flex-wrap:wrap}.exp-icon{width:52px;height:52px;border-radius:var(--radius);border:var(--bw) solid var(--stroke);display:flex;align-items:center;justify-content:center;font-size:1.3rem;font-weight:900;flex-shrink:0;font-family:Plus Jakarta Sans,sans-serif;overflow:hidden}.exp-icon-img{width:100%;height:100%;object-fit:cover;display:block;border-radius:var(--radius)}.exp-meta{flex:1;min-width:0}.exp-type{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;display:block;margin-bottom:4px}.exp-title{font-size:1.1rem;font-weight:800;color:var(--text-primary);margin-bottom:4px;line-height:1.3}.exp-company{font-size:.85rem;color:var(--text-secondary);font-weight:500}.exp-duration{margin-left:auto;flex-shrink:0}.exp-duration-badge{display:inline-block;padding:5px 12px;background:var(--bg-card);border:2px solid var(--stroke);border-radius:var(--radius-sm);box-shadow:2px 2px 0 var(--shadow-color);font-size:.75rem;color:var(--text-primary);font-weight:800;white-space:nowrap}.exp-bullets{list-style:none;display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.exp-bullet{display:flex;align-items:flex-start;gap:10px;font-size:.92rem;color:var(--text-secondary);line-height:1.65}.exp-bullet-dot{width:8px;height:8px;border-radius:2px;border:1.5px solid var(--stroke);flex-shrink:0;margin-top:7px}.exp-tags{display:flex;flex-wrap:wrap;gap:8px}@media (max-width: 640px){.exp-item{display:block}.exp-spine{display:none}.exp-card{padding:20px;margin-bottom:20px}.exp-card-header{flex-direction:column;gap:12px}.exp-duration{margin-left:0}}.projects-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}.project-card{display:flex;flex-direction:column;overflow:hidden;padding:0}.project-visual{position:relative;height:160px;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;border-bottom:var(--bw) solid var(--stroke)}.project-img{width:100%;height:100%;object-fit:cover;display:block}.project-img-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.project-placeholder-text{font-size:4rem;font-weight:800;color:#ffffff4d;font-family:Plus Jakarta Sans,sans-serif;letter-spacing:-.04em}.project-visual-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,transparent 40%,rgba(13,21,38,.7) 100%);pointer-events:none}[data-theme=light] .project-visual-overlay{background:linear-gradient(180deg,transparent 40%,rgba(255,255,255,.15) 100%)}.project-body{padding:24px;display:flex;flex-direction:column;gap:12px;flex:1}.project-name{font-size:1.1rem;font-weight:800;color:var(--text-primary);letter-spacing:-.01em;line-height:1.3}.project-tagline{font-size:.78rem;color:var(--accent-light);font-weight:700;text-transform:uppercase;letter-spacing:.07em}.project-desc{font-size:.9rem;color:var(--text-secondary);line-height:1.7;flex:1}.project-tech{display:flex;flex-wrap:wrap;gap:6px}.project-tech-tag{font-size:.72rem;padding:3px 9px}.project-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}.project-btn{padding:8px 16px;font-size:.82rem}.projects-toggle{display:flex;justify-content:center;margin-top:36px}.projects-toggle-btn{padding:11px 28px;font-size:.9rem}@media (max-width: 780px){.projects-grid{grid-template-columns:1fr}.project-visual{height:140px}}@media (max-width: 480px){.project-body{padding:18px}}.skills-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.skill-group{padding:24px;display:flex;flex-direction:column;gap:16px}.skill-group-header{display:flex;align-items:center;gap:10px}.skill-group-img{width:22px;height:22px;object-fit:contain;flex-shrink:0}.skill-group-color-dot{width:14px;height:14px;border-radius:3px;border:2px solid var(--stroke);flex-shrink:0}.skill-group-title{font-size:.95rem;font-weight:800;letter-spacing:-.01em}.skill-badges{display:flex;flex-wrap:wrap;gap:8px}.skill-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;background:var(--bg-card);color:var(--text-primary);border:2px solid var(--stroke);border-radius:var(--radius-sm);box-shadow:2px 2px 0 var(--shadow-color);font-size:.78rem;font-weight:700;letter-spacing:.01em;transition:transform .12s ease,box-shadow .12s ease;cursor:default;white-space:nowrap}.skill-badge:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--shadow-color)}.skill-icon{width:14px;height:14px;object-fit:contain;flex-shrink:0}.skill-icon--invert{filter:invert(1) brightness(2)}@media (max-width: 900px){.skills-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 560px){.skills-grid{grid-template-columns:1fr}.skill-group{padding:20px}}.edu-list{display:flex;flex-direction:column;gap:20px}.edu-card{display:flex;align-items:flex-start;gap:24px;padding:28px 32px}.edu-icon-wrap{width:58px;height:58px;border-radius:var(--radius);border:var(--bw) solid var(--stroke);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}.edu-icon-img{width:38px;height:38px;object-fit:contain}.edu-icon-fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:800;font-family:Plus Jakarta Sans,sans-serif}.edu-body{flex:1;min-width:0}.edu-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:14px;flex-wrap:wrap}.edu-institution{font-size:1.08rem;font-weight:800;color:var(--text-primary);margin-bottom:4px;letter-spacing:-.01em}.edu-degree{font-size:.95rem;font-weight:700;margin-bottom:3px}.edu-field{font-size:.85rem;color:var(--text-secondary)}.edu-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}.edu-duration{display:inline-block;padding:5px 12px;background:var(--bg-card);border:2px solid var(--stroke);border-radius:var(--radius-sm);box-shadow:2px 2px 0 var(--shadow-color);font-size:.78rem;color:var(--text-primary);font-weight:800;white-space:nowrap}.edu-grade{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.edu-description{font-size:.91rem;color:var(--text-secondary);line-height:1.7}@media (max-width: 640px){.edu-card{flex-direction:column;gap:16px;padding:22px}.edu-header{flex-direction:column;gap:10px}.edu-right{align-items:flex-start}}.contact-grid{display:flex;justify-content:center}.contact-form-wrap{width:100%;max-width:640px}.contact-form{padding:36px;display:flex;flex-direction:column;gap:20px}.contact-form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.contact-field{display:flex;flex-direction:column;gap:7px}.contact-label{font-size:.78rem;font-weight:800;color:var(--text-primary);text-transform:uppercase;letter-spacing:.06em}.contact-input{background:var(--bg-primary);border:var(--bw) solid var(--stroke);border-radius:var(--radius-sm);padding:12px 16px;font-size:.92rem;color:var(--text-primary);font-family:inherit;transition:box-shadow .12s ease,transform .12s ease;outline:none;width:100%}.contact-input::placeholder{color:var(--text-muted)}.contact-input:focus{border-color:var(--stroke);box-shadow:var(--shadow-hard-sm);transform:translate(-1px,-1px)}.contact-textarea{resize:vertical;min-height:120px;line-height:1.65}.contact-submit{padding:13px 28px;font-size:.95rem;justify-content:center;width:100%;transition:var(--transition)}.contact-submit--disabled{opacity:.5;cursor:not-allowed}.contact-submit--disabled:hover{transform:none;box-shadow:none}.contact-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:inline-block;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.contact-success{font-size:.85rem;color:var(--text-primary);background:var(--accent-dim);border:var(--bw) solid var(--stroke);border-radius:var(--radius-sm);box-shadow:var(--shadow-hard-sm);padding:12px 16px;line-height:1.6;font-weight:600}.contact-success a{color:var(--text-accent);font-weight:800}.contact-error{background:#ef44441f}.contact-input[aria-invalid=true]{border-color:#ef4444}.contact-honeypot{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}@media (max-width: 560px){.contact-form{padding:22px}.contact-form-row{grid-template-columns:1fr}}.footer{background:var(--bg-secondary);border-top:3px solid var(--stroke);padding:60px 0 32px}.footer-inner{max-width:1120px;margin:0 auto;padding:0 32px}.footer-top{display:flex;align-items:center;justify-content:space-between;gap:40px;margin-bottom:44px}.footer-brand{display:flex;flex-direction:column;gap:8px}.footer-name{font-size:1.3rem;font-weight:900;color:var(--accent);text-decoration:none;letter-spacing:-.02em;transition:opacity .2s}.footer-name:hover{opacity:.85}.footer-tagline{font-size:.82rem;color:var(--text-muted);line-height:1.6;max-width:240px}.footer-nav{display:flex;flex-wrap:wrap;gap:8px 16px;justify-content:center}.footer-nav-link{font-size:.85rem;color:var(--text-secondary);text-decoration:none;font-weight:500;transition:var(--transition-fast);white-space:nowrap}.footer-nav-link:hover{color:var(--accent-light)}.footer-socials{display:flex;justify-content:flex-end;gap:10px}.footer-social{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:var(--radius-sm);border:var(--bw) solid var(--stroke);background:var(--bg-card);color:var(--text-primary);font-size:1rem;text-decoration:none;box-shadow:2px 2px 0 var(--shadow-color);transition:transform .12s ease,box-shadow .12s ease,background .15s ease}.footer-social:hover{color:#fff;background:var(--accent);transform:translate(-2px,-2px);box-shadow:var(--shadow-hard-sm)}.footer-divider{height:2px;background:var(--stroke);margin-bottom:28px}.footer-bottom{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap}.footer-copy{font-size:.82rem;color:var(--text-muted)}.footer-made{font-size:.82rem;color:var(--text-muted);display:flex;align-items:center;gap:5px}.footer-heart{color:#ef4444;font-size:.75rem;animation:heartbeat 1.8s ease-in-out infinite}@keyframes heartbeat{0%,to{transform:scale(1)}15%{transform:scale(1.3)}30%{transform:scale(1)}45%{transform:scale(1.2)}60%{transform:scale(1)}}@media (max-width: 780px){.footer-top{gap:24px}}@media (max-width: 420px){.footer-top{flex-direction:column;align-items:flex-start;gap:24px}.footer-socials{justify-content:flex-start}}@media (max-width: 480px){.footer-inner{padding:0 20px}.footer-bottom{flex-direction:column;align-items:flex-start;gap:8px}}.chat-launcher{position:fixed;bottom:32px;right:32px;width:58px;height:58px;border-radius:var(--radius);background:var(--accent);color:#fff;border:var(--bw-lg) solid var(--stroke);font-size:1.4rem;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-hard);transition:transform .12s ease,box-shadow .12s ease,background .2s ease;z-index:95}.chat-launcher:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard-lg)}.chat-launcher:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--shadow-color)}.chat-launcher--open{background:var(--bg-card);color:var(--text-primary)}.chat-panel{position:fixed;bottom:104px;right:32px;width:380px;max-width:calc(100vw - 40px);height:540px;max-height:calc(100vh - 150px);background:var(--bg-card);border:var(--bw-lg) solid var(--stroke);border-radius:var(--radius-lg);box-shadow:var(--shadow-hard-lg);display:flex;flex-direction:column;overflow:hidden;opacity:0;transform:translateY(20px) scale(.96);transform-origin:bottom right;pointer-events:none;transition:opacity .2s ease,transform .2s cubic-bezier(.34,1.4,.64,1);z-index:96}.chat-panel--open{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.chat-header{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:var(--bw) solid var(--stroke);background:var(--accent);flex-shrink:0}.chat-header-avatar{width:38px;height:38px;border-radius:var(--radius-sm);background:#fff;border:2px solid var(--stroke);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:1rem;flex-shrink:0}.chat-header-meta{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.chat-header-title{font-size:.98rem;font-weight:800;color:#fff;letter-spacing:-.01em}.chat-header-status{font-size:.72rem;color:#ffffffd9;display:flex;align-items:center;gap:5px;font-weight:600}.chat-status-dot{width:8px;height:8px;border-radius:2px;border:1.5px solid #fff;background:#fff}.chat-header-close{background:#fff;border:2px solid var(--stroke);border-radius:var(--radius-sm);color:#111;cursor:pointer;font-size:.85rem;padding:5px 7px;transition:transform .12s ease;display:flex;flex-shrink:0}.chat-header-close:hover{transform:translate(-1px,-1px)}.chat-messages{flex:1;overflow-y:auto;padding:18px 16px;display:flex;flex-direction:column;gap:14px;scroll-behavior:smooth}.chat-messages::-webkit-scrollbar{width:10px}.chat-messages::-webkit-scrollbar-thumb{background:var(--accent);border:2px solid var(--stroke)}.chat-msg{max-width:84%;padding:10px 14px;border-radius:var(--radius);border:2px solid var(--stroke);font-size:.88rem;line-height:1.55;font-weight:500;white-space:pre-wrap;word-wrap:break-word;animation:chatMsgIn .2s ease both}@keyframes chatMsgIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.chat-msg--assistant{align-self:flex-start;background:var(--bg-primary);color:var(--text-primary);box-shadow:2px 2px 0 var(--shadow-color)}.chat-msg--user{align-self:flex-end;background:var(--accent);color:#fff;box-shadow:2px 2px 0 var(--shadow-color)}.chat-msg--typing{display:flex;align-items:center;gap:4px;padding:14px}.chat-dot{width:7px;height:7px;border-radius:2px;background:var(--text-muted);animation:chatBlink 1.4s infinite both}.chat-dot:nth-child(2){animation-delay:.2s}.chat-dot:nth-child(3){animation-delay:.4s}@keyframes chatBlink{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.chat-error{align-self:stretch;text-align:center;font-size:.8rem;color:#111;background:#ffb4b4;border:2px solid var(--stroke);border-radius:var(--radius-sm);box-shadow:2px 2px 0 var(--shadow-color);padding:10px 12px;line-height:1.5;font-weight:600}.chat-suggestions{display:flex;flex-direction:column;gap:8px;margin-top:4px}.chat-suggestion{text-align:left;padding:10px 13px;font-size:.83rem;font-weight:700;color:var(--text-primary);background:var(--c-yellow);border:2px solid var(--stroke);border-radius:var(--radius-sm);box-shadow:2px 2px 0 var(--shadow-color);cursor:pointer;transition:transform .12s ease,box-shadow .12s ease;font-family:inherit}.chat-suggestion:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard-sm)}.chat-input-row{display:flex;align-items:center;gap:8px;padding:12px;border-top:var(--bw) solid var(--stroke);background:var(--bg-secondary);flex-shrink:0}.chat-input{flex:1;background:var(--bg-primary);border:2px solid var(--stroke);border-radius:var(--radius-sm);padding:11px 14px;font-size:.88rem;color:var(--text-primary);font-family:inherit;font-weight:500;outline:none;transition:box-shadow .12s ease}.chat-input::placeholder{color:var(--text-muted)}.chat-input:focus{box-shadow:2px 2px 0 var(--shadow-color)}.chat-send{width:42px;height:42px;border-radius:var(--radius-sm);background:var(--accent);color:#fff;border:2px solid var(--stroke);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.85rem;flex-shrink:0;box-shadow:2px 2px 0 var(--shadow-color);transition:transform .12s ease,box-shadow .12s ease}.chat-send:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--shadow-color)}.chat-send:active:not(:disabled){transform:translate(1px,1px);box-shadow:0 0 0 var(--shadow-color)}.chat-send:disabled{opacity:.45;cursor:not-allowed}@media (max-width: 480px){.chat-launcher{bottom:20px;right:20px;width:54px;height:54px}.chat-panel{right:16px;left:16px;bottom:90px;width:auto;max-width:none;height:calc(100vh - 130px)}}
