.lang[data-astro-cid-65fqhi4t]{align-items:center;gap:var(--space-1);font-family:var(--font-mono);font-size:var(--text-sm);display:inline-flex}.lang__btn[data-astro-cid-65fqhi4t]{min-width:32px;min-height:40px;color:var(--muted);place-items:center;text-decoration:none;display:grid}.lang__btn[data-astro-cid-65fqhi4t]:hover{color:var(--text)}.lang__btn[data-astro-cid-65fqhi4t][aria-current=true]{color:var(--text);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:6px;text-decoration-thickness:2px}.wordmark[data-astro-cid-hkf3h753]{align-items:center;gap:var(--wm-gap);display:inline-flex}.wordmark--md[data-astro-cid-hkf3h753]{--wm-gap:.6rem;--wm-size:1.35rem}.wordmark--sm[data-astro-cid-hkf3h753]{--wm-gap:.8rem;--wm-size:var(--text-md)}.wordmark__name[data-astro-cid-hkf3h753]{font-family:var(--font-display);font-weight:700;font-size:var(--wm-size);letter-spacing:-.04em;color:var(--text);line-height:1}.wordmark__dev[data-astro-cid-hkf3h753]{font-family:var(--font-mono);letter-spacing:-.02em;color:var(--logo-cursor);font-size:.92em;font-weight:500}.site-header[data-astro-cid-kgevm5mn]{z-index:80;height:var(--header-h);background:var(--bg);border-bottom:1px solid var(--line);position:sticky;top:0}.bar[data-astro-cid-kgevm5mn]{justify-content:space-between;align-items:center;gap:var(--space-2);height:100%;display:flex}.brand[data-astro-cid-kgevm5mn]{align-items:center;text-decoration:none;display:inline-flex}.nav[data-astro-cid-kgevm5mn]{background:var(--bg);border-bottom:1px solid var(--line);padding:var(--space-2) var(--gutter) var(--space-4);display:none;position:absolute;inset:100% 0 auto}.nav[data-astro-cid-kgevm5mn].is-open{display:grid}.nav[data-astro-cid-kgevm5mn] a[data-astro-cid-kgevm5mn]{color:var(--muted);border-bottom:1px solid var(--line);padding:.85rem 0;text-decoration:none;display:block}.nav[data-astro-cid-kgevm5mn] a[data-astro-cid-kgevm5mn]:hover,.nav[data-astro-cid-kgevm5mn] a[data-astro-cid-kgevm5mn][aria-current=true]{color:var(--text)}.bar__actions[data-astro-cid-kgevm5mn]{align-items:center;gap:.35rem;display:flex}@media (width>=900px){.bar__actions[data-astro-cid-kgevm5mn]{gap:var(--space-3)}}.theme-toggle[data-astro-cid-kgevm5mn] .i-sun{display:none}html[data-theme=dark] .theme-toggle[data-astro-cid-kgevm5mn] .i-sun{display:block}html[data-theme=dark] .theme-toggle[data-astro-cid-kgevm5mn] .i-moon,.menu-btn[data-astro-cid-kgevm5mn] .i-close{display:none}.menu-btn[data-astro-cid-kgevm5mn][aria-expanded=true] .i-close{display:block}.menu-btn[data-astro-cid-kgevm5mn][aria-expanded=true] .i-menu{display:none}@media (width>=900px){.menu-btn[data-astro-cid-kgevm5mn]{display:none}.nav[data-astro-cid-kgevm5mn]{background:0 0;border:0;align-items:center;gap:1.75rem;padding:0;display:flex;position:static}.nav[data-astro-cid-kgevm5mn] a[data-astro-cid-kgevm5mn]{border:0;padding:.4rem 0;box-shadow:inset 0 -2px #0000}.nav[data-astro-cid-kgevm5mn] a[data-astro-cid-kgevm5mn]:hover{box-shadow:inset 0 -2px 0 var(--line-strong)}.nav[data-astro-cid-kgevm5mn] a[data-astro-cid-kgevm5mn][aria-current=true]{box-shadow:inset 0 -2px 0 var(--accent)}}.log[data-astro-cid-xy57er4u]{border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface);font-family:var(--font-mono);font-size:var(--text-sm);margin:0}.log__bar[data-astro-cid-xy57er4u]{justify-content:space-between;gap:var(--space-4);border-bottom:1px solid var(--line);padding:.85rem 1.1rem;display:flex}.log__title[data-astro-cid-xy57er4u]{color:var(--muted)}.log__status[data-astro-cid-xy57er4u]{color:var(--accent)}.log__status[data-astro-cid-xy57er4u][data-state=done]{color:var(--ok)}.rows[data-astro-cid-xy57er4u]{padding:var(--space-2) 0;display:grid}.row[data-astro-cid-xy57er4u]{color:var(--muted);align-items:baseline;gap:.8rem;padding:.6rem 1.1rem;display:flex}.row[data-astro-cid-xy57er4u].is-active,.row[data-astro-cid-xy57er4u].is-done,.row[data-astro-cid-xy57er4u].is-live{color:var(--text)}.row__meta[data-astro-cid-xy57er4u]{color:var(--muted);text-align:right;margin-left:auto}.row--group[data-astro-cid-xy57er4u]{display:block}.row__label[data-astro-cid-xy57er4u]{margin-bottom:var(--space-2);display:block}.jobs[data-astro-cid-xy57er4u]{gap:var(--space-2) var(--space-5);flex-wrap:wrap;display:flex}.job[data-astro-cid-xy57er4u]{color:var(--muted);align-items:baseline;gap:.6rem;display:inline-flex}.job[data-astro-cid-xy57er4u].is-active,.job[data-astro-cid-xy57er4u].is-done{color:var(--text)}.sq[data-astro-cid-xy57er4u]{border:1px solid var(--line-strong);border-radius:1px;flex:none;align-self:center;width:9px;height:11px}.is-active[data-astro-cid-xy57er4u]>.sq[data-astro-cid-xy57er4u]{background:var(--accent);border-color:var(--accent);animation:1s step-end infinite blink}.is-done[data-astro-cid-xy57er4u]>.sq[data-astro-cid-xy57er4u]{background:var(--ok);border-color:var(--ok);animation:none}@keyframes blink{50%{opacity:0}}.log__foot[data-astro-cid-xy57er4u]{justify-content:space-between;align-items:flex-end;gap:var(--space-4);border-top:1px solid var(--line);padding:1rem 1.1rem 1.1rem;display:flex}.result[data-astro-cid-xy57er4u]{opacity:0;transition:opacity .4s}.result[data-astro-cid-xy57er4u].is-in{opacity:1}.result[data-astro-cid-xy57er4u] strong[data-astro-cid-xy57er4u]{letter-spacing:-.04em;color:var(--ok);font-size:2.25rem;font-weight:500;line-height:1;display:block}.result[data-astro-cid-xy57er4u] span[data-astro-cid-xy57er4u]{color:var(--muted);margin-top:.4rem;display:block}@media (width>=1100px) and (height<=760px){.log__bar[data-astro-cid-xy57er4u]{padding:.6rem 1.1rem}.rows[data-astro-cid-xy57er4u]{padding:var(--space-1) 0}.row[data-astro-cid-xy57er4u]{padding-block:.35rem}.log__foot[data-astro-cid-xy57er4u]{padding-block:.7rem .8rem}.result[data-astro-cid-xy57er4u] strong[data-astro-cid-xy57er4u]{font-size:1.75rem}}.replay[data-astro-cid-xy57er4u]{font:inherit;color:var(--muted);text-underline-offset:4px;text-decoration:underline;text-decoration-color:var(--line-strong);background:0 0;border:0;padding:.4rem .2rem}.replay[data-astro-cid-xy57er4u]:hover{color:var(--text)}.dl--meta[data-astro-cid-yq43xoob]{gap:var(--space-4) var(--space-6);border-top:1px solid var(--line-strong);padding-block:1.25rem 1.75rem;display:grid}.dl--meta[data-astro-cid-yq43xoob] dt[data-astro-cid-yq43xoob]{font-size:var(--text-sm);color:var(--muted)}.dl--meta[data-astro-cid-yq43xoob] dd[data-astro-cid-yq43xoob]{margin-top:.15rem;font-weight:500}@media (width>=640px){.dl--meta[data-astro-cid-yq43xoob]{grid-template-columns:repeat(3,auto);justify-content:space-between}}@media (width>=1100px) and (height<=760px){.dl--meta[data-astro-cid-yq43xoob]{padding-block:.8rem 1rem}}.dl--rows[data-astro-cid-yq43xoob]>div[data-astro-cid-yq43xoob]{justify-content:space-between;gap:var(--space-4);border-bottom:1px solid var(--line);padding:.9rem 0;display:flex}.dl--rows[data-astro-cid-yq43xoob]>div[data-astro-cid-yq43xoob]:first-child{padding-top:0}.dl--rows[data-astro-cid-yq43xoob] dt[data-astro-cid-yq43xoob]{color:var(--muted)}.dl--rows[data-astro-cid-yq43xoob] dd[data-astro-cid-yq43xoob]{text-align:right;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin:0;font-weight:500}.dl--outcomes[data-astro-cid-yq43xoob]{border-top:1px solid var(--line);margin-top:1.75rem}.dl--outcomes[data-astro-cid-yq43xoob]>div[data-astro-cid-yq43xoob]{padding:var(--space-4) 0;border-bottom:1px solid var(--line);max-width:64ch}.dl--outcomes[data-astro-cid-yq43xoob] dt[data-astro-cid-yq43xoob]{font-weight:600}.dl--outcomes[data-astro-cid-yq43xoob] dd[data-astro-cid-yq43xoob]{color:var(--muted);margin-top:.2rem}.hero__inner[data-astro-cid-yodha2z4]{min-height:calc(100svh - var(--header-h));flex-direction:column;padding-top:clamp(1.5rem,5vh,3.5rem);display:flex}.hero__grid[data-astro-cid-yodha2z4]{flex:1;align-items:center;gap:clamp(2rem,5vw,4rem);padding-bottom:clamp(2rem,5vh,3.5rem);display:grid}@media (width>=1100px){.hero__grid[data-astro-cid-yodha2z4]{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}}h1[data-astro-cid-yodha2z4]{letter-spacing:-.04em;max-width:19ch;font-size:clamp(2.25rem,min(4.4vw,7.4vh),4rem);font-weight:700;line-height:1.04}.hero__lead[data-astro-cid-yodha2z4]{max-width:54ch;font-size:var(--text-xl);color:var(--muted);margin-top:clamp(1rem,2.5vh,1.5rem)}.hero__cta[data-astro-cid-yodha2z4]{gap:var(--space-3);flex-wrap:wrap;margin-top:clamp(1.5rem,3.5vh,2.25rem);display:flex}@media (width>=1100px) and (height<=760px){.hero__inner[data-astro-cid-yodha2z4]{padding-top:var(--space-4)}.hero__grid[data-astro-cid-yodha2z4]{padding-bottom:var(--space-4)}h1[data-astro-cid-yodha2z4]{font-size:clamp(2rem,6.2vh,3.25rem)}.hero__lead[data-astro-cid-yodha2z4]{margin-top:var(--space-3);font-size:1rem}.hero__cta[data-astro-cid-yodha2z4]{margin-top:1.1rem}.btn[data-astro-cid-yodha2z4]{min-height:42px}}h2[data-astro-cid-6j3riaey]{letter-spacing:-.035em;font-size:clamp(1.5rem,1.2vw + 1.1rem,1.9rem)}p[data-astro-cid-6j3riaey]{margin-top:var(--space-3);color:var(--muted);max-width:34ch;font-size:.97rem}.tl[data-astro-cid-75lji6zc]{width:var(--s);height:var(--s);flex:none;display:inline-flex}.tl__img[data-astro-cid-75lji6zc]{object-fit:contain;width:100%;height:100%}.tl__img--dark[data-astro-cid-75lji6zc]{display:none}html[data-theme=dark] .tl__img--dark[data-astro-cid-75lji6zc]{display:block}html[data-theme=dark] .tl__img--dark[data-astro-cid-75lji6zc]~.tl__img--light[data-astro-cid-75lji6zc],html[data-theme=dark] .tl[data-astro-cid-75lji6zc]:has(.tl__img--dark) .tl__img--light[data-astro-cid-75lji6zc]{display:none}.chips[data-astro-cid-ufwpgqza]{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--muted);flex-wrap:wrap;gap:.5rem 1.1rem;line-height:1.4;display:flex}.chip[data-astro-cid-ufwpgqza]{align-items:center;gap:.45rem;display:inline-flex}.metric[data-astro-cid-jdgmgvmo]{font-family:var(--font-mono);letter-spacing:-.05em;color:var(--accent);font-variant-numeric:tabular-nums;font-weight:500;line-height:.95}.metric--lg[data-astro-cid-jdgmgvmo]{font-size:clamp(4rem,7vw,5.5rem)}.metric--sm[data-astro-cid-jdgmgvmo]{font-size:clamp(2.25rem,4vw,3rem)}.metric-label[data-astro-cid-jdgmgvmo]{color:var(--muted);max-width:24ch;margin-top:.6rem}.flow[data-astro-cid-big6ex7o]{gap:var(--space-2);flex-direction:column;margin-top:1.75rem;display:flex}.flow__stage[data-astro-cid-big6ex7o]{gap:var(--space-2);flex-direction:column;flex:1;display:flex}.flow__node[data-astro-cid-big6ex7o]{border-radius:var(--r-md);border:1px solid var(--line-strong);flex:1;padding:.75rem .9rem}.flow__node[data-astro-cid-big6ex7o] b[data-astro-cid-big6ex7o]{font-weight:600;display:block}.flow__node[data-astro-cid-big6ex7o] span[data-astro-cid-big6ex7o]{color:var(--muted);font-size:.9rem}.flow__node--end[data-astro-cid-big6ex7o]{border-color:var(--accent)}.flow__arrow[data-astro-cid-big6ex7o]{color:var(--muted);place-items:center;display:grid}.flow__arrow[data-astro-cid-big6ex7o] svg{width:18px;height:18px;transform:rotate(90deg)}@media (width>=640px){.flow[data-astro-cid-big6ex7o]{flex-direction:row;align-items:stretch}.flow__arrow[data-astro-cid-big6ex7o] svg{transform:none}}h3[data-astro-cid-vznjqzo7]{letter-spacing:-.035em;max-width:24ch;font-size:clamp(1.6rem,2vw + .8rem,2.4rem)}.case__org[data-astro-cid-vznjqzo7]{color:var(--muted);margin-top:.6rem}.case__cols[data-astro-cid-vznjqzo7]{gap:var(--space-6) var(--space-8);margin-top:clamp(1.5rem,3vw,2.25rem);display:grid}@media (width>=1100px){.case__cols[data-astro-cid-vznjqzo7]{grid-template-columns:minmax(0,1fr) 16rem}}.case__summary[data-astro-cid-vznjqzo7]{max-width:60ch;font-size:var(--text-xl)}.case__links[data-astro-cid-vznjqzo7]{gap:var(--space-3);flex-wrap:wrap;margin-top:1.75rem;display:flex}.case__aside[data-astro-cid-vznjqzo7]{align-content:start;gap:1.75rem;display:grid}.metrics[data-astro-cid-vznjqzo7]{gap:var(--space-5);display:grid}.cases[data-astro-cid-resrq4zz]{--rule-gap:var(--space-block);display:grid}.skills[data-astro-cid-hsdsz7qj]{align-content:start;gap:clamp(2rem,4vw,3rem);display:grid}.stacks[data-astro-cid-hsdsz7qj]{gap:2.25rem 2rem;display:grid}@media (width>=640px){.stacks[data-astro-cid-hsdsz7qj]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1100px){.stacks[data-astro-cid-hsdsz7qj]{grid-template-columns:repeat(3,minmax(0,1fr))}}.tech[data-astro-cid-hsdsz7qj]{margin-top:.6rem}.tech[data-astro-cid-hsdsz7qj] li[data-astro-cid-hsdsz7qj]{color:var(--muted);grid-template-columns:18px minmax(0,1fr);align-items:center;gap:.65rem;padding:.3rem 0;display:grid}.gap[data-astro-cid-hsdsz7qj]{width:18px;height:1px}.plain[data-astro-cid-hsdsz7qj]{border-top:1px solid var(--line);margin-top:.9rem;padding-top:.9rem}.plain[data-astro-cid-hsdsz7qj] li[data-astro-cid-hsdsz7qj]{padding:var(--space-1) 0;color:var(--muted);font-size:.97rem}.plain[data-astro-cid-hsdsz7qj]:empty{display:none}.plain--icons[data-astro-cid-hsdsz7qj] li[data-astro-cid-hsdsz7qj]{grid-template-columns:16px minmax(0,1fr);align-items:center;gap:.65rem;display:grid}.practice[data-astro-cid-hsdsz7qj]{padding-top:var(--space-5);border-top:1px solid var(--line)}.practice[data-astro-cid-hsdsz7qj] ul[data-astro-cid-hsdsz7qj]{columns:1;column-gap:var(--space-6);margin-top:.6rem}@media (width>=640px){.practice[data-astro-cid-hsdsz7qj] ul[data-astro-cid-hsdsz7qj]{columns:2}}.practice[data-astro-cid-hsdsz7qj] li[data-astro-cid-hsdsz7qj]{padding:var(--space-1) 0;color:var(--muted);break-inside:avoid}time[data-astro-cid-bdzumzva]{color:var(--muted);font-family:var(--font-mono);font-size:var(--text-sm);margin-bottom:var(--space-2);display:block}h3[data-astro-cid-bdzumzva]{letter-spacing:-.025em;font-size:1.35rem}.t-org[data-astro-cid-bdzumzva]{color:var(--muted);margin-top:.15rem}ul[data-astro-cid-bdzumzva]{margin-top:var(--space-4);gap:.6rem;max-width:66ch;display:grid}li[data-astro-cid-bdzumzva]{padding-left:1.1rem;position:relative}li[data-astro-cid-bdzumzva]:before{content:"";background:var(--muted);width:6px;height:1px;position:absolute;top:.7em;left:0}.t-stack[data-astro-cid-bdzumzva]{margin-top:1.1rem}@media (width>=1100px){.t-item[data-astro-cid-bdzumzva]{gap:var(--space-6);grid-template-columns:10rem minmax(0,1fr);display:grid}time[data-astro-cid-bdzumzva]{margin:var(--space-2) 0 0}}.edu__item[data-astro-cid-njv4xxqq]{justify-content:space-between;gap:var(--space-5);padding:var(--space-4) 0;border-bottom:1px solid var(--line);display:flex}.edu__item[data-astro-cid-njv4xxqq] p[data-astro-cid-njv4xxqq]{color:var(--muted);font-size:var(--text-md);max-width:56ch;margin-top:.2rem}.edu__item[data-astro-cid-njv4xxqq] .edu__pct[data-astro-cid-njv4xxqq]{font-family:var(--font-mono);white-space:nowrap;color:var(--text);margin:0;font-size:.9rem}.edu[data-astro-cid-uxnjntfu]{margin-top:var(--space-block);padding-top:var(--space-6);border-top:1px solid var(--line-strong)}.edu__list[data-astro-cid-uxnjntfu]{margin-top:var(--space-4)}.contact[data-astro-cid-d56ov33j]{border-top:1px solid var(--line-strong);padding-top:var(--space-5)}h2[data-astro-cid-d56ov33j]{letter-spacing:-.04em;max-width:20ch;font-size:clamp(2rem,3.4vw + .8rem,3.5rem);line-height:1.04}.contact__grid[data-astro-cid-d56ov33j]{gap:2.5rem 4rem;margin-top:clamp(1.75rem,4vw,3rem);display:grid}@media (width>=900px){.contact__grid[data-astro-cid-d56ov33j]{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}}.contact__grid[data-astro-cid-d56ov33j] p[data-astro-cid-d56ov33j]{color:var(--muted);max-width:46ch}.contact__cta[data-astro-cid-d56ov33j]{gap:var(--space-3);flex-wrap:wrap;margin-top:1.75rem;display:flex}.site-footer[data-astro-cid-yvkg62gd]{padding-block:var(--space-7) var(--space-8);color:var(--muted);font-size:var(--text-md)}.container[data-astro-cid-yvkg62gd]{justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.sign[data-astro-cid-yvkg62gd]{flex-wrap:wrap;align-items:center;gap:.4rem .8rem;display:flex}.to-top[data-astro-cid-yvkg62gd]{color:var(--text);font-weight:600;text-decoration:none}.to-top[data-astro-cid-yvkg62gd]:hover{color:var(--accent)}.skip-link{z-index:100;background:var(--accent);color:var(--on-accent);border-radius:var(--r-md);transition:top .2s var(--ease);padding:.7rem 1rem;font-weight:600;text-decoration:none;position:fixed;top:-4rem;left:1rem}.skip-link:focus{top:1rem}
