/* ================================================================
   LaliMath — Global Theme System
   4 themes: candy | space | jungle | arcade
   Applied via:  data-theme="X"  on <html>

   HOW TO ADD A NEW THEME:
     1. Add a [data-theme="newname"] block below with all --mt-* vars
     2. Add one entry to the THEMES array in themes.js
   That's it — no other files need changing.
   ================================================================ */

/* ── Shared tokens (not theme-specific) ─────────────────────── */
:root {
  --text-xs:   clamp(0.75rem,  0.7rem  + 0.25vw, 0.875rem);
  --text-sm:   clamp(0.875rem, 0.8rem  + 0.35vw, 1rem);
  --text-base: clamp(1rem,     0.95rem + 0.25vw, 1.125rem);
  --text-lg:   clamp(1.125rem, 1rem    + 0.75vw, 1.5rem);
  --text-xl:   clamp(1.5rem,   1.2rem  + 1.25vw, 2.25rem);
  --text-2xl:  clamp(2rem,     1.2rem  + 2.5vw,  3.5rem);

  --space-1: 0.25rem;  --space-2: 0.5rem;   --space-3: 0.75rem;
  --space-4: 1rem;     --space-5: 1.25rem;  --space-6: 1.5rem;
  --space-8: 2rem;     --space-10: 2.5rem;  --space-12: 3rem;
  --space-16: 4rem;

  --radius-sm: 0.5rem;  --radius-md: 0.75rem;
  --radius-lg: 1rem;    --radius-xl: 1.5rem;
  --radius-full: 9999px;

  --transition-interactive: 180ms cubic-bezier(0.16, 1, 0.3, 1);
  --content-default: 1200px;
}

/* ================================================================
   THEME: candy  (Candy Pop — default)
   ================================================================ */
:root,
[data-theme="candy"] {
  /* ── Core palette ── */
  --mt-bg:            #f5f3ff;
  --mt-surface:       #ffffff;
  --mt-surface2:      #ede9fe;
  --mt-border:        #ddd6fe;
  --mt-divider:       #e5e0fd;
  --mt-primary:       #6d28d9;
  --mt-primary-h:     #5b21b6;
  --mt-primary-act:   #4c1d95;
  --mt-primary-light: #ede9fe;
  --mt-accent:        #fbbf24;
  --mt-text:          #1e1b4b;
  --mt-text-muted:    #6b6b99;
  --mt-text-faint:    #a5b4fc;
  --mt-text-inverse:  #ffffff;
  /* ── Feedback ── */
  --mt-correct:       #10b981;
  --mt-wrong:         #ef4444;
  /* ── Op colors ── */
  --mt-add:  #10b981;
  --mt-sub:  #3b82f6;
  --mt-mul:  #f59e0b;
  --mt-div:  #ec4899;
  --mt-mix:  #6d28d9;
  /* ── Chips (numpad keys) ── */
  --mt-chip-1: #fce7f3; --mt-chip-1-t: #9d174d;
  --mt-chip-2: #d1fae5; --mt-chip-2-t: #065f46;
  --mt-chip-3: #fef3c7; --mt-chip-3-t: #92400e;
  --mt-chip-0: #ede9fe; --mt-chip-0-t: #5b21b6;
  /* ── Progress bar ── */
  --mt-progress-a: #a78bfa;
  --mt-progress-b: #6d28d9;
  /* ── Header ── */
  --mt-header-bg:     #ffffff;
  --mt-header-border: #e5e7eb;
  /* ── Typography ── */
  --mt-font:     'Nunito', sans-serif;
  --mt-font-num: 'Chillax', 'Nunito', sans-serif;
  /* ── Shape ── */
  --mt-radius:   20px;
  /* ── Tabs ── */
  --mt-tab-bg:     #ede9fe;
  --mt-tab-active: #6d28d9;
  --mt-tab-col:    #fff;
  /* ── Quiz card ── */
  --mt-q-card-bg:     #ffffff;
  --mt-q-card-border: 3px solid #6d28d9;
  --mt-q-shadow:      0 8px 40px rgba(109,40,217,0.18);
  --mt-q-color:       #1e1b4b;
  /* ── Button ── */
  --mt-btn-bg:    #6d28d9;
  --mt-btn-color: #fff;
  /* ── Stats ── */
  --mt-stat-color:   #6d28d9;
  --mt-streak-color: #f59e0b;
  /* ── Times table ── */
  --mt-table-head:        #6d28d9;
  --mt-table-head-corner: #4c1d95;
  --mt-table-cell:        #ffffff;
  --mt-table-hl-row:      #f5f3ff;
  --mt-table-hl-col:      #f5f3ff;
  --mt-table-hl:          #7c3aed;
  --mt-table-hover:       #ede9fe;
  /* ── FX ── */
  --mt-glow:    none;
  --mt-shadows: 0 4px 16px rgba(109,40,217,0.10);
  /* ── Hero gradient ── */
  --mt-hero-a: #1e1b4b;
  --mt-hero-b: #4c1d95;
  --mt-hero-c: #6d28d9;

  /* ── Bridge to style.css --color-* vars ── */
  --font-display: var(--mt-font-num);
  --font-body:    var(--mt-font);
  --color-bg:             var(--mt-bg);
  --color-surface:        var(--mt-surface);
  --color-surface-2:      var(--mt-surface2);
  --color-surface-offset: var(--mt-surface2);
  --color-border:         var(--mt-border);
  --color-divider:        var(--mt-divider);
  --color-text:           var(--mt-text);
  --color-text-muted:     var(--mt-text-muted);
  --color-text-faint:     var(--mt-text-faint);
  --color-text-inverse:   var(--mt-text-inverse);
  --color-primary:        var(--mt-primary);
  --color-primary-hover:  var(--mt-primary-h);
  --color-primary-active: var(--mt-primary-act);
  --color-primary-light:  var(--mt-primary-light);
  --color-add: var(--mt-add);
  --color-sub: var(--mt-sub);
  --color-mul: var(--mt-mul);
  --color-div: var(--mt-div);
  --color-mix: var(--mt-mix);
  --shadow-sm: 0 1px 3px rgba(109,40,217,0.08);
  --shadow-md: var(--mt-shadows);
  --shadow-lg: 0 12px 40px rgba(109,40,217,0.14);
}

