/* ESEM Campus · base visual incremental (Etapa 2C)
   Tokens y componentes compartidos. Las capas 2A/2B conservan seguridad y responsive. */
:root{
  --ds-primary:#135468;
  --ds-primary-hover:#0d4253;
  --ds-success:#237158;
  --ds-warning:#956515;
  --ds-danger:#a23f43;
  --ds-info:#27778a;
  --ds-surface:#fff;
  --ds-surface-subtle:#f4f7f7;
  --ds-border:#d9e3e5;
  --ds-text:#18333e;
  --ds-text-muted:#526970;
  --ds-space-1:4px;
  --ds-space-2:8px;
  --ds-space-3:12px;
  --ds-space-4:16px;
  --ds-space-5:24px;
  --ds-space-6:32px;
  --ds-radius-sm:10px;
  --ds-radius-md:16px;
  --ds-radius-lg:22px;
  --ds-shadow-sm:0 5px 16px rgba(11,48,59,.05);
  --ds-shadow-md:0 12px 32px rgba(11,48,59,.08);
  --ds-font-caption:11px;
  --ds-font-small:13px;
  --ds-font-body:15px;
  --ds-font-card:20px;
  --ds-font-section:26px;
  --ds-font-page:clamp(30px,4vw,42px);
}

/* Tipografía y jerarquía */
.ds-page-header h1{margin:0;font-size:var(--ds-font-page);line-height:1.08;letter-spacing:-.025em}
.ds-page-header h1+p,.ds-page-header-copy{max-width:720px;margin:var(--ds-space-2) 0 0;color:var(--ds-text-muted);font-size:var(--ds-font-body);line-height:1.55}
.ds-page-header>div>small,.ds-eyebrow{display:block;margin-bottom:var(--ds-space-2);color:var(--ds-info);font-size:var(--ds-font-caption);font-weight:850;letter-spacing:.08em;text-transform:uppercase}
.ds-section-title{margin:0;font-size:var(--ds-font-section);line-height:1.18}
.ds-card-title{margin:0;font-size:var(--ds-font-card);line-height:1.25}

/* PageHeader */
.ds-page-header{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-5);min-height:0;padding:var(--ds-space-5);border:1px solid var(--ds-border);border-radius:var(--ds-radius-lg);background:var(--ds-surface);color:var(--ds-text);box-shadow:var(--ds-shadow-sm)}
.future-campus-page .ds-page-header{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-5);min-height:0;padding:var(--ds-space-5);border:1px solid var(--ds-border);border-radius:var(--ds-radius-lg);background:var(--ds-surface);color:var(--ds-text);box-shadow:var(--ds-shadow-sm)}
.future-campus-page .ds-page-header h1{color:var(--ds-text)}
.future-campus-page .ds-page-header p{color:var(--ds-text-muted)}
.future-campus-page .ds-page-header:after{display:none}
.ds-page-actions{display:flex;align-items:center;gap:var(--ds-space-2);flex-wrap:wrap}
.ds-page-context{display:grid;justify-items:end;gap:2px;color:var(--ds-text-muted);font-size:var(--ds-font-small)}
.ds-page-context b{color:var(--ds-text);font-size:18px}

