@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/fonts/jetbrains-mono-latin-wght.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:dark;--bg:#292c3c;--surface:#303446;--grid:#c6d0f509;--ink:#c6d0f5;--muted:#a5adce;--line:#414559;--line-strong:#737994;--accent:#ca9ee6;--on-accent:#232634;--live:#a6d189;--sans:"JetBrains Mono", ui-monospace, monospace;--mono:"JetBrains Mono", ui-monospace, monospace;--ease:cubic-bezier(.2, .7, .2, 1);--dur-fast:.16s;--dur-base:.32s;--dur-slow:.72s}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font:400 16px/26px var(--sans);-webkit-font-smoothing:antialiased;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));margin:0}a{color:inherit}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}::selection{background:var(--accent);color:var(--on-accent)}.mono{font:400 12px/16px var(--mono);letter-spacing:.04em;text-transform:uppercase}.muted{color:var(--muted)}.pad{padding-inline:clamp(16px,3vw,40px)}.frame{border-left:1px solid var(--line);border-right:1px solid var(--line);background:repeating-linear-gradient(to right,transparent 0,transparent calc(100%/12 - 1px),var(--grid) calc(100%/12 - 1px),var(--grid) calc(100%/12));max-width:1160px;margin:0 auto;position:relative}@media (width<=860px){.frame{background:0 0}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}section{border-top:1px solid var(--line);background:var(--bg);position:relative}section:before,section:after{content:"+";font:400 14px/1 var(--mono);color:var(--line-strong);background:var(--bg);text-align:center;width:18px;position:absolute;top:-9px}section:before{left:-10px}section:after{right:-10px}h2{font:500 clamp(28px,4.4vw,48px)/1.05 var(--sans);letter-spacing:-.03em;text-wrap:balance;max-width:18ch;margin:0;padding-block:clamp(40px,6vw,72px) clamp(24px,4vw,40px)}@media (width<=860px){section:before,section:after{display:none}}.rv{transition:opacity var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease)}.rv.pre{opacity:0;transform:translateY(12px)}@media (prefers-reduced-motion:reduce){.rv{transition:opacity .16s linear}.rv.pre{transform:none}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.bar[data-astro-cid-nazmfhjt]{border-bottom:1px solid var(--line);background:var(--bg);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-block:16px;display:flex}nav[data-astro-cid-nazmfhjt]{gap:24px;display:flex}a[data-astro-cid-nazmfhjt]{color:var(--muted);transition:color var(--dur-fast) var(--ease);text-decoration:none}a[data-astro-cid-nazmfhjt]:hover{color:var(--accent)}.name[data-astro-cid-nazmfhjt]{color:var(--ink)}.name[data-astro-cid-nazmfhjt]:hover{color:var(--accent)}.tile[data-astro-cid-yx7m3lgj]{border:1px solid var(--line-strong);background:var(--surface);color:var(--accent);font:500 20px/1 var(--mono);text-transform:none;letter-spacing:0;border-radius:6px;place-items:center;display:grid}img[data-astro-cid-yx7m3lgj].tile{object-fit:cover;display:block}.icon[data-astro-cid-yx7m3lgj]{border-radius:11px;width:48px;height:48px}.avatar[data-astro-cid-yx7m3lgj]{width:96px;height:96px;margin-bottom:24px;font-size:28px}.hero[data-astro-cid-ge2uvauf]{background:var(--bg);padding-block:clamp(56px,9vw,120px) clamp(48px,7vw,88px)}.hero-meta[data-astro-cid-ge2uvauf]{color:var(--muted);flex-wrap:wrap;gap:24px;margin-bottom:40px;display:flex}.prompt[data-astro-cid-ge2uvauf]{color:var(--ink)}.prompt[data-astro-cid-ge2uvauf] .host[data-astro-cid-ge2uvauf]{color:var(--live)}.prompt[data-astro-cid-ge2uvauf] .path[data-astro-cid-ge2uvauf]{color:var(--accent)}.dot[data-astro-cid-ge2uvauf]{background:var(--live);border-radius:50%;width:6px;height:6px;margin-right:8px;animation:2.4s ease-in-out infinite pulse;display:inline-block}h1[data-astro-cid-ge2uvauf]{font:500 clamp(34px,6.6vw,84px)/1.02 var(--sans);letter-spacing:-.05em;text-wrap:balance;max-width:11ch;margin:0}.cursor[data-astro-cid-ge2uvauf]{background:var(--accent);vertical-align:-.06em;width:.07em;min-width:3px;height:.86em;margin-left:.12em;animation:1.1s step-end infinite blink;display:inline-block}.hero-foot[data-astro-cid-ge2uvauf]{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:end;gap:40px;margin-top:56px;display:grid}.lead[data-astro-cid-ge2uvauf]{max-width:34em;color:var(--ink);margin:0;font-size:17px;line-height:30px}.spec[data-astro-cid-ge2uvauf]{border-top:1px solid var(--line);grid-template-columns:auto 1fr;gap:0;margin:0;display:grid}.spec[data-astro-cid-ge2uvauf] dt[data-astro-cid-ge2uvauf],.spec[data-astro-cid-ge2uvauf] dd[data-astro-cid-ge2uvauf]{border-bottom:1px solid var(--line);margin:0;padding:10px 0}.spec[data-astro-cid-ge2uvauf] dt[data-astro-cid-ge2uvauf]{color:var(--muted);padding-right:24px}.spec[data-astro-cid-ge2uvauf] dd[data-astro-cid-ge2uvauf]{text-align:right;font-size:14px;line-height:20px}.in[data-astro-cid-ge2uvauf]{animation:rise var(--dur-slow) var(--ease) both;animation-delay:calc(var(--i,0)*90ms)}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes blink{50%{opacity:0}}@keyframes pulse{50%{opacity:.35}}@media (width<=860px){.hero-foot[data-astro-cid-ge2uvauf]{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.in[data-astro-cid-ge2uvauf],.dot[data-astro-cid-ge2uvauf],.cursor[data-astro-cid-ge2uvauf]{animation:none}}.sec-head[data-astro-cid-sjgajsms]{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;padding-block:20px;display:flex}b[data-astro-cid-sjgajsms]{color:var(--accent);font-weight:400}.proj{border-bottom:1px solid var(--line)}.proj[open]{background:var(--surface)}.tr{color:var(--ink);cursor:pointer;transition:background var(--dur-fast) var(--ease);grid-template-columns:96px minmax(0,1fr) 270px 24px;align-items:center;gap:24px;padding-block:20px;list-style:none;display:grid}.tr::-webkit-details-marker{display:none}.tr:after{content:"+" / "";color:var(--accent);font:400 20px/1 var(--mono);text-align:right}.proj[open] .tr:after{content:"−" / ""}.tr:hover{background:var(--surface)}.tr .id{color:var(--muted);align-items:center;gap:12px;display:flex}.tr h3{font:500 28px/1.15 var(--sans);letter-spacing:-.025em;margin:0}.meta{grid-template-columns:120px 130px;align-items:center;gap:0 20px;display:grid}.status{align-items:center;gap:8px;display:flex}.status.live{color:var(--live)}.status.live:before{content:"";background:var(--live);border-radius:50%;width:6px;height:6px}.status.muted{color:var(--muted)}.body{grid-template-columns:96px minmax(0,1fr) 270px 24px;gap:24px;padding-bottom:28px;display:grid}.detail{grid-column:2/4;max-width:64ch}.detail p{color:var(--muted);margin:0 0 16px;font-size:15px;line-height:24px}.kv{border-top:1px solid var(--line);grid-template-columns:110px minmax(0,1fr);margin:0;display:grid}.kv dt,.kv dd{border-bottom:1px solid var(--line);margin:0;padding:10px 0}.kv dt{color:var(--muted)}.kv dd{font:400 13px/20px var(--mono);text-transform:none;letter-spacing:0;color:var(--ink)}.stack{color:var(--muted);flex-wrap:wrap;gap:6px 12px;display:flex}.visit{color:var(--accent);margin-top:16px;font-size:15px;text-decoration:none;display:inline-block}.visit:hover{text-decoration:underline}.visit .arrow{transition:transform var(--dur-base) var(--ease);display:inline-block}.visit:hover .arrow{transform:translate(4px,-4px)}@media (width<=860px){.tr{grid-template-columns:auto minmax(0,1fr) 24px;gap:4px 16px}.tr .id{grid-row:1/3}.tr h3{font-size:24px}.meta{grid-column:2;gap:16px;display:flex}.tr:after{grid-area:1/3/3}.body{grid-template-columns:minmax(0,1fr)}.detail{grid-column:1}}@media (prefers-reduced-motion:reduce){.visit .arrow{transition:none}.visit:hover .arrow{transform:none}}#work[data-astro-cid-2bvzee3v]{padding-bottom:clamp(48px,7vw,88px)}.th[data-astro-cid-2bvzee3v]{color:var(--muted);border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:96px minmax(0,1fr) 270px 24px;align-items:start;gap:24px;padding-block:12px;display:grid}.cols[data-astro-cid-2bvzee3v]{grid-template-columns:120px 130px;gap:0 20px;display:grid}@media (width<=860px){.th[data-astro-cid-2bvzee3v]{display:none}}.rows[data-astro-cid-uukcahgk]{border-bottom:1px solid var(--line);margin-bottom:0}.rows[data-astro-cid-uukcahgk] a[data-astro-cid-uukcahgk],.rows[data-astro-cid-uukcahgk] button[data-astro-cid-uukcahgk]{border:0;border-top:1px solid var(--line);width:100%;color:var(--ink);font:400 clamp(17px,2.4vw,24px)/32px var(--sans);letter-spacing:-.01em;text-align:left;cursor:pointer;transition:color var(--dur-fast) var(--ease),padding-left var(--dur-base) var(--ease);background:0 0;grid-template-columns:140px minmax(0,1fr) auto;align-items:baseline;gap:16px;padding:20px 0;text-decoration:none;display:grid}.rows[data-astro-cid-uukcahgk] button[data-astro-cid-uukcahgk][hidden]{display:none}.rows[data-astro-cid-uukcahgk] a[data-astro-cid-uukcahgk]:hover,.rows[data-astro-cid-uukcahgk] button[data-astro-cid-uukcahgk]:hover{color:var(--accent);padding-left:12px}.rows[data-astro-cid-uukcahgk] span[data-astro-cid-uukcahgk]:first-child{color:var(--muted)}.rows[data-astro-cid-uukcahgk] span[data-astro-cid-uukcahgk]:nth-child(2){overflow-wrap:anywhere}.rows[data-astro-cid-uukcahgk] span[data-astro-cid-uukcahgk]:last-child{color:var(--accent)}.spacer[data-astro-cid-uukcahgk]{height:clamp(40px,6vw,72px)}@media (width<=860px){.rows[data-astro-cid-uukcahgk] a[data-astro-cid-uukcahgk],.rows[data-astro-cid-uukcahgk] button[data-astro-cid-uukcahgk]{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label arrow""value arrow";align-items:center;gap:4px 12px}.rows[data-astro-cid-uukcahgk] span[data-astro-cid-uukcahgk]:first-child{grid-area:label}.rows[data-astro-cid-uukcahgk] span[data-astro-cid-uukcahgk]:nth-child(2){grid-area:value}.rows[data-astro-cid-uukcahgk] span[data-astro-cid-uukcahgk]:last-child{grid-area:arrow}}@media (prefers-reduced-motion:reduce){.rows[data-astro-cid-uukcahgk] a[data-astro-cid-uukcahgk],.rows[data-astro-cid-uukcahgk] button[data-astro-cid-uukcahgk]{transition:none}.rows[data-astro-cid-uukcahgk] a[data-astro-cid-uukcahgk]:hover,.rows[data-astro-cid-uukcahgk] button[data-astro-cid-uukcahgk]:hover{padding-left:0}}footer[data-astro-cid-jo6i4kqk]{border-top:1px solid var(--line);color:var(--muted);background:var(--bg);flex-wrap:wrap;justify-content:space-between;gap:16px;padding-block:24px;display:flex}
