:root{--bg: #f4f7fa;--panel: #ffffff;--ink: #0c1a2b;--muted: #43566e;--faint: #7d8da2;--line: #e3e9f0;--brand: #1a5fb4;--brand-deep: #0f3f7d;--brand-soft: #e9f1fc;--ok: #146c40;--warn: #8a5a00;--bad: #a02525;--core: #fff3d6;--gold: #f0b23c;--radius: 14px;--r-input: 10px;--shadow: 0 1px 2px rgba(12,26,43,.05), 0 14px 34px -14px rgba(12,26,43,.18);--shadow-lg: 0 2px 4px rgba(12,26,43,.04), 0 44px 90px -36px rgba(12,26,43,.32);--ease: cubic-bezier(.22,.61,.36,1);--mono: ui-monospace, SFMono-Regular, Menlo, monospace}*{box-sizing:border-box}body{margin:0;font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0 0 .5rem;line-height:1.25;font-weight:700}h1{font-size:1.35rem;letter-spacing:-.028em}h2{font-size:1.1rem;letter-spacing:-.015em}h3{font-size:.95rem;letter-spacing:-.015em}a{color:var(--brand)}code{font-family:var(--mono);font-size:.85em}a:focus-visible,button:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.app{display:flex;min-height:100vh}.side{width:210px;flex:0 0 210px;color:#fff;background:linear-gradient(155deg,#0b1a2c,#123055 62%,#17406f);padding:1rem .75rem;display:flex;flex-direction:column;gap:.15rem}.side .brand{font-weight:700;font-size:1rem;letter-spacing:-.02em;padding:.25rem .5rem 1rem}.side .brand small{display:block;font-weight:400;font-size:.78rem;color:#a9bfd8;margin-top:.15rem}.side button{background:none;border:0;color:#b8cbe2;text-align:left;padding:.45rem .8rem;border-radius:999px;cursor:pointer;font:inherit}.side button:hover{background:#ffffff17;color:#fff;transform:none}.side button[aria-current=page]{background:#ffffff29;color:#fff;font-weight:600}.side .spacer{flex:1}.side .foot{font-size:.75rem;color:#a9bfd8;padding:.5rem}.main{flex:1;padding:1.25rem 1.5rem 3rem;min-width:0}.head{display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.sub{color:var(--muted);font-size:.82rem}.head .sub{font-size:.85rem}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:1rem;margin-bottom:1rem;box-shadow:var(--shadow)}.row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.grow{flex:1}form.stack{display:flex;flex-direction:column;gap:.6rem}form.stack .arranque{align-self:center}.cols{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}button,select,input:not([type=checkbox],[type=radio],[type=file]){font:inherit;padding:.4rem .6rem;border:1px solid var(--line);border-radius:var(--r-input);background:#fff;color:var(--ink)}button{border-radius:999px;padding:.4rem .95rem;font-weight:500;cursor:pointer;transition:background .2s,border-color .2s,box-shadow .2s,transform .2s var(--ease)}button:hover:not(:disabled){border-color:var(--faint);transform:translateY(-1px)}button:disabled{opacity:.55;cursor:not-allowed}button.primary{background:var(--brand);border-color:transparent;color:#fff;font-weight:600;box-shadow:0 8px 22px -10px #1a5fb4d9}button.primary:hover:not(:disabled){background:var(--brand-deep);border-color:transparent}button.primary.small{box-shadow:none}button.danger{color:var(--bad);border-color:#f6cfcf}button.danger:hover:not(:disabled){background:#fdecec;border-color:var(--bad)}button.small{padding:.18rem .6rem;font-size:.8rem}select:enabled,input[type=checkbox]:enabled,input[type=radio]:enabled,input[type=file],label:has(input[type=checkbox]),label:has(input[type=radio]){cursor:pointer}input::placeholder,textarea::placeholder{color:var(--faint)}label.field{display:flex;flex-direction:column;gap:.2rem;font-size:.8rem;color:var(--muted)}.tabs button[aria-current=page]{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}table{border-collapse:collapse;width:100%;font-size:.85rem}th,td{text-align:left;padding:.35rem .5rem;border-bottom:1px solid var(--line)}th{background:var(--bg);color:var(--muted);font-weight:600;position:sticky;top:0;z-index:1}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tr.bad td{background:#fdecec}.scroll{max-height:65vh;min-height:7rem;overflow:auto;border:1px solid var(--line);border-radius:var(--r-input)}.note{padding:.5rem .7rem;border-radius:var(--r-input);margin-bottom:.4rem;font-size:.85rem;border:1px solid;border-left-width:3px}.note.ok{background:#e7f6ee;border-color:#c2e4d1;border-left-color:var(--ok)}.note.warn{background:#fff3d6;border-color:#eedcb0;border-left-color:var(--warn)}.note.bad{background:#fdecec;border-color:#f6cfcf;border-left-color:var(--bad)}.note.info{background:var(--brand-soft);border-color:#cadff7;border-left-color:var(--brand)}.pill{display:inline-block;padding:.05rem .4rem;border-radius:99px;font-size:.72rem;background:var(--bg);color:var(--muted)}.pill.bad{background:#fdecec;color:var(--bad)}.pill.ok{background:#e7f6ee;color:var(--ok)}.tt{overflow-x:auto}.tt table{table-layout:fixed;min-width:900px}.tt th,.tt td{border:1px solid var(--line);vertical-align:top;padding:2px}.tt thead th:not(.slot){font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);text-align:center}.tt th.slot{width:88px;background:var(--bg);font-size:.72rem;text-align:center}.tt th.slot span{font-weight:400;color:var(--faint)}.tt tr.break td,.tt tr.break th{background:var(--bg);height:18px}.tt tr.break td{text-align:center;font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}.tt td.drop{height:52px}.tt td.legal{background:#e7f6ee;outline:1px dashed var(--ok);outline-offset:-2px;cursor:pointer}.tt td.legal:hover,.tt td.over{background:#c2e4d1}.tt td.drop.free{cursor:pointer}.tt td.drop.free:hover{background:var(--brand-soft);outline:1px dashed #cadff7;outline-offset:-2px}.card{border-radius:8px;padding:3px 5px;font-size:.74rem;line-height:1.25;background:var(--brand-soft);border:1px solid #cadff7;color:#14508f;cursor:grab;height:100%;display:flex;flex-direction:column;justify-content:center}.card.core{background:var(--core);border-color:#eedcb0;color:#8a5a00;font-weight:600}.card.picked{outline:2px solid var(--brand)}.card.conflict{background:#fdecec;border-color:#f6cfcf;color:#a02525}.card .who{color:inherit;opacity:.72;font-size:.68rem}.card .lock{float:right;opacity:.55;font-size:.7rem}.card:active{cursor:grabbing}.tt .card:not(.extra):hover{border-color:currentColor}.patio td.drop{cursor:pointer}.patio td.drop:hover{background:var(--brand-soft);outline:1px dashed var(--brand);outline-offset:-2px}.patio .card{cursor:pointer}.card.extra{background:#f0edfb;border-color:#d9d1f2;color:#513a9c;font-style:italic;cursor:default}.card.extra .x{float:right;border:0;background:transparent;padding:0 .1rem;color:inherit;opacity:.7;cursor:pointer;font-size:.7rem;line-height:1}.card.extra .x:hover{opacity:1}.tt tr.comp th.slot,.tt tr.comp td{background:#f0edfb}.tt tr.break td.drop{height:30px;text-align:left}.printonly{display:none}.chat{display:flex;flex-direction:column;height:calc(100vh - 8rem)}.chat .log,.fixchat .log{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:.6rem;padding:.25rem}.msg{max-width:46rem;padding:.55rem .8rem;border-radius:15px}.msg.user{align-self:flex-end;background:var(--brand);color:#fff;white-space:pre-wrap;border-bottom-right-radius:5px}.msg.assistant{align-self:flex-start;background:#f1f4f8;border-bottom-left-radius:5px}.msg.error{align-self:flex-start;background:#fdecec;border:1px solid #f6cfcf;border-bottom-left-radius:5px}.msg table{margin:.4rem 0;background:#fff;width:auto;max-width:100%}.msg th{position:static}.msg p{margin:0 0 .35rem}.msg p:last-child{margin-bottom:0}.msg ul,.msg ol{margin:.25rem 0;padding-left:1.25rem}.msg code{background:#e8edf3;padding:.05rem .3rem;border-radius:4px}.msg .tools{font-size:.7rem;color:var(--muted);margin-top:.35rem}.chat form,.fixchat form{display:flex;gap:.5rem}.chat form{padding-top:.6rem}.chat form input{flex:1}.suggest{display:flex;gap:.35rem;flex-wrap:wrap;padding:.4rem 0}.suggest button{font-size:.78rem;font-weight:600;color:var(--muted);background:#fff}.login{display:grid;place-items:center;min-height:100vh;background-image:radial-gradient(48% 52% at 18% 12%,rgba(26,95,180,.16),transparent 68%),radial-gradient(42% 46% at 88% 4%,rgba(240,178,60,.18),transparent 70%)}.login form{background:#fff;border:1px solid var(--line);border-radius:18px;padding:1.75rem;width:340px;display:flex;flex-direction:column;gap:.6rem;box-shadow:var(--shadow-lg)}.spin{display:inline-block;width:12px;height:12px;border:2px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:sp .7s linear infinite}@keyframes sp{to{transform:rotate(360deg)}}.drop-zone{border:2px dashed var(--line);border-radius:var(--radius);padding:2rem;text-align:center;color:var(--muted);background:#fff;cursor:pointer}.drop-zone.hot{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}dialog.modal{border:1px solid var(--line);border-radius:var(--radius);padding:1rem;width:min(720px,92vw);max-height:88vh;background:var(--panel);color:var(--ink);box-shadow:var(--shadow-lg)}dialog.modal::backdrop{background:#0c1a2b80}dialog.modal .modal-head{display:flex;align-items:baseline;gap:1rem;margin-bottom:.6rem}dialog.modal .modal-head h2{margin:0;flex:1}dialog.modal .body{max-height:58vh;overflow-y:auto}.progress{height:7px;background:var(--line);border-radius:99px;overflow:hidden;margin:.5rem 0}.progress>i{display:block;height:100%;background:var(--brand);transition:width .3s}.fix-cols{display:grid;gap:1rem;grid-template-columns:minmax(0,1fr) 300px;align-items:start}@media(max-width:900px){.fix-cols{grid-template-columns:1fr}}.fix-side{min-width:0}.fixchat{display:flex;flex-direction:column;gap:.5rem;height:calc(100vh - 17rem);min-height:24rem}.fixchat form{align-items:flex-end}.fixchat textarea{flex:1;resize:none;font:inherit;padding:.4rem .6rem;color:var(--ink);border:1px solid var(--line);border-radius:var(--r-input);background:#fff}.suggest-block{background:var(--brand-soft);border:1px solid #cadff7;border-radius:var(--radius);padding:.5rem .6rem}.suggest-block .sb-head{display:flex;align-items:center;font-weight:600;font-size:.85rem;margin-bottom:.45rem}.suggest-block .sb-chips{display:flex;gap:.35rem;flex-wrap:wrap}.chip{display:inline-flex}.chip>button{font-size:.78rem;text-align:left;background:#fff;border-color:#cadff7;border-radius:999px 0 0 999px;padding-left:.8rem}.chip>button.x{border-left:0;border-radius:0 999px 999px 0;padding:.4rem .6rem .4rem .45rem;color:var(--muted)}.chip>button:hover:not(:disabled){transform:none;background:var(--brand-soft)}.chip.used>button:first-child{text-decoration:line-through}.infotip{display:inline-grid;place-items:center;position:relative;width:15px;height:15px;margin-left:.3rem;vertical-align:middle;border:1px solid var(--brand);border-radius:50%;color:var(--brand);font:600 10px/1 var(--mono);cursor:help;flex:0 0 auto}.infotip .tip{display:none;position:absolute;top:calc(100% + 6px);left:0;width:max-content;max-width:280px;z-index:30;background:var(--ink);color:#fff;border-radius:var(--r-input);padding:.45rem .6rem;font:400 .78rem/1.4 system-ui,sans-serif;text-align:left;white-space:normal;box-shadow:0 10px 24px -12px #0c1a2bcc}th:nth-last-child(-n+3) .infotip .tip{left:auto;right:0}.infotip:hover .tip,.infotip:focus-within .tip{display:block}.pointer{cursor:pointer}.muted{color:var(--muted)}.red{color:var(--bad)}.neg{color:var(--bad);font-weight:600}.t-xs{font-size:.78rem}.stat{font-size:1.8rem;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.stat-sm{font-size:1.3rem;font-weight:700;font-variant-numeric:tabular-nums}.m0{margin:0}.mt0{margin-top:0}.mt1{margin-top:.3rem}.mt2{margin-top:.6rem}.mt3{margin-top:.8rem}.mb2{margin-bottom:.6rem}.ml1{margin-left:.3rem}.list{margin:.3rem 0 .3rem 1.1rem;padding:0}.w-num{width:5rem}.w-code{width:9rem}.w-wide{min-width:220px}.w-check{width:40px}.row.top{align-items:flex-start}.row.loose{gap:1.5rem}.row.center{justify-content:center}.row.tight{gap:.4rem}.row.end{align-items:flex-end}.rowline{padding:.2rem 0}.prewrap{white-space:pre-wrap;max-width:30rem}.bar{display:flex;gap:.4rem;flex:1}tr.off{opacity:.45}tr.skip{opacity:.4;text-decoration:line-through}td.detail{background:var(--bg)}.linklike{background:none;border:0;padding:0;font-weight:600;color:inherit;border-radius:6px}.linklike:hover:not(:disabled){border-color:transparent;transform:none;text-decoration:underline}@media(prefers-reduced-motion:reduce){button{transition:none}button:hover:not(:disabled){transform:none}}@media print{.side,.noprint,.chat form,.fixchat form,.suggest{display:none!important}.printonly{display:block;margin-top:1.5rem;font-size:9pt}.app{display:block}.main{padding:0}.panel{border:0;box-shadow:none;padding:0;margin:0 0 .5rem}.tt table{min-width:0;font-size:8pt}.tt{overflow:visible}.card{background:#fff!important;border:1px solid #999}.card.core{background:#f4f4f4!important}.scroll{max-height:none;overflow:visible;border:0}@page{size:A4 landscape;margin:10mm}}html:has(body.alumno){font-size:18px}body.alumno{font-size:1rem;--bg: #f6efe4;--panel: #fffaf2;--ink: #3f3128;--muted: #6b5a4c;--faint: #a08e7e;--line: #e6d9c8;--brand: #a8654a;--brand-deep: #86503a;--brand-soft: #f3e1d6;--ok: #4f6e4a;--warn: #8a6a1f;--bad: #9c4a3c;--core: #f7ecd2;--gold: #e7c481;--radius: 22px}body.alumno .side{background:linear-gradient(155deg,#5c4636,#7a5a45 62%,#98735a)}body.alumno .side button{color:#eadbc9}body.alumno .side .brand small,body.alumno .side .foot{color:#dcc7b0}body.alumno .login{background-image:radial-gradient(48% 52% at 18% 12%,rgba(168,101,74,.2),transparent 68%),radial-gradient(42% 46% at 88% 4%,rgba(231,196,129,.28),transparent 70%)}body.alumno .login form{background:var(--panel);border-radius:var(--radius)}body.alumno .msg.assistant{background:var(--brand-soft)}.juego{max-width:56rem;margin:0 auto;text-align:center}.juego .fichas{display:flex;flex-wrap:wrap;gap:.8rem;justify-content:center;margin-top:1.2rem}.ficha{flex:1 1 7rem;max-width:12rem;min-height:5.5rem;font-size:2.6rem;font-weight:700;line-height:1;border:3px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer}.ficha small{display:block;font-size:.78rem;font-weight:600;margin-top:.4rem}.ficha.palabra{font-size:1.5rem;letter-spacing:.06em;padding:0 .4rem;font-family:Comic Sans MS,Trebuchet MS,system-ui,sans-serif}.juego .fichas .ficha:nth-child(5n+1){background:#cfdcc4}.juego .fichas .ficha:nth-child(5n+2){background:#f0cdbb}.juego .fichas .ficha:nth-child(5n+3){background:#f2e0b4}.juego .fichas .ficha:nth-child(5n+4){background:#cfdbe3}.juego .fichas .ficha:nth-child(5n+5){background:#e3d6e0}.juego .fichas .ficha.letras{background:#cfdcc4}.juego .fichas .ficha.numeros{background:#cfdbe3}.juego .fichas .ficha.arte{background:#f0cdbb}.juego .fichas .ficha.hecho{background:#b6ce9f}.juego .fichas .ficha.borrar{background:#f0cdbb}.ficha:hover:not(:disabled){transform:scale(1.04);border-color:var(--faint)}.ficha.bien{background:#b6ce9f!important;border-color:var(--ok);transform:scale(1.1)}.ficha.mal{border-color:var(--bad);animation:sacude .4s}@keyframes sacude{25%{transform:translate(-9px)}50%{transform:translate(9px)}75%{transform:translate(-5px)}}.objetos{display:flex;flex-wrap:wrap;gap:.3rem .5rem;justify-content:center;font-size:3.2rem;line-height:1.1}.objetos .tachado{position:relative;opacity:.45}.objetos .tachado:after{content:"✖";position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--bad);font-size:.8em}.objetos.decenas{display:grid;grid-template-columns:repeat(10,1fr)}.escena{font:700 4.5rem/1.1 Comic Sans MS,Trebuchet MS,system-ui,sans-serif;letter-spacing:.12em;color:var(--brand-deep);min-height:5.5rem}.escena.palabra{font-size:3rem}.escena>span+span{margin-left:.15em}.objetos span.foco,.escena span.foco{display:inline-block;transform:scale(1.35);filter:drop-shadow(0 0 .35rem var(--brand-deep));transition:transform .2s ease,filter .2s ease}.hueco.activa{animation:parpadea 1s ease-in-out infinite}@keyframes parpadea{50%{opacity:.2}}.estrellas{font-size:1.8rem;letter-spacing:.1em;min-height:2rem}.trazo{position:relative;width:min(22rem,80vw);height:min(22rem,80vw);margin:1rem auto;border:3px dashed var(--line);border-radius:var(--radius);background:var(--panel)}.trazo .guia{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font:700 14rem/1 Comic Sans MS,Trebuchet MS,system-ui,sans-serif;color:transparent;-webkit-text-stroke:3px var(--faint);-webkit-user-select:none;user-select:none;pointer-events:none}.trazo .guia.falta{animation:parpadea 1.4s ease-in-out infinite}.trazo.cerrado{height:8rem}.trazo.cerrado .guia{color:inherit;-webkit-text-stroke:0;font-size:5rem}.trazo canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;touch-action:none;cursor:crosshair}.tintas{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin:.2rem 0 .8rem}.tinta{width:3rem;height:3rem;padding:0;border-radius:50%;border:3px solid var(--line);box-shadow:var(--shadow);cursor:pointer}.tinta.elegida{border-color:var(--ink);transform:scale(1.15)}.tinta.goma{background:var(--panel);display:grid;place-items:center}.lienzo{width:min(92vw,60vh);aspect-ratio:1;margin:.6rem auto;overflow:hidden;border:3px solid var(--line);border-radius:var(--radius);background:#fff;animation:abre .5s cubic-bezier(.2,1.4,.4,1)}.lienzo svg{display:block;width:100%;height:100%;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.lienzo .line{pointer-events:none}.lienzo .zona{cursor:pointer}.lienzo .zona.lleno{animation:llena .25s ease-out}.lienzo .pinceladas path{fill:none;stroke-linecap:round;stroke-linejoin:round}@keyframes llena{0%{fill-opacity:0}}@keyframes abre{0%{transform:scale(.4);opacity:0}}.mic{position:fixed;bottom:1.2rem;right:1.2rem;z-index:20;width:88px;height:88px;padding:0;border:0;border-radius:50%;background:none;box-shadow:var(--shadow-lg);cursor:pointer}.mic:hover:not(:disabled){transform:scale(1.06)}.mic.oyendo{animation:pulso 1.1s ease-in-out infinite}@keyframes pulso{50%{transform:scale(1.12);filter:brightness(1.12)}}.mic .bocadillo{position:absolute;bottom:100%;right:0;margin-bottom:.6rem;width:min(20rem,70vw);text-align:left;font-size:.85rem;background:var(--panel);color:var(--ink);border:2px solid var(--brand-soft);border-radius:var(--radius);padding:.6rem .8rem;box-shadow:var(--shadow)}.mic.esperando{opacity:.55}.mic.sinpermiso{filter:grayscale(1);opacity:.65}.mic .tachado{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:2.8rem}.mic .cuenta{position:absolute;left:6px;right:6px;bottom:-2px;height:7px;border-radius:4px;background:var(--bad);transform-origin:left;animation:mengua 6s linear forwards}@keyframes mengua{to{transform:scaleX(0)}}.mic .spin{width:34px;height:34px;border-width:4px}.boton-voz.sonando{animation:pulso 1.1s ease-in-out infinite}.boton-voz.rota{color:var(--bad)}.consigna-escrita{font-size:1.3rem;font-weight:600;color:var(--brand-deep)}.ficha.arranque{flex:0 0 auto;min-width:14rem}body.alumno .main{padding-bottom:8rem}@media(max-width:620px){body.alumno .app{flex-direction:column}body.alumno .side{width:auto;flex:0 0 auto;flex-direction:row;align-items:center;flex-wrap:wrap;gap:.4rem;padding:.5rem .75rem}body.alumno .side .brand{padding:0 .5rem 0 0}body.alumno .side .brand small,body.alumno .side .foot,body.alumno .side .spacer{display:none}body.alumno .main{padding:.75rem .6rem 8rem}.objetos{font-size:2.6rem}.objetos.decenas{grid-template-columns:repeat(5,1fr)}.ficha.palabra{font-size:1.2rem}.escena{font-size:3.4rem;min-height:4.5rem}.ficha{flex-basis:5rem;font-size:2.2rem;min-height:4.5rem}.trazo{width:min(20rem,88vw);height:min(20rem,88vw)}}.confeti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:90;overflow:hidden}.confeti i{position:absolute;top:0;left:var(--x);width:10px;height:14px;background:var(--c);border-radius:2px;animation:cae 1.6s ease-in var(--d) forwards}@keyframes cae{0%{transform:translateY(-5vh) rotate(0);opacity:1}to{transform:translateY(105vh) rotate(var(--g));opacity:.4}}@media(prefers-reduced-motion:reduce){.ficha:hover:not(:disabled),.ficha.bien,.tinta.elegida,.mic:hover:not(:disabled){transform:none}.ficha.mal,.mic.oyendo,.mic .cuenta,.boton-voz.sonando,.lienzo,.lienzo .zona.lleno{animation:none}.confeti{display:none}.objetos span.foco,.escena span.foco{transform:none;filter:none;transition:none}.hueco.activa,.trazo .guia.falta{animation:none}}
