/* IKHDEV — v3 ASCII */
@font-face{font-family:"Geist";src:url(fonts/geist-latin.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap;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:"Geist";src:url(fonts/geist-cyr.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Geist";src:url(fonts/geist-sym.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+2190,U+2192,U+2195,U+2197-2198,U+221E,U+2248,U+2260,U+2264-2265,U+2318,U+23CE,U+2588,U+2591-2593,U+25A0-25A1,U+25AA,U+25B2,U+25BC,U+25C6-25C7,U+25CB,U+25CF,U+2605-2606,U+2713,U+2715,U+2726}
@font-face{font-family:"Geist Mono";src:url(fonts/mono-latin.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap;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:"Geist Mono";src:url(fonts/mono-cyr.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Geist Mono";src:url(fonts/mono-sym.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+2190,U+2192,U+2195,U+2197-2198,U+221E,U+2248,U+2260,U+2264-2265,U+2318,U+23CE,U+2588,U+2591-2593,U+25A0-25A1,U+25AA,U+25B2,U+25BC,U+25C6-25C7,U+25CB,U+25CF,U+2605-2606,U+2713,U+2715,U+2726}
:root{
  --sans:"Geist",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:"Geist Mono",ui-monospace,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
  --maxw:1240px;--pad:32px;--hdr:72px;--lift:clamp(24px,8.5svh,100px);--r:20px;--r-sm:12px;
  --ease:cubic-bezier(.2,.7,.2,1);--out:cubic-bezier(.16,1,.3,1);--io:cubic-bezier(.65,0,.35,1);
}
html[data-theme=dark]{
  --bg:#050505;--bg-2:#0B0B0B;--bg-3:#141414;
  --line:#1B1B1B;--line-2:#272727;--line-3:#424242;
  --text:#F2F2F2;--text-2:#A6A6A6;--text-3:#7C7C7C;--dim:#5F5F5F;
  --ink:#F2F2F2;--inv-bg:#F2F2F2;--inv-text:#050505;
  --hl:rgba(255,255,255,.045);--hl-2:rgba(255,255,255,.085);
  --glass:rgba(12,12,12,.68);--shadow:0 18px 50px -18px rgba(0,0,0,.85),inset 0 1px 0 rgba(255,255,255,.05);
  --spot:rgba(255,255,255,.05);--spot-b:rgba(255,255,255,.34);
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 2.4 -1.2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  --grain-op:.075;color-scheme:dark;
}
html[data-theme=light]{
  --bg:#F2F2EF;--bg-2:#F9F9F7;--bg-3:#E9E9E5;
  --line:#DFDFDA;--line-2:#D0D0CA;--line-3:#A6A6A0;
  --text:#0A0A0A;--text-2:#484848;--text-3:#696969;--dim:#8C8C8C;
  --ink:#0A0A0A;--inv-bg:#0A0A0A;--inv-text:#F7F7F5;
  --hl:rgba(0,0,0,.035);--hl-2:rgba(0,0,0,.065);
  --glass:rgba(249,249,247,.74);--shadow:0 16px 44px -20px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.7);
  --spot:rgba(0,0,0,.03);--spot-b:rgba(0,0,0,.3);
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.4 -1.2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  --grain-op:.05;color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;background:var(--bg);scroll-behavior:smooth;scroll-padding-top:96px}
body{margin:0;background:var(--bg);color:var(--text);font:400 16px/1.6 var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;text-rendering:optimizeLegibility}
body::after{content:"";position:fixed;inset:0;z-index:80;pointer-events:none;background-image:var(--grain);background-size:220px 220px;opacity:var(--grain-op)}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;cursor:pointer}
input{font:inherit;color:inherit}
svg,canvas{display:block}
h1,h2,h3,h4,p,ol,ul,pre{margin:0}
ol,ul{padding:0;list-style:none}
::selection{background:var(--ink);color:var(--bg)}
:focus-visible{outline:2px solid var(--text);outline-offset:3px}
.sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:fixed;left:16px;top:-80px;z-index:100;padding:12px 18px;border-radius:999px;background:var(--inv-bg);color:var(--inv-text);font:500 14px var(--mono)}
.skip:focus{top:16px}
.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
.guides{position:fixed;inset:0;z-index:0;pointer-events:none}
.guides .wrap{position:relative;height:100%}
.guides i{position:absolute;top:0;bottom:0;width:1px;background:var(--line);opacity:.55}
.guides i:first-child{left:calc(var(--pad) / 2)}
.guides i:last-child{right:calc(var(--pad) / 2)}

/* ---------- header: на скролле превращается в плавающую «пилюлю» ---------- */
.hdr{position:fixed;top:0;left:0;right:0;z-index:60;pointer-events:none}
.hdr-in{pointer-events:auto;position:relative;display:flex;align-items:center;gap:20px;width:100%;max-width:var(--maxw);height:var(--hdr);margin:0 auto;padding:0 var(--pad);border:1px solid transparent;border-radius:0;background-color:transparent;
  transition:max-width .8s var(--out),width .8s var(--out),height .6s var(--out),margin-top .6s var(--out),padding .6s var(--out),border-radius .6s var(--out),background-color .45s ease,border-color .45s ease,box-shadow .6s ease,-webkit-backdrop-filter .45s,backdrop-filter .45s}
.hdr.pill .hdr-in{width:calc(100% - 24px);max-width:1040px;height:60px;margin-top:12px;padding:0 9px 0 16px;border-radius:30px;background-color:var(--glass);border-color:var(--line-2);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px) saturate(1.4);backdrop-filter:blur(18px) saturate(1.4)}
.js .hdr-in{animation:hdrIn 1s var(--out) both}
@keyframes hdrIn{from{opacity:0;transform:translateY(-14px)}}
.brand{display:inline-flex;align-items:center;gap:11px;min-height:44px;flex:none}
.logo{width:36px;height:36px;overflow:visible;color:var(--text);transition:width .6s var(--out),height .6s var(--out),transform .9s var(--out)}
.hdr.pill .logo{width:32px;height:32px}
.brand:hover .logo{transform:rotate(-14deg)}
.logo .lr{fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round}
.logo .lp{fill:currentColor}
.js .hdr .logo .lr{stroke-dasharray:54;animation:ringDraw 1.5s var(--out) .25s both}
.js .hdr .logo .lp{transform-origin:24px 24px;animation:planetIn 1.1s var(--out) both}
@keyframes ringDraw{from{stroke-dashoffset:54}}
@keyframes planetIn{from{transform:scale(.35);opacity:0}}
.brand-t{font:600 15px/1 var(--sans);letter-spacing:.16em;margin-right:-.16em}
.nav{display:flex;align-items:center;gap:2px;margin-left:6px}
.nav a{display:inline-flex;align-items:center;height:38px;padding:0 13px;border-radius:999px;font:400 13.5px/1 var(--mono);color:var(--text-2);transition:color .2s,background-color .25s}
.nav a:hover{color:var(--text);background:var(--hl-2)}
.hdr-act{margin-left:auto;display:flex;align-items:center;gap:8px}
.lang{position:relative;display:inline-flex;align-items:center;flex:none;height:40px;padding:3px;border:1px solid var(--line-2);border-radius:999px}
.lang button{position:relative;z-index:1;width:36px;height:32px;border-radius:999px;font:500 11.5px/1 var(--mono);letter-spacing:.06em;color:var(--text-3);transition:color .4s}
.lang button:hover{color:var(--text)}
.lang button[aria-pressed=true]{color:var(--inv-text)}
.lang-th{position:absolute;top:3px;left:3px;width:36px;height:32px;border-radius:999px;background:var(--inv-bg);transition:transform .55s var(--out)}
html[lang=en] .lang-th{transform:translateX(36px)}
.icon-btn{display:inline-grid;place-items:center;flex:none;width:40px;height:40px;border-radius:999px;border:1px solid var(--line-2);color:var(--text);transition:border-color .25s,background-color .25s}
.icon-btn:hover{border-color:var(--line-3);background:var(--hl)}
.icon-btn svg{width:18px;height:18px}
.theme-toggle svg{transition:transform .8s var(--out)}
html[data-theme=light] .theme-toggle svg{transform:rotate(180deg)}
.burger{display:none}
.burger path{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;transition:transform .4s var(--out);transform-origin:12px 12px}
.burger[aria-expanded=true] .b1{transform:translateY(2.5px) rotate(45deg)}
.burger[aria-expanded=true] .b2{transform:translateY(-2.5px) rotate(-45deg)}
.mnav{pointer-events:auto;position:absolute;left:12px;right:12px;top:80px;max-width:1040px;margin:0 auto;padding:8px 18px 18px;border:1px solid var(--line-2);border-radius:26px;background:var(--glass);-webkit-backdrop-filter:blur(20px) saturate(1.4);backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--shadow);transform-origin:50% 0}
.mnav:not([hidden]){animation:menuIn .5s var(--out) both}
@keyframes menuIn{from{opacity:0;transform:translateY(-10px) scale(.97)}}
.mnav-links a{display:flex;justify-content:space-between;align-items:center;min-height:56px;border-bottom:1px solid var(--line);font:400 16px var(--mono)}
.mnav:not([hidden]) .mnav-links a{animation:rise .6s var(--out) both;animation-delay:calc(var(--i) * 45ms + 80ms)}
.mnav-links .arr{color:var(--text-3)}
.mnav-cta{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}

/* ---------- кнопки ---------- */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;height:50px;padding:0 24px;border:1px solid var(--line-3);border-radius:999px;font:500 15px/1 var(--sans);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;isolation:isolate;transition:background-color .3s,color .3s,border-color .3s,transform .35s var(--out)}
.btn-sm{height:40px;padding:0 17px;font-size:14px}
.btn-line{color:var(--text)}
.btn-line:hover{border-color:var(--text);background:var(--hl)}
.hero .btn-line{background:color-mix(in srgb,var(--bg) 62%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.hero .btn-line:hover{background:color-mix(in srgb,var(--bg) 40%,var(--hl))}
.btn-ghost{border-color:transparent;color:var(--text-2)}
.btn-ghost:hover{color:var(--text);background:var(--hl-2)}
.btn-solid{background:var(--inv-bg);color:var(--inv-text);border-color:var(--inv-bg)}
.btn-solid::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(105deg,transparent 35%,color-mix(in srgb,var(--inv-text) 16%,transparent) 50%,transparent 65%);transform:translateX(-110%);transition:transform .9s var(--out)}
.btn-solid:hover::after{transform:translateX(110%)}
.btn:active{transform:scale(.97)}
.arr{display:inline-block;font-family:var(--sans);transition:transform .45s var(--out)}
.btn:hover .arr,.link:hover .arr,.mnav-links a:hover .arr{transform:translateX(4px)}
.kicker{font:400 12.5px/1.4 var(--mono);color:var(--text-3);letter-spacing:.02em}
.link{display:inline-flex;align-items:center;gap:10px;min-height:44px;font:400 13.5px var(--mono);color:var(--text)}
.link > span:first-child{background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .5s var(--out)}
.link:hover > span:first-child{background-size:100% 1px}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;isolation:isolate}
.stage{position:absolute;z-index:1;inset:0;transform-origin:50% 100%}
.stage canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:pan-y}
.glow{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at var(--px,50%) var(--py,80%),transparent calc(var(--pr,150px) * .97),color-mix(in srgb,var(--text) 7%,transparent) calc(var(--pr,150px) * 1.005),color-mix(in srgb,var(--text) 2.5%,transparent) calc(var(--pr,150px) * 1.16),transparent calc(var(--pr,150px) * 1.6)),radial-gradient(ellipse calc(var(--pr,150px) * 3.4) calc(var(--pr,150px) * 1.7) at var(--px,50%) var(--py,80%),color-mix(in srgb,var(--text) 3.5%,transparent),transparent 72%)}
.js .glow{animation:stageIn 2.4s ease .3s both}
[data-theme=light] .glow{opacity:.55}
.hero-in{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;min-height:max(660px,100svh);padding-top:calc(var(--hdr) + clamp(30px,6.4svh,76px));padding-bottom:0;text-align:center;pointer-events:none}
.hero-copy{display:flex;flex-direction:column;align-items:center;max-width:1080px;pointer-events:auto;translate:0 var(--lift)}
.h1{font-weight:560;font-size:clamp(46px,min(7.4vw,10.4svh),124px);line-height:.93;letter-spacing:-.058em;margin:0 0 clamp(18px,2.6svh,26px)}
.h1 .l{display:block;overflow:hidden;padding:0 .05em .16em;margin:0 -.05em -.16em}
.h1 .li{display:block}
.caret{display:inline-block;width:.26em;height:.66em;margin-left:.08em;background:currentColor;vertical-align:-.02em;border-radius:3px;animation:blink 1.06s steps(1,end) infinite}
@keyframes blink{50%{opacity:0}}
.lead{font-size:clamp(16.5px,1.3vw,19px);line-height:1.58;color:var(--text-2);max-width:29em}
.cta{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:clamp(22px,3.4svh,34px)}
.copy-btn{flex:none;display:inline-flex;align-items:center;justify-content:center;min-width:116px;height:40px;padding:0 16px;border-radius:999px;background:var(--hl-2);font:400 12.5px var(--mono);color:var(--text-2);transition:color .2s,background-color .25s}
.copy-btn:hover{color:var(--text);background:color-mix(in srgb,var(--text) 14%,transparent)}
.copy-btn.done{color:var(--inv-text);background:var(--inv-bg)}
.copy-btn.done .lbl{animation:lblIn .4s var(--out)}
@keyframes lblIn{from{opacity:0;transform:translateY(7px)}}
.lbl{display:inline-block}

@media (min-width:561px) and (max-aspect-ratio:4/5){.hero-in{padding-top:calc(var(--hdr) + 11svh)}:root{--lift:clamp(0px,6svh,72px)}}

/* загрузка: заголовок поднимается из маски, остальное — мягкий подъём с размытием */
@keyframes rise{from{opacity:0;transform:translateY(18px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
@keyframes lineUp{from{transform:translateY(112%) rotate(1.5deg)}to{transform:none}}
.js .la{animation:rise 1.05s var(--out) both;animation-delay:var(--d,0ms)}
.js .h1 .li{animation:lineUp 1.25s var(--out) both;animation-delay:var(--d,0ms);transform-origin:50% 100%}
.js .stage canvas{animation:stageIn 2s ease .1s both}
@keyframes stageIn{from{opacity:0}}

/* ---------- ticker ---------- */
.ticker{position:relative;z-index:2;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--bg)}
.ticker-in{display:flex;align-items:center;gap:22px;height:66px}
.ticker-lbl{flex:none;font:400 12.5px var(--mono);color:var(--text-3)}
.ticker-view{flex:1;min-width:0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent)}
.ticker-track{display:flex;width:max-content;animation:marq 48s linear infinite}
.ticker:hover .ticker-track{animation-play-state:paused}
.tk{display:flex;flex:none}
.tk li{display:flex;align-items:center;gap:10px;padding:0 26px;font:500 13px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;white-space:nowrap}
.tk li i{display:inline-grid;place-items:center;min-width:24px;height:22px;padding:0 7px;border:1px solid var(--line-2);border-radius:999px;font-style:normal;font-weight:400;font-size:11px;letter-spacing:0;color:var(--text-3)}
@keyframes marq{to{transform:translateX(-50%)}}

/* ---------- секции ---------- */
main{position:relative;z-index:1}
.sec{position:relative;padding:128px 0}
.sec + .sec{border-top:1px solid var(--line)}
.sec-head{display:grid;gap:20px;max-width:760px;justify-items:start}
.h2{font-weight:560;font-size:clamp(32px,3.8vw,54px);line-height:1.04;letter-spacing:-.044em}
.sub{font-size:clamp(16px,1.15vw,17px);line-height:1.62;color:var(--text-2);max-width:34em}
.step code{font:400 12.5px/1 var(--mono);color:var(--text);padding:3px 8px;border:1px solid var(--line-2);border-radius:999px;background:var(--bg-2);white-space:nowrap}

/* появление при скролле */
.rv{opacity:0;transform:translateY(28px);transition:opacity .9s var(--out),transform 1.1s var(--out);transition-delay:var(--rd,0ms)}
.card.rv,.term.rv,.tbl-wrap.rv{transform:translateY(36px) scale(.985)}
.rv.in{opacity:1;transform:none}
.sw{display:inline-block}
.rvs .sw{opacity:0;transform:translateY(.42em);filter:blur(8px);transition:opacity .8s var(--out),transform 1s var(--out),filter .8s var(--out);transition-delay:calc(var(--i) * 55ms + var(--rd,0ms))}
.rvs.in .sw{opacity:1;transform:none;filter:blur(0)}

/* ---------- подключение ---------- */
.connect-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:64px;align-items:start}
.steps{position:relative;margin-top:44px}
.steps::before,.steps::after{content:"";position:absolute;left:17.5px;top:var(--t0,34px);height:var(--h0,0px);width:1px;background:var(--line-2)}
.steps::after{background:var(--text);transform-origin:50% 0;transform:scaleY(var(--p,0))}
.step{position:relative;display:grid;grid-template-columns:36px minmax(0,1fr);column-gap:20px;padding:16px 0 20px}
.step .n{position:relative;z-index:1;display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line-3);border-radius:50%;background:var(--bg);font:500 11.5px/1 var(--mono);color:var(--text-3);transition:background-color .6s var(--out),color .6s var(--out),border-color .6s var(--out),transform .6s var(--out)}
.step.on .n{background:var(--inv-bg);border-color:var(--inv-bg);color:var(--inv-text)}
.step h3{font-size:18px;line-height:36px;font-weight:560;letter-spacing:-.018em}
.step p{margin-top:2px;color:var(--text-2);font-size:15.5px;line-height:1.72}
.term{position:relative;min-width:0;border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg-2);isolation:isolate}
.term-top{display:flex;align-items:center;gap:14px;height:58px;padding:0 9px 0 18px;border-bottom:1px solid var(--line-2)}
.tdots{display:flex;gap:6px;flex:none}
.tdots i{width:9px;height:9px;border-radius:50%;border:1px solid var(--line-3)}
.tabs{position:relative;display:flex;padding:3px;border-radius:999px;background:var(--hl)}
.tab{position:relative;z-index:1;height:32px;padding:0 14px;border-radius:999px;font:400 12.5px var(--mono);color:var(--text-3);transition:color .3s}
.tab:hover,.tab[aria-selected=true]{color:var(--text)}
.tab-th{position:absolute;top:3px;left:0;width:0;height:32px;border-radius:999px;background:var(--bg-3);box-shadow:inset 0 0 0 1px var(--line-3)}
.tabs.ready .tab-th{transition:transform .55s var(--out),width .55s var(--out)}
.term-file{margin-left:auto;font:400 12.5px var(--mono);color:var(--text-3)}
.term .copy-btn{min-width:120px}
.code{padding:22px 0;overflow-x:auto;font:400 13px/1.9 var(--mono);color:var(--text-2);tab-size:4;scrollbar-width:thin;outline-offset:-2px}
.code-in{display:grid;min-width:100%;width:max-content}
.ln{display:grid;grid-template-columns:52px 26px max-content;padding-right:28px;white-space:pre}
.ln .no{color:var(--dim);text-align:right;padding-right:16px;user-select:none;-webkit-user-select:none}
.ln .mk{color:var(--text-3);user-select:none;-webkit-user-select:none}
.ln .tx{display:block}
.ln.add{background:var(--hl);box-shadow:inset 2px 0 0 var(--text);color:var(--text)}
.ln.add .mk{color:var(--text)}
.ln.del .tx{color:var(--text-3);background:linear-gradient(currentColor,currentColor) 0 54%/100% 1px no-repeat}
.ln.del .tx *{color:inherit!important}
.code .k{color:var(--text);font-weight:650}
.code .f,.code .s,.code .n{color:var(--text)}
.code .p{color:var(--text-2);font-style:italic}
.term.armed .ln.add .tx{clip-path:inset(0 100% 0 0)}
.term.armed .ln.del .tx{background-size:0 1px}
.term.armed.play .ln.del .tx{transition:background-size .5s steps(14) .2s;background-size:100% 1px}
.term.armed.play .ln.add .tx{animation:typing var(--dur,.8s) steps(var(--n,20),end) var(--d,.6s) forwards}
@keyframes typing{to{clip-path:inset(0 0 0 0)}}
.term-foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:16px 20px;border-top:1px solid var(--line-2);font:400 12.5px var(--mono);color:var(--text-3)}
.term-foot .f{color:var(--text);padding:5px 11px;border:1px solid var(--line-2);border-radius:999px}

