/* components.css — переиспользуемые компоненты: pill, cta-card, welcome-card,
   judge-card, country-card, news-card, partner-tiers (4 уровня лого),
   carousel-shell + nav, social-list, placeholder-section, scroll-indicator.
   Все карточки используют frosted-glass (rgba+blur) на тёмном фоне.
   Зависит от tokens.css.
*/

/* ====================================================================
   Frosted glass mixin (применяется через .glass)
   ==================================================================== */
.glass{
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.08);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}

/* ====================================================================
   Pills (hero-disciplines)
   ==================================================================== */
.pill{
  display:inline-flex; align-items:center; gap:10px;
  padding:9px 16px 9px 13px;
  border-radius:var(--r-pill);
  font-size:12.5px; font-weight:600; letter-spacing:.05em;
  color:var(--ink);
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.10);
  backdrop-filter:blur(6px);
  white-space:nowrap;
  min-width:0;
}
.pill .dot{ width:8px; height:8px; border-radius:50%; box-shadow:0 0 10px currentColor; }
.pill.is-cup       .dot{ color:var(--blue);    background:var(--blue); }
.pill.is-challenge .dot{ color:var(--blue-2);  background:var(--blue-2); }
.pill.is-dressage  .dot{ color:var(--green);   background:var(--green); }
.pill.is-ceremony  .dot{ color:var(--gold);    background:var(--gold); }
.pill.is-cup       { border-color:rgba(36,119,189,.45); }
.pill.is-challenge { border-color:rgba(28,129,215,.45); }
.pill.is-dressage  { border-color:rgba(0,188,116,.40); }
.pill.is-ceremony  { border-color:rgba(201,163,91,.45); }

/* ====================================================================
   CTA Cards (hero)
   ==================================================================== */
.cta-card{
  position:relative;
  display:flex; flex-direction:column; align-items:flex-start; justify-content:space-between;
  gap:18px;
  padding:18px 18px 16px;
  min-height:128px;
  text-align:left;
  border-radius:var(--r-md);
  background:linear-gradient(180deg, rgba(36,119,189,.10), rgba(255,255,255,.02));
  border:1px solid var(--ink-faint);
  color:var(--ink);
  cursor:pointer;
  transition:transform .25s var(--ease), background .25s var(--ease), border-color .25s var(--ease);
  overflow:hidden;
}
.cta-card::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:var(--blue-2); opacity:.85;
}
.cta-card .num{
  font-family:"JetBrains Mono", monospace; font-size:11px; color:var(--ink-mute); letter-spacing:.16em;
}
.cta-card .title{
  font-size:clamp(20px, 1.9vw, 26px); font-weight:700; letter-spacing:-.02em;
  display:flex; align-items:center; gap:8px;
}
.cta-card .arrow{
  display:inline-flex; width:32px; height:32px; border-radius:50%;
  align-items:center; justify-content:center;
  background:rgba(255,255,255,.06); border:1px solid var(--ink-faint);
  margin-left:auto;
}
.cta-card:hover{
  transform:translateY(-2px);
  background:linear-gradient(180deg, rgba(36,119,189,.22), rgba(28,129,215,.10));
  border-color:rgba(78,164,230,.55);
}
.cta-card.is-placeholder{ opacity:.78; }
.cta-card.is-placeholder::before{ background:var(--ink-mute); }
.cta-card.is-ext::before{ background:var(--gold); }
/* Hero CTA «Results» — акцентная (главное действие во время турнира):
   filled-фон + LIVE-точка. Гармонирует с .nav-results в шапке. */
