/* ==========================================================================
   Achievements screen — GP-ACHIEVEMENTS-SCREEN
   Порт макета specs/wireframes/03-achievements.html на реальные design-tokens.
   Всё скоупится под #view-achievements — стили не текут в другие экраны.
   App-shell даёт header (title «Мои награды» + back→profile) и glass-nav;
   здесь рендерится только контент (сводка коллекции + секции карточек).
   ========================================================================== */

#view-achievements {
  padding: 0 var(--space-lg) 96px;
}

/* Material Symbols — вес/заливка как в макете (FILL 1) */
#view-achievements .material-symbols-outlined {
  font-variation-settings: 'FILL' 1, 'wght' 500, 'GRAD' 0, 'opsz' 24;
}

/* ==========================================================================
   СВОДКА КОЛЛЕКЦИИ (hero) — «5 из 10 наград» + ряд мини-медалей
   ========================================================================== */
.ach-collection {
  background: var(--surface-container-lowest);
  border-radius: var(--radius-lg);
  padding: var(--space-lg);
  box-shadow: var(--shadow);
  text-align: center;
  margin: var(--space-md) 0 var(--space-lg);
}
.ach-collection__count {
  font-family: 'Baloo 2', sans-serif;
  font-weight: 700;
  line-height: 1.1;
}
.ach-collection__count b { font-size: var(--font-display); color: var(--primary); }
.ach-collection__count span { font-size: var(--font-lg); color: var(--on-surface-variant); }
.ach-collection__caption {
  font-size: var(--font-sm);
  color: var(--on-surface-variant);
  margin-top: var(--space-3xs);
}

