@import "https://fonts.googleapis.com/css2?family=Red+Hat+Display:wght@500;700;900&family=Nunito:wght@400;600;700;800;900&family=Fira+Code:wght@400;600&display=swap";:root{--purple:#6b46ff;--purple-dark:#3f1fd1;--purple-text:#5a35f0;--purple-soft:#ede7ff;--cyan:#00c2d1;--lime:#a3e635;--lime-dark:#4d7c0f;--orange:#ff8a00;--orange-soft:#ffe2bf;--orange-text:#7a3a00;--ink:#0d1025;--ink-2:#1b2040;--ink-3:#2a3058;--bg:#f2f4f7;--line:#e4e7ef;--muted:#454b66;--muted-2:#5b6178;--white:#fff;--radius:24px;--display:"Red Hat Display", system-ui, sans-serif;--body:"Nunito", system-ui, sans-serif;--mono:"Fira Code", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;font-size:16px}a{color:var(--purple-text)}a:hover{color:var(--purple-dark)}button{font-family:inherit}:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}h1,h2,h3{font-family:var(--display);margin:0;font-weight:900}p{margin:0}.page{flex-direction:column;gap:22px;max-width:1200px;margin:0 auto;padding:28px 20px 64px;display:flex}.row{flex-wrap:wrap;gap:22px;display:flex}.grow{flex:999 460px;min-width:0}.side{flex-direction:column;flex:320px;gap:18px;min-width:0;display:flex}.stack{flex-direction:column;gap:12px;display:flex}.card{background:var(--white);border-radius:var(--radius);flex-direction:column;gap:14px;padding:24px;display:flex}.card.dark{background:var(--ink);color:var(--white)}.card.outlined{border:3px solid var(--purple)}.eyebrow{color:var(--purple-text);letter-spacing:1px;text-transform:uppercase;font-size:13px;font-weight:800}.muted{color:var(--muted)}.small{font-size:14px}.tiny{font-size:13px}.title-xl{font-size:clamp(28px,4vw,36px);line-height:1.15}.title-l{font-size:22px}.title-m{font-size:19px}.between{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.topbar{background:var(--ink);color:var(--white);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding:12px 24px;display:flex;position:relative}.brand{font-family:var(--display);color:var(--white);font-size:26px;font-weight:900;text-decoration:none}.brand span{color:var(--cyan)}.brand:hover{color:var(--white)}.brand-logo{align-items:center;display:inline-flex}.brand-logo img{width:auto;height:40px;display:block}.mainnav{flex-wrap:wrap;gap:4px;display:flex}.mainnav a{color:#c9cde0;border-radius:999px;padding:10px 16px;font-size:16px;font-weight:800;text-decoration:none}.mainnav a:hover{color:var(--white);background:var(--ink-2)}.mainnav a[aria-current=page]{color:var(--ink);background:var(--lime)}.hero{background:#ecfbd4}.crumbs{color:#c9cde0;flex-wrap:wrap;align-items:center;gap:8px;font-size:15px;display:flex}.crumbs a{color:#c9cde0}.crumbs strong{color:var(--white)}.pill{background:var(--ink-2);color:var(--white);cursor:pointer;border:none;border-radius:999px;align-items:center;gap:8px;padding:9px 14px;font-size:15px;font-weight:800;text-decoration:none;display:inline-flex}a.pill:hover{color:var(--white);background:var(--ink-3)}.badge{background:var(--orange);color:var(--ink);border-radius:999px;justify-content:center;align-items:center;min-width:22px;height:22px;padding:0 6px;font-size:12px;font-weight:900;display:inline-flex}.btn{cursor:pointer;border:none;border-radius:999px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:13px 24px;font-size:16px;font-weight:800;text-decoration:none;transition:transform .1s,background .15s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--purple);color:var(--white)}.btn.primary:hover{background:var(--purple-dark);color:var(--white)}.btn.secondary{background:var(--bg);color:var(--ink)}.btn.secondary:hover{background:var(--line);color:var(--ink)}.btn.outline{background:var(--white);color:var(--ink);border:2px solid #d5d9e3}.btn.dark{background:var(--ink);color:var(--white)}.btn.dark:hover{color:var(--white);background:var(--ink-2)}.btn.big{padding:16px 30px;font-size:18px}.btn.link{color:var(--muted);background:0 0;padding:10px;text-decoration:underline}.btn:disabled,.btn[aria-disabled=true]{color:var(--muted);cursor:not-allowed;background:#d5d9e3}.bar{background:var(--line);border-radius:999px;height:12px;overflow:hidden}.bar>span{background:var(--purple);border-radius:999px;height:100%;transition:width .4s;display:block}.big-number{font-family:var(--display);color:var(--purple-text);font-size:52px;font-weight:900;line-height:1}.stat{background:var(--bg);border-radius:16px;flex-direction:column;gap:2px;padding:12px;display:flex}.stat strong{font-size:18px}.stats{grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px;display:grid}.stats .stat strong{white-space:nowrap}.tag{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;font-weight:800;display:inline-flex}.tag.purple{background:var(--purple);color:var(--white)}.tag.soft{background:var(--purple-soft);color:var(--purple-dark)}.tag.lime{background:var(--lime);color:var(--ink)}.tag.orange{background:var(--orange-soft);color:var(--orange-text)}.tag.cyan{color:#0e5a61;background:#e0f7fa}.tag.gray{background:var(--line);color:var(--muted)}.item{background:var(--white);border:2px solid #0000;border-radius:20px;flex-wrap:wrap;align-items:center;gap:16px;padding:16px 18px;display:flex}.item.current{border:3px solid var(--purple)}.item.locked{background:#e9ecf2}.item.locked .item-title{color:var(--muted)}.item-body{flex-direction:column;flex:220px;gap:3px;display:flex}.item-title{font-family:var(--display);font-size:18px;font-weight:800}.dot{border-radius:50%;flex:none;justify-content:center;align-items:center;width:46px;height:46px;font-size:18px;font-weight:900;display:flex}.dot.done{background:var(--purple);color:var(--white)}.dot.now{background:var(--lime);color:var(--ink)}.dot.lock{color:var(--muted);background:#d5d9e3}.locked-label{color:var(--muted-2);align-items:center;gap:6px;font-size:14px;font-weight:700;display:inline-flex}.route-node{width:82px;height:82px;font-family:var(--display);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:28px;font-weight:900;display:flex}.route-node.completed{background:var(--purple);color:var(--white);box-shadow:0 6px 0 var(--purple-dark)}.route-node.available{background:var(--lime);color:var(--ink);box-shadow:0 6px 0 var(--lime-dark);border:4px solid var(--white)}.route-node.locked{background:var(--line);color:var(--muted-2);box-shadow:0 6px #c9cde0}.route-link{border-left:4px dotted var(--purple);width:0;height:30px;margin-left:39px}.route-link.locked{border-left-color:#c9cde0}.mini-route{flex-wrap:nowrap;justify-content:safe center;align-items:flex-start;padding:4px 0;display:flex;overflow-x:auto}.mini-step{text-align:center;flex-direction:column;flex:none;align-items:center;gap:6px;width:84px;display:flex}.mini-node{border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;font-size:18px;font-weight:900;display:flex}.mini-node.completed{background:var(--purple);color:var(--white)}.mini-node.available{background:var(--lime);color:var(--ink);border:3px solid var(--lime-dark)}.mini-node.locked{background:var(--line);color:var(--muted-2)}.mini-dots{flex:none;align-items:center;gap:5px;height:52px;padding:0 2px;display:flex}.mini-dots span{background:var(--line);border-radius:50%;width:6px;height:6px}.mini-dots.done span{background:var(--purple)}.tabs{flex-wrap:wrap;gap:8px;display:flex}.tab{cursor:pointer;background:var(--white);color:var(--ink);border:none;border-radius:999px;align-items:center;gap:8px;min-height:44px;padding:11px 18px;font-size:15px;font-weight:800;display:inline-flex}.tab[aria-selected=true]{background:var(--purple);color:var(--white)}.tab:disabled{background:var(--line);color:var(--muted-2);cursor:not-allowed}.activity-bar{flex:220px;gap:6px;max-width:360px;display:flex}.activity-bar span{background:var(--ink-3);border-radius:999px;flex:1;height:8px}.activity-bar span.done{background:var(--purple)}.activity-bar span.now{background:var(--lime)}pre.code{background:var(--ink);color:#e8eaf6;font-family:var(--mono);border-radius:18px;margin:0;padding:20px 22px;font-size:16px;line-height:1.7;overflow-x:auto}.editor{background:var(--ink);border-radius:20px;overflow:hidden}.editor-head{background:var(--ink-2);color:#c9cde0;flex-wrap:wrap;justify-content:space-between;gap:10px;padding:10px 16px;font-size:14px;font-weight:700;display:flex}.editor .cm-editor{min-height:280px;font-size:16px}.editor .cm-editor.cm-focused{outline:none}.editor .cm-scroller{font-family:var(--mono);line-height:1.7}.console{background:var(--ink-2);color:#e8eaf6;border-radius:18px;flex-direction:column;gap:6px;padding:16px 18px;display:flex}.console.error{background:#3b1020}.console pre{font-family:var(--mono);white-space:pre-wrap;margin:0;font-size:15px}.console-label{letter-spacing:1px;text-transform:uppercase;color:#8c93b8;font-size:12px;font-weight:800}.test-row{border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 12px;font-size:14px;display:flex}.test-row.ok{background:#eef9da}.test-row.ok strong{color:#3f6212}.test-row.bad{background:#fff1e0}.test-row.bad strong{color:#9a3412}.req{align-items:flex-start;gap:10px;display:flex}.req-dot{background:var(--bg);border-radius:50%;flex:none;justify-content:center;align-items:center;width:24px;height:24px;font-size:13px;font-weight:900;display:flex}.options{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}@media (width<=560px){.options{grid-template-columns:1fr}}.option{text-align:left;cursor:pointer;min-height:64px;font-family:var(--mono);white-space:pre-line;background:var(--white);color:var(--ink);border:2px solid #d5d9e3;border-radius:18px;align-items:center;gap:12px;padding:16px;font-size:16px;display:flex}.option .key{width:30px;height:30px;font-family:var(--body);background:var(--bg);border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:900;display:flex}.option.selected{border:3px solid var(--purple)}.option.selected .key{background:var(--purple);color:var(--white)}.option.wrong{background:var(--orange-soft);border:3px solid #c2410c}.option.wrong .key{color:var(--white);background:#c2410c}.option.right{background:var(--lime);border:3px solid var(--lime-dark)}.option.right .key{background:var(--ink);color:var(--white)}.option:disabled{cursor:default}.option.dim{opacity:.6}.wait{background:var(--orange-soft);border-radius:18px;flex-wrap:wrap;align-items:center;gap:16px;padding:18px 20px;display:flex}.wait-clock{background:var(--white);width:64px;height:64px;font-family:var(--display);color:var(--orange-text);border:4px solid #c2410c;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:22px;font-weight:900;display:flex}.shake{animation:.4s ease-in-out shake}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-5px)}80%{transform:translate(5px)}}.overlay{z-index:50;background:#0d1025c2;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--white);text-align:center;border-radius:28px;flex-direction:column;align-items:center;gap:14px;width:min(460px,100%);max-height:calc(100vh - 40px);padding:32px;animation:.3s ease-out pop;display:flex;position:relative;overflow-y:auto}.modal-close{background:var(--bg);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;display:flex;position:absolute;top:14px;right:14px}@keyframes pop{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.spot{z-index:30;position:relative;box-shadow:0 0 0 4px var(--lime), 0 0 0 9999px #0d10259e!important}.tour-card{z-index:60;background:var(--white);border-radius:22px;flex-direction:column;gap:12px;width:min(380px,100% - 32px);padding:22px;animation:.25s ease-out pop;display:flex;position:fixed;bottom:16px;right:16px;box-shadow:0 18px 50px #0d102559}.tour-dots{gap:6px;display:flex}@media (width<=560px){.tour-card{gap:8px;padding:16px}.tour-card .title-l{font-size:19px}.tour-card p{font-size:15px}}.tour-dots span{background:var(--line);border-radius:999px;flex:1;height:6px}.tour-dots span.on{background:var(--purple)}.tour-blocker{z-index:25;position:fixed;inset:0}.box-shake{animation:1.1s ease-in-out boxshake}@keyframes boxshake{0%,to{transform:rotate(0)scale(1)}15%{transform:rotate(-9deg)scale(1.04)}30%{transform:rotate(9deg)scale(1.06)}45%{transform:rotate(-11deg)scale(1.08)}60%{transform:rotate(11deg)scale(1.1)}75%{transform:rotate(-6deg)scale(1.14)}90%{transform:rotate(0)scale(1.2)}}.rays{animation:8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.reveal{animation:.6s cubic-bezier(.2,.9,.3,1.3) reveal}@keyframes reveal{0%{opacity:0;transform:scale(.2)rotate(-20deg)}70%{opacity:1;transform:scale(1.15)rotate(4deg)}to{transform:scale(1)rotate(0)}}.toast{z-index:70;background:var(--ink);color:var(--white);border-radius:999px;align-items:center;gap:10px;max-width:calc(100% - 32px);padding:14px 22px;font-weight:800;animation:2.8s ease-out forwards toast;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}@keyframes toast{0%{opacity:0;transform:translate(-50%,16px)}12%{opacity:1;transform:translate(-50%)}85%{opacity:1}to{opacity:0}}.inv-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;display:grid}.inv-item{text-align:left;border:2px solid var(--line);color:var(--ink);cursor:pointer;background:#f7f8fb;border-radius:18px;flex-direction:column;gap:10px;padding:14px;display:flex;position:relative}.inv-item.on{border:3px solid var(--purple);background:#f4fbe6}.inv-item:disabled{opacity:.7;cursor:not-allowed}.inv-swatch{border-radius:14px;justify-content:center;align-items:center;height:64px;font-size:13px;font-weight:900;display:flex}.new-flag{background:var(--orange);color:var(--ink);border-radius:999px;padding:3px 8px;font-size:11px;font-weight:900;position:absolute;top:8px;right:8px}.hw-steps{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.hw-steps li{color:var(--muted-2);background:#f7f8fb;border-radius:14px;flex-direction:column;gap:6px;padding:10px;font-size:13px;font-weight:800;display:flex}.hw-steps li span{background:var(--line);border-radius:999px;height:6px}.hw-steps li.done{color:var(--ink)}.hw-steps li.done span{background:var(--purple)}.hw-steps li.now{color:var(--ink);background:#f4fbe6}.hw-steps li.now span{background:var(--lime)}.login-wrap{background:var(--ink);flex-direction:column;justify-content:center;align-items:center;gap:28px;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--white);border-radius:28px;flex-direction:column;gap:18px;width:min(560px,100%);padding:32px;display:flex}.who{text-align:left;border:2px solid var(--line);background:var(--white);cursor:pointer;border-radius:20px;align-items:center;gap:14px;width:100%;padding:14px;display:flex}.who:hover{border-color:var(--purple)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.notif-panel{z-index:40;background:var(--white);width:min(360px,100vw - 32px);color:var(--ink);border-radius:20px;flex-direction:column;gap:6px;padding:12px;animation:.2s ease-out pop;display:flex;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 18px 50px #0d10254d}.notif-item{color:var(--ink);border-radius:14px;flex-direction:column;gap:3px;padding:10px 12px;text-decoration:none;display:flex}.notif-item:hover{background:var(--bg);color:var(--ink)}.notif-item.unread{background:var(--purple-soft)}.badge-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;display:grid}.badge-card{text-align:center;background:#f7f8fb;border:2px dashed #dde1e9;border-radius:20px;flex-direction:column;align-items:center;gap:8px;padding:18px 14px;display:flex}.badge-card.earned{border:2px solid var(--purple);background:#f4f0ff}.badge-card.next{background:var(--white);border:2px dashed var(--purple)}.badge-course{border-top:1px solid #eef0f5;flex-direction:column;gap:10px;padding-top:14px;display:flex}.badge-card .bar{width:100%}.badge-mini{color:inherit;background:#f7f8fb;border-radius:16px;align-items:center;gap:12px;padding:10px 12px;text-decoration:none;display:flex}@media (width<=520px){.mini-step{flex:1 1 0;gap:4px;width:auto;min-width:0}.mini-route{justify-content:space-between}.mini-step .tiny{font-size:10px}.mini-route .mini-node{width:40px;height:40px;font-size:16px}.mini-dots{gap:3px;height:40px;padding:0}.mini-dots span{width:4px;height:4px}.mini-dots span:nth-child(3){display:none}}.topbar .who-chip{color:#c9cde0;align-items:center;gap:10px;font-size:15px;font-weight:800;display:flex}.avatar{width:40px;height:40px;font-family:var(--display);color:var(--ink);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:16px;font-weight:900;display:flex}.avatar.lg{width:64px;height:64px;font-size:26px}.role-tag{background:var(--cyan);color:var(--ink);letter-spacing:.5px;text-transform:uppercase;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:900}.kpis{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;display:grid}.kpi{background:var(--white);color:var(--ink);border:2px solid #0000;border-radius:20px;flex-direction:column;gap:6px;padding:18px 20px;text-decoration:none;display:flex}a.kpi:hover{border-color:var(--purple);color:var(--ink)}.kpi .num{font-family:var(--display);font-size:40px;font-weight:900;line-height:1}.kpi.alert .num{color:#c2410c}.kpi.todo .num{color:var(--purple-text)}.kpi.ok .num{color:var(--lime-dark)}.group-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:18px;display:grid}.table-wrap{background:var(--white);border-radius:var(--radius);overflow-x:auto}table.list{border-collapse:collapse;width:100%;min-width:760px;font-size:15px}table.list th{text-align:left;letter-spacing:.8px;text-transform:uppercase;color:var(--muted-2);border-bottom:2px solid var(--line);white-space:nowrap;padding:14px 16px;font-size:12px;font-weight:800}table.list td{vertical-align:middle;border-bottom:1px solid #eef0f5;padding:12px 16px}table.list tr:last-child td{border-bottom:none}table.list tr.clickable{cursor:pointer}table.list tr.clickable:hover td{background:#f7f5ff}.name-cell{align-items:center;gap:12px;font-weight:800;display:flex}.name-cell a{color:var(--ink);text-decoration:none}.mini-bar{gap:4px;min-width:90px;display:flex}.mini-bar span{background:var(--line);border-radius:999px;flex:1;height:8px}.mini-bar span.done{background:var(--purple)}.mini-bar span.now{background:var(--lime)}.alert-tags{flex-wrap:wrap;gap:6px;display:flex}.tag.red{color:#9a1b0c;background:#ffe4e0}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--white);cursor:pointer;color:var(--ink);border:2px solid #d5d9e3;border-radius:999px;padding:8px 14px;font-size:14px;font-weight:800}.chip[aria-pressed=true]{background:var(--ink);color:var(--white);border-color:var(--ink)}.heat{border-collapse:separate;border-spacing:6px;font-size:14px}.heat th{color:var(--muted-2);text-align:center;padding:4px;font-size:12px;font-weight:800}.heat th.name{text-align:left;min-width:150px}.heat td.cell{text-align:center;cursor:pointer;border-radius:12px;width:74px;height:44px;font-size:13px;font-weight:900}.cell.completada{background:var(--purple);color:var(--white)}.cell.en_progreso{background:var(--lime);color:var(--ink)}.cell.disponible{border:2px dashed var(--lime-dark);color:var(--lime-dark);background:#fff}.cell.bloqueada{background:var(--line);color:var(--muted-2)}.heat td.cell.group-now{box-shadow:0 0 0 3px var(--orange)}.legend{color:var(--muted);flex-wrap:wrap;gap:14px;font-size:13px;font-weight:700;display:flex}.legend i{vertical-align:-2px;border-radius:5px;width:14px;height:14px;margin-right:6px;display:inline-block}.readonly-banner{color:#0e5a61;background:#e0f7fa;border-radius:16px;align-items:center;gap:10px;padding:12px 16px;font-size:14px;font-weight:700;display:flex}.q-card{background:var(--white);border-radius:20px;flex-direction:column;gap:12px;padding:20px;display:flex}.q-opt{font-family:var(--mono);white-space:pre-line;border:2px solid #e4e7ef;border-radius:14px;align-items:flex-start;gap:12px;padding:10px 14px;font-size:15px;display:flex}.q-opt .key{background:var(--bg);width:26px;height:26px;font-family:var(--body);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:13px;font-weight:900;display:flex}.q-opt.correct{border-color:var(--lime-dark);background:#f4fbe6}.q-opt.picked{border:3px solid var(--purple)}.q-opt.picked .key{background:var(--purple);color:#fff}.q-opt.wrongpick{background:var(--orange-soft);border-color:#f3b37a}.q-opt .notes{font-family:var(--body);flex-wrap:wrap;justify-content:flex-end;gap:6px;margin-left:auto;font-size:12px;font-weight:800;display:flex}.timeline{flex-direction:column;gap:10px;display:flex}.sub{border:2px solid var(--line);border-radius:16px;overflow:hidden}.sub-head{cursor:pointer;text-align:left;width:100%;color:var(--ink);background:#f7f8fb;border:none;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;font-family:inherit;font-size:14px;display:flex}.sub-head .when{color:var(--muted-2);margin-left:auto;font-size:13px;font-weight:700}.sub-body{flex-direction:column;gap:10px;padding:14px;display:flex}.sub-body pre.code{padding:14px 16px;font-size:14px}.err-line{font-family:var(--mono);color:#ffd7d7;white-space:pre-wrap;background:#3b1020;border-radius:12px;padding:10px 12px;font-size:13px}.comment{background:var(--purple-soft);border-radius:16px;flex-direction:column;gap:4px;padding:12px 14px;display:flex}.comment .meta{color:var(--purple-dark);font-size:12px;font-weight:800}textarea.input,select.input,input.input{color:var(--ink);background:#fff;border:2px solid #d5d9e3;border-radius:14px;width:100%;padding:12px 14px;font-family:inherit;font-size:16px}textarea.input{resize:vertical;min-height:96px}textarea.input:focus,select.input:focus{outline:3px solid var(--cyan);border-color:#0000}.level-pick{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;display:grid}.level-btn{cursor:pointer;color:var(--ink);background:#fff;border:2px solid #d5d9e3;border-radius:16px;flex-direction:column;align-items:flex-start;gap:4px;padding:14px;font-size:15px;font-weight:800;display:flex}.level-btn small{color:var(--muted-2);font-weight:700}.level-btn[aria-pressed=true]{border:3px solid var(--purple);background:#f4f0ff}.score-row{grid-template-columns:110px 1fr;align-items:center;gap:10px;display:grid}.score-btns{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.score-btns button{cursor:pointer;color:var(--ink);background:#fff;border:2px solid #d5d9e3;border-radius:12px;flex-direction:column;align-items:center;padding:8px 4px;font-size:13px;font-weight:800;display:flex}.score-btns button b{font-size:18px;font-family:var(--display)}.score-btns button[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}.modal.wide{text-align:left;align-items:stretch;width:min(640px,100%)}.paper{border:2px solid var(--line);aspect-ratio:8.5/11;background:#fff;border-radius:12px;flex-direction:column;gap:14px;width:100%;max-width:400px;max-height:520px;margin:0 auto;padding:28px;display:flex;box-shadow:0 10px 30px #0d102514}.paper .ln{background:#eceef4;border-radius:6px;height:10px}.paper .hand{font-family:var(--body);color:var(--ink-3);font-size:14px;font-weight:700}.class-block{flex-direction:column;gap:8px;display:flex}.act-row{color:var(--ink);background:#f7f8fb;border-radius:14px;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:10px 14px;text-decoration:none;display:flex}a.act-row:hover{color:var(--ink);background:#efeaff}.act-row .t{flex:220px;font-weight:800}.act-row .meta{color:var(--muted-2);font-size:13px;font-weight:700}.alert-box{background:#fff4ec;border:2px solid #ffd2ad;border-radius:20px;flex-direction:column;gap:10px;padding:18px 20px;display:flex}.alert-item{align-items:flex-start;gap:10px;display:flex}.rules{color:var(--muted);flex-direction:column;gap:6px;font-size:14px;display:flex}.crumbs-light{color:var(--muted-2);flex-wrap:wrap;gap:6px;font-size:14px;font-weight:700;display:flex}.crumbs-light a{color:var(--purple-text);text-decoration:none}.two-col{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:22px;display:grid}@media (width<=960px){.two-col{grid-template-columns:minmax(0,1fr)}}.sticky{position:sticky;top:16px}.field-label{color:var(--muted);text-transform:uppercase;letter-spacing:.6px;font-size:13px;font-weight:800}.empty{color:var(--muted-2);text-align:center;background:#f7f8fb;border-radius:16px;padding:18px;font-weight:700}.diff-note{background:var(--orange-soft);color:var(--orange-text);border-radius:14px;padding:10px 14px;font-size:14px;font-weight:700}.level-pick{grid-template-columns:repeat(3,1fr)}.level-btn{text-align:left;padding:12px}.row.top{align-items:flex-start}@media (width<=640px){.level-pick,.score-row{grid-template-columns:1fr}}@media (width<=700px){table.list{min-width:0}table.list thead{display:none}table.list tr{border-bottom:1px solid #eef0f5;grid-template-columns:1fr 1fr;gap:6px 12px;padding:14px 16px;display:grid}table.list td{border:none;padding:0}table.list td:first-child,table.list td:last-child{grid-column:1/-1}table.list td:last-child{text-align:left!important}}@media (width<=560px){.stats .stat strong{white-space:normal}.page{padding-left:14px;padding-right:14px}}.mainnav a{align-items:center;gap:7px;padding:9px 13px;font-size:15px;display:inline-flex}.mainnav .badge{margin-left:2px}.icon-btn{background:var(--ink-2);color:#fff;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:42px;height:42px;display:flex;position:relative}.icon-btn:hover{background:var(--ink-3)}.dot-badge{min-width:20px;height:20px;font-size:11px;position:absolute;top:-4px;right:-4px}.teacher-name{font-weight:800}.notif-panel{z-index:60}.next-class{background:var(--ink);color:#fff;gap:18px;padding:28px}.next-class .eyebrow{color:var(--cyan);align-items:center;gap:8px;display:flex}.next-class .title-xl{color:#fff}.next-class .muted,.next-class .small.muted{color:#c9cde0}.next-class .btn.outline{color:#fff;background:0 0;border-color:#4a5180}.next-class .btn.outline:hover{background:var(--ink-2)}.next-class .btn.dark{background:var(--lime);color:var(--ink)}.next-class .locked-label{color:#c9cde0}.next-class.m-al_terminar{box-shadow:inset 0 0 0 3px var(--orange);background:#2a1a00}.next-class.m-finalizada{background:#1b2040}.next-meta{color:#e2e5f3;flex-wrap:wrap;gap:8px 20px;font-weight:700;display:flex}.next-meta span{align-items:center;gap:6px;display:inline-flex}.live-dot{background:var(--lime);border-radius:50%;width:10px;height:10px;animation:1.6s infinite pulse;display:inline-block;box-shadow:0 0 0 4px #a3e63540}@keyframes pulse{50%{box-shadow:0 0 0 8px #a3e63500}}.live-box{background:var(--ink-2);text-align:center;border-radius:18px;flex-direction:column;align-items:center;min-width:150px;padding:14px 18px;display:flex}.live-box strong{font-family:var(--display);color:var(--lime);font-size:40px;line-height:1}.ok-box{color:#24400a;background:#eef9da;border-radius:16px;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.next-class .ok-box{color:#e9fbcf;background:#24400a}.next-class .ok-box a{color:var(--lime)}.warn-box{color:#7a3a00;background:#fff4ec;border:2px solid #ffd2ad;border-radius:20px;flex-wrap:wrap;align-items:center;gap:12px;padding:16px 20px;display:flex}.sim-bar{flex-wrap:wrap;align-items:center;gap:8px;padding:4px;display:flex}.sim-bar .tiny{color:var(--muted-2);text-transform:uppercase;letter-spacing:.5px;font-weight:800}.sim-bar .chip{padding:5px 12px;font-size:13px}.home-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));align-items:start;gap:18px;display:grid}.unread-row{background:#f4f0ff}.cal-chip{border-radius:6px;flex:none;width:12px;height:36px}.group-card{color:inherit;gap:8px;text-decoration:none}.group-card:hover{color:inherit;box-shadow:0 0 0 2px var(--purple)}.cal-card{padding:16px;overflow-x:auto}.cal{gap:8px 6px;min-width:760px;display:grid}.cal-head{text-align:center;color:var(--muted-2);text-transform:capitalize;border-radius:12px;flex-direction:column;padding:6px 0;font-size:13px;font-weight:800;display:flex}.cal-head strong{font-family:var(--display);color:var(--ink);font-size:22px}.cal-head.today{background:var(--ink);color:#c9cde0}.cal-head.today strong{color:var(--lime)}.cal-hours{position:relative}.cal-hours span{color:var(--muted-2);font-size:11px;font-weight:700;position:absolute;right:6px;transform:translateY(-50%)}.cal-col{background:#f7f8fb;border-radius:12px;position:relative}.cal-col.today{background:#f4fbe6}.cal-line{border-top:1px solid #e9ebf2;position:absolute;left:0;right:0}.cal-now{z-index:2;border-top:2px solid #c2410c;position:absolute;left:0;right:0}.cal-now:before{content:"";background:#c2410c;border-radius:50%;width:8px;height:8px;position:absolute;top:-5px;left:-4px}.cal-ev{color:#fff;text-align:left;cursor:pointer;z-index:1;border:none;border-radius:10px;flex-direction:column;gap:1px;padding:6px 8px;font-family:inherit;font-size:12px;display:flex;position:absolute;left:4px;right:4px;overflow:hidden}.cal-ev strong{white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.cal-ev.finalizada{opacity:.6}.cal-ev.durante{box-shadow:0 0 0 3px var(--ink)}.cal-ev.al_terminar{box-shadow:0 0 0 3px #c2410c}.cal-list{flex-direction:column;gap:10px;display:none}@media (width<=700px){.cal-card{display:none}.cal-list{display:flex}}.modal.xl{width:min(860px,100%)}.fin-row{border:2px solid var(--line);border-radius:16px;flex-direction:column;gap:8px;padding:14px;display:flex}.fin-stats{color:var(--muted);flex-wrap:wrap;gap:4px 16px;display:flex}.fin-actions{flex-wrap:wrap;align-items:flex-start;gap:10px;display:flex}.fin-actions label{flex-direction:column;flex:220px;gap:4px;display:flex}.mail{background:#f7f8fb;border-radius:16px;flex-direction:column;gap:12px;padding:18px;display:flex}.mail p{margin-top:2px}.hist-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 18px;display:grid}.hist-grid p{margin-top:2px}.plain-btn{cursor:pointer;text-align:left;color:inherit;background:0 0;border:none;width:100%;padding:0;font-family:inherit}.check-row{align-items:flex-start;gap:10px;font-size:14px;font-weight:700;display:flex}.check-row input{width:20px;height:20px;accent-color:var(--purple);margin-top:1px}.timeline-list{border-left:3px solid var(--line);flex-direction:column;gap:8px;margin:0;padding:0 0 0 18px;list-style:none;display:flex}.timeline-list li{flex-direction:column;gap:2px;display:flex;position:relative}.timeline-list li:before{content:"";background:var(--purple);border-radius:50%;width:11px;height:11px;position:absolute;top:4px;left:-25px}.lib-row{background:#f7f8fb;border-radius:16px;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 14px;display:flex}.lib-row.locked{opacity:.75}.res-btn{border:2px solid var(--line);color:var(--ink);background:#fff;border-radius:14px;align-items:center;gap:10px;min-width:210px;padding:8px 12px;text-decoration:none;display:flex}a.res-btn:hover{border-color:var(--purple);color:var(--ink)}.res-btn.disabled{color:var(--muted-2)}.guide section{border-top:1px solid #eef0f5;flex-direction:column;gap:10px;padding-top:16px;display:flex}.guide ul{margin:0}.guide pre.code{padding:14px 16px;font-size:14px}.g-q{background:#f7f8fb;border-radius:14px;flex-direction:column;gap:6px;padding:12px 14px;display:flex}.notif-card{color:var(--ink);flex-direction:row;align-items:flex-start;gap:14px;padding:18px;text-decoration:none}.notif-card.unread{box-shadow:inset 4px 0 0 var(--orange)}a.notif-card:hover{color:var(--ink);box-shadow:0 0 0 2px var(--purple)}.notif-icon{background:var(--purple-soft);width:42px;height:42px;color:var(--purple-dark);border-radius:12px;flex:none;justify-content:center;align-items:center;display:flex}.tag svg{margin-right:-2px}.btn svg{flex:none}.option-row svg{vertical-align:-3px}@media (width<=640px){.teacher-name{display:none}}.topbar{flex-wrap:nowrap}.mainnav{flex-wrap:nowrap;gap:2px}.mainnav a{white-space:nowrap;padding:9px 11px;font-size:14.5px}.brand-logo img{height:34px}.demo-foot{max-width:1200px;color:var(--muted-2);flex-wrap:wrap;align-items:center;gap:10px;margin:0 auto;padding:0 20px 40px;font-size:13px;font-weight:700;display:flex}@media (width<=1180px){.mainnav a span:not(.badge){display:none}.mainnav a{padding:10px}}@media (width<=520px){.topbar{flex-wrap:wrap}}.stats .stat strong{white-space:normal;overflow-wrap:anywhere}.modal .stats{grid-template-columns:repeat(2,minmax(0,1fr))}@media (width<=480px){.modal .stats{grid-template-columns:1fr}}.role-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:10px;display:grid}.role-grid .who{text-align:left;align-items:flex-start}.form-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:12px 16px;display:grid}.slot-row{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.small-btn{min-height:34px!important;padding:6px 12px!important;font-size:13px!important}.act-row.cancelled .t{color:var(--muted-2);text-decoration:line-through}.lib-row.late{box-shadow:inset 4px 0 #c2410c}textarea.input.code-input{font-family:var(--mono);white-space:pre;tab-size:4;min-height:90px;font-size:14px}.opt-edit{grid-template-columns:auto auto 1fr;align-items:center;gap:10px;display:grid}.opt-edit input[type=radio]{width:20px;height:20px;accent-color:var(--lime-dark)}.opt-edit .key{background:var(--bg);border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;font-weight:900;display:flex}.test-edit{background:#f7f8fb;border-radius:14px;padding:12px}.hbar{grid-template-columns:minmax(120px,200px) 1fr 82px;align-items:center;gap:12px;padding:6px 0;display:grid}.hbar-label{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:800;overflow:hidden}.hbar-track{background:#eef0f5;border-radius:4px;height:14px;position:relative}.hbar-fill{background:var(--purple);border-radius:0 4px 4px 0;position:absolute;top:0;bottom:0;left:0}.hbar-marker{background:var(--ink);border-radius:2px;width:3px;margin-left:-1.5px;position:absolute;top:-4px;bottom:-4px}.hbar-value{color:var(--muted);text-align:right;font-size:13px;font-weight:800}.hbar:hover .hbar-fill{background:var(--purple-dark)}.perm-table td,.perm-table th{padding:10px 12px}.page.narrow{max-width:860px}@media (width<=700px){.hbar{grid-template-columns:1fr 64px}.hbar-label{grid-column:1/-1}}.topbar.admin-bar{flex-wrap:wrap;row-gap:10px;padding-bottom:10px}.topbar.admin-bar .mainnav{flex:100%;order:3;justify-content:flex-start;padding-bottom:2px;overflow-x:auto}.topbar.admin-bar .who-chip{margin-left:auto}@media (width<=1180px){.topbar.admin-bar .mainnav a span:not(.badge){display:inline}.topbar.admin-bar .mainnav a{padding:9px 11px}}.act-row .avatar+.t{flex:120px}
