@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");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}@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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-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-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:"Inter Variable", "Inter", ui-sans-serif, system-ui, sans-serif;--font-mono:"JetBrains Mono Variable", "JetBrains Mono", ui-monospace, monospace;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--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-5xl:3rem;--text-5xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--font-weight-normal:400;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--ease-out:cubic-bezier(.22, 1, .36, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-background:var(--q-50);--color-foreground:var(--q-950);--color-muted:var(--q-700);--color-accent:var(--q-600);--color-accent-secondary:var(--s-600);--color-surface:var(--q-100);--color-surface-elevated:#fff;--color-cursor:var(--q-950);--color-grid:var(--q-950)}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-grid:color-mix(in srgb, var(--q-950) 10%, transparent)}}:root,:host{--color-grid-trail:var(--q-500)}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-grid-trail:color-mix(in srgb, var(--q-500) 18%, transparent)}}:root,:host{--color-grid-hero:var(--q-950)}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-grid-hero:color-mix(in srgb, var(--q-950) 18%, transparent)}}:root,:host{--color-grid-static:var(--q-950)}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-grid-static:color-mix(in srgb, var(--q-950) 7%, transparent)}}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-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}html{scroll-snap-type:y proximity;scroll-behavior:smooth}.snap-section{scroll-snap-stop:always}body{background-color:var(--color-background);min-height:100vh;font-family:var(--font-sans);color:var(--color-foreground);overflow-x:hidden}@media (hover:hover) and (pointer:fine){body{cursor:none}}#app{z-index:1;position:relative}a{color:inherit;text-decoration:none}code,kbd,samp,pre{font-family:var(--font-mono)}}@layer components{.section-backdrop{pointer-events:none;z-index:0;position:absolute;inset:0;overflow:hidden}.section-backdrop--hero .section-backdrop__glow{filter:blur(48px);background:radial-gradient(circle, var(--q-500) 0%, var(--q-700) 45%, transparent 72%);border-radius:50%;width:55%;height:55%;position:absolute;top:35%;right:-8%}@supports (color:color-mix(in lab, red, red)){.section-backdrop--hero .section-backdrop__glow{background:radial-gradient(circle, color-mix(in srgb, var(--q-500) 38%, transparent) 0%, color-mix(in srgb, var(--q-700) 22%, transparent) 45%, transparent 72%)}}.section-backdrop--hero .section-backdrop__glow--secondary{filter:blur(56px);background:radial-gradient(circle, var(--q-400) 0%, var(--q-600) 50%, transparent 75%);border-radius:50%;width:50%;height:50%;position:absolute;top:-15%;left:-12%}@supports (color:color-mix(in lab, red, red)){.section-backdrop--hero .section-backdrop__glow--secondary{background:radial-gradient(circle, color-mix(in srgb, var(--q-400) 32%, transparent) 0%, color-mix(in srgb, var(--q-600) 20%, transparent) 50%, transparent 75%)}}.section-backdrop--muted{background:linear-gradient(180deg, var(--q-50) 0%, var(--q-100) 100%)}@supports (color:color-mix(in lab, red, red)){.section-backdrop--muted{background:linear-gradient(180deg, color-mix(in srgb, var(--q-50) 60%, transparent) 0%, color-mix(in srgb, var(--q-100) 90%, transparent) 100%)}}.section-backdrop--muted .section-backdrop__orb{filter:blur(40px);border-radius:50%;position:absolute}.section-backdrop--muted .section-backdrop__orb--a{background:radial-gradient(circle, var(--q-500) 0%, var(--q-700) 45%, transparent 72%);width:32%;height:32%;bottom:12%;left:-8%}@supports (color:color-mix(in lab, red, red)){.section-backdrop--muted .section-backdrop__orb--a{background:radial-gradient(circle, color-mix(in srgb, var(--q-500) 38%, transparent) 0%, color-mix(in srgb, var(--q-700) 22%, transparent) 45%, transparent 72%)}}.section-backdrop--muted .section-backdrop__orb--b{background:radial-gradient(circle, var(--q-400) 0%, var(--q-600) 50%, transparent 75%);width:28%;height:28%;top:10%;right:-8%}@supports (color:color-mix(in lab, red, red)){.section-backdrop--muted .section-backdrop__orb--b{background:radial-gradient(circle, color-mix(in srgb, var(--q-400) 32%, transparent) 0%, color-mix(in srgb, var(--q-600) 20%, transparent) 50%, transparent 75%)}}#skills .section-backdrop__orb--a{width:26%;height:26%;inset:42% auto auto 38%}#skills .section-backdrop__orb--b{width:22%;height:22%;inset:48% auto auto 52%}#experience .section-backdrop__orb--a{width:30%;height:30%;inset:50% auto auto 50%;transform:translate(-50%,-50%)}#experience .section-backdrop__orb--b{width:24%;height:24%;inset:auto -6% 10% auto}.section-backdrop--projects .section-backdrop__orb{filter:blur(36px);border-radius:50%;position:absolute}.section-backdrop--projects .section-backdrop__orb--a{background:radial-gradient(circle, var(--s-500) 0%, var(--s-700) 45%, transparent 72%);width:28%;height:28%;top:50%;left:50%;transform:translate(-50%,-50%)}@supports (color:color-mix(in lab, red, red)){.section-backdrop--projects .section-backdrop__orb--a{background:radial-gradient(circle, color-mix(in srgb, var(--s-500) 38%, transparent) 0%, color-mix(in srgb, var(--s-700) 22%, transparent) 45%, transparent 72%)}}.section-backdrop--projects .section-backdrop__orb--b{background:radial-gradient(circle, var(--s-400) 0%, var(--s-600) 50%, transparent 75%);width:24%;height:24%;bottom:8%;left:-8%}@supports (color:color-mix(in lab, red, red)){.section-backdrop--projects .section-backdrop__orb--b{background:radial-gradient(circle, color-mix(in srgb, var(--s-400) 32%, transparent) 0%, color-mix(in srgb, var(--s-600) 20%, transparent) 50%, transparent 75%)}}.section-backdrop--projects{background:var(--color-surface);border-top:1px solid var(--q-200);border-bottom:1px solid var(--q-200)}.site-footer{background:var(--color-surface-elevated);border-top:1px solid var(--q-300);position:relative}@supports (color:color-mix(in lab, red, red)){.site-footer{border-top:1px solid color-mix(in srgb, var(--q-300) 40%, transparent)}}.site-footer{overflow:hidden}.site-footer__backdrop{pointer-events:none;position:absolute;inset:0}.site-footer__glow{filter:blur(40px);background:radial-gradient(circle, var(--q-500) 0%, var(--q-600) 50%, transparent 75%);border-radius:50%;width:40%;height:40%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@supports (color:color-mix(in lab, red, red)){.site-footer__glow{background:radial-gradient(circle, color-mix(in srgb, var(--q-500) 30%, transparent) 0%, color-mix(in srgb, var(--q-600) 16%, transparent) 50%, transparent 75%)}}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.-top-2{top:calc(var(--spacing) * -2)}.top-2{top:calc(var(--spacing) * 2)}.top-\[0\.62em\]{top:.62em}.top-\[calc\(var\(--grid-cell\)\*0\.5\)\]{top:calc(var(--grid-cell) * .5)}.top-\[calc\(var\(--grid-cell\)\*0\.75\)\]{top:calc(var(--grid-cell) * .75)}.top-\[calc\(var\(--grid-cell\)\*0\.95\)\]{top:calc(var(--grid-cell) * .95)}.-right-2{right:calc(var(--spacing) * -2)}.right-0{right:calc(var(--spacing) * 0)}.right-\[calc\(var\(--grid-cell\)\*0\.5\)\]{right:calc(var(--grid-cell) * .5)}.right-\[calc\(var\(--grid-cell\)\*0\.75\)\]{right:calc(var(--grid-cell) * .75)}.-bottom-2{bottom:calc(var(--spacing) * -2)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-\[calc\(var\(--grid-cell\)\*0\.5\)\]{bottom:calc(var(--grid-cell) * .5)}.-left-2{left:calc(var(--spacing) * -2)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-\[calc\(-0\.6\*var\(--grid-cell\)-0\.3125rem\)\]{left:calc(-.6 * var(--grid-cell) - .3125rem)}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[99999\]{z-index:99999}.order-1{order:1}.order-2{order:2}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-\[calc\(var\(--grid-cell\)\*0\.2\)\]{margin-top:calc(var(--grid-cell) * .2)}.mt-\[calc\(var\(--grid-cell\)\*0\.4\)\]{margin-top:calc(var(--grid-cell) * .4)}.mt-\[calc\(var\(--grid-cell\)\*0\.32\)\]{margin-top:calc(var(--grid-cell) * .32)}.mt-\[calc\(var\(--grid-cell\)\*0\.35\)\]{margin-top:calc(var(--grid-cell) * .35)}.mb-\(--grid-cell\){margin-bottom:var(--grid-cell)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-\[calc\(var\(--grid-cell\)\*0\.5\)\]{margin-bottom:calc(var(--grid-cell) * .5)}.mb-\[calc\(var\(--grid-cell\)\*0\.6\)\]{margin-bottom:calc(var(--grid-cell) * .6)}.mb-\[calc\(var\(--grid-cell\)\*0\.7\)\]{margin-bottom:calc(var(--grid-cell) * .7)}.mb-\[calc\(var\(--grid-cell\)\*0\.45\)\]{margin-bottom:calc(var(--grid-cell) * .45)}.mb-\[calc\(var\(--grid-cell\)\*0\.55\)\]{margin-bottom:calc(var(--grid-cell) * .55)}.mb-\[calc\(var\(--grid-cell\)\*0\.75\)\]{margin-bottom:calc(var(--grid-cell) * .75)}.mb-\[calc\(var\(--grid-cell\)\*1\.5\)\]{margin-bottom:calc(var(--grid-cell) * 1.5)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-\[40\%\]{height:40%}.h-\[calc\(var\(--grid-cell\)\*2\.6\)\]{height:calc(var(--grid-cell) * 2.6)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[calc\(var\(--grid-cell\)\*2\)\]{min-height:calc(var(--grid-cell) * 2)}.min-h-\[calc\(var\(--grid-cell\)\*2\)\]\!{min-height:calc(var(--grid-cell) * 2)!important}.min-h-\[calc\(var\(--grid-cell\)\*4\)\]{min-height:calc(var(--grid-cell) * 4)}.min-h-\[calc\(var\(--grid-cell\)\*5\)\]{min-height:calc(var(--grid-cell) * 5)}.min-h-\[calc\(var\(--grid-cell\)\*6\)\]{min-height:calc(var(--grid-cell) * 6)}.min-h-\[calc\(var\(--grid-cell\)\*7\)\]{min-height:calc(var(--grid-cell) * 7)}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-\[56\%\]{width:56%}.w-\[90\%\]{width:90%}.w-\[calc\(var\(--grid-cell\)\*2\.6\)\]{width:calc(var(--grid-cell) * 2.6)}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[var\(--content-max-width\)\]{max-width:var(--content-max-width)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.snap-start{scroll-snap-align:start}.grid-flow-row-dense{grid-auto-flow:dense}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-\[calc\(var\(--grid-cell\)\*0\.3\)\]{gap:calc(var(--grid-cell) * .3)}.gap-\[calc\(var\(--grid-cell\)\*0\.5\)\]{gap:calc(var(--grid-cell) * .5)}.gap-\[calc\(var\(--grid-cell\)\*0\.25\)\]{gap:calc(var(--grid-cell) * .25)}.gap-\[calc\(var\(--grid-cell\)\*0\.75\)\]{gap:calc(var(--grid-cell) * .75)}.gap-\[calc\(var\(--grid-cell\)\*1\.5\)\]{gap:calc(var(--grid-cell) * 1.5)}:where(.space-y-1>: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)))}:where(.space-y-\[calc\(var\(--grid-cell\)\*0\.18\)\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--grid-cell) * .18) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--grid-cell) * .18) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[calc\(var\(--grid-cell\)\*0\.25\)\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--grid-cell) * .25) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--grid-cell) * .25) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[calc\(var\(--grid-cell\)\*0\.55\)\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--grid-cell) * .55) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--grid-cell) * .55) * calc(1 - var(--tw-space-y-reverse)))}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-tl-md{border-top-left-radius:var(--radius-md)}.rounded-br-md{border-bottom-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-2{border-right-style:var(--tw-border-style);border-right-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-solid\!{--tw-border-style:solid!important;border-style:solid!important}.border-\(--s-500\){border-color:var(--s-500)}.border-\(--s-600\){border-color:var(--s-600)}.border-\(--skill-accent-soft\){border-color:var(--skill-accent-soft)}.border-\(--skill-accent-strong\){border-color:var(--skill-accent-strong)}.border-\(--skill-card-border-color\){border-color:var(--skill-card-border-color)}.border-\(--skill-divider-color\){border-color:var(--skill-divider-color)}.border-\(--skill-tag-border-color\){border-color:var(--skill-tag-border-color)}.border-\[color-mix\(in_srgb\,var\(--q-300\)_48\%\,transparent\)\]{border-color:var(--q-300)}@supports (color:color-mix(in lab, red, red)){.border-\[color-mix\(in_srgb\,var\(--q-300\)_48\%\,transparent\)\]{border-color:color-mix(in srgb,var(--q-300) 48%,transparent)}}.border-\[color-mix\(in_srgb\,var\(--q-300\)_50\%\,transparent\)\]{border-color:var(--q-300)}@supports (color:color-mix(in lab, red, red)){.border-\[color-mix\(in_srgb\,var\(--q-300\)_50\%\,transparent\)\]{border-color:color-mix(in srgb,var(--q-300) 50%,transparent)}}.border-\[color-mix\(in_srgb\,var\(--q-300\)_55\%\,transparent\)\]{border-color:var(--q-300)}@supports (color:color-mix(in lab, red, red)){.border-\[color-mix\(in_srgb\,var\(--q-300\)_55\%\,transparent\)\]{border-color:color-mix(in srgb,var(--q-300) 55%,transparent)}}.border-\[color-mix\(in_srgb\,var\(--q-400\)_30\%\,transparent\)\]{border-color:var(--q-400)}@supports (color:color-mix(in lab, red, red)){.border-\[color-mix\(in_srgb\,var\(--q-400\)_30\%\,transparent\)\]{border-color:color-mix(in srgb,var(--q-400) 30%,transparent)}}.border-\[color-mix\(in_srgb\,var\(--q-400\)_35\%\,transparent\)\]\!{border-color:var(--q-400)!important}@supports (color:color-mix(in lab, red, red)){.border-\[color-mix\(in_srgb\,var\(--q-400\)_35\%\,transparent\)\]\!{border-color:color-mix(in srgb,var(--q-400) 35%,transparent)!important}}.border-\[color-mix\(in_srgb\,var\(--q-500\)_55\%\,transparent\)\]{border-color:var(--q-500)}@supports (color:color-mix(in lab, red, red)){.border-\[color-mix\(in_srgb\,var\(--q-500\)_55\%\,transparent\)\]{border-color:color-mix(in srgb,var(--q-500) 55%,transparent)}}.border-\[color-mix\(in_srgb\,var\(--q-700\)_24\%\,transparent\)\]{border-color:var(--q-700)}@supports (color:color-mix(in lab, red, red)){.border-\[color-mix\(in_srgb\,var\(--q-700\)_24\%\,transparent\)\]{border-color:color-mix(in srgb,var(--q-700) 24%,transparent)}}.border-\[color-mix\(in_srgb\,var\(--q-700\)_26\%\,transparent\)\]{border-color:var(--q-700)}@supports (color:color-mix(in lab, red, red)){.border-\[color-mix\(in_srgb\,var\(--q-700\)_26\%\,transparent\)\]{border-color:color-mix(in srgb,var(--q-700) 26%,transparent)}}.border-\[color-mix\(in_srgb\,var\(--q-800\)_15\%\,transparent\)\]{border-color:var(--q-800)}@supports (color:color-mix(in lab, red, red)){.border-\[color-mix\(in_srgb\,var\(--q-800\)_15\%\,transparent\)\]{border-color:color-mix(in srgb,var(--q-800) 15%,transparent)}}.border-\[color-mix\(in_srgb\,var\(--s-400\)_46\%\,transparent\)\]{border-color:var(--s-400)}@supports (color:color-mix(in lab, red, red)){.border-\[color-mix\(in_srgb\,var\(--s-400\)_46\%\,transparent\)\]{border-color:color-mix(in srgb,var(--s-400) 46%,transparent)}}.border-\[color-mix\(in_srgb\,var\(--s-500\)_38\%\,transparent\)\]{border-color:var(--s-500)}@supports (color:color-mix(in lab, red, red)){.border-\[color-mix\(in_srgb\,var\(--s-500\)_38\%\,transparent\)\]{border-color:color-mix(in srgb,var(--s-500) 38%,transparent)}}.border-\[color-mix\(in_srgb\,var\(--s-500\)_45\%\,transparent\)\]{border-color:var(--s-500)}@supports (color:color-mix(in lab, red, red)){.border-\[color-mix\(in_srgb\,var\(--s-500\)_45\%\,transparent\)\]{border-color:color-mix(in srgb,var(--s-500) 45%,transparent)}}.bg-\(--q-50\){background-color:var(--q-50)}.bg-\(--q-100\){background-color:var(--q-100)}.bg-\(--q-300\){background-color:var(--q-300)}.bg-\(--q-500\){background-color:var(--q-500)}.bg-\(--q-700\){background-color:var(--q-700)}.bg-\(--q-950\){background-color:var(--q-950)}.bg-\(--s-50\){background-color:var(--s-50)}.bg-\(--s-100\){background-color:var(--s-100)}.bg-\(--s-500\){background-color:var(--s-500)}.bg-\(--s-600\){background-color:var(--s-600)}.bg-\(--skill-tag-bg\){background-color:var(--skill-tag-bg)}.bg-\[color-mix\(in_srgb\,var\(--q-500\)_30\%\,transparent\)\]{background-color:var(--q-500)}@supports (color:color-mix(in lab, red, red)){.bg-\[color-mix\(in_srgb\,var\(--q-500\)_30\%\,transparent\)\]{background-color:color-mix(in srgb,var(--q-500) 30%,transparent)}}.bg-\[color-mix\(in_srgb\,var\(--s-50\)_68\%\,white\)\]{background-color:var(--s-50)}@supports (color:color-mix(in lab, red, red)){.bg-\[color-mix\(in_srgb\,var\(--s-50\)_68\%\,white\)\]{background-color:color-mix(in srgb,var(--s-50) 68%,white)}}.bg-surface-elevated{background-color:var(--color-surface-elevated)}.bg-white{background-color:var(--color-white)}.bg-linear-to-b{--tw-gradient-position:to bottom}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-b{--tw-gradient-position:to bottom in oklab}}.bg-linear-to-b{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.from-\(--q-600\){--tw-gradient-from:var(--q-600);--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))}.from-\(--q-700\){--tw-gradient-from:var(--q-700);--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))}.via-\(--q-500\){--tw-gradient-via:var(--q-500);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-\(--q-800\){--tw-gradient-to:var(--q-800);--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-transparent{--tw-gradient-to:transparent;--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))}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.object-cover{object-fit:cover}.p-0\!{padding:calc(var(--spacing) * 0)!important}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-\[calc\(var\(--grid-cell\)\*0\.75\)\]{padding:calc(var(--grid-cell) * .75)}.p-\[calc\(var\(--grid-cell\)\*0\.85\)\]{padding:calc(var(--grid-cell) * .85)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-\[calc\(var\(--grid-cell\)\*0\.4\)\]{padding-inline:calc(var(--grid-cell) * .4)}.px-\[calc\(var\(--grid-cell\)\*0\.5\)\]{padding-inline:calc(var(--grid-cell) * .5)}.px-\[calc\(var\(--grid-cell\)\*0\.6\)\]{padding-inline:calc(var(--grid-cell) * .6)}.px-\[calc\(var\(--grid-cell\)\*0\.9\)\]{padding-inline:calc(var(--grid-cell) * .9)}.px-\[calc\(var\(--grid-cell\)\*0\.75\)\]{padding-inline:calc(var(--grid-cell) * .75)}.px-\[calc\(var\(--grid-cell\)\*2\)\]{padding-inline:calc(var(--grid-cell) * 2)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-\[calc\(var\(--grid-cell\)\*0\.3\)\]{padding-block:calc(var(--grid-cell) * .3)}.py-\[calc\(var\(--grid-cell\)\*0\.28\)\]{padding-block:calc(var(--grid-cell) * .28)}.py-\[calc\(var\(--grid-cell\)\*0\.32\)\]{padding-block:calc(var(--grid-cell) * .32)}.py-\[calc\(var\(--grid-cell\)\*0\.45\)\]{padding-block:calc(var(--grid-cell) * .45)}.py-\[calc\(var\(--grid-cell\)\*0\.75\)\]{padding-block:calc(var(--grid-cell) * .75)}.py-\[calc\(var\(--grid-cell\)\*1\.5\)\]{padding-block:calc(var(--grid-cell) * 1.5)}.py-\[calc\(var\(--grid-cell\)\*2\)\]{padding-block:calc(var(--grid-cell) * 2)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-\[calc\(var\(--grid-cell\)\*0\.9\)\]{padding-top:calc(var(--grid-cell) * .9)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-\[calc\(var\(--grid-cell\)\*0\.65\)\]{padding-bottom:calc(var(--grid-cell) * .65)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-\[calc\(var\(--grid-cell\)\*0\.5\)\]{padding-left:calc(var(--grid-cell) * .5)}.pl-\[calc\(var\(--grid-cell\)\*0\.6\)\]{padding-left:calc(var(--grid-cell) * .6)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--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))}.text-\[2rem\]{font-size:2rem}.text-\[3rem\]{font-size:3rem}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[15px\]{font-size:15px}.leading-\[0\.95\]{--tw-leading:.95;line-height:.95}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.22em\]{--tw-tracking:.22em;letter-spacing:.22em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.text-\(--q-50\){color:var(--q-50)}.text-\(--q-700\){color:var(--q-700)}.text-\(--q-800\){color:var(--q-800)}.text-\(--q-900\){color:var(--q-900)}.text-\(--s-700\){color:var(--s-700)}.text-\(--skill-header-fg\){color:var(--skill-header-fg)}.text-\(--skill-tag-fg\){color:var(--skill-tag-fg)}.text-accent{color:var(--color-accent)}.text-accent-secondary{color:var(--color-accent-secondary)}.text-foreground{color:var(--color-foreground)}.text-muted{color:var(--color-muted)}.text-transparent{color:#0000}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.opacity-75{opacity:.75}.shadow-\[0_8px_24px_-16px_color-mix\(in_srgb\,var\(--q-950\)_28\%\,transparent\)\]{--tw-shadow:0 8px 24px -16px var(--tw-shadow-color,var(--q-950))}@supports (color:color-mix(in lab, red, red)){.shadow-\[0_8px_24px_-16px_color-mix\(in_srgb\,var\(--q-950\)_28\%\,transparent\)\]{--tw-shadow:0 8px 24px -16px var(--tw-shadow-color,color-mix(in srgb,var(--q-950) 28%,transparent))}}.shadow-\[0_8px_24px_-16px_color-mix\(in_srgb\,var\(--q-950\)_28\%\,transparent\)\]{box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_8px_24px_-16px_color-mix\(in_srgb\,var\(--s-900\)_18\%\,transparent\)\]{--tw-shadow:0 8px 24px -16px var(--tw-shadow-color,var(--s-900))}@supports (color:color-mix(in lab, red, red)){.shadow-\[0_8px_24px_-16px_color-mix\(in_srgb\,var\(--s-900\)_18\%\,transparent\)\]{--tw-shadow:0 8px 24px -16px var(--tw-shadow-color,color-mix(in srgb,var(--s-900) 18%,transparent))}}.shadow-\[0_8px_24px_-16px_color-mix\(in_srgb\,var\(--s-900\)_18\%\,transparent\)\]{box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_8px_32px_-12px_color-mix\(in_srgb\,var\(--q-950\)_22\%\,transparent\)\]{--tw-shadow:0 8px 32px -12px var(--tw-shadow-color,var(--q-950))}@supports (color:color-mix(in lab, red, red)){.shadow-\[0_8px_32px_-12px_color-mix\(in_srgb\,var\(--q-950\)_22\%\,transparent\)\]{--tw-shadow:0 8px 32px -12px var(--tw-shadow-color,color-mix(in srgb,var(--q-950) 22%,transparent))}}.shadow-\[0_8px_32px_-12px_color-mix\(in_srgb\,var\(--q-950\)_22\%\,transparent\)\]{box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_10px_22px_-14px_color-mix\(in_srgb\,var\(--q-950\)_55\%\,transparent\)\]{--tw-shadow:0 10px 22px -14px var(--tw-shadow-color,var(--q-950))}@supports (color:color-mix(in lab, red, red)){.shadow-\[0_10px_22px_-14px_color-mix\(in_srgb\,var\(--q-950\)_55\%\,transparent\)\]{--tw-shadow:0 10px 22px -14px var(--tw-shadow-color,color-mix(in srgb,var(--q-950) 55%,transparent))}}.shadow-\[0_10px_22px_-14px_color-mix\(in_srgb\,var\(--q-950\)_55\%\,transparent\)\]{box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--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)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-\(--q-50\){--tw-ring-color:var(--q-50)}.ring-\[color-mix\(in_srgb\,var\(--q-500\)_30\%\,transparent\)\]{--tw-ring-color:var(--q-500)}@supports (color:color-mix(in lab, red, red)){.ring-\[color-mix\(in_srgb\,var\(--q-500\)_30\%\,transparent\)\]{--tw-ring-color:color-mix(in srgb,var(--q-500) 30%,transparent)}}.ring-\[color-mix\(in_srgb\,var\(--s-500\)_25\%\,transparent\)\]{--tw-ring-color:var(--s-500)}@supports (color:color-mix(in lab, red, red)){.ring-\[color-mix\(in_srgb\,var\(--s-500\)_25\%\,transparent\)\]{--tw-ring-color:color-mix(in srgb,var(--s-500) 25%,transparent)}}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-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,)}.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))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{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))}.transition-transform{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))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.will-change-transform{will-change:transform}.\[-webkit-text-stroke\:1\.5px_var\(--q-950\)\]{-webkit-text-stroke:1.5px var(--q-950)}.\[-webkit-text-stroke\:1px_var\(--q-950\)\]{-webkit-text-stroke:1px var(--q-950)}@media (hover:hover){.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:translate-y-0\.5:is(:where(.group):hover *){--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:scale-\[1\.03\]:hover{scale:1.03}.hover\:border-\(--q-500\):hover{border-color:var(--q-500)}.hover\:border-\[color-mix\(in_srgb\,var\(--q-900\)_55\%\,transparent\)\]:hover{border-color:var(--q-900)}@supports (color:color-mix(in lab, red, red)){.hover\:border-\[color-mix\(in_srgb\,var\(--q-900\)_55\%\,transparent\)\]:hover{border-color:color-mix(in srgb,var(--q-900) 55%,transparent)}}.hover\:bg-\(--project-link-bg-hover\):hover{background-color:var(--project-link-bg-hover)}.hover\:bg-\(--q-100\):hover{background-color:var(--q-100)}.hover\:bg-\(--q-800\):hover{background-color:var(--q-800)}.hover\:bg-\(--q-900\):hover{background-color:var(--q-900)}.hover\:font-bold:hover{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.hover\:text-\(--project-link-fg-hover\):hover{color:var(--project-link-fg-hover)}.hover\:text-\(--q-950\):hover{color:var(--q-950)}.hover\:text-accent:hover{color:var(--color-accent)}}@media (width>=40rem){.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}}@media (width>=48rem){.md\:left-\[calc\(-0\.85\*var\(--grid-cell\)-0\.3125rem\)\]{left:calc(-.85 * var(--grid-cell) - .3125rem)}.md\:col-span-5{grid-column:span 5/span 5}.md\:col-span-7{grid-column:span 7/span 7}.md\:flex{display:flex}.md\:h-\[44\%\]{height:44%}.md\:w-\[42\%\]{width:42%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:self-auto{align-self:auto}.md\:px-\[calc\(var\(--grid-cell\)\*2\)\]{padding-inline:calc(var(--grid-cell) * 2)}.md\:pl-\[calc\(var\(--grid-cell\)\*0\.85\)\]{padding-left:calc(var(--grid-cell) * .85)}.md\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.md\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.md\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.md\:text-\[2\.15rem\]{font-size:2.15rem}}@media (width>=64rem){.lg\:order-1{order:1}.lg\:order-2{order:2}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:max-w-none{max-width:none}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}}.fade-up{opacity:0;animation:fade-up .7s var(--ease-out) forwards}.fade-up-1{animation-delay:50ms}.fade-up-2{animation-delay:.15s}.fade-up-3{animation-delay:.25s}.fade-up-4{animation-delay:.35s}.fade-up-5{animation-delay:.45s}.reveal-up{opacity:0}.is-revealed .reveal-up{animation:reveal-up .55s var(--ease-out) forwards}.reveal-up-1{animation-delay:40ms}.reveal-up-2{animation-delay:.1s}.reveal-up-3{animation-delay:.16s}.reveal-up-4{animation-delay:.22s}.reveal-up-5{animation-delay:.28s}.reveal-up-6{animation-delay:.34s}.soft-blink{animation:2.4s ease-in-out infinite soft-blink}.trackable{isolation:isolate;position:relative}.trackable__blur{inset:calc(var(--grid-cell) * -.15);z-index:-1;background-color:var(--q-100);border-radius:6px;position:absolute}@supports (color:color-mix(in lab, red, red)){.trackable__blur{background-color:color-mix(in srgb, var(--q-100) 65%, transparent)}}.trackable__blur{-webkit-backdrop-filter:blur(10px)saturate(120%);opacity:0;transition:opacity .22s var(--ease-out), transform .22s var(--ease-out);pointer-events:none;transform:scale(.96)}.trackable:hover .trackable__blur,.trackable.is-snapped .trackable__blur{opacity:1;transform:scale(1)}.btn-outlined{border-style:solid;border-width:2px;font-weight:700}.card-chrome{pointer-events:none;transition:opacity .22s var(--ease-out)}.grid-card.is-snapped>.card-chrome,.trackable.is-snapped>.card-chrome{opacity:0}.avatar-swap-layer{transition:transform .52s var(--ease-out), opacity .52s var(--ease-out);will-change:transform}.avatar-swap-layer--front{z-index:2;opacity:1;box-shadow:0 6px 20px -8px var(--q-950);transform:translateY(0)scale(1)}@supports (color:color-mix(in lab, red, red)){.avatar-swap-layer--front{box-shadow:0 6px 20px -8px color-mix(in srgb, var(--q-950) 28%, transparent)}}.avatar-swap-layer--back{z-index:1;opacity:.78;transform:translateY(calc(var(--grid-cell) * .1)) scale(.88);box-shadow:none}}:root{--q-50:#f8f3e3;--q-100:#f3ebd2;--q-200:#e6d6a1;--q-300:#d9bc70;--q-400:#d0a74f;--q-500:#c68d3a;--q-600:#af6f30;--q-700:#92542b;--q-800:#784328;--q-900:#633824;--q-950:#381c10;--s-50:#f2f7f3;--s-100:#dfece2;--s-200:#c2d8c8;--s-300:#a1c2ac;--s-400:#6c9b7d;--s-500:#4b7e5f;--s-600:#38634a;--s-700:#2d4f3c;--s-800:#254031;--s-900:#1f3529;--s-950:#111d17;--grid-cell:48px;--content-max-width:calc(var(--grid-cell) * 25);--grid-trail-fade:.06;--cursor-size:5px;--reticule-size:40px;--reticule-padding:12px;--snap-radius:180px;--follow-factor:.04;--spring-stiffness:.1;--reticule-stiffness:.08;--transition-duration:.3s;--cursor-color-dynamic:var(--q-950)}@keyframes fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes reveal-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes soft-blink{0%,to{opacity:.55}50%{opacity:1}}@media (prefers-reduced-motion:reduce){html{scroll-snap-type:y proximity}.fade-up,.reveal-up,.soft-blink{opacity:1;animation:none}.is-revealed .reveal-up{animation:none}.trackable__blur,.card-chrome,.avatar-swap-layer{transition:none}.avatar-swap-layer--back{opacity:1;transform:none}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-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-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}.cursor-dot[data-v-e0b55628]{width:var(--cursor-size);height:var(--cursor-size);background-color:var(--cursor-color-dynamic,var(--color-cursor));transition:background-color .28s var(--ease-out);will-change:transform;contain:layout;border-radius:50%;position:fixed;top:0;left:0}.reticule[data-v-e0b55628]{will-change:transform, width, height;contain:layout;background-color:#0000;position:fixed;top:0;left:0}.corner[data-v-e0b55628]{background-color:var(--cursor-color-dynamic,var(--color-cursor));transition:background-color .28s var(--ease-out);position:absolute}.corner-tl-v[data-v-e0b55628]{width:2px;height:10px;top:0;left:0}.corner-tl-h[data-v-e0b55628]{width:10px;height:2px;top:0;left:0}.corner-tr-v[data-v-e0b55628]{width:2px;height:10px;top:0;right:0}.corner-tr-h[data-v-e0b55628]{width:10px;height:2px;top:0;right:0}.corner-bl-v[data-v-e0b55628]{width:2px;height:10px;bottom:0;left:0}.corner-bl-h[data-v-e0b55628]{width:10px;height:2px;bottom:0;left:0}.corner-br-v[data-v-e0b55628]{width:2px;height:10px;bottom:0;right:0}.corner-br-h[data-v-e0b55628]{width:10px;height:2px;bottom:0;right:0}
