:root{--lang-color:#18181b;--lang-background:white;--text-shadow:white;--selection-shade:#bddafd;--accent-1:#07a;--accent-2:#690;--accent-3:#905;--accent-4:#df9306;--hue-1:#ffffff80;--hue-2:#999;--hue-3:crimson}.dark{--lang-color:#fff;--lang-background:#18181ba4;--text-shadow:#18181b;--selection-shade:#333;--accent-1:#4ab7ff;--accent-2:#b4f72f;--accent-3:#06fafa;--accent-4:#f5a207;--hue-1:transparent;--hue-2:#fff;--hue-3:#c26af5}code[class*=language-],pre[class*=language-]{color:var(--lang-color);text-shadow:0 1px var(--text-shadow);font-family:var(--gitlabmono), Monaco, "Andale Mono", "Ubuntu Mono", monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-webkit-hyphens:none;hyphens:none;tab-size:4;background:0 0;font-size:.83rem;font-weight:200;line-height:1.5}pre[class*=language-]::-moz-selection{text-shadow:none;background:var(--selection-shade)}pre[class*=language-] ::-moz-selection{text-shadow:none;background:var(--selection-shade)}code[class*=language-]::-moz-selection{text-shadow:none;background:var(--selection-shade)}code[class*=language-] ::-moz-selection{text-shadow:none;background:var(--selection-shade)}pre[class*=language-]::-moz-selection{text-shadow:none;background:var(--selection-shade)}pre[class*=language-] ::-moz-selection{text-shadow:none;background:var(--selection-shade)}code[class*=language-]::-moz-selection{text-shadow:none;background:var(--selection-shade)}code[class*=language-] ::-moz-selection{text-shadow:none;background:var(--selection-shade)}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{text-shadow:none;background:var(--selection-shade)}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{margin:.5em 0;padding:1rem;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:var(--lang-background)}:not(pre)>code[class*=language-]{white-space:normal;border-radius:.3em;padding:.1em}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#708090}.token.punctuation{color:var(--hue-2)}.namespace{opacity:.7}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.deleted{color:var(--accent-3)}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:var(--accent-2)}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:#9a6e3a;background:var(--hue-1)}.token.atrule,.token.attr-value,.token.keyword{color:var(--accent-1)}.token.function,.token.class-name{color:var(--hue-3)}.token.regex,.token.important,.token.variable{color:var(--accent-4)}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}pre[data-line]{padding:1em 0 1em 3em;position:relative}.line-highlight{padding:inherit 0;pointer-events:none;line-height:inherit;white-space:pre;background:linear-gradient(90deg,#997a661a 70%,#997a6600);margin-top:1em;position:absolute;left:0;right:0}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);color:#f5f2f0;text-align:center;vertical-align:.3em;min-width:1em;text-shadow:none;background-color:#997a6666;border-radius:999px;padding:0 .5em;font:700 65%/1.5 sans-serif;position:absolute;top:.4em;left:.6em;box-shadow:0 1px #fff}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:before,.line-numbers .line-highlight:after{content:none}
*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;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}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.left-0{left:0}.top-0{top:0}.z-10{z-index:10}.z-30{z-index:30}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-3{margin-left:.75rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-32{margin-top:8rem}.mt-44{margin-top:11rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-\[1200\/630\]{aspect-ratio:1200/630}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-96{height:24rem}.h-\[100dvh\]{height:100dvh}.h-\[35px\]{height:35px}.h-\[60px\]{height:60px}.h-\[75dvh\]{height:75dvh}.h-\[88px\]{height:88px}.h-auto{height:auto}.h-full{height:100%}.min-h-\[28px\]{min-height:28px}.min-h-\[3\.5rem\]{min-height:3.5rem}.min-h-\[500px\]{min-height:500px}.min-h-\[60vh\]{min-height:60vh}.min-h-\[80px\]{min-height:80px}.min-h-full{min-height:100%}.w-10{width:2.5rem}.w-16{width:4rem}.w-28{width:7rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-8{width:2rem}.w-\[2px\]{width:2px}.w-\[35px\]{width:35px}.w-\[60px\]{width:60px}.w-\[88px\]{width:88px}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[28px\]{min-width:28px}.min-w-\[80px\]{min-width:80px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[450px\]{max-width:450px}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.flex-shrink-0,.shrink-0{flex-shrink:0}.translate-y-2{--tw-translate-y:.5rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-180{--tw-rotate:-180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-0{--tw-rotate:0deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-10{row-gap:2.5rem}.gap-y-2{row-gap:.5rem}.gap-y-4{row-gap:1rem}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-clip{overflow:clip}.overflow-x-auto{overflow-x:auto}.break-words{overflow-wrap:break-word}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-x{border-left-width:1px;border-right-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-transparent{border-color:#0000}.border-zinc-100{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.border-zinc-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.bg-primary-color{--tw-bg-opacity:1;background-color:rgb(51 224 146/var(--tw-bg-opacity))}.bg-secondary-bg{background-color:#fafafa66}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:.5rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pl-5{padding-left:1.25rem}.text-center{text-align:center}.font-incognito{font-family:var(--incognito)}.font-inter{font-family:var(--inter)}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-\[\.2em\]{letter-spacing:.2em}.tracking-normal{letter-spacing:0}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-widest{letter-spacing:.1em}.text-primary-color{--tw-text-opacity:1;color:rgb(51 224 146/var(--tw-text-opacity))}.text-secondary-color{--tw-text-opacity:1;color:rgb(12 206 107/var(--tw-text-opacity))}.text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.text-zinc-700{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.text-zinc-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.decoration-primary-color{text-decoration-color:#33e092}.underline-offset-4{text-underline-offset:4px}.shadow-line-light{--tw-shadow:#11111a1a 0px 1px 0px;--tw-shadow-colored:0px 1px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}html{scroll-behavior:smooth}body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);background-image:url(/images/noise.png);background-position:0 0;background-size:200px 200px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.path{stroke-dasharray:none;animation:none}*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}h1,h2,h3,h4{font-family:var(--incognito), "Inter", sans-serif}.path{stroke-dasharray:500 100;animation:100s linear infinite alternate-reverse animate}@keyframes animate{0%{stroke-dashoffset:0}to{stroke-dashoffset:12433.8px}}:root{--ease-out:cubic-bezier(.22, 1, .36, 1);--dur-fast:.16s;--dur-hero:.2s;--dur-base:.25s;--dur-slow:.4s}html:not(.dark){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--light-accent-text:#047857;--light-accent-ui:#059669;--light-accent-hover:#065f46;--light-text-primary:#27272a;--light-text-secondary:#52525b;--light-border:#8f8f99;--light-border-soft:#d4d4d8;--light-surface:#fff;--light-surface-muted:#fafafa;--light-surface-chip:#f4f4f5;--light-shadow:0 3px 12px #18181b14;--light-noise-wash:#fffffff0;--light-code-background:#f4f4f5;--light-code-foreground:#27272a;--light-code-selection:#d1fae5;--light-code-muted:#52525b;--light-code-blue:#1d4ed8;--light-code-green:#047857;--light-code-red:#9f1239;--light-code-amber:#854d0e;--light-code-purple:#6d28d9;--light-code-operator:#854d0e;--lang-color:var(--light-code-foreground);--lang-background:var(--light-code-background);--text-shadow:transparent;--selection-shade:var(--light-code-selection);--accent-1:var(--light-code-blue);--accent-2:var(--light-code-green);--accent-3:var(--light-code-red);--accent-4:var(--light-code-amber);--hue-1:transparent;--hue-2:var(--light-code-muted);--hue-3:var(--light-code-purple)}html:not(.dark) body{color:var(--light-text-primary);background-color:var(--light-surface);background-image:linear-gradient(var(--light-noise-wash), var(--light-noise-wash)), url(/images/noise.png)}html:not(.dark) .text-primary-color,html:not(.dark) .text-secondary-color{color:var(--light-accent-text)!important}html:not(.dark) .bg-primary-color,html:not(.dark) .fill-primary-color{background-color:var(--light-accent-ui)!important;fill:var(--light-accent-ui)!important}html:not(.dark) .border-primary-color,html:not(.dark) .decoration-primary-color{border-color:var(--light-accent-ui)!important;-webkit-text-decoration-color:var(--light-accent-ui)!important;text-decoration-color:var(--light-accent-ui)!important}html:not(.dark) .text-zinc-400,html:not(.dark) .text-zinc-500,html:not(.dark) .text-zinc-300{color:var(--light-text-secondary)!important}html:not(.dark) .border-zinc-100,html:not(.dark) .border-zinc-200,html:not(.dark) .border-b-zinc-200,html:not(.dark) .border-t-zinc-100{border-color:var(--light-border)!important}html:not(.dark) a:not(.project-card):hover{color:var(--light-accent-hover)}html:not(.dark) :focus-visible{outline-color:var(--light-accent-text)!important}html:not(.dark) button:focus-visible,html:not(.dark) a:focus-visible,html:not(.dark) input:focus-visible,html:not(.dark) textarea:focus-visible,html:not(.dark) select:focus-visible{outline:2px solid var(--light-accent-text);outline-offset:2px}html:not(.dark) ::-moz-selection{color:var(--light-text-primary);background:var(--light-code-selection)}html:not(.dark) ::selection{color:var(--light-text-primary);background:var(--light-code-selection)}html:not(.dark) hr{border-color:var(--light-border)}html:not(.dark) blockquote{color:var(--light-text-secondary);border-left-color:var(--light-accent-ui);background-color:var(--light-surface-chip)}html:not(.dark) input,html:not(.dark) textarea,html:not(.dark) select{color:var(--light-text-primary);background-color:var(--light-surface);border-color:var(--light-border)}html:not(.dark) input::-moz-placeholder{color:var(--light-text-secondary);opacity:1}html:not(.dark) textarea::-moz-placeholder{color:var(--light-text-secondary);opacity:1}html:not(.dark) input::placeholder,html:not(.dark) textarea::placeholder{color:var(--light-text-secondary);opacity:1}html:not(.dark) ::-webkit-scrollbar-track{background:var(--light-surface-chip)}html:not(.dark) ::-webkit-scrollbar-thumb{background:var(--light-border);border:2px solid var(--light-surface-chip);border-radius:999px}html:not(.dark) .site-header{background-color:var(--light-surface);border-color:var(--light-border-soft)}html:not(.dark) .light-active-nav[aria-current=page]{text-decoration:underline;-webkit-text-decoration-color:var(--light-accent-ui);text-decoration-color:var(--light-accent-ui);text-underline-offset:6px;text-decoration-thickness:1px;color:var(--light-accent-text)!important}html:not(.dark) .light-active-nav:hover,html:not(.dark) .mobile-nav-link:hover{color:var(--light-accent-hover)!important}html:not(.dark) .mobile-nav-link{box-shadow:0 1px 0 var(--light-border-soft)}html:not(.dark) .mobile-nav-link[aria-current=page]{text-decoration:underline;-webkit-text-decoration-color:var(--light-accent-ui);text-decoration-color:var(--light-accent-ui);text-underline-offset:5px;text-decoration-thickness:1px;color:var(--light-accent-text)!important}html:not(.dark) .theme-toggle,html:not(.dark) .mobile-menu-toggle{color:var(--light-accent-text);background-color:var(--light-surface-chip);border-color:var(--light-border)}html:not(.dark) .profile-photo{outline:1px solid var(--light-border);outline-offset:1px;box-shadow:var(--light-shadow)}html:not(.dark) .typing-role-accent{color:var(--light-accent-text)!important;-webkit-text-decoration-color:var(--light-accent-ui)!important;text-decoration-color:var(--light-accent-ui)!important}html:not(.dark) .typing-role-cursor{background-color:var(--light-accent-ui)!important}html:not(.dark) .hero-cubes [stroke="url(#paint-linear)"]{stroke:var(--light-accent-ui)!important;stroke-opacity:.82!important;stroke-width:2.2px!important}html:not(.dark) .hero-cubes path[fill=\#27B173],html:not(.dark) .hero-cubes path[fill=\#27b173]{fill:var(--light-accent-ui)!important}html:not(.dark) .hero-cubes linearGradient stop{stop-color:var(--light-accent-ui)!important;stop-opacity:1!important}html:not(.dark) .education-row,html:not(.dark) .experience-row{border-bottom:1px solid var(--light-border-soft)}html:not(.dark) .education-logo-tile,html:not(.dark) .experience-logo-tile{background-color:var(--light-surface)!important;border-color:var(--light-border)!important}html:not(.dark) .trinity-logo-tile{border-color:var(--light-border)!important;background-color:#27272a!important}html:not(.dark) .project-card{box-shadow:var(--light-shadow);background-color:var(--light-surface)!important;border-color:var(--light-border)!important}html:not(.dark) .project-card:hover{box-shadow:0 5px 16px #18181b1f;background-color:var(--light-surface-muted)!important;border-color:var(--light-accent-ui)!important}html:not(.dark) .project-icon-tile{box-shadow:inset 0 0 0 1px var(--light-border);background-color:var(--light-surface-chip)!important}html:not(.dark) .project-cover{background-color:var(--light-surface-muted)!important;border-color:var(--light-border)!important}html:not(.dark) .project-cover-art{color:var(--light-accent-ui)!important}html:not(.dark) .project-cover-art path{stroke-opacity:.42!important;stroke-width:2.2px!important}html:not(.dark) .project-tag,html:not(.dark) .skill-badge{box-shadow:inset 0 0 0 1px var(--light-border);color:var(--light-text-primary)!important;background-color:var(--light-surface-chip)!important}html:not(.dark) .skill-group{box-shadow:var(--light-shadow);background-color:var(--light-surface)!important;border-color:var(--light-border)!important}html:not(.dark) .skill-group:hover{border-color:var(--light-accent-ui)!important}html:not(.dark) .github-action,html:not(.dark) .project-external-link,html:not(.dark) .resume-action{box-shadow:var(--light-shadow);color:var(--light-text-primary)!important;background-color:var(--light-surface-muted)!important;border-color:var(--light-border)!important}html:not(.dark) .github-action:hover,html:not(.dark) .project-external-link:hover,html:not(.dark) .resume-action:hover{color:var(--light-accent-hover)!important;background-color:var(--light-surface-chip)!important;border-color:var(--light-accent-ui)!important}html:not(.dark) .project-external-link{text-underline-offset:3px;text-decoration:underline;color:var(--light-accent-text)!important}html:not(.dark) .project-gallery-item{background-color:var(--light-surface);border-color:var(--light-border)!important}html:not(.dark) .resume-viewer{box-shadow:var(--light-shadow);background-color:var(--light-surface);border-color:var(--light-border)!important}html:not(.dark) .resume-fallback{box-shadow:var(--light-shadow);border-color:var(--light-border)!important;background-color:var(--light-surface-muted)!important}html:not(.dark) .social-link{color:var(--light-text-primary);-webkit-text-decoration-color:var(--light-border);text-decoration-color:var(--light-border);border-color:var(--light-border)!important}html:not(.dark) .social-link:hover,html:not(.dark) .social-link:hover svg{color:var(--light-accent-hover)!important;border-color:var(--light-accent-ui)!important}html:not(.dark) .footer-link{color:var(--light-text-primary)!important}html:not(.dark) .footer-link:hover{color:var(--light-accent-hover)!important}html:not(.dark) .site-footer{border-color:var(--light-border-soft)!important}html:not(.dark) .codeblock-panel{color:var(--light-code-foreground);box-shadow:var(--light-shadow)}html:not(.dark) .codeblock-header{color:var(--light-code-foreground);background-color:var(--light-code-background)!important;border-color:var(--light-border)!important}html:not(.dark) pre[class*=language-],html:not(.dark) code[class*=language-],html:not(.dark) .codeblock-panel pre{color:var(--light-code-foreground)!important;background-color:var(--light-code-background)!important;text-shadow:none!important}html:not(.dark) .codeblock-panel{--lang-color:var(--light-code-foreground);--lang-background:var(--light-code-background);--text-shadow:transparent;--hue-2:var(--light-code-muted);--accent-1:var(--light-code-blue);--accent-2:var(--light-code-green);--accent-3:var(--light-code-red);--accent-4:var(--light-code-amber);--hue-3:var(--light-code-purple)}html:not(.dark) .codeblock-panel .token.operator,html:not(.dark) .codeblock-panel .token.entity,html:not(.dark) .codeblock-panel .language-css .token.string,html:not(.dark) .codeblock-panel .style .token.string{color:var(--light-code-operator)!important}html:not(.dark) .code-copy-button{color:var(--light-accent-text);border-radius:4px}html:not(.dark) .code-copy-button:hover{color:var(--light-accent-hover);background-color:var(--light-border-soft)}html:not(.dark) .empty-state{color:var(--light-text-primary);background-color:var(--light-surface-muted)!important;border-color:var(--light-border)!important}.light-active-nav,.mobile-nav-link{transition:color var(--dur-fast) var(--ease-out), text-decoration-color var(--dur-base) var(--ease-out);text-decoration-line:underline;text-decoration-color:#0000;text-decoration-thickness:1px}.light-active-nav{text-underline-offset:6px}.mobile-nav-link{text-underline-offset:5px}html.dark .light-active-nav[aria-current=page],html.dark .mobile-nav-link[aria-current=page]{text-decoration-color:#33e092;color:#33e092!important}html.dark .light-active-nav:hover,html.dark .mobile-nav-link:hover{color:#33e092!important}.reveal{--reveal-delay:0s}.reveal.is-reveal-pending{opacity:0;transform:translateY(12px)}.reveal.is-revealing{animation:reveal-up var(--dur-slow) var(--ease-out) var(--reveal-delay) both}.reveal--load.is-revealing{animation-duration:var(--dur-hero)}@keyframes reveal-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}html.motion-ready body,html.motion-ready body :not(.path){transition-property:color,background-color,border-color,text-decoration-color,transform,opacity;transition-duration:var(--dur-fast);transition-timing-function:var(--ease-out)}html.motion-ready body,html.motion-ready .theme-toggle,html.motion-ready .mobile-menu-panel,html.motion-ready .project-card,html.motion-ready .education-row,html.motion-ready .experience-row,html.motion-ready .skill-group,html.motion-ready .skill-badge,html.motion-ready .project-icon-tile,html.motion-ready .resume-action,html.motion-ready .github-action,html.motion-ready .project-external-link,html.motion-ready .social-link{transition-duration:var(--dur-base)}html.motion-ready .project-card:hover,html.motion-ready .education-row:hover,html.motion-ready .experience-row:hover,html.motion-ready .skill-group:hover{transform:translateY(-2px)}html.motion-ready .project-card:hover .project-icon-tile{transform:scale(1.03)}html.motion-ready .skill-badge:hover,html.motion-ready .project-tag:hover{color:var(--light-accent-hover);box-shadow:inset 0 0 0 1px var(--light-accent-ui)}html.dark.motion-ready .skill-badge:hover,html.dark.motion-ready .project-tag:hover{color:#33e092;box-shadow:inset 0 0 0 1px #33e092}html:not(.dark).motion-ready .education-row:hover,html:not(.dark).motion-ready .experience-row:hover{box-shadow:var(--light-shadow)}html.dark.motion-ready .education-row:hover,html.dark.motion-ready .experience-row:hover{border-bottom-color:#33e092}html.motion-ready .social-link{position:relative}html.motion-ready .social-link:after{content:"";transform-origin:0;width:100%;height:1px;transition:transform var(--dur-base) var(--ease-out);background-color:currentColor;position:absolute;bottom:-1px;left:0;transform:scaleX(0)}html.motion-ready .social-link:hover:after,html.motion-ready .social-link:focus-visible:after{transform:scaleX(1)}html.motion-ready button:active,html.motion-ready .github-action:active,html.motion-ready .project-external-link:active,html.motion-ready .resume-action:active{transform:scale(.98)}html.motion-ready .theme-toggle{transition-duration:var(--dur-base)}html.motion-ready .mobile-menu-panel{transition:opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out), visibility 0s linear var(--dur-base)}html.motion-ready .mobile-menu-panel.mobile-menu-open{transition-delay:0s}.mobile-menu-closed{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-6px)}.mobile-menu-open{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}@media (prefers-reduced-motion:reduce){.reveal.is-reveal-pending,.reveal.is-revealing{opacity:1!important;animation:none!important;transform:none!important}html.motion-ready body,html.motion-ready body :not(.path){scroll-behavior:auto!important;transition-duration:0s!important}html.motion-ready .mobile-menu-panel,html.motion-ready .mobile-menu-panel.mobile-menu-open{transition-duration:0s;transition-delay:0s}}.hover\:border-zinc-200:hover{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.hover\:text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.focus-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-primary-color:focus-visible{outline-color:#33e092}.group:hover .group-hover\:text-zinc-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}:is(.dark .dark\:border-zinc-700){--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}:is(.dark .dark\:border-zinc-800){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}:is(.dark .dark\:border-b-zinc-800){--tw-border-opacity:1;border-bottom-color:rgb(39 39 42/var(--tw-border-opacity))}:is(.dark .dark\:bg-\[\#141414\]){--tw-bg-opacity:1;background-color:rgb(20 20 20/var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary-bg){background-color:#27272b66}:is(.dark .dark\:bg-zinc-800){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}:is(.dark .dark\:bg-zinc-900){--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}:is(.dark .dark\:text-primary-color){--tw-text-opacity:1;color:rgb(51 224 146/var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\:text-zinc-200){--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}:is(.dark .dark\:text-zinc-300){--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}:is(.dark .dark\:text-zinc-400){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}:is(.dark .dark\:text-zinc-600){--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}:is(.dark .dark\:shadow-line-dark){--tw-shadow:#1d1d20 0px 1px 0px;--tw-shadow-colored:0px 1px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}:is(.dark .dark\:hover\:border-zinc-700:hover),:is(.dark .hover\:dark\:border-zinc-700):hover{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}:is(.dark .dark\:hover\:text-primary-color:hover){--tw-text-opacity:1;color:rgb(51 224 146/var(--tw-text-opacity))}.group:hover :is(.dark .group-hover\:dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}@media (min-width:640px){.sm\:h-14{height:3.5rem}.sm\:min-h-\[2\.5rem\]{min-height:2.5rem}.sm\:w-14{width:3.5rem}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-6xl{font-size:3.75rem;line-height:1}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:768px){.md\:mb-28{margin-bottom:7rem}.md\:mt-0{margin-top:0}.md\:block{display:block}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:px-16{padding-left:4rem;padding-right:4rem}}@media (min-width:1024px){.lg\:mt-32{margin-top:8rem}.lg\:min-h-\[250px\]{min-height:250px}.lg\:w-\[450px\]{width:450px}.lg\:max-w-2xl{max-width:42rem}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-end{align-items:flex-end}.lg\:justify-between{justify-content:space-between}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-16{padding-left:4rem;padding-right:4rem}.lg\:text-start{text-align:start}.lg\:text-5xl{font-size:3rem;line-height:1}.lg\:leading-\[3\.7rem\]{line-height:3.7rem}}@media (min-width:1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:flex-row{flex-direction:row}.xl\:items-center{align-items:center}.xl\:justify-center{justify-content:center}}
@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/46a9e2f250689b4a-s.03ez25a9g3i0n.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/76b70a1dbe058eb5-s.3i9rha7jpxn0q.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2fb76073e23fd9e4-s.2o7ko1d-5m1xu.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6131cbbf5549afa2-s.1ee5w62fj497l.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/45462fd7b7c12654-s.1way2z9fj6cig.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/ba63f6a0e436df8e-s.0szrwpqb9mkwe.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/07c7676b89ed2778-s.p.45535valc9rzk.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.0%;size-adjust:107.12%}.mHk8EW_className{font-family:Inter,Inter Fallback;font-style:normal}.mHk8EW_variable{--inter:"Inter", "Inter Fallback"}
@font-face{font-family:incognito;src:url(../media/incognito_bold-s.p.1-cvn6pi80_cp.woff2)format("woff2");font-display:swap;font-weight:800;font-style:normal}@font-face{font-family:incognito;src:url(../media/incognito_condensed-s.p.0vsnnfqrj5ab1.woff2)format("woff2");font-display:swap;font-weight:700;font-style:normal}@font-face{font-family:incognito;src:url(../media/incognito_medium-s.p.1e5xi2uf6bx89.woff2)format("woff2");font-display:swap;font-weight:600;font-style:normal}@font-face{font-family:incognito;src:url(../media/incognito_regular-s.p.2d4c1j__x-1hd.woff2)format("woff2");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:incognito Fallback;src:local(Arial);ascent-override:80.29%;descent-override:17.83%;line-gap-override:0.0%;size-adjust:97.03%}.otHDzq_className{font-family:incognito,incognito Fallback}.otHDzq_variable{--incognito:"incognito", "incognito Fallback"}
@font-face{font-family:gitlabmono;src:url(../media/gitlab_mono-s.p.3gp6mh38du6wy.woff2)format("woff2");font-display:swap;font-weight:300;font-style:normal}@font-face{font-family:gitlabmono;src:url(../media/gitlab_mono-s.p.3gp6mh38du6wy.woff2)format("woff2");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:gitlabmono;src:url(../media/gitlab_mono-s.p.3gp6mh38du6wy.woff2)format("woff2");font-display:swap;font-weight:500;font-style:normal}@font-face{font-family:gitlabmono;src:url(../media/gitlab_mono-s.p.3gp6mh38du6wy.woff2)format("woff2");font-display:swap;font-weight:600;font-style:normal}@font-face{font-family:gitlabmono Fallback;src:local(Arial);ascent-override:77.57%;descent-override:22.82%;line-gap-override:0.0%;size-adjust:131.49%}.sa7Hoq_className{font-family:gitlabmono,gitlabmono Fallback}.sa7Hoq_variable{--gitlabmono:"gitlabmono", "gitlabmono Fallback"}
