:root{--bg:#f7f8f5;--paper:#fff;--paper-2:#fafbf8;--ink:#243e37;--muted:#68756e;--faint:#8b958f;--green:#28584a;--green-hover:#1d4539;--on-green:#fff;--line:#e1e6de;--line-soft:#edf0e9;--mint:#eaf0e4;--mint-line:#dde7d6;--purple:#7b6db0;--cream:#f4f1e8;--soft:#f5f6f0;--hover:#f1f4ee;--chip:#f0f3ec;--chip-ink:#6b825b;--accent-bg:#eeedf5;--accent-ink:#675f7f;--ok-bg:#eef3e8;--warn-bg:#faf0e5;--warn-ink:#82552e;--hint-bg:#f2efe7;--hint-line:#e9e3d4;--hint-ink:#686049;--tag-bg:#dae5d1;--tag-ink:#506747;--progress:#7f9a6d;--track:#edf0e8;--graph-bg:#fcfcf9;--grid:#e8ece3;--axis:#b4bfaa;--tick:#7a8575;--curve:#35664e;--deriv:#c07a3a;--tan:#8c77ac;--sec:#a58bc3;--rect:#b5a4d14a;--rect-line:#a593c3;--area:#9faf8640;--shadow:#172d3833;--backdrop:#14292080;--tabbar:#ffffffeb;--gold:#b69159;--gold-bg:#faf1e4;--focus:#9477d5;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px)}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1714;--paper:#16211d;--paper-2:#1a2622;--ink:#e2ebe6;--muted:#9aaba2;--faint:#7d8d85;--green:#3f8f73;--green-hover:#4aa283;--on-green:#fff;--line:#27352f;--line-soft:#22302a;--mint:#1a2a24;--mint-line:#25382f;--purple:#a99be0;--cream:#211f19;--soft:#1d2924;--hover:#1f2c27;--chip:#1f2d27;--chip-ink:#9fc08a;--accent-bg:#221f33;--accent-ink:#c9bfea;--ok-bg:#1b2c22;--warn-bg:#33251a;--warn-ink:#efc39a;--hint-bg:#24211a;--hint-line:#3a3426;--hint-ink:#dccfa8;--tag-bg:#25392d;--tag-ink:#a9cf97;--progress:#78b08f;--track:#25332d;--graph-bg:#131c19;--grid:#22302a;--axis:#4a5c52;--tick:#8d9d94;--curve:#6fcf9f;--deriv:#f0a865;--tan:#c3b2ff;--sec:#a993d6;--rect:#8f7cc94a;--rect-line:#9d8ad6;--area:#6fcf9f30;--shadow:#00000080;--backdrop:#000000a0;--tabbar:#16211deb;--gold:#e0b877;--gold-bg:#2c2418;--focus:#b9a5ff}}
:root[data-theme=dark]{--bg:#0f1714;--paper:#16211d;--paper-2:#1a2622;--ink:#e2ebe6;--muted:#9aaba2;--faint:#7d8d85;--green:#3f8f73;--green-hover:#4aa283;--on-green:#fff;--line:#27352f;--line-soft:#22302a;--mint:#1a2a24;--mint-line:#25382f;--purple:#a99be0;--cream:#211f19;--soft:#1d2924;--hover:#1f2c27;--chip:#1f2d27;--chip-ink:#9fc08a;--accent-bg:#221f33;--accent-ink:#c9bfea;--ok-bg:#1b2c22;--warn-bg:#33251a;--warn-ink:#efc39a;--hint-bg:#24211a;--hint-line:#3a3426;--hint-ink:#dccfa8;--tag-bg:#25392d;--tag-ink:#a9cf97;--progress:#78b08f;--track:#25332d;--graph-bg:#131c19;--grid:#22302a;--axis:#4a5c52;--tick:#8d9d94;--curve:#6fcf9f;--deriv:#f0a865;--tan:#c3b2ff;--sec:#a993d6;--rect:#8f7cc94a;--rect-line:#9d8ad6;--area:#6fcf9f30;--shadow:#00000080;--backdrop:#000000a0;--tabbar:#16211deb;--gold:#e0b877;--gold-bg:#2c2418;--focus:#b9a5ff}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.6 'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif}
button,input,select{font:inherit;color:inherit}
button,a,input,select{-webkit-tap-highlight-color:transparent}
button,a{touch-action:manipulation}
button{cursor:pointer;border:0}
a{color:inherit;text-decoration:none}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--focus);outline-offset:4px}
h1,h2,h3,h4,p{margin:0}
h1,h2,h3,h4{font-family:'Manrope',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif}
h1{font-size:36px;letter-spacing:-1.4px;line-height:1.2;font-weight:800}
h2{font-size:23px;letter-spacing:-.65px}
h3{font-size:17px;letter-spacing:-.35px}
p{color:var(--muted)}

