/* ============================================================
   MPR-CORE — Дизайн-система «Местные приоритеты»
   Боровский муниципальный округ · v1.0 · 2026
   ------------------------------------------------------------
   Единый файл: токены, компоненты, анимации, лоадеры.
   Подключение:  <link rel="stylesheet" href="mpr-core.css">
   Префикс всех классов: .mpr-
   Работает и для публичных страниц, и для скрытой панели (.mpr-admin).
   Mobile-first: базовые стили — для смартфона, медиа-запросы добавляют десктоп.
   ============================================================ */

/* ---------- 1. ТОКЕНЫ ---------- */
:root{
  /* Цвета — основная гамма */
  --mpr-forest:#2d3c31;        /* текст, заголовки */
  --mpr-forest-deep:#26362b;   /* активная ссылка */
  --mpr-moss:#8f9550;          /* акцент: прогресс, активное */
  --mpr-moss-deep:#5c6132;
  --mpr-gold:#b39a55;          /* второй акцент, декор */
  --mpr-gold-deep:#6d5a26;
  --mpr-accent-3:#6f7650;      /* третий уровень диаграмм */

  /* Палитра серий данных (Chart.js, разбивки бюджета). Порядок фиксирован, canon = прод 09:3322.
     Терракота -5 — цвет СЕРИИ ДАННЫХ, не статус: правило «без красноты» не нарушает. В JS: MPR_DATA_PALETTE. */
  --mpr-data-1:#8f9550; --mpr-data-2:#58793f; --mpr-data-3:#b39a55; --mpr-data-4:#b18436;
  --mpr-data-5:#b65b4f; --mpr-data-6:#7f8a42; --mpr-data-7:#c9b66c; --mpr-data-8:#9a7b42;
  --mpr-parchment:#e8ddc7;     /* базовый фон страниц (fallback) */
  --mpr-cream:#f7f2e6;         /* поверхности */
  --mpr-muted:#6f725f;         /* подписи, мета */

  /* Поверхности и линии */
  --mpr-card:rgba(255,253,247,.78);
  --mpr-card-strong:rgba(255,253,247,.92);
  --mpr-line:rgba(176,156,103,.20);
  --mpr-line-strong:rgba(176,156,103,.30);
  --mpr-line-soft:rgba(176,156,103,.13);

  /* Семантические статусы */
  --mpr-work-bg:#fff7e7;   --mpr-work-fg:#7a5c10;   --mpr-work-line:rgba(159,112,24,.20); /* fg: AA-фикс из прода, было #9f7018 (≈4.1:1) */
  --mpr-done-bg:#edf8f2;   --mpr-done-fg:#2d6a4f;   --mpr-done-line:rgba(45,106,79,.20);
  --mpr-risk-bg:#fff1f1;   --mpr-risk-fg:#ca4040;   --mpr-risk-line:rgba(202,64,64,.20);
  --mpr-focus-bg:#f4efff;  --mpr-focus-fg:#7b53e8;  --mpr-focus-line:rgba(123,83,232,.20);
  /* Публичная витрина: paused — мягкий янтарь (без причин-негатива), cancelled — нейтральный серый.
     risk на витрине ЗАПРЕЩЁН — только панель Главы/админка. */
  --mpr-paused-bg:#faf3e2;    --mpr-paused-fg:#8a5f0f;    --mpr-paused-line:rgba(159,112,24,.18);
  --mpr-cancelled-bg:#f1efe8; --mpr-cancelled-fg:#5f6257; --mpr-cancelled-line:rgba(111,114,95,.25);
  /* Устарело: --mpr-work-fg теперь сам AA (#7a5c10, фикс перенесён из прода); strong оставлен алиасом для совместимости. */
  --mpr-work-fg-strong:#7a5c10;

  /* Тени */
  --mpr-shadow:0 22px 50px rgba(72,62,35,.13);
  --mpr-shadow-soft:0 12px 28px rgba(72,62,35,.08);
  --mpr-shadow-chrome:0 18px 44px rgba(72,62,35,.12), inset 0 1px 0 rgba(255,255,255,.72);

  /* Радиусы */
  --mpr-r-sm:10px;
  --mpr-r:16px;
  --mpr-r-lg:22px;
  --mpr-r-xl:34px;
  --mpr-r-pill:999px;

  /* Типографика */
  --mpr-ff:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;
  --mpr-mono:'SF Mono',ui-monospace,Consolas,monospace;

  /* Движение */
  --mpr-bezier:cubic-bezier(.18,.72,.22,1);

  /* Сетка / отступы */
  --mpr-gap:14px;
  --mpr-pad:clamp(14px,3vw,28px);
  --mpr-maxw:1100px;

  /* Фоновый overlay (поверх «масляного» фото) */
  --mpr-overlay:linear-gradient(180deg, rgba(247,242,231,.84) 0%, rgba(241,233,214,.90) 100%);
}