/* ---------- каталог ---------- */
.cat-head{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:24px 40px;margin-bottom:44px}
.cat-tools{display:grid;gap:12px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.fchip{display:inline-flex;align-items:center;gap:10px;height:40px;padding:0 16px;border:1px solid var(--line-2);border-radius:999px;font:400 12.5px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);transition:color .25s,border-color .25s,background-color .3s,transform .35s var(--out)}
.fchip .cnt{letter-spacing:0;color:var(--text-3);transition:color .25s}
.fchip:hover{color:var(--text);border-color:var(--line-3)}
.fchip:active,.preset:active{transform:scale(.96)}
.fchip[aria-pressed=true]{background:var(--inv-bg);border-color:var(--inv-bg);color:var(--inv-text)}
.fchip[aria-pressed=true] .cnt{color:inherit;opacity:.6}
.tools-2,.msort{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.presets{display:flex;flex-wrap:wrap;gap:8px}
.tools-lbl{font:400 12.5px var(--mono);color:var(--text-3);margin-right:6px}
.preset{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 15px;border:1px dashed var(--line-3);border-radius:999px;font:400 12.5px var(--mono);color:var(--text-2);transition:color .25s,border-color .25s,background-color .3s,transform .35s var(--out)}
.preset:hover{color:var(--text);border-color:var(--text)}
.preset[aria-pressed=true]{border-style:solid;border-color:var(--text);color:var(--text);background:var(--hl-2)}
.search{margin-left:auto;display:flex;align-items:center;gap:12px;height:44px;width:min(340px,100%);padding:0 7px 0 17px;border:1px solid var(--line-2);border-radius:999px;background:var(--bg-2);cursor:text;transition:border-color .25s,box-shadow .35s}
.search .pr{font:500 14px var(--mono);color:var(--text)}
.search input{flex:1;min-width:0;height:100%;background:none;border:0;outline:0;font:400 13.5px var(--mono);color:var(--text)}
.search input::placeholder{color:var(--text-3);opacity:1}
.search input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}
.search:focus-within{border-color:var(--text);box-shadow:0 0 0 4px var(--hl-2)}
.kbd{display:inline-grid;place-items:center;flex:none;width:28px;height:28px;border:1px solid var(--line-2);border-radius:8px;font:400 12px var(--mono);color:var(--text-3)}
.search:focus-within .kbd{opacity:0}
.msort{display:none}
.preset-note{font:400 12.5px/1.5 var(--mono);color:var(--text-2)}
.preset-note:not([hidden]){animation:rise .5s var(--out)}
.preset-note b{color:var(--text);font-weight:500}
.link-btn{font:inherit;color:var(--text);text-decoration:underline;text-underline-offset:3px;min-height:32px}
.sa::after{content:"↕";opacity:.55}
th[aria-sort=ascending] .sa::after,.preset[data-dir="1"] .sa::after{content:"↑";opacity:1}
th[aria-sort=descending] .sa::after,.preset[data-dir="-1"] .sa::after{content:"↓";opacity:1}
.tbl-wrap{position:relative;margin-top:26px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg-2);overflow:hidden}
.tbl{width:100%;border-collapse:collapse;font-family:var(--mono)}
.tbl th{height:50px;padding:0 18px;text-align:left;font:400 11.5px/1 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);border-bottom:1px solid var(--line-2);white-space:nowrap}
.sort{display:inline-flex;align-items:center;gap:8px;min-height:44px;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;transition:color .2s}
.sort:hover,th[aria-sort=ascending] .sort,th[aria-sort=descending] .sort{color:var(--text)}
.tbl td{padding:15px 18px;border-bottom:1px solid var(--line);font-size:13.5px;vertical-align:middle}
.tbl tbody tr:last-child td{border-bottom:0}
.tbl tbody tr{transition:background-color .2s}
.tbl tbody tr:not(.empty):hover{background:var(--hl)}
.c-model{width:34%}
.mcell{display:flex;align-items:center;gap:14px}
.sym{flex:none;display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--line-3);border-radius:12px;font:500 11.5px/1 var(--mono);letter-spacing:.02em;color:var(--text);transition:background-color .3s,color .3s,border-color .3s}
.tbl tbody tr:hover .sym{background:var(--inv-bg);color:var(--inv-text);border-color:var(--inv-bg)}
.mid{display:block;color:var(--text);font-size:14px;word-break:break-all}
.mfam{display:block;margin-top:3px;font-size:11.5px;color:var(--text-3)}
.price{color:var(--text)}
.cache{display:block;margin-top:4px;font-size:11.5px;color:var(--text-3)}
.bar{display:block;width:132px;height:8px;margin-top:9px;background:repeating-linear-gradient(90deg,var(--line-2) 0 4px,transparent 4px 6px)}
.bar i{display:block;height:100%;background:repeating-linear-gradient(90deg,var(--text) 0 4px,transparent 4px 6px)}
@keyframes barIn{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
.grow .bar i,.enter .bar i{animation:barIn .8s steps(12,end) .15s both}
.tags{display:flex;flex-wrap:wrap;gap:6px}
.tag{font:400 11.5px/1 var(--mono);color:var(--text-2);padding:6px 10px;border:1px solid var(--line-2);border-radius:999px;white-space:nowrap}
.tag.new{background:var(--inv-bg);color:var(--inv-text);border-color:var(--inv-bg)}
.tag.paid{border-style:dashed;border-color:var(--line-3)}
.c-act{width:64px;text-align:right}
.cp{display:inline-grid;place-items:center;width:40px;height:40px;border:1px solid transparent;border-radius:999px;color:var(--text-3);transition:color .2s,border-color .2s,background-color .2s}
.cp:hover{color:var(--text);border-color:var(--line-2);background:var(--hl)}
.cp svg{width:16px;height:16px}
.cp .i-ok{display:none}
.cp.done .i-ok{display:block;animation:pop .45s var(--out)}
.cp.done .i-cp{display:none}
.cp.done{color:var(--inv-text);background:var(--inv-bg)}
@keyframes pop{from{transform:scale(.4);opacity:0}}
.empty td{padding:56px 18px;text-align:center}
.empty pre{font:400 12.5px/1.3 var(--mono);color:var(--text-3);margin-bottom:16px}
.empty b{display:block;font:500 16px var(--sans);color:var(--text)}
.empty span{display:block;margin-top:6px;font:400 14px var(--sans);color:var(--text-2)}
.empty .btn{margin-top:20px}
.cat-foot{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;margin-top:18px}
.cat-status{font:400 12.5px var(--mono);color:var(--text-3)}

/* ---------- возможности ---------- */
.feats .kicker{margin-bottom:28px}
.manifesto{font-weight:500;font-size:clamp(26px,3.05vw,44px);line-height:1.16;letter-spacing:-.036em;max-width:23em}
.manifesto .w{transition:color .6s ease}
.lit .manifesto .w{color:var(--dim)}
.lit .manifesto .w.on{color:var(--text)}
.bento{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;margin-top:76px}
.card{grid-column:span 4;position:relative;display:flex;flex-direction:column;gap:12px;min-width:0;padding:30px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg-2);isolation:isolate}
.card.w7{grid-column:span 7}
.card.w5{grid-column:span 5}
.card h3{font-size:19px;line-height:1.28;font-weight:560;letter-spacing:-.02em}
.card > p{color:var(--text-2);font-size:15px;line-height:1.62;max-width:36em}
.viz{margin-top:auto;padding-top:24px}
.ascii{font:400 13.5px/1.6 var(--mono);white-space:pre;color:var(--dim);overflow:hidden}
.ascii .h{color:var(--text)}
.ascii .m{color:var(--text-2)}
.ascii .inv{background:var(--text);color:var(--bg);border-radius:3px}
.fail{display:grid;grid-template-columns:auto minmax(0,1fr);gap:26px;align-items:center}
.log{display:grid;gap:10px;padding-left:22px;border-left:1px solid var(--line-2);font:400 12.5px/1.45 var(--mono);color:var(--text-2)}
.log li{display:flex;gap:10px;transition:opacity .45s,color .45s,transform .45s var(--out)}
.log li .m{flex:none;color:var(--text-3)}
.js .log li{opacity:.38}
.js .log li.on{opacity:1}
.log li.cur{color:var(--text);transform:translateX(3px)}
.sse{display:grid;gap:12px}
.msg-u{justify-self:end;max-width:86%;padding:10px 15px;border-radius:16px 16px 4px 16px;background:var(--inv-bg);color:var(--inv-text);font-size:14px;font-weight:500}
.msg-a{max-width:94%;min-height:8.2em;padding:12px 15px;border:1px solid var(--line-2);border-radius:16px 16px 16px 4px;background:var(--bg);color:var(--text);font-size:14px;line-height:1.55}
.tcaret{display:inline-block;width:.5em;height:1.05em;margin-left:2px;background:currentColor;vertical-align:-.16em;border-radius:1px;animation:blink 1s steps(1,end) infinite}
.sse-ev{display:flex;justify-content:space-between;gap:12px;font:400 11.5px var(--mono);color:var(--text-3);white-space:nowrap;overflow:hidden}
.sse-ev span:first-child{overflow:hidden;text-overflow:ellipsis}
.fmt{border-top:1px solid var(--line-2);font:400 12.5px var(--mono)}
.fmt li{display:flex;align-items:center;gap:10px;min-height:44px;border-bottom:1px solid var(--line-2)}
.fmt .cb,.fmt .nm{color:var(--text)}
.fmt .dots{flex:1;min-width:12px;height:1px;background:repeating-linear-gradient(90deg,var(--line-3) 0 2px,transparent 2px 5px)}
.fmt .pv{color:var(--text-3)}
.match{padding:16px 18px;border:1px solid var(--line-2);border-radius:14px;background:var(--bg);font:400 12.5px/2 var(--mono)}
.match .row{display:flex;justify-content:space-between;gap:12px;white-space:nowrap}
.match .kk{color:var(--text-3)}
.match .v{color:var(--text);min-height:2em}
.match .ok{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line-3);color:var(--text);transition:opacity .5s,transform .5s var(--out)}
.match.armed .ok{opacity:0;transform:translateY(6px)}
.up{display:flex;gap:3px;height:56px}
.up i{flex:1;min-width:2px;border-radius:2px;background:var(--text);transform-origin:50% 100%}
.up i.x{background:repeating-linear-gradient(135deg,var(--text-3) 0 1.5px,transparent 1.5px 4px)}
.up i.nw{animation:upIn .7s var(--out)}
@keyframes upIn{from{transform:scaleY(0);opacity:0}}
.up-leg{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:16px;font:400 11.5px var(--mono);color:var(--text-3)}
.up-leg span{display:inline-flex;align-items:center;gap:8px}
.up-leg span::before{content:"";width:10px;height:10px;border-radius:3px;background:var(--text)}
.up-leg span.x::before{background:repeating-linear-gradient(135deg,var(--text-3) 0 1.5px,transparent 1.5px 4px);box-shadow:0 0 0 1px var(--line-3)}

/* курсорный «прожектор» на карточках */
@media (hover:hover) and (pointer:fine){
  .spot::before,.spot::after{content:"";position:absolute;pointer-events:none;border-radius:inherit;opacity:0;transition:opacity .5s ease}
  .spot::after{inset:0;z-index:-1;background:radial-gradient(520px circle at var(--mx,50%) var(--my,50%),var(--spot),transparent 62%)}
  .spot::before{inset:-1px;z-index:2;padding:1px;background:radial-gradient(300px circle at var(--mx,50%) var(--my,50%),var(--spot-b),transparent 68%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
  .spot:hover::before,.spot:hover::after{opacity:1}
}

/* ---------- FAQ ---------- */
.faq-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:64px;align-items:start}
.faq-aside{position:sticky;top:120px;display:grid;gap:20px;justify-items:start}
.faq-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}
.qa{border-top:1px solid var(--line-2)}
.qa:last-child{border-bottom:1px solid var(--line-2)}
.qa summary{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:76px;padding:16px 0;cursor:pointer;list-style:none;font-size:clamp(16.5px,1.3vw,19px);font-weight:500;letter-spacing:-.016em;transition:color .25s}
.qa summary::-webkit-details-marker{display:none}
.qa .mk{position:relative;flex:none;width:34px;height:34px;border:1px solid var(--line-2);border-radius:50%;transition:background-color .45s var(--out),border-color .45s var(--out)}
.qa .mk::before,.qa .mk::after{content:"";position:absolute;left:50%;top:50%;width:12px;height:1.5px;margin:-.75px 0 0 -6px;border-radius:2px;background:var(--text);transition:transform .55s var(--out),background-color .45s}
.qa .mk::after{transform:rotate(90deg)}
.qa summary:hover .mk{border-color:var(--line-3)}
.qa[open]:not(.closing) .mk{background:var(--inv-bg);border-color:var(--inv-bg)}
.qa[open]:not(.closing) .mk::before,.qa[open]:not(.closing) .mk::after{background:var(--inv-text)}
.qa[open]:not(.closing) .mk::after{transform:rotate(180deg)}
.qa .ans{overflow:hidden}
.qa .ans p{padding:0 60px 26px 0;color:var(--text-2);font-size:15.5px;line-height:1.68;max-width:40em}

/* ---------- запуск ---------- */
.launch{position:relative;overflow:hidden;border-top:1px solid var(--line);min-height:clamp(760px,64vw,920px)}
.terrain{position:absolute;inset:0;width:100%;height:100%;z-index:0;touch-action:pan-y}
.launch-in{position:relative;z-index:1;display:grid;justify-items:center;text-align:center;gap:20px;padding-top:clamp(96px,8.6vw,132px);pointer-events:none}
.launch-in > *{pointer-events:auto}
.launch-h{font-weight:560;font-size:clamp(40px,5.6vw,84px);line-height:1;letter-spacing:-.05em}
.launch .cta{justify-content:center;margin-top:10px}

/* ---------- футер ---------- */
.ftr{position:relative;z-index:1;border-top:1px solid var(--line);padding-top:76px;background:var(--bg)}
.ftr-grid{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr));gap:40px}
.ftr-brand p{margin-top:16px;max-width:24em;color:var(--text-2);font-size:14.5px}
.ftr-h{font:400 11.5px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);margin-bottom:16px}
.ftr ul{display:grid;gap:2px}
.ftr ul a{display:inline-flex;align-items:center;min-height:34px;font-size:14.5px;color:var(--text-2);transition:color .2s}
.ftr ul a:hover{color:var(--text)}
.wordmark{position:relative;height:clamp(96px,15.4vw,214px);margin-top:72px}
.wordmark canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:pan-y}
.ftr-bot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-top:26px;padding:22px 0 30px;border-top:1px solid var(--line);font:400 11.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}