.ach-medal-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs);
  justify-content: center;
  margin-top: var(--space-md);
}
.ach-medal-dot {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px dashed var(--outline-variant);
  background: var(--surface-container);
}
.ach-medal-dot .material-symbols-outlined { font-size: 15px; color: var(--on-surface-variant); }
.ach-medal-dot.filled { border-style: solid; }
.ach-medal-dot.bronze { background: var(--tier-bronze-soft); border-color: var(--tier-bronze); }
.ach-medal-dot.bronze .material-symbols-outlined { color: #8A4E1B; }
.ach-medal-dot.silver { background: var(--tier-silver-soft); border-color: var(--tier-silver); }
.ach-medal-dot.silver .material-symbols-outlined { color: #5A666D; }
.ach-medal-dot.gold   { background: var(--tier-gold-soft); border-color: var(--tier-gold); }
.ach-medal-dot.gold   .material-symbols-outlined { color: #8A5A00; }

/* ==========================================================================
   ЗАГОЛОВКИ СЕКЦИЙ
   ========================================================================== */
.ach-section-head {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  font-family: 'Baloo 2', sans-serif;
  font-weight: 600;
  font-size: var(--font-md);
  color: var(--on-surface);
  margin: var(--space-xl) 0 var(--space-sm);
}
.ach-section-head .emoji { font-size: 18px; }
.ach-section-head .badge {
  margin-left: auto;
  font-family: 'Nunito', sans-serif;
  font-weight: 700;
  font-size: var(--font-xs);
  color: var(--on-surface-variant);
  background: var(--surface-container-high);
  padding: var(--space-3xs) var(--space-xs);
  border-radius: var(--radius-pill);
}

/* ==========================================================================
   КАРТОЧКА ДОСТИЖЕНИЯ
   ========================================================================== */
.ach {
  display: grid;
  grid-template-columns: 64px 1fr;
  gap: var(--space-md);
  background: var(--surface-container-lowest);
  border-radius: var(--radius-md);
  padding: var(--space-md);
  margin-bottom: var(--space-sm);
  box-shadow: var(--shadow);
  min-height: 56px;             /* тап-зона ≥56dp — закон GP */
  align-items: center;
  border: 2px solid transparent;
  position: relative;
  cursor: pointer;
  transition: transform 0.12s ease;
  width: 100%;
  text-align: left;
  font-family: inherit;
}
.ach:active { transform: scale(0.985); }
.ach:focus-visible { outline: 3px solid var(--primary); outline-offset: 2px; }

/* Иконка-жетон */
.ach .token {
  width: 64px;
  height: 64px;
  border-radius: var(--radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--surface-container-high);
  position: relative;
}
.ach .token .material-symbols-outlined { font-size: 34px; color: var(--on-surface-variant); }

/* Медаль-бейдж поверх жетона (текущий тир). Тёмный текст = контраст на плашке. */
.ach .tier-badge {
  position: absolute;
  right: -6px;
  bottom: -6px;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'Baloo 2', sans-serif;
  font-weight: 700;
  font-size: 13px;
  border: 2px solid var(--surface-container-lowest);
  color: var(--pixel-dark);
}
.tier-badge.bronze { background: #B26A2E; }  /* затемнён vs --tier-bronze: цифра pixel-dark даёт AA */
.tier-badge.silver { background: var(--tier-silver); }
.tier-badge.gold   { background: var(--tier-gold); }

/* Тело карточки */
.ach .body { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.ach .name {
  font-family: 'Baloo 2', sans-serif;
  font-weight: 600;
  font-size: var(--font-md);
  color: var(--on-surface);
  line-height: 1.15;
}
.ach .hint { font-size: var(--font-xs); color: var(--on-surface-variant); line-height: 1.25; }

/* Прогресс-бар: яркий даже у locked (путь к награде, не «нет награды») */
.ach .progress-wrap { display: flex; align-items: center; gap: var(--space-xs); margin-top: var(--space-3xs); }
.ach .progress {
  flex: 1;
  height: 10px;
  border-radius: var(--radius-pill);
  background: var(--surface-container-high);
  overflow: hidden;
}
.ach .progress-fill { height: 100%; border-radius: var(--radius-pill); background: var(--primary); }
.ach .progress-num {
  font-size: var(--font-xs);
  font-weight: 700;
  color: var(--on-surface-variant);
  white-space: nowrap;
}

/* Следующая награда. XP-текст = --secondary (тёмный золотой, AA на светлом). */
.ach .reward {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  flex-wrap: wrap;
  font-size: var(--font-xs);
  font-weight: 700;
  color: var(--on-surface-variant);
}
.ach .reward .xp { color: var(--secondary); }

/* --- Категорийная подсветка (по контракту category) --- */
.ach.cat-streak   { background: var(--cat-streak-tint); }
.ach.cat-homework { background: var(--cat-homework-tint); }
.ach.cat-subject  { background: var(--cat-subject-tint); }

/* --- Иконка-жетон у заработанных (≥1 тир) — цветная по категории --- */
.ach.earned.cat-streak   .token { background: var(--cat-streak-token); }
.ach.earned.cat-streak   .token .material-symbols-outlined { color: var(--cta); }
.ach.earned.cat-homework .token { background: var(--primary-container); }
.ach.earned.cat-homework .token .material-symbols-outlined { color: var(--primary-dark); }
.ach.earned.cat-subject  .token { background: var(--tertiary-container); }
.ach.earned.cat-subject  .token .material-symbols-outlined { color: var(--tertiary); }

/* --- Состояние UNLOCKED (полностью завершено, максимальный тир) --- */
.ach.done-all { border-color: var(--tier-gold); }
.ach.done-all .token { background: var(--tier-gold-soft); }
.ach.done-all .token .material-symbols-outlined { color: #8A5A00; }
.ach .done-flag {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2xs);
  font-size: var(--font-xs);
  font-weight: 700;
  color: var(--tertiary);
}

/* --- Состояние LOCKED (ни один тир): тинт категории сохраняется,
       иконка тёмная и различимая (не мёртвый серый силуэт) --- */
.ach.locked .token { background: var(--surface-container-high); }
.ach.locked .token .material-symbols-outlined { color: var(--on-surface-variant); }

/* --- Состояние JUST-UNLOCKED (только что получено) --- */
.ach.just { border-color: var(--cta); }
.ach.just .badge-new {
  position: absolute;
  top: -10px;
  left: 50px;
  background: var(--cta);
  color: var(--pixel-dark);       /* тёмный текст: контраст на оранжевом */
  font-family: 'Baloo 2', sans-serif;
  font-weight: 700;
  font-size: var(--font-xs);
  padding: 3px var(--space-xs-plus);
  border-radius: var(--radius-pill);
  box-shadow: var(--shadow-press);
}
@media (prefers-reduced-motion: no-preference) {
  .ach.just { animation: achJustPulse 1.6s ease-in-out 2; }
  @keyframes achJustPulse {
    0%, 100% { box-shadow: var(--shadow); }
    50% { box-shadow: 0 0 0 4px rgba(249, 115, 22, 0.25), var(--shadow); }
  }
}

/* --- HIDDEN (секретное, не раскрыто) --- */
.ach.hidden-ach { background: var(--hidden-tint); }
.ach.hidden-ach .token { background: var(--hidden-token); }
.ach.hidden-ach .token .material-symbols-outlined { color: var(--hidden-on); }
.ach.hidden-ach .name { color: var(--hidden-on); }

/* --- HIDDEN раскрытый (получен): фиолетовая семья + золотой жетон --- */
.ach.hidden-revealed { background: var(--hidden-tint); }
.ach.hidden-revealed .token { background: var(--tier-gold-soft); }
.ach.hidden-revealed .token .material-symbols-outlined { color: #8A5A00; }
.ach.hidden-revealed .name { color: var(--hidden-on); }

/* --- Пустое / ошибка / загрузка --- */
.ach-loading, .ach-error {
  text-align: center;
  color: var(--on-surface-variant);
  font-size: var(--font-md);
  padding: var(--space-2xl) var(--space-lg);
}

/* ==========================================================================
   CELEBRATORY OVERLAY (разблокировка)
   ========================================================================== */
.ach-celebrate {
  position: fixed;
  inset: 0;
  display: none;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  background: var(--scrim-modal);
  z-index: 1200;
  padding: var(--space-xl);
  text-align: center;
}
.ach-celebrate.show { display: flex; }
.ach-celebrate .burst {
  width: 140px;
  height: 140px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--tier-gold-soft) 0%, var(--surface-container-lowest) 70%);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 0 8px rgba(245, 158, 11, 0.25);
}
.ach-celebrate .burst .material-symbols-outlined { font-size: 72px; color: var(--tier-gold); }
.ach-celebrate .cel-title {
  font-family: 'Baloo 2', sans-serif;
  font-weight: 700;
  font-size: var(--font-2xl);
  color: #fff;
  margin-top: var(--space-lg);
}
.ach-celebrate .cel-name {
  font-size: var(--font-lg);
  font-weight: 700;
  color: var(--tier-gold);
  margin-top: var(--space-2xs);
}
.ach-celebrate .cel-rewards {
  display: flex;
  gap: var(--space-md);
  margin-top: var(--space-md);
  color: #fff;
  font-weight: 700;
  font-size: var(--font-md);
  align-items: center;
}
.ach-celebrate .cel-rewards .xp { color: var(--xp-gold); }  /* на тёмном скриме контраст ок */
.ach-celebrate .cel-rewards span { display: inline-flex; align-items: center; gap: 5px; }
.ach-celebrate .cel-ok {
  margin-top: var(--space-xl);
  min-height: 56px;
  padding: 0 var(--space-3xl);
  border: none;
  border-radius: var(--radius-pill);
  background: var(--cta);
  color: #fff;
  font-family: 'Baloo 2', sans-serif;
  font-weight: 700;
  font-size: var(--font-md);
  cursor: pointer;
}

/* Конфетти + движение: только при no-preference (уважаем reduced-motion, AC4) */
.ach-confetti { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.ach-confetti i {
  position: absolute;
  top: -20px;
  width: 9px;
  height: 14px;
  border-radius: 2px;
  opacity: 0;
}
@media (prefers-reduced-motion: no-preference) {
  .ach-celebrate.show .burst { animation: achPop 0.45s cubic-bezier(.22, 1.1, .36, 1); }
  @keyframes achPop { 0% { transform: scale(0.4); } 100% { transform: scale(1); } }
  .ach-celebrate.show .ach-confetti i { animation: achFall 1.8s linear forwards; }
  @keyframes achFall {
    0% { transform: translateY(0) rotate(0); opacity: 1; }
    100% { transform: translateY(760px) rotate(540deg); opacity: 0; }
  }
}
@media (prefers-reduced-motion: reduce) {
  .ach-celebrate .burst { box-shadow: 0 0 0 8px rgba(245, 158, 11, 0.4); }  /* статичная компенсация */
}

/* ==========================================================================
   ТОЧКА ВХОДА В ПРОФИЛЕ («Мои награды»)
   ========================================================================== */
.profile-achievements-link {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  width: 100%;
  min-height: 56px;
  padding: var(--space-sm) var(--space-md);
  margin-top: var(--space-md);
  margin-bottom: var(--space-md);   /* #2: зазор до .profile-balance-card (у карточки margin-top:0) */
  background: var(--surface-container-lowest);
  border: none;
  border-radius: var(--radius-md);
  box-shadow: var(--shadow);
  cursor: pointer;
  font-family: inherit;
  text-align: left;
}
.profile-achievements-link .pa-icon {
  width: 40px;
  height: 40px;
  border-radius: var(--radius-sm);
  background: var(--tier-gold-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.profile-achievements-link .pa-icon .material-symbols-outlined {
  font-size: 24px;
  color: #8A5A00;
  font-variation-settings: 'FILL' 1;
}
.profile-achievements-link .pa-body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.profile-achievements-link .pa-title {
  font-family: 'Baloo 2', sans-serif;
  font-weight: 600;
  font-size: var(--font-md);
  color: var(--on-surface);
}
.profile-achievements-link .pa-sub {
  font-size: var(--font-xs);
  color: var(--on-surface-variant);
}
.profile-achievements-link .pa-arrow { color: var(--on-surface-variant); flex-shrink: 0; }

/* --- Планшет (MatePad): контент тянется до --container-max, одна колонка --- */
@media (min-width: 600px) {
  #view-achievements .ach-collection,
  #view-achievements .ach,
  #view-achievements .ach-section-head {
    max-width: var(--container-max);
    margin-left: auto;
    margin-right: auto;
  }
}
