/* ═══════════════════════════════════════════════════════════════════
   СИСТЕМА — один набор цветов, шрифтов и деталей на весь клуб «Статус».

   Заведено 22.08.2026 при смене облика сайта. До этого каждая страница
   несла свою копию стилей: восемь разных наборов цветов, четыре размера
   кнопок, три оттенка одной и той же бронзы. Именно от этого сайт
   и выглядел «неказисто» — не от плохого вкуса, а от разнобоя.

   Правило простое: цвет, размер и отступ берутся отсюда. Если чего-то
   не хватает — добавляем сюда, а не в отдельную страницу.

   Две поверхности, одна система:
   · ночь (по умолчанию) — витрина, кабинет, урок. Тёмный кабинет,
     где текста немного и он крупный;
   · день (класс `den` на <html>) — оферта, персональные данные,
     реквизиты. Длинный юридический текст на тёмном фоне утомляет
     глаза, поэтому документы читаются с бумаги.

   ═══════════════════════════════════════════════════════════════════ */

@import url('/shrifty.css');

/* ── 1. Токены ──────────────────────────────────────────────────── */

:root{
  /* Ночь. Синева не чёрная, а стальная — цвет ткани костюма. */
  --fon:#070c15;             /* самый глубокий слой, фон страницы */
  --fon-2:#0b1220;           /* полосы и секции, чуть светлее фона */
  --poverhnost:#101a2e;      /* карточки */
  --poverhnost-2:#17243d;    /* приподнятое: выделенный тариф, панель */
  --liniya:rgba(142,160,196,.16);
  --liniya-2:rgba(142,160,196,.28);

  --tekst:#eee6d8;           /* основной — тёплый кремовый, не белый */
  --tekst-2:#a8b4ca;         /* второстепенный */
  --tekst-3:#7a869e;         /* подписи, юридическая мелочь */

  --bronza:#c08b41;          /* акцент */
  --bronza-sv:#e6bb7d;       /* цифры и всё, что должно светиться */
  --bronza-tmn:#8a6229;
  --bronza-tush:rgba(192,139,65,.12);   /* подложка акцента */
  --bronza-dym:rgba(192,139,65,.30);    /* рамка акцента */

  /* Шрифты */
  --shrift-zag:'Unbounded',-apple-system,BlinkMacSystemFont,sans-serif;
  --shrift:'Golos','Inter',-apple-system,BlinkMacSystemFont,sans-serif;

  /* Размеры. clamp — чтобы не держать отдельную мобильную шкалу:
     размер сам едет между телефоном и большим экраном. */
  --sh-hero:clamp(36px,6.6vw,84px);
  --sh-h2:clamp(27px,3.7vw,50px);
  --sh-h3:clamp(20px,2vw,27px);
  --sh-h4:clamp(17px,1.5vw,20px);
  --sh-lead:clamp(17px,1.45vw,21px);
  --sh-tekst:17px;
  --sh-melko:14.5px;
  --sh-metka:11px;
  --sh-cifra:clamp(30px,3.4vw,46px);

  /* Ритм. Всё кратно четырём — так блоки садятся на одну сетку. */
  --v1:4px;  --v2:8px;  --v3:12px; --v4:16px; --v5:24px;
  --v6:32px; --v7:48px; --v8:64px; --v9:96px; --v10:128px;

  --polya:clamp(20px,4vw,44px);       /* поля страницы */
  --shirina:1180px;                    /* полотно */
  --shirina-uzkaya:720px;              /* полотно для чтения */

  --r-mal:10px; --r:16px; --r-bol:24px; --r-kapsula:999px;

  --ten:0 20px 50px rgba(0,0,0,.42);
  --ten-mal:0 8px 22px rgba(0,0,0,.28);

  /* Движение. Одна плавность на весь сайт — тогда сайт ощущается
     как один предмет, а не как набор страниц.
     `--pruzhina` — мягкая пружина: разгон, лёгкий перелёт, возврат.
     Записана функцией linear(), потому что кривой Безье пружину
     не выразить. */
  --bystro:160ms cubic-bezier(.22,.61,.36,1);
  --plavno:280ms cubic-bezier(.22,.61,.36,1);
  --medlenno:620ms cubic-bezier(.16,.84,.28,1);
  --pruzhina:linear(0,.006,.025 2.8%,.101 6.1%,.539 18.9%,.721 25.3%,
    .849 31.5%,.937 38.1%,.968 41.8%,.991 45.7%,1.006 50.1%,1.015 60%,
    1.006 76.2%,1);
}

/* День — те же токены, другие значения. Ничего в компонентах менять
   не нужно: они читают имена, а не цвета. */
:root.den{
  --fon:#f6f3ec;
  --fon-2:#efeadf;
  --poverhnost:#fffdf8;
  --poverhnost-2:#fffdf8;
  --liniya:rgba(26,34,52,.13);
  --liniya-2:rgba(26,34,52,.22);

  --tekst:#141c2c;
  --tekst-2:#4e5a70;
  --tekst-3:#7d879a;

  --bronza:#8a6229;          /* на светлом нужен тёмный акцент: 4,8:1 */
  --bronza-sv:#7a561f;
  --bronza-tush:rgba(138,98,41,.09);
  --bronza-dym:rgba(138,98,41,.30);

  --ten:0 16px 40px rgba(20,28,44,.10);
  --ten-mal:0 6px 18px rgba(20,28,44,.07);
}

