@import url("https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@500;600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;1,9..40,400&display=swap");:root{--bg:#0a0a0c;--bg-elevated:#121216;--bg-card:#16161a;--text:#f4f4f5;--text-muted:#a1a1aa;--accent:#a78bfa;--accent-dim:#7c3aed;--accent-glow:rgba(167,139,250,.35);--border:#27272a;--font-display:"Plus Jakarta Sans",system-ui,sans-serif;--font-body:"DM Sans",system-ui,sans-serif;--space:1.5rem;--space-lg:3rem;--space-xl:5rem;--space-2xl:8rem;--max-width:780px;--radius:0.75rem;--radius-lg:1.25rem;--transition:0.25s ease;--ease-out:cubic-bezier(0.22,1,0.36,1)}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:var(--font-body);font-size:1.0625rem;line-height:1.65;background:var(--bg);-webkit-font-smoothing:antialiased}body,h1,h2,h3{color:var(--text)}h1,h2,h3{font-family:var(--font-display);font-weight:700;line-height:1.3}h1{font-size:clamp(2.5rem,8vw,4rem);letter-spacing:-.02em}h2{font-size:clamp(1.5rem,3vw,1.75rem);margin-top:0;margin-bottom:var(--space);letter-spacing:-.01em}h3{font-size:1.125rem;margin:0 0 .5rem;font-weight:600}a{color:var(--accent);text-decoration:none;transition:color var(--transition)}a:hover{color:#c4b5fd}section{padding:var(--space-xl) 0}.container{width:100%;max-width:var(--max-width);margin:0 auto;padding:0 var(--space)}.section-title{font-family:var(--font-display);font-size:.9375rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);margin-bottom:var(--space)}.page-section{padding-top:var(--space-2xl);padding-bottom:var(--space-xl)}.tech-stack-heading{font-family:var(--font-display);font-size:.9375rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);margin-top:var(--space-xl);margin-bottom:var(--space)}.skip-link{position:absolute;top:-100%;left:var(--space);padding:.75rem 1rem;background:var(--accent);color:var(--bg);border-radius:var(--radius);z-index:100;transition:top var(--transition)}.skip-link:focus{top:var(--space);outline:2px solid var(--accent);outline-offset:2px}.header{position:-webkit-sticky;position:sticky;top:0;z-index:50;background:rgba(10,10,12,.85);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.header-inner{max-width:var(--max-width);margin:0 auto;padding:var(--space) var(--space);display:flex;align-items:center;justify-content:space-between}.header-logo{font-family:var(--font-display);font-weight:700;font-size:1.125rem;color:var(--text);letter-spacing:-.02em}.header-logo:hover{color:var(--accent)}.header-toggle{display:flex;flex-direction:column;gap:5px;padding:8px;background:none;border:none;cursor:pointer}@media (min-width:768px){.header-toggle{display:none}}.header-toggle-bar{width:22px;height:2px;background:var(--text);border-radius:1px;transition:var(--transition)}.header-nav{position:absolute;top:100%;left:0;right:0;background:var(--bg-elevated);border-bottom:1px solid var(--border);max-height:0;overflow:hidden;transition:max-height .3s var(--ease-out)}.header-nav-open{max-height:320px}@media (min-width:768px){.header-nav{position:static;max-height:none;background:none;border:none}}.header-nav-list{list-style:none;margin:0;padding:var(--space);display:flex;flex-direction:column;gap:.5rem}@media (min-width:768px){.header-nav-list{flex-direction:row;padding:0;gap:1.75rem}}.header-nav-link{display:block;padding:.5rem 0;color:var(--text-muted);font-size:.9375rem;position:relative}.header-nav-link-active,.header-nav-link:hover{color:var(--accent)}@media (min-width:768px){.header-nav-link-active:after{width:100%}.header-nav-link:after{content:"";position:absolute;bottom:0;left:0;width:0;height:2px;background:var(--accent);transition:width var(--transition)}.header-nav-link:hover:after{width:100%}}.hero{min-height:100vh;display:flex;align-items:center;justify-content:center;text-align:center;position:relative;overflow:hidden;padding:var(--space-2xl) var(--space)}.hero:before{content:"";background:radial-gradient(ellipse 80% 50% at 50% -20%,var(--accent-glow),transparent 50%),radial-gradient(ellipse 60% 40% at 80% 50%,rgba(167,139,250,.08),transparent 45%),radial-gradient(ellipse 50% 30% at 20% 80%,rgba(167,139,250,.06),transparent 40%)}.hero-grid,.hero:before{position:absolute;inset:0;pointer-events:none}.hero-grid{background-image:linear-gradient(hsla(0,0%,100%,.02) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.02) 1px,transparent 0);background-size:60px 60px}.hero .container{position:relative;z-index:1}.hero-portrait{margin-bottom:var(--space);opacity:0;animation:fadeUp .8s var(--ease-out) .15s forwards}.hero-portrait-img{width:220px;height:220px;object-fit:cover;border-radius:50%;border:3px solid var(--border);display:block;margin:0 auto}.hero-tagline{font-size:.9375rem;color:var(--accent);text-transform:uppercase;letter-spacing:.15em;animation:fadeUp .8s var(--ease-out) .2s forwards}.hero h1,.hero-tagline{margin:0 0 .5rem;opacity:0}.hero h1{animation:fadeUp .8s var(--ease-out) .35s forwards;color:var(--text)}.hero-location{font-size:.9375rem;color:var(--text-muted);margin-bottom:var(--space);opacity:0;animation:fadeUp .8s var(--ease-out) .5s forwards}.hero-social{gap:var(--space);margin-bottom:var(--space-lg);opacity:0;animation:fadeUp .8s var(--ease-out) .58s forwards}.hero-social,.hero-social-link{display:flex;justify-content:center}.hero-social-link{align-items:center;width:2.75rem;height:2.75rem;border-radius:50%;background:var(--bg-card);border:1px solid var(--border);color:var(--text-muted);transition:color var(--transition),border-color var(--transition),transform var(--transition)}.hero-social-link:hover{color:var(--accent);border-color:var(--accent-dim);transform:translateY(-2px)}.hero-social-icon{width:1.35rem;height:1.35rem}.hero-ctas{display:flex;flex-wrap:wrap;gap:var(--space);justify-content:center;opacity:0;animation:fadeUp .8s var(--ease-out) .65s forwards}.hero-cta{display:inline-block;padding:1rem 2rem;background:var(--accent);color:var(--bg);border-radius:var(--radius);font-weight:600;font-size:.9375rem;transition:transform var(--transition),box-shadow var(--transition)}.hero-cta:hover{transform:translateY(-2px);box-shadow:0 0 30px var(--accent-glow);color:var(--bg)}.hero-cta-secondary{background:transparent;color:var(--accent);border:2px solid var(--accent)}.hero-cta-secondary:hover{background:rgba(167,139,250,.15);color:var(--text);box-shadow:0 0 20px var(--accent-glow)}.hero-scroll{position:absolute;bottom:var(--space-lg);left:50%;transform:translateX(-50%);font-size:.75rem;color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase;opacity:0;animation:fadeUp .8s var(--ease-out) 1s forwards}.hero-scroll:after{content:"";display:block;width:1px;height:32px;margin:.5rem auto 0;background:linear-gradient(180deg,var(--text-muted),transparent);border-radius:1px;animation:scrollPulse 2s ease-in-out infinite}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes scrollPulse{0%,to{opacity:.5}50%{opacity:1}}.fade-in-section{opacity:0;transform:translateY(28px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out)}.fade-in-section-visible{opacity:1;transform:translateY(0)}.about-text{font-size:1.125rem;line-height:1.75;color:var(--text-muted);max-width:60ch}.about-text p{margin:0 0 1rem}.about-text p:last-child{margin-bottom:0}.tech-stack{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-gap:var(--space);gap:var(--space);margin-top:var(--space-lg)}.tech-stack-item{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:var(--space);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);transition:border-color var(--transition),transform var(--transition)}.tech-stack-item:hover{border-color:var(--accent-dim);transform:translateY(-2px)}.tech-stack-icon{width:2.5rem;height:2.5rem;color:var(--accent);flex-shrink:0}.tech-stack-label{font-size:.8125rem;color:var(--text-muted);text-align:center;line-height:1.3}.skills-grid{display:grid;grid-template-columns:1fr;grid-gap:var(--space-lg);gap:var(--space-lg)}@media (min-width:600px){.skills-grid{grid-template-columns:1fr 1fr}}.skills-group{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space);transition:border-color var(--transition),transform var(--transition)}.skills-group:hover{border-color:var(--accent-dim);transform:translateY(-2px)}.skills-group h3{font-size:.8125rem;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin-bottom:.75rem}.skills-tags{display:flex;flex-wrap:wrap;gap:.5rem}.skill-tag{padding:.4rem .65rem;background:var(--bg-elevated);border-radius:.375rem;font-size:.8125rem;color:var(--text);border:1px solid transparent;transition:border-color var(--transition),background var(--transition)}.skill-tag:hover{border-color:var(--border);background:var(--bg)}.projects-list{display:flex;flex-direction:column;gap:var(--space-xl)}.project-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-lg);position:relative;overflow:hidden;transition:border-color var(--transition),transform var(--transition),box-shadow var(--transition)}.project-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--accent-dim));opacity:.8}.project-card:hover{border-color:var(--accent-dim);transform:translateY(-4px);box-shadow:0 20px 40px rgba(0,0,0,.3)}.project-card h2{font-size:1.5rem;margin-bottom:.75rem}.project-card .project-subtitle{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);margin:0 0 .5rem}.project-meta{font-size:.875rem;color:var(--accent);margin-bottom:var(--space)}.project-description{font-size:.9375rem;line-height:1.65;color:var(--text);margin:0 0 var(--space-lg)}.project-block{margin-bottom:var(--space-lg)}.project-block:last-child{margin-bottom:0}.project-features{list-style:none;margin:0;padding:0;color:var(--text);font-size:.875rem;line-height:1.6}.project-features li{position:relative;padding-left:1rem;margin-bottom:.4rem}.project-features li:before{content:"—";position:absolute;left:0;color:var(--accent);font-weight:600}.carousel{margin-bottom:var(--space-lg)}.carousel-viewport{position:relative;width:100%;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);background:var(--bg);aspect-ratio:16/9}.carousel-track{display:flex;height:100%;transition:transform .3s var(--ease-out)}.carousel-slide{flex:0 0 100%;width:100%;height:100%;position:relative}.carousel-img{width:100%;height:100%;object-fit:contain;display:block}.carousel-controls{gap:var(--space);margin-top:var(--space)}.carousel-btn,.carousel-controls{display:flex;align-items:center;justify-content:center}.carousel-btn{width:2.5rem;height:2.5rem;padding:0;border:1px solid var(--border);border-radius:50%;background:var(--bg-card);color:var(--text);font-size:1.5rem;line-height:1;cursor:pointer;transition:border-color var(--transition),color var(--transition),background var(--transition)}.carousel-btn:hover{border-color:var(--accent-dim);color:var(--accent);background:var(--bg-elevated)}.carousel-counter{font-size:.875rem;color:var(--text-muted);min-width:4ch;text-align:center}.project-tech{display:flex;flex-wrap:wrap;gap:.5rem}.project-tech span{padding:.3rem .6rem;background:var(--bg-elevated);border-radius:.25rem;font-size:.75rem;color:var(--text);border:1px solid var(--border)}.exp-timeline{list-style:none;position:relative;padding:0 0 0 1.5rem;border-left:2px solid var(--border);margin:0 0 0 .35rem}.exp-item{position:relative;padding-bottom:var(--space-lg)}.exp-item:last-child{padding-bottom:0}.exp-item:before{content:"";position:absolute;left:-1.5rem;top:.4rem;width:12px;height:12px;border-radius:50%;background:var(--accent);transform:translateX(-50%);box-shadow:0 0 0 3px var(--bg),0 0 12px var(--accent-glow)}.exp-item h2,.exp-item h3{font-size:1.0625rem;margin-bottom:.25rem}.exp-meta{font-size:.875rem;color:var(--accent);margin-bottom:.5rem}.exp-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.exp-tag{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:.25rem .6rem;border-radius:.25rem}.exp-tag-technical{background:rgba(167,139,250,.2);color:var(--accent);border:1px solid var(--accent-dim)}.exp-tag-non-technical{background:var(--bg-elevated);color:var(--text-muted);border:1px solid var(--border)}.exp-tag-remote{background:rgba(167,139,250,.1);color:var(--accent);border:1px solid var(--accent-dim)}.exp-item ul{margin:0;padding-left:1.25rem;font-size:.9375rem;color:var(--text-muted)}.exp-item li{margin-bottom:.4rem}.edu-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:var(--space);gap:var(--space)}.edu-item{padding:var(--space);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);transition:border-color var(--transition)}.edu-item:hover{border-color:var(--accent-dim)}.edu-item h2,.edu-item h3{font-size:1.0625rem;margin-bottom:.25rem}.edu-meta{font-size:.875rem}.edu-detail,.edu-meta{color:var(--text-muted)}.edu-detail{font-size:.9375rem;line-height:1.6;margin:var(--space) 0 0}.contact-section{background:linear-gradient(180deg,var(--bg-elevated) 0,var(--bg) 100%);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-xl);text-align:center}.contact-note{font-size:1rem;color:var(--text-muted);margin-bottom:var(--space);max-width:40ch;margin-left:auto;margin-right:auto}.contact-links{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space);margin-top:var(--space)}.contact-links a{display:inline-flex;align-items:center;gap:.5rem;padding:1rem 1.5rem;border-radius:var(--radius);font-weight:600;font-size:.9375rem;transition:transform var(--transition),box-shadow var(--transition)}.contact-links a:hover{transform:translateY(-2px);box-shadow:0 0 24px var(--accent-glow)}.contact-email{background:var(--bg-card);color:var(--text);border:1px solid var(--border)}.contact-email:hover{border-color:var(--accent-dim);color:var(--text)}.contact-links a:not(.contact-email){background:var(--accent);color:var(--bg)}.contact-links a:not(.contact-email):hover{color:var(--bg)}.contact-location{font-size:.875rem;color:var(--text-muted);margin-top:var(--space)}.footer{margin-top:var(--space-xl);padding:var(--space) 0;border-top:1px solid var(--border);text-align:center}.footer-text{margin:0;font-size:.875rem;color:var(--text-muted)}