/* ---------- переходы темы и языка (View Transitions) ---------- */
html.vt-theme::view-transition-old(root),html.vt-theme::view-transition-new(root){animation:none;mix-blend-mode:normal}
html.vt-theme::view-transition-new(root){z-index:2}
html.vt-theme *{transition:none!important}
html.vt-lang::view-transition-old(root){animation:vtOut .32s ease both}
html.vt-lang::view-transition-new(root){animation:vtIn .5s var(--out) both}
@keyframes vtOut{to{opacity:0;filter:blur(4px)}}
@keyframes vtIn{from{opacity:0;filter:blur(4px)}}

/* ---------- адаптив ---------- */
@media (min-width:961px){.mnav{display:none!important}}
@media (max-width:1100px){
  .hide-lg{display:none}
  .connect-grid,.faq-grid{grid-template-columns:minmax(0,1fr);gap:56px}
  .faq-aside{position:static}
  .ftr-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 24px}
  .ftr-brand{grid-column:1/-1}
  .card.w7,.card.w5{grid-column:span 12}
  .card{grid-column:span 6}
  .card:last-child{grid-column:span 12}
}
@media (max-width:960px){.nav{display:none}.burger{display:inline-grid}}
@media (max-width:860px){
  .tbl-wrap{border:0;border-radius:0;background:none;margin-top:20px;overflow:visible}
  .tbl thead{display:none}
  .tbl,.tbl tbody{display:block}
  .tbl tbody{display:grid;gap:10px}
  .tbl tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:16px;padding:18px;border:1px solid var(--line-2);border-radius:18px;background:var(--bg-2)}
  .tbl td{padding:0;border:0!important}
  .c-model{grid-column:1/3;width:auto}
  .c-act{grid-column:3;grid-row:1;width:auto;margin:-8px -8px 0 0}
  .c-in,.c-out{grid-row:2}
  .c-in::before,.c-out::before{content:attr(data-label);display:block;margin-bottom:6px;font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3)}
  .c-tags{grid-column:1/-1}
  .bar{width:100%;max-width:150px}
  .tbl tr.empty{display:block}
  .empty td{display:block;padding:40px 12px}
  .msort{display:flex}
  .search{margin-left:0;width:100%}
  .kbd{display:none}
}
@media (min-width:600px) and (max-width:860px){.tbl tbody{grid-template-columns:1fr 1fr}.tbl tr.empty{grid-column:1/-1}}
@media (max-width:760px){
  :root{--pad:20px;--hdr:64px}
  .sec{padding:92px 0}
  .bento{grid-template-columns:minmax(0,1fr);margin-top:52px}
  .card,.card.w7,.card.w5,.card:last-child{grid-column:auto}
  .card{padding:24px}
  .fail{grid-template-columns:minmax(0,1fr);gap:20px}
  .log{border-left:0;padding-left:0;padding-top:16px;border-top:1px solid var(--line-2)}
  .ftr-grid{grid-template-columns:1fr 1fr;gap:36px 24px}
  .ftr-brand{grid-column:1/-1}
  .qa .ans p{padding-right:0}
  .ticker-in{height:60px}
  .hdr.pill .hdr-in{height:56px;border-radius:28px;margin-top:10px;padding:0 7px 0 12px;width:calc(100% - 20px)}
  .mnav{top:72px;left:10px;right:10px}
  .hdr-in{gap:12px}
  .hdr-act{gap:6px}
}
@media (max-width:560px){
  :root{--lift:clamp(0px,3svh,32px)}
  .h1{font-size:clamp(44px,13.4vw,64px);margin:26px 0 20px}
  .hero .cta{margin-top:30px;flex-direction:column;align-items:stretch;width:min(100%,320px)}
  .cmd .cpre{display:none}
  .copy-btn{min-width:0}
  .term .copy-btn{min-width:0;margin-left:auto}
  .term-file,.tdots{display:none}
  .term-top{padding-left:8px}
  .tab{padding:0 11px}
  .code{font-size:12px}
  .ln{grid-template-columns:36px 20px max-content}
  .ln .no{padding-right:10px}
  .ticker-lbl{display:none}
  .mnav-cta{grid-template-columns:1fr}
  .logo{width:32px;height:32px}
  .brand{gap:9px}
  .brand-t{font-size:14px;letter-spacing:.13em;margin-right:-.13em}
  .launch .cta .btn{flex:1 1 220px}
}
@media (max-width:420px){.hide-xs{display:none}}
@media (max-width:350px){.brand-t{display:none}}
/* ---------- курсор: блок-каретка как в заголовке; на кликабельном — уголки-прицел вокруг цели ---------- */
.kcur{position:fixed;left:0;top:0;z-index:10000;width:0;height:0;pointer-events:none;mix-blend-mode:difference;opacity:0;transition:opacity .25s}
.kcur.on{opacity:1}
.kcur-b{position:absolute;left:0;top:0;width:8px;height:16px;margin:-8px 0 0 -4px;background:#fff;border-radius:1.5px;will-change:transform}
.kcur.idle:not(.m-link) .kcur-b{animation:blink 1.06s steps(1,end) infinite}
.kcur-f{position:absolute;left:0;top:0;opacity:0;transition:opacity .22s}
.kcur.m-link .kcur-f{opacity:1}
.kcur-f i{position:absolute;left:0;top:0;width:9px;height:9px;border:0 solid #fff;will-change:transform}
.kcur-f i:nth-child(1){border-width:1.5px 0 0 1.5px}
.kcur-f i:nth-child(2){border-width:1.5px 1.5px 0 0}
.kcur-f i:nth-child(3){border-width:0 0 1.5px 1.5px}
.kcur-f i:nth-child(4){border-width:0 1.5px 1.5px 0}
html.kc,html.kc *{cursor:none!important}
@media print{.kcur{display:none}.rv,.rvs .sw{opacity:1!important;transform:none!important;filter:none!important}}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .ticker-track,.caret,.tcaret,.kcur .kcur-b{animation:none}
  .js .la,.js .h1 .li,.js .hdr-in,.js .stage canvas,.js .hdr .logo .lr,.js .hdr .logo .lp,.mnav:not([hidden]),.mnav:not([hidden]) .mnav-links a{animation:none}
  .rv,.rvs .sw{opacity:1!important;transform:none!important;filter:none!important}
  *{transition-duration:.01ms!important}
}

/* ---- страницы сайта ---- */
/* ==================================================================
   IKHDEV · внутренние страницы (поверх base.css лендинга v3)
   ================================================================== */
:root{--err:#FF6B5E;--warn:#E7B24A;--okc:var(--text)}
html[data-theme=light]{--err:#D23F31;--warn:#A86E00}
@view-transition{navigation:auto}
::view-transition-old(root){animation:vtNavOut .28s ease both}
::view-transition-new(root){animation:vtNavIn .42s var(--out) both}
@keyframes vtNavOut{to{opacity:0}}
@keyframes vtNavIn{from{opacity:0}}
html.i18n-wait [data-dict]{opacity:0}
[data-dict]{transition:opacity .3s ease}
html{scroll-padding-top:104px}
body.inner main{min-height:60vh}
.mono{font-family:var(--mono)}
.dim{color:var(--text-3)}
.nowrap{white-space:nowrap}
[hidden]{display:none!important}

/* ---------- шапка: пять разделов, колокольчик, активный пункт ---------- */
.hdr.pill .hdr-in{max-width:1180px}
.nav a{position:relative}
.nav a[aria-current=page]{color:var(--text)}
.nav a[aria-current=page]::after{content:"";position:absolute;left:50%;bottom:6px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:currentColor}
.mnav-links a[aria-current=page]{color:var(--text)}
.mnav-links a[aria-current=page] .arr{color:var(--text)}
.mnav-links a[aria-current=page] > span:first-child::before{content:"› ";color:var(--text-3)}
.bell{position:relative}
.bell svg{width:17px;height:17px;transform-origin:50% 12%}
.bell:hover svg{animation:bellRing .9s var(--out)}
@keyframes bellRing{0%,100%{transform:rotate(0)}20%{transform:rotate(14deg)}40%{transform:rotate(-11deg)}60%{transform:rotate(7deg)}80%{transform:rotate(-3deg)}}
.bell .dot{position:absolute;top:9px;right:10px;width:7px;height:7px;border-radius:50%;background:var(--err);box-shadow:0 0 0 2px var(--bg);transform:scale(0);transition:transform .45s var(--out)}
.bell.has-new .dot{transform:scale(1)}
.bell.has-new .dot::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:1px solid var(--err);animation:ping 1.8s var(--out) infinite}
@keyframes ping{from{transform:scale(.4);opacity:1}to{transform:scale(1.6);opacity:0}}
@media (max-width:1240px){.hdr .hide-lg{display:none}}
@media (max-width:1080px){.nav{display:none}.burger{display:inline-grid}}
@media (min-width:961px) and (max-width:1080px){.mnav:not([hidden]){display:block!important}}
@media (max-width:420px){.hdr .bell{width:36px;height:36px}.hdr-act{gap:5px}}
@media (max-width:370px){.hdr .lang{display:none}}

/* ---------- шапка страницы: kicker, крупный заголовок, ascii-планета справа ---------- */
.ph{position:relative;overflow:hidden;isolation:isolate;border-bottom:1px solid var(--line)}
.ph-art{position:absolute;inset:0;width:100%;height:100%;z-index:0;touch-action:pan-y}
.js .ph-art{animation:stageIn 2.2s ease .15s both}
.ph-in{position:relative;z-index:1;padding-top:calc(var(--hdr) + clamp(58px,9svh,112px));padding-bottom:clamp(56px,8svh,96px);pointer-events:none}
.ph-in > *{pointer-events:auto}
.ph-k{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font:400 12.5px/1.4 var(--mono);color:var(--text-3)}
.ph-k a{color:var(--text-2);transition:color .2s}
.ph-k a:hover{color:var(--text)}
.ph-k .sl{color:var(--dim)}
.ph-h{font-weight:560;font-size:clamp(44px,5.7vw,90px);line-height:.95;letter-spacing:-.056em;margin:20px 0 24px;max-width:9.6em;text-wrap:balance;overflow-wrap:break-word}
.ph-h.lw{max-width:max(9.6em,calc(var(--lw) * .64em))}
.ph-h .caret{height:.62em}
.ph-sub{font-size:clamp(16.5px,1.25vw,18.5px);line-height:1.6;color:var(--text-2);max-width:33em}
.ph-sub .mono,.ph-sub code{font:400 .86em var(--mono);color:var(--text);padding:2px 8px;border:1px solid var(--line-2);border-radius:999px;background:color-mix(in srgb,var(--bg-2) 80%,transparent);white-space:nowrap}
.ph-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:30px}
.ph-chip{display:inline-flex;align-items:center;gap:9px;height:36px;padding:0 14px;border:1px solid var(--line-2);border-radius:999px;font:400 12px/1 var(--mono);color:var(--text-2);background:color-mix(in srgb,var(--bg) 70%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);white-space:nowrap}
.ph-chip b{font-weight:500;color:var(--text)}
.ph-chip .pd{width:7px;height:7px;border-radius:50%;background:var(--text)}
.ph-chip.btnish{cursor:pointer;transition:border-color .25s,color .25s}
.ph-chip.btnish:hover{border-color:var(--line-3);color:var(--text)}
.js .ph .la{animation:rise 1.05s var(--out) both;animation-delay:var(--d,0ms)}
@media (max-width:700px){
  .ph{display:flex;flex-direction:column}
  .ph-art{position:relative;inset:auto;order:2;height:250px;margin-top:-12px}
  .ph-in{padding-bottom:6px}
  .ph-h{max-width:none;font-size:clamp(32px,9.4vw,44px)}
  :root:not([lang=en]) .ph-h.lw{font-size:min(clamp(32px,9.4vw,44px),calc((100vw - 2 * var(--pad)) / (var(--lw) * .62)))}
}

/* ---------- общие блоки ---------- */
.sec-s{padding:96px 0}
.sec-s + .sec-s,.sec + .sec-s,.sec-s + .sec{border-top:1px solid var(--line)}
.sec-k{display:block;font:400 12.5px/1.4 var(--mono);color:var(--text-3);margin-bottom:18px}
.h3x{font-weight:560;font-size:clamp(24px,2.3vw,32px);line-height:1.1;letter-spacing:-.035em}
.panel{position:relative;border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg-2);isolation:isolate}
.feat4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:56px}
.feat4.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.fc{position:relative;display:flex;flex-direction:column;gap:12px;min-width:0;padding:28px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg-2);isolation:isolate}
.fc .fk{font:400 12px/1.4 var(--mono);color:var(--text-3);letter-spacing:.02em}
.fc .fa{font:400 12px/1.25 var(--mono);color:var(--dim);white-space:pre;margin:4px 0 6px}
.fc .fa .h{color:var(--text)}
.fc h3{font-size:18.5px;line-height:1.28;font-weight:560;letter-spacing:-.02em}
.fc p{color:var(--text-2);font-size:14.5px;line-height:1.65}
.fc p a,.prose a,.txt-a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line-3);text-underline-offset:3px;transition:text-decoration-color .2s}
.fc p a:hover,.prose a:hover,.txt-a:hover{text-decoration-color:var(--text)}
.fc .mono,.prose .mono{font:400 .9em var(--mono);color:var(--text)}
@media (max-width:1100px){.feat4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.feat4,.feat4.c3{grid-template-columns:minmax(0,1fr)}.fc{padding:24px}}
.sel{position:relative;display:inline-flex;align-items:center;height:44px;border:1px solid var(--line-2);border-radius:999px;background:var(--bg-2);transition:border-color .25s}
.sel:hover,.sel:focus-within{border-color:var(--line-3)}
.sel select{appearance:none;-webkit-appearance:none;height:100%;padding:0 40px 0 17px;border:0;background:transparent;font:400 12.5px var(--mono);color:var(--text);cursor:pointer;outline:0;border-radius:999px}
.sel select option{background:var(--bg-2);color:var(--text)}
.sel::after{content:"";position:absolute;right:17px;top:50%;width:7px;height:7px;margin-top:-6px;border:solid var(--text-2);border-width:0 1.5px 1.5px 0;transform:rotate(45deg);pointer-events:none}
.sel .sl{padding-left:16px;font:400 12px var(--mono);color:var(--text-3);white-space:nowrap}
.sel .sl + select{padding-left:8px}
.ld{display:inline-block;width:1ch;text-align:left}
.ld::after{content:"⠋";animation:spin8 .8s steps(1) infinite}
@keyframes spin8{0%{content:"⠋"}12%{content:"⠙"}25%{content:"⠹"}37%{content:"⠸"}50%{content:"⠼"}62%{content:"⠴"}75%{content:"⠦"}87%{content:"⠧"}}
.skel{border-radius:8px;background:linear-gradient(90deg,var(--hl) 0,var(--hl-2) 40%,var(--hl) 80%) 0 0/300% 100%;animation:skel 1.4s ease infinite}
@keyframes skel{to{background-position:-150% 0}}
.cta-band{position:relative;overflow:hidden;isolation:isolate;border-top:1px solid var(--line)}
.cta-band .ph-art{opacity:.9}
.cta-in{position:relative;z-index:1;display:grid;justify-items:center;gap:18px;text-align:center;padding:clamp(88px,9vw,128px) 0 clamp(190px,17vw,250px);pointer-events:none}
.cta-in > *{pointer-events:auto}
.cta-in .h2{max-width:14em}
.cta-in .cta{margin-top:12px}

/* ---------- уведомления ---------- */
.nf-dd{position:fixed;z-index:120;display:flex;flex-direction:column;border:1px solid var(--line-2);border-radius:18px;background:var(--glass);-webkit-backdrop-filter:blur(22px) saturate(1.4);backdrop-filter:blur(22px) saturate(1.4);box-shadow:var(--shadow);overflow:hidden;opacity:0;transform:translateY(-8px) scale(.98);transform-origin:90% 0;transition:opacity .22s ease,transform .35s var(--out)}
.nf-dd.on{opacity:1;transform:none}
.nf-h{display:flex;align-items:center;gap:10px;padding:16px 18px 12px;border-bottom:1px solid var(--line)}
.nf-h b{font:560 15px var(--sans);letter-spacing:-.01em}
.nf-k{font:400 11.5px var(--mono);color:var(--text-3)}
.nf-list{flex:1;min-height:0;overflow-y:auto;padding:6px;scrollbar-width:thin}
.nf-item{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;width:100%;padding:12px;border-radius:12px;text-align:left;transition:background-color .2s}
.nf-item:hover,.nf-item:focus-visible{background:var(--hl-2)}
.nf-on .nf-item,.nf-dd.on .nf-item{animation:rise .5s var(--out) both;animation-delay:calc(var(--i,0) * 40ms)}
.nf-item .nf-cat{grid-row:1/3;align-self:start;margin-top:1px}
.nf-t{font:500 14px/1.35 var(--sans);color:var(--text)}
.nf-d{font:400 11.5px var(--mono);color:var(--text-3)}
.nf-item.new .nf-t::after{content:"";display:inline-block;width:6px;height:6px;margin-left:8px;border-radius:50%;background:var(--err);vertical-align:2px}
.nf-cat{display:inline-flex;align-items:center;height:22px;padding:0 8px;border:1px solid var(--line-2);border-radius:999px;font:400 10.5px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);white-space:nowrap}
.nf-cat.promo{border-style:dashed;border-color:var(--text-2);color:var(--text)}
.nf-empty{padding:26px 12px;text-align:center;font:400 12.5px var(--mono);color:var(--text-3)}
.nf-foot{padding:12px 18px 14px;border-top:1px solid var(--line);font:400 12px var(--mono);color:var(--text-3)}
.nf-foot a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line-3);text-underline-offset:3px}
.nf-card{position:fixed;inset:0;z-index:130;display:grid;place-items:center;padding:20px}
.nf-back{position:absolute;inset:0;background:color-mix(in srgb,var(--bg) 72%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;transition:opacity .25s ease}
.nf-panel{position:relative;width:min(560px,100%);max-height:min(80vh,720px);overflow-y:auto;padding:24px 26px 28px;border:1px solid var(--line-2);border-radius:22px;background:var(--bg-2);box-shadow:var(--shadow);opacity:0;transform:translateY(14px) scale(.98);transition:opacity .25s ease,transform .45s var(--out)}
.nf-card.on .nf-back{opacity:1}
.nf-card.on .nf-panel{opacity:1;transform:none}
.nf-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.nf-x{display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line-2);border-radius:50%;color:var(--text-2);transition:color .2s,border-color .2s}
.nf-x:hover{color:var(--text);border-color:var(--line-3)}
.nf-x svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.nf-ct{font-weight:560;font-size:22px;line-height:1.2;letter-spacing:-.025em}
.nf-cd{margin:8px 0 18px;font:400 12px var(--mono);color:var(--text-3)}
.nf-cb{font-size:15px;line-height:1.7;color:var(--text-2);white-space:pre-line}