/* ---------- 2. БАЗА ---------- */
*,*::before,*::after{box-sizing:border-box}
.mpr-root{
  font-family:var(--mpr-ff);
  color:var(--mpr-forest);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  -webkit-text-size-adjust:100%;        /* iOS: не раздувать шрифт в landscape */
  text-size-adjust:100%;
  -webkit-tap-highlight-color:transparent; /* убрать серый флеш при тапе */
}
/* Фон страницы с «масляным» фото. Задать --mpr-bg-photo инлайн на .mpr-page */
.mpr-page{
  min-height:100vh;
  min-height:100dvh;            /* мобильные: учёт динамической адресной строки */
  background-color:var(--mpr-parchment);
  background-image:var(--mpr-overlay), var(--mpr-bg-photo, none);
  background-size:cover;
  background-position:center top;
  background-attachment:fixed;
  background-repeat:no-repeat;
}
/* iOS Safari глючит на background-attachment:fixed — переключаем на scroll */
@supports (-webkit-touch-callout: none){
  .mpr-page{background-attachment:scroll}
}
.mpr-container{max-width:var(--mpr-maxw);margin:0 auto;padding:0 var(--mpr-pad)}

/* ---------- 3. ТИПОГРАФИКА ---------- */
.mpr-h1{font-size:clamp(26px,6vw,36px);font-weight:500;letter-spacing:-.025em;line-height:1.12;color:var(--mpr-forest);margin:0}
.mpr-h2{font-size:clamp(18px,4.5vw,22px);font-weight:500;line-height:1.25;color:var(--mpr-forest);margin:0}
.mpr-kicker{display:inline-flex;align-items:center;gap:7px;background:rgba(143,149,80,.13);border:1px solid var(--mpr-line-strong);border-radius:var(--mpr-r-pill);padding:5px 13px;font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--mpr-moss-deep)}
.mpr-kicker::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--mpr-moss)}
.mpr-text{font-size:15px;line-height:1.6;color:var(--mpr-forest)}
.mpr-meta{font-size:12px;color:var(--mpr-muted)}

/* ---------- 4. ШАПКА (pill-bar) ---------- */
.mpr-header{display:flex;justify-content:center;padding:14px var(--mpr-pad)}
.mpr-header__bar{
  display:flex;align-items:center;gap:8px;
  background:var(--mpr-chrome-bg,linear-gradient(135deg,rgba(255,253,247,.74),rgba(241,233,214,.52)));
  border:1px solid rgba(255,255,255,.60);
  border-radius:var(--mpr-r-pill);
  padding:7px 12px;
  box-shadow:var(--mpr-shadow-chrome);
  backdrop-filter:blur(18px) saturate(1.1);
  -webkit-backdrop-filter:blur(18px) saturate(1.1);
  max-width:100%;overflow-x:auto;scrollbar-width:none;
}
.mpr-header__bar::-webkit-scrollbar{display:none}
.mpr-brand{flex-shrink:0;width:46px;height:38px;border-radius:var(--mpr-r-pill);background:rgba(255,253,247,.7);border:1px solid rgba(255,255,255,.62);display:flex;align-items:center;justify-content:center;overflow:hidden;padding:5px}
.mpr-brand img{width:100%;height:100%;object-fit:contain}
.mpr-nav{display:flex;gap:6px}
.mpr-nav__link{
  display:inline-flex;align-items:center;height:36px;padding:0 16px;
  border-radius:var(--mpr-r-pill);border:1px solid rgba(255,255,255,.54);
  background:rgba(255,253,247,.56);color:var(--mpr-forest);
  font-size:14px;font-weight:500;text-decoration:none;white-space:nowrap;
  transition:transform .2s var(--mpr-bezier),background .2s var(--mpr-bezier),box-shadow .2s var(--mpr-bezier);
}
.mpr-nav__link:hover{transform:translateY(-1px);background:rgba(255,253,247,.92);box-shadow:var(--mpr-shadow-soft)}
.mpr-nav__link.is-active{background:rgba(255,253,247,.95);border-color:var(--mpr-line-strong);color:var(--mpr-forest-deep)}

