/* Сайт «Спектр•» - поверхность «интерфейс» визуального языка v1.0.
   Цвета и шрифты - только из tokens.css (копия из Деливераблы/Визуальный-язык-Спектра;
   источник истины там, здесь не править). Форма - прибор, не карточка маркетплейса:
   радиус 3px, один акцент, шкала плотности одним тоном, состояния - только у системы. */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
/* Запас моно на Windows: ui-monospace в Chromium нет, Menlo нет - без Consolas цены
   проваливаются в Courier. Первое имя то же, что в tokens.css. */
:root{--sp-font-mono:"IBM Plex Mono",ui-monospace,"Cascadia Mono",Consolas,Menlo,monospace}
body{
  margin:0;
  background:var(--sp-ground);
  color:var(--sp-ink);
  font-family:var(--sp-font-ui);
  font-size:var(--sp-size-base);
  line-height:var(--sp-lh-text);
  font-feature-settings:"kern","liga";
}
img,svg{max-width:100%;height:auto}
a{color:var(--sp-accent);text-decoration-thickness:1px;text-underline-offset:.16em}
a:hover{color:var(--sp-accent-hi)}
:focus-visible{outline:2px solid var(--sp-accent);outline-offset:2px}
h1,h2,h3{line-height:var(--sp-lh-head);font-weight:600;margin:0 0 .5em;text-wrap:balance;letter-spacing:-.01em}
h1{font-size:var(--sp-size-h1)}
h2{font-size:var(--sp-size-h2)}
h3{font-size:var(--sp-size-h3)}
p{margin:0 0 1em}
p,li{max-width:var(--sp-measure)}
small,.pometa{font-size:var(--sp-size-xs);color:var(--sp-ink-3);letter-spacing:.04em;text-transform:uppercase}
code,kbd{font-family:var(--sp-font-mono);font-size:.92em;background:var(--sp-surface-2);padding:.1em .35em;border-radius:var(--sp-radius)}
hr{border:0;border-top:1px solid var(--sp-rule);margin:2.5rem 0}
table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}
th,td{text-align:left;padding:.55em .8em;border-bottom:1px solid var(--sp-rule);vertical-align:top}
th{font-size:var(--sp-size-sm);color:var(--sp-ink-2);font-weight:600}
td.n,th.n{text-align:right;font-family:var(--sp-font-mono);font-size:var(--sp-size-sm)}
.tbl{overflow-x:auto;margin:1rem 0 1.5rem}

/* — черновик: снимается только словом владельца (сторож test_sayt_spektra) — */
.chernovik{
  background:var(--sp-warn-soft);color:var(--sp-ink);
  border-bottom:1px solid var(--sp-rule);
  font-size:var(--sp-size-sm);padding:.5rem 1.25rem;
  display:flex;gap:.6rem;align-items:baseline;flex-wrap:wrap
}
.chernovik::before{content:"";width:.6em;height:.6em;border-radius:50%;background:var(--sp-warn);align-self:center;flex:none}
.chernovik b{font-weight:600}