.cta-card.is-accent{
  background:linear-gradient(180deg, rgba(36,119,189,.30), rgba(28,129,215,.55));
  border-color:rgba(78,164,230,.6);
  box-shadow:0 8px 28px rgba(28,129,215,.35), inset 0 0 0 1px rgba(255,255,255,.08);
}
.cta-card.is-accent::before{ background:#fff; }
.cta-card.is-accent:hover{
  background:linear-gradient(180deg, rgba(36,119,189,.45), rgba(28,129,215,.70));
}
.cta-card.is-accent .nr-dot{
  display:inline-block; width:8px; height:8px; border-radius:50%;
  background:#ff5454; margin-right:8px; vertical-align:middle;
  animation:nrPulse 1.6s ease-out infinite;
}
@media (max-width:480px){
  .cta-card{ min-height:104px; padding:14px; }
  .cta-card .title{ font-size:18px; }
}

/* ====================================================================
   Scroll indicator (hero)
   ==================================================================== */
.scroll-ind{
  position:absolute; bottom:24px; left:50%; transform:translateX(-50%);
  display:flex; flex-direction:column; align-items:center; gap:6px;
  color:var(--ink-mute); font-size:10px; letter-spacing:.3em; text-transform:uppercase;
  z-index:2;
}
.scroll-ind .line{
  width:1px; height:42px; background:linear-gradient(180deg, transparent, var(--ink-mute));
  animation:scrollLine 2.2s ease-in-out infinite;
  transform-origin:top;
}
@keyframes scrollLine{
  0%   { transform:scaleY(0); opacity:0; }
  50%  { transform:scaleY(1); opacity:1; }
  100% { transform:scaleY(0); transform-origin:bottom; opacity:0; }
}
@media (max-width:520px){ .scroll-ind{ display:none; } }
@media (prefers-reduced-motion: reduce){
  .scroll-ind .line{ animation:none !important; }
}

/* ====================================================================
   Welcome Card (org-card)
   ==================================================================== */
.welcome-card{
  position:relative;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.08);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border-radius:var(--r-lg);
  padding:24px;
  display:flex; flex-direction:column;
  transition:border-color .25s var(--ease), background .25s var(--ease);
}
.welcome-card:hover{ border-color:rgba(78,164,230,.35); }
.welcome-card .org-badge{
  width:84px; height:84px; border-radius:50%;
  object-fit:cover;
  border:1px solid rgba(255,255,255,.12);
  background:linear-gradient(135deg, var(--bg-2), var(--bg-3));
  margin-bottom:16px;
  overflow:hidden;
  display:flex; align-items:center; justify-content:center;
  color:var(--ink-dim); font-size:22px; font-weight:700; letter-spacing:.04em;
}
.welcome-card .org-badge img{ width:100%; height:100%; object-fit:cover; aspect-ratio:1/1; }
.welcome-card .role{
  font-size:11px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--blue-2); font-weight:600; margin-bottom:6px;
}
.welcome-card .name{
  font-size:17px; font-weight:700; letter-spacing:-.01em; line-height:1.25;
}
.welcome-card .org{
  margin-top:4px; font-size:13px; color:var(--ink-mute);
}
.welcome-card .preview{
  margin-top:14px; font-size:14px; line-height:1.55; color:var(--ink-dim);
}
.welcome-card .full{
  overflow:hidden; max-height:0; opacity:0;
  transition:max-height .4s var(--ease), opacity .25s var(--ease), margin-top .4s var(--ease);
  font-size:14px; line-height:1.65; color:var(--ink-dim);
  margin-top:0;
}
/* B6 fix: при is-open превью прячется, чтобы не было дубля с full */
.welcome-card.is-open .preview{ display:none; }
.welcome-card.is-open .full{ max-height:2400px; opacity:1; margin-top:6px; }
.welcome-card .full p + p{ margin-top:10px; }
.welcome-card .full .signoff{
  margin-top:18px; padding-top:14px; border-top:1px solid var(--ink-faint);
  font-size:13px; color:var(--ink);
}
.welcome-card .read{
  margin-top:18px;
  display:inline-flex; align-items:center; gap:8px;
  background:transparent; border:1px solid var(--ink-faint);
  color:var(--ink); padding:8px 14px; border-radius:var(--r-pill);
  cursor:pointer; font-size:12.5px; font-weight:600;
  transition:background .2s var(--ease), border-color .2s var(--ease);
  align-self:flex-start;
}
.welcome-card .read:hover{ background:var(--ink-ghost); border-color:rgba(78,164,230,.55); }
.welcome-card .read .ic{ transition:transform .25s var(--ease); }
.welcome-card.is-open .read .ic{ transform:rotate(180deg); }

/* ====================================================================
   Judge Card (Officials — text-only, no photo)
   ==================================================================== */
.judge-card{
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.08);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border-radius:var(--r-md);
  padding:20px 22px;
  display:flex; flex-direction:column; gap:8px;
  transition:border-color .25s var(--ease), background .25s var(--ease);
}
.judge-card:hover{ border-color:rgba(78,164,230,.4); background:rgba(255,255,255,.06); }
.judge-card .judge-name{
  font-size:17px; font-weight:700; letter-spacing:-.01em; line-height:1.25;
  color:var(--ink);
}
.judge-card .judge-role{
  font-size:12.5px; color:var(--ink-dim); line-height:1.4;
}
.judge-card .judge-appointment{
  font-size:11px; color:var(--ink-mute); line-height:1.4;
  font-style:italic;
}
.judge-card .judge-disc{ margin-top:4px; }
.disc-badge{
  display:inline-flex; align-items:center; gap:6px;
  padding:4px 10px; border-radius:var(--r-pill);
  font-size:10.5px; font-weight:600; letter-spacing:.06em;
  text-transform:uppercase;
  border:1px solid var(--ink-faint);
  background:rgba(255,255,255,.04);
  color:var(--ink-dim);
}
.disc-badge.is-cup     { color:var(--blue);    border-color:rgba(36,119,189,.45);  background:rgba(36,119,189,.10); }
.disc-badge.is-dressage{ color:var(--green);   border-color:rgba(0,188,116,.45);   background:rgba(0,188,116,.08); }
.disc-badge.is-both    { color:var(--cyan);    border-color:rgba(78,164,230,.45);  background:rgba(78,164,230,.08); }