/* ---------- 5. ФУТЕР (pill-bar) ---------- */
.mpr-footer{display:flex;justify-content:center;padding:20px var(--mpr-pad) 22px}
.mpr-footer__bar{
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;
  width:min(calc(100vw - 56px),var(--mpr-maxw));
  background:var(--mpr-chrome-bg,linear-gradient(135deg,rgba(255,253,247,.74),rgba(241,233,214,.52)));
  border:1px solid rgba(255,255,255,.60);border-radius:var(--mpr-r-pill);
  padding:11px 18px;box-shadow:var(--mpr-shadow-chrome);
  backdrop-filter:blur(18px) saturate(1.1);
  -webkit-backdrop-filter:blur(18px) saturate(1.1);
}
.mpr-footer__copy{font-size:13px;font-weight:500;display:flex;align-items:center;gap:8px}
.mpr-footer__copy::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--mpr-moss);box-shadow:0 0 0 5px rgba(143,149,80,.14)}
.mpr-footer__links{display:flex;gap:7px;justify-content:center}
.mpr-footer__link{display:inline-flex;align-items:center;height:32px;padding:0 14px;border-radius:var(--mpr-r-pill);border:1px solid rgba(255,255,255,.52);background:rgba(255,253,247,.6);color:var(--mpr-forest);font-size:12.5px;font-weight:500;text-decoration:none}
.mpr-footer__note{font-size:11.5px;color:var(--mpr-muted);text-align:right}

/* ---------- 6. КАРТОЧКИ ---------- */
.mpr-card{background:var(--mpr-card);border:1px solid var(--mpr-line);border-radius:var(--mpr-r-lg);box-shadow:var(--mpr-shadow-soft);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);overflow:hidden}
.mpr-card__body{padding:var(--mpr-pad)}

/* Карточка проекта */
.mpr-project{background:rgba(255,255,255,.97);border:1px solid rgba(134,154,181,.22);border-radius:var(--mpr-r-lg);overflow:hidden;box-shadow:var(--mpr-shadow-soft)}
.mpr-project__img{height:140px;position:relative;background-size:cover;background-position:center}
.mpr-project__img::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 38%,rgba(0,0,0,.2))}
.mpr-project__top{position:absolute;top:11px;left:11px;display:flex;gap:5px;z-index:2}
.mpr-project__bottom{position:absolute;bottom:11px;left:11px;display:flex;align-items:center;gap:7px;z-index:2}
.mpr-project__body{padding:15px 17px}
.mpr-project__num{font-size:11px;color:var(--mpr-muted);font-family:var(--mpr-mono)}
.mpr-project__title{font-size:15px;font-weight:500;color:var(--mpr-forest);line-height:1.35;margin:5px 0 7px}
.mpr-project__meta{font-size:12px;color:var(--mpr-muted)}

/* Карточка инфоповода */
.mpr-news{background:var(--mpr-card-strong);border:1px solid var(--mpr-line);border-radius:var(--mpr-r);overflow:hidden;box-shadow:var(--mpr-shadow-soft)}
.mpr-news__img{height:96px;background-size:cover;background-position:center}
.mpr-news__body{padding:14px 16px}
.mpr-news__date{font-size:11px;color:var(--mpr-muted)}
.mpr-news__title{font-size:14px;font-weight:500;color:var(--mpr-forest);line-height:1.35;margin:6px 0 10px}
.mpr-news__tags{display:flex;align-items:center;gap:7px;flex-wrap:wrap}

