/*! tailwindcss v4.3.0 | 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-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-content:"";--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-duration:initial;--tw-leading:initial;--tw-tracking: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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-800:oklch(39.8% .195 277.366);--color-slate-50:oklch(98.4% .003 247.858);--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-600:oklch(44.6% .043 257.281);--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-slate-950:oklch(12.9% .042 264.695);--color-gray-500:oklch(55.1% .027 264.364);--color-white:#fff;--spacing:.25rem;--breakpoint-xl:80rem;--container-md:28rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--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:calc(1.5 / 1);--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:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tight:-.025em;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--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;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Plus Jakarta Sans,system-ui,sans-serif;line-height:1.5}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;-webkit-text-decoration: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{--light-bg-page:#fff;--light-bg-soft:#f1f5f9;--light-bg-surface:#f8fafc;--light-border-soft:#cbd5e1;--light-border-strong:#e2e8f0;--light-text-primary:#1e293b;--light-text-secondary:#334155;--light-link:#4f46e5;--light-link-hover:#3730a3;--light-brand-primary:#211f2f;--light-brand-primary-mid:#4c4766;--light-brand-secondary:#918ca9;--light-tooltip-caret:#403b57;--light-projects-cta-from:#1f2538;--light-projects-cta-mid:#5d6c8f;--light-projects-cta-to:#94a3c5;--nav-control-height:2.35rem;--hero-badge-gradient:linear-gradient(135deg, #211f2f 0%, #918ca9 100%);--hero-badge-radius:.375rem;--hero-badge-padding:.35em .65em;--hero-badge-line-height:1;--color-primary:var(--light-brand-primary);--color-primary-mid:var(--light-brand-primary-mid);--color-secondary:var(--light-brand-secondary);--color-tooltip-caret:var(--light-tooltip-caret);--bg-body:radial-gradient(circle at top right, #918ca92e, transparent 32rem);--gradient-tooltip:linear-gradient(135deg, var(--light-brand-primary) 0%, var(--light-brand-primary-mid) 55%, var(--light-brand-secondary) 100%);--gradient-projects-cta:linear-gradient(110deg, var(--light-projects-cta-from) 0%, var(--light-projects-cta-mid) 55%, var(--light-projects-cta-to) 100%);--shadow-nav-menu:0 1rem 2rem #211f2f14;--shadow-nav-link-active:0 0 0 1.5px #4c47668c, 0 0 12px #4c476647;--shadow-tooltip:0 .75rem 1.5rem #211f2f4d;--shadow-switcher:0 1rem 2rem #211f2f24;--shadow-card:0 .7rem 1.6rem #211f2f14;--shadow-btn-primary:0 .75rem 1.75rem #211f2f2e;--shadow-btn-primary-hover:0 1rem 2.4rem #4c476657;--shadow-btn-outline:0 .65rem 1.5rem #211f2f14;--shadow-btn-outline-hover:0 1rem 2.4rem #211f2f33;--shadow-contact-card-hover:0 0 0 2px #64748b40, var(--shadow-btn-outline-hover);--shadow-projects-cta:0 1rem 2.5rem #1f253829;--projects-cta-btn-bg:#ffffff0f;--projects-cta-btn-hover-bg:#fffffff2;--hero-media-max:40rem;--hero-img-max:45rem;--hero-actions-width:12.5rem;--hero-grid-max:1360px;--blog-pre-bg:var(--light-bg-surface);--blog-pre-border:var(--light-border-soft);--blog-pre-text:var(--light-text-primary);--blog-pre-shadow:0 0 0 1px #94a3b81f, 0 8px 18px #0f172a14;--blog-mermaid-shadow:0 0 0 1px #94a3b81f, 0 8px 18px #0f172a14;--color-link:var(--light-link);--color-link-hover:var(--light-link-hover);--error-code-bg:var(--light-bg-soft);--error-code-border:var(--light-border-strong);--error-code-tracking:.08em;--error-description-color:var(--light-text-secondary)}html[data-theme=dark]{--dark-bg-page:#020617;--dark-bg-elevated:#0f172a;--dark-bg-surface:#1e293b;--dark-bg-surface-hover:#334155;--dark-border-strong:#334155;--dark-border-contrast:#e5e7eb;--dark-text-primary:#f1f5f9;--dark-text-heading:#e2e8f0;--dark-text-body:#cbd5e1;--dark-text-muted:#94a3b8;--dark-link:#a5b4fc;--dark-link-hover:#e0e7ff;--dark-link-strong-hover:#e0e7ff;--dark-border-muted:#64748b;--dark-border-hover:#475569;--bg-body:radial-gradient(circle at top right, #94a3b824, transparent 34rem);--gradient-projects-cta:linear-gradient(110deg, #0f172a 0%, #1e293b 55%, #334155 100%);--shadow-projects-cta:0 1rem 2.6rem #02061780;--projects-cta-btn-bg:#94a3b81f;--shadow-nav-link-active:0 0 0 1.5px #918ca999, 0 0 14px #918ca959;--shadow-contact-card-hover:0 0 0 2px #94a3b873, var(--shadow-btn-outline-hover);--shadow-btn-primary:0 .85rem 2rem #0f172a6b;--shadow-btn-primary-hover:0 1rem 2.5rem #818cf84d;--shadow-btn-outline:0 .85rem 2rem #0f172a47;--shadow-btn-outline-hover:0 1rem 2.5rem #94a3b838;--color-link:var(--dark-link);--color-link-hover:var(--dark-link-strong-hover);--blog-pre-bg:var(--dark-bg-elevated);--blog-pre-border:var(--dark-border-strong);--blog-pre-text:var(--dark-text-heading);--blog-pre-shadow:none;--blog-mermaid-shadow:0 0 0 1px #33415552, 0 10px 22px #02061773;--error-code-bg:var(--dark-bg-surface);--error-code-border:var(--dark-border-strong);--error-description-color:var(--dark-text-body)}html{scroll-behavior:smooth}body{background-color:var(--color-white);color:#211f2f;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--light-bg-page);background-image:var(--bg-body)}html[data-theme=dark] body{background-color:var(--color-slate-950);color:var(--color-slate-100);background-image:var(--bg-body)}}@layer components{.page-shell{width:100%;max-width:var(--breakpoint-xl);padding-inline:calc(var(--spacing) * 6);margin-inline:auto}@media (min-width:64rem){.page-shell{padding-inline:calc(var(--spacing) * 10)}}@media (min-width:80rem){.page-shell{padding-inline:calc(var(--spacing) * 12)}}.page-section{max-width:var(--container-6xl);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 14);margin-inline:auto}@media (min-width:48rem){.page-section{padding-inline:calc(var(--spacing) * 8)}}.article-shell{max-width:var(--container-3xl);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 14);margin-inline:auto}@media (min-width:48rem){.article-shell{padding-inline:calc(var(--spacing) * 8)}}.page-header{margin-bottom:calc(var(--spacing) * 10)}.page-title{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height));--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold);color:#211f2f}@media (min-width:48rem){.page-title{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}.page-description{margin-top:calc(var(--spacing) * 4);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));color:var(--color-slate-700)}.gradient-text{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:#211f2f;--tw-gradient-to:#918ca9;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));color:#0000;-webkit-background-clip:text;background-clip:text}.tag-chip{border-style:var(--tw-border-style);border-width:1px;border-color:#e2e8f099;border-radius:3.40282e38px}@supports (color:color-mix(in lab, red, red)){.tag-chip{border-color:color-mix(in oklab, var(--color-slate-200) 60%, transparent)}}.tag-chip{background-color:var(--color-slate-100);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-slate-600)}.tag-chip-link{border-style:var(--tw-border-style);border-width:1px;border-color:#e2e8f099;border-radius:3.40282e38px}@supports (color:color-mix(in lab, red, red)){.tag-chip-link{border-color:color-mix(in oklab, var(--color-slate-200) 60%, transparent)}}.tag-chip-link{background-color:var(--color-slate-100);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-slate-600);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))}@media (hover:hover){.tag-chip-link:hover{background-color:var(--color-slate-200);color:#211f2f}}.section-anchor{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);color:#211f2f;text-decoration-line:none;display:block}@media (min-width:48rem){.section-anchor{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}.section-anchor--secondary{color:#918ca9}.section-anchor__hash{margin-left:calc(var(--spacing) * 2);vertical-align:middle;font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--color-slate-400);opacity:0;transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.section-anchor__hash:is(:where(.group):hover *){opacity:1}}.card-surface{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-200);background-color:var(--color-white);padding:calc(var(--spacing) * 6);box-shadow:var(--shadow-card);border-radius:1.25rem}.btn-primary{border-radius:var(--radius-lg);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 4);--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);color:var(--color-white);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;background-color:#211f2f;justify-content:center;align-items:center;transition-duration:.2s;display:inline-flex}@media (hover:hover){.btn-primary:hover{background-color:#4c4766}}.btn-primary{box-shadow:var(--shadow-btn-primary)}.btn-primary:hover{box-shadow:var(--shadow-btn-primary-hover)}.btn-outline{border-radius:var(--radius-lg);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 4);--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);color:#211f2f;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;border-width:1px;border-color:#211f2f;justify-content:center;align-items:center;transition-duration:.2s;display:inline-flex}@media (hover:hover){.btn-outline:hover{color:var(--color-white);background-color:#211f2f}}.btn-outline{box-shadow:var(--shadow-btn-outline)}.btn-outline:hover{box-shadow:var(--shadow-btn-outline-hover)}.pagination-nav{height:calc(var(--spacing) * 10);border-radius:var(--radius-xl);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing) * 4);--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);color:#211f2f;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;border-width:1px;border-color:#211f2f;justify-content:center;align-items:center;transition-duration:.2s;display:inline-flex}@media (hover:hover){.pagination-nav:hover{color:var(--color-white);background-color:#211f2f}}.pagination-page{height:calc(var(--spacing) * 10);width:calc(var(--spacing) * 10);border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-200);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);color:var(--color-slate-600);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;justify-content:center;align-items:center;transition-duration:.2s;display:inline-flex}@media (hover:hover){.pagination-page:hover{color:#211f2f;border-color:#211f2f}}.pagination-current{height:calc(var(--spacing) * 10);width:calc(var(--spacing) * 10);border-radius:var(--radius-xl);border-style:var(--tw-border-style);--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);background-color:#211f2f;border-width:2px;border-color:#211f2f;justify-content:center;align-items:center;display:inline-flex;color:#fff!important;-webkit-text-fill-color:white!important}.nav-shell{align-items:flex-end;gap:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 4);display:flex}@media (min-width:48rem){.nav-shell{gap:calc(var(--spacing) * 5)}}@media (min-width:64rem){.nav-shell{gap:calc(var(--spacing) * 6);padding-block:calc(var(--spacing) * 5)}}.nav-actions{align-items:center;gap:calc(var(--spacing) * 2);flex-shrink:0;margin-left:auto;display:flex}@media (min-width:40rem){.nav-actions{gap:calc(var(--spacing) * 3)}}@media (min-width:48rem){.nav-actions{gap:calc(var(--spacing) * 5)}}@media (min-width:64rem){.nav-actions{gap:calc(var(--spacing) * 6)}}.brand-link{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-leading:1;--tw-font-weight:var(--font-weight-extrabold);line-height:1;font-weight:var(--font-weight-extrabold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);white-space:nowrap;color:#211f2f;flex:1}@media (min-width:40rem){.brand-link{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}@media (min-width:48rem){.brand-link{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}}@media (min-width:64rem){.brand-link{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}}@media (min-width:80rem){.brand-link{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}}.nav-menu{align-items:flex-end;gap:calc(var(--spacing) * 3);display:none}@media (min-width:48rem){.nav-menu{gap:calc(var(--spacing) * 4);display:flex}}@media (min-width:64rem){.nav-menu{gap:calc(var(--spacing) * 5)}}@media (min-width:80rem){.nav-menu{gap:calc(var(--spacing) * 6)}}.nav-menu--open{top:calc(var(--spacing) * 16);right:calc(var(--spacing) * 4);z-index:20;align-items:flex-start;gap:calc(var(--spacing) * 3);border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-200);background-color:var(--color-white);padding:calc(var(--spacing) * 4);box-shadow:var(--shadow-nav-menu);flex-direction:column;display:flex;position:absolute}.nav-link{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-leading:1;--tw-font-weight:var(--font-weight-bold);line-height:1;font-weight:var(--font-weight-bold);color:#211f2f;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));justify-content:center;align-items:center;display:inline-flex;position:relative}@media (hover:hover){.nav-link:hover{color:#918ca9}}@media (min-width:40rem){.nav-link{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}@media (min-width:48rem){.nav-link{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media (min-width:64rem){.nav-link{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}.nav-link--active{color:#211f2f;box-shadow:var(--shadow-nav-link-active);border-radius:.55rem;padding:.25rem .45rem}.nav-link__label{margin-left:calc(var(--spacing) * 2.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-leading:1;--tw-font-weight:var(--font-weight-semibold);line-height:1;font-weight:var(--font-weight-semibold)}@media (min-width:48rem){.nav-link__label{display:none}}.nav-menu--open .nav-link{z-index:10;justify-content:flex-start;gap:calc(var(--spacing) * 2);position:relative}.nav-menu--open .nav-link--active{color:#211f2f;box-shadow:none;border-radius:0;padding:0}.nav-menu--open .nav-link--active:hover{color:#211f2f}.nav-menu-highlight{pointer-events:none;right:calc(var(--spacing) * 1);left:calc(var(--spacing) * 1);border-radius:var(--radius-lg);background-color:var(--color-slate-100);opacity:0;z-index:0;transition:top .15s,height .15s,opacity .1s;position:absolute}.nav-link[data-tooltip]:after{content:attr(data-tooltip);pointer-events:none;z-index:40;border-style:var(--tw-border-style);border-width:1px;border-color:#fff3;border-radius:.65rem;position:absolute;top:calc(100% + .7rem);left:50%}@supports (color:color-mix(in lab, red, red)){.nav-link[data-tooltip]:after{border-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.nav-link[data-tooltip]:after{padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 1);--tw-font-weight:var(--font-weight-bold);font-size:.68rem;font-weight:var(--font-weight-bold);--tw-tracking:.12em;letter-spacing:.12em;white-space:nowrap;color:var(--color-white);text-transform:uppercase;opacity:0;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;background:var(--gradient-tooltip);box-shadow:var(--shadow-tooltip);text-align:center;transition-duration:.2s;transform:translate(-50%,-.2rem)scale(.96)}.nav-link[data-tooltip]:before{content:"";z-index:39;background:var(--color-tooltip-caret);clip-path:polygon(50% 0,0 100%,100% 100%);opacity:0;pointer-events:none;width:.8rem;height:.5rem;transition:opacity .2s,transform .2s;position:absolute;top:calc(100% + .56rem);left:50%;transform:translate(-50%,-.2rem)}.nav-link[data-tooltip]:hover:after,.nav-link[data-tooltip]:focus-visible:after{opacity:1;transform:translate(-50%)scale(1)}.nav-link[data-tooltip]:hover:before,.nav-link[data-tooltip]:focus-visible:before{opacity:1;transform:translate(-50%)}.nav-link--active[data-tooltip]:after,.nav-link--active[data-tooltip]:before{content:none;opacity:0}.nav-link--active[data-tooltip]:hover:after,.nav-link--active[data-tooltip]:focus-visible:after{content:attr(data-tooltip)}.nav-link--active[data-tooltip]:hover:before,.nav-link--active[data-tooltip]:focus-visible:before{content:""}.nav-menu--open .nav-link[data-tooltip]:before,.nav-menu--open .nav-link[data-tooltip]:after{display:none}.nav-toggle-btn{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-300);padding-inline:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:1;--tw-font-weight:var(--font-weight-semibold);line-height:1;font-weight:var(--font-weight-semibold);color:#211f2f;justify-content:center;align-items:center;display:inline-flex}@media (min-width:48rem){.nav-toggle-btn{display:none}}.nav-toggle-btn,.theme-switcher__trigger,.lang-switcher__trigger,.nav-toggle-btn{height:var(--nav-control-height)}@media (min-width:768px){.theme-switcher__trigger,.lang-switcher__trigger{height:auto}}.theme-switcher,.lang-switcher{position:relative}.theme-switcher[open],.lang-switcher[open]{z-index:30}.theme-switcher summary,.lang-switcher summary{list-style:none}.theme-switcher summary::-webkit-details-marker{display:none}.lang-switcher summary::-webkit-details-marker{display:none}.theme-switcher__trigger{min-width:calc(var(--spacing) * 0);cursor:pointer;justify-content:center;align-items:center;gap:calc(var(--spacing) * 2);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-200);background-color:#f8fafce6;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.theme-switcher__trigger{background-color:color-mix(in oklab, var(--color-slate-50) 90%, transparent)}}.theme-switcher__trigger{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-bold);font-weight:var(--font-weight-bold);color:#211f2f;--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);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.theme-switcher__trigger:hover{border-color:var(--color-slate-300);background-color:var(--color-white);--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px 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)}}@media (min-width:48rem){.theme-switcher__trigger{border-radius:3.40282e38px;min-width:3.25rem}}.theme-switcher__icon,.lang-switcher__icon{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.theme-switcher__chevron,.lang-switcher__chevron{--tw-leading:1;--tw-font-weight:var(--font-weight-black);font-size:.95rem;line-height:1;font-weight:var(--font-weight-black);color:var(--color-slate-500);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.theme-switcher[open] .theme-switcher__chevron,.lang-switcher[open] .lang-switcher__chevron{transform:rotate(180deg)}.theme-switcher[open] .theme-switcher__trigger,.lang-switcher[open] .lang-switcher__trigger{border-color:var(--color-slate-300);background-color:var(--color-white);--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px 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)}.theme-switcher__menu,.lang-switcher__menu{top:calc(100% + .65rem);right:calc(var(--spacing) * 0);z-index:30;border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:#e2e8f0cc;position:absolute;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.theme-switcher__menu,.lang-switcher__menu{border-color:color-mix(in oklab, var(--color-slate-200) 80%, transparent)}}.theme-switcher__menu,.lang-switcher__menu{background-color:#fffffff2}@supports (color:color-mix(in lab, red, red)){.theme-switcher__menu,.lang-switcher__menu{background-color:color-mix(in oklab, var(--color-white) 95%, transparent)}}.theme-switcher__menu,.lang-switcher__menu{padding:calc(var(--spacing) * 1.5);--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,);box-shadow:var(--shadow-switcher)}.theme-switcher__menu{min-width:10rem}.theme-switcher__option{align-items:center;gap:calc(var(--spacing) * 2.5);border-radius:var(--radius-xl);width:100%;padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);text-align:left;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);color:#211f2f;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));display:flex}@media (hover:hover){.theme-switcher__option:hover{background-color:var(--color-slate-100);color:#918ca9}}.theme-switcher__option.is-active,.lang-switcher__option.is-active{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);color:#211f2f}.lang-switcher__trigger{min-width:calc(var(--spacing) * 0);cursor:pointer;justify-content:space-between;align-items:center;gap:calc(var(--spacing) * 1.5);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-200);background-color:#f8fafce6;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.lang-switcher__trigger{background-color:color-mix(in oklab, var(--color-slate-50) 90%, transparent)}}.lang-switcher__trigger{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-bold);font-weight:var(--font-weight-bold);color:#211f2f;--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);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.lang-switcher__trigger:hover{border-color:var(--color-slate-300);background-color:var(--color-white);--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px 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)}}@media (min-width:48rem){.lang-switcher__trigger{border-radius:3.40282e38px;min-width:5.5rem}}.lang-switcher__current{--tw-leading:1;--tw-tracking:.18em;letter-spacing:.18em;font-size:.95rem;line-height:1}.lang-switcher__menu{min-width:11rem}.lang-switcher__option{justify-content:space-between;align-items:center;gap:calc(var(--spacing) * 4);border-radius:var(--radius-xl);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2.5);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);color:#211f2f;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));display:flex}@media (hover:hover){.lang-switcher__option:hover{background-color:var(--color-slate-100);color:#918ca9}}.lang-switcher__option-label{--tw-leading:1;line-height:1}.lang-switcher__option-code{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);--tw-tracking:.16em;letter-spacing:.16em;color:var(--color-slate-400)}.lang-switcher__option.is-active .lang-switcher__option-code{color:#211f2f}.hero-grid{column-gap:calc(var(--spacing) * 12);row-gap:calc(var(--spacing) * 5);padding-top:calc(var(--spacing) * 12);padding-bottom:calc(var(--spacing) * 24);display:grid}.hero-copy{padding-right:calc(var(--spacing) * 4);text-align:center}.hero-badge{margin-bottom:calc(var(--spacing) * 6);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);color:var(--color-white);text-transform:uppercase;background:var(--hero-badge-gradient);border-radius:var(--hero-badge-radius);padding:var(--hero-badge-padding);line-height:var(--hero-badge-line-height);white-space:nowrap;display:inline-block}.hero-subtitle{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-leading:var(--leading-normal);line-height:var(--leading-normal);--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light);color:var(--color-gray-500)}@media (min-width:40rem){.hero-subtitle{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media (min-width:48rem){.hero-subtitle{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}@media (min-width:80rem){.hero-subtitle{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}.hero-title{margin-bottom:calc(var(--spacing) * 12);font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height));--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}@media (min-width:40rem){.hero-title{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}}@media (min-width:48rem){.hero-title{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}@media (min-width:64rem){.hero-title{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}}@media (min-width:80rem){.hero-title{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}}.hero-media-wrap{margin-top:calc(var(--spacing) * 1);justify-content:center;display:flex}.hero-media{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:#211f2f;--tw-gradient-to:#918ca9;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));width:75vw;height:75vw;max-width:var(--hero-media-max);max-height:var(--hero-media-max);border-radius:5vw;margin-top:2vw;position:relative;overflow:visible}.hero-media img{z-index:1;width:auto;height:80vw;max-height:var(--hero-img-max);max-width:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.hero-actions{margin-inline:auto;margin-top:calc(var(--spacing) * 4);margin-bottom:calc(var(--spacing) * 4);width:100%;max-width:var(--container-md);gap:calc(var(--spacing) * 4);display:grid}.hero-actions a{width:100%}@media (min-width:640px){.hero-grid{row-gap:calc(var(--spacing) * 8)}.hero-media-wrap{margin-top:calc(var(--spacing) * 4)}.hero-media{width:60vw;height:60vw;margin-top:5vw}.hero-media img{height:65vw}.hero-actions a{width:100%;min-width:0;max-width:none}}@media (min-width:768px){.hero-media{width:50vw;height:50vw}.hero-media img{height:55vw}.hero-actions{justify-content:center;display:flex}.hero-actions a{width:var(--hero-actions-width);min-width:var(--hero-actions-width);max-width:var(--hero-actions-width)}}@media (min-width:1024px){.hero-media{width:40vw;height:40vw}.hero-media img{height:45vw}}@media (min-width:1280px){.hero-media{border-radius:4rem;width:35vw;height:35vw}.hero-media img{height:40vw}.hero-grid{gap:calc(var(--spacing) * 8);grid-template-columns:6fr 6fr;align-items:center}.hero-media-wrap{margin-top:0}.hero-copy{text-align:left}.hero-actions{justify-content:flex-start;max-width:none;margin-left:0;margin-right:0}}@media (min-width:1750px){.hero-grid{max-width:var(--hero-grid-max);grid-template-columns:8fr 4fr}.hero-copy{padding-right:0}}.about-section{background-color:var(--color-slate-50);padding-block:calc(var(--spacing) * 12)}.about-shell{max-width:var(--container-4xl);padding-inline:calc(var(--spacing) * 4);margin-inline:auto}@media (min-width:48rem){.about-shell{padding-inline:calc(var(--spacing) * 8)}}.about-title{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height));--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold);color:#211f2f}@media (min-width:48rem){.about-title{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}.about-title{line-height:1.2}.about-copy{margin-top:calc(var(--spacing) * 10);color:oklab(24.9145% .0101786 -.0283463/.75)}.about-copy p{margin-bottom:calc(var(--spacing) * 4);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.about-copy a,.cv-content a{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-link);text-decoration-line:underline}.about-copy a:hover,.cv-content a:hover{color:var(--color-link-hover)}.about-social{margin-top:calc(var(--spacing) * 10);justify-content:center;gap:calc(var(--spacing) * 3);flex-wrap:wrap;display:flex}.social-icon-btn{height:calc(var(--spacing) * 12);width:calc(var(--spacing) * 12);border-radius:var(--radius-lg);--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:#211f2f;--tw-gradient-to:#918ca9;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));color:var(--color-white);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));justify-content:center;align-items:center;display:inline-flex}@media (hover:hover){.social-icon-btn:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}}.social-icon-btn i{font-size:2rem}.contact-card{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;transition-duration:.2s}.contact-card:hover,.contact-card:focus-visible{border-color:var(--color-slate-400);box-shadow:var(--shadow-contact-card-hover)}.contact-card__icon{flex-shrink:0}.contact-card__icon:hover{transform:none}.projects-cta{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-200);color:var(--color-white);background-image:var(--gradient-projects-cta);box-shadow:var(--shadow-projects-cta);border-radius:1.25rem}.projects-cta__button{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.projects-cta__button{border-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.projects-cta__button{color:var(--color-white);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;background-color:var(--projects-cta-btn-bg);transition-duration:.2s}.projects-cta__button:hover{color:#211f2f;background-color:var(--projects-cta-btn-hover-bg);border-color:#fff}.error-page{padding-block:calc(var(--spacing) * 16)}@media (min-width:48rem){.error-page{padding-block:calc(var(--spacing) * 24)}}.error-card{max-width:var(--container-3xl);text-align:center;margin-inline:auto}.error-code{width:fit-content;padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold);color:#211f2f;text-transform:uppercase;border:1px solid var(--error-code-border);background-color:var(--error-code-bg);letter-spacing:var(--error-code-tracking);border-radius:3.40282e38px;margin-right:auto;display:flex}.error-title{margin-top:calc(var(--spacing) * 4);font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height));--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold);color:#211f2f}@media (min-width:48rem){.error-title{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}.error-description{margin-top:calc(var(--spacing) * 4);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}@media (min-width:48rem){.error-description{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}.error-description{color:var(--error-description-color)}.error-actions{margin-top:calc(var(--spacing) * 10);justify-content:center;gap:calc(var(--spacing) * 4);flex-direction:column;display:flex}@media (min-width:40rem){.error-actions{flex-direction:row}}.cv-content h5{margin-top:calc(var(--spacing) * 5);margin-bottom:calc(var(--spacing) * 2);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);color:#211f2f}.cv-content h5:first-child{margin-top:calc(var(--spacing) * 0)}.cv-content p{margin-bottom:calc(var(--spacing) * 3);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-slate-700)}.cv-content p:last-child{margin-bottom:calc(var(--spacing) * 0)}.project-description a{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-link);text-decoration-line:underline}.project-description a:hover{color:var(--color-link-hover)}.project-description p+p{margin-top:calc(var(--spacing) * 3)}.blog-content :is(h1,h2,h3,h4,h5,h6){position:relative}.heading-anchor{opacity:0;color:#918ca9;pointer-events:none;margin-left:.4em;font-weight:400;text-decoration:none;transition:opacity .15s}.blog-content :is(h1,h2,h3,h4,h5,h6):hover>.heading-anchor{opacity:1;pointer-events:auto}.blog-content pre:not(.mermaid){--tw-prose-pre-bg:var(--blog-pre-bg);--tw-prose-pre-code:var(--blog-pre-text);background-color:var(--blog-pre-bg);border:1px solid var(--blog-pre-border);color:var(--blog-pre-text);box-shadow:var(--blog-pre-shadow)!important}.blog-content pre:not(.mermaid) code{color:inherit!important;background:0 0!important;padding:0!important}.blog-content .highlight pre.chroma .line{display:block}.blog-content details>summary>strong{font-weight:700}.blog-content pre.mermaid{background:var(--blog-pre-bg);border:1px solid var(--blog-pre-border);box-shadow:var(--blog-mermaid-shadow);border-radius:.75rem;padding:1rem}.blog-content pre.mermaid svg{max-width:100%;height:auto;margin-inline:auto;display:block}.blog-content table{-webkit-overflow-scrolling:touch;max-width:100%;display:block;overflow-x:auto}html[data-theme=dark] .text-primary{color:var(--color-slate-200);color:var(--dark-text-heading)!important}html[data-theme=dark] .text-secondary{color:var(--color-indigo-300);color:var(--dark-link)!important}html[data-theme=dark] .page-title{color:var(--dark-text-heading)!important}html[data-theme=dark] .page-description,html[data-theme=dark] .text-slate-700{color:var(--dark-text-body)!important}html[data-theme=dark] :is(.text-slate-600,.text-slate-500,.text-slate-400){color:var(--dark-text-muted)!important}html[data-theme=dark] .bg-slate-100{background-color:var(--color-slate-800)}html[data-theme=dark] header.border-b,html[data-theme=dark] footer.border-t{border-color:var(--color-slate-700);background-color:var(--color-slate-900);border-color:var(--dark-border-strong)!important;background-color:var(--dark-bg-elevated)!important}html[data-theme=dark] .brand-link,html[data-theme=dark] .nav-link{color:var(--dark-text-heading)!important}html[data-theme=dark] .nav-link:hover{color:var(--dark-link)!important}html[data-theme=dark] .card-surface{border-color:var(--color-slate-700);background-color:var(--color-slate-800)}html[data-theme=dark] .card-surface .rounded-2xl .text-slate-700{color:var(--dark-text-body)}html[data-theme=dark] .card-surface .rounded-2xl .text-slate-500{color:var(--dark-text-muted)}html[data-theme=dark] .tag-chip{border-color:var(--color-slate-700);color:var(--color-slate-300);background-color:var(--dark-bg-surface)!important}html[data-theme=dark] .tag-chip-link:hover{background-color:var(--color-slate-700);color:var(--color-slate-100)}html[data-theme=dark] .about-section,html[data-theme=dark] .nav-menu-highlight{background-color:var(--color-slate-800)}html[data-theme=dark] .gradient-text{background-image:linear-gradient(90deg, var(--dark-text-heading) 0%, var(--dark-link) 100%)}html[data-theme=dark] .btn-primary{border-style:var(--tw-border-style);color:var(--color-slate-950);background-color:#918ca9;border-width:1px;border-color:#918ca9}@media (hover:hover){html[data-theme=dark] .btn-primary:hover{border-color:var(--color-indigo-300);background-color:var(--color-indigo-300);color:var(--color-slate-950)}}html[data-theme=dark] .btn-primary{box-shadow:var(--shadow-btn-primary)}html[data-theme=dark] .btn-primary:hover{box-shadow:var(--shadow-btn-primary-hover)}html[data-theme=dark] .btn-outline{border-color:var(--color-slate-400);color:var(--color-slate-100)}@media (hover:hover){html[data-theme=dark] .btn-outline:hover{border-color:var(--color-slate-200);background-color:var(--color-slate-200);color:var(--color-slate-900)}}html[data-theme=dark] .btn-outline{box-shadow:var(--shadow-btn-outline)}html[data-theme=dark] .btn-outline:hover{box-shadow:var(--shadow-btn-outline-hover)}html[data-theme=dark] .pagination-nav{border-color:var(--color-slate-200);background-color:var(--color-slate-100);color:var(--color-slate-950)}html[data-theme=dark] .pagination-nav:hover{border-color:var(--color-slate-300);background-color:#0f172b73}@supports (color:color-mix(in lab, red, red)){html[data-theme=dark] .pagination-nav:hover{background-color:color-mix(in oklab, var(--color-slate-900) 45%, transparent)}}html[data-theme=dark] .pagination-nav:hover{color:var(--color-slate-100)}html[data-theme=dark] .pagination-page{border-color:var(--color-slate-300);background-color:#0f172b73}@supports (color:color-mix(in lab, red, red)){html[data-theme=dark] .pagination-page{background-color:color-mix(in oklab, var(--color-slate-900) 45%, transparent)}}html[data-theme=dark] .pagination-page{color:var(--color-slate-100)}html[data-theme=dark] .pagination-page:hover{border-color:var(--color-slate-200);background-color:var(--color-slate-100);color:var(--color-slate-950)}html[data-theme=dark] .pagination-current{border-color:var(--color-slate-300);background-color:var(--color-slate-800);box-shadow:0 .75rem 1.8rem #0206176b;color:var(--dark-text-primary)!important;-webkit-text-fill-color:var(--dark-text-primary)!important}html[data-theme=dark] .nav-menu--open,html[data-theme=dark] .lang-switcher__menu,html[data-theme=dark] .theme-switcher__menu{border-color:var(--color-slate-700);background-color:var(--color-slate-900)}html[data-theme=dark] .theme-switcher[open] .theme-switcher__trigger,html[data-theme=dark] .lang-switcher[open] .lang-switcher__trigger{border-color:var(--color-slate-600);background-color:var(--color-slate-800);--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px 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)}html[data-theme=dark] .lang-switcher__trigger,html[data-theme=dark] .theme-switcher__trigger,html[data-theme=dark] .nav-toggle-btn{border-color:var(--color-slate-700);background-color:var(--color-slate-900);color:var(--color-slate-100)}html[data-theme=dark] .lang-switcher__option,html[data-theme=dark] .theme-switcher__option{color:var(--color-slate-100)}html[data-theme=dark] :is(.lang-switcher__option:hover,.theme-switcher__option:hover,.lang-switcher__option.is-active,.theme-switcher__option.is-active){background-color:var(--color-slate-800);color:var(--color-indigo-300)}html[data-theme=dark] .about-title{color:var(--dark-text-heading)!important}html[data-theme=dark] .about-copy{color:var(--color-slate-300)}html[data-theme=dark] .about-copy a{color:var(--color-slate-100)}html[data-theme=dark] .social-icon-btn{--tw-gradient-from:var(--color-slate-700);--tw-gradient-to:var(--color-slate-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}html[data-theme=dark] .projects-cta{border-color:var(--color-slate-600)}html[data-theme=dark] .projects-cta__button{border-color:var(--color-slate-200);color:var(--color-slate-100);background-color:var(--projects-cta-btn-bg)}html[data-theme=dark] .projects-cta__button:hover{border-color:var(--color-indigo-200);background-color:var(--color-indigo-100);color:var(--color-slate-950)}html[data-theme=dark] .cv-content p{color:var(--color-slate-300)}html[data-theme=dark] .blog-content{color:var(--dark-text-body)}html[data-theme=dark] .blog-content :is(h1,h2,h3,h4,h5,h6,strong){color:var(--dark-text-primary)}html[data-theme=dark] .blog-content a{color:var(--color-link)}html[data-theme=dark] .blog-content a:hover{color:var(--color-link-hover)}html[data-theme=dark] .blog-content :not(pre)>code{background-color:var(--dark-bg-surface);color:var(--dark-text-heading)}html[data-theme=dark] .blog-content blockquote{border-left-color:var(--dark-border-muted);color:var(--dark-text-body)}html[data-theme=dark] .blog-content .chroma .go{color:var(--dark-text-body)}html[data-theme=dark] .toc a{color:var(--dark-link)}html[data-theme=dark] .toc a:hover{color:var(--dark-text-primary)}}@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.relative{position:relative}.static{position:static}.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}}.mx-auto{margin-inline:auto}.prose{color:oklch(37.2% .044 257.287);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:oklch(51.1% .262 276.966);font-weight:500;text-decoration:underline}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)):hover{color:oklch(39.8% .195 277.366)}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:#211f2f;background-color:oklch(96.8% .007 247.896);border-radius:.25rem;padding:.15em .3em;font-size:.875em;font-weight:400}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:""}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose :where(h2,h3,h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:#211f2f}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-10{height:calc(var(--spacing) * 10)}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-10{width:calc(var(--spacing) * 10)}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-full{max-width:100%}.max-w-none{max-width:none}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-2>: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)))}:where(.space-y-4>: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)))}:where(.space-y-6>: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-y-8>: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)))}:where(.space-y-16>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 16) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 16) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.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-200{border-color:var(--color-slate-200)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-white{background-color:var(--color-white)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-primary{--tw-gradient-from:#211f2f;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-secondary{--tw-gradient-to:#918ca9;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-0{padding-top:calc(var(--spacing) * 0)}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-primary{color:#211f2f}.text-secondary{color:#918ca9}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-white{color:var(--color-white)}.italic{font-style:italic}.underline{text-decoration-line:underline}.transition{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))}.prose-slate{--tw-prose-body:oklch(37.2% .044 257.287);--tw-prose-headings:oklch(20.8% .042 265.755);--tw-prose-lead:oklch(44.6% .043 257.281);--tw-prose-links:oklch(20.8% .042 265.755);--tw-prose-bold:oklch(20.8% .042 265.755);--tw-prose-counters:oklch(55.4% .046 257.417);--tw-prose-bullets:oklch(86.9% .022 252.894);--tw-prose-hr:oklch(92.9% .013 255.508);--tw-prose-quotes:oklch(20.8% .042 265.755);--tw-prose-quote-borders:oklch(92.9% .013 255.508);--tw-prose-captions:oklch(55.4% .046 257.417);--tw-prose-kbd:oklch(20.8% .042 265.755);--tw-prose-kbd-shadows:oklab(20.8% -.00310889 -.0418848/.1);--tw-prose-code:oklch(20.8% .042 265.755);--tw-prose-pre-code:oklch(92.9% .013 255.508);--tw-prose-pre-bg:oklch(27.9% .041 260.031);--tw-prose-th-borders:oklch(86.9% .022 252.894);--tw-prose-td-borders:oklch(92.9% .013 255.508);--tw-prose-invert-body:oklch(86.9% .022 252.894);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.4% .04 256.788);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.4% .04 256.788);--tw-prose-invert-bullets:oklch(44.6% .043 257.281);--tw-prose-invert-hr:oklch(37.2% .044 257.287);--tw-prose-invert-quotes:oklch(96.8% .007 247.896);--tw-prose-invert-quote-borders:oklch(37.2% .044 257.287);--tw-prose-invert-captions:oklch(70.4% .04 256.788);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(86.9% .022 252.894);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .043 257.281);--tw-prose-invert-td-borders:oklch(37.2% .044 257.287)}.select-none{-webkit-user-select:none;user-select:none}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-0:after{content:var(--tw-content);inset:calc(var(--spacing) * 0)}@media (hover:hover){.hover\:text-primary:hover{color:#211f2f}}@media (min-width:48rem){.md\:inline{display:inline}.md\:w-1\/2{width:50%}.md\:w-56{width:calc(var(--spacing) * 56)}.md\:w-auto{width:auto}.md\:shrink-0{flex-shrink:0}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-baseline{align-items:baseline}.md\:items-center{align-items:center}.md\:items-stretch{align-items:stretch}.md\:justify-between{justify-content:space-between}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}.md\:px-10{padding-inline:calc(var(--spacing) * 10)}.md\:py-12{padding-block:calc(var(--spacing) * 12)}.md\:py-16{padding-block:calc(var(--spacing) * 16)}.md\:text-left{text-align:left}.md\:text-right{text-align:right}.md\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.md\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}@media (min-width:64rem){.lg\:p-8{padding:calc(var(--spacing) * 8)}}.dark\:border-slate-700:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-slate-700)}.dark\:bg-slate-900:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-slate-900)}.dark\:text-slate-400:where([data-theme=dark],[data-theme=dark] *){color:var(--color-slate-400)}.dark\:text-slate-500:where([data-theme=dark],[data-theme=dark] *){color:var(--color-slate-500)}.dark\:prose-invert:where([data-theme=dark],[data-theme=dark] *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.prose-headings\:text-primary :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){color:#211f2f}.dark\:prose-headings\:text-slate-100:where([data-theme=dark],[data-theme=dark] *) :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-slate-100)}.prose-a\:text-indigo-600 :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-indigo-600)}.prose-a\:underline :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-line:underline}@media (hover:hover){.hover\:prose-a\:text-indigo-800:hover :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-indigo-800)}}.dark\:prose-a\:text-indigo-300:where([data-theme=dark],[data-theme=dark] *) :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-indigo-300)}.dark\:prose-strong\:text-slate-100:where([data-theme=dark],[data-theme=dark] *) :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-slate-100)}.prose-code\:rounded :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem}.prose-code\:bg-slate-100 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--color-slate-100)}.prose-code\:px-1 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline:calc(var(--spacing) * 1)}.prose-code\:py-0\.5 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){padding-block:calc(var(--spacing) * .5)}.prose-code\:text-primary :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:#211f2f}.prose-code\:before\:content-none :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose-code\:after\:content-none :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:var(--tw-content);--tw-content:none;content:none}.prose-pre\:rounded-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--radius-lg)}.prose-pre\:shadow-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){--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)}.\[\&_a\]\:text-secondary a{color:#918ca9}.\[\&_a\:hover\]\:text-primary a:hover{color:#211f2f}:where(.\[\&_ul\]\:space-y-1 ul>: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)))}.\[\&_ul\]\:pl-4 ul{padding-left:calc(var(--spacing) * 4)}}html[data-theme=dark] .card-surface .rounded-2xl.bg-slate-100{background-color:var(--dark-bg-elevated)!important}.social-icon-btn .svg-inline--fa{width:28px;height:28px}html[data-theme=dark] .section-anchor{color:var(--dark-text-heading)}html[data-theme=dark] .section-anchor--secondary{color:var(--dark-link)}html[data-theme=dark] .page-title{color:var(--dark-text-heading)}html[data-theme=dark] .page-description{color:var(--dark-text-body)}html[data-theme=dark] .cv-content h5,html[data-theme=dark] article .text-primary{color:var(--dark-text-heading)}html[data-theme=dark] article .text-slate-700{color:var(--dark-text-body)}html[data-theme=dark] article :is(.text-slate-500,.text-slate-400,.text-slate-600){color:var(--dark-text-muted)}html[data-theme=dark] header.border-b,html[data-theme=dark] footer.border-t{border-color:var(--dark-border-strong);background-color:var(--dark-bg-elevated)}html[data-theme=dark] footer.border-t a:hover{color:var(--dark-link-hover)!important}html[data-theme=dark] .brand-link,html[data-theme=dark] .nav-link{color:var(--dark-text-heading)}html[data-theme=dark] .nav-link:hover{color:var(--dark-link)}html[data-theme=dark] body{background-color:var(--dark-bg-page);color:var(--dark-text-primary)}html[data-theme=dark] .tag-chip-link{color:var(--dark-text-body)!important;background-color:var(--dark-bg-surface)!important;border-color:var(--dark-border-strong)!important}html[data-theme=dark] .tag-chip-link:hover{color:var(--dark-text-primary)!important;background-color:var(--dark-bg-surface-hover)!important;border-color:var(--dark-border-strong)!important}html[data-theme=dark] .blog-content :is(p,li,ul,ol,blockquote){color:var(--dark-text-body)}html[data-theme=dark] .blog-content :is(h1,h2,h3,h4,h5,h6,strong){color:var(--dark-text-primary)}html[data-theme=dark] .blog-content{--tw-prose-body:var(--dark-text-body);--tw-prose-headings:var(--dark-text-primary);--tw-prose-links:var(--dark-link)}html[data-theme=dark] .blog-content a{color:var(--dark-link)}html[data-theme=dark] .blog-content a:hover{color:var(--dark-link-hover)}html[data-theme=dark] .blog-content :is(p,li) code{color:var(--dark-text-heading);background-color:var(--dark-bg-surface)}html[data-theme=dark] .blog-content :is(th,td) code{color:var(--dark-text-heading)!important;background-color:var(--dark-bg-surface)!important}html[data-theme=dark] .blog-content :is(table,tbody tr,td){color:var(--dark-text-body)}html[data-theme=dark] .blog-content th{color:var(--dark-text-heading)}html[data-theme=dark] .blog-content img[src$=\.svg],html[data-theme=dark] .blog-content img[src*=".svg?"]{filter:invert()}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@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-duration{syntax:"*";inherits:false}@property --tw-leading{syntax:"*";inherits:false}@property --tw-tracking{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-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}