.judge-card .judge-meta{
  margin-top:auto; padding-top:14px; border-top:1px solid var(--ink-faint);
  display:flex; align-items:flex-end; justify-content:space-between; gap:10px;
  flex-wrap:wrap;
}
.judge-card .judge-country{
  display:inline-flex; align-items:center; gap:8px;
  font-family:"JetBrains Mono", monospace; font-size:11px; color:var(--ink-dim);
  letter-spacing:.1em;
}
/* SVG-флаг (img) в карточке судьи. 4:3, маленький размер. */
.judge-card .judge-country img.flag{
  display:inline-block; width:22px; height:16px;
  object-fit:cover;
  border-radius:2px;
  border:1px solid rgba(255,255,255,.12);
  vertical-align:middle;
}
/* Neutral / fallback placeholder (span) — серая полосатая заглушка. */
.judge-card .judge-country span.flag{
  display:inline-block; width:22px; height:16px;
  border-radius:2px;
  border:1px solid rgba(255,255,255,.12);
  background:repeating-linear-gradient(45deg, rgba(255,255,255,.06) 0 4px, rgba(255,255,255,.02) 4px 8px);
  vertical-align:middle;
}
.judge-card .judge-country .iso{ font-weight:600; }
.judge-card .judge-fei{
  display:inline-flex; flex-direction:column; align-items:flex-end; gap:2px;
  font-family:"JetBrains Mono", monospace;
  font-variant-numeric:tabular-nums;
}
.judge-card .judge-fei .lbl{ font-size:9px; color:var(--ink-mute); letter-spacing:.2em; text-transform:uppercase; }
.judge-card .judge-fei .val{ font-size:12px; color:var(--ink-dim); letter-spacing:.04em; display:inline-flex; align-items:center; gap:6px; }
.judge-card .judge-fei .lvl{
  display:inline-flex; align-items:center; gap:4px;
  color:var(--gold); font-size:10px; letter-spacing:0;
}
.judge-card .judge-fei .lvl-num{ color:var(--ink-mute); font-size:10.5px; }

/* ====================================================================
   Carousel shell (Officials horizontal carousels + News carousel)
   ==================================================================== */
.carousel-shell{ position:relative; }
.carousel-track{
  display:flex; gap:14px;
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
  padding:2px 2px 14px;
  scroll-padding-left:2px;
}
.carousel-track::-webkit-scrollbar{ display:none; }
.carousel-nav{
  position:absolute; top:46%; transform:translateY(-50%);
  width:44px; height:44px; border-radius:50%;
  background:rgba(11,26,48,.72); border:1px solid var(--ink-faint);
  color:var(--ink); cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  transition:background .2s var(--ease), border-color .2s var(--ease), transform .2s var(--ease);
  z-index:2;
}
.carousel-nav:hover{ background:rgba(36,119,189,.45); border-color:rgba(78,164,230,.6); }
.carousel-nav.prev{ left:-22px; }
.carousel-nav.next{ right:-22px; }
.carousel-nav svg{ width:16px; height:16px; }
@media (max-width:780px){
  .carousel-nav{ display:none; }
  .carousel-track{ padding-left:var(--pad-x); padding-right:var(--pad-x); margin-left:calc(var(--pad-x) * -1); margin-right:calc(var(--pad-x) * -1); }
}

/* ====================================================================
   Country Card
   ==================================================================== */
.country-card{
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.08);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border-radius:var(--r-md);
  padding:20px 18px;
  display:flex; flex-direction:column; align-items:center; gap:12px;
  transition:border-color .25s var(--ease), background .25s var(--ease), transform .25s var(--ease);
  text-align:center;
}
.country-card:hover{
  border-color:rgba(78,164,230,.4);
  background:rgba(255,255,255,.06);
  transform:translateY(-2px);
}
.country-card .cflag-wrap{
  display:flex; flex-direction:column; align-items:center; gap:8px;
}
/* Реальный SVG-флаг (img). Соотношение 4:3 из flag-icons. */
.country-card img.cflag{
  display:block; width:64px; height:48px;
  object-fit:cover;
  border-radius:3px;
  border:1px solid rgba(255,255,255,.12);
  box-shadow:0 4px 14px rgba(0,0,0,.25);
}
/* Neutral placeholder (span) для России — серая полосатая заглушка
   того же размера, чтобы ряд карточек не разваливался. */
.country-card span.cflag{
  display:inline-block; width:64px; height:48px;
  border-radius:3px;
  border:1px solid rgba(255,255,255,.12);
  background:repeating-linear-gradient(45deg, rgba(255,255,255,.08) 0 6px, rgba(255,255,255,.03) 6px 12px);
}
.country-card .ciso{
  font-family:"JetBrains Mono", monospace;
  font-size:11px; letter-spacing:.18em; color:var(--ink-dim); font-weight:600;
}
.country-card.is-neutral .ciso{
  font-family:"Inter", sans-serif;
  text-transform:none; letter-spacing:.04em; font-size:11.5px; font-style:italic;
}
.country-card .cname{
  font-size:14.5px; font-weight:600; letter-spacing:-.005em; color:var(--ink);
}

/* ====================================================================
   News Card
   ==================================================================== */