/* Финансовый блок */
.mpr-fin{background:var(--mpr-card);border:1px solid var(--mpr-line);border-radius:var(--mpr-r);padding:18px 20px}
.mpr-fin__label{font-size:11.5px;color:var(--mpr-muted);margin-bottom:6px}
.mpr-fin__value{font-size:clamp(20px,5vw,27px);font-weight:500;color:var(--mpr-forest);line-height:1}
.mpr-fin__sub{font-size:11.5px;color:var(--mpr-muted);margin-top:6px}

/* ---------- 7. ЛОГОТИП НАЦПРОЕКТА (прямоугольная рамка) ---------- */
.mpr-np{background:#fff;border:1px solid var(--mpr-line);border-radius:12px;padding:8px 12px;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(72,62,35,.08)}
.mpr-np img{max-width:100%;max-height:72px;width:auto;height:auto;object-fit:contain;display:block}
.mpr-np--sm{padding:5px 8px}
.mpr-np--sm img{max-height:22px}
.mpr-np--xs{padding:4px 7px}
.mpr-np--xs img{max-height:16px}

/* ---------- 8. БЕЙДЖИ / СТАТУСЫ ---------- */
.mpr-badge{display:inline-flex;align-items:center;height:24px;padding:0 11px;border-radius:var(--mpr-r-pill);font-size:11.5px;font-weight:500;white-space:nowrap}
.mpr-badge--work{background:var(--mpr-work-bg);color:var(--mpr-work-fg);border:1px solid var(--mpr-work-line)}
.mpr-badge--done{background:var(--mpr-done-bg);color:var(--mpr-done-fg);border:1px solid var(--mpr-done-line)}
.mpr-badge--risk{background:var(--mpr-risk-bg);color:var(--mpr-risk-fg);border:1px solid var(--mpr-risk-line)}
.mpr-badge--focus{background:var(--mpr-focus-bg);color:var(--mpr-focus-fg);border:1px solid var(--mpr-focus-line)}
.mpr-badge--paused{background:var(--mpr-paused-bg);color:var(--mpr-paused-fg);border:1px solid var(--mpr-paused-line)}
.mpr-badge--cancelled{background:var(--mpr-cancelled-bg);color:var(--mpr-cancelled-fg);border:1px solid var(--mpr-cancelled-line)}
.mpr-tag{font-size:11px;color:var(--mpr-muted);background:rgba(143,149,80,.1);border-radius:5px;padding:3px 8px}

/* ---------- 9. ПРОГРЕСС-БАР ---------- */
.mpr-progress{background:rgba(176,156,103,.18);border-radius:var(--mpr-r-pill);height:6px;overflow:hidden}
.mpr-progress__bar{height:100%;border-radius:var(--mpr-r-pill);background:linear-gradient(90deg,var(--mpr-moss),var(--mpr-gold));width:0;transition:width 1.2s var(--mpr-bezier)}

/* ---------- 10. СВОДНЫЕ МЕТРИКИ ---------- */
.mpr-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.mpr-stat{background:rgba(255,253,247,.72);border:1px solid var(--mpr-line-soft);border-radius:var(--mpr-r-sm);padding:14px 12px;text-align:center}
.mpr-stat__num{font-size:clamp(20px,6vw,28px);font-weight:500;line-height:1;color:var(--mpr-forest)}
.mpr-stat__num--risk{color:var(--mpr-risk-fg)}
.mpr-stat__cap{font-size:10px;color:var(--mpr-muted);margin-top:5px;text-transform:uppercase;letter-spacing:.06em}
@media(min-width:560px){.mpr-stats{grid-template-columns:repeat(3,1fr)}}
@media(min-width:880px){.mpr-stats{grid-template-columns:repeat(6,1fr)}}

/* ---------- 11. КНOPKИ / ПОЛЯ ---------- */
.mpr-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 20px;border-radius:var(--mpr-r-pill);border:none;font-family:var(--mpr-ff);font-size:14px;font-weight:500;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:transform .2s var(--mpr-bezier),box-shadow .2s var(--mpr-bezier),background .2s var(--mpr-bezier)}
.mpr-btn--primary{background:var(--mpr-forest);color:var(--mpr-cream)}
.mpr-btn--primary:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(45,60,49,.26)}
.mpr-btn--ghost{background:rgba(255,253,247,.6);color:var(--mpr-forest);border:1px solid var(--mpr-line)}
.mpr-btn--ghost:hover{background:rgba(255,253,247,.92)}
.mpr-btn:active{transform:scale(.97)}
.mpr-input{width:100%;height:44px;padding:0 16px;border-radius:var(--mpr-r-pill);border:1px solid var(--mpr-line);background:rgba(255,255,255,.7);font-family:var(--mpr-ff);font-size:14px;color:var(--mpr-forest);outline:none;transition:border-color .2s,box-shadow .2s}
.mpr-input:focus{border-color:var(--mpr-moss);box-shadow:0 0 0 3px rgba(143,149,80,.16)}
.mpr-input::placeholder{color:var(--mpr-muted)}

