/* ============================================================
   screens.css — экраны и общие компоненты
   ============================================================ */

#stage {
  position: relative;
  width: 100%; height: 100%;
  display: grid;
  place-items: center;
}

.screen {
  display: none;
  width: calc(var(--u) * 1040px);
  height: calc(var(--u) * 620px);
  padding: calc(var(--u) * 14px) calc(var(--u) * 26px);
  background: var(--card);
  border-radius: var(--r-l);
  box-shadow: var(--lift-2);
}
.screen.is-active { display: flex; flex-direction: column; }

/* ---------- S1 ---------- */

.screen { gap: calc(var(--u) * 12px); }

.screen-top {
  position: relative;
  display: grid;
  place-items: center;
  height: calc(var(--u) * 78px);
  flex: none;
}

.logo img { object-fit: contain; }
.logo--app img    { height: calc(var(--u) * 74px); }
.logo--project img,
.logo--series img { height: calc(var(--u) * 56px); }

/* Заглушка вместо отсутствующего файла логотипа */
.logo.is-missing {
  display: grid;
  place-items: center;
  padding: 0 calc(var(--u) * 16px);
  border: calc(var(--u) * 2px) dashed var(--line);
  border-radius: var(--r-s);
  color: var(--ink-soft);
  font-size: calc(var(--u) * 15px);
  text-align: center;
  line-height: 1.2;
}
.logo--app.is-missing    { height: calc(var(--u) * 74px); min-width: calc(var(--u) * 200px); }
.logo--project.is-missing,
.logo--series.is-missing { height: calc(var(--u) * 56px); min-width: calc(var(--u) * 150px); }
.logo.is-missing img { display: none; }

/* Динамик: одно и то же место на всех экранах */
.speaker {
  position: absolute;
  top: 0; right: 0;
  width: calc(var(--u) * 74px); height: calc(var(--u) * 74px);
  display: grid; place-items: center;
  background: var(--paper);
  border-radius: 50%;
  box-shadow: var(--lift);
  transition: transform .12s ease, background .12s ease;
}
.speaker:hover  { background: var(--paper-deep); transform: scale(1.04); }
.speaker:active { transform: scale(.96); }
.speaker svg { width: calc(var(--u) * 40px); height: calc(var(--u) * 40px); fill: var(--ink); }
.speaker svg .wave { fill: none; stroke: var(--ink); stroke-width: 3.5; stroke-linecap: round; }
.speaker.is-playing svg .wave { animation: pulse-wave 1s ease-in-out infinite; }
@keyframes pulse-wave { 50% { opacity: .25; } }

/* ---------- Выбор языка ---------- */

.lang { position: relative; flex: none; align-self: center; width: calc(var(--u) * 560px); z-index: 5; }

.lang-head {
  width: 100%;
  height: calc(var(--u) * 72px);
  display: flex; align-items: center; gap: calc(var(--u) * 16px);
  padding: 0 calc(var(--u) * 18px);
  background: var(--paper);
  border: calc(var(--u) * 2px) solid var(--line);
  border-radius: var(--r-m);
  box-shadow: var(--lift);
  text-align: start;
}
.lang-head:hover { background: var(--paper-deep); }

.flag {
  flex: none;
  width: calc(var(--u) * 62px); height: calc(var(--u) * 42px);
  border-radius: calc(var(--u) * 4px);
  border: calc(var(--u) * 1px) solid var(--line);
  background: var(--card);
  overflow: hidden;
}
.flag img { width: 100%; height: 100%; object-fit: cover; }