/* Barra lateral (escritorio) */
.sidebar{position:fixed;inset:0 auto 0 0;width:245px;background:var(--paper);border-right:1px solid var(--line);padding:35px 22px;display:flex;flex-direction:column;z-index:2;overflow-y:auto}
.brand{display:flex;align-items:center;gap:12px;padding:0 10px;font-size:25px;font-weight:800;letter-spacing:-.8px;line-height:1.1}
.brandmark{display:grid;place-items:center;width:43px;height:48px;border-radius:14px;background:var(--green);color:var(--on-green);font:38px Georgia,serif;flex-shrink:0}
.brand-sub{display:block;font-size:9px;letter-spacing:2.8px;font-weight:600;margin-top:7px}
.nav-label{font-size:9px;letter-spacing:1.2px;font-weight:700;color:var(--faint);margin:44px 10px 16px}
.sidenav{display:grid;gap:6px}
.sidenav a{display:flex;align-items:center;gap:13px;padding:12px 14px;border-radius:8px;font-weight:500;color:var(--muted);min-height:46px}
.sidenav a>span{font-size:22px;line-height:1;width:23px;text-align:center}
.sidenav i{font-size:10px;margin-left:auto;font-style:normal;opacity:.65}
.sidenav a.active{background:var(--mint);color:var(--green);font-weight:700}
.sidenav a:hover{background:var(--hover)}
.count{display:inline-grid;place-items:center;min-width:19px;height:19px;padding:0 5px;border-radius:10px;background:var(--deriv);color:#fff;font-size:10px;font-weight:700;font-style:normal;margin-left:auto}
.sidebar-note{margin-top:auto;background:var(--paper-2);border:1px solid var(--line);border-radius:12px;padding:19px 16px}
.little-star{font-size:27px;color:var(--chip-ink)}
.sidebar-note h3{font-size:14px;margin:9px 0}
.sidebar-note p{font-size:12px;line-height:1.8}
.sidebar-note a{font-size:12px;display:flex;justify-content:space-between;margin-top:18px;font-weight:700}
.local-note{font-size:10px;color:var(--muted);margin:24px 0 0;text-align:center}
.status-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--progress);margin-right:5px}

/* Estructura */
.shell{margin-left:245px;min-height:100vh;display:flex;flex-direction:column}
header{height:80px;padding:0 45px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--muted);background:var(--paper);position:sticky;top:0;z-index:3}
.mobile-brand{display:none}
.header-right{display:flex;align-items:center;gap:12px}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;background:var(--chip);color:var(--ink);border-radius:20px;padding:6px 11px;min-height:32px}
.chip.xp{color:var(--chip-ink)}
.avatar{min-width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--chip);border:2px solid var(--line);color:var(--ink);font-size:11px;font-weight:700}
main{max-width:1440px;width:100%;margin:0 auto;padding:36px 45px 60px;flex:1}
.eyebrow{text-transform:uppercase;font-size:10px;font-weight:700;letter-spacing:1.7px;color:var(--chip-ink);margin-bottom:10px}
.welcome{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:24px;gap:18px}
.welcome p{margin-top:9px;font-size:14px}
.pill{font-size:11px;background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:8px 13px;white-space:nowrap}

