/* ============================================================
   КОМПОНЕНТЫ: карточки, скелетоны, слайдер, кнопки, вкладки,
   хлебные крошки, футер.
   ============================================================ */

/* ---------- Блоки контента ---------- */
.content{padding-block:clamp(20px,2.4vw,40px)}

/* Появление контента при переходе. Анимируются только те блоки,
   которые действительно сменились: хлебные крошки и боковое меню
   остаются на месте — их подбирает роутер (см. animateContent). */
@keyframes swapIn{
  from{opacity:0;transform:translateY(10px)}
  to{opacity:1;transform:none}
}
.swap-in{animation:swapIn .32s var(--ease) both}

.section{margin-bottom:clamp(26px,3vw,52px)}

.panel{
  background:var(--surface);
  border-radius:var(--radius);
  box-shadow:var(--shadow-1);
  padding:clamp(18px,2vw,30px);
}

.block-title{
  position:relative;
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  font-size:clamp(19px,1.7vw,26px);color:var(--blue);
  margin:0 0 22px;padding-bottom:12px;
  border-bottom:4px solid var(--orange);
}
.block-title__link{font-size:14px;font-weight:600;color:var(--text-muted)}
.block-title__link:hover{color:var(--orange)}

/* ---------- Кнопки ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:11px 26px;border-radius:var(--radius-sm);border:0;cursor:pointer;
  font-size:15px;font-weight:600;text-align:center;
  transition:background .25s var(--ease),transform .2s var(--ease),color .25s var(--ease);
}
.btn--primary{background:var(--blue);color:#fff}
.btn--primary:hover{background:var(--orange);color:#fff;transform:translateY(-2px)}
.btn--ghost{background:transparent;color:var(--blue);border:1px solid var(--border)}
.btn--ghost:hover{background:var(--blue-soft);color:var(--blue)}
.btn--wide{width:100%}
.btn[disabled]{opacity:.6;cursor:not-allowed;transform:none}

/* ---------- Хлебные крошки ---------- */
.crumbs{display:flex;flex-wrap:wrap;gap:8px;font-size:13.5px;color:var(--text-muted);margin-bottom:16px}
.crumbs a{color:var(--text-muted)}
.crumbs a:hover{color:var(--orange)}
.crumbs span::before{content:"/";margin-right:8px;opacity:.5}
.crumbs span:first-child::before{content:none}

/* ---------- Скелетоны (прелоадеры контента) ---------- */
.sk{
  position:relative;overflow:hidden;
  background:#e4e9f0;border-radius:8px;
}
.sk::after{
  content:"";position:absolute;inset:0;transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.75),transparent);
  animation:skShimmer 1.3s infinite;
}
@keyframes skShimmer{100%{transform:translateX(100%)}}
.sk-line{height:13px;margin-bottom:10px}
.sk-line.w-40{width:40%}.sk-line.w-55{width:55%}.sk-line.w-70{width:70%}
.sk-line.w-85{width:85%}.sk-line.w-100{width:100%}
.sk-title{height:26px;width:60%;margin-bottom:18px}
.sk-thumb{width:280px;height:190px;border-radius:10px;flex:none}
.sk-block{height:180px;border-radius:var(--radius)}
.sk-slider{height:clamp(240px,34vw,500px);border-radius:var(--radius)}
.sk-card{display:flex;gap:20px;padding:18px 0;border-bottom:1px solid var(--border)}
.sk-card__body{flex:1;min-width:0}
@media (max-width:760px){
  .sk-card{flex-direction:column}
  .sk-thumb{width:100%;height:200px}
}

/* Кольцевой прелоадер (для догрузки списков) */
.spinner{
  width:34px;height:34px;border-radius:50%;
  border:3px solid var(--blue-soft);border-top-color:var(--orange);
  animation:spin .8s linear infinite;margin:22px auto;
}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- Слайдер новостей ---------- */
.slider{
  position:relative;height:clamp(260px,34vw,500px);
  border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-2);
  background:#0d2542;
}
.slide{
  position:absolute;inset:0;opacity:0;visibility:hidden;
  transition:opacity .7s var(--ease);
}
.slide.is-active{opacity:1;visibility:visible}
.slide__bg{position:absolute;inset:-24px;object-fit:cover;width:calc(100% + 48px);height:calc(100% + 48px);
  filter:blur(26px) brightness(.65);transform:scale(1.06)}