/* ---------- плашка cookie ---------- */
.ck{position:fixed;left:12px;right:12px;bottom:12px;z-index:110;display:flex;justify-content:center;pointer-events:none;opacity:0;transform:translateY(24px);transition:opacity .35s ease,transform .6s var(--out)}
.ck.on{opacity:1;transform:none}
.ck-in{pointer-events:auto;display:flex;align-items:center;gap:16px;width:min(980px,100%);padding:12px 12px 12px 20px;border:1px solid var(--line-2);border-radius:22px;background:var(--glass);-webkit-backdrop-filter:blur(20px) saturate(1.4);backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--shadow)}
.ck-k{flex:none;font:400 12px var(--mono);color:var(--text-3)}
.ck-t{flex:1;min-width:0;font-size:13px;line-height:1.5;color:var(--text-2)}
.ck-t a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line-3);text-underline-offset:3px}
.ck-ok{flex:none}
@media (max-width:640px){.ck-in{flex-wrap:wrap;padding:14px 14px 14px 16px;gap:10px 12px}.ck-k{display:none}.ck-ok{width:100%}}

/* ---------- тост ---------- */
.toast{position:fixed;left:50%;bottom:28px;z-index:140;display:flex;align-items:center;gap:10px;height:44px;padding:0 18px 0 14px;border-radius:999px;background:var(--inv-bg);color:var(--inv-text);font:400 13px var(--mono);box-shadow:0 18px 40px -16px rgba(0,0,0,.6);opacity:0;transform:translate(-50%,16px);pointer-events:none;transition:opacity .25s ease,transform .45s var(--out)}
.toast.on{opacity:1;transform:translate(-50%,0)}
.toast i{width:8px;height:8px;border-radius:50%;background:currentColor}

/* ---------- футер ---------- */
.ftr-grid.f5{grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr))}
@media (max-width:359px){.term-top{gap:6px;padding-right:7px}.term .tab{padding:0 6px;font-size:11.5px}.term .copy-btn{padding:0 9px;font-size:11.5px}}
@media (max-width:400px){.ftr-grid{display:flex;flex-wrap:wrap;gap:32px 24px}.ftr-grid > *{flex:1 1 120px}.ftr-grid > .ftr-brand{flex-basis:100%}}
.ftr ul a[aria-current=page]{color:var(--text)}
.ftr-soc{display:flex;gap:8px;margin-top:22px}
.ftr-soc a{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 13px;border:1px solid var(--line-2);border-radius:999px;font:400 12px var(--mono);color:var(--text-2);transition:color .2s,border-color .2s}
.ftr-soc a:hover{color:var(--text);border-color:var(--line-3)}

/* светлая тема: статусные цвета текста с контрастом не ниже 4.5:1 (WCAG AA) */
html[data-theme=light]{--err:#C0362A;--warn:#8F5D00}
/* визуально скрытый текст: заголовки-ориентиры для экранных дикторов */
.vh{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
/* --text-3 на приподнятых поверхностях (--hl, --hl-2): тот же оттенок, контраст не ниже 4.5:1 */
:root{--text-3s:#8A8A8A}
html[data-theme=light]{--text-3s:#5E5E5E}
.tabs .tab{color:var(--text-3s)}
.tabs .tab:hover,.tabs .tab[aria-selected=true]{color:var(--text)}

/* ---- плавная навигация между страницами (cross-document View Transitions) ----
   шапка и направляющие — отдельные слои без анимации (стоят на месте), меняется только содержимое;
   при смене темы/языка слои не выделяются, чтобы работала круговая/обычная анимация root */
.hdr{view-transition-name:ikh-hdr}
.guides{view-transition-name:ikh-guides}
html.vt-theme .hdr,html.vt-lang .hdr,html.vt-theme .guides,html.vt-lang .guides{view-transition-name:none}
::view-transition-group(ikh-hdr),::view-transition-group(ikh-guides){animation:none}
::view-transition-old(ikh-hdr),::view-transition-old(ikh-guides){animation:none;opacity:0}
::view-transition-new(ikh-hdr),::view-transition-new(ikh-guides){animation:none;opacity:1}
::view-transition-old(root){animation:vtNavOut .2s ease both}
::view-transition-new(root){animation:vtNavIn .38s var(--out) both}
html.nav-in .hdr-in,html.nav-in .logo,html.nav-in .logo .lr,html.nav-in .logo .lp{animation:none!important}
@media (prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}

/* лёгкий режим для слабых устройств: без blur-стекла (дорого для GPU), сплошные подложки */
html.lite .nf-dd,html.lite .ck-in,html.lite .sign-card,html.lite .ga-card,html.lite .dx-sel .sel,html.lite .lg-sel .sel,html.lite .ph-chip{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:var(--bg-2)!important}
html.lite .nf-back{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:color-mix(in srgb,var(--bg) 92%,transparent)}
html.lite ::view-transition-group(*),html.lite ::view-transition-old(*),html.lite ::view-transition-new(*){animation:none!important}

/* мягкие переходы между страницами: тонкая полоса загрузки (если страница грузится дольше 140 мс), без рамки фокуса у <main> */
html.nav-wait body::before{content:"";position:fixed;z-index:300;top:0;left:0;right:0;height:2px;background:var(--text);transform-origin:0 50%;animation:ikhNavBar 1.1s cubic-bezier(.2,.7,.2,1) infinite;pointer-events:none}
@keyframes ikhNavBar{0%{transform:scaleX(0);opacity:.9}70%{transform:scaleX(.82);opacity:.9}100%{transform:scaleX(1);opacity:0}}
main#main:focus{outline:none}
html{scrollbar-gutter:stable}

/* Повторное открытие и мягкая навигация: контент сразу на месте. */
html.rv0 .hdr-in,html.rv0 .logo,html.rv0 .logo .lr,html.rv0 .logo .lp,html.rv0 .h1 .li,html.rv0 .la,html.rv0 .ph .la{animation:none!important}
html.rv0 .glow,html.rv0 .stage canvas,html.rv0 .ph-art,html.rv0 .mc.enter{animation:stageIn .3s ease both!important;animation-delay:0s!important}

html.lite .spot::before,html.lite .spot::after{display:none!important}

/* ==================== каталог моделей ==================== */
.mx{padding:56px 0 112px}
.mx-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px 24px}
.mx-tr{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:10px;flex:1 1 420px}
.mx-tr .search{margin-left:0;flex:1 1 260px;max-width:340px}
.mx-note{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 16px;margin-top:22px;font:400 12.5px/1.5 var(--mono);color:var(--text-3)}
.mx-note b{font-weight:400;color:var(--text-2)}
.mx-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:20px}
.mc{position:relative;display:flex;flex-direction:column;gap:16px;min-width:0;padding:22px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg-2);isolation:isolate;transition:border-color .3s}
.mc:hover{border-color:var(--line-3)}
.mc.enter{animation:rise .7s var(--out) both;animation-delay:calc(min(var(--i,0),14) * 32ms)}
.mc-top{display:flex;align-items:flex-start;gap:14px}
.mc .sym{flex:none;display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line-3);border-radius:12px;font:500 11.5px/1 var(--mono);color:var(--text);transition:background-color .3s,color .3s,border-color .3s}
.mc:hover .sym{background:var(--inv-bg);color:var(--inv-text);border-color:var(--inv-bg)}
.mc-id{flex:1;min-width:0}
.mc-n{font:500 15px/1.3 var(--mono);letter-spacing:-.01em;word-break:break-word}
.mc-n a{color:var(--text)}
.mc-n a::after{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit}
.mc-v{display:block;margin-top:5px;font:400 11.5px/1.3 var(--mono);color:var(--text-3)}
.mc-x{position:relative;z-index:2;display:flex;align-items:center;gap:6px;flex:none}
.mc-off{display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:999px;background:var(--inv-bg);color:var(--inv-text);font:500 11px/1 var(--mono);cursor:help}
.mc-cp{display:inline-grid;place-items:center;width:34px;height:34px;border:1px solid var(--line-2);border-radius:999px;color:var(--text-3);transition:color .2s,border-color .2s,background-color .2s}
.mc-cp:hover{color:var(--text);border-color:var(--line-3);background:var(--hl)}
.mc-cp svg{width:15px;height:15px}
.mc-cp.done{color:var(--inv-text);background:var(--inv-bg);border-color:var(--inv-bg)}
.mc-d{font-size:14px;line-height:1.6;color:var(--text-2);display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:4.8em}
.mc-p{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));margin:0;border:1px solid var(--line-2);border-radius:14px;overflow:hidden}
.mc-p > div{min-width:0;padding:10px 12px;border-left:1px solid var(--line-2)}
.mc-p > div:first-child{border-left:0}
.mc-p.n4{--n:2}
.mc-p.n4 > div:nth-child(3){border-left:0}
.mc-p.n4 > div:nth-child(n+3){border-top:1px solid var(--line-2)}
.mc-p dt{font:400 10.5px/1.3 var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mc-p dd{margin:7px 0 0;font:500 14px/1.2 var(--mono);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mc-p dd.na{color:var(--text-3);font-weight:400}
.mc-s{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;font:400 12px/1.4 var(--mono);color:var(--text-3)}
.mc-s b{font-weight:500;color:var(--text)}
.mc-s .bn{margin-left:4px;padding:1px 6px;border:1px solid var(--line-2);border-radius:999px;font-size:10.5px;color:var(--text-3)}
.st-dot{display:inline-flex;align-items:center;gap:7px;color:var(--text)}
.st-dot::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.st-dot.warn{color:var(--warn)}
.st-dot.err{color:var(--err)}
.st-dot.ok{color:var(--text)}
.mc-tags{display:flex;flex-wrap:wrap;gap:6px}
.mc-tags .tag.ep{border-style:dashed;color:var(--text-3)}
.mc-ft{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:14px;border-top:1px dashed var(--line-2)}
.mc-more{position:relative;z-index:2;display:inline-flex;align-items:center;gap:8px;min-height:32px;font:400 12.5px var(--mono);color:var(--text)}
.mc-more:hover .arr{transform:translateX(4px)}
.mc-ep{font:400 11.5px var(--mono);color:var(--text-3)}
.mc.sk .skel{height:14px}
.mx-empty{margin-top:20px;padding:64px 20px;border:1px dashed var(--line-3);border-radius:var(--r);text-align:center}
.mx-empty pre{font:400 12.5px/1.3 var(--mono);color:var(--text-3);margin-bottom:16px}
.mx-empty b{display:block;font:500 17px var(--sans)}
.mx-empty span{display:block;margin-top:6px;color:var(--text-2);font-size:14.5px}
.mx-empty .btn{margin-top:20px}
@media (max-width:1100px){.mx-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:860px){.mx-tr{justify-content:flex-start}.mx-tr .search{max-width:none}.mx-tools .kbd{display:none}}
@media (max-width:680px){.mx-grid{grid-template-columns:minmax(0,1fr)}.mc{padding:20px}.mx{padding-top:40px}}

/* ==================== цены ==================== */
.pr{padding:56px 0 0}
.pr .feat4{margin-top:0}
.pt-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 32px;margin-top:88px}
.pt-head .mono{font-size:12.5px;color:var(--text-3)}
.pt-wrap{margin-top:26px;overflow:hidden}
.pt-scroll{overflow-x:auto;scrollbar-width:thin}
.pt{width:100%;min-width:780px;border-collapse:collapse;font-family:var(--mono)}
.pt th{height:52px;padding:0 18px;text-align:right;font:400 11px/1.2 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);border-bottom:1px solid var(--line-2);white-space:nowrap}
.pt th:first-child,.pt td:first-child{text-align:left}
.pt td{padding:14px 18px;border-bottom:1px solid var(--line);font-size:13.5px;text-align:right;white-space:nowrap;color:var(--text);font-variant-numeric:tabular-nums}
.pt td.na{color:var(--text-3)}
.pt tbody tr{transition:background-color .2s}
.pt tbody tr:not(.cat):not(.msg):hover{background:var(--hl)}
.pt tbody tr:last-child td{border-bottom:0}
.pt tr.cat td{padding:30px 18px 12px;border-bottom:1px solid var(--line-2);text-align:left;white-space:normal;background:none}
.pt tbody tr.cat:first-child td{padding-top:20px}
.pt .cat-t{font:500 11.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text)}
.pt .cat-t::before{content:"// ";color:var(--text-3)}
.pt .cat-n{margin-left:10px;font-size:11.5px;color:var(--text-3)}
.pt .pm{display:flex;align-items:center;gap:10px;min-width:0}
.pt .pm a{color:var(--text);transition:color .2s}
.pt .pm a:hover{text-decoration:underline;text-underline-offset:3px}
.pt .pm .q{padding:2px 7px;border:1px solid var(--line-2);border-radius:999px;font-size:10.5px;color:var(--text-3)}
.pt tr.msg td{padding:46px 18px;text-align:center;color:var(--text-3)}
.pr-notes{display:grid;gap:12px;margin-top:20px}
.pr-notes p{position:relative;padding:16px 20px 16px 46px;border:1px solid var(--line-2);border-radius:16px;font-size:14px;line-height:1.65;color:var(--text-2)}
.pr-notes p::before{content:"i";position:absolute;left:17px;top:17px;display:grid;place-items:center;width:18px;height:18px;border:1px solid var(--line-3);border-radius:50%;font:500 10.5px/1 var(--mono);color:var(--text-2)}
.pr-notes b{font-weight:600;color:var(--text)}
.pr-notes a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line-3);text-underline-offset:3px}
.pr-faq{margin-top:120px;padding:120px 0;border-top:1px solid var(--line)}
@media (max-width:820px){
  .pt-wrap{border:0;border-radius:0;background:none;overflow:visible}
  .pt{min-width:0}
  .pt thead{display:none}
  .pt,.pt tbody,.pt tr,.pt td{display:block}
  .pt tbody{display:grid;gap:10px}
  .pt tr:not(.cat):not(.msg){display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;padding:16px 18px;border:1px solid var(--line-2);border-radius:16px;background:var(--bg-2)}
  .pt td{padding:0;border:0!important;text-align:left;white-space:normal}
  .pt td:first-child{grid-column:1/-1}
  .pt td[data-l]::before{content:attr(data-l);display:block;margin-bottom:4px;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}
  .pt tr.cat td{padding:22px 2px 2px!important}
  .pt tbody tr:not(.cat):hover{background:var(--bg-2)}
}

