@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;font-stretch:75% 112.5%;src:url(/asciitopia/assets/martian-mono-cyrillic-ext-wdth-normal-BFx_pHPN.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;font-stretch:75% 112.5%;src:url(/asciitopia/assets/martian-mono-cyrillic-wdth-normal-Dgr-UBxV.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;font-stretch:75% 112.5%;src:url(/asciitopia/assets/martian-mono-latin-ext-wdth-normal-DeTdBbNh.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;font-stretch:75% 112.5%;src:url(/asciitopia/assets/martian-mono-latin-wdth-normal-1TqSgyfh.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/asciitopia/assets/fira-mono-cyrillic-ext-400-normal-FAIU8e3o.woff2) format("woff2"),url(/asciitopia/assets/fira-mono-cyrillic-ext-400-normal-Co4MVjrD.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/asciitopia/assets/fira-mono-cyrillic-400-normal-BJkDdjbt.woff2) format("woff2"),url(/asciitopia/assets/fira-mono-cyrillic-400-normal-DUd3efVn.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/asciitopia/assets/fira-mono-greek-ext-400-normal-Be4g_LSk.woff2) format("woff2"),url(/asciitopia/assets/fira-mono-greek-ext-400-normal-BQ5yw6bY.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/asciitopia/assets/fira-mono-greek-400-normal-ftNhKy_S.woff2) format("woff2"),url(/asciitopia/assets/fira-mono-greek-400-normal-B_0AmgK7.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/asciitopia/assets/fira-mono-symbols2-400-normal-C6JptOil.woff2) format("woff2"),url(/asciitopia/assets/fira-mono-symbols2-400-normal-CpeG9ob9.woff) format("woff");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/asciitopia/assets/fira-mono-latin-ext-400-normal-B2gPvaNr.woff2) format("woff2"),url(/asciitopia/assets/fira-mono-latin-ext-400-normal-CbD3vWRE.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Fira Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/asciitopia/assets/fira-mono-latin-400-normal-DVTTRLHv.woff2) format("woff2"),url(/asciitopia/assets/fira-mono-latin-400-normal-C3FQ26ho.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@property --accent{syntax: "<color>"; inherits: true; initial-value: oklch(.75 .13 70);}@property --accent-stage{syntax: "<color>"; inherits: true; initial-value: oklch(.75 .13 70);}:root{color-scheme:dark;--bg: light-dark(oklch(.97 .004 70), oklch(.16 .008 70));--bg-deep: light-dark(oklch(.94 .006 70), oklch(.14 .008 70));--ink: light-dark(oklch(.24 .01 70), oklch(.92 .008 70));--ink-dim: light-dark(oklch(.45 .012 70), oklch(.68 .012 70));--ink-faint: light-dark(oklch(.6 .012 70), oklch(.47 .01 70));--line: light-dark(oklch(.89 .008 70), oklch(.26 .008 70));--line-bright: light-dark(oklch(.81 .01 70), oklch(.36 .01 70));--stage: oklch(.13 .008 70);--stage-ink: oklch(.92 .008 70);--stage-ink-dim: oklch(.68 .012 70);--stage-line: oklch(.3 .01 70);--accent: light-dark(oklch(.57 .13 70), oklch(.75 .13 70));--accent-stage: oklch(.75 .13 70);--font-ui: "Martian Mono Variable", "Fira Mono", ui-monospace, monospace;--text-xs: .6875rem;--text-sm: .875rem;--text-md: 1.125rem;--text-lg: 1.4375rem;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 48px;--pad-x: clamp(20px, 5vw, 80px);transition:--accent .4s ease,--accent-stage .4s ease}:root[data-theme=light]{color-scheme:light}:root[data-accent=rain]{--accent: light-dark(oklch(.52 .1 240), oklch(.7 .1 240));--accent-stage: oklch(.7 .1 240)}:root[data-accent=snow]{--accent: light-dark(oklch(.62 .05 230), oklch(.8 .05 230));--accent-stage: oklch(.8 .05 230)}:root[data-accent=waves]{--accent: light-dark(oklch(.52 .1 200), oklch(.7 .1 200));--accent-stage: oklch(.7 .1 200)}:root[data-accent=aurora]{--accent: light-dark(oklch(.54 .11 160), oklch(.72 .11 160));--accent-stage: oklch(.72 .11 160)}@media(prefers-reduced-motion:reduce){:root{transition:none}}*{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg);scrollbar-color:var(--line-bright) var(--bg)}body{font-family:var(--font-ui);font-size:var(--text-sm);line-height:1.6;color:var(--ink);-webkit-font-smoothing:antialiased}::selection{background:var(--accent);color:var(--bg)}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:none;border-radius:0;cursor:pointer}canvas{display:block}:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.label{font-size:var(--text-xs);font-weight:340;font-stretch:80%;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim)}.label--faint{color:var(--ink-faint)}.theme-toggle{display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--line);font-size:var(--text-md);line-height:1;color:var(--ink-dim);transition:color .2s,border-color .2s}.theme-toggle:hover{color:var(--accent);border-color:var(--line-bright)}.theme-toggle--stage{border-color:var(--stage-line);background:var(--stage);color:var(--stage-ink-dim)}.theme-toggle--stage:hover{color:var(--accent-stage);border-color:var(--stage-line)}.veil{position:fixed;inset:0;z-index:99;overflow:hidden;pointer-events:none;background:var(--bg);color:var(--ink-faint);font-size:var(--text-sm);line-height:1;letter-spacing:.1em;word-break:break-all;opacity:0;transition:opacity .15s cubic-bezier(.25,1,.5,1)}.veil--in{opacity:1;transition-duration:.13s}.hero{display:flex;flex-direction:column;height:100svh;min-height:560px;border-bottom:1px solid var(--line)}.hero__top{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--pad-x);border-bottom:1px solid var(--line)}.hero__stage{flex:1;min-height:0}.hero__wordmark{width:100%;height:100%}.hero__foot{display:flex;flex-direction:column;gap:var(--space-lg);padding:var(--space-lg) var(--pad-x) var(--space-xl);border-top:1px solid var(--line)}.hero__foot>*{animation:rise .28s cubic-bezier(.25,1,.5,1) backwards}.hero__foot>*:nth-child(2){animation-delay:60ms}.hero__foot>*:nth-child(3){animation-delay:.12s}.hero__tagline{max-width:44ch;font-size:var(--text-md);line-height:1.55}.hero__install{display:inline-flex;align-items:stretch;width:fit-content;border:1px solid var(--line-bright)}.hero__install code{padding:10px 16px;font-family:inherit;font-size:var(--text-sm)}.hero__install code:before{content:"$ ";color:var(--ink-faint)}.hero__install button{padding:10px 14px;border-left:1px solid var(--line-bright);font-size:var(--text-xs);font-weight:340;font-stretch:80%;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);transition:color .2s}.hero__install button:hover{color:var(--accent)}.hero__links{display:flex;gap:var(--space-lg)}.hero__links a,.hero__links button{display:inline-flex;align-items:center;gap:8px;font-size:var(--text-xs);font-weight:340;font-stretch:80%;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);transition:color .2s}.hero__links a:hover,.hero__links button:hover{color:var(--accent)}.gallery{max-width:1440px;margin:0 auto;padding:clamp(56px,10vh,120px) var(--pad-x)}.gallery__head{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:var(--space-sm);margin-bottom:var(--space-lg);border-bottom:1px solid var(--line)}.gallery__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1px;padding:1px}.cell{outline:1px solid var(--line)}.cell:focus-visible{z-index:1;outline-color:var(--accent)}.cell{position:relative;display:block;background:var(--bg);animation:rise .28s cubic-bezier(.25,1,.5,1) backwards}.cell:nth-child(2){animation-delay:50ms}.cell:nth-child(3){animation-delay:.1s}.cell:nth-child(4){animation-delay:.15s}.cell:nth-child(5){animation-delay:.2s}.cell__stage{aspect-ratio:16 / 10;overflow:hidden;background:var(--stage)}.cell__canvas{width:100%;height:100%}.cell__meta{display:flex;align-items:baseline;gap:var(--space-sm);padding:12px var(--space-md);border-top:1px solid var(--line)}.cell__no{font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--ink-faint)}.cell__name{font-size:var(--text-sm);font-weight:640;font-stretch:112.5%}.cell__go{margin-left:auto;font-size:var(--text-sm);color:var(--accent);opacity:0;transform:translate(-4px);transition:opacity .2s,transform .2s cubic-bezier(.25,1,.5,1)}.cell:hover .cell__go{opacity:1;transform:none}.cell__corner{position:absolute;z-index:1;font-style:normal;font-size:13px;line-height:1;color:var(--accent);opacity:0;transition:opacity .16s cubic-bezier(.25,1,.5,1),transform .16s cubic-bezier(.25,1,.5,1)}.cell__corner--0{top:5px;left:7px;transform:translate(-3px,-3px)}.cell__corner--1{top:5px;right:7px;transform:translate(3px,-3px);transition-delay:45ms}.cell__corner--2{bottom:5px;left:7px;transform:translate(-3px,3px);transition-delay:135ms}.cell__corner--3{bottom:5px;right:7px;transform:translate(3px,3px);transition-delay:90ms}.cell:hover .cell__corner{opacity:1;transform:none}.cell--filler{display:flex;flex-direction:column;animation-delay:.25s}.cell__blank{display:grid;flex:1;place-items:center;min-height:72px;font-size:var(--text-md);letter-spacing:.5em;text-indent:.5em;color:var(--ink-faint)}.cell--filler .cell__name{font-weight:400;color:var(--ink-dim)}.detail{min-height:100vh;background:var(--stage)}.detail__canvas{position:fixed;inset:0;width:100%;height:100%}.detail__nav{position:fixed;top:0;right:0;left:0;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:14px var(--pad-x);pointer-events:none}.detail__nav>*{pointer-events:auto}.detail__back{padding:7px 12px;border:1px solid var(--stage-line);background:var(--stage);font-size:var(--text-xs);font-weight:340;font-stretch:80%;letter-spacing:.14em;text-transform:uppercase;color:var(--stage-ink-dim);transition:color .2s}.detail__back:hover{color:var(--accent-stage)}.panel{position:fixed;top:64px;right:clamp(16px,3vw,44px);z-index:2;max-height:calc(100vh - 88px);display:flex;flex-direction:column;gap:var(--space-lg);width:min(380px,calc(100vw - 32px));padding:var(--space-lg);overflow-y:auto;border:1px solid var(--line-bright);background:var(--bg);scrollbar-width:thin}.panel__title{font-size:var(--text-lg);font-weight:780;font-stretch:112.5%;letter-spacing:-.01em;line-height:1.2}.panel__desc{margin-top:var(--space-sm);font-size:var(--text-xs);line-height:1.7;color:var(--ink-dim)}.panel__reset{align-self:flex-start;padding:8px 14px;border:1px solid var(--line-bright);font-size:var(--text-xs);font-weight:340;font-stretch:80%;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);transition:color .2s,border-color .2s}.panel__reset:hover:enabled{color:var(--accent);border-color:var(--accent)}.panel__reset:disabled{opacity:.35;cursor:default}.controls{display:flex;flex-direction:column;gap:var(--space-md)}.field{display:flex;flex-direction:column;gap:var(--space-xs)}.field__row{display:flex;justify-content:space-between;font-size:var(--text-xs)}.field__name{color:var(--ink-dim)}.field__value{font-variant-numeric:tabular-nums;color:var(--ink)}input[type=range]{width:100%;height:16px;appearance:none;background:transparent;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:2px;background:var(--line-bright)}input[type=range]::-webkit-slider-thumb{width:10px;height:10px;margin-top:-4px;appearance:none;border-radius:0;background:var(--ink);transition:background .15s}input[type=range]:hover::-webkit-slider-thumb,input[type=range]:active::-webkit-slider-thumb{background:var(--accent)}input[type=range]::-moz-range-track{height:2px;background:var(--line-bright)}input[type=range]::-moz-range-thumb{width:10px;height:10px;border:none;border-radius:0;background:var(--ink)}input[type=range]:hover::-moz-range-thumb,input[type=range]:active::-moz-range-thumb{background:var(--accent)}select,input[type=text]{padding:8px 12px;border:1px solid var(--line-bright);border-radius:0;font:inherit;font-size:var(--text-xs);color:var(--ink);background:var(--bg-deep)}select:focus,input[type=text]:focus{outline:1px solid var(--accent);outline-offset:1px}.field--toggle{flex-direction:row;align-items:center;justify-content:space-between;font-size:var(--text-xs);cursor:pointer}.field--toggle input{position:absolute;opacity:0;pointer-events:none}.toggle{position:relative;width:34px;height:16px;border:1px solid var(--line-bright);background:var(--bg-deep);transition:border-color .2s}.toggle:after{content:"";position:absolute;top:2px;left:2px;width:10px;height:10px;background:var(--ink-faint);transition:transform .18s cubic-bezier(.25,1,.5,1),background .18s}.field--toggle input:focus-visible+.toggle{outline:1px solid var(--accent);outline-offset:1px}.field--toggle input:checked+.toggle{border-color:var(--accent)}.field--toggle input:checked+.toggle:after{background:var(--accent);transform:translate(18px)}.snippet{border:1px solid var(--line-bright);background:var(--bg-deep)}.snippet__tabs{display:flex;border-bottom:1px solid var(--line)}.snippet__tab{padding:8px 14px;border-right:1px solid var(--line);font-size:var(--text-xs);font-weight:340;font-stretch:80%;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);transition:color .2s}.snippet__tab--active{color:var(--ink);box-shadow:inset 0 -1px 0 var(--accent)}.snippet__copy{margin-left:auto;padding:8px 14px;border-left:1px solid var(--line);font-size:var(--text-xs);font-weight:340;font-stretch:80%;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);transition:color .2s}.snippet__copy:hover{color:var(--accent)}.snippet pre{padding:12px 14px;overflow-x:auto;font-size:var(--text-xs);line-height:1.7;color:var(--ink-dim)}.wordmark-page{position:fixed;inset:0}.wordmark-page--dark{background:#100d0a}.wordmark-page--light{background:#f7f5f2}.wordmark-page__canvas{width:100%;height:100%}.wordmark-page__toggle{position:fixed;top:22px;right:var(--pad-x);padding:8px 14px;border:1px solid;font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;transition:color .2s,border-color .2s}.wordmark-page--dark .wordmark-page__toggle{color:#9d9790;border-color:#413c38}.wordmark-page--light .wordmark-page__toggle{color:#5a544e;border-color:#c5c0ba}.wordmark-page__toggle:hover{color:var(--accent);border-color:var(--accent)}.missing{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);min-height:100vh;color:var(--ink-dim)}.missing__glyph{font-size:34px;color:var(--ink-faint)}.missing__back{color:var(--ink);transition:color .2s}.missing__back:hover{color:var(--accent)}.site-footer{display:flex;justify-content:flex-end;padding:36px var(--pad-x) 44px;border-top:1px solid var(--line);font-size:var(--text-xs);color:var(--ink-faint)}.site-footer__links{display:flex;gap:var(--space-lg)}.site-footer a{transition:color .2s}.site-footer a:hover{color:var(--accent)}@keyframes rise{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.hero__foot>*,.cell{animation:none}.cell__corner,.cell__go,.toggle:after{transition:none}}@media(max-width:720px){.hero__foot{gap:var(--space-md);padding-bottom:var(--space-lg)}.hero__install{max-width:100%}.hero__install code{overflow-x:auto;white-space:nowrap}.panel{inset:auto 12px 12px;width:auto;max-height:54vh}}
