/*
 * ═══════════════════════════════════════════════════════════
 *  NEMENKOFF LAB — GLASS LAYER
 *  Подключать ПОСЛЕ style.min.css
 * ═══════════════════════════════════════════════════════════
 */

/* ═══════════════════════════════════════════════════════════
   EXTRA-CHECK — Liquid Glass Toggle Cards 2027
   Нативный input:checked живёт — JS читает его напрямую
   Визуал полностью через CSS, JS не трогаем
═══════════════════════════════════════════════════════════ */

/* Скрываем нативный чекбокс — он скрыт визуально,
   но остаётся в DOM и работает для JS */
.extra-check input[type="checkbox"] {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  opacity: 0 !important;
  pointer-events: none !important;
  margin: 0 !important;
}

/* ── Базовая карточка ── */
.extra-check {
  position: relative !important;
  display: flex !important;
  align-items: center !important;
  gap: 0 !important;
  padding: 0 !important;
  border-radius: 14px !important;
  /* Прозрачный базовый фон — не даёт белёсой плашки на тёмном bg */
  border: 1px solid rgba(255,255,255,0.12) !important;
  background: transparent !important;
  cursor: pointer !important;
  overflow: hidden !important;
  transition:
    border-color 0.28s cubic-bezier(0.2,1,0.2,1),
    background   0.28s cubic-bezier(0.2,1,0.2,1),
    box-shadow   0.28s cubic-bezier(0.2,1,0.2,1),
    transform    0.18s cubic-bezier(0.2,1,0.2,1) !important;
  user-select: none !important;
  -webkit-user-select: none !important;
}

/* ── Индикатор-кружок слева ── */
.extra-check::before {
  content: '' !important;
  flex-shrink: 0 !important;
  width: 16px !important;
  height: 16px !important;
  margin: 0 10px 0 14px !important;
  border-radius: 50% !important;
  border: 1.5px solid rgba(255,255,255,0.20) !important;
  background: transparent !important;
  background-image: none !important;
  transition:
    border-color 0.28s cubic-bezier(0.2,1,0.2,1),
    background   0.28s cubic-bezier(0.2,1,0.2,1),
    box-shadow   0.28s cubic-bezier(0.2,1,0.2,1),
    transform    0.32s cubic-bezier(0.34,1.56,0.64,1) !important;
  position: relative !important;
  z-index: 1 !important;
}

/* ── Текст ── */
.extra-check span {
  flex: 1 !important;
  padding: 11px 14px 11px 0 !important;
  font-size: 12.5px !important;
  font-family: 'Manrope', sans-serif !important;
  font-weight: 500 !important;
  color: rgba(255,255,255,0.72) !important;
  line-height: 1.35 !important;
  transition: color 0.25s ease, font-weight 0.25s ease !important;
  position: relative !important;
  z-index: 1 !important;
}

/* ── Shine-line сверху ── */
.extra-check::after {
  content: '' !important;
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  height: 1px !important;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(255,255,255,0.14) 50%,
    transparent 100%) !important;
  pointer-events: none !important;
  opacity: 0 !important;
  transition: opacity 0.28s ease !important;
}

/* ── HOVER ── */
.extra-check:hover {
  border-color: rgba(124,90,255,0.38) !important;
  background: rgba(124,90,255,0.08) !important;
  box-shadow: 0 4px 20px rgba(124,90,255,0.12) !important;
  transform: translateY(-1px) !important;
}
.extra-check:hover::before {
  border-color: rgba(124,90,255,0.65) !important;
  box-shadow: 0 0 8px rgba(124,90,255,0.30) !important;
}
.extra-check:hover span {
  color: rgba(255,255,255,0.75) !important;
}
.extra-check:hover::after {
  opacity: 1 !important;
}

/* ── ACTIVE (нажатие) ── */
.extra-check:active {
  transform: scale(0.97) translateY(0) !important;
}

