/* ================================================================
   HC Torpedo — Global animations, shimmers & transitions
   ================================================================ */

/* ── Keyframes ── */
@keyframes tp-fade-up {
  from { opacity: 0; transform: translateY(28px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes tp-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes tp-slide-right {
  from { opacity: 0; transform: translateX(-24px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes tp-shimmer {
  0%   { background-position: -700px 0; }
  100% { background-position: 700px 0; }
}

/* ── Page transition overlay ── */
#tp-transition-overlay {
  position: fixed;
  inset: 0;
  background: #00205b;
  z-index: 99999;
  pointer-events: none;
  opacity: 0;
  transition: opacity .32s cubic-bezier(.4,0,.2,1);
}
#tp-transition-overlay.tp-out { opacity: 1; }

/* ── Page entrance ── */
.tp-page-ready .page-head__title {
  animation: tp-slide-right .55s cubic-bezier(.22,1,.36,1) both;
}
.tp-page-ready .page-head__breadcrumbs {
  animation: tp-fade-in .5s .2s both;
}
.tp-page-ready .list-news__navbar {
  animation: tp-fade-up .45s .1s cubic-bezier(.22,1,.36,1) both;
}

/* ── Card stagger ── */
.tp-page-ready .list-news__item,
.tp-page-ready .news-grid__item,
.tp-page-ready .player-card,
.tp-page-ready .person-card,
.tp-page-ready .photo-card,
.tp-page-ready .composition__item {
  animation: tp-fade-up .5s cubic-bezier(.22,1,.36,1) both;
  animation-delay: calc(var(--tp-idx, 0) * 60ms + 180ms);
}

/* ── Card hover lift ── */
.list-news__item-wrapper,
.player-card__wrapper,
.person-card__wrapper,
.match-item__wrapper {
  display: block;
  transition: transform .22s cubic-bezier(.22,1,.36,1), box-shadow .22s ease;
  will-change: transform;
}
.list-news__item-wrapper:hover,
.player-card__wrapper:hover,
.person-card__wrapper:hover {
  transform: translateY(-6px) scale(1.012);
  box-shadow: 0 18px 48px rgba(0,32,91,.22), 0 4px 12px rgba(200,16,46,.12);
}

/* ── Player card hover ── */
.composition__item-container {
  transition: transform .22s cubic-bezier(.22,1,.36,1), box-shadow .22s ease;
  will-change: transform;
}
.composition__item-container:hover {
  transform: translateY(-6px);
  box-shadow: 0 18px 48px rgba(0,32,91,.28), 0 4px 12px rgba(200,16,46,.15);
}

/* ── Image shimmer skeleton — ONLY for list-news cards ── */
.list-news__item-img-container {
  position: relative;
  overflow: hidden;
}
.list-news__item-img-container::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(100deg,
    #0c1931 0%, #1a2d52 30%, #2a4a8a 48%, #1a2d52 65%, #0c1931 100%);
  background-size: 700px 100%;
  animation: tp-shimmer 1.6s ease-in-out infinite;
  opacity: 1;
  transition: opacity .35s ease;
  z-index: 1;
  pointer-events: none;
}
.list-news__item-img-container.tp-loaded::after {
  opacity: 0;
}

/* ── Image reveal & zoom ── */
.list-news__item-img {
  transition: transform .38s cubic-bezier(.22,1,.36,1), opacity .35s ease;
}
.list-news__item-img.tp-loaded { opacity: 1 !important; }
.list-news__item-wrapper:hover .list-news__item-img { transform: scale(1.06); }

/* ── Category badge glow ── */
.list-news__item-type {
  transition: box-shadow .18s ease, transform .18s ease;
}
.list-news__item-wrapper:hover .list-news__item-type {
  box-shadow: 0 0 12px rgba(200,16,46,.55);
  transform: scale(1.05);
}

/* ── Title underline sweep ── */
.list-news__item-title {
  background-image: linear-gradient(#c8102e, #c8102e);
  background-size: 0 2px;
  background-repeat: no-repeat;
  background-position: 0 100%;
  transition: background-size .28s cubic-bezier(.22,1,.36,1);
}
.list-news__item-wrapper:hover .list-news__item-title {
  background-size: 100% 2px;
}

/* ── Date color on hover ── */
.list-news__item-date { transition: color .18s ease; }
.list-news__item-wrapper:hover .list-news__item-date { color: #c8102e; }

/* ── "Читать подробнее" btn ── */
.list-news__item-btn {
  transition: opacity .22s ease, transform .22s cubic-bezier(.22,1,.36,1);
}
.list-news__item:not(:hover) .list-news__item-btn {
  opacity: 0; transform: translateY(6px); pointer-events: none;
}
.list-news__item:hover .list-news__item-btn {
  opacity: 1; transform: translateY(0); pointer-events: auto;
}

/* ── Header always stable — no animation ── */
.header, #header, #n_menu_bl {
  opacity: 1 !important;
  transform: none !important;
  animation: none !important;
}

/* ── Hide KHL sub-nav breadcrumbs row (shows club hierarchy on inner pages) ── */
.s_khl_menu_n_menu_bl .s_khl_menu_crumbs,
#n_menu_bl .khl_nav2,
#n_menu_bl > div > ul:nth-child(2),
.khl_nav_path,
.s_khl_nav_path {
  display: none !important;
}

/* ── Nav link hover ── */
.header__nav-link, .nav__link {
  position: relative;
  transition: color .18s ease;
}
.header__nav-link::after, .nav__link::after {
  content: '';
  position: absolute;
  bottom: -2px; left: 0;
  width: 0; height: 2px;
  background: #c8102e;
  transition: width .22s cubic-bezier(.22,1,.36,1);
}
.header__nav-link:hover::after, .nav__link:hover::after { width: 100%; }

/* ── Buttons ── */
.btn {
  transition: transform .18s ease, box-shadow .18s ease, background .18s ease !important;
}
.btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0,32,91,.25);
}
.btn:active { transform: translateY(0); }

/* ── Events widget — prevent image overflow ── */
.events__slide { overflow: hidden; }
.events__content { overflow: hidden; }

/* ── Match list items (table rows, not carousel cards) ── */
.matches-list__item:hover,
.season-table__row:hover {
  background: rgba(0,32,91,.04);
  box-shadow: inset 3px 0 0 #c8102e;
  transition: background .2s ease, box-shadow .2s ease;
}