/* — каркас — */
.obl{width:min(100% - 2.5rem, 1080px);margin-inline:auto}
header.shapka{border-bottom:1px solid var(--sp-rule);background:var(--sp-surface)}
.shapka .obl{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;min-height:64px;flex-wrap:wrap}
.znak-link{
  display:inline-flex;align-items:center;text-decoration:none;color:var(--sp-ink);
  /* ЗНАКА НЕТ - слово набрано шрифтом документа (пакет №270 §2, слово
     владельца 15.09). Новый знак - отдельная работа; заявка на товарный знак
     подаётся на словесное обозначение, так что типографская шапка не
     заплата, а рабочее состояние. */
  font-family:var(--sp-font-doc);
  font-size:1.35rem;font-weight:600;letter-spacing:.005em;
}
.znak-link svg{height:34px;width:auto}
.lockup-light{display:block}.lockup-dark{display:none}
nav.menyu{display:flex;gap:.25rem 1.1rem;flex-wrap:wrap;font-size:var(--sp-size-sm)}
nav.menyu a{color:var(--sp-ink-2);text-decoration:none;padding:.35em 0;border-bottom:2px solid transparent}
nav.menyu a:hover{color:var(--sp-ink)}
nav.menyu a[aria-current="page"]{color:var(--sp-ink);border-bottom-color:var(--sp-accent)}
main{padding:2.5rem 0 4rem}
section{margin:0 0 3.5rem}
.razdel{display:grid;grid-template-columns:minmax(0,1fr);gap:1.5rem 3rem}
@media(min-width:860px){.razdel{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media(min-width:860px){.razdel.tri{grid-template-columns:repeat(3,minmax(0,1fr))}}
.plashka{background:var(--sp-surface);border:1px solid var(--sp-rule);border-radius:var(--sp-radius);padding:1.25rem 1.4rem}
.plashka h3{margin-top:0}
.plashka p:last-child{margin-bottom:0}
.eyebrow{display:block;font-size:var(--sp-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--sp-ink-3);margin-bottom:.6rem}

/* — кнопки: действие и переход — */
.knopka{
  display:inline-block;background:var(--sp-accent);color:var(--sp-accent-on);
  padding:.65em 1.15em;border-radius:var(--sp-radius);text-decoration:none;font-weight:600;
  border:1px solid transparent;line-height:1.25
}
.knopka:hover{background:var(--sp-accent-hi);color:var(--sp-accent-on)}
.knopka.vtoraya{background:transparent;color:var(--sp-accent);border-color:var(--sp-accent)}
.knopka.vtoraya:hover{background:var(--sp-accent-soft)}
.deystviya{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center;margin:1.25rem 0}

/* — первый экран — */
.geroy{display:grid;gap:2rem 3rem;align-items:center;padding:1.5rem 0 1rem}
@media(min-width:860px){.geroy{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}}
.geroy h1{font-size:clamp(28px, 4.2vw, 40px);max-width:20ch}
.geroy .vvod{font-size:var(--sp-size-lg);color:var(--sp-ink-2);max-width:48ch}

/* — карта 8×6: форма выдачи, один тон — */
.karta{background:var(--sp-surface);border:1px solid var(--sp-rule);border-radius:var(--sp-radius);padding:1rem 1.1rem}
.karta-setka{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;margin:.6rem 0}
.karta-setka span{aspect-ratio:1;border-radius:2px;background:var(--sp-d-0);border:1px solid var(--sp-d-0-border)}
.karta-setka .d1{background:var(--sp-d-1);border-color:transparent}
.karta-setka .d2{background:var(--sp-d-2);border-color:transparent}
.karta-setka .d3{background:var(--sp-d-3);border-color:transparent}
.karta-setka .d4{background:var(--sp-d-4);border-color:transparent}
.karta-setka .d5{background:var(--sp-d-5);border-color:transparent}
.karta-legenda{display:flex;gap:1rem;flex-wrap:wrap;font-size:var(--sp-size-xs);color:var(--sp-ink-3);margin-top:.5rem}
.karta-legenda i{display:inline-block;width:.9em;height:.9em;border-radius:2px;vertical-align:-.1em;margin-right:.35em;border:1px solid var(--sp-d-0-border)}
.karta-legenda i.d5{background:var(--sp-d-5);border-color:transparent}
.karta-legenda i.d2{background:var(--sp-d-2);border-color:transparent}
.karta-osi{display:flex;justify-content:space-between;font-size:var(--sp-size-xs);color:var(--sp-ink-3);letter-spacing:.04em;text-transform:uppercase}

/* — шаги: порядок несёт смысл, поэтому нумерация законна — */
ol.shagi{list-style:none;counter-reset:shag;padding:0;margin:0;display:grid;gap:1rem}
@media(min-width:860px){ol.shagi{grid-template-columns:repeat(4,minmax(0,1fr))}}
ol.shagi li{counter-increment:shag;background:var(--sp-surface);border:1px solid var(--sp-rule);border-radius:var(--sp-radius);padding:1.1rem 1.2rem;max-width:none}
ol.shagi li::before{content:counter(shag);display:inline-block;font-family:var(--sp-font-mono);font-size:var(--sp-size-sm);color:var(--sp-accent);border:1px solid var(--sp-accent);border-radius:var(--sp-radius-pill);width:1.9em;height:1.9em;line-height:1.8em;text-align:center;margin-bottom:.6rem}
ol.shagi b{display:block;margin-bottom:.25rem}

/* — два столбца «делает / не делает» — */
.da-net{display:grid;gap:1.5rem 3rem}
@media(min-width:860px){.da-net{grid-template-columns:1fr 1fr}}
.da-net ul{padding-left:1.1rem;margin:0}
.da-net li{margin-bottom:.7rem}
.da-net li b{font-weight:600}

/* — поверхность «документ»: цитата метода — */
.dokument{
  font-family:var(--sp-font-doc);font-size:1.06em;
  background:var(--sp-surface);border:1px solid var(--sp-rule);border-radius:var(--sp-radius);
  padding:1.5rem 1.75rem;max-width:var(--sp-measure)
}
.dokument .ulika{color:var(--sp-cite);font-family:var(--sp-font-mono);font-size:var(--sp-size-sm)}

/* — цены — */
.tarif{background:var(--sp-surface);border:1px solid var(--sp-rule);border-radius:var(--sp-radius);padding:1.25rem 1.4rem}
.tarif .cena{font-family:var(--sp-font-mono);font-size:var(--sp-size-h2);font-weight:600;letter-spacing:-.01em;margin:.2rem 0 .1rem}
.tarif .cena small{text-transform:none;letter-spacing:0;font-size:var(--sp-size-sm);color:var(--sp-ink-3)}
.tarif ul{padding-left:1.1rem;margin:.6rem 0 0}
.tarif li{margin-bottom:.35rem;font-size:var(--sp-size-sm)}

/* — состояние системы: только гейты, платежи, доступность; точка + слово, цвет один не работает — */
.sostoyanie{display:inline-flex;align-items:center;gap:.45em;font-size:var(--sp-size-sm);padding:.2em .7em;border-radius:var(--sp-radius-pill);border:1px solid var(--sp-rule)}
.sostoyanie::before{content:"";width:.55em;height:.55em;border-radius:50%;background:var(--sp-ink-3)}
.sostoyanie.ok{background:var(--sp-ok-soft)}.sostoyanie.ok::before{background:var(--sp-ok)}
.sostoyanie.warn{background:var(--sp-warn-soft)}.sostoyanie.warn::before{background:var(--sp-warn)}
.sostoyanie.stop{background:var(--sp-stop-soft)}.sostoyanie.stop::before{background:var(--sp-stop)}

/* — подвал — */
footer.podval{border-top:1px solid var(--sp-rule);padding:2rem 0 3rem;font-size:var(--sp-size-sm);color:var(--sp-ink-2)}
footer .obl{display:grid;gap:1.25rem 3rem}
@media(min-width:860px){footer .obl{grid-template-columns:2fr 1fr 1fr}}
footer ul{list-style:none;padding:0;margin:0}
footer li{margin-bottom:.35rem}
footer a{color:var(--sp-ink-2)}

/* — тёмная тема: лок-ап меняется на выворотку — */
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .lockup-light{display:none}
  :root:not([data-theme="light"]) .lockup-dark{display:block}
}
:root[data-theme="dark"] .lockup-light{display:none}
:root[data-theme="dark"] .lockup-dark{display:block}

@media (prefers-reduced-motion: no-preference){
  .knopka,nav.menyu a{transition:background-color .15s,color .15s,border-color .15s}
}