/* ── CHECKED — через :has() (все современные браузеры) ── */
.extra-check:has(input:checked) {
  border-color: rgba(124,90,255,0.58) !important;
  background: linear-gradient(135deg,
    rgba(124,90,255,0.20) 0%,
    rgba(56,182,255,0.11) 100%) !important;
  box-shadow:
    0 0 0 1px rgba(124,90,255,0.22),
    0 0 22px rgba(124,90,255,0.18),
    0 0 44px rgba(124,90,255,0.06),
    inset 0 1px 0 rgba(255,255,255,0.10) !important;
  transform: translateY(-1px) !important;
}
.extra-check:has(input:checked)::before {
  border-color: transparent !important;
  /* Градиент + SVG галочка через многослойный background */
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 8' fill='none'%3E%3Cpath d='M1 4l2.5 2.5L9 1' stroke='%23ffffff' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/58% no-repeat,
    linear-gradient(135deg, #7c5aff 0%, #38b6ff 100%) !important;
  box-shadow:
    0 0 14px rgba(124,90,255,0.65),
    0 0 5px  rgba(56,182,255,0.40),
    inset 0 1px 0 rgba(255,255,255,0.28) !important;
  transform: scale(1.18) !important;
}
.extra-check:has(input:checked) span {
  color: rgba(255,255,255,0.94) !important;
  font-weight: 600 !important;
}
.extra-check:has(input:checked)::after {
  opacity: 1 !important;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(124,90,255,0.28) 50%,
    transparent 100%) !important;
}

/* ── BOT-DEFAULT (Telegram-bot уже в пакете — золотой стиль) ── */
.extra-check.bot-default {
  border-color: rgba(200,163,90,0.45) !important;
  background: linear-gradient(135deg,
    rgba(200,163,90,0.14) 0%,
    rgba(200,163,90,0.06) 100%) !important;
  box-shadow:
    0 0 0 1px rgba(200,163,90,0.18),
    0 0 18px rgba(200,163,90,0.12),
    inset 0 1px 0 rgba(255,255,255,0.08) !important;
}
.extra-check.bot-default::before {
  border-color: transparent !important;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 8' fill='none'%3E%3Cpath d='M1 4l2.5 2.5L9 1' stroke='%23ffffff' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/58% no-repeat,
    linear-gradient(135deg, #c8a35a 0%, #f0c97a 100%) !important;
  box-shadow: 0 0 12px rgba(200,163,90,0.55) !important;
  transform: scale(1.12) !important;
}
.extra-check.bot-default span {
  color: rgba(255,255,255,0.90) !important;
  font-weight: 600 !important;
}
.extra-check.bot-default::after {
  opacity: 1 !important;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(200,163,90,0.22) 50%,
    transparent 100%) !important;
}

