:root{
  --nx-white:#fff;--nx-stone:#f8fafc;--nx-border:#e2e8f0;
  --nx-text:#0f172a;--nx-muted:#64748b;--nx-soft:#94a3b8;
  --nx-r:12px;--nx-rs:8px;
}
*{box-sizing:border-box}
.nx-nav{background:var(--nx-white);border-bottom:1px solid var(--nx-border);padding:0 20px;height:58px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:200;width:100%}
.nx-brand{display:flex;align-items:center;gap:10px;text-decoration:none}
.nx-logo{width:34px;height:34px;border-radius:9px;background:#0f172a;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.nx-logo svg{width:17px;height:17px;stroke:#fff;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nx-brand-text{font-size:15px;font-weight:700;color:var(--nx-text)}
.nx-brand-text span{color:var(--nx-muted);font-weight:400}
.nx-back{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--nx-muted);text-decoration:none;border:1px solid var(--nx-border);padding:5px 12px;border-radius:var(--nx-rs);background:var(--nx-white);transition:.15s}
.nx-back:hover{background:var(--nx-stone);color:var(--nx-text)}
.nx-back svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.nx-nav-links{display:flex;align-items:center;gap:2px;margin-left:auto}
.nx-nav-link{font-size:13px !important;font-weight:500 !important;color:#64748b !important;text-decoration:none !important;padding:5px 11px !important;border-radius:7px !important;transition:.15s !important;white-space:nowrap !important;letter-spacing:-.01em !important;border:none !important;box-shadow:none !important}
.nx-nav-link:hover{background:#f1f5f9 !important;color:#0f172a !important;text-decoration:none !important}
@media(max-width:600px){.nx-nav-links{display:none}}

/* HOME */
.nx-hero{text-align:center;padding:52px 20px 36px;max-width:600px;margin:0 auto}
.nx-badge{display:inline-block;font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:#475569;background:#f1f5f9;border:1px solid var(--nx-border);padding:4px 12px;border-radius:20px;margin-bottom:14px}
.nx-hero h1{font-size:clamp(24px,5vw,38px);font-weight:800;color:var(--nx-text);line-height:1.15;margin-bottom:10px;letter-spacing:-.02em}
.nx-hero p{font-size:15px;color:var(--nx-muted);line-height:1.6;margin-bottom:28px}
.nx-stats{display:flex;justify-content:center;gap:28px;flex-wrap:wrap}
.nx-stat-n{font-size:24px;font-weight:800;color:var(--nx-text);display:block;letter-spacing:-.02em}
.nx-stat-l{font-size:11px;color:var(--nx-muted);text-transform:uppercase;letter-spacing:.05em}
.nx-sep{width:1px;background:var(--nx-border);align-self:stretch;margin:4px 0}

.nx-grid-wrap{max-width:1080px;margin:0 auto;padding:0 16px 60px}
.nx-section-label{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--nx-muted);margin-bottom:14px}
.nx-carreras-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.nx-c-card{background:var(--nx-white);border:1px solid var(--nx-border);border-radius:var(--nx-r);padding:20px 16px 40px;text-decoration:none;display:block;position:relative;overflow:hidden;transition:transform .15s,box-shadow .15s,border-color .15s}
.nx-c-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px -4px rgba(0,0,0,.1);border-color:var(--nx-cc)}
.nx-c-card::after{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--nx-cc)}
.nx-c-icon{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:10px;background:var(--nx-cl)}
.nx-c-icon svg{width:19px;height:19px;stroke:var(--nx-cc);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nx-c-name{font-size:13px;font-weight:700;color:var(--nx-text);line-height:1.3;margin-bottom:5px}
.nx-c-info{font-size:11px;color:var(--nx-muted)}
.nx-c-arrow{position:absolute;right:14px;bottom:14px;width:22px;height:22px;border-radius:50%;background:var(--nx-cl);display:flex;align-items:center;justify-content:center}
.nx-c-arrow svg{width:11px;height:11px;stroke:var(--nx-cc);fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}

/* CARRERA */
.nx-c-hero{padding:28px 20px 16px;max-width:880px;margin:0 auto}
.nx-c-badge{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:3px 10px;border-radius:20px;margin-bottom:10px}
.nx-c-hero h1{font-size:clamp(18px,4vw,28px);font-weight:800;color:var(--nx-text);margin-bottom:5px;letter-spacing:-.02em}
.nx-c-sub{font-size:13px;color:var(--nx-muted);margin-bottom:16px}
.nx-c-stats{display:flex;gap:20px;flex-wrap:wrap}
.nx-cs-n{font-size:17px;font-weight:800;color:var(--nx-text);display:block;letter-spacing:-.01em}
.nx-cs-l{font-size:10px;color:var(--nx-muted);text-transform:uppercase;letter-spacing:.05em}

.nx-legend{display:flex;gap:12px;flex-wrap:wrap;padding:4px 20px 14px;max-width:880px;margin:0 auto}
.nx-leg{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--nx-muted)}
.nx-leg-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}