/* Минимальная зона нажатия на мобильном — 44px (Apple HIG / WCAG) */
.mpr-tap{min-width:44px;min-height:44px}

/* ---------- 12. СЕТКА ---------- */
.mpr-grid{display:grid;gap:var(--mpr-gap)}
.mpr-grid--2{grid-template-columns:1fr}
.mpr-grid--3{grid-template-columns:1fr}
.mpr-grid--4{grid-template-columns:1fr}
@media(min-width:560px){.mpr-grid--2{grid-template-columns:repeat(2,1fr)}.mpr-grid--3{grid-template-columns:repeat(2,1fr)}.mpr-grid--4{grid-template-columns:repeat(2,1fr)}}
@media(min-width:880px){.mpr-grid--3{grid-template-columns:repeat(3,1fr)}.mpr-grid--4{grid-template-columns:repeat(4,1fr)}}

/* ============================================================
   13. ПАНЕЛЬ УПРАВЛЕНИЯ (.mpr-admin) — скрытые страницы
   Более плотная, контрастная, заточена под смартфон главы.
   ============================================================ */
.mpr-admin{
  --mpr-card:rgba(255,255,255,.94);
  --mpr-pad:clamp(12px,4vw,20px);
}
/* Нижняя панель навигации (большие пальцы достают снизу) */
.mpr-tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:80;
  display:flex;justify-content:space-around;align-items:center;
  padding:8px max(12px,env(safe-area-inset-left)) calc(8px + env(safe-area-inset-bottom));
  background:rgba(255,253,247,.92);border-top:1px solid var(--mpr-line);
  backdrop-filter:blur(20px) saturate(1.1);
  -webkit-backdrop-filter:blur(20px) saturate(1.1);
}
.mpr-tabbar__item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;min-height:48px;justify-content:center;border:none;background:none;color:var(--mpr-muted);font-family:var(--mpr-ff);font-size:11px;font-weight:500;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;text-decoration:none;border-radius:12px;transition:color .2s,background .2s}
.mpr-tabbar__item.is-active{color:var(--mpr-moss-deep);background:rgba(143,149,80,.1)}
.mpr-tabbar__icon{width:24px;height:24px;display:block}
/* Контент с отступом под таббар */
.mpr-admin__content{padding-bottom:84px}

