/* ================================================================
   EducaQuest
 — style.css
   ================================================================ */

@import url('https://fonts.googleapis.com/css2?family=Exo+2:wght@400;700;900&family=Nunito:wght@400;600;700;800;900&family=JetBrains+Mono:wght@400;700&display=swap');

:root {
  --bg:         #07071c;
  --fg:         #e8e8f2;
  --card:       #0d0d26;
  --card-fg:    #e8e8f2;
  --card-sm:    #e8e8f2;
  --muted:      #1a1a38;
  --muted-fg:   #7878a0;
  --border:     rgba(124,58,237,.2);
  --primary:    #7c3aed;
  --primary-lt: #a78bfa;
  --accent:     #f59e0b;
  --red:        #ef4444;
  --green:      #10b981;
  --sidebar-bg: rgba(7,7,28,.97);
  --header-bg:  rgba(7,7,28,.92);
  --radius:     14px;
  --radius-sm:  8px;
  --shadow:     0 4px 24px rgba(0,0,0,.4);
}

[data-theme="light"] {
  --bg:         #f0edff;
  --fg:         #1a1440;
  --card:       #ffffff;
  --card-fg:    #1a1440;
  --muted:      #ebe6ff;
  --muted-fg:   #6655a0;
  --border:     rgba(233, 230, 238, 0.945);
  --sidebar-bg: rgba(248,246,255,.97);
  --header-bg:  rgba(248,246,255,.92);
  --shadow:     0 4px 24px rgba(124,58,237,.1);
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 16px; scroll-behavior: smooth; }
body {
  font-family: 'Nunito', sans-serif;
  background: var(--bg);
  color: var(--fg);
  min-height: 100vh;
  transition: background .3s ease, color .3s ease;
  overflow-x: hidden;
}
button { font-family: inherit; cursor: pointer; border: none; background: none; }
input, textarea, select { font-family: inherit; }
ul, ol { list-style: none; }

::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(124,58,237,.3); border-radius: 99px; }
::-webkit-scrollbar-thumb:hover { background: rgba(124,58,237,.55); }

.font-mono { font-family: 'JetBrains Mono', monospace; }
.hidden { display: none !important; }

@keyframes xpFloat {
  0%   { opacity:1; transform:translate(-50%,0) scale(1.3); }
  30%  { opacity:1; transform:translate(-50%,-30px) scale(1); }
  100% { opacity:0; transform:translate(-50%,-110px) scale(.75); }
}
@keyframes lvPop {
  from { opacity:0; transform:scale(.4) rotate(-8deg); }
  to   { opacity:1; transform:scale(1) rotate(0deg); }
}
@keyframes bounceIn {
  0%   { opacity:0; transform:scale(.5); }
  70%  { transform:scale(1.15); }
  100% { opacity:1; transform:scale(1); }
}
@keyframes pageIn {
  from { opacity:0; transform:translateY(10px); }
  to   { opacity:1; transform:translateY(0); }
}
@keyframes shimmer {
  0%   { background-position:-200% center; }
  100% { background-position:200% center; }
}
@keyframes float0 { 0%,100%{transform:translateY(0)rotate(0deg)} 50%{transform:translateY(-18px)rotate(4deg)} }
@keyframes float1 { 0%,100%{transform:translateY(0)rotate(0deg)} 50%{transform:translateY(-22px)rotate(-5deg)} }
@keyframes float2 { 0%,100%{transform:translateY(0)rotate(0deg)} 50%{transform:translateY(-14px)rotate(3deg)} }
@keyframes float3 { 0%,100%{transform:translateY(0)rotate(0deg)} 50%{transform:translateY(-20px)rotate(-3deg)} }
@keyframes pulse  { 0%,100%{opacity:1} 50%{opacity:.6} }
@keyframes fadeIn { from{opacity:0} to{opacity:1} }

.page-in   { animation: pageIn .35s ease both; }
.bounce-in { animation: bounceIn .4s ease both; }
.fade-in   { animation: fadeIn .3s ease both; }

