/**
 * support#F10528.W124 — заставка запуска приложения (одна на все входы: кабинет клиента, панель,
 * вход, окно 1С, виджет; та же плитка — значок приложения и заставка телефонов и окна Windows).
 *
 * ⛔ Заставка закрывает страницу С ПЕРВОГО КАДРА: разметка `.tp-boot` — первый ребёнок <body>, стиль
 * подключён в <head> после design.css (токены уже есть). Снимает её js/boot.js, когда приложение
 * нарисовало первый экран. Без boot.js (старый движок, ошибка) заставка уходит сама — анимацией
 * tp-boot-giveup через 20 с: страница под ней никогда не остаётся запертой.
 * ⛔ Плитка — фирменный знак (тот же градиент, что у значка приложения mobile/resources/icon-master.svg),
 * поэтому её цвета не меняются с темой; фон, подпись и тени — токены темы.
 */
:root {
  --tp-mark-from: #5bc0eb;
  --tp-mark-mid: #3a9fd8;
  --tp-mark-to: #1a5a96;
  --tp-mark-ink: #fff;
  --tp-boot-ease: cubic-bezier(.2, .8, .2, 1);
  --tp-boot-wave: var(--tp-mark-mid);
  --tp-boot-wave-peak: .6;
}

.tp-boot {
  position: fixed; inset: 0; z-index: 2147483000;
  top: 0; right: 0; bottom: 0; left: 0; /* старые движки без inset */
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font);
  -webkit-user-select: none; user-select: none;
  animation: tp-boot-giveup 240ms ease-out 20s forwards;
}
.tp-boot.tp-boot--out { animation: tp-boot-out 220ms ease-out forwards; pointer-events: none; }
html.tp-boot-done .tp-boot { display: none; }

.tp-boot__stage { position: relative; width: 136px; height: 136px; display: flex; align-items: center; justify-content: center; }

/* Плитка-значок */
.tp-boot__tile {
  position: relative; z-index: 1;
  width: 80px; height: 80px; border-radius: 22px;
  background: linear-gradient(135deg, var(--tp-mark-from) 0%, var(--tp-mark-mid) 55%, var(--tp-mark-to) 100%);
  box-shadow: 0 10px 28px rgba(26, 90, 150, .28), 0 2px 6px rgba(26, 90, 150, .18);
  display: flex; align-items: center; justify-content: center; overflow: hidden;
  opacity: 0; transform: scale(.9);
  animation: tp-boot-tile-in 420ms var(--tp-boot-ease) 120ms forwards;
}
.tp-boot__tile::after { /* мягкий блик сверху, как у значка */
  content: ''; position: absolute; inset: 0; top: 0; right: 0; bottom: 0; left: 0;
  background: linear-gradient(180deg, rgba(255,255,255,.22) 0%, rgba(255,255,255,.03) 50%, rgba(255,255,255,0) 100%);
}
.tp-boot__mark { position: relative; z-index: 1; width: 46px; height: 46px; overflow: visible; }
.tp-boot__mark .tp-band, .tp-boot__mark .tp-boom { fill: none; stroke: var(--tp-mark-ink); stroke-linecap: round; }
.tp-boot__mark .tp-band { stroke-width: 3.1; stroke-dasharray: 40; stroke-dashoffset: 40; opacity: 0; animation: tp-boot-draw 560ms var(--tp-boot-ease) 300ms forwards; }
.tp-boot__mark .tp-boom { stroke-width: 2.5; stroke-dasharray: 14; stroke-dashoffset: 14; opacity: 0; animation: tp-boot-draw 340ms var(--tp-boot-ease) 760ms forwards; }
/* opacity: скруглённый конец штриха нулевой длины рисует точку — до начала прорисовки штрих скрыт */
.tp-boot__mark .tp-cup, .tp-boot__mark .tp-mic { fill: var(--tp-mark-ink); transform-box: fill-box; transform-origin: center; }
.tp-boot__mark .tp-cup { transform: scaleY(0); animation: tp-boot-cup 320ms var(--tp-boot-ease) 560ms forwards; }
.tp-boot__mark .tp-mic { transform: scale(0); animation: tp-boot-pop 260ms var(--tp-boot-ease) 1040ms forwards; }