/* ── 2. База ────────────────────────────────────────────────────── */

*{box-sizing:border-box;margin:0;padding:0}

html{
  background:var(--fon);
  scroll-behavior:smooth;
  /* якорные ссылки не должны заезжать под плавающую шапку */
  scroll-padding-top:104px;
  -webkit-text-size-adjust:100%;
}

body{
  background:var(--fon);
  color:var(--tekst);
  font-family:var(--shrift);
  font-size:var(--sh-tekst);
  line-height:1.6;
  font-variant-numeric:tabular-nums;   /* цифры не пляшут при пересчёте */
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

/* Русские слова не рвём посреди слога — переносы уродуют текст.
   Длинные слова всё равно не сломают вёрстку: за это отвечает
   overflow-wrap на узких экранах. */
h1,h2,h3,h4,.cifra,.logo{
  font-family:var(--shrift-zag);
  font-weight:700;
  letter-spacing:-.03em;
  line-height:1.02;
  overflow-wrap:normal;
  word-break:normal;
  text-wrap:balance;         /* не оставляет одно слово на последней строке */
}
@media (max-width:520px){ h1,h2,h3,h4{overflow-wrap:break-word} }

h1{font-size:var(--sh-hero)}
h2{font-size:var(--sh-h2);line-height:1.04}
h3{font-size:var(--sh-h3);line-height:1.12;letter-spacing:-.02em}
h4{font-size:var(--sh-h4);line-height:1.2;letter-spacing:-.01em}

p{max-width:66ch}
a{color:inherit;text-decoration:none}

::selection{background:var(--bronza);color:var(--fon)}

/* Полоса прокрутки в цвет сайта — мелочь, которую замечают. */
*{scrollbar-color:var(--liniya-2) transparent;scrollbar-width:thin}

/* ── 3. Полотно и секции ────────────────────────────────────────── */

.polotno{max-width:var(--shirina);margin:0 auto;padding:0 var(--polya)}
.polotno.uzko{max-width:var(--shirina-uzkaya)}

section{padding:var(--v9) 0;position:relative}
@media (max-width:760px){ section{padding:var(--v8) 0} }

/* Шапка раздела: номер, заголовок, подзаголовок */
.shapka-razdela{margin-bottom:var(--v7);max-width:62ch}
.metka{
  font-family:var(--shrift-zag);
  font-size:var(--sh-metka);
  font-weight:600;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--bronza);
  margin-bottom:var(--v4);
  display:block;
}
.podzag{color:var(--tekst-2);margin-top:var(--v4);font-size:var(--sh-lead);
  line-height:1.5;max-width:58ch}

/* Волосяная линия с бронзовым свечением в середине — фирменная деталь,
   осталась от прежнего сайта: она держит преемственность. */
.liniya-metall{height:1px;border:0;background:linear-gradient(90deg,
  transparent,var(--liniya-2) 12%,var(--bronza) 50%,var(--liniya-2) 88%,transparent)}

/* ── 4. Шапка сайта: капсула, которая плывёт за человеком ───────── */

.shapka{
  position:sticky;top:var(--v3);z-index:60;
  margin:var(--v3) auto 0;max-width:calc(var(--shirina) - 0px);
  padding:0 var(--polya);
}
.shapka-vnutri{
  display:flex;align-items:center;gap:var(--v5);
  padding:12px 12px 12px 22px;
  border:1px solid var(--liniya);
  border-radius:var(--r-kapsula);
  background:color-mix(in srgb,var(--fon) 78%,transparent);
  backdrop-filter:blur(18px) saturate(1.4);
  -webkit-backdrop-filter:blur(18px) saturate(1.4);
  transition:padding var(--plavno),background var(--plavno),
             box-shadow var(--plavno),border-color var(--plavno);
}
/* Класс вешает dvizhenie.js, когда страница ушла вниз: капсула
   поджимается и уплотняется — как строка состояния в приложении. */
.shapka.plyvet .shapka-vnutri{
  padding:8px 8px 8px 18px;
  background:color-mix(in srgb,var(--fon) 92%,transparent);
  box-shadow:var(--ten-mal);
  border-color:var(--liniya-2);
}
.logo{font-size:20px;font-weight:800;letter-spacing:.02em;line-height:1;
  white-space:nowrap;flex:none}
.logo small,.logo span{display:block;font-family:var(--shrift);font-size:8.5px;
  font-weight:600;letter-spacing:.13em;text-transform:uppercase;
  color:var(--bronza);margin-top:4px;
  /* Само слово «СТАТУС» рвать нельзя — отсюда nowrap выше. А подпись
     «место, где становятся квалифицированными» — это 297 пикселей,
     которые на узком телефоне выталкивали за край экрана то ссылку
     в шапке документов, то карточку формы регистрации. Ей перенос
     разрешён. Замерено 27.08.2026. */
  white-space:normal}
