.dither-portrait_portrait__NxjR3{--control-outset:1rem;position:relative;display:block;width:100%;aspect-ratio:1;margin-bottom:4.5rem;touch-action:pan-y}.dither-portrait_image__nr6iM{position:absolute;inset:40px;overflow:hidden;border-radius:50%;touch-action:pan-y}.dither-portrait_media__15pzX{position:absolute;inset:0;overflow:hidden;border-radius:inherit;background:var(--background);pointer-events:none}.dither-portrait_control__PBjf7{position:absolute;inset:calc(22px - var(--control-outset));color:var(--muted-foreground);pointer-events:none;touch-action:none}.dither-portrait_arc__CDVSO{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.dither-portrait_arc__CDVSO path{fill:none;stroke-width:1;stroke-linecap:round;vector-effect:non-scaling-stroke}.dither-portrait_track__tThgx{stroke:color-mix(in srgb,var(--foreground) 14%,transparent)}.dither-portrait_tick__jHck1{stroke:color-mix(in srgb,var(--foreground) 32%,transparent)}.dither-portrait_arc__CDVSO .dither-portrait_hitArea__6hCL0{stroke:transparent;stroke-width:36;pointer-events:stroke;touch-action:none;cursor:grab}.dither-portrait_portrait__NxjR3[data-adjusting=true] .dither-portrait_endpoint__4gs5p,.dither-portrait_portrait__NxjR3[data-adjusting=true] .dither-portrait_hitArea__6hCL0{cursor:grabbing}.dither-portrait_endpoint__4gs5p{position:absolute;z-index:1;display:grid;width:44px;height:44px;place-items:center;padding:0;border:0;border-radius:50%;background:transparent;transform:translate(-50%,-50%);pointer-events:auto;touch-action:none;cursor:grab}.dither-portrait_endpointDisc__f2HRZ{display:grid;width:32px;height:32px;place-items:center;border:1px solid var(--border);border-radius:50%;background:var(--background);color:var(--muted-foreground);transition:color .16s ease,border-color .16s ease}.dither-portrait_endpointDisc__f2HRZ svg{width:16px;height:16px}.dither-portrait_endpoint__4gs5p:hover .dither-portrait_endpointDisc__f2HRZ,.dither-portrait_endpoint__4gs5p[aria-pressed=true] .dither-portrait_endpointDisc__f2HRZ{color:var(--brand-blue);border-color:color-mix(in srgb,var(--brand-blue) 40%,var(--border))}.dither-portrait_endpoint__4gs5p:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.dither-portrait_thumbOrbit__cKF1h{position:absolute;inset:0;z-index:2;pointer-events:none}.dither-portrait_thumb__2wNMw{position:absolute;top:50%;left:100%;width:40px;height:40px;border:1.5px solid var(--brand-blue);border-radius:50%;background:color-mix(in srgb,var(--brand-blue) 5%,transparent);transform:translate(-50%,-50%);pointer-events:none}.dither-portrait_control__PBjf7[data-pointer-focus=false]:has(.dither-portrait_input__WhcW4:focus-visible) .dither-portrait_thumb__2wNMw{outline:2px solid var(--ring);outline-offset:3px}.dither-portrait_input__WhcW4{position:absolute;width:44px;height:44px;margin:0;transform:translate(-50%,-50%);opacity:0;pointer-events:none}@media (max-width:767px){.dither-portrait_portrait__NxjR3{margin-top:var(--control-outset);margin-bottom:5rem}}@media (prefers-reduced-motion:reduce){.dither-portrait_endpointDisc__f2HRZ{transition:none}}.dither-portrait_interaction__EK_2z{position:absolute;inset:0;z-index:4;border-radius:inherit;touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.dither-portrait_interaction__EK_2z[data-armed=true]{touch-action:none}.dither-portrait_interaction__EK_2z:focus-visible{outline:2px solid var(--brand-blue);outline-offset:-3px}.dither-portrait_interactionCanvas___QPAp{position:absolute;inset:0;pointer-events:none}.dither-portrait_toolCursor__DCUNb{position:absolute;display:none;width:24px;height:24px;pointer-events:none;color:#272831;filter:drop-shadow(0 1px 1px #fff) drop-shadow(0 0 2px #fff);transform:translate(-3px,-21px)}.dither-portrait_toolCursor__DCUNb svg{width:100%;height:100%}@media (pointer:fine){.dither-portrait_interaction__EK_2z[data-tool=paint],.dither-portrait_interaction__EK_2z[data-tool=sketch]{cursor:crosshair}.dither-portrait_interaction__EK_2z[data-tool=paint]:has(.dither-portrait_toolCursor__DCUNb[data-visible=true]),.dither-portrait_interaction__EK_2z[data-tool=sketch]:has(.dither-portrait_toolCursor__DCUNb[data-visible=true]){cursor:none}.dither-portrait_interaction__EK_2z[data-tool=paint] .dither-portrait_toolCursor__DCUNb[data-visible=true],.dither-portrait_interaction__EK_2z[data-tool=sketch] .dither-portrait_toolCursor__DCUNb[data-visible=true]{display:block}}.dither-portrait_interactionTools__v1h4L{position:absolute;inset-inline:-1rem;top:calc(100% + 1.375rem);display:flex;align-items:center;justify-content:center;gap:.75rem;height:2.75rem;color:var(--muted-foreground);font-size:.75rem;line-height:1.4;white-space:nowrap}.dither-portrait_interactionTools__v1h4L button{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;min-height:44px;padding-inline:.375rem;border-radius:999px;cursor:pointer}.dither-portrait_interactionTools__v1h4L button svg{width:15px;height:15px}.dither-portrait_interactionTools__v1h4L button:hover,.dither-portrait_interactionTools__v1h4L button[aria-pressed=true]{color:var(--foreground)}.dither-portrait_interactionTools__v1h4L button:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.dither-portrait_unavailable__pkOhZ{position:absolute;inset:0;display:grid;place-items:center;background:var(--surface-inner);color:var(--muted-foreground)}.dot-matrix-loader_loader__i8F_Z{isolation:isolate;pointer-events:none;color:var(--brand-blue)}.dot-matrix-loader_texture__6zLMH{position:absolute;z-index:0;inset:0;border-radius:inherit;background-image:radial-gradient(circle,currentColor .9px,transparent 1.2px),linear-gradient(110deg,transparent,color-mix(in srgb,var(--brand-blue) 30%,transparent),transparent);background-position:50%;background-size:12px 12px,100% 100%;opacity:.13;animation:dot-matrix-loader_breathe__syrEC 4.8s ease-in-out infinite;animation-play-state:paused}.dot-matrix-loader_loader__i8F_Z[data-loading-motion=active] .dot-matrix-loader_texture__6zLMH{animation-play-state:running}.dot-matrix-loader_loader__i8F_Z[data-loading-static] .dot-matrix-loader_texture__6zLMH{animation:none;opacity:.13}@keyframes dot-matrix-loader_breathe__syrEC{0%,to{opacity:.1}50%{opacity:.2}}@media (prefers-reduced-motion:reduce){.dot-matrix-loader_texture__6zLMH{animation:none;opacity:.13}}@media (scripting:none){.dot-matrix-loader_loader__i8F_Z[data-image-loading-indicator]{display:none}}.lab-experiment-loader_loader__skm1a{display:grid;place-items:center}.lab-experiment-loader_artwork__lcz9a{position:relative;z-index:1;width:min(68%,10.5rem);max-height:80%;aspect-ratio:1;overflow:visible;color:var(--brand-blue);animation:lab-experiment-loader_float__phxE9 4.8s ease-in-out infinite}.lab-experiment-loader_compact__9AVWt{width:2.5rem;max-height:2.5rem}.lab-experiment-loader_navThumb__J9YKP{width:2rem;max-height:2rem}.lab-experiment-loader_navThumb__J9YKP,.lab-experiment-loader_navThumb__J9YKP *{vector-effect:non-scaling-stroke;stroke-width:1.6px}.lab-experiment-loader_navThumb__J9YKP .lab-experiment-loader_wash__61_wJ{fill-opacity:.2;stroke:none}.lab-experiment-loader_navThumb__J9YKP .lab-experiment-loader_solid__4uN47{stroke:none}.lab-experiment-loader_navThumb__J9YKP .lab-experiment-loader_muted__FLMpz{opacity:.7}.lab-experiment-loader_navThumb__J9YKP .lab-experiment-loader_track__HWkhR{opacity:.35}.lab-experiment-loader_navThumb__J9YKP .lab-experiment-loader_type__jXyBM{stroke:none}.lab-experiment-loader_type__jXyBM{font-family:inherit;font-size:57px;font-weight:500;letter-spacing:-3px}.lab-experiment-loader_wash__61_wJ{fill:currentColor;fill-opacity:.07;stroke:none}.lab-experiment-loader_solid__4uN47{fill:var(--surface-inner)}.lab-experiment-loader_muted__FLMpz{opacity:.38}.lab-experiment-loader_track__HWkhR{opacity:.13}.lab-experiment-loader_detail__AhtDs{animation:lab-experiment-loader_detail__AhtDs 3.6s ease-in-out infinite}.lab-experiment-loader_pulse__6UVm_{animation:lab-experiment-loader_pulse__6UVm_ 2.4s ease-in-out infinite}.lab-experiment-loader_rain__Hpbz7{animation:lab-experiment-loader_rain__Hpbz7 2.4s ease-in-out infinite}.lab-experiment-loader_hand__DyngI{transform-origin:78px 80px;animation:lab-experiment-loader_hand__DyngI 6s ease-in-out infinite}.lab-experiment-loader_turn__g_UjN{transform-origin:80px 80px;animation:lab-experiment-loader_turn__g_UjN 6s ease-in-out infinite}.lab-experiment-loader_artwork__lcz9a,.lab-experiment-loader_detail__AhtDs,.lab-experiment-loader_hand__DyngI,.lab-experiment-loader_pulse__6UVm_,.lab-experiment-loader_rain__Hpbz7,.lab-experiment-loader_turn__g_UjN{animation-play-state:paused}[data-loading-motion=active] :is(.lab-experiment-loader_artwork__lcz9a,.lab-experiment-loader_detail__AhtDs,.lab-experiment-loader_pulse__6UVm_,.lab-experiment-loader_rain__Hpbz7,.lab-experiment-loader_hand__DyngI,.lab-experiment-loader_turn__g_UjN){animation-play-state:running}[data-loading-static] :is(.lab-experiment-loader_artwork__lcz9a,.lab-experiment-loader_detail__AhtDs,.lab-experiment-loader_pulse__6UVm_,.lab-experiment-loader_rain__Hpbz7,.lab-experiment-loader_hand__DyngI,.lab-experiment-loader_turn__g_UjN){animation:none}@keyframes lab-experiment-loader_float__phxE9{0%,to{transform:translateY(2px)}50%{transform:translateY(-3px)}}@keyframes lab-experiment-loader_detail__AhtDs{0%,to{transform:translateY(1px)}50%{transform:translateY(-3px)}}@keyframes lab-experiment-loader_pulse__6UVm_{0%,to{opacity:.4}50%{opacity:1}}@keyframes lab-experiment-loader_rain__Hpbz7{0%,to{transform:translateY(-2px);opacity:.3}50%{transform:translateY(2px);opacity:.7}}@keyframes lab-experiment-loader_hand__DyngI{0%,to{transform:rotate(-16deg)}50%{transform:rotate(38deg)}}@keyframes lab-experiment-loader_turn__g_UjN{0%,to{transform:rotate(-5deg)}50%{transform:rotate(9deg)}}@media (prefers-reduced-motion:reduce){.lab-experiment-loader_artwork__lcz9a,.lab-experiment-loader_detail__AhtDs,.lab-experiment-loader_hand__DyngI,.lab-experiment-loader_pulse__6UVm_,.lab-experiment-loader_rain__Hpbz7,.lab-experiment-loader_turn__g_UjN{animation:none}}.page-header-motion_title__rPqZB{display:inline-block}.page-header-motion_letter__2nZqP{display:inline-block;white-space:pre;transform-origin:50% 65%}.page-header-motion_description__Exsb0{display:block}@media (prefers-reduced-motion:no-preference){.page-header-motion_header__4z2gZ[data-enter] .page-header-motion_letter__2nZqP{animation:page-header-motion_letter-enter__3x5jU .28s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(var(--header-letter-index) * 22ms)}.page-header-motion_header__4z2gZ[data-enter] .page-header-motion_description__Exsb0{animation:page-header-motion_description-enter__vqYfx .3s cubic-bezier(.22,1,.36,1) both;animation-delay:var(--header-description-delay)}.page-header-motion_header__4z2gZ[data-enter] .page-header-motion_identity__OZmX_{animation:page-header-motion_identity-enter__G6F_R .28s cubic-bezier(.22,1,.36,1) both}}@keyframes page-header-motion_letter-enter__3x5jU{0%{opacity:.25;transform:perspective(180px) translateY(.08em) rotateX(-55deg)}70%{opacity:1;transform:perspective(180px) translateY(0) rotateX(5deg)}to{opacity:1;transform:perspective(180px) translateY(0) rotateX(0)}}@keyframes page-header-motion_description-enter__vqYfx{0%{opacity:0;transform:translateX(-6px)}to{opacity:1;transform:translateX(0)}}@keyframes page-header-motion_identity-enter__G6F_R{0%{opacity:.4;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.media-frame_phone__ITVuk{border-radius:9.16%/4.23%}.lab-floating-panel_layer__i_LJ_{position:fixed;inset:0;z-index:90;pointer-events:none}.lab-floating-panel_scrim__4ZUik{position:absolute;inset:0;pointer-events:auto;border:0;background:transparent;cursor:default}.lab-floating-panel_panel__jLxeu{container:lab-float/inline-size;pointer-events:auto;position:absolute;top:max(1rem,env(safe-area-inset-top));right:max(1rem,env(safe-area-inset-right));display:flex;width:min(40rem,calc(100vw - 2rem));max-height:min(40rem,calc(100dvh - var(--lab-bar-h) - 2.5rem));flex-direction:column;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-card);background:color-mix(in srgb,var(--background) 90%,transparent);box-shadow:var(--elev-3);backdrop-filter:blur(18px);animation:lab-floating-panel_lab-float-in__roE4x .42s cubic-bezier(.22,1.28,.36,1)}.lab-floating-panel_header__el9GL{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem .75rem .75rem 1.25rem;border-bottom:1px solid var(--border)}.lab-floating-panel_title__EGDGs{margin:0;min-width:0;overflow:hidden;font-size:1rem;font-weight:500;line-height:1.5;text-overflow:ellipsis;white-space:nowrap}.lab-floating-panel_close__2Oxwd{display:inline-flex;width:var(--lab-control-size);height:var(--lab-control-size);flex-shrink:0;align-items:center;justify-content:center;border:0;border-radius:999px;background:transparent;color:var(--muted-foreground);cursor:pointer}.lab-floating-panel_close__2Oxwd:hover{color:var(--foreground);background:color-mix(in srgb,var(--foreground) 6%,transparent)}.lab-floating-panel_close__2Oxwd:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.lab-floating-panel_body__Z_8GP{min-height:0;overflow:auto;overscroll-behavior:contain;padding:1rem 1.25rem 1.25rem}.lab-floating-panel_lede__dejoE{margin:0 0 .75rem;color:var(--muted-foreground);font-size:1rem;line-height:1.5;text-wrap:pretty}.lab-floating-panel_columns__KYlFe{display:grid;grid-template-columns:minmax(0,1fr);gap:0 1.5rem;align-items:start}.lab-floating-panel_entry__QrZ2T{display:flex;min-height:2.75rem;flex-direction:column;justify-content:center;gap:.125rem;padding:.7rem 0;border-top:1px solid var(--border);color:inherit;text-decoration:none}.lab-floating-panel_entryTitle__z_ZQS{font-size:1rem;font-weight:500;line-height:1.5}.lab-floating-panel_entryLead__PkXI4{color:var(--muted-foreground);font-size:.875rem;line-height:1.45}.lab-floating-panel_entry__QrZ2T:focus-visible .lab-floating-panel_entryTitle__z_ZQS,.lab-floating-panel_entry__QrZ2T:hover .lab-floating-panel_entryTitle__z_ZQS{color:var(--brand-blue)}.lab-floating-panel_entry__QrZ2T:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.lab-floating-panel_copy__Ovhai{margin:0;font-size:1rem;line-height:1.5;text-wrap:pretty}.lab-floating-panel_meta__9hClj{display:flex;flex-direction:column;gap:.75rem;color:var(--muted-foreground);font-size:.875rem;line-height:1.5}@container lab-float (min-width: 34rem){.lab-floating-panel_columns__KYlFe{grid-template-columns:repeat(2,minmax(0,1fr))}.lab-floating-panel_meta__9hClj{padding-top:0}}@keyframes lab-floating-panel_lab-float-in__roE4x{0%{opacity:0;transform:translateX(.75rem)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.lab-floating-panel_panel__jLxeu{animation:none}}.skills_header__8JP5M{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin-bottom:16px}.skills_controls__SIvca{grid-column:2;grid-row:1;display:flex;align-items:center;gap:8px}.skills_help__IcVdb{grid-column:1/-1;justify-self:end;margin:0;color:var(--muted-foreground);font-size:14px;line-height:1.5;text-align:right}@media (min-width:900px){.skills_header__8JP5M{grid-template-columns:minmax(0,1fr) auto auto}.skills_help__IcVdb{grid-column:2;grid-row:1}.skills_controls__SIvca{grid-column:3}}