/* ── FALLBACK: .checked-on (для браузеров без :has) ── */
.extra-check.checked-on {
  border-color: rgba(124,90,255,0.58) !important;
  background: linear-gradient(135deg,
    rgba(124,90,255,0.20) 0%,
    rgba(56,182,255,0.11) 100%) !important;
  box-shadow:
    0 0 0 1px rgba(124,90,255,0.22),
    0 0 22px rgba(124,90,255,0.18),
    inset 0 1px 0 rgba(255,255,255,0.10) !important;
  transform: translateY(-1px) !important;
}
.extra-check.checked-on::before {
  border-color: transparent !important;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 8' fill='none'%3E%3Cpath d='M1 4l2.5 2.5L9 1' stroke='%23ffffff' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/58% no-repeat,
    linear-gradient(135deg, #7c5aff 0%, #38b6ff 100%) !important;
  box-shadow: 0 0 14px rgba(124,90,255,0.65) !important;
  transform: scale(1.18) !important;
}
.extra-check.checked-on span {
  color: rgba(255,255,255,0.94) !important;
  font-weight: 600 !important;
}

/* ═══════════════════════════════════
   LIGHT MODE
═══════════════════════════════════ */
body.light-mode .extra-check {
  border-color: rgba(0,0,0,0.14) !important;
  background: rgba(255,255,255,0.85) !important;
}
body.light-mode .extra-check::before {
  border-color: rgba(0,0,0,0.32) !important;
}
body.light-mode .extra-check span {
  color: rgba(20,18,35,0.82) !important;
}

body.light-mode .extra-check:hover {
  border-color: rgba(124,90,255,0.45) !important;
  background: rgba(124,90,255,0.07) !important;
  box-shadow: 0 4px 16px rgba(124,90,255,0.10) !important;
}
body.light-mode .extra-check:hover span {
  color: rgba(0,0,0,0.75) !important;
}
body.light-mode .extra-check:hover::before {
  border-color: rgba(124,90,255,0.6) !important;
}

body.light-mode .extra-check:has(input:checked) {
  border-color: rgba(124,90,255,0.55) !important;
  background: linear-gradient(135deg,
    rgba(124,90,255,0.11) 0%,
    rgba(56,182,255,0.06) 100%) !important;
  box-shadow:
    0 0 0 1px rgba(124,90,255,0.18),
    0 0 18px rgba(124,90,255,0.09),
    inset 0 1px 0 rgba(255,255,255,0.85) !important;
}
body.light-mode .extra-check:has(input:checked) span {
  color: rgba(0,0,0,0.85) !important;
}

body.light-mode .extra-check.bot-default {
  background: linear-gradient(135deg,
    rgba(200,163,90,0.11) 0%,
    rgba(200,163,90,0.04) 100%) !important;
  border-color: rgba(200,163,90,0.48) !important;
}
body.light-mode .extra-check.bot-default span {
  color: rgba(0,0,0,0.80) !important;
}

body.light-mode .extra-check.checked-on {
  border-color: rgba(124,90,255,0.55) !important;
  background: linear-gradient(135deg,
    rgba(124,90,255,0.11) 0%,
    rgba(56,182,255,0.06) 100%) !important;
}
body.light-mode .extra-check.checked-on span {
  color: rgba(0,0,0,0.85) !important;
}


/* ═══════════════════════════════════════════════════════════
   RANGE SLIDERS — Liquid Glass 2027
   Не трогаем JS: daysFill.style.background и state-on/state-hot
   живут как есть. Переделываем только визуал.
═══════════════════════════════════════════════════════════ */

/* ── Трек: тонкая стеклянная полоска ── */
input[type=range] {
  -webkit-appearance: none !important;
  appearance: none !important;
  width: 100% !important;
  height: 6px !important;
  border-radius: 99px !important;
  outline: none !important;
  cursor: pointer !important;
  background: rgba(255,255,255,0.08) !important;
  border: 1px solid rgba(255,255,255,0.10) !important;
  position: relative !important;
  z-index: 1 !important;
  box-shadow: inset 0 1px 3px rgba(0,0,0,0.35) !important;
  transition: background 0.2s ease !important;
}
input[type=range]:hover {
  background: rgba(255,255,255,0.11) !important;
}

/* webkit track */
input[type=range]::-webkit-slider-runnable-track {
  height: 6px !important;
  border-radius: 99px !important;
  background: transparent !important;
}

/* moz track */
input[type=range]::-moz-range-track {
  height: 6px !important;
  border-radius: 99px !important;
  background: rgba(255,255,255,0.08) !important;
  border: 1px solid rgba(255,255,255,0.10) !important;
  box-shadow: inset 0 1px 3px rgba(0,0,0,0.35) !important;
}

/* ── Fill полоска (абсолютный div, управляется JS) ── */
.range-fill {
  height: 6px !important;
  border-radius: 99px !important;
  /* background задаётся через JS — не переопределяем */
  box-shadow:
    0 0 8px rgba(200,163,90,0.45),
    0 0 16px rgba(200,163,90,0.18) !important;
  transition: width 0.12s ease, background 0.3s ease, box-shadow 0.3s ease !important;
}

/* ── THUMB — webkit ── */
input[type=range]::-webkit-slider-thumb {
  -webkit-appearance: none !important;
  appearance: none !important;
  width: 22px !important;
  height: 22px !important;
  border-radius: 50% !important;
  margin-top: -8px !important;
  /* Стекло: тонкий border + blur эффект через box-shadow */
  background: linear-gradient(135deg,
    rgba(255,255,255,0.92) 0%,
    rgba(255,255,255,0.72) 100%) !important;
  border: 1.5px solid rgba(255,255,255,0.55) !important;
  box-shadow:
    0 0 0 3px rgba(200,163,90,0.25),
    0 0 12px rgba(200,163,90,0.45),
    0 0 24px rgba(200,163,90,0.18),
    0 2px 8px rgba(0,0,0,0.45),
    inset 0 1px 0 rgba(255,255,255,0.95) !important;
  cursor: pointer !important;
  position: relative !important;
  z-index: 3 !important;
  transition:
    transform 0.2s cubic-bezier(0.34,1.56,0.64,1),
    box-shadow 0.2s ease !important;
}
input[type=range]::-webkit-slider-thumb:hover {
  transform: scale(1.18) !important;
  box-shadow:
    0 0 0 4px rgba(200,163,90,0.32),
    0 0 18px rgba(200,163,90,0.60),
    0 0 36px rgba(200,163,90,0.22),
    0 2px 12px rgba(0,0,0,0.50),
    inset 0 1px 0 rgba(255,255,255,0.95) !important;
}
input[type=range]:active::-webkit-slider-thumb {
  transform: scale(0.94) !important;
  box-shadow:
    0 0 0 5px rgba(200,163,90,0.38),
    0 0 22px rgba(200,163,90,0.65),
    0 2px 6px rgba(0,0,0,0.40),
    inset 0 1px 0 rgba(255,255,255,0.90) !important;
}

/* ── THUMB — moz ── */
input[type=range]::-moz-range-thumb {
  width: 22px !important;
  height: 22px !important;
  border-radius: 50% !important;
  background: linear-gradient(135deg,
    rgba(255,255,255,0.92) 0%,
    rgba(255,255,255,0.72) 100%) !important;
  border: 1.5px solid rgba(255,255,255,0.55) !important;
  box-shadow:
    0 0 0 3px rgba(200,163,90,0.25),
    0 0 12px rgba(200,163,90,0.45),
    0 2px 8px rgba(0,0,0,0.45),
    inset 0 1px 0 rgba(255,255,255,0.95) !important;
  cursor: pointer !important;
  transition: transform 0.2s cubic-bezier(0.34,1.56,0.64,1) !important;
}
input[type=range]::-moz-range-thumb:hover {
  transform: scale(1.18) !important;
}

/* ── Когда ползунок "горячий" (быстрее оптимума) — red glow ── */
/* JS меняет background daysFill на red gradient,
   thumb синхронно меняем через смежный селектор на родителе */
.range-optimal-wrap:has(#days.state-hot) input[type=range]::-webkit-slider-thumb,
.range-hot input[type=range]::-webkit-slider-thumb {
  box-shadow:
    0 0 0 3px rgba(248,113,113,0.28),
    0 0 14px rgba(248,113,113,0.50),
    0 0 28px rgba(248,113,113,0.20),
    0 2px 8px rgba(0,0,0,0.45),
    inset 0 1px 0 rgba(255,255,255,0.90) !important;
}

/* ── Optimal label — усиливаем читаемость ── */
.range-optimal-label {
  font-size: 10px !important;
  font-weight: 900 !important;
  letter-spacing: 0.06em !important;
  text-shadow: 0 0 8px rgba(var(--gold-rgb, 200,163,90), 0.4) !important;
  /* gradient-text живёт в оригинале — не переопределяем color */
}

/* state-on: пульсирует зелёным — добавляем glow */
.range-optimal-label.state-on {
  text-shadow:
    0 0 10px rgba(52,211,153,0.6),
    0 0 20px rgba(52,211,153,0.3) !important;
  filter: drop-shadow(0 0 4px rgba(52,211,153,0.4)) !important;
}

/* state-hot: красный glow */
.range-optimal-label.state-hot {
  text-shadow:
    0 0 10px rgba(248,113,113,0.6),
    0 0 20px rgba(248,113,113,0.3) !important;
  filter: drop-shadow(0 0 4px rgba(248,113,113,0.4)) !important;
}

/* ── Fill glow синхронизация с состоянием ── */
/* Когда JS ставит красный градиент на daysFill,
   мы добавим red glow через смежный подход — class на wrapper */
.range-fill.is-hot {
  box-shadow:
    0 0 8px rgba(248,113,113,0.5),
    0 0 18px rgba(248,113,113,0.22) !important;
}

/* ── LIGHT MODE ── */
body.light-mode input[type=range] {
  background: rgba(0,0,0,0.07) !important;
  border-color: rgba(0,0,0,0.08) !important;
  box-shadow: inset 0 1px 2px rgba(0,0,0,0.10) !important;
}
body.light-mode input[type=range]::-moz-range-track {
  background: rgba(0,0,0,0.07) !important;
  border-color: rgba(0,0,0,0.08) !important;
}
body.light-mode input[type=range]::-webkit-slider-thumb {
  background: linear-gradient(135deg, #fff 0%, #f0f0f6 100%) !important;
  border-color: rgba(0,0,0,0.12) !important;
  box-shadow:
    0 0 0 3px rgba(124,90,255,0.18),
    0 0 12px rgba(124,90,255,0.28),
    0 2px 8px rgba(0,0,0,0.18),
    inset 0 1px 0 rgba(255,255,255,1) !important;
}
body.light-mode input[type=range]::-webkit-slider-thumb:hover {
  box-shadow:
    0 0 0 4px rgba(124,90,255,0.25),
    0 0 18px rgba(124,90,255,0.40),
    0 2px 10px rgba(0,0,0,0.20),
    inset 0 1px 0 rgba(255,255,255,1) !important;
}
body.light-mode input[type=range]::-moz-range-thumb {
  background: linear-gradient(135deg, #fff 0%, #f0f0f6 100%) !important;
  border-color: rgba(0,0,0,0.12) !important;
  box-shadow:
    0 0 0 3px rgba(124,90,255,0.18),
    0 0 12px rgba(124,90,255,0.28),
    0 2px 8px rgba(0,0,0,0.18) !important;
}
body.light-mode .range-fill {
  box-shadow:
    0 0 8px rgba(124,90,255,0.35),
    0 0 16px rgba(124,90,255,0.15) !important;
}
