:root{--bg: #080808;--surface: #0f0f0f;--surface-2: #161616;--border: rgba(255, 255, 255, .07);--border-hover: rgba(255, 255, 255, .14);--text: #ededed;--text-2: #888;--text-3: #444;--accent: #FF416C;--accent-2: #FF4B2B;--accent-glow: rgba(255, 65, 108, .18);--font-sans: "Space Grotesk", system-ui, sans-serif;--font-mono: "Space Mono", "Fira Code", monospace;--radius-sm: 6px;--radius: 12px;--radius-lg: 20px;--ease: cubic-bezier(.16, 1, .3, 1);--transition: .3s var(--ease);--max-width: 1000px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-sans);font-weight:400;color:var(--text);background:var(--bg);overflow-x:hidden;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--surface-2);border-radius:4px}.container{width:min(90%,var(--max-width));margin-inline:auto}.accent{color:var(--accent)}.gradient-text{background:linear-gradient(135deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.section-label{font-family:var(--font-mono);font-size:.72rem;letter-spacing:3px;text-transform:uppercase;color:var(--accent);margin-bottom:.9rem;display:block}.section-heading{font-size:clamp(1.9rem,4vw,2.6rem);font-weight:700;letter-spacing:-.03em;color:var(--text);margin-bottom:3.5rem;line-height:1.1}.btn{display:inline-flex;align-items:center;gap:.45rem;padding:.7rem 1.6rem;border-radius:50px;border:1.5px solid var(--border-hover);font-family:var(--font-sans);font-size:.88rem;font-weight:600;color:var(--text);background:transparent;cursor:pointer;transition:var(--transition);white-space:nowrap}.btn:hover{background:var(--surface-2);border-color:#ffffff40;transform:translateY(-2px)}.btn-accent{background:linear-gradient(135deg,var(--accent),var(--accent-2));border-color:transparent;color:#fff}.btn-accent:hover{opacity:.85;transform:translateY(-2px)}.tag{display:inline-flex;align-items:center;padding:.25rem .7rem;border-radius:50px;background:var(--surface-2);border:1px solid var(--border);font-size:.75rem;font-family:var(--font-mono);color:var(--text-2);transition:var(--transition)}.tag:hover{border-color:var(--accent);color:var(--accent)}.reveal{opacity:0;transform:translateY(28px);transition:opacity .65s var(--ease),transform .65s var(--ease)}.reveal.visible{opacity:1;transform:none}.reveal-delay-1{transition-delay:.08s}.reveal-delay-2{transition-delay:.16s}.reveal-delay-3{transition-delay:.24s}.reveal-delay-4{transition-delay:.32s}.reveal-delay-5{transition-delay:.4s}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.cursor{display:inline-block;width:2px;height:.9em;background:var(--accent);margin-left:3px;vertical-align:middle;animation:blink 1.1s step-end infinite;border-radius:1px}hr{border:none;border-top:1px solid var(--border)}#header:where(.astro-XA6BJMSV){position:fixed;top:0;left:0;right:0;z-index:100;padding:1.4rem 0;transition:padding .3s var(--ease),background .4s var(--ease),box-shadow .4s var(--ease)}#header:where(.astro-XA6BJMSV).scrolled{padding:.9rem 0;background:rgba(8,8,8,.88);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 1px 0 var(--border)}.header-inner:where(.astro-XA6BJMSV){display:flex;align-items:center;gap:2rem}.logo:where(.astro-XA6BJMSV){font-family:var(--font-mono);font-size:1.05rem;font-weight:700;color:var(--text);margin-right:auto;letter-spacing:-.5px}.logo-bracket:where(.astro-XA6BJMSV){color:var(--accent)}nav:where(.astro-XA6BJMSV){display:flex;gap:.1rem}nav:where(.astro-XA6BJMSV) a:where(.astro-XA6BJMSV){padding:.4rem .8rem;font-size:.85rem;font-weight:500;color:var(--text-2);border-radius:var(--radius-sm);transition:color var(--transition),background var(--transition)}nav:where(.astro-XA6BJMSV) a:where(.astro-XA6BJMSV):hover{color:var(--text);background:var(--surface-2)}.nav-num:where(.astro-XA6BJMSV){font-family:var(--font-mono);font-size:.7rem;color:var(--accent);margin-right:3px}.btn-resume:where(.astro-XA6BJMSV){font-family:var(--font-mono);font-size:.78rem;padding:.45rem 1rem;border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--accent);transition:background var(--transition);white-space:nowrap}.btn-resume:where(.astro-XA6BJMSV):hover{background:rgba(255,65,108,.1)}@media (max-width: 680px){nav:where(.astro-XA6BJMSV){display:none}}#hero:where(.astro-7CS43HUP){position:relative;min-height:100vh;display:flex;align-items:center;overflow:hidden}.orb:where(.astro-7CS43HUP){position:absolute;border-radius:50%;filter:blur(100px);pointer-events:none;z-index:0}.orb-1:where(.astro-7CS43HUP){width:500px;height:500px;background:radial-gradient(circle,rgba(255,65,108,.12),transparent 70%);top:-10%;right:-5%;animation:drift 12s ease-in-out infinite alternate}.orb-2:where(.astro-7CS43HUP){width:400px;height:400px;background:radial-gradient(circle,rgba(255,75,43,.08),transparent 70%);bottom:10%;left:-8%;animation:drift 16s ease-in-out infinite alternate-reverse}@keyframes drift{0%{transform:translate(0) scale(1)}to{transform:translate(30px,20px) scale(1.05)}}.hero-inner:where(.astro-7CS43HUP){position:relative;z-index:1;padding:8rem 0 6rem;max-width:680px}.eyebrow:where(.astro-7CS43HUP){font-family:var(--font-mono);font-size:.9rem;color:var(--accent);margin-bottom:1.2rem;letter-spacing:1px}.hero-name:where(.astro-7CS43HUP){font-size:clamp(3rem,8vw,5.5rem);font-weight:700;letter-spacing:-.04em;line-height:1;color:var(--text);margin-bottom:1rem}.hero-role:where(.astro-7CS43HUP){font-size:clamp(1.4rem,4vw,2.2rem);font-weight:600;letter-spacing:-.02em;line-height:1.2;color:var(--text-2);margin-bottom:1.8rem}.hero-role:where(.astro-7CS43HUP) strong:where(.astro-7CS43HUP){color:var(--text)}.hero-desc:where(.astro-7CS43HUP){font-size:1rem;line-height:1.75;color:var(--text-2);max-width:520px;margin-bottom:2.5rem}.hero-desc:where(.astro-7CS43HUP) strong:where(.astro-7CS43HUP){color:var(--text);font-weight:600}.hero-actions:where(.astro-7CS43HUP){display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:3rem}.hero-socials:where(.astro-7CS43HUP){display:flex;gap:1.4rem}.hero-socials:where(.astro-7CS43HUP) a:where(.astro-7CS43HUP){font-size:1.1rem;color:var(--text-3);transition:color var(--transition),transform var(--transition)}.hero-socials:where(.astro-7CS43HUP) a:where(.astro-7CS43HUP):hover{color:var(--text);transform:translateY(-2px)}.scroll-hint:where(.astro-7CS43HUP){position:absolute;bottom:2.5rem;left:min(5%,calc((100% - var(--max-width)) / 2 + 5%));display:flex;align-items:center;gap:1rem;color:var(--text-3);font-family:var(--font-mono);font-size:.65rem;letter-spacing:2px;text-transform:uppercase}.scroll-line:where(.astro-7CS43HUP){width:60px;height:1px;background:var(--border-hover);animation:scroll-pulse 2.5s ease-in-out infinite}@keyframes scroll-pulse{0%,to{width:40px;opacity:.4}50%{width:70px;opacity:1}}@media (max-width: 640px){.hero-inner:where(.astro-7CS43HUP){padding:7rem 0 5rem}.hero-actions:where(.astro-7CS43HUP){flex-direction:column;align-items:flex-start}.scroll-hint:where(.astro-7CS43HUP){display:none}}#about:where(.astro-OH7C4N7G){padding:8rem 0 6rem}.about-grid:where(.astro-OH7C4N7G){display:grid;grid-template-columns:1.1fr .9fr;gap:4rem;align-items:start}.about-text:where(.astro-OH7C4N7G) p:where(.astro-OH7C4N7G){font-size:.97rem;line-height:1.8;color:var(--text-2);margin-bottom:1.3rem}.inline-link:where(.astro-OH7C4N7G){color:var(--accent);border-bottom:1px solid rgba(255,65,108,.4);transition:border-color var(--transition)}.inline-link:where(.astro-OH7C4N7G):hover{border-color:var(--accent)}.code-card:where(.astro-OH7C4N7G){background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;font-family:var(--font-mono);font-size:.82rem;line-height:1.7;transition:border-color var(--transition),box-shadow var(--transition)}.code-card:where(.astro-OH7C4N7G):hover{border-color:var(--border-hover);box-shadow:0 8px 40px #0006}.code-header:where(.astro-OH7C4N7G){display:flex;align-items:center;gap:.4rem;padding:.7rem 1rem;background:var(--surface-2);border-bottom:1px solid var(--border)}.dot:where(.astro-OH7C4N7G){width:10px;height:10px;border-radius:50%}.dot-red:where(.astro-OH7C4N7G){background:#ff5f57}.dot-yellow:where(.astro-OH7C4N7G){background:#ffbd2e}.dot-green:where(.astro-OH7C4N7G){background:#28c840}.code-filename:where(.astro-OH7C4N7G){margin-left:auto;color:var(--text-3);font-size:.72rem}.code-body:where(.astro-OH7C4N7G){padding:1.2rem 1.4rem;white-space:pre;overflow-x:auto}.kw:where(.astro-OH7C4N7G){color:#c792ea}.fn:where(.astro-OH7C4N7G){color:#82aaff}.key:where(.astro-OH7C4N7G){color:#f07178}.str:where(.astro-OH7C4N7G){color:#c3e88d}.bool:where(.astro-OH7C4N7G){color:#ff9cac}.p:where(.astro-OH7C4N7G){color:var(--text-2)}@media (max-width: 768px){.about-grid:where(.astro-OH7C4N7G){grid-template-columns:1fr;gap:2.5rem}}#skills:where(.astro-WYZO6VIU){padding:6rem 0;border-top:1px solid var(--border)}.skills-row:where(.astro-WYZO6VIU){display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:2rem}.skill-pill:where(.astro-WYZO6VIU){display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1.1rem;border-radius:50px;background:var(--surface);border:1px solid var(--border);font-size:.875rem;font-weight:500;color:var(--text-2);cursor:default;transition:border-color var(--transition),color var(--transition),background var(--transition),transform var(--transition)}.skill-pill:where(.astro-WYZO6VIU):hover{border-color:var(--accent);color:var(--text);background:var(--surface-2);transform:translateY(-2px)}.pill-icon:where(.astro-WYZO6VIU){font-size:1rem;color:var(--accent)}.devicon:where(.astro-WYZO6VIU){font-size:1rem;color:var(--accent)!important}.skills-note:where(.astro-WYZO6VIU){font-size:.88rem;color:var(--text-3);line-height:1.7}#experience:where(.astro-ASN3YS75){padding:6rem 0;border-top:1px solid var(--border)}.jobs:where(.astro-ASN3YS75){display:flex;flex-direction:column;gap:0}.job:where(.astro-ASN3YS75){display:grid;grid-template-columns:200px 1fr;gap:2.5rem;padding:2.5rem 0;border-bottom:1px solid var(--border);transition:background var(--transition)}.job:where(.astro-ASN3YS75):last-child{border-bottom:none}.job:where(.astro-ASN3YS75):hover{background:transparent}.job-left:where(.astro-ASN3YS75){padding-top:.2rem;display:flex;flex-direction:column;gap:1rem}.job-period:where(.astro-ASN3YS75){font-family:var(--font-mono);font-size:.72rem;letter-spacing:1px;color:var(--text-3);white-space:nowrap}.job-tags:where(.astro-ASN3YS75){display:flex;flex-wrap:wrap;gap:.4rem}.job-right:where(.astro-ASN3YS75){display:flex;flex-direction:column;gap:1rem}.job-role:where(.astro-ASN3YS75){font-size:1.1rem;font-weight:700;color:var(--text);letter-spacing:-.02em}.job-company:where(.astro-ASN3YS75){display:inline-flex;align-items:center;gap:.3rem;font-size:.88rem;font-weight:600;color:var(--accent);margin-top:.15rem;transition:opacity var(--transition)}.job-company:where(.astro-ASN3YS75):hover{opacity:.75}.ext:where(.astro-ASN3YS75){flex-shrink:0}.job-location:where(.astro-ASN3YS75){display:block;font-size:.78rem;color:var(--text-3);font-family:var(--font-mono);margin-top:.15rem}.job-bullets:where(.astro-ASN3YS75){list-style:none;display:flex;flex-direction:column;gap:.65rem;margin-top:.25rem}.job-bullets:where(.astro-ASN3YS75) li:where(.astro-ASN3YS75){font-size:.92rem;line-height:1.75;color:var(--text-2);padding-left:1.2rem;position:relative}.job-bullets:where(.astro-ASN3YS75) li:where(.astro-ASN3YS75):before{content:"\25b9";position:absolute;left:0;color:var(--accent);font-size:.8rem;top:.15rem}@media (max-width: 768px){.job:where(.astro-ASN3YS75){grid-template-columns:1fr;gap:1rem;padding:2rem 0}.job-left:where(.astro-ASN3YS75){flex-direction:row;flex-wrap:wrap;align-items:center;gap:.75rem}}#work:where(.astro-OM7G3P6Y){padding:6rem 0;border-top:1px solid var(--border)}.projects-list:where(.astro-OM7G3P6Y){display:flex;flex-direction:column;gap:6rem}.project-item:where(.astro-OM7G3P6Y){display:grid;grid-template-columns:1fr 1fr;gap:3.5rem;align-items:center}.project-item:where(.astro-OM7G3P6Y):nth-child(even) .project-image-wrap:where(.astro-OM7G3P6Y){order:2}.project-item:where(.astro-OM7G3P6Y):nth-child(even) .project-info:where(.astro-OM7G3P6Y){order:1}.project-image-wrap:where(.astro-OM7G3P6Y){position:relative;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);background:var(--surface);transition:border-color var(--transition),box-shadow var(--transition)}.project-image-wrap:where(.astro-OM7G3P6Y):hover{border-color:#ff416c4d;box-shadow:0 12px 48px #00000080}.project-image-wrap:where(.astro-OM7G3P6Y) img:where(.astro-OM7G3P6Y){width:100%;aspect-ratio:16 / 9;object-fit:cover;display:block;transition:transform .5s var(--ease),opacity var(--transition)}.project-image-wrap:where(.astro-OM7G3P6Y):hover img:where(.astro-OM7G3P6Y){transform:scale(1.03);opacity:.5}.image-overlay:where(.astro-OM7G3P6Y){position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:1rem;opacity:0;transition:opacity var(--transition)}.project-image-wrap:where(.astro-OM7G3P6Y):hover .image-overlay:where(.astro-OM7G3P6Y){opacity:1}.overlay-btn:where(.astro-OM7G3P6Y){width:44px;height:44px;border-radius:50%;background:var(--bg);border:1px solid var(--border-hover);display:flex;align-items:center;justify-content:center;color:var(--text);transition:background var(--transition),border-color var(--transition),transform var(--transition)}.overlay-btn:where(.astro-OM7G3P6Y):hover{background:var(--accent);border-color:var(--accent);transform:scale(1.1)}.project-info:where(.astro-OM7G3P6Y){display:flex;flex-direction:column;gap:1rem}.project-meta:where(.astro-OM7G3P6Y){display:flex;align-items:center;justify-content:space-between}.project-num:where(.astro-OM7G3P6Y){font-family:var(--font-mono);font-size:.72rem;color:var(--accent);letter-spacing:2px}.project-links:where(.astro-OM7G3P6Y){display:flex;gap:.75rem}.project-links:where(.astro-OM7G3P6Y) a:where(.astro-OM7G3P6Y){color:var(--text-3);transition:color var(--transition),transform var(--transition)}.project-links:where(.astro-OM7G3P6Y) a:where(.astro-OM7G3P6Y):hover{color:var(--accent);transform:translateY(-2px)}.project-title:where(.astro-OM7G3P6Y){font-size:clamp(1.5rem,3vw,2rem);font-weight:700;letter-spacing:-.03em;color:var(--text);line-height:1.1}.project-desc:where(.astro-OM7G3P6Y){font-size:.93rem;line-height:1.75;color:var(--text-2)}.project-tags:where(.astro-OM7G3P6Y){display:flex;flex-wrap:wrap;gap:.5rem}@media (max-width: 768px){.project-item:where(.astro-OM7G3P6Y),.project-item:where(.astro-OM7G3P6Y):nth-child(even) .project-image-wrap:where(.astro-OM7G3P6Y),.project-item:where(.astro-OM7G3P6Y):nth-child(even) .project-info:where(.astro-OM7G3P6Y){grid-template-columns:1fr;order:unset}.project-item:where(.astro-OM7G3P6Y){grid-template-columns:1fr;gap:2rem}.projects-list:where(.astro-OM7G3P6Y){gap:4rem}}#contact:where(.astro-ENOEKXX6){padding:8rem 0 6rem;border-top:1px solid var(--border)}.contact-inner:where(.astro-ENOEKXX6){display:grid;grid-template-columns:1fr 1fr;gap:5rem;align-items:start}.contact-heading:where(.astro-ENOEKXX6){font-size:clamp(2rem,5vw,3rem);font-weight:700;letter-spacing:-.04em;line-height:1.1;margin-bottom:1.2rem}.contact-text:where(.astro-ENOEKXX6) p:where(.astro-ENOEKXX6){font-size:.97rem;line-height:1.8;color:var(--text-2);margin-bottom:2rem}.contact-cta:where(.astro-ENOEKXX6){font-size:.95rem}.contact-links:where(.astro-ENOEKXX6){display:flex;flex-direction:column;gap:.75rem}.contact-link:where(.astro-ENOEKXX6){display:flex;align-items:center;gap:1rem;padding:1rem 1.2rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);transition:border-color var(--transition),background var(--transition),transform var(--transition)}.contact-link:where(.astro-ENOEKXX6):hover{border-color:var(--border-hover);background:var(--surface-2);transform:translate(4px)}.contact-link:where(.astro-ENOEKXX6) i:where(.astro-ENOEKXX6){font-size:1.2rem;color:var(--accent);width:20px;text-align:center;flex-shrink:0}.contact-link:where(.astro-ENOEKXX6)>div:where(.astro-ENOEKXX6){display:flex;flex-direction:column;flex:1}.link-label:where(.astro-ENOEKXX6){font-size:.7rem;font-family:var(--font-mono);letter-spacing:2px;text-transform:uppercase;color:var(--text-3)}.link-value:where(.astro-ENOEKXX6){font-size:.88rem;font-weight:500;color:var(--text-2)}.arrow:where(.astro-ENOEKXX6){color:var(--text-3);flex-shrink:0}@media (max-width: 768px){.contact-inner:where(.astro-ENOEKXX6){grid-template-columns:1fr;gap:3rem}}#footer:where(.astro-F5ZR7SU2){padding:2rem 0;border-top:1px solid var(--border)}.footer-inner:where(.astro-F5ZR7SU2){display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap}.footer-logo:where(.astro-F5ZR7SU2){font-family:var(--font-mono);font-size:.9rem;font-weight:700;margin-right:auto}.bracket:where(.astro-F5ZR7SU2){color:var(--accent)}.footer-copy:where(.astro-F5ZR7SU2),.footer-built:where(.astro-F5ZR7SU2){font-size:.78rem;color:var(--text-3)}.footer-built:where(.astro-F5ZR7SU2) a:where(.astro-F5ZR7SU2){color:var(--text-2);border-bottom:1px solid var(--border);transition:color var(--transition),border-color var(--transition)}.footer-built:where(.astro-F5ZR7SU2) a:where(.astro-F5ZR7SU2):hover{color:var(--text);border-color:var(--text-2)}@media (max-width: 500px){.footer-inner:where(.astro-F5ZR7SU2){flex-direction:column;align-items:flex-start;gap:.4rem}.footer-logo:where(.astro-F5ZR7SU2){margin-right:0}}
