/* ============================================================
   theme.css — GymBI by Statvo
   PURPOSE: Dark/light mode toggle system and accent color
   customisation. Body gets data-theme="light" attribute via JS
   to switch modes. Accent color updates via CSS variable.
   ============================================================ */

/* ------------------------------------------------------------
   LIGHT MODE OVERRIDES
   Applied when <body data-theme="light"> is set by theme toggle.
   All values override the dark defaults from base.css.
   ------------------------------------------------------------ */
[data-theme="light"] {
  /* Background layers — white/light grays */
  --bg-0: #F0F4FB;
  --bg-1: #FFFFFF;
  --bg-2: #F5F7FC;
  --bg-3: #E8EDF5;

  /* Glass layers — white-tinted */
  --glass-1: rgba(255, 255, 255, 0.55);
  --glass-2: rgba(255, 255, 255, 0.75);
  --glass-3: rgba(255, 255, 255, 0.92);
  --glass-border: rgba(0, 0, 0, 0.07);
  --glass-border-bright: rgba(0, 0, 0, 0.12);

  /* Text colors — dark on light */
  --text-primary: #0D1117;
  --text-secondary: #4B5568;
  --text-muted: #9CA3AF;

  /* Shadows — softer in light mode */
  --shadow-sm: 0 1px 4px rgba(0,0,0,0.08);
  --shadow-md: 0 4px 16px rgba(0,0,0,0.10);
  --shadow-lg: 0 8px 32px rgba(0,0,0,0.12);
  --shadow-inset: inset 0 1px 0 rgba(255,255,255,0.8);
}

/* Light mode card highlight (top edge reflects downward light) */
[data-theme="light"] .card::before {
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.9), transparent);
}

/* Light mode scrollbar */
[data-theme="light"] .scroll-y {
  scrollbar-color: rgba(0,0,0,0.15) transparent;
}

/* Light mode nav item hover */
[data-theme="light"] .nav-item:hover {
  background: rgba(0,0,0,0.04);
}

/* Light mode sidebar */
[data-theme="light"] #sidebar {
  background: rgba(255,255,255,0.85);
}

/* Light mode topbar/mobile topbar */
[data-theme="light"] #topbar,
[data-theme="light"] #mobile-topbar {
  background: rgba(255,255,255,0.85);
}

/* Light mode bottom nav */
[data-theme="light"] #bottom-nav {
  background: rgba(255,255,255,0.95);
}

/* Light mode input */
[data-theme="light"] .input {
  background: rgba(0,0,0,0.03);
  border-color: rgba(0,0,0,0.1);
}

/* Light mode button-ghost */
[data-theme="light"] .btn-ghost {
  background: rgba(0,0,0,0.04);
  border-color: rgba(0,0,0,0.12);
}

/* Light mode search bar */
[data-theme="light"] .search-bar {
  background: rgba(0,0,0,0.04);
  border-color: rgba(0,0,0,0.1);
}

/* Light mode skeleton */
[data-theme="light"] .skeleton {
  background: linear-gradient(90deg, #E8EDF5 25%, #D1D9E6 50%, #E8EDF5 75%);
  background-size: 200% 100%;
}

/* Light mode toast */
[data-theme="light"] .toast {
  background: rgba(255,255,255,0.95);
  box-shadow: 0 4px 24px rgba(0,0,0,0.12);
}

/* Light mode tabs */
[data-theme="light"] .tabs {
  background: rgba(0,0,0,0.05);
}
[data-theme="light"] .tab.active {
  background: rgba(255,255,255,0.9);
}

/* Light mode loading screen */
[data-theme="light"] .loading-screen {
  background: var(--bg-0);
}

/* ------------------------------------------------------------
   ACCENT COLOR SYSTEM
   --accent is set to owner's chosen hex via JS.
   All these values auto-derive from --accent.
   Fallback = GymBI default green (#00C896).
   ------------------------------------------------------------ */

/* Accent-derived utility classes */
.accent-bg   { background-color: var(--accent); }
.accent-text { color: var(--accent); }
.accent-border { border-color: var(--accent); }

/* Accent glow effect — used on primary buttons and active elements */
.accent-glow {
  box-shadow: 0 0 20px var(--accent-glow);
}

/* Accent gradient — used for premium/pro features */
.accent-gradient {
  background: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 60%, #0066FF));
}

/* ------------------------------------------------------------
   THEME TOGGLE BUTTON ICONS
   Sun icon in dark mode (click = go light)
   Moon icon in light mode (click = go dark)
   ------------------------------------------------------------ */
#theme-toggle .icon-sun  { display: none; }
#theme-toggle .icon-moon { display: block; }

[data-theme="light"] #theme-toggle .icon-sun  { display: block; }
[data-theme="light"] #theme-toggle .icon-moon { display: none; }

/* ------------------------------------------------------------
   PLAN TIER VISUAL STYLING
   Visual differences between free and pro tier UI.
   ------------------------------------------------------------ */

/* PRO-only feature lock overlay */
.pro-lock {
  position: relative;
}
.pro-lock::after {
  content: '🔒 PRO';
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.6);
  backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--text-xs);
  font-weight: 800;
  letter-spacing: 0.1em;
  color: var(--accent);
  border-radius: inherit;
  pointer-events: none;
}

/* Upgrade prompt banner */
.upgrade-banner {
  background: linear-gradient(135deg, rgba(0,200,150,0.1), rgba(0,102,255,0.08));
  border: 1px solid rgba(0,200,150,0.25);
  border-radius: var(--radius-lg);
  padding: var(--sp-5) var(--sp-6);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
}

.upgrade-banner-text .h3 {
  color: var(--accent);
}

/* Ad placeholder — shown on free tier */
.ad-slot {
  background: var(--glass-1);
  border: 1px dashed var(--glass-border);
  border-radius: var(--radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-muted);
  font-size: var(--text-xs);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  min-height: 80px;
}

/* ------------------------------------------------------------
   SMOOTH THEME TRANSITION
   Animate color changes when toggling dark/light mode.
   Excludes transitions that would be jarring (borders, shadows).
   ------------------------------------------------------------ */
*, *::before, *::after {
  transition-property: background-color, color, border-color, backdrop-filter;
  transition-duration: 300ms;
  transition-timing-function: ease;
}

/* But don't let this break element-specific transitions */
.btn, .nav-item, .card, .input, .tab, .toast, .modal {
  transition: all var(--transition-fast);
}

/* ------------------------------------------------------------
   REDUCED MOTION — Accessibility
   Disables animations for users who prefer no motion.
   ------------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  html { scroll-behavior: auto; }
}

/* ------------------------------------------------------------
   PRINT STYLES
   Used when printing receipts — strips chrome, shows only content.
   ------------------------------------------------------------ */
@media print {
  #sidebar, #topbar, #bottom-nav, #mobile-topbar,
  .fab, #toast-container, .btn-ghost, .modal-close {
    display: none !important;
  }

  #main-content {
    margin: 0 !important;
    padding: 0 !important;
  }

  body {
    background: white !important;
    color: black !important;
  }

  .card {
    background: white !important;
    border: 1px solid #ddd !important;
    box-shadow: none !important;
  }
}