/* ==================== статус ==================== */
.stx{padding:48px 0 120px}
.st-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 24px;padding:14px 14px 14px 22px}
.st-over{display:flex;align-items:center;gap:14px;font:500 13px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase}
.st-over i{position:relative;width:10px;height:10px;border-radius:50%;background:var(--text)}
.st-over i::after{content:"";position:absolute;inset:-5px;border-radius:50%;border:1px solid currentColor;opacity:.5;animation:ping 2.2s var(--out) infinite}
.st-over.warn{color:var(--warn)}
.st-over.warn i{background:var(--warn)}
.st-over.err{color:var(--err)}
.st-over.err i{background:var(--err)}
.st-over .ov-s{font-weight:400;letter-spacing:0;text-transform:none;color:var(--text-3)}
.st-ctrl{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px}
.st-ref{font:400 12px var(--mono);color:var(--text-3);white-space:nowrap}
.st-ref b{font-weight:500;color:var(--text);display:inline-block;min-width:2ch;text-align:right}
.st-h2{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 20px;margin:72px 0 22px}
.st-h2 .mono{font-size:12.5px;color:var(--text-3)}
.tk-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.tk-tile{padding:22px 22px 20px;min-width:0}
.tk-tile .l{font:400 11px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.tk-tile .v{margin-top:16px;font-weight:560;font-size:clamp(28px,2.8vw,40px);line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums;white-space:nowrap}
.tk-tile .v small{margin-left:6px;font:400 13px var(--mono);letter-spacing:0;color:var(--text-3)}
.tk-tile .a{display:block;margin-top:14px;font:400 11px/1.2 var(--mono);color:var(--text-3);white-space:pre;overflow:hidden}
.tw{margin-top:16px;padding:22px 24px}
.tw-h{display:flex;justify-content:space-between;gap:12px;margin-bottom:16px;font:400 12px var(--mono);color:var(--text-3)}
.tw-h b{font-weight:500;color:var(--text)}
.tw-row{display:grid;grid-template-columns:minmax(120px,240px) minmax(0,1fr) 84px;align-items:center;gap:16px;min-height:34px;font:400 12.5px var(--mono)}
.tw-row .n{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tw-row .n a:hover{text-decoration:underline;text-underline-offset:3px}
.tw-row .b{height:10px;background:repeating-linear-gradient(90deg,var(--line-2) 0 4px,transparent 4px 6px)}
.tw-row .b i{display:block;height:100%;background:repeating-linear-gradient(90deg,var(--text) 0 4px,transparent 4px 6px);animation:barIn .9s steps(16,end) both;animation-delay:calc(var(--i,0) * 60ms)}
.tw-row .v{text-align:right;color:var(--text-2);font-variant-numeric:tabular-nums}
.tw-more{margin-top:12px}
.st-cats{display:grid;gap:44px}
.st-cat-h{display:flex;align-items:baseline;gap:12px;margin-bottom:16px;font:500 11.5px var(--mono);letter-spacing:.1em;text-transform:uppercase}
.st-cat-h::before{content:"//";color:var(--text-3)}
.st-cat-h span{color:var(--text-3);letter-spacing:0}
.st-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.sc{padding:20px 22px;min-width:0;transition:border-color .3s}
.sc:hover{border-color:var(--line-3)}
.sc-top{display:flex;align-items:flex-start;gap:12px}
.sc .sym{flex:none;display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line-3);border-radius:11px;font:500 11px/1 var(--mono)}
.sc-id{flex:1;min-width:0}
.sc-n{display:block;font:500 14.5px/1.3 var(--mono);color:var(--text);word-break:break-word}
.sc-n:hover{text-decoration:underline;text-underline-offset:3px}
.sc-v{display:block;margin-top:4px;font:400 11.5px var(--mono);color:var(--text-3)}
.badge{flex:none;display:inline-flex;align-items:center;gap:7px;height:26px;padding:0 10px;border:1px solid var(--line-2);border-radius:999px;font:500 11px/1 var(--mono);letter-spacing:.04em;white-space:nowrap}
.badge::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.badge.ok{color:var(--text)}
.badge.warn{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent)}
.badge.err{color:var(--err);border-color:color-mix(in srgb,var(--err) 45%,transparent)}
.badge.na{color:var(--text-3)}
.badge.na::before{background:none;border:1px solid currentColor}
.sc-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 14px;margin-top:14px;font:400 11.5px var(--mono);color:var(--text-3)}
.sc-meta b{font-weight:500;color:var(--text)}
.hb{display:flex;gap:3px;height:34px;margin-top:12px}
.hb i{flex:1;min-width:2px;border-radius:2px;background:var(--text);opacity:.9;transform-origin:50% 100%;transition:opacity .2s,transform .3s var(--out)}
.hb i:hover{opacity:1;transform:scaleY(1.12)}
.hb i.h-warn{background:repeating-linear-gradient(135deg,var(--warn) 0 1.5px,transparent 1.5px 4px);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--warn) 55%,transparent)}
.hb i.h-err{background:var(--err)}
.hb i.h-na{background:var(--line-2);opacity:1}
.hb-l{display:flex;justify-content:space-between;margin-top:7px;font:400 10.5px var(--mono);color:var(--text-3)}
.sc-mx{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:16px;border-top:1px dashed var(--line-2)}
.sc-mx > div{padding:12px 10px 0 0;min-width:0}
.sc-mx .l{font:400 10px/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sc-mx .v{margin-top:6px;font:500 13.5px/1.2 var(--mono);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sc-mx .v.na{color:var(--text-3);font-weight:400}
.tt{position:fixed;z-index:150;max-width:260px;padding:8px 11px;border:1px solid var(--line-3);border-radius:10px;background:var(--bg-3);color:var(--text);font:400 11.5px/1.45 var(--mono);box-shadow:var(--shadow);pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity .15s,transform .2s var(--out)}
.tt.on{opacity:1;transform:none}
.tt .dim{color:var(--text-3)}
.st-off{margin-top:18px;padding:12px 16px;border:1px dashed var(--line-3);border-radius:14px;font:400 12.5px var(--mono);color:var(--text-2)}
@media (max-width:1000px){.tk-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.st-grid{grid-template-columns:minmax(0,1fr)}}
@media (max-width:640px){
  .st-bar{padding:16px}
  .tw{padding:18px}
  .tw-row{grid-template-columns:minmax(0,1fr) 70px;gap:4px 12px;padding:6px 0}
  .tw-row .b{grid-column:1/-1;grid-row:2}
  .tk-tile{padding:18px}
  .sc{padding:18px}
}
@media (max-width:420px){.tk-tiles{gap:10px}.tk-tile .v{font-size:26px}}

/* ==================== о сервисе ==================== */
.ab{padding:96px 0}
.ab-why{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:64px;align-items:start}
.ab-why .prose{display:grid;gap:18px;font-size:clamp(16.5px,1.3vw,19px);line-height:1.62;color:var(--text-2)}
.ab-why .prose p:first-child{color:var(--text)}
.ct-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:48px}
.ct{position:relative;display:flex;flex-direction:column;gap:8px;min-width:0;padding:24px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg-2);isolation:isolate;transition:border-color .3s}
.ct:hover{border-color:var(--line-3)}
.ct .ct-k{font:400 11.5px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}
.ct .ct-m{margin-top:10px;font-weight:560;font-size:19px;letter-spacing:-.02em}
.ct .ct-v{font:400 14px var(--mono);color:var(--text);word-break:break-all}
.ct .ct-h{margin-top:auto;padding-top:14px;font-size:13.5px;color:var(--text-3)}
.ct .arr{position:absolute;right:22px;top:22px;color:var(--text-3)}
.ct:hover .arr{transform:translate(3px,-3px);color:var(--text)}
.ln-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin-top:16px;border-top:1px solid var(--line-2)}
.ln-grid a{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:72px;padding:14px 4px;border-bottom:1px solid var(--line-2);transition:color .2s}
.ln-grid a + a{padding-left:20px;border-left:1px solid var(--line-2)}
.ln-grid b{display:block;font-weight:500;font-size:16px}
.ln-grid span.s{display:block;margin-top:2px;font:400 12px var(--mono);color:var(--text-3)}
.ln-grid a:hover .arr{transform:translateX(4px)}
@media (max-width:1000px){.ab-why{grid-template-columns:minmax(0,1fr);gap:28px}.ct-grid{grid-template-columns:minmax(0,1fr)}.ln-grid{grid-template-columns:minmax(0,1fr)}.ln-grid a + a{padding-left:4px;border-left:0}}

/* патчи */
.pt .mc-off{margin-left:8px;height:20px;padding:0 7px;font-size:10.5px;vertical-align:middle}
.st-dot.na{color:var(--text-3)}
.st-cat{scroll-margin-top:96px}
.sign-wrap,#reg-wrap{display:flex;flex-direction:column}
.sign-err.ok{color:var(--text);border-color:var(--line-3);background:var(--bg-2)}
.ts-plate{width:100%;padding:10px 12px;border:1px dashed var(--line-3);border-radius:10px;font-size:12px;line-height:1.55;color:var(--text-3);text-align:left}
.ga-status.ga-err{color:var(--err)}
.c-model a.mid{text-decoration:none;transition:text-decoration-color .2s}
.c-model a.mid:hover{text-decoration:underline;text-decoration-color:var(--line-3);text-underline-offset:3px}

/* статус: плотнее сетка, логотипы провайдеров */
.st-grid{grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:12px}
.st-cats{gap:34px}
.st-cat-h{margin-bottom:12px}
.sc{padding:14px 16px 13px}
.sc-top{gap:10px;align-items:center}
.sc .sym{width:30px;height:30px;border-radius:9px;font-size:10px;overflow:hidden;background:var(--bg-2)}
.sc .sym img{display:block;width:18px;height:18px;object-fit:contain}
.sc .sym.lg-box{border-color:transparent}
.sc .sym.lg-box img{width:100%;height:100%}
html[data-theme=light] .sc .sym img.inv{filter:invert(1)}
.sc-n{font-size:13px;line-height:1.25}
.sc-v{margin-top:2px;font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sc .badge{height:22px;padding:0 8px;gap:6px;font-size:10px}
.sc .badge::before{width:6px;height:6px}
.sc-meta{margin-top:9px;gap:4px 12px;font-size:10.5px}
.hb{height:20px;gap:2px;margin-top:8px}
.hb-l{margin-top:4px;font-size:9.5px}
.sc-mx{margin-top:9px}
.sc-mx > div{padding:8px 8px 0 0}
.sc-mx .l{font-size:9px}
.sc-mx .v{margin-top:4px;font-size:12.5px}
@media (max-width:1000px){.st-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}}
@media (max-width:620px){.st-grid{grid-template-columns:minmax(0,1fr)}}
/* каталог моделей: логотипы провайдеров */
.mc .sym img{display:block;width:20px;height:20px;object-fit:contain}
.mc .sym.has-lg{overflow:hidden;background:var(--bg-2)}
.mc:hover .sym.has-lg{background:var(--bg-2);color:var(--text);border-color:var(--text-3)}
.mc .sym.lg-box,.mc:hover .sym.lg-box{border-color:transparent}
.mc .sym.lg-box img{width:100%;height:100%}
html[data-theme=light] .mc .sym img.inv{filter:invert(1)}

/* ==================== шапка поменьше: документация, правовые, модель ==================== */
.ph-sm .ph-in{padding-top:calc(var(--hdr) + clamp(44px,7svh,84px));padding-bottom:clamp(40px,6svh,64px)}
.ph-sm .ph-h{font-size:clamp(40px,4.6vw,72px);margin:16px 0 18px;max-width:11em}
.ph-note{max-width:44em;margin-top:22px;padding:12px 16px;border:1px dashed var(--line-3);border-radius:14px;font-size:14px;line-height:1.6;color:var(--text-2);background:color-mix(in srgb,var(--bg) 70%,transparent)}
.ph-note a{color:var(--text);text-decoration:underline;text-underline-offset:3px}