/* Botones: taxonomía compartida y aliases existentes */
.btn,.primary,.secondary,.ghost,.danger,.ghost-link{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--ds-space-2);
  min-height:42px;padding:10px 16px;border:1px solid transparent;border-radius:var(--ds-radius-sm);
  font:inherit;font-size:var(--ds-font-small);font-weight:800;line-height:1.2;text-align:center;cursor:pointer;
  transition:background-color .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease,transform .16s ease;
}
.primary,.btn-primary{border-color:var(--ds-primary);background:var(--ds-primary);color:#fff;box-shadow:none}
.primary:hover,.btn-primary:hover{border-color:var(--ds-primary-hover);background:var(--ds-primary-hover)}
.secondary,.btn-secondary{border-color:#bfd1d5;background:#fff;color:var(--ds-primary)}
.secondary:hover,.btn-secondary:hover{border-color:#94b7be;background:#f3f8f8}
.ghost,.ghost-link,.btn-ghost{border-color:transparent;background:transparent;color:var(--ds-primary)}
.ghost:hover,.ghost-link:hover,.btn-ghost:hover{background:#edf4f5}
.danger,.btn-danger,.confirm-danger{border-color:var(--ds-danger);background:var(--ds-danger);color:#fff}
.danger:hover,.btn-danger:hover,.confirm-danger:hover{background:#873237}
.btn-sm{min-height:36px;padding:7px 12px}.btn-lg,.primary.big{min-height:48px;padding:13px 20px}.wide{width:100%}
:where(.btn,.primary,.secondary,.ghost,.danger,.ghost-link,.confirm-danger):focus-visible{outline:3px solid rgba(39,119,138,.28);outline-offset:2px}
:where(.btn,.primary,.secondary,.ghost,.danger,.ghost-link,.confirm-danger):disabled,:where(.btn,.primary,.secondary,.ghost,.danger,.ghost-link,.confirm-danger)[aria-disabled="true"]{cursor:not-allowed;opacity:.55;box-shadow:none}
:where(.btn,.primary,.secondary,.ghost,.danger,.ghost-link,.confirm-danger)[aria-busy="true"],form[aria-busy="true"] button{cursor:wait}

/* Cards y métricas */
.ds-card{border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);background:var(--ds-surface);box-shadow:var(--ds-shadow-sm)}
.ds-card-body{padding:var(--ds-space-5)}
.ds-card-meta{color:var(--ds-text-muted);font-size:var(--ds-font-small);line-height:1.45}
.ds-card-actions{display:flex;align-items:center;gap:var(--ds-space-2);flex-wrap:wrap;margin-top:var(--ds-space-4)}
.metric-card{display:grid;gap:var(--ds-space-1);padding:var(--ds-space-4);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);background:var(--ds-surface)}
.metric-card span,.metric-card small{color:var(--ds-text-muted);font-size:var(--ds-font-caption);font-weight:750}
.metric-card b,.metric-card strong{color:var(--ds-text);font-size:28px;line-height:1.1}

/* Badges: reservados para estado real */
.badge{display:inline-flex;align-items:center;width:max-content;min-height:26px;padding:4px 9px;border-radius:999px;background:#edf2f3;color:#4f6269;font-size:var(--ds-font-caption);font-weight:800}
.badge-success{background:#e4f4ee;color:#24654f}.badge-warning{background:#fff2d9;color:#7a5618}.badge-danger{background:#fae7e8;color:#893a3e}.badge-info{background:#e4f1f4;color:#246879}

/* Formularios */
.form-field,label:has(>input),label:has(>select),label:has(>textarea){color:#405861;font-size:var(--ds-font-small);font-weight:750}
:where(input:not([type="checkbox"]):not([type="radio"]),select,textarea){width:100%;min-height:42px;border:1px solid #c9d7da;border-radius:var(--ds-radius-sm);background:#fff;color:var(--ds-text);font-size:14px;line-height:1.4}
:where(input:not([type="checkbox"]):not([type="radio"]),select,textarea):hover{border-color:#9fbac0}
:where(input:not([type="checkbox"]):not([type="radio"]),select,textarea):focus{border-color:var(--ds-info);outline:3px solid rgba(39,119,138,.14);outline-offset:1px}
:where(input,select,textarea):disabled{cursor:not-allowed;background:#eef2f3;color:#718087}
.form-help{display:block;margin-top:var(--ds-space-1);color:var(--ds-text-muted);font-size:var(--ds-font-caption);font-weight:500;line-height:1.45}
.form-error{display:block;margin-top:var(--ds-space-1);color:var(--ds-danger);font-size:var(--ds-font-small);font-weight:750}

/* Alerts / notices */
.alert,.ds-alert,.communications-notice,.invite-notice,.security-alert{padding:var(--ds-space-3) var(--ds-space-4);border:1px solid var(--ds-border);border-left-width:4px;border-radius:var(--ds-radius-sm);background:#f5f8f8;color:var(--ds-text);font-size:var(--ds-font-small);line-height:1.5}
.alert.success,.ds-alert-success,.communications-notice.success,.invite-notice.success{border-left-color:var(--ds-success);background:#edf8f3;color:#245e4d}
.alert.error,.ds-alert-danger,.communications-notice.danger,.invite-notice.error,.security-alert.danger{border-left-color:var(--ds-danger);background:#fff0f0;color:#7d3539}
.alert.warning,.ds-alert-warning{border-left-color:var(--ds-warning);background:#fff8e8;color:#75551d}
.alert.info,.ds-alert-info{border-left-color:var(--ds-info);background:#eef7f8;color:#275d69}

/* EmptyState */
.empty-state,.empty{display:grid;justify-items:start;gap:var(--ds-space-1);padding:var(--ds-space-5);border:1px dashed #c7d4d7;border-radius:var(--ds-radius-md);background:var(--ds-surface-subtle);color:var(--ds-text-muted);font-size:var(--ds-font-small);line-height:1.5}
.empty-state b{color:var(--ds-text);font-size:16px}.empty-state .secondary{margin-top:var(--ds-space-2)}
.empty-state[aria-live]{min-height:88px}

/* Estados, progreso y contenido potencialmente largo */
[aria-busy="true"]{cursor:progress}
.ds-progress,[role="progressbar"]{overflow:hidden}
.ds-progress>i,[role="progressbar"]>i{display:block;max-width:100%;transition:width .2s ease}
.ds-page-header [role="progressbar"]{min-height:8px;border-radius:999px;background:#dce7e9}
.ds-page-header [role="progressbar"]>i{min-height:8px;background:var(--ds-primary)}
.future-campus-page .ds-page-header .course-real-progress small{color:var(--ds-text-muted);opacity:1}
:where(.ds-card,.future-course-card,.future-module-card,.future-rail-card,.activity-main-card,.activity-status-card,.assessment-card,.certificate-student-list article,.agenda-event,.user-directory-row,.invite-table-row)>*{min-width:0}
:where(h1,h2,h3,p,b,strong,small,span,a,dd,.person-cell,.communication-admin-copy,.resource-main){overflow-wrap:anywhere}
.ds-clamp-2{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.long-value{word-break:break-word;overflow-wrap:anywhere}
.feedback-focus:focus{outline:3px solid rgba(39,119,138,.28);outline-offset:3px}

/* Migración académica incremental de 2D */
.future-campus-page :where(.activity-hero,.exam-hero,.academic-course-hero).ds-page-header{margin-bottom:var(--ds-space-5)}
.future-campus-page .activity-hero.ds-page-header aside{border-color:var(--ds-border);background:var(--ds-surface-subtle);color:var(--ds-text)}
.future-campus-page .activity-hero.ds-page-header aside span{color:var(--ds-info)}
.future-campus-page .activity-hero.ds-page-header aside small{color:var(--ds-text-muted);opacity:1}
.future-campus-page .exam-hero.ds-page-header .exam-hero-facts span{border:1px solid var(--ds-border);background:var(--ds-surface-subtle);color:var(--ds-text)}
.future-campus-page :where(.activity-main-card,.activity-status-card,.exam-paper,.exam-start-card,.exam-history,.assessment-card,.assessment-create-card,.certificate-student-list,.attendance-register,.attendance-lessons,.student-attendance-list,.agenda-event,.catalog-course-form,.catalog-create-card,.import-card,.library-section).ds-card{border-color:var(--ds-border);box-shadow:var(--ds-shadow-sm)}
.future-campus-page :where(.security-alert.success,.security-alert.warning,.notice.success,.notice.warning)[role="status"]{border-left-width:4px}
.agenda-event{grid-template-columns:auto 80px minmax(0,1fr) auto}

/* FilterBar, DataTable/ResponsiveList y diálogo */
.filter-bar,.user-search-console{gap:var(--ds-space-3);padding:var(--ds-space-4);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);background:var(--ds-surface);box-shadow:none}
.data-region,.responsive-data-scroll,.invite-table-wrap,.audit-table-wrap{background:var(--ds-surface)}
.data-region:focus-visible,.responsive-data-scroll:focus-visible,.invite-table-wrap:focus-visible,.audit-table-wrap:focus-visible{outline:3px solid rgba(39,119,138,.24);outline-offset:-3px}
.confirm-dialog-card{border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow-md)}
.pagination{display:flex;align-items:center;justify-content:center;gap:var(--ds-space-3);padding:var(--ds-space-4);border-top:1px solid var(--ds-border)}
.pagination .secondary{min-width:112px}.pagination .disabled{cursor:not-allowed;opacity:.5}.pagination-status{color:var(--ds-text-muted);font-size:var(--ds-font-small);font-weight:750;text-align:center}
.audit-search{display:grid;grid-template-columns:minmax(180px,1.2fr) minmax(180px,1fr) repeat(2,minmax(140px,.65fr)) auto auto;gap:var(--ds-space-3);align-items:end;padding:var(--ds-space-4);border-top:1px solid var(--ds-border)}
.audit-search label{margin:0}

/* Migración incremental de las superficies de mayor uso */
.future-campus-page :where(.future-focus-card,.future-course-card,.future-info-card,.future-rail-card,.teacher-card,.global-block,.academic-course-directory,.academic-create-card,.communications-directory,.communication-create-card,.user-access-card,.user-security-card,.user-audit-card,.invite-list-card,.invite-create-card,.audit-console){border-color:var(--ds-border);border-radius:var(--ds-radius-md);box-shadow:var(--ds-shadow-sm)}
.future-campus-page :where(.future-section-head h2,.global-section-head h2,.invite-section-head h2,.communications-directory h2,.academic-course-directory h2){font-size:var(--ds-font-section);line-height:1.2}
.future-campus-page :where(.future-course-card h3,.future-info-card h3,.future-rail-card h3,.teacher-card h3,.global-tools b,.academic-course-row h3,.communication-admin-row h3){font-size:var(--ds-font-card);line-height:1.25}
.future-campus-page :where(.global-command-kpis small,.global-system-strip small,.global-tools small,.global-alert-list span,.global-audit-list small,.global-people-list small,.communication-state,.communication-admin-copy>small,.communication-admin-copy>span,.communication-read-metrics span,.invite-state,.invite-table-row small,.role-badges span){font-size:var(--ds-font-caption)}
.future-campus-page :where(.global-tools small,.global-alert-list span,.global-audit-list small,.global-people-list small,.communication-admin-copy p,.academic-course-row p){line-height:1.45}

@media(max-width:860px){
  .future-campus-page .ds-page-header{align-items:flex-start;flex-direction:column;padding:var(--ds-space-4)}
  .ds-page-actions{width:100%}.ds-page-actions>*{flex:1 1 auto}
  .ds-page-context{justify-items:start}
  .btn,.primary,.secondary,.ghost,.danger,.ghost-link{min-height:44px}
  :where(input:not([type="checkbox"]):not([type="radio"]),select,textarea){min-height:44px;font-size:16px}
  .pagination{flex-wrap:wrap}.pagination-status{order:-1;width:100%}.audit-search{grid-template-columns:1fr 1fr}.audit-search>*{min-width:0}
}

@media(max-width:520px){.audit-search{grid-template-columns:1fr}.pagination .secondary{flex:1 1 0;min-width:0}}

@media(prefers-reduced-motion:reduce){.btn,.primary,.secondary,.ghost,.danger,.ghost-link{transition:none}}