.shapka nav{display:flex;align-items:center;gap:var(--v5);margin-left:auto;
  font-size:15px;color:var(--tekst-2)}
.shapka nav a{white-space:nowrap;transition:color var(--bystro)}
.shapka nav a:hover{color:var(--tekst)}

/* Старая цена рядом с новой. Зачёркивание по умолчанию кладёт линию
   ровно посередине цифр и делает их нечитаемыми — а прочитать старую
   цену человек должен, иначе скидка не работает. Поэтому цена бледнее,
   мельче и с тонкой линией. */
.cena s{color:var(--tekst-3);font-size:.62em;font-weight:600;
  text-decoration:line-through;text-decoration-thickness:1.5px;
  text-decoration-color:var(--tekst-3);margin-right:.28em;
  letter-spacing:-.02em}

/* Шапка на телефоне.

   До 27.08.2026 шапка не была рассчитана на узкий экран нигде, кроме
   кабинета, — а он прятал пункты своим правилом. Замер показал: страницы
   облигаций, портфеля и чата уезжали вбок на 12–53 пикселя, потому что
   пять пунктов меню стоят в одну строку и не переносятся.

   Лечим двумя вещами. Слоган под логотипом в шапке на телефоне не нужен —
   он занимает 297 пикселей и ради него не должна страдать навигация.
   А меню пусть переносится на вторую строку, а не выталкивает страницу
   за край: это дешевле бургер-меню и ничего не прячет от человека.

   Шапка на сайте описана в девяти файлах и тремя разными именами:
   `.shapka` (витрина, кабинет, документы), `.verh` (облигации, уроки,
   разборы, оплата, чат) и `.nav` с `.nav-r` (размещения). Чинить в девяти
   местах — значит развалить снова при первой же новой странице, поэтому
   правило одно и живёт здесь.

   Селекторы начинаются с `body` намеренно: правила страниц лежат в их
   собственном <style> и идут ПОЗЖЕ этого файла, а при равной силе
   побеждает последний. Лишний `body` поднимает силу на единицу —
   и правило телефона выигрывает у всех трёх шапок сразу. */

@media (max-width:620px){
  body .shapka .logo small, body .shapka .logo span,
  body .verh   .logo small, body .verh   .logo span,
  body .nav    .logo small, body .nav    .logo span{display:none}

  body .shapka nav, body .verh nav, body .nav-r{
    flex-wrap:wrap;justify-content:flex-end;gap:var(--v4);row-gap:8px;
    font-size:14px}
}

/* ── Шапка на телефоне: ниже и непрозрачная ──────────────────────
   Разбор 10.09.2026. Капсула шапки полупрозрачная с размытием —
   на большом экране это красиво, а на телефоне сквозь неё просвечивал
   текст, который в этот момент проезжает снизу. Получалась каша из
   двух слоёв букв: человек читает заголовок и видит сквозь него
   «СТАТУС · Меню · Вступить».

   Делаем две вещи: фон почти сплошной (текст под ней больше не виден)
   и капсула ниже — 63 пикселя из 844 это много, когда снизу ещё
   плашка про cookie. */
@media (max-width:700px){
  body .shapka{top:8px;margin-top:8px}
  /* ⚠️ Размытие фона (backdrop-filter) на телефоне снято намеренно.
     Оно пересчитывается на каждом кадре прокрутки по всей площади
     капсулы, и это одна из причин, по которым страница дёргалась
     (замер 10.09.2026). Капсула и так почти непрозрачная — размытие
     под ней всё равно не читалось. */
  body .shapka-vnutri{
    padding:7px 7px 7px 16px;
    background:var(--fon);
    backdrop-filter:none;-webkit-backdrop-filter:none;
  }
  body .shapka.plyvet .shapka-vnutri{
    padding:6px 6px 6px 14px;
    background:var(--fon);
  }
  body .shapka .logo{font-size:17px}
  body .shapka .knopka{min-height:40px;padding:10px 18px;font-size:13.5px}
  body .shapka nav{font-size:14px;gap:10px}

  /* Якорные переходы («Цены», «Программа») не должны утыкаться
     заголовком в шапку — оставляем ей место. */
  body [id]{scroll-margin-top:74px}

  /* Уехала вниз — шапка убирается с глаз. Класс вешает dvizhenie.js. */
  body .shapka{transition:transform .28s ease}
  body .shapka.spryatana{transform:translateY(-140%)}
}

/* ── Мелкий шрифт на телефоне ────────────────────────────────────
   На витрине 6 300 знаков набраны кеглем 11–14 px: подписи, заметки,
   сноски. На мониторе это спокойная мелочь, в руке — «не читается».
   Поднимаем нижнюю границу до 15 px; служебные надписи капителью
   (метки разделов) оставляем как есть — они короткие и разрежены. */
@media (max-width:700px){
  body .zametka, body .melko, body .podzag small, body .vynoska,
  body .sub, body .opis, body .tiho, body .primechanie{font-size:15px}
  body p, body li{font-size:16px}
}

