﻿/* =========================================================
   Pelowin Design System — Black/Red/Grey/White/Yellow
   WCAG AA contrast guaranteed in both dark and light modes
   ========================================================= */

/* ---- Dark mode tokens (default) ---- */
[data-bs-theme="dark"] {
  --pelowin-primary:       #ef5350;
  --pelowin-primary-dark:  #b71c1c;
  --pelowin-primary-hover: #f44336;
  --pelowin-gold:          #fdd835;
  --pelowin-gold-hover:    #ffee58;
  --bs-primary:            #ef5350;
  --bs-primary-rgb:        239, 83, 80;
}

/* ---- Light mode tokens ---- */
[data-bs-theme="light"] {
  --pelowin-primary:       #c62828;
  --pelowin-primary-dark:  #7f0000;
  --pelowin-primary-hover: #b71c1c;
  --pelowin-gold:          #e65100;
  --pelowin-gold-hover:    #bf360c;
  --bs-primary:            #c62828;
  --bs-primary-rgb:        198, 40, 40;
}

/* =========================================================
   Global: prevent horizontal overflow on mobile
   ========================================================= */
html, body {
  max-width: 100%;
  overflow-x: hidden;
}

/* =========================================================
   Sticky header
   ========================================================= */
.site-header {
  position: sticky;
  top: 3px;
  z-index: 1040;
  background: var(--bs-body-bg);
}
.timezone-bar {
  background: #1a1a1a;
  color: #fff;
  font-size: 0.85rem;
  padding: 4px 0;
}
[data-bs-theme="light"] .timezone-bar { background: #111111; }
.timezone-bar .current-time {
  font-weight: 700;
  letter-spacing: 0.5px;
  color: var(--pelowin-gold);
}
[data-bs-theme="light"] .timezone-bar .current-time { color: #fdd835; }
.timezone-bar select {
  background: #2e2e2e;
  color: #fff;
  border: 1px solid #444;
  border-radius: 4px;
  padding: 2px 6px;
  font-size: 0.8rem;
}
.site-header .navbar {
  background: var(--bs-body-bg);
  border-bottom: 2px solid var(--pelowin-primary);
  box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}
.brand-sub { font-size: 0.7em; }
.navbar-brand i { color: var(--pelowin-primary) !important; }

/* =========================================================
   Scroll progress bar
   ========================================================= */
#scrollProgress {
  position: fixed; top: 0; left: 0; right: 0;
  height: 3px; z-index: 2000; pointer-events: none;
}
#scrollProgressBar {
  display: block; height: 100%; width: 0;
  background: linear-gradient(90deg, var(--pelowin-primary), var(--pelowin-gold));
  transition: width 0.1s linear;
}

/* =========================================================
   Page loader
   ========================================================= */
#pageLoader {
  position: fixed; inset: 0; z-index: 2500;
  display: flex; align-items: center; justify-content: center;
  background: var(--bs-body-bg); opacity: 1; transition: opacity 0.3s ease;
  animation: pelowin-loader-autohide 0.4s ease 3s forwards;
}
@keyframes pelowin-loader-autohide { to { opacity: 0; visibility: hidden; } }
#pageLoader.loaded { opacity: 0; pointer-events: none; }
#pageLoader .page-loader-inner { text-align: center; }
#pageLoader .spinner-border { color: var(--pelowin-primary) !important; }
#pageLoader .page-loader-text { font-size: 0.85rem; color: var(--bs-secondary-color); letter-spacing: 0.03em; }

/* =========================================================
   Back to top button
   ========================================================= */
