/*! tailwindcss v4.2.3 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-font-weight: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-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:"Geist Variable", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-green-100:oklch(96.2% .044 156.743);--color-green-500:oklch(72.3% .219 149.579);--color-emerald-600:oklch(59.6% .145 163.225);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-900:oklch(37.9% .146 265.522);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-950:oklch(13% .028 261.692);--color-white:#fff;--spacing:.25rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-bold:700;--radius-md:calc(var(--radius) * .8);--radius-lg:var(--radius);--radius-xl:calc(var(--radius) * 1.4);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Geist Variable", sans-serif;--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-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}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}#root{min-height:100svh}body{background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{font-family:Geist Variable,sans-serif}}@layer components{.portfolio-page{background:var(--portfolio-hero-end);min-height:100svh}.portfolio-header{background:linear-gradient(100deg, var(--portfolio-header) 0%, oklch(97.5% .014 18) 100%);border-bottom:1px solid oklch(89% .012 18);height:4.75rem}.portfolio-brand{color:var(--primary);letter-spacing:-.04em;font-size:clamp(.9rem,1.15vw,1.08rem);font-weight:750;line-height:.86}.portfolio-menu-button{color:var(--primary)}.portfolio-menu-button svg{stroke-width:1.8px;width:1.55rem;height:1.55rem}.portfolio-avatar{width:clamp(3rem,4.5vw,4.25rem);height:clamp(3rem,4.5vw,4.25rem);margin-bottom:clamp(.9rem,1.9vw,1.4rem);box-shadow:0 18px 42px -24px oklch(30% .12 26/.6)}.portfolio-hero{background:linear-gradient(108deg, var(--portfolio-hero-start) 0%, var(--portfolio-hero-mid) 60%, var(--portfolio-hero-end) 100%);min-height:calc(100svh - 4.75rem);position:relative;overflow:hidden}.portfolio-hero-content{width:min(82rem,100% - 3rem);position:absolute;bottom:clamp(3.25rem,7.2vh,4.75rem);left:clamp(1.5rem,3.25vw,3.95rem)}.portfolio-hero-title{color:oklch(12% .018 25);letter-spacing:-.085em;font-size:clamp(1.85rem,3.6vw,3.15rem);font-weight:780;line-height:.9}.portfolio-hero-title .portfolio-swap-text{color:var(--portfolio-hero-word);letter-spacing:-.075em;font-weight:420}.portfolio-swap-text{animation:.52s cubic-bezier(.22,1,.36,1) both portfolio-swap-in;display:inline-block}.portfolio-story-section{--reveal-progress:0;background:radial-gradient(circle at 68% 22%, oklch(62% .2 23/.42) 0, transparent 32rem), linear-gradient(135deg, var(--portfolio-story-start) 0%, var(--portfolio-story-mid) 52%, var(--portfolio-story-end) 100%);color:#fff;min-height:220svh;position:relative;overflow:visible}.portfolio-story-inner{flex-direction:column;justify-content:center;gap:clamp(3rem,7vw,5.25rem);width:min(76rem,100%);min-height:100svh;margin:0;padding:clamp(3.25rem,7vw,6.25rem) clamp(1.5rem,6vw,7.5rem);display:flex;position:sticky;top:0;transform:translateY(-4svh)}.portfolio-story-copy{letter-spacing:-.065em;text-wrap:balance;max-width:48rem;font-size:clamp(1.55rem,3.45vw,3.2rem);font-weight:740;line-height:1.04}.portfolio-story-copy-text{color:#fff;display:block}.portfolio-story-copy .word{color:#fff;will-change:opacity, filter}.portfolio-affiliations{grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;gap:clamp(1.5rem,5vw,5.5rem);width:min(64rem,100%);margin:0;padding:0;list-style:none;display:grid}.portfolio-affiliation-item{border-radius:var(--radius-lg);color:oklch(100% 0 0);min-height:clamp(6.25rem,10vw,8.25rem);opacity:var(--logo-opacity);transform:translateY(var(--logo-offset));justify-content:center;align-items:center;transition:opacity .11s linear,transform .11s linear,background-color .18s linear;display:flex}.portfolio-affiliation-image{object-fit:contain;filter:none;opacity:1;max-width:min(19rem,94%);max-height:clamp(3.65rem,6.8vw,6rem)}.portfolio-freelance-logo{letter-spacing:-.045em;font-size:clamp(1.85rem,3.6vw,3.1rem);font-weight:780}.portfolio-stack-section{min-height:210svh;color:var(--foreground);background:oklch(98.5% .011 21);padding:clamp(1.25rem,4vw,3.5rem) 0 clamp(5rem,10vw,8rem);overflow:clip}.portfolio-stack-heading{width:min(42rem,100% - 3rem);margin:0 auto clamp(.75rem,2vw,1.25rem)}.portfolio-stack-kicker{color:var(--primary);letter-spacing:.22em;text-transform:uppercase;margin-bottom:.8rem;font-size:.78rem;font-weight:780}.portfolio-stack-heading h2{letter-spacing:-.075em;text-wrap:balance;max-width:48rem;font-size:clamp(2.2rem,6vw,5.2rem);font-weight:760;line-height:.95}.portfolio-scroll-stack{overscroll-behavior:auto;height:auto;min-height:116svh;overflow:visible}.portfolio-scroll-stack .scroll-stack-inner{min-height:132svh;padding:clamp(.25rem,1.4vw,1rem) clamp(1rem,4vw,2rem) 34rem}.portfolio-scroll-stack .portfolio-stack-card{border-radius:var(--radius-lg);background:oklch(99.5% .006 20);border:1px solid oklch(86% .035 25);width:min(56rem,100vw - 3rem);height:auto;min-height:clamp(13.25rem,18vw,15.75rem);margin-top:0;margin-left:auto;margin-right:auto;padding:clamp(1rem,1.8vw,1.45rem) clamp(1.15rem,2.4vw,2rem);overflow:visible;box-shadow:0 32px 80px -52px oklch(24% .08 25/.52)}.portfolio-stack-card-content{min-height:inherit;overflow-wrap:anywhere;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:clamp(1.25rem,4vw,4rem);display:grid;overflow:visible}.portfolio-stack-card-main{flex-direction:column;gap:clamp(.95rem,1.8vw,1.35rem);min-width:0;display:flex}.portfolio-stack-card-header{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:clamp(1rem,2.5vw,1.75rem);display:grid;overflow:visible}.portfolio-stack-index{letter-spacing:-.085em;min-width:clamp(4.25rem,8.2vw,6.75rem);padding:.18em .08em .16em 0;font-size:clamp(2.35rem,5.8vw,4.7rem);font-weight:820;line-height:1.08;display:block;overflow:visible}.portfolio-stack-duration{color:var(--muted-foreground);letter-spacing:.12em;text-transform:uppercase;margin-bottom:.45rem;font-size:clamp(.66rem,1.05vw,.78rem);font-weight:700}.portfolio-stack-card h3{color:var(--foreground);letter-spacing:-.065em;font-size:clamp(1.2rem,2.65vw,2.45rem);font-weight:700;line-height:.98}.portfolio-stack-company{color:var(--primary);margin-top:.5rem;font-size:clamp(.78rem,1.35vw,.95rem);font-weight:650;line-height:1.4}.portfolio-stack-summary{max-width:34rem;color:var(--muted-foreground);font-size:clamp(.78rem,1.02vw,.88rem);line-height:1.55}.portfolio-stack-icon{aspect-ratio:1;color:oklch(50% .18 27);flex:none;justify-content:center;align-items:center;width:clamp(5.25rem,9vw,7.25rem);display:flex;position:relative;overflow:hidden}.portfolio-stack-icon svg{stroke-width:1.45px;width:clamp(3.25rem,5.8vw,4.9rem);height:clamp(3.25rem,5.8vw,4.9rem)}.portfolio-projects-section{min-height:240svh;color:var(--foreground);background:oklch(99.2% .006 18)}.portfolio-projects-sticky{flex-direction:column;justify-content:center;gap:clamp(2rem,4.5vw,3.5rem);min-height:100svh;padding:clamp(3rem,7vw,5.5rem) 0 clamp(2.5rem,6vw,4.5rem);display:flex;position:sticky;top:0;overflow:hidden}.portfolio-projects-heading{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:2rem;width:min(100% - 3rem,112rem);margin-inline:auto;display:grid}.portfolio-projects-heading h2{letter-spacing:-.075em;text-wrap:balance;max-width:28rem;font-size:clamp(2.25rem,4.6vw,4.15rem);font-weight:420;line-height:.92}.portfolio-projects-heading h2 span{display:block}.portfolio-projects-meter{align-items:center;gap:.95rem;padding-bottom:clamp(.35rem,1vw,.8rem);display:flex}.portfolio-projects-meter-track{background:oklch(86% .03 25);width:clamp(5rem,9vw,8.5rem);height:2px;overflow:hidden}.portfolio-projects-meter-progress{transform-origin:0;background:var(--primary);will-change:transform;width:100%;height:100%;display:block;transform:scaleX(0)}.portfolio-projects-count{color:var(--muted-foreground);letter-spacing:.08em;font-size:.88rem;font-weight:650}.portfolio-projects-viewport{width:100%;overflow:hidden}.portfolio-projects-track{will-change:transform;align-items:stretch;gap:clamp(1rem,2.2vw,1.75rem);width:max-content;margin:0;padding:0 clamp(1.5rem,3.2vw,3rem);list-style:none;display:flex;transform:translate(0)}.portfolio-project-card{flex:none;width:min(25rem,100vw - 3rem)}.portfolio-project-card a{border-radius:var(--radius-xl);background:oklch(98% .012 20);border:1px solid oklch(86% .035 25);height:100%;text-decoration:none;transition:border-color .18s,transform .18s;display:block;overflow:hidden;box-shadow:0 28px 72px -56px oklch(24% .08 25/.48)}.portfolio-project-card a:hover{border-color:oklch(66% .12 25)}.portfolio-project-card a:focus-visible{outline-offset:4px;outline:3px solid oklch(62% .16 27/.38)}.portfolio-project-preview{min-height:clamp(8.25rem,12vw,10.5rem);color:var(--primary);background-color:oklch(96.5% .02 22);background-image:linear-gradient(90deg,oklch(88% .05 24/.18) 1px,#0000 1px),linear-gradient(0deg,oklch(88% .05 24/.18) 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:3.2rem 3.2rem;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;border-bottom:1px solid oklch(86% .035 25);flex-direction:column;justify-content:space-between;padding:clamp(1.15rem,2.3vw,1.75rem);display:flex}.portfolio-project-preview svg{stroke-width:1.35px;width:clamp(2.4rem,4.2vw,3.4rem);height:clamp(2.4rem,4.2vw,3.4rem)}.portfolio-project-preview-image{background:oklch(96.5% .02 22);padding:0;position:relative}.portfolio-project-preview-image img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.portfolio-project-preview-image:after{content:"";background:linear-gradient(#0000 45%,oklch(18% .04 25/.36) 100%);position:absolute;inset:0}.portfolio-project-preview span{z-index:1;color:oklch(38% .12 26);letter-spacing:.08em;text-transform:uppercase;background:oklch(99% .006 20/.72);border:1px solid oklch(78% .09 25/.62);border-radius:999px;align-self:flex-start;padding:.35rem .65rem;font-size:.68rem;font-weight:720;position:relative}.portfolio-project-card-copy{min-height:clamp(10.5rem,13vw,12.25rem);padding:clamp(.9rem,1.5vw,1.2rem)}.portfolio-project-card-copy>p:first-child{color:var(--primary);letter-spacing:.12em;text-transform:uppercase;margin-bottom:.65rem;font-size:.68rem;font-weight:760}.portfolio-project-card-copy h3{color:var(--foreground);letter-spacing:-.055em;margin-bottom:.65rem;font-size:clamp(1.12rem,1.45vw,1.4rem);font-weight:520;line-height:1}.portfolio-project-card-copy>p:last-child{color:var(--muted-foreground);font-size:clamp(.72rem,.86vw,.8rem);line-height:1.42}.portfolio-education-section{min-height:210svh;color:var(--foreground);background:oklch(98.5% .011 21)}.portfolio-education-sticky{--education-progress:0;--education-eased-progress:0;align-items:center;min-height:100svh;padding:clamp(3rem,7vw,6rem) clamp(1.5rem,5vw,6rem);display:flex;position:sticky;top:0;overflow:hidden}.portfolio-education-inner{width:min(82rem,100%);opacity:calc(.72 + (var(--education-eased-progress) * .28));transform:translateY(calc((1 - var(--education-eased-progress)) * 2.5rem));will-change:transform, opacity;grid-template-columns:minmax(16rem,.78fr) minmax(0,1fr);align-items:center;gap:clamp(2rem,5vw,5rem);margin-inline:auto;display:grid}.portfolio-education-heading p{color:var(--primary);letter-spacing:-.045em;margin-bottom:clamp(1rem,2vw,1.6rem);font-size:clamp(1.15rem,2vw,1.7rem);font-weight:720}.portfolio-education-heading h2{letter-spacing:-.08em;text-wrap:balance;max-width:36rem;font-size:clamp(2.45rem,5.5vw,5rem);font-weight:520;line-height:.94}.portfolio-education-card{border-radius:var(--radius-xl);background:oklch(99.5% .006 20/.82);border:1px solid oklch(86% .035 25);flex-direction:column;gap:clamp(1.15rem,2vw,1.6rem);padding:clamp(1.2rem,2.4vw,2rem);display:flex;box-shadow:0 30px 80px -58px oklch(26% .08 38/.52)}.portfolio-education-school{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:1rem;display:grid}.portfolio-education-school>span{aspect-ratio:1;border-radius:var(--radius-lg);background:var(--primary);color:#fff;justify-content:center;align-items:center;width:clamp(3rem,5vw,4.2rem);display:flex}.portfolio-education-school svg{stroke-width:1.6px;width:55%;height:55%}.portfolio-education-school p:first-child{color:var(--foreground);letter-spacing:-.045em;font-size:clamp(1.1rem,1.7vw,1.45rem);font-weight:740;line-height:1.05}.portfolio-education-school p:last-child{color:var(--muted-foreground);align-items:center;gap:.45rem;margin-top:.45rem;font-size:.9rem;font-weight:620;display:flex}.portfolio-education-school p:last-child svg{width:1rem;height:1rem}.portfolio-education-thesis p{color:var(--primary);letter-spacing:.16em;text-transform:uppercase;margin-bottom:.6rem;font-size:.72rem;font-weight:800}.portfolio-education-thesis h3{color:var(--foreground);letter-spacing:-.04em;font-size:clamp(1.05rem,1.55vw,1.35rem);font-weight:540;line-height:1.28}.portfolio-education-details{gap:.85rem;margin:0;padding:0;list-style:none;display:grid}.portfolio-education-details li{color:var(--muted-foreground);padding-left:1.15rem;font-size:clamp(.88rem,1.05vw,.98rem);line-height:1.5;position:relative}.portfolio-education-details li:before{content:"";background:var(--primary);border-radius:999px;width:.42rem;height:.42rem;position:absolute;top:.64em;left:0}.portfolio-education-actions{flex-wrap:wrap;gap:.8rem;padding-top:.25rem;display:flex}.portfolio-education-actions a{border-radius:999px}.portfolio-skills-section{min-height:215svh;color:var(--foreground);background:radial-gradient(circle at 78% 20%,oklch(88% .075 22/.36) 0,#0000 28rem),oklch(98.5% .011 21)}.portfolio-skills-sticky{--skills-progress:0;align-items:center;min-height:100svh;padding:clamp(3rem,7vw,6rem) clamp(1.5rem,5vw,6rem);display:flex;position:sticky;top:0;overflow:hidden}.portfolio-skills-inner{grid-template-columns:minmax(16rem,.58fr) minmax(0,1fr);align-items:center;gap:clamp(2rem,5vw,5rem);width:min(84rem,100%);margin-inline:auto;display:grid}.portfolio-skills-heading{opacity:calc(.5 + (clamp(0, var(--skills-progress) * 2.5, 1) * .5));transform:translateY(calc((1 - clamp(0, var(--skills-progress) * 2.5, 1)) * 1.5rem));will-change:transform, opacity}.portfolio-skills-heading p{color:var(--primary);letter-spacing:-.045em;margin-bottom:clamp(.9rem,1.8vw,1.4rem);font-size:clamp(1.2rem,2vw,1.75rem);font-weight:740}.portfolio-skills-heading h2{letter-spacing:-.08em;text-wrap:balance;max-width:33rem;font-size:clamp(2.45rem,5.3vw,4.7rem);font-weight:520;line-height:.94}.portfolio-skills-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(.8rem,1.5vw,1.15rem);margin:0;padding:0;list-style:none;display:grid}.portfolio-skills-group{--skill-local-progress:clamp(0, calc((var(--skills-progress) - var(--skill-delay)) * 4), 1);border-radius:var(--radius-lg);min-height:clamp(8.5rem,12vw,10.25rem);opacity:calc(.24 + (var(--skill-local-progress) * .76));transform:translateY(calc((1 - var(--skill-local-progress)) * 1.35rem));will-change:transform, opacity;background:oklch(99.5% .006 20/.78);border:1px solid oklch(86% .035 25);padding:clamp(1rem,1.8vw,1.35rem);box-shadow:0 24px 68px -56px oklch(24% .08 25/.45)}.portfolio-skills-group h3{color:var(--foreground);letter-spacing:-.045em;margin-bottom:.9rem;font-size:clamp(1.05rem,1.45vw,1.3rem);font-weight:720;line-height:1}.portfolio-skills-group ul{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.portfolio-skills-group ul li{color:var(--muted-foreground);white-space:nowrap;background:oklch(96% .02 22/.78);border:1px solid oklch(82% .04 25);border-radius:999px;padding:.38rem .58rem;font-size:clamp(.72rem,.9vw,.82rem);font-weight:650;line-height:1}}@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}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.right-0{right:calc(var(--spacing) * 0)}.bottom-0{bottom:calc(var(--spacing) * 0)}.z-10{z-index:10}.z-50{z-index:50}.z-\[999\]{z-index:999}.m-60{margin:calc(var(--spacing) * 60)}.m-133{margin:calc(var(--spacing) * 133)}.m-230{margin:calc(var(--spacing) * 230)}.m-260{margin:calc(var(--spacing) * 260)}.m-329{margin:calc(var(--spacing) * 329)}.m-373{margin:calc(var(--spacing) * 373)}.m-391{margin:calc(var(--spacing) * 391)}.m-393{margin:calc(var(--spacing) * 393)}.m-458{margin:calc(var(--spacing) * 458)}.m-492{margin:calc(var(--spacing) * 492)}.m-558{margin:calc(var(--spacing) * 558)}.m-567{margin:calc(var(--spacing) * 567)}.m-574{margin:calc(var(--spacing) * 574)}.m-616{margin:calc(var(--spacing) * 616)}.m-632{margin:calc(var(--spacing) * 632)}.m-655{margin:calc(var(--spacing) * 655)}.m-657{margin:calc(var(--spacing) * 657)}.m-719{margin:calc(var(--spacing) * 719)}.m-849{margin:calc(var(--spacing) * 849)}.m-957{margin:calc(var(--spacing) * 957)}.m-1236{margin:calc(var(--spacing) * 1236)}.m-1526{margin:calc(var(--spacing) * 1526)}.m-1859{margin:calc(var(--spacing) * 1859)}.m-2059{margin:calc(var(--spacing) * 2059)}.m-2182{margin:calc(var(--spacing) * 2182)}.m-2432{margin:calc(var(--spacing) * 2432)}.m-2437{margin:calc(var(--spacing) * 2437)}.m-2624{margin:calc(var(--spacing) * 2624)}.m-2672{margin:calc(var(--spacing) * 2672)}.m-2949{margin:calc(var(--spacing) * 2949)}.m-3173{margin:calc(var(--spacing) * 3173)}.m-3366{margin:calc(var(--spacing) * 3366)}.m-4230{margin:calc(var(--spacing) * 4230)}.m-4552{margin:calc(var(--spacing) * 4552)}.m-4944{margin:calc(var(--spacing) * 4944)}.m-5021{margin:calc(var(--spacing) * 5021)}.m-5495{margin:calc(var(--spacing) * 5495)}.m-5533{margin:calc(var(--spacing) * 5533)}.m-5609{margin:calc(var(--spacing) * 5609)}.m-5770{margin:calc(var(--spacing) * 5770)}.mx-auto{margin-inline:auto}.my-8{margin-block:calc(var(--spacing) * 8)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-2{margin-right:calc(var(--spacing) * 2)}.box-border{box-sizing:border-box}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-full{width:100%;height:100%}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-80{height:calc(var(--spacing) * 80)}.h-full{height:100%}.h-px{height:1px}.min-h-\[1\.12em\]{min-height:1.12em}.min-h-screen{min-height:100vh}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-10{width:calc(var(--spacing) * 10)}.w-full{width:100%}.max-w-md{max-width:var(--container-md)}.shrink-0{flex-shrink:0}.origin-top{transform-origin:top}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.resize{resize:both}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}: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-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-visible{overflow-x:visible}.overflow-y-auto{overflow-y:auto}.rounded-\[40px\]{border-radius:40px}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md), 10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md), 12px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-border{border-color:var(--border)}.border-input{border-color:var(--input)}.border-transparent{border-color:#0000}.bg-background{background-color:var(--background)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-muted{background-color:var(--muted)}.bg-primary{background-color:var(--primary)}.bg-red-500{background-color:var(--color-red-500)}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-clip-padding{background-clip:padding-box}.object-cover{object-fit:cover}.p-12{padding:calc(var(--spacing) * 12)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-7{padding-inline:calc(var(--spacing) * 7)}.px-20{padding-inline:calc(var(--spacing) * 20)}.pt-\[20vh\]{padding-top:20vh}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-\[50rem\]{padding-bottom:50rem}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-blue-900{color:var(--color-blue-900)}.text-destructive{color:var(--destructive)}.text-emerald-600{color:var(--color-emerald-600)}.text-foreground{color:var(--foreground)}.text-gray-600{color:var(--color-gray-600)}.text-green-500{color:var(--color-green-500)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.italic{font-style:italic}.underline-offset-4{text-underline-offset:4px}.bg-blend-color{background-blend-mode:color}.shadow-\[0_0_30px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:0 0 30px 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{--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-background{--tw-ring-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.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,)}.filter{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,)}.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))}.will-change-transform{will-change:transform}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.running{animation-play-state:running}.group-has-data-\[size\=lg\]\/avatar-group\:size-10:is(:where(.group\/avatar-group):has([data-size=lg]) *){width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.group-has-data-\[size\=sm\]\/avatar-group\:size-6:is(:where(.group\/avatar-group):has([data-size=sm]) *){width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.group-data-\[size\=default\]\/avatar\:size-2\.5:is(:where(.group\/avatar)[data-size=default] *){width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.group-data-\[size\=lg\]\/avatar\:size-3:is(:where(.group\/avatar)[data-size=lg] *){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/avatar\:size-2:is(:where(.group\/avatar)[data-size=sm] *){width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.group-data-\[size\=sm\]\/avatar\:text-xs:is(:where(.group\/avatar)[data-size=sm] *){font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-0:after{content:var(--tw-content);inset:calc(var(--spacing) * 0)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:border:after{content:var(--tw-content);border-style:var(--tw-border-style);border-width:1px}.after\:border-border:after{content:var(--tw-content);border-color:var(--border)}.after\:mix-blend-darken:after{content:var(--tw-content);mix-blend-mode:darken}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-3:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=button-group]) .in-data-\[slot\=button-group\]\:rounded-lg{border-radius:var(--radius)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[size\=lg\]\:size-10[data-size=lg]{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.data-\[size\=sm\]\:size-6[data-size=sm]{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}:is(.\*\:data-\[slot\=avatar\]\:ring-2>*)[data-slot=avatar]{--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)}:is(.\*\:data-\[slot\=avatar\]\:ring-background>*)[data-slot=avatar]{--tw-ring-color:var(--background)}@media (width>=40rem){.sm\:px-12{padding-inline:calc(var(--spacing) * 12)}}@media (width>=64rem){.lg\:px-\[3\.7rem\]{padding-inline:3.7rem}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.dark\:bg-gray-950:is(.dark *){background-color:var(--color-gray-950)}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:after\:mix-blend-lighten:is(.dark *):after{content:var(--tw-content);mix-blend-mode:lighten}@media (hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab, var(--destructive) 50%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}@media (hover:hover){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab, var(--primary) 80%, transparent)}}}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.group-has-data-\[size\=lg\]\/avatar-group\:\[\&\>svg\]\:size-5:is(:where(.group\/avatar-group):has([data-size=lg]) *)>svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.group-has-data-\[size\=sm\]\/avatar-group\:\[\&\>svg\]\:size-3:is(:where(.group\/avatar-group):has([data-size=sm]) *)>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[size\=default\]\/avatar\:\[\&\>svg\]\:size-2:is(:where(.group\/avatar)[data-size=default] *)>svg,.group-data-\[size\=lg\]\/avatar\:\[\&\>svg\]\:size-2:is(:where(.group\/avatar)[data-size=lg] *)>svg{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.group-data-\[size\=sm\]\/avatar\:\[\&\>svg\]\:hidden:is(:where(.group\/avatar)[data-size=sm] *)>svg{display:none}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-cyrillic-wght-normal-CHSlOQsW.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-latin-ext-wght-normal-DMtmJ5ZE.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-latin-wght-normal-Dm3htQBi.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}:root{--background:oklch(99.2% .006 18);--foreground:oklch(17.5% .025 26);--card:oklch(99.5% .006 20);--card-foreground:oklch(17.5% .025 26);--popover:oklch(99.5% .006 20);--popover-foreground:oklch(17.5% .025 26);--primary:oklch(56% .22 28);--primary-foreground:oklch(99% .006 20);--secondary:oklch(94% .04 24);--secondary-foreground:oklch(25% .06 26);--muted:oklch(94% .025 28);--muted-foreground:oklch(43% .045 26);--accent:oklch(91% .065 23);--accent-foreground:oklch(23% .07 27);--destructive:oklch(55% .22 29);--border:oklch(86% .035 25);--input:oklch(86% .035 25);--ring:oklch(52% .16 27);--chart-1:oklch(58% .18 27);--chart-2:oklch(62% .12 48);--chart-3:oklch(50% .08 165);--chart-4:oklch(42% .07 255);--chart-5:oklch(72% .09 78);--radius:.625rem;--sidebar:oklch(97% .018 22);--sidebar-foreground:oklch(17.5% .025 26);--sidebar-primary:oklch(43% .18 27);--sidebar-primary-foreground:oklch(99% .006 20);--sidebar-accent:oklch(94% .04 24);--sidebar-accent-foreground:oklch(25% .06 26);--sidebar-border:oklch(86% .035 25);--sidebar-ring:oklch(52% .16 27);--portfolio-header:oklch(99.2% .006 18);--portfolio-hero-start:oklch(98% .006 18);--portfolio-hero-mid:oklch(94.5% .035 18);--portfolio-hero-end:oklch(88% .085 21);--portfolio-hero-word:oklch(82% .11 21/.54);--portfolio-story-start:oklch(45% .16 27);--portfolio-story-mid:oklch(50% .19 25);--portfolio-story-end:oklch(34% .13 24)}.dark{--background:oklch(16% .025 26);--foreground:oklch(96.5% .012 22);--card:oklch(21% .035 26);--card-foreground:oklch(96.5% .012 22);--popover:oklch(21% .035 26);--popover-foreground:oklch(96.5% .012 22);--primary:oklch(72% .16 27);--primary-foreground:oklch(16% .025 26);--secondary:oklch(28% .045 27);--secondary-foreground:oklch(95% .018 22);--muted:oklch(26% .032 27);--muted-foreground:oklch(78% .035 25);--accent:oklch(31% .07 27);--accent-foreground:oklch(96% .012 22);--destructive:oklch(68% .19 28);--border:oklch(100% 0 0/.12);--input:oklch(100% 0 0/.16);--ring:oklch(72% .16 27);--chart-1:oklch(72% .16 27);--chart-2:oklch(69% .12 48);--chart-3:oklch(65% .1 165);--chart-4:oklch(68% .09 255);--chart-5:oklch(78% .1 78);--sidebar:oklch(21% .035 26);--sidebar-foreground:oklch(96.5% .012 22);--sidebar-primary:oklch(72% .16 27);--sidebar-primary-foreground:oklch(16% .025 26);--sidebar-accent:oklch(28% .045 27);--sidebar-accent-foreground:oklch(95% .018 22);--sidebar-border:oklch(100% 0 0/.12);--sidebar-ring:oklch(72% .16 27)}@keyframes portfolio-swap-in{0%{opacity:0;transform:translateY(.35em)}to{opacity:1;transform:translateY(0)}}@media (width<=640px){.portfolio-header{height:4rem}.portfolio-hero{min-height:calc(100svh - 4rem)}.portfolio-hero-title{max-width:20rem;line-height:1}.portfolio-avatar{margin-bottom:.85rem}.portfolio-story-section{min-height:210svh}.portfolio-story-inner{justify-content:center;gap:2.5rem;min-height:100svh;padding-top:4.5rem;padding-bottom:4rem;transform:translateY(-3svh)}.portfolio-story-copy{font-size:clamp(1.55rem,7.8vw,2.55rem);line-height:1.06}.portfolio-affiliations{grid-template-columns:1fr;gap:1rem;width:100%}.portfolio-affiliation-item{justify-content:flex-start;min-height:6rem}.portfolio-affiliation-image{max-width:15.5rem;max-height:5rem}.portfolio-stack-section{min-height:205svh;padding-top:1.5rem}.portfolio-stack-heading{width:min(100% - 2rem,26rem)}.portfolio-scroll-stack .scroll-stack-inner{min-height:136svh;padding:.25rem 1rem 28rem}.portfolio-scroll-stack .portfolio-stack-card{width:min(100vw - 2rem,22rem);min-height:22rem;padding:1rem}.portfolio-stack-card-content{grid-template-columns:1fr;align-items:start;gap:1rem}.portfolio-stack-card-main{gap:1rem}.portfolio-stack-card-header{grid-template-columns:1fr;gap:1rem}.portfolio-stack-index{min-width:4.7rem;font-size:clamp(2.25rem,13vw,4rem)}.portfolio-stack-card h3{font-size:clamp(1.25rem,6.8vw,2rem);line-height:1}.portfolio-stack-summary{font-size:.78rem;line-height:1.45}.portfolio-stack-icon{justify-self:end;width:4.75rem}.portfolio-stack-icon svg{width:3rem;height:3rem}.portfolio-projects-section{min-height:240svh}.portfolio-projects-sticky{justify-content:flex-start;align-items:stretch;gap:1.5rem;padding-top:2rem;padding-bottom:1.5rem}.portfolio-projects-heading{grid-template-columns:1fr;align-items:start;gap:1rem;width:min(100% - 2rem,28rem)}.portfolio-projects-heading h2{max-width:16rem;font-size:clamp(2.15rem,10.5vw,3.3rem)}.portfolio-projects-meter{padding-bottom:0}.portfolio-project-card{width:min(70vw,15.75rem)}.portfolio-project-preview{background-size:2.75rem 2.75rem;min-height:6.25rem;padding:.75rem}.portfolio-project-preview svg{width:2.25rem;height:2.25rem}.portfolio-project-preview span{padding:.28rem .55rem;font-size:.6rem}.portfolio-project-card-copy{min-height:0;padding:.8rem}.portfolio-project-card-copy h3{font-size:clamp(1.05rem,5vw,1.3rem)}.portfolio-project-card-copy>p:last-child{-webkit-line-clamp:7;-webkit-box-orient:vertical;font-size:.68rem;line-height:1.34;display:-webkit-box;overflow:hidden}.portfolio-education-section{min-height:210svh}.portfolio-education-sticky{align-items:flex-start;padding:2.25rem 1rem 1.5rem}.portfolio-education-inner{grid-template-columns:1fr;gap:1.5rem}.portfolio-education-heading p{margin-bottom:.75rem;font-size:1.1rem}.portfolio-education-heading h2{max-width:21rem;font-size:clamp(2.1rem,10vw,3.25rem);line-height:.98}.portfolio-education-card{gap:1rem;padding:1rem}.portfolio-education-school{gap:.8rem}.portfolio-education-school>span{width:3rem}.portfolio-education-school p:first-child{font-size:1.05rem}.portfolio-education-school p:last-child{font-size:.8rem}.portfolio-education-thesis h3{font-size:.98rem;line-height:1.26}.portfolio-education-details{gap:.65rem}.portfolio-education-details li{font-size:.8rem;line-height:1.4}.portfolio-education-actions{gap:.6rem}.portfolio-education-actions a{width:100%}.portfolio-skills-section{min-height:220svh}.portfolio-skills-sticky{align-items:flex-start;padding:2.25rem 1rem 1.5rem}.portfolio-skills-inner{grid-template-columns:1fr;gap:1.5rem}.portfolio-skills-heading p{margin-bottom:.7rem;font-size:1.1rem}.portfolio-skills-heading h2{max-width:20rem;font-size:clamp(2rem,9.5vw,3.1rem);line-height:.98}.portfolio-skills-grid{grid-template-columns:1fr;gap:.7rem}.portfolio-skills-group{min-height:0;padding:.85rem}.portfolio-skills-group h3{margin-bottom:.65rem;font-size:1rem}.portfolio-skills-group ul{gap:.4rem}.portfolio-skills-group ul li{padding:.32rem .5rem;font-size:.68rem}}@media (prefers-reduced-motion:reduce){.portfolio-swap-text{animation:none}.portfolio-story-copy,.portfolio-affiliation-item{transition:none;transform:none}.portfolio-story-copy .word{opacity:1;filter:none}.portfolio-projects-section{min-height:auto}.portfolio-projects-sticky{min-height:auto;position:static}.portfolio-projects-track{will-change:auto;width:auto;overflow-x:auto;transform:none!important}.portfolio-education-section{min-height:auto}.portfolio-education-sticky{min-height:auto;position:static}.portfolio-education-inner{opacity:1;will-change:auto;transform:none}.portfolio-skills-section{min-height:auto}.portfolio-skills-sticky{min-height:auto;position:static}.portfolio-skills-heading,.portfolio-skills-group{opacity:1;will-change:auto;transform:none}}@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-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{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-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@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}@keyframes pulse{50%{opacity:.5}}
