:root{--bg:#f4f7fb;--surface:#fff;--text:#182230;--muted:#667085;--line:#d0d5dd;--primary:#175cd3;--primary-soft:#eff8ff;--primary-border:#53b1fd;--success:#067647;--success-bg:#ecfdf3;--success-border:#17b26a;--danger:#b42318;--danger-bg:#fef3f2;--danger-border:#f04438;--locked:#667085;--locked-bg:#f2f4f7;--shadow:0 1px 3px #1018281f, 0 1px 2px #10182814;--shadow-lg:0 12px 28px #1018282e}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--text);background:var(--bg);flex-direction:column;height:100vh;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;display:flex;overflow:hidden}button,input{font:inherit}button{color:inherit}.skip-link{z-index:1000;color:#fff;background:#101828;border-radius:8px;padding:10px 14px;position:fixed;top:-80px;left:12px}.skip-link:focus{top:12px}.topbar{z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff5;border-bottom:1px solid #e4e7ec;padding:22px clamp(16px,3vw,38px) 16px;position:sticky;top:0}.brand{max-width:900px}.eyebrow{color:var(--primary);letter-spacing:.08em;text-transform:uppercase;margin:0 0 3px;font-size:.8rem;font-weight:800}h1{margin:0;font-size:clamp(1.35rem,2.4vw,2rem);line-height:1.15}.subtitle{color:var(--muted);margin:6px 0 0;font-size:.95rem}.summary{grid-template-columns:repeat(4,minmax(120px,1fr));gap:10px;margin-top:18px;display:grid}.summary article{background:#fff;border:1px solid #e4e7ec;border-radius:11px;flex-direction:column;padding:11px 13px;display:flex}.summary strong{font-size:1.1rem}.summary span{color:var(--muted);margin-top:2px;font-size:.77rem}.progress-track{background:#eaecf0;border-radius:999px;height:7px;margin-top:10px;overflow:hidden}#progress-bar{background:var(--success);width:0;height:100%;transition:width .25s}.toolbar{justify-content:space-between;align-items:center;gap:12px;margin-top:14px;display:flex}.toggle{align-items:center;gap:8px;font-size:.9rem;font-weight:650;display:inline-flex}.toggle input{width:18px;height:18px;accent-color:var(--primary)}.toolbar-actions{flex-wrap:wrap;gap:8px;display:flex}.btn{cursor:pointer;background:#fff;border:1px solid #d0d5dd;border-radius:9px;justify-content:center;align-items:center;min-height:38px;padding:8px 12px;font-size:.82rem;font-weight:700;display:inline-flex;box-shadow:0 1px 1px #10182808}.btn:hover{background:#f9fafb}.btn:focus-visible,.course:focus-visible,.state-menu button:focus-visible{outline-offset:2px;outline:3px solid #53b1fd73}.btn.danger{color:var(--danger);border-color:#fecdca}.file-btn{-webkit-user-select:none;user-select:none}.notice{color:#1849a9;background:#eff8ff;border:1px solid #b2ddff;border-radius:10px;margin:0 clamp(16px,3vw,38px) 12px;padding:11px 14px;font-size:.9rem}.curriculum{scroll-snap-type:x proximity;scrollbar-color:#98a2b3 transparent;grid-auto-columns:264px;grid-auto-flow:column;align-items:start;gap:13px;padding:4px clamp(16px,3vw,38px) 22px;display:grid;overflow-x:auto}.semester{scroll-snap-align:start;background:#ffffffb8;border:1px solid #e4e7ec;border-radius:14px;min-height:260px;padding:11px}.semester-header{z-index:2;background:#f8fafc;border-bottom:1px solid #e4e7ec;border-radius:14px 14px 0 0;justify-content:space-between;align-items:center;margin:-11px -11px 11px;padding:11px 12px;display:flex;position:static;top:248px}.semester-header h2{margin:0;font-size:.95rem}.semester-header span{color:var(--muted);font-size:.72rem}.course-list{flex-direction:column;gap:9px;display:flex}.course{text-align:left;background:var(--surface);width:100%;min-height:74px;box-shadow:var(--shadow);cursor:pointer;border:2px solid #0000;border-radius:11px;padding:11px 11px 10px;transition:transform .12s,box-shadow .12s,opacity .12s,border-color .12s;position:relative}.course:hover{transform:translateY(-1px);box-shadow:0 4px 12px #10182821}.course-name{padding-right:26px;font-size:.88rem;font-weight:760;line-height:1.28;display:block}.course-meta{color:var(--muted);margin-top:7px;font-size:.7rem;line-height:1.25;display:block}.course-icon{font-size:1rem;font-weight:900;position:absolute;top:9px;right:9px}.course[data-state=disponible]{border-color:var(--primary-border);background:var(--primary-soft)}.course[data-state=disponible] .course-icon{color:var(--primary)}.course[data-state=aprobado]{border-color:var(--success-border);background:var(--success-bg)}.course[data-state=aprobado] .course-icon{color:var(--success)}.course[data-state=reprobado]{border-color:var(--danger-border);background:var(--danger-bg)}.course[data-state=reprobado] .course-icon{color:var(--danger)}.course[data-state=bloqueado]{background:var(--locked-bg);color:#667085;opacity:.7;cursor:not-allowed;border-color:#d0d5dd}.course.related-prereq{box-shadow:0 0 0 3px #7f56d92e, var(--shadow);border-color:#7f56d9!important}.course.related-unlocks{box-shadow:0 0 0 3px #f790092e, var(--shadow);border-color:#f79009!important}.course.related-focus{box-shadow:0 0 0 4px #175cd333, var(--shadow-lg)}.course.filtered-out{display:none}.state-menu{z-index:100;min-width:178px;box-shadow:var(--shadow-lg);background:#fff;border:1px solid #d0d5dd;border-radius:11px;padding:6px;position:fixed}.state-menu button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;width:100%;padding:9px 10px;font-size:.84rem;font-weight:700}.state-menu button:hover{background:#f2f4f7}.state-menu button[data-action=aprobado]{color:var(--success)}.state-menu button[data-action=reprobado]{color:var(--danger)}.empty-semester{color:var(--muted);text-align:center;padding:20px 8px;font-size:.8rem}.app-header{border-bottom:1px solid var(--line);z-index:30;background:#fff;align-items:center;gap:16px;padding:12px 24px;display:flex}.app-content{background:var(--bg);flex:1;position:relative;overflow-y:auto}.btn-icon{cursor:pointer;color:var(--text);background:0 0;border:none;font-size:1.5rem}.view{animation:.3s fadeIn;display:none}.view.active{display:block}@keyframes fadeIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.sidebar{z-index:50;width:280px;height:100vh;box-shadow:var(--shadow-lg);background:#fff;flex-direction:column;transition:left .3s;display:flex;position:fixed;top:0;left:-280px}.sidebar.open{left:0}.sidebar-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:20px;display:flex}.sidebar-nav{flex-direction:column;gap:8px;padding:16px 12px;display:flex}.nav-item{text-align:left;cursor:pointer;width:100%;color:var(--muted);background:0 0;border:none;border-radius:8px;padding:12px 16px;font-weight:600;transition:all .2s}.nav-item:hover{background:var(--primary-soft);color:var(--primary)}.nav-item.active{background:var(--primary-soft);color:var(--primary);outline:2px solid var(--primary-border)}.overlay{z-index:40;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0006;width:100vw;height:100vh;transition:opacity .3s;position:fixed;top:0;left:0}.overlay.active{opacity:1;pointer-events:all}.calc-container{max-width:700px;margin:30px auto;padding:0 20px}.calc-config{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:12px;margin-bottom:24px;padding:16px}.config-pesos{background:var(--primary-soft);border:1px dashed var(--primary-border);border-radius:8px;gap:16px;margin-top:16px;padding:16px;display:none}.config-pesos.active{display:flex}.input-select{border:1px solid var(--line);border-radius:8px;width:100%;margin-top:8px;padding:10px}.modulo-notas{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:12px;margin-bottom:24px;padding:20px}.modulo-title{align-items:center;gap:10px;margin:0 0 16px;font-size:1.1rem;display:flex}.badge-teoria{color:#3730a3;background:#e0e7ff;border-radius:6px;padding:4px 8px;font-size:.8rem}.badge-practica{color:#166534;background:#dcfce7;border-radius:6px;padding:4px 8px;font-size:.8rem}.nota-row{grid-template-columns:70px 1fr 1fr auto;align-items:center;gap:12px;margin-bottom:12px;display:grid}.nota-label{color:var(--muted);text-align:center;font-size:.85rem;font-weight:650}.input-calc{border:1px solid var(--line);border-radius:8px;width:100%;padding:8px 12px;font-size:.95rem}.input-calc:focus{outline:2px solid var(--primary-border);border-color:var(--primary)}.btn-del{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-border);cursor:pointer;border-radius:8px;padding:8px}.nota.sugerida{color:var(--success);background:var(--success-bg);border:1px solid var(--success-border);font-weight:800}.calc-actions{flex-direction:column;align-items:center;gap:16px;margin-top:24px;margin-bottom:40px;display:flex}.btn-primary{background:var(--primary);color:#fff;cursor:pointer;box-shadow:var(--shadow);border:none;border-radius:9px;padding:14px 32px;font-size:1.05rem;font-weight:700;transition:background .2s}.btn-primary:hover{background:#1550b8}.resultado-panel{text-align:center;border:1px dashed var(--line);background:#f8fafc;border-radius:8px;padding:16px;font-weight:600}.res-success{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}.res-danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}@media (width<=760px){.topbar{padding:17px 14px 13px;position:relative}.summary{grid-template-columns:repeat(2,1fr)}.toolbar{flex-direction:column;align-items:stretch}.toolbar-actions{grid-template-columns:1fr 1fr;display:grid}.btn{width:100%}.curriculum{grid-auto-columns:82vw;max-width:100vw;padding-left:14px;padding-right:14px}.semester-header{position:static}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