/* ================================================================
   THEME: space  (Space Mission)
   ================================================================ */
[data-theme="space"] {
  --mt-bg:            #0d0b1e;
  --mt-surface:       #161230;
  --mt-surface2:      #1e1845;
  --mt-border:        #2e2860;
  --mt-divider:       #2a254e;
  --mt-primary:       #7c3aed;
  --mt-primary-h:     #a78bfa;
  --mt-primary-act:   #c4b5fd;
  --mt-primary-light: #1e1845;
  --mt-accent:        #22d3ee;
  --mt-text:          #e0e7ff;
  --mt-text-muted:    #a5b4fc;
  --mt-text-faint:    #4c4880;
  --mt-text-inverse:  #0d0b1e;
  --mt-correct:       #34d399;
  --mt-wrong:         #f87171;
  --mt-add:  #34d399;
  --mt-sub:  #60a5fa;
  --mt-mul:  #fbbf24;
  --mt-div:  #f472b6;
  --mt-mix:  #a78bfa;
  --mt-chip-1: #1e1845; --mt-chip-1-t: #a5b4fc;
  --mt-chip-2: #1e1845; --mt-chip-2-t: #a5b4fc;
  --mt-chip-3: #1e1845; --mt-chip-3-t: #a5b4fc;
  --mt-chip-0: #1e1845; --mt-chip-0-t: #a5b4fc;
  --mt-progress-a: #22d3ee;
  --mt-progress-b: #7c3aed;
  --mt-header-bg:     #0d0b1e;
  --mt-header-border: #2e2860;
  --mt-font:     'Nunito', sans-serif;
  --mt-font-num: 'Chillax', 'Nunito', sans-serif;
  --mt-radius:   16px;
  --mt-tab-bg:     #1e1845;
  --mt-tab-active: #7c3aed;
  --mt-tab-col:    #fff;
  --mt-q-card-bg:     #161230;
  --mt-q-card-border: 2px solid #22d3ee;
  --mt-q-shadow:      0 0 40px rgba(34,211,238,0.18), 0 0 80px rgba(124,58,237,0.12);
  --mt-q-color:       #e0e7ff;
  --mt-btn-bg:    #7c3aed;
  --mt-btn-color: #fff;
  --mt-stat-color:   #22d3ee;
  --mt-streak-color: #fbbf24;
  --mt-table-head:        #7c3aed;
  --mt-table-head-corner: #4c1d95;
  --mt-table-cell:        #161230;
  --mt-table-hl-row:      #1e1845;
  --mt-table-hl-col:      #1e1845;
  --mt-table-hl:          #22d3ee;
  --mt-table-hover:       #2e2860;
  --mt-glow:    0 0 12px rgba(124,58,237,0.5);
  --mt-shadows: 0 4px 16px rgba(0,0,0,0.5);
  --mt-hero-a: #0d0b1e;
  --mt-hero-b: #1e1845;
  --mt-hero-c: #7c3aed;

  --font-display: var(--mt-font-num);
  --font-body:    var(--mt-font);
  --color-bg:             var(--mt-bg);
  --color-surface:        var(--mt-surface);
  --color-surface-2:      var(--mt-surface2);
  --color-surface-offset: var(--mt-surface2);
  --color-border:         var(--mt-border);
  --color-divider:        var(--mt-divider);
  --color-text:           var(--mt-text);
  --color-text-muted:     var(--mt-text-muted);
  --color-text-faint:     var(--mt-text-faint);
  --color-text-inverse:   var(--mt-text-inverse);
  --color-primary:        var(--mt-primary);
  --color-primary-hover:  var(--mt-primary-h);
  --color-primary-active: var(--mt-primary-act);
  --color-primary-light:  var(--mt-primary-light);
  --color-add: var(--mt-add);
  --color-sub: var(--mt-sub);
  --color-mul: var(--mt-mul);
  --color-div: var(--mt-div);
  --color-mix: var(--mt-mix);
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.30);
  --shadow-md: var(--mt-shadows);
  --shadow-lg: 0 12px 40px rgba(0,0,0,0.55);
}