/* ── 5. Кнопки ──────────────────────────────────────────────────── */

.knopka{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:var(--shrift-zag);font-size:14.5px;font-weight:600;
  letter-spacing:-.01em;
  padding:14px 26px;border:1px solid transparent;border-radius:var(--r-kapsula);
  background:var(--bronza);color:#0a0f1a;cursor:pointer;
  min-height:48px;                       /* палец попадает без прицеливания */
  transition:transform var(--bystro),background var(--bystro),
             box-shadow var(--bystro),border-color var(--bystro),color var(--bystro);
}
.knopka:hover{background:var(--bronza-sv);transform:translateY(-2px);
  box-shadow:0 10px 26px rgba(192,139,65,.28)}
.knopka:active{transform:translateY(0) scale(.985)}
.knopka.tihaya{background:transparent;color:var(--tekst);border-color:var(--liniya-2)}
.knopka.tihaya:hover{background:var(--bronza-tush);border-color:var(--bronza-dym);
  color:var(--tekst);box-shadow:none}
.knopka.malaya{padding:10px 18px;min-height:40px;font-size:13.5px}
.knopka.vo-vsyu{width:100%}

/* ── 6. Карточки и поверхности ──────────────────────────────────── */

.karta{
  background:var(--poverhnost);
  border:1px solid var(--liniya);
  border-radius:var(--r);
  padding:var(--v6);
  position:relative;
  transition:transform var(--plavno),border-color var(--plavno),
             background var(--plavno);
}
.karta.zhivaya:hover{transform:translateY(-4px);border-color:var(--bronza-dym)}
.karta.vazhnaya{background:var(--poverhnost-2);border-color:var(--bronza-dym)}

/* Ярлычок, приколотый к верхнему краю карточки */
.yarlyk{
  position:absolute;top:-11px;left:var(--v6);
  font-family:var(--shrift-zag);font-size:10.5px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;
  background:var(--bronza);color:#0a0f1a;
  padding:5px 14px;border-radius:var(--r-kapsula);
}

/* Выноска — то, что важно не пропустить */
.vynoska{
  background:var(--bronza-tush);
  border-left:2px solid var(--bronza);
  border-radius:0 var(--r-mal) var(--r-mal) 0;
  padding:var(--v5) var(--v5);
  font-size:16px;line-height:1.6;
}

/* ── 7. Цифры ───────────────────────────────────────────────────── */

.cifra{font-size:var(--sh-cifra);font-weight:700;color:var(--bronza-sv);
  letter-spacing:-.04em;line-height:1}
.cifra-podpis{font-size:11px;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--tekst-3);margin-top:10px;
  font-family:var(--shrift)}

/* Полоса прогресса — сердце продукта. Заполняется, когда въезжает
   в экран: человек видит не картинку, а движение к цели. */
.polosa{height:6px;border-radius:var(--r-kapsula);background:var(--liniya);
  overflow:hidden}
.polosa i{
  display:block;height:100%;border-radius:inherit;
  background:linear-gradient(90deg,var(--bronza-tmn),var(--bronza-sv));
  transform-origin:left center;transform:scaleX(0);
  transition:transform 1.1s var(--medlenno);
}
.vidno .polosa i{transform:scaleX(var(--dolya,1))}

/* ── 8. Поля ввода ──────────────────────────────────────────────── */

label{display:block;font-family:var(--shrift);font-size:10.5px;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;color:var(--tekst-3);
  margin-bottom:10px}
input,select,textarea{
  width:100%;padding:14px 16px;font-family:inherit;font-size:16px;
  color:var(--tekst);background:var(--fon-2);
  border:1px solid var(--liniya);border-radius:var(--r-mal);
  transition:border-color var(--bystro),box-shadow var(--bystro);
}
input:focus,select:focus,textarea:focus{
  outline:none;border-color:var(--bronza);
  box-shadow:0 0 0 3px var(--bronza-tush);
}
input::placeholder{color:var(--tekst-3)}

/* Видимая обводка при ходьбе по клавиатуре — доступность. */
:focus-visible{outline:2px solid var(--bronza);outline-offset:3px;border-radius:4px}

/* ── 9. Бегущая лента ───────────────────────────────────────────── */
/* Наклонная строка через весь экран. Она не украшение: в ней
   перечислено то, из чего складывается путь до статуса.

   23.08.2026, по замечанию Игоря — «не дотягивает по сочности».
   Он прав, и причина не в цвете, а в трёх вещах:

   · текст был мелкий (12,5px) и разреженный — лента читалась как
     подпись, а не как заявление. Стало 18px, вес 800, трекинг почти
     нулевой: буквы держатся плотно и занимают полосу целиком;
   · заливка была плоской. Бронза — это металл, а металл не бывает
     одного тона: даём градиент вдоль ленты, светлый кант сверху
     и тёмный снизу — полоса перестаёт быть наклейкой;
   · по ней раз в несколько секунд проходит блик. Это то, чем берут
     кислотные ленты у молодёжных сайтов, только на нашем языке:
     не яркостью цвета, а отражением света.

   Кислоту не берём: у нас взрослая аудитория и тёмный костюмный фон,
   ядовитый зелёный на нём читается как чужой сайт. */

