:root {
  --bg: #f5f7fb;
  --panel: #ffffff;
  --text: #213147;
  --muted: #697a90;
  --border: #e6ebf3;
  --primary: #2563eb;
  --primary-soft: #e7efff;
  --success-soft: #eaf8ef;
  --warning-soft: #fff6db;
  --danger-soft: #fff0f0;
}

body { background: linear-gradient(180deg, #f7f9fc 0%, #eef3fb 100%); color: var(--text); }
.table td, .table th { vertical-align: middle; }
.card { border: 1px solid var(--border); border-radius: 1.1rem; }
.navbar-brand { font-weight: 700; }
.badge-role { font-size: .78rem; }
.login-wrap { min-height: 100vh; display: grid; place-items: center; }
.login-card { max-width: 420px; width: 100%; }
.state-pill { border-radius: 999px; padding: .25rem .6rem; background: #f1f5f9; display: inline-block; }

.dashboard-hero {
  display: flex;
  gap: 1.25rem;
  justify-content: space-between;
  align-items: end;
  background: linear-gradient(135deg, #1d4ed8 0%, #0f172a 100%);
  color: #fff;
  border-radius: 1.4rem;
  padding: 1.5rem;
  box-shadow: 0 18px 45px rgba(15, 23, 42, .14);
}
.eyebrow { text-transform: uppercase; letter-spacing: .12em; font-size: .72rem; opacity: .78; margin-bottom: .45rem; }
.dashboard-title { font-size: clamp(1.6rem, 2vw, 2.25rem); font-weight: 800; margin: 0; }
.dashboard-subtitle { max-width: 48rem; color: rgba(255,255,255,.84); }
.month-filter-card {
  min-width: 280px; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.16);
  backdrop-filter: blur(6px); border-radius: 1rem; padding: 1rem;
}
.month-filter-card .form-control { background: rgba(255,255,255,.96); }

.metric-card {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 1.15rem;
  padding: 1.1rem;
  height: 100%;
  box-shadow: 0 10px 25px rgba(15, 23, 42, .06);
}
.metric-top { display: flex; justify-content: space-between; align-items: center; color: var(--muted); font-size: .92rem; margin-bottom: .65rem; }
.metric-icon {
  width: 2.2rem; height: 2.2rem; display: inline-grid; place-items: center;
  border-radius: 999px; background: #f8fafc; font-size: 1rem;
}
.metric-value { font-size: 1.7rem; font-weight: 800; line-height: 1.1; margin-bottom: .4rem; }
.metric-foot { color: var(--muted); font-size: .86rem; }
.metric-balance .metric-icon, .metric-month .metric-icon { background: var(--primary-soft); }
.metric-debt .metric-icon { background: var(--warning-soft); }
.metric-students .metric-icon { background: var(--success-soft); }

.dashboard-card { box-shadow: 0 12px 30px rgba(15, 23, 42, .06); }
.section-head { display: flex; justify-content: space-between; align-items: start; gap: .75rem; }
.chip-stat {
  padding: .4rem .7rem; border-radius: 999px; background: #f8fafc; border: 1px solid var(--border);
  font-size: .8rem; color: var(--muted); white-space: nowrap;
}
.quick-actions-grid { display: grid; gap: .75rem; }
.quick-action {
  display: flex; gap: .85rem; align-items: center; text-decoration: none; color: inherit;
  padding: .9rem; border: 1px solid var(--border); border-radius: 1rem; background: #fbfdff;
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.quick-action:hover { transform: translateY(-1px); box-shadow: 0 10px 20px rgba(37,99,235,.08); border-color: #bfd0ff; }
.quick-icon { width: 2.7rem; height: 2.7rem; display: grid; place-items: center; border-radius: .9rem; background: var(--primary-soft); }

.dashboard-progress { height: .8rem; background: #edf2fb; border-radius: 999px; }
.dashboard-progress .progress-bar { border-radius: 999px; background: linear-gradient(90deg, #22c55e 0%, #2563eb 100%); }
.alert-stack, .movement-list, .backup-list { display: grid; gap: .75rem; }
.alert-item, .backup-item {
  display: flex; justify-content: space-between; align-items: center; gap: .75rem; color: inherit; text-decoration: none;
  border: 1px solid var(--border); border-radius: 1rem; padding: .85rem .95rem; background: #fff;
}
.alert-item:hover, .backup-item:hover { border-color: #bfd0ff; background: #f9fbff; }
.empty-state { display: flex; gap: .85rem; align-items: center; padding: 1rem; border-radius: 1rem; }
.success-state { background: var(--success-soft); }
.empty-icon { font-size: 1.4rem; }

.movement-item {
  display: grid; grid-template-columns: auto 1fr auto; gap: .85rem; align-items: center;
  border: 1px solid var(--border); border-radius: 1rem; padding: .85rem .95rem; background: #fff;
}
.movement-type {
  border-radius: 999px; padding: .35rem .65rem; font-size: .78rem; font-weight: 700;
}
.movement-type.income { background: var(--success-soft); color: #0f7a34; }
.movement-type.expense { background: var(--danger-soft); color: #c62828; }
.movement-amount { font-weight: 700; white-space: nowrap; }

.summary-panel { display: grid; gap: .6rem; }
.summary-row {
  display: flex; justify-content: space-between; gap: .75rem; padding: .75rem .85rem; border-radius: .9rem;
  background: #f8fafc; border: 1px solid var(--border);
}

@media (max-width: 992px) {
  .dashboard-hero { flex-direction: column; align-items: stretch; }
  .month-filter-card { min-width: 100%; }
}

@media (max-width: 576px) {
  .movement-item { grid-template-columns: 1fr; }
  .section-head { flex-direction: column; }
  .metric-value { font-size: 1.45rem; }
}


.app-navbar {
  box-shadow: 0 10px 30px rgba(15, 23, 42, .12);
}
.nav-pills-soft .nav-link {
  border-radius: 999px;
  padding: .45rem .8rem;
  margin: .15rem;
}
.nav-pills-soft .nav-link.active,
.nav-pills-soft .nav-link:hover {
  background: rgba(255,255,255,.16);
}
.nav-user-meta { flex-wrap: wrap; justify-content: end; }
.toast-stack { display: grid; gap: .85rem; margin-bottom: 1rem; }
.toast-alert {
  border: 0;
  border-left: 5px solid rgba(0,0,0,.12);
  border-radius: 1rem;
}
.page-eyebrow, .section-label {
  text-transform: uppercase;
  letter-spacing: .12em;
  font-size: .72rem;
  font-weight: 700;
  color: var(--muted);
}
.filter-card, .form-card { border-radius: 1.25rem; }
.form-shell { max-width: 980px; }
.metric-card.compact { padding: 1rem; }
.metric-value-sm { font-size: 1.3rem; }
.status-badge {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  border-radius: 999px;
  padding: .38rem .7rem;
  font-size: .8rem;
  font-weight: 700;
  border: 1px solid transparent;
}
.status-success { background: var(--success-soft); color: #156534; }
.status-danger { background: var(--danger-soft); color: #b42318; }
.status-info { background: var(--primary-soft); color: #1d4ed8; }
.status-muted { background: #f1f5f9; color: #475569; }
.form-card .form-control,
.form-card .form-select,
.filter-card .form-control,
.filter-card .form-select,
.login-card .form-control { border-radius: .9rem; }
.form-card .input-group-text,
.login-card .input-group .btn,
.form-card .input-group .btn,
.form-card .input-group-text + .form-control,
.form-card .input-group .form-control,
.login-card .input-group .form-control { min-height: 46px; }
.form-card .input-group-text { border-radius: .9rem 0 0 .9rem; }
.form-card .input-group .form-control { border-radius: 0 .9rem .9rem 0; }
.login-card {
  background: rgba(255,255,255,.95);
  border-radius: 1.4rem;
  box-shadow: 0 25px 60px rgba(37, 99, 235, .12);
}
.login-help {
  background: #f8fafc;
  border: 1px solid var(--border);
  border-radius: 1rem;
  padding: .85rem 1rem;
}
.table thead th {
  background: #f8fafc;
  color: var(--muted);
  font-size: .82rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  white-space: nowrap;
}
.table tbody tr:hover { background: #fbfdff; }
.page-head { gap: .75rem; }
@media (max-width: 576px) {
  .login-card .card-body, .form-card .card-body { padding: 1.1rem !important; }
  .nav-user-meta { justify-content: start; }
}

/* Login ContaCurso */
.login-page {
  position: relative;
  min-height: calc(100vh - 2rem);
  display: grid;
  place-items: center;
  overflow: hidden;
  padding: 2rem 1rem;
}
.login-background {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 20% 20%, rgba(56, 189, 248, .22), transparent 28%),
    radial-gradient(circle at 80% 10%, rgba(37, 99, 235, .18), transparent 26%),
    linear-gradient(135deg, #eef6ff 0%, #f8fafc 45%, #eff6ff 100%);
  z-index: 0;
}
.login-blob {
  position: absolute;
  width: 18rem;
  height: 18rem;
  border-radius: 999px;
  filter: blur(16px);
  opacity: .55;
}
.login-blob-one { left: -6rem; bottom: 3rem; background: rgba(22, 163, 74, .18); }
.login-blob-two { right: -5rem; bottom: -4rem; background: rgba(30, 58, 138, .18); }
.login-shell {
  position: relative;
  z-index: 1;
  width: min(1040px, 100%);
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  gap: 1.25rem;
  align-items: stretch;
}
.login-brand-panel {
  color: #fff;
  background: linear-gradient(135deg, #1e3a8a 0%, #2563eb 55%, #0f172a 100%);
  border-radius: 1.6rem;
  padding: clamp(1.5rem, 4vw, 3rem);
  box-shadow: 0 25px 70px rgba(15, 23, 42, .2);
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 520px;
}
.brand-mark {
  width: 4rem;
  height: 4rem;
  display: grid;
  place-items: center;
  border-radius: 1.2rem;
  background: rgba(255,255,255,.16);
  border: 1px solid rgba(255,255,255,.22);
  font-weight: 900;
  letter-spacing: -.05em;
  font-size: 1.35rem;
  margin-bottom: 1.5rem;
}
.login-title {
  font-size: clamp(2.3rem, 5vw, 4.2rem);
  line-height: .95;
  font-weight: 900;
  letter-spacing: -.06em;
  margin-bottom: 1rem;
}
.login-subtitle {
  color: rgba(255,255,255,.82);
  font-size: 1.05rem;
  max-width: 31rem;
}
.login-feature-list {
  display: grid;
  gap: .75rem;
  margin-top: 2rem;
  color: rgba(255,255,255,.88);
}
.login-feature-list div {
  display: flex;
  align-items: center;
  gap: .65rem;
}
.login-feature-list span {
  width: 1.55rem;
  height: 1.55rem;
  border-radius: 999px;
  display: inline-grid;
  place-items: center;
  background: rgba(34, 197, 94, .22);
  border: 1px solid rgba(255,255,255,.2);
  color: #dcfce7;
  font-weight: 800;
}
.login-page .login-card {
  border-radius: 1.6rem;
  align-self: center;
  box-shadow: 0 25px 70px rgba(15, 23, 42, .14);
}
.login-submit {
  border-radius: 1rem;
  font-weight: 800;
  box-shadow: 0 12px 24px rgba(37,99,235,.18);
}
.login-page .login-help {
  background: #f8fafc;
  border: 1px solid var(--border);
  border-radius: 1rem;
  padding: .85rem 1rem;
}
@media (max-width: 900px) {
  .login-shell { grid-template-columns: 1fr; max-width: 560px; }
  .login-brand-panel { min-height: auto; }
}
@media (max-width: 576px) {
  .login-page { padding: 1rem; }
  .login-brand-panel { border-radius: 1.2rem; }
  .login-page .login-card { border-radius: 1.2rem; }
}

/* Campus Escolar v6: shell, navegación y PWA */
:root{--sidebar-width:272px;--navy:#172554;--navy-2:#1e3a8a;--surface:#f4f7fb;--surface-card:#fff;--muted:#64748b;--border-soft:#e2e8f0;--accent:#2563eb;--success:#16a34a}
body.app-authenticated{background:var(--surface);min-height:100vh;color:#172033}
.app-shell{min-height:100vh}
.app-sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-width);background:linear-gradient(180deg,#0f172a 0%,#172554 55%,#1e3a8a 100%);color:#fff;z-index:1040;display:flex;flex-direction:column;box-shadow:12px 0 35px rgba(15,23,42,.14)}
.sidebar-brand{height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 1.15rem;border-bottom:1px solid rgba(255,255,255,.1)}
.sidebar-brand-link{display:flex;align-items:center;gap:.8rem;color:#fff;text-decoration:none;min-width:0}.sidebar-brand-link>span:last-child{display:flex;flex-direction:column;line-height:1.1}.sidebar-brand-link strong{font-size:1rem}.sidebar-brand-link small{font-size:.68rem;color:rgba(255,255,255,.58);margin-top:.25rem}
.sidebar-logo{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(135deg,#60a5fa,#a78bfa);font-weight:900;box-shadow:0 8px 25px rgba(37,99,235,.35)}
.sidebar-close{background:transparent;border:0;color:#fff;font-size:1.8rem;line-height:1}
.sidebar-nav{padding:1rem .75rem;overflow-y:auto;flex:1;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}.sidebar-nav{overscroll-behavior:contain;scroll-behavior:auto;scrollbar-gutter:stable}.workspace-link-row.active{scroll-margin-block:5rem}
.sidebar-section{font-size:.67rem;text-transform:uppercase;letter-spacing:.13em;color:rgba(255,255,255,.45);font-weight:800;padding:.85rem .8rem .45rem}
.sidebar-link{display:flex;align-items:center;gap:.78rem;color:rgba(255,255,255,.74);text-decoration:none;padding:.68rem .82rem;border-radius:.75rem;margin:.08rem 0;font-size:.9rem;font-weight:600;transition:.16s ease}.sidebar-link>span{width:1.2rem;text-align:center;font-size:1rem}.sidebar-link:hover{color:#fff;background:rgba(255,255,255,.09)}.sidebar-link.active{color:#fff;background:linear-gradient(90deg,rgba(96,165,250,.28),rgba(167,139,250,.17));box-shadow:inset 3px 0 #93c5fd}
.sidebar-footer{padding:.85rem;border-top:1px solid rgba(255,255,255,.1)}.btn-install-app{width:100%;margin-bottom:.7rem;background:#fff;color:#1e3a8a;font-size:.8rem;font-weight:800;border-radius:.65rem}.btn-install-app:hover{background:#dbeafe;color:#172554}
.sidebar-user{display:flex;align-items:center;gap:.65rem;padding:.55rem}.sidebar-user>span:nth-child(2){display:flex;flex-direction:column;flex:1}.sidebar-user strong{font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user small{font-size:.68rem;color:rgba(255,255,255,.55)}.user-avatar{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:rgba(255,255,255,.15);font-weight:900}.sidebar-logout{color:rgba(255,255,255,.65);text-decoration:none;font-size:1.2rem}.sidebar-logout:hover{color:#fff}
.app-main{margin-left:var(--sidebar-width);min-height:100vh}.app-topbar{height:72px;position:sticky;top:0;z-index:1020;background:rgba(255,255,255,.9);backdrop-filter:blur(16px);border-bottom:1px solid rgba(226,232,240,.85);display:flex;align-items:center;padding:0 clamp(1rem,3vw,2rem);gap:1rem}.topbar-menu{border:0;background:#eff6ff;color:#1e3a8a;width:42px;height:42px;border-radius:12px;font-size:1.2rem}.topbar-context{display:flex;flex-direction:column;line-height:1.15;flex:1}.topbar-context strong{font-size:.98rem}.topbar-context small{font-size:.72rem;color:var(--muted);margin-top:.18rem}.topbar-actions{display:flex;align-items:center;gap:.8rem}.connection-status{display:flex;align-items:center;gap:.4rem;color:var(--muted);font-size:.72rem}.connection-status i{width:8px;height:8px;background:var(--success);border-radius:50%;box-shadow:0 0 0 3px rgba(22,163,74,.12)}.connection-status.is-offline i{background:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.12)}.topbar-notification{width:38px;height:38px;border-radius:11px;background:#f1f5f9;color:#1e293b;text-decoration:none;display:grid;place-items:center;font-size:1.1rem}.app-content{padding:clamp(1rem,2.8vw,2rem);max-width:1680px}
.app-authenticated .card{border-color:var(--border-soft);border-radius:1rem}.app-authenticated .btn{border-radius:.7rem}.app-authenticated .form-control,.app-authenticated .form-select{border-radius:.7rem;border-color:#cbd5e1}.app-authenticated .table-responsive{border-radius:1rem}
.sidebar-backdrop{display:none}.mobile-nav{display:none}
@media(max-width:991.98px){.app-sidebar{transform:translateX(-105%);transition:transform .22s ease}.sidebar-open .app-sidebar{transform:translateX(0)}.sidebar-backdrop{display:block;position:fixed;inset:0;background:rgba(15,23,42,.52);backdrop-filter:blur(2px);z-index:1035;opacity:0;pointer-events:none;transition:.2s}.sidebar-open .sidebar-backdrop{opacity:1;pointer-events:auto}.app-main{margin-left:0}.app-content{padding-bottom:6.2rem}.mobile-nav{position:fixed;display:grid;grid-template-columns:repeat(4,1fr);left:.75rem;right:.75rem;bottom:calc(.75rem + env(safe-area-inset-bottom));z-index:1030;background:rgba(15,23,42,.94);backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.12);border-radius:1.15rem;padding:.38rem;box-shadow:0 18px 40px rgba(15,23,42,.28)}.mobile-nav a{color:rgba(255,255,255,.62);text-decoration:none;text-align:center;border-radius:.8rem;padding:.38rem .2rem;display:flex;flex-direction:column;gap:.1rem}.mobile-nav a span{font-size:1.1rem}.mobile-nav a small{font-size:.62rem}.mobile-nav a.active{color:#fff;background:rgba(96,165,250,.22)}}
@media(max-width:575.98px){.app-topbar{height:64px;padding:0 .8rem}.connection-status span{display:none}.app-content{padding:.9rem}.calendar-grid{gap:.2rem}.calendar-day{min-height:78px;padding:.28rem}.calendar-event{font-size:.62rem;padding:.22rem}.community-hero{border-radius:1rem!important}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Campus Escolar v8: dashboard integrado */
.campus-overview{background:linear-gradient(135deg,#f8fbff 0%,#f5f3ff 100%);border:1px solid #dbeafe!important;overflow:hidden}
.campus-mini-stat{height:100%;min-height:118px;background:#fff;border:1px solid #e2e8f0;border-radius:1rem;padding:1rem;display:flex;flex-direction:column;justify-content:center;box-shadow:0 8px 24px rgba(15,23,42,.05)}
.campus-mini-stat span{font-size:1.25rem}.campus-mini-stat strong{font-size:1.8rem;line-height:1.1;margin:.35rem 0}.campus-mini-stat small{color:#64748b;font-weight:700}
.campus-list-card{height:100%;min-height:118px;background:rgba(255,255,255,.82);border:1px solid #e2e8f0;border-radius:1rem;padding:1rem}
.campus-list-row{display:flex;flex-direction:column;padding:.42rem 0;border-bottom:1px solid #edf2f7;color:#172033}.campus-list-row:last-child{border-bottom:0}.campus-list-row span{font-size:.68rem;color:#64748b;text-transform:uppercase;letter-spacing:.04em}.campus-list-row strong{font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:767.98px){.campus-mini-stat{min-height:96px}.campus-overview .card-body{padding:1rem!important}}

/* Campus Escolar v9: dashboard adaptado por rol */
.v9-role-hero{position:relative;overflow:hidden;display:grid;grid-template-columns:1.35fr minmax(290px,.65fr);gap:1.5rem;align-items:center;padding:clamp(1.4rem,3vw,2.4rem);border-radius:1.4rem;color:#fff;box-shadow:0 20px 50px rgba(15,23,42,.15)}
.v9-role-hero:after{content:"";position:absolute;width:320px;height:320px;border-radius:50%;right:-100px;top:-180px;background:rgba(255,255,255,.12)}
.v9-role-indigo{background:linear-gradient(135deg,#312e81,#2563eb 64%,#0ea5e9)}
.v9-role-blue{background:linear-gradient(135deg,#1e3a8a,#2563eb 60%,#38bdf8)}
.v9-role-emerald{background:linear-gradient(135deg,#065f46,#059669 60%,#2dd4bf)}
.v9-role-copy,.v9-filter-card{position:relative;z-index:1}.v9-role-hero .eyebrow,.v9-role-hero .dashboard-subtitle{color:rgba(255,255,255,.82)}
.v9-filter-card{background:rgba(255,255,255,.95);border:1px solid rgba(255,255,255,.55);border-radius:1rem;padding:1rem;box-shadow:0 12px 30px rgba(15,23,42,.12)}
.v9-action-card{height:100%;display:flex;align-items:center;gap:.85rem;padding:1rem;background:#fff;border:1px solid #e2e8f0;border-radius:1rem;text-decoration:none;color:#172033;box-shadow:0 8px 22px rgba(15,23,42,.045);transition:.16s ease}
.v9-action-card:hover{transform:translateY(-2px);border-color:#93c5fd;box-shadow:0 14px 30px rgba(37,99,235,.1)}
.v9-action-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:.8rem;background:#eff6ff;font-size:1.2rem}.v9-action-card>span:nth-child(2){display:flex;flex-direction:column;min-width:0;flex:1}.v9-action-card strong{font-size:.9rem}.v9-action-card small{color:#64748b;font-size:.72rem}.v9-action-arrow{color:#94a3b8;font-weight:900}
.v9-community-stat{display:flex;align-items:center;gap:1rem;background:linear-gradient(135deg,#fff,#f8fafc);border:1px solid #e2e8f0;border-radius:1rem;padding:1rem 1.1rem;height:100%}.v9-community-stat>span{font-size:1.5rem}.v9-community-stat div{display:flex;flex-direction:column}.v9-community-stat strong{font-size:1.45rem;line-height:1}.v9-community-stat small{color:#64748b;margin-top:.25rem}
@media(max-width:991.98px){.v9-role-hero{grid-template-columns:1fr}.v9-filter-card{max-width:none}}

/* Campus Escolar v10 - Asistente IA */
.ai-shell{max-width:1100px;margin:0 auto}.ai-hero{background:linear-gradient(135deg,#172554,#2563eb);color:#fff;border-radius:24px;padding:1.5rem;box-shadow:0 18px 45px rgba(30,64,175,.2)}
.ai-chat{background:#fff;border:1px solid #dbeafe;border-radius:22px;min-height:480px;display:flex;flex-direction:column;overflow:hidden}.ai-messages{padding:1.25rem;display:flex;flex-direction:column;gap:1rem;flex:1;max-height:62vh;overflow:auto}.ai-message{max-width:85%;padding:.85rem 1rem;border-radius:18px;white-space:pre-wrap}.ai-message.user{align-self:flex-end;background:#1d4ed8;color:#fff;border-bottom-right-radius:5px}.ai-message.assistant{align-self:flex-start;background:#eff6ff;color:#172554;border-bottom-left-radius:5px}.ai-meta{font-size:.76rem;opacity:.7;margin-top:.35rem}.ai-composer{border-top:1px solid #e2e8f0;padding:1rem;background:#f8fafc}.ai-quick{display:flex;gap:.5rem;flex-wrap:wrap}.ai-quick button{border-radius:999px}.ai-source-card{border:1px solid #e2e8f0;border-radius:14px;padding:.75rem;background:#fff}
@media(max-width:767px){.ai-message{max-width:94%}.ai-hero{border-radius:18px;padding:1rem}.ai-chat{border-radius:18px}}
/* Campus Escolar v11: buscador local tipo Spotlight */
.campus-search{position:fixed;inset:0;z-index:1090;display:none;align-items:flex-start;justify-content:center;padding:10vh 1rem 1rem}.campus-search.is-open{display:flex}.campus-search-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(4px)}.campus-search-panel{position:relative;width:min(720px,100%);background:#fff;border-radius:1.25rem;padding:1.25rem;box-shadow:0 24px 70px rgba(15,23,42,.28)}.campus-search kbd,.topbar-actions kbd{font-size:.65rem;background:#eef2f7;color:#475569;border:1px solid #dbe2ea}.ai-hero{background:linear-gradient(135deg,#0f766e,#2563eb);color:#fff;border-radius:1.25rem;padding:1.5rem}
@media(max-width:767.98px){.campus-search{padding-top:5vh}.campus-search-panel{border-radius:1rem}.campus-search-panel .input-group{display:flex;flex-wrap:wrap}.campus-search-panel .input-group .form-control{min-width:0}.campus-search-panel .btn{width:100%;margin-top:.6rem;border-radius:.75rem!important}}

/* Campus Escolar v14.1: identidad visual de acceso y bienvenida */
.login-host { min-height: 100vh; }
.login-host > .toast-stack { position: fixed; z-index: 1100; }
.login-page {
  min-height: 100vh;
  padding: clamp(1rem, 3vw, 2.5rem);
  background: linear-gradient(135deg, #eaf4ff 0%, #f8fbff 55%, #eef7ff 100%);
}
.login-page .login-background {
  background:
    radial-gradient(circle at 12% 12%, rgba(56, 189, 248, .22), transparent 25%),
    radial-gradient(circle at 88% 90%, rgba(37, 99, 235, .15), transparent 24%);
}
.login-shell { width: min(1180px, 100%); grid-template-columns: 1.3fr .7fr; gap: 0; }
.login-brand-panel {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: 650px;
  border-radius: 1.75rem 0 0 1.75rem;
  padding: clamp(1.5rem, 4vw, 3.5rem);
  background-image: url('/static/login-campus-escolar.webp');
  background-size: cover;
  background-position: center;
  justify-content: flex-end;
}
.login-brand-overlay {
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, rgba(5, 22, 48, .08) 15%, rgba(6, 24, 55, .28) 52%, rgba(5, 19, 45, .9) 100%);
}
.login-brand-content { max-width: 610px; text-shadow: 0 2px 18px rgba(3, 15, 35, .25); }
.login-title { font-size: clamp(2.25rem, 5vw, 4rem); }
.login-subtitle { font-size: clamp(1rem, 2vw, 1.2rem); max-width: 36rem; }
.login-feature-pills { display: flex; flex-wrap: wrap; gap: .55rem; margin: 1.25rem 0; }
.login-feature-pills span {
  border: 1px solid rgba(255,255,255,.34);
  background: rgba(255,255,255,.14);
  backdrop-filter: blur(10px);
  border-radius: 999px;
  padding: .42rem .78rem;
  font-size: .82rem;
  font-weight: 700;
}
.login-quote { color: rgba(255,255,255,.92); font-weight: 600; font-size: .95rem; }
.login-page .login-card {
  border-radius: 0 1.75rem 1.75rem 0;
  min-height: 650px;
  display: flex;
  align-items: center;
  box-shadow: 0 25px 70px rgba(15, 23, 42, .18);
}
.login-page .login-card .card-body { width: 100%; }

.campus-welcome-strip {
  min-height: 230px;
  position: relative;
  isolation: isolate;
  overflow: hidden;
  display: flex;
  align-items: center;
  border-radius: 1.35rem;
  padding: clamp(1.4rem, 4vw, 2.5rem);
  color: #fff;
  background-image: url('/static/campus-welcome-banner.webp');
  background-size: cover;
  background-position: center 48%;
  box-shadow: 0 18px 45px rgba(15, 23, 42, .14);
}
.campus-welcome-overlay { position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(8,25,58,.92) 0%, rgba(8,32,73,.76) 43%, rgba(8,31,67,.18) 100%); }
.campus-welcome-copy { max-width: 590px; }
.campus-welcome-copy p { color: rgba(255,255,255,.85); max-width: 520px; }

@media (max-width: 900px) {
  .login-shell { grid-template-columns: 1fr; max-width: 620px; }
  .login-brand-panel { min-height: 420px; border-radius: 1.4rem 1.4rem 0 0; background-position: center 42%; }
  .login-page .login-card { min-height: auto; border-radius: 0 0 1.4rem 1.4rem; }
}
@media (max-width: 576px) {
  .login-brand-panel { min-height: 350px; padding: 1.25rem; }
  .login-feature-pills { display: none; }
  .campus-welcome-strip { min-height: 250px; background-position: 58% center; }
  .campus-welcome-overlay { background: rgba(8,25,58,.82); }
}
@media (prefers-color-scheme: dark) {
  .login-page { background: #081225; }
  .login-page .login-card { background: #111c31; color: #eef4ff; }
  .login-page .login-card .text-muted { color: #9fb0ca !important; }
  .login-page .login-help { background: #0c172a; border-color: #263653; }
}

/* Campus Escolar v14.1.1: acceso inmersivo y dashboard visual */
.login-page {
  position: relative;
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: clamp(1rem, 4vw, 4rem);
  background-image: url('/static/campus-school-background.webp');
  background-size: cover;
  background-position: center;
  background-attachment: fixed;
  overflow: hidden;
}
.login-scene-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(4,18,42,.86) 0%, rgba(5,24,54,.58) 48%, rgba(4,15,34,.48) 100%),
              linear-gradient(180deg, rgba(3,13,30,.08), rgba(3,13,30,.66));
}
.login-stage {
  position: relative;
  z-index: 1;
  width: min(1260px, 100%);
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, 470px);
  gap: clamp(2rem, 6vw, 6rem);
  align-items: center;
}
.login-brand-content { max-width: 650px; color: #fff; text-shadow: 0 3px 24px rgba(0,0,0,.28); }
.login-logo-row { display:flex; align-items:center; gap:1rem; margin-bottom:1.25rem; }
.login-logo-row .brand-mark { width:72px; height:72px; font-size:1.3rem; border-radius:1.35rem; background:linear-gradient(145deg,#0d6efd,#22c55e); box-shadow:0 16px 40px rgba(0,0,0,.22); }
.login-title { font-size: clamp(2.75rem, 6vw, 5.2rem); line-height:.94; letter-spacing:-.045em; }
.login-subtitle { max-width:580px; font-size:clamp(1.05rem,2vw,1.35rem); color:rgba(255,255,255,.86); margin:1.3rem 0 1.5rem; }
.login-feature-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.75rem; max-width:540px; margin-bottom:1.7rem; }
.login-feature-list span { display:flex; align-items:center; gap:.7rem; padding:.8rem 1rem; border:1px solid rgba(255,255,255,.22); border-radius:1rem; background:rgba(9,30,64,.34); backdrop-filter:blur(14px); font-weight:700; }
.login-feature-list i { color:#93c5fd; font-size:1.15rem; }
.login-quote { max-width:540px; padding-left:1rem; border-left:3px solid #60a5fa; color:rgba(255,255,255,.94); font-size:1rem; }
.login-page .login-card { min-height:0; border-radius:1.75rem; background:rgba(255,255,255,.94); backdrop-filter:blur(18px); box-shadow:0 30px 80px rgba(1,10,30,.35); }
.login-lock-icon { width:58px; height:58px; display:grid; place-items:center; margin:0 auto .9rem; border-radius:50%; color:#0d6efd; font-size:1.4rem; background:#eaf2ff; }
.login-page .input-group-text { background:#fff; color:#64748b; }
.login-page .form-control,.login-page .input-group-text,.login-page .input-group .btn { border-color:#d8e1ef; }
.login-page .login-submit { border-radius:.8rem; min-height:52px; font-weight:800; box-shadow:0 12px 28px rgba(13,110,253,.24); }
.login-help { border:1px solid #dce6f3; background:#f2f7fd; border-radius:1rem; padding:1rem; line-height:1.5; }

.v9-role-hero {
  background-image: linear-gradient(90deg, rgba(8,26,61,.94) 0%, rgba(14,57,110,.74) 54%, rgba(15,77,132,.34) 100%), url('/static/campus-dashboard-hero.webp') !important;
  background-size: cover !important;
  background-position: center 48% !important;
  min-height: 290px;
  border: 1px solid rgba(255,255,255,.15);
  box-shadow: 0 22px 55px rgba(15,23,42,.18);
}
.v9-role-hero:after { background:radial-gradient(circle,rgba(255,255,255,.18),transparent 68%); }
.v9-filter-card { background:rgba(255,255,255,.9); backdrop-filter:blur(16px); border-color:rgba(255,255,255,.68); }
.v9-action-card,.metric-card,.dashboard-card,.campus-overview,.v9-community-stat { box-shadow:0 12px 30px rgba(15,23,42,.07); border-color:#dce7f4; }
.v9-action-card:hover { transform:translateY(-3px); box-shadow:0 18px 38px rgba(13,110,253,.13); }

@media (max-width: 900px) {
  .login-page { background-attachment:scroll; padding:1rem; }
  .login-stage { grid-template-columns:1fr; gap:1.25rem; max-width:650px; }
  .login-brand-content { padding:1.2rem .4rem .3rem; }
  .login-title { font-size:clamp(2.35rem,10vw,4rem); }
  .login-feature-list { display:none; }
  .login-quote { display:none; }
  .login-page .login-card { border-radius:1.35rem; }
}
@media (max-width: 576px) {
  .login-logo-row .brand-mark { width:58px;height:58px; }
  .login-subtitle { margin-bottom:.25rem; }
  .login-page .login-card .card-body { padding:1.4rem!important; }
  .v9-role-hero { min-height:0; padding:1.25rem; }
}
@media (prefers-color-scheme: dark) {
  .login-page .login-card { background:rgba(12,25,47,.94); color:#eef4ff; }
  .login-page .input-group-text,.login-page .form-control { background:#0f1d34; color:#eef4ff; border-color:#33445f; }
  .login-page .form-control::placeholder { color:#8392aa; }
  .login-lock-icon { background:#142b4d; }
  .login-help { background:#0c172a; border-color:#263653; }
}
/* Campus Escolar V14.2 · Portal de información educativa */
.news-portal{border:0}.news-portal-head{background:linear-gradient(115deg,rgba(13,110,253,.12),rgba(25,135,84,.08))}.news-dashboard-item{display:block;position:relative;padding:.75rem 2rem .75rem 0;border-bottom:1px solid var(--bs-border-color);text-decoration:none;color:inherit}.news-dashboard-item:last-child{border-bottom:0}.news-dashboard-item strong,.news-dashboard-item small{display:block}.news-dashboard-item strong{line-height:1.25;margin:.2rem 0}.news-dashboard-item small{color:var(--bs-secondary-color)}.news-source{font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--bs-primary);font-weight:700}.news-dashboard-item:after{content:'→';position:absolute;right:.25rem;top:50%;transform:translateY(-50%);color:var(--bs-primary)}.news-dashboard-item:hover strong{color:var(--bs-primary)}.news-dashboard-item.compact{padding-top:.55rem;padding-bottom:.55rem}.news-dashboard-alert{display:flex;gap:.65rem;align-items:center;margin-top:.65rem;padding:.65rem;border-radius:.75rem;background:rgba(255,193,7,.14);color:inherit;text-decoration:none}.news-dashboard-alert small{display:block;color:var(--bs-secondary-color)}.news-card{transition:transform .15s ease,box-shadow .15s ease}.news-card:hover{transform:translateY(-2px);box-shadow:0 .5rem 1rem rgba(0,0,0,.12)!important}@media(max-width:991.98px){.news-portal .border-end{border-right:0!important;border-bottom:1px solid var(--bs-border-color)}}

/* Campus Escolar V14.3 · Centro Inteligente de Información */
.portal-hero{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:1.25rem 1.4rem;border-radius:1.25rem;background:linear-gradient(135deg,rgba(13,110,253,.10),rgba(25,135,84,.08));border:1px solid rgba(13,110,253,.12)}
.portal-summary-card{background:linear-gradient(135deg,rgba(255,255,255,.98),rgba(235,245,255,.94))}
.portal-summary-icon,.portal-book-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:rgba(13,110,253,.12);color:var(--bs-primary);font-size:1.35rem}
.portal-summary-list{display:grid;gap:.65rem;padding-left:1.25rem}.portal-summary-list li::marker{color:var(--bs-primary)}
.portal-tabs{gap:.45rem;flex-wrap:nowrap;overflow-x:auto;padding-bottom:.25rem}.portal-tabs .nav-link{white-space:nowrap;border-radius:.8rem}
.news-card-v143{transition:transform .18s ease,box-shadow .18s ease}.news-card-v143:hover{transform:translateY(-3px);box-shadow:0 1rem 2.2rem rgba(15,23,42,.12)!important}.news-image{height:165px;object-fit:cover}
.empty-portal-state{text-align:center;padding:3rem 1rem;border:1px dashed rgba(100,116,139,.35);border-radius:1rem;background:rgba(248,250,252,.7)}.empty-portal-state>i{font-size:2rem;color:var(--bs-primary)}
.status-dot{display:inline-block;width:.7rem;height:.7rem;border-radius:50%;background:#94a3b8}.status-dot.ok{background:#22c55e}.status-dot.warn{background:#f59e0b}
.news-portal-v143-head{background:linear-gradient(90deg,rgba(13,110,253,.08),rgba(25,135,84,.05))}.dashboard-daily-summary{padding-left:1.1rem;margin:0;display:grid;gap:.55rem;font-size:.9rem}.dashboard-daily-summary li::marker{color:var(--bs-primary)}
.portal-count-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.65rem}.portal-count-grid a{text-decoration:none;padding:.8rem;border-radius:.9rem;background:rgba(13,110,253,.07);display:flex;flex-direction:column}.portal-count-grid strong{font-size:1.35rem;color:var(--bs-primary)}.portal-count-grid span{font-size:.75rem;color:var(--bs-secondary-color)}
[data-bs-theme="dark"] .portal-summary-card,[data-bs-theme="dark"] .empty-portal-state{background:rgba(20,30,48,.88)}
@media(max-width:767.98px){.portal-hero{align-items:flex-start;flex-direction:column}.news-image{height:135px}}

/* V14.4 Biblioteca compartida organizada por materias */
.library-folder-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.85rem}.library-folder-card{display:flex;align-items:center;gap:.85rem;padding:1rem;border:1px solid var(--bs-border-color);border-radius:1rem;background:var(--bs-body-bg);color:var(--bs-body-color);text-decoration:none;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.library-folder-card:hover,.library-folder-card.is-active{transform:translateY(-2px);border-color:var(--bs-primary);box-shadow:0 .65rem 1.5rem rgba(15,23,42,.09)}.library-folder-card.is-active{background:color-mix(in srgb,var(--bs-primary) 8%,var(--bs-body-bg))}.library-folder-icon{display:grid;place-items:center;width:2.75rem;height:2.75rem;border-radius:.85rem;background:color-mix(in srgb,var(--bs-primary) 12%,transparent);color:var(--bs-primary);font-size:1.25rem;flex:0 0 auto}.library-folder-copy{display:flex;flex-direction:column;min-width:0}.library-folder-copy strong{line-height:1.2}.library-folder-copy small{color:var(--bs-secondary-color);margin-top:.2rem}.library-folder-arrow{margin-left:auto;color:var(--bs-secondary-color)}.library-resource-card{border-radius:1rem;border-color:var(--bs-border-color);transition:transform .18s ease,box-shadow .18s ease}.library-resource-card:hover{transform:translateY(-2px);box-shadow:0 .65rem 1.5rem rgba(15,23,42,.09)!important}.library-resource-folder{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:.7rem;background:color-mix(in srgb,#f59e0b 16%,transparent);color:#d97706}.library-empty-state{text-align:center;padding:3.5rem 1.5rem;border:1px dashed var(--bs-border-color);border-radius:1rem;background:color-mix(in srgb,var(--bs-secondary-bg) 55%,transparent)}.library-empty-state>i{display:block;font-size:2.5rem;color:var(--bs-primary);margin-bottom:.75rem}@media(max-width:991.98px){.library-upload-card{position:static!important}.library-folder-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:575.98px){.library-folder-grid{grid-template-columns:1fr}.library-folder-card{padding:.85rem}}

/* V14.4 - Red de colaboración */
.collaboration-create-card { border: 0; border-radius: 1.25rem; }
.collaboration-card { border: 0; border-left: 4px solid var(--bs-border-color); border-radius: 1rem; overflow: hidden; }
.collaboration-card.urgency-alta { border-left-color: var(--bs-danger); }
.collaboration-card.urgency-media { border-left-color: var(--bs-warning); }
.collaboration-card.urgency-baja { border-left-color: var(--bs-success); }
.collaboration-category-icon { width: 3rem; height: 3rem; border-radius: .9rem; display: inline-grid; place-items: center; flex: 0 0 auto; background: rgba(13,110,253,.1); color: var(--bs-primary); font-size: 1.25rem; }
.collaboration-urgency { color: #111827; background: #e5e7eb; }
.collaboration-urgency.urgency-alta { color: #842029; background: #f8d7da; }
.collaboration-urgency.urgency-media { color: #664d03; background: #fff3cd; }
.collaboration-urgency.urgency-baja { color: #0f5132; background: #d1e7dd; }
.collaboration-description { white-space: pre-line; }
.collaboration-support-list { background: rgba(13,110,253,.045); border-radius: .85rem; padding: .85rem; }
.collaboration-support-row + .collaboration-support-row { border-top: 1px solid var(--bs-border-color); margin-top: .55rem; padding-top: .55rem; }
.empty-collaboration-icon { width: 4rem; height: 4rem; border-radius: 50%; display: inline-grid; place-items: center; background: rgba(13,110,253,.1); color: var(--bs-primary); font-size: 1.75rem; }
[data-bs-theme="dark"] .collaboration-support-list { background: rgba(255,255,255,.045); }
[data-bs-theme="dark"] .collaboration-urgency { color: #f8f9fa; background: #374151; }
@media (max-width: 767.98px) { .collaboration-filters .btn { min-height: 2.5rem; } }

/* Página pública Conoce Campus Escolar */
.public-host{min-height:100vh;background:#f8fafc}.campus-public-page{--public-navy:#0b1736;--public-blue:#2563eb;--public-cyan:#22d3ee;--public-text:#0f172a;color:var(--public-text);overflow:hidden}.public-nav{height:78px;display:flex;align-items:center;justify-content:space-between;gap:1.25rem;max-width:1240px;margin:0 auto;padding:0 28px;background:rgba(248,250,252,.94);backdrop-filter:blur(15px);position:relative;z-index:10}.public-brand{display:flex;align-items:center;gap:.7rem;color:inherit;text-decoration:none}.public-brand-mark{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:linear-gradient(145deg,#2563eb,#0ea5e9);color:#fff;font-weight:800;box-shadow:0 10px 24px rgba(37,99,235,.2)}.public-brand span:last-child{display:flex;flex-direction:column;line-height:1.15}.public-brand strong{font-size:1rem}.public-brand small{font-size:.72rem;color:#64748b}.public-nav-links{align-items:center;gap:1.7rem}.public-nav-links a{color:#475569;text-decoration:none;font-size:.9rem;font-weight:600}.public-nav-links a:hover{color:#2563eb}.public-hero{min-height:650px;background:radial-gradient(circle at 10% 10%,rgba(34,211,238,.16),transparent 26%),linear-gradient(135deg,#08142e 0%,#102b5c 55%,#0b4f6c 100%);color:#fff;display:grid;grid-template-columns:minmax(0,1fr) minmax(460px,.92fr);align-items:center;gap:4rem;padding:76px max(28px,calc((100vw - 1180px)/2));position:relative}.public-hero:after{content:"";position:absolute;inset:auto 0 0;height:110px;background:linear-gradient(to top,#f8fafc,transparent);pointer-events:none}.public-hero-copy,.public-hero-visual{position:relative;z-index:2}.public-kicker,.public-eyebrow{display:inline-flex;align-items:center;gap:.45rem;text-transform:uppercase;letter-spacing:.09em;font-size:.75rem;font-weight:800}.public-kicker{color:#a5f3fc;background:rgba(34,211,238,.1);border:1px solid rgba(165,243,252,.2);padding:.55rem .8rem;border-radius:999px}.public-hero h1{font-size:clamp(2.7rem,5.5vw,5rem);line-height:.98;letter-spacing:-.055em;max-width:760px;margin:1.25rem 0}.public-hero-copy>p{font-size:1.12rem;line-height:1.7;color:#cbd5e1;max-width:650px;margin-bottom:2rem}.public-trust-row{display:flex;flex-wrap:wrap;gap:1.4rem;margin-top:2.2rem;color:#cbd5e1;font-size:.85rem}.public-trust-row i{color:#67e8f9;margin-right:.35rem}.public-hero-visual>img{width:100%;display:block;border-radius:1.4rem;border:1px solid rgba(255,255,255,.15);box-shadow:0 35px 80px rgba(0,0,0,.42);transform:perspective(1200px) rotateY(-5deg) rotateX(2deg)}.public-floating-card{position:absolute;display:flex;align-items:center;gap:.65rem;padding:.75rem .9rem;background:rgba(255,255,255,.95);color:#0f172a;border-radius:1rem;box-shadow:0 18px 45px rgba(0,0,0,.25)}.public-floating-card>i{display:grid;place-items:center;width:38px;height:38px;border-radius:.75rem;background:#dbeafe;color:#2563eb;font-size:1.1rem}.public-floating-card span{display:flex;flex-direction:column}.public-floating-card strong{font-size:.82rem}.public-floating-card small{font-size:.68rem;color:#64748b}.public-floating-card-one{right:-20px;top:-24px}.public-floating-card-two{left:-35px;bottom:-25px}.public-section{max-width:1180px;margin:0 auto;padding:94px 28px}.public-section-heading{text-align:center;max-width:760px;margin:0 auto 3rem}.public-eyebrow{color:#2563eb;margin-bottom:.7rem}.public-section-heading h2,.public-benefits-copy h2,.public-cta h2{font-size:clamp(2rem,4vw,3.2rem);letter-spacing:-.04em;line-height:1.05}.public-section-heading p,.public-benefits-copy>p{color:#64748b;font-size:1.02rem;line-height:1.65}.public-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.1rem}.public-feature-card{background:#fff;border:1px solid #e2e8f0;border-radius:1.25rem;padding:1.45rem;box-shadow:0 8px 30px rgba(15,23,42,.045);transition:transform .2s ease,box-shadow .2s ease}.public-feature-card:hover{transform:translateY(-4px);box-shadow:0 18px 38px rgba(15,23,42,.09)}.public-feature-card h3{font-size:1.05rem;margin:.95rem 0 .45rem}.public-feature-card p{font-size:.88rem;line-height:1.55;color:#64748b;margin:0}.feature-icon{width:46px;height:46px;display:grid;place-items:center;border-radius:14px;font-size:1.25rem}.feature-blue{background:#dbeafe;color:#2563eb}.feature-purple{background:#ede9fe;color:#7c3aed}.feature-green{background:#dcfce7;color:#16a34a}.feature-orange{background:#ffedd5;color:#ea580c}.feature-cyan{background:#cffafe;color:#0891b2}.feature-indigo{background:#e0e7ff;color:#4f46e5}.feature-red{background:#fee2e2;color:#dc2626}.feature-slate{background:#e2e8f0;color:#334155}.feature-pink{background:#fce7f3;color:#db2777}.public-workflow{max-width:none;background:#eef4ff;padding-left:max(28px,calc((100vw - 1180px)/2));padding-right:max(28px,calc((100vw - 1180px)/2));display:grid;grid-template-columns:.8fr 1.2fr;gap:4rem;align-items:center}.public-workflow .public-section-heading{margin:0}.workflow-list{list-style:none;margin:0;padding:0;display:grid;gap:.85rem}.workflow-list li{display:flex;align-items:center;gap:1rem;background:#fff;border:1px solid #dbeafe;padding:1rem 1.15rem;border-radius:1rem}.workflow-list li>span{display:grid;place-items:center;flex:0 0 auto;width:40px;height:40px;border-radius:50%;background:#2563eb;color:#fff;font-weight:800}.workflow-list li div{display:flex;flex-direction:column}.workflow-list small{color:#64748b;margin-top:.2rem}.public-profile-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1rem}.public-profile-grid article{background:#0f244c;color:#fff;padding:1.3rem;border-radius:1.15rem;min-height:205px}.public-profile-grid i{font-size:1.65rem;color:#67e8f9}.public-profile-grid h3{font-size:1rem;margin:1rem 0 .55rem}.public-profile-grid p{font-size:.82rem;line-height:1.55;color:#cbd5e1}.public-benefits{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}.public-benefits-image img{width:100%;height:460px;object-fit:cover;border-radius:1.5rem;box-shadow:0 24px 60px rgba(15,23,42,.15)}.public-benefits-copy ul{list-style:none;margin:2rem 0 0;padding:0;display:grid;gap:1rem}.public-benefits-copy li{display:flex;gap:.75rem;align-items:flex-start;color:#475569}.public-benefits-copy li i{color:#16a34a;margin-top:.15rem}.public-faq{max-width:850px;margin:0 auto}.public-faq .accordion-item{border:1px solid #e2e8f0;border-radius:1rem!important;overflow:hidden;margin-bottom:.75rem}.public-faq .accordion-button{font-weight:700;padding:1.2rem 1.3rem}.public-cta{max-width:1180px;margin:20px auto 90px;padding:3.2rem;border-radius:1.7rem;background:linear-gradient(135deg,#1d4ed8,#0891b2);color:#fff;display:flex;align-items:center;justify-content:space-between;gap:2rem}.public-cta .public-eyebrow{color:#cffafe}.public-cta p{color:#dbeafe;margin:0}.public-cta h2{max-width:700px}.public-footer{max-width:1180px;margin:0 auto;padding:2rem 28px 3rem;border-top:1px solid #e2e8f0;display:flex;align-items:center;justify-content:space-between;gap:1rem}.public-footer>div{display:flex;gap:1rem;color:#64748b;font-size:.85rem}.public-footer>div a{color:#2563eb;text-decoration:none}@media(max-width:991.98px){.public-hero{grid-template-columns:1fr;gap:4rem;padding-top:60px}.public-hero-visual{max-width:720px}.public-feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.public-workflow,.public-benefits{grid-template-columns:1fr}.public-profile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.public-floating-card-one{right:10px}.public-floating-card-two{left:10px}}@media(max-width:575.98px){.public-nav{padding:0 16px;height:70px}.public-brand small{display:none}.public-nav .btn{font-size:.8rem;padding:.55rem .7rem}.public-hero{padding:52px 18px 80px;min-height:auto}.public-hero h1{font-size:2.65rem}.public-hero-copy>p{font-size:1rem}.public-hero-visual>img{transform:none}.public-floating-card{display:none}.public-section{padding:70px 18px}.public-feature-grid,.public-profile-grid{grid-template-columns:1fr}.public-workflow{padding-left:18px;padding-right:18px}.public-benefits-image img{height:300px}.public-cta{margin:15px 18px 70px;padding:2rem;flex-direction:column;align-items:flex-start}.public-footer{padding:1.5rem 18px 2.5rem;flex-direction:column;align-items:flex-start}.public-footer>div{flex-direction:column;gap:.3rem}}

/* Acceso público visible desde el login */
.login-public-cta {
  align-self: flex-start;
  border-radius: .9rem;
  font-weight: 800;
  box-shadow: 0 12px 30px rgba(0,0,0,.18);
}
.login-card a[href$="/conoce-campus"] {
  min-height: 52px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  border-width: 2px;
}
@media (max-width: 767.98px) {
  .login-public-cta { width: 100%; justify-content: center; }
}

/* Explorador interactivo de módulos - Conoce Campus Escolar */
.public-module-explorer{display:grid;grid-template-columns:340px minmax(0,1fr);gap:1.35rem;align-items:start}.public-module-tabs{display:grid;gap:.65rem;position:sticky;top:20px}.public-module-tab{width:100%;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.8rem;text-align:left;border:1px solid #e2e8f0;background:#fff;border-radius:1rem;padding:.85rem .95rem;color:#0f172a;box-shadow:0 5px 20px rgba(15,23,42,.035);transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease}.public-module-tab:hover,.public-module-tab:focus-visible{border-color:#93c5fd;transform:translateX(3px);box-shadow:0 10px 26px rgba(37,99,235,.09);outline:none}.public-module-tab.is-active{border-color:#2563eb;background:linear-gradient(135deg,#eff6ff,#fff);box-shadow:0 14px 34px rgba(37,99,235,.13)}.public-module-tab .feature-icon{width:42px;height:42px;border-radius:12px}.public-module-tab>span:nth-child(2){display:flex;flex-direction:column;min-width:0}.public-module-tab strong{font-size:.92rem}.public-module-tab small{font-size:.75rem;color:#64748b;margin-top:.12rem}.module-chevron{color:#94a3b8;font-size:.8rem;transition:transform .2s ease}.public-module-tab.is-active .module-chevron{color:#2563eb;transform:translateX(3px)}.public-module-detail{min-height:590px;background:#fff;border:1px solid #dbe4f0;border-radius:1.5rem;padding:2rem;box-shadow:0 22px 55px rgba(15,23,42,.08)}.public-module-detail article{animation:moduleDetailIn .28s ease}.module-detail-heading{display:flex;align-items:flex-start;gap:1rem;padding-bottom:1.4rem;border-bottom:1px solid #e2e8f0}.module-detail-heading .feature-icon{flex:0 0 auto;width:58px;height:58px;border-radius:17px;font-size:1.55rem}.module-detail-heading .public-eyebrow{margin-bottom:.25rem}.module-detail-heading h3{font-size:clamp(1.7rem,3vw,2.45rem);letter-spacing:-.035em;margin:0 0 .4rem}.module-detail-heading p{color:#64748b;line-height:1.6;margin:0;max-width:720px}.module-detail-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:2rem;padding:1.6rem 0}.module-detail-grid h4{font-size:.9rem;text-transform:uppercase;letter-spacing:.075em;color:#334155;margin-bottom:.9rem}.module-detail-grid ul{margin:0;padding-left:1.2rem;display:grid;gap:.65rem;color:#475569}.module-detail-grid li::marker{color:#2563eb}.module-chip-list{display:flex;flex-wrap:wrap;gap:.55rem}.module-chip-list span{display:inline-flex;align-items:center;padding:.5rem .7rem;border-radius:999px;background:#f1f5f9;border:1px solid #e2e8f0;color:#334155;font-size:.78rem;font-weight:650}.module-flow{display:flex;align-items:center;flex-wrap:wrap;gap:.65rem;padding:1rem 1.1rem;border-radius:1rem;background:#0f244c;color:#dbeafe}.module-flow strong{color:#fff;margin-right:.35rem}.module-flow span{padding:.4rem .6rem;border-radius:.55rem;background:rgba(255,255,255,.1);font-size:.78rem}.module-flow i{color:#67e8f9}@keyframes moduleDetailIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(max-width:991.98px){.public-module-explorer{grid-template-columns:1fr}.public-module-tabs{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}.public-module-detail{min-height:0}.module-detail-grid{grid-template-columns:1fr}}@media(max-width:575.98px){.public-module-tabs{grid-template-columns:1fr}.public-module-detail{padding:1.25rem;border-radius:1.15rem}.module-detail-heading{gap:.75rem}.module-detail-heading .feature-icon{width:48px;height:48px;font-size:1.25rem}.module-flow{align-items:flex-start}.module-flow i{transform:rotate(90deg)}}

/* Conoce Campus — presentación comercial 2026 */
.campus-public-page{background:#f7f8fc}.public-nav-commercial{max-width:none;padding-left:max(24px,calc((100vw - 1280px)/2));padding-right:max(24px,calc((100vw - 1280px)/2));position:sticky;top:0;height:82px;border-bottom:1px solid rgba(148,163,184,.2);box-shadow:0 8px 30px rgba(15,23,42,.035)}
.public-nav-commercial .public-nav-links{display:flex;gap:1.35rem}.public-nav-commercial .public-nav-links a{font-size:.84rem}.public-menu-toggle{border:0;background:#e8efff;color:#1d4ed8;width:42px;height:42px;border-radius:12px;font-size:1.35rem}
.public-hero-commercial{min-height:720px;grid-template-columns:minmax(0,.9fr) minmax(520px,1.1fr);background:radial-gradient(circle at 7% 15%,rgba(56,189,248,.22),transparent 25%),radial-gradient(circle at 92% 10%,rgba(99,102,241,.2),transparent 30%),linear-gradient(130deg,#07142f 0%,#112d63 56%,#0a506c 100%);overflow:hidden}
.public-hero-commercial:after{height:65px}.public-hero-commercial h1{font-size:clamp(3.2rem,6.4vw,6.25rem);max-width:820px}.public-hero-actions{display:flex;flex-wrap:wrap;gap:1rem}.public-screen-frame{background:#0f172a;border:1px solid rgba(255,255,255,.2);border-radius:1.45rem;overflow:hidden;box-shadow:0 42px 100px rgba(0,0,0,.48);transform:perspective(1300px) rotateY(-5deg) rotateX(2deg)}.public-screen-frame img{width:100%;display:block}.public-screen-bar{height:38px;background:#111b32;display:flex;align-items:center;gap:7px;padding:0 13px}.public-screen-bar span{width:8px;height:8px;border-radius:50%;background:#64748b}.public-screen-bar span:first-child{background:#fb7185}.public-screen-bar span:nth-child(2){background:#fbbf24}.public-screen-bar span:nth-child(3){background:#34d399}.public-screen-bar small{margin-left:auto;color:#94a3b8;font-size:.68rem}.public-hero-orbit{position:absolute;border:1px solid rgba(125,211,252,.14);border-radius:50%;pointer-events:none}.public-hero-orbit-one{width:430px;height:430px;right:-180px;top:-160px}.public-hero-orbit-two{width:250px;height:250px;left:38%;bottom:-145px}
.public-quick-modules{max-width:1180px;margin:-45px auto 0;position:relative;z-index:5;background:#fff;border:1px solid #e2e8f0;border-radius:1.35rem;box-shadow:0 20px 55px rgba(15,23,42,.13);display:grid;grid-template-columns:repeat(5,1fr);padding:.7rem}.public-quick-modules a{display:flex;align-items:center;gap:.75rem;padding:1rem;border-radius:1rem;text-decoration:none;color:#0f172a;transition:.2s}.public-quick-modules a:hover{background:#eff6ff;transform:translateY(-2px)}.public-quick-modules i{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#e8efff;color:#2563eb;font-size:1.1rem}.public-quick-modules span{display:flex;flex-direction:column}.public-quick-modules small{color:#64748b;font-size:.72rem}
.public-about{display:grid;grid-template-columns:1.05fr .95fr;gap:5rem;align-items:center}.public-about-copy h2{font-size:clamp(2.3rem,4vw,4rem);letter-spacing:-.05em;line-height:1.02;margin:.5rem 0 1.4rem}.public-about-copy>p{font-size:1.08rem;line-height:1.75;color:#64748b}.public-about-highlight{margin-top:2rem;padding:1.35rem 1.5rem;border-left:4px solid #2563eb;background:#eef4ff;border-radius:0 1rem 1rem 0;display:flex;gap:1rem;align-items:flex-start;color:#1e3a8a}.public-about-highlight i{font-size:1.6rem}.public-about-values{display:grid;gap:1rem}.public-about-values article{display:flex;gap:1.1rem;background:#fff;border:1px solid #e2e8f0;border-radius:1.2rem;padding:1.25rem;box-shadow:0 10px 35px rgba(15,23,42,.05)}.public-about-values article>span{font-size:1.65rem;font-weight:900;color:#c7d2fe}.public-about-values h3{font-size:1.05rem;margin:0 0 .35rem}.public-about-values p{margin:0;color:#64748b;font-size:.9rem;line-height:1.55}
.public-solutions{max-width:none;background:#fff;padding-left:max(28px,calc((100vw - 1180px)/2));padding-right:max(28px,calc((100vw - 1180px)/2))}.public-solution-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.public-solution-grid article{position:relative;border:1px solid #e2e8f0;border-radius:1.25rem;padding:1.65rem;min-height:260px;overflow:hidden;transition:.25s;background:linear-gradient(145deg,#fff,#fbfdff)}.public-solution-grid article:hover{transform:translateY(-6px);box-shadow:0 20px 45px rgba(15,23,42,.09);border-color:#bfdbfe}.public-solution-grid article>i{font-size:1.75rem;color:#2563eb}.public-solution-grid h3{font-size:1.2rem;margin:1rem 0 .6rem}.public-solution-grid p{color:#64748b;line-height:1.62}.public-solution-grid a{position:absolute;bottom:1.4rem;color:#2563eb;font-weight:700;text-decoration:none;font-size:.88rem}.solution-number{position:absolute;right:1rem;top:.5rem;font-size:3rem;font-weight:900;color:#eef2ff}
.public-module-explorer{box-shadow:0 24px 65px rgba(15,23,42,.09)}.public-module-tab{border-bottom:1px solid #eef2f7}.public-module-detail{background:linear-gradient(155deg,#fff,#f8fbff)}
.public-impact{background:#0d2148;color:#fff;display:grid;grid-template-columns:repeat(4,1fr);padding:3.25rem max(28px,calc((100vw - 1180px)/2));gap:1px}.public-impact>div{padding:1.1rem 1.6rem;border-right:1px solid rgba(255,255,255,.13);display:flex;flex-direction:column}.public-impact>div:last-child{border-right:0}.public-impact strong{font-size:1.35rem}.public-impact span{color:#a9bddb;font-size:.83rem;margin-top:.25rem}
.public-modalities{max-width:none;background:#f0f4ff;padding-left:max(28px,calc((100vw - 1180px)/2));padding-right:max(28px,calc((100vw - 1180px)/2))}.public-plan-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;align-items:stretch}.public-plan-grid article{background:#fff;border:1px solid #dfe7f3;border-radius:1.35rem;padding:1.7rem;display:flex;flex-direction:column;position:relative}.public-plan-grid article.is-featured{border:2px solid #2563eb;transform:translateY(-12px);box-shadow:0 22px 55px rgba(37,99,235,.15)}.plan-recommended{position:absolute;top:-15px;right:20px;background:#2563eb;color:#fff;border-radius:999px;padding:.35rem .75rem;font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.plan-label{color:#2563eb;font-weight:800;text-transform:uppercase;font-size:.72rem;letter-spacing:.1em}.public-plan-grid h3{margin:.75rem 0 .6rem}.public-plan-grid p{color:#64748b;min-height:72px}.public-plan-grid ul{list-style:none;padding:0;margin:1rem 0 1.5rem;display:grid;gap:.6rem;flex:1}.public-plan-grid li:before{content:'✓';color:#16a34a;font-weight:900;margin-right:.55rem}
.public-contact{max-width:1180px;background:linear-gradient(130deg,#1d4ed8,#0f766e);color:#fff;border-radius:1.8rem;margin-top:80px;margin-bottom:80px;display:grid;grid-template-columns:1.2fr .8fr;gap:3rem;align-items:center;padding:3.2rem}.public-contact .public-eyebrow{color:#bfdbfe}.public-contact h2{font-size:clamp(2.2rem,4vw,3.7rem);letter-spacing:-.045em;line-height:1.02}.public-contact p{color:#dbeafe;font-size:1.02rem}.public-contact-actions{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1.8rem}.public-contact-card{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);border-radius:1.3rem;padding:1.5rem;backdrop-filter:blur(10px)}.public-contact-card>i{font-size:2rem}.public-contact-card h3{margin:1rem 0 .5rem}.public-contact-card span{font-weight:700;color:#dbeafe}
@media(max-width:991.98px){.public-nav-commercial .public-nav-links{display:none;position:absolute;top:72px;left:16px;right:16px;background:#fff;border:1px solid #e2e8f0;border-radius:1rem;padding:1rem;box-shadow:0 20px 50px rgba(15,23,42,.15);flex-direction:column;align-items:stretch}.public-nav-commercial .public-nav-links.is-open{display:flex}.public-nav-commercial .public-nav-links a{padding:.6rem}.public-nav-login{margin-left:auto}.public-hero-commercial{grid-template-columns:1fr;min-height:auto}.public-quick-modules{grid-template-columns:repeat(2,1fr);margin:20px 18px 0}.public-quick-modules a:last-child{grid-column:1/-1}.public-about{grid-template-columns:1fr;gap:2.5rem}.public-solution-grid{grid-template-columns:repeat(2,1fr)}.public-impact{grid-template-columns:repeat(2,1fr)}.public-impact>div:nth-child(2){border-right:0}.public-impact>div{border-bottom:1px solid rgba(255,255,255,.13)}.public-plan-grid{grid-template-columns:1fr}.public-plan-grid article.is-featured{transform:none}.public-contact{grid-template-columns:1fr;margin-left:18px;margin-right:18px}}
@media(max-width:575.98px){.public-nav-commercial{height:70px;padding-left:14px;padding-right:14px}.public-nav-login{font-size:0;width:43px;height:43px;padding:0;display:grid;place-items:center}.public-nav-login i{font-size:1rem;margin:0!important}.public-hero-commercial h1{font-size:3rem}.public-hero-actions{flex-direction:column}.public-hero-actions .btn{width:100%}.public-screen-frame{transform:none}.public-quick-modules{grid-template-columns:1fr}.public-quick-modules a:last-child{grid-column:auto}.public-solution-grid{grid-template-columns:1fr}.public-impact{grid-template-columns:1fr}.public-impact>div{border-right:0}.public-contact{padding:2rem}.public-contact-actions{flex-direction:column}.public-contact-actions .btn{width:100%}}


/* Invitación comercial a demostración */
.public-demo-invitation{max-width:none;background:linear-gradient(135deg,#eef4ff 0%,#f8fbff 54%,#eefcf7 100%);padding-left:max(28px,calc((100vw - 1180px)/2));padding-right:max(28px,calc((100vw - 1180px)/2));display:grid;grid-template-columns:minmax(0,1.08fr) minmax(360px,.92fr);gap:3rem;align-items:center;position:relative;overflow:hidden}.public-demo-invitation:before{content:'';position:absolute;width:420px;height:420px;border-radius:50%;background:rgba(37,99,235,.08);top:-210px;right:-110px}.public-demo-intro,.public-demo-details{position:relative;z-index:1}.public-demo-intro h2{font-size:clamp(2.3rem,4.8vw,4.7rem);line-height:1.02;letter-spacing:-.05em;margin:.65rem 0 1.15rem;max-width:820px}.public-demo-intro>p{font-size:1.12rem;line-height:1.75;color:#5f718d;max-width:760px}.public-demo-actions{display:flex;flex-wrap:wrap;gap:.85rem;margin-top:1.6rem}.public-demo-note{display:flex;align-items:center;gap:.55rem;margin-top:1rem!important;font-size:.93rem!important;color:#405675!important;font-weight:650}.public-demo-note i{color:#16a34a;font-size:1.1rem}.public-demo-details{display:grid;gap:.9rem}.public-demo-details article{display:grid;grid-template-columns:54px 1fr;gap:1rem;align-items:start;background:rgba(255,255,255,.88);border:1px solid rgba(203,213,225,.85);border-radius:1.2rem;padding:1.1rem 1.2rem;box-shadow:0 16px 40px rgba(15,35,70,.07);backdrop-filter:blur(8px)}.public-demo-details h3{font-size:1.02rem;margin:.05rem 0 .3rem}.public-demo-details p{color:#64748b;line-height:1.55;margin:0;font-size:.93rem}.public-demo-icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,#2563eb,#0ea5e9);color:#fff;font-size:1.15rem;box-shadow:0 10px 24px rgba(37,99,235,.2)}
@media(max-width:900px){.public-demo-invitation{grid-template-columns:1fr;gap:2rem}.public-demo-intro h2{font-size:clamp(2.15rem,9vw,3.4rem)}.public-demo-details{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.public-demo-invitation{padding-left:20px;padding-right:20px}.public-demo-actions{display:grid}.public-demo-actions .btn{width:100%}.public-demo-details{grid-template-columns:1fr}.public-demo-details article{grid-template-columns:46px 1fr;padding:1rem}.public-demo-icon{width:42px;height:42px}}

/* ============================================================
   Conoce Campus Escolar — layout full width
   ============================================================ */
.campus-public-page {
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  overflow-x: clip;
  background: #f7f8fc;
}

.campus-public-page > main,
.campus-public-page .public-nav,
.campus-public-page .public-footer {
  width: 100%;
  max-width: none;
}

.public-nav-commercial {
  padding-left: max(28px, calc((100vw - 1440px) / 2));
  padding-right: max(28px, calc((100vw - 1440px) / 2));
}

.public-hero-commercial {
  width: 100%;
  max-width: none;
  min-height: min(820px, calc(100vh - 82px));
  padding: clamp(64px, 8vh, 108px) max(32px, calc((100vw - 1440px) / 2)) clamp(84px, 10vh, 128px);
  grid-template-columns: minmax(0, 1fr) minmax(480px, .95fr);
  gap: clamp(56px, 7vw, 120px);
  align-items: center;
}

.public-hero-commercial .public-hero-copy {
  min-width: 0;
  max-width: 720px;
}

.public-hero-commercial h1 {
  max-width: 720px;
  font-size: clamp(3.5rem, 5.3vw, 5.9rem);
  line-height: .98;
  letter-spacing: -.058em;
  text-wrap: balance;
  overflow-wrap: normal;
  word-break: normal;
}

.public-hero-commercial .public-hero-copy > p {
  max-width: 680px;
  font-size: clamp(1.05rem, 1.25vw, 1.25rem);
}

.public-hero-commercial .public-hero-visual {
  width: 100%;
  max-width: 760px;
  justify-self: end;
}

.public-screen-frame {
  width: 100%;
}

.public-quick-modules {
  width: min(1440px, calc(100% - 56px));
  max-width: none;
}

.public-section {
  width: 100%;
  max-width: none;
  margin: 0;
  padding-left: max(32px, calc((100vw - 1320px) / 2));
  padding-right: max(32px, calc((100vw - 1320px) / 2));
}

.public-about,
.public-solutions,
.public-intro,
.public-benefits,
.public-demo-invitation,
#perfiles,
#preguntas {
  box-sizing: border-box;
}

.public-solutions,
.public-benefits,
#preguntas {
  background: #fff;
}

.public-intro,
#perfiles,
.public-demo-invitation {
  background: #f3f6fd;
}

.public-workflow {
  width: 100%;
  max-width: none;
  margin: 0;
  padding-left: max(32px, calc((100vw - 1320px) / 2));
  padding-right: max(32px, calc((100vw - 1320px) / 2));
}

.public-contact {
  width: 100%;
  max-width: none;
  margin: 0;
  border-radius: 0;
  padding-left: max(32px, calc((100vw - 1320px) / 2));
  padding-right: max(32px, calc((100vw - 1320px) / 2));
}

.public-cta {
  width: 100%;
  max-width: none;
  margin: 0;
  border-radius: 0;
  padding-left: max(32px, calc((100vw - 1320px) / 2));
  padding-right: max(32px, calc((100vw - 1320px) / 2));
}

.public-footer {
  margin: 0;
  padding-left: max(32px, calc((100vw - 1320px) / 2));
  padding-right: max(32px, calc((100vw - 1320px) / 2));
  background: #fff;
}

@media (min-width: 1600px) {
  .public-hero-commercial {
    grid-template-columns: minmax(620px, .92fr) minmax(650px, 1.08fr);
  }
  .public-hero-commercial h1 {
    font-size: clamp(4.8rem, 5.25vw, 6.4rem);
  }
}

@media (max-width: 1199.98px) {
  .public-hero-commercial {
    grid-template-columns: minmax(0, 1fr) minmax(430px, .9fr);
    gap: 48px;
  }
  .public-hero-commercial h1 {
    font-size: clamp(3.2rem, 5.5vw, 4.8rem);
  }
}

@media (max-width: 991.98px) {
  .campus-public-page {
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
  }
  .public-hero-commercial {
    min-height: auto;
    grid-template-columns: 1fr;
    padding-left: 24px;
    padding-right: 24px;
  }
  .public-hero-commercial .public-hero-copy {
    max-width: 780px;
  }
  .public-hero-commercial .public-hero-visual {
    max-width: 800px;
    justify-self: center;
  }
  .public-section,
  .public-workflow,
  .public-contact,
  .public-cta,
  .public-footer {
    padding-left: 24px;
    padding-right: 24px;
  }
}

@media (max-width: 575.98px) {
  .public-hero-commercial {
    padding: 50px 18px 78px;
  }
  .public-hero-commercial h1 {
    font-size: clamp(2.75rem, 13vw, 3.65rem);
    line-height: 1.01;
  }
  .public-section,
  .public-workflow,
  .public-contact,
  .public-cta,
  .public-footer {
    padding-left: 18px;
    padding-right: 18px;
  }
  .public-quick-modules {
    width: calc(100% - 36px);
  }
}

/* Comunidad · Mensajería */
.messaging-page{max-width:1440px;margin:0 auto}.message-conversation-list{display:flex;flex-direction:column}.message-conversation{display:flex;align-items:center;gap:14px;padding:14px 8px;color:inherit;text-decoration:none;border-bottom:1px solid #e8edf5}.message-conversation:hover{background:#f7f9fd}.message-conversation small{display:block;color:#718096;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:620px}.message-avatar{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:#e8efff;color:#3157c8;font-size:1.1rem}.messaging-chat{height:calc(100vh - 155px);min-height:560px;overflow:hidden}.messaging-chat-header{padding:18px 22px;border-bottom:1px solid #e8edf5;background:#fff}.messaging-thread{flex:1;overflow-y:auto;padding:22px;background:linear-gradient(180deg,#f7f9fd,#eef3fb);display:flex;flex-direction:column}.messaging-chat{display:flex;flex-direction:column}.message-bubble-wrap{display:flex;margin-bottom:12px}.message-bubble-wrap.mine{justify-content:flex-end}.message-bubble{max-width:min(72%,720px);padding:11px 14px;border-radius:16px 16px 16px 4px;background:#fff;box-shadow:0 2px 8px rgba(26,43,78,.07)}.message-bubble-wrap.mine .message-bubble{background:#3157c8;color:#fff;border-radius:16px 16px 4px 16px}.message-meta{display:flex;gap:12px;justify-content:space-between;font-size:.75rem;margin-bottom:4px;opacity:.75}.message-text{white-space:pre-wrap;overflow-wrap:anywhere}.message-attachment{display:inline-flex;align-items:center;gap:7px;margin-top:8px;padding:7px 10px;border-radius:9px;background:rgba(49,87,200,.08);text-decoration:none}.mine .message-attachment{color:#fff;background:rgba(255,255,255,.16)}.messaging-composer{display:flex;gap:9px;align-items:flex-end;padding:14px;background:#fff;border-top:1px solid #e8edf5}.messaging-composer textarea{resize:none;min-height:42px;max-height:120px}.min-w-0{min-width:0}@media(max-width:767px){.messaging-chat{height:calc(100dvh - 150px);min-height:480px}.messaging-thread{padding:14px}.message-bubble{max-width:88%}.messaging-composer{padding:10px}.message-conversation small{max-width:220px}}

/* Mensajería v2 */
.workspace-unread-badge{margin-left:auto;min-width:22px;height:22px;padding:0 6px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:#e53935;color:#fff;font-size:.7rem;font-weight:800;line-height:1;box-shadow:0 2px 7px rgba(229,57,53,.25)}
.messaging-chat-header{display:flex;align-items:center;justify-content:space-between;gap:12px}
.message-read-state{display:flex;align-items:center;justify-content:flex-end;gap:4px;margin-top:4px;font-size:.68rem;opacity:.72}
.message-bubble-wrap.mine .message-read-state{color:rgba(255,255,255,.9)}
.messaging-typing{height:30px;padding:4px 18px;display:flex;align-items:center;gap:8px;background:#fff;color:#718096;font-size:.78rem;border-top:1px solid #eef2f7}
.typing-dots{display:inline-flex;gap:3px;align-items:center}.typing-dots i{width:5px;height:5px;border-radius:50%;background:currentColor;animation:campusTyping 1.1s infinite ease-in-out}.typing-dots i:nth-child(2){animation-delay:.15s}.typing-dots i:nth-child(3){animation-delay:.3s}@keyframes campusTyping{0%,60%,100%{transform:translateY(0);opacity:.45}30%{transform:translateY(-3px);opacity:1}}
.message-compose-main{min-width:0;flex:1}.message-file-name{font-size:.72rem;color:#64748b;padding:4px 8px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.message-file-button{flex:0 0 auto}
.message-conversation:has(.badge){background:linear-gradient(90deg,rgba(49,87,200,.055),transparent)}
.message-conversation .badge{min-width:24px}
@media(max-width:767px){.messaging-page{max-width:none}.messaging-chat{height:calc(100dvh - 126px);min-height:430px;border-radius:0!important;margin:0 -12px}.messaging-chat-header{padding:12px 14px}.messaging-thread{padding:12px 10px}.message-bubble{max-width:91%;padding:10px 12px}.messaging-composer{gap:6px;padding:8px;position:sticky;bottom:0;z-index:5}.messaging-composer .btn-primary{padding-left:14px!important;padding-right:14px!important}.messaging-typing{padding-left:12px}.message-conversation{padding:12px 4px}.message-avatar{width:40px;height:40px;border-radius:12px}}

/* Mensajería v3: emojis y reacciones */
.message-emoji-wrap{position:relative;flex:0 0 auto}.message-emoji-button{width:42px;height:42px;padding:0;display:grid;place-items:center}.message-emoji-picker{position:absolute;left:0;bottom:50px;z-index:40;width:min(340px,88vw);padding:10px;border:1px solid #dfe6f1;border-radius:16px;background:#fff;box-shadow:0 16px 38px rgba(26,43,78,.18)}.message-emoji-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;max-height:220px;overflow:auto}.message-emoji-grid button,.message-reaction-picker button{border:0;background:transparent;border-radius:9px;font-size:1.28rem;line-height:1;padding:7px;cursor:pointer}.message-emoji-grid button:hover,.message-reaction-picker button:hover{background:#eef3fb;transform:scale(1.08)}
.message-reactions{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin-top:7px;min-height:22px}.message-reaction,.message-reaction-add{border:1px solid rgba(100,116,139,.18);background:rgba(255,255,255,.74);border-radius:999px;min-height:25px;padding:2px 7px;display:inline-flex;align-items:center;gap:4px;font-size:.82rem;line-height:1;color:#334155}.message-reaction small{font-size:.7rem;font-weight:700}.message-reaction:hover,.message-reaction-add:hover{background:#eef3ff;border-color:#b9c8f4}.message-reaction.mine-reaction{background:#e7edff;border-color:#9db2ef;color:#2747a6}.message-bubble-wrap.mine .message-reaction,.message-bubble-wrap.mine .message-reaction-add{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.22);color:#fff}.message-bubble-wrap.mine .message-reaction.mine-reaction{background:#fff;color:#3157c8;border-color:#fff}.message-reaction-add{opacity:.55;padding:3px 7px}.message-bubble:hover .message-reaction-add{opacity:1}
.message-reaction-picker{position:fixed;z-index:1100;display:flex;gap:2px;padding:7px;border:1px solid #dfe6f1;border-radius:14px;background:#fff;box-shadow:0 12px 34px rgba(15,23,42,.2)}
@media(max-width:767px){.message-emoji-picker{position:fixed;left:8px;right:8px;bottom:72px;width:auto}.message-emoji-grid{grid-template-columns:repeat(8,1fr)}.message-reaction-add{opacity:.85}.message-reaction-picker{max-width:calc(100vw - 16px);overflow-x:auto}.messaging-composer{align-items:flex-end}.message-emoji-button{width:40px;height:40px}}
@media(max-width:420px){.message-emoji-grid{grid-template-columns:repeat(7,1fr)}}

/* Chat Campus global ------------------------------------------------------ */
.chat-campus{position:fixed;right:18px;left:auto;bottom:18px;z-index:1060;font-family:inherit}.chat-campus-launcher{height:48px;border:0;border-radius:999px;background:linear-gradient(135deg,#1d4ed8,#4338ca);color:#fff;display:flex;align-items:center;gap:9px;padding:0 15px 0 10px;box-shadow:0 12px 34px rgba(30,64,175,.3);font-weight:700;transition:transform .18s ease,box-shadow .18s ease}.chat-campus-launcher:hover{transform:translateY(-2px);box-shadow:0 16px 40px rgba(30,64,175,.36)}.chat-campus-launcher-icon{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.17)}.chat-campus-unread{min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:#ef4444;color:#fff;display:inline-grid;place-items:center;font-size:.68rem;box-shadow:0 0 0 2px rgba(255,255,255,.85)}
.chat-campus-window{position:absolute;right:0;left:auto;bottom:58px;width:390px;height:min(590px,calc(100vh - 110px));display:none;flex-direction:column;background:#fff;border:1px solid #dbe4f0;border-radius:18px;overflow:hidden;box-shadow:0 24px 65px rgba(15,23,42,.24);transform-origin:bottom right}.chat-campus.is-open .chat-campus-window{display:flex;animation:chatCampusIn .16s ease-out}.chat-campus.is-open .chat-campus-launcher{display:none}.chat-campus.is-expanded .chat-campus-window{width:min(920px,calc(100vw - var(--sidebar-width) - 38px));height:calc(100vh - 38px);bottom:0}.chat-campus-header{height:60px;flex:0 0 60px;padding:0 10px 0 14px;background:linear-gradient(135deg,#172554,#1e40af);color:#fff;display:flex;align-items:center;gap:8px}.chat-campus-heading{display:flex;flex-direction:column;line-height:1.15;flex:1}.chat-campus-heading strong{font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-campus-heading small{font-size:.67rem;color:rgba(255,255,255,.72);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-campus-actions{display:flex;gap:2px}.chat-campus-actions button,.chat-campus-back{width:34px;height:34px;border:0;border-radius:9px;color:#fff;background:transparent;display:grid;place-items:center}.chat-campus-actions button:hover,.chat-campus-back:hover{background:rgba(255,255,255,.13)}
.chat-campus-body{flex:1;min-height:0;position:relative}.chat-campus-list,.chat-campus-thread-panel{height:100%;min-height:0}.chat-campus-list{display:flex;flex-direction:column;background:#f8fafc}.chat-campus-list-toolbar{display:flex;gap:7px;padding:10px;background:#fff;border-bottom:1px solid #e5eaf2}.chat-campus-new-private{padding:11px;background:#eef4ff;border-bottom:1px solid #dce6fb}.chat-campus-conversations{flex:1;overflow:auto}.chat-campus-conversation{width:100%;border:0;border-bottom:1px solid #e9edf4;background:#fff;padding:11px 12px;display:flex;align-items:center;gap:10px;text-align:left;color:#1e293b}.chat-campus-conversation:hover,.chat-campus-conversation.active{background:#eff5ff}.chat-campus-avatar{width:38px;height:38px;border-radius:12px;background:#e8efff;color:#3157c8;display:grid;place-items:center;flex:0 0 auto}.chat-campus-conv-copy{min-width:0;flex:1;display:flex;flex-direction:column}.chat-campus-conv-copy strong{font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-campus-conv-copy small{font-size:.69rem;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-campus-conv-unread{min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:#3157c8;color:#fff;display:grid;place-items:center;font-size:.65rem;font-weight:700}.chat-campus-loading,.chat-campus-empty{padding:26px 14px;color:#64748b;text-align:center;display:flex;align-items:center;justify-content:center;gap:8px;font-size:.78rem}.chat-campus-empty{flex-direction:column}.chat-campus-empty i{font-size:1.5rem;color:#94a3b8}
.chat-campus-thread-panel{display:flex;flex-direction:column;background:#f4f7fb}.chat-campus-thread{flex:1;min-height:0;overflow-y:auto;padding:13px;background:linear-gradient(180deg,#f8fafc 0%,#eef3fb 100%);display:flex;flex-direction:column}.chat-campus-thread .message-bubble{max-width:84%;font-size:.82rem;padding:9px 11px}.chat-campus-thread .message-bubble-wrap{margin-bottom:8px}.chat-campus-thread .message-meta{font-size:.65rem}.chat-campus-thread .message-reactions{margin-top:5px}.chat-campus-thread .message-reaction,.chat-campus-thread .message-reaction-add{min-height:22px;font-size:.74rem}.chat-campus-typing{flex:0 0 auto;padding:5px 13px;background:#f8fafc;color:#64748b;font-size:.69rem;border-top:1px solid #eef2f7}.chat-campus-composer{position:relative;display:flex;align-items:flex-end;gap:6px;padding:9px;background:#fff;border-top:1px solid #e2e8f0}.chat-campus-icon-btn{width:36px;height:36px;flex:0 0 36px;border:1px solid #dbe3ef;border-radius:10px;background:#f8fafc;color:#475569;display:grid;place-items:center;cursor:pointer}.chat-campus-icon-btn:hover{background:#eef3fb;color:#1d4ed8}.chat-campus-input-wrap{min-width:0;flex:1}.chat-campus-input-wrap textarea{resize:none;min-height:36px;max-height:110px;padding:7px 10px;font-size:.8rem;border-radius:11px}.chat-campus-input-wrap small{display:block;max-width:190px;padding:3px 4px 0;font-size:.62rem;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-campus-send{width:38px;height:38px;flex:0 0 38px;padding:0;border-radius:11px;display:grid;place-items:center}.chat-campus-emoji-picker{position:absolute;left:48px;bottom:54px;width:292px;max-height:210px;overflow:auto;display:grid;grid-template-columns:repeat(7,1fr);gap:2px;padding:8px;background:#fff;border:1px solid #dbe4f0;border-radius:14px;box-shadow:0 14px 34px rgba(15,23,42,.17);z-index:5}.chat-campus-emoji-picker button{border:0;background:transparent;border-radius:8px;padding:5px;font-size:1.12rem}.chat-campus-emoji-picker button:hover{background:#eef3fb}.chat-campus-thread-empty{margin:auto}.chat-campus .message-reaction-picker{z-index:1100}
@keyframes chatCampusIn{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
@media(min-width:992px){.chat-campus.is-expanded .chat-campus-thread .message-bubble{max-width:68%}.chat-campus.is-expanded .chat-campus-list-toolbar{padding:14px}.chat-campus.is-expanded .chat-campus-conversation{padding:13px 16px}.chat-campus.is-expanded .chat-campus-thread{padding:20px}}
@media(max-width:991.98px){.chat-campus{right:14px;left:auto;bottom:calc(76px + env(safe-area-inset-bottom))}.chat-campus-window{right:0;left:auto}.chat-campus.is-expanded .chat-campus-window{width:calc(100vw - 28px);height:calc(100dvh - 105px)}}
@media(max-width:767px){.chat-campus{left:0;right:0;bottom:0;pointer-events:none}.chat-campus-launcher{pointer-events:auto;position:fixed;right:14px;left:auto;bottom:calc(78px + env(safe-area-inset-bottom));width:48px;padding:0;justify-content:center}.chat-campus-launcher-label{display:none}.chat-campus-launcher-icon{background:transparent;font-size:1.05rem}.chat-campus-unread{position:absolute;top:-5px;right:-5px}.chat-campus-window,.chat-campus.is-expanded .chat-campus-window{pointer-events:auto;position:fixed;inset:0;width:100vw;height:100dvh;border:0;border-radius:0;z-index:1080}.chat-campus-header{height:58px;flex-basis:58px;padding-top:env(safe-area-inset-top)}.chat-campus-actions [data-chat-expand]{display:none}.chat-campus-thread{padding:10px 8px}.chat-campus-thread .message-bubble{max-width:91%}.chat-campus-composer{padding:8px 8px calc(8px + env(safe-area-inset-bottom))}.chat-campus-emoji-picker{position:fixed;left:8px;right:8px;bottom:62px;width:auto;grid-template-columns:repeat(8,1fr)}.chat-campus-back{display:grid!important}}
@media(max-width:390px){.chat-campus-emoji-picker{grid-template-columns:repeat(7,1fr)}}

/* Mobile UX: en teléfonos la navegación principal se concentra en el menú hamburguesa.
   Se elimina el dock inferior para recuperar área útil de trabajo. */
@media (max-width: 767.98px) {
  .mobile-nav {
    display: none !important;
  }

  .app-content {
    padding-bottom: calc(1rem + env(safe-area-inset-bottom));
  }

  .chat-campus-launcher {
    bottom: calc(14px + env(safe-area-inset-bottom)) !important;
  }
}
