@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff");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}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff");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}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@font-face{font-family:Neue Montreal;src:url(/fonts/NeueMontreal-Light.woff2)format("woff2");font-weight:300;font-display:swap}@font-face{font-family:Neue Montreal;src:url(/fonts/NeueMontreal-Regular.woff2)format("woff2");font-weight:400 500;font-display:swap}@font-face{font-family:Neue Montreal;src:url(/fonts/NeueMontreal-Italic.woff2)format("woff2");font-weight:400 500;font-style:italic;font-display:swap}@font-face{font-family:Neue Montreal;src:url(/fonts/NeueMontreal-Semibold.woff2)format("woff2");font-weight:600 700;font-display:swap}@font-face{font-family:Neue Montreal;src:url(/fonts/NeueMontreal-Extrabold.woff2)format("woff2");font-weight:800 900;font-display:swap}@font-face{font-family:Neue Montreal Text;src:url(/fonts/NeueMontrealText-Book.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Neue Montreal Text;src:url(/fonts/NeueMontrealText-BookItalic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}:root{--bg:#f4f4f2;--fg:#111;--muted:#777;--line:#d6d6d2;--accent:#ff4a0f;--cell:#e8e8e5;--mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--sans:"Neue Montreal", "PP Neue Montreal", "Helvetica Neue", Helvetica, Arial, system-ui, sans-serif;--text:"Neue Montreal Text", "Neue Montreal", "Helvetica Neue", Helvetica, Arial, system-ui, sans-serif;--gutter:clamp(16px, 4vw, 48px);--max:1520px;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0e0e0e;--fg:#ededea;--muted:#8a8a86;--line:#2a2a28;--accent:#ff7a45;--cell:#171716;color-scheme:dark}}*{box-sizing:border-box}html{background:var(--bg);color:var(--fg);font-family:var(--sans);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;font-size:15px}body{min-height:100vh;padding-inline:var(--gutter);max-width:var(--max);box-sizing:border-box;flex-direction:column;margin:0 auto;display:flex}main{flex:1}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}::selection{background:var(--fg);color:var(--bg)}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}html.js .reveal{opacity:0;transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1);transform:translateY(18px)}html.js .reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html.js .reveal{opacity:1;transition:none;transform:none}}html.js .intro>*{animation:.9s cubic-bezier(.2,.7,.2,1) both rise}html.js .intro>:nth-child(2){animation-delay:.12s}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){html.js .intro>*{animation:none}}::view-transition-old(root),::view-transition-new(root){animation-duration:.35s;animation-timing-function:cubic-bezier(.2,.7,.2,1)}#lightbox{z-index:50;cursor:zoom-out;background:#000000e0;place-items:center;padding:4vmin;animation:.18s lb-in;display:grid;position:fixed;inset:0}#lightbox[hidden]{display:none}#lightbox img{object-fit:contain;width:auto;max-width:92vw;height:auto;max-height:92vh;box-shadow:0 20px 80px #00000080}:global(.zoomable){cursor:zoom-in}@keyframes lb-in{0%{opacity:0}}.site-footer{border-top:1px solid var(--line);margin-top:clamp(96px,14vw,180px);padding-block:40px 28px}.foot-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:32px;margin-bottom:56px;display:flex}.foot-cta{flex-direction:column;gap:10px;margin:0;display:flex}.foot-label{font:12px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.foot-mail{letter-spacing:-.02em;font-size:clamp(22px,2.6vw,36px);font-weight:600;line-height:1.1;transition:color .2s}.foot-mail:hover{color:var(--accent)}.foot-links{font:12px var(--mono);text-transform:uppercase;letter-spacing:.06em;gap:24px;display:flex}.foot-links a,.foot-bottom{color:var(--muted)}.foot-links a:hover{color:var(--fg)}.foot-bottom{font:12px var(--mono);text-transform:uppercase;letter-spacing:.06em;justify-content:space-between;display:flex}.site-header{z-index:20;background:var(--bg);letter-spacing:.02em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:24px;padding-block:clamp(18px,2.4vw,28px);font-size:13px;display:flex;position:sticky;top:0}.site-header nav{align-items:center;gap:clamp(24px,3.5vw,48px);display:flex}.site-header a{color:var(--muted);transition:color .2s}.site-header a:hover,.site-header a[aria-current=page],.site-header .wordmark{color:var(--fg)}.site-header .wordmark{font-weight:600}.site-header .icons{align-items:center;gap:clamp(16px,2vw,24px);display:flex}.site-header .icons svg{width:15px;height:15px;display:block}@media (width<=720px){.site-header{font-size:12px}.site-header nav{gap:18px}}.site-header .wordmark{white-space:nowrap}@media (width<=560px){.site-header .icons{display:none}}