/* ================================================================
   THEME: jungle  (Jungle Adventure)
   ================================================================ */
[data-theme="jungle"] {
  --mt-bg:            #e8f5e9;
  --mt-surface:       #ffffff;
  --mt-surface2:      #c8e6c9;
  --mt-border:        #a5d6a7;
  --mt-divider:       #b2d9b3;
  --mt-primary:       #2e7d32;
  --mt-primary-h:     #1b5e20;
  --mt-primary-act:   #145214;
  --mt-primary-light: #c8e6c9;
  --mt-accent:        #f4a261;
  --mt-text:          #1b3a1d;
  --mt-text-muted:    #558b2f;
  --mt-text-faint:    #a5d6a7;
  --mt-text-inverse:  #ffffff;
  --mt-correct:       #43a047;
  --mt-wrong:         #e53935;
  --mt-add:  #43a047;
  --mt-sub:  #0288d1;
  --mt-mul:  #f57f17;
  --mt-div:  #e91e63;
  --mt-mix:  #2e7d32;
  --mt-chip-1: #fff9c4; --mt-chip-1-t: #f57f17;
  --mt-chip-2: #dcedc8; --mt-chip-2-t: #33691e;
  --mt-chip-3: #ffe0b2; --mt-chip-3-t: #e65100;
  --mt-chip-0: #c8e6c9; --mt-chip-0-t: #1b5e20;
  --mt-progress-a: #a5d6a7;
  --mt-progress-b: #2e7d32;
  --mt-header-bg:     #ffffff;
  --mt-header-border: #a5d6a7;
  --mt-font:     'Nunito', sans-serif;
  --mt-font-num: 'Chillax', 'Nunito', sans-serif;
  --mt-radius:   24px;
  --mt-tab-bg:     #c8e6c9;
  --mt-tab-active: #2e7d32;
  --mt-tab-col:    #fff;
  --mt-q-card-bg:     #ffffff;
  --mt-q-card-border: 3px solid #f4a261;
  --mt-q-shadow:      0 8px 40px rgba(46,125,50,0.15);
  --mt-q-color:       #1b3a1d;
  --mt-btn-bg:    #2e7d32;
  --mt-btn-color: #fff;
  --mt-stat-color:   #2e7d32;
  --mt-streak-color: #f4a261;
  --mt-table-head:        #2e7d32;
  --mt-table-head-corner: #1b5e20;
  --mt-table-cell:        #f1f8e9;
  --mt-table-hl-row:      #dcedc8;
  --mt-table-hl-col:      #dcedc8;
  --mt-table-hl:          #558b2f;
  --mt-table-hover:       #c8e6c9;
  --mt-glow:    none;
  --mt-shadows: 0 4px 16px rgba(46,125,50,0.10);
  --mt-hero-a: #1b3a1d;
  --mt-hero-b: #2e7d32;
  --mt-hero-c: #43a047;

  --font-display: var(--mt-font-num);
  --font-body:    var(--mt-font);
  --color-bg:             var(--mt-bg);
  --color-surface:        var(--mt-surface);
  --color-surface-2:      var(--mt-surface2);
  --color-surface-offset: var(--mt-surface2);
  --color-border:         var(--mt-border);
  --color-divider:        var(--mt-divider);
  --color-text:           var(--mt-text);
  --color-text-muted:     var(--mt-text-muted);
  --color-text-faint:     var(--mt-text-faint);
  --color-text-inverse:   var(--mt-text-inverse);
  --color-primary:        var(--mt-primary);
  --color-primary-hover:  var(--mt-primary-h);
  --color-primary-active: var(--mt-primary-act);
  --color-primary-light:  var(--mt-primary-light);
  --color-add: var(--mt-add);
  --color-sub: var(--mt-sub);
  --color-mul: var(--mt-mul);
  --color-div: var(--mt-div);
  --color-mix: var(--mt-mix);
  --shadow-sm: 0 1px 3px rgba(46,125,50,0.08);
  --shadow-md: var(--mt-shadows);
  --shadow-lg: 0 12px 40px rgba(46,125,50,0.14);
}

/* ================================================================
   THEME: arcade  (Retro Arcade)
   ================================================================ */
