.wordmark[data-astro-cid-hhuuaa7r]{height:30px;width:auto}.wm-ink[data-astro-cid-hhuuaa7r]{fill:var(--text-color);transition:var(--transition-text)}.wm-paper[data-astro-cid-hhuuaa7r]{fill:var(--bg-color);transition:var(--transition-bg)}.site-footer[data-astro-cid-sz7xmlte]{display:flex;flex-direction:column;align-items:center;gap:12px;padding-block:0 48px;text-align:center}.cat-bed[data-astro-cid-sz7xmlte]{position:relative;width:204px;height:64px;margin-bottom:12px;.pillow[data-astro-cid-sz7xmlte]{position:absolute;bottom:0;left:0;width:204px;height:46px;image-rendering:pixelated}.spot-max[data-astro-cid-sz7xmlte],.spot-nina[data-astro-cid-sz7xmlte]{position:absolute;bottom:28px;z-index:1}.spot-max[data-astro-cid-sz7xmlte]{left:28px;width:76px;height:34px}.spot-nina[data-astro-cid-sz7xmlte]{left:104px;width:70px;height:64px}}.site-footer[data-astro-cid-sz7xmlte] p[data-astro-cid-sz7xmlte]{margin:0;font-size:.8rem;color:var(--text-description-color);transition:var(--transition-text)}.cat{position:fixed;top:0;left:0;z-index:10;pointer-events:none;will-change:transform}.cat canvas{display:block;width:100%;height:100%;image-rendering:pixelated}.cat.docked{position:absolute;top:auto;bottom:0;left:50%;transform:translate(-50%);will-change:auto}.cat.max{pointer-events:auto}.cat.nina{pointer-events:auto;cursor:grab;touch-action:none}.cat.held{cursor:grabbing}.cat-heart{position:fixed;z-index:11;font-size:.875rem;line-height:1;color:#ff5c8a;pointer-events:none;animation:float 1s ease-out forwards}.cat-laser{position:fixed;top:-5px;left:-5px;z-index:11;width:10px;height:10px;border-radius:50%;background-color:#ff2d2d;box-shadow:0 0 10px 3px #ff2d2d99;pointer-events:none;transition:translate .25s ease-out;animation:jitter .12s steps(2) infinite}.cat[data-mode=sleep]:after{content:"z";position:absolute;bottom:36px;right:6px;font-size:.75rem;font-weight:700;line-height:1;color:var(--text-color);animation:snore 2.4s ease-in-out infinite}.cat.max[data-mode=sleep]:after{right:auto;left:4px}.cat.max[data-mode=peek]:after{content:"…";position:absolute;bottom:36px;left:6px;font-size:.875rem;font-weight:700;line-height:1;color:var(--text-color)}.cat.nina[data-mode=bug] canvas{animation:poke .6s steps(2) infinite}@keyframes snore{0%{opacity:0;transform:translateY(6px)}30%{opacity:1}to{opacity:0;transform:translate(6px,-10px)}}@keyframes float{to{opacity:0;transform:translateY(-28px)}}@keyframes poke{50%{transform:translate(-2px,-2px)}}@keyframes jitter{to{transform:translate(1px,-1px)}}@media(prefers-reduced-motion:reduce){.cat[data-mode=sleep]:after,.cat.nina[data-mode=bug] canvas{animation:none}}label[data-astro-cid-yyktn5se]{--padding: 4px;display:inline-block;position:relative;width:50px;height:24px;padding:var(--padding);cursor:pointer;& input[data-astro-cid-yyktn5se]{opacity:0;width:0;height:0}.toggle-thumb[data-astro-cid-yyktn5se]{--toggle-gap: 8px;position:absolute;inset:0;display:flex;justify-content:space-between;align-items:center;gap:var(--toggle-gap);background-color:var(--bg-toggle-thumb);border-radius:var(--radius);overflow:hidden;transition:var(--transition-bg);&.active:before{--offset: calc(var(--padding) / 2);translate:calc(var(--size) + var(--toggle-gap) + var(--offset))}&[data-astro-cid-yyktn5se]:before{--size: 16px;content:"";position:absolute;top:calc(var(--toggle-gap) / 2);left:calc(var(--toggle-gap) / 2);width:var(--size);height:var(--size);border-radius:50%;background-color:var(--text-color);transition:translate .3s ease,var(--transition-bg)}& svg[data-astro-cid-yyktn5se]{&[data-astro-cid-yyktn5se]:nth-child(odd){translate:calc(var(--toggle-gap) / 2)}&[data-astro-cid-yyktn5se]:nth-child(2n){translate:calc((var(--toggle-gap) / 2) * -1)}}}}nav[data-astro-cid-5blmo7yk]#menu{background-color:color-mix(in srgb,var(--bg-color),transparent 30%);backdrop-filter:blur(12px);padding-block:1rem;padding-inline:var(--mobile-inline-padding);text-align:right;position:sticky;top:0;z-index:1;@media(width>=768px){background:none;backdrop-filter:none;padding:0;top:36px;text-align:initial}& ul[data-astro-cid-5blmo7yk]{display:none;@media(width>=768px){--gap: 35px;background-color:color-mix(in srgb,var(--text-color) 6%,transparent);backdrop-filter:blur(12px);display:flex;align-items:center;gap:var(--gap);margin:36px auto 0;width:fit-content;padding:12px 28px;border-radius:1000px;box-shadow:0 8px 30px #0000001f;transition:var(--transition-bg);& li[data-astro-cid-5blmo7yk]{position:relative;.language[data-astro-cid-5blmo7yk]{display:flex;align-items:center;gap:4px;& span[data-astro-cid-5blmo7yk]:first-child{line-height:0}}}& a[data-astro-cid-5blmo7yk]{--hover-color: color-mix( in srgb, var(--text-color), var(--bg-color) 40% );color:var(--text-color);text-decoration:none;transition:var(--transition-text);&.active{color:var(--hover-color)}&[data-astro-cid-5blmo7yk]:active,&[data-astro-cid-5blmo7yk]:focus{color:var(--hover-color)}&[data-astro-cid-5blmo7yk]:focus-visible{outline:2px solid var(--text-color);outline-offset:5px}@media(any-hover:hover){&[data-astro-cid-5blmo7yk]:hover{color:var(--hover-color)}}}}}& button[data-astro-cid-5blmo7yk]{--hover-color: color-mix(in srgb, var(--text-color), var(--bg-color) 40%);background:transparent;color:var(--text-color);border:none;padding:0;transition:var(--transition-text),transform .2s ease;&[data-astro-cid-5blmo7yk]:active{color:var(--hover-color);transform:scale(.94)}&[data-astro-cid-5blmo7yk]:focus-visible{outline:2px solid var(--text-color);outline-offset:4px}@media(any-hover:hover){&[data-astro-cid-5blmo7yk]:hover{color:var(--hover-color)}}@media(width>=768px){display:none}}}dialog[data-astro-cid-5blmo7yk]{position:fixed;background-color:var(--bg-secondary-color);border-radius:var(--radius);width:70vw;border:1px solid var(--border-color);transition:opacity .3s ease,transform .3s ease,overlay .5s ease allow-discrete,display .3s ease allow-discrete;opacity:0;transform:translateY(1em);backdrop-filter:blur(0px);&[data-astro-cid-5blmo7yk]::backdrop{background-color:hsl(0 0 0 / 0);backdrop-filter:blur(4px);transition:display .3s allow-discrete,overlay .5s allow-discrete,background-color .3s}&[open]::backdrop{background-color:hsl(0 0 0 / 50%)}&[open]{opacity:1;transform:translateY(0)}@starting-style{&[open]{opacity:0;transform:translateY(-1em)}&[open]::backdrop{background-color:hsl(0 0 0 / 0)}}& nav[data-astro-cid-5blmo7yk]{display:flex;flex-direction:column;gap:24px;padding:24px;text-align:center;color:var(--text-color);& a[data-astro-cid-5blmo7yk]{color:var(--text-color);text-decoration:none;transition:var(--transition-text);&[data-astro-cid-5blmo7yk]:hover{color:var(--text-description-color)}}}#close[data-astro-cid-5blmo7yk]{--position: 8px;position:absolute;top:0;right:0;background:transparent;color:var(--text-color);border:none;translate:calc(var(--position) * -1) var(--position);&[data-astro-cid-5blmo7yk]:active{color:var(--text-description-color)}}}body.no-scroll{overflow:hidden}.socials[data-astro-cid-yxtifmrq]{display:none;@media(width>=1200px){display:initial;position:fixed;bottom:0;left:0;translate:46px;& nav[data-astro-cid-yxtifmrq]{display:flex;gap:24px;flex-direction:column;&[data-astro-cid-yxtifmrq]:after{content:"";background-color:var(--text-color);width:1px;height:127px;margin-inline:auto}& a[data-astro-cid-yxtifmrq]{color:var(--color-text);text-decoration:none;transition:var(--transition-text);&[data-astro-cid-yxtifmrq]:hover{color:var(--text-description-color)}}}}}*,:before,:after{box-sizing:border-box;background-repeat:no-repeat}:before,:after{text-decoration:inherit;vertical-align:inherit}:where(:root){cursor:default;line-height:1.5;overflow-wrap:break-word;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}:where(body){margin:0}:where(h1){font-size:2em;margin:.67em 0}:where(dl,ol,ul) :where(dl,ol,ul){margin:0}:where(hr){color:inherit;height:0}:where(nav) :where(ol,ul){list-style-type:none;padding:0}:where(nav li):before{content:"​";float:left}:where(pre){font-family:monospace,monospace;font-size:1em;overflow:auto}:where(abbr[title]){text-decoration:underline;text-decoration:underline dotted}:where(b,strong){font-weight:bolder}:where(code,kbd,samp){font-family:monospace,monospace;font-size:1em}:where(small){font-size:80%}:where(audio,canvas,iframe,img,svg,video){vertical-align:middle}:where(iframe){border-style:none}:where(svg:not([fill])){fill:currentColor}:where(table){border-collapse:collapse;border-color:inherit;text-indent:0}:where(button,input,select){margin:0}:where(button,[type=button i],[type=reset i],[type=submit i]){-webkit-appearance:button}:where(fieldset){border:1px solid #a0a0a0}:where(progress){vertical-align:baseline}:where(textarea){margin:0;resize:vertical}:where([type=search i]){-webkit-appearance:textfield;outline-offset:-2px}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}:where(dialog){background-color:#fff;border:solid;color:#000;height:-moz-fit-content;height:fit-content;left:0;margin:auto;padding:1em;position:absolute;right:0;width:-moz-fit-content;width:fit-content}:where(dialog:not([open])){display:none}:where(details>summary:first-of-type){display:list-item}:where([aria-busy=true i]){cursor:progress}:where([aria-controls]){cursor:pointer}:where([aria-disabled=true i],[disabled]){cursor:not-allowed}:where([aria-hidden=false i][hidden]){display:initial}:where([aria-hidden=false i][hidden]:not(:focus)){clip:rect(0,0,0,0);position:absolute}:where(iframe,img,input,video,select,textarea){height:auto;max-width:100%}html{font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}code,kbd,samp,pre{font-family:ui-monospace,Menlo,Consolas,Roboto Mono,"Ubuntu Monospace",Noto Mono,Oxygen Mono,Liberation Mono,monospace,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}html{--bg-color: #000;--bg-secondary-color: #1e1e1e;--bg-toggle-thumb: #343434;--bg-card-contributions: #4847474d;--bg-separator: #5a5a5a;--text-color: #fff;--text-description-color: #a6a6a6;--font: "Satoshi", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-display: "Zodiak", Georgia, "Times New Roman", serif;--border-color: #5a5a5a;--border-card-contributions-color: #272727;--radius: 24px;--mobile-inline-padding: 22px;--transition-bg: background-color .15s ease;--transition-text: color .15s ease;--transition-border: border-color .15s ease;scroll-behavior:smooth;scroll-padding-top:96px;@media(width>=768px){scroll-padding-top:126px}}html.dark{--bg-color: #fff;--bg-secondary-color: color-mix(in srgb, #1e1e1e, #fff 95%);--bg-toggle-thumb: #d5d5d5;--bg-card-contributions: #cbcbcb4d;--bg-separator: #000;--text-color: #000;--text-description-color: color-mix(in srgb, #a6a6a6, #000 40%);--border-color: #e6e6e6;--border-card-contributions-color: #e6e6e6}body{background-color:var(--bg-color);color:var(--text-color);font-family:var(--font);transition:var(--transition-bg),var(--transition-text)}h1{font-family:var(--font-display);font-size:2.25rem;font-weight:700;text-wrap:balance;margin:0;@media(width>=768px){font-size:4rem}}h2{font-family:var(--font-display);font-size:2rem;font-weight:600;margin:0;@media(width>=768px){font-size:2.5rem}}h3{font-size:1.5rem;font-weight:600;margin:0}h4{font-size:1.25rem;font-weight:600;margin:0}p{margin:0}button{font-family:inherit}.headline-1{font-size:2rem;font-weight:500;@media(width>=768px){font-size:2.5rem}}.headline-2{font-size:1.5rem;font-weight:600;@media(width>=768px){font-size:2rem}}.headline-3{font-size:1.5rem}.headline-4{font-size:1.25rem}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes slideInUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@keyframes glow{0%,to{box-shadow:0 0 5px currentColor}50%{box-shadow:0 0 20px currentColor,0 0 30px currentColor}}.animate-on-scroll{opacity:0;transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}.animate-on-scroll.is-visible{opacity:1;transform:translate(0) scale(1)}.fade-in-up{transform:translateY(22px)}.fade-in-up.is-visible{transform:translateY(0)}.fade-in-down{transform:translateY(-22px)}.fade-in-down.is-visible{transform:translateY(0)}.fade-in-left{transform:translate(-24px)}.fade-in-left.is-visible{transform:translate(0)}.fade-in-right{transform:translate(24px)}.fade-in-right.is-visible{transform:translate(0)}.scale-in{transform:scale(.96)}.scale-in.is-visible{transform:scale(1)}.slide-in-up{transform:translateY(100%)}.slide-in-up.is-visible{transform:translateY(0)}.stagger-1.is-visible{transition-delay:80ms}.stagger-2.is-visible{transition-delay:.16s}.stagger-3.is-visible{transition-delay:.24s}.stagger-4.is-visible{transition-delay:.32s}.stagger-5.is-visible{transition-delay:.4s}.stagger-6.is-visible{transition-delay:.48s}.hover-lift{transition:transform .2s cubic-bezier(.4,0,.2,1)}@media(any-hover:hover){.hover-lift:hover{transform:translateY(-4px)}}.hover-scale{transition:transform .2s cubic-bezier(.4,0,.2,1)}@media(any-hover:hover){.hover-scale:hover{transform:scale(1.05)}}.hover-glow{transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}@media(any-hover:hover){.hover-glow:hover{box-shadow:0 0 20px currentColor}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;transition-delay:0ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.animate-on-scroll{opacity:1;transform:none}}.about[data-astro-cid-vqbephrr]{padding-bottom:120px;& h2[data-astro-cid-vqbephrr]{display:flex;gap:24px;align-items:center;justify-content:center;white-space:nowrap;@media(width>=768px){justify-content:start;&[data-astro-cid-vqbephrr]:after{content:"";display:block;width:100%;height:1px;background-color:var(--border-color)}}}.info[data-astro-cid-vqbephrr]{background-color:var(--bg-card-contributions);border-radius:4px;padding:24px 16px;display:flex;flex-direction:column;align-items:center;gap:32px;margin-top:48px;@media(width>=768px){padding:48px;max-width:470px;margin-inline:auto}@media(width>=1200px){flex-direction:row;max-width:fit-content}.picture[data-astro-cid-vqbephrr]{position:relative;&[data-astro-cid-vqbephrr]:before{content:"";position:absolute;inset:-12px;background:linear-gradient(135deg,color-mix(in srgb,var(--text-color) 20%,transparent),color-mix(in srgb,var(--text-color) 5%,transparent));border-radius:16px;z-index:-1;opacity:.5;filter:blur(20px);transition:opacity .3s cubic-bezier(.4,0,.2,1)}& img[data-astro-cid-vqbephrr]{width:100%;max-width:280px;height:auto;border-radius:12px;border:2px solid color-mix(in srgb,var(--text-color) 20%,transparent);transition:all .3s cubic-bezier(.4,0,.2,1);@media(width>=768px){max-width:320px}}@media(any-hover:hover){&[data-astro-cid-vqbephrr]:hover{&[data-astro-cid-vqbephrr]:before{opacity:.8}& img[data-astro-cid-vqbephrr]{transform:scale(1.02);border-color:color-mix(in srgb,var(--text-color) 40%,transparent)}}}}.description[data-astro-cid-vqbephrr]{flex:1;& p[data-astro-cid-vqbephrr]{margin-top:24px;color:var(--text-description-color)}}}}a[data-astro-cid-vnzlvqnm]{display:inline-flex;justify-content:center;align-items:center;gap:10px;padding:12px 40px;font-weight:500;color:var(--text-color);text-decoration:none;border:1px solid var(--text-color);border-radius:1000px;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden;&[data-astro-cid-vnzlvqnm]:before{content:"";position:absolute;inset:0;background:var(--bg-secondary-color);transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.4,0,.2,1);z-index:-1}@media(any-hover:hover){&[data-astro-cid-vnzlvqnm]:hover{transform:translateY(-2px);border-color:var(--text-color);&[data-astro-cid-vnzlvqnm]:before{transform:scaleX(1)}}&[data-astro-cid-vnzlvqnm]:active{transform:translateY(0)}}&.filled{background-color:var(--text-color);color:var(--bg-color);&[data-astro-cid-vnzlvqnm]:before{background:var(--bg-secondary-color)}@media(any-hover:hover){&[data-astro-cid-vnzlvqnm]:hover{color:var(--text-color);box-shadow:0 8px 20px color-mix(in srgb,var(--text-color) 30%,transparent)}}}}.contact[data-astro-cid-ld6nigpc]{padding-block:97px;padding-inline:1rem;text-align:center;border:1px solid rgba(128,128,128,.33);border-radius:4px;position:relative;overflow:hidden;margin-bottom:5rem;@media(width>=768px){padding-inline:0}& h3[data-astro-cid-ld6nigpc]{font-weight:initial}.buttons-container[data-astro-cid-ld6nigpc]{display:flex;justify-content:center;flex-direction:column;gap:13px;margin-top:24px;@media(width>=768px){flex-direction:row}}& canvas[data-astro-cid-ld6nigpc]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1;pointer-events:none}}#grid[data-astro-cid-ld6nigpc]{content-visibility:auto}html{.astro,.html{background-color:#7f4932;transition:var(--transition-bg)}.css{background-color:#324b7f;transition:var(--transition-bg)}.tailwindcss,.typescript,.react{background-color:#32547f;transition:var(--transition-bg)}.sass{background-color:#602957;transition:var(--transition-bg)}.open-props{background-color:#3a4367;transition:var(--transition-bg)}.javascript{background-color:#665e24;transition:var(--transition-bg)}.php{background-color:#616161;transition:var(--transition-bg)}.wordpress{background-color:#3a4367;transition:var(--transition-bg)}.firebase{background-color:#7f6932;transition:var(--transition-bg)}.pwa{background-color:#c4c4c4;color:#000;transition:var(--transition-bg),var(--transition-text)}.nextjs,.vercel{background-color:#fff;color:#000;transition:var(--transition-bg),var(--transition-text)}.postgres{background-color:#274865;transition:var(--transition-bg)}.angular,.nestjs{background-color:#530016;transition:var(--transition-bg)}.mongodb,.nodejs{background-color:#2a4324;transition:var(--transition-bg)}.express{background-color:#616161;transition:var(--transition-bg)}.git{background-color:#7f3232;transition:var(--transition-bg)}.python{background-color:#32547f;transition:var(--transition-bg)}.java{background-color:#7f4932;transition:var(--transition-bg)}.mysql{background-color:#274865;transition:var(--transition-bg)}.redis,.laravel{background-color:#7f3232;transition:var(--transition-bg)}.cloudflare{background-color:#7f5632;transition:var(--transition-bg)}.spring{background-color:#2a4324;transition:var(--transition-bg)}.traefik{background-color:#32547f;transition:var(--transition-bg)}.gitlab{background-color:#7f4932;transition:var(--transition-bg)}.bitbucket{background-color:#32547f;transition:var(--transition-bg)}.colab{background-color:#7f6932;transition:var(--transition-bg)}}html.dark{.astro,.html{background-color:#ffbc96}.css{background-color:#1c80bf5e}.tailwindcss,.typescript,.react{background-color:#bddaff}.sass{background-color:color-mix(in srgb,#602957,#fff 70%)}.open-props{background-color:#c1cbf1}.javascript{background-color:#e2da9a}.php{background-color:#cacaca}.wordpress{background-color:#b1b8d1}.firebase{background-color:#fd8}.nextjs,.vercel{background-color:#fff}.postgres{background-color:#9dc1dc}.angular,.nestjs{background-color:#ff9ba8}.mongodb,.nodejs{background-color:#acd4a1}.express{background-color:#cacaca}.git{background-color:#ff9b9b}.python{background-color:#bddaff}.java{background-color:#ffbc96}.mysql{background-color:#9dc1dc}.redis,.laravel{background-color:#ff9b9b}.cloudflare{background-color:#ffb896}.spring{background-color:#acd4a1}.traefik{background-color:#bddaff}.gitlab{background-color:#ffbc96}.bitbucket{background-color:#bddaff}.colab{background-color:#fd8}}.card-contributions[data-astro-cid-zpf2rfts]{display:grid;background:linear-gradient(180deg,color-mix(in srgb,var(--text-color) 4%,transparent),color-mix(in srgb,var(--text-color) 1%,transparent));border:1px solid var(--border-card-contributions-color);padding:20px;border-radius:12px;transition:all .3s cubic-bezier(.4,0,.2,1);@media(width>=768px){grid-template-columns:293px 1fr;gap:24px;align-items:center;max-width:720px;margin-inline:auto}@media(any-hover:hover){&[data-astro-cid-zpf2rfts]:hover{border-color:color-mix(in srgb,var(--text-color) 30%,transparent);transform:translateY(-4px);box-shadow:0 12px 32px color-mix(in srgb,var(--text-color) 10%,transparent);.image-wrapper[data-astro-cid-zpf2rfts] img[data-astro-cid-zpf2rfts]{transform:scale(1.05)}}}.image-wrapper[data-astro-cid-zpf2rfts]{overflow:hidden;border-radius:8px;margin-bottom:16px;@media(width>=768px){margin-bottom:0}& img[data-astro-cid-zpf2rfts]{display:block;width:100%;height:auto;aspect-ratio:293 / 168;object-fit:cover;border-radius:8px;transition:transform .4s cubic-bezier(.4,0,.2,1)}}& h3[data-astro-cid-zpf2rfts]{margin:0;& a[data-astro-cid-zpf2rfts]{color:inherit;text-decoration:none;transition:var(--transition-text);&[data-astro-cid-zpf2rfts]:hover{color:var(--text-description-color)}}}& p[data-astro-cid-zpf2rfts]{color:var(--text-description-color);transition:var(--transition-text)}.badges[data-astro-cid-zpf2rfts]{display:flex;flex-wrap:wrap;gap:12px 8px;.badge-tech[data-astro-cid-zpf2rfts]{display:inline-flex;align-items:center;gap:8px;padding:4px 12px;border-radius:1000px;font-size:.75rem}}.links[data-astro-cid-zpf2rfts]{display:flex;align-items:center;gap:8px;& a[data-astro-cid-zpf2rfts]{display:inline-flex;align-items:center;gap:10px;color:var(--text-color);text-decoration:none;font-weight:500;font-size:.875rem;padding:6px 16px;border-radius:1000px;border:1px solid var(--text-color);transition:var(--transition-bg),var(--transition-text),var(--transition-border);&[data-astro-cid-zpf2rfts]:hover{background-color:var(--bg-secondary-color)}}}.content[data-astro-cid-zpf2rfts]>[data-astro-cid-zpf2rfts]+[data-astro-cid-zpf2rfts]{margin-top:16px}}.contributions[data-astro-cid-sxkrbu74]{padding-bottom:120px;& h2[data-astro-cid-sxkrbu74]{display:flex;gap:24px;justify-content:center;align-items:center;white-space:nowrap;margin-bottom:48px;@media(width>=768px){justify-content:start;&[data-astro-cid-sxkrbu74]:before,&[data-astro-cid-sxkrbu74]:after{content:"";display:block;width:100%;height:1px;background-color:var(--border-color)}}}.card-contributions[data-astro-cid-sxkrbu74]{display:grid;gap:36px}}.experience[data-astro-cid-tsv6ktmd]{padding-bottom:120px}.section-header[data-astro-cid-tsv6ktmd]{display:flex;align-items:center;gap:24px;margin-bottom:48px;& h2[data-astro-cid-tsv6ktmd]{white-space:nowrap;position:relative;&[data-astro-cid-tsv6ktmd]:after{content:"";position:absolute;bottom:-4px;left:0;width:60%;height:3px;background:linear-gradient(90deg,var(--text-color),transparent)}}.header-decoration[data-astro-cid-tsv6ktmd]{flex:1;height:1px;background:linear-gradient(90deg,var(--border-color),transparent);display:none;@media(width>=768px){display:block}}}.jobs[data-astro-cid-tsv6ktmd]{display:flex;flex-direction:column;gap:32px;@media(width>=768px){flex-direction:row;gap:48px}.job-title[data-astro-cid-tsv6ktmd]{position:relative;display:flex;flex-direction:row;overflow-x:auto;scrollbar-width:none;&[data-astro-cid-tsv6ktmd]::-webkit-scrollbar{display:none}@media(width>=768px){flex-direction:column;min-width:240px}.timeline[data-astro-cid-tsv6ktmd]{display:none;@media(width>=768px){display:block;position:absolute;left:0;top:0;bottom:0;width:2px;background:linear-gradient(180deg,transparent,var(--border-color) 10%,var(--border-color) 90%,transparent)}}& button[data-astro-cid-tsv6ktmd]{position:relative;background:transparent;color:var(--text-description-color);border:none;padding:16px 24px;cursor:pointer;text-align:left;white-space:nowrap;transition:all .3s cubic-bezier(.4,0,.2,1);border-bottom:2px solid var(--border-color);@media(width>=768px){border-bottom:none;padding-left:32px;display:flex;align-items:center;gap:12px}.button-indicator[data-astro-cid-tsv6ktmd]{display:none;@media(width>=768px){display:block;position:absolute;left:-4px;width:10px;height:10px;border-radius:50%;background:var(--bg-color);border:2px solid var(--border-color);transition:all .3s cubic-bezier(.4,0,.2,1);z-index:2}}.button-text[data-astro-cid-tsv6ktmd]{transition:all .3s cubic-bezier(.4,0,.2,1)}&.active{color:var(--text-color);font-weight:600;.button-indicator[data-astro-cid-tsv6ktmd]{background:var(--text-color);border-color:var(--text-color);box-shadow:0 0 0 4px color-mix(in srgb,var(--text-color) 20%,transparent);transform:scale(1.3)}@media(width<768px){border-bottom-color:var(--text-color);border-bottom-width:3px}}&[data-astro-cid-tsv6ktmd]:focus-visible{outline:2px solid var(--text-color);outline-offset:-4px}@media(any-hover:hover){&[data-astro-cid-tsv6ktmd]:hover{color:var(--text-color);.button-indicator[data-astro-cid-tsv6ktmd]{border-color:var(--text-color);transform:scale(1.2)}}}}}.jobs-descriptions[data-astro-cid-tsv6ktmd]{flex:1;position:relative;min-height:400px;@media(width>=768px){min-height:auto}.description[data-astro-cid-tsv6ktmd]{display:none;width:100%;opacity:0;transform:translateY(20px);animation:fadeInUp .4s cubic-bezier(.4,0,.2,1) forwards;pointer-events:none;&.active{display:block;opacity:1;transform:translateY(0);pointer-events:auto}.description-header[data-astro-cid-tsv6ktmd]{padding-bottom:24px;border-bottom:1px solid var(--border-color);margin-bottom:24px;& h3[data-astro-cid-tsv6ktmd]{margin-bottom:12px;background:linear-gradient(135deg,var(--text-color),color-mix(in srgb,var(--text-color) 60%,transparent));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}}.job-time[data-astro-cid-tsv6ktmd]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;& time[data-astro-cid-tsv6ktmd]{color:var(--text-description-color);font-weight:500}.separator[data-astro-cid-tsv6ktmd]{color:var(--text-description-color);opacity:.5}.badge-active[data-astro-cid-tsv6ktmd]{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(135deg,var(--text-color),color-mix(in srgb,var(--text-color) 80%,transparent));color:var(--bg-color);border-radius:1000px;padding:4px 14px;font-size:.875rem;font-weight:600;animation:pulse-subtle 3s ease-in-out infinite;[data-astro-cid-tsv6ktmd][data-icon]{animation:pulse-subtle 2s ease-in-out infinite}}}.description-text[data-astro-cid-tsv6ktmd]{color:var(--text-description-color);line-height:1.7;margin-bottom:24px;text-wrap:pretty}.achievements-list[data-astro-cid-tsv6ktmd]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:0;& li[data-astro-cid-tsv6ktmd]{display:flex;align-items:flex-start;gap:12px;color:var(--text-description-color);line-height:1.6;padding:14px 0;border-top:1px solid color-mix(in srgb,var(--border-color) 65%,transparent);transition:color .2s ease,transform .2s ease;[data-astro-cid-tsv6ktmd][data-icon]{flex-shrink:0;margin-top:2px;color:var(--text-color);opacity:.7}@media(any-hover:hover){&[data-astro-cid-tsv6ktmd]:hover{color:var(--text-color);transform:translate(4px);[data-astro-cid-tsv6ktmd][data-icon]{opacity:1}}}}}}}}@keyframes pulse-subtle{0%,to{opacity:1}50%{opacity:.8}}.hero[data-astro-cid-6ffyhvbn]{display:flex;flex-direction:column;min-height:calc(100svh - 68px);padding-block:16px 24px;@media(width>=768px){min-height:calc(100svh - 88px);padding-block:clamp(16px,3svh,40px)}>div[data-astro-cid-6ffyhvbn]{position:relative;flex:1;display:flex;flex-direction:column;justify-content:center;text-align:center;border:1px solid var(--border-color);border-radius:var(--radius);padding:clamp(32px,5.5svh,48px) 16px;overflow:hidden;@media(width>=992px){padding:clamp(40px,7svh,96px) 96px}& h1[data-astro-cid-6ffyhvbn]{max-width:15ch;margin-inline:auto;font-size:clamp(2.25rem,min(1rem + 4.6vw,8.2svh),4.75rem);line-height:1.02;letter-spacing:-.045em}.hero-content[data-astro-cid-6ffyhvbn]{max-width:720px;margin-inline:auto;>[data-astro-cid-6ffyhvbn]+[data-astro-cid-6ffyhvbn]{margin-top:10px}}>canvas[data-astro-cid-6ffyhvbn]{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;z-index:-1;pointer-events:none}.cat-home[data-astro-cid-6ffyhvbn]{position:absolute;right:28px;bottom:0;width:82px;height:64px}>[data-astro-cid-6ffyhvbn]+[data-astro-cid-6ffyhvbn]:not(canvas){margin-top:clamp(16px,2.6svh,24px)}.badge[data-astro-cid-6ffyhvbn]{display:flex;align-items:center;gap:8px;width:fit-content;margin-inline:auto;background-color:var(--bg-secondary-color);font-size:.875rem;padding:6px 12px;border:1px solid var(--text-color);border-radius:1000px;transition:var(--transition-bg),var(--transition-border);.dot[data-astro-cid-6ffyhvbn]{--size: 6px;--color: #22c55e;width:var(--size);height:var(--size);background-color:var(--color);border-radius:50%;box-shadow:0 0 0 0 var(--color);transform:scale(1);animation:pulse 2s infinite}}& p[data-astro-cid-6ffyhvbn]{font-size:1rem;line-height:1.55;text-wrap:pretty;color:var(--text-description-color);@media(width>=768px){font-size:clamp(1.0625rem,.5rem + 1.5svh,1.25rem)}>strong{color:var(--text-color)}}.button-container[data-astro-cid-6ffyhvbn]{display:grid;grid-template-columns:1fr 1fr;gap:12px;>a{gap:8px;padding-inline:12px;font-size:.9375rem;white-space:nowrap}>a svg{width:20px;height:20px}>a.filled{grid-column:1 / -1}@media(width>=768px){display:flex;justify-content:center;flex-wrap:wrap;gap:13px;>a{gap:10px;padding-inline:40px;font-size:1rem}>a svg{width:24px;height:24px}}}}}@keyframes pulse{0%{transform:scale(.95);box-shadow:0 0 #22c55eb3}70%{transform:scale(1);box-shadow:0 0 0 6px transparent}to{transform:scale(.95);box-shadow:0 0 0 0 transparent}}#stars[data-astro-cid-6ffyhvbn]{content-visibility:auto}.card-project[data-astro-cid-3qibyvd4]{display:grid;align-items:center;gap:48px;margin-bottom:86px;max-width:434px;margin-inline:auto;padding:24px;border:1px solid transparent;border-radius:12px;background:color-mix(in srgb,var(--text-color) 1%,transparent);transition:all .3s cubic-bezier(.4,0,.2,1);@media(width>=1200px){grid-template-columns:434px 1fr;max-width:fit-content;&[data-astro-cid-3qibyvd4]:nth-child(odd){grid-template-columns:1fr 434px;.description[data-astro-cid-3qibyvd4]{order:-1}}}@media(any-hover:hover){&[data-astro-cid-3qibyvd4]:hover{border-color:color-mix(in srgb,var(--text-color) 20%,transparent);transform:translateY(-4px);box-shadow:0 12px 32px color-mix(in srgb,var(--text-color) 10%,transparent);.image-container[data-astro-cid-3qibyvd4] img[data-astro-cid-3qibyvd4]{transform:scale(1.05)}.image-overlay[data-astro-cid-3qibyvd4]{opacity:1}}}.image-container[data-astro-cid-3qibyvd4]{position:relative;overflow:hidden;border-radius:8px;.image-static[data-astro-cid-3qibyvd4],a[data-astro-cid-3qibyvd4]{display:grid;position:relative}& img[data-astro-cid-3qibyvd4]{grid-area:1 / 1;width:100%;height:auto;border-radius:8px;transition:transform .4s cubic-bezier(.4,0,.2,1),opacity .4s ease}&[data-carousel] img[data-astro-cid-3qibyvd4]:not(.active){opacity:0}.carousel-button[data-astro-cid-3qibyvd4]{position:absolute;top:50%;z-index:1;display:grid;place-items:center;width:36px;height:36px;padding:0;border:none;border-radius:50%;color:#fff;background-color:#00000073;backdrop-filter:blur(6px);cursor:pointer;transform:translateY(-50%);transition:background-color .2s ease;&.prev{left:10px}&.next{right:10px}&[data-astro-cid-3qibyvd4]:hover{background-color:#000000b3}&[data-astro-cid-3qibyvd4]:focus-visible{outline:2px solid #fff;outline-offset:2px}}.carousel-dots[data-astro-cid-3qibyvd4]{position:absolute;bottom:12px;left:50%;z-index:1;display:flex;gap:6px;padding:6px 8px;border-radius:1000px;background-color:#00000073;backdrop-filter:blur(6px);transform:translate(-50%);.dot[data-astro-cid-3qibyvd4]{width:8px;height:8px;padding:0;border:none;border-radius:50%;background-color:#ffffff73;cursor:pointer;transition:background-color .2s ease,width .2s ease;&.active{width:20px;border-radius:1000px;background-color:#fff}&[data-astro-cid-3qibyvd4]:focus-visible{outline:2px solid #fff;outline-offset:2px}}}& a[data-astro-cid-3qibyvd4]:focus-visible{outline:2px solid var(--text-color);outline-offset:-4px}.image-overlay[data-astro-cid-3qibyvd4]{position:absolute;inset:0;background:linear-gradient(135deg,color-mix(in srgb,var(--text-color) 85%,transparent),color-mix(in srgb,var(--text-color) 70%,transparent));display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s cubic-bezier(.4,0,.2,1);border-radius:8px;.view-text[data-astro-cid-3qibyvd4]{color:var(--bg-color);font-weight:600;font-size:1.125rem;transform:translateY(10px);transition:transform .3s cubic-bezier(.4,0,.2,1)}}@media(any-hover:hover){&[data-astro-cid-3qibyvd4]:hover .view-text[data-astro-cid-3qibyvd4]{transform:translateY(0)}}}.description[data-astro-cid-3qibyvd4]{& h3[data-astro-cid-3qibyvd4]{& a[data-astro-cid-3qibyvd4]{color:inherit;text-decoration:none;transition:var(--transition-text);&[data-astro-cid-3qibyvd4]:hover{color:var(--text-description-color)}}}.badges{display:flex;flex-wrap:wrap;gap:12px 8px;.badge-tech{display:inline-flex;align-items:center;gap:8px;padding:4px 12px;border-radius:1000px;font-size:.875rem}}.links{display:flex;align-items:center;flex-wrap:wrap;gap:16px;.link-status,a{display:inline-flex;align-items:center;gap:10px;color:var(--text-color);text-decoration:none;font-weight:500;padding:8px 24px;border-radius:1000px;border:1px solid var(--text-color);transition:background-color .2s ease,transform .2s ease}& a{&:hover{background-color:var(--bg-secondary-color)}&:focus-visible{outline:2px solid var(--text-color);outline-offset:3px}&:active{transform:scale(.98)}}.link-status{color:var(--text-description-color);border-color:var(--border-color);cursor:default}}& p{color:var(--text-description-color);font-size:1.125rem}>*+*{margin-top:24px}}}.projects[data-astro-cid-pwkhmixj]{padding-bottom:120px;&[data-astro-cid-pwkhmixj]:not(.expanded) .card-project:nth-child(n+5){display:none}.show-more[data-astro-cid-pwkhmixj]{display:flex;margin-inline:auto;align-items:center;gap:10px;color:var(--text-color);background-color:transparent;cursor:pointer;font-weight:500;font-size:1rem;padding:8px 24px;border-radius:1000px;border:1px solid var(--text-color);transition:var(--transition-bg);&[data-astro-cid-pwkhmixj]:hover{background-color:var(--bg-secondary-color)}}& h2[data-astro-cid-pwkhmixj]{display:flex;gap:24px;justify-content:center;align-items:center;white-space:nowrap;margin-bottom:86px;@media(width>=768px){justify-content:start;&[data-astro-cid-pwkhmixj]:after{content:"";display:block;width:100%;height:1px;background-color:var(--border-color)}}& span[data-astro-cid-pwkhmixj]{order:1}}}.techstack[data-astro-cid-5urwcjij]{padding-bottom:120px;& h2[data-astro-cid-5urwcjij]{display:flex;gap:24px;align-items:center;justify-content:center;white-space:nowrap;@media(width>=768px){justify-content:start;&[data-astro-cid-5urwcjij]:after{content:"";display:block;width:100%;height:1px;background-color:var(--border-color)}}}.tech-marquee[data-astro-cid-5urwcjij]{margin-top:48px;width:100%;overflow:hidden;position:relative;padding:32px 0;&[data-astro-cid-5urwcjij]:before,&[data-astro-cid-5urwcjij]:after{content:"";position:absolute;top:0;width:100px;height:100%;z-index:2;pointer-events:none;@media(width>=768px){width:200px}}&[data-astro-cid-5urwcjij]:before{left:0;background:linear-gradient(to right,var(--bg-color) 0%,transparent 100%)}&[data-astro-cid-5urwcjij]:after{right:0;background:linear-gradient(to left,var(--bg-color) 0%,transparent 100%)}.tech-track[data-astro-cid-5urwcjij]{display:flex;gap:48px;animation:scroll 40s linear infinite;width:fit-content;@media(width>=768px){gap:64px}.tech-icon[data-astro-cid-5urwcjij]{display:flex;align-items:center;justify-content:center;width:48px;height:48px;flex-shrink:0;opacity:.7;transition:opacity .3s ease,transform .3s ease;@media(width>=768px){width:64px;height:64px}& svg[data-astro-cid-5urwcjij]{width:100%;height:100%;filter:grayscale(0)}&[data-astro-cid-5urwcjij]:hover{opacity:1;transform:scale(1.1)}}}}.github-stats[data-astro-cid-5urwcjij]{margin-top:80px;.stats-container[data-astro-cid-5urwcjij]{display:flex;flex-direction:column;gap:16px;width:100%;.stat-card[data-astro-cid-5urwcjij]{width:100%;display:flex;align-items:center;justify-content:center;border-radius:4px;overflow:hidden;transition:transform .3s ease;&[data-astro-cid-5urwcjij]:hover{transform:translateY(-4px)}& img[data-astro-cid-5urwcjij]{width:100%;height:auto;display:block;opacity:.95;transition:opacity .3s ease}&[data-astro-cid-5urwcjij]:hover img[data-astro-cid-5urwcjij]{opacity:1}&.full{max-width:100%}&.small{flex:1;min-width:0}}.stat-row[data-astro-cid-5urwcjij]{display:grid;gap:16px;grid-template-columns:1fr;width:100%;@media(width>=768px){grid-template-columns:repeat(2,1fr)}}}}}@keyframes scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}