/* Обёртка нужна из-за поворота: наклонённая и увеличенная лента шире
   экрана — это задумано, иначе по краям видны треугольные щели. Но её
   ширина попадает в размер документа, и на телефоне страница начинала
   ездить вбок (замерено 24.08.2026: экран 390, документ 398).
   `body{overflow-x:hidden}` это не спасал. Обрезаем здесь. */
/* Обёртка ленты обрезает её по бокам — и только по бокам.

   Была высотой 65 пикселей при ленте в 105: повёрнутая лента в неё
   не влезала, и ей срезало верхний и нижний углы ровной горизонталью,
   а тень обрезало целиком. Наклон из-за этого читался не как приём,
   а как криво обрезанная полоска. Замерено 27.08.2026.

   Поля считаем от ширины экрана: чем шире экран, тем выше поднимаются
   концы наклонённой ленты (на 1280 пикселях — почти на 19), и тем
   больше места ей нужно. Снизу добавлено на тень: она уходит вниз
   на 12 пикселей и размывается ещё на 34. */
.lenta-obertka{
  overflow:hidden;
  margin:var(--v8) 0;
  padding:clamp(16px,3.2vw,42px) 0 clamp(26px,4.6vw,60px);
}

.lenta{
  position:relative;overflow:hidden;
  padding:18px 0;transform:rotate(-1.6deg) scale(1.04);
  --shag:34s;
  background:linear-gradient(97deg,
    #8a6229 0%, #c08b41 18%, #e6bb7d 34%, #c08b41 52%,
    #e6bb7d 68%, #a8752f 86%, #8a6229 100%);
  box-shadow:0 12px 34px rgba(192,139,65,.26),
             inset 0 1px 0 rgba(255,240,214,.5),
             inset 0 -1px 0 rgba(0,0,0,.22);
}
/* Блик: пробегает поверх текста, ничего не перекрывая по смыслу */
.lenta::after{
  content:'';position:absolute;inset:0;pointer-events:none;z-index:2;
  background:linear-gradient(100deg,transparent 38%,
    rgba(255,247,232,.5) 50%,transparent 62%);
  transform:translateX(-100%);
  animation:blik 5.5s ease-in-out infinite;
}
@keyframes blik{ 0%{transform:translateX(-100%)} 55%,100%{transform:translateX(100%)} }

/* Бежит только после того, как скрипт удвоил содержимое (класс `gotova`).
   24.08.2026: до этой правки анимация стартовала сразу с версткой, а копию
   строки добавлял `defer`-скрипт уже после первой отрисовки. Получалось два
   дефекта: видимый скачок в момент удвоения (ширина менялась вдвое, а сдвиг
   -50% начинал означать другое расстояние) и, если скрипт не отработал вовсе,
   лента через 17 секунд уезжала в пустоту и больше не возвращалась.
   Теперь без скрипта она просто стоит — текст на месте, как и требует
   правило «без JavaScript сайт остаётся целым». */
.lenta .stroka{display:flex;width:max-content;position:relative;z-index:1}
.lenta .stroka.gotova{animation:begi var(--shag) linear infinite}
.lenta span{
  font-family:var(--shrift-zag);font-size:18px;font-weight:800;
  letter-spacing:.02em;text-transform:uppercase;
  padding:0 18px;white-space:nowrap;color:#20160a;
  text-shadow:0 1px 0 rgba(255,240,214,.35);
}
/* Разделитель — ромб, а не точка: на плотном тексте точка теряется */
.lenta .tochka{color:rgba(32,22,10,.42);font-size:14px}
.lenta:hover .stroka{animation-play-state:paused}
@keyframes begi{ to{transform:translateX(-50%)} }

@media (max-width:620px){
  .lenta{padding:14px 0}
  .lenta span{font-size:14.5px;padding:0 14px}
}
@media (prefers-reduced-motion:reduce){ .lenta::after{animation:none;opacity:0} }

/* ── 10. Выдвижная панель — «окно», которое выезжает ────────────── */
/* Сделана на popover: браузер сам кладёт её поверх всего, сам
   закрывает по Esc и по клику мимо. Ни одной строчки на это не тратим. */

.panel{
  position:fixed;inset:0 0 0 auto;margin:0;
  width:min(520px,100%);height:100dvh;max-height:100dvh;
  background:var(--poverhnost);color:var(--tekst);
  border:0;border-left:1px solid var(--liniya-2);
  padding:var(--v8) var(--v7) var(--v7);
  overflow-y:auto;overscroll-behavior:contain;
  box-shadow:-30px 0 70px rgba(0,0,0,.5);
  transform:translateX(100%);
  transition:transform var(--plavno),overlay var(--plavno) allow-discrete,
             display var(--plavno) allow-discrete;
}
.panel:popover-open{transform:translateX(0)}
@starting-style{ .panel:popover-open{transform:translateX(100%)} }
.panel::backdrop{
  background:rgba(4,8,16,.62);backdrop-filter:blur(3px);
  opacity:0;transition:opacity var(--plavno),overlay var(--plavno) allow-discrete,
    display var(--plavno) allow-discrete;
}
.panel:popover-open::backdrop{opacity:1}
@starting-style{ .panel:popover-open::backdrop{opacity:0} }

.panel .zakryt{
  position:absolute;top:var(--v5);right:var(--v5);
  width:40px;height:40px;border-radius:50%;
  border:1px solid var(--liniya);background:transparent;color:var(--tekst-2);
  font-size:20px;line-height:1;cursor:pointer;
  transition:background var(--bystro),color var(--bystro),transform var(--bystro);
}
.panel .zakryt:hover{background:var(--bronza-tush);color:var(--tekst);transform:rotate(90deg)}
.panel h3{margin-bottom:var(--v4)}
.panel p{color:var(--tekst-2);margin-bottom:var(--v4)}

/* На телефоне панель выезжает снизу — так держат руку, а не тянутся
   к дальнему краю экрана. */
@media (max-width:700px){
  .panel{
    inset:auto 0 0 0;width:100%;height:auto;max-height:88dvh;
    border-left:0;border-top:1px solid var(--liniya-2);
    border-radius:var(--r-bol) var(--r-bol) 0 0;
    padding:var(--v7) var(--v5) var(--v8);
    transform:translateY(100%);
    box-shadow:0 -30px 70px rgba(0,0,0,.5);
  }
  .panel:popover-open{transform:translateY(0)}
  @starting-style{ .panel:popover-open{transform:translateY(100%)} }
  /* полоска-ручка, как у шторки в телефоне */
  .panel::before{content:'';position:absolute;top:10px;left:50%;
    transform:translateX(-50%);width:44px;height:4px;border-radius:2px;
    background:var(--liniya-2)}
}

/* ── 11. Вопрос-ответ ───────────────────────────────────────────── */

.vopros{border-top:1px solid var(--liniya)}
.vopros:last-of-type{border-bottom:1px solid var(--liniya)}
.vopros summary{
  list-style:none;cursor:pointer;position:relative;
  padding:var(--v5) 52px var(--v5) 0;
  font-size:18px;font-weight:600;color:var(--tekst);
  transition:color var(--bystro);
}
.vopros summary::-webkit-details-marker{display:none}
.vopros summary:hover{color:var(--bronza-sv)}
.vopros summary::after{
  content:'';position:absolute;right:6px;top:50%;
  width:11px;height:11px;margin-top:-8px;
  border-right:1.5px solid var(--bronza);border-bottom:1.5px solid var(--bronza);
  transform:rotate(45deg);transition:transform var(--plavno);
}
.vopros[open] summary::after{transform:rotate(225deg);margin-top:-3px}
.vopros .otvet{padding:0 60px var(--v5) 0;color:var(--tekst-2);
  font-size:16px;line-height:1.68}
.vopros .otvet b{color:var(--tekst)}
/* Раскрытие с плавной высотой — в браузерах, которые это умеют.
   Где не умеют, содержимое просто появляется. */
@supports (interpolate-size:allow-keywords){
  :root{interpolate-size:allow-keywords}
  .vopros::details-content{
    block-size:0;overflow:hidden;
    transition:block-size var(--plavno),content-visibility var(--plavno) allow-discrete;
  }
  .vopros[open]::details-content{block-size:auto}
}

/* ── 12. Подвал ─────────────────────────────────────────────────── */

footer{border-top:1px solid var(--liniya);padding:var(--v7) 0 var(--v8);
  color:var(--tekst-3);font-size:14px;line-height:1.7}
footer a{color:var(--tekst-2);border-bottom:1px solid var(--liniya-2)}
footer a:hover{color:var(--bronza-sv);border-bottom-color:var(--bronza-dym)}
footer .stroki{display:flex;flex-wrap:wrap;gap:var(--v3) var(--v5);margin:var(--v5) 0}
footer .vazhnoe{color:var(--tekst-2);font-weight:600}

/* ── 13. Движение ───────────────────────────────────────────────── */
/* Блоки появляются, когда въезжают в экран. Класс `vidno` вешает
   dvizhenie.js — так работает во всех браузерах, включая старые.
   Без JS блок просто виден: ни одного скрытого куска текста.

   ⚠️ 24.08.2026: так было написано в комментарии, но не в коде. Правило
   `.voz{opacity:0}` пряталo блоки всегда, а показывал их только скрипт —
   значит при любой осечке JS (ошибка, блокировщик, медленная сеть,
   старый браузер) половина страницы оставалась невидимой. Текст был
   в разметке, но глазами его никто не видел.

   Теперь прятать разрешено, только когда движение заявило о себе: класс
   `dvizh` ставится строкой в <head> каждой страницы, где это нужно.
   Нет скрипта — нет класса — всё видно сразу. */

.dvizh .voz{opacity:0;transform:translateY(22px);
  transition:opacity var(--medlenno),transform var(--medlenno)}
.dvizh .voz.vidno{opacity:1;transform:none}
/* Каскад: соседние элементы въезжают друг за другом, а не разом */
.dvizh .voz[data-zaderzhka="1"]{transition-delay:.07s}
.dvizh .voz[data-zaderzhka="2"]{transition-delay:.14s}
.dvizh .voz[data-zaderzhka="3"]{transition-delay:.21s}
.dvizh .voz[data-zaderzhka="4"]{transition-delay:.28s}
.dvizh .voz[data-zaderzhka="5"]{transition-delay:.35s}

/* Полоска прочитанного вверху страницы. Считается прямо браузером,
   без единого обработчика скролла — там, где он это умеет. */
.progress-chteniya{
  position:fixed;top:0;left:0;right:0;height:2px;z-index:80;
  background:linear-gradient(90deg,var(--bronza-tmn),var(--bronza-sv));
  transform-origin:0 50%;transform:scaleX(0);
}
@supports (animation-timeline:scroll()){
  .progress-chteniya{
    animation:tyanis linear;
    animation-timeline:scroll(root block);
  }
  @keyframes tyanis{ from{transform:scaleX(0)} to{transform:scaleX(1)} }
}

/* Кто просил систему не анимировать — тому ничего не двигается.
   Это не вежливость, а требование доступности: у части людей
   от движения на экране кружится голова. */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
  .voz, .dvizh .voz{opacity:1;transform:none}
  /* `.gotova` специфичнее, поэтому гасим именно её — иначе лента побежит
     у того, кто в системе просил ничего не анимировать. */
  .lenta .stroka,
  .lenta .stroka.gotova{animation:none}
  .polosa i{transform:scaleX(var(--dolya,1))}
}

