/* Раздел ZmNx·AI «в чёрном» — как программа с 0.9.3 и страница ZmNx SSH: чёрная сцена, холодная платина, сталь;
   золото — только у «Скачать». Включает ai-view.js классом html.zv-black; без JS — обычный вид. */
html.zv-black{
  --bg:#050506; --bg2:#0a0a0d; --card:#0e0e12; --card2:#16161b; --brd:rgba(255,255,255,.08); --brd2:rgba(255,255,255,.16);
  --t:#eef0f3; --sub:#a9b1bd; --mute:#6f7784;
  --violet:#c8a86b; --violet2:#dfe4ec; --blue:#b9c3d1; --cyan:#dfe4ec;
  --sb:rgba(223,228,236,.22); --sb-h:rgba(223,228,236,.45);
}
html.zv-black body{background-color:#050506;background-image:radial-gradient(900px 520px at 80% -12%,rgba(223,228,236,.07),transparent 60%),radial-gradient(700px 420px at -10% 30%,rgba(234,217,174,.04),transparent 60%);}
html.zv-black a:hover{color:#fff;}
html.zv-black .site-header{background:rgba(5,5,6,.78);border-bottom-color:rgba(255,255,255,.07);}
html.zv-black .site-header .brand .glasses-logo{background:linear-gradient(180deg,#2a2b31,#121216);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14);}
html.zv-black .site-header .brand-tag{color:#9aa3b0;}
html.zv-black .subnav{background:rgba(8,8,10,.86);border-bottom-color:rgba(255,255,255,.07);}
html.zv-black .subnav-links a.active{background:linear-gradient(180deg,rgba(235,242,255,.1),rgba(70,90,130,.08));box-shadow:inset 0 1px 0 rgba(240,246,255,.12),inset 0 0 0 1px rgba(160,190,235,.12);}
html.zv-black .subnav-title .ai,html.zv-black .wordmark .ai{background:linear-gradient(180deg,#f7ecd0 0%,#e2c88e 48%,#b8955a 56%,#efdcab 100%);-webkit-background-clip:text;background-clip:text;color:transparent;}
html.zv-black .wordmark .dot{color:#8b93a0;}
html.zv-black .eyes-logo{background:linear-gradient(180deg,#2a2b31,#111115);box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 0 0 1px rgba(255,255,255,.1),0 20px 50px -20px rgba(0,0,0,.9);}

/* карточки, текст, код */
html.zv-black .card{background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.012)),var(--card);border-color:var(--brd);}
/* плашки: в покое — кромка титаном/платиной с холодным свечением; при наведении проявляется золотая кромка
   и тёплое свечение (как у «Скачать»). Кромки — фоном под прозрачной рамкой (padding-box / border-box);
   золотая — отдельным слоем ::after с маской по рамке, чтобы плавно проявлялась (градиенты сами не переходят). */
html.zv-black .card{position:relative;border:1px solid transparent;
  background:linear-gradient(180deg,#121216,#0c0c10) padding-box,
    linear-gradient(160deg,#ffffff 0%,#c9d0da 20%,#5d6570 50%,#aeb7c3 78%,#eef2f6 100%) border-box;
  box-shadow:inset 0 1px 0 rgba(235,242,255,.08),0 0 0 1px #000,0 0 12px rgba(200,214,235,.14),0 0 32px -10px rgba(170,190,220,.2);
  transition:transform .2s,box-shadow .3s;}
html.zv-black .card::after{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;pointer-events:none;
  background:linear-gradient(160deg,#fff1c4 0%,#f2b544 22%,#8a5a12 50%,#e0a234 78%,#ffd978 100%);
  -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);
  opacity:0;transition:opacity .3s;}
html.zv-black .card:hover::after{opacity:1;}
html.zv-black .card:hover{
  box-shadow:inset 0 1px 0 rgba(255,222,140,.18),inset 0 0 24px rgba(245,170,40,.05),0 0 0 1px #000,0 0 16px rgba(250,180,50,.42),0 0 52px -6px rgba(245,160,30,.45);}
@media (prefers-reduced-motion:reduce){html.zv-black .card,html.zv-black .card::after{transition:none;}}
html.zv-black .prose p,html.zv-black .prose li{color:#cfd3dc;}
html.zv-black .prose code,html.zv-black code{background:rgba(255,255,255,.07);color:#e6e9ee;}
html.zv-black .chip,html.zv-black .chip-static{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.12);color:var(--sub);}
html.zv-black .say{background:#111116;border-color:rgba(255,255,255,.14);color:var(--t);}
html.zv-black .say::after{background:#111116;border-color:rgba(255,255,255,.14);}
html.zv-black .flow-arrow::after{background:linear-gradient(90deg,transparent,#dfe4ec);}
html.zv-black .stat{background:linear-gradient(180deg,#f6f8fa 0%,#b9c0c9 46%,#7c8591 54%,#e3e7ec 100%);-webkit-background-clip:text;background-clip:text;color:transparent;}
html.zv-black .net-box,html.zv-black .inka-tip p{background:#0b0b0e;border-color:rgba(255,255,255,.1);}
html.zv-black .site-footer{background:#030304;border-top-color:rgba(255,255,255,.06);}
html.zv-black table th{background:rgba(255,255,255,.04);}
html.zv-black table td,html.zv-black table th{border-color:rgba(255,255,255,.08);}

/* снимки программы — на чёрном, с тонкой платиновой кромкой */
html.zv-black .shot{background:#040405;border-color:rgba(255,255,255,.12);box-shadow:0 0 0 1px rgba(255,255,255,.04),0 40px 90px -40px rgba(0,0,0,.95),0 0 120px -50px rgba(223,228,236,.22);}
html.zv-black .hero-glow span{opacity:.18;filter:blur(90px) grayscale(1);}
html.zv-black .hero-glow::before{opacity:.12;}
html.zv-black .spot::before{background:radial-gradient(circle at 50% 28%,#3a3c44,#1a1b20 55%,#0a0a0d);
  box-shadow:inset 0 0 0 1.5px rgba(223,228,236,.28),inset 0 -22px 44px rgba(0,0,0,.4),0 20px 50px -20px rgba(223,228,236,.25);}
html.zv-black .tc-art.shot,html.zv-black .tc-art.cover{background:#0e0e12;}
html.zv-black .bank-search,html.zv-black .bank-chips .chip{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.14);}
html.zv-black .bank-chips .chip.on{background:linear-gradient(180deg,rgba(235,242,255,.12),rgba(70,90,130,.08));border-color:rgba(223,228,236,.4);}
html.zv-black .bank-cat,html.zv-black .bank-card details summary{color:#c8d2e0;}
html.zv-black .bank-search:focus{border-color:rgba(223,228,236,.5);}
html.zv-black .editions .edition-full{background:linear-gradient(180deg,#16161b,#0e0e12);}

/* обычные кнопки — сталь */
html.zv-black .btn{background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02));border-color:rgba(255,255,255,.16);color:var(--t);}
html.zv-black .btn:hover{border-color:rgba(223,228,236,.4);color:#fff;}
/* «Скачать» — чёрная, сзади золотое свечение, надпись золотом светится изнутри (как у ZmNx SSH) */
html.zv-black .btn-primary{position:relative;isolation:isolate;background:radial-gradient(120% 140% at 50% 0%,#17140e,#050505 70%);
  border:1px solid rgba(234,217,174,.38);color:#f4e2b2;
  text-shadow:0 0 6px rgba(244,214,140,.85),0 0 16px rgba(226,186,104,.55),0 0 30px rgba(200,150,70,.35);
  box-shadow:inset 0 1px 0 rgba(255,236,190,.12),inset 0 0 18px rgba(226,186,104,.08),0 0 0 1px #000,0 0 22px rgba(226,186,104,.38),0 0 56px -6px rgba(200,150,70,.45);
  animation:zvgold 4.5s ease-in-out infinite;}
html.zv-black .btn-primary [data-f]{color:#ead9ae;}
@keyframes zvgold{0%,100%{box-shadow:inset 0 1px 0 rgba(255,236,190,.12),inset 0 0 18px rgba(226,186,104,.08),0 0 0 1px #000,0 0 22px rgba(226,186,104,.32),0 0 56px -6px rgba(200,150,70,.38);}
  50%{box-shadow:inset 0 1px 0 rgba(255,236,190,.16),inset 0 0 22px rgba(226,186,104,.12),0 0 0 1px #000,0 0 30px rgba(226,186,104,.52),0 0 80px -4px rgba(210,160,80,.55);}}
@media (prefers-reduced-motion:reduce){html.zv-black .btn-primary{animation:none;}}
html.zv-black .btn-primary:hover{color:#fff1cc;background:radial-gradient(120% 140% at 50% 0%,#211b10,#070706 70%);border-color:rgba(244,222,170,.6);
  text-shadow:0 0 8px rgba(255,226,150,.95),0 0 22px rgba(236,196,110,.7),0 0 40px rgba(210,160,80,.45);}
html.zv-black .subnav .btn-primary{box-shadow:inset 0 1px 0 rgba(255,236,190,.12),0 0 0 1px #000,0 0 14px rgba(226,186,104,.3);animation:none;}

/* --- вступление «Выбери сторону» (с 16.10): шов, два мира, ИнКа «расшифровывается» на шве ---
   --seam — где шов (50% — посередине, наведение двигает, выбор заливает экран). Тайминг: шов 0–0,9 с, мир раскрывается
   0,6–1,6 с, ИнКа 1,1–2,5 с, надпись и кнопки — с 2,2 с. */
@property --seam{syntax:"<percentage>";inherits:true;initial-value:50%}
@property --open{syntax:"<number>";inherits:true;initial-value:0}
html.zv-picking body{overflow:hidden;}
.zi{--seam:50%;--open:0;position:fixed;inset:0;z-index:200;overflow:hidden;background:#000;color:#eef0f3;
  transition:--seam .7s cubic-bezier(.65,0,.35,1),opacity .6s ease;font-family:var(--sans,Inter,"Segoe UI",sans-serif);}
.zi[hidden]{display:none;}
.zi.zi-go{animation:ziopen 1s cubic-bezier(.2,.7,.2,1) .6s both;}
@keyframes ziopen{from{--open:0}to{--open:1}}
.zi.zi-gone{opacity:0;}
/* два мира: раскрываются от шва в стороны */
.zi-half{position:absolute;top:0;bottom:0;border:0;padding:0;margin:0;cursor:pointer;overflow:hidden;font:inherit;color:inherit;outline:none;
  transition:filter .4s;}
.zi-l{left:0;width:var(--seam);
  background:radial-gradient(70% 60% at 30% 35%,rgba(139,108,246,.55),transparent 70%),radial-gradient(60% 50% at 80% 90%,rgba(64,120,255,.35),transparent 70%),#131533;}
.zi-r{left:var(--seam);right:0;
  background:radial-gradient(60% 55% at 70% 30%,rgba(223,228,236,.10),transparent 70%),radial-gradient(50% 40% at 30% 95%,rgba(226,186,104,.10),transparent 70%),
    repeating-linear-gradient(180deg,rgba(255,255,255,.018) 0 1px,transparent 1px 3px),#050506;}
/* раскрытие от шва: левая — к левому краю, правая — к правому */
.zi-l{clip-path:inset(0 0 0 calc((1 - var(--open)) * 100%));}
.zi-r{clip-path:inset(0 calc((1 - var(--open)) * 100%) 0 0);}
.zi:not(.zi-go) .zi-half{opacity:0;}
.zi.zi-go .zi-half{animation:zihalf .9s cubic-bezier(.2,.7,.2,1) .6s both;}
@keyframes zihalf{from{opacity:0;filter:brightness(2.2) saturate(.3)}to{opacity:1;filter:none}}
.zi-grid{position:absolute;inset:-48px 0 0 -48px;opacity:.35;will-change:transform;
  background:linear-gradient(rgba(167,139,250,.18) 1px,transparent 1px) 0 0/48px 48px,linear-gradient(90deg,rgba(167,139,250,.18) 1px,transparent 1px) 0 0/48px 48px;
  -webkit-mask-image:radial-gradient(80% 70% at 50% 60%,#000,transparent);mask-image:radial-gradient(80% 70% at 50% 60%,#000,transparent);animation:zigrid 14s linear infinite;}
/* сетка едет трансформацией — без перерисовки всего экрана каждый кадр */
@keyframes zigrid{to{transform:translate(48px,48px)}}
.zi-dust{position:absolute;inset:-50% 0 0;opacity:.8;
  background:radial-gradient(1.6px 1.6px at 12% 30%,rgba(255,215,140,.8),transparent),radial-gradient(1.2px 1.2px at 32% 70%,rgba(255,215,140,.6),transparent),
    radial-gradient(1.8px 1.8px at 58% 20%,rgba(255,225,160,.75),transparent),radial-gradient(1.2px 1.2px at 74% 55%,rgba(255,215,140,.55),transparent),
    radial-gradient(1.5px 1.5px at 88% 85%,rgba(255,225,160,.7),transparent),radial-gradient(1.1px 1.1px at 45% 92%,rgba(255,215,140,.5),transparent);
  background-size:340px 340px;animation:zidust 22s linear infinite;will-change:transform;}
@keyframes zidust{to{transform:translateY(33.3%)}}
.zi-l:hover,.zi-l:focus-visible{filter:brightness(1.12);}
.zi-r:hover,.zi-r:focus-visible{filter:brightness(1.25);}
/* кнопки внизу каждой стороны */
.zi-btn{position:absolute;bottom:clamp(28px,7vh,64px);display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px 26px;border-radius:999px;
  font:700 17px/1.1 var(--display,"Unbounded",sans-serif);white-space:nowrap;opacity:0;transition:transform .25s,box-shadow .25s;}
.zi-btn small{font:500 12px/1 var(--sans,Inter,sans-serif);opacity:.75;letter-spacing:.02em}
.zi-l .zi-btn{left:50%;transform:translateX(-50%);color:#fff;background:linear-gradient(135deg,#a36bff,#5d7bff);box-shadow:0 14px 40px -12px rgba(139,108,246,.9);}
.zi-r .zi-btn{left:50%;transform:translateX(-50%);color:#f4e2b2;background:radial-gradient(120% 140% at 50% 0%,#17140e,#050505 70%);
  border:1px solid rgba(234,217,174,.4);text-shadow:0 0 8px rgba(244,214,140,.7);box-shadow:0 0 0 1px #000,0 0 26px rgba(226,186,104,.35);}
.zi-half:hover .zi-btn,.zi-half:focus-visible .zi-btn{transform:translateX(-50%) translateY(-4px);}
.zi-r:hover .zi-btn,.zi-r:focus-visible .zi-btn{box-shadow:0 0 0 1px #000,0 0 40px rgba(226,186,104,.6);}
.zi.zi-go .zi-btn{animation:ziup .6s ease 2.5s both;}
@keyframes ziup{from{opacity:0;translate:0 14px}to{opacity:1;translate:0 0}}
/* шов: прочерчивается сверху вниз, светится платиной и золотом */
.zi-seam{position:absolute;top:0;bottom:0;left:var(--seam);width:2px;margin-left:-1px;pointer-events:none;z-index:3;
  background:linear-gradient(180deg,#fff1c4,#dfe8f5 40%,#a9c4e8 60%,#e2c88e);box-shadow:0 0 12px rgba(223,232,245,.8),0 0 40px rgba(169,196,232,.45);
  transform-origin:top;transform:scaleY(0);}
.zi.zi-go .zi-seam{animation:ziseam .9s cubic-bezier(.7,0,.2,1) both;}
@keyframes ziseam{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.zi.zi-out .zi-seam{opacity:0;transition:opacity .4s .3s;}
/* ИнКа: два слоя на весь экран, шов делит — слева в обычном, справа в куртке */
.zi-inka{position:absolute;inset:0;pointer-events:none;z-index:2;clip-path:inset(100% 0 0 0);}
.zi.zi-go .zi-inka{animation:zireveal 1.4s cubic-bezier(.3,.6,.2,1) 1.1s both;}
@keyframes zireveal{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0 0 0 0)}}
/* ИнКа — ровно между карточкой сверху и кнопками снизу: отступы --zi-top/--zi-bot меряет ai-view.js (fit) */
.zi-layer{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:var(--zi-top,150px) 0 var(--zi-bot,24px);}
.zi-layer img{display:block;height:100%;max-height:780px;width:auto;max-width:none;}
/* фигуры на двух картинках стоят со сдвигом на 80px из 560: разводим их навстречу, чтобы шов резал обе по оси */
.zi-lc img{translate:7.15% 0;}
.zi-lb img{translate:-7.15% 0;}
.zi-lc{clip-path:inset(0 calc(100% - var(--seam)) 0 0);}
.zi-lb{clip-path:inset(0 0 0 var(--seam));}
.zi.zi-go .zi-layer img{animation:ziglitch 1.4s steps(1) 1.1s both;}
@keyframes ziglitch{0%{transform:translateX(-6px);filter:hue-rotate(40deg) brightness(1.6)}12%{transform:translateX(5px)}24%{transform:none;filter:none}
  40%{transform:translateX(-3px)}46%{transform:none}70%{transform:translateX(2px) skewX(-2deg)}74%,100%{transform:none}}
/* сканирующий луч идёт снизу вверх вместе с проявлением */
.zi-scan{position:absolute;left:0;right:0;bottom:0;height:3px;opacity:0;z-index:4;
  background:linear-gradient(90deg,transparent,rgba(223,232,245,.9) 30%,#fff 50%,rgba(226,186,104,.9) 70%,transparent);box-shadow:0 0 20px 4px rgba(169,196,232,.5);}
.zi.zi-go .zi-scan{animation:ziscan 1.4s cubic-bezier(.3,.6,.2,1) 1.1s both;}
@keyframes ziscan{0%{opacity:1;bottom:0}90%{opacity:1}100%{opacity:0;bottom:100%}}
/* надпись */
.zi-say{position:absolute;left:50%;top:clamp(20px,6vh,60px);transform:translateX(-50%);z-index:5;width:min(560px,calc(100% - 32px));text-align:center;pointer-events:none;
  padding:16px 22px 14px;border-radius:18px;background:rgba(5,5,8,.78);box-shadow:0 0 0 1px rgba(255,255,255,.1);opacity:0;}
.zi.zi-go .zi-say{animation:ziup .7s ease 2.2s both;}
.zi-kicker{margin:0 0 6px;font:600 11px/1 var(--mono,monospace);letter-spacing:.18em;text-transform:uppercase;color:#a9b1bd;}
.zi-say h2{margin:0 0 8px;font:700 clamp(24px,3.4vw,36px)/1.1 var(--display,"Unbounded",sans-serif);
  background:linear-gradient(90deg,#c9b8ff 0%,#ffffff 50%,#e2c88e 100%);-webkit-background-clip:text;background-clip:text;color:transparent;}
.zi-say p{margin:0;font-size:14px;line-height:1.45;color:#c9cdd6;}
.zi-skip{position:absolute;right:16px;top:14px;z-index:6;border:0;background:none;color:rgba(255,255,255,.55);font:500 13px var(--sans,Inter,sans-serif);cursor:pointer;padding:6px 10px;border-radius:8px;opacity:0;}
.zi-skip:hover{color:#fff;background:rgba(255,255,255,.08);}
.zi.zi-go .zi-skip{animation:ziup .5s ease 1s both;}
/* уход: надпись и кнопки гаснут, выбранная сторона заливает экран */
.zi.zi-out .zi-say,.zi.zi-out .zi-btn,.zi.zi-out .zi-skip{opacity:0!important;transition:opacity .25s;animation:none;}
.zi.zi-out .zi-inka{opacity:0;transition:opacity .45s .1s;}
@media (max-width:720px){
  .zi-btn{padding:11px 16px;font-size:14px;}
  .zi-btn small{display:none;}
  .zi-say{padding:12px 14px 10px;}
  .zi-say p{font-size:12.5px;}
}
@media (prefers-reduced-motion:reduce){
  .zi,.zi *{animation-duration:.01s!important;animation-delay:0s!important;transition-duration:.01s!important;}
}

/* --- «Вид» — переключить потом: круглое «затмение» в углу --- */
.zv-bar{position:fixed;left:16px;bottom:16px;z-index:60;width:36px;height:36px;padding:0;border:0;border-radius:50%;cursor:pointer;
  background:rgba(19,21,51,.55);box-shadow:0 0 0 1px var(--brd2),0 10px 26px -12px rgba(0,0,0,.7);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:zv-in .6s cubic-bezier(.2,1.4,.4,1) .8s both;}
.zv-bar[hidden]{display:none;}
/* диск: левая половина светлая, правая тёмная; в тёмной теме повёрнут — тёмная слева */
.zv-disc{position:absolute;inset:8px;border-radius:50%;overflow:hidden;background:#f3f1ff;
  box-shadow:0 0 0 1.5px rgba(255,255,255,.55),0 0 14px rgba(139,108,255,.55);transition:transform .7s cubic-bezier(.65,0,.25,1),box-shadow .3s;}
.zv-disc i{position:absolute;inset:0 0 0 50%;background:#14112e;}
.zv-disc::after{content:"";position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 30% 28%,rgba(255,255,255,.55),transparent 45%);}
html.zv-black .zv-disc{transform:rotate(180deg);background:#e9edf3;box-shadow:0 0 0 1.5px rgba(223,228,236,.45),0 0 12px rgba(200,212,230,.35);}
html.zv-black .zv-disc i{background:#050506;}
html.zv-black .zv-bar{background:rgba(10,10,13,.6);}
.zv-bar:hover .zv-disc{transform:rotate(-35deg) scale(1.08);}
html.zv-black .zv-bar:hover .zv-disc{transform:rotate(145deg) scale(1.08);}
.zv-bar:focus-visible{outline:2px solid var(--violet);outline-offset:3px;}
/* подпись: выезжает вправо при наведении */
.zv-tip{position:absolute;left:44px;top:50%;padding:6px 10px;border-radius:999px;white-space:nowrap;pointer-events:none;
  font:600 12px/1 var(--sans);color:var(--sub);background:rgba(19,21,51,.85);box-shadow:0 0 0 1px var(--brd2);
  opacity:0;transform:translate(-6px,-50%);transition:opacity .2s,transform .25s;}
html.zv-black .zv-tip{background:rgba(10,10,13,.88);}
.zv-bar:hover .zv-tip,.zv-bar:focus-visible .zv-tip{opacity:1;transform:translate(0,-50%);}
@keyframes zv-in{from{opacity:0;transform:scale(.4) rotate(-90deg);}}
/* волна смены вида: старая страница стоит, новая раскрывается кругом (ai-view.js, wave) */
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal;}
::view-transition-new(root){z-index:2;}
@media (prefers-reduced-motion:reduce){.zv-bar{animation:none;}.zv-disc,.zv-tip{transition:none;}}
html.zv-picking .zv-bar{display:none;}

html.zv-black .eyes-logo{border-color:rgba(223,228,236,.28);}

/* ИнКа у «Живого голоса»: чёрная — шире (стойка микрофона в кадре), при той же ширине выходила мелкой; ростом — как обычная */
html.zv-black .voice-pack-inka{width:228px;}
@media (max-width:760px){html.zv-black .voice-pack-inka{width:152px;}}

/* ================================================================ весь сайт в чёрном (тестовая копия /dark-preview/, с 16.10)
   Раздел ZmNx·AI уже выше; здесь — главная, утилиты, статьи, «Если случилось». Палитра та же: чёрный, платина,
   золото — только у «Скачать» и плашек; Бит остаётся голубым — это его цвет, тонкой кромкой. */
html.zv-black .brand-tag{border-color:rgba(255,255,255,.12);background:rgba(255,255,255,.03);color:#a9b1bd;}
html.zv-black .brand-tag b{color:#dfe4ec;}
html.zv-black .tg-pill{background:linear-gradient(#0a0a0d,#0a0a0d) padding-box,linear-gradient(120deg,#dfe4ec,#8b93a0,#e2c88e) border-box;box-shadow:0 0 18px rgba(223,228,236,.12);}
html.zv-black .tg-pill:hover{box-shadow:0 0 26px rgba(223,228,236,.22);}
html.zv-black .tg-pill-txt small{color:#a9b1bd;}
html.zv-black .tg-pill-ava{background:#16161b;}
html.zv-black .stamp{color:#cfd6e2;border-color:rgba(223,228,236,.4);}
html.zv-black .feature{border-top-color:rgba(255,255,255,.07);}
html.zv-black .eyebrow{color:#a9b1bd;}

/* карточки утилит и статей: чёрные, картинка — на тёмной подложке своего оттенка */
html.zv-black .tcard{background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.01)),#0c0c10;border-color:rgba(255,255,255,.08);}
html.zv-black .tcard:hover{border-color:rgba(223,228,236,.35);box-shadow:0 22px 50px rgba(0,0,0,.6),0 0 0 1px rgba(223,228,236,.12);}
html.zv-black .tc-art{border-bottom-color:rgba(255,255,255,.07);}
html.zv-black .tc-art.shot,html.zv-black .tc-art.cover{background:radial-gradient(90% 90% at 20% 0%,rgba(223,228,236,.10),transparent 60%),#0a0a0d;}
html.zv-black .tc-art.shot img{box-shadow:0 0 0 1px rgba(255,255,255,.1),0 14px 40px rgba(0,0,0,.7);}
html.zv-black .tc-art.inka{background:radial-gradient(70% 90% at 50% 100%,hsl(var(--hh) 60% 45% / .28),transparent 70%),linear-gradient(160deg,hsl(var(--hh) 30% 11%),#08080a);}
html.zv-black .tcard .more,html.zv-black .link-card .more,html.zv-black .tg-strip-more{color:#dfe4ec;}
html.zv-black .tcard:focus-visible{outline-color:#dfe4ec;}
html.zv-black .link-card:hover{border-color:rgba(223,228,236,.35);}

/* Бит на страже: чёрный квадрат с голубой кромкой Бита, чат — как в Telegram ночью */
html.zv-black .bit-guard{border-color:rgba(84,224,255,.22);background:radial-gradient(60% 80% at 0% 0%,rgba(84,224,255,.06),transparent 60%),linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,.008)),#09090c;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 30px 80px -30px #000;}
html.zv-black .bit-chat{background:#0b0b0e;border-color:rgba(255,255,255,.1);box-shadow:0 30px 70px rgba(0,0,0,.7);}
html.zv-black .bc-head{border-bottom-color:rgba(255,255,255,.07);}
html.zv-black .bc-msg.me{background:linear-gradient(180deg,#2a3242,#1f2633);color:#eef3fb;box-shadow:inset 0 1px 0 rgba(255,255,255,.08);}
html.zv-black .bc-msg.bot{background:#16161b;color:#dfe2e8;box-shadow:inset 0 0 0 1px rgba(255,255,255,.05);}
html.zv-black .btn-bit{border-color:rgba(84,224,255,.35);}

/* «Если уже случилось» — тревожная полоса остаётся красной, но на чёрном */
html.zv-black .sos-band{background:linear-gradient(90deg,rgba(248,113,113,.10),rgba(248,113,113,.02)),#0a0909;border-color:rgba(248,113,113,.35);}
html.zv-black .sos-band-links a{background:rgba(10,10,12,.7);}
html.zv-black .duo-spot{background:radial-gradient(circle,rgba(223,228,236,.16),rgba(226,186,104,.06) 55%,transparent 70%);}
/* остальные плашки с синей заливкой — как .card */
html.zv-black .sos-card,html.zv-black .tg-st,html.zv-black .bit-card,html.zv-black .manifest{
  background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.012)),#0c0c10;border-color:rgba(255,255,255,.09);}
html.zv-black .sos-card:hover{border-color:rgba(223,228,236,.35);}
html.zv-black .sos-card .more{color:#dfe4ec;}
html.zv-black .tg-ava{background:#16161b;}

/* остатки классики (проверка цветов по всем страницам /dark-preview/, 16.10) */
html.zv-black .site-header .bit-logo rect[width="34"]{fill:#1b1c22;stroke:rgba(223,228,236,.55);stroke-width:1;}
html.zv-black .bit-logo rect[width="24"]{fill:#07080c;}
html.zv-black .bit-logo rect[fill="#8b6cf6"],html.zv-black .bit-logo line{fill:#9aa3b0;stroke:#9aa3b0;}
html.zv-black .docs-nav a.active{background:rgba(255,255,255,.06);border-left-color:#c8a86b;}
html.zv-black .subnav-links a.active{background:linear-gradient(180deg,rgba(235,242,255,.1),rgba(255,255,255,.03));}
html.zv-black .prose.tool-body img:not(.sticker){box-shadow:0 0 0 1px rgba(223,228,236,.12),0 34px 70px -30px rgba(0,0,0,.9);}
html.zv-black .prose kbd{background:#16161b;border-color:rgba(255,255,255,.16);}
html.zv-black .series-box{background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.01)),var(--card);border-color:rgba(255,255,255,.12);}
html.zv-black .series-box li.on a{background:rgba(255,255,255,.07);}
html.zv-black .series-box li.on .sp-n{background:#c8a86b;border-color:#c8a86b;color:#0a0a0d;}
html.zv-black .inka-note.test .in-bubble{border-color:rgba(223,228,236,.3);}
html.zv-black .inka-note.test .in-bubble::before,html.zv-black .inka-note.test .in-kicker{background:linear-gradient(90deg,#dfe4ec,#8b939f);}
html.zv-black .tc-art.inka{background:radial-gradient(70% 90% at 50% 100%,rgba(223,228,236,.16),transparent 70%),linear-gradient(160deg,#1c1d23,#0a0a0d);}
html.zv-black .tc-art.shot{background:radial-gradient(90% 90% at 20% 0%,rgba(223,228,236,.1),transparent 60%),#0e0e12;}
html.zv-black .tc-art.shot img{box-shadow:0 0 0 1px rgba(223,228,236,.14),0 14px 40px rgba(0,0,0,.6);}
html.zv-black .card svg [stroke="#a78bfa"],html.zv-black .card svg [stroke="#5aa2ff"],html.zv-black svg.ic[stroke="#a78bfa"],html.zv-black svg.ic[stroke="#5aa2ff"]{stroke:#dfe4ec;}
html.zv-black .sch-btn{background:linear-gradient(180deg,#f3f5f8,#b9c0c9);color:#0a0a0d;}
html.zv-black .sch-photo-pic{background:linear-gradient(135deg,#3a3c44,#121216);box-shadow:inset 0 0 0 1px rgba(223,228,236,.25);}
html.zv-black .tg-phone{background:linear-gradient(180deg,#17171c,#0b0b0e);}
html.zv-black .tg-msg.out{background:linear-gradient(135deg,#3a3c44,#24252b);}
html.zv-black .tg-ic.ch{background:rgba(255,255,255,.06);color:#dfe4ec;box-shadow:0 0 24px rgba(223,228,236,.12);}
html.zv-black .tg-post-img{background:radial-gradient(circle at 50% 30%,rgba(223,228,236,.12),transparent 70%),#0e0e12;}
html.zv-black .pt-bubble{background:#16161b;color:#e6e9ee;}
html.zv-black .pt-phone.chat .pt-bubble{background:#1d1e24;}

/* Снимки программ, у которых ещё нет тёмного вида (17.10): старые фиолетово-синие кричали на чёрном.
   Пока не пересняты — приглушаем до стали; при наведении — как есть. SSH уже в чёрном, у снимков с data-black своя пара */
html.zv-black :is(img[src^="/assets/img/wifi-"],img[src^="/assets/img/watch-"],img[src^="/assets/img/seif-"],
  img[src^="/assets/img/relay-"],img[src^="/assets/img/net-"],img[src^="/assets/img/clean-"],img[src^="/assets/img/theme-"],
  img[src^="/assets/img/chat."],img[src^="/assets/img/docs."],img[src^="/assets/img/connect."],img[src^="/assets/img/export."]):not([data-black]){
  filter:grayscale(.9) brightness(.82) contrast(1.06);transition:filter .35s ease;}
html.zv-black :is(img[src^="/assets/img/wifi-"],img[src^="/assets/img/watch-"],img[src^="/assets/img/seif-"],
  img[src^="/assets/img/relay-"],img[src^="/assets/img/net-"],img[src^="/assets/img/clean-"],img[src^="/assets/img/theme-"],
  img[src^="/assets/img/chat."],img[src^="/assets/img/docs."],img[src^="/assets/img/connect."],img[src^="/assets/img/export."]):not([data-black]):hover,
html.zv-black a:hover :is(img[src^="/assets/img/wifi-"],img[src^="/assets/img/watch-"],img[src^="/assets/img/seif-"],
  img[src^="/assets/img/relay-"],img[src^="/assets/img/net-"],img[src^="/assets/img/clean-"],img[src^="/assets/img/theme-"]):not([data-black]){filter:none;}

/* Браузерные утилиты (17.10): без цветных пятен, фиолетового и синего — сталь и платина, как программы ZmNx в чёрном */
html.zv-black .tool-hero::before{background:radial-gradient(closest-side,rgba(223,228,236,.07),transparent);}
html.zv-black input[type=checkbox],html.zv-black input[type=radio],html.zv-black input[type=range],html.zv-black progress{accent-color:#cfdcf0;}
html.zv-black .pt-mail,html.zv-black .pt-phone{background:#0b0b0e;}
html.zv-black .pp-en code{color:#dfe4ec;background:rgba(255,255,255,.04);}
html.zv-black .rd-mode.on,html.zv-black .st-dev.on,html.zv-black .sn-tab.on{color:#eef3fb;border-color:transparent;
  background:linear-gradient(180deg,rgba(235,242,255,.10),rgba(160,185,225,.06) 48%,rgba(70,90,130,.09));
  box-shadow:inset 0 1px 0 rgba(240,246,255,.12),inset 0 -1px 0 rgba(15,22,40,.35),inset 0 0 0 1px rgba(160,190,235,.18);}
html.zv-black .lc-item li.lc-redirect{color:#b9c3d1;}
html.zv-black .lc-item li.lc-expanded{color:#dfe4ec;}
html.zv-black .lc-shortbar{border-color:rgba(234,217,174,.28);background:rgba(234,217,174,.05);}
/* страницы списка статей: текущая — как «Скачать», чёрная с золотом */
html.zv-black .apager a:hover{border-color:rgba(223,228,236,.4);}
html.zv-black .apager .cur{background:radial-gradient(120% 140% at 50% 0%,#17140e,#050505 70%);border-color:rgba(234,217,174,.38);color:#f4e2b2;
  box-shadow:0 0 0 1px #000,0 0 18px rgba(226,186,104,.35);}
/* /tools/: выбранная кнопка переключателя — чёрная с золотом, как «Скачать» */
html.zv-black .tfilter{background:rgba(255,255,255,.02);border-color:rgba(255,255,255,.1);}
html.zv-black .tfilter button:hover{background:rgba(255,255,255,.06);}
html.zv-black .tfilter button[aria-pressed="true"]{color:#f4e2b2;background:radial-gradient(120% 140% at 50% 0%,#17140e,#050505 70%);
  box-shadow:inset 0 0 0 1px rgba(234,217,174,.38),0 0 18px rgba(226,186,104,.35);text-shadow:0 0 8px rgba(244,214,140,.6);}
html.zv-black .tfilter button[aria-pressed="true"] b{background:rgba(234,217,174,.14);color:#f4e2b2;}
/* На телефоне круг в углу закрывал текст (кнопки «Как установить», абзацы) — переезжает в шапку: левее аватарки
   Telegram, а где её нет (≤380 px, site.css) — сразу левее «бургера» */
@media (max-width:760px){
  .zv-bar{left:auto;right:118px;bottom:auto;top:calc(env(safe-area-inset-top,0px) + 14px);box-shadow:0 0 0 1px var(--brd2);}
  .zv-tip{left:auto;right:44px;transform:translate(6px,-50%);}
}
@media (min-width:561px) and (max-width:760px){.zv-bar{right:248px;}} /* у Telegram ещё видна надпись */
@media (max-width:380px){.zv-bar{right:66px;}}
