/*
  Header rails shell module.
  Extracted from the former modules/40-rails-bases-home.css; keep after 36-vote-modal.css.
*/

/* ---- Header rails (bases and promo carousels) ---- */
.headerRails {
  margin-top: 8px;
  display: flex;
  gap: 12px;
  align-items: stretch;
  flex-wrap: wrap;
}
.headerRailBases,
.headerRailPromo {
  flex: 1 1 0;
  /* allow shrinking inside flex row without forcing wrap */
  min-width: 0;
  background: rgba(0, 0, 0, 0.25);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 12px;
  /* Р В±Р С•Р В»РЎРЉРЎв‚¬Р Вµ Р Р†Р С•Р В·Р Т‘РЎС“РЎвЂ¦Р В° РЎРѓР Р†Р ВµРЎР‚РЎвЂ¦РЎС“/РЎРѓР Р…Р С‘Р В·РЎС“ */
  padding: 12px 14px;
  height: var(--topline-box-h);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.headerRailBases { flex: 1 1 auto; }
/* Promo rail should not steal too much width from bases on wide screens.
   Keep it within a predictable range; bases will take the remaining space. */
.headerRailPromo {
  flex: 0 0 clamp(340px, 28vw, 520px);
  max-width: 520px;
}

/* Promo rail: full-bleed banner (no inner padding) */
.headerRailPromo{ padding: 0; }
.headerRailPromo .railBody{ border-radius: 12px; }

.headerRailBasesShell{
  display: grid;
  grid-template-columns: clamp(248px, 31%, 292px) minmax(0, 1fr);
  gap: 10px;
  flex: 1 1 auto;
  min-height: 0;
  align-items: stretch;
}
.headerRailBasesStage{
  min-width: 0;
  min-height: 0;
  display: flex;
}
.headerRailBasesStage .railBody{
  width: 100%;
  height: 100%;
}
.headerRadioMini{
  position: relative;
  min-width: 0;
  min-height: 0;
  height: 100%;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.10);
  background:
    radial-gradient(circle at top right, rgba(240,140,40,.16), rgba(240,140,40,0) 46%),
    linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.02));
  box-shadow:
    0 12px 28px rgba(0,0,0,.28),
    inset 0 1px 0 rgba(255,255,255,.06);
  padding: 12px;
  display: grid;
  grid-template-rows: auto auto auto auto;
  gap: 10px;
  overflow: hidden;
}
.headerRadioMini::before{
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(135deg, rgba(255,255,255,.10), rgba(255,255,255,0) 38%),
    linear-gradient(0deg, rgba(0,0,0,.18), rgba(0,0,0,0));
}
.headerRadioMini > *{
  position: relative;
  z-index: 1;
}
.headerRadioMini__top{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.headerRadioMini__badge{
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 5px 9px;
  border-radius: 999px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.08);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .12em;
}
.headerRadioMini__liveDot{
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: #ff7b5f;
  box-shadow: 0 0 0 0 rgba(255,123,95,.5);
  animation: radioLivePulse 1.8s infinite;
}
.headerRadioMini__listeners{
  font-size: 12px;
  color: var(--text700);
  font-weight: 800;
}
.headerRadioMini__main{
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  min-width: 0;
}
.headerRadioMini__play{
  width: 52px;
  height: 52px;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,.12);
  background: linear-gradient(180deg, rgba(240,140,40,.22), rgba(240,140,40,.10));
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  box-shadow:
    0 10px 20px rgba(0,0,0,.22),
    inset 0 1px 0 rgba(255,255,255,.08);
}
.headerRadioMini__play:hover{
  transform: translateY(-1px);
  border-color: rgba(240,140,40,.32);
}
.headerRadioMini__meta{
  min-width: 0;
  display: grid;
  gap: 4px;
}
.headerRadioMini__eyebrow{
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .16em;
  color: rgba(255,255,255,.58);
  font-weight: 900;
}
.headerRadioMini__title{
  font-size: 14px;
  line-height: 1.2;
  font-weight: 900;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.headerRadioMini__owner{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  color: inherit;
  text-decoration: none;
}
.headerRadioMini__owner:hover{
  color: #fff;
}
.headerRadioMini__ownerAvatar{
  width: 24px;
  height: 24px;
  border-radius: 999px;
  object-fit: cover;
  border: 1px solid rgba(255,255,255,.12);
  flex: 0 0 auto;
}
.headerRadioMini__ownerName{
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: rgba(255,255,255,.78);
  font-size: 12px;
  font-weight: 700;
}
.headerRadioMini__wave{
  height: 28px;
  display: flex;
  align-items: flex-end;
  gap: 5px;
}
.headerRadioMini__wave span{
  flex: 1 1 0;
  border-radius: 999px 999px 2px 2px;
  background: linear-gradient(180deg, rgba(255,255,255,.84), rgba(240,140,40,.26));
  min-height: 6px;
  opacity: .45;
  transform-origin: bottom center;
}
.headerRadioMini.is-playing .headerRadioMini__wave span{
  opacity: .9;
  animation: radioWave 1.25s ease-in-out infinite;
}
.headerRadioMini.is-playing .headerRadioMini__wave span:nth-child(2){ animation-delay: .14s; }
.headerRadioMini.is-playing .headerRadioMini__wave span:nth-child(3){ animation-delay: .28s; }
.headerRadioMini.is-playing .headerRadioMini__wave span:nth-child(4){ animation-delay: .42s; }
.headerRadioMini.is-playing .headerRadioMini__wave span:nth-child(5){ animation-delay: .56s; }
.headerRadioMini__actions{
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.headerRadioMini__vote,
.headerRadioMini__open{
  min-height: 34px;
  padding: 7px 10px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
  color: inherit;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 12px;
  font-weight: 800;
}
.headerRadioMini__vote:hover,
.headerRadioMini__open:hover{
  border-color: rgba(240,140,40,.32);
  background: rgba(240,140,40,.08);
}
.headerRadioMini__vote.is-active{
  border-color: rgba(240,140,40,.42);
  background: rgba(240,140,40,.14);
  color: #fff;
}
.headerRadioMini__vote.is-disabled{
  opacity: .55;
  cursor: not-allowed;
}
.headerRadioMini__status{
  min-height: 16px;
  font-size: 12px;
  color: var(--text700);
}

@keyframes radioLivePulse{
  0%{ box-shadow: 0 0 0 0 rgba(255,123,95,.48); }
  70%{ box-shadow: 0 0 0 10px rgba(255,123,95,0); }
  100%{ box-shadow: 0 0 0 0 rgba(255,123,95,0); }
}

@keyframes radioWave{
  0%, 100%{ transform: scaleY(.35); }
  50%{ transform: scaleY(1); }
}

@media (max-width: 980px){
  .headerRailBases, .headerRailPromo{ flex-basis: 100%; height: auto; }
}
.railHead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
  font-size: 14px;
  font-weight: 600;
}
.railTitle {
  font-weight: 600;
  font-size: 14px;
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.railMore {
  font-size: 12px;
  opacity: 0.8;
  text-decoration: none;
}
.railMore:hover {
  text-decoration: underline;
}
.railBody {
  position: relative;
  overflow: hidden;
  /* allow the carousel to fill the fixed rail height without pushing layout */
  flex: 1 1 auto;
  min-height: 0;
}

/* Profile widget improvements */
.profileWidget {
  display: flex;
  /* Make the content align to the top-left inside the fixed-height header box.
     This makes the action buttons feel "anchored" and visually consistent with rails. */
  align-items: flex-start;
  gap: 12px;
  max-width: 100%;
  /* make profile block visually match the rails */
  background: rgba(0, 0, 0, 0.25);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 12px;
  padding: 12px 14px;
  /*
    IMPORTANT:
    Р СњР Вµ Р С”Р В»Р С‘Р С—Р В°Р ВµР С Р Р†РЎвЂ№Р С—Р В°Р Т‘Р В°РЎР‹РЎвЂ°Р С‘Р Вµ Р СР ВµР Р…РЎР‹ (РЎС“Р Р†Р ВµР Т‘Р С•Р СР В»Р ВµР Р…Р С‘РЎРЏ Р С‘ Р Т‘РЎР‚.).
    overflow:hidden Р В»Р С•Р СР В°Р В» dropdown Р С”Р С•Р В»Р С•Р С”Р С•Р В»РЎРЉРЎвЂЎР С‘Р С”Р В°: Р СР ВµР Р…РЎР‹ РЎР‚Р ВµР Р…Р Т‘Р ВµРЎР‚Р С‘Р В»Р С•РЎРѓРЎРЉ "Р Р†Р Р…РЎС“РЎвЂљРЎР‚Р С‘" Р С”Р В°РЎР‚РЎвЂљР С•РЎвЂЎР С”Р С‘ Р С—РЎР‚Р С•РЎвЂћР С‘Р В»РЎРЏ.
  */
  overflow: visible;
  height: var(--topline-box-h);
}
.profileAvatarLarge {
  width: 64px;
  height: 64px;
  border-radius: 14px;
  object-fit: cover;
  flex: 0 0 auto;
}
.profileWidgetBody {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
  /* allow the action row to wrap without pushing avatar */
  flex: 1 1 auto;
}
.profileWidgetHeaderRow{
  display:flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
}
.profileWidgetName {
  font-weight: 600;
  font-size: 14px;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  min-width: 0;
  flex: 1 1 auto;
}
.profileWidgetSteamId {
  font-size: 10px;
  opacity: 0.7;
}
.profileWidgetMetrics {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  flex: 0 0 auto;
  white-space: nowrap;
}
.profileWidgetMetrics .metric{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding: 3px 8px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(0,0,0,.10);
  color: var(--text900);
  text-decoration:none;
  cursor:pointer;
}
.profileWidgetMetrics .metric:hover{ border-color: rgba(255,255,255,.22); background: rgba(0,0,0,.18); }

.profileWidgetMetrics .metric--lvl{
  border-color: rgba(240,140,40,.28);
  background: rgba(240,140,40,.10);
  font-weight: 950;
  letter-spacing: .2px;
}
.profileWidgetMetrics .metric i {
  margin-right: 4px;
}
.profileWidgetActions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 2px;
  align-items: center;
}
.profileWidgetActions > .btn,
.profileWidgetActions > a.btn,
.profileWidgetActions > .notifBell > .notifBellBtn {
  min-height: 30px;
  padding: 6px 10px;
  font-size: 12px;
  line-height: 1.2;
  white-space: nowrap;
}

/* Bell next to likes in the profile widget header row */
.profileWidgetMetrics > .notifBell > .notifBellBtn{
  min-height: 22px;
  padding: 3px 8px;
  font-size: 12px;
  line-height: 1;
}

.badgeDot{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width: 18px;
  height: 18px;
  padding: 0 6px;
  margin-left: 6px;
  border-radius: 999px;
  background: var(--accent);
  color: #0b0b0b;
  font-weight: 700;
  font-size: 11px;
  line-height: 1;
  box-shadow: 0 6px 14px rgba(0,0,0,.28);
}

/* ------------------------------
   Site-wide notifications (bell + dropdown + toasts)
   ------------------------------ */
.notifBell{ position: relative; display: inline-flex; }
.notifBellBtn{ position: relative; }
.notifBellBtn .badgeDot{
  position: absolute;
  top: -8px;
  right: -8px;
  margin-left: 0;
}

.notifMenu{
  position: absolute;
  right: 0;
  top: calc(100% + 10px);
  width: 360px;
  max-width: min(360px, 88vw);
  /* Р вЂРЎвЂ№Р В»Р С• РЎРѓР В»Р С‘РЎв‚¬Р С”Р С•Р С Р С—РЎР‚Р С•Р В·РЎР‚Р В°РЎвЂЎР Р…Р С• Р Р…Р В° РЎРѓРЎвЂљР ВµР С”Р В»РЎРЏР Р…Р Р…Р С•Р С РЎвЂћР С•Р Р…Р Вµ, Р С‘Р В·-Р В·Р В° РЎвЂЎР ВµР С–Р С• Р СР ВµР Р…РЎР‹ "РЎвЂљР ВµРЎР‚РЎРЏР В»Р С•РЎРѓРЎРЉ" */
  background: rgba(0,0,0,0.78);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.14);
  border-radius: 14px;
  box-shadow: 0 26px 74px rgba(0,0,0,0.75);
  overflow: hidden;
  /* Р СџР С•Р Р†Р ВµРЎР‚РЎвЂ¦ РЎв‚¬Р В°Р С—Р С”Р С‘/Р С”Р В°РЎР‚РЎвЂљР С•РЎвЂЎР ВµР С”, Р Р…Р ВµР В·Р В°Р Р†Р С‘РЎРѓР С‘Р СР С• Р С•РЎвЂљ Р В»Р С•Р С”Р В°Р В»РЎРЉР Р…РЎвЂ№РЎвЂ¦ stacking contexts */
  z-index: 9999;
}
.notifMenuHead{
  position: relative;
  display:flex;
  align-items:center;
  justify-content: flex-start;
  gap: 10px;
  padding: 10px 12px;
  border-bottom: 1px solid rgba(255,255,255,0.10);
}
.notifMenuTitle{
  font-weight: 700;
  font-size: 12px;
  opacity: 0.95;
}
/* Р С™Р Р…Р С•Р С—Р С”Р С‘ (Push/Р СџРЎР‚Р С•РЎвЂЎР С‘РЎвЂљР В°РЎвЂљРЎРЉ Р Р†РЎРѓРЎвЂ) РЎвЂћР С‘Р С”РЎРѓР С‘РЎР‚РЎС“Р ВµР С Р Р† Р С—РЎР‚Р В°Р Р†Р С•Р С Р Р†Р ВµРЎР‚РЎвЂ¦Р Р…Р ВµР С РЎС“Р С–Р В»РЎС“, РЎвЂЎРЎвЂљР С•Р В±РЎвЂ№ Р Р…Р Вµ Р С—РЎР‚РЎвЂ№Р С–Р В°Р В»Р С‘ Р С‘ Р Р…Р Вµ Р С—Р ВµРЎР‚Р ВµР Р…Р С•РЎРѓР С‘Р В»Р С‘РЎРѓРЎРЉ */
.notifMenuActions{
  position: absolute;
  top: 8px;
  right: 8px;
  display:flex;
  gap: 6px;
  flex-wrap: nowrap;
}
.notifMenuActions .btn{
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.14);
}
.notifMenuActions .btn:hover{
  background: rgba(255,255,255,0.10);
}
/* Р вЂќР В°Р ВµР С Р В·Р В°Р С–Р С•Р В»Р С•Р Р†Р С”РЎС“ Р СР ВµРЎРѓРЎвЂљР С•, РЎвЂЎРЎвЂљР С•Р В±РЎвЂ№ Р Р…Р Вµ Р Р…Р В°Р В»Р ВµР В·Р В°Р В» Р Р…Р В° Р С”Р Р…Р С•Р С—Р С”Р С‘ (Р В°Р Т‘Р В°Р С—РЎвЂљР С‘Р Р†Р Р…Р С•) */
.notifMenuTitle{ padding-right: clamp(110px, 30vw, 160px); }
.notifMenuList{ max-height: 360px; overflow:auto; padding: 10px 10px 6px; }
.notifMenuList::-webkit-scrollbar{ width: 10px; }
.notifMenuList::-webkit-scrollbar-thumb{ background: rgba(255,255,255,0.18); border-radius: 99px; }