/* ── 14. Переход между страницами ───────────────────────────────── */
/* Страницы не мигают белым, а сменяют друг друга скольжением —
   ощущение приложения, а не набора документов. Браузеры, которые
   этого не умеют, переходят как раньше. */

@view-transition{ navigation:auto }
@media (prefers-reduced-motion:no-preference){
  ::view-transition-old(root){
    animation:ujti 220ms cubic-bezier(.4,0,1,1) both;
  }
  ::view-transition-new(root){
    animation:prijti 320ms cubic-bezier(0,0,.2,1) both;
  }
  @keyframes ujti{ to{opacity:0;transform:translateY(-8px)} }
  @keyframes prijti{ from{opacity:0;transform:translateY(12px)} }
}

/* ── 15. Мелочи, которые видно ──────────────────────────────────── */

img{max-width:100%;height:auto;display:block}

/* Списки: точка бронзой, а не серым квадратиком браузера */
.spisok{list-style:none}
.spisok li{position:relative;padding-left:22px;margin-bottom:10px}
.spisok li::before{content:'';position:absolute;left:2px;top:.66em;
  width:5px;height:5px;border-radius:50%;background:var(--bronza);opacity:.75}

/* Таблицы — только там, где без них никак; на телефоне листаются вбок */
table{width:100%;border-collapse:collapse;font-size:16px}
th,td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--liniya);
  vertical-align:top}