/* «Волны связи» — расходятся от плитки, пока приложение грузится */
.tp-boot__wave {
  position: absolute; left: 50%; top: 50%; width: 80px; height: 80px; margin: -40px 0 0 -40px;
  border-radius: 24px; border: 1.5px solid var(--tp-boot-wave);
  opacity: 0; transform: scale(1);
  animation: tp-boot-wave 2200ms cubic-bezier(.25, .6, .3, 1) infinite;
}
.tp-boot__wave--1 { animation-delay: 1100ms; }
.tp-boot__wave--2 { animation-delay: 1833ms; }
.tp-boot__wave--3 { animation-delay: 2566ms; }

.tp-boot__name {
  margin-top: 6px; font-size: 15px; font-weight: 600; letter-spacing: .2px; color: var(--text);
  opacity: 0; animation: tp-boot-fade 360ms ease-out 520ms forwards;
}

@keyframes tp-boot-tile-in { to { opacity: 1; transform: scale(1); } }
@keyframes tp-boot-draw { 0% { opacity: 0; } 1% { opacity: 1; } 100% { stroke-dashoffset: 0; opacity: 1; } }
@keyframes tp-boot-cup { to { transform: scaleY(1); } }
@keyframes tp-boot-pop { 0% { transform: scale(0); } 70% { transform: scale(1.25); } 100% { transform: scale(1); } }
@keyframes tp-boot-wave {
  0% { opacity: var(--tp-boot-wave-peak); transform: scale(1); }
  100% { opacity: 0; transform: scale(1.7); }
}
@keyframes tp-boot-fade { to { opacity: 1; } }
@keyframes tp-boot-out { to { opacity: 0; visibility: hidden; } }
@keyframes tp-boot-giveup { to { opacity: 0; visibility: hidden; pointer-events: none; } }

[data-theme="dark"] .tp-boot { --tp-boot-wave: var(--tp-mark-from); --tp-boot-wave-peak: .95; }
[data-theme="dark"] .tp-boot__tile { box-shadow: 0 10px 28px rgba(0, 0, 0, .45), 0 2px 6px rgba(0, 0, 0, .3); }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .tp-boot { --tp-boot-wave: var(--tp-mark-from); --tp-boot-wave-peak: .95; }
  :root:not([data-theme="light"]) .tp-boot__tile { box-shadow: 0 10px 28px rgba(0, 0, 0, .45), 0 2px 6px rgba(0, 0, 0, .3); }
}

/* Без движения: плитка и знак сразу целиком, вместо волн — тихое дыхание плитки */
@media (prefers-reduced-motion: reduce) {
  .tp-boot__tile { opacity: 1; transform: none; animation: tp-boot-breathe 1800ms ease-in-out infinite; }
  .tp-boot__mark .tp-band, .tp-boot__mark .tp-boom { stroke-dashoffset: 0; opacity: 1; animation: none; }
  .tp-boot__mark .tp-cup, .tp-boot__mark .tp-mic { transform: none; animation: none; }
  .tp-boot__wave { display: none; }
  .tp-boot__name { opacity: 1; animation: none; }
  .tp-boot.tp-boot--out { animation-duration: 1ms; }
}
@keyframes tp-boot-breathe { 0%, 100% { opacity: 1; } 50% { opacity: .72; } }

/* Внутри своей оболочки (html.tp-boot-shell, js/boot.js) родная заставка уже показала плитку — встаём готовыми */
.tp-boot-shell .tp-boot__tile { opacity: 1; transform: none; animation: none; }
.tp-boot-shell .tp-boot__mark .tp-band, .tp-boot-shell .tp-boot__mark .tp-boom { stroke-dashoffset: 0; opacity: 1; animation: none; }
.tp-boot-shell .tp-boot__mark .tp-cup, .tp-boot-shell .tp-boot__mark .tp-mic { transform: none; animation: none; }
.tp-boot-shell .tp-boot__name { opacity: 1; animation: none; }
.tp-boot-shell .tp-boot__wave--1 { animation-delay: 0ms; }
.tp-boot-shell .tp-boot__wave--2 { animation-delay: 733ms; }
.tp-boot-shell .tp-boot__wave--3 { animation-delay: 1466ms; }

/* Окно 1С и виджет — тесная рамка: плитка меньше, без подписи */
.tp-boot--compact .tp-boot__stage { transform: scale(.75); }
.tp-boot--compact .tp-boot__name { display: none; }
