/* StudentsOrbit v4.0.2 LTS Build 2
   Final design-system compatibility layer. Load after all module styles. */

:root{
  --so-surface:var(--soa-glass,rgba(255,255,255,.24));
  --so-surface-strong:var(--soa-glass-strong,rgba(255,255,255,.34));
  --so-surface-soft:var(--soa-glass-soft,rgba(255,255,255,.14));
  --so-surface-hover:var(--soa-glass-hover,rgba(255,255,255,.42));
  --so-text:var(--soa-text,#17243a);
  --so-heading:var(--soa-heading,#111827);
  --so-muted:var(--soa-text-muted,#5f6f83);
  --so-border:var(--soa-border,rgba(255,255,255,.46));
  --so-border-strong:var(--soa-border-strong,rgba(255,255,255,.66));
  --so-input:var(--soa-input,rgba(255,255,255,.70));
  --so-radius:var(--soa-radius-md,14px);
  --so-shadow:var(--soa-shadow-sm,0 7px 20px rgba(17,35,60,.08));
}

/* Reusable LTS components */
.so-card,.so-panel,.so-surface,.so-table-wrap,.so-form-card,.so-modal{
  color:var(--so-text)!important;background:var(--so-surface)!important;
  border:1px solid var(--so-border)!important;border-radius:var(--so-radius)!important;
  box-shadow:var(--so-shadow)!important;backdrop-filter:var(--soa-backdrop,blur(14px))!important;
}
.so-card,.so-panel,.so-form-card{padding:16px}
.so-muted{color:var(--so-muted)!important}.so-heading{color:var(--so-heading)!important}
.so-divider{border-color:var(--soa-divider)!important}

@media screen{
  /* Bootstrap and legacy surface utilities */
  html[data-theme="dark"] body:has(.soa-layout),
  html[data-theme="dark"] .soa-layout,
  html[data-theme="dark"] .soa-workspace,
  html[data-theme="dark"] .soa-page,
  html[data-theme="dark"] .soa-page-body{color:var(--so-text)!important}

  html[data-theme="dark"] .soa-page-body :is(
    .card,.panel,.box,.content-box,.white-box,.widget,.tile,.well,.jumbotron,
    .page-head,.page-header,.section-card,.content-card,.info-card,.form-card,
    .table-card,.list-card,.summary-card,.metric-card,.stat-card,.stats-card,
    .dashboard-card,.document-card,.settings-card,.branding-asset-card,
    .student-card,.staff-card,.exam-card,.fee-card,.attendance-card,
    .modal-content,.dropdown-menu,.popover,.offcanvas,.accordion-item,
    .nav-tabs,.tab-content,.list-group-item,.toast,.pagination,
    .bg-white,.bg-light,.table-light
  ){
    background:var(--so-surface)!important;color:var(--so-text)!important;
    border-color:var(--so-border)!important;
  }

  html[data-theme="dark"] .soa-page-body :is(
    .card-header,.card-footer,.modal-header,.modal-footer,.accordion-header,
    .dropdown-header,.table-header,.panel-header,.box-header
  ){
    background:var(--so-surface-soft)!important;color:var(--so-text)!important;
    border-color:var(--so-border)!important;
  }

  html[data-theme="dark"] .soa-page-body :is(.text-dark,.text-black,.text-body){color:var(--so-text)!important}
  html[data-theme="dark"] .soa-page-body :is(.text-muted,.small,.form-text,.help-text){color:var(--so-muted)!important}
  html[data-theme="dark"] .soa-page-body :is(h1,h2,h3,h4,h5,h6,legend,strong,b,th){color:var(--so-heading)!important}

  /* Forms */
  html[data-theme="dark"] .soa-page-body :is(input,select,textarea,.form-control,.form-select,.input-group-text){
    background:var(--so-input)!important;color:var(--so-text)!important;
    border-color:var(--so-border-strong)!important;
  }
  html[data-theme="dark"] .soa-page-body :is(input,textarea)::placeholder{color:var(--soa-text-soft)!important;opacity:1}
  html[data-theme="dark"] .soa-page-body select option{background:#111a2b!important;color:#fff!important}
  html[data-theme="dark"] .soa-page-body input:-webkit-autofill{
    -webkit-text-fill-color:var(--so-text)!important;
    -webkit-box-shadow:0 0 0 1000px #111a2b inset!important;
  }

  /* Tables */
  html[data-theme="dark"] .soa-page-body :is(table,.table){
    --bs-table-bg:transparent;--bs-table-color:var(--so-text);
    --bs-table-border-color:var(--so-border);
    background:var(--so-surface-soft)!important;color:var(--so-text)!important;
    border-color:var(--so-border)!important;
  }
  html[data-theme="dark"] .soa-page-body :is(thead,thead tr,thead th,.table thead th){
    background:var(--soa-table-head)!important;color:var(--so-heading)!important;
    border-color:var(--so-border)!important;
  }
  html[data-theme="dark"] .soa-page-body :is(tbody tr,tbody td,.table td){
    background:transparent!important;color:var(--so-text)!important;border-color:var(--so-border)!important;
  }
  html[data-theme="dark"] .soa-page-body :is(tbody tr:nth-child(even),.table-striped>tbody>tr:nth-of-type(odd)>*){
    background:rgba(255,255,255,.025)!important;
  }
  html[data-theme="dark"] .soa-page-body tbody tr:hover{background:var(--so-surface-hover)!important}

  /* Navigation, tabs and dropdowns */
  html[data-theme="dark"] .soa-page-body :is(.nav-link,.dropdown-item,.list-group-item,.page-link){color:var(--so-text)!important}
  html[data-theme="dark"] .soa-page-body :is(.nav-link:hover,.dropdown-item:hover,.list-group-item:hover,.page-link:hover){
    background:var(--so-surface-hover)!important;color:var(--so-heading)!important;
  }
  html[data-theme="dark"] .soa-page-body :is(.nav-link.active,.dropdown-item.active,.list-group-item.active,.page-item.active .page-link){
    background:var(--soa-primary)!important;color:#fff!important;border-color:var(--soa-primary)!important;
  }

  /* Custom containers found across current modules */
  html[data-theme="dark"] .soa-page-body :is(
    .staff-subject-card,.aa-copy-target,.allocation-card,.assignment-card,
    .salary-card,.payroll-card,.leave-card,.employee-card,.student-finder,
    .student-browser,.student-hero,.fee-summary article,.number-card,
    .room-card,.hall-card,.seat-card,.exam-summary,.marks-grid-wrap,
    .filter-bar,.filters,.toolbar,.search-panel,.action-panel
  ){
    background:var(--so-surface)!important;color:var(--so-text)!important;
    border-color:var(--so-border)!important;
  }

  /* Keep semantic feedback readable without bright white boxes */
  html[data-theme="dark"] .soa-page-body :is(.alert,.notice,.flash,.error,.success,.warning,.info){
    color:var(--so-text)!important;border-color:var(--so-border-strong)!important;
    background:var(--so-surface-strong)!important;
  }
  html[data-theme="dark"] .soa-page-body :is(.alert-danger,.error){border-left-color:var(--soa-danger)!important}
  html[data-theme="dark"] .soa-page-body :is(.alert-success,.success){border-left-color:var(--soa-success)!important}
  html[data-theme="dark"] .soa-page-body :is(.alert-warning,.warning){border-left-color:var(--soa-warning)!important}
  html[data-theme="dark"] .soa-page-body :is(.alert-info,.info){border-left-color:var(--soa-info)!important}

  /* Avoid bright horizontal areas introduced by inline module styles. */
  html[data-theme="dark"] .soa-page-body [style*="background: #fff"],
  html[data-theme="dark"] .soa-page-body [style*="background:#fff"],
  html[data-theme="dark"] .soa-page-body [style*="background: white"],
  html[data-theme="dark"] .soa-page-body [style*="background:white"],
  html[data-theme="dark"] .soa-page-body [style*="background-color: #fff"],
  html[data-theme="dark"] .soa-page-body [style*="background-color:#fff"]{
    background:var(--so-surface)!important;color:var(--so-text)!important;border-color:var(--so-border)!important;
  }

  /* Scrollbars */
  html[data-theme="dark"]{scrollbar-color:rgba(255,255,255,.28) rgba(0,0,0,.12)}
  html[data-theme="dark"] ::-webkit-scrollbar{width:11px;height:11px}
  html[data-theme="dark"] ::-webkit-scrollbar-track{background:rgba(0,0,0,.12)}
  html[data-theme="dark"] ::-webkit-scrollbar-thumb{background:rgba(255,255,255,.25);border-radius:999px;border:3px solid transparent;background-clip:padding-box}
}

/* Print views must remain paper-white. */
@media print{
  html,body{color-scheme:light!important;background:#fff!important;color:#000!important}
  .soa-page-body,.soa-page-body *{text-shadow:none!important;box-shadow:none!important}
}

/* Build 2.1: exact dark-mode compatibility for page-specific components. */
@media screen {
  html[data-theme="dark"] .soa-page-body :is(
    .adm-stat,.hr-stat,.ast-stat,.ast-module,.ast-hero,
    .tt-card,.tt-hero,.tt-stat,.tt-module,.tt-day,.tt-year-summary,
    .aa-hero,.aa-card,.aa-section,.te-summary-grid article,
    .classes-stats-grid .stat-card,.departments-stats-grid .stat-card,
    .sections-stats-grid .stat-card,.subjects-stats-grid .stat-card,
    .staff-stats-grid .stat-card,.student-stat,.student-summary-card,
    .fee-stat,.attendance-stat,.exam-stat,.payroll-stat,.admin3-stat
  ) {
    background:rgba(13,29,52,.86)!important;
    color:#f4f8ff!important;
    border-color:rgba(148,180,220,.30)!important;
    box-shadow:0 12px 30px rgba(0,0,0,.18)!important;
  }

  html[data-theme="dark"] .soa-page-body :is(
    .adm-stat,.hr-stat,.ast-stat,.ast-module,.ast-hero,
    .tt-card,.tt-hero,.tt-stat,.tt-module,.aa-hero,.aa-card,
    .te-summary-grid article
  ) :is(span,small,p,label) {
    color:#bdcbe0!important;
  }

  html[data-theme="dark"] .soa-page-body :is(
    .adm-stat,.hr-stat,.ast-stat,.ast-module,.ast-hero,
    .tt-card,.tt-hero,.tt-stat,.tt-module,.aa-hero,.aa-card,
    .te-summary-grid article
  ) :is(strong,h1,h2,h3,h4,b) {
    color:#f7fbff!important;
  }

  /* Pale pills seen in Classes and HR tables. */
  html[data-theme="dark"] .soa-page-body :is(
    .missing-subjects,.hr-no-subject,.subject-count-badge,.year-badge,
    .aa-badge,.te-validation-mini,.te-source,.tt-date-readonly
  ) {
    background:rgba(77,112,160,.24)!important;
    color:#dce9fb!important;
    border:1px solid rgba(148,180,220,.32)!important;
  }

  /* Academic Staff foundation tiles and heading panel. */
  html[data-theme="dark"] .soa-page-body .ast-panel,
  html[data-theme="dark"] .soa-page-body .ast-panel-head,
  html[data-theme="dark"] .soa-page-body .ast-next {
    background:rgba(9,24,44,.86)!important;
    color:#f4f8ff!important;
    border-color:rgba(148,180,220,.28)!important;
  }
  html[data-theme="dark"] .soa-page-body .ast-module:hover {
    background:rgba(40,76,125,.62)!important;
  }

  /* Admissions and HR cards had hard-coded rgba(255,255,255,.9). */
  html[data-theme="dark"] .soa-page-body .adm-panel,
  html[data-theme="dark"] .soa-page-body .admin3-card {
    background:rgba(9,24,44,.84)!important;
    color:#f4f8ff!important;
    border-color:rgba(148,180,220,.28)!important;
  }

  /* Form controls/buttons that were explicitly white in module CSS. */
  html[data-theme="dark"] .soa-page-body :is(
    .btn.light,.tt-btn:not(.primary),.aa-btn:not(.primary),
    .subject-check-card,.class-subject-picker
  ) {
    background:rgba(19,40,69,.94)!important;
    color:#e8f1ff!important;
    border-color:rgba(148,180,220,.34)!important;
  }
  html[data-theme="dark"] .soa-page-body .subject-check-card:hover {
    background:rgba(37,71,115,.86)!important;
  }

  /* Timetable foundation CSS defines global white input/table rules. */
  html[data-theme="dark"] .soa-page-body :is(
    .tt-container input,.tt-container select,.tt-container textarea,
    .ast-year select,.aa-year select,.aa-form select,.aa-form input,.aa-toolbar select
  ) {
    background:#10233d!important;
    color:#f4f8ff!important;
    border-color:rgba(148,180,220,.36)!important;
  }
}