/* Строка-задача (для управления проектами) */
.mpr-task{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--mpr-card);border:1px solid var(--mpr-line);border-radius:var(--mpr-r);margin-bottom:8px}
.mpr-task__dot{flex-shrink:0;width:10px;height:10px;border-radius:50%}
.mpr-task__dot--work{background:var(--mpr-work-fg)}
.mpr-task__dot--done{background:var(--mpr-done-fg)}
.mpr-task__dot--risk{background:var(--mpr-risk-fg)}
.mpr-task__main{flex:1;min-width:0}
.mpr-task__title{font-size:14px;font-weight:500;color:var(--mpr-forest);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mpr-task__sub{font-size:12px;color:var(--mpr-muted);margin-top:2px}
.mpr-task__chevron{flex-shrink:0;color:var(--mpr-muted);width:20px;height:20px}

/* Свитч-тумблер (вкл/выкл публикации) */
.mpr-switch{position:relative;display:inline-block;width:46px;height:28px;flex-shrink:0}
.mpr-switch input{opacity:0;width:0;height:0}
.mpr-switch__track{position:absolute;inset:0;border-radius:var(--mpr-r-pill);background:rgba(176,156,103,.3);transition:background .2s var(--mpr-bezier);cursor:pointer}
.mpr-switch__track::before{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.18);transition:transform .2s var(--mpr-bezier)}
.mpr-switch input:checked + .mpr-switch__track{background:var(--mpr-moss)}
.mpr-switch input:checked + .mpr-switch__track::before{transform:translateX(18px)}

/* Свайп-лист (нижний лист действий) */
.mpr-sheet{position:fixed;left:0;right:0;bottom:0;z-index:90;background:var(--mpr-cream);border-radius:24px 24px 0 0;padding:8px 20px calc(20px + env(safe-area-inset-bottom));box-shadow:0 -16px 40px rgba(72,62,35,.18);transform:translateY(100%);transition:transform .4s var(--mpr-bezier)}
.mpr-sheet.is-open{transform:translateY(0)}
.mpr-sheet__handle{width:40px;height:4px;border-radius:999px;background:var(--mpr-line-strong);margin:0 auto 14px}

/* ============================================================
   14. ЛОАДЕРЫ
   ============================================================ */
/* ЕДИНАЯ ЗАГРУЗКА ВИТРИНЫ (канон 07.08.2026 — ромб с гало со страницы контрактов).
   Уровень 1 — .mpr-page-loader (ромб+гало): первый заход, пока нет ничего.
   Уровень 2 — .mpr-skel (mpr-site S21): каркас уже стоит, догружаются зоны.
   Правило времени: показ через 180мс (кэш не мигает), показанный держится ≥900мс.
   Красного/тревожного в загрузке нет. Легаси __crest/__bar удалены. */
.mpr-diamond{width:54px;height:54px;border-radius:12px;background:conic-gradient(from 0deg,var(--mpr-moss),var(--mpr-gold),var(--mpr-moss));transform:rotate(45deg);box-shadow:0 14px 30px rgba(120,115,63,.24),inset 0 1px 0 rgba(255,255,255,.28)}
.mpr-diamond--sm{width:38px;height:38px;border-radius:9px}
.mpr-loader-mark{position:relative;width:118px;height:118px;display:grid;place-items:center}
.mpr-loader-mark::before{content:"";position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,rgba(143,149,80,.24),rgba(179,154,85,.10) 55%,transparent 72%)}
@media (prefers-reduced-motion: no-preference){
  .mpr-loader-mark .mpr-diamond{animation:mprDiamondSpin 2.2s linear infinite}
  .mpr-loader-mark::before{animation:mprHaloPulse 2.2s ease-in-out infinite}
  @keyframes mprDiamondSpin{from{transform:rotate(45deg)}to{transform:rotate(405deg)}}
  @keyframes mprHaloPulse{0%,100%{transform:scale(.88);opacity:.7}50%{transform:scale(1.06);opacity:1}}
}
.mpr-page-loader{position:fixed;inset:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:rgba(247,242,231,.72);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);transition:opacity .45s var(--mpr-bezier),filter .45s var(--mpr-bezier)}
.mpr-page-loader--block{position:absolute;z-index:30;border-radius:inherit}
.mpr-page-loader.is-waiting{opacity:0;pointer-events:none;transition:none}
.mpr-page-loader.is-hidden{opacity:0;filter:blur(10px);pointer-events:none}
.mpr-page-loader__text{font-size:13px;font-weight:500;color:var(--mpr-forest-deep)}
.mpr-has-loader{position:relative;min-height:320px}

