:root{
  --bg:#0f1220;
  --bg-soft:#171b2e;
  --card:#1e2338;
  --card-2:#252b46;
  --text:#eef0fb;
  --text-dim:#a6acc8;
  --accent:#7c5cff;
  --accent-2:#ff6fa5;
  --accent-3:#3ddc97;
  --warn:#ffb84d;
  --danger:#ff5c7a;
  --radius:18px;
  --shadow:0 10px 30px rgba(0,0,0,.35);
  font-size:16px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:
    radial-gradient(1200px 600px at 10% -10%, rgba(124,92,255,.25), transparent 60%),
    radial-gradient(900px 500px at 110% 10%, rgba(255,111,165,.18), transparent 55%),
    var(--bg);
  color:var(--text);
  font-family: "Segoe UI", system-ui, -apple-system, Roboto, Helvetica, Arial, sans-serif;
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit}
.app{max-width:1080px;margin:0 auto;padding:18px 16px 80px}

/* ---------- Top bar ---------- */
.topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 4px 20px;
}
.brand{display:flex;align-items:center;gap:10px}
.brand-badge{
  width:40px;height:40px;border-radius:12px;
  background:linear-gradient(135deg,var(--accent),var(--accent-2));
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;
  box-shadow:var(--shadow);
}
.brand-name{font-weight:800;font-size:1.05rem;letter-spacing:.2px}
.brand-sub{font-size:.75rem;color:var(--text-dim)}

.streak{
  display:flex;align-items:center;gap:8px;
  background:var(--card);border:1px solid rgba(255,255,255,.06);
  padding:8px 14px;border-radius:999px;font-size:.85rem;color:var(--text-dim);
}
.streak b{color:var(--warn)}