/* Portada */
.hero{display:grid;grid-template-columns:1.05fr 1fr;background:var(--mint);border:1px solid var(--mint-line);border-radius:16px;overflow:hidden;min-height:292px}
.hero-copy{padding:30px 32px;position:relative;z-index:1}
.hero h2{font-size:31px;line-height:1.25;letter-spacing:-1.2px;max-width:350px;margin:14px 0 13px}
.hero p{font-size:13px;max-width:335px;line-height:1.8}
.tag{display:inline-block;color:var(--tag-ink);font-size:9px;letter-spacing:1.2px;background:var(--tag-bg);padding:5px 9px;border-radius:5px;font-weight:700}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:16px;padding:12px 19px;border-radius:9px;font-size:13px;font-weight:700;background:var(--green);color:var(--on-green);min-height:46px}
.btn:hover{background:var(--green-hover)}
.btn.secondary{background:var(--paper);color:var(--ink);border:1px solid var(--line)}
.btn.secondary:hover{background:var(--hover)}
.btn.danger{background:var(--warn-bg);color:var(--warn-ink)}
.hero-actions{display:flex;align-items:center;gap:16px;margin-top:22px;flex-wrap:wrap}
.meta{font-size:11px;color:var(--muted)}
.hero-art{position:relative;display:flex;align-items:center;justify-content:center;padding:14px;background-image:linear-gradient(#60765b12 1px,transparent 1px),linear-gradient(90deg,#60765b12 1px,transparent 1px);background-size:26px 26px}
.hero-art svg{width:100%;max-width:430px;height:270px}
.hero-label{fill:var(--paper);stroke:var(--line)}
.art-caption{position:absolute;bottom:22px;right:25px;font-size:10px;color:var(--muted)}

/* Indicadores */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:20px 0 32px}
.stat{display:flex;align-items:center;gap:14px;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:16px 18px}
a.stat:hover{background:var(--hover)}
.stat-icon{display:grid;place-items:center;height:40px;width:40px;background:var(--chip);color:var(--chip-ink);font-size:20px;border-radius:10px;flex-shrink:0}
.stat.purple .stat-icon{background:var(--accent-bg);color:var(--purple)}
.stat.gold .stat-icon{background:var(--gold-bg);color:var(--gold)}
.stat.orange .stat-icon{background:var(--warn-bg);color:var(--deriv)}
.stat b{font-size:19px;letter-spacing:-.5px;line-height:1.3;display:block}
.stat b span{color:var(--faint);font-size:13px}
.stat small{font-size:11px;color:var(--muted)}
.install-card{display:flex;gap:14px;align-items:center;background:var(--accent-bg);color:var(--accent-ink);border-radius:12px;padding:14px 16px;margin-bottom:20px;font-size:13px}
.install-card b{color:var(--ink)}
.install-card .text-link{margin-left:auto;color:var(--accent-ink)}
.install-card .install-actions{display:flex;align-items:center;gap:8px;margin-left:auto}

/* Ruta */
.section-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}
.section-head p{font-size:12px;margin-top:3px}
.text-link{background:none;color:var(--green);font-size:13px;padding:8px;min-height:44px;font-weight:600}
.content-columns{display:grid;grid-template-columns:minmax(0,1fr) 265px;gap:25px}
.route-list{display:grid;gap:12px}
.module{border:1px solid var(--line);background:var(--paper);border-radius:12px;overflow:hidden}
.module-head{width:100%;background:transparent;display:flex;text-align:left;align-items:center;gap:15px;padding:20px;color:var(--ink);min-height:93px}
.module-head:hover{background:var(--paper-2)}
.module-num{font-family:Georgia,serif;font-size:21px;background:var(--chip);min-width:45px;height:48px;display:grid;place-items:center;border-radius:9px;color:var(--chip-ink)}
.module:nth-child(2) .module-num{background:var(--accent-bg);color:var(--purple)}
.module:nth-child(3) .module-num{background:var(--gold-bg);color:var(--gold)}
.module:nth-child(4) .module-num{background:var(--soft);color:var(--tick)}
.module-title{flex:1}
.module-title h3{font-size:14px;margin-bottom:3px}
.module-title p{font-size:11px}
.module-status{font-size:10px;color:var(--chip-ink)}
.chevron{margin-left:12px;color:var(--faint);transition:transform .2s}
.module.open .chevron{transform:rotate(180deg)}
.module-lessons{display:none;padding:0 20px 14px 80px}
.module.open .module-lessons{display:block}
.lesson-link{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:none;text-align:left;border-top:1px solid var(--line-soft);color:var(--muted);padding:11px 0;font-size:13px;min-height:46px}
.lesson-link:hover{color:var(--ink)}
.lesson-link.done span{color:var(--ink)}
.lesson-link small{color:var(--faint);white-space:nowrap}
.right-card{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:22px;margin-bottom:18px}
.right-card h3{font-size:15px}
.right-card p{font-size:12px;margin:9px 0 16px}
.progress-ring{margin:19px auto 14px;width:115px;height:115px;border-radius:50%;background:conic-gradient(var(--green) var(--pct),var(--track) 0);display:grid;place-items:center}
.ring-inner{width:95px;height:95px;border-radius:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;background:var(--paper)}
.ring-inner b{font-size:28px;line-height:1.3;letter-spacing:-1px}
.ring-inner small{font-size:9px;color:var(--muted)}
.right-card.center{text-align:center}
.hint-card{background:var(--hint-bg);border-color:var(--hint-line)}
.hint-card .eyebrow{color:var(--gold)}
.hint-card blockquote{font-family:Georgia,serif;font-size:20px;line-height:1.5;margin:14px 0;color:var(--hint-ink)}
.hint-card p{font-size:11px}
.mini-link{display:flex;justify-content:space-between;font-size:12px;font-weight:700;padding:8px 0}
.progress-bar{height:6px;background:var(--track);border-radius:5px;margin:14px 0 6px;overflow:hidden}
.progress-bar div{height:100%;background:var(--progress);border-radius:5px;transition:width .4s}
footer{display:flex;justify-content:space-between;padding:20px 45px;border-top:1px solid var(--line);font-size:10px;color:var(--faint);gap:15px}