.lang-title {
  flex: 1;
  font-size: calc(var(--u) * 34px);
  font-weight: 700;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

.caret {
  flex: none;
  width: 0; height: 0;
  border-left: calc(var(--u) * 15px) solid transparent;
  border-right: calc(var(--u) * 15px) solid transparent;
  border-top: calc(var(--u) * 18px) solid var(--ink);
  transition: transform .18s ease;
}
.lang-head[aria-expanded="true"] .caret { transform: rotate(180deg); }

.lang-list {
  position: absolute;
  inset-inline: 0;
  top: calc(100% + var(--u) * 8px);
  list-style: none;
  background: var(--card);
  border: calc(var(--u) * 2px) solid var(--line);
  border-radius: var(--r-m);
  box-shadow: var(--lift-2);
  overflow: hidden;
}
.lang-opt {
  display: flex; align-items: center; gap: calc(var(--u) * 16px);
  width: 100%;
  height: calc(var(--u) * 68px);
  padding: 0 calc(var(--u) * 18px);
  font-size: calc(var(--u) * 30px);
  font-weight: 600;
}
.lang-opt + .lang-opt { border-top: calc(var(--u) * 1px) solid var(--line); }
.lang-opt:hover,
.lang-opt.is-current { background: var(--paper); }
.lang-opt.is-current { font-weight: 700; }

/* ---------- Аватары ---------- */

.avatars {
  flex: 1;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(2, 1fr);
  gap: calc(var(--u) * 2px) calc(var(--u) * 20px);
  place-items: center;
  padding-inline: calc(var(--u) * 30px);
}

.avatar {
  position: relative;
  width: calc(var(--u) * 112px); height: calc(var(--u) * 112px);
  display: grid; place-items: center;
  background: var(--paper);
  border: calc(var(--u) * 3px) solid transparent;
  border-radius: 50%;
  transition: transform .14s ease, border-color .14s ease, box-shadow .14s ease;
}
.avatar:hover { transform: scale(1.05); box-shadow: var(--lift); }
.avatar img {
  width: 82%; height: 82%;
  object-fit: contain;
  border-radius: 50%;
  pointer-events: none;
}
.avatar.is-missing img { display: none; }
.avatar.is-missing::after {
  content: attr(data-num);
  font-size: calc(var(--u) * 40px);
  font-weight: 700;
  color: var(--ink-soft);
}
.avatar.is-picked {
  border-color: var(--pick);
  box-shadow: var(--lift);
  transform: scale(1.05);
}

/* Чекбокс — только индикатор, кликается вся плитка */
.avatar .tick {
  position: absolute;
  inset-inline-end: calc(var(--u) * -2px);
  bottom: calc(var(--u) * 2px);
  width: calc(var(--u) * 34px); height: calc(var(--u) * 34px);
  display: grid; place-items: center;
  background: var(--card);
  border: calc(var(--u) * 3px) solid var(--line);
  border-radius: 50%;
  box-shadow: var(--lift);
}
.avatar.is-picked .tick { background: var(--pick); border-color: var(--pick); }
.avatar .tick svg { width: 70%; height: 70%; fill: none; stroke: var(--card); stroke-width: 5; stroke-linecap: round; stroke-linejoin: round; opacity: 0; }
.avatar.is-picked .tick svg { opacity: 1; }

/* ---------- Кнопка перехода ---------- */

.go {
  flex: none;
  align-self: center;
  width: calc(var(--u) * 210px); height: calc(var(--u) * 82px);
  display: grid; place-items: center;
  background: var(--accent);
  border-radius: var(--r-m);
  box-shadow: var(--lift-2);
  transition: transform .14s ease, filter .14s ease;
}
.go svg { width: calc(var(--u) * 46px); height: calc(var(--u) * 46px); fill: var(--accent-ink); }
.go:hover:not(:disabled)  { transform: translateY(calc(var(--u) * -2px)) scale(1.03); }
.go:active:not(:disabled) { transform: scale(.97); }
.go:disabled {
  background: var(--paper-deep);
  box-shadow: none;
  cursor: not-allowed;
}
.go:disabled svg { fill: var(--line); }
.go.is-ready { animation: nudge 2.4s ease-in-out 1s infinite; }
@keyframes nudge { 0%,88%,100% { transform: none; } 94% { transform: scale(1.05); } }

/* ---------- Футер ---------- */

.foot {
  flex: none;
  display: grid;
  grid-template-columns: 1fr 1fr 1.2fr;
  align-items: center;
  gap: calc(var(--u) * 16px);
  min-height: calc(var(--u) * 72px);
  padding-top: calc(var(--u) * 6px);
  border-top: calc(var(--u) * 2px) solid var(--line);
}
.foot .logo { justify-self: center; }

.imprint {
  position: relative;
  justify-self: end;
  padding: calc(var(--u) * 4px) calc(var(--u) * 10px);
  border-radius: var(--r-s);
  color: var(--ink-soft);
  font-size: calc(var(--u) * 15px);
  font-weight: 500;
  line-height: 1.25;
  text-align: end;
  user-select: none;
}
html[lang="ar"] .imprint { font-size: calc(var(--u) * 15px); line-height: 1.35; }

.hold-bar {
  position: absolute;
  inset-inline: calc(var(--u) * 10px);
  bottom: calc(var(--u) * -1px);
  height: calc(var(--u) * 4px);
  border-radius: calc(var(--u) * 2px);
  background: transparent;
  overflow: hidden;
}
.hold-bar i {
  display: block; width: 0; height: 100%;
  background: var(--danger);
}
.imprint.is-holding .hold-bar i { width: 100%; transition: width 3s linear; }

/* ---------- Модальное окно сброса ---------- */

.modal {
  position: fixed; inset: 0;
  display: grid; place-items: center;
  background: rgba(20, 50, 81, .55);
  z-index: 50;
}
.modal[hidden] { display: none; }

.modal-box {
  width: calc(var(--u) * 620px);
  padding: calc(var(--u) * 32px);
  background: var(--card);
  border-radius: var(--r-l);
  box-shadow: var(--lift-2);
  text-align: center;
}
.modal-title { font-size: calc(var(--u) * 32px); font-weight: 700; }
.modal-note  { margin-top: calc(var(--u) * 10px); font-size: calc(var(--u) * 20px); color: var(--ink-soft); }
.modal-actions {
  margin-top: calc(var(--u) * 26px);
  display: flex; justify-content: center; gap: calc(var(--u) * 16px);
}

.btn {
  position: relative;
  min-width: calc(var(--u) * 190px);
  height: calc(var(--u) * 74px);
  padding: 0 calc(var(--u) * 24px);
  border-radius: var(--r-m);
  font-size: calc(var(--u) * 24px);
  font-weight: 700;
  overflow: hidden;
}
.btn--ghost  { background: var(--paper); }
.btn--ghost:hover { background: var(--paper-deep); }
.btn--danger { background: var(--danger); color: #fff; }
.btn--danger span { position: relative; z-index: 2; }
.btn-fill {
  position: absolute; inset-inline-start: 0; top: 0;
  width: 0; height: 100%;
  background: rgba(0, 0, 0, .35);
}
.btn--danger.is-holding .btn-fill { width: 100%; transition: width 1s linear; }

/* ---------- Кнопка возврата в шапке ---------- */

.home {
  position: absolute;
  top: 0; inset-inline-start: 0;
  width: calc(var(--u) * 74px); height: calc(var(--u) * 74px);
  display: grid; place-items: center;
  background: var(--paper);
  border-radius: 50%;
  box-shadow: var(--lift);
  transition: transform .12s ease, background .12s ease;
}
.home:hover  { background: var(--paper-deep); transform: scale(1.04); }
.home:active { transform: scale(.96); }
.home svg { width: calc(var(--u) * 38px); height: calc(var(--u) * 38px); fill: var(--ink); }

/* ---------- S2. Сетка тренажёров ----------
   flex-wrap, а не grid: последний неполный ряд центрируется сам,
   поэтому 10 карточек лягут 4+4+2, а 12 — 4+4+4 без правок кода. */

.tgrid {
  flex: 1;
  display: flex;
  flex-wrap: wrap;
  align-content: center;
  justify-content: center;
  gap: calc(var(--u) * 14px) calc(var(--u) * 18px);
  padding-inline: calc(var(--u) * 10px);
}

.tcard {
  width: calc(var(--u) * 226px);
  height: calc(var(--u) * 116px);
  display: flex;
  align-items: center;
  gap: calc(var(--u) * 12px);
  padding: calc(var(--u) * 10px) calc(var(--u) * 14px);
  background: var(--card);
  border: calc(var(--u) * 2px) solid var(--line);
  border-radius: var(--r-m);
  box-shadow: var(--lift);
  text-align: start;
  transition: transform .14s ease, border-color .14s ease, box-shadow .14s ease;
}
.tcard:hover:not(:disabled) {
  transform: translateY(calc(var(--u) * -3px));
  border-color: var(--accent);
  box-shadow: var(--lift-2);
}
.tcard:active:not(:disabled) { transform: scale(.98); }

.tcard-icon {
  flex: none;
  width: calc(var(--u) * 78px); height: calc(var(--u) * 78px);
  display: grid; place-items: center;
  background: var(--paper);
  border-radius: 50%;
  overflow: hidden;
}
.tcard-icon img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.tcard-icon.is-missing img { display: none; }

.tcard-body {
  flex: 1;
  display: flex; flex-direction: column;
  gap: calc(var(--u) * 8px);
  min-width: 0;
}
.tcard-name {
  font-size: calc(var(--u) * 24px);
  font-weight: 700;
  line-height: 1.15;
}
html[lang="ar"] .tcard-name { font-size: calc(var(--u) * 26px); line-height: 1.35; }

/* Прогресс: одна точка на уровень */
.tcard-dots { display: flex; gap: calc(var(--u) * 7px); }
.tcard-dots i {
  width: calc(var(--u) * 13px); height: calc(var(--u) * 13px);
  border: calc(var(--u) * 2px) solid var(--line);
  border-radius: 50%;
}
.tcard-dots i.is-done { background: var(--accent); border-color: var(--accent); }

/* Недоступный тренажёр: часы вместо прогресса, приглушённый вид */
.tcard.is-soon {
  background: var(--paper);
  border-style: dashed;
  box-shadow: none;
  color: var(--ink-soft);
  cursor: default;
}
.tcard.is-soon .tcard-icon { opacity: .5; }
.tcard-clock svg {
  width: calc(var(--u) * 22px); height: calc(var(--u) * 22px);
  fill: none; stroke: var(--ink-soft); stroke-width: 2;
  stroke-linecap: round;
}

/* ---------- S3: временная заглушка ---------- */

.stub {
  flex: 1;
  display: grid; align-content: center; justify-items: center;
  gap: calc(var(--u) * 14px);
  text-align: center;
}
.stub-text { font-size: calc(var(--u) * 34px); font-weight: 700; }
.stub-note { font-size: calc(var(--u) * 24px); color: var(--ink-soft); }
