@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/32687112bd2dd8db-s.0gspg~~t9nou8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/28868e710e86be81-s.0rx81dn62y51_.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_81e3057-module__PcZKXa__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_81e3057-module__PcZKXa__variable{--font-sans:"Space Grotesk", "Space Grotesk Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/13bf9871fe164e7f-s.0s19wthhh_6~m.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/cc545e633e20c56d-s.0dza.stei.9v7.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/71b036adf157cdcf-s.03nf~dfjdkf~..woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/89b21bb081cb7469-s.0gfhww.tctz1o.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/3fe682a82f50d426-s.09q3q1i5159bl.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/70bc3e132a0a741e-s.p.1409xf.ylxg8g.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_58f6afc0-module__CKsuwa__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_58f6afc0-module__CKsuwa__variable{--font-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
:root{--container-max:1240px;--container-gutter:24px;--bg-main:#0f172a;--bg-soft:#0f2438;--bg-soft-2:#182835;--bg-deep:#050816;--text-heading:#dfe9f8;--text-body:#9fb4d0;--text-dim:#71839a;--accent:#5eead4;--accent-rgb:94 234 212;--accent-strong:#2dd4bf;--border:#94a3b82e;--border-strong:#5eead46b;--glow-cyan:#5eead41f;--glow-blue:#3b82f61a;--glow-violet:#818cf80f;--purple-800:#2d1060;--purple-700:#4a1a9e;--font-sans-fallback:Inter, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;--font-mono-fallback:"Roboto Mono", "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", monospace}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;background-color:var(--bg-main);overscroll-behavior-y:contain;overflow-x:clip}body{width:100%;min-height:100dvh;color:var(--text-body);line-height:1.7;font-family:var(--font-sans), var(--font-sans-fallback);background-color:var(--bg-main);background-image:radial-gradient(circle at 15% 12%, var(--glow-cyan), transparent 36%), radial-gradient(circle at 82% 6%, var(--glow-blue), transparent 40%), linear-gradient(160deg, #060a16fa, #0c1424f2 40%, #060c1afa);-webkit-font-smoothing:antialiased;overflow-x:clip}.cursor-mood-overlay{pointer-events:none;z-index:45;opacity:0;background:radial-gradient(600px circle at 50% 50%, rgb(var(--accent-rgb) / .15), #0000 80%);mix-blend-mode:normal;will-change:opacity, background-image;backface-visibility:hidden;transition:none;position:fixed;inset:0;transform:translateZ(0)}h1,h2,h3,h4,h5,h6{color:var(--text-heading);letter-spacing:-.01em;font-weight:600;line-height:1.15}p{max-width:68ch}a{color:inherit;text-decoration:none}strong,b{color:var(--text-heading);font-weight:500}::selection{color:var(--text-heading);background:#5eead433}@keyframes fadeInUp{0%{opacity:0;filter:blur(3px);transform:translateY(24px)}to{opacity:1;filter:blur();transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;filter:blur(2px);transform:translate(-28px)}to{opacity:1;filter:blur();transform:translate(0)}}@keyframes fadeInRight{0%{opacity:0;filter:blur(2px);transform:translate(28px)}to{opacity:1;filter:blur();transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}@keyframes portraitReveal{0%{opacity:0;filter:blur(6px);transform:scale(.82)translateY(12px)}60%{filter:blur()}to{opacity:1;filter:blur();transform:scale(1)translateY(0)}}@keyframes shimmer{0%{background-position:-200%}to{background-position:200%}}@keyframes borderPulse{0%,to{border-color:#5eead473}50%{border-color:#5eead4e6;box-shadow:0 0 18px #5eead440}}@keyframes floatY{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes lineGrow{0%{opacity:0;width:0}to{opacity:.6;width:34px}}@keyframes navSlideDown{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@keyframes dotBlink{0%,80%,to{opacity:0}40%{opacity:1}}@media (prefers-reduced-motion:reduce){.reveal,.reveal-left,.reveal-right,.reveal-scale{opacity:1;filter:none;transform:none;animation:none!important}.js .reveal,.js .reveal-left,.js .reveal-right,.js .reveal-scale{opacity:1;transform:none}.cursor-mood-overlay{transition:none}.hero-portrait-card,.hero-portrait-mobile-wrap,.genie-slider-glow{animation:none!important}.genie-slide{transition:none!important}}.reveal,.reveal-left,.reveal-right,.reveal-scale{opacity:1;transform:none}.js .reveal{opacity:0;transform:translateY(20px)}.js .reveal-left{opacity:0;transform:translate(-24px)}.js .reveal-right{opacity:0;transform:translate(24px)}.js .reveal-scale{opacity:0;transform:scale(.9)}.js .reveal.is-visible{animation:.7s cubic-bezier(.22,1,.36,1) forwards fadeInUp;animation-delay:var(--delay,0s)}.js .reveal-left.is-visible{animation:.7s cubic-bezier(.22,1,.36,1) forwards fadeInLeft;animation-delay:var(--delay,0s)}.js .reveal-right.is-visible{animation:.7s cubic-bezier(.22,1,.36,1) forwards fadeInRight;animation-delay:var(--delay,0s)}.js .reveal-scale.is-visible{animation:.6s cubic-bezier(.22,1,.36,1) forwards scaleIn;animation-delay:var(--delay,0s)}.mono{font-family:var(--font-mono), var(--font-mono-fallback)}.accent{color:var(--accent)}.muted{color:var(--text-dim)}.site-shell{max-width:var(--container-max);width:100%;padding:88px var(--container-gutter) 40px;margin:0 auto}.left-column{width:100%;margin-bottom:40px}.right-column{width:100%}.content-section{margin-bottom:88px;scroll-margin-top:98px}.section-heading{align-items:center;gap:14px;margin-bottom:28px;display:flex}.section-heading-wrap{margin-bottom:28px}.section-heading:after{content:"";background:linear-gradient(90deg,#5eead466,#5eead40d,#0000);flex:1;height:1px}.section-index{font-family:var(--font-mono), var(--font-mono-fallback);color:var(--accent);margin-right:8px;font-size:13px}.section-title{font-size:clamp(24px,2.4vw,34px)}.section-number{font-family:var(--font-mono), var(--font-mono-fallback);color:var(--accent);font-size:12px}.section-eyebrow{letter-spacing:.24em;text-transform:uppercase;color:var(--text-dim);margin:0 0 8px;font-size:11px}.section-description{max-width:68ch;color:var(--text-body);margin:0;line-height:1.7}.card-surface{background:linear-gradient(160deg,#0c1424f0,#0e1c32eb);border:1px solid #94a3b80f;border-radius:10px;transition:transform .28s cubic-bezier(.22,1,.36,1),border-color .28s,background .28s,box-shadow .28s;box-shadow:0 14px 30px -20px #020617e6}.card-surface:hover{background:linear-gradient(160deg,#0e1a30fa,#0c1426f5);border-color:#94a3b81f;transform:translateY(-4px);box-shadow:0 16px 34px -16px #020617eb}.card-surface h3{transition:color .22s}.card-surface:hover h3{color:var(--accent)}.stack-list{flex-direction:column;gap:14px;list-style:none;display:flex}.project-shell{gap:18px;display:grid}.project-summary{position:relative}.project-screenshots{justify-content:center;align-items:center;margin-top:-6px;display:flex}.project-screenshots .genie-slider{margin-top:0;margin-bottom:0}.project-screenshots .genie-slider-stage{width:min(100%,clamp(120px,23vw,150px))}.stack-item{padding:22px 18px}.meta-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:12px;display:flex}.meta-period{font-family:var(--font-mono), var(--font-mono-fallback);color:var(--text-dim);font-size:12px}.badge{color:#9bb2d4;font-size:11px;line-height:1;font-family:var(--font-mono), var(--font-mono-fallback);background:#070e1ccc;border:1px solid #5eead433;border-radius:999px;align-items:center;padding:6px 10px;transition:border-color .2s,color .2s,transform .2s;display:inline-flex}.badge:hover{color:var(--accent);border-color:#5eead466;transform:translateY(-1px)}.btn-accent{color:var(--accent);font-family:var(--font-mono), var(--font-mono-fallback);background:linear-gradient(120deg,#5eead42e,#3b82f60a);border:1px solid #5eead47a;border-radius:10px;justify-content:center;align-items:center;padding:12px 18px;font-size:13px;transition:transform .22s,background-color .22s,box-shadow .22s;display:inline-flex;position:relative;overflow:hidden}.btn-accent:after{content:"";opacity:0;background:linear-gradient(120deg,#0000 30%,#5eead41f 50%,#0000 70%) 0 0/200% 100%;transition:opacity .3s;position:absolute;inset:0}.btn-accent:hover{background:linear-gradient(120deg,#5eead447,#3b82f614);transform:translateY(-2px);box-shadow:0 8px 18px -8px #5eead452}.btn-accent:hover:after{opacity:1;animation:.7s forwards shimmer}.text-link{color:var(--accent);align-items:center;gap:6px;transition:color .2s,transform .2s,gap .2s;display:inline-flex}.text-link:hover{color:var(--accent-strong);gap:9px;transform:translateY(-1px)}.genie-slider{margin-top:18px;margin-bottom:6px;position:relative}.genie-slider-glow{filter:blur(16px);z-index:0;pointer-events:none;background:radial-gradient(circle,#5eead41f 0%,#5eead40f 45%,#5eead400 75%);width:min(82%,220px);height:min(70%,330px);animation:4.8s ease-in-out infinite floatY;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.genie-slider-stage{aspect-ratio:9/19.5;z-index:1;backface-visibility:hidden;contain:paint;background:linear-gradient(160deg,#091226f2,#0c1a34e6);border:1px solid #5eead42e;border-radius:20px;width:min(100%,clamp(150px,26vw,220px));margin:0 auto;position:relative;overflow:hidden;transform:translateZ(0);box-shadow:0 16px 30px -18px #020617f2,0 0 0 3px #5eead414}.genie-slide{opacity:0;will-change:transform, opacity;transition:transform .62s cubic-bezier(.22,1,.36,1),opacity .62s;position:absolute;inset:0;transform:translate(10%)scale(.985)}.genie-slide.is-active{opacity:1;z-index:3;transform:translate(0)scale(1)}.genie-slide.is-prev,.genie-slide.is-next{opacity:0;z-index:2}.genie-slide.is-hidden{opacity:0;z-index:1}.genie-slide-image{object-fit:cover;object-position:center top;backface-visibility:hidden;transform:translateZ(0)}.genie-slider-dots{justify-content:center;gap:8px;margin-top:10px;display:flex}.genie-dot{cursor:pointer;background:#94a3b857;border:1px solid #94a3b873;border-radius:999px;width:5px;height:5px;padding:0;transition:width .22s,background-color .22s,border-color .22s}.genie-dot.active{border-color:var(--accent);background:var(--accent);width:14px}.app-nav{z-index:50;-webkit-backdrop-filter:blur(10px);will-change:transform;background:linear-gradient(120deg,#060c18f5,#0a1628eb);border-bottom:1px solid #94a3b81f;animation:.6s cubic-bezier(.22,1,.36,1) forwards navSlideDown;position:fixed;top:0;left:0;right:0;transform:translateZ(0)}.app-nav-inner{max-width:var(--container-max);padding:14px var(--container-gutter);justify-content:space-between;align-items:center;gap:16px;margin:0 auto;display:flex}.app-brand{color:var(--text-heading);align-items:center;gap:10px;font-size:14px;transition:opacity .2s;display:flex}.app-brand:hover{opacity:.85}.app-avatar{border:2px solid var(--border-strong);border-radius:999px;flex-shrink:0;width:34px;height:34px;transition:border-color .2s,box-shadow .2s;position:relative;overflow:hidden}.app-brand:hover .app-avatar{border-color:var(--accent);box-shadow:0 0 10px #5eead44d}.app-nav-links{align-items:center;gap:24px;display:flex}.app-nav-link{font-family:var(--font-mono), var(--font-mono-fallback);color:var(--text-dim);font-size:12px;transition:color .2s,transform .2s;position:relative}.app-nav-link:after{content:"";background:var(--accent);transform-origin:50%;height:1px;transition:transform .25s;position:absolute;bottom:-3px;left:0;right:0;transform:scaleX(0)}.app-nav-link:hover{color:var(--accent);transform:translateY(-1px)}.app-nav-link:hover:after{transform:scaleX(1)}.mobile-menu-button{border:1px solid var(--border);color:var(--text-heading);font-family:var(--font-mono), var(--font-mono-fallback);cursor:pointer;background:#0f172a99;border-radius:6px;padding:8px 14px;font-size:12px;transition:border-color .2s,color .2s;display:none}.mobile-menu-button:hover{border-color:var(--accent);color:var(--accent)}.mobile-menu{border-top:1px solid var(--border);padding:0 24px 16px;animation:.3s forwards fadeInUp;display:none}.mobile-menu.open{display:block}.mobile-menu a{font-family:var(--font-mono), var(--font-mono-fallback);color:var(--text-body);border-bottom:1px solid #94a3b814;padding:10px 0;font-size:13px;transition:color .18s,padding-left .18s;display:block}.mobile-menu a:last-child{border-bottom:none}.mobile-menu a:hover{color:var(--accent);padding-left:8px}.hero-panel{padding-top:20px;position:relative}.hero-panel:before{content:"";z-index:0;pointer-events:none;background-image:radial-gradient(circle,#5eead41f 1px,#0000 1px);background-size:26px 26px;position:absolute;inset:0}.hero-panel>*{z-index:1;position:relative}.hero-heading-row{display:block}.hero-heading-copy{min-width:0}.hero-kicker{color:var(--accent);font-family:var(--font-mono), var(--font-mono-fallback);margin-bottom:14px;font-size:13px}.hero-title{background:linear-gradient(135deg,#e6eef8 0%,#9fb4d0 45%,#5eead4 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:12px;font-size:clamp(32px,5.2vw,56px);line-height:1}.hero-subtitle{color:var(--text-body);margin-bottom:18px;font-size:clamp(24px,4.2vw,48px);line-height:1.05}.hero-summary{max-width:54ch;margin-bottom:24px;line-height:1.75}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:18px;display:flex}.hero-jump-list{flex-direction:column;gap:14px;margin-top:26px;display:flex}.hero-jump-link{font-family:var(--font-mono), var(--font-mono-fallback);color:var(--text-dim);align-items:center;gap:12px;width:fit-content;font-size:13px;transition:color .22s,letter-spacing .22s,gap .22s;display:inline-flex}.hero-jump-link:hover{color:var(--accent);letter-spacing:.03em;gap:16px}.hero-jump-line{opacity:.6;background:currentColor;width:34px;height:1px;transition:width .25s,opacity .25s}.hero-jump-link:hover .hero-jump-line{opacity:1;width:56px}@property --angle{syntax:"<angle>";inherits:false;initial-value:0deg}@keyframes rotate-gradient{0%{--angle:0deg}to{--angle:360deg}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.hero-portrait-card{background:conic-gradient(from var(--angle), #06b6d4, #8b5cf6, #06b6d4);border-radius:999px;flex-shrink:0;width:132px;height:132px;padding:3px;transition:box-shadow .3s,border-color .3s,transform .3s;animation:4s linear infinite rotate-gradient,.9s cubic-bezier(.22,1,.36,1) 50ms both portraitReveal,4s ease-in-out infinite float;position:relative;overflow:hidden;box-shadow:0 14px 30px -16px #020617e6,0 0 0 4px #5eead41a}.hero-portrait-card:hover{border-color:var(--accent);transform:scale(1.04);box-shadow:0 0 0 6px #5eead41f,0 18px 36px -16px #020617f2}.hero-portrait-image{object-fit:cover;object-position:center top;transition:transform .5s}.hero-portrait-card:hover .hero-portrait-image{transform:scale(1.06)}.hero-portrait-mobile,.hero-portrait-mobile-wrap{display:none}.side-rail{z-index:40;flex-direction:column;align-items:center;gap:14px;display:flex;position:fixed;bottom:0}.side-rail:after{content:"";background:#94a3b880;width:1px;height:84px}.side-rail-left{left:26px}.side-rail-right{right:26px}.side-link,.side-email{color:var(--text-dim);font-family:var(--font-mono), var(--font-mono-fallback);letter-spacing:.08em;font-size:11px;transition:transform .2s,color .2s}.side-link:hover,.side-email:hover{color:var(--accent);transform:translateY(-2px)}.side-email{writing-mode:vertical-rl}.bottom-socials-left{left:max(var(--container-gutter), calc((100% - var(--container-max)) / 2 + var(--container-gutter)));z-index:40;width:max-content;max-width:calc(100% - (var(--container-gutter) * 2));white-space:nowrap;pointer-events:none;align-items:center;gap:16px;display:flex;position:fixed;bottom:48px}.bottom-socials-left .social-btn{pointer-events:auto}.social-btn{color:var(--text-dim);font-family:var(--font-mono), var(--font-mono-fallback);background:radial-gradient(circle at 10% 0,#5eead424,#0000 55%),linear-gradient(140deg,#081022eb,#0c1a34bf);border:1px solid #5eead429;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:13px;transition:transform .18s,color .18s,background .18s,border-color .18s,box-shadow .18s;display:inline-flex}.social-btn svg{width:18px;height:18px;transition:transform .2s}.social-label{font-family:var(--font-mono), var(--font-mono-fallback);color:inherit;font-size:12px}.social-btn:hover{color:var(--accent);border-color:var(--border-strong);background:#5eead40f;transform:translateY(-3px);box-shadow:0 8px 16px -8px #5eead433}.social-btn:hover svg{transform:scale(1.15)}.contact-shell{box-shadow:none;background:0 0;border:0;padding:0}.contact-kicker{color:var(--accent);letter-spacing:.08em;margin-bottom:12px;font-size:12px}.contact-title{margin-bottom:12px;font-size:clamp(22px,2.6vw,34px);line-height:1.1}.contact-summary{font-size:inherit;max-width:64ch;margin-bottom:20px}.contact-panel{background:radial-gradient(120% 120% at 20% 0,#5eead41a,#0000 55%),linear-gradient(145deg,#060a1ae6,#102040e6);border:1px solid #5eead440;border-radius:18px;padding:22px;position:relative;overflow:hidden;box-shadow:0 24px 60px -40px #020617e6}.contact-panel:before{content:"";opacity:.65;pointer-events:none;background:radial-gradient(circle at 10% 20%,#5eead429,#0000 45%);height:140%;position:absolute;inset:-30% 0 auto}.contact-grid-layout{z-index:1;gap:22px;display:grid;position:relative}.contact-info{gap:12px;display:grid}.contact-pill{color:var(--text-body);background:#080f2299;border:1px solid #94a3b840;border-radius:12px;align-items:center;gap:10px;padding:10px 12px;font-size:13px;display:inline-flex}.contact-form{gap:14px;display:grid}.contact-field{gap:8px;display:grid}.input-field{width:100%;color:var(--text-heading);background:#060c19b3;border:1px solid #94a3b847;border-radius:12px;padding:12px 14px;font-size:14px;transition:border-color .2s,box-shadow .2s,transform .2s}.input-field::placeholder{color:#94a3b8b3}.input-field:focus{border-color:#5eead4b3;outline:none;box-shadow:0 0 0 3px #5eead42e}.input-field:focus-visible{outline:none}.contact-submit{color:var(--accent);font-family:var(--font-mono), var(--font-mono-fallback);background:linear-gradient(120deg,#5eead429,#5eead405);border:1px solid #5eead4e6;border-radius:12px;padding:12px 18px;transition:transform .2s,box-shadow .2s}.contact-submit:hover{transform:translateY(-2px);box-shadow:0 12px 24px -14px #5eead499}.contact-status{color:var(--text-dim);font-size:12px}.contact-status.success{color:#9ae6b4}.contact-status.error{color:#fca5a5}::-webkit-scrollbar{width:7px}::-webkit-scrollbar-track{background:var(--bg-main)}::-webkit-scrollbar-thumb{background:#64748bbf;border-radius:4px}@media (min-width:1024px){.section-content-inset{padding-inline:18px}.app-nav-inner{grid-template-columns:48% 52%;gap:28px;display:grid}.app-brand,.app-nav-links{justify-self:start}.site-shell{padding:0 var(--container-gutter);justify-content:space-between;gap:28px;display:flex}.left-column{flex-direction:column;justify-content:space-between;width:48%;max-height:100vh;margin-bottom:0;padding:110px 0 56px;display:flex;position:sticky;top:0}.right-column{width:52%;padding:110px 0 40px}@media (min-width:900px){.contact-grid-layout{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:start}}.hero-heading-row{align-items:center;gap:18px;margin-bottom:8px;display:flex}.hero-heading-copy .hero-kicker{margin-bottom:8px}.hero-heading-copy .hero-title{margin-bottom:0}.hero-portrait-mobile-wrap{display:none!important}}@media (max-width:1023px){.side-rail,.hero-portrait-card{display:none}.hero-portrait-mobile-wrap{justify-content:center;margin:14px auto 20px;animation:.9s cubic-bezier(.22,1,.36,1) .1s both portraitReveal;display:flex}.hero-portrait-mobile{border:2px solid var(--border-strong);background:#112240a8;border-radius:999px;width:120px;height:120px;transition:transform .3s,box-shadow .3s,border-color .3s;animation:3s ease-in-out 1.2s 2 borderPulse;display:flex;overflow:hidden;box-shadow:0 12px 26px -14px #020617f2,0 0 0 5px #5eead412}.hero-portrait-mobile:hover{border-color:var(--accent);transform:scale(1.05);box-shadow:0 0 0 7px #5eead41f,0 16px 28px -14px #020617f2}.hero-portrait-mobile img{object-fit:cover;object-position:center top;width:100%;height:100%}.content-section{margin-bottom:72px}.hero-jump-list{display:none}.hero-panel{text-align:left;padding-top:4px}.hero-panel p,.hero-panel .hero-summary{text-align:left;margin-left:auto;margin-right:auto}.hero-heading-copy{flex-direction:column;align-items:flex-start;display:flex}.hero-actions{justify-content:flex-start}}@media (max-width:900px){.app-nav{-webkit-backdrop-filter:none;background:#0f172af0}.app-nav-links{display:none}.mobile-menu-button{display:block}.site-shell{padding-top:84px}.contact-grid{grid-template-columns:1fr}}@media (max-width:640px){.site-shell{padding:82px 16px 28px}.bottom-socials-left{justify-content:space-between;gap:8px;width:calc(100% - 16px);max-width:none;bottom:10px;left:8px;right:8px}.social-btn{flex:1;justify-content:center;min-width:44px;padding:10px}.social-label{display:none}.social-btn svg{width:19px;height:19px}.content-section{margin-bottom:56px}.section-heading{margin-bottom:18px}.stack-item{padding:16px 14px}.hero-actions{flex-direction:column;align-items:center}.hero-actions .btn-accent{justify-content:center;width:100%;max-width:260px}.hero-portrait-mobile{width:108px;height:108px}.meta-row{flex-direction:column;gap:6px}}@media (hover:none) and (pointer:coarse){.genie-slider-glow{animation:none}.genie-slider-stage{contain:layout paint}.genie-slide{transition:opacity .24s;transform:none}.genie-slide.is-active,.genie-slide-image{transform:none}}@media (max-width:420px){.btn-accent{border-radius:9px;padding:10px 14px;font-size:12px}.hero-portrait-mobile{width:96px;height:96px}.hero-title{font-size:28px}}.hero-typewriter{font-family:var(--font-mono), var(--font-mono-fallback);color:var(--accent);align-items:center;min-height:24px;margin-bottom:12px;font-size:15px;display:inline-flex}.hero-typewriter:before{content:"";animation:16s step-end infinite typewriter-labels}.hero-typewriter:after{content:"|";color:var(--accent);margin-left:2px;animation:.8s step-end infinite cursor-blink}@keyframes cursor-blink{0%,to{color:#0000}50%{color:var(--accent)}}@keyframes typewriter-labels{0%{content:""}.5%{content:"F"}1%{content:"Fl"}1.5%{content:"Flu"}2%{content:"Flut"}2.5%{content:"Flutt"}3%{content:"Flutte"}3.5%{content:"Flutter"}4%{content:"Flutter "}4.5%{content:"Flutter D"}5%{content:"Flutter De"}5.5%{content:"Flutter Dev"}6%{content:"Flutter Deve"}6.5%{content:"Flutter Devel"}7%{content:"Flutter Develo"}7.5%{content:"Flutter Develop"}8%{content:"Flutter Develope"}8.5%,16.5%{content:"Flutter Developer"}17%{content:"Flutter Develope"}17.5%{content:"Flutter Develop"}18%{content:"Flutter Develo"}18.5%{content:"Flutter Devel"}19%{content:"Flutter Deve"}19.5%{content:"Flutter Dev"}20%{content:"Flutter De"}20.5%{content:"Flutter D"}21%{content:"Flutter "}21.5%{content:"Flutter"}22%{content:"Flutte"}22.5%{content:"Flut"}23%{content:"Flu"}23.5%{content:"Fl"}24%{content:"F"}24.5%,25%{content:""}25.5%{content:"M"}26%{content:"Mo"}26.5%{content:"Mob"}27%{content:"Mobi"}27.5%{content:"Mobil"}28%{content:"Mobile"}28.5%{content:"Mobile "}29%{content:"Mobile A"}29.5%{content:"Mobile Ap"}30%{content:"Mobile App"}30.5%{content:"Mobile App "}31%{content:"Mobile App E"}31.5%{content:"Mobile App En"}32%{content:"Mobile App Eng"}32.5%{content:"Mobile App Engi"}33%{content:"Mobile App Engin"}33.5%{content:"Mobile App Engine"}34%{content:"Mobile App Enginee"}34.5%,41.5%{content:"Mobile App Engineer"}42%{content:"Mobile App Enginee"}42.5%{content:"Mobile App Engine"}43%{content:"Mobile App Engin"}43.5%{content:"Mobile App Engi"}44%{content:"Mobile App Eng"}44.5%{content:"Mobile App En"}45%{content:"Mobile App E"}45.5%{content:"Mobile App "}46%{content:"Mobile App"}46.5%{content:"Mobile Ap"}47%{content:"Mobile A"}47.5%{content:"Mobile "}48%{content:"Mobile"}48.5%{content:"Mobil"}49%{content:"Mobi"}49.5%{content:"Mob"}50%{content:"Mo"}50.5%{content:"M"}51%,52%{content:""}52.5%{content:"F"}53%{content:"Fi"}53.5%{content:"Fir"}54%{content:"Fire"}54.5%{content:"Fireb"}55%{content:"Fireba"}55.5%{content:"Firebas"}56%{content:"Firebase"}56.5%{content:"Firebase "}57%{content:"Firebase S"}57.5%{content:"Firebase Sp"}58%{content:"Firebase Spe"}58.5%{content:"Firebase Spec"}59%{content:"Firebase Speci"}59.5%{content:"Firebase Specia"}60%{content:"Firebase Special"}60.5%{content:"Firebase Speciali"}61%{content:"Firebase Specialis"}61.5%,68.5%{content:"Firebase Specialist"}69%{content:"Firebase Specialis"}69.5%{content:"Firebase Speciali"}70%{content:"Firebase Special"}70.5%{content:"Firebase Specia"}71%{content:"Firebase Speci"}71.5%{content:"Firebase Spec"}72%{content:"Firebase Spe"}72.5%{content:"Firebase Sp"}73%{content:"Firebase S"}73.5%{content:"Firebase "}74%{content:"Firebase"}74.5%{content:"Firebas"}75%{content:"Fireba"}75.5%{content:"Fireb"}76%{content:"Fire"}76.5%{content:"Fir"}77%{content:"Fi"}77.5%{content:"F"}78%,79%{content:""}79.3%{content:"P"}79.6%{content:"Pr"}79.9%{content:"Pro"}80.2%{content:"Prod"}80.5%{content:"Produ"}80.8%{content:"Produc"}81.1%{content:"Product"}81.4%{content:"Producti"}81.7%{content:"Productio"}82%{content:"Production"}82.3%{content:"Production-"}82.6%{content:"Production-G"}82.9%{content:"Production-Gr"}83.2%{content:"Production-Gra"}83.5%{content:"Production-Grad"}83.8%{content:"Production-Grade"}84.1%{content:"Production-Grade "}84.4%{content:"Production-Grade U"}84.7%{content:"Production-Grade UI"}85%{content:"Production-Grade UI "}85.3%{content:"Production-Grade UI B"}85.6%{content:"Production-Grade UI Bu"}85.9%{content:"Production-Grade UI Bui"}86.2%{content:"Production-Grade UI Buil"}86.5%{content:"Production-Grade UI Build"}86.8%{content:"Production-Grade UI Builde"}87.1%,94.1%{content:"Production-Grade UI Builder"}94.4%{content:"Production-Grade UI Builde"}94.7%{content:"Production-Grade UI Build"}95%{content:"Production-Grade UI Build"}95.3%{content:"Production-Grade UI Buil"}95.6%{content:"Production-Grade UI Bui"}95.9%{content:"Production-Grade UI Bu"}96.2%{content:"Production-Grade UI B"}96.5%{content:"Production-Grade UI "}96.8%{content:"Production-Grade UI"}97.1%{content:"Production-Grade U"}97.4%{content:"Production-Grade "}97.7%{content:"Production-Grade"}98%{content:"Production-Grad"}98.3%{content:"Production-Gra"}98.6%{content:"Production-Gr"}98.9%{content:"Production-G"}99.2%{content:"Production-"}99.5%{content:"Production"}99.8%,to{content:""}}.scroll-progress-bar{z-index:99;background:linear-gradient(to right, var(--accent), #8b5cf6);border-radius:0;height:2px;transition:width .1s linear;position:absolute;top:0;left:0}.badge.badge-live{color:#34d399;background:#064e3b66;border-color:#10b981;box-shadow:0 0 10px #10b98140}.badge.badge-progress{color:#fbbf24;background:#78350466;border-color:#f59e0b;box-shadow:0 0 10px #f59e0b40}.badge.badge-featured{border-color:var(--accent);color:var(--accent-strong);background:#115e5966;box-shadow:0 0 14px #5eead473}#experience .stack-list{padding-left:24px;position:relative}#experience .stack-list:before{content:"";background:linear-gradient(to bottom, var(--accent), transparent);width:1px;position:absolute;top:0;bottom:0;left:-18px}#experience .stack-item{position:relative}#experience .stack-item:before{content:"";background:var(--accent);z-index:2;border-radius:50%;width:6px;height:6px;position:absolute;top:50%;left:-21px;transform:translateY(-50%);box-shadow:0 0 8px 2px #5eead480}