/* ── Layout helpers ── */
.flex           { display:flex; }
.flex-col       { flex-direction:column; }
.flex-1         { flex:1; }
.flex-wrap      { flex-wrap:wrap; }
.items-center   { align-items:center; }
.justify-center { justify-content:center; }
.justify-between{ justify-content:space-between; }
.gap-2 { gap:8px; } .gap-3 { gap:12px; } .gap-4 { gap:16px; }
.w-full    { width:100%; }
.text-center { text-align:center; }
.relative  { position:relative; }
.hidden    { display:none!important; }
.overflow-hidden { overflow:hidden; }
.overflow-y-auto { overflow-y:auto; }
.pointer-events-none { pointer-events:none; }
.truncate  { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.select-none { user-select:none; }

/* ── Card ── */
.card {
  background:var(--card); border:1px solid var(--border);
  border-radius:var(--radius); padding:16px;
  transition:transform .2s ease, box-shadow .2s ease;
}
.card:hover { transform:translateY(-2px); box-shadow:0 8px 32px rgba(124,58,237,.15); }

/* ── Button ── */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  padding:10px 20px; border-radius:var(--radius-sm);
  font-weight:800; font-size:14px; cursor:pointer;
  transition:transform .15s ease, filter .15s ease;
}
.btn:hover:not(:disabled) { transform:translateY(-1px); filter:brightness(1.07); }
.btn:active:not(:disabled){ transform:scale(.97); }
.btn:disabled { opacity:.5; cursor:not-allowed; }
.btn-primary  { background:linear-gradient(135deg,#5500ff,#ffffff); color:#ffffff; box-shadow:0 4px 16px rgba(195, 0, 255, 0.4); }
.btn-secondary{ background:var(--muted); color:var(--muted-fg); border:1px solid var(--border); }
.btn-danger   { background:rgba(239,68,68,.15); color:#ef4444; border:1px solid rgba(239,68,68,.3); }
.btn-ghost    { background:transparent; color:var(--muted-fg); border:1px solid var(--border); }
.btn-sm  { padding:6px 14px; font-size:12px; }
.btn-lg  { padding:14px 28px; font-size:16px; }

/* ── Input ── */
.input {
  width:100%; padding:10px 14px;
  background:var(--muted); border:1.5px solid var(--border);
  border-radius:var(--radius-sm); color:var(--fg);
  font-size:14px; font-family:inherit; outline:none;
  transition:border-color .2s, box-shadow .2s;
}
.input:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(124,58,237,.2); }
.input::placeholder { color:var(--muted-fg); }

/* ── Badge ── */
.badge {
  display:inline-flex; align-items:center; gap:4px;
  padding:3px 10px; border-radius:99px; font-size:12px; font-weight:800;
}
.badge-xp     { background:rgba(245,158,11,.12); color:#f59e0b; border:1px solid rgba(245,158,11,.3); }
.badge-streak { background:rgba(249,115,22,.12); color:#fb923c; border:1px solid rgba(249,115,22,.3); }
.badge-level  { background:rgba(124,58,237,.15); color:#a78bfa; border:1px solid rgba(124,58,237,.3); }
.badge-green  { background:rgba(16,185,129,.12); color:#10b981; border:1px solid rgba(16,185,129,.3); }
.badge-red    { background:rgba(239,68,68,.12);  color:#ef4444; border:1px solid rgba(239,68,68,.3); }

/* ── XP Bar ── */
.xp-bar { height:8px; border-radius:99px; overflow:hidden; background:var(--muted); position:relative; }
.xp-bar-fill {
  height:100%; border-radius:99px;
  background:linear-gradient(90deg,#7c3aed,#a855f7,#c084fc);
  transition:width .7s ease; position:relative; overflow:hidden;
}
.xp-bar-fill::after {
  content:''; position:absolute; inset:0;
  background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 50%,transparent 100%);
  background-size:200% 100%; animation:shimmer 2s linear infinite;
}

/* ── Avatar ── */
.avatar {
  border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-weight:900; font-family:'Exo 2',sans-serif; color:#fff; flex-shrink:0;
}
.divider { border:none; border-top:1px solid var(--border); margin:16px 0; }

/* ================================================================
   AUTH PAGES
   ================================================================ */
.auth-page {
  min-height:100vh; display:flex; align-items:center; justify-content:center;
  padding:24px; background:var(--bg);
  background-image:
    radial-gradient(circle at 20% 30%,rgba(128, 123, 137, 0.945) 0%,transparent 50%),
    radial-gradient(circle at 80% 70%,rgba(114, 102, 125, 0.897) 0%,transparent 50%);
}
.auth-card {
  background:var(--card); border:1px solid var(--border);
  border-radius:20px; padding:40px; width:100%; max-width:420px;
  box-shadow:0 20px 60px rgba(0,0,0,.4);
}
.auth-logo {
  font-family:'Exo 2',sans-serif; font-weight:900; font-size:28px;
  text-align:center; margin-bottom:8px;
}
.auth-logo span { color:var(--primary); }
.auth-subtitle { color:var(--muted-fg); text-align:center; font-size:14px; margin-bottom:32px; }
.form-group { margin-bottom:16px; }
.form-group label { display:block; font-size:13px; font-weight:700; margin-bottom:6px; color:var(--muted-fg); }
.form-error { font-size:11px; color:var(--red); margin-top:4px; }
.auth-switch { text-align:center; margin-top:20px; font-size:13px; color:var(--muted-fg); }
.auth-switch a { color:var(--primary-lt); font-weight:800; cursor:pointer; }

/* ── Onboarding ── */
.onboarding-page {
  min-height:100vh; display:flex; flex-direction:column; align-items:center;
  justify-content:center; padding:24px; background:var(--bg);
}
.onboarding-card {
  background:var(--card); border:1px solid var(--border);
  border-radius:20px; padding:40px; width:100%; max-width:560px;
  box-shadow:var(--shadow);
}
.exam-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:20px; }
.exam-option {
  display:flex; flex-direction:column; align-items:center; gap:8px;
  padding:20px; border-radius:var(--radius); border:2px solid var(--border);
  background:var(--muted); cursor:pointer; transition:all .2s ease; text-align:center;
}
.exam-option:hover { border-color:var(--primary); background:rgba(212, 211, 213, 0.868); }
.exam-option.selected { border-color:var(--primary); background:rgba(232, 230, 236, 0.879); box-shadow:0 0 0 1px var(--primary); }
.exam-option .exam-icon  { font-size:2rem; }
.exam-option .exam-label { font-weight:800; font-size:13px; }
.exam-option .exam-desc  { font-size:11px; color:var(--muted-fg); }

/* ================================================================
   APP SHELL
   ================================================================ */
.app-shell { display:flex; min-height:100vh; }

/* ── Sidebar ── */
.sidebar {
  display:none; flex-direction:column; width:220px; flex-shrink:0;
  border-right:1px solid var(--border); background:var(--sidebar-bg);
  position:sticky; top:0; height:100vh; z-index:30;
  transition:background .3s; backdrop-filter:blur(16px);
}
.sidebar-header {
  height:60px; padding:0 16px; display:flex; align-items:center;
  justify-content:space-between; border-bottom:1px solid var(--border); flex-shrink:0;
}
.sidebar-logo {
  font-family:'Exo 2',sans-serif; font-weight:900; font-size:18px;
  cursor:pointer; color:var(--fg); transition:transform .2s, filter .2s; padding:0;
}
.sidebar-logo:hover { transform:scale(1.05); filter:drop-shadow(0 0 8px rgba(124,58,237,.7)); }
.sidebar-logo span { color:var(--primary); }
.theme-toggle {
  width:30px; height:30px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  background:rgba(124,58,237,.1); border:1px solid rgba(124,58,237,.25);
  font-size:14px; cursor:pointer; transition:transform .25s;
}
.theme-toggle:hover { transform:rotate(15deg) scale(1.1); }
.sidebar-nav { flex:1; padding:16px 12px; overflow-y:auto; display:flex; flex-direction:column; gap:2px; }
.nav-item {
  display:flex; align-items:center; gap:12px; padding:10px 12px;
  border-radius:var(--radius-sm); font-size:13px; font-weight:800;
  cursor:pointer; width:100%; color:var(--muted-fg);
  transition:background .18s, color .18s, transform .15s; text-align:left; position:relative;
}
.nav-item:hover { transform:translateX(3px); color:var(--fg); background:rgba(190, 185, 199, 0.08); }
.nav-item.active { background:rgba(124,58,237,.18); color:#a78bfa; box-shadow:inset 0 0 0 1px rgba(217, 217, 218, 0.25); }
.nav-item.active::after {
  content:''; position:absolute; right:0; top:50%; transform:translateY(-50%);
  width:3px; height:60%; border-radius:3px 0 0 3px;
  background:linear-gradient(180deg,#a78bfa,#7c3aed); box-shadow:0 0 8px rgba(124,58,237,.6);
}
.nav-icon { font-size:15px; flex-shrink:0; }
.sidebar-footer { padding:12px; border-top:1px solid var(--border); }

/* ── Header ── */
.app-header {
  position:sticky; top:0; z-index:40; height:60px;
  border-bottom:1px solid var(--border);
  background:var(--header-bg); backdrop-filter:blur(16px);
  transition:background .3s; flex-shrink:0;
}
.header-inner {
  height:100%; padding:0 16px;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.header-logo {
  font-family:'Exo 2',sans-serif; font-weight:900; font-size:18px;
  cursor:pointer; color:var(--fg); padding:0; transition:transform .2s;
}
.header-logo:hover { transform:scale(1.05); }
.header-logo span { color:var(--primary); }
.header-xp-bar {
  display:none; align-items:center; gap:8px; flex:1;
  padding:6px 12px; border-radius:10px;
  background:rgba(124,58,237,.08); border:1px solid rgba(124,58,237,.18);
}
.header-xp-label { font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; color:#a78bfa; }
.header-right { display:flex; align-items:center; gap:8px; flex-shrink:0; }
.header-badge {
  display:flex; align-items:center; gap:5px; padding:4px 10px;
  border-radius:99px; border:1px solid; font-size:13px; font-weight:800;
}
.header-badge.streak { color:#fb923c; border-color:rgba(249,115,22,.3); background:rgba(249,115,22,.1); }
.header-badge.xp     { color:#f59e0b; border-color:rgba(245,158,11,.3); background:rgba(245,158,11,.1); display:none; }
.header-badge.theme-btn {
  width:32px; height:32px; border-radius:50%; padding:0;
  display:flex; align-items:center; justify-content:center; font-size:14px; cursor:pointer;
  background:rgba(124,58,237,.1); border:1px solid rgba(124,58,237,.25); transition:transform .25s;
}
.header-badge.theme-btn:hover { transform:rotate(15deg) scale(1.1); }
.header-avatar { width:36px; height:36px; cursor:pointer; font-size:13px; font-weight:900; transition:transform .2s; }
.header-avatar:hover { transform:scale(1.1); }

/* ── Content ── */
.content-area { flex:1; display:flex; flex-direction:column; min-width:0; }
.content-main { flex:1; overflow-y:auto; padding-bottom:80px; }
.page-content { animation:pageIn .35s ease both; }

/* ── Bottom Nav ── */
.bottom-nav {
  position:fixed; bottom:0; left:0; right:0; z-index:40;
  border-top:1px solid var(--border);
  background:var(--sidebar-bg); backdrop-filter:blur(16px);
  display:flex; transition:background .3s;
}
.bottom-nav-item {
  flex:1; display:flex; flex-direction:column; align-items:center;
  padding:10px 4px; gap:2px; cursor:pointer; color:var(--muted-fg);
  position:relative; transition:color .18s, transform .15s;
  font-size:9px; font-weight:800;
}
.bottom-nav-item:active { transform:scale(.92); }
.bottom-nav-item.active { color:#a78bfa; }
.bottom-nav-item.active::before {
  content:''; position:absolute; top:0; left:50%; transform:translateX(-50%);
  width:24px; height:2px; border-radius:0 0 4px 4px;
  background:linear-gradient(90deg,#7c3aed,#a78bfa); box-shadow:0 0 8px rgba(124,58,237,.7);
}
.bottom-nav-icon { font-size:18px; }

/* ── Background Decor ── */
.bg-decor { position:fixed; inset:0; pointer-events:none; z-index:0; overflow:hidden; }
.bg-decor-dot {
  position:absolute; inset:0;
  background-image:radial-gradient(circle,rgba(124,58,237,.07) 1px,transparent 1px);
  background-size:32px 32px; opacity:.5;
}
.bg-decor-emoji  { position:absolute; user-select:none; opacity:.065; }
.bg-decor-formula {
  position:absolute; font-family:'JetBrains Mono',monospace; font-size:11px;
  font-weight:700; color:rgba(167,139,250,.14); user-select:none;
}
.bg-decor-blob { position:absolute; border-radius:50%; filter:blur(40px); }
[data-theme="light"] .bg-decor-formula { color:rgba(124,58,237,.1); }
[data-theme="light"] .bg-decor-dot     { opacity:.4; }

/* ================================================================
   HOME PAGE
   ================================================================ */
.home-page { padding:20px; max-width:900px; margin:0 auto; }
.home-hero {
  border-radius:20px; padding:28px; margin-bottom:24px;
  background:linear-gradient(135deg,rgba(124,58,237,.25) 0%,rgba(168,85,247,.15) 100%);
  border:1px solid rgba(124,58,237,.3); position:relative; overflow:hidden;
}
.home-hero::before {
  content:''; position:absolute; top:-30px; right:-30px; width:200px; height:200px;
  border-radius:50%; background:radial-gradient(circle,rgba(124,58,237,.2) 0%,transparent 70%);
}
.home-hero-name { font-family:'Exo 2',sans-serif; font-size:22px; font-weight:900; margin-bottom:4px; }
.home-hero-sub  { color:var(--muted-fg); font-size:13px; margin-bottom:16px; }
.home-hero-xp   { font-family:'JetBrains Mono',monospace; font-size:11px; color:var(--muted-fg); margin-top:6px; }
.home-stats { display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin-bottom:24px; }
.stat-card {
  background:var(--card); border:1px solid var(--border);
  border-radius:var(--radius); padding:16px; text-align:center;
}
.stat-card .stat-icon  { font-size:1.8rem; margin-bottom:6px; }
.stat-card .stat-value { font-family:'Exo 2',sans-serif; font-size:22px; font-weight:900; }
.stat-card .stat-label { font-size:11px; color:var(--muted-fg); font-weight:700; margin-top:2px; }
.section-title {
  font-family:'Exo 2',sans-serif; font-size:16px; font-weight:900;
  margin-bottom:14px; display:flex; align-items:center; gap:8px;
}
.trail-preview { display:flex; flex-direction:column; gap:10px; }
.trail-node-card {
  display:flex; align-items:center; gap:14px; padding:14px;
  border-radius:var(--radius); background:var(--card); border:1px solid var(--border);
  cursor:pointer; transition:all .2s;
}
.trail-node-card:hover { transform:translateX(4px); border-color:var(--primary); }
.trail-node-card.locked { opacity:.5; cursor:not-allowed; }
.trail-node-card.locked:hover { transform:none; border-color:var(--border); }
.trail-node-icon {
  width:44px; height:44px; border-radius:12px;
  display:flex; align-items:center; justify-content:center; font-size:1.4rem; flex-shrink:0;
}
.trail-node-info { flex:1; min-width:0; }
.trail-node-title { font-weight:800; font-size:14px; margin-bottom:2px; }
.trail-node-sub   { font-size:11px; color:var(--muted-fg); }
.trail-node-state { font-size:18px; }

/* ================================================================
   STUDIES PAGE
   ================================================================ */
.studies-page { padding:100px; max-width:700px; margin:0 auto; }
.phase-header {
  padding:10px 16px; border-radius:10px; margin-bottom:15px;
  font-family:'Exo 2',sans-serif; font-size:13px; font-weight:900;
  background:rgb(63, 37, 109); border:1px solid rgba(124, 58, 237, 0.89); color:#a78bfa;
}
.studies-trail { display:flex; flex-direction:column; gap:8px; margin-bottom:28px; }
.trail-node-btn {
  display:flex; align-items:center; gap:14px; padding:14px 16px;
  border-radius:var(--radius); background:var(--card); border:2px solid var(--border);
  cursor:pointer; transition:all .2s; width:100%; text-align:left;
}
.trail-node-btn:hover:not(.locked) { border-color:var(--primary); transform:translateX(4px); }
.trail-node-btn.current   { border-color:var(--primary); box-shadow:0 0 0 3px rgba(124, 58, 237, 0.957); }
.trail-node-btn.completed { border-color:rgba(16,185,129,.4); }
.trail-node-btn.locked    { opacity:.5; cursor:not-allowed; }
.trail-icon-wrap {
  width:40px; height:44px; border-radius:12px;
  display:flex; align-items:center; justify-content:center; font-size:1.4rem; flex-shrink:0;
}
.trail-meta { flex:1; min-width:0; }
.trail-title { font-weight:800; font-size:14px; color: rgb(173, 12, 232); }
.trail-subj  { font-size:11px; color:var(--muted-fg); margin-top:2px; }
.trail-xp    { font-family:'JetBrains Mono',monospace; font-size:11px; color:#f59e0b; font-weight:700; }
.trail-state-icon { font-size:20px; flex-shrink:0; }

/* ================================================================
   ACTIVITIES PAGE
   ================================================================ */
.activities-page { padding:20px; max-width:900px; margin:0 auto; }
.activities-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:14px; }
.activity-card {
  background:var(--card); border:1px solid var(--border);
  border-radius:var(--radius); padding:18px; cursor:pointer;
  transition:all .2s; position:relative; overflow:hidden;
}
.activity-card:hover { transform:translateY(-3px); box-shadow:0 8px 32px rgba(124,58,237,.15); }
.activity-card.done { opacity:.65; }
.activity-icon  { font-size:2rem; margin-bottom:10px; }
.activity-title { font-family:'Exo 2',sans-serif; font-size:15px; font-weight:900; margin-bottom:4px; }
.activity-desc  { font-size:12px; color:var(--muted-fg); margin-bottom:12px; line-height:1.5; }
.activity-footer{ display:flex; align-items:center; justify-content:space-between; }
.activity-stats { display:flex; gap:8px; flex-wrap:wrap; }
.activity-done-badge { position:absolute; top:12px; right:12px; font-size:18px; }

/* ================================================================
   RANKING PAGE
   ================================================================ */
.ranking-page { padding:20px; max-width:700px; margin:0 auto; }
.ranking-podium {
  display:flex; justify-content:center; align-items:flex-end;
  gap:16px; margin-bottom:32px; padding:20px;
}
.podium-item  { display:flex; flex-direction:column; align-items:center; gap:8px; }
.podium-avatar{ border-radius:50%; display:flex; align-items:center; justify-content:center; font-weight:900; font-family:'Exo 2',sans-serif; color:#fff; }
.podium-rank  { font-size:1.5rem; }
.podium-name  { font-size:12px; font-weight:800; text-align:center; }
.podium-xp    { font-size:11px; color:var(--muted-fg); font-family:'JetBrains Mono',monospace; }
.podium-bar   { border-radius:8px 8px 0 0; min-height:40px; }
.ranking-list { display:flex; flex-direction:column; gap:8px; }
.ranking-row {
  display:flex; align-items:center; gap:14px; padding:14px 16px;
  border-radius:var(--radius); background:var(--card); border:1px solid var(--border);
}
.ranking-row.me { border-color:var(--primary); background:rgba(124,58,237,.1); }
.ranking-pos  { font-family:'JetBrains Mono',monospace; font-size:14px; font-weight:700; color:var(--muted-fg); width:28px; text-align:center; }
.ranking-name { flex:1; font-weight:800; font-size:14px; }
.ranking-xp   { font-family:'JetBrains Mono',monospace; font-size:12px; color:#f59e0b; font-weight:700; }

/* ================================================================
   ACHIEVEMENTS PAGE
   ================================================================ */
.achievements-page { padding:20px; max-width:900px; margin:0 auto; }
.achievements-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:14px; }
.achievement-card {
  background:var(--card); border:1px solid var(--border);
  border-radius:var(--radius); padding:20px; text-align:center; transition:all .2s;
}
.achievement-card.earned     { border-color:rgba(245,158,11,.4); box-shadow:0 0 20px rgba(245,158,11,.1); }
.achievement-card:not(.earned){ opacity:.5; filter:grayscale(60%); }
.achievement-icon  { font-size:2.5rem; margin-bottom:10px; }
.achievement-title { font-family:'Exo 2',sans-serif; font-size:14px; font-weight:900; margin-bottom:4px; }
.achievement-desc  { font-size:11px; color:var(--muted-fg); }
.achievement-earned-tag { display:inline-block; margin-top:8px; font-size:10px; font-weight:800; color:#f59e0b; }

/* ================================================================
   PROGRESS PAGE
   ================================================================ */
.progress-page { padding:20px; max-width:900px; margin:0 auto; }
.progress-stats-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin-bottom:24px; }
.progress-stat { background:var(--card); border:1px solid var(--border); border-radius:var(--radius); padding:18px; }
.progress-stat .label { font-size:12px; color:var(--muted-fg); font-weight:700; margin-bottom:4px; }
.progress-stat .value { font-family:'Exo 2',sans-serif; font-size:26px; font-weight:900; }
.progress-stat .sub   { font-size:11px; color:var(--muted-fg); margin-top:2px; }
.subject-bars { display:flex; flex-direction:column; gap:12px; }
.subject-bar-row  { display:flex; align-items:center; gap:12px; }
.subject-bar-label{ width:120px; font-size:12px; font-weight:700; flex-shrink:0; }
.subject-bar-track{ flex:1; height:8px; background:var(--muted); border-radius:99px; overflow:hidden; }
.subject-bar-fill { height:100%; border-radius:99px; transition:width 1s ease; }
.subject-bar-val  { font-family:'JetBrains Mono',monospace; font-size:11px; color:var(--muted-fg); width:36px; text-align:right; flex-shrink:0; }

/* ================================================================
   SIMULADOS PAGE
   ================================================================ */
.simulados-page { padding:20px; max-width:900px; margin:0 auto; }
.simulado-cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:14px; margin-bottom:28px; }
.simulado-card {
  background:var(--card); border:1px solid var(--border);
  border-radius:var(--radius); padding:20px; cursor:pointer; transition:all .2s;
}
.simulado-card:hover { transform:translateY(-3px); border-color:var(--primary); box-shadow:0 8px 30px rgba(150, 142, 162, 0.977); }
.simulado-card-icon  { font-size:2.2rem; margin-bottom:10px; }
.simulado-card-title { font-family:'Exo 2',sans-serif; font-size:15px; font-weight:900; margin-bottom:4px; }
.simulado-card-sub   { font-size:12px; color:var(--muted-fg); }
.simulado-card-meta  { display:flex; gap:8px; margin-top:12px; flex-wrap:wrap; }
.simulado-header {
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 20px; background:var(--card); border-bottom:1px solid var(--border); flex-shrink:0;
}
.simulado-timer { font-family:'JetBrains Mono',monospace; font-size:18px; font-weight:700; display:flex; align-items:center; gap:6px; }
.simulado-timer.warning { color:#ef4444; animation:pulse 1s ease-in-out infinite; }
.simulado-body { padding:20px; max-width:800px; margin:0 auto; }
.sim-question-num  { font-size:12px; color:var(--muted-fg); font-weight:700; margin-bottom:6px; font-family:'JetBrains Mono',monospace; }
.sim-question-text { font-size:16px; font-weight:700; line-height:1.6; margin-bottom:20px; }
.sim-options { display:flex; flex-direction:column; gap:10px; }
.sim-option {
  padding:14px 16px; border-radius:var(--radius-sm); border:2px solid var(--border);
  background:var(--card-sm); cursor:pointer; font-weight:700; font-size:14px;
  transition:all .18s; text-align:left; width:100%;
}
.sim-option:hover   { border-color:var(--primary); background:rgba(251, 248, 254, 0.998); }
.sim-option.selected{ border-color:var(--primary); background:rgba(107, 70, 219, 0.954); }
.sim-nav { display:flex; justify-content:space-between; margin-top:24px; gap:12px; }
.sim-result { padding:20px; max-width:700px; margin:0 auto; text-align:center; }
.sim-result-score {
  font-family:'Exo 2',sans-serif; font-size:72px; font-weight:900; line-height:1;
  background:linear-gradient(135deg,#f59e0b,#fbbf24);
  -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
}
.sim-result-label { font-size:14px; color:var(--muted-fg); margin-top:4px; margin-bottom:28px; }
.sim-stats-row { display:flex; justify-content:center; gap:24px; flex-wrap:wrap; margin-bottom:28px; }
.sim-stat .v { font-family:'Exo 2',sans-serif; font-size:24px; font-weight:900; }
.sim-stat .l { font-size:11px; color:var(--muted-fg); font-weight:700; }

/* ================================================================
   SUPPORT PAGE
   ================================================================ */
.support-page { padding:20px; max-width:800px; margin:0 auto; }
.faq-item { background:var(--card); border:1px solid var(--border); border-radius:var(--radius); margin-bottom:8px; overflow:hidden; }
.faq-question {
  display:flex; align-items:center; justify-content:space-between;
  padding:16px; cursor:pointer; font-weight:800; font-size:14px;    
  width:100%; text-align:left; color:var(--fg); transition:background .15s;
}
.faq-question:hover { background:rgba(148, 60, 236, 0.991); }
.faq-answer { padding:0 16px; max-height:0; overflow:hidden; transition:max-height .3s, padding .3s; }
.faq-answer.open { max-height:300px; padding:0 16px 16px; }
.faq-answer p { font-size:13px; color:var(--muted-fg); line-height:1.7; }
.faq-chevron { transition:transform .3s; font-size:14px; }
.faq-chevron.open { transform:rotate(180deg); }
.support-form { background:var(--card); border:1px solid var(--border); border-radius:var(--radius); padding:24px; }
.support-form select { appearance:none; }

/* ================================================================
   PROFILE PAGE
   ================================================================ */
.profile-page { padding:20px; max-width:700px; margin:0 auto; }
.profile-header {
  background:linear-gradient(135deg,rgba(124,58,237,.2) 0%,rgba(168,85,247,.1) 100%);
  border:1px solid rgba(124,58,237,.25); border-radius:20px; padding:28px;
  margin-bottom:20px; text-align:center;
}
.profile-avatar {
  width:80px; height:80px; border-radius:50%; font-size:28px; font-weight:900;
  font-family:'Exo 2',sans-serif; display:flex; align-items:center; justify-content:center;
  color:#fff; margin:0 auto 14px; box-shadow:0 4px 20px rgba(0,0,0,.3);
}
.profile-name     { font-family:'Exo 2',sans-serif; font-size:22px; font-weight:900; }
.profile-username { color:var(--muted-fg); font-size:13px; margin-top:2px; }
.profile-stats { display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin-bottom:20px; }

/* ================================================================
   QUIZ MODAL
   ================================================================ */
.quiz-overlay {
  position:fixed; inset:0; z-index:90;
  background:rgba(0,0,0,.88); backdrop-filter:blur(16px);
  display:flex; align-items:center; justify-content:center;
  padding:16px; animation:fadeIn .2s ease both;
}
.quiz-card {
  background:var(--card); border:1px solid var(--border);
  border-radius:20px; width:100%; max-width:600px; max-height:90vh;
  overflow-y:auto; display:flex; flex-direction:column;
  box-shadow:0 20px 60px rgba(0,0,0,.5);
}
.quiz-header {
  padding:16px 20px; border-bottom:1px solid var(--border);
  display:flex; align-items:center; gap:12px; flex-shrink:0;
}
.quiz-header-icon  { font-size:1.6rem; }
.quiz-header-info  { flex:1; min-width:0; }
.quiz-header-title { font-family:'Exo 2',sans-serif; font-size:15px; font-weight:900; }
.quiz-header-sub   { font-size:11px; color:var(--muted-fg); }
.quiz-timer {
  font-family:'JetBrains Mono',monospace; font-size:18px; font-weight:700;
  padding:4px 12px; border-radius:var(--radius-sm); border:1px solid var(--border); background:var(--muted);
}
.quiz-timer.warn { color:#ef4444; border-color:rgba(239,68,68,.4); animation:pulse 1s ease-in-out infinite; }
.quiz-close { width:32px; height:32px; border-radius:8px; font-size:18px; color:var(--muted-fg); display:flex; align-items:center; justify-content:center; }
.quiz-close:hover { background:var(--muted); }
.quiz-body    { padding:20px; flex:1; }
.quiz-footer  { padding:14px 20px; border-top:1px solid var(--border); flex-shrink:0; }
.quiz-q-num   { font-size:11px; color:var(--muted-fg); font-family:'JetBrains Mono',monospace; font-weight:700; margin-bottom:6px; }
.quiz-question{ font-size:16px; font-weight:800; line-height:1.6; margin-bottom:18px; }
.quiz-options { display:flex; flex-direction:column; gap:10px; }
.quiz-option {
  padding:12px 16px; border-radius:var(--radius-sm); border:2px solid var(--border);
  background:var(--muted); cursor:pointer; font-weight:700; font-size:14px;
  text-align:left; transition:all .18s; width:100%; color:var(--fg);
}
.quiz-option:hover:not(:disabled) { border-color:var(--primary); background:rgba(124,58,237,.12); }
.quiz-option.correct  { border-color:#10b981; background:rgba(16,185,129,.15); color:#10b981; }
.quiz-option.wrong    { border-color:#ef4444; background:rgba(239,68,68,.15); color:#ef4444; }
.quiz-option:disabled { cursor:default; }
.quiz-explanation {
  margin-top:14px; padding:12px 14px; border-radius:var(--radius-sm); font-size:13px; line-height:1.6;
  background:rgba(124,58,237,.08); border:1px solid rgba(124,58,237,.2); color:var(--muted-fg);
}
.quiz-explanation strong { color:#a78bfa; }
.quiz-combo  { text-align:center; margin-bottom:10px; }
.combo-badge {
  display:inline-block; padding:2px 10px; border-radius:99px;
  background:rgba(245,158,11,.15); border:1px solid rgba(245,158,11,.3);
  color:#f59e0b; font-size:12px; font-weight:800; animation:bounceIn .3s ease both;
}
.quiz-result       { padding:24px; text-align:center; }
.quiz-result-icon  { font-size:4rem; margin-bottom:12px; animation:bounceIn .5s ease both; }
.quiz-result-title { font-family:'Exo 2',sans-serif; font-size:22px; font-weight:900; margin-bottom:4px; }
.quiz-result-xp    {
  font-family:'Exo 2',sans-serif; font-size:32px; font-weight:900; margin:12px 0;
  background:linear-gradient(135deg,#f59e0b,#fbbf24);
  -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
}
.quiz-result-stats { display:flex; justify-content:center; gap:20px; margin:16px 0; flex-wrap:wrap; }
.quiz-result-stat .v { font-family:'Exo 2',sans-serif; font-size:22px; font-weight:900; }
.quiz-result-stat .l { font-size:11px; color:var(--muted-fg); }

/* ================================================================
   LEVEL UP OVERLAY
   ================================================================ */
.levelup-overlay {
  position:fixed; inset:0; z-index:70;
  background:rgba(0,0,0,.85); backdrop-filter:blur(20px);
  display:flex; align-items:center; justify-content:center;
}
.levelup-card {
  text-align:center; padding:48px 40px; border-radius:24px;
  background:rgba(13,13,38,.95); border:1px solid rgba(124,58,237,.4);
  box-shadow:0 0 60px rgba(124,58,237,.3); animation:lvPop .55s cubic-bezier(.34,1.56,.64,1) both;
}
.levelup-icon  { font-size:5rem; margin-bottom:16px; filter:drop-shadow(0 0 40px rgba(245,158,11,1)); }
.levelup-title {
  font-family:'Exo 2',sans-serif; font-size:3rem; font-weight:900;
  background:linear-gradient(135deg,#f59e0b,#fbbf24,#f97316);
  -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
}
.levelup-sub    { font-size:18px; font-weight:700; margin-top:8px; font-family:'Exo 2',sans-serif; }
.levelup-emojis { margin-top:16px; font-size:1.6rem; display:flex; justify-content:center; gap:10px; }
.levelup-emojis span { animation:bounceIn .4s ease both; }

/* ================================================================
   XP FLOATS
   ================================================================ */
#floats-container { position:fixed; inset:0; pointer-events:none; z-index:80; overflow:hidden; }
.xp-float {
  position:absolute; left:50%; top:30%;
  font-family:'Exo 2',sans-serif; font-size:20px; font-weight:900;
  white-space:nowrap; animation:xpFloat 2.4s ease-out forwards; pointer-events:none;
}

/* ================================================================
   RESPONSIVE
   ================================================================ */
@media (min-width:768px) {
  .home-stats          { grid-template-columns:repeat(4,1fr); }
  .progress-stats-grid { grid-template-columns:repeat(4,1fr); }
  .profile-stats       { grid-template-columns:repeat(4,1fr); }
  .header-xp-bar       { display:flex; }
  .header-badge.xp     { display:flex; }
}
@media (min-width:1024px) {
  .sidebar       { display:flex; }
  .bottom-nav    { display:none; }
  .header-logo   { display:none; }
}
/* ================================================================
   Banco de dados: carregamento, avisos e notificações (toast)
   ================================================================ */
.loading-screen { min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:24px; position:relative; z-index:1; }
.spinner { width:40px; height:40px; border-radius:50%; border:4px solid var(--muted); border-top-color:var(--primary); animation:eq-spin .8s linear infinite; }
@keyframes eq-spin { to { transform:rotate(360deg); } }
.auth-notice { margin-bottom:16px; padding:12px; border-radius:10px; font-size:12px; line-height:1.5; text-align:center; background:rgba(124,58,237,.08); border:1px solid rgba(124,58,237,.2); color:var(--muted-fg); }
.auth-notice.error { background:rgba(239,68,68,.08); border-color:rgba(239,68,68,.3); color:#ef4444; }
.link-btn { background:none; border:none; color:var(--primary-lt); font-size:12px; font-weight:700; text-decoration:underline; cursor:pointer; }
.eq-toast { position:fixed; left:50%; bottom:90px; transform:translate(-50%,16px); opacity:0; z-index:200; max-width:90vw; padding:12px 18px; border-radius:12px; font-size:13px; font-weight:700; text-align:center; background:var(--card); color:var(--fg); border:1px solid var(--primary); box-shadow:var(--shadow); transition:opacity .25s, transform .25s; pointer-events:none; }
.eq-toast.show { opacity:1; transform:translate(-50%,0); }
.eq-toast.error { border-color:#ef4444; color:#ef4444; }

/* ================================================================
   MENU HAMBÚRGUER (celular e tablet, abaixo de 1024px)
   ================================================================ */
.hamburger {
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px;
  width:38px; height:38px; flex-shrink:0; border-radius:10px;
  background:rgba(124,58,237,.1); border:1px solid rgba(124,58,237,.25);
  transition:background .2s, transform .15s;
}
.hamburger:hover  { background:rgba(124,58,237,.2); }
.hamburger:active { transform:scale(.92); }
.hamburger span {
  display:block; width:18px; height:2px; border-radius:2px;
  background:var(--fg); transition:transform .25s ease, opacity .2s ease;
}
.hamburger.open span:nth-child(1) { transform:translateY(7px) rotate(45deg); }
.hamburger.open span:nth-child(2) { opacity:0; }
.hamburger.open span:nth-child(3) { transform:translateY(-7px) rotate(-45deg); }

.menu-overlay {
  display:none; position:fixed; inset:0; z-index:55;
  background:rgba(0,0,0,.6); backdrop-filter:blur(2px);
  animation:fadeIn .2s ease both;
}

/* Vale para celular, tablet e PC: o menu lateral vira uma gaveta aberta pelo ☰ */
.sidebar {
  display:flex; position:fixed; top:0; left:0; width:260px; max-width:82vw;
  height:100vh; height:100dvh; z-index:60;
  transform:translateX(-100%); transition:transform .28s ease, background .3s;
  box-shadow:none;
}
.sidebar.open { transform:translateX(0); box-shadow:8px 0 40px rgba(0,0,0,.5); }
.menu-overlay.open { display:block; }
.bottom-nav { display:none; }
.header-logo { display:block; }
.content-main { padding-bottom:24px; }
.eq-toast { bottom:24px; }