/* Páginas */
.page-intro{margin-bottom:25px}
.page-intro p{max-width:710px;margin-top:12px}
.panel{background:var(--paper);border:1px solid var(--line);border-radius:13px;padding:25px}
.lab-layout{display:grid;grid-template-columns:290px minmax(0,1fr);gap:20px}
.tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:20px}
.tab{border:1px solid var(--line);border-radius:8px;padding:10px 16px;min-height:44px;color:var(--muted);background:var(--paper);font-size:13px}
.tab.active{background:var(--green);color:var(--on-green);border-color:var(--green)}
.tab .ok{color:var(--progress);font-weight:700}
.tab.active .ok{color:var(--on-green)}
label{display:block;font-size:12px;font-weight:600;margin:19px 0 7px}
select,input[type=number],input[type=text],input[type=search]{width:100%;padding:11px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);min-height:46px;font-size:16px}
input[type=range]{width:100%;accent-color:var(--green);min-height:32px}
.control-value{float:right;font-weight:700;color:var(--green)}
.formula{font-family:Georgia,'Times New Roman',serif;background:var(--soft);padding:19px;border-radius:8px;font-size:25px;text-align:center;margin:16px 0;overflow-wrap:anywhere}
.formula.small{font-size:19px;padding:14px;text-align:left}
.lab-description{font-size:12px;margin-top:15px}
.graph{width:100%;display:block;aspect-ratio:1.55;background:var(--graph-bg);border:1px solid var(--line-soft);border-radius:9px;touch-action:none}
.g-grid{stroke:var(--grid)}
.g-axis{stroke:var(--axis)}
.g-tick{fill:var(--tick);font-size:11px}
.g-curve{fill:none;stroke:var(--curve);stroke-width:2.7;stroke-linejoin:round}
.g-deriv{fill:none;stroke:var(--deriv);stroke-width:2.2;stroke-dasharray:8 5}
.g-tan{stroke:var(--tan);stroke-width:2}
.g-sec{stroke:var(--sec);stroke-width:2;stroke-dasharray:7 5}
.g-rect{fill:var(--rect);stroke:var(--rect-line);stroke-width:.8}
.g-area{fill:var(--area)}
.g-pt{fill:var(--paper);stroke:var(--tan);stroke-width:2}
.g-hole{fill:var(--graph-bg);stroke:var(--curve);stroke-width:2.5}
.g-dot{fill:var(--tan)}
.graph-labels{display:flex;gap:18px;font-size:11px;color:var(--muted);margin:12px 0;flex-wrap:wrap}
.legend-dot{display:inline-block;height:8px;width:8px;background:var(--curve);border-radius:50%;margin-right:6px}
.legend-dot.purple{background:var(--tan)}
.legend-dot.orange{background:var(--deriv)}
.result-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:14px}
.result{background:var(--soft);border-radius:8px;padding:13px;min-width:0}
.result small{font-size:11px;color:var(--muted);display:block}
.result strong{font:22px Georgia,serif;display:block;margin-top:5px;overflow-wrap:anywhere}
.note{padding:16px 20px;background:var(--accent-bg);border-radius:9px;font-size:13px;line-height:1.8;margin-top:20px;color:var(--accent-ink)}
.note strong{color:var(--ink)}
.expr-input{display:flex;gap:8px}
.expr-input input{font-family:Georgia,serif;font-size:18px}
.expr-error{color:var(--warn-ink);background:var(--warn-bg);border-radius:8px;padding:9px 12px;font-size:12px;margin-top:8px}
.presets{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.preset{background:var(--chip);border-radius:16px;padding:6px 11px;font:14px Georgia,serif;min-height:36px}
.preset:hover{background:var(--hover)}
.toggles{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.toggle{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600;margin:0;border:1px solid var(--line);border-radius:20px;padding:6px 12px;min-height:38px;cursor:pointer}
.toggle input{accent-color:var(--green);width:16px;height:16px;margin:0}
.formula-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.formula-card p{font-size:13px}
.formula-card small{font-size:11px;color:var(--faint)}
.search-row{display:flex;gap:15px;align-items:center;margin-bottom:22px}
.search-row input{max-width:390px}
.practice-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:22px}
.level-tag{display:inline-block;font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;border-radius:5px;padding:3px 8px;background:var(--chip);color:var(--chip-ink)}
.level-tag.Intermedio{background:var(--gold-bg);color:var(--gold)}
.level-tag.Reto{background:var(--warn-bg);color:var(--deriv)}
.question{font-size:23px;font-family:Georgia,serif;margin:16px 0;color:var(--ink)}
.answers{display:grid;gap:10px;margin:18px 0}
.answer{background:var(--paper);text-align:left;border:1px solid var(--line);border-radius:10px;padding:13px 16px;color:var(--ink);min-height:50px}
.answer:hover{background:var(--hover)}
.answer.selected{border-color:var(--green);background:var(--mint)}
.answer.correct{border-color:var(--progress);background:var(--ok-bg)}
.answer.wrong{border-color:var(--deriv);background:var(--warn-bg)}
.feedback{padding:15px;border-radius:8px;background:var(--ok-bg);font-size:13px;margin:16px 0}
.feedback.error{background:var(--warn-bg);color:var(--warn-ink)}
.feedback .xp-gain{float:right;font-weight:700;color:var(--chip-ink)}
.practice-actions{display:flex;gap:10px;flex-wrap:wrap}
.practice-nav{display:flex;justify-content:space-between;margin-top:18px;gap:8px;flex-wrap:wrap}
.step-list{padding-left:20px;color:var(--muted);font-size:13px}
.step-list li{padding:7px 0}
.step-list strong{color:var(--ink)}
.empty{padding:40px;text-align:center}
.empty-state{text-align:center;padding:44px 24px}
.empty-state .big{font-size:44px;line-height:1;margin-bottom:12px;color:var(--chip-ink)}
.empty-state p{max-width:420px;margin:10px auto 18px}

/* Perfil y logros */
.profile-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;align-items:start}
.level-card{display:flex;gap:20px;align-items:center}
.level-badge{width:78px;height:78px;border-radius:22px;background:var(--green);color:var(--on-green);display:grid;place-items:center;flex-shrink:0;font:800 30px 'Manrope',system-ui,sans-serif}
.level-badge small{display:block;font-size:10px;font-weight:600;letter-spacing:1px;text-align:center;margin-top:-18px}
.badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:16px}
.badge{border:1px solid var(--line);background:var(--paper);border-radius:12px;padding:16px;text-align:center}
.badge .icon{width:46px;height:46px;border-radius:50%;margin:0 auto 9px;display:grid;place-items:center;font-size:22px;background:var(--gold-bg);color:var(--gold)}
.badge h4{font-size:13px}
.badge p{font-size:11px;margin-top:4px}
.badge.locked{opacity:.5}
.badge.locked .icon{background:var(--soft);color:var(--faint)}
.segmented{display:flex;background:var(--soft);border-radius:10px;padding:4px;gap:4px}
.segmented button{flex:1;background:none;border-radius:7px;padding:9px 6px;font-size:13px;color:var(--muted);min-height:40px}
.segmented button.active{background:var(--paper);color:var(--ink);font-weight:700;box-shadow:0 1px 4px var(--shadow)}
.week{display:flex;gap:6px;margin-top:14px}
.week span{flex:1;text-align:center;font-size:10px;color:var(--muted)}
.week i{display:block;height:30px;border-radius:7px;background:var(--track);margin-bottom:4px}
.week i.on{background:var(--progress)}
.week i.today{outline:2px solid var(--green);outline-offset:1px}