.news-card{
  flex:0 0 320px;
  scroll-snap-align:start;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.08);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border-radius:var(--r-md);
  padding:14px;
  display:flex; flex-direction:column; gap:12px;
  transition:border-color .25s var(--ease), background .25s var(--ease);
}
.news-card:hover{ border-color:rgba(78,164,230,.4); }
.news-card .news-cover{
  aspect-ratio:16 / 9; border-radius:var(--r-sm); overflow:hidden;
  background:
    radial-gradient(120% 80% at 30% 30%, rgba(78,164,230,.25), transparent 70%),
    linear-gradient(180deg, var(--bg-2), var(--bg-3));
  display:flex; align-items:center; justify-content:center;
  position:relative;
}
.news-card .news-cover img{ width:100%; height:100%; object-fit:cover; }
.news-card .news-cover .news-tag{
  font-family:"JetBrains Mono", monospace;
  font-size:10px; letter-spacing:.22em; color:var(--ink-dim);
  padding:5px 10px; border-radius:var(--r-pill);
  background:rgba(11,26,48,.6); border:1px solid var(--ink-faint);
}
.news-card .news-date{
  font-family:"JetBrains Mono", monospace; font-size:11px; color:var(--ink-mute); letter-spacing:.1em;
}
.news-card .news-title{
  font-size:16px; font-weight:700; letter-spacing:-.01em; line-height:1.3;
  color:var(--ink);
}
.news-card .news-excerpt{
  font-size:13px; color:var(--ink-dim); line-height:1.5;
}

/* Skeleton state — пока идёт fetch news.php (избегаем пустоты в карусели). */
.news-card.is-skeleton{
  pointer-events:none;
  background:rgba(255,255,255,.03);
}
.news-card.is-skeleton .news-cover,
.news-card.is-skeleton .news-title,
.news-card.is-skeleton .news-excerpt,
.news-card.is-skeleton .news-date{
  background:linear-gradient(90deg, rgba(255,255,255,.04) 0%, rgba(255,255,255,.10) 50%, rgba(255,255,255,.04) 100%);
  background-size:200% 100%;
  animation:newsSkelShimmer 1.6s linear infinite;
  border-radius:4px;
  color:transparent;
}
.news-card.is-skeleton .news-cover{ aspect-ratio:16/9; }
.news-card.is-skeleton .news-date{ height:11px; width:40%; }
.news-card.is-skeleton .news-title{ height:36px; }
.news-card.is-skeleton .news-excerpt{ height:48px; }
@keyframes newsSkelShimmer{
  0%   { background-position:200% 0; }
  100% { background-position:-200% 0; }
}
@media (prefers-reduced-motion: reduce){
  .news-card.is-skeleton .news-cover,
  .news-card.is-skeleton .news-title,
  .news-card.is-skeleton .news-excerpt,
  .news-card.is-skeleton .news-date{ animation:none !important; }
}

/* ====================================================================
   Partner Title block + grids
   ==================================================================== */
/* PARTNERS — 4 уровня (general → main → media → supporters).
   Без подложек: лого ставятся как есть на тёмный фон сайта.

   Стратегия выравнивания по ОПТИЧЕСКОМУ весу (PARTNERS-SIZING):
   - Контейнер .plogo гибкий по размеру; сайзинг через max-height +
     max-width НА IMG. Лого упирается в тот cap, который сработает первым.
   - Compact (квадратные/узкие — KazZinc, Akimat, Sandyq, …) используют
     base-cap уровня.
   - Wide (горизонтальные — CenterCredit, ULTIMA, STEPPE, QazSport,
     Qazaqstan, St. Regis, Wyndham) дополнительно ограничены по max-width,
     чтобы не доминировать в ряду.
   Цель — все лого в ряду выглядят одного веса, как на эталоне клиента. */
.partner-tiers{
  display:flex; flex-direction:column;
  gap:clamp(24px, 3vw, 40px);   /* было 36-64; уплотнили */
}
.ptier{ display:flex; flex-direction:column; gap:14px; }

/* Заголовок уровня: маленький лейбл + тонкая разделительная линия */
.ptier-head{
  display:flex; align-items:center; gap:14px;
}
.ptier-label{
  font-size:11px; letter-spacing:.24em; text-transform:uppercase;
  color:var(--ink-mute); font-weight:600; white-space:nowrap;
}
.ptier-line{
  flex:1; height:1px; background:var(--ink-faint);
}

/* Подпись под лого General Partner (опциональная, через partners.js) */
.ptier-sub{
  font-size:13px; color:var(--ink-dim); text-align:center;
  margin:4px 0 0; letter-spacing:.01em;
}

/* Ряд лого: центрированы по горизонтали и вертикали, равномерный gap. */
.ptier-row{
  display:flex; flex-wrap:wrap; align-items:center; justify-content:center;
  gap:clamp(20px, 2.5vw, 36px);
}
.ptier-general .ptier-row{ gap:0; }     /* один лого, gap не нужен */

/* Лого-обёртка: гибкая, не задаёт размер — размер определяет IMG ниже. */
.plogo{
  display:flex; align-items:center; justify-content:center;
  flex:0 0 auto; max-width:100%;
  opacity:.92; transition:opacity .25s var(--ease), transform .25s var(--ease);
}
.plogo:hover{ opacity:1; transform:translateY(-1px); }
.plogo img{
  display:block;
  width:auto; height:auto;
  max-width:100%;
  object-fit:contain;
  /* лёгкая тень — отделяет светлые лого от тёмного фона без подложки */
  filter:drop-shadow(0 1px 3px rgba(0,0,0,.35));
}