/* PENSUM */
.nx-pensum{max-width:880px;margin:0 auto;padding:0 16px 60px}
.nx-sem{background:var(--nx-white);border:1px solid var(--nx-border);border-radius:var(--nx-r);overflow:hidden;margin-bottom:10px}
.nx-sem-head{padding:10px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--nx-border);background:var(--nx-stone)}
.nx-sem-title{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--nx-muted)}
.nx-sem-pill{font-size:10px;color:var(--nx-soft);background:var(--nx-white);border:1px solid var(--nx-border);padding:2px 8px;border-radius:10px}
.nx-cursos{padding:5px}

/* CURSO */
.nx-curso{border-radius:var(--nx-rs);margin-bottom:2px;overflow:hidden}
.nx-curso:last-child{margin-bottom:0}
.nx-curso-head{display:flex;align-items:center;gap:8px;padding:8px 10px;cursor:pointer;transition:background .12s;border-radius:var(--nx-rs);user-select:none}
.nx-curso-head:hover{background:var(--nx-stone)}
.nx-code{font-size:10px;font-weight:700;padding:2px 7px;border-radius:5px;white-space:nowrap;min-width:44px;text-align:center;flex-shrink:0}
.nx-nom{flex:1;font-size:13px;font-weight:500;color:var(--nx-text);line-height:1.3;min-width:0}
.nx-tdot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.nx-lab-badge{font-size:9px;font-weight:700;letter-spacing:.06em;padding:2px 6px;border-radius:5px;background:#fce7f3;color:#be185d;border:1px solid #fbcfe8;flex-shrink:0}
.nx-chev{width:15px;height:15px;flex-shrink:0;transition:transform .2s}
.nx-chev svg{width:15px;height:15px;stroke:var(--nx-soft);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;display:block}
.nx-curso.nx-open .nx-chev{transform:rotate(180deg)}
.nx-recursos{display:none;padding:5px 10px 10px;border-top:1px solid var(--nx-border)}
.nx-curso.nx-open .nx-recursos{display:block}
.nx-rec-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:6px}
.nx-rec-card{border:1px solid var(--nx-border);border-radius:var(--nx-rs);padding:12px 10px;background:var(--nx-stone);transition:border-color .15s,transform .15s}
.nx-rec-card:hover{border-color:var(--nx-rc);transform:translateY(-1px)}
.nx-rec-ico{width:30px;height:30px;border-radius:7px;display:flex;align-items:center;justify-content:center;margin-bottom:7px}
.nx-rec-ico svg{width:15px;height:15px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.nx-rec-tipo{font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin-bottom:3px}
.nx-rec-desc{font-size:11px;color:var(--nx-muted);line-height:1.35;margin-bottom:8px}
.nx-rec-btn{display:flex;align-items:center;justify-content:center;gap:4px;font-size:11px;font-weight:600;padding:5px 10px;border-radius:6px;border:1px solid var(--nx-border);width:100%;cursor:pointer;text-decoration:none;font-family:inherit;transition:.15s}
.nx-rec-btn.nx-empty{background:var(--nx-white);color:var(--nx-soft);cursor:default}
.nx-rec-btn.nx-available{color:#fff;border:none}
.nx-rec-btn.nx-available:hover{opacity:.88}
.nx-rec-btn svg{width:11px;height:11px;stroke:currentColor;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}

/* Modal */
.nx-modal-overlay{display:none !important;position:fixed !important;top:0 !important;left:0 !important;width:100vw !important;height:100vh !important;background:rgba(0,0,0,.55) !important;z-index:99999 !important;align-items:center !important;justify-content:center !important;padding:20px !important;box-sizing:border-box !important}
.nx-modal-overlay.nx-modal-open{display:flex !important}
.nx-modal{background:#ffffff !important;border-radius:16px !important;width:100% !important;max-width:500px !important;max-height:80vh !important;display:flex !important;flex-direction:column !important;overflow:hidden !important;box-shadow:0 25px 60px rgba(0,0,0,.35) !important;margin:auto !important}
.nx-modal-head{display:flex !important;align-items:center !important;gap:12px !important;padding:16px 20px !important;flex-shrink:0 !important;background:#fff !important}
.nx-modal-ico{width:36px !important;height:36px !important;border-radius:8px !important;display:flex !important;align-items:center !important;justify-content:center !important;flex-shrink:0 !important}
.nx-modal-ico svg{width:16px !important;height:16px !important;stroke:#fff !important;fill:none !important;stroke-width:2 !important;stroke-linecap:round !important;stroke-linejoin:round !important}
.nx-modal-title{font-size:15px !important;font-weight:700 !important;color:#0f172a !important;line-height:1.3 !important}
.nx-modal-sub{font-size:12px !important;color:#64748b !important;margin-top:2px !important}
.nx-modal-close{margin-left:auto !important;width:30px !important;height:30px !important;border-radius:8px !important;border:1px solid #e2e8f0 !important;background:#f8fafc !important;display:flex !important;align-items:center !important;justify-content:center !important;cursor:pointer !important;flex-shrink:0 !important;padding:0 !important}
.nx-modal-close svg{width:14px !important;height:14px !important;stroke:#64748b !important;fill:none !important;stroke-width:2 !important;stroke-linecap:round !important}
.nx-modal-close:hover{background:#e2e8f0 !important}
.nx-modal-body{overflow-y:auto !important;padding:16px 20px !important;display:flex !important;flex-direction:column !important;gap:6px !important;background:#fff !important}
.nx-modal-group{margin-bottom:12px !important}
.nx-modal-group-label{font-size:10px !important;font-weight:700 !important;letter-spacing:.08em !important;text-transform:uppercase !important;margin-bottom:8px !important;padding-bottom:6px !important;border-bottom:1px solid #e2e8f0 !important;display:block !important}
.nx-modal-item{display:flex !important;align-items:center !important;gap:10px !important;padding:10px 12px !important;border-radius:8px !important;border:1px solid #e2e8f0 !important;background:#f8fafc !important;text-decoration:none !important;color:#0f172a !important;transition:.15s !important;margin-bottom:4px !important}
.nx-modal-item:hover{background:#f1f5f9 !important;border-color:#cbd5e1 !important}
.nx-modal-item svg{width:18px !important;height:18px !important;stroke:#64748b !important;fill:none !important;stroke-width:1.5 !important;stroke-linecap:round !important;flex-shrink:0 !important}
.nx-modal-item span:first-of-type{flex:1 !important;font-size:13px !important;font-weight:500 !important;min-width:0 !important;overflow:hidden !important;text-overflow:ellipsis !important;white-space:nowrap !important}
.nx-modal-ver{font-size:11px !important;font-weight:600 !important;color:#2563eb !important;white-space:nowrap !important;flex-shrink:0 !important}
@media(max-width:600px){.nx-modal-overlay{padding:16px !important;align-items:center !important}.nx-modal{max-height:85vh !important;border-radius:16px !important}}
@media(max-width:680px){
  .nx-rec-grid{grid-template-columns:repeat(2,1fr)}
  .nx-carreras-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .nx-c-card{padding:16px 14px 36px}
  .nx-hero{padding:36px 16px 28px}
  .nx-c-hero{padding:20px 14px 16px}
  .nx-pensum{padding:0 12px 40px}
  .nx-sep{display:none}
}
@media(max-width:400px){
  .nx-carreras-grid{grid-template-columns:1fr}
  .nx-rec-grid{grid-template-columns:repeat(2,1fr)}
}