/* Lección (diálogo) */
dialog{border:1px solid var(--line);border-radius:16px;padding:35px;max-width:760px;width:calc(100% - 30px);max-height:90vh;color:var(--ink);background:var(--paper);box-shadow:0 25px 90px var(--shadow)}
dialog::backdrop{background:var(--backdrop);backdrop-filter:blur(3px)}
.close{position:absolute;top:15px;right:15px;width:44px;height:44px;border-radius:50%;background:var(--chip);color:var(--ink);font-size:25px}
.lesson-kicker{font-size:11px;color:var(--chip-ink);text-transform:uppercase;letter-spacing:1px;padding-right:40px}
dialog h2{font-size:29px;margin:10px 0 20px;padding-right:20px}
.lesson-body{font-size:15px}
.lesson-body h3{margin:23px 0 8px}
.lesson-body p{margin:10px 0}
.lesson-body ol{color:var(--muted);padding-left:24px}
.lesson-body li{margin:10px 0}
.lesson-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid var(--line);padding-top:20px;margin-top:25px}
.lesson-bottom span{font-size:11px;color:var(--muted)}
.callout{border-left:3px solid var(--progress);padding:12px 16px;background:var(--ok-bg);margin:16px 0;font-size:13px}
#toast{position:fixed;bottom:calc(25px + var(--safe-b));left:50%;transform:translateX(-50%);background:var(--green);color:var(--on-green);border-radius:12px;padding:12px 22px;z-index:20;display:none;font-size:13px;max-width:calc(100% - 32px);box-shadow:0 8px 30px var(--shadow);text-align:center}

