/* =====================================================================
 *  site-kit-sim.css — обвязка публичных страниц урокробототехники.рф
 * =====================================================================
 *  Собран из ДВУХ кусков, и порядок между ними важен:
 *
 *  1. кит публичных страниц RobX (site-kit-v2) — формы: шапка-«пилюля»,
 *     полотно секций, карточки, кнопки, таблица, FAQ, CTA, подвал;
 *  2. тёмная гамма урокробототехники.рф поверх него — она переопределяет
 *     токены кита (`--brand`, `--surface`, `--ink*`, `--line*`, тени) и
 *     добавляет блоки самой страницы: сцену симулятора (`.s-*`), палитру
 *     компонентов (`.s-pal*`), логотип-капслок.
 *
 *  Кит НЕ подключается кросс-хостом с `https://robx.online/shared/…`:
 *  школьные сети режут портал, и страница осталась бы совсем без стилей —
 *  та же причина, по которой в проекте закреплены @wokwi/elements 1.7.0 и
 *  графика плат в `vendor/art/`.
 *
 *  Правишь кит на портале — переноси сюда первый кусок целиком, гамму не
 *  трогая: она вся ниже отбивки «Тёмная гамма».
 * ===================================================================== */


/* =====================================================================
 *  RobX site-kit v2 — единая обвязка публичных страниц продуктов
 * =====================================================================
 *  Что изменилось против v1: крупнее типографика и воздух, карточки с
 *  цветными подложками (не только белые), свои иконки, блоки под
 *  иллюстрации и скриншоты, аккуратные hover-состояния и появление
 *  блоков при прокрутке.
 *
 *  Палитра прежняя: синий #2563eb — брендовый, остальные оттенки нужны
 *  только для подложек карточек, чтобы страница не читалась таблицей.
 *
 *  Подключение:
 *    <link rel="stylesheet" href="https://robx.online/shared/site-kit/site-kit-v2.css?v=ГГГГММДД">
 *    <script defer src="https://robx.online/shared/site-kit/site-kit-v2.js?v=ГГГГММДД"></script>
 *
 *  Правило кита: страница НЕ заводит своих цветов, теней и радиусов —
 *  только токены отсюда. Нужен новый блок — он добавляется сюда.
 * ===================================================================== */

/* ── Токены ────────────────────────────────────────────────── */
:root{
  --brand:#2563eb;--brand-2:#3b82f6;--brand-ink:#1d4ed8;
  --bg:#f4f7fd;--surface:#fff;--surface-2:#f8fafd;
  --ink:oklch(0.20 0.025 255);--ink-2:oklch(0.45 0.022 255);--ink-3:oklch(0.60 0.018 255);
  --line:oklch(0.92 0.012 255);--line-2:oklch(0.87 0.016 255);
  /* Подложки карточек. Низкая насыщенность: это фон под текст, а не акцент. */
  --tint-sky:#eaf2ff;--tint-mint:#e7f7ef;--tint-amber:#fdf2e3;--tint-violet:#f1ecfe;--tint-rose:#fdecef;--tint-slate:#eef1f6;
  --on-sky:#1d4ed8;--on-mint:#0f7a4e;--on-amber:#a45a08;--on-violet:#6d33d6;--on-rose:#c02b47;--on-slate:#4a5568;
  --ok:#15803d;--ok-bg:#e8f3ec;--warn:#a45a08;--warn-bg:#fdf2e3;--danger:#c02b47;--danger-bg:#fdecef;
  --r-xl:32px;--r-lg:24px;--r-md:16px;--r-sm:11px;--r-pill:999px;
  --sh-1:0 1px 2px rgba(20,35,80,.05),0 6px 16px -10px rgba(20,35,80,.18);
  --sh-2:0 2px 4px rgba(20,35,80,.05),0 18px 40px -18px rgba(20,35,80,.28);
  --sh-3:0 30px 60px -28px rgba(20,35,80,.38),0 4px 10px rgba(20,35,80,.06);
  --sh-brand:0 14px 28px -12px rgba(37,99,235,.55);
  --maxw:1180px;--maxw-text:66ch;--edge:8px;
  --step:clamp(48px,6vw,88px);
  --ease:cubic-bezier(.22,.61,.36,1);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0;padding:0}
body{font-family:"Montserrat",system-ui,-apple-system,Arial,sans-serif;color:var(--ink);background:var(--bg);line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}
button{font:inherit;cursor:pointer;border:0;background:transparent;color:inherit}
a{color:inherit;text-decoration:none}
img,svg{display:block;max-width:100%}
:focus-visible{outline:3px solid rgba(37,99,235,.45);outline-offset:2px;border-radius:6px}
::selection{background:rgba(37,99,235,.18)}

/* ── Типографика ───────────────────────────────────────────── */
.rx-h1{font-size:clamp(38px,5.6vw,68px);line-height:1.03;letter-spacing:-.035em;font-weight:800;margin:0 0 20px;text-wrap:balance}
.rx-h2{font-size:clamp(28px,3.4vw,44px);line-height:1.1;letter-spacing:-.03em;font-weight:800;margin:0 0 10px;text-wrap:balance}
.rx-h3{font-size:clamp(20px,1.9vw,25px);line-height:1.2;letter-spacing:-.02em;font-weight:700;margin:0 0 8px}
.rx-h1-accent{color:var(--brand)}
.rx-lead{font-size:clamp(17px,1.5vw,20px);line-height:1.6;color:var(--ink-2);margin:0;text-wrap:pretty}
/* Надзаголовок остаётся в ките для служебных страниц, но без капса и
   синего: раздел продуктовой страницы начинается сразу с заголовка. */
.rx-eyebrow{font-size:14px;font-weight:600;color:var(--ink-3);margin:0 0 10px}
.rx-muted{color:var(--ink-3)}
.rx-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}

/* ── Полотно ───────────────────────────────────────────────── */
.rx-page{position:relative;min-height:100vh;isolation:isolate;overflow:clip}
.rx-section{width:calc(100% - var(--edge)*2);margin:0 auto;padding:var(--step) 32px}
.rx-wrap{max-width:var(--maxw);margin:0 auto}
.rx-section-head{max-width:760px;margin:0 auto 44px;text-align:center}
.rx-section-head .rx-lead{max-width:60ch;margin:0 auto}
.rx-section-head--left{margin-left:0;text-align:left}
/* Сетки: одна система на все блоки кита. */
.rx-grid{display:grid;gap:18px}
.rx-grid-2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.rx-grid-3{grid-template-columns:repeat(auto-fit,minmax(272px,1fr))}
.rx-grid-4{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.rx-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,4vw,56px);align-items:center}

