@import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap";/*! tailwindcss v4.2.2 | 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-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction: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-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:"Plus Jakarta Sans", system-ui, sans-serif;--font-mono:"JetBrains Mono", monospace;--color-purple-300:oklch(82.7% .119 306.383);--color-pink-300:oklch(82.3% .12 346.018);--color-white:#fff;--spacing:.25rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 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-pub:#ff8a00;--color-port:#b47fff;--color-notes:#ff4d6b;--page-bg:#322d45}}@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;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}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1{top:calc(var(--spacing) * 1)}.top-24{top:calc(var(--spacing) * 24)}.right-0{right:calc(var(--spacing) * 0)}.left-0{left:calc(var(--spacing) * 0)}.isolate{isolation:isolate}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-20{margin-top:calc(var(--spacing) * 20)}.mt-auto{margin-top:auto}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.ml-3{margin-left:calc(var(--spacing) * 3)}.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}.table{display:table}.table-cell{display:table-cell}.h-0\.5{height:calc(var(--spacing) * .5)}.h-18{height:calc(var(--spacing) * 18)}.h-28{height:calc(var(--spacing) * 28)}.h-40{height:calc(var(--spacing) * 40)}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-5{width:calc(var(--spacing) * 5)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.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}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.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-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-notes{border-color:var(--color-notes)}.border-port{border-color:var(--color-port)}.border-pub{border-color:var(--color-pub)}.object-cover{object-fit:cover}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-14{padding-top:calc(var(--spacing) * 14)}.pt-16{padding-top:calc(var(--spacing) * 16)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-14{padding-bottom:calc(var(--spacing) * 14)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pl-0{padding-left:calc(var(--spacing) * 0)}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-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-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.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-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.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)}.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,)}.grayscale{--tw-grayscale:grayscale(100%);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,)}.invert{--tw-invert:invert(100%);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{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-opacity{transition-property:opacity;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-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media(hover:hover){.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:text-pink-300:is(:where(.group):hover *){color:var(--color-pink-300)}.group-hover\:text-purple-300:is(:where(.group):hover *){color:var(--color-purple-300)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-50:hover{opacity:.5}.hover\:opacity-60:hover{opacity:.6}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-75:hover{opacity:.75}.hover\:opacity-80:hover{opacity:.8}}@media(min-width:40rem){.sm\:block{display:block}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:gap-14{gap:calc(var(--spacing) * 14)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}@media(min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}}:root{--theme-bg:#38334e;--theme-card:#3d3754;--theme-text:#ede9f8;--theme-text-muted:#9e99b0;--theme-border:#ffffff14;--theme-page-bg:#322d45;--theme-pre-bg:#1e1a2e;--theme-scrollbar-track:#322d45;--theme-post-summary-bg:#ffffff0a;--theme-post-summary-border:#ffffff14}html.light{--theme-bg:#f0eef8;--theme-card:#fff;--theme-text:#2a2535;--theme-text-muted:#6b6580;--theme-border:#00000014;--theme-page-bg:#e8e4f4;--theme-pre-bg:#f5f3ff;--theme-scrollbar-track:#e8e4f4;--theme-post-summary-bg:#00000008;--theme-post-summary-border:#00000014}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background-color:var(--theme-bg);color:var(--theme-text);min-height:100vh;font-family:Plus Jakarta Sans,system-ui,sans-serif;line-height:1.6;transition:background-color .25s,color .25s}body:before{content:"";pointer-events:none;z-index:0;background-image:radial-gradient(circle,#00000006 1px,#0000 1px);background-size:24px 24px;position:fixed;inset:0}main{z-index:1;position:relative}.reveal{opacity:0;transition:opacity .55s,transform .55s;transform:translateY(20px)}.reveal.visible{opacity:1;transform:translateY(0)}.reveal-delay-1{transition-delay:80ms}.reveal-delay-2{transition-delay:.16s}.reveal-delay-3{transition-delay:.24s}.reveal-delay-4{transition-delay:.32s}.reveal-delay-5{transition-delay:.4s}.card{background:var(--theme-card);border:1px solid var(--theme-border);border-radius:14px;transition:transform .2s,box-shadow .2s,background-color .25s;box-shadow:0 2px 12px #0003}.card:hover{transform:translateY(-3px);box-shadow:0 8px 28px #0000004d}.border-home{border-left:3px solid #4fa8e0}.border-cv{border-left:3px solid #7ec832}.border-pub{border-left:3px solid #ff8a00}.border-port{border-left:3px solid #b47fff}.border-notes{border-left:3px solid #ff4d6b}.gradient-home{-webkit-text-fill-color:transparent;background:linear-gradient(135deg,#4fa8e0,#7ec8f0);-webkit-background-clip:text;background-clip:text}.gradient-cv{-webkit-text-fill-color:transparent;background:linear-gradient(135deg,#7ec832,#b8f060);-webkit-background-clip:text;background-clip:text}.gradient-pub{-webkit-text-fill-color:transparent;background:linear-gradient(135deg,#ff8a00,#ffb347);-webkit-background-clip:text;background-clip:text}.gradient-port{-webkit-text-fill-color:transparent;background:linear-gradient(135deg,#b47fff,#d4a8ff);-webkit-background-clip:text;background-clip:text}.gradient-notes{-webkit-text-fill-color:transparent;background:linear-gradient(135deg,#ff4d6b,#ff7a8a);-webkit-background-clip:text;background-clip:text}.hover-glow-home:hover{box-shadow:0 6px 24px #4fa8e02e}.hover-glow-cv:hover{box-shadow:0 6px 24px #7ec8322e}.hover-glow-pub:hover{box-shadow:0 6px 24px #ff8a002e}.hover-glow-port:hover{box-shadow:0 6px 24px #b47fff2e}.hover-glow-notes:hover{box-shadow:0 6px 24px #ff4d6b2e}.port-link{transition:color .2s}.port-link-github:hover{color:#b47fff!important}.port-link-kaggle:hover{color:#4fa8e0!important}.port-link-colab:hover{color:#ff8a00!important}.tag{letter-spacing:.02em;border-radius:20px;align-items:center;padding:2px 10px;font-size:.75rem;font-weight:500;display:inline-flex}.tag-home{color:#7ec8f0;background:#4fa8e02e}.tag-cv{color:#9ee84a;background:#7ec8322e}.tag-pub{color:#fa4;background:#ff8a002e}.tag-port{color:#cfa8ff;background:#b47fff2e}.tag-notes{color:#ff8099;background:#ff4d6b2e}.tag-default{color:#9e99b0;background:#ffffff14}.nav-bookmark{-webkit-user-select:none;user-select:none;border-radius:0 0 11px 11px;justify-content:center;align-self:stretch;align-items:center;width:56px;margin-top:-8px;padding-top:8px;text-decoration:none;transition:transform .28s cubic-bezier(.34,1.56,.64,1),box-shadow .28s;display:inline-flex;position:relative;box-shadow:0 3px 10px #00000024;color:#ffffffeb!important}.nav-bookmark:before{content:"";background:inherit;border-radius:4px 4px 0 0;height:16px;position:absolute;top:-16px;left:0;right:0}.nav-bookmark:hover{transform:translateY(14px);box-shadow:0 12px 24px #00000040}.nav-bookmark.active{transform:translateY(16px);box-shadow:0 14px 28px #00000047}.nav-bookmark svg{flex-shrink:0;width:26px;height:26px}.bm-home{background:#4fa8e0}.bm-cv{background:#7ec832}.bm-pub{background:#ff8a00}.bm-port{background:#b47fff}.bm-notes{background:#ff4d6b}.bm-mobile-item{color:#fff;border-radius:8px;align-items:center;gap:10px;margin:2px 0;padding:10px 16px;font-size:.85rem;font-weight:600;transition:filter .15s;display:flex}.bm-mobile-item:hover{filter:brightness(.9)}.bm-mobile-item svg{opacity:.9;width:18px;height:18px}.mobile-menu{background:#1a1625;border-bottom:1px solid #ffffff12;flex-direction:column;padding:8px 12px 12px;display:none;position:absolute;top:100%;left:0;right:0;box-shadow:0 8px 24px #00000014}.mobile-menu.open{display:flex}.profile-wrap{flex-shrink:0;display:inline-block;position:relative;overflow:visible}.profile-ring-outer{background:conic-gradient(#4fa8e0,#7ec832,#ff8a00,#b47fff,#ff4d6b,#4fa8e0);border-radius:50%;width:172px;height:172px;padding:3px;animation:9s linear infinite ring-spin;box-shadow:0 0 22px #4fa8e038,0 0 44px #ff4d6b1a}.profile-ring-inner{background:var(--theme-bg,var(--page-bg,#2a2535));border-radius:50%;width:100%;height:100%;padding:3px;transition:background-color .25s;animation:9s linear infinite ring-spin-reverse;overflow:hidden}.profile-ring-inner img{object-fit:cover;border-radius:50%;width:100%;height:100%;display:block}@keyframes ring-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes ring-spin-reverse{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}@keyframes sparkle-pop{0%{opacity:0;transform:scale(0)rotate(-15deg)}20%{opacity:1;transform:scale(1.1)rotate(0)}45%,65%{opacity:.9;transform:scale(1)rotate(0)}to{opacity:0;transform:scale(0)rotate(15deg)}}.sparkle{pointer-events:none;transform-origin:50%;animation:ease-in-out infinite sparkle-pop;position:absolute}.sparkle:before,.sparkle:after{content:"";background:inherit;border-radius:50%;position:absolute;inset:0}.sparkle:before{transform:scaleX(3.5)scaleY(.35)}.sparkle:after{transform:scaleY(3.5)scaleX(.35)}.sparkle.s1{filter:drop-shadow(0 0 1.5px #4fa8e0);background:#4fa8e0;width:2.5px;height:2.5px;animation-duration:5.5s;animation-delay:0s;top:-14%;left:55%}.sparkle.s2{filter:drop-shadow(0 0 1.5px #7ec832);background:#7ec832;width:2px;height:2px;animation-duration:6.5s;animation-delay:2.2s;top:18%;left:118%}.sparkle.s3{filter:drop-shadow(0 0 1.5px #ff8a00);background:#ff8a00;width:2.5px;height:2.5px;animation-duration:5s;animation-delay:4s;top:-16%;left:18%}.sparkle.s4{filter:drop-shadow(0 0 1.5px #b47fff);background:#b47fff;width:2px;height:2px;animation-duration:6s;animation-delay:1.2s;top:65%;left:116%}.sparkle.s5{filter:drop-shadow(0 0 1.5px #ff4d6b);background:#ff4d6b;width:2.5px;height:2.5px;animation-duration:5.8s;animation-delay:3.5s;top:112%;left:70%}.sparkle.s6{filter:drop-shadow(0 0 1.5px #ffb347);background:#ffb347;width:2px;height:2px;animation-duration:6.2s;animation-delay:5s;top:30%;left:-16%}.post-content{color:var(--theme-text);line-height:1.8}.post-content .summary{background:var(--theme-post-summary-bg);border:1px solid var(--theme-post-summary-border);border-left:3px solid #4fa8e0;border-radius:0 8px 8px 0;margin-bottom:2rem;padding:1.25rem 1.5rem;font-size:.95rem}.post-content .pros{color:#5a9e1a;font-weight:600}.post-content .cons{color:#d43055;font-weight:600}.post-content h2.section{color:#7ec8f0;letter-spacing:.01em;background:#4fa8e012;border-left:3px solid #4fa8e0;border-radius:0 6px 6px 0;margin-top:2.5rem;margin-bottom:1rem;padding:.4rem .85rem;font-size:1.2rem;font-weight:600}.post-content h2.section.proposed{color:#9ee84a;background:#7ec83212;border-left-color:#7ec832}.post-content code{background:var(--theme-border);color:#cfa8ff;border-radius:4px;padding:2px 6px;font-family:JetBrains Mono,monospace;font-size:.875em}.post-content pre{background:var(--theme-pre-bg);border:1px solid var(--theme-border);border-radius:10px;margin:1.5rem 0;padding:1.25rem;overflow-x:auto}.post-content pre code{color:#cdc8e0;background:0 0;padding:0;font-size:.875rem}.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6{margin-top:2rem;margin-bottom:.75rem;font-weight:700}.post-content h1{color:#ede9f8;font-size:2rem}.post-content h2{color:#b47fff;letter-spacing:.01em;background:#b47fff12;border-left:3px solid #b47fff;border-radius:0 6px 6px 0;padding:.4rem .85rem;font-size:1.3rem}.post-content h3{color:#cfa8ff;border-left:2px solid #b47fff59;padding-left:.75rem;font-size:1.1rem}.post-content h4{color:#cdc8e0;font-size:1rem;font-weight:600}.post-content p{margin-bottom:1.25rem}.post-content a{color:#7ec8f0;-webkit-text-decoration:underline #7ec8f059;text-decoration:underline #7ec8f059;transition:color .2s,text-decoration-color .2s}.post-content a:hover{color:#aadcf8;text-decoration-color:#aadcf8}.post-content ul{margin-bottom:1.25rem;padding-left:1.5rem;list-style-type:disc}.post-content ol{margin-bottom:1.25rem;padding-left:1.5rem;list-style-type:decimal}.post-content ul ul{margin-bottom:.25rem;list-style-type:circle}.post-content ul ul ul{list-style-type:square}.post-content li{margin-bottom:.6rem;padding-left:.25rem}.post-content li>ul,.post-content li>ol{margin-top:.4rem}.post-content blockquote{color:#9e99b0;border-left:3px solid #ffffff26;margin:1.5rem 0;padding-left:1.25rem;font-style:italic}.post-content img{border-radius:8px;max-width:100%;margin:1.5rem auto;display:block}.post-content .img-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem;margin:1.5rem auto;display:flex}.post-content .img-row img{object-fit:contain;flex:1 1 0;min-width:0;max-width:100%;margin:0}.post-content .figure{text-align:center;max-width:92%;margin:2rem auto}.post-content .figure img{border:1px solid #ffffff1a;margin:0 auto}.post-content .figure p{color:#9e99b0;text-align:left;border-top:1px solid #ffffff12;margin-top:.6rem;margin-bottom:0;padding-top:.5rem;font-size:.8rem;font-style:italic}.post-content .figure p b{color:#cdc8e0;font-style:normal}.post-content em{color:#ff8099;font-style:italic}.post-content .citations{color:#7ec8f0;font-size:.85em;font-weight:600}.post-content table{border-collapse:collapse;width:100%;margin:1.5rem 0;font-size:.9rem}.post-content th{text-align:left;background:#ffffff0f;border:1px solid #ffffff14;padding:.6rem 1rem;font-weight:600}.post-content td{border:1px solid #ffffff14;padding:.6rem 1rem}.post-content input[type=checkbox]{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.post-content label.long_result{cursor:pointer;color:#cfa8ff;-webkit-user-select:none;user-select:none;background:#b47fff1a;border:1px solid #b47fff40;border-radius:8px;align-items:center;gap:.5rem;margin:.75rem 0 .25rem;padding:.35rem .9rem;font-size:.83rem;font-weight:600;transition:background .2s,border-color .2s;display:inline-flex}.post-content label.long_result:hover{background:#b47fff2e;border-color:#b47fff66}.post-content label.long_result:before{content:"▶";font-size:.6rem;transition:transform .3s;display:inline-block}.post-content input[type=checkbox]:checked+label.long_result{background:#b47fff2e;border-color:#b47fff66}.post-content input[type=checkbox]:checked+label.long_result:before{transform:rotate(90deg)}.post-content input[type=checkbox]+label.long_result+.long_result{opacity:0;max-height:0;margin:0;transition:max-height .45s,opacity .35s;display:block;overflow:hidden}.post-content input[type=checkbox]:checked+label.long_result+.long_result{opacity:1;max-height:1400px}.post-content .popa{color:#ff8a00;font-weight:600}.post-content .popb{color:#4fa8e0;font-weight:600}.post-content .legend_lines{color:#4fa8e0;font-weight:700}.post-content .legend_circles{color:#ff8a00;font-weight:700}.post-content .idyll-dynamic{color:#b47fff;cursor:ew-resize;border-bottom:2px dashed #b47fffb3;padding:0 2px;font-weight:700;transition:color .15s,border-color .15s;display:inline-block}.post-content .idyll-dynamic:hover{color:#cfa8ff;border-bottom-color:#cfa8ff}.post-content .idyll-display{color:#cfa8ff;font-weight:600;display:inline-block}.post-content .simulate{cursor:pointer;color:#cfa8ff;-webkit-user-select:none;user-select:none;background:#b47fff1f;border:1px solid #b47fff80;border-radius:8px;padding:.35rem 1rem;font-size:.9rem;font-weight:600;transition:background .2s,border-color .2s,transform .15s;display:inline-block}.post-content .simulate:hover{background:#b47fff40;border-color:#b47fffcc;transform:translateY(-1px)}.post-content .simulate:active{background:#b47fff59;transform:translateY(0)}.post-content .definition{text-align:center;border:1px solid var(--theme-border);background:#ffffff0a;border-left:3px solid #b47fff;border-radius:0 10px 10px 0;margin-bottom:1.5rem;padding:1rem 1.25rem;font-style:italic}.post-content .equation{border:1px solid var(--theme-border);text-align:center;background:#ffffff08;border-radius:8px;width:80%;margin:0 auto 1.5rem;padding:.75rem 1rem}.post-content .figure{text-align:center;margin-bottom:2rem}.post-content .detail{background:#ff8a000d;border:1px solid #ff8a0066;border-radius:6px;margin:1rem 0;padding:.75rem 1rem;font-size:.875rem;position:relative}.post-content .text_detail{color:#ff8a00;cursor:help;border-bottom:1px dashed #ff8a00b3}.post-content .d3-component{border-radius:10px;margin:1rem auto;overflow:hidden}.post-content .d3-component svg{border:1px solid var(--theme-border);background:#ffffff0a;border-radius:10px;max-height:300px;margin:auto;display:block}.post-content .aside{color:var(--theme-text-muted);border-left:2px solid #b47fff4d;margin:.5rem 0;padding-left:.85rem;font-size:.82rem}.post-content .accent-body{color:#b47fff}html.light .post-content .idyll-dynamic{color:#6d28d9;border-bottom-color:#6d28d999}html.light .post-content .idyll-dynamic:hover,html.light .post-content .idyll-display{color:#7c3aed}html.light .post-content .simulate{color:#6d28d9;background:#6d28d914;border-color:#6d28d966}html.light .post-content .simulate:hover{background:#6d28d929;border-color:#6d28d9b3}html.light .post-content .definition{background:#00000008}html.light .post-content .equation{background:#00000005}html.light .post-content .detail{background:#ff8a000a;border-color:#ff8a0080}html.light .post-content .d3-component svg{background:#f5f5f5}html.light .post-content .aside{color:var(--theme-text-muted)}html.light .post-content .accent-body{color:#6d28d9}.katex-display{padding:1rem 0;overflow-x:auto}.timeline{padding-left:2rem;position:relative}.timeline:before{content:"";background:linear-gradient(#7ec832,#7ec8321a);width:2px;position:absolute;top:0;bottom:0;left:.5rem}.timeline-item{margin-bottom:2rem;position:relative}.timeline-item:before{content:"";background:#7ec832;border-radius:50%;width:10px;height:10px;position:absolute;top:.4rem;left:-1.6rem;box-shadow:0 0 8px #7ec83273}.skill-badge{color:#ede9f8;background:#ffffff12;border:1px solid #ffffff1f;border-radius:20px;align-items:center;padding:4px 12px;font-size:.78rem;font-weight:500;transition:background .2s,border-color .2s;display:inline-flex}.skill-badge:hover{background:#ffffff1f}.first_author{color:#ede9f8;font-weight:700}.cv-section-title{letter-spacing:.14em;text-transform:uppercase;color:#9e99b0;align-items:center;gap:10px;margin-bottom:1.25rem;font-size:.7rem;font-weight:700;display:flex}.cv-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.cv-row{border-bottom:1px solid #ffffff0d;grid-template-columns:90px 1fr;gap:0 1.5rem;padding:.85rem 0;display:grid}.cv-row:last-child{border-bottom:none}.cv-date{color:#9e99b0;white-space:nowrap;padding-top:.15rem;font-size:.72rem;font-weight:600}.cv-title{color:#ede9f8;margin-bottom:.2rem;font-size:.92rem;font-weight:600;line-height:1.3}.cv-org{color:#9ee84a;margin-bottom:.35rem;font-size:.8rem;font-weight:500}.cv-loc{color:#9e99b0;font-weight:400}.cv-desc{color:#9e99b0;font-size:.8rem;line-height:1.55}.cv-link{color:#9ee84a;margin-left:.4rem;text-decoration:none;transition:opacity .15s}.cv-link:hover{opacity:.75;text-decoration:underline}.cv-skill-row{border-bottom:1px solid #ffffff0d;grid-template-columns:100px 1fr;align-items:start;gap:0 1.5rem;padding:.6rem 0;display:grid}.cv-skill-row:last-child{border-bottom:none}.cv-skill-label{color:#9e99b0;text-transform:uppercase;letter-spacing:.08em;padding-top:5px;font-size:.72rem;font-weight:600}html.light .post-content h1{color:var(--theme-text)}html.light .post-content h2{color:#6d28d9;background:#6d28d90f;border-left-color:#6d28d9}html.light .post-content h3{color:#7c3aed;border-left-color:#6d28d959}html.light .post-content h4{color:#3d3754}html.light .post-content em{color:#7c3aed}html.light .post-content a{color:#1a7ab5;text-decoration-color:#1a7ab559}html.light .post-content a:hover{color:#0f5a8c}html.light .post-content code{color:#7c4dff}html.light .post-content pre code{color:#3d3754}html.light .post-content blockquote{color:var(--theme-text-muted);border-left-color:#00000026}html.light .post-content th{background:#0000000a;border-color:#0000001a}html.light .post-content td{border-color:#0000001a}html.light .first_author,html.light .cv-title{color:var(--theme-text)}html.light .cv-desc,html.light .cv-date{color:var(--theme-text-muted)}html.light .skill-badge{color:var(--theme-text);background:#0000000d;border-color:#0000001f}html.light .tag-default{color:var(--theme-text-muted);background:#00000012}html.light .post-content label.long_result{color:#6d28d9;background:#6d28d914;border-color:#6d28d940}html.light .post-content label.long_result:hover,html.light .post-content input[type=checkbox]:checked+label.long_result{background:#6d28d924;border-color:#6d28d966}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--theme-scrollbar-track)}::-webkit-scrollbar-thumb{background:#8080804d;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#80808080}.theme-toggle{color:#ffffffd9;cursor:pointer;background:#ffffff14;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;transition:background .2s,transform .2s;display:inline-flex}.theme-toggle:hover{background:#ffffff26;transform:scale(1.1)}.theme-toggle svg{width:18px;height:18px}@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-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{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-duration{syntax:"*";inherits:false}@property --tw-ease{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}