/* Resolver */
.solver-layout{grid-template-columns:minmax(300px,380px) minmax(0,1fr);align-items:start}
.solver-form{margin-top:16px}
.solver-row{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.solver-row input{font-family:Georgia,serif;font-size:18px;flex:1;min-width:0}
.solver-row input.point{flex:0 0 76px;text-align:center}
.inline{margin:0;font:600 15px Georgia,serif;color:var(--muted);white-space:nowrap}
.solver-form .btn{width:100%;margin-top:6px}
.solver-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:16px;flex-wrap:wrap}
.switch{display:inline-flex;align-items:center;gap:10px;margin:0;font-size:13px;cursor:pointer}
.switch input{position:absolute;opacity:0;width:1px;height:1px}
.switch span{width:44px;height:26px;border-radius:13px;background:var(--track);position:relative;transition:background .2s;flex-shrink:0}
.switch span::after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--paper);box-shadow:0 1px 3px var(--shadow);transition:transform .2s}
.switch input:checked+span{background:var(--green)}
.switch input:checked+span::after{transform:translateX(18px)}
.switch input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}
.solver-title{font:20px Georgia,serif;margin-bottom:14px;overflow-wrap:anywhere}
.steps{list-style:none;padding:0;margin:0;display:grid;gap:12px}
.step{display:flex;gap:12px;align-items:flex-start}
.step-n{flex-shrink:0;width:28px;height:28px;border-radius:50%;background:var(--chip);color:var(--chip-ink);display:grid;place-items:center;font-size:12px;font-weight:700;margin-top:2px}
.step-body{flex:1;min-width:0;border-bottom:1px solid var(--line-soft);padding-bottom:12px}
.step-body h4{font-size:15px;margin-bottom:3px}
.step-body p{font-size:13px}
.work{margin-top:9px;background:var(--soft);border-radius:8px;padding:11px 13px;font-size:14px;overflow-x:auto}
.math{font-family:Georgia,'Times New Roman',serif;font-size:16px;line-height:1.8}
.reveal{margin-top:9px;background:none;border:1px dashed var(--line);border-radius:8px;padding:8px 12px;font-size:12px;font-weight:600;color:var(--green);min-height:38px}
.reveal:hover{background:var(--hover)}
.value-table{border-collapse:collapse;font-size:12px;margin-top:6px;width:100%}
.value-table th,.value-table td{padding:4px 8px;text-align:right;border-bottom:1px solid var(--line)}
.value-table th{color:var(--muted);font-weight:600}
.answer-card{margin-top:18px;border:2px solid var(--green);border-radius:12px;padding:16px 18px;background:var(--mint)}
.answer-card.partial{border-color:var(--deriv);background:var(--warn-bg)}
.answer-card .final{font:20px Georgia,serif;color:var(--ink);overflow-wrap:anywhere}
.answer-card .work{background:none;padding:0}

