/* CADEST Edu v1.0 — design tokens + components */
:root{
  --blue:#1A5DFF; --blue-deep:#0A2E7D; --orange:#FF6A00;
  --green:#12B76A; --red:#F04438; --amber:#F79009;
  --bg:#F5F7FA; --surface:#FFFFFF; --text:#101828; --muted:#667085;
  --border:#E4E7EC; --blue-soft:#E8EEFF; --green-soft:#E6F9EF;
  --red-soft:#FDECEA; --amber-soft:#FEF3E2; --orange-soft:#FFF1E5;
  --shadow:0 2px 12px rgba(16,24,40,.08); --r:16px;
}
[data-theme="dark"]{
  --bg:#0B0F14; --surface:#141B26; --text:#F2F4F7; --muted:#98A2B3;
  --border:#243044; --blue-soft:#16295E; --green-soft:#0E3A28;
  --red-soft:#3D1A17; --amber-soft:#3A2A12; --orange-soft:#3A2410;
  --shadow:0 2px 12px rgba(0,0,0,.4);
}
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  background:var(--bg); color:var(--text); font-size:17px; line-height:1.55;
}
#app{max-width:480px;margin:0 auto;min-height:100vh;background:var(--bg);position:relative;}
.screen{padding:16px 16px 96px;animation:fadein .25s ease;}
@keyframes fadein{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
h1{font-size:24px;font-weight:700;margin:8px 0 4px;letter-spacing:-.3px;}
h2{font-size:20px;font-weight:700;margin:24px 0 12px;}
h3{font-size:17px;font-weight:700;margin:0 0 8px;}
p{margin:0 0 12px;}
.muted{color:var(--muted);} .small{font-size:14px;}
.card{background:var(--surface);border-radius:var(--r);padding:16px;box-shadow:var(--shadow);margin-bottom:16px;border:1px solid transparent;}
[data-theme="dark"] .card{border-color:var(--border);box-shadow:none;}
.card.tappable{cursor:pointer;transition:transform .12s ease;}
.card.tappable:active{transform:scale(.98);}
.btn{
  display:flex;align-items:center;justify-content:center;gap:8px;
  min-height:52px;border-radius:14px;border:none;font-size:16px;font-weight:700;
  cursor:pointer;padding:12px 20px;width:100%;transition:transform .12s ease, opacity .2s;
}
.btn:active{transform:scale(.98);}
.btn-primary{background:var(--blue);color:#fff;}
.btn-primary:disabled{background:var(--border);color:var(--muted);cursor:not-allowed;transform:none;}
.btn-accent{background:var(--orange);color:#fff;}
.btn-secondary{background:transparent;color:var(--blue);border:1.5px solid var(--blue);}
.btn-ghost{background:transparent;color:var(--muted);}
.btn-row{display:flex;gap:12px;margin-top:12px;} .btn-row .btn{width:auto;flex:1;}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;
  background:var(--blue-soft);color:var(--blue);border-radius:999px;padding:6px 12px;margin:0 8px 8px 0;}
[data-theme="dark"] .chip{color:#9DB4FF;}
.chip.green{background:var(--green-soft);color:var(--green);}
.chip.gray{background:var(--bg);color:var(--muted);border:1px solid var(--border);}
/* top bar */
.topbar{position:sticky;top:0;z-index:20;background:var(--bg);padding:12px 0 8px;display:flex;align-items:center;gap:12px;}
.topbar .back{width:44px;height:44px;border-radius:12px;border:1px solid var(--border);background:var(--surface);
  font-size:20px;cursor:pointer;color:var(--text);display:flex;align-items:center;justify-content:center;}
.topbar .title{font-weight:700;font-size:15px;flex:1;text-align:center;}
.topbar .spacer{width:44px;}
.progress-line{height:4px;background:var(--border);border-radius:99px;overflow:hidden;margin:0 0 16px;}
.progress-line > div{height:100%;background:var(--blue);border-radius:99px;transition:width .5s ease;}
/* tab bar */
.tabbar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;
  background:var(--surface);border-top:1px solid var(--border);display:flex;z-index:30;
  padding:8px 4px calc(8px + env(safe-area-inset-bottom));}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;
  color:var(--muted);font-size:11px;font-weight:600;background:none;border:none;cursor:pointer;min-height:56px;}
.tab .ico{font-size:22px;line-height:1;}
.tab.active{color:var(--blue);}
/* onboarding */
.onb{min-height:92vh;display:flex;flex-direction:column;padding:24px 20px calc(24px + env(safe-area-inset-bottom));}
.onb .logo{text-align:center;margin:24px 0 8px;}
.onb .logo .mark{width:72px;height:72px;border-radius:20px;background:linear-gradient(135deg,var(--blue-deep),var(--blue));
  color:#fff;font-size:36px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;}
.onb h1{text-align:center;font-size:26px;}
.onb .sub{text-align:center;color:var(--muted);margin-bottom:24px;}
.onb .art{font-size:64px;text-align:center;margin:16px 0;}
.dots{display:flex;gap:8px;justify-content:center;margin:20px 0;}
.dots span{width:8px;height:8px;border-radius:99px;background:var(--border);transition:all .3s;}
.dots span.on{width:26px;background:var(--blue);}
.onb .foot{margin-top:auto;}
.skip{position:absolute;top:16px;right:20px;background:none;border:none;color:var(--muted);font-size:14px;font-weight:600;cursor:pointer;padding:8px;}
.lvl-card{display:flex;align-items:center;gap:12px;text-align:left;width:100%;margin-bottom:12px;cursor:pointer;}
.lvl-card .radio{width:24px;height:24px;border-radius:50%;border:2px solid var(--border);flex-shrink:0;display:flex;align-items:center;justify-content:center;}
.lvl-card.sel{border:2px solid var(--blue);}
.lvl-card.sel .radio{border-color:var(--blue);}
.lvl-card.sel .radio::after{content:"";width:12px;height:12px;border-radius:50%;background:var(--blue);}
.lvl-card b{display:block;} .lvl-card small{color:var(--muted);}
/* home */
.hello{font-size:14px;color:var(--muted);margin:4px 0 0;}
.hero{background:linear-gradient(135deg,var(--blue-deep),var(--blue));color:#fff;border-radius:20px;padding:20px;margin-bottom:16px;position:relative;overflow:hidden;}
.hero .tag{font-size:12px;font-weight:700;letter-spacing:1.5px;opacity:.85;}
.hero h2{margin:8px 0 4px;color:#fff;font-size:20px;}
.hero p{opacity:.9;font-size:15px;margin-bottom:16px;}
.hero .btn{background:#fff;color:var(--blue-deep);}
.ring-wrap{display:flex;align-items:center;gap:16px;}
.ring{width:84px;height:84px;flex-shrink:0;}
.ring .bgc{stroke:var(--border);} .ring .fgc{stroke:var(--blue);stroke-linecap:round;transition:stroke-dashoffset .8s ease;}
.ring text{font-size:20px;font-weight:800;fill:var(--text);}
.hscroll{display:flex;gap:12px;overflow-x:auto;padding:4px 2px 12px;scroll-snap-type:x mandatory;}
.hscroll .mini{min-width:150px;scroll-snap-align:start;}
.mini .mico{width:44px;height:44px;border-radius:12px;background:var(--blue-soft);display:flex;align-items:center;justify-content:center;font-size:24px;margin-bottom:8px;}
.bar{height:8px;background:var(--border);border-radius:99px;overflow:hidden;margin-top:8px;}
.bar > div{height:100%;background:var(--blue);border-radius:99px;transition:width .6s ease;}
.streak{display:inline-flex;align-items:center;gap:6px;background:var(--orange-soft);color:var(--orange);
  font-weight:700;font-size:14px;border-radius:999px;padding:6px 14px;}
/* modules */
.mod-head{display:flex;gap:14px;align-items:center;}
.mod-num{width:52px;height:52px;border-radius:16px;background:var(--blue-soft);display:flex;align-items:center;justify-content:center;font-size:26px;flex-shrink:0;}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;border-radius:999px;padding:5px 12px;}
.badge.done{background:var(--green-soft);color:var(--green);}
.badge.doing{background:var(--blue-soft);color:var(--blue);}
.badge.locked{background:var(--bg);color:var(--muted);border:1px solid var(--border);}
.lesson-row{display:flex;align-items:center;gap:12px;padding:14px 4px;border-bottom:1px solid var(--border);cursor:pointer;min-height:56px;}
.lesson-row:last-child{border-bottom:none;}
.lesson-row .n{width:34px;height:34px;border-radius:10px;background:var(--bg);border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;flex-shrink:0;color:var(--muted);}
.lesson-row.done .n{background:var(--green-soft);border-color:transparent;color:var(--green);}
.lesson-row .t{flex:1;} .lesson-row .t b{display:block;font-size:16px;} .lesson-row .t small{color:var(--muted);}
.lesson-row .st{font-size:20px;}
.locked{opacity:.55;}
/* lesson */
.callout{border-radius:var(--r);padding:16px;margin-bottom:16px;border-left:4px solid var(--blue);background:var(--blue-soft);}
.callout.warn{border-color:var(--amber);background:var(--amber-soft);}
.callout.ok{border-color:var(--green);background:var(--green-soft);}
.callout b{display:block;margin-bottom:4px;}
.callout p{margin:0;font-size:16px;}
.check{display:flex;gap:12px;align-items:flex-start;padding:14px 4px;border-bottom:1px solid var(--border);cursor:pointer;min-height:52px;}
.check:last-child{border-bottom:none;}
.cbox{width:26px;height:26px;border-radius:8px;border:2px solid var(--border);flex-shrink:0;margin-top:1px;
  display:flex;align-items:center;justify-content:center;font-size:16px;color:#fff;transition:all .2s;}
.check.done .cbox{background:var(--green);border-color:var(--green);}
.check.done .ct{color:var(--muted);text-decoration:line-through;}
.sticky-cta{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;
  background:var(--surface);border-top:1px solid var(--border);padding:12px 16px calc(12px + env(safe-area-inset-bottom));z-index:30;}
.sticky-cta .btn{margin-bottom:8px;}
.sticky-cta .link{display:block;text-align:center;color:var(--muted);font-size:14px;background:none;border:none;width:100%;padding:8px;cursor:pointer;}
ol.steps{margin:8px 0;padding-left:20px;} ol.steps li{margin-bottom:8px;}
/* quiz */
.qseg{display:flex;gap:6px;margin:4px 0 20px;}
.qseg span{flex:1;height:6px;border-radius:99px;background:var(--border);}
.qseg span.done{background:var(--blue);} .qseg span.cur{background:var(--blue);opacity:.5;animation:pulse 1s infinite;}
@keyframes pulse{50%{opacity:.25;}}
.opt{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--surface);
  border:1.5px solid var(--border);border-radius:14px;padding:16px;min-height:60px;margin-bottom:12px;
  font-size:15px;cursor:pointer;color:var(--text);transition:transform .12s;}
.opt:active{transform:scale(.98);}
.opt .L{width:32px;height:32px;border-radius:10px;background:var(--bg);border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;font-weight:800;flex-shrink:0;color:var(--muted);}
.opt.ok{border:2px solid var(--green);background:var(--green-soft);}
.opt.ok .L{background:var(--green);color:#fff;border-color:transparent;}
.opt.bad{border:2px solid var(--red);background:var(--red-soft);animation:shake .3s;}
.opt.bad .L{background:var(--red);color:#fff;border-color:transparent;}
.opt:disabled{cursor:default;} .opt:disabled:active{transform:none;}
@keyframes shake{25%{transform:translateX(-6px);}50%{transform:translateX(6px);}75%{transform:translateX(-3px);}}
.opt.sel{border:2px solid var(--blue);background:var(--blue-soft);}
.opt.sel .L{background:var(--blue);color:#fff;border-color:transparent;}
.explain{border-radius:var(--r);padding:16px;background:var(--blue-soft);margin:8px 0 16px;animation:fadein .3s;}
.explain b{display:block;margin-bottom:4px;} .explain p{margin:0;font-size:14px;}
.result{text-align:center;padding:24px 0;}
.result .big{font-size:64px;margin-bottom:8px;}
/* progress */
.stat3{display:flex;gap:12px;margin-bottom:16px;}
.stat{flex:1;background:var(--surface);border-radius:var(--r);padding:14px 8px;text-align:center;box-shadow:var(--shadow);}
.stat b{display:block;font-size:22px;} .stat small{color:var(--muted);font-size:12px;}
.ach{display:flex;gap:12px;align-items:center;padding:12px 4px;border-bottom:1px solid var(--border);}
.ach:last-child{border-bottom:none;}
.ach .ai{width:48px;height:48px;border-radius:14px;background:var(--blue-soft);display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0;}
.ach.locked{opacity:.5;} .ach.locked .ai{background:var(--bg);}
.ach small{color:var(--muted);display:block;}
.skillrow{margin-bottom:12px;} .skillrow .sl{display:flex;justify-content:space-between;font-size:14px;margin-bottom:4px;}
/* profile */
.field{margin-bottom:16px;} .field label{display:block;font-size:13px;font-weight:700;margin-bottom:6px;color:var(--muted);}
.field input{width:100%;min-height:52px;border-radius:14px;border:1.5px solid var(--border);background:var(--surface);
  color:var(--text);font-size:16px;padding:12px 16px;font-family:inherit;}
.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:14px 4px;min-height:56px;}
.switch{width:52px;height:30px;border-radius:99px;background:var(--border);border:none;position:relative;cursor:pointer;transition:background .2s;}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:left .2s;box-shadow:0 1px 3px rgba(0,0,0,.3);}
.switch.on{background:var(--blue);} .switch.on::after{left:25px;}
.ver{text-align:center;color:var(--muted);font-size:12px;margin-top:32px;}
.empty{text-align:center;padding:40px 20px;color:var(--muted);}
.empty .big{font-size:48px;margin-bottom:12px;}
/* v2.0: tarjeta PDF + puntos clave */
.pdf-card{border:2px solid var(--blue);background:var(--blue-soft);}
.pdf-card h3{margin-top:0;}
.pdf-card .btn{width:100%;margin-top:8px;}
.keys{list-style:none;margin:8px 0 0;padding:0;}
.keys li{position:relative;padding:8px 0 8px 28px;border-bottom:1px solid var(--border);font-size:15px;line-height:1.45;}
.keys li:last-child{border-bottom:none;}
.keys li::before{content:"⭐";position:absolute;left:0;top:8px;}
.mod-sec{margin-bottom:8px;}
/* v2.2: interactivo hotspots */
.hs-imgwrap{margin:8px 0;text-align:center;}
.hs-frame{position:relative;display:inline-block;max-width:100%;border-radius:14px;overflow:hidden;background:#111;vertical-align:top;}
.hs-frame img{display:block;width:auto;max-width:100%;max-height:58vh;height:auto;}
.hs-dot{position:absolute;transform:translate(-50%,-50%);width:38px;height:38px;border-radius:50%;
  background:rgba(26,93,255,.92);border:3px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.45);cursor:pointer;
  animation:hs-pulse 1.6s infinite;padding:0;}
.hs-dot::after{content:"?";color:#fff;font-weight:800;font-size:17px;position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;}
.hs-dot.found{background:var(--green);animation:none;}
.hs-dot.found::after{content:"✓";}
@keyframes hs-pulse{0%,100%{transform:translate(-50%,-50%) scale(1);}50%{transform:translate(-50%,-50%) scale(1.2);}}
.hs-label{background:var(--blue-soft);border-radius:12px;padding:10px 14px;margin:4px 0;animation:hs-in .25s;}
.hs-label p{margin:4px 0 0;font-size:14px;}
@keyframes hs-in{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
.hs-prompt{font-size:18px;text-align:center;background:var(--blue-soft);padding:12px;border-radius:12px;margin:8px 0;}
.hs-reto{cursor:crosshair;}
.shake{animation:hs-shake .4s;}
@keyframes hs-shake{0%,100%{transform:translateX(0);}25%{transform:translateX(-8px);}75%{transform:translateX(8px);}}
/* v3.1: descubrir — tarjetas + ventana modal */
.dis-grid{display:grid;gap:12px;margin:4px 0 16px;}
.dis-card{position:relative;overflow:hidden;border:none;border-radius:18px;padding:18px 16px;
  color:#fff;text-align:left;cursor:pointer;min-height:108px;width:100%;
  display:flex;flex-direction:column;gap:6px;align-items:flex-start;
  box-shadow:0 6px 18px rgba(0,0,0,.20);
  animation:dis-in .5s cubic-bezier(.2,1.2,.4,1) backwards;
  transition:transform .15s ease;}
.dis-card:active{transform:scale(.96);}
.dis-card.zoom{animation:dis-zoom .55s cubic-bezier(.2,1.1,.4,1);}
@keyframes dis-in{from{opacity:0;transform:translateY(26px) scale(.95);}to{opacity:1;transform:none;}}
@keyframes dis-zoom{
  0%{transform:scale(1);filter:hue-rotate(0deg) saturate(1);}
  40%{transform:scale(1.14);filter:hue-rotate(70deg) saturate(1.6) brightness(1.2);}
  75%{transform:scale(1.05);filter:hue-rotate(25deg) saturate(1.3);}
  100%{transform:scale(1);filter:hue-rotate(0deg) saturate(1);}}
.dis-emoji{font-size:40px;line-height:1;filter:drop-shadow(0 3px 5px rgba(0,0,0,.35));}
.dis-q{font-size:19px;font-weight:800;line-height:1.35;text-shadow:0 1px 4px rgba(0,0,0,.30);}
.dis-hint{font-size:13px;font-weight:700;opacity:.88;letter-spacing:.2px;}
.dis-check{position:absolute;top:12px;right:12px;width:30px;height:30px;border-radius:50%;
  background:rgba(255,255,255,.28);color:#fff;font-weight:800;font-size:16px;
  display:flex;align-items:center;justify-content:center;
  opacity:0;transform:scale(.4);transition:all .28s cubic-bezier(.2,1.4,.4,1);}
.dis-card.seen .dis-check{opacity:1;transform:scale(1);background:#22c55e;box-shadow:0 2px 8px rgba(0,0,0,.3);}
.dis-card.seen{filter:saturate(.88);}
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.5);
  transform:scale(0);animation:rip .6s ease-out forwards;pointer-events:none;}
@keyframes rip{to{transform:scale(3);opacity:0;}}
.g-blue{background:linear-gradient(135deg,#1A5DFF,#6C3DF5);}
.g-orange{background:linear-gradient(135deg,#FF6A00,#FFB300);}
.g-purple{background:linear-gradient(135deg,#7C3AED,#EC4899);}
.g-teal{background:linear-gradient(135deg,#00B8A9,#00E676);}
.g-pink{background:linear-gradient(135deg,#EC4899,#F43F5E);}
.g-indigo{background:linear-gradient(135deg,#4F46E5,#06B6D4);}
.g-cyan{background:linear-gradient(135deg,#0891B2,#22D3EE);}
.g-green{background:linear-gradient(135deg,#16A34A,#84CC16);}
.g-red{background:linear-gradient(135deg,#DC2626,#F97316);}
body.lock{overflow:hidden;}
.sheet-back{position:fixed;inset:0;z-index:99;background:rgba(8,12,24,.58);
  backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);
  display:flex;align-items:flex-end;justify-content:center;animation:sh-in .25s ease-out;}
.sheet-back.out{animation:sh-out .2s ease-in forwards;}
@keyframes sh-in{from{opacity:0;}to{opacity:1;}}
@keyframes sh-out{to{opacity:0;}}
.sheet{background:var(--surface);border-radius:26px 26px 0 0;max-width:520px;width:100%;
  max-height:94vh;overflow-y:auto;box-shadow:0 -12px 40px rgba(0,0,0,.35);
  animation:sheet-up .42s cubic-bezier(.2,1.3,.4,1);}
.sheet-back.out .sheet{animation:sheet-dn .2s ease-in forwards;}
@keyframes sheet-up{from{transform:translateY(105%);}to{transform:none;}}
@keyframes sheet-dn{to{transform:translateY(105%);}}
.sheet-img{width:100%;height:auto;max-height:54vh;object-fit:contain;display:block;background:#0f172a;}
.sheet-body{padding:18px 18px 28px;}
.sheet-body h3{margin:0 0 10px;font-size:21px;line-height:1.35;}
.sheet-body p{font-size:18px;line-height:1.6;margin:0 0 18px;color:var(--text);}
.brand-logo{width:210px;max-width:72%;border-radius:20px;box-shadow:0 10px 28px rgba(0,0,0,.40);display:inline-block;}
.brand-home{display:block;width:148px;margin:2px auto 12px;border-radius:14px;box-shadow:0 6px 18px rgba(0,0,0,.30);}
/* v3.2: voz + celebracion + efectos espectaculares */
.sheet-actions{display:flex;gap:10px;}
.celebrate{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  pointer-events:none;overflow:hidden;border-radius:26px 26px 0 0;}
.cel-check{width:112px;height:112px;border-radius:50%;background:#22c55e;color:#fff;
  font-size:62px;font-weight:900;display:flex;align-items:center;justify-content:center;
  box-shadow:0 10px 34px rgba(34,197,94,.6);
  animation:cel-pop .55s cubic-bezier(.2,1.6,.4,1);}
@keyframes cel-pop{0%{transform:scale(0) rotate(-30deg);}60%{transform:scale(1.28) rotate(6deg);}100%{transform:scale(1) rotate(0);}}
.confetti{position:absolute;top:-14px;width:9px;height:15px;border-radius:2px;opacity:0;
  animation:conf-fall 1.5s ease-in forwards;}
@keyframes conf-fall{0%{opacity:1;transform:translateY(0) rotate(0);}100%{opacity:0;transform:translateY(48vh) rotate(720deg);}}
/* efectos espectaculares en tarjetas (mouse) */
@media (hover:hover){
  .dis-card{overflow:hidden;}
  .dis-card:hover{transform:translateY(-5px) scale(1.025);box-shadow:0 14px 32px rgba(0,0,0,.32);}
  .dis-card:hover .dis-emoji{animation:emoji-bounce .65s ease;}
  .dis-card::after{content:"";position:absolute;top:-60%;left:-80%;width:55%;height:220%;
    background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);
    transform:rotate(18deg);pointer-events:none;}
  .dis-card:hover::after{animation:shine .8s ease;}
}
@keyframes emoji-bounce{0%,100%{transform:translateY(0) scale(1);}30%{transform:translateY(-12px) scale(1.18) rotate(-8deg);}60%{transform:translateY(2px) scale(.94);}}
@keyframes shine{from{left:-80%;}to{left:160%;}}
/* v3.4: quiz en ventana */
.quiz-back{position:fixed;inset:0;z-index:99;background:rgba(8,12,24,.62);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  display:flex;align-items:center;justify-content:center;padding:14px;animation:sh-in .25s ease-out;}
.quiz-card{background:var(--surface);border-radius:22px;max-width:480px;width:100%;
  max-height:92vh;max-height:92dvh;overflow-y:auto;padding:20px;position:relative;
  box-shadow:0 16px 48px rgba(0,0,0,.4);animation:sheet-up .38s cubic-bezier(.2,1.25,.4,1);}
.quiz-x{position:absolute;top:8px;right:12px;border:none;background:none;font-size:20px;
  color:var(--muted);cursor:pointer;padding:6px;}
.quiz-top{display:flex;justify-content:space-between;align-items:center;gap:8px;
  font-weight:700;font-size:13px;margin:4px 0 8px;}
.quiz-img{width:100%;height:150px;object-fit:cover;border-radius:14px;margin:10px 0;display:block;background:#111;}
.quiz-card h3{font-size:18px;line-height:1.45;margin:6px 0 12px;}
.quiz-opts{display:grid;gap:10px;}
.quiz-fb{margin-top:12px;}
.quiz-grade{font-size:58px;font-weight:900;color:var(--blue);margin:6px 0;line-height:1;}
.quiz-grade small{font-size:20px;color:var(--muted);font-weight:600;}
.quiz-invite{background:var(--blue-soft);border-radius:14px;padding:14px;margin:14px 0;
  text-align:center;font-size:15px;line-height:1.5;}
/* v3.5: revision de respuestas */
.rev-list{display:grid;gap:10px;margin:12px 0;text-align:left;}
.rev-q{background:var(--bg);border-radius:14px;padding:12px 14px;}
.rev-qt{margin:0 0 6px;font-size:14px;line-height:1.4;}
.rev-ok{color:var(--green);font-weight:700;margin:4px 0;}
.rev-bad{color:var(--red);font-weight:700;margin:4px 0;}
/* v3.8: onboarding espectacular + hoja de ruta */
.grad-text{background:linear-gradient(135deg,#1A5DFF,#7C3AED 55%,#EC4899);
  -webkit-background-clip:text;background-clip:text;color:transparent;}
.road-title{text-align:center;font-weight:800;font-size:17px;margin:10px 0 12px;}
.road-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0 0 12px;}
.road-card{border-radius:16px;padding:14px 8px 12px;color:#fff;text-align:center;position:relative;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:108px;
  box-shadow:0 6px 16px rgba(0,0,0,.20);
  animation:road-in .5s cubic-bezier(.2,1.2,.4,1) backwards;}
.road-emoji{font-size:30px;line-height:1;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35));}
.road-name{font-size:11.5px;font-weight:800;line-height:1.25;text-shadow:0 1px 3px rgba(0,0,0,.35);}
.road-num{position:absolute;top:6px;left:9px;font-size:10px;font-weight:800;opacity:.8;}
@keyframes road-in{from{opacity:0;transform:translateY(18px) scale(.92);}to{opacity:1;transform:none;}}
/* v3.9: hoja de ruta freemium + ventana de modulo */
.road-tap{cursor:pointer;}
.road-badge{position:absolute;top:6px;right:6px;font-size:9px;font-weight:800;
  padding:3px 8px;border-radius:99px;box-shadow:0 2px 6px rgba(0,0,0,.25);z-index:2;}
.road-badge.free{background:#22c55e;color:#fff;}
.road-badge.credits{background:#f59e0b;color:#fff;}
.road-img{width:100%;height:170px;object-fit:cover;border-radius:14px;margin:0 0 12px;display:block;background:#111;}
.road-art{height:150px;border-radius:14px;display:flex;align-items:center;justify-content:center;margin:0 0 12px;}
.road-art span{font-size:64px;filter:drop-shadow(0 4px 10px rgba(0,0,0,.4));}
.road-topics{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:6px;}
.road-topics li{font-size:14px;padding:9px 12px 9px 32px;background:var(--bg);border-radius:10px;position:relative;line-height:1.35;}
.road-topics li::before{content:"✓";position:absolute;left:11px;color:var(--green);font-weight:800;}
/* v4.1: volver + descargable en ventana de modulo */
.back-link{display:block;width:100%;text-align:center;background:none;border:none;
  color:var(--muted);font-size:15px;font-weight:700;padding:12px 8px 4px;cursor:pointer;}
/* v4.2: candado de prerrequisito */
.road-badge.lock{background:#64748b;color:#fff;}
/* v4.3: modulos con color + quiz bloqueado + barra viva */
.bar-live{height:10px;}
.bar-live > div{background:linear-gradient(90deg,#1A5DFF,#7C3AED,#EC4899,#F59E0B,#1A5DFF);
  background-size:300% 100%;animation:barflow 3s linear infinite;}
@keyframes barflow{to{background-position:300% 0;}}
.lesson-row{animation:row-in .45s cubic-bezier(.2,1.2,.4,1) backwards;}
@keyframes row-in{from{opacity:0;transform:translateX(-14px);}to{opacity:1;transform:none;}}
/* v4.4: progreso con promedio y modulos */
.prom{display:flex;gap:16px;align-items:center;}
.prom-grade{font-size:54px;font-weight:900;line-height:1;min-width:110px;text-align:center;}
.prom-grade small{font-size:18px;color:var(--muted);font-weight:700;}
/* v4.5: leccion hecha + modulos pro */
.done-banner{background:var(--green-soft);color:var(--green);font-weight:800;text-align:center;
  padding:12px 14px;border-radius:14px;margin:12px 0 4px;font-size:15px;animation:row-in .4s backwards;}
.card.mod-sec.pro{padding:0;overflow:hidden;animation:row-in .5s cubic-bezier(.2,1.2,.4,1) backwards;}
.mod-hero{padding:18px 16px;display:flex;gap:14px;align-items:center;}
.mod-hero h3{color:#fff;margin:0 0 4px;font-size:19px;}
.mod-hero p{margin:0;color:rgba(255,255,255,.88);font-size:13px;}
.mod-hero-icon{width:56px;height:56px;border-radius:18px;background:rgba(255,255,255,.22);
  display:flex;align-items:center;justify-content:center;font-size:30px;flex-shrink:0;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 4px 12px rgba(0,0,0,.18);}
.mod-hero .badge{background:rgba(255,255,255,.2)!important;color:#fff!important;border:1px solid rgba(255,255,255,.35);}
.mod-body{padding:14px 16px 16px;}
.lesson-row{transition:transform .15s ease;}
.lesson-row:active{transform:scale(.985);}
/* v4.7: legal */
.legal{border:1px solid var(--border);border-radius:12px;margin:8px 0;overflow:hidden;background:var(--card);}
.legal summary{padding:12px 14px;font-weight:700;cursor:pointer;list-style:none;}
.legal summary::-webkit-details-marker{display:none;}
.legal-body{padding:2px 14px 12px;font-size:14px;}
.legal-body p{margin:8px 0;line-height:1.55;}
/* v4.8: diagramas anatomicos */
.diagram{position:relative;border-radius:14px;overflow:hidden;margin-top:8px;}
.diagram img{width:100%;height:auto;display:block;}
.dnum{position:absolute;transform:translate(-50%,-50%);width:26px;height:26px;border-radius:50%;
  background:#0A2E7D;color:#fff;font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:center;
  border:2px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.3);}
.dlegend{display:grid;gap:6px;margin-top:10px;}
.dlegend div{font-size:13px;line-height:1.45;}
.dlegend .dn{color:var(--blue);}
/* v5.0: colores de grupos dentarios en teoria */
.c-red{color:#E5484D;} .c-blue{color:#1A5DFF;} .c-green{color:#1F9D55;}
.c-yellow{color:#B8860B;} .c-orange{color:#D97706;}
/* v5.2: bloques de lecciones + proximamente */
.block-head{font-size:11px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);margin:14px 2px 2px;}
.block-head:first-child{margin-top:6px;}
.lesson-row.is-locked{opacity:.6;}
/* v5.4: modulos individualizados en pastel + botones 3D */
.mod-wrap{border-radius:22px;padding:14px 14px 16px;margin-bottom:20px;border:1px solid var(--border);}
.pastel-blue{background:#e9efff;} .pastel-teal{background:#ddf8f2;} .pastel-purple{background:#f0e8fd;}
.pastel-orange{background:#fff0dc;} .pastel-cyan{background:#dcf4fd;} .pastel-green{background:#e2f6e9;}
.pastel-indigo{background:#e7eafd;} .pastel-pink{background:#fce7f1;} .pastel-red{background:#fde9e9;}
[data-theme="dark"] .pastel-blue{background:#152142;} [data-theme="dark"] .pastel-teal{background:#0f2f2b;} [data-theme="dark"] .pastel-purple{background:#241a3d;}
[data-theme="dark"] .pastel-orange{background:#3a2a12;} [data-theme="dark"] .pastel-cyan{background:#102e3a;}
[data-theme="dark"] .pastel-green{background:#0f2f1e;} [data-theme="dark"] .pastel-indigo{background:#1a1f3d;}
[data-theme="dark"] .pastel-pink{background:#3a1a2a;} [data-theme="dark"] .pastel-red{background:#3a1a1a;}
.mod-sec-title{font-size:15px;font-weight:800;margin:16px 4px 10px;color:var(--text);}
.btn3d{display:flex;align-items:center;gap:12px;width:100%;text-align:left;cursor:pointer;
  font:inherit;color:inherit;background:var(--surface);border:1px solid var(--border);border-radius:16px;
  padding:14px 14px;margin:0 0 10px;min-height:64px;
  box-shadow:0 4px 0 rgba(16,24,40,.12),0 10px 22px rgba(16,24,40,.08);
  transition:transform .08s ease,box-shadow .08s ease,background .15s ease;
  animation:row-in .45s cubic-bezier(.2,1.2,.4,1) backwards;}
.btn3d:last-child{margin-bottom:2px;}
.btn3d:active{transform:translateY(4px);background:var(--blue-soft);
  box-shadow:0 0 0 rgba(16,24,40,.12),0 3px 8px rgba(16,24,40,.06);}
[data-theme="dark"] .btn3d{box-shadow:0 4px 0 rgba(0,0,0,.45),0 10px 22px rgba(0,0,0,.35);}
[data-theme="dark"] .btn3d:active{box-shadow:0 0 0 rgba(0,0,0,.45),0 3px 8px rgba(0,0,0,.3);}
.btn3d .n{width:38px;height:38px;border-radius:12px;background:var(--bg);border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;flex-shrink:0;color:var(--muted);}
.btn3d.done .n{background:var(--green-soft);border-color:transparent;color:var(--green);}
.btn3d .t{flex:1;min-width:0;} .btn3d .t b{display:block;font-size:16px;line-height:1.3;}
.btn3d .t small{color:var(--muted);font-size:14px;}
.btn3d .st{font-size:22px;color:var(--muted);flex-shrink:0;}
.btn3d.is-locked{opacity:.65;}
/* v5.7: aviso de nueva version */
#updBanner{position:fixed;left:16px;right:16px;bottom:78px;z-index:300;background:#101828;color:#fff;
  border-radius:14px;padding:12px 14px;display:flex;align-items:center;gap:10px;
  box-shadow:0 8px 24px rgba(0,0,0,.35);font-size:15px;font-weight:600;animation:row-in .3s ease;}
#updBanner button{margin-left:auto;background:var(--orange);color:#fff;border:none;border-radius:10px;
  padding:10px 18px;font-weight:800;font-size:15px;cursor:pointer;flex-shrink:0;}
