.logoloop{position:relative;overflow-x:hidden;--logoloop-gap: 32px;--logoloop-logoHeight: 28px;--logoloop-fadeColorAuto: #ffffff}.logoloop--vertical{overflow:hidden;height:100%;display:inline-block}.logoloop--scale-hover{padding-top:calc(var(--logoloop-logoHeight) * .1);padding-bottom:calc(var(--logoloop-logoHeight) * .1)}@media(prefers-color-scheme:dark){.logoloop{--logoloop-fadeColorAuto: #0b0b0b}}.logoloop__track{display:flex;width:max-content;will-change:transform;user-select:none;position:relative;z-index:0}.logoloop--vertical .logoloop__track{flex-direction:column;height:max-content;width:100%}.logoloop__list{display:flex;align-items:center}.logoloop--vertical .logoloop__list{flex-direction:column}.logoloop__item{flex:0 0 auto;margin-right:var(--logoloop-gap);font-size:var(--logoloop-logoHeight);line-height:1}.logoloop--vertical .logoloop__item{margin-right:0;margin-bottom:var(--logoloop-gap)}.logoloop__item:last-child{margin-right:var(--logoloop-gap)}.logoloop--vertical .logoloop__item:last-child{margin-right:0;margin-bottom:var(--logoloop-gap)}.logoloop__node{display:inline-flex;align-items:center}.logoloop__item img{height:var(--logoloop-logoHeight);width:auto;display:block;object-fit:contain;image-rendering:-webkit-optimize-contrast;-webkit-user-drag:none;pointer-events:none;transition:transform .3s cubic-bezier(.4,0,.2,1)}.logoloop--scale-hover .logoloop__item{overflow:visible}.logoloop--scale-hover .logoloop__item:hover img,.logoloop--scale-hover .logoloop__item:hover .logoloop__node{transform:scale(1.2);transform-origin:center center}.logoloop--scale-hover .logoloop__node{transition:transform .3s cubic-bezier(.4,0,.2,1)}.logoloop__link{display:inline-flex;align-items:center;text-decoration:none;border-radius:4px;transition:opacity .2s ease}.logoloop__link:hover{opacity:.8}.logoloop__link:focus-visible{outline:2px solid currentColor;outline-offset:2px}.logoloop--fade:before,.logoloop--fade:after{content:"";position:absolute;top:0;bottom:0;width:clamp(24px,8%,120px);pointer-events:none;z-index:10}.logoloop--fade:before{left:0;background:linear-gradient(to right,var(--logoloop-fadeColor, var(--logoloop-fadeColorAuto)) 0%,rgba(0,0,0,0) 100%)}.logoloop--fade:after{right:0;background:linear-gradient(to left,var(--logoloop-fadeColor, var(--logoloop-fadeColorAuto)) 0%,rgba(0,0,0,0) 100%)}.logoloop--vertical.logoloop--fade:before,.logoloop--vertical.logoloop--fade:after{left:0;right:0;width:100%;height:clamp(24px,8%,120px)}.logoloop--vertical.logoloop--fade:before{top:0;bottom:auto;background:linear-gradient(to bottom,var(--logoloop-fadeColor, var(--logoloop-fadeColorAuto)) 0%,rgba(0,0,0,0) 100%)}.logoloop--vertical.logoloop--fade:after{bottom:0;top:auto;background:linear-gradient(to top,var(--logoloop-fadeColor, var(--logoloop-fadeColorAuto)) 0%,rgba(0,0,0,0) 100%)}@media(prefers-reduced-motion:reduce){.logoloop__track{transform:translateZ(0)!important}.logoloop__item img,.logoloop__node{transition:none!important}}.tech-loop{margin:0 0 2rem;color:var(--fg);font-family:inherit;max-width:100%}.tech-loop:focus-visible{outline:1px solid var(--muted);outline-offset:4px}.tech-loop .logoloop__list,.tech-loop .tech-logo-static{list-style:none;padding:0;margin:0}.tech-loop .logoloop__list{flex:none}.tech-loop .logoloop{overflow-x:clip;overflow-y:visible}.tech-loop .logoloop--scale-hover{padding-block:10px}.tech-loop .logoloop__item{padding:10px 0;margin:0 24px 0 0}.tech-loop .logoloop__item::marker,.tech-loop .tech-logo-static>li::marker{content:""}.tech-loop .tech-logo{display:inline-flex;align-items:center}.tech-loop svg{flex:none;width:24px;height:24px}.tech-loop .tech-logo-static{display:flex;flex-wrap:wrap;gap:12px 24px;padding-block:10px}.tech-loop .tech-logo-static>li{margin:0;padding:10px 0}.tech-loop .logoloop__link{border-radius:0}@media(hover:hover)and (pointer:fine){.tech-loop .logoloop__node,.tech-loop .tech-logo-static .tech-logo{transition:color .16s ease,transform .28s cubic-bezier(.16,1.4,.3,1),filter .18s ease}.tech-loop .logoloop--scale-hover .logoloop__item:hover .logoloop__node,.tech-loop .tech-logo-static>li:hover .tech-logo{color:var(--cat, var(--fg));transform:translateY(-5px) scale(1.85);filter:var(--hover-icon-glow, none)}}@media(max-width:40rem){.tech-loop svg{width:22px;height:22px}}@media(prefers-reduced-motion:reduce){.tech-loop .logoloop__node,.tech-loop .tech-logo-static .tech-logo{transform:none!important;transition:none!important}}.about[data-astro-cid-kh7btl4r]{max-width:42rem;font-family:IBM Plex Mono,ui-monospace,Consolas,monospace}.about[data-astro-cid-kh7btl4r] h1[data-astro-cid-kh7btl4r]{font-family:inherit;letter-spacing:-.02em}.abt-sec[data-astro-cid-kh7btl4r]+.abt-sec[data-astro-cid-kh7btl4r]{margin-top:2.4rem}.about[data-astro-cid-kh7btl4r] h2[data-astro-cid-kh7btl4r]{margin:0;font-size:.72rem;font-weight:400;text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}.abt-spec[data-astro-cid-kh7btl4r]{margin:.55rem 0 0;border-top:1px solid var(--line)}.abt-row[data-astro-cid-kh7btl4r]{display:grid;grid-template-columns:9.5rem 1fr;gap:1rem;padding:.6rem 0;border-bottom:1px solid var(--line)}.abt-row[data-astro-cid-kh7btl4r] dt[data-astro-cid-kh7btl4r]{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding-top:.28em}.abt-row[data-astro-cid-kh7btl4r] dd[data-astro-cid-kh7btl4r]{margin:0;font-size:.82rem;line-height:1.75}.abt-cats[data-astro-cid-kh7btl4r]{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.25rem 1.1rem}.abt-cats[data-astro-cid-kh7btl4r] li[data-astro-cid-kh7btl4r]{display:flex;align-items:center;gap:.45em;font-size:.82rem}.abt-n[data-astro-cid-kh7btl4r]{font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums}.abt-chip[data-astro-cid-kh7btl4r]{flex:none;width:.6em;height:.6em;background:var(--chip-c, var(--fg));--chip-c: var(--cat-l)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .abt-chip[data-astro-cid-kh7btl4r]{--chip-c: var(--cat-d)}}:root[data-theme=dark] .abt-chip[data-astro-cid-kh7btl4r]{--chip-c: var(--cat-d)}@media(max-width:40rem){.abt-row[data-astro-cid-kh7btl4r]{grid-template-columns:1fr;gap:.15rem}}
