:root {
    --om-primary: #5b4bdb;
    --om-primary-dark: #3327a9;
    --om-secondary: #0d9488;
    --om-ink: #162033;
    --om-muted: #65738a;
    --om-soft: #f4f6fb;
    --om-border: rgba(22, 32, 51, .09);
    --om-radius: 20px;
    --om-shadow: 0 22px 60px rgba(39, 47, 85, .12);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { font-family: 'Roboto', sans-serif; color: var(--om-ink); background: #fff; }
a { text-decoration: none; }

.public-nav { background: rgba(255,255,255,.92); backdrop-filter: blur(16px); border-bottom: 1px solid var(--om-border); }
.navbar-brand.openmood-brand { display:flex; align-items:center; gap:.65rem; font-weight:900; color:var(--om-ink); letter-spacing:-.6px; }
.logo-mark { width:42px; height:42px; display:grid; place-items:center; border-radius:14px; color:#fff; background:linear-gradient(135deg,var(--om-primary),#8b5cf6); box-shadow:0 10px 25px rgba(91,75,219,.28); }
.openmood-brand small { display:block; color:var(--om-muted); font-size:.66rem; font-weight:500; letter-spacing:.08em; text-transform:uppercase; }

.hero-openmood { padding: 9.5rem 0 6rem; min-height: 760px; position:relative; overflow:hidden; background: radial-gradient(circle at 12% 20%, rgba(91,75,219,.16), transparent 28%), radial-gradient(circle at 84% 18%, rgba(13,148,136,.14), transparent 25%), linear-gradient(180deg,#fbfbff 0%,#fff 100%); }
.hero-openmood:before { content:""; position:absolute; inset:0; background-image:linear-gradient(rgba(91,75,219,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(91,75,219,.035) 1px,transparent 1px); background-size:42px 42px; mask-image:linear-gradient(to bottom,black,transparent 82%); }
.hero-copy { position:relative; z-index:2; }
.hero-badge { display:inline-flex; align-items:center; gap:.55rem; padding:.55rem .9rem; border-radius:999px; background:#fff; border:1px solid rgba(91,75,219,.16); color:var(--om-primary-dark); font-weight:700; box-shadow:0 8px 26px rgba(39,47,85,.08); }
.hero-title { font-size:clamp(2.7rem,6vw,5.4rem); line-height:.96; letter-spacing:-.07em; font-weight:900; margin:1.5rem 0; }
.hero-title .gradient-text { background:linear-gradient(90deg,var(--om-primary),#8b5cf6 55%,var(--om-secondary)); -webkit-background-clip:text; color:transparent; }
.hero-lead { font-size:1.17rem; color:var(--om-muted); max-width:690px; line-height:1.75; }
.btn-om-primary { background:linear-gradient(135deg,var(--om-primary),#7666ee); color:#fff; border:0; border-radius:13px; padding:.88rem 1.25rem; box-shadow:0 12px 28px rgba(91,75,219,.24); }
.btn-om-primary:hover { color:#fff; transform:translateY(-1px); }
.btn-om-outline { border:1px solid rgba(22,32,51,.14); background:#fff; color:var(--om-ink); border-radius:13px; padding:.88rem 1.25rem; }

.hero-console { position:relative; z-index:2; background:#11172a; color:#fff; border-radius:30px; padding:1rem; box-shadow:0 40px 90px rgba(17,23,42,.28); transform:rotate(1.5deg); }
.console-window { border-radius:22px; background:#f8f9fd; color:var(--om-ink); overflow:hidden; min-height:500px; }
.console-head { background:#fff; padding:.9rem 1rem; border-bottom:1px solid var(--om-border); display:flex; align-items:center; gap:.45rem; }
.console-dot { width:9px;height:9px;border-radius:50%;background:#d9deeb; }
.console-body { padding:1.2rem; }
.mini-sidebar { background:linear-gradient(180deg,#28205f,#3b2f8b); border-radius:16px; height:410px; padding:1rem .7rem; color:#fff; }
.mini-nav { height:34px; border-radius:9px; margin-bottom:.55rem; background:rgba(255,255,255,.10); }
.mini-nav.active { background:rgba(255,255,255,.24); }
.metric-mini { background:#fff; border:1px solid var(--om-border); border-radius:16px; padding:1rem; box-shadow:0 10px 30px rgba(39,47,85,.06); }
.metric-bar { height:7px; border-radius:99px; background:#e9e9f4; overflow:hidden; }
.metric-bar span { display:block;height:100%;background:linear-gradient(90deg,var(--om-primary),#8b5cf6);border-radius:99px; }

.section-space { padding:6rem 0; }
.section-soft { background:var(--om-soft); }
.section-heading .eyebrow, .eyebrow { font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; font-weight:800; color:var(--om-primary); }
.section-heading h2 { font-size:clamp(2rem,4vw,3.4rem); letter-spacing:-.045em; font-weight:900; }
.section-heading p { color:var(--om-muted); font-size:1.08rem; }
.feature-card { height:100%; border:1px solid var(--om-border); border-radius:var(--om-radius); padding:1.5rem; background:#fff; transition:.25s ease; }
.feature-card:hover { transform:translateY(-6px); box-shadow:var(--om-shadow); border-color:rgba(91,75,219,.20); }
.feature-icon { width:50px;height:50px;display:grid;place-items:center;border-radius:15px;background:rgba(91,75,219,.10);color:var(--om-primary);font-size:1.15rem;margin-bottom:1rem; }
.feature-card p { color:var(--om-muted); margin-bottom:0; }

.plan-card { height:100%; border:1px solid var(--om-border); border-radius:25px; padding:2rem; background:#fff; position:relative; overflow:hidden; }
.plan-card.featured { border:2px solid var(--om-primary); box-shadow:var(--om-shadow); }
.plan-card.featured:before { content:"Más completo"; position:absolute; right:-38px; top:24px; transform:rotate(45deg); background:var(--om-primary); color:#fff; font-size:.7rem; font-weight:800; padding:.35rem 3rem; }
.plan-level { display:inline-flex; padding:.38rem .7rem; border-radius:999px; background:var(--om-soft); color:var(--om-primary-dark); font-size:.78rem; font-weight:800; }
.plan-list { list-style:none;padding:0;margin:1.5rem 0; }
.plan-list li { display:flex; gap:.7rem; margin:.75rem 0; color:var(--om-muted); }
.plan-list i { color:var(--om-secondary); margin-top:.25rem; }

.access-card { border:1px solid var(--om-border); border-radius:20px; background:#fff; padding:1.4rem; height:100%; }
.access-avatar { width:54px;height:54px;border-radius:17px;display:grid;place-items:center;background:linear-gradient(135deg,var(--om-primary),#8b5cf6);color:#fff;font-weight:900;font-size:1.1rem; }
.credentials-box { background:#f7f7fb; border:1px dashed rgba(91,75,219,.25); border-radius:13px; padding:.8rem; font-size:.85rem; }

.cta-panel { background:linear-gradient(135deg,#191333,#2f246d 60%,#174e53); border-radius:32px; padding:3.5rem; color:#fff; position:relative; overflow:hidden; }
.cta-panel:after { content:""; width:320px;height:320px;border-radius:50%;position:absolute;right:-120px;top:-160px;background:rgba(255,255,255,.08); }
.public-footer { background:#101525;color:#cbd2e1;padding:4rem 0 1.5rem; }
.public-footer h5 { color:#fff; }
.public-footer a { color:#cbd2e1; }
.public-footer a:hover { color:#fff; }

.floating-actions { position:fixed; right:22px; bottom:22px; display:flex; flex-direction:column; gap:.7rem; z-index:1030; }
.float-action { display:flex; align-items:center; gap:.6rem; border-radius:999px; padding:.75rem 1rem; color:#fff; font-weight:700; box-shadow:0 14px 34px rgba(17,23,42,.22); }
.float-action.quote { background:linear-gradient(135deg,var(--om-primary),#7c3aed); }
.float-action.whatsapp { background:#20b963; }
.float-action:hover { color:#fff; transform:translateY(-2px); }

.auth-page { min-height:100vh; background:radial-gradient(circle at 15% 20%,rgba(91,75,219,.22),transparent 30%),radial-gradient(circle at 90% 85%,rgba(13,148,136,.18),transparent 30%),#f6f7fc; display:grid; place-items:center; padding:2rem; }
.auth-shell { width:min(1050px,100%); background:#fff; border-radius:30px; overflow:hidden; box-shadow:0 30px 90px rgba(39,47,85,.18); display:grid; grid-template-columns:1.05fr .95fr; }
.auth-visual { padding:3rem; color:#fff; background:linear-gradient(145deg,#1c1740,#4d3dc4 62%,#168a82); position:relative; overflow:hidden; }
.auth-visual:before,.auth-visual:after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.08)}
.auth-visual:before{width:250px;height:250px;right:-90px;top:-80px}.auth-visual:after{width:180px;height:180px;left:-70px;bottom:-70px}
.auth-card { padding:3rem; }
.auth-card .form-control, .auth-card .form-select { min-height:52px; border-radius:13px; border-color:#dfe3ee; }
.demo-hint { background:#f5f3ff;border:1px solid #e2dcff;border-radius:14px;padding:1rem; }

.admin-body { background:#f4f6fb; min-height:100vh; }
.admin-sidebar { width:270px; background:linear-gradient(180deg,#151126,#201944); color:#fff; position:fixed; inset:0 auto 0 0; padding:1.2rem; z-index:1040; display:flex; flex-direction:column; transition:.25s ease; }
.admin-brand { display:flex;align-items:center;gap:.8rem;color:#fff;padding:.6rem .5rem 1.5rem; }
.admin-brand .brand-symbol { width:46px;height:46px;border-radius:15px;display:grid;place-items:center;background:linear-gradient(135deg,var(--om-primary),#8b5cf6); }
.admin-brand strong,.admin-brand small { display:block; }.admin-brand small{font-size:.65rem;color:#aab3ca;letter-spacing:.1em;text-transform:uppercase;margin-top:.1rem}
.admin-nav { display:grid;gap:.35rem; }
.admin-nav a { color:#bbc3d7; padding:.78rem .9rem; border-radius:12px; display:flex;align-items:center;gap:.8rem; }
.admin-nav a:hover,.admin-nav a.active { color:#fff;background:rgba(255,255,255,.10); }
.admin-nav i { width:20px;text-align:center; }
.sidebar-bottom { margin-top:auto;padding:1rem .5rem; }.plan-pill{display:inline-flex;gap:.5rem;align-items:center;background:rgba(255,255,255,.10);padding:.55rem .8rem;border-radius:999px;font-weight:700;font-size:.8rem}
.admin-main { margin-left:270px; min-height:100vh; }
.admin-topbar { height:84px; background:#fff; border-bottom:1px solid var(--om-border); padding:0 1.7rem; display:flex;align-items:center;gap:1rem; position:sticky;top:0;z-index:1020; }
.admin-content { padding:1.7rem; }
.topbar-icon { width:42px;height:42px;border-radius:13px;border:1px solid var(--om-border);display:grid;place-items:center;color:var(--om-ink);position:relative}.topbar-icon span{position:absolute;width:7px;height:7px;border-radius:50%;background:#ef4444;right:8px;top:8px}
.user-chip { display:flex;align-items:center;gap:.7rem;border:0;background:transparent; }.user-chip strong,.user-chip small{display:block}.user-chip small{font-size:.7rem;color:var(--om-muted)}
.avatar-sm { width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(135deg,var(--om-primary),#8b5cf6);color:#fff;font-weight:800; }
.dashboard-card { border:1px solid var(--om-border); border-radius:19px; background:#fff; padding:1.25rem; box-shadow:0 6px 22px rgba(39,47,85,.045); }
.stat-card { display:flex;align-items:center;gap:1rem; }.stat-icon{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:#f1efff;color:var(--om-primary);font-size:1.15rem}.stat-card h3{font-weight:900;margin:0}.stat-card p{margin:0;color:var(--om-muted);font-size:.85rem}
.module-row { display:flex;align-items:center;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--om-border); }.module-row:last-child{border-bottom:0}.module-icon{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;background:#f4f2ff;color:var(--om-primary)}
.level-selector { border:1px solid var(--om-border);border-radius:18px;padding:1rem;background:#fff; }.level-option{border:1px solid var(--om-border);border-radius:14px;padding:1rem;cursor:pointer;height:100%}.level-option.active{border-color:var(--om-primary);background:#f6f4ff;box-shadow:inset 0 0 0 1px var(--om-primary)}
.table-modern { margin:0; }.table-modern th{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--om-muted);font-weight:800;border-bottom-color:var(--om-border)}.table-modern td{vertical-align:middle;border-bottom-color:var(--om-border)}

.portal-shell { min-height:100vh;background:#f5f7fb; }.portal-nav{background:#fff;border-bottom:1px solid var(--om-border);}.portal-hero{padding:2rem 0 1.25rem;background:linear-gradient(180deg,#fff,#f5f7fb)}
.course-card { background:#fff;border:1px solid var(--om-border);border-radius:19px;overflow:hidden;height:100%; }.course-cover{height:145px;background:linear-gradient(135deg,#342b82,#6d5ce8 60%,#15978b);position:relative}.course-cover i{position:absolute;color:rgba(255,255,255,.22);font-size:5rem;right:1rem;bottom:-.5rem}.course-body{padding:1.2rem}.progress-thin{height:7px}
.widget-card { background:#fff;border:1px solid var(--om-border);border-radius:18px;padding:1.2rem;height:100%; }

.install-page { background:#f4f6fb;min-height:100vh;padding:3rem 0; }.install-shell{max-width:960px;margin:auto;background:#fff;border-radius:28px;box-shadow:var(--om-shadow);overflow:hidden}.install-head{padding:2rem;background:linear-gradient(135deg,#191333,#4d3dc4);color:#fff}.install-body{padding:2rem}.requirement{display:flex;justify-content:space-between;padding:.7rem 0;border-bottom:1px solid var(--om-border)}

@media (max-width: 991.98px) {
    .hero-openmood { padding-top:7.5rem; min-height:auto; }
    .hero-console { margin-top:3rem; transform:none; }
    .auth-shell { grid-template-columns:1fr; }.auth-visual{display:none}
    .admin-sidebar { transform:translateX(-100%); }.admin-sidebar.show{transform:translateX(0)}
    .admin-main { margin-left:0; }
}
@media (max-width: 575.98px) {
    .hero-title { font-size:2.8rem; }
    .cta-panel { padding:2rem; }
    .floating-actions { right:12px;bottom:12px; }.float-action span{display:none}.float-action{width:50px;height:50px;justify-content:center;padding:0;font-size:1.15rem}
    .auth-page{padding:.7rem}.auth-card{padding:1.5rem}.admin-content{padding:1rem}.admin-topbar{padding:0 1rem}
}

/* OPENMOOD 1.0 · Entrega 3 */
.admin-nav-label{font-size:.62rem;text-transform:uppercase;letter-spacing:.13em;color:#747f9b;padding:1rem .9rem .2rem;font-weight:800}
.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.page-heading h1{letter-spacing:-.035em}.back-link{display:inline-flex;align-items:center;gap:.5rem;color:var(--om-muted);font-weight:700}.back-link:hover{color:var(--om-primary)}
.calendar-date{flex-direction:column;line-height:1}.calendar-date small{font-size:.58rem;margin-top:.25rem}.notification-mini{display:flex;gap:.8rem;padding:.9rem 0;border-bottom:1px solid var(--om-border)}.notification-mini:last-child{border:0}.notification-mini i{color:var(--om-primary);margin-top:.2rem}.notification-mini strong,.notification-mini small{display:block}.notification-mini small{color:var(--om-muted);margin-top:.2rem}.notification-mini.unread strong:after{content:"";display:inline-block;width:7px;height:7px;background:var(--om-primary);border-radius:50%;margin-left:.5rem}
.course-cover-alt{background:linear-gradient(135deg,#14213d,#384b8c 60%,#0d9488)}
.course-hero{padding:3.2rem 0;background:radial-gradient(circle at 10% 20%,rgba(255,255,255,.12),transparent 23%),linear-gradient(135deg,#171333,#4d3dc4 65%,#116d68);color:#fff}.course-progress-card{padding:1.2rem;border:1px solid rgba(255,255,255,.2);border-radius:18px;background:rgba(255,255,255,.12);backdrop-filter:blur(12px)}.course-progress-card .progress{background:rgba(255,255,255,.2)}.course-progress-card .progress-bar{background:#fff}
.course-tabs{display:flex;gap:.55rem;overflow:auto;padding-bottom:.35rem}.course-tabs a{display:inline-flex;align-items:center;gap:.45rem;white-space:nowrap;padding:.68rem .9rem;border-radius:12px;background:#fff;border:1px solid var(--om-border);color:var(--om-muted);font-weight:700;font-size:.86rem}.course-tabs a.active,.course-tabs a:hover{color:#fff;background:var(--om-primary);border-color:var(--om-primary)}
.section-block{background:#fff;border:1px solid var(--om-border);border-radius:20px;margin-bottom:1.25rem;overflow:hidden}.section-block-head{display:flex;justify-content:space-between;gap:1rem;padding:1.35rem;border-bottom:1px solid var(--om-border)}.activity-list{padding:.35rem 1rem}.activity-item{display:flex;align-items:center;gap:1rem;padding:1rem .35rem;border-bottom:1px solid var(--om-border);color:var(--om-ink)}.activity-item:last-child{border:0}.activity-item small{display:block;color:var(--om-muted);margin-top:.18rem}.activity-item:hover strong{color:var(--om-primary)}.activity-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:13px;background:#f2efff;color:var(--om-primary);flex:0 0 auto}.activity-icon.lg{width:58px;height:58px;border-radius:18px;font-size:1.25rem}.completion-check{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:#dcfce7;color:#15803d}.course-tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;margin-top:1rem}.course-tool-grid a{padding:1rem;border-radius:14px;background:#f6f7fb;color:var(--om-ink);font-weight:700;display:grid;gap:.45rem}.course-tool-grid i{color:var(--om-primary)}
.builder-section{background:#fff;border:1px solid var(--om-border);border-radius:20px;margin-bottom:1.1rem;overflow:hidden}.builder-section-head{padding:1.25rem;display:flex;justify-content:space-between;align-items:center;gap:1rem;background:#fafaff;border-bottom:1px solid var(--om-border)}.builder-section-head small,.builder-section-head p{display:block;color:var(--om-muted);margin:0}.builder-activities{padding:.65rem 1rem}.builder-activity{display:flex;align-items:center;gap:.8rem;padding:.8rem 0;border-bottom:1px solid var(--om-border)}.builder-activity:last-child{border:0}.builder-activity small{display:block;color:var(--om-muted)}.empty-inline{padding:1.2rem;text-align:center;color:var(--om-muted);border:1px dashed var(--om-border);border-radius:13px;margin:.5rem 0}.activity-fields{padding:1rem;background:#f7f8fc;border-radius:15px}
.learning-card{background:#fff;border:1px solid var(--om-border);border-radius:23px;overflow:hidden}.learning-card-head{padding:1.35rem 1.5rem;display:flex;align-items:center;gap:1rem;border-bottom:1px solid var(--om-border)}.learning-content{padding:1.7rem;font-size:1.04rem;line-height:1.8}.learning-content img{max-width:100%;height:auto}.external-link-panel{display:grid;place-items:center;text-align:center;background:#f5f7fb;border-radius:18px;padding:2rem}.external-link-panel i{font-size:2rem;color:var(--om-primary);margin-bottom:1rem}.assignment-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;margin-top:2rem}.assignment-meta div{padding:1rem;background:#f6f7fb;border-radius:14px}.assignment-meta small,.assignment-meta strong{display:block}.assignment-meta small{color:var(--om-muted);margin-bottom:.25rem}
.question-admin{display:flex;align-items:flex-start;gap:.9rem;padding:1rem 0;border-bottom:1px solid var(--om-border)}.question-number{width:32px;height:32px;display:grid;place-items:center;border-radius:10px;background:var(--om-primary);color:#fff;font-weight:800}.question-admin small{display:block;color:var(--om-muted);margin-top:.25rem}.question-options-mini{margin-top:.45rem;color:var(--om-muted);font-size:.82rem}.quiz-question{border:0;padding:1.1rem 0 1.5rem;border-bottom:1px solid var(--om-border);margin-bottom:1rem}.quiz-question legend{font-size:1.05rem;font-weight:800;display:flex;gap:.7rem;align-items:flex-start}.quiz-question legend span{width:28px;height:28px;display:grid;place-items:center;background:#eeeafe;color:var(--om-primary);border-radius:9px;flex:0 0 auto}.quiz-option{display:flex;gap:.8rem;align-items:center;border:1px solid var(--om-border);border-radius:13px;padding:.8rem 1rem;margin:.55rem 0;cursor:pointer}.quiz-option:hover{border-color:var(--om-primary);background:#faf9ff}.quiz-option input{accent-color:var(--om-primary)}.attempt-row,.result-row,.report-metric{display:flex;justify-content:space-between;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--om-border)}.result-row div{display:grid}.result-row small{color:var(--om-muted);margin-top:.25rem}
.forum-card{display:flex;gap:1rem;align-items:center;padding:1.3rem;background:#fff;border:1px solid var(--om-border);border-radius:19px;color:var(--om-ink);height:100%}.forum-card:hover{transform:translateY(-3px);box-shadow:var(--om-shadow)}.forum-card-icon{width:55px;height:55px;display:grid;place-items:center;border-radius:17px;background:#f1efff;color:var(--om-primary);font-size:1.25rem}.forum-card h4{font-size:1.1rem}.forum-card p,.forum-card small{color:var(--om-muted)}.forum-topic{display:flex;gap:.7rem;padding:1rem;border-radius:13px;color:var(--om-ink);border-bottom:1px solid var(--om-border)}.forum-topic.active{background:#f2efff;color:var(--om-primary)}.forum-topic strong,.forum-topic small{display:block}.forum-topic small{color:var(--om-muted);margin-top:.25rem}.forum-post{display:flex;gap:.9rem;padding:1rem 0;border-bottom:1px solid var(--om-border)}.forum-post small{color:var(--om-muted)}
.lesson-shell{display:grid;grid-template-columns:300px 1fr;background:#fff;border:1px solid var(--om-border);border-radius:23px;overflow:hidden;min-height:600px}.lesson-index{padding:1.4rem;background:#f7f8fc;border-right:1px solid var(--om-border)}.lesson-index a{display:flex;align-items:center;gap:.7rem;padding:.8rem;border-radius:12px;color:var(--om-muted);margin:.25rem 0}.lesson-index a span{width:27px;height:27px;display:grid;place-items:center;border-radius:9px;background:#fff;border:1px solid var(--om-border)}.lesson-index a.active{background:var(--om-primary);color:#fff}.lesson-index a.active span{color:var(--om-primary)}.lesson-page{padding:2rem 2.5rem}
.wiki-layout{display:grid;grid-template-columns:280px 1fr;background:#fff;border:1px solid var(--om-border);border-radius:20px;overflow:hidden}.wiki-sidebar{padding:1.2rem;background:#f7f8fc;border-right:1px solid var(--om-border)}.wiki-sidebar a{display:flex;align-items:center;gap:.6rem;padding:.75rem;border-radius:11px;color:var(--om-muted)}.wiki-sidebar a small{margin-left:auto}.wiki-sidebar a.active{background:#fff;color:var(--om-primary);box-shadow:0 6px 18px rgba(39,47,85,.07)}.wiki-main{padding:1.7rem}.revision-row{display:flex;gap:1rem;padding:.8rem 0;border-bottom:1px solid var(--om-border)}.revision-row>span{width:38px;height:30px;display:grid;place-items:center;border-radius:9px;background:#f1efff;color:var(--om-primary);font-weight:800}.revision-row strong,.revision-row small{display:block}.revision-row small{color:var(--om-muted)}
.search-panel{display:flex;align-items:center;gap:.8rem;background:#fff;border:1px solid var(--om-border);border-radius:15px;padding:.4rem .5rem .4rem 1rem}.search-panel input{border:0;outline:0;flex:1;background:transparent}.search-panel button{border:0;background:var(--om-primary);color:#fff;padding:.65rem 1rem;border-radius:11px}.glossary-card,.database-record{height:100%;background:#fff;border:1px solid var(--om-border);border-radius:18px;padding:1.25rem}.glossary-card p,.glossary-card small{color:var(--om-muted)}.term-letter{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:#f1efff;color:var(--om-primary);font-weight:900}.record-field{display:grid;padding:.7rem 0;border-bottom:1px solid var(--om-border)}.record-field small{color:var(--om-muted);font-weight:700;margin-bottom:.2rem}
.chat-shell{height:calc(100vh - 118px);display:grid;grid-template-columns:340px 1fr;background:#fff;border:1px solid var(--om-border);border-radius:22px;overflow:hidden}.chat-sidebar{border-right:1px solid var(--om-border);display:flex;flex-direction:column;min-width:0}.chat-sidebar-head{display:flex;justify-content:space-between;align-items:center;padding:1.2rem}.chat-search{display:flex;align-items:center;gap:.6rem;background:#f5f6fa;border-radius:12px;margin:0 1rem 1rem;padding:.7rem}.chat-search input{border:0;background:transparent;outline:0;min-width:0;flex:1}.chat-list{overflow:auto}.chat-conversation{display:flex;gap:.75rem;padding:1rem;color:var(--om-ink);border-top:1px solid var(--om-border)}.chat-conversation.active{background:#f1efff}.chat-conversation strong,.chat-conversation small{display:block}.chat-conversation small{color:var(--om-muted);margin-top:.2rem}.chat-avatar{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:#edeafe;color:var(--om-primary);flex:0 0 auto}.chat-main{display:grid;grid-template-rows:auto 1fr auto;min-width:0}.chat-head{padding:1rem 1.3rem;border-bottom:1px solid var(--om-border);display:flex;justify-content:space-between;align-items:center}.chat-head h5{margin:0}.chat-head small{color:var(--om-muted)}.chat-messages{padding:1.2rem;overflow:auto;background:#f8f9fc}.chat-message{display:flex;gap:.65rem;margin:.8rem 0;max-width:78%}.chat-message.mine{margin-left:auto;flex-direction:row-reverse}.chat-bubble{padding:.75rem .9rem;background:#fff;border:1px solid var(--om-border);border-radius:15px 15px 15px 4px}.chat-message.mine .chat-bubble{background:var(--om-primary);color:#fff;border-color:var(--om-primary);border-radius:15px 15px 4px 15px}.chat-bubble strong,.chat-bubble small{display:block}.chat-bubble small{font-size:.68rem;opacity:.7;margin-top:.3rem}.chat-composer{display:flex;gap:.65rem;padding:1rem;border-top:1px solid var(--om-border)}.chat-composer textarea{flex:1;resize:none;border:1px solid var(--om-border);border-radius:13px;padding:.75rem;outline:0}
.calendar-toolbar{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:1rem}.calendar-toolbar a{width:38px;height:38px;display:grid;place-items:center;background:#fff;border:1px solid var(--om-border);border-radius:11px;color:var(--om-ink)}.calendar-toolbar h3{margin:0;text-transform:capitalize}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);background:#fff;border:1px solid var(--om-border);border-radius:20px;overflow:hidden}.calendar-weekday{padding:.8rem;text-align:center;font-weight:800;color:var(--om-muted);background:#f6f7fa}.calendar-day{min-height:135px;padding:.65rem;border-top:1px solid var(--om-border);border-right:1px solid var(--om-border)}.calendar-day:nth-child(7n){border-right:0}.calendar-day.muted{background:#fafafa}.calendar-day.today .day-number{background:var(--om-primary);color:#fff}.day-number{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;font-weight:800}.calendar-event{font-size:.72rem;padding:.35rem .45rem;border-radius:7px;background:#eeebff;color:var(--om-primary-dark);margin-top:.4rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event.type-assignment{background:#fff3d6;color:#9a5b00}.calendar-event.type-videoconference{background:#dcfce7;color:#166534}
.notification-list{display:grid;gap:.8rem}.notification-item{display:flex;gap:1rem;align-items:flex-start;padding:1.15rem;background:#fff;border:1px solid var(--om-border);border-radius:16px}.notification-item.unread{border-left:4px solid var(--om-primary)}.notification-item h5,.notification-item p{margin:0}.notification-item p{color:var(--om-muted);margin:.3rem 0}.notification-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:#f1efff;color:var(--om-primary)}
.profile-card{background:linear-gradient(145deg,#1b173a,#4d3dc4);color:#fff;border-radius:23px;padding:2rem;text-align:center}.profile-avatar{width:92px;height:92px;display:grid;place-items:center;margin:0 auto 1rem;border-radius:27px;background:rgba(255,255,255,.14);font-size:1.8rem;font-weight:900}.profile-card p,.profile-card small{color:rgba(255,255,255,.7)}.profile-card small,.profile-card strong{display:block}
.gradebook-wrap{padding:0;overflow:hidden}.gradebook-table{min-width:900px;margin:0}.gradebook-table th,.gradebook-table td{text-align:center;vertical-align:middle;border-color:var(--om-border)}.gradebook-table th span,.gradebook-table th small,.gradebook-table td small{display:block}.gradebook-table th small,.gradebook-table td small{color:var(--om-muted);font-weight:400}.gradebook-table .sticky-col{position:sticky;left:0;background:#fff;z-index:2;text-align:left;min-width:230px}.grade-cell{border:1px solid var(--om-border);border-radius:9px;background:#f8f9fb;min-width:52px;padding:.45rem}.grade-cell.graded{background:#eafaf1;color:#166534;font-weight:800}.filter-bar{display:flex;gap:.8rem;background:#fff;border:1px solid var(--om-border);border-radius:16px;padding:.8rem}.filter-bar .form-select{max-width:420px}.empty-state{display:grid;place-items:center;text-align:center;padding:4rem 1rem;color:var(--om-muted);background:#fff;border:1px dashed var(--om-border);border-radius:20px}.empty-state i{font-size:2.4rem;color:var(--om-primary);margin-bottom:1rem}.success-orb{width:82px;height:82px;display:grid;place-items:center;margin:auto;border-radius:50%;background:#dcfce7;color:#15803d;font-size:2rem}

@media(max-width:991.98px){.lesson-shell,.wiki-layout,.chat-shell{grid-template-columns:1fr}.lesson-index,.wiki-sidebar,.chat-sidebar{border-right:0;border-bottom:1px solid var(--om-border)}.lesson-index{display:flex;gap:.4rem;overflow:auto}.lesson-index>span,.lesson-index>h4,.lesson-index>.progress{display:none}.lesson-index a{white-space:nowrap}.wiki-sidebar{max-height:220px;overflow:auto}.chat-shell{height:auto}.chat-sidebar{max-height:330px}.chat-main{min-height:560px}.calendar-day{min-height:100px}.assignment-meta{grid-template-columns:1fr}.builder-section-head{align-items:flex-start}}
@media(max-width:767.98px){.section-block-head,.builder-section-head{display:block}.builder-section-head .btn{margin-top:1rem}.activity-item{align-items:flex-start}.course-tabs{margin-left:-.75rem;margin-right:-.75rem;padding-left:.75rem}.calendar-grid{min-width:820px}.calendar-grid{overflow:visible}.portal-shell main:has(.calendar-grid){overflow-x:auto}.chat-message{max-width:92%}.lesson-page,.wiki-main{padding:1.25rem}.learning-content{padding:1.2rem}.floating-actions{z-index:1025}.filter-bar{flex-direction:column}.filter-bar .form-select{max-width:none}}
.chat-input-wrap{flex:1;display:grid}.chat-input-wrap textarea{width:100%}.chat-input-wrap small{padding:.25rem .4rem;color:var(--om-primary);font-weight:700}.chat-attachment{display:inline-flex;align-items:center;gap:.4rem;margin-top:.5rem;padding:.45rem .65rem;border-radius:9px;background:rgba(91,75,219,.10);color:inherit;font-size:.8rem}.chat-message.mine .chat-attachment{background:rgba(255,255,255,.16);color:#fff}.grade-average{width:82px;height:82px;border-radius:22px;background:#f1efff;color:var(--om-primary);display:grid;place-items:center;text-align:center}.grade-average small,.grade-average strong{display:block}.grade-average strong{font-size:1.25rem}

.admin-sidebar{overflow:hidden}.admin-nav{overflow-y:auto;min-height:0;padding-right:.2rem}.admin-nav::-webkit-scrollbar{width:5px}.admin-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:20px}

/* Entrega 3 */
.certificate-sheet{background:#f3f1ff;padding:2rem;border-radius:24px}.certificate-border{position:relative;background:#fff;border:10px double #5747ca;border-radius:12px;padding:4rem 3rem;text-align:center;box-shadow:0 24px 60px rgba(47,38,109,.13)}.certificate-border h1{font-family:Georgia,serif;font-size:2.8rem;color:#2f276d}.certificate-border h2{font-family:Georgia,serif;font-size:2.3rem;color:#5747ca}.certificate-border h3{font-size:1.5rem}.certificate-seal{display:grid;place-items:center;width:90px;height:90px;margin:0 auto 1.5rem;border-radius:50%;background:linear-gradient(145deg,#6c5ce7,#34267c);color:#fff;font-size:2.4rem}.letter-spacing{letter-spacing:.24em;color:#746d91}.badge-orb{width:88px;height:88px;display:grid;place-items:center;margin:auto;border-radius:28px;background:linear-gradient(145deg,#fff0b8,#f5b800);color:#7a5100;font-size:2.2rem;box-shadow:0 16px 35px rgba(188,132,0,.2)}
.ai-shell{display:grid;grid-template-columns:290px 1fr;min-height:calc(100vh - 130px);background:#fff;border:1px solid var(--om-border);border-radius:24px;overflow:hidden}.ai-sidebar{background:#17132e;padding-bottom:1rem;overflow:auto}.ai-conversation{display:flex;align-items:center;gap:.7rem;padding:.85rem 1rem;color:rgba(255,255,255,.7);text-decoration:none;border-left:3px solid transparent}.ai-conversation:hover,.ai-conversation.active{background:rgba(255,255,255,.08);color:#fff;border-left-color:#8f82ff}.ai-main{display:grid;grid-template-rows:auto 1fr auto;min-width:0}.ai-head{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--om-border)}.ai-messages{padding:1.5rem;overflow:auto;background:#f8f9fc}.ai-welcome{max-width:800px;margin:4rem auto;text-align:center}.ai-orb{width:82px;height:82px;display:grid;place-items:center;margin:0 auto 1.25rem;border-radius:26px;background:linear-gradient(145deg,#5b4bdb,#28205f);color:#fff;font-size:2rem}.suggestion-card{width:100%;height:100%;text-align:left;border:1px solid var(--om-border);background:#fff;padding:1rem;border-radius:14px;color:var(--om-ink)}.suggestion-card:hover{border-color:var(--om-primary);color:var(--om-primary)}.ai-message{display:flex;gap:1rem;max-width:900px;margin:0 auto 1.2rem}.ai-message-avatar{width:38px;height:38px;display:grid;place-items:center;flex:0 0 auto;border-radius:12px;background:#edeafe;color:var(--om-primary)}.ai-message.user .ai-message-avatar{background:#17132e;color:#fff}.ai-message p{background:#fff;border:1px solid var(--om-border);border-radius:14px;padding:1rem;margin:.35rem 0 0}.ai-message.user p{background:#eeebff}.ai-composer{display:grid;grid-template-columns:220px 1fr 52px;gap:.65rem;padding:1rem;border-top:1px solid var(--om-border)}.ai-composer textarea{resize:none;border:1px solid var(--om-border);border-radius:13px;padding:.75rem;outline:0}.ai-composer button{border-radius:13px}.certificate-sheet+button{display:inline-flex}
@media(max-width:991.98px){.ai-shell{grid-template-columns:1fr}.ai-sidebar{max-height:230px}.ai-main{min-height:650px}.ai-composer{grid-template-columns:1fr 52px}.ai-composer select{grid-column:1/-1}}
@media(max-width:767.98px){.certificate-sheet{padding:.6rem}.certificate-border{padding:2.5rem 1rem}.certificate-border h1{font-size:2rem}.certificate-border h2{font-size:1.7rem}.ai-messages{padding:1rem}}
@media print{body>*{display:none!important}.portal-shell{display:block!important}.portal-shell>*{display:none!important}.portal-shell main{display:block!important}.portal-shell main>*{display:none!important}.certificate-sheet{display:block!important;background:#fff;padding:0}.certificate-border{box-shadow:none}}
.ai-composer{grid-template-columns:190px 210px 1fr 52px}.ai-composer select{min-width:0}@media(max-width:1199.98px){.ai-composer{grid-template-columns:1fr 1fr}.ai-composer textarea{grid-column:1/-2}.ai-composer button{grid-column:-2/-1}}@media(max-width:767.98px){.ai-composer{grid-template-columns:1fr 52px}.ai-composer select{grid-column:1/-1}.ai-composer textarea{grid-column:1/2}.ai-composer button{grid-column:2/3}}
.attendance-qr{width:122px;min-height:122px;padding:6px;background:#fff;border:1px solid var(--om-border);border-radius:12px}.attendance-qr img,.attendance-qr canvas{max-width:110px!important;height:auto!important}

/* Entrega 4 */
.content-player-frame{min-height:68vh;background:#eef1f8;border-radius:16px;overflow:hidden}.content-player-frame iframe{width:100%;height:68vh;border:0;background:#fff}.ai-hero{background:linear-gradient(135deg,rgba(91,76,240,.12),rgba(23,168,160,.1))}.font-monospace{font-size:.9rem}.admin-content .table code{white-space:nowrap}.dashboard-card,.widget-card{border-radius:var(--om-radius,18px)}.btn-om-primary{background:var(--om-primary,#5b4cf0);border-color:var(--om-primary,#5b4cf0)}.btn-om-outline{color:var(--om-primary,#5b4cf0);border-color:var(--om-primary,#5b4cf0)}.btn-om-outline:hover{background:var(--om-primary,#5b4cf0);color:#fff}.logo-mark,.brand-symbol{background:var(--om-primary,#5b4cf0)}


/* Entrega 5 · Constructor de portales institucionales */
.portal-builder-tabs,.portal-content-tabs{display:flex;flex-wrap:wrap;gap:.5rem}.portal-content-tabs a{padding:.65rem .9rem;border:1px solid var(--om-border);border-radius:12px;background:#fff;color:var(--om-ink);font-weight:700;text-decoration:none}.portal-content-tabs a.active,.portal-content-tabs a:hover{background:var(--om-primary);border-color:var(--om-primary);color:#fff}.portal-template-card{padding:.85rem;border:1px solid var(--om-border);border-radius:16px;background:#fff}.portal-template-card.active{border:2px solid var(--om-primary);box-shadow:0 10px 28px rgba(91,76,240,.12)}.template-preview{position:relative;min-height:150px;padding:1.1rem;border-radius:13px;overflow:hidden;background:linear-gradient(135deg,var(--p),var(--s));color:#fff}.template-preview:before{position:absolute;right:-35px;top:-35px;width:120px;height:120px;border-radius:50%;background:var(--a);opacity:.45;content:""}.template-preview span{display:block;width:48px;height:9px;margin-bottom:2.2rem;border-radius:10px;background:rgba(255,255,255,.85)}.template-preview strong,.template-preview small{position:relative;z-index:1;display:block}.template-preview strong{font-size:1.05rem}.template-preview small{margin-top:.4rem;color:rgba(255,255,255,.76);line-height:1.35}.portal-section-list{display:grid;gap:.65rem}.portal-section-row{display:flex;align-items:center;gap:.75rem;padding:.9rem;border:1px solid var(--om-border);border-radius:14px;background:#fff}.section-handle{color:#98a2b3}.section-type{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:#eeebff;color:var(--om-primary)}.portal-submission-data dt{margin-top:.9rem;color:#667085;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em}.portal-submission-data dd{margin:.2rem 0 0;padding:.7rem;border-radius:10px;background:#f8f9fc}.portal-status-card{background:linear-gradient(145deg,#1c1744,#5b4cf0);color:#fff}.portal-status-card p,.portal-status-card small{color:rgba(255,255,255,.72)}
