:root{--pink:#ff1493;--yellow:#fff01f;--green:#0f0;--pink-rgb:255, 20, 147;--yellow-rgb:255, 240, 31;--green-rgb:0, 255, 0;--bg-dark:#0a0a0a;--bg-card:#1a1a1a;--bg-card-rgb:26, 26, 26;--chrome-bg:#0a0a0a;--chrome-text:#f5f5f5;--chrome-text-secondary:#f5f5f5b3;--chrome-border:#ffffff1a;--chrome-card-bg:#1a1a1af2;--text:#f5f5f5;--text-secondary:#f5f5f5b3;--border:#ffffff1a;--black:#000;--black-rgb:0, 0, 0;--white:#fff;--white-rgb:255, 255, 255;--error:#ef4444;--error-rgb:239, 68, 68;--pre-bg:#2d2d2d;--text-shadow-yellow:0 0 0 2px var(--bg-dark);--moon:#00bfff;--sun-icon:var(--yellow)}:root.light{--bg-dark:#f8f8f8;--bg-card:#fff;--chrome-bg:#0a0a0a;--chrome-text:#f5f5f5;--chrome-text-secondary:#f5f5f5b3;--chrome-border:#ffffff1a;--chrome-card-bg:#1a1a1af2;--pink-accessible:#c00f70;--green-accessible:#0b6e0b;--amber-accessible:#856200;--text:#000;--text-secondary:#222;--border:#00000014;--sun-icon:#f59e0b;--text-shadow-yellow:0 0 0 1.5px #00000080, 0 1px 2px #00000040}*{box-sizing:border-box;margin:0;padding:0}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}html{scroll-snap-type:none!important}.hero,.projects,.contact{scroll-snap-align:none!important;scroll-snap-stop:normal!important}}html{scroll-behavior:smooth;scroll-snap-type:y proximity;scrollbar-color:var(--pink) var(--bg-dark);scrollbar-width:thin}::selection{background:var(--moon);color:var(--black)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-dark)}::-webkit-scrollbar-thumb{background:var(--pink);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:linear-gradient(#fff3, #fff3), var(--pink)}body{background-color:var(--bg-dark);color:var(--text);font-family:Inter,Inter-fallback,system-ui,-apple-system,sans-serif;overflow-x:hidden}.app{min-height:100vh;overflow-x:hidden}main{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);overflow-x:hidden}.skip-link{background:var(--pink);color:#000;z-index:1000;border-radius:0 0 6px 6px;padding:.5rem 1rem;font-size:.875rem;font-weight:700;text-decoration:none;transition:top .2s;position:absolute;top:-100px;left:1rem}.skip-link:focus-visible{outline:2px solid var(--white);outline-offset:2px;top:0}.text-gradient{background:linear-gradient(135deg, var(--pink), var(--green));-webkit-text-fill-color:transparent;color:#0000;-webkit-background-clip:text;background-clip:text;display:inline-block}h1,h2,h3,h4,h5,h6{color:var(--pink);margin:0}.title-neon{text-shadow:0 0 0 2px var(--bg-dark), 0 0 10px rgba(var(--pink-rgb), .4), 0 0 20px rgba(var(--green-rgb), .2)}@media print{.navbar,.mobile-nav,.footer,.blog-post__back{display:none!important}body{color:#000;background:#fff}.blog-post{background:#fff;padding:0}.blog-post__content{color:#000;text-align:left;font-size:12pt;line-height:1.5}.blog-post__content a[href]:after{content:" (" attr(href) ")";color:#555;font-size:.8em}.blog-post__content pre{color:#000;background:#f9f9f9;border:1px solid #ccc}.blog-post__content code{color:#000;font-weight:600}}.container{width:100%;max-width:1400px;margin:0 auto;padding:0 1.5rem}.scroll-to-top,.btn-main{text-align:center;cursor:pointer;border-radius:4px;width:fit-content;min-width:min(180px,100%);margin-left:auto;margin-right:auto;padding:.75rem 2rem;font-size:.9rem;transition:all .3s;display:block}.scroll-to-top:hover,.btn-main:hover{box-shadow:0 5px 15px rgb(var(--black-rgb)/30%);transform:translateY(-2px)}.scroll-to-top:disabled,.btn-main:disabled{opacity:.5;cursor:not-allowed;transform:none}.loading-state{min-height:100vh;color:var(--yellow);text-shadow:var(--text-shadow-yellow);justify-content:center;align-items:center;font-weight:700;display:flex}.loading-placeholder{min-height:50vh}.logo-dots,.navbar__logo-flex,.footer__dots{flex-direction:row;align-items:center;gap:.5rem;display:flex}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.focus-ring:focus-visible{outline:2px solid var(--yellow);outline-offset:2px}@keyframes fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.reveal{opacity:0}.reveal.revealed{animation:.6s forwards fade-up}.navbar{z-index:1000;background-color:var(--chrome-bg);justify-content:center;transition:background-color .3s,color .3s,border-color .3s;display:flex;position:fixed;top:0;left:0;right:0}.navbar__content{align-items:center;width:100%;max-width:1400px;padding:1rem;display:flex}@media (min-width:640px){.navbar__content{padding:1.25rem 1.5rem}}@media (min-width:768px){.navbar__content{padding:1.25rem 2rem}}@media (min-width:1024px){.navbar__content{padding:1.25rem 3rem}}@media (min-width:1280px){.navbar__content{padding:1.25rem 50px}}.navbar__logo{cursor:pointer;gap:.375rem;text-decoration:none;display:flex}@media (min-width:640px){.navbar__logo{gap:.5rem}}.navbar__logo:focus-visible{outline:2px solid var(--pink);outline-offset:2px}.navbar__logo-dot{border-radius:9999px;width:.625rem;height:.625rem;transition:transform .3s}@media (min-width:640px){.navbar__logo-dot{width:.75rem;height:.75rem}}.navbar__logo-dot:hover{transform:scale(1.25)}.navbar__logo-dot--pink{background-color:var(--pink);box-shadow:0 0 10px #ff149366}.navbar__logo-dot--yellow{background-color:var(--yellow);box-shadow:0 0 10px #fff01f66}.navbar__logo-dot--green{background-color:var(--green);box-shadow:0 0 10px #0f06}.navbar__spacer{flex:1}.navbar__links{align-items:center;gap:1rem;display:none}@media (min-width:768px){.navbar__links{display:flex}}@media (min-width:1024px){.navbar__links{gap:2rem}}.navbar__link{color:var(--chrome-text);border-radius:6px;padding:.5rem 1rem;font-size:.85rem;font-weight:500;text-decoration:none;transition:color .3s}.navbar__link:focus-visible{outline-offset:2px;outline:2px solid}.navbar__link--pink:hover{color:var(--pink)}.navbar__link--pink:focus-visible{outline-color:var(--pink)}.navbar__link--yellow:hover{color:var(--yellow);text-shadow:0 0 0 2px var(--chrome-bg)}.navbar__link--yellow:focus-visible{outline-color:var(--yellow)}.navbar__link--yellow.is-active{color:var(--yellow);text-shadow:0 0 0 2px var(--chrome-bg)}.navbar__link--green:hover{color:var(--green)}.navbar__link--green:focus-visible{outline-color:var(--green)}.navbar__github{align-items:center;transition:color .3s;display:flex}.navbar__github:focus-visible{outline:2px solid var(--yellow);outline-offset:2px}.navbar__github svg{width:1.5rem;height:1.5rem;stroke:var(--pink);fill:none;transition:stroke .3s}.navbar__github:hover svg{stroke:var(--green)}.mobile-nav{z-index:1000;padding-bottom:env(safe-area-inset-bottom);display:block;position:fixed;bottom:0;left:0;right:0}@media (min-width:768px){.mobile-nav{display:none}}.mobile-nav__container{box-sizing:border-box;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);height:53px;box-shadow:0 -4px 15px rgba(var(--black-rgb), .3);border-top:1px solid var(--chrome-border);background-color:var(--chrome-card-bg);border-radius:0;margin:0;padding:.25rem .5rem;transition:all .3s}.mobile-nav__items{justify-content:space-around;align-items:center;width:100%;max-width:600px;margin:0 auto;display:flex}.mobile-nav__item{cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:.6rem .75rem;text-decoration:none;transition:all .2s;display:flex}.mobile-nav__item:active{transform:scale(.9)}.mobile-nav__item-icon{justify-content:center;align-items:center;width:1.6rem;height:1.6rem;transition:all .3s;display:flex}.mobile-nav__item-icon svg{width:100%;height:100%}.mobile-nav__item:active .mobile-nav__item-icon{transform:scale(1.1)}.mobile-nav__item--pink svg,.mobile-nav__item--pink:active svg{stroke:var(--pink)}.mobile-nav__item--yellow svg,.mobile-nav__item--yellow:active svg{stroke:var(--yellow)}.mobile-nav__item--green svg,.mobile-nav__item--green:active svg{stroke:var(--green)}.mobile-nav__item--blue svg,.mobile-nav__item--blue:active svg{stroke:var(--moon)}.mobile-nav__item .mobile-nav__item-label{color:var(--chrome-text);margin-left:.375rem;font-size:.75rem;font-weight:600;line-height:1}.mobile-nav__item.is-active{position:relative}.mobile-nav__item.is-active:after{content:"";border-radius:0 0 2px 2px;width:60%;height:3px;transition:background-color .3s;position:absolute;top:-2px;left:50%;transform:translate(-50%)}.mobile-nav__item--pink.is-active:after{background:var(--pink)}.mobile-nav__item--yellow.is-active:after{background:var(--yellow)}.mobile-nav__item--green.is-active:after{background:var(--green)}.mobile-nav__toggle-group{justify-content:center;align-items:center;padding:.4rem .6rem;display:flex}.mobile-nav__toggle-group-label{color:var(--chrome-text);margin-left:.375rem;font-size:.75rem;font-weight:600;line-height:1}.hero{scroll-snap-align:start;scroll-snap-stop:always;background-color:var(--bg-dark);justify-content:center;align-items:center;min-height:calc(100svh - 60px);padding:100px 1.5rem 40px;scroll-margin-top:0;transition:background-color .3s,color .3s,border-color .3s;display:flex;position:relative;overflow:hidden}@media (min-width:768px){.hero{min-height:calc(100svh - 80px)}}@media (min-width:640px){.hero{padding-left:2rem;padding-right:2rem}}@media (min-width:768px){.hero{padding-left:3rem;padding-right:3rem}}@media (min-width:1024px){.hero{padding-left:4rem;padding-right:4rem}}.hero__container{flex-direction:column;justify-content:center;align-items:center;gap:2rem;width:100%;max-width:1024px;display:flex}@media (min-width:640px){.hero__container{gap:2.5rem}}@media (min-width:768px){.hero__container{gap:3rem}}@media (min-width:1280px){.hero__container{flex-direction:row;gap:6rem}}.hero__image-wrapper{justify-content:center;align-items:center;display:flex}@media (min-width:1024px){.hero__image-wrapper{flex-shrink:0}}.hero__image-container{box-shadow:0 0 40px rgba(var(--pink-rgb), .3);background:0 0;border-radius:9999px;padding:0;transition:all .3s;position:relative}.hero__image-container:hover{box-shadow:0 0 50px rgba(var(--pink-rgb), .5);transform:scale(1.05)}.hero__image-frame{background-color:var(--bg-card);border-radius:9999px;justify-content:center;align-items:center;width:180px;height:180px;transition:background-color .3s,color .3s,border-color .3s;display:flex;overflow:hidden}@media (min-width:768px){.hero__image-frame{width:220px;height:220px}}@media (min-width:1024px){.hero__image-frame{width:260px;height:260px}}.hero__image{object-fit:contain;border-radius:9999px;width:calc(100% + 8px);height:calc(100% + 8px);margin:-4px}.hero__content{text-align:center;flex-direction:column;align-items:center;gap:1rem;width:100%;max-width:320px;display:flex}@media (min-width:640px){.hero__content{gap:1.25rem;max-width:420px}}@media (min-width:768px){.hero__content{gap:1.5rem;max-width:512px}}@media (min-width:1280px){.hero__content{padding-left:3rem}}.hero__title{font-size:1.5rem;font-weight:900}@media (min-width:640px){.hero__title{font-size:1.875rem}}@media (min-width:1024px){.hero__title{font-size:2.25rem}}.hero__handle{color:var(--pink);letter-spacing:.05em;font-size:1rem;font-weight:600}@media (min-width:640px){.hero__handle{font-size:1.125rem}}@media (min-width:1024px){.hero__handle{font-size:1.25rem}}.hero__subtitle{color:var(--text);font-size:1rem;font-weight:500;transition:color .3s}@media (min-width:640px){.hero__subtitle{font-size:1.125rem}}@media (min-width:1024px){.hero__subtitle{font-size:1.25rem}}.hero__bio{text-align:justify;color:var(--text-secondary);font-size:.875rem;line-height:1.625;transition:color .3s}@media (min-width:640px){.hero__bio{font-size:1rem}}.hero__tags{flex-wrap:wrap;justify-content:center;gap:.5rem;padding-top:.5rem;display:flex}@media (min-width:640px){.hero__tags{gap:.75rem;padding-top:.75rem}}.hero__tag{background-color:rgb(var(--white-rgb)/5%);border:1px solid #0000;border-radius:4px;padding:.375rem .75rem;font-size:.75rem;font-weight:500}@media (min-width:640px){.hero__tag{padding:.5rem 1rem;font-size:.875rem}}.hero__tag--pink{color:var(--pink)}.hero__tag--yellow{color:var(--yellow);text-shadow:var(--text-shadow-yellow)}.hero__tag--green{color:var(--green)}.hero__social{align-items:center;gap:1rem;display:flex}.hero__social-link{transition:transform .2s}.hero__social-link:focus-visible{outline:2px solid var(--yellow);outline-offset:4px}.hero__social-link svg{width:1.75rem;height:1.75rem;transition:all .3s}.hero__social-link--github svg{stroke:var(--green)}.hero__social-link--linkedin svg{fill:var(--moon)}.metric-badge{border:1px solid #0000;border-radius:9999px;flex-direction:column;align-items:center;gap:.125rem;padding:.375rem .75rem;font-size:.75rem;font-weight:500;transition:opacity .2s,transform .2s;display:inline-flex;position:relative}@media (min-width:640px){.metric-badge{padding:.5rem .875rem;font-size:.8125rem}}.metric-badge:hover{transform:translateY(-1px)}.metric-badge:after{content:attr(data-tooltip);max-width:220px;color:var(--text);background-color:var(--bg-card);border:1px solid var(--border);box-shadow:0 4px 12px rgba(var(--black-rgb), .4);white-space:normal;opacity:0;visibility:hidden;z-index:10;pointer-events:none;border-radius:6px;padding:.5rem .75rem;font-size:.75rem;line-height:1.4;transition:opacity .2s,visibility .2s,transform .2s;position:absolute;bottom:100%;left:50%;transform:translate(-50%)translateY(-.5rem)}.metric-badge:hover:after,.metric-badge:focus-visible:after{opacity:1;visibility:visible;transform:translate(-50%)translateY(-.5rem)}.metric-badge:focus{outline:none}.metric-badge:focus-visible{outline-offset:3px;outline:2px solid}.metric-badge--pink{color:var(--pink);box-shadow:0 0 12px rgba(var(--pink-rgb), .3)}.metric-badge--pink:after{border-left-color:var(--pink)}.metric-badge--yellow{color:var(--yellow);text-shadow:var(--text-shadow-yellow);box-shadow:0 0 12px rgba(var(--yellow-rgb), .3)}.metric-badge--green{color:var(--green);box-shadow:0 0 12px rgba(var(--green-rgb), .3)}.metric-badge__value{font-weight:700}.metric-badge__label{opacity:1;font-size:.6875rem;font-weight:500}@media (min-width:640px){.metric-badge__label{font-size:.75rem}}.projects{min-height:calc(100svh - 60px)}@media (min-width:768px){.projects{min-height:calc(100svh - 80px)}}.projects{scroll-snap-align:start;scroll-snap-stop:always;padding:max(40px, env(safe-area-inset-top)) max(1.5rem, env(safe-area-inset-right)) max(60px, env(safe-area-inset-bottom)) max(1.5rem, env(safe-area-inset-left));background-color:var(--bg-dark);justify-content:center;align-items:center;scroll-margin-top:80px;transition:background-color .3s,color .3s,border-color .3s;display:flex;overflow-x:hidden}@media (min-width:640px){.projects{padding-left:max(2rem, env(safe-area-inset-left));padding-right:max(2rem, env(safe-area-inset-right))}}@media (min-width:768px){.projects{padding-left:max(3.5rem, env(safe-area-inset-left));padding-right:max(3.5rem, env(safe-area-inset-right))}}@media (min-width:1024px){.projects{padding-left:max(4rem, env(safe-area-inset-left));padding-right:max(4rem, env(safe-area-inset-right))}}.projects__container{flex-direction:column;align-items:center;gap:2rem;width:100%;min-width:0;max-width:340px;display:flex}@media (min-width:640px){.projects__container{gap:2.5rem;max-width:448px}}@media (min-width:768px){.projects__container{gap:3rem;max-width:672px}}@media (min-width:1024px){.projects__container{max-width:896px}}.projects__title{text-align:center;font-size:1.5rem;font-weight:900}@media (min-width:640px){.projects__title{font-size:1.875rem}}@media (min-width:1024px){.projects__title{font-size:2.25rem}}.project-card{background-color:var(--bg-card);box-sizing:border-box;border:1px solid #0000;border-radius:8px;width:100%;min-width:0;max-width:48rem;padding:1.5rem;transition:background-color .3s,color .3s,border-color .3s,box-shadow .5s,transform .5s}@media (min-width:640px){.project-card{padding:2rem}}@media (min-width:768px){.project-card{padding:2.5rem}}@media (min-width:1024px){.project-card{padding:3.5rem}}.project-card:hover{box-shadow:0 0 30px rgba(var(--green-rgb), .5);transform:translateY(-4px)}.project-card__content{text-align:center;overflow-wrap:break-word;flex-direction:column;align-items:center;gap:1.25rem;width:100%;min-width:0;display:flex}@media (min-width:640px){.project-card__content{gap:1.5rem}}@media (min-width:768px){.project-card__content{gap:1.75rem}}.project-card__title,.project-card__description{min-width:0;max-width:100%}.project-card__featured{text-transform:uppercase;letter-spacing:.05em;color:var(--green);border:1px solid var(--green);box-shadow:0 0 12px rgba(var(--green-rgb), .4);border-radius:9999px;align-self:center;padding:.25rem .75rem;font-size:.6875rem;font-weight:700}@media (min-width:640px){.project-card__featured{font-size:.75rem}}.project-card__featured--wip{color:var(--green);border-color:var(--green);box-shadow:0 0 12px rgba(var(--green-rgb), .4);text-shadow:0 0 0 2px var(--bg-dark)}.project-card__metrics{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}@media (min-width:640px){.project-card__metrics{gap:.75rem}}.project-card__actions{justify-content:center;width:100%;min-width:0;display:flex}.project-card__details-link{max-width:100%;color:var(--green);font-size:.875rem;font-weight:600;text-decoration:none;transition:color .2s,box-shadow .2s}.project-card__details-link:hover{color:var(--yellow);text-decoration:underline}.project-card__details-link:focus-visible{outline:2px solid var(--green);outline-offset:4px}.project-card__links{flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;width:100%;min-width:0;display:flex}.project-card__title{font-size:1.25rem;font-weight:700}@media (min-width:640px){.project-card__title{font-size:1.5rem}}.project-card__description{color:var(--text);text-align:justify;font-size:.875rem;line-height:1.625;transition:color .3s}@media (min-width:640px){.project-card__description{font-size:1rem}}.project-card__stack{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}@media (min-width:640px){.project-card__stack{gap:.75rem}}.project-card__tech{border-radius:10px;padding:.25rem .625rem;font-size:.75rem;font-weight:500}@media (min-width:640px){.project-card__tech{padding:.375rem .75rem;font-size:.875rem}}.project-card__tech--pink{color:var(--pink)}.project-card__tech--yellow{color:var(--yellow);text-shadow:var(--text-shadow-yellow)}.project-card__tech--green{color:var(--green)}.project-card__link{border-radius:9999px;min-width:0;max-width:100%;padding:.75rem 1.5rem;font-size:.9rem;font-weight:600;text-decoration:none;transition:all .3s;display:inline-block}@media (min-width:640px){.project-card__link{padding:.875rem 2rem;font-size:1rem}}.project-card__link:focus-visible{outline:2px solid var(--yellow);outline-offset:4px}.project-card__link--primary{color:var(--black);background-color:var(--yellow)}.project-card__link--primary:hover{box-shadow:0 8px 30px rgba(var(--pink-rgb), .6)}.project-card__link--secondary{color:var(--black);background-color:var(--yellow);border:1px solid #0000}.project-card__link--secondary:hover{box-shadow:0 8px 30px rgba(var(--pink-rgb), .6)}.project-page{min-height:calc(100svh - 60px)}@media (min-width:768px){.project-page{min-height:calc(100svh - 80px)}}.project-page{padding:max(2rem, env(safe-area-inset-top)) max(1.5rem, env(safe-area-inset-right)) max(2rem, env(safe-area-inset-bottom)) max(1.5rem, env(safe-area-inset-left));padding-bottom:calc(max(2rem, env(safe-area-inset-bottom)) + 5.5rem);scroll-margin-top:80px;overflow-x:hidden}@media (min-width:640px){.project-page{padding:max(3rem, env(safe-area-inset-top)) max(2rem, env(safe-area-inset-right)) max(3rem, env(safe-area-inset-bottom)) max(2rem, env(safe-area-inset-left))}}@media (min-width:768px){.project-page{padding-top:max(4.5rem, env(safe-area-inset-top));padding-bottom:calc(max(3rem, env(safe-area-inset-bottom)) + 4.5rem)}}.project-page__container{min-width:0;max-width:720px;margin:0 auto}.project-page__back{min-height:44px;color:var(--text-secondary);margin-bottom:1.5rem;margin-left:-.5rem;padding:.75rem 1rem;scroll-margin-top:5rem;line-height:1.4;text-decoration:none;transition:color .2s;display:inline-block}.project-page__back:hover{color:var(--pink)}.project-page__back:focus-visible{outline:2px solid var(--pink);outline-offset:4px}.project-page__header{margin-bottom:1.5rem}.project-page__title{margin-bottom:.5rem;font-size:1.75rem;font-weight:700}@media (min-width:640px){.project-page__title{font-size:2rem}}.project-page__tagline{color:var(--text-secondary);margin-bottom:1rem;font-size:1rem}.project-page__description{text-align:justify;margin-bottom:1rem;font-size:.9375rem;line-height:1.65}.project-page__description .project-page__keyword{color:var(--green);font-weight:700}.project-page__meta{color:var(--text-secondary);font-size:.875rem}.project-page__stack{flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem;display:flex}.project-page__tech{color:var(--pink);border:1px solid rgba(var(--pink-rgb), .4);border-radius:9999px;padding:.25rem .625rem;font-size:.8125rem}.project-page__metrics,.project-page__section{margin-bottom:1.5rem}.project-page__section-title{margin-bottom:.5rem;font-size:1rem;font-weight:600}.project-page__metrics ul,.project-page__list{margin:0;padding-left:1.25rem;font-size:.9375rem;line-height:1.6}.project-page__text{color:var(--text-secondary);margin:0;font-size:.9375rem;line-height:1.65}.project-page__challenges{gap:1rem;display:grid}.project-page__challenge{border:1px solid var(--border);background-color:var(--bg-card);border-radius:8px;padding:1rem}.project-page__challenge h3{margin:0 0 .5rem;font-size:.975rem}.project-page__challenge p{color:var(--text-secondary);margin:.5rem 0 0;font-size:.9375rem;line-height:1.6}.project-page__challenge strong{color:var(--text)}.project-page__links{flex-wrap:wrap;gap:.75rem;display:flex}.project-page__link{color:var(--black);background-color:var(--yellow);border-radius:9999px;padding:.75rem 1.5rem;font-size:.9rem;font-weight:600;text-decoration:none;transition:box-shadow .2s;display:inline-block}.project-page__link:hover{box-shadow:0 4px 20px rgba(var(--pink-rgb), .5)}.project-page__link:focus-visible{outline:2px solid var(--yellow);outline-offset:4px}.project-page__link--secondary{color:var(--text);border:1px solid var(--border);background-color:#0000}.project-page__link--secondary:hover{color:var(--green);box-shadow:0 0 18px rgba(var(--green-rgb), .25)}.blog-list{min-height:calc(100svh - 60px)}@media (min-width:768px){.blog-list{min-height:calc(100svh - 80px)}}.blog-list{background-color:var(--bg-dark);justify-content:center;padding:120px 1.5rem 80px;transition:background-color .3s,color .3s,border-color .3s;display:flex}@media (min-width:640px){.blog-list{padding-left:2rem;padding-right:2rem}}@media (min-width:768px){.blog-list{padding-left:3rem;padding-right:3rem}}@media (min-width:1024px){.blog-list{padding-left:4rem;padding-right:4rem}}.blog-list__container{width:100%;max-width:56rem}.blog-list__title{text-align:center;margin-bottom:1rem;font-size:1.875rem;font-weight:900;transition:color .3s}@media (min-width:640px){.blog-list__title{font-size:2.25rem}}@media (min-width:1024px){.blog-list__title{font-size:3rem}}.blog-list__subtitle{text-align:center;max-width:32rem;color:var(--text-secondary);margin-bottom:3rem;margin-left:auto;margin-right:auto;font-size:.875rem;transition:color .3s}@media (min-width:640px){.blog-list__subtitle{font-size:1rem}}.blog-list__empty{text-align:center;padding-top:4rem;padding-bottom:4rem}.blog-list__empty-text{color:var(--text-secondary);margin-bottom:1rem;font-size:1.125rem}.blog-list__empty-subtext{color:var(--text-secondary);font-size:.875rem}.blog-list__grid{flex-direction:column;gap:2rem;display:flex}.blog-card{border:1px solid var(--border);background-color:var(--bg-card);border-radius:.5rem;padding:1.5rem;text-decoration:none;transition:background-color .3s,color .3s,border-color .3s,transform .3s,box-shadow .3s;display:block}@media (min-width:640px){.blog-card{padding:2rem}}.blog-card:hover{box-shadow:0 8px 30px rgba(var(--green-rgb), .15);border-color:rgba(var(--green-rgb), .5);transform:translateY(-3px)}.blog-card__content{flex-direction:column;gap:1rem;display:flex}.blog-card__image{object-fit:contain;object-position:center;border-radius:.25rem;width:100%;height:auto;max-height:14rem}.blog-card__meta{color:var(--text-secondary);align-items:center;gap:.75rem;font-size:.75rem;display:flex}.blog-card__tags{gap:.5rem;display:flex}.blog-card__title{font-size:1.25rem;font-weight:700;transition:color .3s;display:block}@media (min-width:640px){.blog-card__title{font-size:1.5rem}}.blog-card:hover .blog-card__title{color:var(--green)}.blog-card__description{color:var(--text-secondary);font-size:.875rem;line-height:1.625}@media (min-width:640px){.blog-card__description{font-size:1rem}}.blog-card__link{color:var(--yellow);font-size:.875rem;font-weight:500;transition:background-color .3s,color .3s,border-color .3s}.blog-post{min-height:calc(100svh - 60px)}@media (min-width:768px){.blog-post{min-height:calc(100svh - 80px)}}.blog-post{background-color:var(--bg-dark);justify-content:center;padding:120px 1.5rem 80px;transition:background-color .3s;display:flex}@media (min-width:640px){.blog-post{padding-left:2rem;padding-right:2rem}}@media (min-width:768px){.blog-post{padding-left:3rem;padding-right:3rem}}@media (min-width:1024px){.blog-post{padding-left:4rem;padding-right:4rem}}.blog-post__container{width:100%;max-width:48rem}.blog-post__back{color:var(--text-secondary);align-items:center;gap:.5rem;margin-bottom:3rem;font-size:.875rem;text-decoration:none;transition:color .3s;display:inline-flex}.blog-post__back:hover{color:var(--green)}.blog-post__article{background-color:var(--bg-card);padding:1.5rem;transition:background-color .3s}@media (min-width:640px){.blog-post__article{padding:2rem}}@media (min-width:768px){.blog-post__article{padding:2.5rem}}.blog-post__header{margin-bottom:4rem}.blog-post__image{object-fit:contain;object-position:center;border-radius:.5rem;width:100%;height:auto;max-height:28rem;margin-bottom:2rem}.blog-post__title{margin-bottom:1.5rem;font-size:1.25rem;font-weight:900;line-height:1.25;display:block}@media (min-width:640px){.blog-post__title{font-size:1.5rem}}@media (min-width:1024px){.blog-post__title{font-size:1.75rem}}.blog-post__meta{color:var(--text-secondary);align-items:center;gap:.75rem;font-size:.875rem;display:flex}.blog-post__meta time{align-items:center;display:inline-flex}.blog-post__meta span{display:inline-block}.blog-post__content{color:var(--text);text-align:justify;font-size:.875rem;line-height:1.625}@media (min-width:640px){.blog-post__content{font-size:1rem}}.blog-post__content h1,.blog-post__content h2,.blog-post__content h3,.blog-post__content h4,.blog-post__content h5,.blog-post__content h6{text-align:left;margin-top:2rem;margin-bottom:1rem}.blog-post__content p{margin-bottom:1rem}.blog-post__content ul,.blog-post__content ol{margin-bottom:1rem;padding-left:1.5rem}.blog-post__content li{margin-bottom:.5rem}.blog-post__content code{color:var(--green);font-weight:600}:root.light .blog-post__content code{text-shadow:1px 1px 1px #0003}.blog-post__content strong{color:var(--green);font-weight:700}:root.light .blog-post__content strong{text-shadow:1px 1px 1px #0003}.blog-post__content pre{background-color:var(--pre-bg);border-radius:.5rem;margin-bottom:1rem;padding:1rem;overflow-x:auto}.blog-post__content a{color:var(--green);text-decoration:none}.blog-post__content a:hover{color:var(--yellow);text-shadow:var(--text-shadow-yellow)}.blog-post__error{flex-direction:column;justify-content:center;align-items:center;gap:1rem;min-height:100vh;padding:1.5rem;display:flex}.blog-post__error-text{color:var(--pink);font-size:1.25rem}.blog-post__error-link{color:var(--green);text-decoration:none}.blog-post__error-link:hover{color:var(--yellow);text-shadow:var(--text-shadow-yellow)}.contact{min-height:calc(100svh - 60px)}@media (min-width:768px){.contact{min-height:calc(100svh - 80px)}}.contact{background-color:var(--bg-dark);justify-content:center;align-items:flex-start;padding:60px 1.5rem 80px;scroll-margin-top:80px;display:flex}@media (min-width:640px){.contact{padding-left:2rem;padding-right:2rem}}@media (min-width:768px){.contact{padding-left:3rem;padding-right:3rem}}@media (min-width:1024px){.contact{padding-left:4rem;padding-right:4rem}}.contact__container{flex-direction:column;align-items:center;gap:1.5rem;width:100%;max-width:320px;display:flex}@media (min-width:640px){.contact__container{gap:2rem;max-width:448px}}@media (min-width:768px){.contact__container{max-width:512px}}@media (min-width:1024px){.contact__container{max-width:576px}}.contact__title{text-align:center;font-size:1.5rem;font-weight:900}@media (min-width:640px){.contact__title{font-size:1.875rem}}@media (min-width:1024px){.contact__title{font-size:2.25rem}}.contact__description{text-align:center;max-width:32rem;color:var(--text-secondary);padding:0 .5rem;font-size:.875rem}@media (min-width:640px){.contact__description{padding:0;font-size:1rem}}.contact__form{background-color:var(--bg-card);border:1px solid #0000;border-radius:8px;width:100%;padding:1rem}@media (min-width:640px){.contact__form{padding:1.5rem}}@media (min-width:768px){.contact__form{padding:2rem}}@media (min-width:1024px){.contact__form{padding:2.5rem}}.contact__fields{flex-direction:column;gap:1.25rem;display:flex}@media (min-width:640px){.contact__fields{gap:1.5rem}}@media (min-width:768px){.contact__fields{gap:2rem}}.contact__cv{border:1px solid var(--yellow);width:fit-content;min-width:200px;color:var(--yellow);border-radius:9999px;justify-content:center;align-items:center;gap:.5rem;margin:0 auto .5rem;padding:.75rem 1.5rem;font-size:.9rem;font-weight:700;text-decoration:none;display:inline-flex}@media (min-width:640px){.contact__cv{padding:.875rem 2rem;font-size:1rem}}.contact__cv:hover{background-color:rgba(var(--yellow-rgb), .08);box-shadow:0 8px 30px rgba(var(--pink-rgb), .25)}.contact__cv:focus-visible{outline:2px solid var(--yellow);outline-offset:4px}.contact__group{flex-direction:column;gap:.75rem;display:flex}.contact__label{font-size:.875rem;font-weight:600}.contact__label--name{color:var(--pink)}.contact__label--email{color:var(--yellow)}.contact__label--message{color:var(--green)}.contact__input,.contact__textarea{background-color:var(--bg-card);width:100%;color:var(--text);border:1px solid #0000;outline:none;padding:.75rem 1rem}.contact__input::placeholder,.contact__textarea::placeholder{opacity:.5}.contact__input--name{border-color:rgba(var(--pink-rgb), .3)}.contact__input--name:focus{border-color:var(--pink);box-shadow:0 0 0 2px rgba(var(--pink-rgb), .2)}.contact__input--email{border-color:rgba(var(--yellow-rgb), .3)}.contact__input--email:focus{border-color:var(--yellow);box-shadow:0 0 0 2px rgba(var(--yellow-rgb), .2)}.contact__textarea--message{border-color:rgba(var(--green-rgb), .3);resize:none}.contact__textarea--message:focus{border-color:var(--green);box-shadow:0 0 0 2px rgba(var(--green-rgb), .2)}.contact__submit{width:fit-content;min-width:200px;color:var(--black);background-color:var(--yellow);cursor:pointer;border:none;border-radius:9999px;margin:1rem auto 0;padding:.75rem 1.5rem;font-size:.9rem;font-weight:700}@media (min-width:640px){.contact__submit{padding:.875rem 2rem;font-size:1rem}}.contact__submit:hover:not(:disabled){box-shadow:0 8px 30px rgba(var(--pink-rgb), .6)}.contact__submit:disabled{opacity:.5;cursor:not-allowed}.contact__submit-content{justify-content:center;align-items:center;gap:.5rem;display:flex}.contact__status{border:1px solid;align-items:center;gap:.75rem;padding:1rem;display:flex}.contact__status--success{background-color:rgba(var(--green-rgb), .2);border-color:var(--green);color:var(--green);font-weight:600}.contact__status--error{background-color:rgba(var(--error-rgb), .2);border-color:var(--error);color:var(--error);font-weight:600}.spinner{width:1.25rem;height:1.25rem;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.footer{z-index:1000;background-color:var(--chrome-bg);justify-content:center;transition:background-color .3s,color .3s,border-color .3s;display:none;position:fixed;bottom:0;left:0;right:0}@media (min-width:768px){.footer{display:flex}}.footer__content{justify-content:space-between;align-items:center;width:100%;max-width:1400px;padding:.75rem 1rem;display:flex}@media (min-width:640px){.footer__content{padding:1rem 1.5rem}}@media (min-width:768px){.footer__content{padding:1rem 2rem}}@media (min-width:1024px){.footer__content{padding:1rem 3rem}}@media (min-width:1280px){.footer__content{padding:1rem 50px}}.footer__github{align-items:center;display:flex}.footer__github:focus-visible{outline:2px solid var(--pink);outline-offset:2px}.footer__github svg{width:1.5rem;height:1.5rem;stroke:var(--pink);fill:none;transition:all .3s}.footer__github:hover svg{stroke:var(--green)}.footer__text{text-align:center;color:var(--chrome-text-secondary);font-size:.75rem}@media (min-width:768px){.footer__text{font-size:.875rem}}.footer__dots{gap:.5rem;display:flex}.footer__dot{cursor:pointer;border-radius:9999px;width:.625rem;height:.625rem;transition:transform .3s}@media (min-width:768px){.footer__dot{width:.75rem;height:.75rem}}.footer__dot:hover{transform:scale(1.25)}.footer__dot--pink{background-color:var(--pink);box-shadow:0 0 10px #ff149366}.footer__dot--yellow{background-color:var(--yellow);box-shadow:0 0 10px #fff01f66}.footer__dot--green{background-color:var(--green);box-shadow:0 0 10px #0f06}.theme-toggle{cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:.5rem;transition:transform .2s;display:flex;position:relative}.theme-toggle:focus-visible{outline:2px solid var(--yellow);outline-offset:2px}.theme-toggle:active{transform:scale(.95)}.theme-toggle__icon{fill:none;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:1.5rem;height:1.5rem;transition:all .3s}.theme-toggle__icon--sun{stroke:var(--yellow)}:root.light .theme-toggle__icon--sun{stroke:var(--sun-icon)}.theme-toggle:hover .theme-toggle__icon--sun{transform:rotate(45deg)}.theme-toggle__icon--sun.is-visible{opacity:1;transform:scale(1)rotate(0)}.theme-toggle__icon--sun.is-hidden{opacity:0;position:absolute;transform:scale(0)rotate(-90deg)}.theme-toggle__icon--moon{stroke:var(--moon)}.theme-toggle__icon--moon.is-visible{opacity:1;transform:scale(1)rotate(0)}.theme-toggle__icon--moon.is-hidden{opacity:0;position:absolute;transform:scale(0)rotate(90deg)}.error-boundary{background-color:var(--bg-dark);height:100vh;color:var(--text);text-align:center;justify-content:center;align-items:center;padding:2rem;display:flex}.error-boundary .error-content{max-width:500px}.error-boundary .error-content .error-icon{color:var(--pink);text-shadow:0 0 7px var(--pink), 0 0 10px var(--pink), 0 0 21px var(--pink), 0 0 42px var(--pink), 0 0 82px var(--pink), 0 0 92px var(--pink);margin-bottom:1rem;font-size:8rem;font-weight:900;display:block}.error-boundary .error-content h1{color:var(--pink);text-shadow:0 0 7px var(--pink), 0 0 10px var(--pink);margin-bottom:1rem;font-family:Inter,sans-serif;font-size:2rem;font-weight:700}.error-boundary .error-content p{color:var(--text-secondary);margin-bottom:2rem;line-height:1.6}.error-boundary .error-content .btn-main{box-shadow:0 0 7px var(--pink), 0 0 10px var(--pink)}.error-boundary .error-content .error-details{background:var(--bg-card);border:1px solid rgba(var(--pink-rgb), .2);color:var(--yellow);text-shadow:var(--text-shadow-yellow);text-align:left;border-radius:8px;margin-top:2rem;padding:1rem;font-family:monospace;font-size:.8rem;overflow-x:auto}@keyframes skeleton-pulse{0%,to{opacity:.4}50%{opacity:.8}}.skeleton{background:linear-gradient(90deg, var(--bg-card) 25%, #ffffff08 50%, var(--bg-card) 75%);background-size:200% 100%;border-radius:4px;min-height:1em;animation:1.5s ease-in-out infinite skeleton-pulse}.blog-card--skeleton,.project-card--skeleton{pointer-events:none;opacity:.6}.scroll-to-top{bottom:calc(4.5rem + env(safe-area-inset-bottom,0px));position:fixed;right:2rem}@media (min-width:768px){.scroll-to-top{bottom:calc(5.5rem + env(safe-area-inset-bottom,0px))}}.scroll-to-top{z-index:999;opacity:0;pointer-events:none;width:48px;height:48px;min-width:unset;background:var(--yellow);color:var(--black);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:1.25rem;transition:opacity .3s;display:flex}.scroll-to-top:focus-visible{outline:2px solid var(--yellow);outline-offset:2px}@media print{.scroll-to-top{display:none}}.scroll-to-top--visible{opacity:1;pointer-events:auto}.not-found{background-color:var(--bg-dark);justify-content:center;align-items:center;height:100svh;padding:2rem;display:flex;position:relative;overflow:hidden}.not-found__glow{background:radial-gradient(circle, rgba(var(--pink-rgb), .15) 0%, transparent 70%);pointer-events:none;border-radius:50%;width:600px;height:600px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.not-found__content{text-align:center;max-width:480px;position:relative}.not-found__number{color:#0000;-webkit-text-stroke:2px var(--pink);text-shadow:0 0 5px var(--pink), 0 0 10px var(--pink), 0 0 20px var(--pink), 0 0 35px var(--pink);font-size:clamp(6rem,15vw,12rem);font-weight:900;line-height:1;display:block}.not-found__title{color:var(--text);text-shadow:0 0 7px rgba(var(--pink-rgb), .4), 0 0 20px rgba(var(--pink-rgb), .2);margin-top:.5rem;margin-bottom:1rem;font-size:clamp(1.5rem,4vw,2.5rem);font-weight:700}.not-found__text{color:var(--text-secondary);margin-bottom:2.5rem;line-height:1.7}.not-found__btn{color:var(--black);background:var(--pink);border:none;border-radius:9999px;align-items:center;gap:.5rem;padding:.75rem 2rem;font-size:1rem;font-weight:700;text-decoration:none;transition:box-shadow .3s,transform .2s;display:inline-flex}.not-found__btn:hover{box-shadow:0 0 15px var(--pink), 0 0 30px var(--pink), 0 0 60px var(--pink);transform:scale(1.05)}:root.light body{background-color:var(--bg-dark);color:var(--text);background-image:radial-gradient(#0000000f .5px,#0000 .5px);background-size:40px 40px;background-attachment:fixed}:root.light .project-card,:root.light .blog-card,:root.light .blog-post__article,:root.light .contact__form{border-color:var(--border);box-shadow:0 10px 25px -5px rgba(var(--pink-rgb), .1), 0 8px 10px -6px rgba(var(--pink-rgb), .1);background-color:#fff;border-radius:8px}:root.light .project-card:hover,:root.light .blog-card:hover,:root.light .blog-post__article:hover,:root.light .contact__form:hover{border-color:var(--pink);box-shadow:0 15px 30px -5px rgba(var(--pink-rgb), .2)}:root.light h1,:root.light h2,:root.light h3,:root.light h4,:root.light h5,:root.light h6,:root.light .blog-card__title,:root.light .blog-post__title{color:var(--text)}:root.light .text-gradient{background:linear-gradient(90deg, var(--pink), #0e8a0e);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}:root.light .navbar{background-color:var(--chrome-bg)}:root.light .hero__tag:nth-child(3n+1){background-color:var(--pink);color:#000}:root.light .hero__tag:nth-child(3n+2){background-color:var(--yellow);color:#000}:root.light .hero__tag:nth-child(3n+3){background-color:var(--green);color:#000}:root.light .project-card__tech:nth-child(3n+1){background-color:var(--pink);color:#000}:root.light .project-card__tech:nth-child(3n+2){background-color:var(--yellow);color:#000}:root.light .project-card__tech:nth-child(3n+3){background-color:var(--green);color:#000}:root.light .contact__input,:root.light .contact__textarea{color:var(--text);border-color:var(--border);background-color:#fff}:root.light .contact__input:focus,:root.light .contact__textarea:focus{border-color:var(--text);box-shadow:0 0 0 4px #0000000d}:root.light .title-neon{color:var(--pink);text-shadow:none;border-bottom:none}:root.light .blog-card__link{color:#856200;text-shadow:none}:root.light .blog-card__link:hover{color:#8f6b00;text-shadow:0 1px 0 #00000073, var(--text-shadow-yellow)}:root.light .metric-badge{border-color:#0003}:root.light .metric-badge--pink{color:#d11072;border-color:rgba(var(--pink-rgb), .5)}:root.light .metric-badge--yellow{color:#856200;text-shadow:var(--text-shadow-yellow);border-color:#00000059}:root.light .metric-badge--green{color:#0e8a0e;border-color:rgba(var(--green-rgb), .4)}:root.light .project-card__featured{color:#0e8a0e;border-color:#0e8a0e}:root.light .project-card__details-link{color:#0e8a0e}:root.light .project-card__tech--pink{color:#d11072}:root.light .project-card__tech--green{color:#0e8a0e}:root.light .project-card__tech--yellow{background-color:var(--yellow);color:#000;text-shadow:none}:root.light .contact__cv{color:#856200;text-shadow:none;border-color:#856200}:root.light p{color:var(--text-secondary)}:root.light .hero__handle{color:#c00f70}:root.light .hero__social-link svg{color:var(--text);opacity:.7}:root.light .hero__social-link svg:hover{opacity:1}:root.light .footer{background-color:var(--chrome-bg)}:root.light .footer a,:root.light .footer span,:root.light .footer .footer__text{color:var(--chrome-text-secondary)}:root.light .footer svg{stroke:var(--pink)}:root.light .contact__label--name{color:#c00f70}:root.light .contact__label--email{color:#856200}:root.light .contact__label--message{color:#0b6e0b}:root.light .contact__input::placeholder,:root.light .contact__textarea::placeholder{color:#595959;opacity:1}:root.light .contact__status--success{color:#0a5c0a}:root.light .contact__status--error{color:#b91c1c}:root.light .blog-post__content a{color:#0b6e0b}:root.light .blog-post__content a:hover{color:#856200;text-shadow:none}:root.light .blog-post__content code,:root.light .blog-post__content strong{color:#0b6e0b;text-shadow:none}:root.light .blog-post__back:hover{color:#0b6e0b}:root.light .blog-post__error-text{color:#c00f70}:root.light .blog-post__error-link{color:#0b6e0b}:root.light .blog-post__error-link:hover{color:#856200;text-shadow:none}:root.light .project-page__back:hover{color:#c00f70}:root.light .project-page__keyword{color:#0b6e0b}:root.light .project-page__tech{color:#c00f70}:root.light .project-page__link--secondary:hover{color:#0b6e0b}:root.light .loading-state,:root.light .error-details{color:#856200;text-shadow:none}