th{font-size:11px;text-transform:uppercase;letter-spacing:.12em;
  color:var(--tekst-3);font-weight:700}
tr:last-child td{border-bottom:none}
.tablica-obolochka{overflow-x:auto;border:1px solid var(--liniya);
  border-radius:var(--r);background:var(--poverhnost)}

/* Скрытая подпись для читалок с экрана */
.tolko-dlya-chitalki{position:absolute;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap}

/* ═══════════════════════════════════════════════════════════════════
   ЧЕРНОВИК. Звёздочка-дверь и тихое поле ввода.

   Переезжает целиком в конец `sistema.css`: там уже живут все цвета
   и размеры, а отдельный файл стилей ради одной звезды — лишняя
   строка в <head>, которая сама себя выдаёт.

   Задача стиля одна: звезда должна быть неотличима от соседних
   звёзд созвездия. Значит — тот же кремовый цвет, та же прозрачность,
   то же мерцание со своим периодом. И ни намёка на кнопку:
   ни курсора-руки, ни подсветки при наведении, ни обводки при
   попадании табом.
   ═══════════════════════════════════════════════════════════════ */

/* ── Звезда ─────────────────────────────────────────────────────────
   В покое это просто светящаяся точка, нарисованная стилем: ни файла
   картинки, ни запроса к серверу, ни имени в списке загруженного.
   Витрина не тянет из-за неё ни одного лишнего байта — значит
   и «найти по следам» нечего.

   Пупик появляется только под пальцем, когда нажатие уже пошло:
   он не приманка для посторонних, а награда тому, кто знает. */

