.gallery[data-astro-cid-ke2dt2yj]{flex-direction:column;gap:12px;min-width:0;display:flex}.gallery__stage[data-astro-cid-ke2dt2yj]{border:1px solid var(--line-card);background:var(--surface);aspect-ratio:16/10;border-radius:12px;position:relative;overflow:hidden}@media (width<=639.98px){.gallery__stage[data-astro-cid-ke2dt2yj]{aspect-ratio:4/3}}.gallery__track[data-astro-cid-ke2dt2yj]{overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;height:100%;display:flex;overflow:auto hidden}.gallery__track[data-astro-cid-ke2dt2yj]::-webkit-scrollbar{display:none}.gallery__slide[data-astro-cid-ke2dt2yj]{cursor:zoom-in;scroll-snap-align:center;scroll-snap-stop:always;background:0 0;border:0;flex:0 0 100%;height:100%;padding:0}.gallery__slide[data-astro-cid-ke2dt2yj]:focus-visible{outline-offset:-4px}.gallery__slide[data-astro-cid-ke2dt2yj] img{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%}.gallery__arrow[data-astro-cid-ke2dt2yj]{border:1px solid var(--line);width:40px;height:40px;box-shadow:var(--shadow-float);color:var(--text-strong);cursor:pointer;opacity:0;transition:opacity .2s, scale .55s var(--ease-spring);background:#ffffffeb;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:50%;translate:0 -50%}.gallery__arrow--prev[data-astro-cid-ke2dt2yj]{left:12px}.gallery__arrow--next[data-astro-cid-ke2dt2yj]{right:12px}.gallery--page[data-astro-cid-ke2dt2yj] .gallery__arrow[data-astro-cid-ke2dt2yj]{width:44px;height:44px}.gallery--page[data-astro-cid-ke2dt2yj] .gallery__arrow--prev[data-astro-cid-ke2dt2yj]{left:16px}.gallery--page[data-astro-cid-ke2dt2yj] .gallery__arrow--next[data-astro-cid-ke2dt2yj]{right:16px}.gallery__stage[data-astro-cid-ke2dt2yj].is-pointing .gallery__arrow[data-astro-cid-ke2dt2yj],.gallery__arrow[data-astro-cid-ke2dt2yj]:focus-visible{opacity:1}.gallery__stage[data-astro-cid-ke2dt2yj] .gallery__arrow[data-astro-cid-ke2dt2yj]:disabled{opacity:0;cursor:default}@media (hover:none){.gallery__arrow[data-astro-cid-ke2dt2yj]{display:none}}@media (hover:hover) and (prefers-reduced-motion:no-preference){.gallery__arrow[data-astro-cid-ke2dt2yj]:hover{scale:1.06}.gallery__arrow[data-astro-cid-ke2dt2yj]:active{scale:.98}}.gallery__thumbs[data-astro-cid-ke2dt2yj]{overscroll-behavior-x:contain;scrollbar-width:none;gap:8px;display:flex;position:relative;overflow-x:auto}.gallery__thumbs[data-astro-cid-ke2dt2yj]::-webkit-scrollbar{display:none}.gallery__thumb[data-astro-cid-ke2dt2yj]{border:1px solid var(--line-card);background:var(--surface);cursor:pointer;border-radius:8px;flex:none;height:64px;padding:0;transition:border-color .2s,box-shadow .2s;position:relative;overflow:hidden}.gallery--page[data-astro-cid-ke2dt2yj] .gallery__thumb[data-astro-cid-ke2dt2yj]{height:72px}.gallery__thumb[data-astro-cid-ke2dt2yj] img{-webkit-user-drag:none;width:auto;height:100%}@media (hover:hover){.gallery__thumb[data-astro-cid-ke2dt2yj]:hover{border-color:var(--line-btn-hover)}}.gallery__thumb[data-astro-cid-ke2dt2yj][aria-current=true]{border-color:var(--accent)}.gallery__thumb[data-astro-cid-ke2dt2yj][aria-current=true]:after{content:"";border:1px solid var(--accent);pointer-events:none;border-radius:7px;position:absolute;inset:0}.gallery__thumb[data-astro-cid-ke2dt2yj]:focus-visible{outline-offset:-2px;outline-color:#0000}.gallery__thumb[data-astro-cid-ke2dt2yj]:focus-visible:after{content:"";border:1px solid var(--accent);box-shadow:inset 0 0 0 2px #fff, inset 0 0 0 4px var(--accent);pointer-events:none;border-radius:7px;position:absolute;inset:0}.pinfo[data-astro-cid-4a6u2yos]{flex-direction:column;display:flex}.pinfo__block[data-astro-cid-4a6u2yos]{gap:12px;padding:22px 0;display:grid}.pinfo__block[data-astro-cid-4a6u2yos]+.pinfo__block[data-astro-cid-4a6u2yos],.pinfo__note[data-astro-cid-4a6u2yos]{border-top:1px solid var(--line)}.pinfo__block[data-astro-cid-4a6u2yos]:first-child{padding-top:0}.pinfo__head[data-astro-cid-4a6u2yos]{align-items:baseline;gap:12px;display:flex}.pinfo__num[data-astro-cid-4a6u2yos]{width:17px;color:var(--text-fainter);font-family:var(--font-mono);flex:none;font-size:11px}.pinfo__title[data-astro-cid-4a6u2yos]{color:var(--text-strong);font-size:16px;font-weight:500;line-height:1.45}.pinfo__list[data-astro-cid-4a6u2yos],.pinfo__body[data-astro-cid-4a6u2yos]{padding-left:29px}.pinfo__list[data-astro-cid-4a6u2yos]{gap:8px;margin-block:0;list-style:none;display:grid}.pinfo__list[data-astro-cid-4a6u2yos] li[data-astro-cid-4a6u2yos]{color:var(--text-muted);text-wrap:pretty;padding-left:18px;font-size:14.5px;line-height:1.6;position:relative}.pinfo__list[data-astro-cid-4a6u2yos] li[data-astro-cid-4a6u2yos]:before{content:"–";content:"–" / "";color:var(--accent);position:absolute;left:0}.pinfo__result[data-astro-cid-4a6u2yos]{color:var(--text-strong);font-size:16px;font-weight:500;line-height:1.5}.pinfo__stack[data-astro-cid-4a6u2yos]{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.pinfo__stack[data-astro-cid-4a6u2yos] li[data-astro-cid-4a6u2yos]{border:1px solid var(--line);background:var(--surface);color:var(--text-muted);font-family:var(--font-mono);border-radius:6px;padding:3px 9px;font-size:12px;line-height:1.6}.pinfo__aside[data-astro-cid-4a6u2yos]{color:var(--text-card);text-wrap:pretty;margin-top:12px;font-size:14px;line-height:1.6}.pinfo__note-text[data-astro-cid-4a6u2yos]{display:block}.pinfo__link[data-astro-cid-4a6u2yos]{color:var(--accent);transition:color .2s}.pinfo__link[data-astro-cid-4a6u2yos]:hover{color:var(--accent-hover)}.pinfo__note[data-astro-cid-4a6u2yos]{color:var(--text-fainter);text-wrap:pretty;padding-top:22px;font-size:14px;line-height:1.6}.pinfo--rows[data-astro-cid-4a6u2yos] .pinfo__block[data-astro-cid-4a6u2yos]{grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));align-items:start;gap:12px 48px;padding:24px 0}.pinfo--rows[data-astro-cid-4a6u2yos] .pinfo__block[data-astro-cid-4a6u2yos]:first-child{padding-top:0}.pinfo--rows[data-astro-cid-4a6u2yos] .pinfo__list[data-astro-cid-4a6u2yos] li[data-astro-cid-4a6u2yos]{font-size:15px}.pinfo--rows[data-astro-cid-4a6u2yos] .pinfo__note[data-astro-cid-4a6u2yos]{padding-top:24px}@media (width>=656px){.pinfo--rows[data-astro-cid-4a6u2yos] .pinfo__list[data-astro-cid-4a6u2yos],.pinfo--rows[data-astro-cid-4a6u2yos] .pinfo__body[data-astro-cid-4a6u2yos]{padding-left:0}.pinfo--rows[data-astro-cid-4a6u2yos] .pinfo__note[data-astro-cid-4a6u2yos]{padding-left:calc(50% + 24px)}}.pv[data-astro-cid-g35h27g6]{--stage:min(640px, calc((100dvh - 48px - 48px - 76px) * 1.6), calc(100vw - 64px - 48px - 32px - 410px));grid-template-columns:var(--stage) 410px;gap:32px;min-height:min(524px,100dvh - 48px);padding:24px;display:grid}.pv__media[data-astro-cid-g35h27g6]{min-width:0;min-height:calc(var(--stage) / 1.6 + 76px)}.pv__text[data-astro-cid-g35h27g6]{min-width:0;position:relative}.pv__scroll[data-astro-cid-g35h27g6]{overscroll-behavior:contain;scrollbar-width:thin;margin:0 -12px;padding:4px 12px 0;position:absolute;inset:44px 0 0;overflow-y:auto}.pv__scroll[data-astro-cid-g35h27g6]:focus,.pv__scroll[data-astro-cid-g35h27g6]:focus-visible{outline:none}.pv__scroll[data-astro-cid-g35h27g6]:before{content:"";z-index:1;background:linear-gradient(var(--bg) 6px, #fff0);opacity:0;pointer-events:none;height:22px;margin-bottom:-22px;transition:opacity .2s;display:block;position:sticky;top:-4px}.pv__scroll[data-astro-cid-g35h27g6].is-scrolled:before{opacity:1}.pv__scroll[data-astro-cid-g35h27g6]:after{content:"";background:linear-gradient(#fff0, var(--bg));pointer-events:none;height:40px;display:block;position:sticky;bottom:0}.pv__kicker[data-astro-cid-g35h27g6]{align-items:center;height:36px;padding-right:48px;display:flex}.pv__title[data-astro-cid-g35h27g6]{color:var(--text-strong);letter-spacing:-.015em;text-wrap:balance;font-size:24px;font-weight:500;line-height:1.25}.pv__lead[data-astro-cid-g35h27g6]{color:var(--text-muted);text-wrap:balance;margin-top:12px;font-size:15px;line-height:1.65}.pv__example[data-astro-cid-g35h27g6]{color:var(--text-fainter);text-wrap:pretty;margin-top:10px;font-size:14px;line-height:1.6}.pv__actions[data-astro-cid-g35h27g6]{flex-wrap:wrap;gap:10px;margin-top:22px;display:flex}.pv__full[data-astro-cid-g35h27g6]{margin-top:18px}.pv__info[data-astro-cid-g35h27g6]{border-top:1px solid var(--line);margin-top:26px;padding-top:24px}@media (width<=899.98px){.pv[data-astro-cid-g35h27g6]{grid-template-columns:minmax(0,1fr);gap:24px;min-height:0;padding:0 16px 40px}.pv__text[data-astro-cid-g35h27g6]{position:static}.pv__scroll[data-astro-cid-g35h27g6]{margin:0;padding:0;position:static;overflow:visible}.pv__scroll[data-astro-cid-g35h27g6]:before,.pv__scroll[data-astro-cid-g35h27g6]:after{display:none}.pv__kicker[data-astro-cid-g35h27g6]{height:auto;padding-right:0;display:block}.pv__title[data-astro-cid-g35h27g6]{margin-top:12px;font-size:22px}.pv__full[data-astro-cid-g35h27g6]{display:none}}.vw[data-astro-cid-at46poby]{color:#f3f4f6;background:#0a0c11;border:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:0;position:fixed;inset:0;overflow:hidden}.vw[data-astro-cid-at46poby]::backdrop{background:0 0}html:has(dialog.vw[open]){scrollbar-gutter:stable;background:#0a0c11;overflow:hidden}.vw__track[data-astro-cid-at46poby]:focus,.vw__track[data-astro-cid-at46poby]:focus-visible{outline:none}.vw__track[data-astro-cid-at46poby]{overscroll-behavior:contain;scroll-snap-type:x mandatory;scrollbar-width:none;height:100%;display:flex;overflow:auto hidden}.vw__track[data-astro-cid-at46poby]::-webkit-scrollbar{display:none}.vw__track[data-astro-cid-at46poby] .vw__slide{scroll-snap-align:center;scroll-snap-stop:always;flex:0 0 100%;height:100%;padding:68px 88px 76px}.vw__track[data-astro-cid-at46poby] .vw__slide img{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%}@media (width<=819.98px){.vw__track[data-astro-cid-at46poby] .vw__slide{padding:64px 0 72px}}.vw__top[data-astro-cid-at46poby]{pointer-events:none;justify-content:space-between;align-items:center;padding:12px 12px 12px 24px;display:flex;position:absolute;top:0;left:0;right:0}.vw__count[data-astro-cid-at46poby]{color:#d1d5db;font-family:var(--font-mono);font-size:13px}.vw__btn[data-astro-cid-at46poby]{color:#fff;cursor:pointer;pointer-events:auto;transition:background-color .2s, opacity .2s, scale .55s var(--ease-spring);background:#ffffff1a;border:0;border-radius:50%;place-items:center;padding:0;display:grid}@media (hover:hover){.vw__btn[data-astro-cid-at46poby]:hover{background:#ffffff2e}}.vw__btn[data-astro-cid-at46poby]:focus-visible{outline-color:#fff}.vw__close[data-astro-cid-at46poby]{width:44px;height:44px}.vw__arrow[data-astro-cid-at46poby]{width:52px;height:52px;position:absolute;top:50%;translate:0 -50%}.vw__arrow--prev[data-astro-cid-at46poby]{left:20px}.vw__arrow--next[data-astro-cid-at46poby]{right:20px}.vw__arrow[data-astro-cid-at46poby]:disabled{opacity:0;cursor:default}@media (hover:none){.vw__arrow[data-astro-cid-at46poby]{display:none}}@media (hover:hover) and (prefers-reduced-motion:no-preference){.vw__btn[data-astro-cid-at46poby]:hover{scale:1.06}.vw__btn[data-astro-cid-at46poby]:active{scale:.98}}.vw__caption[data-astro-cid-at46poby]{color:#d1d5db;text-align:center;text-wrap:balance;pointer-events:none;width:max-content;max-width:min(720px,100% - 32px);font-size:14px;line-height:1.5;position:absolute;bottom:22px;left:50%;translate:-50%}.works[data-astro-cid-xqmwqleg]{margin:0;padding:0;list-style:none}@media (width>=656px){.works[data-astro-cid-xqmwqleg]{grid-template-rows:auto;grid-auto-rows:1fr;display:grid}}.work[data-astro-cid-xqmwqleg]{grid-template-areas:"top""text""links";align-content:start;gap:12px;padding:24px 0;display:grid}@media (width>=656px){.work[data-astro-cid-xqmwqleg]{grid-template:"top text""links text"1fr/1fr 1fr;gap:10px 48px}}.work[data-astro-cid-xqmwqleg]+.work[data-astro-cid-xqmwqleg]{border-top:1px solid var(--line)}.work[data-astro-cid-xqmwqleg]:first-child{padding-top:0}.work__top[data-astro-cid-xqmwqleg]{grid-area:top;align-items:baseline;gap:12px;display:flex}.work__num[data-astro-cid-xqmwqleg]{width:17px;color:var(--text-fainter);font-family:var(--font-mono);flex:none;font-size:11px}.work__title[data-astro-cid-xqmwqleg]{color:var(--text-strong);text-wrap:balance;font-size:16px;font-weight:500;line-height:1.45}.work__text[data-astro-cid-xqmwqleg]{color:var(--text-muted);text-wrap:balance;grid-area:text;gap:13px;font-size:15px;line-height:1.6;display:flex}.work__arrow[data-astro-cid-xqmwqleg]{height:24px;color:var(--accent);flex:none;align-items:center;display:flex}.work__links[data-astro-cid-xqmwqleg]{flex-wrap:wrap;grid-area:links;align-self:start;align-items:flex-start;gap:8px 22px;padding-left:29px;display:flex}.pf[data-astro-cid-xqmwqleg]{width:100%;max-width:none;height:100%;max-height:none;color:var(--text);background:0 0;border:0;margin:0;padding:0;position:fixed;inset:0;overflow:hidden}.pf[data-astro-cid-xqmwqleg]::backdrop{background:0 0}html:has(dialog.pf[open]){scrollbar-gutter:stable;background:#91949b;overflow:hidden}.pf__backdrop[data-astro-cid-xqmwqleg]{backdrop-filter:blur(3px);background:#11182773;position:absolute;inset:0}.pf__panel[data-astro-cid-xqmwqleg]{background:var(--bg);border-radius:16px;max-height:calc(100dvh - 48px);position:absolute;top:50%;left:50%;translate:-50% -50%;box-shadow:0 32px 80px -16px #11182766}.pf__panel[data-astro-cid-xqmwqleg]:focus,.pf__panel[data-astro-cid-xqmwqleg]:focus-visible{outline:none}.pf__bar[data-astro-cid-xqmwqleg]{z-index:2;position:absolute;top:24px;right:24px}.pf__handle[data-astro-cid-xqmwqleg]{display:none}.pf__close[data-astro-cid-xqmwqleg]{border:1px solid var(--line);background:var(--bg);width:36px;height:36px;color:var(--text-strong);cursor:pointer;transition:border-color .2s, background-color .2s, scale .55s var(--ease-spring);border-radius:50%;place-items:center;padding:0;display:grid}@media (hover:hover){.pf__close[data-astro-cid-xqmwqleg]:hover{border-color:var(--line-btn-hover);background:var(--surface)}}@media (hover:hover) and (prefers-reduced-motion:no-preference){.pf__close[data-astro-cid-xqmwqleg]:hover{scale:1.06}.pf__close[data-astro-cid-xqmwqleg]:active{scale:.98}}@media (width<=899.98px){.pf__panel[data-astro-cid-xqmwqleg]{top:max(8px, env(safe-area-inset-top));overscroll-behavior:contain;border-radius:16px 16px 0 0;width:min(680px,100%);max-height:none;bottom:0;overflow:hidden auto;translate:-50%}.pf__bar[data-astro-cid-xqmwqleg]{background:var(--bg);justify-content:center;align-items:center;height:44px;display:flex;position:sticky;top:0;right:auto}.pf__handle[data-astro-cid-xqmwqleg]{background:var(--line);border-radius:3px;width:40px;height:5px;display:block}.pf__close[data-astro-cid-xqmwqleg]{width:34px;height:34px;position:absolute;top:6px;right:16px}.pf__bar[data-astro-cid-xqmwqleg]:after{content:"";background:linear-gradient(var(--bg), #fff0);opacity:0;pointer-events:none;height:16px;transition:opacity .2s;position:absolute;top:100%;left:0;right:0}.pf__panel[data-astro-cid-xqmwqleg].is-scrolled .pf__bar[data-astro-cid-xqmwqleg]:after{opacity:1}}.project__back[data-astro-cid-nc32kpk2]{align-self:flex-start}.project__back-arrow[data-astro-cid-nc32kpk2]{display:flex;rotate:180deg}.project__about[data-astro-cid-nc32kpk2]{flex-direction:column;gap:10px;display:flex}@media (width<=360px){.hero__title[data-astro-cid-nc32kpk2]{font-size:28px}}.project__lead[data-astro-cid-nc32kpk2]{text-wrap:balance;max-width:640px}.project__example[data-astro-cid-nc32kpk2]{color:var(--text-fainter);font-size:14px;line-height:1.6}