/* Barra inferior (móvil) */
.tabbar{display:none}

@media(min-width:1550px){main{padding-top:45px}.hero{min-height:320px}.hero-copy{padding:35px 40px}.hero-art svg{max-width:460px;height:290px}}
@media(max-width:1150px){.sidebar{width:210px;padding:30px 15px}.shell{margin-left:210px}main{padding:28px}.content-columns{grid-template-columns:1fr 235px;gap:18px}.hero h2{font-size:27px}.hero-copy{padding:24px}.stats{grid-template-columns:repeat(2,1fr);gap:10px}.lab-layout{grid-template-columns:250px 1fr}.practice-layout{grid-template-columns:1fr 240px}.profile-grid{grid-template-columns:1fr}}
@media(max-width:900px){.content-columns{grid-template-columns:1fr}.route-aside{display:grid;grid-template-columns:1fr 1fr;gap:16px}.hero{grid-template-columns:1.2fr 1fr}.lab-layout,.practice-layout{grid-template-columns:1fr}header{padding:0 28px}footer{padding:20px 28px}}

/* Teléfono: navegación tipo app */
@media(max-width:760px){
  body{font-size:15px}
  .sidebar{display:none}
  .shell{margin-left:0;min-height:100dvh}
  header{height:calc(56px + var(--safe-t));padding:var(--safe-t) 16px 0;background:var(--tabbar);backdrop-filter:saturate(1.6) blur(14px);-webkit-backdrop-filter:saturate(1.6) blur(14px)}
  #breadcrumb{display:none}
  .mobile-brand{display:flex;align-items:center;gap:9px;font:800 17px 'Manrope',system-ui,sans-serif;color:var(--ink);letter-spacing:-.4px}
  .mobile-brand .brandmark{width:32px;height:34px;border-radius:10px;font-size:25px}
  .header-right{gap:7px}
  .chip{padding:5px 9px;font-size:12px}
  .avatar{min-width:34px;height:34px}
  main{padding:20px 16px calc(96px + var(--safe-b))}
  footer{display:none}
  h1{font-size:27px;letter-spacing:-1px}
  .welcome{margin-bottom:16px}
  .welcome .pill{display:none}
  .welcome p{font-size:13px}
  .hero{grid-template-columns:1fr;min-height:0}
  .hero h2{font-size:25px;max-width:none}
  .hero p{max-width:100%}
  .hero-copy{padding:22px}
  .hero-art{display:none}
  .stats{grid-template-columns:repeat(2,1fr);gap:10px;margin:16px 0 26px}
  .stat{padding:12px;gap:10px}
  .stat-icon{width:34px;height:34px;font-size:17px}
  .stat b{font-size:17px}
  .stat small{font-size:10px}
  .module-head{padding:16px 13px;gap:11px;min-height:80px}
  .module-num{min-width:38px;height:42px;font-size:18px}
  .module-lessons{padding:0 14px 10px 62px}
  .route-aside{grid-template-columns:1fr}
  .right-card.center{display:flex;align-items:center;text-align:left;gap:20px}
  .right-card.center .progress-ring{flex-shrink:0;order:-1;margin:0;width:90px;height:90px}
  .ring-inner{width:74px;height:74px}
  .ring-inner b{font-size:22px}
  .formula-grid{grid-template-columns:1fr}
  .panel{padding:18px}
  .tabs{gap:5px;flex-wrap:nowrap;overflow-x:auto;margin:0 -16px 16px;padding:0 16px;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tab{flex-shrink:0;font-size:13px;padding:9px 13px}
  .result-grid{grid-template-columns:1fr 1fr;gap:8px}
  .result{padding:10px}
  .result strong{font-size:18px}
  .formula{font-size:21px;padding:15px}
  .search-row{flex-direction:column;align-items:stretch}
  .search-row input{max-width:none}
  .question{font-size:20px}
  .practice-layout aside{display:none}
  .profile-grid{grid-template-columns:1fr}
  .badges{grid-template-columns:repeat(2,1fr)}
  dialog{width:100%;max-width:none;height:100dvh;max-height:none;margin:0;border:0;border-radius:0;padding:calc(20px + var(--safe-t)) 18px calc(20px + var(--safe-b))}
  dialog h2{font-size:24px}
  .close{top:calc(10px + var(--safe-t));right:10px}
  .install-card{flex-wrap:wrap}
  .install-card>span:nth-child(2){flex:1;min-width:200px}
  .install-card .install-actions{width:100%;justify-content:flex-end}
  .lesson-bottom>span{display:none}
  .lesson-bottom{flex-direction:column;align-items:stretch;gap:4px;padding-top:12px;position:sticky;bottom:calc(-20px - var(--safe-b));background:var(--paper);padding-bottom:calc(14px + var(--safe-b));margin-bottom:calc(-20px - var(--safe-b))}
  #toast{bottom:calc(84px + var(--safe-b))}
  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:10;background:var(--tabbar);backdrop-filter:saturate(1.6) blur(14px);-webkit-backdrop-filter:saturate(1.6) blur(14px);border-top:1px solid var(--line);padding:6px 4px calc(6px + var(--safe-b))}
  .tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:1px;font-size:10px;font-weight:600;color:var(--faint);padding:4px 0;min-height:50px;position:relative}
  .tabbar a span{font-size:21px;line-height:1.25}
  .tabbar a.active{color:var(--green)}
  .tabbar .count{position:absolute;top:0;left:calc(50% + 6px);margin:0}
}
@media(prefers-reduced-motion:no-preference){button,a{transition:background .16s ease,color .16s ease,border-color .16s ease}.panel,.module,.hero{animation:appear .25s ease}@keyframes appear{from{opacity:.5;transform:translateY(5px)}to{opacity:1;transform:none}}}