.sozv-iskra{
  position:absolute;
  /* Правый верх холста созвездия: узлы месяцев идут волной по низу,
     звёзды-уроки — по середине, а сюда рисунок почти не достаёт.
     Значит новая точка не наложится на нарисованную. */
  right:6%; top:21%;

  /* Видно 3 пикселя света, а нажать можно 40: невидимые поля дают
     палец нормального размера, не увеличивая саму звезду. На телефоне
     без этого пришлось бы тыкать в игольное ушко. */
  width:40px; height:40px; margin:-20px -20px 0 0;

  /* Точка с ореолом — тем же кремовым, которым kino.js рисует
     звёзды-уроки: ядро `rgba(246,222,180,.9)` и гало вокруг. */
  background:
    radial-gradient(circle at 50% 50%,
      rgba(246,222,180,.92) 0 1.6px,
      rgba(246,222,180,.34) 2.2px 3.4px,
      rgba(230,187,125,.10) 4px 7px,
      transparent 7.5px);
  background-repeat:no-repeat;

  /* Прозрачность как у ярких звёзд холста (у них .5–.66 с мерцанием). */
  opacity:.58;
  animation:iskra-mercanie 5.5s ease-in-out infinite;

  /* Всё, что выдаёт кнопку, — выключено. */
  cursor:default;
  -webkit-tap-highlight-color:transparent;
  user-select:none; -webkit-user-select:none;
  /* На iPhone долгое нажатие само вызывает своё окошко («скопировать»,
     «поделиться») — оно бы перекрыло наше поле. */
  -webkit-touch-callout:none;
  /* Палец по звезде должен прокручивать страницу как обычно —
     иначе в этом месте страница «залипает», и это заметно. */
  touch-action:auto;
}

/* Период мерцания свой, не кратный соседям: на холсте у каждой звезды
   свой темп (`tempo` в kino.js), и ровная секунда выдала бы машину. */
@keyframes iskra-mercanie{
  0%,100%{opacity:.58}
  38%    {opacity:.82}
  64%    {opacity:.46}
}

/* Пупик лежит отдельным слоем поверх точки. Пока слоя не видно,
   картинка не запрашивается вообще: браузер тянет файл только когда
   у элемента появляется `background-image`, то есть в момент нажатия. */
.sozv-iskra::after{
  content:''; position:absolute; inset:0;
  background-position:center; background-repeat:no-repeat;
  background-size:6px 6px;
  opacity:0;
  transition:background-size 1.6s var(--pruzhina), opacity 900ms linear;
}

/* Держим палец — точка разгорается и вырастает в пупика. Полторы
   секунды роста видит только тот, кто держит: это и есть подсказка
   «ещё чуть-чуть, не отпускай». */
.sozv-iskra.zhdyot{
  animation:none;
  opacity:1;
  filter:drop-shadow(0 0 16px rgba(246,222,180,.5));
  transition:opacity 700ms linear, filter 1.6s linear;
}
.sozv-iskra.zhdyot::after{
  background-image:url('/snimok/iskra.png');
  background-size:34px 34px;
  opacity:1;
}

/* Анимацию просили не крутить — не крутим. Звезда просто стоит,
   как и остальное небо в этом режиме. */
@media (prefers-reduced-motion:reduce){
  .sozv-iskra{animation:none}
  .sozv-iskra.zhdyot{transition:none}
}

/* ── Тихое поле ─────────────────────────────────────────────────────
   Появляется по долгому нажатию и живёт восемь секунд. Лежит в <body>,
   а не в обёртке созвездия: у той `overflow:hidden`, и поле обрезало бы.

   Ни надписи, ни рамки-подсказки, ни кнопки «войти». Кто открыл —
   знает, что вводить. */

.tihoe-pole{
  position:fixed; inset:0; z-index:90;
  display:grid; place-items:center;
  /* Фон почти прозрачный: если это случайность — человек видит,
     что страница на месте, и один тап возвращает всё назад. */
  background:rgba(7,12,21,.72);
  backdrop-filter:blur(3px);
  animation:tihoe-poyavlenie var(--plavno) both;
}
@keyframes tihoe-poyavlenie{from{opacity:0}to{opacity:1}}

.tihoe-pole i{
  /* Пупик над полем — он и есть подпись. Слов не нужно. */
  display:block; width:64px; height:64px; margin:0 auto var(--v4);
  background:url('/snimok/pupik.png') center/contain no-repeat;
  filter:drop-shadow(0 0 22px rgba(246,222,180,.28));
}

.tihoe-pole input{
  display:block; width:min(280px,72vw); padding:14px 18px;
  font-family:var(--shrift); font-size:19px; letter-spacing:.32em;
  text-align:center; color:var(--tekst);
  background:color-mix(in srgb,var(--poverhnost) 88%,transparent);
  border:1px solid var(--liniya-2); border-radius:var(--r-kapsula);
  outline:none;
  /* Буквы прячем точками, но полем для пароля это не делаем:
     браузер тогда предлагает сохранить, а менеджеры паролей
     и сканеры отмечают страницу как страницу входа. */
  -webkit-text-security:disc; text-security:disc;
}
.tihoe-pole input:focus{border-color:var(--bronza-dym)}

/* Не подошло — поле коротко вздрагивает и чистится. Ни слова
   «неверно»: подсказывать перебирающему нечего. */
.tihoe-pole input.mimo{animation:tihoe-net 380ms ease}
@keyframes tihoe-net{
  0%,100%{transform:translateX(0)}
  22%{transform:translateX(-7px)}
  58%{transform:translateX(6px)}
}
