:root{--bg: oklch(.165 .006 285);--bg-grid: oklch(.205 .007 285);--surface: oklch(.196 .007 285);--surface-2: oklch(.225 .008 285);--border: oklch(.285 .01 285);--border-2: oklch(.345 .012 285);--text: oklch(.945 .004 285);--text-dim: oklch(.715 .007 285);--text-faint:oklch(.555 .008 285);--accent: oklch(.685 .155 295);--accent-bright: oklch(.755 .15 295);--accent-soft: oklch(.685 .155 295 / .14);--accent-line: oklch(.685 .155 295 / .35);--amber: oklch(.685 .15 75);--green: oklch(.685 .15 155);--radius: 14px;--radius-sm: 9px;--maxw: 980px;--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--sans: "IBM Plex Sans", system-ui, sans-serif;--display: "Space Grotesk", system-ui, sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;background-image:radial-gradient(circle at 50% -10%,oklch(.685 .155 295 / .1),transparent 55%),linear-gradient(to right,var(--bg-grid) 1px,transparent 1px),linear-gradient(to bottom,var(--bg-grid) 1px,transparent 1px);background-size:100% 100%,46px 46px,46px 46px;background-position:0 0,0 0,0 0;min-height:100vh}::selection{background:var(--accent-soft);color:var(--text)}a{color:inherit;text-decoration:none}html[lang=ru] .lang-en,html[lang=en] .lang-ru{display:none!important}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px}.site-header{position:sticky;top:0;z-index:50;backdrop-filter:blur(14px);background:#0e0e11b8;border-bottom:1px solid var(--border)}.site-header .wrap{display:flex;align-items:center;justify-content:space-between;height:64px}.wordmark{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:15px;letter-spacing:-.01em;color:var(--text);white-space:nowrap}.wordmark .dot{width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.wordmark b{font-weight:600}.wordmark .tld{color:var(--text-faint);font-weight:400}.lang-toggle{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--surface)}.lang-toggle button{appearance:none;border:0;background:transparent;color:var(--text-faint);font-family:var(--mono);font-size:12px;letter-spacing:.04em;padding:7px 11px;cursor:pointer;transition:color .15s,background .15s}.lang-toggle button[aria-pressed=true]{color:var(--text);background:var(--accent-soft)}.lang-toggle button:hover{color:var(--text)}.hero{padding:92px 0 56px}.hero .kicker{font-family:var(--mono);font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-bright);margin:0 0 18px}.hero h1{font-family:var(--display);font-weight:600;font-size:clamp(34px,6vw,58px);line-height:1.04;letter-spacing:-.02em;margin:0 0 20px}.hero h1 .tld{color:var(--text-faint);font-weight:400}.hero p.lead{font-size:clamp(16px,2.2vw,19px);color:var(--text-dim);max-width:46ch;margin:0;text-wrap:pretty}.section{padding:30px 0}.section-head{display:flex;align-items:baseline;gap:14px;margin:0 0 26px;padding-bottom:14px;border-bottom:1px solid var(--border)}.section-head h2{font-family:var(--display);font-weight:600;font-size:21px;letter-spacing:-.01em;margin:0}.section-head .count{font-family:var(--mono);font-size:12px;color:var(--text-faint);margin-left:auto}.apps{display:grid;gap:18px}@media(min-width:720px){.apps{grid-template-columns:1fr 1fr}}.app-card{display:flex;flex-direction:column;gap:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px;position:relative;transition:border-color .18s,transform .18s,background .18s}.app-card:hover{border-color:var(--border-2);background:var(--surface-2);transform:translateY(-2px)}.app-top{display:flex;align-items:flex-start;gap:15px}.app-icon{flex:0 0 auto;width:56px;height:56px;border-radius:13px;border:1px solid var(--border-2);background-color:var(--surface-2);background-image:repeating-linear-gradient(-45deg,oklch(.685 .155 295 / .16) 0 8px,transparent 8px 16px);display:grid;place-items:center;font-family:var(--mono);font-size:9px;letter-spacing:.04em;color:var(--text-faint);text-align:center}.app-headings{min-width:0}.app-name{font-family:var(--display);font-weight:600;font-size:19px;letter-spacing:-.01em;display:flex;align-items:center;gap:9px;flex-wrap:wrap}.app-name .name-tld{color:var(--text-faint);font-weight:400}.app-cat{font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;color:var(--text-faint);margin-top:3px}.app-desc{color:var(--text-dim);font-size:14.5px;margin:0;text-wrap:pretty}.badges{display:flex;flex-wrap:wrap;gap:7px}.badge{font-family:var(--mono);font-size:11px;letter-spacing:.03em;padding:4px 9px;border-radius:999px;border:1px solid var(--border-2);color:var(--text-dim);display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.badge .led{width:6px;height:6px;border-radius:50%;background:currentColor}.badge.dev{color:var(--amber);border-color:oklch(.685 .15 75 / .4);background:oklch(.685 .15 75 / .08)}.badge.alpha{color:var(--accent-bright);border-color:var(--accent-line);background:var(--accent-soft)}.badge.wip{color:var(--text-dim)}.stores{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:4px}.store-chip{font-family:var(--mono);font-size:11.5px;letter-spacing:.02em;padding:7px 11px;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--text-faint);display:inline-flex;align-items:center;gap:7px;white-space:nowrap;cursor:default}.store-chip .soon{font-size:9.5px;color:var(--text-faint);opacity:.8}.store-chip.live{color:var(--text);border-color:var(--border-2);cursor:pointer}.store-chip.live:hover{border-color:var(--accent-line);color:var(--accent-bright)}.empty{border:1px dashed var(--border-2);border-radius:var(--radius);padding:40px 28px;text-align:center;color:var(--text-faint)}.empty .e-mark{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin:0 0 8px}.empty p{margin:0;font-size:14.5px;color:var(--text-dim)}.site-footer{margin-top:70px;border-top:1px solid var(--border);background:#0b0b0e99}.footer-grid{display:grid;gap:38px;padding:54px 0 30px}@media(min-width:760px){.footer-grid{grid-template-columns:1.1fr 1fr 1fr}}.foot-col h3{font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin:0 0 16px;font-weight:500}.foot-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.foot-links a{display:inline-flex;align-items:center;gap:8px;color:var(--text-dim);font-size:14px;padding:5px 0;transition:color .15s,gap .15s}.foot-links a:before{content:"";width:5px;height:5px;border-radius:1px;background:var(--border-2);transition:background .15s;flex:0 0 auto}.foot-links a:hover{color:var(--text);gap:11px}.foot-links a:hover:before{background:var(--accent)}.foot-meta{font-size:13.5px;color:var(--text-dim)}.foot-meta .req{font-family:var(--mono);font-size:12px;color:var(--text-faint);line-height:1.9}.foot-meta a.inline{color:var(--accent-bright)}.foot-meta a.inline:hover{text-decoration:underline}.footer-bottom{border-top:1px solid var(--border);padding:20px 0 40px;display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;justify-content:space-between;font-family:var(--mono);font-size:12px;color:var(--text-faint)}.doc-main{padding:56px 0 40px}.doc-back{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;font-family:var(--mono);font-size:12.5px;color:var(--text-faint);margin-bottom:30px;transition:color .15s,gap .15s}.doc-back:hover{color:var(--accent-bright);gap:11px}.doc-header{border-bottom:1px solid var(--border);padding-bottom:28px;margin-bottom:12px}.doc-header .kicker{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-bright);margin:0 0 14px}.doc-header h1{font-family:var(--display);font-weight:600;font-size:clamp(28px,4.5vw,40px);letter-spacing:-.02em;line-height:1.1;margin:0 0 16px;max-width:22ch}.doc-meta{display:flex;flex-wrap:wrap;gap:8px 18px;font-family:var(--mono);font-size:12px;color:var(--text-faint)}.doc-meta span b{color:var(--text-dim);font-weight:500}.tpl-note{display:flex;align-items:flex-start;gap:12px;border:1px solid var(--accent-line);background:var(--accent-soft);border-radius:var(--radius-sm);padding:14px 16px;margin:26px 0 8px;font-size:13.5px;color:var(--text-dim)}.tpl-note .tag{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-bright);border:1px solid var(--accent-line);border-radius:5px;padding:3px 6px;flex:0 0 auto;margin-top:1px}.prose{max-width:70ch;margin:38px 0 0;counter-reset:sec}.prose section{margin-bottom:34px}.prose h2{font-family:var(--display);font-weight:600;font-size:20px;letter-spacing:-.01em;margin:34px 0 12px;display:flex;gap:12px}.prose h2:before{counter-increment:sec;content:counter(sec,decimal-leading-zero);font-family:var(--mono);font-size:14px;color:var(--accent);font-weight:500;flex:0 0 auto;padding-top:2px}.prose h3{font-family:var(--sans);font-weight:600;font-size:15.5px;margin:22px 0 8px;color:var(--text)}.prose p{color:var(--text-dim);margin:0 0 14px;text-wrap:pretty}.prose ul{color:var(--text-dim);margin:0 0 14px;padding-left:22px}.prose li{margin-bottom:7px}.prose li::marker{color:var(--accent)}.prose a{color:var(--accent-bright)}.prose a:hover{text-decoration:underline}.prose blockquote{border:1px solid var(--accent-line);background:var(--accent-soft);border-radius:var(--radius-sm);padding:14px 16px;margin:0 0 14px;font-size:13.5px;color:var(--text-dim)}.prose blockquote p{margin:0}.prose blockquote p+p{margin-top:8px}.prose .placeholder{color:var(--text-faint);font-family:var(--mono);font-size:12.5px;background:var(--surface);border:1px solid var(--border);border-radius:5px;padding:1px 6px}.doc-layout{display:block}@media(min-width:940px){.doc-layout{display:grid;grid-template-columns:1fr 220px;gap:48px;align-items:start}.toc{position:sticky;top:88px}}.toc{order:2}.toc h4{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin:0 0 12px;font-weight:500}.toc ol{list-style:none;margin:0;padding:0;counter-reset:t}.toc li{counter-increment:t;margin-bottom:4px}.toc a{display:flex;gap:9px;font-size:13px;color:var(--text-faint);padding:4px 0;transition:color .15s}.toc a:before{content:counter(t,decimal-leading-zero);font-family:var(--mono);color:var(--border-2)}.toc a:hover{color:var(--accent-bright)}.doc-body{order:1;min-width:0}.muted{color:var(--text-faint)}
