:root{--color-white: #ffffff;--color-black: #000000;--color-neutral-50: #F9FCFF;--color-neutral-100: #EEF6FF;--color-neutral-200: #DEE9F5;--color-neutral-300: #CBD6E1;--color-neutral-400: #ADB5BF;--color-neutral-500: #85919D;--color-neutral-600: #626D79;--color-neutral-700: #444E5A;--color-neutral-800: #28313C;--color-neutral-900: #141B23;--color-neutral-950: #060C13;--color-primary-50: #F7FDFF;--color-primary-100: #E5F9FF;--color-primary-200: #CFEEF7;--color-primary-300: #BCDAE3;--color-primary-400: #80C0D1;--color-primary-500: #479CB2;--color-primary-600: #1E7A8F;--color-primary-700: #005768;--color-primary-800: #003743;--color-primary-900: #001F26;--color-primary-950: #000E12;--primary-alpha: rgba(30, 122, 143, .24);--fg-primary: var(--color-neutral-50);--fg-secondary: var(--color-neutral-300);--fg-tertiary: var(--color-neutral-400);--fg-on-primary: var(--color-white);--fg-on-secondary: var(--color-neutral-950);--bg-canvas: var(--color-neutral-950);--bg-primary: var(--color-neutral-900);--bg-secondary: var(--color-neutral-800);--bg-tertiary: var(--color-neutral-700);--interactive-primary: var(--color-primary-600);--interactive-primary-hover: var(--color-primary-500);--interactive-primary-active: var(--color-primary-600);--interactive-secondary: var(--color-neutral-50);--interactive-secondary-hover: var(--color-neutral-100);--interactive-secondary-active: var(--color-neutral-50);--interactive-foreground: var(--color-primary-400);--interactive-foreground-hover: var(--color-primary-500);--interactive-foreground-active: var(--color-primary-400);--interactive-focus: var(--primary-alpha);--border-primary: var(--color-neutral-700);--border-secondary: var(--color-neutral-800);--border-tertiary: var(--color-neutral-900);--font-family-header: "Lora", serif;--font-family-base: "Libre Franklin", sans-serif;--font-size-display-lg: 4.5rem;--font-size-display-md: 3.75rem;--font-size-display-sm: 3rem;--font-size-display-xs: 2.5rem;--font-size-header-lg: 2.25rem;--font-size-header-md: 1.875rem;--font-size-header-sm: 1.5rem;--font-size-header-xs: 1.25rem;--font-size-body-lg: 1.125rem;--font-size-body-md: 1rem;--font-size-body-sm: .875rem;--font-size-body-xs: .75rem;--font-size-label: .75rem;--font-size-small: .75rem;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-display-lg: 5rem;--line-height-display-md: 4.25rem;--line-height-display-sm: 3.5rem;--line-height-display-xs: 3rem;--line-height-header-lg: 2.5rem;--line-height-header-md: 2.25rem;--line-height-header-sm: 2rem;--line-height-header-xs: 1.75rem;--line-height-body-lg: 1.75rem;--line-height-body-md: 1.5rem;--line-height-body-sm: 1.25rem;--line-height-body-xs: 1rem;--line-height-supporting: 1rem;--letter-spacing-lg: -.04em;--letter-spacing-md: -.03em;--letter-spacing-sm: -.02em;--letter-spacing-xs: -.01em;--letter-spacing-supporting: .02em;--letter-spacing-label: .175em;--spacing-0: 0;--spacing-1: .125rem;--spacing-2: .25rem;--spacing-3: .375rem;--spacing-4: .5rem;--spacing-6: .75rem;--spacing-8: 1rem;--spacing-10: 1.25rem;--spacing-12: 1.5rem;--spacing-16: 2rem;--spacing-20: 2.5rem;--spacing-24: 3rem;--spacing-24: 3.5rem;--spacing-32: 4rem;--spacing-40: 5rem;--spacing-48: 6rem;--spacing-64: 8rem;--spacing-128: 16rem;--width-xxs: 8rem;--width-xs: 14rem;--width-sm: 16rem;--width-md: 23.5rem;--width-lg: 30rem;--width-xl: 48rem;--width-2xl: 62rem;--width-3xl: 80rem;--width-4xl: 96rem;--b-radius-none: 0;--b-radius-xs: .125rem;--b-radius-sm: .25rem;--b-radius-md: .375rem;--b-radius-lg: .5rem;--b-radius-xl: .75rem;--b-radius-2xl: 1rem;--b-radius-3xl: 1.5rem;--b-radius-full: 9999px;--b-width-sm: 1px;--b-width-md: 2px;--b-width-lg: 4px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}input,button,textarea,select{font:inherit}html{font-size:16px}@media(max-width:768px){html{font-size:14px}}body{font-family:var(--font-family-base);font-size:var(--font-size-body-lg);font-weight:var(--font-weight-regular);line-height:var(--line-height-body-lg);color:var(--fg-primary);background-color:var(--bg-canvas)}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-header);font-weight:var(--font-weight-medium)}h1{font-size:var(--font-size-display-lg);line-height:var(--line-height-display-lg);letter-spacing:var(--letter-spacing-lg)}h2{font-size:var(--font-size-display-md);line-height:var(--line-height-display-md);letter-spacing:var(--letter-spacing-md)}h3{font-size:var(--font-size-display-sm);line-height:var(--line-height-display-sm);letter-spacing:var(--letter-spacing-sm)}h4{font-size:var(--font-size-display-xs);line-height:var(--line-height-display-xs);letter-spacing:var(--letter-spacing-xs)}h5{font-size:var(--font-size-header-lg);line-height:var(--line-height-header-lg);letter-spacing:var(--letter-spacing-xs)}h6{font-family:var(--font-family-body);font-size:var(--font-size-body-sm);font-weight:var(--font-weight-semibold);line-height:var(--line-height-body-sm);letter-spacing:var(--letter-spacing-label);text-transform:uppercase}a{color:var(--interactive-foreground);text-decoration:underline;transition:color .18s ease}a:hover{color:var(--interactive-foreground-hover)}a:active{color:var(--interactive-active)}a span{display:flex;align-items:center;gap:var(--spacing-4)}@media(max-width:1024px){a{min-height:44px}}button span{display:flex;align-items:center;gap:var(--spacing-4)}.text-body-header{font-size:var(--font-size-header-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-header-md)}.text-body-lg{font-size:var(--font-size-body-lg);font-weight:var(--font-weight-regular);line-height:var(--line-height-body-lg)}.text-body-sm{font-size:var(--font-size-body-sm);font-weight:var(--font-weight-regular);line-height:var(--line-height-body-sm)}.text-supporting-small{font-size:var(--font-size-small);font-weight:var(--font-weight-regular);line-height:var(--line-height-supporting);letter-spacing:var(--letter-spacing-supporting)}.interactive{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.btn{display:flex;justify-content:center;align-items:center;gap:var(--spacing-4);padding:var(--spacing-6) var(--spacing-10);border:none;border-radius:var(--b-radius-lg)}@media(max-width:768px){.btn{min-height:44px}}.btn-primary{color:var(--fg-on-primary);background-color:var(--interactive-primary);transition:background-color .18s ease}.btn-primary:hover{background-color:var(--interactive-primary-hover)}.btn-primary:active{background-color:var(--interactive-primary-active)}.btn-secondary{color:var(--fg-on-secondary);background-color:var(--interactive-secondary);transition:background-color .18s ease}.btn-secondary:hover{background-color:var(--interactive-secondary-hover)}.btn-secondary:active{background-color:var(--interactive-secondary-active)}.btn-label{padding:var(--spacing-6) 0;background:none;color:var(--interactive-foreground);transition:color .18s ease}.btn-label:hover{color:var(--interactive-foreground-hover)}.btn-label:active{color:var(--interactive-foreground-active)}.background[data-astro-cid-y3soregm]{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:-1}.background__canvas[data-astro-cid-y3soregm]{position:absolute;inset:0;display:block;width:100%;height:100%}.background--fallback[data-astro-cid-y3soregm]{background-color:var(--bg-canvas);background-image:radial-gradient(ellipse 120% 80% at 100% 0%,rgba(39,66,86,.2) 0%,transparent 70%),radial-gradient(ellipse 120% 80% at 0% 40%,rgba(139,164,181,.1) 0%,transparent 70%)}.background--fallback[data-astro-cid-y3soregm] .background__canvas[data-astro-cid-y3soregm]{display:none}.background__noise[data-astro-cid-y3soregm]{position:absolute;inset:0;background-image:url(/images/noise-200x200.webp);background-repeat:repeat;opacity:.3;pointer-events:none}@media(max-width:376px){.background__noise[data-astro-cid-y3soregm]{background-image:none;background-color:#ffffff0a}}@media(prefers-reduced-motion:reduce){.background__noise[data-astro-cid-y3soregm]{background-image:none;background-color:#ffffff0a}}.icon[data-astro-cid-ar54w44g],.icon[data-astro-cid-o3hpxpc5],.icon[data-astro-cid-buy45ouo],.icon[data-astro-cid-5my554kc],.icon[data-astro-cid-65x7ouem],.icon[data-astro-cid-bejqc2ep]{display:inline-block;vertical-align:middle}footer[data-astro-cid-mcmxhn6i]{width:100%;background-color:var(--bg-primary)}.footer__info[data-astro-cid-mcmxhn6i]{display:flex;justify-content:space-between;align-items:center}@media(max-width:768px){.footer__info[data-astro-cid-mcmxhn6i]{flex-direction:column;align-items:center;gap:var(--spacing-20)}}.footer__location[data-astro-cid-mcmxhn6i]{display:inline}.icon__wrapper[data-astro-cid-mcmxhn6i]{padding-inline:var(--spacing-1)}body{position:relative;min-height:100vh}section,footer{display:flex;flex-direction:column;align-items:center;padding:var(--spacing-64) var(--spacing-128)}section .container{display:flex;flex-direction:column;gap:var(--spacing-16);width:100%;max-width:var(--width-3xl)}footer{padding:var(--spacing-16) var(--spacing-128)}footer .container{display:flex;flex-direction:column;gap:var(--spacing-32);width:100%;max-width:var(--width-3xl)}@media(max-width:1280px){section{padding:var(--spacing-32) var(--spacing-64)}footer{padding:var(--spacing-16) var(--spacing-64)}}@media(max-width:1024px){section{padding:var(--spacing-32)}section .container{gap:var(--spacing-12)}footer{padding:var(--spacing-16) var(--spacing-32)}footer .container{gap:var(--spacing-32)}}@media(max-width:480px){section{padding:var(--spacing-32) var(--spacing-16)}footer{padding:var(--spacing-16)}}.about__text[data-astro-cid-7myazz2t]{display:flex;flex-direction:column;gap:var(--spacing-12)}.about__text[data-astro-cid-7myazz2t] p[data-astro-cid-7myazz2t]{color:var(--fg-secondary)}.canvas[data-astro-cid-btvtipn6]{display:block;width:100%;height:100%;opacity:0;transition:opacity .4s ease}.canvas[data-astro-cid-btvtipn6].loaded{opacity:1}.hero__layout[data-astro-cid-nu6mjmvg]{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-24)}.hero__content[data-astro-cid-nu6mjmvg]{display:flex;flex-direction:column;gap:var(--spacing-24);align-self:start;max-width:var(--width-xl)}.hero__text[data-astro-cid-nu6mjmvg]{display:flex;flex-direction:column;gap:var(--spacing-12)}.hero__header[data-astro-cid-nu6mjmvg]{display:flex;flex-direction:column;gap:var(--spacing-0)}.hero__greeting[data-astro-cid-nu6mjmvg]{color:var(--fg-secondary)}.hero__body[data-astro-cid-nu6mjmvg]{display:flex;flex-direction:column;gap:var(--spacing-8)}.hero__description[data-astro-cid-nu6mjmvg]{max-width:32ch;color:var(--fg-secondary)}.hero__actions[data-astro-cid-nu6mjmvg]{display:flex;gap:var(--spacing-8)}.hero__actions[data-astro-cid-nu6mjmvg] a[data-astro-cid-nu6mjmvg]{padding:var(--spacing-8) 0;text-decoration:none}.hero__canvas[data-astro-cid-nu6mjmvg]{width:min(480px,100%);aspect-ratio:1;margin:0 auto}@media(max-width:1024px){.hero__layout[data-astro-cid-nu6mjmvg]{grid-template-columns:1fr}}.tag[data-astro-cid-blwjyjpt]{display:flex;align-items:center;gap:var(--spacing-4);padding:var(--spacing-4);border-radius:var(--b-radius-lg);border:1px solid var(--border-secondary);background-color:var(--bg-primary)}.project__container[data-astro-cid-mspuyifq]{position:relative;display:flex;gap:var(--spacing-12);padding:var(--spacing-12);margin-inline:calc(-1 * var(--spacing-12));border-radius:var(--b-radius-2xl);isolation:auto;transition:opacity .3s ease,transform .3s cubic-bezier(.34,1.56,.64,1)}.project__container[data-astro-cid-mspuyifq]:before{content:"";position:absolute;inset:0;border-radius:inherit;background-color:#141b2333;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 4px 8px #0000001c,0 2px 4px #00000012,inset 0 1px #b0b5bc1f;opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:-1}@media(hover:hover)and (pointer:fine)and (min-width:481px){.project__container[data-astro-cid-mspuyifq]:hover{transform:scale(1.005)}.project__container[data-astro-cid-mspuyifq]:hover:before{opacity:1}.project__container[data-astro-cid-mspuyifq]:active{transform:scale(.995);transition:opacity .3s ease,transform .15s cubic-bezier(.22,1,.36,1)}.project__cards:has(.project__container:hover) .project__container[data-astro-cid-mspuyifq]:not(:hover){opacity:.4}}@media(max-width:1024px){.project__container[data-astro-cid-mspuyifq]{flex-direction:column}}.project__thumbnail[data-astro-cid-mspuyifq]{position:relative;overflow:hidden;flex-shrink:0;width:224px;height:128px;border-radius:var(--b-radius-lg);border:1px solid var(--border-secondary);transition:border-color .3s ease}.project__container[data-astro-cid-mspuyifq]:has(.project__title-link):hover .project__thumbnail[data-astro-cid-mspuyifq],.project__container[data-astro-cid-mspuyifq]:has(.project__title-link):active .project__thumbnail[data-astro-cid-mspuyifq]{border-color:var(--border-primary)}.project__thumbnail__img[data-astro-cid-mspuyifq]{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.project__info[data-astro-cid-mspuyifq]{display:flex;flex-direction:column;gap:var(--spacing-16)}.project__body[data-astro-cid-mspuyifq]{display:flex;flex-direction:column;gap:var(--spacing-8)}.project__text[data-astro-cid-mspuyifq]{display:flex;flex-direction:column;gap:var(--spacing-4)}.project__header[data-astro-cid-mspuyifq]{display:flex;align-items:center;gap:var(--spacing-6)}.project__container[data-astro-cid-mspuyifq]:has(.project__title-link):hover .project__header[data-astro-cid-mspuyifq],.project__container[data-astro-cid-mspuyifq]:has(.project__title-link):hover .project__header[data-astro-cid-mspuyifq]:active{color:var(--interactive-foreground)}.project__title-link[data-astro-cid-mspuyifq]{min-height:0;text-decoration:none;color:inherit}.project__link-overlay[data-astro-cid-mspuyifq]{position:absolute;inset:0;z-index:1;border-radius:var(--b-radius-2xl)}.project__arrow[data-astro-cid-mspuyifq]{display:flex;transition:transform .3s ease,color .1s ease}.project__container[data-astro-cid-mspuyifq]:hover .project__arrow[data-astro-cid-mspuyifq],.project__container[data-astro-cid-mspuyifq]:active .project__arrow[data-astro-cid-mspuyifq]{transform:translate(2px,-2px)}.project__description[data-astro-cid-mspuyifq]{color:var(--fg-secondary)}.project__tags[data-astro-cid-mspuyifq]{display:flex;flex-wrap:wrap;gap:var(--spacing-4)}.project__actions[data-astro-cid-mspuyifq]{position:relative;display:flex}.project__actions[data-astro-cid-mspuyifq] a[data-astro-cid-mspuyifq]{position:relative;z-index:2;text-decoration:none}.project__cards[data-astro-cid-sztydw62]{position:relative;display:flex;flex-direction:column;gap:var(--spacing-12)}.divider[data-astro-cid-sztydw62]{height:1px;background-color:var(--border-secondary)}