.notifItem{
  display:block;
  padding: 10px 10px;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(0,0,0,0.22);
  margin-bottom: 8px;
  cursor: pointer;
}
.notifItem:hover{ background: rgba(0,0,0,0.30); }
.notifItem:focus-visible{ outline: 2px solid rgba(240,140,40,.55); outline-offset: 2px; }
.notifItem.is-unread{
  border-color: rgba(255,255,255,0.14);
  box-shadow: inset 3px 0 0 var(--accent);
}
.notifItem__row{ display:flex; align-items:center; justify-content:space-between; gap: 10px; }
.notifItem__title{ font-weight: 650; font-size: 12px; line-height: 1.25; }
.notifItem__time{ font-size: 11px; opacity: 0.7; white-space: nowrap; }
.notifItem__body{ margin-top: 6px; font-size: 12px; opacity: 0.9; line-height: 1.35; }

.notifMenuFoot{ padding: 10px 12px 12px; border-top: 1px solid rgba(255,255,255,0.08); }
.notifMenuFoot .hint{ font-size: 11px; opacity: 0.75; }

/* Toasts */
.toastStack{
  position: fixed;
  right: calc(16px + var(--safe-right));
  bottom: calc(16px + var(--safe-bottom));
  display:flex;
  flex-direction: column;
  gap: 10px;
  z-index: 9999;
  width: 360px;
  max-width: calc(100vw - 32px);
}
.toast{
  position: relative;
  padding: 12px 12px 12px;
  border-radius: 14px;
  background: rgba(0,0,0,0.45);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.12);
  box-shadow: 0 18px 55px rgba(0,0,0,0.55);
  cursor: pointer;
  transform: translateY(0);
  transition: opacity .18s ease, transform .18s ease;
}
.toast.is-hide{ opacity: 0; transform: translateY(8px); }
.toast__head{ display:flex; align-items:center; justify-content:space-between; gap: 10px; }
.toast__title{ font-weight: 750; font-size: 12px; }
.toast__time{ font-size: 11px; opacity: 0.7; }
.toast__body{ margin-top: 6px; font-size: 12px; opacity: 0.92; line-height: 1.35; }
.toast__close{
  position:absolute;
  top: 6px;
  right: 8px;
  background: transparent;
  border: none;
  color: rgba(255,255,255,0.75);
  font-size: 18px;
  cursor:pointer;
}
.toast__close:hover{ color: rgba(255,255,255,0.95); }
.toast:focus-visible{ outline: 2px solid rgba(240,140,40,.55); outline-offset: 2px; }

@media (max-width: 560px){
  /* On phones: menu becomes a fixed sheet so it never clips inside header/profile blocks */
  .notifMenu{
    position: fixed;
    left: calc(10px + var(--safe-left));
    right: calc(10px + var(--safe-right));
    top: calc(var(--sticky-top) + 10px);
    width: auto;
    max-width: none;
    max-height: calc(100vh - var(--sticky-top) - 20px);
    display:flex;
    flex-direction: column;
  }
  @supports (height: 100dvh){
    .notifMenu{ max-height: calc(100dvh - var(--sticky-top) - 20px); }
  }
  .notifMenuList{ max-height: none; flex: 1 1 auto; }

  /* Prevent the last actions/footer from being too close to iOS home indicator */
  .notifMenuFoot{ padding-bottom: calc(12px + var(--safe-bottom)); }

  /* Toasts respect safe areas on notched devices */
  .toastStack{
    left: calc(10px + var(--safe-left));
    right: calc(10px + var(--safe-right));
    bottom: calc(10px + var(--safe-bottom));
    width: auto;
    max-width: none;
  }
}

.hide-sm{ display:inline; }
@media (max-width: 560px){
  .hide-sm{ display:none; }
}

