:root{--bg:#0b0b0f;--card:#141620;--ink:#e8e8f0;--muted:#a0a3ad;--accent:#6dd3fb;--danger:#ff6b6b;--line:#23263a}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 system-ui,Segoe UI,Roboto}header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);background:#0d0f18;position:sticky;top:0;z-index:20}.brand{font-weight:700;letter-spacing:.3px}.nav{display:flex;gap:8px;align-items:center}.tab{background:#0f1220;border:1px solid var(--line);color:var(--ink);padding:8px 12px;border-radius:10px;cursor:pointer}.tab.active{outline:2px solid var(--accent)}.tab[disabled]{opacity:.5;cursor:not-allowed}.container{max-width:1800px;margin:22px auto;padding:0 16px}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:0 8px 24px #00000040}h2{margin:0 0 10px;font-size:18px}h3{margin:0 0 10px;font-size:16px}.row{display:flex;gap:12px;flex-wrap:wrap}.list{display:grid;gap:8px}.pill{display:inline-flex;align-items:center;gap:8px;background:#0e1120;border:1px solid var(--line);border-radius:999px;padding:6px 10px;cursor:pointer}.pill.active{outline:2px solid var(--accent)}input,select{background:#0e1120;border:1px solid var(--line);color:var(--ink);padding:8px 10px;border-radius:10px}button{background:#1e2233;color:var(--ink);border:1px solid #2a2f47;padding:8px 12px;border-radius:10px;cursor:pointer}button.primary{background:linear-gradient(180deg,#1f9af3,#177bd9);border-color:#1671cf}button.ghost{background:#0e1120}button.danger{background:linear-gradient(180deg,#ff8a8a,#ff6b6b);border-color:#e85b5b}button:disabled{opacity:.6;cursor:not-allowed}label{font-size:12px;color:var(--muted)}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.course-item{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:12px;padding:10px;background:#0e1120}.course-meta{font-size:12px;color:var(--muted)}.muted{color:var(--muted)}.hidden{display:none}.subtabs{display:flex;gap:8px;margin:6px 0 12px}.subtab{background:#0e1120;border:1px solid var(--line);padding:6px 10px;border-radius:10px;cursor:pointer}.subtab.active{outline:2px solid var(--accent)}.subtab[aria-disabled=true]{opacity:.5;cursor:not-allowed}.overlay-disabled{position:relative}.overlay-disabled:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#00000059;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border-radius:12px;display:none}.overlay-disabled.disabled:after{display:block}.inline{display:flex;align-items:center;gap:8px}.sched{padding:12px}.sched-grid{display:grid;grid-template-columns:80px 1fr;gap:10px;min-height:540px}.sched-hours{display:flex;flex-direction:column;gap:0;position:relative}.sched-hours .hour{height:calc((540px) / 14);color:var(--muted);font-size:12px;display:flex;align-items:flex-start;justify-content:flex-end;padding-top:2px;padding-right:6px}.sched-days{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.day-col{position:relative;background:#0e1120;border:1px solid var(--line);border-radius:12px;padding-top:26px;overflow:hidden}.day-label{position:absolute;top:4px;left:8px;color:var(--muted);font-size:12px}.col-grid{position:relative;height:540px;background:linear-gradient(to bottom,transparent 0 calc(100%/14 - 1px),rgba(255,255,255,.05) calc(100%/14 - 1px) calc(100%/14))}.palette{display:flex;flex-wrap:wrap;gap:8px}.palette-chip{background:#0e1120;border:1px solid var(--line);padding:6px 10px;border-radius:999px;cursor:grab;-webkit-user-select:none;user-select:none}.palette-chip:active{cursor:grabbing}.usm-grid{display:grid;grid-template-columns:160px 1fr;gap:10px}.col-mods{display:flex;flex-direction:column;gap:6px}.col-days{display:grid;grid-template-rows:auto 1fr;gap:6px}.days-header{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.days-body{display:flex;flex-direction:column;gap:6px}.row-slots{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.cell{background:#0e1120;border:1px solid var(--line);border-radius:12px;min-height:48px;display:flex;align-items:center;justify-content:center;padding:6px 8px;text-align:center}.cell.header{background:#0f1220;font-weight:700}.mod{align-items:flex-start;justify-content:flex-start;gap:4px;min-height:48px}.lunch,.lunch-row .cell{background:#ffffff0a;border-style:dashed}.slot.is-lunch{opacity:.5;pointer-events:none}:root{--rowh: 64px}.sched-usm{padding:12px}.usm-grid2{display:grid;grid-template-columns:160px repeat(5,1fr);gap:6px;align-items:stretch}.cell{background:#0e1120;border:1px solid var(--line);border-radius:12px;display:flex;align-items:center;justify-content:center;text-align:center;min-height:var(--rowh);padding:6px 8px}.cell.header{background:#0f1220;font-weight:700;min-height:42px}.mod{align-items:flex-start;justify-content:flex-start;gap:4px}.lunch{background:#ffffff0a;border-style:dashed}.cell.slot{position:relative;overflow:hidden;min-height:var(--rowh);--pad: 8px;--gap: 10px}.cell.slot .placed{position:absolute;display:flex;align-items:center;min-height:36px;background:linear-gradient(180deg,#1f9af3,#177bd9);color:#fff;border:1px solid #1671cf;border-radius:12px;padding:6px 8px;box-shadow:0 6px 18px #0003;cursor:pointer}.placed-title{font-weight:700;font-size:13px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.h-single{left:var(--pad);right:var(--pad)}.h-left{left:var(--pad);right:calc(50% + var(--gap)/2)}.h-right{left:calc(50% + var(--gap)/2);right:var(--pad)}.pos-full{top:var(--pad);bottom:var(--pad)}.pos-top{top:var(--pad);height:calc(50% - var(--gap)/2 - var(--pad))}.pos-bottom{bottom:var(--pad);height:calc(50% - var(--gap)/2 - var(--pad))}.cell.slot.over:after{content:"";position:absolute;border:2px dashed rgba(31,154,243,.65);background:#1f9af31f;border-radius:12px;pointer-events:none;opacity:.9;animation:hintPulse .9s ease-out infinite;top:var(--pad);bottom:var(--pad);left:var(--pad);right:var(--pad)}.cell.slot.over.hint-top:after{top:var(--pad);height:calc(50% - var(--gap)/2 - var(--pad))}.cell.slot.over.hint-full:after{top:var(--pad);bottom:var(--pad)}.cell.slot.over.hint-bottom:after{bottom:var(--pad);height:calc(50% - var(--gap)/2 - var(--pad))}.cell.slot.over.hint-left:after{left:var(--pad);right:calc(50% + var(--gap)/2)}.cell.slot.over.hint-center:after{left:var(--pad);right:var(--pad)}.cell.slot.over.hint-right:after{left:calc(50% + var(--gap)/2);right:var(--pad)}@keyframes hintPulse{0%{box-shadow:0 0 #1f9af340}to{box-shadow:0 0 0 6px #1f9af300}}.mod-head{display:flex;gap:8px;align-items:baseline;margin-bottom:4px}.mod .mod-label{font-weight:700}.mod .mod-time{font-size:12px;color:var(--muted)}.mod-lines{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:2px 10px;font-size:12px;color:var(--muted)}.mod-lines .line-num{font-weight:700;color:var(--ink)}.gr-table{display:grid;gap:10px}.gr-row{border:1px solid var(--line);border-radius:12px;padding:10px;background:#0e1120}.gr-row .head{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:8px}.gr-row label{font-size:12px;color:var(--muted)}.gr-items{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px}.gr-item{display:flex;gap:6px;align-items:center}.gr-item input[type=number]{width:90px}.gr-actions{display:flex;gap:8px}.gr-id{font-family:ui-monospace,Consolas,Menlo,monospace;font-weight:700;padding:2px 6px;border:1px dashed var(--line);border-radius:6px}.gr-result{display:flex;gap:16px;flex-wrap:wrap;font-size:16px}.gr-badge-ok{color:#7dffa4}.gr-badge-bad{color:#ff8a8a}.gr-id{background:#0e1120}#page-malla .grid-header{display:grid;grid-template-columns:repeat(10,1fr);grid-template-rows:auto auto;background:#222;color:#fff;font-weight:700;text-align:center;margin-bottom:6px;font-size:15px}#page-malla .grid-header .year{grid-row:1;padding:10px 0;background:#333}#page-malla .grid-header .year:nth-of-type(1){grid-column:1 / span 2}#page-malla .grid-header .year:nth-of-type(2){grid-column:3 / span 2}#page-malla .grid-header .year:nth-of-type(3){grid-column:5 / span 2}#page-malla .grid-header .year:nth-of-type(4){grid-column:7 / span 2}#page-malla .grid-header .year:nth-of-type(5){grid-column:9 / span 2}#page-malla .grid-header .sem{grid-row:2;padding:6px 0;background:#444;font-weight:600}#page-malla .grid-item{position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;border-radius:10px;cursor:pointer;overflow:hidden;padding:28px 10px;box-shadow:inset 0 0 0 2px #0000002e}#page-malla .grid-item:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(0,0,0,.18),transparent 22%,transparent 78%,rgba(0,0,0,.18));pointer-events:none}#page-malla .grid-item .top-bar,#page-malla .grid-item .bottom-bar{position:absolute;left:0;width:100%;height:24px;background:#00000080;z-index:1;pointer-events:none}#page-malla .grid-item .top-bar{top:0}#page-malla .grid-item .bottom-bar{bottom:0}#page-malla .grid-item .code-label{position:absolute;top:4px;right:4px;width:24px;height:24px;background:#fff;color:#000;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:800;z-index:2}#page-malla .grid-item .prereq-label{position:absolute;bottom:3px;top:auto;width:20px;height:20px;background:#ffffffeb;color:#000;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.74rem;border:1px solid rgba(0,0,0,.25);z-index:2}#page-malla .grid-item .course-name{position:relative;z-index:1;color:#fff;text-align:center;padding:0 6px;margin:0;line-height:1.28;word-break:break-word;-webkit-hyphens:auto;hyphens:auto;font-size:clamp(.82rem,.9vw + .5rem,1rem);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}#page-malla .grid-item.area-integrativa{background:#b691d2}#page-malla .grid-item.area-formacion-basica{background:#fa996c}#page-malla .grid-item.area-electiva{background:#f3aacb}#page-malla .grid-item.area-salud-animal{background:#486f99}#page-malla .grid-item.area-produccion-animal{background:#a5eea0;color:#000}#page-malla .grid-item.area-medio-ambiente{background:#88a7d0}#page-malla .grid-item.area-salud-publica{background:#ff6961}#page-malla .grid-item.area-transversal{background:#000}#page-malla .prereq-label.area-integrativa{background:#b691d2}#page-malla .prereq-label.area-formacion-basica{background:#fa996c}#page-malla .prereq-label.area-electiva{background:#f3aacb}#page-malla .prereq-label.area-salud-animal{background:#486f99}#page-malla .prereq-label.area-produccion-animal{background:#a5eea0;color:#000}#page-malla .prereq-label.area-medio-ambiente{background:#88a7d0}#page-malla .prereq-label.area-salud-publica{background:#ff6961}#page-malla .prereq-label.area-transversal{background:#000}#page-malla .grid-item.bloqueado{opacity:.35;pointer-events:none}#page-malla .grid-item.aprobado{opacity:.8;position:relative}#page-malla .grid-item.aprobado:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(135deg,transparent 48%,rgba(255,0,0,.85) 48%,rgba(255,0,0,.85) 52%,transparent 52%);pointer-events:none;z-index:3}#page-malla .percentage-display{text-align:center;color:#e8e8f0;font-size:1.1rem;margin:10px 0 4px}#page-malla .legend{text-align:center;margin:8px 0 0;font-size:1rem;color:#a0a3ad}#page-malla .legend span{display:inline-block;margin:0 12px}#page-malla .legend-color{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:6px;vertical-align:middle}#page-malla .legend-color.integrativa{background:#b691d2}#page-malla .legend-color.salud-animal{background:#486f99}#page-malla .legend-color.produccion-animal{background:#a5eea0}#page-malla .legend-color.salud-publica{background:#ff6961}#page-malla .legend-color.medio-ambiente{background:#88a7d0}#page-malla .legend-color.formacion-basica{background:#fa996c}#page-malla .legend-color.electiva{background:#f3aacb}#page-malla .sigla-label{position:absolute;top:2px;left:6px;font-weight:700;font-size:.68rem;color:#fff;opacity:.9;z-index:2}#page-malla .code-label{background:#fff;color:#000}#page-malla .credits-badge{position:absolute;right:6px;bottom:2px;min-width:20px;height:20px;padding:0 6px;background:#000000a6;color:#fff;border-radius:999px;display:flex;align-items:center;justify-content:center;font-size:.74rem;font-weight:700;z-index:2}#page-malla[data-career=ICTEL] .grid-item.area-cb{background:#b6d66e}#page-malla[data-career=ICTEL] .grid-item.area-software{background:#5e3a8e}#page-malla[data-career=ICTEL] .grid-item.area-fisica{background:#2f6b76}#page-malla[data-career=ICTEL] .grid-item.area-transversal{background:#9a4560}#page-malla[data-career=ICTEL] .grid-item.area-fg{background:#2a4ea4}#page-malla[data-career=ICTEL] .grid-item.area-deportes{background:#8a8a8a}#page-malla[data-career=ICTEL] .grid-item.area-redes{background:#c55a54}#page-malla[data-career=ICTEL] .grid-item.area-ingles{background:#2d82c9}#page-malla[data-career=ICTEL] .grid-item.area-electronica{background:#7f79a6}#page-malla[data-career=ICTEL] .grid-item.area-telecom{background:#d5ca59}#page-malla[data-career=ICTEL] .grid-item.area-industrias{background:#5f89b6}#page-malla[data-career=ICTEL] .grid-item.area-complementarios{background:#e0cf8a}#page-malla[data-career=ICTEL] .prereq-label.area-cb{background:#b6d66e}#page-malla[data-career=ICTEL] .prereq-label.area-software{background:#5e3a8e}#page-malla[data-career=ICTEL] .prereq-label.area-fisica{background:#2f6b76}#page-malla[data-career=ICTEL] .prereq-label.area-transversal{background:#9a4560}#page-malla[data-career=ICTEL] .prereq-label.area-fg{background:#2a4ea4}#page-malla[data-career=ICTEL] .prereq-label.area-deportes{background:#8a8a8a}#page-malla[data-career=ICTEL] .prereq-label.area-redes{background:#c55a54}#page-malla[data-career=ICTEL] .prereq-label.area-ingles{background:#2d82c9}#page-malla[data-career=ICTEL] .prereq-label.area-electronica{background:#7f79a6}#page-malla[data-career=ICTEL] .prereq-label.area-telecom{background:#d5ca59}#page-malla[data-career=ICTEL] .prereq-label.area-industrias{background:#5f89b6}#page-malla[data-career=ICTEL] .prereq-label.area-complementarios{background:#e0cf8a}#page-malla[data-career=ICTEL] .legend-color.cb{background:#b6d66e}#page-malla[data-career=ICTEL] .legend-color.software{background:#5e3a8e}#page-malla[data-career=ICTEL] .legend-color.fisica{background:#2f6b76}#page-malla[data-career=ICTEL] .legend-color.transversal{background:#9a4560}#page-malla[data-career=ICTEL] .legend-color.fg{background:#2a4ea4}#page-malla[data-career=ICTEL] .legend-color.deportes{background:#8a8a8a}#page-malla[data-career=ICTEL] .legend-color.redes{background:#c55a54}#page-malla[data-career=ICTEL] .legend-color.ingles{background:#2d82c9}#page-malla[data-career=ICTEL] .legend-color.electronica{background:#7f79a6}#page-malla[data-career=ICTEL] .legend-color.telecom{background:#d5ca59}#page-malla[data-career=ICTEL] .legend-color.industrias{background:#5f89b6}#page-malla[data-career=ICTEL] .legend-color.complementarios{background:#e0cf8a}#page-malla .grid-item .course-name{font-size:.8rem;line-height:1.2}input[type=color]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;width:48px;height:32px;background:transparent;border-radius:8px;border:1px solid var(--line);cursor:pointer}input[type=color]::-webkit-color-swatch-wrapper{padding:0;border-radius:8px}input[type=color]::-webkit-color-swatch{border:none;border-radius:8px}input[type=color]::-moz-color-swatch{border:none;border-radius:8px}#page-perfil .profile-card{padding:18px;border-radius:16px;background:#0e1120;border:1px solid var(--line);box-shadow:0 8px 24px #00000040}#page-perfil .section-title{font-size:22px;font-weight:700;margin:0 0 14px}#page-perfil .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px}#page-perfil .field{display:flex;flex-direction:column;gap:6px}#page-perfil .field label{font-size:13px;color:var(--muted)}#page-perfil .field input[type=text],#page-perfil .field input[type=date],#page-perfil .field select{background:#0b0e1a;border:1px solid var(--line);color:var(--ink);border-radius:12px;padding:10px 12px;outline:none;transition:box-shadow .15s,border-color .15s,transform .03s}#page-perfil .field input:focus,#page-perfil .field select:focus{border-color:#4a7dff;box-shadow:0 0 0 3px #4a7dff26}#page-perfil .color-picker{display:flex;align-items:center;gap:12px}#page-perfil .color-picker input[type=color]{width:44px;height:28px;border:none;padding:0;border-radius:8px;background:transparent;cursor:pointer}#page-perfil .color-chip{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;background:#ffffff0f;border:1px solid rgba(255,255,255,.08);font-size:12px}#page-perfil .actions{display:flex;gap:10px;justify-content:flex-start;margin-top:6px}#page-perfil .actions .primary{padding:12px 18px;border-radius:14px;font-weight:600}#partnerProfileCard{margin-top:18px;border-radius:16px;background:#0e1120;border:1px solid var(--line);box-shadow:inset 0 1px #ffffff08,0 8px 24px #00000040}#partnerProfileCard h3{margin-top:0}#pp-color-swatch{border-radius:6px!important;width:18px!important;height:18px!important;border:1px solid rgba(255,255,255,.3)!important}@media (max-width: 920px){#page-perfil .form-grid{grid-template-columns:1fr}}.hidden{display:none!important}.inline-rename{font:700 13px/1.2 system-ui,Segoe UI,Roboto;color:#fff;background:#ffffff14;border:1px solid rgba(255,255,255,.25);border-radius:8px;padding:6px 8px;outline:none;box-shadow:0 6px 18px #00000040 inset,0 0 0 2px #1f9af326}.inline-rename:focus{border-color:#1f9af3;box-shadow:0 0 0 3px #1f9af333}.placed{text-align:center}.placed-title{display:block;font-weight:600}.placed-room{display:block;margin-top:4px;font-size:12px;color:#000}.sched-usm .placed{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.sched-usm .placed-title{white-space:normal;line-height:1.15;font-weight:600}.sched-usm .placed-room{margin-top:2px;font-size:12px;color:#000!important;line-height:1.1;background:transparent!important}.cell.slot .placed{flex-direction:column;align-items:center;justify-content:center;gap:4px}.cal-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px}.cal-grid{display:flex;flex-direction:column;gap:6px}.cal-row{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.cal-cell{position:relative;min-height:110px;background:#0e1120;border:1px solid var(--line);border-radius:10px;padding:6px 6px 24px;overflow:hidden}.cal-cell.muted{opacity:.55}.cal-today{outline:2px solid #60a5fa}.cal-date{font-size:12px;color:var(--muted)}.cal-events{margin-top:4px;display:flex;flex-direction:column;gap:4px}.cal-ev{display:flex;align-items:center;justify-content:space-between;font-size:12px;padding:4px 6px;border-radius:6px;border:1px solid rgba(0,0,0,.25);cursor:pointer}.cal-ev-title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-ev-time{margin-left:8px;opacity:.9;flex-shrink:0}.cal-dow{font-weight:600;text-align:center;background:transparent;border:none;padding:8px 0}.cal-add{position:absolute;right:6px;bottom:4px;font-size:12px;padding:2px 6px;border-radius:6px;background:transparent;border:1px dashed var(--line);color:var(--muted)}.cal-add:hover{border-style:solid;color:var(--ink)}@media (max-width:800px){.grid2{grid-template-columns:1fr}}.checkbox input{transform:translateY(1px)}.cal-evt{font-size:.85rem;padding:4px 6px;border-radius:6px;background:#1f2937;border:1px solid rgba(255,255,255,.08);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tab.small{padding:6px 10px;font-size:.9rem}.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.cal-left{display:flex;align-items:center;gap:8px}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.cal-cell{background:#0f1115;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:6px;min-height:92px}.cal-cell.head{background:transparent;border:none;text-align:center;font-weight:600;color:#9aa4af;min-height:auto;padding:2px}.cal-cell.empty{background:transparent;border:none}.cal-daynum{font-size:.9rem;color:#9aa4af;margin-bottom:6px}.cal-events{display:flex;flex-direction:column;gap:4px}.cal-evt{font-size:.85rem;padding:4px 6px;border-radius:6px;background:#1f2937;border:1px solid rgba(255,255,255,.08);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-card label{display:block;font-size:.9rem;color:#9aa4af;margin-bottom:4px}.modal-card input[type=text],.modal-card input[type=date],.modal-card input[type=time],.modal-card select{width:100%;background:#0b0d12;border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:8px;color:#e5e7eb}.modal-card .row{display:flex;align-items:flex-end}.modal-card .primary{background:#2563eb;color:#fff;border:none;border-radius:8px;padding:8px 12px;cursor:pointer}.nav-tabs{display:flex;gap:.5rem;flex-wrap:wrap}.auth-area{margin-left:auto;display:flex;align-items:center;gap:.75rem}#userBadge.hidden{display:none!important}.welcome-banner:before,.party-card:before,.card:before{pointer-events:none!important}header{position:relative;z-index:1000}.visually-hidden-file{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:root{--primary: #6366f1;--primary-dark: #4f46e5;--primary-light: #818cf8;--accent: #f59e0b;--accent-light: #fbbf24;--success: #10b981;--danger: #ef4444;--warning: #f59e0b;--bg-base: #0f0e17;--bg-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--bg-card: rgba(255, 255, 255, .05);--bg-card-hover: rgba(255, 255, 255, .08);--text-primary: #ffffff;--text-secondary: #a0aec0;--text-muted: #718096;--border: rgba(255, 255, 255, .1);--shadow-sm: 0 2px 4px rgba(0, 0, 0, .1);--shadow-md: 0 4px 12px rgba(0, 0, 0, .15);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .2);--shadow-glow: 0 0 40px rgba(99, 102, 241, .3)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-base);color:var(--text-primary);line-height:1.6;overflow-x:hidden;position:relative}body:before{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 80%,rgba(120,119,198,.3) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(255,119,198,.3) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(99,102,241,.2) 0%,transparent 50%);animation:float 20s ease-in-out infinite;z-index:-1}@keyframes float{0%,to{transform:translate(0) rotate(0)}33%{transform:translate(30px,-30px) rotate(120deg)}66%{transform:translate(-20px,20px) rotate(240deg)}}header{background:#0f0e17cc;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid var(--border);padding:1rem 2rem;position:sticky;top:0;z-index:100;box-shadow:var(--shadow-lg)}.header-content{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.brand{display:flex;align-items:center;gap:12px;font-size:1.5rem;font-weight:800;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.brand:before{content:"🎓";font-size:1.8rem;-webkit-text-fill-color:initial}.nav{display:flex;gap:.5rem;align-items:center}.nav-tab{position:relative;background:transparent;border:none;color:var(--text-secondary);padding:.6rem 1.2rem;border-radius:12px;cursor:pointer;font-weight:500;transition:all .3s ease;display:flex;align-items:center;gap:8px}.nav-tab:hover{background:var(--bg-card);color:var(--text-primary);transform:translateY(-2px)}.nav-tab.active{background:var(--primary);color:#fff;box-shadow:0 4px 15px #6366f166}.nav-tab:before{font-size:1.2rem}.nav-tab[data-route="#/perfil"]:before{content:"👤"}.nav-tab[data-route="#/semestres"]:before{content:"📚"}.nav-tab[data-route="#/horario"]:before{content:"📅"}.nav-tab[data-route="#/notas"]:before{content:"📊"}.nav-tab[data-route="#/malla"]:before{content:"🗺️"}.nav-tab[data-route="#/progreso"]:before{content:"🏁"}.nav-tab[data-route="#/calendario"]:before{content:"📆"}.nav-tab[data-route="#/asistencia"]:before{content:"📋"}.nav-tab[data-route="#/party"]:before{content:"🎉"}.nav-tab[data-route="#/ayuda"]:before{content:"🆘"}.btn{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);color:#fff;border:none;padding:.7rem 1.5rem;border-radius:12px;font-weight:600;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:8px;box-shadow:0 4px 15px #6366f14d}.btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #6366f166}.btn:active{transform:translateY(0)}.btn-secondary{background:var(--bg-card);box-shadow:none;border:1px solid var(--border)}.btn-secondary:hover{background:var(--bg-card-hover);box-shadow:var(--shadow-md)}.container{max-width:1400px;margin:2rem auto;padding:0 2rem}.card{background:#ffffff0d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border);border-radius:20px;padding:2rem;box-shadow:var(--shadow-lg);transition:all .3s ease;position:relative;overflow:hidden}.card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--primary),var(--accent));opacity:.8}.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-glow)}.card h2{font-size:1.8rem;font-weight:700;margin-bottom:1.5rem;display:flex;align-items:center;gap:12px}.card h3{font-size:1.2rem;font-weight:600;margin-bottom:1rem;color:var(--primary-light)}.profile-section{display:grid;grid-template-columns:300px 1fr;gap:2rem}.profile-avatar{display:flex;flex-direction:column;align-items:center;gap:1rem}.avatar-circle{width:150px;height:150px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--accent));display:flex;align-items:center;justify-content:center;font-size:4rem;box-shadow:0 10px 30px #6366f166;position:relative;overflow:hidden}.avatar-circle:after{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(45deg,transparent,rgba(255,255,255,.3),transparent);animation:shine 3s infinite}@keyframes shine{0%{transform:translate(-100%) translateY(-100%) rotate(45deg)}to{transform:translate(100%) translateY(100%) rotate(45deg)}}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem}.form-field{display:flex;flex-direction:column;gap:.5rem}.form-field label{font-weight:500;color:var(--text-secondary);font-size:.9rem;display:flex;align-items:center;gap:6px}.form-field input,.form-field select{background:#ffffff14;border:1px solid var(--border);color:var(--text-primary);padding:.8rem 1rem;border-radius:12px;font-size:1rem;transition:all .3s ease}.form-field select option{color:#111;background:#fff}.form-field select option:checked,.form-field select option:hover{color:#fff;background:var(--primary)}.form-field input:focus,.form-field select:focus{outline:none;border-color:var(--primary);background:#ffffff1a;box-shadow:0 0 0 3px #6366f133}.schedule-grid{display:grid;grid-template-columns:80px repeat(5,1fr);gap:1rem;background:#ffffff08;border-radius:20px;padding:1.5rem}.schedule-header{font-weight:600;color:var(--primary-light);text-align:center;padding:1rem;background:#6366f11a;border-radius:12px}.schedule-cell{background:#ffffff0d;border:1px solid var(--border);border-radius:12px;padding:.8rem;min-height:80px;transition:all .3s ease;position:relative}.schedule-cell:hover{background:#ffffff14;transform:scale(1.02);box-shadow:var(--shadow-md)}.course-block{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;padding:.8rem;border-radius:10px;font-weight:500;box-shadow:0 4px 12px #6366f14d;cursor:pointer;transition:all .3s ease}.course-block:hover{transform:translateY(-2px);box-shadow:0 6px 16px #6366f166}.grades-container{display:grid;gap:1.5rem}.grade-item{background:#ffffff0d;border:1px solid var(--border);border-radius:12px;padding:1rem;display:flex;justify-content:space-between;align-items:center;transition:all .3s ease}.grade-item:hover{background:#ffffff14;transform:translate(4px)}.grade-value{font-size:1.5rem;font-weight:700;color:var(--success)}.grade-value.fail{color:var(--danger)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;margin-top:2rem}.stat-card{background:linear-gradient(135deg,#6366f11a,#6366f10d);border:1px solid var(--border);border-radius:16px;padding:1.5rem;text-align:center;transition:all .3s ease}.stat-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.stat-value{font-size:2.5rem;font-weight:800;background:linear-gradient(135deg,var(--primary),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.stat-label{color:var(--text-secondary);font-size:.9rem;margin-top:.5rem}.welcome-banner{background:linear-gradient(135deg,var(--primary),var(--primary-dark));border-radius:20px;padding:2rem;margin-bottom:2rem;position:relative;overflow:hidden}.welcome-banner:before{content:"📚";position:absolute;right:2rem;top:50%;transform:translateY(-50%);font-size:4rem;opacity:.3;pointer-events:none}.welcome-title{font-size:2rem;font-weight:700;margin-bottom:.5rem}.welcome-subtitle{color:#ffffffe6;font-size:1.1rem}.user-badge{display:flex;align-items:center;gap:12px;background:#ffffff1a;padding:.5rem 1rem;border-radius:20px;border:1px solid var(--border)}.user-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent-light));display:flex;align-items:center;justify-content:center;font-weight:600}@keyframes slideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.page{animation:slideIn .5s ease}@media (max-width: 768px){.header-content{flex-direction:column;gap:1rem}.nav{width:100%;overflow-x:auto;padding-bottom:.5rem}.profile-section{grid-template-columns:1fr}.container{padding:0 1rem}}.loading{display:inline-block;width:20px;height:20px;border:3px solid var(--border);border-radius:50%;border-top-color:var(--primary);animation:spin 1s ease-in-out infinite}@keyframes spin{to{transform:rotate(360deg)}}[data-tooltip]{position:relative}[data-tooltip]:hover:after{content:attr(data-tooltip);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#000000e6;color:#fff;padding:.5rem 1rem;border-radius:8px;font-size:.9rem;white-space:nowrap;z-index:1000;pointer-events:none}.party-card{background:linear-gradient(135deg,#f59e0b1a,#f59e0b0d);border:2px solid var(--accent);border-radius:20px;padding:1.5rem;position:relative;overflow:hidden}.party-card:before{content:"🎉";position:absolute;right:1rem;top:1rem;font-size:2rem;opacity:.5;pointer-events:none}.party-status{display:inline-flex;align-items:center;gap:8px;background:#10b98133;color:var(--success);padding:.5rem 1rem;border-radius:20px;font-weight:600}.party-status:before{content:"✓";width:20px;height:20px;background:var(--success);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center}.hidden,#pfAvatarFile{display:none!important}.muted{color:var(--text-secondary);font-size:.9rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}input[type=date]{color:var(--text-primary)!important}input[type=date]::-webkit-datetime-edit,input[type=date]::-webkit-datetime-edit-text,input[type=date]::-webkit-datetime-edit-month-field,input[type=date]::-webkit-datetime-edit-day-field,input[type=date]::-webkit-datetime-edit-year-field{color:var(--text-primary)!important}input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1);opacity:.85}input[type=date]{color:var(--text-primary)!important;-webkit-text-fill-color:var(--text-primary)!important;background-color:#ffffff14!important;color-scheme:dark}input[type=date]::-webkit-datetime-edit,input[type=date]::-webkit-datetime-edit-fields-wrapper,input[type=date]::-webkit-datetime-edit-text,input[type=date]::-webkit-datetime-edit-month-field,input[type=date]::-webkit-datetime-edit-day-field,input[type=date]::-webkit-datetime-edit-year-field{color:var(--text-primary)!important;-webkit-text-fill-color:var(--text-primary)!important}input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1);opacity:.9}#page-perfil .form-field input[type=date]{color:var(--text-primary)!important;-webkit-text-fill-color:var(--text-primary)!important;background-color:#ffffff14!important;color-scheme:dark}#page-perfil .form-field input[type=date]::-webkit-datetime-edit,#page-perfil .form-field input[type=date]::-webkit-datetime-edit-fields-wrapper,#page-perfil .form-field input[type=date]::-webkit-datetime-edit-text,#page-perfil .form-field input[type=date]::-webkit-datetime-edit-month-field,#page-perfil .form-field input[type=date]::-webkit-datetime-edit-day-field,#page-perfil .form-field input[type=date]::-webkit-datetime-edit-year-field{color:var(--text-primary)!important;-webkit-text-fill-color:var(--text-primary)!important}#page-perfil .form-field input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1);opacity:.9}input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1) opacity(.9);cursor:pointer}#pfBirthday{color:var(--text-primary)!important;-webkit-text-fill-color:var(--text-primary)!important;background-color:#ffffff14!important;color-scheme:dark}#pfBirthday::-webkit-datetime-edit,#pfBirthday::-webkit-datetime-edit-fields-wrapper,#pfBirthday::-webkit-datetime-edit-text,#pfBirthday::-webkit-datetime-edit-month-field,#pfBirthday::-webkit-datetime-edit-day-field,#pfBirthday::-webkit-datetime-edit-year-field{color:var(--text-primary)!important;-webkit-text-fill-color:var(--text-primary)!important;opacity:1!important}#pfBirthday::-webkit-calendar-picker-indicator{filter:invert(1);opacity:.95;cursor:pointer}#pfBirthday:-webkit-autofill{-webkit-text-fill-color:var(--text-primary)!important;-webkit-box-shadow:0 0 0px 1000px rgba(255,255,255,.08) inset!important;box-shadow:0 0 0 1000px #ffffff14 inset!important}@-moz-document url-prefix(){#pfBirthday{color-scheme:dark}}#pfBirthday{-webkit-appearance:auto!important;-moz-appearance:auto!important;appearance:auto!important;color-scheme:dark light;background-color:#ffffff14!important;border:1px solid var(--border)!important;color:var(--text-primary)!important;-webkit-text-fill-color:var(--text-primary)!important}#pfBirthday::-webkit-datetime-edit,#pfBirthday::-webkit-datetime-edit-fields-wrapper,#pfBirthday::-webkit-datetime-edit-text,#pfBirthday::-webkit-datetime-edit-month-field,#pfBirthday::-webkit-datetime-edit-day-field,#pfBirthday::-webkit-datetime-edit-year-field{opacity:1!important;color:var(--text-primary)!important;-webkit-text-fill-color:var(--text-primary)!important}#pfBirthday::-webkit-calendar-picker-indicator{filter:invert(1);opacity:1!important;cursor:pointer}#pfBirthday:-webkit-autofill{-webkit-text-fill-color:var(--text-primary)!important;-webkit-box-shadow:0 0 0 1000px rgba(255,255,255,.08) inset!important;box-shadow:0 0 0 1000px #ffffff14 inset!important}@-moz-document url-prefix(){#pfBirthday{color-scheme:dark;color:var(--text-primary)!important}}.header-content{gap:16px}.nav{margin-left:12px}.nav-tab{white-space:nowrap}#gr-rulesCard{margin-bottom:14px}#gr-calcCard{margin-top:14px;position:relative}#gr-rulesCard:after{content:"";display:block;height:1px;margin:10px -8px 0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent);border-radius:1px}.gr-calcHeader{display:flex;align-items:center;gap:10px}#gr-openSim.ghost{border:1px solid rgba(255,255,255,.15);background:linear-gradient(135deg,#6366f126,#8b5cf626);color:#e0e7ff;font-weight:500;padding:6px 14px;border-radius:12px;font-size:.9rem;transition:all .25s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}#gr-openSim.ghost:hover{border-color:#8b5cf699;background:linear-gradient(135deg,#6366f14d,#8b5cf64d);color:#fff;transform:translateY(-1px);box-shadow:0 2px 6px #00000040}#gr-openSim.ghost:active{transform:scale(.96);box-shadow:0 1px 3px #0000004d inset}#gr-calcCard .row+.row{margin-top:8px}.sim-lock{overflow:hidden}.progress-inner{height:100%;background:linear-gradient(90deg,var(--primary, #22c55e),var(--accent, #3b82f6))}.export-bar{display:flex;gap:8px;margin:8px 0 12px}@media print{nav,.nav,.export-bar,#pfActions{display:none!important}body{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.block-del-btn{position:absolute;top:4px;right:4px;background:#0000008c;color:#fff;border:none;font-size:12px;line-height:1;padding:2px 6px;border-radius:4px;cursor:pointer;display:none;z-index:2}.placed:hover .block-del-btn{display:block}.block-del-btn:hover{background:#ef4444d9}.cell.slot.over:after{content:"";position:absolute;pointer-events:none;border:2px dashed rgba(255,255,255,.6)}.cell.slot.over.hint-top:after{content:"";position:absolute;left:var(--pad);right:var(--pad);top:var(--pad);bottom:50%;border:2px dashed rgba(255,255,255,.6);pointer-events:none}.cell.slot.over.hint-full:after{content:"";position:absolute;top:var(--pad);bottom:var(--pad);left:var(--pad);right:var(--pad);border:2px dashed rgba(255,255,255,.6);pointer-events:none}.cell.slot.over.hint-bottom:after{content:"";position:absolute;left:var(--pad);right:var(--pad);top:50%;bottom:var(--pad);border:2px dashed rgba(255,255,255,.6);pointer-events:none}.cell.slot.over.hint-left:after{top:var(--pad);bottom:var(--pad);left:var(--pad);right:50%}.cell.slot.over.hint-right:after{top:var(--pad);bottom:var(--pad);left:50%;right:var(--pad)}.cell.slot.over.hint-bottom.hint-left:after{top:50%;left:var(--pad);right:50%;bottom:var(--pad)}.cell.slot.over.hint-bottom.hint-right:after{top:50%;left:50%;right:var(--pad);bottom:var(--pad)}.att-days{display:flex;gap:8px;overflow-x:auto;padding:6px 0}.att-record{background:#ffffff0d;border:1px solid var(--border);border-radius:8px;padding:4px 8px;white-space:nowrap;display:flex;align-items:center;gap:6px}.btn-del-att{font-size:.8rem;padding:2px 6px;background:#ef4444cc;border-radius:6px;cursor:pointer}#userMenuName,#userMenuAvatar{display:none!important}#page-ayuda details{background:#ffffff0d;border:1px solid var(--border);border-radius:12px;margin:12px 0;padding:12px 16px;cursor:pointer;transition:background .25s ease}#page-ayuda details:hover{background:#ffffff14}#page-ayuda summary{font-weight:600;color:var(--primary-light);font-size:1.1rem;list-style:none}#page-ayuda summary::marker,#page-ayuda summary::-webkit-details-marker{display:none}#page-ayuda summary:after{content:"›";float:right;transform:rotate(90deg);transition:transform .25s ease}#page-ayuda details[open] summary:after{transform:rotate(270deg)}.help-subsection{margin-top:8px;padding-left:8px}.help-subsection h4{color:var(--accent-light);font-size:.95rem;margin-top:8px;margin-bottom:4px}.help-subsection ul{list-style:none;padding-left:0;margin:0 0 8px}.help-subsection li{background:#ffffff0a;border-radius:8px;margin:3px 0;padding:6px 10px;font-size:.9rem}.help-subsection code{color:var(--primary-light);background:#ffffff1a;border-radius:4px;padding:2px 6px;font-family:monospace}.att-present{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff}.att-absent{background:linear-gradient(135deg,#dc2626,#b91c1c);color:#fff}.att-justified{background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#111;font-weight:600}.att-noclass{background:linear-gradient(135deg,#ef4444,#7f1d1d);color:#fff;opacity:.85}.att-present:hover,.att-absent:hover,.att-justified:hover,.att-noclass:hover{transform:translateY(-1px);box-shadow:0 3px 10px #0000004d}.placed.dragging{opacity:.7;transform:scale(1.05);transition:transform .15s ease}.timeline{display:grid;grid-template-columns:60px repeat(5,1fr);background:#ffffff0d;border-radius:12px;overflow:hidden;position:relative;height:1000px}.timeline-hour{position:relative;height:calc(1000px / 14);border-bottom:1px solid rgba(255,255,255,.08);font-size:.8rem;color:var(--text-secondary);padding-left:6px}.timeline-day{position:relative;border-left:1px solid rgba(255,255,255,.08)}.timeline-block{position:absolute;left:6%;right:6%;border-radius:8px;color:#fff;padding:4px 6px;font-size:.8rem;overflow:hidden;box-shadow:0 2px 6px #0000004d}.cal-evt{position:relative;border-radius:6px;margin:2px 0;padding:4px 6px;font-size:.85rem;transition:transform .1s ease}.cal-evt:hover{transform:scale(1.02)}.cal-evt .cal-del:hover{color:red!important}.grade-item.dragging{opacity:.7;transform:scale(1.03);background:#6366f126;border:1px dashed var(--primary)}.grade-item{transition:transform .15s ease,background .15s ease}.modal-body label{font-weight:600;color:#cbd5e1;margin-bottom:4px}.modal-body input.input{background:#ffffff12;border:1px solid rgba(255,255,255,.15);border-radius:10px;color:#fff;padding:8px 10px;width:100%;transition:border-color .2s}.modal-body input.input:focus{border-color:#6366f1;outline:none}.modal-actions button{min-width:140px}@keyframes slideIn{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;z-index:4000;animation:fadeIn .25s ease}.crear-malla-modal{width:92%;max-width:620px;background:#0f1115;border:1px solid rgba(255,255,255,.1);border-radius:18px;padding:26px 32px 30px;box-shadow:0 8px 24px #00000080;color:#fff;transform:translateY(-6px);animation:slideUp .35s ease forwards}.crear-malla-modal .modal-title{text-align:center;margin-bottom:1.4rem;font-size:1.55rem;font-weight:700;background:linear-gradient(90deg,#818cf8,#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.crear-malla-modal .modal-body{display:flex;flex-direction:column;gap:12px}.crear-malla-modal label{font-weight:600;color:#cbd5e1}.crear-malla-modal .input{background:#ffffff12;border:1px solid rgba(255,255,255,.12);border-radius:10px;color:#fff;padding:8px 10px;transition:border-color .2s ease,background .2s ease}.crear-malla-modal .input:focus{border-color:#6366f1;background:#ffffff1a;outline:none}.crear-malla-modal .inner-card{background:#ffffff0a;border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:10px 12px;margin-top:6px}.crear-malla-modal .inner-subtitle{margin-top:1.2rem;text-align:center;color:#9ca3af;font-weight:600;font-size:1rem}.crear-malla-modal .modal-actions{display:flex;justify-content:center;gap:16px;margin-top:22px}#mallaModal .crear-malla-modal{position:relative;margin:0!important;top:auto!important;transform:translateY(0)!important;align-self:center;justify-self:center}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}#mallaModal{display:flex!important;align-items:center!important;justify-content:center!important}#mallaModal .crear-malla-modal{position:relative;margin:0!important;top:0!important;transform:none!important;max-width:680px!important;width:90%!important;background:#0f1115;border-radius:18px;padding:32px 36px 38px!important;box-shadow:0 10px 40px #0009;overflow-y:auto;max-height:90vh}#mallaModal .modal-card,#mallaModal .card{all:unset}#mallaModal{display:flex!important;align-items:center!important;justify-content:center!important;padding:1rem}#mallaModal .crear-malla-modal{position:relative;margin:0!important;top:0!important;transform:none!important;max-width:770px!important;width:90%!important;background:#141620a6;backdrop-filter:blur(20px) saturate(140%);-webkit-backdrop-filter:blur(20px) saturate(140%);border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:20px 24px 24px!important;box-shadow:0 12px 32px #0000008c;color:#fff;max-height:85vh;overflow-y:auto;transition:all .3s ease}#mallaModal .crear-malla-modal:hover{box-shadow:0 12px 40px #6366f140;border-color:#6366f166}#mallaModal .crear-malla-modal .modal-title{font-size:1.3rem;margin-bottom:1rem}#mallaModal .crear-malla-modal .input{padding:6px 8px;font-size:.9rem}#mallaModal .crear-malla-modal .row{margin-top:4px}#mallaModal .crear-malla-modal .modal-actions button{padding:8px 18px;font-size:.9rem}.modal{display:flex!important;align-items:center!important;justify-content:center!important;position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:#000000a6!important;-webkit-backdrop-filter:blur(10px)!important;backdrop-filter:blur(10px)!important;z-index:5000!important}.modal-card{position:relative!important;margin:0!important;transform:none!important;top:auto!important;left:auto!important;max-width:785px!important;width:90%!important;min-height:390px!important;background:#12131bf2!important;border:1px solid rgba(255,255,255,.12)!important;border-radius:20px!important;padding:28px 32px!important;color:#fff!important;box-shadow:0 10px 30px #0009!important;backdrop-filter:blur(16px) saturate(140%)!important;-webkit-backdrop-filter:blur(16px) saturate(140%)!important;overflow-y:auto!important;max-height:90vh!important}.modal-card .modal-actions,.modal .modal-actions{display:flex;justify-content:center;gap:14px;margin-top:32px!important;padding-top:12px;border-top:1px solid rgba(255,255,255,.08)}.modal-card .modal-actions button,.modal .modal-actions button{min-width:130px;padding:10px 18px;font-weight:600;border-radius:12px;transition:all .25s ease}.modal-card .modal-actions button:hover{transform:translateY(-1px)}#page-malla[data-custom=true] .grid-item .sigla-label,#page-malla[data-custom=true] .grid-item .code-label,#page-malla[data-custom=true] .grid-item .prereq-label{position:static!important;inset:auto!important}#page-malla[data-custom=true] .grid-item .top-bar{display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 6px;margin-bottom:6px}#page-malla[data-custom=true] .grid-item .bottom-bar{display:flex;gap:4px;justify-content:flex-start;align-items:center;width:100%;padding:0 6px}#page-malla[data-custom=true] .grid-item:before{display:none}#page-malla[data-custom=true] .grid-item .credits-badge{display:none!important}#page-malla[data-custom=true] .malla-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:8px;padding:10px}#page-malla[data-custom=true] .grid-item{min-height:120px;width:100%;justify-content:space-between;transition:transform .15s ease,box-shadow .15s ease;position:relative;display:flex;flex-direction:column;align-items:center;border-radius:10px;overflow:hidden;color:#fff;text-align:center;box-shadow:inset 0 0 0 2px #0000002e;padding:34px 10px 28px}#page-malla[data-custom=true] .grid-item .course-name{margin-top:18px!important;padding-top:6px}#page-malla[data-custom=true] .grid-item .course-name{font-weight:600;padding:0 6px;position:relative;z-index:2;color:#fff;text-align:center;margin:0;line-height:1.28;word-break:break-word;-webkit-hyphens:auto;hyphens:auto;font-size:clamp(.82rem,.9vw + .5rem,1rem);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden;top:-10px}#page-malla[data-custom=true] .grid-item .prereq-label{position:absolute;bottom:3px;width:20px;height:20px;border-radius:50%;background:#ffffffeb;color:#000;display:flex;align-items:center;justify-content:center;font-size:.74rem;font-weight:700;border:1px solid rgba(0,0,0,.25);z-index:2}#page-malla[data-custom=true] .grid-item .num-label,#page-malla[data-custom=true] .grid-item .code-label{display:flex!important;align-items:center;justify-content:center;position:absolute!important;top:6px!important;right:6px!important;left:auto!important;z-index:10!important;width:24px!important;height:24px!important;background:#fff!important;color:#000!important;font-weight:800;font-size:.8rem;border-radius:50%!important;box-shadow:0 2px 4px #00000040!important}#page-malla[data-custom=true] .grid-item .sigla-label{position:relative!important;display:inline-flex!important;align-items:center;justify-content:center;pointer-events:auto;background:transparent!important;box-shadow:none!important;border-radius:0!important;border:none!important;color:#fff!important;font-weight:800;font-size:.85rem;padding:0!important;margin-right:auto!important;text-shadow:0 1px 2px rgba(0,0,0,.4)}#page-malla[data-custom=true] .grid-item .num-label{position:relative!important;display:flex!important;align-items:center;justify-content:center;width:24px!important;height:24px!important;background:#fff!important;color:#000!important;font-weight:800;font-size:.8rem;border-radius:50%!important;box-shadow:0 2px 5px #00000040!important;margin-left:8px!important}#page-malla[data-custom=true] .grid-item.aprobado:after{content:"";position:absolute;top:50%;left:50%;width:170%;height:6px;background:#ef4444f2!important;transform:translate(-50%,-50%) rotate(-44deg);z-index:2000!important;pointer-events:none;box-shadow:0 0 0 1px #0003}
