:root{color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:#f4f5f7;color:#1f2430}button{font-family:inherit;cursor:pointer}a{color:inherit}.app-shell{display:flex;flex-direction:column;height:100vh}.app-header{--accent:#1f6fc4;padding:10px 20px;background:#ffffff;color:#1f2430;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;border-bottom:1px solid #e5e7eb;border-top:3px solid var(--accent)}.app-header-title{gap:14px}.app-header h1,.app-header-title{display:flex;align-items:baseline;min-width:0}.app-header h1{margin:0;font-size:16px;font-weight:700;gap:8px}.app-header-kicker{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.app-header-variant{font-weight:500;color:#6b7280}.app-header a.back-link{font-size:12px;color:#6b7280;text-decoration:none;white-space:nowrap}.app-header a.back-link:hover{color:var(--accent)}.app-header-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.grado-button{border:1px solid var(--accent);background:color-mix(in srgb,var(--accent) 8%,#fff);color:var(--accent);border-radius:6px;padding:6px 12px;font-size:12px;font-weight:600;white-space:nowrap}.grado-button:hover{background:color-mix(in srgb,var(--accent) 16%,#fff)}.grado-backdrop{position:fixed;inset:0;z-index:100;background:rgba(15,23,42,.45);display:flex;align-items:flex-start;justify-content:center;padding:8vh 16px 16px;overflow-y:auto}.grado-modal{position:relative;width:100%;max-width:440px;background:#fff;border-radius:12px;padding:22px 22px 18px;box-shadow:0 20px 50px rgba(0,0,0,.3)}.grado-close{position:absolute;top:10px;right:12px;border:none;background:none;font-size:22px;line-height:1;color:#9ca3af;cursor:pointer}.grado-modal h2{margin:0 0 4px;font-size:17px}.grado-sub{margin:0 0 14px;font-size:12.5px;color:#6b7280}.grado-list{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-direction:column;gap:10px}.grado-list label{display:flex;gap:10px;align-items:flex-start;font-size:13px;cursor:pointer}.grado-desc,.grado-list input{margin-top:2px}.grado-desc{display:block;font-size:11.5px;color:#9ca3af}.grado-info{display:inline-block;margin:2px 0 0 26px;font-size:12px;font-weight:600;color:var(--accent,#1f6fc4);text-decoration:none}.grado-info:hover{text-decoration:underline}.grado-cta{display:inline-block;background:var(--accent,#1f6fc4);color:#fff;text-decoration:none;border-radius:6px;padding:8px 14px;font-size:13px;font-weight:600}.grado-cta:hover{filter:brightness(.95)}.grado-note{margin:12px 0 0;font-size:11px;color:#b0b6bf}.plan-switcher{position:relative;flex-shrink:0}.plan-switcher-btn{display:flex;align-items:center;gap:8px;padding:7px 12px;border-radius:8px;border:1px solid #d1d5db;background:#f9fafb;color:#1f2430;font-size:13px;font-weight:600;max-width:320px}.plan-switcher-btn:hover{border-color:var(--accent,#9ca3af)}.plan-switcher-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plan-switcher-caret{color:#9ca3af;font-size:10px}.plan-switcher-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:50;min-width:260px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 12px 32px rgba(0,0,0,.16);padding:6px}.plan-switcher-group+.plan-switcher-group{margin-top:4px;border-top:1px solid #f3f4f6;padding-top:4px}.plan-switcher-group-name{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#9ca3af;padding:6px 10px 2px}.plan-switcher-item{display:block;width:100%;text-align:left;padding:8px 10px;border:none;background:none;border-radius:6px;font-size:13px;color:#1f2430}.plan-switcher-item:hover{background:#f3f4f6}.plan-switcher-item.is-current{color:var(--accent,#1f6fc4);font-weight:700}.disclaimer{background:#fef3c7;color:#78350f;font-size:12px;padding:6px 16px;border-bottom:1px solid #fde68a;flex-shrink:0}.disclaimer a{color:#78350f;font-weight:600}.picker-page{max-width:880px;margin:0 auto;padding:40px 20px 64px}.picker-page h1{font-size:22px;margin:0 0 4px}.picker-page .picker-sub{color:#6b7280;font-size:14px;margin:0 0 28px}.picker-group{margin-bottom:28px}.picker-group h2{font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:#6b7280;margin:0 0 10px}.picker-toggle{display:inline-flex;margin:4px 0 24px;border:1px solid #d1d5db;border-radius:10px;overflow:hidden;background:#fff}.picker-toggle button{border:none;background:#fff;padding:9px 18px;font-size:13px;font-weight:600;color:#374151}.picker-toggle button.active{background:#111827;color:#fff}.picker-rows{display:flex;flex-direction:column;gap:10px}.picker-row{--accent:#1f6fc4;display:grid;grid-template-columns:132px 1fr auto auto;align-items:center;grid-gap:18px;gap:18px;text-decoration:none;color:inherit;background:#fff;border:1px solid #e5e7eb;border-left:4px solid var(--accent);border-radius:12px;overflow:hidden;transition:box-shadow .15s ease,transform .12s ease,border-color .15s ease}.picker-row:hover{box-shadow:0 8px 22px rgba(0,0,0,.1);transform:translateY(-1px);border-color:var(--accent)}.picker-row .pr-thumb{position:relative;align-self:stretch;min-height:92px;background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 55%,#000))}.picker-row .pr-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.picker-row .pr-body{padding:12px 0;min-width:0}.picker-row .pr-badge{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);border:1px solid;border-radius:5px;padding:2px 6px}.picker-row h3{margin:6px 0 0;font-size:17px;font-weight:700}.picker-row .pr-tagline{margin:3px 0 0;color:#4b5563;font-size:13px;line-height:1.4}.picker-row .pr-meta{color:#9ca3af;font-size:12px;white-space:nowrap}.picker-row .pr-cta{padding:0 18px 0 4px;font-size:13px;font-weight:700;color:var(--accent);white-space:nowrap}@media (max-width:640px){.picker-row{grid-template-columns:84px 1fr}.picker-row .pr-cta,.picker-row .pr-meta{grid-column:2;padding:0 14px 12px 0}}.picker-empty{background:#fff;border:1px dashed #d1d5db;border-radius:10px;padding:24px;color:#6b7280;font-size:14px}.summary-bar{display:flex;gap:16px;padding:8px 16px;border-bottom:1px solid #e5e7eb;flex-shrink:0;flex-wrap:wrap}.icon-toggle,.summary-bar{align-items:center;background:#fff}.icon-toggle{position:relative;display:inline-flex;justify-content:center;width:32px;height:32px;border:1px solid #d1d5db;border-radius:8px;color:#374151}.icon-toggle:hover{border-color:#9ca3af}.icon-toggle.active{background:#111827;border-color:#111827;color:#fff}.icon-toggle.has-dot:after{content:"";position:absolute;top:-3px;right:-3px;width:8px;height:8px;border-radius:999px;background:#d81b74;border:1.5px solid #fff}.mode-toggle{display:flex;border:1px solid #d1d5db;border-radius:6px;overflow:hidden}.mode-toggle button{border:none;background:#fff;padding:6px 14px;font-size:13px;color:#374151}.mode-toggle button.active{background:#111827;color:#fff}.summary-stats{display:flex;align-items:center;gap:20px}.stat{display:flex;flex-direction:column;line-height:1.1}.stat-value{font-size:16px;font-weight:700}.stat-label{font-size:11px;color:#6b7280}.share-button{border:1px solid #d1d5db;background:#f9fafb;border-radius:6px}.reset-button,.share-button{padding:6px 10px;font-size:12px}.reset-button{border:1px solid #fecaca;background:#fff;color:#b91c1c;border-radius:6px}.reset-button:hover{background:#fef2f2}.quick-select-button{border:1px solid #86efac;background:#f0fdf4;color:#166534;border-radius:6px;padding:6px 10px;font-size:12px;font-weight:600}.quick-select-button:hover{background:#dcfce7}.quick-select-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:6px 10px;border:1px solid #86efac;background:#f0fdf4;border-radius:8px}.quick-select-hint{font-size:12px;color:#166534;max-width:360px}.quick-finish{border:none;background:#16a34a;color:#fff;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:700}.quick-finish:disabled{background:#9ca3af;cursor:not-allowed}.quick-cancel{border:1px solid #d1d5db;background:#fff;color:#374151;border-radius:6px;padding:6px 12px;font-size:12px}.req-menu{position:relative}.chip-button{border:1px solid #d1d5db;background:#f9fafb;border-radius:6px;padding:6px 10px;font-size:12px;font-weight:600;color:#374151}.chip-button.done{border-color:#86efac;background:#f0fdf4;color:#166534}.req-menu-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:50;width:320px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 12px 32px rgba(0,0,0,.16);padding:10px}.req-menu-title{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#9ca3af;margin:0 0 6px}.req-menu-item{display:flex;gap:8px;align-items:flex-start;padding:6px 4px;font-size:12.5px;color:#1f2430;cursor:pointer}.req-menu-item+.req-menu-item{border-top:1px solid #f3f4f6}.req-menu-item input{margin-top:2px}.req-menu-desc{display:block;font-size:11px;color:#9ca3af;margin-top:2px}.search-bar{display:flex;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid #e5e7eb;flex-shrink:0;flex-wrap:wrap}.search-bar input[type=text]{flex:1 1;min-width:180px}.search-bar input[type=text],.search-bar select{padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:13px}.search-bar-close{margin-left:auto;border:none;background:none;font-size:20px;line-height:1;color:#9ca3af;padding:0 4px}.search-bar-close:hover{color:#374151}.only-available{display:flex;align-items:center;gap:6px;font-size:13px;color:#374151}.app-main{flex:1 1;display:flex;min-height:0;position:relative}.panel-reopen{position:absolute;top:50%;right:0;transform:translateY(-50%);width:22px;height:54px;border:1px solid #e5e7eb;border-right:none;border-radius:8px 0 0 8px;background:#fff;color:#6b7280;font-size:15px;box-shadow:-2px 0 8px rgba(0,0,0,.06);z-index:5}.panel-reopen:hover{color:#111827}.graph-wrapper{flex:1 1;min-width:0;background:#fafbfc}.semester-band{border-radius:10px;background:rgba(15,23,42,.028);pointer-events:none}.semester-band.alt{background:rgba(15,23,42,.06)}.semester-header{width:260px;display:flex;flex-direction:column;align-items:center;gap:1px;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.semester-header-roman{font-size:15px;font-weight:800;letter-spacing:.06em;color:#334155}.semester-header-sub{font-size:9.5px;text-transform:uppercase;letter-spacing:.08em;color:#94a3b8}.graph-legend{background:rgba(255,255,255,.94);border:1px solid #e5e7eb;border-radius:8px;padding:7px 10px;font-size:11px;color:#4b5563;box-shadow:0 2px 8px rgba(0,0,0,.06);display:flex;flex-direction:column;gap:4px}.graph-legend-row{display:flex;align-items:center;gap:8px}.graph-legend-row strong{color:#1f2430}.graph-legend-sep{height:1px;background:#e5e7eb;margin:2px 0}.legend-swatch{flex-shrink:0;width:22px;height:12px;border-radius:4px;box-sizing:border-box}.legend-swatch.swatch-green{background:#dcfce7;border:2px solid #16a34a}.legend-swatch.swatch-amber{background:#fef3c7;border:2px solid #d97706}.legend-swatch.swatch-grey{background:#e5e7eb;border:2px solid #9ca3af;filter:grayscale(1)}.legend-swatch.swatch-locked{background:#fde9d3;border:2px solid #b45309}.course-node{--node-color:#6b7280;--node-color-dark:#4b5563;position:relative;width:210px;background:var(--node-color);color:#fff;border:1px solid rgba(0,0,0,.14);border-radius:6px;overflow:hidden;font-size:11.5px;box-shadow:0 1px 3px rgba(0,0,0,.18);cursor:pointer;transition:opacity .15s ease,box-shadow .15s ease,filter .15s ease}.course-node.type-nucleo{--node-color:#0e8a95;--node-color-dark:#0a6b73}.course-node.type-electiva{--node-color:#d81b74;--node-color-dark:#ad1259}.course-node.type-cbu{--node-color:#312e81;--node-color-dark:#26235f}.course-node.type-complementaria{--node-color:#15915f;--node-color-dark:#0f6f49}.course-node.type-proyecto{--node-color:#1f6fc4;--node-color-dark:#17539a}.course-node.kind-reqing{--node-color:#475569;--node-color-dark:#334155}.course-node-top{display:flex;justify-content:space-between;align-items:stretch;font-weight:700}.course-code{padding:5px 8px;font-size:10px;letter-spacing:.03em;text-transform:uppercase;color:rgba(255,255,255,.92)}.course-credits{display:flex;align-items:center;justify-content:center;min-width:28px;padding:0 6px;font-size:12px;font-weight:700;background:var(--node-color-dark);color:#fff}.course-name{padding:3px 8px 8px;color:#fff;font-weight:600;line-height:1.25;min-height:30px}.course-node-bottom{display:flex;justify-content:space-between;align-items:center;gap:4px;padding:4px 8px;background:rgba(255,255,255,.16)}.course-type-tag{font-size:9px;color:rgba(255,255,255,.9);text-transform:uppercase;letter-spacing:.04em}.course-node.is-placeholder{background:#fff;border:1.5px dashed var(--node-color)}.course-node.is-placeholder,.course-node.is-placeholder .course-code,.course-node.is-placeholder .course-name{color:var(--node-color-dark)}.course-node.is-placeholder .course-credits{background:var(--node-color)}.course-node.is-placeholder .course-node-bottom{background:rgba(0,0,0,.05)}.course-node.is-placeholder .course-type-tag{color:#6b7280}.course-node.status-available{box-shadow:0 0 0 2px #fff,0 0 0 4px #16a34a,0 0 10px rgba(22,163,74,.45),0 2px 8px rgba(0,0,0,.28)}.course-node.status-one-away{filter:grayscale(.25);opacity:.92;box-shadow:0 0 0 2px #fff,0 0 0 4px #d97706,0 2px 6px rgba(0,0,0,.2)}.course-node.status-blocked{filter:grayscale(1);opacity:.42}.course-node.is-locked{filter:grayscale(.85);opacity:.6;box-shadow:0 0 0 2px #b45309,0 2px 6px rgba(0,0,0,.2)}.course-node .course-lock{font-size:10px}.course-node.status-approved{filter:saturate(.6) brightness(.96);box-shadow:0 0 0 2px #16a34a}.course-node.is-selected{box-shadow:0 0 0 2px #111827}.course-node.is-upstream{box-shadow:0 0 0 2px #2563eb}.course-node.is-downstream{box-shadow:0 0 0 2px rgba(22,163,74,.32)}.course-node.unlock-sole{box-shadow:0 0 0 3px #16a34a,0 0 10px rgba(22,163,74,.4)}.course-node.unlock-among{box-shadow:0 0 0 3px #d97706,0 0 10px rgba(217,119,6,.35)}.course-node.is-downstream,.course-node.is-selected,.course-node.is-upstream,.course-node.unlock-among,.course-node.unlock-sole{filter:none;opacity:1}.course-node.is-staged{box-shadow:0 0 0 3px #16a34a,0 0 0 6px rgba(22,163,74,.25);filter:none;opacity:1}.course-staged-check{font-size:9px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#fff;background:#16a34a;padding:1px 6px;border-radius:999px}.course-node.is-placeholder .course-staged-check{color:#fff}.course-node.is-dimmed{opacity:.18}@keyframes unlock-pop{0%{box-shadow:0 0 0 2px #16a34a,0 0 0 0 rgba(22,163,74,.75)}16%{box-shadow:0 0 0 3px #16a34a,0 0 28px 11px rgba(22,163,74,.65)}to{box-shadow:0 0 0 2px #fff,0 0 0 4px #16a34a,0 0 10px rgba(22,163,74,.45),0 2px 8px rgba(0,0,0,.28)}}@keyframes unlock-glare{0%{transform:translateX(-140%) skewX(-18deg);opacity:0}20%{opacity:1}to{transform:translateX(160%) skewX(-18deg);opacity:0}}.course-node.is-just-unlocked{animation:unlock-pop 1.9s cubic-bezier(.22,1,.36,1);filter:none;opacity:1;z-index:5}.course-node.is-just-unlocked:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(100deg,transparent 35%,rgba(255,255,255,.7) 50%,transparent 65%);animation:unlock-glare 1s ease-out .1s both}@media (prefers-reduced-motion:reduce){.course-node.is-just-unlocked{animation:none}.course-node.is-just-unlocked:after{display:none}}.side-panel{width:360px;flex-shrink:0;background:#fff;border-left:1px solid #e5e7eb;padding:16px 16px 16px 30px;overflow-y:auto;position:relative}.side-panel-empty{display:flex;align-items:center;justify-content:center;color:#9ca3af;font-size:13px;text-align:center;padding:32px 16px}.side-panel-close{position:absolute;top:10px;right:10px;border:none;background:none;font-size:20px;line-height:1;color:#9ca3af}.side-panel-collapse{position:absolute;top:50%;left:0;transform:translateY(-50%);width:20px;height:52px;border:1px solid #e5e7eb;border-left:none;border-radius:0 8px 8px 0;background:#f9fafb;color:#6b7280;font-size:15px}.side-panel-collapse:hover{color:#111827;background:#f3f4f6}.side-panel-code{font-size:11px;color:#6b7280;font-weight:700;letter-spacing:.04em}.side-panel h2{margin:2px 0 8px;font-size:17px}.side-panel-meta{display:flex;flex-wrap:wrap;gap:8px;font-size:11.5px;color:#4b5563;margin-bottom:12px}.side-panel-meta span{background:#f3f4f6;padding:2px 8px;border-radius:999px}.side-panel section{margin-top:16px}.side-panel h3{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;margin:0 0 6px}.requirement-text{font-size:13px;line-height:1.5;color:#1f2430}.requirement-note{font-size:11.5px;color:#9ca3af;margin-top:6px}.requirement-source{font-size:10.5px;color:#b0b6bf;margin-top:4px;font-style:italic}.coreq-list{margin:4px 0 0;padding-left:18px;font-size:13px;line-height:1.5;color:#1f2430}.coreq-list li{margin:1px 0}.course-description{margin:14px 0;padding:10px 12px;background:#f8fafc;border-radius:8px}.course-description h3{margin:0 0 4px}.course-description p{font-size:12.5px;line-height:1.55;color:#374151;margin:0}.course-description p.clamped{display:-webkit-box;-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;-webkit-mask-image:linear-gradient(180deg,#000 62%,transparent);mask-image:linear-gradient(180deg,#000 62%,transparent)}.desc-toggle{margin-top:4px;border:none;background:none;padding:0;font-size:11.5px;font-weight:600;color:var(--accent,#1f6fc4);cursor:pointer}.desc-toggle:hover{text-decoration:underline}.course-description .requirement-source{margin-top:6px}.req-section{border-left:3px solid transparent;padding-left:10px}.req-prereq{border-left-color:#2563eb}.req-coreq{border-left-color:#d97706}.req-restr{border-left-color:#9ca3af}.req-hint{display:block;text-transform:none;letter-spacing:0;font-size:10.5px;font-weight:400;color:#9ca3af;margin-top:1px}.missing-kind{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;margin:8px 0 3px}.missing-list{margin:0;padding-left:18px;font-size:13px;color:#92400e}.missing-list-coreq{color:#b45309}.gate-section{border:1px solid #fdba74;background:#fff7ed;border-radius:8px;padding:10px 12px;margin-top:14px}.gate-section h3{color:#9a3412;margin-top:0}.gate-list{margin:0;padding-left:18px;font-size:12.5px;color:#7c2d12}.gate-note{font-size:11px;color:#9a3412;margin:8px 0 0}.ext-link-block{margin-top:16px;border-left:3px solid var(--accent,#1f6fc4);padding-left:10px}.ext-link-block h3{margin:0 0 4px}.ext-link-block p{font-size:12.5px;color:#4b5563;margin:0 0 8px}.status-banner{margin:10px 0;padding:6px 10px;border-radius:6px;font-size:12.5px;font-weight:600;text-align:center}.status-banner-approved{background:#dcfce7;color:#166534}.status-banner-available{background:#dbeafe;color:#1e40af}.status-banner-one-away{background:#fef3c7;color:#92400e}.status-banner-blocked{background:#f3f4f6;color:#4b5563}.approve-toggle{margin-top:18px;width:100%;padding:9px;border-radius:6px;border:1px solid #111827;background:#111827;color:#fff;font-size:13px;font-weight:600}.approve-toggle.is-approved{background:#fff;color:#111827}.approve-toggle:disabled{opacity:.45;cursor:not-allowed}.offering-block{margin-top:16px;border:1px solid #e5e7eb;border-radius:8px;padding:10px 12px;background:#fbfbfc}.offering-line{font-size:13px;font-weight:600;display:flex;align-items:center;gap:8px}.offering-dot{width:8px;height:8px;border-radius:999px;flex-shrink:0}.offering-dot.on{background:#16a34a}.offering-dot.off{background:#9ca3af}.offering-dot.stale{background:#f59e0b}.offering-dot.unknown{background:transparent;border:1.5px solid #9ca3af}.offering-detail{font-size:12px;color:#4b5563;margin-top:6px}.chip-row{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.chip{font-size:10px;padding:2px 7px;border-radius:999px;background:#eef2ff;color:#3730a3;font-weight:700;letter-spacing:.03em}.chip.ptrm{background:#ecfdf5;color:#065f46}.mihorario-link{display:inline-block;margin-top:10px;font-size:12px;font-weight:600;color:#1f6fc4;text-decoration:none}.mihorario-link:hover{text-decoration:underline}.elective-picker{margin-top:16px}.elective-picker h3{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;margin:0 0 8px}.elective-count{display:inline-block;min-width:18px;padding:0 6px;border-radius:999px;background:#111827;color:#fff;font-size:11px;text-align:center}.elective-filters{align-items:center;justify-content:space-between;margin-bottom:8px}.elective-filters,.elective-live{display:flex;flex-wrap:wrap;gap:8px}.elective-live{margin-top:4px;font-size:11.5px;color:#065f46}.elective-live-code{font-family:IBM Plex Mono,monospace;font-weight:600}.elective-live.is-missing{color:#6b7280}.elective-term-toggle{display:flex;align-items:center;gap:6px;font-size:12px;color:#374151}.elective-search{width:100%;padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:12px;margin-bottom:10px}.elective-empty{font-size:12.5px;color:#9ca3af}.elective-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.elective-row{border:1px solid #e5e7eb;border-radius:8px;padding:9px 11px;background:#fbfbfc}.elective-row-head{align-items:flex-start;justify-content:space-between;gap:8px}.elective-name{font-size:12.5px;font-weight:600;line-height:1.3;color:#1f2430}.elective-row .chip-row{margin-top:6px}.chip.maestria{background:#f5f3ff;color:#5b21b6;text-transform:none;letter-spacing:0;font-weight:600}.elective-row .mihorario-link{margin-top:0;font-size:11.5px}.elective-row-actions{display:flex;align-items:center;gap:12px;margin-top:8px}.elective-pick{border:1px solid #111827;background:#111827;color:#fff;font-size:11.5px;font-weight:600;padding:5px 10px;border-radius:6px}.elective-pick:disabled{opacity:.6}.elective-pick.is-chosen{background:#16a34a;border-color:#16a34a}.elective-row.is-chosen{border-color:#16a34a;background:#f0fdf4}.elective-assigned{border:1px solid #16a34a;background:#f0fdf4;border-radius:8px;padding:9px 11px;margin-bottom:10px}.elective-assigned-main{font-size:12.5px;color:#14532d}.elective-assigned-meta{font-size:11.5px;color:#4b5563;margin-top:3px}.elective-remove{margin-top:7px;border:1px solid #d1d5db;background:#fff;font-size:11px;padding:3px 9px;border-radius:6px;color:#374151}.elective-resolve-error{font-size:11.5px;color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:6px 9px;margin:0 0 10px}.elective-hint{font-size:12px;color:#6b7280;margin:0 0 10px}.efi-form{margin:0 0 8px}.efi-label{display:block;font-size:12px;font-weight:600;color:#374151;margin-bottom:4px}.efi-row{display:flex;gap:6px;align-items:stretch}.efi-row .elective-search{flex:1 1;margin:0}.efi-row .elective-search[aria-invalid=true]{border-color:#f59e0b}.elective-row-head{display:flex;align-items:center;gap:6px;width:100%;padding:0;border:none;background:none;font:inherit;text-align:left;color:inherit;cursor:pointer}.elective-row-head .elective-name{flex:1 1;min-width:0}.elective-state{flex-shrink:0;font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:999px;background:#dcfce7;color:#166534}.elective-state.is-locked{background:#e5e7eb;color:#4b5563}.elective-lock{flex-shrink:0;display:inline-grid;place-items:center;width:18px;height:18px;border-radius:999px;background:#e5e7eb;color:#4b5563}.elective-row.is-locked{background:repeating-linear-gradient(135deg,#f6f7f9 0 6px,#eef0f3 6px 12px)}.elective-row.is-locked .chip-row,.elective-row.is-locked .elective-name{filter:grayscale(1);opacity:.75}.elective-row.is-open{border-left:3px solid #15803d}.elective-when{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:4px;font-size:11.5px;color:#6b7280}.elective-req{margin-top:8px;padding:8px 10px;border-radius:8px;background:#fff;border:1px solid #e5e7eb;font-size:12.5px}.elective-req strong{display:block;margin-bottom:4px}.elective-req p{margin:0 0 6px;color:#374151;line-height:1.45}.elective-missing{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:6px}.elective-missing>span:first-child{font-weight:600;color:#b45309;margin-right:2px}.chip.missing{background:#fff7ed;color:#9a3412;border:1px solid #fed7aa;cursor:pointer;font:inherit;font-size:10.5px;font-weight:700}.elective-ok{color:#166534!important;font-weight:600}.elective-src{font-size:11px;color:#6b7280!important}.elective-credits{color:#9a3412!important;font-weight:600}.elective-overflow{margin-top:4px;font-size:12px;font-weight:600;color:#b45309}.elective-state.is-unknown{background:#fef3c7;color:#92400e}.elective-bag{border:1px solid #c7d2fe;background:#f5f7ff;border-radius:10px;padding:10px 12px;margin:8px 0 12px}.elective-bag-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline;font-size:13px}.elective-bag-head span{font-size:12px;color:#4b5563}.elective-bag-list{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:6px}.elective-bag-list li{display:grid;grid-template-columns:1fr auto auto;grid-gap:8px;gap:8px;align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:6px 8px}.elective-bag-list li.is-here{border-color:#1f6fc4;box-shadow:inset 0 0 0 1px #1f6fc4}.elective-bag-title{display:block;font-size:12.5px;font-weight:600;color:#111827}.elective-bag-meta{display:block;font-size:11.5px;color:#4b5563}.elective-bag-state{font-size:11px;font-weight:600;padding:2px 7px;border-radius:999px;background:#e5e7eb;color:#374151;white-space:nowrap}.elective-bag-state.is-approved{background:#dcfce7;color:#166534}.elective-bag-state.is-planned{background:#dbeafe;color:#1e40af}.elective-overflow-note{margin:6px 0 8px;padding:8px 10px;border-radius:8px;background:#fff7ed;border:1px solid #fdba74;color:#7c2d12;font-size:12px;line-height:1.45}.elective-unnamed{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;color:#374151}.elective-unnamed select{font:inherit;padding:3px 6px;border:1px solid #d1d5db;border-radius:6px;background:#fff}.elective-loading{display:flex;align-items:center;gap:10px;padding:18px 12px;font-size:12.5px;color:#4b5563;background:#f9fafb;border:1px dashed #d1d5db;border-radius:10px}.elective-spinner{width:16px;height:16px;border-radius:50%;border:2px solid #c7d2fe;border-top-color:#1f6fc4;animation:elective-spin .8s linear infinite}@keyframes elective-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.elective-spinner{animation:none}}.elective-row .chip.is-integrador{background:#fef3c7;color:#78350f}.elective-row .elective-missing{margin-top:6px}.official-term{border:1px solid #e5e7eb;border-radius:8px;padding:8px 12px;margin:0 0 12px;display:flex;flex-direction:column;gap:4px}.official-term legend{font-weight:600;font-size:13px;padding:0 4px}.official-term label{font-size:13px;display:flex;gap:6px;align-items:center}.official-drop{display:block;border:2px dashed #c7d2fe;border-radius:10px;padding:14px;text-align:center;font-size:13px;color:#374151;margin-bottom:10px;cursor:pointer}.official-drop input{display:block;margin:8px auto 0}.official-files{list-style:none;padding:0;margin:0 0 12px;display:flex;flex-direction:column;gap:6px}.official-files li{display:grid;grid-template-columns:140px 1fr auto;grid-gap:8px;gap:8px;align-items:center;font-size:12.5px;padding:6px 8px;border:1px solid #e5e7eb;border-radius:8px}.official-files li.ok{border-color:#86efac;background:#f0fdf4}.official-files li span{color:#6b7280}.admin-check{display:flex;gap:6px;align-items:center;font-size:13px;margin:4px 0}.elective-missing-group{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px}.elective-missing-or{font-size:11px;color:#92400e;font-weight:600}