/* Per-tier base cap (применяется к compact или без shape). Десктоп. */
.plogo-xl img{ max-height:110px; max-width:300px; }   /* General Partner */
.plogo-lg img{ max-height:64px;  max-width:200px; }   /* Main Partners */
.plogo-md img{ max-height:46px;  max-width:170px; }   /* Media Partners */
.plogo-sm img{ max-height:48px;  max-width:140px; }   /* Supporters */

/* Wide overrides — горизонтальные лого получают более жёсткий cap
   по ширине, чтобы выглядеть одного оптического веса с квадратными. */
.plogo-lg.is-wide img{ max-width:200px; max-height:56px; }
.plogo-md.is-wide img{ max-width:150px; max-height:38px; }
.plogo-sm.is-wide img{ max-width:130px; max-height:32px; }

/* Per-logo точечная подгонка: STEPPE и Wyndham очень широкие текстовые
   лого, при общем cap визуально доминируют над соседями в ряду.
   Селектор по title — он совпадает с brand-name из partners.js. */
.plogo[title="STEPPE"] img{                 max-width:120px; max-height:30px; }
.plogo[title="Wyndham Garden Astana"] img{  max-width:110px; max-height:30px; }
@media (max-width:880px){
  .plogo[title="STEPPE"] img{                 max-width:105px; max-height:26px; }
  .plogo[title="Wyndham Garden Astana"] img{  max-width:95px;  max-height:26px; }
}
@media (max-width:480px){
  .plogo[title="STEPPE"] img{                 max-width:90px;  max-height:22px; }
  .plogo[title="Wyndham Garden Astana"] img{  max-width:80px;  max-height:22px; }
}

@media (max-width:880px){
  .partner-tiers{ gap:22px; }
  .ptier-row{ gap:18px 24px; }
  .plogo-xl img{ max-height:90px;  max-width:240px; }
  .plogo-lg img{ max-height:52px;  max-width:170px; }
  .plogo-md img{ max-height:40px;  max-width:140px; }
  .plogo-sm img{ max-height:42px;  max-width:120px; }
  .plogo-lg.is-wide img{ max-width:170px; max-height:46px; }
  .plogo-md.is-wide img{ max-width:130px; max-height:32px; }
  .plogo-sm.is-wide img{ max-width:110px; max-height:28px; }
}
@media (max-width:480px){
  .partner-tiers{ gap:18px; }
  .ptier-row{ gap:14px 18px; }
  .plogo-xl img{ max-height:72px;  max-width:200px; }
  .plogo-lg img{ max-height:42px;  max-width:140px; }
  .plogo-md img{ max-height:32px;  max-width:120px; }
  .plogo-sm img{ max-height:36px;  max-width:110px; }
  .plogo-lg.is-wide img{ max-width:140px; max-height:38px; }
  .plogo-md.is-wide img{ max-width:110px; max-height:26px; }
  .plogo-sm.is-wide img{ max-width:100px; max-height:24px; }
}

/* ====================================================================
   News CTA — крупная внешняя кнопка под каруселью News
   ==================================================================== */
.news-cta{
  margin-top:32px;
  display:flex; justify-content:center;
}
.news-cta-btn{
  display:inline-flex; align-items:center; gap:12px;
  padding:18px 32px;
  border-radius:var(--r-pill);
  background:linear-gradient(180deg, rgba(36,119,189,.22), rgba(28,129,215,.45));
  border:1px solid rgba(78,164,230,.55);
  color:var(--ink); font-size:15px; font-weight:600; letter-spacing:.02em;
  transition:transform .2s var(--ease), background .2s var(--ease), border-color .2s var(--ease);
}
.news-cta-btn:hover{
  transform:translateY(-2px);
  background:linear-gradient(180deg, rgba(36,119,189,.36), rgba(28,129,215,.65));
  border-color:rgba(78,164,230,.8);
}
.news-cta-btn svg{ width:16px; height:16px; }

/* ====================================================================
   Social icons (footer)
   ==================================================================== */