/* ---------- Nav ---------- */
.nav{
  display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 22px;
  background:var(--bg-soft);padding:6px;border-radius:16px;border:1px solid rgba(255,255,255,.05);
}
.nav button{
  flex:1;min-width:120px;
  background:transparent;border:none;color:var(--text-dim);
  padding:10px 14px;border-radius:12px;font-weight:600;font-size:.85rem;
  cursor:pointer;transition:.15s ease;
}
.nav button.active{background:linear-gradient(135deg,var(--accent),#5a3dfa);color:#fff;box-shadow:var(--shadow)}
.nav button:hover:not(.active){background:var(--card-2);color:var(--text)}

/* ---------- Generic cards ---------- */
.card{
  background:var(--card);border:1px solid rgba(255,255,255,.06);
  border-radius:var(--radius);padding:20px;margin-bottom:16px;box-shadow:var(--shadow);
}
.card h2{margin:0 0 6px;font-size:1.25rem}
.card h3{margin:0 0 10px;font-size:1.02rem;color:var(--text)}
.muted{color:var(--text-dim)}
.pill{
  display:inline-flex;align-items:center;gap:6px;
  background:var(--card-2);color:var(--text-dim);
  padding:4px 12px;border-radius:999px;font-size:.72rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.4px;
}
.pill.acrostico{background:rgba(124,92,255,.18);color:#c3b3ff}
.pill.historia{background:rgba(255,111,165,.18);color:#ffb3d1}
.pill.rima{background:rgba(61,220,151,.18);color:#8be9c6}

/* ---------- Home grid ---------- */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:720px){.grid2{grid-template-columns:1fr}}

.exam-tile{
  cursor:pointer;position:relative;overflow:hidden;
  background:linear-gradient(160deg,var(--card),var(--card-2));
}
.exam-tile::after{
  content:"";position:absolute;right:-40px;top:-40px;width:140px;height:140px;border-radius:50%;
  background:radial-gradient(circle, rgba(124,92,255,.35), transparent 70%);
}
.exam-tile .big-num{font-size:2.2rem;font-weight:800;color:var(--accent)}
.exam-tile .go{
  margin-top:14px;display:inline-block;background:var(--accent);color:#fff;
  padding:8px 16px;border-radius:10px;font-weight:700;font-size:.85rem;
}
.progress-bar-outer{background:rgba(255,255,255,.08);border-radius:999px;height:8px;overflow:hidden;margin-top:10px}
.progress-bar-inner{height:100%;background:linear-gradient(90deg,var(--accent-3),var(--accent));border-radius:999px;transition:width .4s ease}

/* ---------- Method chips (learning science) ---------- */
.method-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.method-chip{
  background:var(--card-2);border:1px solid rgba(255,255,255,.06);
  border-radius:12px;padding:10px 12px;font-size:.78rem;color:var(--text-dim);flex:1;min-width:150px;
}
.method-chip b{color:var(--text);display:block;margin-bottom:2px;font-size:.82rem}

/* ---------- Modules list ---------- */
.module-row{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 16px;border-radius:14px;background:var(--card-2);margin-bottom:10px;
  cursor:pointer;border:1px solid transparent;transition:.15s;
}
.module-row:hover{border-color:rgba(124,92,255,.4)}
.module-row .mstatus{font-size:1.3rem}
.module-title{font-weight:700;font-size:.92rem}
.module-meta{font-size:.75rem;color:var(--text-dim);margin-top:2px}

/* ---------- Flashcards ---------- */
.flash-wrap{perspective:1400px;margin:14px 0}
.flash{
  position:relative;min-height:220px;border-radius:var(--radius);
  transform-style:preserve-3d;transition:transform .5s cubic-bezier(.4,.2,.2,1);
  cursor:pointer;
}
.flash.flipped{transform:rotateY(180deg)}
.flash-face{
  position:absolute;inset:0;backface-visibility:hidden;border-radius:var(--radius);
  padding:22px;display:flex;flex-direction:column;justify-content:center;gap:10px;
  background:linear-gradient(160deg,var(--card),var(--card-2));border:1px solid rgba(255,255,255,.07);
}
.flash-face.back{transform:rotateY(180deg);background:linear-gradient(160deg,#232a4a,#2b1f47)}
.flash-hint{font-size:.72rem;color:var(--text-dim);text-align:center;margin-top:8px}

.mnemo-tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.mnemo-tab{
  background:var(--card-2);border:1px solid rgba(255,255,255,.08);color:var(--text-dim);
  padding:6px 12px;border-radius:10px;font-size:.72rem;font-weight:700;cursor:pointer;
}
.mnemo-tab.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.mnemo-body{
  background:rgba(255,255,255,.03);border-radius:12px;padding:14px;font-size:.92rem;line-height:1.5;
}

/* ---------- Quiz ---------- */
.quiz-progress{display:flex;align-items:center;gap:10px;margin-bottom:14px;font-size:.8rem;color:var(--text-dim)}
.quiz-progress .progress-bar-outer{flex:1}
.qtext{font-size:1.05rem;font-weight:700;margin-bottom:16px;line-height:1.4}
.options{display:flex;flex-direction:column;gap:10px}
.opt{
  text-align:left;background:var(--card-2);border:1px solid rgba(255,255,255,.08);
  color:var(--text);padding:12px 14px;border-radius:12px;cursor:pointer;font-size:.92rem;
  transition:.15s;
}
.opt:hover{border-color:var(--accent)}
.opt.correct{background:rgba(61,220,151,.18);border-color:var(--accent-3);color:#c9ffe6}
.opt.wrong{background:rgba(255,92,122,.18);border-color:var(--danger);color:#ffd3dc}
.opt.disabled{pointer-events:none;opacity:.8}
.explain{
  margin-top:14px;background:rgba(124,92,255,.1);border:1px solid rgba(124,92,255,.3);
  padding:12px 14px;border-radius:12px;font-size:.88rem;line-height:1.5;
}
.confidence-row{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
.confidence-row button{
  flex:1;min-width:90px;background:var(--card-2);border:1px solid rgba(255,255,255,.08);
  color:var(--text-dim);padding:10px;border-radius:10px;cursor:pointer;font-size:.78rem;font-weight:700;
}
.confidence-row button.picked{background:var(--accent-2);color:#fff;border-color:var(--accent-2)}
.mnemo-pick-row{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.mnemo-pick-row button{
  flex:1;min-width:100px;background:var(--card-2);border:1px solid rgba(255,255,255,.08);
  color:var(--text-dim);padding:9px;border-radius:10px;cursor:pointer;font-size:.75rem;font-weight:700;
}
.mnemo-pick-row button.picked{background:var(--accent-3);color:#0b1a13;border-color:var(--accent-3)}

.btn{
  background:linear-gradient(135deg,var(--accent),#5a3dfa);color:#fff;border:none;
  padding:12px 20px;border-radius:12px;font-weight:700;cursor:pointer;font-size:.9rem;
  box-shadow:var(--shadow);
}
.btn.secondary{background:var(--card-2);color:var(--text)}
.btn.ghost{background:transparent;border:1px solid rgba(255,255,255,.15);color:var(--text-dim)}
.btn:disabled{opacity:.4;cursor:not-allowed}
.btn-row{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}

/* ---------- Toggle switches (exam mode) ---------- */
.switch-row{display:flex;gap:10px;margin:10px 0;flex-wrap:wrap}
.switch-row label{
  display:flex;align-items:center;gap:8px;background:var(--card-2);
  padding:10px 14px;border-radius:12px;font-size:.82rem;cursor:pointer;border:1px solid rgba(255,255,255,.06);
}

/* ---------- Results ---------- */
.score-hero{text-align:center;padding:20px 0}
.score-num{font-size:3rem;font-weight:800;background:linear-gradient(135deg,var(--accent-3),var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent}
.review-item{padding:12px 0;border-bottom:1px solid rgba(255,255,255,.06)}
.review-item:last-child{border-bottom:none}
.review-q{font-weight:700;font-size:.88rem;margin-bottom:4px}
.tag-ok{color:var(--accent-3);font-weight:700;font-size:.78rem}
.tag-bad{color:var(--danger);font-weight:700;font-size:.78rem}

/* ---------- Dashboard bars ---------- */
.stat-row{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.stat-label{width:150px;font-size:.8rem;color:var(--text-dim);flex-shrink:0}
.stat-bar-outer{flex:1;background:rgba(255,255,255,.06);border-radius:8px;height:22px;overflow:hidden;position:relative}
.stat-bar-inner{height:100%;border-radius:8px;transition:width .5s ease}
.stat-bar-inner.acrostico{background:linear-gradient(90deg,#7c5cff,#a98bff)}
.stat-bar-inner.historia{background:linear-gradient(90deg,#ff6fa5,#ff9dc4)}
.stat-bar-inner.rima{background:linear-gradient(90deg,#3ddc97,#7dffc4)}
.stat-pct{width:48px;text-align:right;font-size:.8rem;font-weight:700}

.box-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:10px}
.box-cell{background:var(--card-2);border-radius:10px;padding:10px 4px;text-align:center}
.box-cell .n{font-size:1.3rem;font-weight:800}
.box-cell .l{font-size:.65rem;color:var(--text-dim);text-transform:uppercase}

.due-badge{
  display:inline-flex;align-items:center;gap:4px;background:var(--danger);color:#fff;
  font-size:.68rem;font-weight:800;padding:2px 8px;border-radius:999px;margin-left:8px;
}

.empty-state{text-align:center;padding:40px 20px;color:var(--text-dim)}
.empty-state .emoji{font-size:2.5rem;margin-bottom:10px}

.footer-note{
  text-align:center;color:var(--text-dim);font-size:.72rem;margin-top:30px;line-height:1.6;
}

.toast{
  position:fixed;bottom:20px;left:50%;transform:translateX(-50%);
  background:var(--card-2);border:1px solid rgba(255,255,255,.12);color:var(--text);
  padding:10px 20px;border-radius:999px;font-size:.85rem;box-shadow:var(--shadow);
  opacity:0;pointer-events:none;transition:.3s ease;z-index:50;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(-6px)}

.back-link{cursor:pointer;color:var(--text-dim);font-size:.85rem;margin-bottom:14px;display:inline-block}
.back-link:hover{color:var(--text)}

@media (max-width:520px){
  .app{padding:12px 10px 70px}
  .brand-name{font-size:.95rem}
  .qtext{font-size:.95rem}
  .box-grid{grid-template-columns:repeat(5,1fr)}
}