[data-theme="arcade"] {
  --mt-bg:            #0a0a0a;
  --mt-surface:       #111111;
  --mt-surface2:      #1a1a1a;
  --mt-border:        #333333;
  --mt-divider:       #222222;
  --mt-primary:       #00ff41;
  --mt-primary-h:     #00cc33;
  --mt-primary-act:   #009922;
  --mt-primary-light: #1a1a1a;
  --mt-accent:        #ff2d78;
  --mt-text:          #00ff41;
  --mt-text-muted:    #44aa55;
  --mt-text-faint:    #225522;
  --mt-text-inverse:  #000000;
  --mt-correct:       #00ff41;
  --mt-wrong:         #ff2d78;
  --mt-add:  #00ff41;
  --mt-sub:  #00d4ff;
  --mt-mul:  #ffcc00;
  --mt-div:  #ff2d78;
  --mt-mix:  #00ff41;
  --mt-chip-1: #111111; --mt-chip-1-t: #00ff41;
  --mt-chip-2: #111111; --mt-chip-2-t: #00ff41;
  --mt-chip-3: #111111; --mt-chip-3-t: #00ff41;
  --mt-chip-0: #111111; --mt-chip-0-t: #00ff41;
  --mt-progress-a: #00ff41;
  --mt-progress-b: #00cc33;
  --mt-header-bg:     #0a0a0a;
  --mt-header-border: #333333;
  --mt-font:     'Courier New', 'Courier', monospace;
  --mt-font-num: 'Courier New', 'Courier', monospace;
  --mt-radius:   4px;
  --mt-tab-bg:     #1a1a1a;
  --mt-tab-active: #00ff41;
  --mt-tab-col:    #000;
  --mt-q-card-bg:     #0a0a0a;
  --mt-q-card-border: 2px solid #00ff41;
  --mt-q-shadow:      0 0 20px rgba(0,255,65,0.3), inset 0 0 40px rgba(0,255,65,0.03);
  --mt-q-color:       #00ff41;
  --mt-btn-bg:    #00ff41;
  --mt-btn-color: #000;
  --mt-stat-color:   #00ff41;
  --mt-streak-color: #ff2d78;
  --mt-table-head:        #111111;
  --mt-table-head-corner: #000000;
  --mt-table-cell:        #0a0a0a;
  --mt-table-hl-row:      #1a1a1a;
  --mt-table-hl-col:      #1a1a1a;
  --mt-table-hl:          #00ff41;
  --mt-table-hover:       #1a1a1a;
  --mt-glow:    0 0 8px rgba(0,255,65,0.6);
  --mt-shadows: 0 0 20px rgba(0,255,65,0.12);
  --mt-hero-a: #000000;
  --mt-hero-b: #0a0a0a;
  --mt-hero-c: #111111;

  --font-display: var(--mt-font-num);
  --font-body:    var(--mt-font);
  --color-bg:             var(--mt-bg);
  --color-surface:        var(--mt-surface);
  --color-surface-2:      var(--mt-surface2);
  --color-surface-offset: var(--mt-surface2);
  --color-border:         var(--mt-border);
  --color-divider:        var(--mt-divider);
  --color-text:           var(--mt-text);
  --color-text-muted:     var(--mt-text-muted);
  --color-text-faint:     var(--mt-text-faint);
  --color-text-inverse:   var(--mt-text-inverse);
  --color-primary:        var(--mt-primary);
  --color-primary-hover:  var(--mt-primary-h);
  --color-primary-active: var(--mt-primary-act);
  --color-primary-light:  var(--mt-primary-light);
  --color-add: var(--mt-add);
  --color-sub: var(--mt-sub);
  --color-mul: var(--mt-mul);
  --color-div: var(--mt-div);
  --color-mix: var(--mt-mix);
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.5);
  --shadow-md: var(--mt-shadows);
  --shadow-lg: 0 0 40px rgba(0,255,65,0.15);
}

/* ================================================================
   THEME-SPECIFIC GLOBAL OVERRIDES
   (background FX, font overrides, logo tweaks)
   ================================================================ */

/* ── Header colours ── */
[data-theme] .site-header {
  background: color-mix(in oklab, var(--mt-header-bg) 90%, transparent) !important;
  border-bottom-color: var(--mt-header-border) !important;
}
[data-theme="space"]  .logo-text,
[data-theme="arcade"] .logo-text  { color: var(--mt-text) !important; }
[data-theme="space"]  .logo-accent,
[data-theme="arcade"] .logo-accent { color: var(--mt-accent) !important; }
[data-theme="arcade"] .logo-text   { font-family: 'Courier New', monospace !important; letter-spacing: 0.05em; }

/* ── Space: star field ── */
[data-theme="space"] body::before {
  content: '';
  position: fixed; inset: 0;
  pointer-events: none; z-index: 0;
  background-image:
    radial-gradient(1px   1px   at 10% 15%, rgba(255,255,255,0.7) 0%,transparent 100%),
    radial-gradient(1px   1px   at 30% 45%, rgba(255,255,255,0.5) 0%,transparent 100%),
    radial-gradient(1.5px 1.5px at 55% 25%, rgba(255,255,255,0.6) 0%,transparent 100%),
    radial-gradient(1px   1px   at 70% 60%, rgba(255,255,255,0.4) 0%,transparent 100%),
    radial-gradient(1px   1px   at 85% 10%, rgba(255,255,255,0.7) 0%,transparent 100%),
    radial-gradient(1.5px 1.5px at 20% 80%, rgba(255,255,255,0.5) 0%,transparent 100%),
    radial-gradient(1px   1px   at 45% 90%, rgba(255,255,255,0.4) 0%,transparent 100%),
    radial-gradient(1px   1px   at 92% 50%, rgba(255,255,255,0.6) 0%,transparent 100%),
    radial-gradient(1px   1px   at  5% 55%, rgba(255,255,255,0.5) 0%,transparent 100%),
    radial-gradient(1.5px 1.5px at 63% 70%, rgba(255,255,255,0.4) 0%,transparent 100%);
}