.back-to-top {
  position: fixed; left: 1rem; bottom: 1rem; z-index: 1045;
  width: 44px; height: 44px;
  border: 2px solid var(--pelowin-primary);
  border-radius: 50%; background: var(--bs-body-bg);
  color: var(--pelowin-primary);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 4px 12px rgba(0,0,0,0.25);
  opacity: 0; visibility: hidden; transform: translateY(12px);
  transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s ease,
              background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.back-to-top.show { opacity: 1; visibility: visible; transform: translateY(0); }
.back-to-top:hover { background: var(--pelowin-primary); border-color: var(--pelowin-primary); color: #fff; transform: translateY(-2px); }
@media (max-width: 768px) { .back-to-top { left: 0.75rem; bottom: 0.75rem; width: 40px; height: 40px; } }

/* =========================================================
   Page sidebar
   ========================================================= */
.page-sidebar {
  position: fixed; left: 0; top: 0; bottom: 0; width: 48px;
  background: var(--bs-body-bg);
  border-right: 2px solid var(--bs-border-color);
  z-index: 1050; transition: width 0.15s; overflow: hidden; padding-top: 90px;
}
.page-sidebar:hover { width: 200px; border-right-color: var(--pelowin-primary); }
.page-sidebar .sidebar-label { display: none; margin-left: 8px; white-space: nowrap; }
.page-sidebar:hover .sidebar-label { display: inline; }
.page-sidebar a {
  display: flex; align-items: center; padding: 10px 14px;
  color: var(--bs-body-color); text-decoration: none;
  font-size: 0.85rem; white-space: nowrap;
  transition: background-color 0.15s ease, color 0.15s ease;
}
.page-sidebar a:hover { background: rgba(239,83,80,0.1); color: var(--pelowin-primary); }
.page-sidebar a i { width: 20px; text-align: center; flex-shrink: 0; }
.main-content { margin-left: 48px; }
@media (max-width: 768px) { .main-content { margin-left: 0; } .page-sidebar { display: none; } }

/* =========================================================
   Mobile off-canvas menu
   ========================================================= */
.mobile-menu { max-width: 320px; }
.mobile-nav-link {
  display: flex; align-items: center; width: 100%;
  padding: 0.85rem 0.75rem; margin-bottom: 0.25rem;
  border-radius: 0.5rem; color: var(--bs-body-color);
  text-decoration: none; font-weight: 500; font-size: 0.95rem;
  transition: background-color 0.15s ease, color 0.15s ease, transform 0.15s ease;
}
.mobile-nav-link:hover { background: rgba(239,83,80,0.1); color: var(--pelowin-primary); transform: translateX(2px); }
.mobile-nav-link i { width: 22px; text-align: center; flex-shrink: 0; }

/* =========================================================
   Global button / link hover and focus
   ========================================================= */
.btn {
  transition: transform 0.15s ease, box-shadow 0.15s ease,
              background-color 0.15s ease, border-color 0.15s ease,
              color 0.15s ease, filter 0.15s ease;
}
.btn:hover:not(:disabled):not(.disabled) { transform: translateY(-1px); filter: brightness(1.06); }
.btn:active:not(:disabled):not(.disabled) { transform: translateY(0); filter: none; }
.btn:disabled, .btn.disabled { transform: none; filter: none; }
.btn:focus-visible,
.nav-link:focus-visible,
.navbar-toggler:focus-visible,
.back-to-top:focus-visible,
.mobile-nav-link:focus-visible,
.password-toggle:focus-visible {
  outline: 2px solid var(--pelowin-gold);
  outline-offset: 2px;
}

/* Primary red button */
.btn-primary {
  background-color: var(--pelowin-primary) !important;
  border-color: var(--pelowin-primary) !important;
  color: #fff !important;
}
.btn-primary:hover {
  background-color: var(--pelowin-primary-hover) !important;
  border-color: var(--pelowin-primary-hover) !important;
}
/* Warning / gold button */
.btn-warning {
  background-color: var(--pelowin-gold) !important;
  border-color: var(--pelowin-gold) !important;
  color: #000 !important;
}
.btn-warning:hover {
  background-color: var(--pelowin-gold-hover, var(--pelowin-gold)) !important;
  border-color: var(--pelowin-gold-hover, var(--pelowin-gold)) !important;
  color: #000 !important;
}
/* Outline primary */
.btn-outline-primary { color: var(--pelowin-primary) !important; border-color: var(--pelowin-primary) !important; }
.btn-outline-primary:hover { background-color: var(--pelowin-primary) !important; color: #fff !important; }

/* Navbar nav-link underline */
.navbar .nav-link { position: relative; transition: color 0.15s ease; }
.navbar .nav-link:not(.btn)::after {
  content: ""; position: absolute;
  left: 0.5rem; right: 0.5rem; bottom: 0.1rem;
  height: 2px; background: var(--pelowin-primary); border-radius: 2px;
  transform: scaleX(0); transform-origin: left; transition: transform 0.2s ease;
}
.navbar .nav-link:not(.btn):hover::after,
.navbar .nav-link:not(.btn).active::after { transform: scaleX(1); }
.navbar-toggler { transition: transform 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease; }
.navbar-toggler:hover { transform: rotate(90deg); }
.detail-toggle { transition: background-color 0.15s ease, color 0.15s ease, transform 0.15s ease; }
.detail-toggle:hover { transform: translateY(-1px); }

/* =========================================================
   Password visibility toggle
   ========================================================= */
.password-wrap { position: relative; }
.password-wrap .password-input { padding-right: 2.75rem; }
.password-toggle {
  position: absolute; right: 0.85rem; top: 50%; transform: translateY(-50%);
  border: 0; background: transparent; color: var(--bs-secondary-color);
  padding: 0.25rem; line-height: 1; transition: color 0.15s ease;
}
.password-toggle:hover { color: var(--pelowin-primary); }

/* Loading state */
.btn.is-loading { opacity: 0.85; pointer-events: none; }

/* =========================================================
   Entrance animations
   ========================================================= */
main { animation: pelowin-page-in 0.35s ease both; }
@keyframes pelowin-page-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.fixture-col { animation: pelowin-fade-in-up 0.45s ease both; }
.fixture-col:nth-child(1) { animation-delay: 0.03s; }
.fixture-col:nth-child(2) { animation-delay: 0.06s; }
.fixture-col:nth-child(3) { animation-delay: 0.09s; }
.fixture-col:nth-child(4) { animation-delay: 0.12s; }
.fixture-col:nth-child(5) { animation-delay: 0.15s; }
.fixture-col:nth-child(6) { animation-delay: 0.18s; }
.fixture-col:nth-child(7) { animation-delay: 0.21s; }
.fixture-col:nth-child(8) { animation-delay: 0.24s; }
.fixture-col:nth-child(9) { animation-delay: 0.27s; }
@keyframes pelowin-fade-in-up { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .btn, .nav-link, .navbar-toggler, .detail-toggle, .back-to-top,
  .mobile-nav-link, .page-sidebar, .prediction-card, .plan-card,
  #pageLoader, #scrollProgressBar { transition: none !important; animation: none !important; }
  main, .fixture-col { animation: none !important; }
  #pageLoader { display: none; }
}

/* =========================================================
   Live match
   ========================================================= */
.border-live { border: 2px solid var(--pelowin-primary) !important; animation: live-glow 1.5s ease-in-out infinite alternate; }
@keyframes live-glow { from { box-shadow: 0 0 4px rgba(239,83,80,0.4); } to { box-shadow: 0 0 14px rgba(239,83,80,0.85); } }
.live-badge { animation: badge-pulse 1s ease-in-out infinite alternate; }
@keyframes badge-pulse { from { opacity: 0.8; } to { opacity: 1; } }

/* =========================================================
   Premium blur / overlay
   ========================================================= */
.premium-blur { filter: blur(8px); pointer-events: none; user-select: none; position: relative; }
.premium-overlay {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0,0,0,0.65); color: white; z-index: 10;
  border-radius: 0.5rem; text-align: center; padding: 1rem;
}

/* =========================================================
   Admin Pick badge
   ========================================================= */
.admin-pick { border: 2px solid var(--pelowin-gold) !important; position: relative; }
.admin-pick::before {
  content: 'ADMIN PICK'; position: absolute; top: -10px; right: 10px;
  background: var(--pelowin-gold); color: #000;
  padding: 2px 8px; border-radius: 4px; font-size: 0.7rem; font-weight: bold;
}

/* =========================================================
   Prediction card + results
   ========================================================= */
.confidence-badge { font-size: 0.85rem; }
.prediction-card { transition: transform 0.2s; }
.prediction-card:hover { transform: translateY(-2px); }
.result-won  { color: #4ade80; font-weight: bold; }
.result-lost { color: var(--pelowin-primary); }
[data-bs-theme="light"] .result-won  { color: #16a34a; }
[data-bs-theme="light"] .result-lost { color: var(--pelowin-primary); }

/* =========================================================
   Encouragement / announcement banner
   ========================================================= */
.encouragement-banner {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 999;
  padding: 10px; text-align: center;
  background: linear-gradient(90deg, var(--pelowin-primary), #7f0000);
  color: white; font-weight: 500;
}

/* =========================================================
   Hero section
   ========================================================= */
.hero-section { padding: 3rem 0; text-align: center; }

/* =========================================================
   Betslip card
   ========================================================= */
.betslip-card {
  background: linear-gradient(135deg, #1a0000, #2d0404);
  color: white; border-radius: 12px; border: 1px solid var(--pelowin-primary);
}
[data-bs-theme="light"] .betslip-card {
  background: linear-gradient(135deg, #fff5f5, #ffe4e4);
  color: #111; border-color: var(--pelowin-primary);
}

/* =========================================================
   Pricing plan cards
   ========================================================= */
.plan-card { position: relative; border-radius: 1rem; transition: transform 0.2s ease, box-shadow 0.2s ease; }
.plan-card:hover { transform: translateY(-4px); box-shadow: 0 0.75rem 1.5rem rgba(0,0,0,0.18); }
.plan-card-featured { border: 2px solid var(--pelowin-gold) !important; }
.plan-ribbon {
  position: absolute; top: -12px; right: 14px;
  background: var(--pelowin-gold); color: #000;
  font-size: 0.7rem; font-weight: 700; letter-spacing: 0.03em;
  padding: 4px 12px; border-radius: 999px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.25); z-index: 2;
}

/* Guide steps */
.step-chip {
  width: 32px; height: 32px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%; font-weight: 700; font-size: 0.9rem; flex-shrink: 0;
  background: var(--pelowin-primary); color: #fff;
}

/* =========================================================
   Promo banner — responsive
   ========================================================= */
.promo-wrap { width: 100%; max-width: 760px; overflow: hidden; }
.promo-frame { width: 100%; max-width: 100%; height: 560px; border: 0; border-radius: 1rem; display: block; box-sizing: border-box; }
@media (max-width: 991.98px) { .promo-frame { height: 460px; } }
@media (max-width: 575.98px) { .promo-frame { height: 360px; } }

/* =========================================================
   Final-day trial warning banner
   ========================================================= */
.trial-final-banner {
  background: linear-gradient(90deg, #7f0000, var(--pelowin-primary));
  color: #fff; border-bottom: 2px solid rgba(0,0,0,0.25);
  font-size: 0.95rem; z-index: 1090;
}

/* =========================================================
   Responsive table overflow helper
   ========================================================= */
.table-responsive-x { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* WhatsApp float */
.whatsapp-btn {
  position: fixed; bottom: 20px; right: 20px; z-index: 1000;
  border-radius: 50%; width: 56px; height: 56px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.5rem; box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}