/* ==================== документация ==================== */
.dx{padding:56px 0 120px}
.dx-l{display:grid;grid-template-columns:240px minmax(0,1fr);gap:56px;align-items:start}
.dx-nav{position:sticky;top:96px;display:grid;gap:2px;max-height:calc(100vh - 120px);overflow-y:auto;scrollbar-width:none;padding-bottom:12px}
.dx-nav::-webkit-scrollbar{display:none}
.dx-nav .t{margin:0 0 12px 14px;font:400 11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3)}
.dx-nav button{position:relative;display:flex;align-items:center;gap:12px;min-height:38px;padding:0 14px;border-radius:999px;text-align:left;font:400 13px/1.25 var(--mono);color:var(--text-2);transition:color .2s,background-color .25s}
.dx-nav button .n{flex:none;width:2ch;font-size:11px;color:var(--text-3);transition:color .2s}
.dx-nav button:hover{color:var(--text);background:var(--hl)}
.dx-nav button.on{color:var(--inv-text);background:var(--inv-bg)}
.dx-nav button.on .n{color:inherit;opacity:.7}
@supports (color:color-mix(in srgb,red 50%,blue)){.dx-nav button.on .n{opacity:1;color:color-mix(in srgb,var(--inv-text) 70%,var(--inv-bg))}}
.dx-sel{display:none}
.dx-body{min-width:0;max-width:820px}
.js .docs-sec:not(.on){display:none}
.docs-sec.on{display:block;animation:rise .55s var(--out) both}
.docs-sec > h1,.docs-sec > h2{font-weight:560;font-size:clamp(32px,3.4vw,48px);line-height:1.05;letter-spacing:-.045em;margin:0 0 18px}
.docs-sec .sk-n{display:block;margin-bottom:14px;font:400 12.5px var(--mono);color:var(--text-3)}
.docs-sec h3{font-weight:560;font-size:22px;line-height:1.25;letter-spacing:-.025em;margin:48px 0 12px;scroll-margin-top:104px}
.docs-sec h4,.docs-sec h3.d-h4{display:flex;align-items:center;gap:10px;font:500 12px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text);margin:40px 0 12px}
.docs-sec h4::before,.docs-sec h3.d-h4::before{content:"";width:14px;height:1px;background:var(--text-3)}
.docs-sec p{margin:0 0 14px;font-size:15.5px;line-height:1.72;color:var(--text-2)}
.docs-sec p.d-lead{font-size:clamp(16.5px,1.3vw,18.5px);line-height:1.62;color:var(--text-2);margin-bottom:26px}
.docs-sec b,.docs-sec strong{font-weight:600;color:var(--text)}
.docs-sec a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line-3);text-underline-offset:3px;transition:text-decoration-color .2s}
.docs-sec a:hover{text-decoration-color:var(--text)}
.docs-sec ul,.docs-sec ol{margin:0 0 16px;display:grid;gap:8px}
.docs-sec ul > li,.docs-sec ol > li{position:relative;padding-left:24px;font-size:15px;line-height:1.65;color:var(--text-2)}
.docs-sec ul > li::before{content:"—";position:absolute;left:0;color:var(--text-3)}
.docs-sec ol{counter-reset:ol}
.docs-sec ol > li{counter-increment:ol;padding-left:36px}
.docs-sec ol > li::before{content:counter(ol,decimal-leading-zero);position:absolute;left:0;top:.18em;font:400 11.5px var(--mono);color:var(--text-3)}
.docs-sec :not(pre) > code{font:400 .86em var(--mono);color:var(--text);padding:2px 7px;border:1px solid var(--line-2);border-radius:7px;background:var(--bg-2);white-space:nowrap}
.d-code{margin:0 0 16px;border:1px solid var(--line-2);border-radius:16px;background:var(--bg-2);overflow:hidden}
.d-code > header{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:46px;padding:0 6px 0 16px;border-bottom:1px solid var(--line-2);font:400 11.5px var(--mono);letter-spacing:.04em;color:var(--text-3)}
.d-code > header::before{content:"";flex:none;width:7px;height:7px;margin-right:-4px;border:1px solid var(--line-3);border-radius:50%}
.d-code > header > span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.d-cp{flex:none;display:inline-flex;align-items:center;height:32px;padding:0 13px;border-radius:999px;background:var(--hl-2);font:400 11.5px var(--mono);color:var(--text-2);transition:color .2s,background-color .25s}
.d-cp:hover{color:var(--text)}
.d-cp.done{background:var(--inv-bg);color:var(--inv-text)}
.d-code pre{margin:0;padding:16px 18px;overflow-x:auto;font:400 12.5px/1.75 var(--mono);color:var(--text-2);tab-size:2;scrollbar-width:thin;white-space:pre}
.d-code pre .c-s{color:var(--text)}
.d-code pre .c-k{color:var(--text);font-weight:600}
.d-code pre .c-c{color:var(--text-3);font-style:italic}
.d-note{position:relative;margin:0 0 16px;padding:14px 18px 14px 46px;border:1px solid var(--line-2);border-radius:14px;font-size:14.5px;line-height:1.65;color:var(--text-2)}
.d-note::before{content:"!";position:absolute;left:16px;top:15px;display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--inv-bg);color:var(--inv-text);font:600 11px/1 var(--mono)}
.d-note p{margin:0;font-size:inherit}
.d-tbl{margin:0 0 18px;border:1px solid var(--line-2);border-radius:16px;overflow-x:auto;scrollbar-width:thin}
.d-tbl table{width:100%;border-collapse:collapse;font-size:14px}
.d-tbl th{padding:12px 16px;text-align:left;font:400 11px/1.3 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);border-bottom:1px solid var(--line-2);white-space:nowrap;background:var(--bg-2)}
.d-tbl td{padding:12px 16px;border-bottom:1px solid var(--line);line-height:1.55;color:var(--text-2);vertical-align:top}
.d-tbl tr:last-child td{border-bottom:0}
.d-tbl td:first-child{color:var(--text);font-family:var(--mono);font-size:13px}
.d-tbl td code{white-space:normal}
.dx-pn{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:56px;padding-top:28px;border-top:1px solid var(--line)}
.dx-pn button{display:flex;flex-direction:column;gap:6px;min-height:76px;padding:16px 18px;border:1px solid var(--line-2);border-radius:16px;text-align:left;transition:border-color .25s,background-color .25s}
.dx-pn button:hover{border-color:var(--line-3);background:var(--hl)}
.dx-pn button .k{font:400 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.dx-pn button b{font-weight:500;font-size:16px;letter-spacing:-.01em}
.dx-pn .nx{grid-column:2;text-align:right;align-items:flex-end}
@media (max-width:980px){
  .dx-l{grid-template-columns:minmax(0,1fr);gap:28px}
  .dx-nav{display:none}
  .dx-sel{display:flex;position:sticky;top:84px;z-index:5}
  .dx-sel .sel{width:100%;background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
  .dx-sel select{width:100%}
}
@media (max-width:560px){.dx-pn{grid-template-columns:1fr}.dx-pn .nx{grid-column:1}.d-code pre{font-size:12px;padding:14px}}

/* ==================== правовые документы ==================== */
.lg-packet{display:flex;flex-wrap:wrap;gap:8px;margin-top:26px}
.lg-packet a{display:inline-flex;align-items:center;height:34px;padding:0 13px;border:1px solid var(--line-2);border-radius:999px;font:400 12px var(--mono);color:var(--text-2);background:color-mix(in srgb,var(--bg) 70%,transparent);transition:color .2s,border-color .2s,background-color .2s}
.lg-packet a:hover{color:var(--text);border-color:var(--line-3)}
.lg-packet a[aria-current=page]{background:var(--inv-bg);border-color:var(--inv-bg);color:var(--inv-text)}
.lg{padding:56px 0 120px}
.lg-l{display:grid;grid-template-columns:270px minmax(0,1fr);gap:56px;align-items:start}
.lg-toc{position:sticky;top:96px;display:grid;gap:1px;max-height:calc(100vh - 120px);overflow-y:auto;scrollbar-width:none;padding-bottom:12px}
.lg-toc::-webkit-scrollbar{display:none}
.lg-toc .t{margin:0 0 12px 12px;font:400 11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3)}
.lg-toc a{display:block;padding:8px 12px;border-radius:10px;font-size:13.5px;line-height:1.4;color:var(--text-2);transition:color .2s,background-color .25s}
.lg-toc a:hover{color:var(--text);background:var(--hl)}
.lg-toc a.on{color:var(--inv-text);background:var(--inv-bg)}
.lg-sel{display:none}
.legal{min-width:0;max-width:800px}
.legal > .lg-pre p{font-size:15.5px;line-height:1.75;color:var(--text-2);margin:0 0 14px}
.legal > .lg-pre{margin-bottom:34px;padding-bottom:22px;border-bottom:1px solid var(--line)}
.legal .js .docs-sec:not(.on){display:none}
.legal .docs-sec.on{display:block;animation:rise .5s var(--out) both}
.legal h2{display:flex;align-items:baseline;gap:14px;font-weight:560;font-size:clamp(26px,2.6vw,36px);line-height:1.12;letter-spacing:-.04em;margin:0 0 22px;scroll-margin-top:104px}
.legal h2:focus{outline:0}
.legal h2 .num{flex:none;font:400 13px var(--mono);letter-spacing:0;color:var(--text-3)}
.legal h3{font-weight:560;font-size:18.5px;line-height:1.3;letter-spacing:-.02em;margin:34px 0 10px;scroll-margin-top:104px}
.legal p{margin:0 0 14px;font-size:15.5px;line-height:1.75;color:var(--text-2)}
.legal strong,.legal b{font-weight:600;color:var(--text)}
.legal a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line-3);text-underline-offset:3px}
.legal a:hover{text-decoration-color:var(--text)}
.legal ul,.legal ol{margin:0 0 16px;display:grid;gap:8px}
.legal ul > li{position:relative;padding-left:24px;font-size:15px;line-height:1.7;color:var(--text-2)}
.legal ul > li::before{content:"—";position:absolute;left:0;color:var(--text-3)}
.legal ol{counter-reset:ol}
.legal ol > li{position:relative;counter-increment:ol;padding-left:36px;font-size:15px;line-height:1.7;color:var(--text-2)}
.legal ol > li::before{content:counter(ol,decimal-leading-zero);position:absolute;left:0;top:.2em;font:400 11.5px var(--mono);color:var(--text-3)}
.legal code{font:400 .86em var(--mono);color:var(--text);padding:1px 6px;border:1px solid var(--line-2);border-radius:6px;background:var(--bg-2);overflow-wrap:anywhere}
.legal .lg-tbl{margin:0 0 18px;border:1px solid var(--line-2);border-radius:16px;overflow-x:auto;scrollbar-width:thin}
.legal table{width:100%;border-collapse:collapse;font-size:14px}
.legal th{padding:12px 14px;text-align:left;font:400 11px/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);border-bottom:1px solid var(--line-2);background:var(--bg-2);vertical-align:bottom}
.legal td{padding:12px 14px;border-bottom:1px solid var(--line);line-height:1.55;color:var(--text-2);vertical-align:top}
.legal tr:last-child td{border-bottom:0}
.legal .callout{margin:0 0 18px;padding:14px 18px;border:1px dashed var(--line-3);border-radius:14px;font-size:14.5px;line-height:1.65;color:var(--text-2)}
.lg-pn{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:48px;padding-top:26px;border-top:1px solid var(--line)}
.lg-pn a{display:flex;flex-direction:column;gap:6px;min-height:76px;padding:16px 18px;border:1px solid var(--line-2);border-radius:16px;text-decoration:none!important;transition:border-color .25s,background-color .25s}
.lg-pn a:hover{border-color:var(--line-3);background:var(--hl)}
.lg-pn a .k{font:400 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.lg-pn a b{font-weight:500;font-size:15px;line-height:1.35}
.lg-pn .nx{grid-column:2;text-align:right;align-items:flex-end}
@media (max-width:980px){
  .lg-l{grid-template-columns:minmax(0,1fr);gap:24px}
  .lg-toc{display:none}
  .lg-sel{display:flex;position:sticky;top:84px;z-index:5}
  .lg-sel .sel{width:100%;background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
  .lg-sel select{width:100%;text-overflow:ellipsis}
}
@media (max-width:560px){.lg-pn{grid-template-columns:1fr}.lg-pn .nx{grid-column:1}}

/* ==================== страница модели ==================== */
.mph .ph-h{font-size:clamp(40px,5vw,80px);max-width:11em;margin:18px 0 20px}
.mp-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font:400 12.5px var(--mono);color:var(--text-3)}
.mp-crumbs a{color:var(--text-2);transition:color .2s}
.mp-crumbs a:hover{color:var(--text)}
.mp-crumbs a::before{content:"← ";color:var(--dim)}
.mp-hero-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:16px;font:400 12.5px var(--mono);color:var(--text-2)}
.mp-hero-meta .sep{color:var(--dim)}
.tier-paid,.tier-free,.tier-bonus{display:inline-flex;align-items:center;height:24px;padding:0 9px;border:1px solid var(--line-2);border-radius:999px;font-size:11.5px}
.tier-paid{border-color:var(--text-2);color:var(--text)}
.tier-free{border-style:dashed}
.tier-bonus{border-style:dotted;border-color:var(--line-3)}
.mp-status{display:inline-flex;align-items:center;gap:8px;height:26px;padding:0 10px;border:1px solid var(--line-2);border-radius:999px;font:500 11.5px var(--mono);color:var(--text);background:color-mix(in srgb,var(--bg) 70%,transparent)}
.mp-status i{position:relative;width:7px;height:7px;border-radius:50%;background:currentColor}
.mp-status.st-ok i::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:1px solid currentColor;animation:ping 2.2s var(--out) infinite}
.mp-status.st-warn{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent)}
.mp-status.st-err{color:var(--err);border-color:color-mix(in srgb,var(--err) 45%,transparent)}
.mp-status.st-stale,.mp-status.st-unk{color:var(--text-3)}
.mp-idrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px}
.mp-idrow code{display:inline-flex;align-items:center;height:36px;padding:0 14px;border:1px solid var(--line-2);border-radius:999px;font:400 13px var(--mono);color:var(--text);background:color-mix(in srgb,var(--bg-2) 80%,transparent)}
.mp-idcopy{display:inline-grid;place-items:center;width:36px;height:36px;border:1px solid var(--line-2);border-radius:50%;color:var(--text-2);transition:color .2s,border-color .2s,background-color .2s}
.mp-idcopy:hover{color:var(--text);border-color:var(--line-3)}
.mp-idcopy svg{width:15px;height:15px}
.mp-idcopy.done{background:var(--inv-bg);color:var(--inv-text);border-color:var(--inv-bg)}
.mp-srclink{display:inline-flex;align-items:center;height:36px;padding:0 6px 0 4px;font:400 12.5px var(--mono);color:var(--text-2);text-decoration:underline;text-decoration-color:var(--line-3);text-underline-offset:3px}
.mp-srclink:hover{color:var(--text)}
.mp-chip{display:inline-flex;align-items:center;height:28px;padding:0 11px;border:1px solid var(--line-2);border-radius:999px;font:400 11.5px var(--mono);color:var(--text-2);background:color-mix(in srgb,var(--bg) 70%,transparent)}
.mp-chip.off{color:var(--dim);border-style:dashed;text-decoration:line-through;text-decoration-color:var(--line-3)}
.mp-band{padding:28px 0 0}
.mp-ov{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:0;border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg-2);overflow:hidden}
.mp-ov .ov{display:flex;flex-direction:column;gap:8px;min-width:0;padding:18px 20px;border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2);margin:0 -1px -1px 0}
.mp-ov .ov .l{font:400 10.5px/1.3 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-3)}
.mp-ov .ov b{font-weight:560;font-size:clamp(20px,1.8vw,26px);line-height:1.1;letter-spacing:-.03em;color:var(--text);overflow-wrap:anywhere}
.mp-ov .ov b.unk,.mp-ov .ov.unk b{color:var(--dim)}
.mp-ov .ov .u{font:400 11.5px/1.35 var(--mono);color:var(--text-3)}
.mp-bandnote{margin-top:12px;font:400 12px/1.6 var(--mono);color:var(--text-3)}
.mp-bandnote::before{content:"// ";color:var(--dim)}
.mp-bandnote + .mp-bandnote{margin-top:4px}
.mp-panel{margin-top:28px;padding:22px 24px;border:1px solid var(--line-2);border-radius:var(--r)}
.mp-panel-h{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 20px;margin-bottom:12px}
.mp-panel-h h2{font-weight:560;font-size:19px;letter-spacing:-.02em}
.mp-panel-h p{font-size:13.5px;color:var(--text-3);max-width:40em}
.mp-vrow{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 20px;padding:14px 0;border-top:1px solid var(--line)}
.mp-vrow .vl a{font-weight:500;color:var(--text)}
.mp-vrow .vl a:hover{text-decoration:underline;text-underline-offset:3px}
.mp-vrow .vid{display:block;margin-top:3px;font:400 11.5px var(--mono);color:var(--text-3)}
.mp-vrow .vr{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;font:500 13px var(--mono)}
.mp-vrow .vr small{font-weight:400;color:var(--text-3)}
.mp-vrow.self,.mp-vrow .vl a.self{opacity:1}
.mp-vlabel{display:inline-flex;align-items:center;height:24px;padding:0 9px;border:1px dashed var(--line-3);border-radius:999px;font-weight:400;font-size:11px;color:var(--text-2)}
.mp-main{padding:56px 0 120px}
.mp-l{display:grid;grid-template-columns:200px minmax(0,1fr);gap:56px;align-items:start}
.mp-section-nav{position:sticky;top:96px;display:grid;gap:2px}
.mp-l > div:first-child{align-self:stretch}
.mp-section-nav a{position:relative;display:flex;align-items:center;gap:12px;min-height:36px;padding:0 14px;border-radius:999px;font:400 13px var(--mono);color:var(--text-2);transition:color .2s,background-color .25s}
.mp-section-nav a .n{width:2ch;font-size:11px;color:var(--text-3)}
.mp-section-nav a:hover{color:var(--text);background:var(--hl)}
.mp-section-nav a.on{color:var(--inv-text);background:var(--inv-bg)}
.mp-section-nav a.on .n{color:inherit;opacity:.7}
@supports (color:color-mix(in srgb,red 50%,blue)){.mp-section-nav a.on .n{opacity:1;color:color-mix(in srgb,var(--inv-text) 70%,var(--inv-bg))}}
.mp-secs{min-width:0}
.mp-sec{padding:0 0 64px;margin:0 0 64px;border-bottom:1px solid var(--line);scroll-margin-top:96px}
.mp-sec:last-child{border-bottom:0;margin-bottom:0}
.mp-sec > h2{display:flex;align-items:baseline;gap:14px;font-weight:560;font-size:clamp(26px,2.6vw,38px);line-height:1.1;letter-spacing:-.04em;margin:0 0 20px}
.mp-sec > h2 .n{font:400 12.5px var(--mono);letter-spacing:0;color:var(--text-3)}
.mp-note{margin:0 0 12px;font-size:14px;line-height:1.65;color:var(--text-3)}
.mp-scroll{margin:0 0 14px;border:1px solid var(--line-2);border-radius:16px;overflow-x:auto;scrollbar-width:thin;background:var(--bg-2)}
.mp-table{width:100%;border-collapse:collapse;font-size:14px}
.mp-table th{padding:12px 16px;text-align:left;font:400 10.5px/1.3 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);border-bottom:1px solid var(--line-2);white-space:nowrap}
.mp-table td{padding:12px 16px;border-bottom:1px solid var(--line);line-height:1.5;color:var(--text-2);vertical-align:top}
.mp-table tr:last-child td{border-bottom:0}
.mp-table td.num{font:500 13.5px var(--mono);color:var(--text);white-space:nowrap;font-variant-numeric:tabular-nums}
.mp-table td.dim{font:400 12px var(--mono);color:var(--text-3);white-space:nowrap}
.mp-table tr.self td{background:var(--hl-2)}
.mp-table tr.self .mp-scope{color:var(--text-3s)}
.mp-table tr.self td:first-child{box-shadow:inset 2px 0 0 var(--text)}
.mp-table a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line-3);text-underline-offset:3px}
.mp-table td:first-child{color:var(--text)}
.mp-scope{display:inline-flex;align-items:center;height:20px;padding:0 7px;margin-left:4px;border:1px solid var(--line-2);border-radius:999px;font:400 10.5px/1 var(--mono);color:var(--text-3);white-space:nowrap;vertical-align:1px}
.mp-scope.author{border-style:dashed}
.mp-scope.pub,.mp-scope.api{border-color:var(--text-3);color:var(--text-2)}
.mp-scope.unknown{border-style:dotted}
.mp-prose{display:grid;gap:14px;max-width:46em}
.mp-prose p{font-size:15.5px;line-height:1.75;color:var(--text-2)}
.mp-prose h3{margin-top:14px;font-weight:560;font-size:18px;letter-spacing:-.02em}
.mp-list{display:grid;gap:8px;margin:0 0 14px}
.mp-list li{position:relative;padding-left:24px;font-size:15px;line-height:1.65;color:var(--text-2)}
.mp-list li::before{content:"—";position:absolute;left:0;color:var(--text-3)}
.mp-list.warn li::before{content:"!";color:var(--warn);font:600 13px/1.65 var(--mono)}
.mp-kv{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:8px 22px;margin:0 0 14px;padding:16px 18px;border:1px solid var(--line-2);border-radius:14px}
.mp-kv dt{font:400 11px/1.6 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}
.mp-kv dd{margin:0;font:400 13.5px/1.6 var(--mono);color:var(--text)}
.mp-binding{display:inline-flex;align-items:center;gap:6px;font:400 12px var(--mono);color:var(--text-2)}
.mp-binding.off{color:var(--err)}
.mp-code{position:relative;margin:0 0 14px;border:1px solid var(--line-2);border-radius:16px;background:var(--bg-2);overflow:hidden}
.mp-code::before{content:"bash";display:flex;align-items:center;height:44px;padding:0 16px;border-bottom:1px solid var(--line-2);font:400 11.5px var(--mono);color:var(--text-3)}
.mp-code pre{margin:0;padding:16px 18px;overflow-x:auto;font:400 12.5px/1.75 var(--mono);color:var(--text-2);white-space:pre;scrollbar-width:thin}
.mp-copy{position:absolute;right:6px;top:6px;display:inline-flex;align-items:center;height:32px;padding:0 13px;border-radius:999px;background:var(--hl-2);font:400 11.5px var(--mono);color:var(--text-2);transition:color .2s,background-color .25s}
.mp-copy:hover{color:var(--text)}
.mp-copy.done{background:var(--inv-bg);color:var(--inv-text)}
.mp-sources{display:grid;gap:10px;margin:0 0 20px;counter-reset:src}
.mp-sources li{position:relative;counter-increment:src;padding-left:36px;font-size:14.5px;line-height:1.6;color:var(--text-2)}
.mp-sources li::before{content:"[" counter(src) "]";position:absolute;left:0;top:.1em;font:400 11.5px var(--mono);color:var(--text-3)}
.mp-sources a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line-3);text-underline-offset:3px}
.mp-sources .pub{font:400 12px var(--mono);color:var(--text-3)}
.mp-dir-toggle{display:inline-flex;align-items:center;height:40px;padding:0 16px;border:1px solid var(--line-2);border-radius:999px;font:400 12.5px var(--mono);color:var(--text-2);transition:color .2s,border-color .2s}
.mp-dir-toggle:hover{color:var(--text);border-color:var(--line-3)}
.mp-dir{display:none;flex-wrap:wrap;gap:6px;margin-top:16px}
.mp-dir.open{display:flex;animation:rise .5s var(--out) both}
.mp-dir a{display:inline-flex;align-items:center;height:30px;padding:0 11px;border:1px solid var(--line-2);border-radius:999px;font:400 11.5px var(--mono);color:var(--text-2);transition:color .2s,border-color .2s}
.mp-dir a:hover{color:var(--text);border-color:var(--line-3)}
.mp-dir a.self{background:var(--inv-bg);color:var(--inv-text);border-color:var(--inv-bg)}
.mp-sel{display:none}
@media (max-width:980px){
  .mp-l{display:block}
  .mp-l > div:first-child{display:contents}
  .mp-secs{margin-top:20px}
  .mp-section-nav{position:sticky;top:76px;z-index:5;display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;padding:6px;margin:0 calc(var(--pad) * -1);padding-left:var(--pad);padding-right:var(--pad);background:linear-gradient(var(--bg) 70%,transparent)}
  .mp-section-nav::-webkit-scrollbar{display:none}
  .mp-section-nav a{flex:none;border:1px solid var(--line-2)}
  .mp-section-nav a .n{display:none}
}
@media (max-width:560px){.mp-ov{grid-template-columns:1fr 1fr}.mp-ov .ov{padding:14px 16px}.mp-sec{padding-bottom:44px;margin-bottom:44px}.mp-panel{padding:18px}}