/* ── Arcade: CRT scanlines ── */
[data-theme="arcade"] body::before {
  content: '';
  position: fixed; inset: 0;
  pointer-events: none; z-index: 0;
  background: repeating-linear-gradient(
    0deg,
    transparent, transparent 2px,
    rgba(0,0,0,0.15) 2px, rgba(0,0,0,0.15) 4px
  );
}

/* ── Home hero gradient (theme-aware) ── */
.home-hero {
  background: linear-gradient(135deg,
    var(--mt-hero-a) 0%,
    var(--mt-hero-b) 50%,
    var(--mt-hero-c) 100%
  ) !important;
}
[data-theme="jungle"] .home-hero { color: #fff; }

/* ── Arcade: font override for interactive UI ── */
[data-theme="arcade"] input,
[data-theme="arcade"] button,
[data-theme="arcade"] select,
[data-theme="arcade"] .btn-generate,
[data-theme="arcade"] .op-btn,
[data-theme="arcade"] .diff-btn,
[data-theme="arcade"] .btn-action { font-family: 'Courier New', monospace !important; }

/* ── Arcade: header action buttons ── */
[data-theme="arcade"] .btn-icon,
[data-theme="arcade"] .lang-current,
[data-theme="arcade"] .nav-menu-btn {
  border-color: #333 !important;
  color: #00ff41 !important;
  background: #111 !important;
}
[data-theme="arcade"] .btn-icon:hover,
[data-theme="arcade"] .lang-current:hover,
[data-theme="arcade"] .nav-menu-btn:hover {
  border-color: #00ff41 !important;
  background: #1a1a1a !important;
}
[data-theme="arcade"] .nav-menu-btn[aria-expanded="true"] {
  border-color: #00ff41 !important;
  background: #1a1a1a !important;
  box-shadow: 0 0 0 2px rgba(0,255,65,0.3) !important;
}

/* ================================================================
   THEME PICKER MODAL
   ================================================================ */

/* Palette button in header */
.lm-theme-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  height: 40px;
  padding: 0 0.9rem;
  border-radius: var(--radius-full);
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  color: var(--color-text-muted);
  font-family: var(--font-body);
  font-size: 0.82rem;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
  transition: all var(--transition-interactive);
  flex-shrink: 0;
}
.lm-theme-btn:hover {
  color: var(--color-primary);
  border-color: var(--color-primary);
  background: var(--color-primary-light);
}
[data-theme="arcade"] .lm-theme-btn {
  font-family: 'Courier New', monospace !important;
  border-color: #333 !important;
  color: #00ff41 !important;
  background: #111 !important;
}
[data-theme="arcade"] .lm-theme-btn:hover {
  border-color: #00ff41 !important;
  background: #1a1a1a !important;
}

/* Overlay */
#lmThemePicker {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: rgba(0,0,0,0.72);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  align-items: center;
  justify-content: center;
  padding: 1rem;
}
#lmThemePicker.open { display: flex; }

/* Modal card */
.lm-picker-box {
  background: #fff;
  border-radius: 24px;
  padding: 2rem;
  max-width: 560px;
  width: 100%;
  box-shadow: 0 24px 80px rgba(0,0,0,0.4);
  animation: lmPickerIn 0.28s cubic-bezier(0.34,1.56,0.64,1);
}
@keyframes lmPickerIn {
  from { opacity:0; transform: scale(0.88) translateY(20px); }
  to   { opacity:1; transform: scale(1)    translateY(0);    }
}
.lm-picker-title {
  font-family: 'Chillax','Nunito',sans-serif;
  font-size: 1.4rem;
  font-weight: 800;
  color: #1e1b4b;
  margin-bottom: 0.25rem;
  line-height: 1.2;
}
.lm-picker-sub  { font-size: 0.85rem; color: #6b7280; margin-bottom: 1.5rem; }

/* 2×2 grid */
.lm-picker-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
  margin-bottom: 1.5rem;
}
@media (max-width: 400px) { .lm-picker-grid { grid-template-columns: 1fr; } }

/* Theme card */
.lm-picker-card {
  border-radius: 16px;
  padding: 1.1rem 0.9rem 0.9rem;
  cursor: pointer;
  border: 3px solid transparent;
  transition: transform 0.18s, border-color 0.18s, box-shadow 0.18s;
  text-align: center;
  user-select: none;
}
.lm-picker-card:hover      { transform: translateY(-3px); }
.lm-picker-card.selected   { box-shadow: 0 0 0 3px rgba(109,40,217,0.3); }