.slide__img{position:absolute;inset:0;margin:auto;max-width:100%;max-height:100%;
  width:auto;height:100%;object-fit:contain}
.slide__caption{
  position:absolute;left:0;right:0;bottom:0;
  padding:clamp(40px,6vw,70px) clamp(18px,3vw,44px) clamp(18px,2.4vw,32px);
  background:linear-gradient(transparent,rgba(4,17,35,.88));color:#fff;
}
.slide__source{
  display:inline-block;margin-bottom:8px;padding:3px 10px;border-radius:var(--radius-pill);
  background:var(--orange);font-size:12px;font-weight:700;letter-spacing:.03em;
}
.slide__title{
  margin:0;color:#fff;font-size:clamp(16px,1.8vw,28px);line-height:1.3;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.slide__title a{color:#fff}
.slide__title a:hover{color:var(--orange)}
.slider__arrow{
  position:absolute;top:0;bottom:0;width:clamp(46px,6vw,86px);
  background:transparent;border:0;color:var(--orange);font-size:clamp(24px,3vw,38px);
  cursor:pointer;z-index:3;transition:background .25s var(--ease),color .25s var(--ease);
}
.slider__arrow:hover{background:rgba(255,134,0,.45);color:#fff}
.slider__arrow .i{width:clamp(26px,3vw,40px);height:clamp(26px,3vw,40px);stroke-width:2.2}
.slider__arrow--prev{left:0}
.slider__arrow--next{right:0}
.slider__dots{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);
  display:flex;gap:9px;z-index:3}
.slider__dots button{
  width:11px;height:11px;padding:0;border:0;border-radius:50%;cursor:pointer;
  background:rgba(255,255,255,.5);transition:background .2s var(--ease),width .2s var(--ease);
}
.slider__dots button.is-active{background:var(--orange);width:26px;border-radius:var(--radius-pill)}

/* ---------- Картинки с «мягкой» загрузкой ---------- */
.img-box{position:relative;overflow:hidden;background:#0f2947;border-radius:10px}
.img-box::before{
  content:"";position:absolute;inset:0;
  background:var(--ph-bg,#dfe6ef) center/cover;
  filter:blur(14px);transform:scale(1.1);transition:opacity .5s var(--ease);
}
.img-box.is-loaded::before{opacity:0}
.img-box img{
  position:relative;width:100%;height:100%;object-fit:cover;
  opacity:0;transition:opacity .5s var(--ease),transform .5s var(--ease);
}
.img-box.is-loaded img{opacity:1}
.img-box--contain img{object-fit:contain}

/* ---------- Карточка новости ---------- */
.news-card{
  display:flex;align-items:stretch;gap:22px;
  padding:20px 0;border-bottom:1px solid var(--border);
}
.news-card:first-child{padding-top:0}
.news-card:last-child{border-bottom:0}
.news-card__thumb{width:280px;height:190px;flex:none;border-radius:10px;overflow:hidden;position:relative;background:#12365f}
.news-card__thumb .blur{position:absolute;inset:-14px;width:calc(100% + 28px);height:calc(100% + 28px);
  object-fit:cover;filter:blur(18px);opacity:.75;transform:scale(1.08)}
.news-card__thumb .main{position:absolute;inset:0;margin:auto;max-width:92%;max-height:92%;width:auto;height:auto;
  object-fit:contain;border-radius:8px;box-shadow:0 6px 16px rgba(0,0,0,.35);
  transition:transform .4s var(--ease)}
.news-card:hover .news-card__thumb .main{transform:scale(1.05)}
.news-card__body{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}
.news-card__title{font-size:clamp(16px,1.2vw,19px);margin:0 0 10px;line-height:1.35}
.news-card__title a{color:var(--title)}
.news-card__title a:hover{color:var(--orange)}
.news-card__excerpt{
  color:#4a5768;margin:0 0 12px;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.meta{display:flex;flex-wrap:wrap;gap:14px;font-size:13.5px;color:var(--text-muted)}
.meta__date{color:var(--orange);font-weight:600}
.meta i{font-style:normal;margin-right:5px;opacity:.8}

@media (max-width:760px){
  .news-card{flex-direction:column;gap:14px}
  .news-card__thumb{width:100%;height:210px}
}

/* ---------- Объявления ---------- */
.ann{padding:16px 0;border-bottom:1px solid var(--border)}
.ann:first-child{padding-top:0}
.ann:last-child{border-bottom:0;padding-bottom:0}
.ann__date{color:var(--orange);font-weight:600;font-size:13px;margin-bottom:6px}
.ann__title{font-size:15.5px;line-height:1.45;color:var(--text);margin:0}
.ann__title a{color:var(--title)}
.ann__title a:hover{color:var(--orange)}
.ann__pin{
  display:inline-block;margin-right:6px;padding:1px 8px;border-radius:var(--radius-pill);
  background:var(--orange);color:#fff;font-size:11px;font-weight:700;vertical-align:middle;
}

/* Содержимое объявления: текст и встроенное видео */
.ann__body{margin-top:10px;font-size:14px;line-height:1.6;color:var(--text-muted)}
.ann__body p{margin:0 0 8px}
.ann__body p:last-child{margin-bottom:0}
.ann__body a{color:var(--blue);text-decoration:underline}
.ann__body img{max-width:100%;height:auto;border-radius:8px;margin:8px 0;display:block}
/* Встроенный проигрыватель с внешней площадки приходит с
   собственными width/height — приводим к ширине колонки,
   сохраняя пропорции 16:9, иначе он вылезает за край блока */
.ann__body iframe,
.ann__body video{
  width:100%;max-width:100%;aspect-ratio:16/9;height:auto;
  border:0;border-radius:8px;margin:8px 0;display:block;background:#000;
}

/* Объявление редактируется тем же редактором панели, что и страницы
   (см. .article__body table выше) — колонка здесь узкая, поэтому
   те же элементы оформлены компактнее, а таблица сразу со своей
   прокруткой: раздвигать и без того узкую карточку сайдбара нечем */
.ann__body table{
  display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;
  white-space:nowrap;border-collapse:collapse;margin:8px 0;font-size:13px;
  scrollbar-width:thin;
}
.ann__body table caption{
  caption-side:top;text-align:left;font-weight:600;color:var(--title);
  padding-bottom:6px;white-space:normal;
}
.ann__body th,.ann__body td{border:1px solid var(--border);padding:6px 8px;vertical-align:top}
.ann__body th{background:var(--surface);font-weight:600;text-align:left;color:var(--title)}
.ann__body hr{border:0;border-top:1px solid var(--border);margin:10px 0}
.ann__body pre{
  background:var(--surface);border:1px solid var(--border);border-radius:6px;
  padding:8px 10px;font-family:ui-monospace,Menlo,Consolas,monospace;
  font-size:12px;line-height:1.5;overflow-x:auto;white-space:pre;
}

/* ---------- Баннеры под объявлениями ---------- */
.home-side{display:flex;flex-direction:column;gap:clamp(18px,2vw,28px)}
.banners{display:flex;flex-direction:column;gap:14px}
.banner{
  display:block;overflow:hidden;border-radius:var(--radius);
  background:var(--surface);border:1px solid var(--border);
  color:inherit;
}
a.banner{transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}
a.banner:hover{border-color:var(--orange);box-shadow:var(--shadow-1)}
/* Внутренняя обёртка нужна, чтобы заданная высота работала
   вместе с прокруткой длинного содержимого, а не обрезала его */
.banner__inner{width:100%;height:100%;overflow:hidden}
.banner__inner img{width:100%;height:100%;object-fit:cover;display:block}
.banner__inner iframe,
.banner__inner video{width:100%;height:100%;border:0;display:block;background:#000}

/* ---------- Вкладки ---------- */
.tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:2px solid var(--border);margin-bottom:22px}
.tabs__btn{
  background:none;border:0;cursor:pointer;padding:11px 20px;
  font-size:15px;font-weight:600;color:var(--text-muted);
  border-bottom:3px solid transparent;margin-bottom:-2px;
  transition:color .2s var(--ease),border-color .2s var(--ease);
}
.tabs__btn:hover{color:var(--blue)}
.tabs__btn.is-active{color:var(--blue);border-bottom-color:var(--orange)}
.tab-panel{display:none;animation:fadeIn .3s var(--ease)}
.tab-panel.is-active{display:block}
@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---------- Документы ---------- */
.doc{
  display:flex;align-items:center;gap:16px;
  padding:14px;border:1px solid var(--border);border-radius:var(--radius-sm);
  margin-bottom:12px;background:var(--surface);
  transition:border-color .2s var(--ease),box-shadow .2s var(--ease),transform .2s var(--ease);
}
.doc:hover{border-color:var(--orange);box-shadow:var(--shadow-1);transform:translateX(3px)}
.doc__ext{
  width:52px;height:60px;flex:none;border-radius:6px;display:grid;place-items:center;
  background:var(--blue-soft);color:var(--blue);font-size:12px;font-weight:700;letter-spacing:.04em;
}
.doc__ext[data-ext="PDF"]{background:#fde8e8;color:#c53030}
.doc__ext[data-ext="DOCX"]{background:#e6effb;color:#2058a4}
.doc__ext[data-ext="XLSX"]{background:#e6f6ec;color:#1e7a45}
.doc__body{flex:1;min-width:0}
.doc__title{font-weight:600;color:var(--title);margin:0 0 4px;font-size:15.5px}
.doc__meta{font-size:13px;color:var(--text-muted);display:flex;gap:14px;flex-wrap:wrap}
.doc__dl{flex:none}

/* ---------- Иконки ---------- */
.i{
  width:1em;height:1em;flex:none;display:inline-block;
  vertical-align:-.15em;stroke:currentColor;
}
.meta .i,.doc__meta .i{width:15px;height:15px;opacity:.85;margin-right:5px;vertical-align:-.22em}
.btn .i{width:17px;height:17px}
.block-title__link .i{width:15px;height:15px;margin-left:6px;vertical-align:-.2em}
.empty__icon .i{width:40px;height:40px;stroke-width:1.4}
.empty__icon{font-size:0;line-height:0;margin-bottom:12px;color:var(--text-muted);opacity:.55}

/* ---------- Витрина подраздела ---------- */
.section-hero{
  display:flex;align-items:center;gap:clamp(14px,2vw,26px);
  background:linear-gradient(120deg,var(--blue) 0%,#17457f 100%);
  color:#fff;border-radius:var(--radius);
  padding:clamp(20px,2.4vw,34px);margin-bottom:clamp(18px,2vw,30px);
  box-shadow:var(--shadow-1);
}
.section-hero__icon{
  width:clamp(52px,5vw,72px);height:clamp(52px,5vw,72px);flex:none;
  display:grid;place-items:center;border-radius:18px;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);
}
.section-hero__icon .i{width:60%;height:60%;stroke-width:1.5}
.section-hero__title{color:#fff;margin:0 0 6px;font-size:clamp(21px,2.2vw,32px)}
.section-hero__lead{margin:0;color:rgba(255,255,255,.85);font-size:15.5px;max-width:70ch}
@media (max-width:560px){
  .section-hero{flex-direction:column;align-items:flex-start;gap:14px}
}

/* ---------- Подразделы: вертикальный список, не сетка плиток ----------
   Раньше подразделы шли плиточной сеткой в несколько колонок —
   просторно, но для списка из текстовых пунктов, часто без
   картинки-обложки, выглядело как незаполненные карточки.
   Список компактнее по вертикали и одинаково хорошо читается
   что при трёх пунктах, что при пятнадцати: разделитель между
   строками вместо рамки на каждую, один общий контур на весь
   блок. Колонка всегда одна — при любой ширине экрана. */
.tiles{
  display:flex;flex-direction:column;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  overflow:hidden;
}
.tile{
  display:flex;align-items:center;gap:14px;
  padding:15px 18px;color:var(--text);
  border-bottom:1px solid var(--border);
  transition:background .18s var(--ease);
}
.tile:last-child{border-bottom:0}
.tile:hover{background:var(--surface-2);color:var(--text)}
.tile__icon{
  width:38px;height:38px;flex:none;border-radius:11px;display:grid;place-items:center;
  background:var(--blue-soft);color:var(--blue);
  transition:background .18s var(--ease),color .18s var(--ease);
}
.tile:hover .tile__icon{background:var(--blue);color:#fff}
.tile__icon .i{width:19px;height:19px;stroke-width:1.8}
.tile__body{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.tile__title{font-weight:700;color:var(--title);font-size:15px;line-height:1.3}
.tile__lead{font-size:13px;color:var(--text-muted);line-height:1.4;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tile__count{
  flex:none;font-size:11px;font-weight:700;
  letter-spacing:.02em;color:var(--orange);
  background:rgba(255,134,0,.1);
  padding:3px 8px;border-radius:var(--radius-pill);
}
.tile__go{color:var(--text-muted);flex:none;transition:transform .18s var(--ease),color .18s var(--ease)}
.tile__go .i{width:18px;height:18px}
.tile:hover .tile__go{color:var(--orange);transform:translateX(3px)}

/* ---------- Пустое состояние ---------- */
.empty{text-align:center;padding:50px 20px;color:var(--text-muted)}

/* ---------- Кнопка «Наверх» ---------- */
.to-top{
  position:fixed;right:20px;bottom:20px;z-index:900;
  width:46px;height:46px;border-radius:50%;border:0;cursor:pointer;
  display:grid;place-items:center;
  background:var(--blue);color:#fff;box-shadow:var(--shadow-2);
  transition:background .2s var(--ease),transform .2s var(--ease);
}
/* Кнопка скрывается атрибутом hidden (см. App.ui.initToTop), а не
   классом — но собственное display:grid выше имеет ту же
   специфичность, что и встроенное правило браузера [hidden]{display:none},
   и, будучи объявленным позже, побеждает его. Из-за этого кнопка
   была видна с самого начала, ещё до прокрутки, и на коротких
   страницах перекрывала содержимое. Возвращаем скрытие явно. */
.to-top[hidden]{display:none}
.to-top:hover{background:var(--orange);transform:translateY(-3px)}

/* ---------- Футер ---------- */
.site-footer{
  margin-top:clamp(40px,5vw,90px);
  background:linear-gradient(180deg,#1e518f 0%,#2058a4 100%);
  color:#fff;border-top:8px solid var(--orange);
  font-size:15px;
}
.footer__inner{
  display:grid;grid-template-columns:1.8fr 1fr 1.2fr;gap:clamp(24px,3vw,50px);
  padding-block:clamp(30px,3.6vw,60px);
}
.footer__name{color:var(--orange);font-size:18px;margin:0 0 12px;line-height:1.3}
.footer__legal{font-size:13.5px;color:#cfe2fb;margin:0 0 8px}
.footer h3{color:var(--orange);font-size:17px;margin:0 0 18px;padding-bottom:10px;position:relative}
.footer h3::after{content:"";position:absolute;left:0;bottom:0;width:40px;height:3px;background:var(--orange);border-radius:2px}
.footer__menu{list-style:none;margin:0;padding:0}
.footer__menu li{margin-bottom:10px}
.footer__menu a{color:#d6e8ff;transition:transform .2s var(--ease),color .2s var(--ease);display:inline-block}
.footer__menu a:hover{color:var(--orange);transform:translateX(5px)}
.footer__contacts div{display:flex;gap:10px;margin-bottom:13px;color:#d6e8ff;font-size:14.5px}
.footer__contacts .ic{width:18px;height:18px;flex:none;margin-top:3px;filter:brightness(0) invert(1)}
.footer__contacts a{color:#d6e8ff}
.footer__contacts a:hover{color:var(--orange)}
/* Значки соцсетей в футере — те же самые .topline__icon, что и
   в шапке (см. header.css): специфика собственных правил футера
   тут намеренно убрана, чтобы не перебивать общий стиль своим
   более узким селектором. Остаётся только раскладка ряда. */
.footer__social{display:flex;gap:10px;margin-top:18px}
.footer__bottom{
  border-top:1px solid rgba(255,255,255,.18);
  padding-block:18px;font-size:13.5px;color:#cfe2fb;
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
}
.footer__bottom a{color:#cfe2fb}
.footer__bottom a:hover{color:var(--orange)}
@media (max-width:900px){
  .footer__inner{grid-template-columns:1fr;gap:26px}
}

/* ============================================================
   ВЛОЖЕНИЯ МАТЕРИАЛА
   Документы, фото и видео, прикреплённые в панели управления.
   ============================================================ */
.attach{margin-top:clamp(26px,3vw,42px);padding-top:clamp(20px,2.4vw,32px);border-top:1px solid var(--border)}
.attach__title{font-size:clamp(17px,1.5vw,22px);color:var(--blue);margin-bottom:18px}

.attach__docs{list-style:none;margin:0 0 22px;padding:0;display:flex;flex-direction:column;gap:10px}
.attach__doc{
  display:flex;align-items:center;gap:16px;
  border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:12px 16px;background:var(--surface);color:var(--text);
  transition:border-color .2s var(--ease),box-shadow .2s var(--ease),transform .2s var(--ease);
}
.attach__doc:hover{border-color:var(--orange);box-shadow:var(--shadow-1);transform:translateX(3px);color:var(--text)}
.attach__ext{
  width:52px;height:60px;flex:none;border-radius:6px;display:grid;place-items:center;
  background:var(--blue-soft);color:var(--blue);font-size:12px;font-weight:700;letter-spacing:.04em;
}
.attach__ext[data-ext="PDF"]{background:#fde8e8;color:#c53030}
.attach__ext[data-ext="DOCX"],.attach__ext[data-ext="DOC"]{background:#e6effb;color:#2058a4}
.attach__ext[data-ext="XLSX"],.attach__ext[data-ext="XLS"]{background:#e6f6ec;color:#1e7a45}
.attach__body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.attach__name{font-weight:600;color:var(--title);font-size:15.5px}
.attach__meta{font-size:13px;color:var(--text-muted)}
.attach__go{
  flex:none;font-size:14px;font-weight:600;color:var(--blue);
  border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 18px;
}
.attach__doc:hover .attach__go{background:var(--orange);border-color:var(--orange);color:#fff}

.attach__videos{display:flex;flex-direction:column;gap:18px;margin-bottom:22px}
.attach__video{margin:0}
.attach__video video{width:100%;max-height:520px;border-radius:var(--radius);background:#000;display:block}
.attach__video figcaption{margin-top:8px;font-size:14px;color:var(--text-muted);text-align:center}
.attach__video-stub{
  padding:40px 20px;border-radius:var(--radius);background:var(--surface-2);
  border:1px dashed var(--border);color:var(--text-muted);text-align:center;font-size:14.5px;
}

.attach__photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}
.attach__photo{position:relative;display:block;height:160px;border-radius:10px;overflow:hidden;background:#dfe6ef}
.attach__photo img{width:100%;height:100%;object-fit:cover;transition:transform .35s var(--ease)}
.attach__photo:hover img{transform:scale(1.06)}
.attach__photo span{
  position:absolute;left:0;right:0;bottom:0;padding:18px 12px 9px;
  background:linear-gradient(transparent,rgba(4,17,35,.85));
  color:#fff;font-size:13px;line-height:1.35;
}

@media (max-width:640px){
  .attach__doc{flex-wrap:wrap;gap:12px}
  .attach__go{width:100%;text-align:center}
}

/* Медиа внутри текста материала */
.article__body figure{margin:1.4em 0}
.article__body figure img,.article__body figure video{width:100%;border-radius:var(--radius);display:block}
.article__body figure video{background:#000}
.article__body figcaption{margin-top:8px;font-size:14px;color:var(--text-muted);text-align:center}
.article__body .file-link{
  display:inline-flex;align-items:center;gap:8px;
  background:var(--blue-soft);border-radius:var(--radius-sm);padding:6px 14px;
  font-weight:600;text-decoration:none;
}

/* Таблица, разделитель и моноширинный блок из редактора панели
   (см. site/adm/assets/js/editor.js и .ed__area в её components.css) —
   этих правил здесь не было вовсе, поэтому таблица, вставленная
   в текст страницы или новости, долетала до сайта без единой
   границы и заливки шапки: голый HTML без объявленного класса,
   браузер отрисовывает такую <table> собственными стилями по
   умолчанию, никак не похожими на то, что автор видел в редакторе.

   Таблицу (особенно ту, что автор скопировал из Word, с многословной
   шапкой и полудюжиной колонок) на странице нередко некуда впихнуть:
   колонки сжимаются до нечитаемого состояния, а на мобильном раньше
   она и вовсе раздвигала весь контейнер страницы вбок. Вместо того
   чтобы силой сминать содержимое, таблица сама становится блоком
   с собственной горизонтальной прокруткой — всегда, не только на
   узких экранах: если колонки не помещаются, лишнее прячется за
   краем и открывается скроллбаром, а не портит остальную вёрстку.
   Технический приём: display:block на <table> отдаёт ей отдельный
   скроллящийся бокс, а внутренние <thead>/<tbody>/<tr>/<td> остаются
   table-элементами и по-прежнему выстраивают обычную табличную
   раскладку внутри него — браузер сам оборачивает их в анонимный
   табличный бокс. white-space:nowrap запрещает переносить текст
   в ячейках, иначе браузер попытался бы «дожать» строки переносом
   вместо того, чтобы честно показать прокрутку. */
.article__body table{
  display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;
  white-space:nowrap;border-collapse:collapse;margin:1.4em 0;font-size:15px;
  scrollbar-width:thin;
}
.article__body table caption{
  caption-side:top;text-align:left;font-weight:600;color:var(--title);
  padding-bottom:8px;font-size:16px;white-space:normal;
}
.article__body th,.article__body td{
  border:1px solid var(--border);padding:10px 14px;vertical-align:top;
}
.article__body th{background:var(--surface-2);font-weight:600;text-align:left;color:var(--title)}
.article__body hr{border:0;border-top:2px solid var(--border);margin:1.6em 0}
.article__body pre{
  background:var(--surface-2);border:1px solid var(--border);border-radius:8px;
  padding:14px 16px;font-family:ui-monospace,Menlo,Consolas,monospace;
  font-size:14px;line-height:1.5;overflow-x:auto;
}

/* Новость без обложки: текст занимает всю ширину карточки */
.news-card--text .news-card__body{padding-left:0}

/* ============================================================
   ПОЛНОЭКРАННЫЙ ПРОСМОТР ИЗОБРАЖЕНИЙ
   Общий на всю страницу узел: создаётся один раз при первом
   открытии и переиспользуется для любой галереи материала —
   слайдера-заставки новости или плитки вложений раздела.
   ============================================================ */
.lightbox{
  position:fixed;inset:0;z-index:1000;
  display:flex;flex-direction:column;
  background:transparent;
}
.lightbox[hidden]{display:none}
.lightbox__backdrop{
  position:absolute;inset:0;background:rgba(4,10,22,.94);
  animation:lbFade .2s var(--ease);
}
@keyframes lbFade{from{opacity:0}to{opacity:1}}

.lightbox__top{
  position:relative;z-index:2;
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  padding:14px clamp(14px,3vw,32px);color:#fff;
}
.lightbox__count{font-size:13.5px;color:rgba(255,255,255,.7);white-space:nowrap}
.lightbox__title{
  flex:1;min-width:0;font-size:14.5px;font-weight:600;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.lightbox__actions{display:flex;align-items:center;gap:8px;flex:none}

.lightbox__btn{
  display:inline-flex;align-items:center;gap:7px;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);
  color:#fff;font-size:13.5px;font-weight:600;cursor:pointer;
  padding:8px 14px;border-radius:var(--radius-pill);
  transition:background .2s var(--ease);
}
.lightbox__btn:hover{background:rgba(255,255,255,.22);color:#fff}
.lightbox__btn .i{width:17px;height:17px;flex:none}
.lightbox__btn span{white-space:nowrap}
.lightbox__btn--close{padding:8px;background:rgba(255,255,255,.08)}
.lightbox__btn--close:hover{background:var(--orange)}

.lightbox__download{position:relative}
.lightbox__menu{
  position:absolute;right:0;top:calc(100% + 8px);z-index:5;
  min-width:220px;background:#fff;border-radius:var(--radius-sm);
  box-shadow:0 14px 34px rgba(0,0,0,.35);overflow:hidden;
}
.lightbox__menu[hidden]{display:none}
.lightbox__menu a{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:11px 16px;color:var(--text);font-size:14px;font-weight:600;
  border-bottom:1px solid var(--border);
}
.lightbox__menu a:last-child{border-bottom:0}
.lightbox__menu a:hover{background:var(--surface-2);color:var(--blue)}
.lightbox__menu a em{font-style:normal;font-size:12px;font-weight:400;color:var(--text-muted)}
.lightbox__menu-empty{display:block;padding:14px 16px;font-size:13.5px;color:var(--text-muted)}

.lightbox__stage{
  /* Собственный контекст позиционирования для стрелок —
     иначе они растягиваются на весь fixed-оверлей и перекрывают
     полосу миниатюр снизу и панель действий сверху */
  position:relative;flex:1;min-height:0;
  display:flex;align-items:center;justify-content:center;
  padding:0 clamp(50px,7vw,110px);
}
.lightbox__img{
  max-width:100%;max-height:100%;object-fit:contain;
  border-radius:6px;box-shadow:0 20px 60px rgba(0,0,0,.5);
  animation:lbZoom .25s var(--ease);
}
@keyframes lbZoom{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}

.lightbox__arrow{
  position:absolute;top:0;bottom:0;z-index:3;
  width:clamp(50px,7vw,110px);
  background:transparent;border:0;color:#fff;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  opacity:.7;transition:background .2s var(--ease),opacity .2s var(--ease);
}
.lightbox__arrow[hidden]{display:none}
.lightbox__arrow:hover{background:rgba(255,255,255,.06);opacity:1}
.lightbox__arrow--prev{left:0}
.lightbox__arrow--next{right:0}
.lightbox__arrow .i{width:clamp(28px,3vw,44px);height:clamp(28px,3vw,44px)}

.lightbox__thumbs{
  position:relative;z-index:2;flex:none;
  display:flex;gap:8px;overflow-x:auto;
  padding:12px clamp(14px,3vw,32px) 16px;
  scrollbar-width:thin;
}
.lightbox__thumbs[hidden]{display:none}
.lightbox__thumbs button{
  flex:none;width:64px;height:64px;padding:0;border-radius:8px;overflow:hidden;
  border:2px solid transparent;cursor:pointer;opacity:.55;
  transition:opacity .2s var(--ease),border-color .2s var(--ease);
}
.lightbox__thumbs button:hover{opacity:.85}
.lightbox__thumbs button.is-active{opacity:1;border-color:var(--orange)}
.lightbox__thumbs img{width:100%;height:100%;object-fit:cover;display:block}

@media (max-width:640px){
  .lightbox__title{display:none}
  .lightbox__btn span{display:none}
  .lightbox__btn{padding:9px}
  .lightbox__stage{padding:0 46px}
  .lightbox__thumbs button{width:48px;height:48px}
}

/* ============================================================
   ВСПЛЫВАЮЩЕЕ УВЕДОМЛЕНИЕ
   Короткая подсказка внизу экрана — «Скопировано» при клике
   по телефону или почте в шапке. Один элемент на всю страницу,
   переиспользуется для любого текста.
   ============================================================ */
.toast{
  position:fixed;left:50%;bottom:28px;z-index:1200;
  transform:translate(-50%,12px);
  background:var(--title);color:#fff;
  padding:12px 22px;border-radius:var(--radius-pill);
  font-size:14px;font-weight:600;box-shadow:var(--shadow-2);
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .22s var(--ease),transform .22s var(--ease),visibility .22s;
  max-width:min(88vw,420px);text-align:center;
}
.toast.is-visible{opacity:1;visibility:visible;transform:translate(-50%,0)}

@media (max-width:640px){
  .toast{bottom:20px;font-size:13.5px;padding:11px 18px}
}