/* ==================== официальные данные: экономия · характеристики · бенчмарки ==================== */
.sv-lead,.bx-lead{margin:0 0 18px;max-width:46em;font-size:15.5px;line-height:1.7;color:var(--text-2)}
.sv-hero{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:12px;margin:0 0 16px}
.sv-k{display:grid;align-content:start;gap:8px;min-width:0;padding:18px 20px 16px;border:1px solid var(--line-2);border-radius:16px;background:var(--bg-2)}
.sv-l{font:400 10.5px/1.3 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-3)}
.sv-k b{font-weight:560;font-size:clamp(26px,3vw,36px);line-height:1.05;letter-spacing:-.04em;color:var(--text);overflow-wrap:anywhere}
.sv-k small{font:400 12.5px var(--mono);color:var(--text-2);font-variant-numeric:tabular-nums}
.sv-table th small{display:block;margin-top:4px;font-size:10px;letter-spacing:.04em;text-transform:none;color:var(--text-3);white-space:normal}
.sv-table td.sv-c{color:var(--text);font-weight:600}
.sv-table tr.sv-ex td{background:var(--hl);border-top:1px solid var(--line-2)}
.sv-table tr.sv-ex td:first-child{color:var(--text-2)}
.sv-line{margin:0 0 14px;font-size:15px;line-height:1.7;color:var(--text-2)}
.sv-line b{font:500 14px var(--mono);color:var(--text);white-space:nowrap}
.sv-none{margin:0 0 14px;padding:16px 18px;border:1px dashed var(--line-3);border-radius:14px;font-size:14.5px;line-height:1.65;color:var(--text-2)}
.sv-ref{padding-left:14px;box-shadow:inset 2px 0 0 var(--line-3)}
.sp-table td:first-child{width:34%;min-width:150px}
.sp-table td:nth-child(2){color:var(--text)}
.sp-table td.sp-s{font:400 12px/1.5 var(--mono);white-space:nowrap}
.sp-table td.sp-s a{color:var(--text-2)}

.bx{margin-top:34px}
.bx-variant{margin:0 0 14px;padding:12px 16px;border:1px solid var(--line-2);border-radius:12px;background:var(--bg-2);box-shadow:inset 2px 0 0 var(--text);font-size:14px;line-height:1.6;color:var(--text-2)}
.bx-h{margin:0 0 10px;font-weight:560;font-size:clamp(19px,1.7vw,23px);line-height:1.2;letter-spacing:-.03em;color:var(--text)}
.bx-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 26px}
.bx-chip{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:4px 12px;border:1px solid var(--line-2);border-radius:999px;font:400 11.5px/1.3 var(--mono);color:var(--text-3)}
.bx-chip b{font-weight:500;color:var(--text)}
.bx-t{margin:0 0 34px}
.bx-t > h3{margin:0 0 4px;font-weight:560;font-size:17px;line-height:1.3;letter-spacing:-.02em;color:var(--text)}
.bx-src{margin:0 0 14px;font:400 11.5px/1.6 var(--mono);color:var(--text-3)}
.bx-src a,.bx-fs a,.bx-srclist a,.mp-note a,.sv-line a{color:var(--text-2);text-decoration:underline;text-decoration-color:var(--line-3);text-underline-offset:3px;transition:color .2s}
.bx-src a:hover,.bx-fs a:hover,.bx-srclist a:hover,.sp-table td.sp-s a:hover{color:var(--text)}
.bx-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,290px),1fr));gap:12px;margin:0 0 12px}
.bx-c{display:flex;flex-direction:column;gap:14px;min-width:0;margin:0;padding:16px 18px;border:1px solid var(--line-2);border-radius:16px;background:var(--bg-2);transition:border-color .2s}
.bx-c:hover{border-color:var(--line-3)}
.bx-c figcaption{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;min-width:0}
.bx-c figcaption b{font-weight:520;font-size:14.5px;line-height:1.35;color:var(--text);overflow-wrap:anywhere}
.bx-q{display:inline-flex;align-items:center;height:19px;padding:0 7px;border:1px solid var(--line-2);border-radius:999px;font:400 10px/1 var(--mono);color:var(--text-3);white-space:nowrap}
.bx-cat{flex-basis:100%;font:400 10px/1.4 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-3)}
.bx-bars{display:grid;gap:8px}
.bx-r{display:grid;grid-template-columns:minmax(0,38%) minmax(0,1fr) auto;align-items:center;gap:10px;font-size:12.5px;line-height:1.3}
.bx-n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-3)}
.bx-tr{display:block;height:8px;border-radius:999px;background:var(--hl-2);overflow:hidden}
.bx-tr i{display:block;width:var(--w,0);height:100%;border-radius:inherit;background:var(--line-3)}
.bx-v{min-width:4ch;font:400 12px var(--mono);text-align:right;color:var(--text-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.bx-r.is-self .bx-n,.bx-r.is-self .bx-v{color:var(--text);font-weight:600}
.bx-r.is-self .bx-tr i{background:var(--text)}
.bx-r.is-ref .bx-n{color:var(--text-2)}
.bx-r.is-ref .bx-tr i{background:var(--text-3)}
.bx-more{margin:0 0 12px}
.bx-more > summary{display:inline-flex;align-items:center;gap:10px;min-height:38px;padding:0 16px;border:1px solid var(--line-2);border-radius:999px;font:400 12.5px var(--mono);color:var(--text-2);cursor:pointer;list-style:none;user-select:none;transition:color .2s,border-color .2s,background-color .2s}
.bx-more > summary::-webkit-details-marker{display:none}
.bx-more > summary::before{content:"+";width:1ch;text-align:center;color:var(--text-3)}
.bx-more[open] > summary::before{content:"−"}
.bx-more > summary:hover{color:var(--text);border-color:var(--line-3);background:var(--hl)}
.bx-more > summary:focus-visible{outline:2px solid var(--text);outline-offset:2px}
.bx-more[open] > summary{margin-bottom:12px}
.bx-scroll{max-height:min(560px,75vh);overflow:auto;overscroll-behavior-x:contain}
.bx-table th,.bx-table td{padding:10px 14px}
.bx-table thead th{position:sticky;top:0;z-index:2;background:var(--bg-2);box-shadow:inset 0 -1px 0 var(--line-2);border-bottom:0}
.bx-table th:first-child,.bx-table td:first-child{position:sticky;left:0;z-index:1;background:var(--bg-2);box-shadow:inset -1px 0 0 var(--line)}
.bx-table thead th:first-child{z-index:3;box-shadow:inset 0 -1px 0 var(--line-2),inset -1px 0 0 var(--line)}
.bx-table tbody td:first-child{min-width:170px;max-width:300px;white-space:normal}
.bx-table td small{font:400 10.5px var(--mono);color:var(--text-3)}
.bx-table th.is-self{color:var(--text)}
.bx-table td.is-self{background:var(--hl-2);font-weight:600}
.bx-table tr.bx-cr td{padding-top:14px;padding-bottom:8px;background:var(--bg-3);font:400 10.5px/1.3 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-2)}
.bx-table tr.bx-cr td:first-child{max-width:none;box-shadow:none}
.bx-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,180px),1fr));gap:10px;margin:0 0 14px}
.bx-tile{display:flex;flex-direction:column;gap:6px;min-width:0;padding:16px 18px;border:1px solid var(--line-2);border-radius:14px;background:var(--bg-2);font-size:13.5px;line-height:1.45;color:var(--text-2);overflow-wrap:anywhere}
.bx-tile b{font-weight:560;font-size:24px;line-height:1.1;letter-spacing:-.03em;color:var(--text)}
.bx-tile small{margin-top:auto;font:400 10px/1.4 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-3)}
.bx-notes{display:grid;gap:6px;margin:0 0 6px;padding:0;list-style:none}
.bx-notes li{position:relative;padding-left:18px;font-size:13px;line-height:1.6;color:var(--text-3)}
.bx-notes li::before{content:"*";position:absolute;left:2px;top:.05em;font:400 12px var(--mono);color:var(--dim)}
.bx-facts{display:grid;gap:10px;margin:0 0 30px;padding:0;list-style:none}
.bx-facts li{padding:2px 0 2px 16px;box-shadow:inset 2px 0 0 var(--line-3);font-size:15px;line-height:1.65;color:var(--text-2)}
.bx-fs{font:400 11.5px var(--mono);color:var(--text-3);white-space:nowrap}
.bx-base{margin-top:40px;padding-top:30px;border-top:1px dashed var(--line-3)}
.bx-srcs{margin-top:28px}
.bx-srclist{display:grid;gap:10px;margin:0;padding:0;list-style:none;counter-reset:bxs}
.bx-srclist li{position:relative;counter-increment:bxs;padding-left:36px;font-size:14.5px;line-height:1.6;color:var(--text-2)}
.bx-srclist li::before{content:"[" counter(bxs) "]";position:absolute;left:0;top:.1em;font:400 11.5px var(--mono);color:var(--text-3)}
.bx-srclist a{color:var(--text)}
.bx-sd{font:400 12px var(--mono);color:var(--text-3)}
@media (max-width:560px){
  .sv-table,.sv-table tbody,.sv-table thead{display:block}
  .sv-table thead tr{display:block;padding:12px 16px;border-bottom:1px solid var(--line-2)}
  .sv-table thead th{display:none;padding:0;border:0;white-space:normal}
  .sv-table thead th:nth-child(2){display:block}
  .sv-table tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:6px 14px;padding:13px 16px;border-bottom:1px solid var(--line)}
  .sv-table tbody tr:last-child{border-bottom:0}
  .sv-table td{padding:0;border:0;background:none}
  .sv-table td:first-child{grid-column:1;grid-row:1}
  .sv-table td.sv-c{grid-column:2;grid-row:1;text-align:right}
  .sv-table td.sv-o{grid-column:1;grid-row:2;white-space:normal}
  .sv-table td.sv-i{grid-column:2;grid-row:2;text-align:right;white-space:normal}
  .sv-table td[data-l]::before{content:attr(data-l) "\00a0\00a0";font:400 9.5px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}
  .sv-table.sv-img tbody tr{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .sv-table.sv-img td:first-child{grid-column:1/-1}
  .sv-table tr.sv-ex{background:var(--hl);border-top:1px solid var(--line-2)}
  .sv-table tr.sv-ex td{background:none;border-top:0}
  .sv-k{padding:16px}
  .bx-c{padding:14px 15px}
  .bx-r{grid-template-columns:minmax(0,40%) minmax(0,1fr) auto;gap:8px;font-size:12px}
  .bx-table tbody td:first-child{min-width:130px;max-width:190px}
  .bx-table th,.bx-table td{padding:9px 12px}
  .sp-table td:first-child{min-width:0;width:auto}
  .sp-table td.sp-s{white-space:normal;overflow-wrap:anywhere}
  .bx-fs{white-space:normal}
}

/* ==================== вход ==================== */
.sg{position:relative;min-height:100svh;overflow:hidden;isolation:isolate}
.sg .ph-art{position:absolute;inset:0;width:100%;height:100%;z-index:0}
.sg-in{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,440px) minmax(0,1fr);gap:64px;align-items:center;min-height:100svh;padding-top:calc(var(--hdr) + 40px);padding-bottom:56px;pointer-events:none}
.sg-in > *{pointer-events:auto}
.sign-card{position:relative;padding:32px;border:1px solid var(--line-2);border-radius:26px;background:var(--glass);-webkit-backdrop-filter:blur(20px) saturate(1.3);backdrop-filter:blur(20px) saturate(1.3);box-shadow:var(--shadow)}
.sign-card .sk{display:flex;justify-content:space-between;gap:12px;font:400 12px var(--mono);color:var(--text-3)}
.sign-card h1{margin:18px 0 6px;font-weight:560;font-size:clamp(32px,3vw,42px);line-height:1;letter-spacing:-.045em}
.sign-card .sub-title{margin:0 0 24px;color:var(--text-2);font-size:15px}
.field{display:grid;gap:7px;margin-bottom:14px}
.field label{font:400 11.5px var(--mono);letter-spacing:.04em;color:var(--text-3)}
.field input{width:100%;height:48px;padding:0 16px;border:1px solid var(--line-2);border-radius:14px;background:var(--bg-2);font:400 15px var(--sans);color:var(--text);outline:0;transition:border-color .2s,box-shadow .3s}
.field input::placeholder{color:var(--dim)}
.field input:hover{border-color:var(--line-3)}
.field input:focus{border-color:var(--text);box-shadow:0 0 0 4px var(--hl-2)}
.field .row{display:flex;gap:8px}
.field .row input{flex:1;min-width:0}
.code-btn{flex:none;height:48px;padding:0 16px;border:1px solid var(--line-3);border-radius:14px;font:400 12.5px var(--mono);color:var(--text);transition:background-color .2s,border-color .2s}
.code-btn:hover{border-color:var(--text);background:var(--hl)}
.code-btn:disabled{opacity:.55;cursor:default}
.agree{display:flex;align-items:flex-start;gap:10px;margin:4px 0 16px;font-size:13px;line-height:1.55;color:var(--text-2)}
.agree input{flex:none;width:17px;height:17px;margin-top:2px;accent-color:var(--text)}
.agree a,.legal-notice a,.sign-foot a,.ga-priv a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line-3);text-underline-offset:3px}
.btn-sign{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;height:50px;margin-top:6px;border-radius:999px;background:var(--inv-bg);color:var(--inv-text);font:500 15px var(--sans);position:relative;overflow:hidden;isolation:isolate;transition:opacity .2s,transform .2s}
.btn-sign::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(105deg,transparent 35%,color-mix(in srgb,var(--inv-text) 16%,transparent) 50%,transparent 65%);transform:translateX(-110%);transition:transform .9s var(--out)}
.btn-sign:hover::after{transform:translateX(110%)}
.btn-sign:active{transform:scale(.98)}
.btn-sign:disabled{opacity:.6;cursor:default}
.oauth-sep{display:flex;align-items:center;gap:14px;margin:20px 0;font:400 11.5px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.oauth-sep::before,.oauth-sep::after{content:"";flex:1;height:1px;background:var(--line-2)}
.btn-google{position:relative;display:flex;align-items:center;justify-content:center;gap:12px;width:100%;height:50px;border:1px solid var(--line-3);border-radius:999px;font:500 14.5px var(--sans);color:var(--text);transition:border-color .2s,background-color .2s,opacity .3s}
.btn-google + .btn-google{margin-top:10px}
.btn-google:hover{border-color:var(--text);background:var(--hl)}
.btn-google svg{width:18px;height:18px;flex:none}
.btn-google b{font-weight:500}
.btn-google.ikh-locked{opacity:.45}
.btn-google.ikh-locked::after{content:"🔒";position:absolute;right:18px;font-size:12px;filter:grayscale(1)}
.legal-notice{margin-top:18px;font-size:12px;line-height:1.65;color:var(--text-3)}
.sign-err{display:none;margin-top:14px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--err) 45%,transparent);border-radius:12px;font-size:13.5px;line-height:1.5;color:var(--err)}
.sign-err.show{display:block;animation:rise .4s var(--out)}
.sign-foot{margin-top:20px;padding-top:18px;border-top:1px dashed var(--line-2);font-size:13.5px;color:var(--text-3)}
.sign-foot .row2{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:12px;font:400 12px var(--mono)}
.sign-foot .row2 a{text-decoration:none;color:var(--text-2)}
.sign-foot .row2 a:hover{color:var(--text)}
.ikh-tsfl{display:flex;justify-content:center;margin:4px 0 6px;min-height:0;transition:box-shadow .3s;border-radius:12px}
.ikh-tsfl:empty{display:none}
.ikh-tsflash{animation:tsflash 1.2s var(--out) 2}
@keyframes tsflash{0%,100%{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--err) 50%,transparent)}}
/* слоган — по центру первого экрана (выше прежнего положения у нижнего края); планета — в правом верхнем углу (place:corner) и на текст не заходит;
   мягкая подложка цвета фона под текстом, чтобы звёзды и символы не сливались с буквами */
.sg-aside{position:relative;align-self:start;min-height:calc(100svh - var(--hdr) - 96px);display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:22px;padding:0 0 4vh}
.sg-aside::before{content:"";position:absolute;left:-48px;right:auto;width:min(100%,640px);top:50%;height:min(78%,560px);transform:translateY(-54%);z-index:-1;pointer-events:none;background:radial-gradient(closest-side,color-mix(in srgb,var(--bg) 92%,transparent) 62%,transparent)}
.sg-aside .ph-h{font-size:clamp(40px,4.6vw,72px);margin:0;max-width:9em}
.sg-aside ul{display:grid;gap:10px;font:400 13px var(--mono);color:var(--text-2)}
.sg-aside li{display:flex;gap:10px}
.sg-aside li::before{content:"+";color:var(--text-3)}
#reg-wrap .sign-card{animation:rise .5s var(--out)}
@media (max-width:960px){
  .sg-in{grid-template-columns:minmax(0,1fr);justify-items:center;gap:28px;padding-top:calc(var(--hdr) + 28px)}
  .sg-aside{display:none}
  .sign-wrap,#reg-wrap{width:min(460px,100%)}
}
@media (max-width:480px){.sign-card{padding:24px 20px;border-radius:22px}}