/* Per-theme card backgrounds */
.lm-picker-card[data-t="candy"]  { background: linear-gradient(135deg,#f5f3ff,#ede9fe); border-color: #ddd6fe; }
.lm-picker-card[data-t="space"]  { background: linear-gradient(135deg,#0d0b1e,#1e1845); border-color: #2e2860; }
.lm-picker-card[data-t="jungle"] { background: linear-gradient(135deg,#e8f5e9,#c8e6c9); border-color: #a5d6a7; }
.lm-picker-card[data-t="arcade"] { background: #0a0a0a; border-color: #333; }

/* Selected state per-theme */
.lm-picker-card[data-t="candy"].selected  { border-color: #6d28d9 !important; }
.lm-picker-card[data-t="space"].selected  { border-color: #22d3ee !important; box-shadow: 0 0 0 3px rgba(34,211,238,0.3); }
.lm-picker-card[data-t="jungle"].selected { border-color: #2e7d32 !important; box-shadow: 0 0 0 3px rgba(46,125,50,0.3); }
.lm-picker-card[data-t="arcade"].selected { border-color: #00ff41 !important; box-shadow: 0 0 0 3px rgba(0,255,65,0.3); }

.lm-picker-emoji { font-size: 1.8rem; display: block; margin-bottom: 0.4rem; }
.lm-picker-name  {
  font-weight: 800; font-size: 0.95rem; display: block; margin-bottom: 0.15rem;
}
.lm-picker-desc  { font-size: 0.72rem; display: block; }

.lm-picker-card[data-t="candy"]  .lm-picker-name { color: #6d28d9; }
.lm-picker-card[data-t="space"]  .lm-picker-name { color: #a78bfa; }
.lm-picker-card[data-t="jungle"] .lm-picker-name { color: #2e7d32; }
.lm-picker-card[data-t="arcade"] .lm-picker-name { color: #00ff41; font-family: 'Courier New',monospace; }
.lm-picker-card[data-t="candy"]  .lm-picker-desc { color: #9ca3af; }
.lm-picker-card[data-t="space"]  .lm-picker-desc { color: #a5b4fc; }
.lm-picker-card[data-t="jungle"] .lm-picker-desc { color: #558b2f; }
.lm-picker-card[data-t="arcade"] .lm-picker-desc { color: #44aa55; font-family: 'Courier New',monospace; font-size: 0.66rem; }

/* Confirm button */
.lm-picker-actions { display: flex; gap: 0.65rem; justify-content: flex-end; }
.lm-picker-confirm {
  background: #6d28d9; color: #fff;
  border: none; border-radius: 10px;
  padding: 0.65rem 1.5rem;
  font-family: 'Nunito',sans-serif; font-size: 0.9rem; font-weight: 700;
  cursor: pointer; transition: background 0.2s;
}
.lm-picker-confirm:hover { background: #5b21b6; }
.lm-picker-cancel {
  background: transparent; color: #6b7280;
  border: 2px solid #e5e7eb; border-radius: 10px;
  padding: 0.65rem 1.25rem;
  font-family: 'Nunito',sans-serif; font-size: 0.9rem; font-weight: 600;
  cursor: pointer;
}
.lm-picker-cancel:hover { border-color: #9ca3af; }

/* ============================================================
   DRILL MODE — inline one-at-a-time flash-card
   Sits inside .preview-panel, no overlay/modal.
   Uses --mt-* vars for full theme compatibility.
   ============================================================ */

/* ── Mode tabs (Worksheet | Drill) ── */
.preview-mode-tabs {
  display: flex;
  gap: 0.35rem;
  padding: 0.75rem 1.25rem 0;
  border-bottom: 2px solid var(--mt-border, var(--color-border, #e5e7eb));
  margin-bottom: 0;
}
.pmode-tab {
  padding: 0.45rem 1rem;
  border: none;
  border-radius: 8px 8px 0 0;
  background: transparent;
  color: var(--color-text-muted, #9ca3af);
  font-family: inherit;
  font-size: 0.82rem;
  font-weight: 700;
  cursor: pointer;
  position: relative;
  transition: color 0.18s, background 0.18s;
  margin-bottom: -2px;
  border-bottom: 2px solid transparent;
}
.pmode-tab:hover { color: var(--color-text, #1a1a2e); }
.pmode-tab.active {
  color: var(--mt-accent, #6d28d9);
  border-bottom: 2px solid var(--mt-accent, #6d28d9);
  background: var(--mt-accent-soft, var(--color-primary-highlight, #ede9fe));
}

/* ── Drill view container ── */
#drillView {
  padding: 1.5rem 1.25rem 1.75rem;
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* ── Header: score + progress + remaining ── */
.drill-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  width: 100%;
  max-width: 440px;
  margin-bottom: 1.5rem;
}
.drill-meta {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 44px;
}
.drill-meta-label {
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-text-muted, #9ca3af);
}
.drill-meta-val {
  font-size: 1.25rem;
  font-weight: 800;
  color: var(--mt-accent, #6d28d9);
  font-family: var(--font-display, 'Chillax', sans-serif);
}
.drill-progress-wrap { flex: 1; }
.drill-progress-track {
  height: 8px;
  border-radius: 99px;
  background: var(--mt-chip-bg, var(--color-surface-offset, #f0f0f0));
  overflow: hidden;
}
.drill-progress-bar {
  height: 100%;
  border-radius: 99px;
  background: var(--mt-accent, #6d28d9);
  transition: width 0.35s ease;
}

/* ── Question ── */
.drill-question {
  text-align: center;
  font-family: var(--font-display, 'Chillax', sans-serif);
  font-size: clamp(1.8rem, 4vw, 2.8rem);
  font-weight: 700;
  color: var(--color-text, #1a1a2e);
  margin-bottom: 1.1rem;
  min-height: 3.2rem;
  line-height: 1.2;
  width: 100%;
  max-width: 440px;
  text-align: center;
}

/* ── Answer display box ── */
.drill-answer-display {
  display: block;
  margin: 0 auto 0.5rem;
  width: 130px;
  text-align: center;
  font-family: var(--font-display, 'Chillax', sans-serif);
  font-size: 2.6rem;
  font-weight: 800;
  line-height: 1;
  padding: 0.5rem 0.75rem;
  border-radius: 14px;
  border: 3px solid var(--mt-border, var(--color-border, #e5e7eb));
  background: var(--mt-surface, var(--color-surface, #fff));
  color: var(--color-text, #1a1a2e);
  transition: border-color 0.18s, background 0.18s, color 0.18s;
  user-select: none;
}
.drill-answer-display.placeholder {
  color: var(--color-text-muted, #9ca3af);
  border-style: dashed;
}
.drill-answer-display.correct {
  border-color: #22c55e;
  background: #f0fdf4;
  color: #16a34a;
}
.drill-answer-display.wrong {
  border-color: #ef4444;
  background: #fef2f2;
  color: #dc2626;
}

/* ── Feedback ── */
.drill-feedback {
  text-align: center;
  font-size: 0.9rem;
  font-weight: 700;
  min-height: 1.4rem;
  margin-bottom: 1rem;
  color: transparent;
}
.drill-feedback.correct { color: #16a34a; }
.drill-feedback.wrong   { color: #dc2626; }

/* ── Numpad ── */
.drill-numpad {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.5rem;
  width: 100%;
  max-width: 280px;
  margin-bottom: 0.9rem;
}
.drill-num-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 54px;
  border-radius: 12px;
  border: 2px solid var(--mt-border, var(--color-border, #e5e7eb));
  background: var(--mt-chip-bg, var(--color-surface-offset, #f9f9f9));
  color: var(--color-text, #1a1a2e);
  font-family: var(--font-display, 'Chillax', sans-serif);
  font-size: 1.35rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.13s, border-color 0.13s, transform 0.07s;
  -webkit-tap-highlight-color: transparent;
}
/* hover only on real pointer devices — never sticks on mobile */
@media (hover: hover) and (pointer: fine) {
  .drill-num-btn:hover {
    background: var(--mt-accent-soft, var(--color-primary-highlight, #ede9fe));
    border-color: var(--mt-accent, #6d28d9);
  }
}
/* press: color flash + shrink, releases immediately on finger-up */
.drill-num-btn:active {
  background: var(--mt-accent-soft, var(--color-primary-highlight, #ede9fe));
  border-color: var(--mt-accent, #6d28d9);
  transform: scale(0.92);
  transition: background 0s, border-color 0s, transform 0.07s;
}
.drill-num-back {
  background: var(--color-surface-offset-2, #f3f4f6);
  color: var(--color-text-muted, #6b7280);
}
.drill-num-submit {
  background: var(--mt-accent, #6d28d9);
  border-color: var(--mt-accent, #6d28d9);
  color: #fff;
}
@media (hover: hover) and (pointer: fine) {
  .drill-num-submit:hover {
    background: var(--mt-accent-hover, #5b21b6);
    border-color: var(--mt-accent-hover, #5b21b6);
  }
}
.drill-num-submit:active {
  background: var(--mt-accent-hover, #5b21b6);
  border-color: var(--mt-accent-hover, #5b21b6);
  transform: scale(0.92);
  transition: background 0s, border-color 0s, transform 0.07s;
}

/* ── Quit button ── */
.drill-quit-btn {
  display: block;
  width: 100%;
  max-width: 280px;
  padding: 0.5rem;
  border: none;
  border-radius: 10px;
  background: transparent;
  color: var(--color-text-muted, #9ca3af);
  font-family: inherit;
  font-size: 0.8rem;
  font-weight: 600;
  cursor: pointer;
  transition: color 0.18s;
  text-align: center;
}
.drill-quit-btn:hover { color: var(--color-text, #1a1a2e); }

/* ── hidden/visible state helpers ── */
#drillResults.hidden { display: none; }
#drillActive.hidden  { display: none; }

/* ── Results screen ── */
#drillResults {
  width: 100%;
  max-width: 360px;
  text-align: center;
}
.drill-res-emoji {
  font-size: 3rem;
  margin-bottom: 0.5rem;
  line-height: 1;
}
.drill-res-title {
  font-family: var(--font-display, 'Chillax', sans-serif);
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--color-text, #1a1a2e);
  margin-bottom: 0.25rem;
}
.drill-res-sub {
  font-size: 0.85rem;
  color: var(--color-text-muted, #9ca3af);
  margin-bottom: 1.25rem;
}
.drill-res-stats {
  display: flex;
  justify-content: center;
  gap: 2rem;
  margin-bottom: 1.5rem;
}
.drill-res-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.15rem;
}
.drill-res-stat-val {
  font-family: var(--font-display, 'Chillax', sans-serif);
  font-size: 1.5rem;
  font-weight: 800;
  color: var(--mt-accent, #6d28d9);
}
.drill-res-stat-label {
  font-size: 0.67rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-text-muted, #9ca3af);
}
.drill-res-actions {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}
.drill-res-btn {
  width: 100%;
  padding: 0.7rem;
  border-radius: 12px;
  border: 2px solid var(--mt-border, var(--color-border, #e5e7eb));
  background: var(--mt-chip-bg, var(--color-surface-offset, #f9f9f9));
  color: var(--color-text, #1a1a2e);
  font-family: inherit;
  font-size: 0.9rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.18s, border-color 0.18s;
}
@media (hover: hover) and (pointer: fine) {
  .drill-res-btn:hover {
    background: var(--mt-accent-soft, var(--color-primary-highlight, #ede9fe));
    border-color: var(--mt-accent, #6d28d9);
  }
}
.drill-res-btn:active {
  background: var(--mt-accent-soft, var(--color-primary-highlight, #ede9fe));
  border-color: var(--mt-accent, #6d28d9);
  transform: scale(0.97);
  transition: background 0s, border-color 0s, transform 0.07s;
}
.drill-res-btn--primary {
  background: var(--mt-accent, #6d28d9);
  border-color: var(--mt-accent, #6d28d9);
  color: #fff;
}
@media (hover: hover) and (pointer: fine) {
  .drill-res-btn--primary:hover {
    background: var(--mt-accent-hover, #5b21b6);
    border-color: var(--mt-accent-hover, #5b21b6);
  }
}
.drill-res-btn--primary:active {
  background: var(--mt-accent-hover, #5b21b6);
  border-color: var(--mt-accent-hover, #5b21b6);
  transform: scale(0.97);
  transition: background 0s, border-color 0s, transform 0.07s;
}

/* ── Desktop: hide numpad, show keyboard hint instead ── */
@media (hover: hover) and (pointer: fine) {
  .drill-numpad    { display: none; }
  .drill-quit-btn  { margin-top: 0.5rem; }
  /* Subtle keyboard hint below the answer box */
  .drill-answer-display::after {
    content: '';
  }
  .drill-kbd-hint {
    display: block;
    text-align: center;
    font-size: 0.75rem;
    color: var(--color-text-muted, #9ca3af);
    margin-bottom: 1.25rem;
  }
}

/* ── Touch/mobile: numpad visible, nicely sized ── */
@media (hover: none), (pointer: coarse) {
  .drill-kbd-hint { display: none; }
}

/* ── Small screens: full-width, no horizontal gutters ── */
@media (max-width: 600px) {
  #drillView {
    padding: 1rem 0 1.25rem;
    align-items: stretch;   /* stretch all children to full width */
  }
  .drill-header {
    max-width: 100%;
    padding: 0 0.75rem;
  }
  .drill-question {
    max-width: 100%;
    padding: 0 0.75rem;
    font-size: clamp(1.5rem, 7vw, 2.2rem);
  }
  .drill-answer-display {
    width: calc(100% - 1.5rem); /* full width minus symmetrical inset */
    max-width: 100%;
    margin-left: 0.75rem;
    margin-right: 0.75rem;
    font-size: 2.2rem;
    box-sizing: border-box;
  }
  .drill-kbd-hint {
    padding: 0 0.75rem;
  }
  .drill-feedback {
    padding: 0 0.75rem;
  }
  .drill-numpad {
    max-width: 100%;
    width: 100%;
    padding: 0 0.75rem;
    gap: 0.5rem;
    box-sizing: border-box;
  }
  .drill-num-btn {
    height: 60px;
    font-size: 1.4rem;
    border-radius: 14px;
  }
  .drill-quit-btn {
    max-width: 100%;
    padding: 0.5rem 0.75rem;
  }
  #drillResults {
    max-width: 100%;
    padding: 0 0.75rem;
  }
  .drill-res-actions {
    width: 100%;
  }
}

/* ══════════════════════════════════════════════════════════════
   PRINT — always render the worksheet, nothing else
   ══════════════════════════════════════════════════════════════ */
@media print {
  /* Hide all UI chrome */
  .preview-mode-tabs,
  #previewModeTabs,
  #drillView,
  .nav-drawer,
  .nav-drawer-backdrop,
  .nav-hamburger-btn,
  .nav-desktop-group,
  /* SEO content sections — not relevant in a printed worksheet */
  .mt-seo,
  section[aria-label="About Kindergarten Math Worksheets"],
  section[aria-label="About 3rd Grade Math Worksheets"],
  section[aria-label="About Multiplication Table 1-12"],
  section[aria-label="About LaliMath"] { display: none !important; }

  /* Always show the worksheet view, even if drill tab is active */
  #worksheetView { display: block !important; }
  #worksheet     { display: block !important; }
}
