/*! tailwindcss v4.1.13 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-leading:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-emerald-300:oklch(84.5% .143 164.978);--color-teal-300:oklch(85.5% .138 181.071);--color-teal-400:oklch(77.7% .152 181.912);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-500:oklch(68.5% .169 237.323);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-500:oklch(60.6% .25 292.717);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-300:oklch(87% 0 0);--color-neutral-400:oklch(70.8% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--bg:#0b0c10;--surface:#101217;--text:#e6e6e6;--muted:#b7b7b7;--primary:#0ea5e9;--primary-light:#7dd3fc;--radius:16px}}@layer components{.body{min-height:calc(var(--spacing)*100);min-height:100dvh;color:var(--color-slate-100);background-color:#0b0c10;background-image:radial-gradient(1200px 800px at 90% -10%,#1b1f2a,#0b0c10 70%)}.container{max-width:var(--container-7xl);padding-inline:calc(var(--spacing)*4);margin-inline:auto}@media (min-width:40rem){.container{padding-inline:calc(var(--spacing)*6)}}@media (min-width:64rem){.container{padding-inline:calc(var(--spacing)*8)}}.nav{top:calc(var(--spacing)*0);z-index:50;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-slate-800);background-color:#0003;position:sticky}@supports (color:color-mix(in lab,red,red)){.nav{background-color:color-mix(in oklab,var(--color-black)20%,transparent)}}.nav{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.nav__inner{height:calc(var(--spacing)*14);justify-content:space-between;align-items:center;display:flex}@media (min-width:40rem){.nav__inner{height:calc(var(--spacing)*16)}}.brand{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);color:var(--color-white);display:inline-block}@media (min-width:40rem){.brand{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.links{align-items:center;display:none}@media (min-width:40rem){.links{display:flex}}.links a{margin-left:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-slate-300);text-decoration-line:none}@media (hover:hover){.links a:hover{color:var(--color-slate-100)}}@media (min-width:64rem){.links a{margin-left:calc(var(--spacing)*4);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.links a:last-child{color:var(--color-slate-900)}.hero{padding-block:calc(var(--spacing)*16)}@media (min-width:40rem){.hero{padding-block:calc(var(--spacing)*20)}}@media (min-width:64rem){.hero{padding-block:calc(var(--spacing)*24)}}.hero__inner{align-items:flex-start;gap:calc(var(--spacing)*4);flex-direction:column;display:flex}@media (min-width:40rem){.hero__inner{gap:calc(var(--spacing)*6)}}.hero__title{--tw-leading:var(--leading-tight);font-size:clamp(1.8rem,4vw,3.5rem);line-height:var(--leading-tight);--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}@media (min-width:40rem){.hero__title{font-size:clamp(2rem,5vw,3.5rem)}}.hero__title span{color:var(--color-sky-500)}.hero__cta{gap:calc(var(--spacing)*3);flex-direction:column;width:100%;display:flex}@media (min-width:40rem){.hero__cta{flex-direction:row;width:auto}}.badge{border-style:var(--tw-border-style);border-width:1px;border-color:#00a5ef4d;border-radius:3.40282e38px;align-items:center;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.badge{border-color:color-mix(in oklab,var(--color-sky-500)30%,transparent)}}.badge{background-color:#00a5ef1a}@supports (color:color-mix(in lab,red,red)){.badge{background-color:color-mix(in oklab,var(--color-sky-500)10%,transparent)}}.badge{padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-sky-500)}@media (min-width:40rem){.badge{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.btn{align-items:center;gap:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);border-radius:3.40282e38px;display:inline-flex}@media (min-width:40rem){.btn{padding-inline:calc(var(--spacing)*4);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.btn--primary{background-color:var(--color-white);color:var(--color-slate-900);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.btn--ghost{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-700);color:var(--color-slate-200);background-color:#0000}.section{padding-block:calc(var(--spacing)*16)}@media (min-width:40rem){.section{padding-block:calc(var(--spacing)*20)}}@media (min-width:64rem){.section{padding-block:calc(var(--spacing)*24)}}.grid-2{gap:calc(var(--spacing)*6);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media (min-width:48rem){.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:64rem){.grid-2{gap:calc(var(--spacing)*7)}}.glass{border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:#1d293d99}@supports (color:color-mix(in lab,red,red)){.glass{border-color:color-mix(in oklab,var(--color-slate-800)60%,transparent)}}.glass{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.glass{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.glass{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}@media (min-width:64rem){.glass{border-radius:var(--radius-2xl)}}.card{padding:calc(var(--spacing)*4)}@media (min-width:40rem){.card{padding:calc(var(--spacing)*5)}}.skills{margin-top:calc(var(--spacing)*2);gap:calc(var(--spacing)*2);flex-wrap:wrap;display:flex}.chip{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-700);background-color:var(--color-slate-900);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-slate-200);border-radius:3.40282e38px}@media (min-width:40rem){.chip{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.footer{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-slate-800);padding-block:calc(var(--spacing)*6);text-align:center;color:var(--color-slate-400)}@media (min-width:40rem){.footer{padding-block:calc(var(--spacing)*9)}}.terminal{margin-top:calc(var(--spacing)*8);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-800);background-color:var(--surface);border-radius:12px;width:100%;max-width:760px;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.terminal{background-color:color-mix(in oklab,var(--surface)95%,transparent)}}.terminal{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.terminal{--tw-ring-color:color-mix(in oklab,var(--color-violet-500)20%,transparent)}}@media (min-width:40rem){.terminal{margin-top:calc(var(--spacing)*12);border-radius:14px}}.terminal__header{align-items:center;gap:calc(var(--spacing)*2);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-slate-800);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);background-color:#0e1117;display:flex}.dot{height:calc(var(--spacing)*2);width:calc(var(--spacing)*2);border-radius:3.40282e38px}@media (min-width:40rem){.dot{height:calc(var(--spacing)*2.5);width:calc(var(--spacing)*2.5)}}.dot--red{background-color:#ff5f57}.dot--yellow{background-color:#febc2e}.dot--green{background-color:#28c840}.terminal__path{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-slate-400);margin-left:auto}@media (min-width:40rem){.terminal__path{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.terminal__body{padding:calc(var(--spacing)*3)}@media (min-width:40rem){.terminal__body{padding:calc(var(--spacing)*4)}}@media (min-width:48rem){.terminal__body{padding:calc(var(--spacing)*5)}}.line{margin-block:calc(var(--spacing)*1);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-slate-200)}@media (min-width:40rem){.line{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.role span{color:var(--color-green-400)}.projects{gap:calc(var(--spacing)*4);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media (min-width:40rem){.projects{gap:calc(var(--spacing)*6)}}@media (min-width:48rem){.projects{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:64rem){.projects{grid-template-columns:repeat(3,minmax(0,1fr))}}.project{border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:#1d293d99;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.project{border-color:color-mix(in oklab,var(--color-slate-800)60%,transparent)}}.project{background-color:var(--surface)}@supports (color:color-mix(in lab,red,red)){.project{background-color:color-mix(in oklab,var(--surface)90%,transparent)}}@media (min-width:64rem){.project{border-radius:var(--radius-2xl)}}.project:hover{--tw-translate-y:-2px;translate:var(--tw-translate-x)var(--tw-translate-y);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);box-shadow:0 12px 40px -20px #0009}.project__thumb{aspect-ratio:16/9;background-image:var(--img),radial-gradient(60% 120% at 60% 0%,#ffffff0f,transparent 60%);background-position:50%;background-size:cover;position:relative;overflow:hidden}.project__thumb:after{content:"";inset:calc(var(--spacing)*0);background:linear-gradient(#0000,#00000026 40%,#0000008c);position:absolute}.project__badge{bottom:calc(var(--spacing)*3);left:calc(var(--spacing)*3);z-index:10;border-style:var(--tw-border-style);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));border-width:1px;border-color:#00a5ef4d;border-radius:3.40282e38px;position:absolute}@supports (color:color-mix(in lab,red,red)){.project__badge{border-color:color-mix(in oklab,var(--color-sky-500)30%,transparent)}}.project__badge{background-color:#00a5ef1a}@supports (color:color-mix(in lab,red,red)){.project__badge{background-color:color-mix(in oklab,var(--color-sky-500)10%,transparent)}}.project__badge{color:var(--color-sky-400);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.project__body{gap:calc(var(--spacing)*3);padding:calc(var(--spacing)*4);display:grid}@media (min-width:40rem){.project__body{padding:calc(var(--spacing)*5)}}.project__title{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-white)}@media (min-width:40rem){.project__title{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}.project__desc{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-slate-300)}@media (min-width:40rem){.project__desc{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.project__stack{gap:calc(var(--spacing)*1.5);flex-wrap:wrap;display:flex}@media (min-width:40rem){.project__stack{gap:calc(var(--spacing)*2)}}.project__stack li{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-700);background-color:#0f172bcc;border-radius:3.40282e38px}@supports (color:color-mix(in lab,red,red)){.project__stack li{background-color:color-mix(in oklab,var(--color-slate-900)80%,transparent)}}.project__stack li{padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*.5);color:var(--color-slate-200);font-size:10px}@media (min-width:40rem){.project__stack li{padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);font-size:11px}}.project__meta{gap:calc(var(--spacing)*1.5);flex-wrap:wrap;display:flex}@media (min-width:40rem){.project__meta{gap:calc(var(--spacing)*2)}}.project__tag{border-style:var(--tw-border-style);border-width:1px;border-color:#ffffff1a;border-radius:.25rem}@supports (color:color-mix(in lab,red,red)){.project__tag{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.project__tag{padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*.5);--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest);color:var(--color-slate-400);text-transform:uppercase;font-size:9px}@media (min-width:40rem){.project__tag{padding-inline:calc(var(--spacing)*2);font-size:10px}}.project__actions{margin-top:calc(var(--spacing)*1);gap:calc(var(--spacing)*2);display:flex}.btn--sm{border-radius:var(--radius-md);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}@media (min-width:40rem){.btn--sm{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:64rem){.btn--sm{border-radius:var(--radius-lg)}}.shimmer{position:relative;overflow:hidden}.shimmer:before{content:"";background:linear-gradient(90deg,#0000,#ffffff14,#0000);animation:1.2s linear infinite shimmer;position:absolute;inset:-20% -60%;transform:skew(-20deg)}@keyframes shimmer{0%{transform:translate(-30%)skew(-20deg)}to{transform:translate(130%)skew(-20deg)}}.cursor{margin-left:calc(var(--spacing)*1);color:var(--color-sky-500);animation:1s steps(2,start) infinite blink;display:inline-block}.section-space{padding-block:calc(var(--spacing)*16);position:relative}@media (min-width:40rem){.section-space{padding-block:calc(var(--spacing)*20)}}@media (min-width:64rem){.section-space{padding-block:calc(var(--spacing)*24)}}.container-page{max-width:var(--container-7xl);padding-inline:calc(var(--spacing)*4);margin-inline:auto}@media (min-width:40rem){.container-page{padding-inline:calc(var(--spacing)*6)}}@media (min-width:64rem){.container-page{padding-inline:calc(var(--spacing)*8)}}:where(.section-header>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}@media (min-width:40rem){:where(.section-header>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}}.section-title{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}@media (min-width:40rem){.section-title{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}@media (min-width:48rem){.section-title{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}}.section-subtitle{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--color-neutral-300)}@media (min-width:40rem){.section-subtitle{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}.section-description{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--color-neutral-300)}@media (min-width:40rem){.section-description{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.section-location{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-neutral-400)}@media (min-width:40rem){.section-location{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.about-grid{align-items:flex-start;gap:calc(var(--spacing)*8);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media (min-width:40rem){.about-grid{gap:calc(var(--spacing)*10)}}@media (min-width:48rem){.about-grid{grid-template-columns:repeat(12,minmax(0,1fr))}}@media (min-width:64rem){.about-grid{gap:calc(var(--spacing)*12)}}:where(.about-content>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}@media (min-width:40rem){:where(.about-content>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}}@media (min-width:48rem){.about-content{grid-column:span 7/span 7}.about-sidebar{grid-column:span 5/span 5}}.about-sidebar-sticky{gap:calc(var(--spacing)*3);display:grid}@media (min-width:40rem){.about-sidebar-sticky{gap:calc(var(--spacing)*4)}}@media (min-width:48rem){.about-sidebar-sticky{top:calc(var(--spacing)*24);position:sticky}}.code-block{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:#ffffff1a;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.code-block{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.code-block{background-color:#17171766}@supports (color:color-mix(in lab,red,red)){.code-block{background-color:color-mix(in oklab,var(--color-neutral-900)40%,transparent)}}.code-block{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}@media (min-width:40rem){.code-block{border-radius:var(--radius-xl)}}.code-header{height:calc(var(--spacing)*8);align-items:center;gap:calc(var(--spacing)*2);border-bottom-style:var(--tw-border-style);border-color:#ffffff1a;border-bottom-width:1px;display:flex}@supports (color:color-mix(in lab,red,red)){.code-header{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.code-header{padding-inline:calc(var(--spacing)*3);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-neutral-400)}@media (min-width:40rem){.code-header{height:calc(var(--spacing)*10);padding-inline:calc(var(--spacing)*4);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.code-dot{height:calc(var(--spacing)*1.5);width:calc(var(--spacing)*1.5);border-radius:3.40282e38px;display:inline-block}@media (min-width:40rem){.code-dot{height:calc(var(--spacing)*2);width:calc(var(--spacing)*2)}}.code-dot--red{background-color:#fb2c36b3}@supports (color:color-mix(in lab,red,red)){.code-dot--red{background-color:color-mix(in oklab,var(--color-red-500)70%,transparent)}}.code-dot--yellow{background-color:#edb200b3}@supports (color:color-mix(in lab,red,red)){.code-dot--yellow{background-color:color-mix(in oklab,var(--color-yellow-500)70%,transparent)}}.code-dot--green{background-color:#00c758b3}@supports (color:color-mix(in lab,red,red)){.code-dot--green{background-color:color-mix(in oklab,var(--color-green-500)70%,transparent)}}.code-button{border-style:var(--tw-border-style);border-width:1px;border-color:#ffffff1a;border-radius:.25rem;margin-left:auto}@supports (color:color-mix(in lab,red,red)){.code-button{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.code-button{padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*.5);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));font-size:10px}@media (hover:hover){.code-button:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.code-button:hover{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}}@media (min-width:40rem){.code-button{padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.code-content{margin:calc(var(--spacing)*0);padding:calc(var(--spacing)*3);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);overflow-x:auto}@media (min-width:40rem){.code-content{padding:calc(var(--spacing)*4);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.code-comment{margin:calc(var(--spacing)*0);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:#ffffff1a;overflow-x:auto}@supports (color:color-mix(in lab,red,red)){.code-comment{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.code-comment{background-color:#ffffff08}@supports (color:color-mix(in lab,red,red)){.code-comment{background-color:color-mix(in oklab,var(--color-white)3%,transparent)}}.code-comment{padding:calc(var(--spacing)*3);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}@media (min-width:40rem){.code-comment{border-radius:var(--radius-xl);padding:calc(var(--spacing)*4);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.json-bracket{color:var(--color-neutral-400)}.json-key{color:var(--color-violet-300)}.json-string{color:var(--color-emerald-300)}.json-cursor{animation:var(--animate-pulse)}.kpi-card{border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:#ffffff1a;position:relative}@supports (color:color-mix(in lab,red,red)){.kpi-card{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.kpi-card{padding:calc(var(--spacing)*4);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (min-width:40rem){.kpi-card{padding:calc(var(--spacing)*5)}}@media (min-width:64rem){.kpi-card{border-radius:var(--radius-2xl);padding:calc(var(--spacing)*6)}}.kpi-card{background:#ffffff0a;box-shadow:0 10px 40px -15px #0009}.kpi-card:hover{background:#ffffff0f}.kpi-grid{text-align:center;grid-template-columns:repeat(3,minmax(0,1fr));place-items:center;display:grid}:where(.kpi-item>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}@media (min-width:40rem){:where(.kpi-item>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}}.kpi-label{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));opacity:.8}@media (min-width:40rem){.kpi-label{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.kpi-value{align-items:baseline;gap:calc(var(--spacing)*.5);display:flex}@media (min-width:40rem){.kpi-value{gap:calc(var(--spacing)*1)}}.kpi-number{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}@media (min-width:40rem){.kpi-number{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}@media (min-width:64rem){.kpi-number{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}}.kpi-number{line-height:1}.kpi-plus{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}@media (min-width:40rem){.kpi-plus{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}.kpi-description{justify-content:center;align-items:center;gap:calc(var(--spacing)*1);color:var(--color-neutral-400);font-size:10px;display:flex}@media (min-width:40rem){.kpi-description{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.kpi-divider{height:calc(var(--spacing)*8);background-color:#ffffff1a;width:1px}@supports (color:color-mix(in lab,red,red)){.kpi-divider{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}@media (min-width:40rem){.kpi-divider{height:calc(var(--spacing)*10)}}@media (min-width:64rem){.kpi-divider{height:calc(var(--spacing)*12)}}.kpi-ring{pointer-events:none;inset:calc(var(--spacing)*0);border-radius:var(--radius-xl);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:#ffffff1a;position:absolute}@supports (color:color-mix(in lab,red,red)){.kpi-ring{--tw-ring-color:color-mix(in oklab,var(--color-white)10%,transparent)}}@media (min-width:64rem){.kpi-ring{border-radius:var(--radius-2xl)}}.toolbelt-card{border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.toolbelt-card{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.toolbelt-card{padding:calc(var(--spacing)*4)}@media (min-width:40rem){.toolbelt-card{padding:calc(var(--spacing)*5)}}@media (min-width:64rem){.toolbelt-card{border-radius:var(--radius-2xl)}}.toolbelt-card{background:#ffffff08}.toolbelt-header{margin-bottom:calc(var(--spacing)*2);justify-content:space-between;align-items:center;display:flex}@media (min-width:40rem){.toolbelt-header{margin-bottom:calc(var(--spacing)*3)}}.toolbelt-title{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest);color:var(--color-neutral-400);text-transform:uppercase}@media (min-width:40rem){.toolbelt-title{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.toolbelt-meta{color:var(--color-neutral-400);font-size:10px}@media (min-width:40rem){.toolbelt-meta{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.toolbelt-tags{gap:calc(var(--spacing)*1.5);flex-wrap:wrap;display:flex}@media (min-width:40rem){.toolbelt-tags{gap:calc(var(--spacing)*2)}}.toolbelt-tag{border-style:var(--tw-border-style);border-width:1px;border-color:#ffffff1a;border-radius:3.40282e38px}@supports (color:color-mix(in lab,red,red)){.toolbelt-tag{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.toolbelt-tag{padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*.5);color:var(--color-neutral-300);font-size:10px}@media (min-width:40rem){.toolbelt-tag{padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.toolbelt-tag{background:#ffffff0d}.toolbelt-actions{margin-top:calc(var(--spacing)*3);gap:calc(var(--spacing)*1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (min-width:40rem){.toolbelt-actions{margin-top:calc(var(--spacing)*4);gap:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.toolbelt-link{border-radius:var(--radius-md);border-style:var(--tw-border-style);padding-block:calc(var(--spacing)*1.5);text-align:center;border-width:1px}@media (min-width:40rem){.toolbelt-link{padding-block:calc(var(--spacing)*2)}}@media (min-width:64rem){.toolbelt-link{border-radius:var(--radius-lg)}}.toolbelt-link{border-color:#ffffff26}.toolbelt-link:hover{background:#ffffff0d}.toolbelt-link--primary{border-radius:var(--radius-md);padding-block:calc(var(--spacing)*1.5);text-align:center}@media (min-width:40rem){.toolbelt-link--primary{padding-block:calc(var(--spacing)*2)}}@media (min-width:64rem){.toolbelt-link--primary{border-radius:var(--radius-lg)}}.toolbelt-link--primary{background:#ffffff1a}.toolbelt-link--primary:hover{background:#ffffff26}.skills-grid{gap:calc(var(--spacing)*4);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media (min-width:40rem){.skills-grid{gap:calc(var(--spacing)*6)}}@media (min-width:48rem){.skills-grid{grid-template-columns:repeat(12,minmax(0,1fr))}}.skill-card{border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.skill-card{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.skill-card{padding:calc(var(--spacing)*4)}@media (min-width:40rem){.skill-card{padding:calc(var(--spacing)*5)}}@media (min-width:64rem){.skill-card{border-radius:var(--radius-2xl)}}.skill-card{background:#ffffff08}.skill-card--full{grid-column:span 1/span 1}@media (min-width:48rem){.skill-card--full{grid-column:span 12/span 12}}.skill-card--large{grid-column:span 1/span 1}@media (min-width:48rem){.skill-card--large{grid-column:span 7/span 7}}.skill-card--medium{grid-column:span 1/span 1}@media (min-width:48rem){.skill-card--medium{grid-column:span 5/span 5}}.skill-title{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest);color:var(--color-neutral-400);text-transform:uppercase}@media (min-width:40rem){.skill-title{margin-bottom:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.skill-list{gap:calc(var(--spacing)*2);display:grid}@media (min-width:40rem){.skill-list{gap:calc(var(--spacing)*3)}}.skill-list--primary{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:40rem){.skill-list--primary{grid-template-columns:repeat(2,minmax(0,1fr))}}.skill-list--secondary{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:40rem){.skill-list--secondary{grid-template-columns:repeat(2,minmax(0,1fr))}}.skill-list--familiar{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:40rem){.skill-list--familiar{grid-template-columns:repeat(2,minmax(0,1fr))}}.skill-list--practices{gap:calc(var(--spacing)*1.5);display:grid}@media (min-width:40rem){.skill-list--practices{gap:calc(var(--spacing)*2)}}.skill-item{align-items:center;gap:calc(var(--spacing)*2);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:#ffffff1a;display:flex}@supports (color:color-mix(in lab,red,red)){.skill-item{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.skill-item{padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*1.5)}@media (min-width:40rem){.skill-item{gap:calc(var(--spacing)*3);border-radius:var(--radius-xl);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2)}}.skill-item{background:#ffffff0d}.skill-icon{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5)}@media (min-width:40rem){.skill-icon{height:calc(var(--spacing)*6);width:calc(var(--spacing)*6)}}@media (min-width:64rem){.skill-icon{height:calc(var(--spacing)*7);width:calc(var(--spacing)*7)}}.skill-icon--primary{color:var(--color-sky-400)}.skill-icon--secondary{color:var(--color-neutral-300)}.skill-content{min-width:calc(var(--spacing)*0)}.skill-name{text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-neutral-200);overflow:hidden}@media (min-width:40rem){.skill-name{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.skill-category{font-size:9px}@media (min-width:40rem){.skill-category{font-size:10px}}.skill-category--primary{color:#0ea5e9e6}.skill-category--secondary{color:#a3a3a3e6}.skill-practice{align-items:center;gap:calc(var(--spacing)*1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-neutral-200);display:flex}@media (min-width:40rem){.skill-practice{gap:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:640px){.skill-list--primary,.skill-list--secondary,.skill-list--familiar{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:768px){.skill-card--full{grid-column:span 12/span 12}.skill-card--large{grid-column:span 7/span 7}.skill-card--medium{grid-column:span 5/span 5}}@media (min-width:1024px){.skill-list--primary,.skill-list--secondary{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1280px){.skill-list--primary{grid-template-columns:repeat(4,minmax(0,1fr))}}.projects-header{margin-bottom:calc(var(--spacing)*6)}@media (min-width:40rem){.projects-header{margin-bottom:calc(var(--spacing)*8)}}.projects-title{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}@media (min-width:40rem){.projects-title{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}@media (min-width:48rem){.projects-title{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}}.contact-section{padding-block:calc(var(--spacing)*16)}@media (min-width:40rem){.contact-section{padding-block:calc(var(--spacing)*20)}}@media (min-width:64rem){.contact-section{padding-block:calc(var(--spacing)*24)}}.contact-grid{gap:calc(var(--spacing)*4);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media (min-width:40rem){.contact-grid{gap:calc(var(--spacing)*6)}}@media (min-width:64rem){.contact-grid{grid-template-columns:1fr 1.1fr}}.section-title{margin-bottom:calc(var(--spacing)*1);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}@media (min-width:40rem){.section-title{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}@media (min-width:48rem){.section-title{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}.muted{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-slate-400)}@media (min-width:40rem){.muted{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.contact-panel{padding:calc(var(--spacing)*4)}@media (min-width:40rem){.contact-panel{padding:calc(var(--spacing)*6)}}@media (min-width:48rem){.contact-panel{padding:calc(var(--spacing)*7)}}.contact-list{margin:calc(var(--spacing)*0);margin-top:calc(var(--spacing)*3);gap:calc(var(--spacing)*1.5);padding:calc(var(--spacing)*0);list-style-type:none;display:grid}@media (min-width:40rem){.contact-list{margin-top:calc(var(--spacing)*4);gap:calc(var(--spacing)*2)}}.contact-link{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-slate-200);text-underline-offset:4px;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));align-items:center;text-decoration-line:underline;text-decoration-color:#0000;display:inline-flex}@media (hover:hover){.contact-link:hover{color:var(--color-teal-300);-webkit-text-decoration-color:var(--color-teal-300);text-decoration-color:var(--color-teal-300)}}@media (min-width:40rem){.contact-link{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.contact-form{padding:calc(var(--spacing)*4)}@media (min-width:40rem){.contact-form{padding:calc(var(--spacing)*6)}}@media (min-width:48rem){.contact-form{padding:calc(var(--spacing)*7)}}.contact-form{flex-direction:column;gap:1rem;display:flex}.form__group{gap:calc(var(--spacing)*.5);display:grid}@media (min-width:40rem){.form__group{gap:calc(var(--spacing)*1)}}.form__label{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-slate-300)}@media (min-width:40rem){.form__label{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.input,.textarea{border-radius:var(--radius-md);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-700);background-color:var(--color-slate-900);width:100%;padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-slate-100)}:is(.input,.textarea)::placeholder{color:var(--color-slate-500)}:is(.input,.textarea):focus{border-color:var(--color-teal-400);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-teal-300);--tw-outline-style:none;outline-style:none}@media (min-width:40rem){.input,.textarea{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}@media (min-width:64rem){.input,.textarea{border-radius:var(--radius-lg)}}.textarea{resize:vertical;min-height:120px}.form__actions{padding-top:calc(var(--spacing)*1)}@media (min-width:40rem){.form__actions{padding-top:calc(var(--spacing)*2)}}.form__hint{margin-top:calc(var(--spacing)*.5);color:var(--color-slate-500);font-size:10px}@media (min-width:40rem){.form__hint{margin-top:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:1024px){.contact-grid{grid-template-columns:1fr 1.1fr}.textarea{min-height:140px}}.mobile-only{display:block}@media (min-width:40rem){.mobile-only{display:none}}.desktop-only{display:none}@media (min-width:40rem){.desktop-only{display:block}}.text-responsive-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}@media (min-width:40rem){.text-responsive-xs{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.text-responsive-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}@media (min-width:40rem){.text-responsive-sm{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.text-responsive-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}@media (min-width:40rem){.text-responsive-base{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}.text-responsive-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}@media (min-width:40rem){.text-responsive-lg{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}.text-responsive-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}@media (min-width:40rem){.text-responsive-xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}.text-responsive-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}@media (min-width:40rem){.text-responsive-2xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}@media (min-width:64rem){.text-responsive-2xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}}:where(.space-responsive-sm>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}@media (min-width:40rem){:where(.space-responsive-sm>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}}:where(.space-responsive-md>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}@media (min-width:40rem){:where(.space-responsive-md>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}}:where(.space-responsive-lg>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}@media (min-width:40rem){:where(.space-responsive-lg>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}}@media (min-width:64rem){:where(.space-responsive-lg>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*12)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*12)*calc(1 - var(--tw-space-y-reverse)))}}.p-responsive{padding:calc(var(--spacing)*4)}@media (min-width:40rem){.p-responsive{padding:calc(var(--spacing)*6)}}@media (min-width:64rem){.p-responsive{padding:calc(var(--spacing)*8)}}.px-responsive{padding-inline:calc(var(--spacing)*4)}@media (min-width:40rem){.px-responsive{padding-inline:calc(var(--spacing)*6)}}@media (min-width:64rem){.px-responsive{padding-inline:calc(var(--spacing)*8)}}.py-responsive{padding-block:calc(var(--spacing)*16)}@media (min-width:40rem){.py-responsive{padding-block:calc(var(--spacing)*20)}}@media (min-width:64rem){.py-responsive{padding-block:calc(var(--spacing)*24)}}.container-responsive{max-width:var(--container-7xl);padding-inline:calc(var(--spacing)*4);margin-inline:auto}@media (min-width:40rem){.container-responsive{padding-inline:calc(var(--spacing)*6)}}@media (min-width:64rem){.container-responsive{padding-inline:calc(var(--spacing)*8)}}.grid-responsive-1,.grid-responsive-2{grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media (min-width:40rem){.grid-responsive-2{grid-template-columns:repeat(2,minmax(0,1fr))}}.grid-responsive-3{grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media (min-width:40rem){.grid-responsive-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:64rem){.grid-responsive-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.grid-responsive-4{grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media (min-width:40rem){.grid-responsive-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:64rem){.grid-responsive-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.flex-responsive{flex-direction:column;display:flex}@media (min-width:40rem){.flex-responsive{flex-direction:row}}.flex-responsive-reverse{flex-direction:column-reverse;display:flex}@media (min-width:40rem){.flex-responsive-reverse{flex-direction:row}}.gap-responsive-sm{gap:calc(var(--spacing)*2)}@media (min-width:40rem){.gap-responsive-sm{gap:calc(var(--spacing)*3)}}.gap-responsive-md{gap:calc(var(--spacing)*4)}@media (min-width:40rem){.gap-responsive-md{gap:calc(var(--spacing)*6)}}.gap-responsive-lg{gap:calc(var(--spacing)*6)}@media (min-width:40rem){.gap-responsive-lg{gap:calc(var(--spacing)*8)}}@media (min-width:64rem){.gap-responsive-lg{gap:calc(var(--spacing)*12)}}.form__error{margin-top:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-red-400);display:none}.form__error.show{display:block}.form__message{margin-top:calc(var(--spacing)*4);border-radius:var(--radius-lg);padding:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.form__message--success{border-style:var(--tw-border-style);border-width:1px;border-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.form__message--success{border-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.form__message--success{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.form__message--success{background-color:color-mix(in oklab,var(--color-green-500)10%,transparent)}}.form__message--success{color:var(--color-green-400)}.form__message--error{border-style:var(--tw-border-style);border-width:1px;border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.form__message--error{border-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.form__message--error{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.form__message--error{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.form__message--error{color:var(--color-red-400)}.form__message.hidden{display:none}.form__message.show{display:block}.btn .btn-loading{align-items:center;gap:calc(var(--spacing)*2);display:inline-flex}.btn .btn-loading:before{content:"";height:calc(var(--spacing)*4);width:calc(var(--spacing)*4);animation:var(--animate-spin);border-style:var(--tw-border-style);border-width:2px;border-color:var(--color-slate-400);border-top-color:#0000;border-radius:3.40282e38px}.btn:disabled{cursor:not-allowed;opacity:.6}.input:invalid:not(:placeholder-shown),.textarea:invalid:not(:placeholder-shown){border-color:var(--color-red-500)}:is(.input:invalid:not(:placeholder-shown),.textarea:invalid:not(:placeholder-shown)):focus{border-color:var(--color-red-400);--tw-ring-color:var(--color-red-300)}.input:valid:not(:placeholder-shown),.textarea:valid:not(:placeholder-shown){border-color:var(--color-green-500)}:is(.input:valid:not(:placeholder-shown),.textarea:valid:not(:placeholder-shown)):focus{border-color:var(--color-green-400);--tw-ring-color:var(--color-green-300)}.form__group{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;--tw-ease:var(--ease-in-out);transition-duration:.2s;transition-timing-function:var(--ease-in-out)}.form__group:focus-within .form__label{color:var(--color-teal-300)}}@layer utilities{.sticky{position:sticky}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mt-2{margin-top:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.block{display:block}.flex{display:flex}.hidden{display:none}.h-6{height:calc(var(--spacing)*6)}.h-\[2\.5em\]{height:2.5em}.w-6{width:calc(var(--spacing)*6)}.w-auto{width:auto}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-slate-800{border-color:var(--color-slate-800)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black)30%,transparent)}}.p-2{padding:calc(var(--spacing)*2)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.align-middle{vertical-align:middle}.text-neutral-400{color:var(--color-neutral-400)}.text-slate-300{color:var(--color-slate-300)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:text-white:hover{color:var(--color-white)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media (min-width:40rem){.sm\:hidden{display:none}.sm\:h-\[3em\]{height:3em}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-leading{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}.kpi[data-astro-cid-zsov6f23]{line-height:1}