/* ── Шапка ─────────────────────────────────────────────────── */
.rx-nav{position:sticky;top:10px;z-index:100;display:flex;align-items:center;gap:14px;margin:10px auto 0;padding:9px 12px 9px 22px;width:calc(100% - var(--edge)*2);background:rgba(255,255,255,.86);backdrop-filter:blur(14px) saturate(140%);border:1px solid rgba(15,23,42,.07);border-radius:var(--r-pill);box-shadow:var(--sh-1);transition:box-shadow .2s,background .2s}
.rx-nav.is-stuck{box-shadow:var(--sh-2);background:rgba(255,255,255,.94)}
.rx-logo{display:inline-flex;align-items:center;gap:9px;padding:0 4px}
.rx-logo-mark{font-family:'Montserrat Logo','Montserrat',Arial,sans-serif;font-size:22px;font-weight:800;letter-spacing:-.02em;background:linear-gradient(135deg,#2563eb,#60a5fa);-webkit-background-clip:text;background-clip:text;color:transparent}
/* Подпись продукта рядом с логотипом: одна шапка — разные хосты. */
.rx-logo-sub{font-size:14px;font-weight:600;color:var(--ink-3);padding-left:10px;border-left:1px solid var(--line-2)}
.rx-spacer{flex:1 1 auto}
.rx-nav-pill{display:flex;align-items:center;gap:2px}
.rx-nav-link{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 15px;border-radius:var(--r-pill);font-size:14.5px;font-weight:600;color:var(--ink-2);transition:background .16s,color .16s}
.rx-nav-link:hover{background:rgba(15,23,42,.05);color:var(--ink)}
.rx-nav-link.is-active{background:rgba(37,99,235,.1);color:var(--brand)}
.rx-nav-link .rx-i{width:17px;height:17px;opacity:.8}
.rx-nav-right{display:flex;align-items:center;gap:10px}
.rx-nav-burger{display:none;width:42px;height:42px;border-radius:50%;align-items:center;justify-content:center;border:1px solid var(--line);background:#fff}
.rx-nav-burger .rx-i{width:20px;height:20px}

/* ── Кнопки ────────────────────────────────────────────────── */
.rx-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:13px 24px;border-radius:var(--r-pill);font-size:15px;font-weight:700;letter-spacing:-.005em;transition:transform .16s var(--ease),background .16s,border-color .16s,box-shadow .16s;white-space:nowrap}
.rx-btn .rx-i{width:18px;height:18px}
.rx-btn-primary{color:#fff;background:linear-gradient(135deg,#3b82f6,#2563eb);box-shadow:var(--sh-brand)}
.rx-btn-primary:hover{background:linear-gradient(135deg,#2f7bf0,#1d4ed8);transform:translateY(-2px);box-shadow:0 20px 34px -14px rgba(37,99,235,.62)}
.rx-btn-ghost{color:var(--ink);background:#fff;border:1px solid var(--line-2);box-shadow:var(--sh-1)}
.rx-btn-ghost:hover{border-color:rgba(37,99,235,.42);color:var(--brand);transform:translateY(-2px)}
.rx-btn-quiet{color:var(--ink-2);padding:10px 16px}
.rx-btn-quiet:hover{background:rgba(15,23,42,.05);color:var(--ink)}
.rx-btn-lg{padding:16px 30px;font-size:16px}
.rx-btn-sm{padding:9px 16px;font-size:13.5px}
.rx-btn[aria-disabled="true"],.rx-btn.is-off{color:var(--ink-3);background:#fff;border:1px dashed var(--line-2);box-shadow:none;pointer-events:none}
.rx-btn:active{transform:translateY(0)}
/* Стрелка в кнопке чуть уезжает вправо на hover — единственная «живость»,
   которую кит разрешает кнопкам. */
.rx-btn .rx-i-arrow{transition:transform .18s var(--ease)}
.rx-btn:hover .rx-i-arrow{transform:translateX(3px)}

/* ── Чипы, бейджи, пилюли ──────────────────────────────────── */
.rx-pill{display:inline-flex;align-items:center;gap:9px;padding:8px 17px 8px 13px;border-radius:var(--r-pill);font-size:13.5px;font-weight:600;color:var(--ink-2);background:#fff;border:1px solid var(--line);box-shadow:var(--sh-1)}
.rx-pulse{width:8px;height:8px;border-radius:50%;background:linear-gradient(135deg,#93c5fd,#2563eb);box-shadow:0 0 0 4px rgba(37,99,235,.18);animation:rx-pulse 2.4s infinite}
@keyframes rx-pulse{50%{box-shadow:0 0 0 9px rgba(37,99,235,0)}}
.rx-chips{display:flex;flex-wrap:wrap;gap:10px}
.rx-chips-center{justify-content:center}
.rx-chip{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border-radius:var(--r-pill);background:#fff;border:1px solid var(--line);box-shadow:var(--sh-1);font-size:14px;font-weight:600;color:var(--ink-2)}
.rx-chip .rx-i{width:15px;height:15px;opacity:.85}
a.rx-chip{transition:border-color .15s,color .15s,transform .15s}
a.rx-chip:hover{border-color:rgba(37,99,235,.45);color:var(--brand);transform:translateY(-1px)}
.rx-chip-ok{background:var(--ok-bg);border-color:rgba(21,163,74,.26);color:var(--ok);font-weight:700}
.rx-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:8px;font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.rx-badge-ok{color:var(--ok);background:var(--ok-bg)}
.rx-badge-warn{color:var(--warn);background:var(--warn-bg)}
.rx-badge-danger{color:var(--danger);background:var(--danger-bg)}
.rx-badge-brand{color:var(--brand);background:var(--tint-sky)}
.rx-badge-quiet{color:var(--ink-3);background:var(--tint-slate)}

/* ── Карточки ──────────────────────────────────────────────── */
.rx-card{position:relative;background:var(--surface);border:1px solid rgba(15,23,42,.07);border-radius:var(--r-lg);box-shadow:var(--sh-1);padding:26px 26px 24px;transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .2s}
.rx-card-lift:hover{transform:translateY(-4px);box-shadow:var(--sh-2);border-color:rgba(37,99,235,.2)}
.rx-card-plain{padding:0;box-shadow:var(--sh-2)}
.rx-card-pad{padding:clamp(22px,3vw,34px)}
/* Цветные подложки: не «бренд-цвет», а спокойный фон, чтобы четыре
   карточки подряд не читались таблицей. Текст на них — тот же тёмный. */
.rx-card-sky{background:var(--tint-sky);border-color:rgba(37,99,235,.14)}
.rx-card-mint{background:var(--tint-mint);border-color:rgba(16,122,78,.14)}
.rx-card-amber{background:var(--tint-amber);border-color:rgba(164,90,8,.14)}
.rx-card-violet{background:var(--tint-violet);border-color:rgba(109,51,214,.14)}
.rx-card-rose{background:var(--tint-rose);border-color:rgba(192,43,71,.13)}
.rx-card-slate{background:var(--tint-slate);border-color:rgba(74,85,104,.14)}
.rx-card h3{margin:0 0 8px;font-size:18px;font-weight:700;letter-spacing:-.015em}
.rx-card p{margin:0;font-size:15px;line-height:1.6;color:var(--ink-2);text-wrap:pretty}

/* Иконка карточки: белый квадрат поверх цветной подложки. */
.rx-card-ic{width:48px;height:48px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;background:#fff;color:var(--brand);box-shadow:var(--sh-1);margin-bottom:16px}
.rx-card-ic .rx-i{width:23px;height:23px}
.rx-card-sky .rx-card-ic{color:var(--on-sky)}
.rx-card-mint .rx-card-ic{color:var(--on-mint)}
.rx-card-amber .rx-card-ic{color:var(--on-amber)}
.rx-card-violet .rx-card-ic{color:var(--on-violet)}
.rx-card-rose .rx-card-ic{color:var(--on-rose)}
.rx-card-slate .rx-card-ic{color:var(--on-slate)}

.rx-card-photo{padding:0;overflow:hidden}
.rx-card-photo img{width:100%;height:auto;display:block;background:#fff;border-bottom:1px solid var(--line)}
.rx-card-photo .rx-card-body{padding:22px 24px 24px}

/* ── Иконки ────────────────────────────────────────────────── */
.rx-i{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.rx-i-solid{fill:currentColor;stroke:none}

/* ── Герой ─────────────────────────────────────────────────── */
.rx-hero{position:relative;width:calc(100% - var(--edge)*2);margin:0 auto;padding:clamp(48px,7vw,96px) 32px clamp(32px,4vw,56px);text-align:center}
.rx-hero-narrow{max-width:900px;margin:0 auto}
.rx-hero .rx-lead{max-width:640px;margin:0 auto 34px}
.rx-hero .rx-pill{margin-bottom:26px}
.rx-hero-chips{margin:0 auto 34px;max-width:880px}
/* Подложка героя: мягкое синее свечение и сетка точек. Рисуется фоном, а не
   элементами, — ничего не ломает и не мешает выделению текста. */
.rx-hero::before{content:"";position:absolute;inset:-10% -20% auto;height:560px;z-index:-2;background:radial-gradient(60% 70% at 50% 0%,rgba(59,130,246,.18),transparent 70%)}
.rx-hero::after{content:"";position:absolute;inset:0;z-index:-1;background-image:radial-gradient(rgba(37,99,235,.14) 1.1px,transparent 1.1px);background-size:26px 26px;-webkit-mask-image:radial-gradient(70% 60% at 50% 30%,#000,transparent 75%);mask-image:radial-gradient(70% 60% at 50% 30%,#000,transparent 75%);opacity:.7}
/* Герой с иллюстрацией справа. */
.rx-hero-split{text-align:left}
.rx-hero-split .rx-lead,.rx-hero-split .rx-hero-chips{margin-left:0}
.rx-hero-split .rx-chips{justify-content:flex-start}
.rx-hero-art{position:relative}

/* ── Кнопки скачивания под ОС ──────────────────────────────── */
.rx-dl{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.rx-dl a{display:inline-flex;align-items:center;gap:13px;min-width:250px;padding:14px 22px;border-radius:var(--r-md);text-align:left;text-decoration:none;transition:transform .16s var(--ease),box-shadow .16s,border-color .16s}
.rx-dl a b{display:block;font-size:15.5px;font-weight:700;line-height:1.2}
.rx-dl-sub{display:block;margin-top:3px;font-size:12.5px;font-weight:500;color:var(--ink-3)}
.rx-dl .rx-btn-primary .rx-dl-sub{color:#dbe8ff}
.rx-dl-ic{flex:none;width:26px;height:26px}
.rx-dl-ic svg{width:26px;height:26px;fill:currentColor;stroke:none}
.rx-dl a.is-mine{box-shadow:var(--sh-brand),0 0 0 3px rgba(37,99,235,.22)}
.rx-dl-note{margin:16px 0 0;font-size:13.5px;color:var(--ink-3);text-align:center}

/* ── Шаги ──────────────────────────────────────────────────── */
.rx-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(262px,1fr));gap:18px;counter-reset:rx-step}
.rx-step{position:relative;padding-top:30px}
.rx-step-n{position:absolute;top:-16px;left:24px;width:44px;height:44px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:800;color:#fff;background:linear-gradient(135deg,#3b82f6,#2563eb);box-shadow:var(--sh-brand)}
.rx-step h3{margin:0 0 6px;font-size:17.5px;font-weight:700}
.rx-step p{margin:0;font-size:14.5px;color:var(--ink-2);line-height:1.6}
.rx-step p a{color:var(--brand);font-weight:600}
.rx-step p a:hover{text-decoration:underline}

/* ── Скриншот продукта ─────────────────────────────────────── */
.rx-shot{position:relative;border-radius:var(--r-lg);overflow:hidden;background:#0d1526;border:1px solid rgba(15,23,42,.14);box-shadow:var(--sh-3)}
.rx-shot-bar{display:flex;align-items:center;gap:8px;padding:12px 16px;background:linear-gradient(180deg,#1b2740,#141d31)}
.rx-shot-dot{width:11px;height:11px;border-radius:50%;background:#3d4a66}
.rx-shot-dot:nth-child(1){background:#ff5f57}.rx-shot-dot:nth-child(2){background:#febc2e}.rx-shot-dot:nth-child(3){background:#28c840}
.rx-shot-title{margin-left:10px;font-size:12.5px;font-weight:600;color:#93a1bd}
.rx-shot-body{position:relative;aspect-ratio:16/10;display:grid;place-items:center;background:repeating-linear-gradient(45deg,#111a2c,#111a2c 12px,#131d31 12px,#131d31 24px);color:#6b7a99;font-size:13.5px;font-weight:600;text-align:center;padding:24px}
.rx-shot-body img{width:100%;height:100%;object-fit:cover}
.rx-shot-cap{margin:12px 2px 0;font-size:13px;color:var(--ink-3)}
/* Светлая рамка — для скриншотов веб-интерфейсов. */
.rx-shot-light{background:#fff}
.rx-shot-light .rx-shot-bar{background:var(--surface-2);border-bottom:1px solid var(--line)}
.rx-shot-light .rx-shot-title{color:var(--ink-3)}
.rx-shot-light .rx-shot-body{background:var(--surface-2);color:var(--ink-3)}

.rx-shot-bare{background:transparent;border:0;box-shadow:var(--sh-3)}
.rx-shot-bare .rx-shot-body{aspect-ratio:auto;display:block;padding:0;background:none}
.rx-shot-bare .rx-shot-body img{width:100%;height:auto;display:block}

/* ── Таблица ───────────────────────────────────────────────── */
.rx-table-card{padding:6px 24px;overflow:visible}
.rx-table-wrap{}
.rx-table{width:100%;border-collapse:collapse;font-size:14.5px;min-width:680px}
.rx-table th,.rx-table td{text-align:left;padding:15px 14px;vertical-align:top}
.rx-table thead th{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);font-weight:700;white-space:nowrap;border-bottom:1px solid var(--line-2)}
.rx-table tbody th{font-weight:700;color:var(--ink);white-space:nowrap}
.rx-table tbody td{color:var(--ink-2)}
.rx-table tbody tr+tr th,.rx-table tbody tr+tr td{border-top:1px solid var(--line)}
.rx-table tbody tr{transition:background .15s}
.rx-table tbody tr:hover{background:var(--tint-sky)}
.rx-table .rx-num{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13.5px;color:var(--ink-3);white-space:nowrap}

/* ── Подсказка «?» ─────────────────────────────────────────── */
.rx-hint{position:relative;display:inline-block;margin-left:8px;vertical-align:baseline}
.rx-hint-btn{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border-radius:50%;cursor:help;border:1px solid rgba(15,23,42,.18);background:#fff;color:var(--ink-3);font-family:inherit;font-weight:700;font-size:11.5px;line-height:1;transform:translateY(1px)}
.rx-hint-btn:hover,.rx-hint-btn:focus-visible{border-color:var(--brand);color:var(--brand)}
.rx-hint-pop{position:absolute;left:50%;bottom:calc(100% + 9px);transform:translateX(-50%) translateY(3px);width:290px;padding:12px 15px;border-radius:var(--r-sm);z-index:30;background:#fff;border:1px solid var(--line);box-shadow:var(--sh-2);color:var(--ink-2);font-family:inherit;font-weight:400;font-size:13px;line-height:1.6;text-transform:none;letter-spacing:0;white-space:normal;opacity:0;visibility:hidden;transition:opacity .14s,transform .14s var(--ease)}
.rx-hint:hover .rx-hint-pop,.rx-hint-btn:focus-visible+.rx-hint-pop{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}

.rx-hint{white-space:nowrap}
/* Подсказка в заголовке раздела: окно выравнивается по левому краю, иначе
   у заголовка, прижатого влево, оно уезжает за экран. */
.rx-h2 .rx-hint-pop{left:-8px;transform:translateY(3px)}
.rx-h2 .rx-hint:hover .rx-hint-pop,.rx-h2 .rx-hint-btn:focus-visible+.rx-hint-pop{transform:translateY(0)}

/* ── FAQ ───────────────────────────────────────────────────── */
.rx-faq{display:grid;gap:12px;max-width:860px;margin:0 auto}
.rx-faq details{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--sh-1);transition:border-color .16s,box-shadow .16s}
.rx-faq details[open]{border-color:rgba(37,99,235,.28);box-shadow:var(--sh-2)}
.rx-faq summary{display:flex;align-items:center;gap:14px;padding:18px 22px;cursor:pointer;font-size:16.5px;font-weight:700;letter-spacing:-.01em;list-style:none}
.rx-faq summary::-webkit-details-marker{display:none}
.rx-faq summary::after{content:"";flex:none;margin-left:auto;width:11px;height:11px;border-right:2.2px solid var(--ink-3);border-bottom:2.2px solid var(--ink-3);transform:rotate(45deg) translate(-3px,-3px);transition:transform .2s var(--ease)}
.rx-faq details[open] summary::after{transform:rotate(225deg) translate(-2px,-2px);border-color:var(--brand)}
.rx-faq summary:hover{color:var(--brand)}
.rx-faq-a{padding:0 22px 20px;margin:0;font-size:15px;line-height:1.65;color:var(--ink-2);max-width:var(--maxw-text)}
.rx-faq-a a{color:var(--brand);font-weight:600}

/* ── Список с галочками ────────────────────────────────────── */
.rx-list{margin:0;padding:0;list-style:none;display:grid;gap:11px}
.rx-list li{position:relative;padding-left:30px;font-size:15px;line-height:1.6;color:var(--ink-2)}
.rx-list li::before{content:"";position:absolute;left:0;top:2px;width:19px;height:19px;border-radius:50%;background:var(--tint-sky)}
.rx-list li::after{content:"";position:absolute;left:5.5px;top:7.5px;width:8px;height:4.5px;border-left:2px solid var(--brand);border-bottom:2px solid var(--brand);transform:rotate(-45deg)}
.rx-list b{color:var(--ink)}

/* ── CTA-полоса ────────────────────────────────────────────── */
.rx-cta{position:relative;overflow:hidden;border-radius:var(--r-xl);padding:clamp(34px,5vw,60px);text-align:center;color:#fff;background:linear-gradient(135deg,#1d4ed8,#2563eb 45%,#3b82f6)}
.rx-cta::after{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.18) 1.2px,transparent 1.2px);background-size:24px 24px;-webkit-mask-image:radial-gradient(80% 80% at 70% 20%,#000,transparent);mask-image:radial-gradient(80% 80% at 70% 20%,#000,transparent);pointer-events:none}
.rx-cta h2{position:relative;margin:0 0 12px;font-size:clamp(26px,3.2vw,40px);font-weight:800;letter-spacing:-.03em}
.rx-cta p{position:relative;margin:0 auto 26px;max-width:56ch;font-size:16.5px;color:#dbe8ff}
.rx-cta .rx-btn{position:relative}
.rx-cta .rx-btn-primary{background:#fff;color:var(--brand-ink);box-shadow:0 16px 30px -14px rgba(5,20,60,.6)}
.rx-cta .rx-btn-primary:hover{background:#eff5ff;color:var(--brand-ink)}
.rx-cta .rx-btn-ghost{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.4);color:#fff;box-shadow:none}
.rx-cta .rx-btn-ghost:hover{background:rgba(255,255,255,.2);border-color:#fff;color:#fff}
.rx-cta-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}

/* ── Пустое состояние и 404 ────────────────────────────────── */
.rx-empty{max-width:620px;margin:0 auto;padding:clamp(30px,5vw,52px);text-align:center}
.rx-empty-art{width:clamp(120px,18vw,168px);margin:0 auto 22px}
.rx-empty h3{margin:0 0 8px;font-size:21px;font-weight:700}
.rx-empty p{margin:0 auto 22px;max-width:46ch;font-size:15px;color:var(--ink-2)}
.rx-empty code{background:var(--tint-sky);color:var(--brand-ink);padding:2px 8px;border-radius:7px;font-size:13px;font-family:ui-monospace,Menlo,monospace}
.rx-404{text-align:center;padding:clamp(48px,9vw,120px) 24px}
.rx-404-code{font-size:clamp(88px,17vw,190px);font-weight:800;line-height:.9;letter-spacing:-.05em;background:linear-gradient(135deg,#2563eb,#93c5fd);-webkit-background-clip:text;background-clip:text;color:transparent;margin:0 0 12px}

/* ── Футер ─────────────────────────────────────────────────── */
.rx-footer{width:calc(100% - var(--edge)*2);margin:var(--step) auto 0;padding:0 32px 32px}
.rx-footer-inner{display:grid;grid-template-columns:1fr 2fr;gap:44px;padding:38px 40px;background:#fff;border:1px solid rgba(15,23,42,.07);border-radius:var(--r-xl);box-shadow:var(--sh-1)}
.rx-footer-brand{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.rx-footer-text{max-width:290px;font-size:14px;color:var(--ink-3);margin:0}
.rx-footer-social{display:flex;gap:9px;margin-top:18px}
.rx-footer-social a{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);color:var(--ink-2);transition:border-color .15s,color .15s,transform .15s}
.rx-footer-social a:hover{border-color:var(--brand);color:var(--brand);transform:translateY(-2px)}
.rx-footer-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;min-width:0}
.rx-footer-h{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-bottom:14px}
.rx-footer-cols a{display:block;font-size:14px;color:var(--ink-2);padding:5px 0;overflow-wrap:anywhere;transition:color .15s}
.rx-footer-cols a:hover{color:var(--brand)}
.rx-footer-bottom{margin-top:22px;padding-top:18px;border-top:1px solid var(--line);font-size:13px;color:var(--ink-3)}

/* Модификаторы параграфов внутри карточки: .rx-card p (0,1,1) перебивает
   одноклассовые правила, поэтому усиливаем селектором-парой. */
.rx-404 .rx-404-code{font-size:clamp(88px,17vw,190px);line-height:.9;letter-spacing:-.05em;color:transparent}
.rx-card .rx-lead{font-size:clamp(17px,1.5vw,20px);line-height:1.6;color:var(--ink-2)}
.rx-card .rx-faq-a{font-size:15px;line-height:1.65;color:var(--ink-2)}
.rx-card .rx-eyebrow{font-size:14px;color:var(--ink-3)}

/* ── Появление блоков при прокрутке ────────────────────────── */
/* Ставится скриптом кита; без JS всё видно сразу. */
.rx-reveal{opacity:0;transform:translateY(18px)}
.rx-reveal.is-in{opacity:1;transform:none;transition:opacity .5s var(--ease),transform .5s var(--ease)}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .rx-reveal{opacity:1;transform:none}
  html{scroll-behavior:auto}
}

/* ── Адаптив ───────────────────────────────────────────────── */
@media (max-width:1000px){
  .rx-footer-inner{grid-template-columns:1fr;gap:28px}
  .rx-split{grid-template-columns:minmax(0,1fr)}
  .rx-nav-pill{position:absolute;top:calc(100% + 10px);left:0;right:0;display:none;flex-direction:column;align-items:stretch;gap:4px;padding:10px;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-2)}
  .rx-nav-pill.is-open{display:flex}
  .rx-nav{position:sticky;flex-wrap:wrap}
  .rx-nav-burger{display:flex}
  .rx-logo-sub{display:none}
}
@media (max-width:700px){
  .rx-section{padding:clamp(36px,8vw,52px) 16px}
  .rx-hero{padding:40px 16px 24px}
  .rx-card{padding:22px 20px}
  .rx-dl a{width:100%}
  .rx-table-wrap{overflow-x:auto}
  .rx-table-card{padding:6px 14px}
  .rx-table{font-size:13.5px}
  .rx-table th,.rx-table td{padding:12px 10px}
  .rx-footer{padding:0 16px 20px}
  .rx-footer-inner{padding:26px 20px}
  .rx-footer-cols{grid-template-columns:repeat(2,1fr);gap:18px}
  .rx-faq summary{font-size:15.5px;padding:16px 18px}
  .rx-faq-a{padding:0 18px 18px}
}
@media (max-width:420px){.rx-footer-cols{grid-template-columns:1fr}}



.b-logo-sub{font-size:16px;font-weight:700;letter-spacing:-.01em;color:var(--ink-2);padding-left:11px;margin-left:1px;border-left:1px solid var(--line-2)}
.rx-footer-brand{align-items:baseline;margin-bottom:14px}
.rx-footer-brand .b-logo-sub{font-size:15px}
/* ── Шапка: всегда одна строка ─────────────────────────────────
   Меню складывается в «бургер» на 1060 px. Не на 1180, как было:
   в строку нужно ~980 px вместе с отступами (замер), и на ноутбуке
   с 1024–1180 ссылки пропадали в «бургер» посреди пустой шапки.
   Запас в 80 px — на случай, когда Tektur не доехал (школьная сеть
   режет Google Fonts) и подпись рисуется запасной гарнитурой: она
   шире на полтора десятка пикселей.

   Переносить шапку во вторую строку НЕЛЬЗЯ (`flex-wrap:nowrap`):
   пилюля вырастала вдвое, а кнопка на второй строке вылезала за её
   скруглённый край. По той же причине логотип обязан УМЕТЬ сжиматься
   (`min-width:0` + многоточие): подпись шире свободного места иначе
   выталкивает соседей, и её саму срезает левый край пилюли. */
.rx-nav{flex-wrap:nowrap}
.rx-nav-link{white-space:nowrap}
.rx-nav .rx-logo{flex:0 1 auto;min-width:0}
.rx-nav .rx-logo-word,.rx-nav .rx-logo-text{overflow:hidden;text-overflow:ellipsis}
.rx-nav-right{flex:none}
/* «Открыть симулятор» внутри выпадающего меню: на широком экране её
   там нет — та же кнопка стоит в самой шапке. */
.rx-nav-cta{display:none}
@media (max-width:1060px){
  .rx-nav-pill{position:absolute;top:calc(100% + 10px);left:0;right:0;display:none;flex-direction:column;align-items:stretch;gap:4px;padding:10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-2)}
  .rx-nav-pill.is-open{display:flex}
  .rx-nav-burger{display:flex}
}
@media (max-width:560px){
  /* Логотип и «бургер» — больше в строку ничего не ставим: кнопка
     переезжает в меню, иначе название ужимается до «УРОКРОБО…». */
  .rx-nav-right .rx-btn{display:none}
  .rx-nav-cta,.rx-nav-cta:hover{display:inline-flex;justify-content:center;color:#26100a;background:linear-gradient(135deg,#ffa77f,#f0663a);font-weight:700}
}
@media (max-width:620px){.b-logo-sub{display:none}}
/* Экран симулятора в герое */
.s-stage{max-width:1060px;margin:0 auto}
.s-stage .rx-shot-body{padding:0}
.s-stage .rx-shot-body{display:block;background:none;background-image:none;aspect-ratio:auto;min-height:0}
.s-canvas{position:relative;width:100%;aspect-ratio:16/9;display:grid;place-items:center;background:var(--tint-slate);border-top:1px solid var(--line)}
.s-canvas::after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(74,85,104,.10) 1px,transparent 1px),linear-gradient(90deg,rgba(74,85,104,.10) 1px,transparent 1px);background-size:28px 28px}
.s-canvas-in{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;padding:24px}
.s-canvas-in .rx-i{width:44px;height:44px;color:var(--on-slate);opacity:.8;stroke-width:1.4}
.s-canvas-in p{margin:0;font-size:14.5px;color:var(--ink-2);max-width:44ch}
.s-note{margin:14px auto 0;max-width:62ch;text-align:center;font-size:14px;color:var(--ink-3)}
/* Палитра компонентов */
/* Ключевые числа */
.s-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-top:26px}
.s-fact{padding:20px 22px}
.s-fact b{display:block;font-size:clamp(26px,3vw,34px);font-weight:800;letter-spacing:-.03em;color:var(--brand);line-height:1.05}
.s-fact span{display:block;margin-top:6px;font-size:14px;color:var(--ink-2)}

/* ── Тёмная гамма урокробототехники.рф ─────────────────────── */
:root{
--brand:#ff8a5c;--brand-2:#ffa77f;--brand-ink:#f0663a;
--bg:#0c090c;--surface:#17131a;--surface-2:#1d1822;
--ink:#f7f0ea;--ink-2:#c6bab5;--ink-3:#9b8f8c;
--line:rgba(255,255,255,.09);--line-2:rgba(255,255,255,.17);
--tint-sky:#141b28;--tint-mint:#0f1d18;--tint-amber:#241b12;--tint-violet:#1a1528;--tint-rose:#251419;--tint-slate:#19161b;
--on-sky:#93bdff;--on-mint:#6fdcab;--on-amber:#f2b571;--on-violet:#b99cff;--on-rose:#ff9aae;--on-slate:#bcb2ae;
--ok:#6fdcab;--ok-bg:#0f1d18;--warn:#f2b571;--warn-bg:#241b12;--danger:#ff9aae;--danger-bg:#251419;
--sh-1:0 1px 2px rgba(0,0,0,.4),0 8px 20px -12px rgba(0,0,0,.7);
--sh-2:0 2px 6px rgba(0,0,0,.45),0 22px 46px -20px rgba(0,0,0,.85);
--sh-3:0 34px 70px -30px rgba(0,0,0,.9),0 4px 12px rgba(0,0,0,.5);
--sh-brand:0 16px 32px -14px rgba(240,102,58,.5);
}
body{background:var(--bg)}
.rx-page::before{content:"";position:absolute;top:-340px;left:50%;transform:translateX(-50%);width:1300px;height:820px;background:radial-gradient(45% 50% at 50% 50%,rgba(240,102,58,.22),transparent 70%);pointer-events:none;z-index:-1}
.rx-nav{background:rgba(29,24,33,.84);border-color:rgba(255,255,255,.09)}
.rx-nav.is-stuck{background:rgba(29,24,33,.95)}
.rx-nav-burger{background:var(--surface-2);border-color:var(--line);color:var(--ink)}
.rx-nav-link:hover{background:rgba(255,255,255,.07);color:var(--ink)}
.rx-nav-link.is-active{background:rgba(255,138,92,.14);color:var(--brand)}
.rx-card{border-color:rgba(255,255,255,.08)}
.rx-card-lift:hover{border-color:rgba(255,138,92,.34)}
.rx-card-ic{background:rgba(255,255,255,.07);color:var(--brand);box-shadow:none}
.rx-btn-primary{color:#26100a;background:linear-gradient(135deg,#ffa77f,#f0663a)}
.rx-btn-ghost{color:var(--ink);background:var(--surface-2);border-color:var(--line-2)}
.rx-btn[aria-disabled="true"],.rx-btn.is-off{background:var(--surface-2)}
.rx-pill,.rx-chip{background:var(--surface-2);border-color:var(--line);color:var(--ink-2)}
.rx-h1-accent{color:var(--brand)}
.rx-faq details{background:var(--surface);border-color:var(--line)}
.rx-faq details:hover{border-color:rgba(255,138,92,.3)}
.rx-cta{color:#fff;background:linear-gradient(135deg,#2a1109,#7a2d14 45%,#c2471f)}
.rx-cta .rx-btn-primary{background:#fff;color:#a63a17;box-shadow:0 16px 30px -14px rgba(0,0,0,.7)}
.rx-cta .rx-btn-ghost{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.4);color:#fff}
.rx-step-n{color:#26100a;background:linear-gradient(135deg,#ffa77f,#f0663a)}
.rx-footer-inner{background:var(--surface);border-color:rgba(255,255,255,.08)}
.rx-footer a:hover{color:var(--brand)}
.rx-shot{border-color:rgba(255,255,255,.1);background:#100d12}
.rx-shot-bar{background:linear-gradient(180deg,#221c27,#191419)}
.s-canvas{background:#111015;border-top-color:var(--line)}
.s-canvas::after{background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px)}
.s-canvas-in .rx-i{color:var(--brand)}
.s-fact b{color:var(--brand)}
a{color:var(--brand)}a:hover{color:var(--brand-2)}
.rx-btn-primary,.rx-btn-primary:hover{color:#26100a}
.rx-cta .rx-btn-primary,.rx-cta .rx-btn-primary:hover{color:#a63a17}
/* Логотип: угловатый индустриальный капслок. */
.rx-logo{gap:12px}
.rx-logo-mark{font-family:'Tektur','Montserrat',sans-serif;font-size:13px;font-weight:700;letter-spacing:.06em;color:#26100a;background:linear-gradient(135deg,#ffa77f,#f0663a);-webkit-background-clip:border-box;background-clip:border-box;width:38px;height:38px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;flex:none}
.rx-logo-word{font-family:'Tektur','Montserrat',sans-serif;font-size:20px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink);white-space:nowrap}
.rx-footer-brand .rx-logo-mark{width:32px;height:32px;font-size:11.5px;border-radius:9px}
.rx-footer-brand .rx-logo-word{font-size:17px}
@media (max-width:620px){.rx-logo-word{font-size:16px;letter-spacing:.02em}}
.rx-footer-brand>span:not([class]){display:contents}
.rx-pulse{background:linear-gradient(135deg,#ffc7ac,#f0663a)!important;box-shadow:0 0 0 4px rgba(240,102,58,.16)}
.rx-btn-primary:hover{background:linear-gradient(135deg,#ffb894,#f4744a)!important;box-shadow:var(--sh-brand)}
.rx-btn-ghost:hover,a.rx-chip:hover{border-color:rgba(240,102,58,.45)}
.rx-card-sky{border-color:rgba(240,102,58,.14)}
.rx-faq details[open]{border-color:rgba(240,102,58,.28)}
.rx-hero::after,.rx-cta::after{background-image:none!important;display:none}
:focus-visible{outline-color:rgba(240,102,58,.55)}
::selection{background:rgba(240,102,58,.24)}
.s-pal-group{margin-bottom:6px;border-radius:var(--r-md);overflow:hidden}
.s-pal-group:last-child{margin-bottom:0}
.s-pal-group>summary{display:flex;align-items:center;gap:12px;padding:18px 22px;cursor:pointer;list-style:none}
.s-pal-group>summary::-webkit-details-marker{display:none}
.s-pal-t{font-size:16.5px;font-weight:700;letter-spacing:-.01em;color:var(--ink)}
.s-pal-n{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:22px;padding:0 8px;border-radius:var(--r-pill);background:rgba(255,138,92,.14);color:var(--brand);font-size:12.5px;font-weight:700}
.s-pal-chev{width:18px;height:18px;margin-left:auto;color:var(--ink-3);transition:transform .2s var(--ease)}
.s-pal-group[open]>summary .s-pal-chev{transform:rotate(180deg)}
.s-pal-group>summary{border-radius:var(--r-md);transition:background .16s}
.s-pal-group>summary:hover{background:rgba(255,255,255,.04)}
.s-pal-group>summary:hover .s-pal-t{color:var(--brand)}
.s-pal{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:12px;padding:8px 8px 20px}
.s-vendor{display:flex;flex-wrap:wrap;align-items:center;gap:18px;justify-content:space-between;margin-top:30px;padding:24px 26px}
.s-vendor p{margin:0;font-size:15.5px;line-height:1.6;color:var(--ink-2);max-width:62ch}
.s-vendor b{color:var(--ink)}
.s-pal-item{display:flex;flex-direction:column;align-items:center;gap:10px;padding:14px 10px;border-radius:var(--r-sm);background:rgba(255,255,255,.04);transition:background .16s,transform .16s var(--ease)}
.s-pal-item:hover{background:rgba(255,255,255,.09);transform:translateY(-2px)}
.s-pal-item img{width:100%;height:64px;object-fit:contain;display:block}
.s-pal-item img.s-inv{filter:invert(1) hue-rotate(180deg) brightness(1.05)}
.s-pal-item span{font-size:13px;line-height:1.35;color:var(--ink-2);text-align:center}
/* Заметный hover у кнопок в тёмной гамме. */
.rx-btn-primary:hover{background:linear-gradient(135deg,#ffb894,#f4744a)!important;box-shadow:0 18px 34px -12px rgba(240,102,58,.65);transform:translateY(-2px)}
.rx-btn-ghost:hover{background:rgba(255,138,92,.12)!important;border-color:rgba(255,138,92,.6)!important;color:var(--brand);transform:translateY(-2px)}
.rx-cta .rx-btn-primary:hover{background:#fff!important;color:#a63a17;transform:translateY(-2px);box-shadow:0 20px 36px -14px rgba(0,0,0,.75)}
.rx-nav .rx-btn-primary:hover{transform:translateY(-1px)}
.rx-footer-inner{gap:30px;padding:26px 32px}
.rx-footer{padding:0 32px 22px;margin-top:calc(var(--step) * .7)}
.rx-footer-brand{margin-bottom:10px}
.rx-footer-social{margin-top:12px;gap:8px}
.rx-footer-social a{width:36px;height:36px}
.rx-footer-social .rx-i{width:18px;height:18px}
.s-max-ic{width:17px;height:17px;border-radius:4px;display:block}
.rx-footer-social a{border-color:var(--line)!important}
.rx-footer-social a:hover{border-color:var(--brand)!important;color:var(--brand)}
.rx-footer-bottom{margin-top:16px;padding-top:14px}
.rx-footer-h{margin-bottom:10px}
.rx-footer-cols{gap:22px}
.s-emoji{display:inline-block;font-size:.8em;line-height:1;vertical-align:.06em;filter:drop-shadow(0 6px 18px rgba(240,102,58,.45))}

/* Карточки языков на about.html. Флаг крупный: по нему и опознают свою
   строку, а не по названию языка чужими буквами. */
.s-lang-card { display: block; text-decoration: none; color: inherit; }
.s-lang-card:hover { border-color: var(--brand); }
.s-lang-flag { display: inline-flex; line-height: 0; margin-bottom: 10px; }
.s-lang-flag svg { border-radius: 3px; }
.rx-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 900px) { .rx-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) { .rx-grid-4 { grid-template-columns: 1fr; } }


/* Переключатель языка в шапке публичных страниц. Разметку ставит i18n.js —
   те же классы, что и в редакторе, но здесь своя тёмная гамма: файл стилей у
   публичных страниц отдельный, и без этих правил кнопка оставалась голой. */
.rx-lang { display: inline-flex; align-items: center; }
.rx-lang .lang-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 34px;
  padding: 0 10px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--ink-2);
  font: 700 12px/1 "Geist", system-ui, sans-serif;
  letter-spacing: 0.04em;
  cursor: pointer;
  white-space: nowrap;
}
.rx-lang .lang-btn:hover { background: rgba(255, 255, 255, 0.1); border-color: var(--line-strong, var(--line)); }
.rx-lang .lang-flag { display: inline-flex; line-height: 0; }
.rx-lang .lang-flag svg { display: block; border-radius: 2px; }
.rx-lang .lang-caret { opacity: 0.7; }

/* Меню общее для всех страниц (живёт в <body>), поэтому стили те же, что в
   редакторе: светлая карточка поверх тёмной страницы читается лучше всего. */
.lang-menu {
  position: fixed;
  z-index: 7000;
  min-width: 168px;
  padding: 4px;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.12);
  border-radius: 12px;
  box-shadow: 0 14px 34px rgba(0, 0, 0, 0.45);
}
.lang-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 9px 10px;
  background: none;
  border: 0;
  border-radius: 8px;
  color: #1f2937;
  font: 500 14px/1.2 "Geist", system-ui, sans-serif;
  text-align: left;
  cursor: pointer;
}
.lang-item:hover { background: rgba(0, 0, 0, 0.06); }
.lang-item.is-on { background: rgba(255, 106, 61, 0.14); color: #7c2d12; font-weight: 700; }
.lang-flag svg { display: block; }

/* В «бургере» на узком экране кнопка языка остаётся видимой: язык выбирают
   раньше, чем читают разделы. */
@media (max-width: 560px) {
  .rx-lang .lang-btn .lang-code { display: none; }
  .rx-lang .lang-btn { padding: 0 8px; }
}

/* ── Страницы примеров и деталей (examples/, parts/) ──────────────
   Собирает их tools/example-pages.mjs. Классы ex-* — только здесь:
   страниц полторы сотни, и стиль у них должен меняться одной правкой. */
.ex-main { padding: clamp(18px, 3vw, 36px) 0 clamp(40px, 6vw, 80px); }
.ex-main .rx-wrap { max-width: 980px; padding-inline: clamp(16px, 3vw, 24px); box-sizing: border-box; }
.ex-actions .rx-btn, .ex-cta .rx-btn { max-width: 100%; white-space: normal; text-align: center; }
.ex-note b { display: block; color: var(--ink); margin-bottom: 4px; }
.ex-crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 13.5px; color: var(--ink-3); margin-bottom: 14px; }
.ex-crumbs a { color: var(--ink-2); }
.ex-crumbs a:hover { color: var(--brand); }
.ex-crumb-sep { opacity: .6; }
.ex-h1 { margin: 0 0 10px; }
.ex-lead { margin: 0 0 16px; max-width: 70ch; }
.ex-meta { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 18px; }
.ex-actions { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 26px; }
.ex-shot { margin: 0 0 30px; }
.ex-shot img { display: block; width: 100%; height: auto; border-radius: var(--r-lg); border: 1px solid var(--line); background: #fff; }
.ex-shot figcaption { margin-top: 8px; font-size: 13.5px; color: var(--ink-3); }
.ex-sec { margin: 0 0 34px; }
.ex-sec p { color: var(--ink-2); line-height: 1.65; max-width: 75ch; }
.ex-list { margin: 0; padding-left: 20px; color: var(--ink-2); line-height: 1.9; }
.ex-list a, .ex-sec p a { color: var(--brand); }
.ex-wires { min-width: 0; }
.ex-wires td { padding: 10px 12px; }
.ex-arrow { color: var(--ink-3); width: 24px; text-align: center !important; }
.ex-pins { min-width: 0; }
.ex-pins tbody th { white-space: normal; width: 22%; }
.ex-code { margin: 0 0 16px; padding: 18px 20px; overflow-x: auto; border-radius: var(--r-lg);
           background: #141016; border: 1px solid var(--line); color: #f3ece6;
           font: 13.5px/1.6 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; tab-size: 2; }
.ex-note { padding: 14px 18px; border-radius: var(--r-md, 12px); background: rgba(255, 200, 87, .08);
           border-left: 3px solid #ffc857; }
.ex-cards { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px;
            grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.ex-card { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; height: 100%; padding: 16px 18px;
           border-radius: var(--r-lg); background: var(--surface); border: 1px solid var(--line);
           transition: border-color .15s, transform .15s; }
.ex-card:hover { border-color: rgba(255, 138, 92, .5); transform: translateY(-1px); }
.ex-card-t { font-weight: 700; color: var(--ink); line-height: 1.3; }
.ex-card-d { font-size: 13.5px; color: var(--ink-2); line-height: 1.5; flex: 1; }
.ex-group { margin: 0 0 22px; }
.ex-group-h { font-size: 16px; margin: 0 0 10px; }
.ex-group-h a { color: var(--ink); }
.ex-group-h a:hover { color: var(--brand); }
.ex-part { display: grid; grid-template-columns: minmax(0, 220px) minmax(0, 1fr); gap: 26px; align-items: start; margin-bottom: 26px; }
.ex-part-art { display: flex; align-items: center; justify-content: center; padding: 18px; border-radius: var(--r-lg);
               background: var(--surface); border: 1px solid var(--line); }
.ex-part-art img { max-width: 100%; height: auto; }
.ex-part p { margin-top: 0; }
.ex-cta { padding: 24px; border-radius: var(--r-lg); background: var(--surface); border: 1px solid var(--line); }
@media (max-width: 700px) {
  .ex-part { grid-template-columns: minmax(0, 1fr); }
  .ex-part-art { max-width: 260px; }
  .ex-wires th, .ex-wires td { padding: 8px 6px; font-size: 13px; }
}

/* ── ROS-симулятор: главная /ros2/ (карты и задачи) ──────────────────
   Сам симулятор — ros2/sim/ со своими ros-sim.css/js; здесь только
   страница-витрина на ките. Готовая карта стоит отдельной широкой
   карточкой с кнопками запуска, готовящиеся — сеткой ниже, приглушённые:
   выдавать заглушку за работающее нельзя. */
.ros-mark{display:inline-flex;flex:none}
.rx-footer-brand .ros-mark svg{width:22px;height:22px}
.ros-shot-sec{padding-top:clamp(8px,1.4vw,18px)}
.ros-shot-open{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--ink-2);text-decoration:none}
.ros-shot-open .rx-i{width:16px;height:16px}
.ros-shot-open:hover{color:var(--brand)}
.rx-shot-bare a.rx-shot-body{display:block}
.ros-map{display:flex;flex-direction:column;overflow:hidden;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);box-shadow:var(--sh-1)}
.ros-map.is-featured{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);margin-bottom:clamp(36px,4vw,56px);border-color:rgba(255,138,92,.42);box-shadow:var(--sh-2),0 0 0 1px rgba(255,138,92,.18)}
.ros-map-art{position:relative;display:block;height:170px;overflow:hidden;background:#0f0c10}
.ros-map.is-featured .ros-map-art{height:auto;min-height:300px}
.ros-map-art svg{display:block;width:100%;height:100%}
.ros-map-art img{display:block;width:100%;height:100%;object-fit:cover}
.ros-map.is-featured .ros-map-art img,.ros-map.is-featured .ros-map-art svg{position:absolute;top:0;left:0}
.ros-map.is-soon .ros-map-art svg{filter:grayscale(.65) brightness(.62)}
a.ros-map-art:hover svg,a.ros-map-art:hover img{filter:brightness(1.08)}
.ros-badge{position:absolute;top:12px;left:12px;padding:4px 11px;border-radius:999px;font-size:12px;font-weight:700;color:var(--ink-2);background:rgba(14,12,15,.85);border:1px solid rgba(255,255,255,.16)}
.ros-badge.ok{color:#0e1a14;background:var(--ok);border-color:transparent}
.ros-map-body{display:flex;flex-direction:column;gap:10px;padding:20px 22px 22px}
.ros-map.is-featured .ros-map-body{gap:14px;padding:clamp(22px,3vw,34px)}
.ros-map-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.ros-map-head h3{margin:0;font-size:20px;font-weight:800;letter-spacing:-.02em}
.ros-map.is-featured .ros-map-head h3{font-size:clamp(24px,2.4vw,30px)}
.ros-robot{padding:4px 10px;border-radius:8px;font-size:12px;font-weight:700}
.ros-robot.r-vac{color:var(--brand);background:rgba(255,138,92,.14)}
.ros-robot.r-del{color:var(--on-sky);background:var(--tint-sky)}
.ros-robot.r-wh{color:var(--on-amber);background:var(--tint-amber)}
.ros-robot.r-bus{color:var(--on-mint);background:var(--tint-mint)}
.ros-map-desc{margin:0;font-size:15px;line-height:1.6;color:var(--ink-2)}
.ros-tasks{display:flex;flex-direction:column;gap:8px;margin:4px 0 0;padding:0;list-style:none}
.ros-task{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border-radius:14px;background:var(--surface-2);border:1px solid var(--line)}
.ros-task.is-ready{background:#20161a;border-color:rgba(255,138,92,.35)}
.ros-task-t{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;min-width:0}
.ros-task-t b{font-size:15px}
.ros-task-t p{flex-basis:100%;margin:2px 0 0;font-size:13.5px;line-height:1.55;color:var(--ink-2)}
.ros-lvl{font-size:12px;font-weight:600;color:var(--ink-3)}
.ros-task .rx-btn{flex:none}
.ros-soon{flex:none;padding:4px 10px;border-radius:8px;font-size:12px;font-weight:700;color:var(--ink-3);background:var(--surface);border:1px dashed var(--line-2)}
.ros-soon-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin:0 0 18px}
.ros-soon-head h3{margin:0}
.ros-soon-head p{margin:0;font-size:15px;color:var(--ink-3)}
.ros-maps{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}
.ros-cmd{display:block;margin:6px 0 10px;padding:9px 11px;border-radius:10px;font:600 12.5px/1.45 'Geist Mono',ui-monospace,monospace;color:#c7f0dc;background:#0e0c10;border:1px solid var(--line);overflow-wrap:anywhere}
.ros-topics{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.ros-code{margin:0;font-family:'Geist Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.65;color:#c7f0dc;tab-size:4}
#python .rx-lead code{padding:1px 6px;border-radius:6px;font:600 .9em 'Geist Mono',ui-monospace,monospace;color:#c7f0dc;background:#141217;border:1px solid var(--line)}
#python .rx-list{margin:18px 0 22px}
.ros-topics code{padding:3px 8px;border-radius:7px;font:600 12.5px 'Geist Mono',ui-monospace,monospace;color:var(--on-sky);background:#141217;border:1px solid var(--line)}
@media (max-width: 860px) {
  .ros-map.is-featured { grid-template-columns: minmax(0, 1fr); }
  .ros-map.is-featured .ros-map-art { min-height: 0; height: 220px; }
}
@media (max-width: 560px) {
  .ros-task { flex-direction: column; align-items: stretch; }
  .ros-task .rx-btn { justify-content: center; }
  .ros-task .ros-soon { align-self: flex-start; }
  .ros-maps { grid-template-columns: minmax(0, 1fr); }
}