/* ============================================================
   15. АНИМАЦИИ ПОЯВЛЕНИЯ
   ============================================================ */
@media (prefers-reduced-motion: no-preference){
  @keyframes mprHeaderIn{from{opacity:.001;transform:translateX(58px) translateY(-4px) scale(.982);filter:blur(14px)}62%{opacity:1;transform:translateX(-4px) translateY(0) scale(1.004);filter:blur(0)}to{opacity:1;transform:translateX(0) translateY(0) scale(1);filter:blur(0)}}
  @keyframes mprChromeUp{from{opacity:.001;transform:translateY(18px);filter:blur(8px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
  @keyframes mprBlockIn{from{opacity:.001;transform:translateY(18px);filter:blur(10px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
  @keyframes mprCardIn{from{opacity:.001;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
  @keyframes mprPhotoIn{from{opacity:.18;transform:scale(1.075);filter:saturate(.88) contrast(.96) brightness(.94)}to{opacity:1;transform:scale(1.03);filter:saturate(1.06) contrast(1.03) brightness(.98)}}
  @keyframes mprFloatIn{from{opacity:.001;transform:translateY(20px) scale(.988);filter:blur(7px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}

  .mpr-header__bar{animation:mprHeaderIn .78s var(--mpr-bezier) both}
  .mpr-anim-block{animation:mprBlockIn .72s var(--mpr-bezier) both}
  .mpr-anim-card{animation:mprCardIn .58s var(--mpr-bezier) both}
  .mpr-anim-float{animation:mprFloatIn .82s var(--mpr-bezier) both}
  .mpr-footer__bar{animation:mprChromeUp .74s var(--mpr-bezier) .26s both}

  /* Stagger: задержки для секций и карточек */
  .mpr-anim-block:nth-of-type(1){animation-delay:.28s}
  .mpr-anim-block:nth-of-type(2){animation-delay:.38s}
  .mpr-anim-block:nth-of-type(3){animation-delay:.48s}
  .mpr-anim-card:nth-child(1){animation-delay:.03s}
  .mpr-anim-card:nth-child(2){animation-delay:.08s}
  .mpr-anim-card:nth-child(3){animation-delay:.13s}
  .mpr-anim-card:nth-child(4){animation-delay:.18s}
}
/* Постоянные (лоадерные) кейфреймы — легаси-имена сохранены для ref-эталонов; канон загрузки — mprDiamondSpin/mprHaloPulse (§14) */
@keyframes mprDmSpin{to{transform:rotate(360deg)}}
@keyframes mprDmTilt{0%,100%{transform:rotate(0) translateY(0)}50%{transform:rotate(8deg) translateY(-4px)}}
@keyframes mprFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes mprSlide{0%{transform:translateX(-100%)}100%{transform:translateX(350%)}}

/* ---------- 16. УТИЛИТЫ ---------- */
.mpr-stack{display:flex;flex-direction:column;gap:var(--mpr-gap)}
.mpr-row{display:flex;align-items:center;gap:var(--mpr-gap);flex-wrap:wrap}
.mpr-between{display:flex;align-items:center;justify-content:space-between;gap:12px}
.mpr-hide-mobile{display:none}
@media(min-width:880px){.mpr-hide-mobile{display:revert}.mpr-hide-desktop{display:none}}

/* ---------- 17. КРОССПЛАТФОРМЕННОСТЬ ---------- */
/* iOS зумит при фокусе на поле с кеглем <16px — на мобильных поднимаем до 16px */
@media(max-width:560px){
  .mpr-input,.mpr-admin input,.mpr-admin select,.mpr-admin textarea{font-size:16px}
}
/* Родной вид форм-элементов отключён везде (Safari/iOS рисует своё) */
.mpr-input,.mpr-btn{-webkit-appearance:none;appearance:none}
/* Интерактивные ссылки/кнопки — без задержки тапа и серого флеша */
.mpr-nav__link,.mpr-footer__link{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
/* Корректный инерционный скролл в горизонтальных лентах (iOS) */
.mpr-header__bar{-webkit-overflow-scrolling:touch}