/* ==================== вход через Google / GitHub ==================== */
.ga{position:relative;min-height:100svh;display:grid;place-items:center;padding:96px 20px 48px;overflow:hidden;isolation:isolate}
.ga .ph-art{position:absolute;inset:0;width:100%;height:100%;z-index:0}
.ga-top{position:absolute;left:0;right:0;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;height:var(--hdr);padding:0 var(--pad);max-width:var(--maxw);margin:0 auto}
.ga-top .hdr-act{margin-left:auto}
.ga-card{position:relative;z-index:1;width:min(420px,100%);padding:32px;border:1px solid var(--line-2);border-radius:26px;background:var(--glass);-webkit-backdrop-filter:blur(20px) saturate(1.3);backdrop-filter:blur(20px) saturate(1.3);box-shadow:var(--shadow);text-align:center}
.ga-ico{display:grid;place-items:center;width:56px;height:56px;margin:0 auto 18px;border:1px solid var(--line-3);border-radius:18px}
.ga-ico svg{width:24px;height:24px}
.ga-k{font:400 12px var(--mono);color:var(--text-3)}
.ga-title{margin:10px 0 10px;font-weight:560;font-size:28px;line-height:1.1;letter-spacing:-.035em}
.ga-status{min-height:3em;font-size:14.5px;line-height:1.55;color:var(--text-2)}
.ga-spin{width:28px;height:28px;margin:6px auto 14px;font:400 22px/28px var(--mono);color:var(--text)}
.ga-spin::after{content:"⠋";animation:spin8 .8s steps(1) infinite}
.ga-btn{display:flex;align-items:center;justify-content:center;width:100%;height:50px;margin-top:16px;border-radius:999px;background:var(--inv-bg);color:var(--inv-text);font:500 15px var(--sans);transition:opacity .2s,transform .2s}
.ga-btn:active{transform:scale(.98)}
.ga-btn:disabled{opacity:.6;cursor:default}
a.ga-btn{background:none;border:1px solid var(--line-3);color:var(--text)}
.ga-priv{margin-top:18px;font-size:12px;line-height:1.65;color:var(--text-3)}

/* ==================== 404 ==================== */
.nf404{position:relative;min-height:100svh;overflow:hidden;isolation:isolate;display:grid;align-items:center}
.nf404 .ph-art{position:absolute;inset:0;width:100%;height:100%;z-index:0}
.nf404-in{position:relative;z-index:1;padding-top:var(--hdr);pointer-events:none}
.nf404-in > *{pointer-events:auto}
.nf404 .big{font-weight:560;font-size:clamp(96px,16vw,220px);line-height:.85;letter-spacing:-.07em}
.nf404 .h2{margin-top:18px}
.nf404 .cta{justify-content:flex-start}
/* подложка под текстом 404/ошибок: кольцо планеты проходит за текстом и не сливается с ним */
.nf404-in::before{content:"";position:absolute;left:calc(var(--pad,24px) * -1 - 40px);top:50%;width:min(860px,100%);height:min(130%,820px);transform:translateY(-46%);z-index:-1;pointer-events:none;background:radial-gradient(closest-side,color-mix(in srgb,var(--bg) 90%,transparent) 58%,transparent)}
.nf404 .nf-ref{margin-top:22px;font:400 11.5px var(--mono);letter-spacing:.02em;color:var(--text-3);min-height:1.4em;word-break:break-all}

/* доступность: фокус на прокручиваемых таблицах и блоках кода */
.mp-scroll:focus-visible,main pre:focus-visible{outline:2px solid var(--text);outline-offset:2px}

/* ==================== стабильность (задача 9) ==================== */
/* каталог: без «пустой сетки» между скелетоном и карточками — короткое появление без размытия,
   задержка только у первых 8, нижние карточки (вне первого экрана) — сразу на месте */
@keyframes mcIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.mc.enter{animation:mcIn .38s var(--out) both;animation-delay:calc(min(var(--i,0),8) * 18ms)}
.mc.enter:nth-child(n+13){animation:none}
html.rv0 .mc.enter{animation:stageIn .22s ease both!important;animation-delay:0s!important}
html.rv0 .mc.enter:nth-child(n+13){animation:none!important}
@media (prefers-reduced-motion:reduce){.mc.enter,html.rv0 .mc.enter{animation:stageIn .2s ease both!important;animation-delay:0s!important}}

/* вход: место под виджет Turnstile занято заранее (он дорисовывается через ~1 с и раньше сдвигал кнопки на 70+ px) */
#login-turnstile{min-height:73px;align-items:flex-start}
#login-turnstile:empty{display:block}
#login-turnstile:empty,#login-turnstile.ts-wait{border-radius:8px;background:linear-gradient(90deg,var(--hl) 0,var(--hl-2) 40%,var(--hl) 80%) 0 0/300% 100%;animation:skel 1.4s ease infinite}
@media (prefers-reduced-motion:reduce){#login-turnstile:empty,#login-turnstile.ts-wait{animation:none}}

/* каталог: счётчики фильтров «—» → «38» не раздвигают ряд фильтров */
.fchip .cnt{display:inline-block;min-width:2ch;font-variant-numeric:tabular-nums}

/* ---------- страница «API из России» (/gpt-api-v-rossii): общие блоки сайта + немного своих отступов ---------- */
.ru-head{margin-bottom:44px}
.ru-head .sub{max-width:40em}
.pr + .ru-sec{margin-top:120px;border-top:1px solid var(--line)}
.ph-row.ru-cta{margin-top:18px}
.term-lang{font:400 12.5px var(--mono);color:var(--text-2)}
@media (max-width:700px){
  .ru-head{margin-bottom:28px}
  .pr + .ru-sec{margin-top:88px}
  .ph-row.ru-cta .btn{flex:1 1 auto;justify-content:center}
}
/* ---------- китайский (zh-CN): CJK-фолбэк шрифтов, трекинг заголовков, переключатель на три языка, плашка правовых документов ---------- */
html[lang|=zh]{
  --sans:"Geist",-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC","Noto Sans CJK SC","Source Han Sans SC","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:"Geist Mono",ui-monospace,"SF Mono",Menlo,Consolas,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC","Noto Sans CJK SC","Liberation Mono",monospace}
html[lang|=zh] .lang-th{transform:translateX(72px)}
.lang button[lang|=zh]{font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC","Noto Sans CJK SC",var(--sans);font-size:12px;letter-spacing:0}
/* три кнопки языка не помещались в шапку на 375–400px (в «пилюле» — до 414px): компактнее кнопки и отступы */
@media (max-width:420px){
  .hdr .lang button,.hdr .lang-th{width:30px}
  html[lang=en] .hdr .lang-th{transform:translateX(30px)}
  html[lang|=zh] .hdr .lang-th{transform:translateX(60px)}
  .hdr .icon-btn{width:36px;height:36px}
  .hdr-act{gap:4px}
  .hdr-in{gap:8px}
}
/* отрицательный трекинг Geist сжимает иероглифы */
html[lang|=zh] :is(.h1,.h2,.ph-h,.launch-h,.manifesto,.h3x,.docs-sec > h1,.docs-sec > h2,.legal h2,.mp-sec > h2,.sign-card h1,.ga-title,.bx-h,.tk-tile .v,.sv-k b,.mp-ov .ov b,.bx-tile b,.nf-ct){letter-spacing:-.01em}
html[lang|=zh] :is(.step h3,.card h3,.qa summary,.fc h3,.docs-sec h3,.legal h3,.mp-panel-h h2,.mp-prose h3,.bx-t > h3,.ct .ct-m,.btn,.mc-n,.nf-h b,.dx-pn button b){letter-spacing:0}
/* правовые документы: китайской версии нет — показываем английскую с пояснением */
.lg-zh{display:none}
html[lang|=zh] .lg-zh{display:block;margin:0 0 22px;padding:14px 18px;border:1px dashed var(--line-3);border-radius:14px;font-size:14.5px;line-height:1.7;color:var(--text-2)}
/* крупные значения в плитках модели: не рвать слова посреди («文本 + 图像 → 文|本»), переносить по пробелам */
html[lang|=zh] .mp-ov .ov b{word-break:keep-all}

/* nexora-ext */
.tag.inv{background:var(--inv-bg);color:var(--inv-text);border-color:var(--inv-bg)}
.plans{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:40px 0 44px}
.plan{display:flex;flex-direction:column;gap:18px;padding:26px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg-2);transition:border-color .3s}
.plan:hover{border-color:var(--line-3)}
.plan.pro{border-color:var(--text)}
.plan-h{display:flex;justify-content:space-between;align-items:center;gap:12px}
.plan-n{font:400 12.5px/1.2 var(--mono);color:var(--text-3)}
.plan-pr{display:flex;align-items:baseline;gap:10px}
.plan-pr b{font:560 clamp(44px,5vw,60px)/1 var(--sans);letter-spacing:-.045em}
.plan-pr span{font:400 13px/1 var(--mono);color:var(--text-3)}
.plan-rub{font:400 13px/1.5 var(--mono);color:var(--text-2);margin-top:-8px}
.plan-rub span{color:var(--text-3)}
.plan ul{display:grid;gap:10px;list-style:none;padding:0;margin:4px 0 8px}
.plan li{position:relative;padding-left:22px;font-size:15px;line-height:1.5;color:var(--text-2)}
.plan li::before{content:"+";position:absolute;left:0;top:0;font-family:var(--mono);color:var(--text-3)}
.plan .btn{margin-top:auto;width:100%}
@media(max-width:1180px){.plans{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.plans{grid-template-columns:minmax(0,1fr)}}
.co{position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center;padding:20px;background:color-mix(in srgb,var(--bg) 72%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.co.open{display:flex}
.co-p{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:14px;width:100%;max-width:480px;max-height:calc(100svh - 40px);overflow:auto;padding:34px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg-2);box-shadow:var(--shadow);color:var(--text)}
.co-x{position:absolute;top:16px;right:16px}
.co h3{font-size:28px;line-height:1.1;font-weight:560;letter-spacing:-.03em;margin-top:6px}
.co-sub{font:400 13px/1.5 var(--mono);color:var(--text-3);margin-top:-6px}
.co-lbl{font:400 12.5px/1 var(--mono);color:var(--text-3);margin-top:10px}
.co-in{width:100%;height:50px;padding:0 16px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--bg);color:var(--text);font:400 15px var(--sans);outline:none;transition:border-color .25s}
.co-in::placeholder{color:var(--dim)}
.co-in:focus{border-color:var(--text)}
.co-opts{display:grid;gap:10px;width:100%;margin-top:6px}
.co-opt{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;padding:16px 18px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:transparent;color:var(--text);text-align:left;text-decoration:none;cursor:pointer;transition:border-color .25s,background-color .25s}
.co-opt:hover{border-color:var(--text);background:var(--hl)}
.co-opt b{display:flex;align-items:center;gap:10px;font:560 15px/1.2 var(--sans);letter-spacing:-.01em}
.co-opt .tag{font-style:normal;padding:4px 7px;font-size:10.5px}
.co-opt small{display:block;margin-top:8px;font:400 12px/1.4 var(--mono);color:var(--text-3)}
.co-opt .arr{font-family:var(--mono);transition:transform .35s var(--out)}
.co-opt:hover .arr{transform:translateX(4px)}
.co-st{font:400 12.5px/1.5 var(--mono);color:var(--text-2)}
.c-ctx{font:400 13px/1.4 var(--mono);white-space:nowrap}.c-ctx .mono-c{color:var(--text)}.c-ctx .mono-d{color:var(--text-3)}

.lang-th{transform:none!important;transition:left .45s var(--out),width .45s var(--out)!important}
.search .pr{padding:0}



/* nexora-ext2 */
.tbl tr.grp td{padding:34px 18px 14px;border-bottom:1px solid var(--line-2);background:none}
.tbl tr.grp:first-child td{padding-top:12px}
.grp-in{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.grp-n{font:560 17px/1 var(--sans);letter-spacing:-.02em;color:var(--text)}
.grp-m{font:400 12.5px/1 var(--mono);color:var(--text-3);margin-right:auto}
.grp-in .btn{margin-top:0;height:34px;font-size:13px;padding:0 14px}
.free-strip{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin:36px 0 -20px;padding:18px 22px;border:1px dashed var(--line-3);border-radius:var(--r-sm)}
.free-strip b{font:560 15px/1.2 var(--sans);margin-right:12px}
.free-strip span{font:400 13px/1.4 var(--mono);color:var(--text-3)}
.free-strip .btn{margin-top:0}
.kc-res{width:100%;display:grid;grid-template-columns:auto 1fr;gap:10px 22px;margin:8px 0 0;padding:18px 20px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--bg)}
.kc-res[hidden],.kc-key[hidden]{display:none}
.kc-res dt{font:400 12px/1.6 var(--mono);color:var(--text-3)}
.kc-res dd{margin:0;font:500 14px/1.5 var(--sans);color:var(--text);word-break:break-word}
.kc-key{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:1px solid var(--line-3);border-radius:var(--r-sm);background:var(--bg)}
.kc-key code{flex:1;min-width:0;font:400 13px/1.4 var(--mono);color:var(--text);word-break:break-all}
.kc-key .btn{margin-top:0;flex:none}
.ftr-ent{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px;margin-top:56px;padding-top:34px;border-top:1px solid var(--line)}
.ent{display:grid;gap:6px;align-content:start;font-size:13px;line-height:1.55;color:var(--text-3)}
.ent .ent-c{font:400 11.5px/1 var(--mono);letter-spacing:.1em;color:var(--text-3);margin-bottom:4px}
.ent b{font-weight:560;font-size:14px;color:var(--text)}
.ent i{font-style:normal;font-size:12px;color:var(--dim)}
@media(max-width:760px){.ftr-ent{grid-template-columns:minmax(0,1fr);gap:26px}}

.sym svg{display:block;width:18px;height:18px;fill:currentColor}
.fchip svg{display:block;width:14px;height:14px;fill:currentColor;flex:none}
.tk li svg{display:block;width:15px;height:15px;fill:currentColor;flex:none;opacity:.85}
.doc-mico{display:inline-flex;align-items:center;gap:8px}
.doc-mico svg{width:15px;height:15px;fill:currentColor;flex:none;opacity:.85}

/* ---------- DOCS STYLES (ALWAYS LOADED) ---------- */
.docs{display:grid;grid-template-columns:230px minmax(0,1fr);gap:64px;max-width:var(--maxw);margin:0 auto;padding:calc(var(--hdr) + 56px) var(--pad) 120px}
.dnav{position:sticky;top:calc(var(--hdr) + 28px);align-self:start;display:grid;gap:2px;max-height:calc(100svh - var(--hdr) - 56px);overflow:auto}
.dn-h{font:400 11.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);margin:22px 0 8px}
.dn-h:first-child{margin-top:0}
.dnav a{padding:7px 12px;margin-left:-12px;border-radius:8px;font-size:14px;color:var(--text-2);transition:background-color .2s,color .2s}
.dnav a:hover,.dnav a.on{background:var(--hl-2);color:var(--text)}
.dmain{min-width:0;max-width:820px}
.dhero{margin-bottom:64px}
.dhero h1{font-weight:560;font-size:clamp(40px,5vw,64px);line-height:1.02;letter-spacing:-.045em;margin:0 0 20px}
.dhero p{font-size:18px;line-height:1.6;color:var(--text-2);max-width:36em}
.dsec{padding:56px 0 8px;border-top:1px solid var(--line);scroll-margin-top:calc(var(--hdr) + 12px)}
.dsec:first-of-type{border-top:0;padding-top:0}
.dsec .kicker{margin-bottom:18px}
.dsec h2{font-weight:560;font-size:clamp(28px,3vw,40px);line-height:1.08;letter-spacing:-.035em;margin:0 0 18px}
.dsec h3{font-weight:560;font-size:19px;letter-spacing:-.02em;margin:38px 0 12px;color:var(--text)}
.dsec p{font-size:15.5px;line-height:1.7;color:var(--text-2);margin:0 0 16px;max-width:42em}
.dsec code{font:400 .88em var(--mono);background:var(--hl-2);padding:2px 7px;border-radius:6px;color:var(--text)}
pre.code{margin:0 0 20px;padding:18px 20px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--bg-2);overflow:auto;font:400 13px/1.75 var(--mono);color:var(--text)}
pre.code code{background:none;padding:0;font:inherit;border-radius:0;white-space:pre}
.callout{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin:22px 0;padding:20px 22px;border:1px dashed var(--line-3);border-radius:var(--r-sm)}
.callout p{margin:0;max-width:30em}
.callout-a{display:flex;gap:10px;flex-wrap:wrap}
.callout-a .btn{margin-top:0}
.tbl-d{overflow:auto;margin:0 0 24px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--bg-2)}
.tbl-d table{width:100%;border-collapse:collapse;font-size:14px}
.tbl-d th{padding:14px 18px;text-align:left;font:400 11.5px/1 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);border-bottom:1px solid var(--line-2);white-space:nowrap}
.tbl-d td{padding:13px 18px;border-bottom:1px solid var(--line);color:var(--text-2);vertical-align:middle}
.tbl-d tr:last-child td{border-bottom:0}
.tbl-d td code{white-space:nowrap}
@media(max-width:980px){.docs{grid-template-columns:minmax(0,1fr);gap:0}.dnav{display:none}}