.social-list{
  display:flex; gap:10px; flex-wrap:wrap; margin-top:6px;
}
.social-list a{
  display:inline-flex; align-items:center; justify-content:center;
  width:46px; height:46px; border-radius:50%;
  background:rgba(255,255,255,.04); border:1px solid var(--ink-faint);
  color:var(--ink-dim);
  transition:background .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease), transform .2s var(--ease);
}
.social-list a:hover{ background:rgba(36,119,189,.25); color:#fff; border-color:rgba(78,164,230,.5); transform:translateY(-2px); }
.social-list svg{ width:18px; height:18px; }

/* ====================================================================
   Placeholder (coming-during-event)
   ==================================================================== */
.placeholder-inline{
  margin-top:24px;
  padding:16px 22px;
  border:1px dashed var(--ink-faint);
  border-radius:var(--r-md);
  background:rgba(255,255,255,.015);
  color:var(--ink-mute);
  font-size:13px; text-align:center; line-height:1.55;
}
.placeholder-inline .pulse{
  display:inline-flex; align-items:center; gap:8px; margin-right:8px;
  font-family:"JetBrains Mono", monospace;
  font-size:10px; letter-spacing:.2em; text-transform:uppercase;
  padding:4px 10px; border-radius:999px;
  background:rgba(28,129,215,.10); border:1px solid rgba(28,129,215,.30);
  color:var(--blue-2);
}

/* ====================================================================
   DRAW-UPDATE — кнопка трансляции в шапке и модал жеребьёвки.
   Кнопка #navDraw сама копирует стиль .nav-results, но имеет зелёный
   dot вместо красного (отличие от Results) и hidden до broadcast=true.
   ==================================================================== */

/* DRAW-FIX v3 — кнопка #navDraw в шапке удалена (на узких экранах не
   помещалась рядом с Results). Заменена баннером-полосой под хедером,
   см. .draw-banner ниже. */
.draw-modal[hidden],
.nav-overlay .links button.is-draw[hidden]{ display:none !important; }

/* DRAW-FIX v3 — Видимость через класс `is-broadcasting` на <html>.
   По умолчанию баннер и overlay-кнопка скрыты, при is-broadcasting — показаны. */
.draw-banner,
.nav-overlay .links button.is-draw{
  display:none !important;
}
html.is-broadcasting .draw-banner{ display:flex !important; }
html.is-broadcasting .nav-overlay .links button.is-draw{ display:inline-flex !important; }

/* ─── Баннер «Watch the draw · LIVE» под хедером ───────────────
   Фиксированная полоса top:var(--nav-h), ширина 100vw. Виден всем
   (десктоп / планшет / мобила). Заменяет мелкую кнопку в nav, которая
   на узких экранах не помещалась. */
.draw-banner{
  /* SAFARI-FIX — обнуляем UA-стили <button>. Без -webkit-appearance:none
     Safari рисует кнопку как нативную (белый фон, рамка, маленький
     padding) и игнорирует наши background/height. */
  -webkit-appearance:none;
  -moz-appearance:none;
  appearance:none;

  position:fixed;
  top:var(--nav-h);
  left:0; right:0;
  width:100%;          /* Safari иногда не считает 100% от right:0 у <button> */
  z-index:55;          /* ниже nav (60), но выше всего остального */
  height:44px;
  box-sizing:border-box;
  align-items:center; justify-content:center;
  gap:12px;
  padding:0 16px;
  margin:0;
  border:0;
  border-radius:0;     /* Safari ставит border-radius у <button> по умолчанию */
  outline:0;
  cursor:pointer;
  font:inherit; font-weight:700; font-size:14px;
  letter-spacing:.04em; text-transform:uppercase;
  color:#fff !important;  /* перебиваем UA-color */
  background-color:#00BC74;  /* fallback на случай если gradient не отрисовался */
  background-image:
    linear-gradient(90deg,
      rgba(0,188,116,.95) 0%,
      rgba(0,160,100,.95) 50%,
      rgba(0,188,116,.95) 100%);
  border-bottom:1px solid rgba(255,255,255,.18);
  box-shadow:0 4px 18px rgba(0,188,116,.35);
  transition:filter .15s ease, transform .15s ease;
}
.draw-banner:hover{ filter:brightness(1.08); }
.draw-banner:active{ transform:translateY(1px); }
.draw-banner .nr-dot{
  width:10px; height:10px; border-radius:50%;
  background:#fff;
  box-shadow:0 0 0 0 rgba(255,255,255,.6);
  animation:bannerPulse 1.6s ease-out infinite;
  flex:0 0 auto;
}
.draw-banner-text{
  white-space:nowrap;
  overflow:hidden; text-overflow:ellipsis;
}
.draw-banner-arrow{
  font-size:18px; font-weight:600; letter-spacing:0;
  opacity:.9;
  transition:transform .15s ease;
}
.draw-banner:hover .draw-banner-arrow{ transform:translateX(3px); }

@keyframes bannerPulse{
  0%   { box-shadow:0 0 0 0   rgba(255,255,255,.55); }
  70%  { box-shadow:0 0 0 10px rgba(255,255,255,0);  }
  100% { box-shadow:0 0 0 0   rgba(255,255,255,0);   }
}

/* nav-scrolled делает шапку короче (56px вместо 64px) — баннер
   следует за этим. */
.nav.is-scrolled ~ .draw-banner,
body:has(.nav.is-scrolled) .draw-banner{
  top:56px;
}

/* Когда баннер виден — двигаем верх hero и mobile-overlay'я вниз
   на высоту баннера, чтобы контент не уходил под баннер. */
html.is-broadcasting .hero{
  padding-top:calc(var(--nav-h) + 44px + 32px);
}
html.is-broadcasting .nav-overlay{
  padding-top:calc(20px + 44px);  /* overlay начинается ниже баннера */
}

@media (max-width:520px){
  .draw-banner{
    height:40px;
    font-size:12px;
    letter-spacing:.06em;
    gap:8px;
    padding:0 10px;
  }
  .draw-banner-arrow{ font-size:15px; }
  html.is-broadcasting .hero{
    padding-top:calc(var(--nav-h) + 40px + 32px);
  }
  html.is-broadcasting .nav-overlay{
    padding-top:calc(20px + 40px);
  }
}

/* DRAW-FIX (мобила): дублёр-кнопка в overlay-меню. Стилизуем как
   соседний <a class="is-accent">, плюс reset для нативного <button>. */
.nav-overlay .links button.is-draw{
  appearance:none; -webkit-appearance:none; background:transparent;
  border:0; padding:0; font:inherit; color:inherit;
  text-align:left; cursor:pointer;
  font-size:clamp(22px, 6vw, 36px);
  font-weight:700; letter-spacing:-.02em;
  display:flex; align-items:center; justify-content:space-between;
}
.nav-overlay .links button.is-draw.is-accent{
  display:inline-flex; align-items:center; gap:10px;
  background:rgba(0,188,116,.14);
  border:1px solid rgba(0,188,116,.5);
  border-radius:var(--r-pill);
  padding:8px 16px;
  color:#fff !important;
  width:fit-content;
  font-size:clamp(15px, 4.4vw, 22px);
}
.nav-overlay .links button.is-draw.is-accent .nr-dot{
  display:inline-block; width:8px; height:8px; border-radius:50%;
  background:#00BC74;
  animation:drawPulse 1.6s ease-out infinite;
}

/* Анимация-pulse для зелёной точки в overlay-меню (мобила). */
@keyframes drawPulse{
  0%   { box-shadow:0 0 0 0   rgba(0,188,116,.5); }
  70%  { box-shadow:0 0 0 9px rgba(0,188,116,0);  }
  100% { box-shadow:0 0 0 0   rgba(0,188,116,0);  }
}

.draw-modal{
  position:fixed; inset:0; z-index:200;
  display:flex; align-items:center; justify-content:center;
  padding:clamp(16px, 3vw, 40px);
  animation:drawModalIn .2s var(--ease) both;
}
.draw-modal[hidden]{ display:none; }
@keyframes drawModalIn{ from{ opacity:0; } to{ opacity:1; } }

.draw-modal__backdrop{
  position:absolute; inset:0;
  background:rgba(6, 15, 28, .82);
  backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
  cursor:pointer;
}

.draw-modal__panel{
  position:relative; z-index:1;
  width:min(1280px, 100%); height:min(820px, 92vh);
  display:flex; flex-direction:column;
  background:var(--bg-0);
  border:1px solid rgba(78,164,230,.35);
  border-radius:18px; overflow:hidden;
  box-shadow:0 40px 120px rgba(0,0,0,.6), 0 0 0 1px rgba(255,255,255,.04) inset;
  animation:drawPanelIn .35s var(--ease) both;
}
@keyframes drawPanelIn{ from{ opacity:0; transform:translateY(20px) scale(.97); } to{ opacity:1; transform:none; } }

.draw-modal__head{
  display:flex; align-items:center; gap:14px;
  padding:14px 20px;
  background:linear-gradient(180deg, rgba(28,129,215,.18), rgba(28,129,215,0));
  border-bottom:1px solid var(--rule);
}
.draw-modal__head h2{
  flex:1; margin:0; font-size:16px; font-weight:600;
  letter-spacing:.02em; color:var(--ink);
}
.draw-modal__live{
  display:inline-flex; align-items:center; gap:8px;
  padding:5px 12px; border-radius:999px;
  background:rgba(0,188,116,.12); border:1px solid rgba(0,188,116,.35);
  color:#56e2a8; font-size:11px; font-weight:700;
  letter-spacing:.18em; text-transform:uppercase;
}
.draw-modal__live .nr-dot{
  width:8px; height:8px; border-radius:50%; background:#00BC74;
  box-shadow:0 0 0 0 rgba(0,188,116,.5);
  animation:drawPulse 1.6s ease-out infinite;
}
.draw-modal__close{
  display:inline-flex; align-items:center; gap:8px;
  padding:6px 14px; border-radius:999px;
  background:rgba(255,255,255,.04); border:1px solid var(--rule);
  color:var(--ink-dim); font-size:12px; letter-spacing:.04em;
  cursor:pointer; transition:background .15s, color .15s;
}
.draw-modal__close:hover{ background:rgba(255,255,255,.08); color:var(--ink); }

.draw-modal__body{
  flex:1; background:#060f1c; position:relative;
}
.draw-modal__body iframe{
  width:100%; height:100%; border:0; display:block;
}

@media (max-width: 720px){
  .draw-modal{ padding:0; }
  .draw-modal__panel{ height:100vh; height:100lvh; width:100%; border-radius:0; border:0; }
  .draw-modal__head h2{ font-size:13px; }
  .draw-modal__close span{ display:none; }
}

/* ====================================================================
   LIVE-трансляция (YouTube) — красный баннер под хедером + модал-плеер.
   Виден при html.is-live (тогл в main.js). Аналог draw-banner, но красный.
   ==================================================================== */
.live-banner,
.live-modal[hidden]{ display:none !important; }

html.is-live .live-banner{ display:flex !important; }

.live-banner{
  -webkit-appearance:none; appearance:none;
  position:fixed;
  top:var(--nav-h);
  left:0; right:0; width:100%;
  z-index:56;                 /* чуть выше draw-banner (55) */
  height:44px; box-sizing:border-box;
  align-items:center; justify-content:center; gap:12px;
  padding:0 16px; margin:0; border:0; border-radius:0; outline:0;
  cursor:pointer;
  font:inherit; font-weight:700; font-size:14px;
  letter-spacing:.04em; text-transform:uppercase; color:#fff !important;
  background-color:#e23b3b;
  background-image:linear-gradient(90deg, rgba(214,40,40,.96) 0%, rgba(190,30,30,.96) 50%, rgba(214,40,40,.96) 100%);
  border-bottom:1px solid rgba(255,255,255,.18);
  box-shadow:0 4px 18px rgba(214,40,40,.4);
  transition:filter .15s ease, transform .15s ease;
}
.live-banner:hover{ filter:brightness(1.08); }
.live-banner:active{ transform:translateY(1px); }
.live-banner .lv-dot{
  width:10px; height:10px; border-radius:50%; background:#fff;
  box-shadow:0 0 0 0 rgba(255,255,255,.6);
  animation:livePulse 1.4s ease-out infinite; flex:0 0 auto;
}
.live-banner-text{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.live-banner-arrow{ font-size:18px; font-weight:600; letter-spacing:0; opacity:.9; transition:transform .15s ease; }
.live-banner:hover .live-banner-arrow{ transform:translateX(3px); }
@keyframes livePulse{
  0%{ box-shadow:0 0 0 0 rgba(255,255,255,.55); }
  70%{ box-shadow:0 0 0 10px rgba(255,255,255,0); }
  100%{ box-shadow:0 0 0 0 rgba(255,255,255,0); }
}

/* Сдвигаем hero вниз на высоту баннера, когда трансляция активна. */
html.is-live .hero{ padding-top:calc(var(--nav-h) + 44px + 32px); }
html.is-live .nav-overlay{ padding-top:calc(20px + 44px); }
/* Если активны ОБА баннера (жеребьёвка + трансляция) — стопкой. */
html.is-live.is-broadcasting .live-banner{ top:calc(var(--nav-h) + 44px); }
html.is-live.is-broadcasting .hero{ padding-top:calc(var(--nav-h) + 88px + 32px); }

/* ─── Модал плеера ─── */
.live-modal{
  position:fixed; inset:0; z-index:210;
  display:flex; align-items:center; justify-content:center;
  padding:clamp(12px, 3vw, 40px);
  animation:drawModalIn .2s var(--ease) both;
}
.live-modal__backdrop{
  position:absolute; inset:0;
  background:rgba(6,15,28,.86);
  backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
  cursor:pointer;
}
.live-modal__panel{
  position:relative; z-index:1;
  width:min(1280px, 100%);
  display:flex; flex-direction:column;
  background:var(--bg-0);
  border:1px solid rgba(214,40,40,.4);
  border-radius:16px; overflow:hidden;
  box-shadow:0 40px 120px rgba(0,0,0,.6), 0 0 0 1px rgba(255,255,255,.04) inset;
  animation:drawPanelIn .35s var(--ease) both;
}
.live-modal__head{
  display:flex; align-items:center; gap:14px;
  padding:12px 18px;
  background:linear-gradient(180deg, rgba(214,40,40,.18), rgba(214,40,40,0));
  border-bottom:1px solid var(--rule);
}
.live-modal__head h2{ flex:1; margin:0; font-size:15px; font-weight:600; color:var(--ink); }
.live-modal__live{
  display:inline-flex; align-items:center; gap:8px;
  padding:5px 12px; border-radius:999px;
  background:rgba(214,40,40,.16); border:1px solid rgba(214,40,40,.4);
  color:#ff9b9b; font-size:11px; font-weight:700; letter-spacing:.18em; text-transform:uppercase;
}
.live-modal__live .lv-dot{
  width:8px; height:8px; border-radius:50%; background:#e23b3b;
  animation:livePulse 1.4s ease-out infinite;
}
.live-modal__close{
  display:inline-flex; align-items:center; gap:8px;
  padding:6px 14px; border-radius:999px;
  background:rgba(255,255,255,.04); border:1px solid var(--rule);
  color:var(--ink-dim); font-size:12px; letter-spacing:.04em; cursor:pointer;
  transition:background .15s, color .15s;
}
.live-modal__close:hover{ background:rgba(255,255,255,.08); color:var(--ink); }
.live-modal__body{
  position:relative; width:100%; aspect-ratio:16/9; background:#000;
}
.live-modal__body iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; display:block; }

@media (max-width:520px){
  .live-banner{ height:40px; font-size:12px; letter-spacing:.06em; gap:8px; padding:0 10px; }
  .live-banner-arrow{ font-size:15px; }
  html.is-live .hero{ padding-top:calc(var(--nav-h) + 40px + 32px); }
  html.is-live .nav-overlay{ padding-top:calc(20px + 40px); }
  .live-modal__close span{ display:none; }
}
