.diagram{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;width:100%;max-width:600px;margin:1rem auto;padding:.5rem}@media (width<=480px){.diagram{max-width:100%}}.bloque rect,.esencia rect,.patron rect,.nodo circle{fill:var(--accent);opacity:.85}.bloque text,.esencia text,.patron text,.nodo text{fill:#fff;font-weight:600}.detalle circle,.detalle rect{fill:var(--text-muted);opacity:.5}.rama rect{fill:var(--text-muted);opacity:.6}.rama text{fill:#fff;font-size:10px}.flecha,.arista{stroke:var(--accent);stroke-width:2px;marker-end:url(#arrow)}@media (prefers-reduced-motion:no-preference){.descomposicion .bloque.grande{animation:3s ease-in-out infinite separar}.descomposicion .bloque.sub1{animation:3s ease-in-out .5s infinite aparecer}.descomposicion .bloque.sub2{animation:3s ease-in-out 1s infinite aparecer}.descomposicion .bloque.sub3{animation:3s ease-in-out 1.5s infinite aparecer}.abstraccion .detalle.d1{animation:3s ease-in-out infinite desvanecer}.abstraccion .detalle.d2{animation:3s ease-in-out .5s infinite desvanecer}.abstraccion .detalle.d3{animation:3s ease-in-out 1s infinite desvanecer}.abstraccion .esencia{animation:3s ease-in-out 1.5s infinite resaltar}.patrones .rama.r1{animation:3s ease-in-out infinite converger-izq}.patrones .rama.r2{animation:3s ease-in-out infinite converger-der}.patrones .patron{animation:3s ease-in-out 1.5s infinite resaltar}.grafo .arista.a1{animation:2s linear infinite fluir}.grafo .arista.a2{animation:2s linear 1s infinite fluir}.grafo .nodo.n1{animation:2s ease-in-out infinite pulso}.grafo .nodo.n2{animation:2s ease-in-out .5s infinite pulso}.grafo .nodo.n3{animation:2s ease-in-out 1s infinite pulso}}@keyframes separar{0%,to{transform:translate(0)}50%{transform:translateY(-20px)}}@keyframes aparecer{0%,to{opacity:.3}50%{opacity:1}}@keyframes desvanecer{0%,to{opacity:.5}50%{opacity:.1}}@keyframes resaltar{0%,to{opacity:.6}50%{opacity:1}}@keyframes converger-izq{0%,to{transform:translate(0)}50%{transform:translate(50px,40px)}}@keyframes converger-der{0%,to{transform:translate(0)}50%{transform:translate(-50px,40px)}}@keyframes fluir{0%{stroke-dashoffset:20px}to{stroke-dashoffset:0}}@keyframes pulso{0%,to{opacity:.6}50%{opacity:1}}.lesson-diagram{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;width:100%;max-width:600px;margin:1rem auto;padding:.5rem}@media (width<=480px){.lesson-diagram{max-width:100%}}.diagram-svg{width:100%;height:auto;display:block}.identidad-capas .nucleo circle{fill:var(--accent);opacity:.95}.identidad-capas .nucleo text{fill:#fff;font-weight:700}.identidad-capas .capa circle{fill:var(--accent);opacity:.18;stroke:var(--accent);stroke-width:1.5px}.identidad-capas .capa text{fill:var(--text-muted);font-size:11px;font-weight:600}.lesson-diagram .col rect{fill:var(--bg-card);stroke:var(--border);stroke-width:1.5px}.lesson-diagram .col text{fill:var(--text-muted);font-size:11px}.lesson-diagram .col text[font-weight="700"]{fill:var(--accent);font-size:12px}.contrato-antes-despues .col.despues rect{stroke:var(--accent);fill:var(--accent-soft)}.contrato-antes-despues .col.despues text{fill:var(--text-muted)}.reglas-tres-columnas .col.general rect{stroke:var(--accent)}.reglas-tres-columnas .col.loop rect{stroke:var(--success)}.reglas-tres-columnas .col.loop text[font-weight="700"]{fill:var(--success)}.limites-sin-con .col.sin rect{stroke:var(--danger);fill:#ff5c5c14}.limites-sin-con .col.sin text[font-weight="700"]{fill:var(--danger)}.limites-sin-con .col.con rect{stroke:var(--success);fill:#5cff8a14}.limites-sin-con .col.con text[font-weight="700"]{fill:var(--success)}@media (prefers-reduced-motion:no-preference){.identidad-capas .capa.c1{animation:4s ease-in-out infinite capa-pulso}.identidad-capas .capa.c2{animation:4s ease-in-out .5s infinite capa-pulso}.identidad-capas .capa.c3{animation:4s ease-in-out 1s infinite capa-pulso}.identidad-capas .capa.c4{animation:4s ease-in-out 1.5s infinite capa-pulso}.contrato-antes-despues .col.despues rect,.reglas-tres-columnas .col.loop rect,.limites-sin-con .col.con rect{animation:3s ease-in-out infinite resaltar-borde}}@keyframes capa-pulso{0%,to{opacity:.18}50%{opacity:.4}}@keyframes resaltar-borde{0%,to{stroke-width:1.5px}50%{stroke-width:3px}}.back{color:var(--text-muted);align-items:center;min-height:48px;font-size:.9rem;text-decoration:none;display:inline-flex}.muted{color:var(--text-muted)}.tasks{margin-top:1.5rem}.tasks h2{margin-bottom:.5rem}.step-progress{color:var(--accent);margin-bottom:1rem;font-weight:600}.progress-track{background:var(--border);border-radius:999px;width:100%;height:10px;margin-bottom:.75rem;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--accent), var(--accent-hover));border-radius:999px;width:0%;height:100%;transition:width .25s}.step-dots{flex-wrap:wrap;gap:.4rem;margin-bottom:1rem;display:flex}.dot{background:var(--border);border-radius:999px;width:12px;height:12px;transition:background .2s,transform .2s}.dot.active{background:var(--accent);transform:scale(1.3)}.dot.done{background:var(--accent);opacity:.5}.tasks-list{flex-direction:column;gap:1rem;display:flex}.task{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:1.5rem}.task[hidden]{display:none}.task-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.task-title{font-size:1.1rem;font-weight:600}.task-phase{text-transform:uppercase;letter-spacing:.05em;background:var(--accent-soft,#ffffff14);color:var(--accent);border-radius:999px;padding:.2rem .6rem;font-size:.75rem}.task-content{color:var(--text-muted);white-space:pre-line;margin-bottom:1rem;font-size:.95rem;line-height:1.6}.task-content p{margin:0 0 1rem;line-height:1.7}.task-content p:last-child{margin-bottom:0}.task-content pre{background:var(--bg-card,#ffffff0a);border:1px solid var(--border);border-radius:8px;margin:.5rem 0 1rem;padding:.75rem 1rem;overflow-x:auto}.task-content pre code{white-space:pre;color:var(--text-primary,#e8e8e8);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem;line-height:1.5;display:block}.infografia{border:1px solid var(--border);cursor:zoom-in;border-radius:12px;width:100%;max-width:600px;margin:.5rem auto 1rem;display:block}@media (width<=480px){.infografia{max-width:100%}}.lightbox{z-index:1000;background:#000000d9;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.lightbox[hidden]{display:none}.lightbox-img{object-fit:contain;border-radius:8px;max-width:100%;max-height:100%;box-shadow:0 0 40px #0009}.lightbox-close{border:1px solid var(--border);color:#fff;cursor:pointer;background:#ffffff1a;border-radius:999px;width:2.5rem;height:2.5rem;font-size:1.25rem;line-height:1;position:absolute;top:1rem;right:1rem}.lightbox-close:hover{background:#fff3}.task-quiz{flex-direction:column;gap:.5rem;margin:.5rem 0 1rem;display:flex}.quiz-option{background:var(--bg);border:1px solid var(--border);color:var(--text);cursor:pointer;text-align:left;border-radius:8px;min-height:48px;padding:.9rem 1rem;font-size:.95rem;transition:border-color .2s,background .2s,transform .1s}.quiz-option:hover{border-color:var(--accent)}.quiz-option:active{transform:scale(.98)}.quiz-option.selected.correct{border-color:var(--success);background:#5cff8a1f}.quiz-option.selected.wrong{border-color:var(--danger);background:#ff5c5c1f}.quiz-feedback{margin-top:.25rem;font-weight:600}.quiz-feedback.ok{color:var(--success)}.quiz-feedback.err{color:var(--danger)}.mixing-quiz{border:1px solid var(--accent);background:#c9a86a0f;border-radius:.7rem;margin:.5rem 0 1rem;padding:1rem}.mixing-title{color:var(--text);margin-bottom:.25rem;font-size:1rem;font-weight:700}.mixing-intro{color:var(--text-muted);margin-bottom:.75rem;font-size:.9rem}.order-pool{flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem;display:flex}.order-item{background:var(--bg);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:8px;min-height:48px;padding:.7rem .9rem;font-size:.9rem;transition:border-color .2s,opacity .2s,transform .1s}.order-item:hover{border-color:var(--accent)}.order-item:active{transform:scale(.98)}.order-item.used{opacity:.4;pointer-events:none}.order-slot{border:1px dashed var(--border);border-radius:8px;flex-wrap:wrap;gap:.4rem;min-height:3rem;margin-bottom:.75rem;padding:.5rem;display:flex}.order-chip{border:1px solid var(--accent);color:var(--text);cursor:pointer;background:#c9a86a1f;border-radius:6px;min-height:48px;padding:.5rem .7rem;font-size:.85rem}.blank-input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;width:100%;max-width:10rem;min-height:48px;padding:.6rem .7rem;font-size:.95rem}.task-vf{gap:.5rem;margin-bottom:.75rem;display:flex}.vf-option{background:var(--bg);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:8px;min-height:48px;padding:.8rem 1.4rem;font-size:.95rem;transition:border-color .2s,transform .1s}.vf-option:hover{border-color:var(--accent)}.vf-option:active{transform:scale(.98)}.vf-option.selected.correct{border-color:var(--success);background:#5cff8a1f}.vf-option.selected.wrong{border-color:var(--danger);background:#ff5c5c1f}.task-matching{flex-direction:column;gap:1rem;margin-bottom:1rem;display:flex}.match-terms,.match-defs{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.match-term{border:1px solid var(--accent);background:#c9a86a1a;border-radius:8px;padding:.6rem .8rem;font-weight:700}.match-def{background:var(--bg);border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;gap:.75rem;padding:.6rem .8rem;display:flex}.match-def-text{font-size:.9rem;line-height:1.4}.match-select{background:var(--bg-card);color:var(--text);border:1px solid var(--border);border-radius:8px;flex-shrink:0;max-width:11rem;min-height:44px;padding:.5rem .6rem;font-size:.9rem}.micro-feedback{margin-top:.25rem;font-weight:600}.micro-feedback.ok{color:var(--success)}.micro-feedback.err{color:var(--danger)}@keyframes pop-in{0%{opacity:0;transform:scale(.8)}60%{transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.micro-feedback.ok,.quiz-feedback.ok{animation:.2s pop-in}.micro-feedback.err,.quiz-feedback.err{animation:.2s shake}@media (prefers-reduced-motion:reduce){.micro-feedback.ok,.quiz-feedback.ok,.micro-feedback.err,.quiz-feedback.err,.dot,.progress-fill,.card,.lesson-card{transition:none;animation:none}.md-hint summary:after{transition:none}}.gating-msg{color:#ffc800;background:#ffc8001f;border:1px solid #ffc8004d;border-radius:8px;margin-top:.75rem;padding:.5rem .75rem;font-size:.85rem;display:block}.ff-msg{color:var(--accent-hover);background:#c9a86a1f;border:1px solid #c9a86a4d;border-radius:8px;margin-top:.5rem;padding:.5rem .75rem;font-size:.85rem;display:block}.step-nav{justify-content:space-between;align-items:center;gap:1rem;margin-top:1.5rem;display:flex}.step-nav .btn{min-height:48px;padding:.7rem 1.4rem;font-size:1rem}.step-count{color:var(--text-muted);font-size:.85rem}.btn-ghost{border:1px solid var(--border);color:var(--text-muted);background:0 0}.btn-ghost:disabled{opacity:.4;cursor:not-allowed}.task-exercise,.task-exercise .btn{margin-top:.5rem}.rubric-result{background:var(--bg);border:1px solid var(--border);border-radius:8px;margin-top:.75rem;padding:.75rem}.rubric-result .score{color:var(--accent);font-size:1.25rem;font-weight:700}.rubric-result ul{margin-top:.5rem;padding-left:1.25rem;font-size:.85rem}.next-btn{text-align:center;margin-top:1.5rem;display:block}.btn.done{border-color:var(--success);color:var(--success);cursor:not-allowed;background:#5cff8a1f}.xp-toast{background:var(--accent-btn);color:#fff;opacity:0;z-index:1000;pointer-events:none;border-radius:999px;padding:.6rem 1.2rem;font-size:.95rem;font-weight:700;transition:opacity .2s,transform .2s;position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%)translateY(20px);box-shadow:0 4px 20px #0006}.xp-toast.show{opacity:1;transform:translate(-50%)translateY(0)}.md-body{flex-direction:column;gap:.9rem;display:flex}.md-body>span{line-height:1.6;display:block}.md-list{flex-direction:column;gap:.5rem;margin:.25rem 0 0;padding:0;list-style:none;display:flex}.md-list li{border:1px solid #ffffff14;border-left:3px solid var(--accent);background:#ffffff0a;border-radius:.6rem;align-items:flex-start;gap:.6rem;padding:.6rem .9rem;font-size:.95rem;line-height:1.5;display:flex}.md-list li:before{content:"→";color:var(--accent);flex-shrink:0;font-weight:700}.md-code{background:#0b0d12;border:1px solid #ffffff1a;border-radius:.7rem;margin:.5rem 0;overflow:hidden}.md-code figcaption{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);background:#ffffff0f;padding:.35rem .9rem;font-size:.75rem;font-weight:600}.md-code pre{margin:0;padding:.9rem 1rem;overflow-x:auto}.md-code code{color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88rem;line-height:1.55}.md-body strong{color:#fff;font-weight:700}.md-body em{color:var(--text-muted)}@media (width<=480px){.md-body{gap:.7rem}.md-list{gap:.45rem}.md-list li{border-left-width:4px;gap:.45rem;padding:.7rem .85rem;font-size:1rem;line-height:1.55}.md-list li:before{content:"→";margin-top:.05rem}.md-code pre{padding:.85rem .9rem}.md-code code{font-size:.9rem}.md-body>span{font-size:1rem;line-height:1.65}.md-body strong{font-size:1rem}}.md-def{background:#c9a86a14;border:1px solid #c9a86a40;border-radius:.7rem;flex-direction:column;gap:.35rem;padding:.8rem 1rem;display:flex}.md-def-term{background:var(--accent);color:#fff;text-transform:uppercase;letter-spacing:.05em;border-radius:999px;align-self:flex-start;padding:.2rem .7rem;font-size:.8rem;font-weight:700;display:inline-block}.md-def-body{color:var(--text);font-size:.95rem;line-height:1.55}.md-hint{border:1px solid #c9a86a40;border-left:4px solid var(--accent);border-radius:.6rem;margin:.5rem 0;overflow:hidden}.md-hint summary{cursor:pointer;color:var(--accent);user-select:none;background:#c9a86a14;align-items:center;gap:.45rem;padding:.55rem .9rem;font-size:.92rem;font-weight:600;list-style:none;display:flex}.md-hint summary::-webkit-details-marker{display:none}.md-hint summary:after{content:"▸";margin-left:auto;transition:transform .15s}.md-hint[open] summary:after{transform:rotate(90deg)}.md-hint-body{color:var(--text);border-top:1px solid #c9a86a26;padding:.7rem .9rem;font-size:.92rem;line-height:1.55}.md-hint-toggle{font-size:1rem}.md-challenge{border:1px solid #c9a86a4d;border-left:4px solid var(--accent);color:var(--text);background:#c9a86a1a;border-radius:.6rem;padding:.7rem .9rem;font-size:.92rem;line-height:1.55}.md-summary{border:1px solid #5cff8a4d;border-left:4px solid var(--success);background:#5cff8a14;border-radius:.6rem;padding:.7rem .9rem;font-size:.92rem;line-height:1.55}.md-before,.md-after{border:1px solid #ffffff1a;border-left:4px solid var(--text-muted);background:#ffffff08;border-radius:.6rem;padding:.7rem .9rem;font-size:.92rem;line-height:1.55}.md-tip{border:1px solid #c9a86a40;border-left:4px solid var(--accent);background:#c9a86a14;border-radius:.6rem;padding:.7rem .9rem;font-size:.92rem;line-height:1.55}@media (width<=480px){.md-def-body,.md-hint,.md-challenge,.md-summary,.md-before,.md-after,.md-tip{padding-left:1rem;font-size:1rem;line-height:1.6}.md-def-term{font-size:.85rem}}.live-graph{background:#00000040;border:1px dashed #ffffff26;border-radius:.7rem;margin-top:1rem;padding:.6rem}.live-svg{width:100%;height:auto;max-height:170px;display:block}
