/*
 * Modern SaaS UI layer for the legacy CodeIgniter school system.
 * This file intentionally overrides visual classes only. It does not
 * change backend names, form fields, routes, or JavaScript contracts.
 */

:root {
  --saas-bg: #f6f7fb;
  --saas-surface: #ffffff;
  --saas-surface-soft: #f8fafc;
  --saas-glass: rgba(255, 255, 255, 0.86);
  --saas-border: #e5e9f2;
  --saas-border-strong: #d5dbe8;
  --saas-text: #17202a;
  --saas-muted: #667085;
  --saas-muted-2: #98a2b3;
  --saas-primary: #2563eb;
  --saas-primary-dark: #1d4ed8;
  --saas-primary-soft: #eff6ff;
  --saas-success: #16a34a;
  --saas-success-soft: #ecfdf3;
  --saas-warning: #d97706;
  --saas-warning-soft: #fffbeb;
  --saas-danger: #dc2626;
  --saas-danger-soft: #fef2f2;
  --saas-info: #0891b2;
  --saas-info-soft: #ecfeff;
  --saas-sidebar: #ffffff;
  --saas-sidebar-width: 280px;
  --saas-topbar-height: 64px;
  --saas-radius-sm: 8px;
  --saas-radius: 12px;
  --saas-radius-lg: 16px;
  --saas-shadow-sm: 0 1px 2px rgba(16, 24, 40, 0.06);
  --saas-shadow: 0 10px 30px rgba(16, 24, 40, 0.08);
  --saas-shadow-lg: 0 24px 60px rgba(16, 24, 40, 0.14);
  --saas-ring: 0 0 0 4px rgba(37, 99, 235, 0.14);
  --saas-transition: 160ms ease;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  min-height: 100%;
}

body {
  color: var(--saas-text);
  background:
    radial-gradient(circle at top left, rgba(37, 99, 235, 0.08), transparent 26rem),
    linear-gradient(180deg, #ffffff 0, var(--saas-bg) 22rem);
  font-family: "Inter", "Segoe UI", Arial, sans-serif;
  font-size: 14px;
  line-height: 1.5;
  letter-spacing: 0;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

body,
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: "Inter", "Segoe UI", Arial, sans-serif;
}

a {
  color: var(--saas-primary);
  transition: color var(--saas-transition), background-color var(--saas-transition), border-color var(--saas-transition), box-shadow var(--saas-transition), transform var(--saas-transition);
}

a:hover,
a:focus {
  color: var(--saas-primary-dark);
  text-decoration: none;
}

img {
  object-fit: cover;
}

::selection {
  color: #ffffff;
  background: var(--saas-primary);
}

:focus-visible {
  outline: none;
  box-shadow: var(--saas-ring);
}

.text-red {
  color: var(--saas-danger) !important;
}

.text-black {
  color: var(--saas-text) !important;
}

.text-white {
  color: #ffffff !important;
}

.color-green {
  color: var(--saas-success) !important;
}

.se-pre-con {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: grid;
  place-items: center;
  background: rgba(246, 247, 251, 0.88);
  backdrop-filter: blur(8px);
}

.se-pre-con::after {
  width: 42px;
  height: 42px;
  content: "";
  border: 3px solid rgba(37, 99, 235, 0.16);
  border-top-color: var(--saas-primary);
  border-radius: 999px;
  animation: saas-spin 0.8s linear infinite;
}

@keyframes saas-spin {
  to {
    transform: rotate(360deg);
  }
}

/* App Shell */

body > .header {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: 1030;
  height: var(--saas-topbar-height);
  max-height: none;
  background: var(--saas-glass);
  border-bottom: 1px solid rgba(229, 233, 242, 0.88);
  box-shadow: none;
  backdrop-filter: saturate(180%) blur(16px);
}

body > .header .logo {
  display: flex;
  align-items: center;
  gap: 10px;
  width: var(--saas-sidebar-width);
  height: var(--saas-topbar-height);
  padding: 0 22px;
  overflow: hidden;
  color: var(--saas-text) !important;
  font-size: 15px;
  font-weight: 800;
  line-height: 1;
  text-align: left;
  background: #ffffff;
  border-right: 1px solid var(--saas-border);
}

body > .header .logo:hover,
.skin-blue .logo:hover {
  color: var(--saas-primary) !important;
  background: #ffffff;
}

.logo-mark {
  display: inline-flex;
  flex: 0 0 36px;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  color: #ffffff;
  background: linear-gradient(135deg, var(--saas-primary), #14b8a6);
  border-radius: 10px;
  box-shadow: 0 10px 24px rgba(37, 99, 235, 0.24);
}

.logo-text {
  min-width: 0;
  overflow: hidden;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body > .header .navbar {
  height: var(--saas-topbar-height);
  min-height: var(--saas-topbar-height);
  margin-bottom: 0;
  margin-left: var(--saas-sidebar-width);
  background: transparent;
  border: 0;
}

.skin-blue .navbar {
  background: transparent;
}

.skin-blue .navbar .nav a,
.skin-blue .navbar .nav > li > a {
  color: var(--saas-muted);
}

.skin-blue .navbar .nav > li > a:hover,
.skin-blue .navbar .nav > li > a:active,
.skin-blue .navbar .nav > li > a:focus,
.skin-blue .navbar .nav .open > a,
.skin-blue .navbar .nav .open > a:hover,
.skin-blue .navbar .nav .open > a:focus {
  color: var(--saas-text);
  background: var(--saas-surface-soft);
}

body > .header .navbar .sidebar-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  padding: 0;
  margin: 0 0 0 16px;   /* top=0 — flex parent centers it */
  border: 1px solid var(--saas-border);
  border-radius: var(--saas-radius-sm) !important;
  background: #ffffff;
  box-shadow: var(--saas-shadow-sm);
}

body > .header .navbar .sidebar-toggle:hover,
body > .header .navbar .sidebar-toggle:focus {
  border-color: var(--saas-border-strong);
  background: var(--saas-primary-soft);
  box-shadow: var(--saas-ring);
}

body > .header .navbar .sidebar-toggle .icon-bar,
.skin-blue .navbar .sidebar-toggle .icon-bar {
  width: 18px;
  height: 2px;
  background: var(--saas-text);
  border-radius: 99px;
}

body > .header .navbar .sidebar-toggle:hover .icon-bar,
.skin-blue .navbar .sidebar-toggle:hover .icon-bar {
  background: var(--saas-primary);
}

.navbar-right {
  padding-right: 18px;
}

.navbar-nav > li > a {
  height: var(--saas-topbar-height);
  padding: 0 14px;
  line-height: var(--saas-topbar-height);
}

body > .header .navbar .nav > li.user > a {
  display: flex;
  align-items: center;
  gap: 9px;
  height: var(--saas-topbar-height);
  padding: 0 14px;
  font-weight: 700;
}

.user-logo,
.language-img {
  width: 34px !important;
  height: 34px !important;
  border: 2px solid #ffffff;
  border-radius: 999px;
  box-shadow: 0 0 0 1px var(--saas-border), var(--saas-shadow-sm);
}

body > .header .navbar .nav > li > a > .label {
  top: 13px;
  right: 8px;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  color: #ffffff;
  font-size: 10px;
  font-weight: 800;
  line-height: 18px;
  background: var(--saas-danger);
  border: 2px solid #ffffff;
  border-radius: 999px;
}

body > .header .navbar .nav > li > a:hover > .label {
  top: 13px;
}

.dropdown-menu {
  padding: 8px;
  border: 1px solid var(--saas-border);
  border-radius: var(--saas-radius);
  box-shadow: var(--saas-shadow-lg);
}

.dropdown-menu > li > a {
  padding: 9px 12px;
  color: var(--saas-text);
  border-radius: var(--saas-radius-sm);
}

.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  color: var(--saas-primary-dark);
  background: var(--saas-primary-soft);
}

.navbar-nav > .notifications-menu > .dropdown-menu,
.navbar-nav > .messages-menu > .dropdown-menu,
.navbar-nav > .tasks-menu > .dropdown-menu,
.navbar-nav > .user-menu > .dropdown-menu {
  width: 320px;
  margin-top: 8px;
}

.navbar-nav > .notifications-menu > .dropdown-menu > li.header,
.navbar-nav > .messages-menu > .dropdown-menu > li.header,
.navbar-nav > .tasks-menu > .dropdown-menu > li.header {
  padding: 12px 14px;
  color: var(--saas-text);
  font-weight: 800;
  background: transparent;
  border-bottom: 1px solid var(--saas-border);
}

.navbar-nav > .notifications-menu > .dropdown-menu > li .menu,
.navbar-nav > .messages-menu > .dropdown-menu > li .menu,
.navbar-nav > .tasks-menu > .dropdown-menu > li .menu {
  margin: 6px 0;
}

.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a,
.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a,
.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a {
  margin: 2px 0;
  border-bottom: 0;
  border-radius: var(--saas-radius-sm);
}

.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,
.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,
.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a {
  color: var(--saas-primary);
  font-weight: 700;
  background: var(--saas-primary-soft);
  border-radius: var(--saas-radius-sm);
}

.navbar-nav > .user-menu > .dropdown-menu > li.user-body,
.navbar-nav > .user-menu > .dropdown-menu > li.user-footer {
  background: transparent;
  border: 0;
}

.navbar-nav > .user-menu > .dropdown-menu > li.user-body > div > a,
.navbar-nav > .user-menu > .dropdown-menu > li.user-footer > div.text-center > a {
  display: block;
  padding: 12px 8px;
  color: var(--saas-muted);
  font-weight: 700;
  border-radius: var(--saas-radius-sm);
}

.navbar-nav > .user-menu > .dropdown-menu > li.user-body > div > a:hover,
.navbar-nav > .user-menu > .dropdown-menu > li.user-footer > div.text-center > a:hover {
  color: var(--saas-primary);
  background: var(--saas-primary-soft);
}

.wrapper {
  min-height: 100vh;
  padding-top: var(--saas-topbar-height);
}

.left-side {
  position: fixed;
  top: var(--saas-topbar-height);
  bottom: 0;
  left: 0;
  z-index: 1020;
  width: var(--saas-sidebar-width);
  min-height: 0 !important;
  overflow: hidden;
  background: var(--saas-sidebar);
  border-right: 1px solid var(--saas-border);
  box-shadow: 8px 0 30px rgba(16, 24, 40, 0.04);
  transition: transform var(--saas-transition), left var(--saas-transition);
}

.skin-blue .left-side {
  background: var(--saas-sidebar);
}

.left-side.collapse-left {
  left: 0;
  transform: translateX(calc(var(--saas-sidebar-width) * -1));
}

.right-side {
  min-height: calc(100vh - var(--saas-topbar-height));
  margin-left: var(--saas-sidebar-width);
  background: transparent;
  transition: margin-left var(--saas-transition);
}

.right-side.strech {
  margin-left: 0;
}

.content {
  width: 100%;
  max-width: 1480px;
  min-height: calc(100vh - var(--saas-topbar-height) - 78px);
  padding: 28px;
  margin: 0 auto;
  overflow: visible;
  background: transparent;
}

.main-footer {
  min-height: 54px;
  padding: 16px 28px;
  margin-left: var(--saas-sidebar-width);
  color: var(--saas-muted);
  background: transparent;
  border: 0;
  transition: margin-left var(--saas-transition);
}

.right-side.strech + .main-footer {
  margin-left: 0;
}

/* Sidebar */

.sidebar {
  height: 100%;
  padding: 18px 14px 24px;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: #cbd5e1 transparent;
}

.sidebar::-webkit-scrollbar {
  width: 8px;
}

.sidebar::-webkit-scrollbar-thumb {
  background: #cbd5e1;
  border-radius: 99px;
}

.user-panel {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: auto;
  padding: 14px;
  margin-bottom: 14px;
  background: var(--saas-surface-soft);
  border: 1px solid var(--saas-border);
  border-radius: var(--saas-radius);
}

.user-panel > .image,
.user-panel > .info {
  float: none !important;
}

.user-panel > .image > img,
.skin-blue .user-panel > .image > img {
  width: 44px !important;
  height: 44px !important;
  border: 2px solid #ffffff;
  border-radius: 999px;
  box-shadow: 0 0 0 1px var(--saas-border), var(--saas-shadow-sm);
}

.user-panel > .info {
  position: static;
  min-width: 0;
  padding: 0;
  color: var(--saas-text);
}

.user-panel > .info > p {
  margin: 0 0 2px;
  overflow: hidden;
  color: var(--saas-text);
  font-size: 14px;
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.user-panel > .info > a,
.skin-blue .user-panel > .info > a {
  color: var(--saas-muted);
  font-size: 12px;
  font-weight: 700;
}

.sidebar .sidebar-menu {
  display: grid;
  gap: 4px;
  margin: 0;
}

.sidebar .sidebar-menu > li {
  margin: 0;
  border: 0;
}

.sidebar .sidebar-menu > li > a,
.skin-blue .sidebar > .sidebar-menu > li > a {
  display: flex;
  align-items: center;
  min-height: 42px;
  padding: 11px 12px;
  color: var(--saas-muted);
  font-size: 13px;
  font-weight: 750;
  border: 1px solid transparent;
  border-radius: var(--saas-radius-sm);
}

.sidebar .sidebar-menu > li > a > .fa,
.sidebar .sidebar-menu > li > a > .glyphicon,
.sidebar .sidebar-menu > li > a > .ion {
  width: 22px;
  margin-right: 10px;
  color: var(--saas-muted-2);
  font-size: 15px;
  text-align: center;
}

.sidebar .sidebar-menu > li > a:hover,
.sidebar .sidebar-menu > li.active > a,
.skin-blue .sidebar > .sidebar-menu > li > a:hover,
.skin-blue .sidebar > .sidebar-menu > li.active > a {
  color: var(--saas-primary-dark);
  background: var(--saas-primary-soft);
  border-color: rgba(37, 99, 235, 0.12);
}

.sidebar .sidebar-menu > li > a:hover > .fa,
.sidebar .sidebar-menu > li.active > a > .fa,
.sidebar .sidebar-menu > li > a:hover > .glyphicon,
.sidebar .sidebar-menu > li.active > a > .glyphicon,
.sidebar .sidebar-menu > li > a:hover > .ion,
.sidebar .sidebar-menu > li.active > a > .ion {
  color: var(--saas-primary);
}

.sidebar .sidebar-menu .treeview-menu,
.skin-blue .sidebar > .sidebar-menu > li > .treeview-menu {
  padding: 5px 0 6px 34px;
  margin: 4px 0;
  background: transparent;
  border-left: 1px solid var(--saas-border);
}

.sidebar .sidebar-menu .treeview-menu > li > a,
.skin-blue .treeview-menu > li > a {
  display: block;
  padding: 8px 10px;
  color: var(--saas-muted);
  font-size: 12px;
  font-weight: 700;
  border-radius: var(--saas-radius-sm);
}

.sidebar .sidebar-menu .treeview-menu > li > a:hover,
.sidebar .sidebar-menu .treeview-menu > li.active > a,
.skin-blue .treeview-menu > li.active > a,
.skin-blue .treeview-menu > li > a:hover {
  color: var(--saas-primary-dark);
  background: var(--saas-primary-soft);
}

/* Surfaces */

.box,
.panel,
.nav-tabs-custom {
  overflow: hidden;
  background: rgba(255, 255, 255, 0.96);
  border: 1px solid var(--saas-border);
  border-radius: var(--saas-radius);
  box-shadow: var(--saas-shadow);
}

.box {
  margin-bottom: 24px;
}

.box .box-header {
  min-height: 64px;
  padding: 18px 22px;
  background: #ffffff !important;
  border-bottom: 1px solid var(--saas-border);
  border-radius: var(--saas-radius) var(--saas-radius) 0 0;
}

.box .box-header > .fa,
.box .box-header > .glyphicon,
.box .box-header > .ion,
.box .box-header .box-title {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 0;
  margin: 0;
  color: var(--saas-text) !important;
  font-size: 16px;
  font-weight: 800;
  line-height: 1.3;
}

.box .box-header .box-title .fa,
.box .box-header .box-title [class^="icon-"],
.box .box-header .box-title [class*=" icon-"] {
  color: var(--saas-primary);
}

.box .box-header a {
  color: var(--saas-primary);
}

.box > .box-header > .breadcrumb,
.breadcrumb {
  float: right;
  padding: 0;
  margin: 2px 0 0;
  color: var(--saas-muted);
  font-size: 12px;
  font-weight: 700;
  background: transparent;
  border: 0;
}

.breadcrumb > li > a,
.box > .box-header > .breadcrumb > li > a {
  color: var(--saas-muted);
}

.breadcrumb > li.active,
.box > .box-header > .breadcrumb > li.active {
  color: var(--saas-text);
}

.breadcrumb > li + li::before {
  color: var(--saas-muted-2);
  content: "/";
}

.box .box-body {
  padding: 22px;
  color: var(--saas-text);
  background: #ffffff;
}

.box .box-footer {
  padding: 16px 22px;
  background: var(--saas-surface-soft);
  border-top: 1px solid var(--saas-border);
}

.page-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  padding: 0 0 18px;
  margin: 0 0 20px;
  border-bottom: 1px solid var(--saas-border);
}

.page-header .pull-right {
  margin-left: auto;
}

.callout,
.alert {
  border: 1px solid var(--saas-border);
  border-radius: var(--saas-radius);
  box-shadow: var(--saas-shadow-sm);
}

.alert {
  padding: 14px 16px;
}

.alert-danger,
.callout.callout-danger {
  color: #991b1b;
  background: var(--saas-danger-soft);
  border-color: #fecaca;
}

.alert-success {
  color: #166534;
  background: var(--saas-success-soft);
  border-color: #bbf7d0;
}

.alert-info,
.callout.callout-info {
  color: #155e75;
  background: var(--saas-info-soft);
  border-color: #a5f3fc;
}

.alert-warning,
.callout.callout-warning {
  color: #92400e;
  background: var(--saas-warning-soft);
  border-color: #fed7aa;
}

/* Dashboard cards */

.small-box {
  min-height: 138px;
  margin-bottom: 24px;
  overflow: hidden;
  background: #ffffff;
  border: 1px solid var(--saas-border);
  border-radius: var(--saas-radius);
  box-shadow: var(--saas-shadow);
}

.small-box > .small-box-footer {
  display: flex;
  align-items: center;
  min-height: 138px;
  padding: 22px;
  color: var(--saas-text);
  background: #ffffff !important;
}

.small-box > .small-box-footer:hover {
  background: var(--saas-surface-soft) !important;
  box-shadow: inset 0 0 0 1px rgba(37, 99, 235, 0.16);
  transform: translateY(-2px);
}

.small-box > .inner,
.small-box .inner {
  padding: 0 72px 0 0;
  text-align: left;
}

.small-box h3 {
  margin: 0 0 4px;
  color: var(--saas-text) !important;
  font-size: 34px;
  font-weight: 850;
  letter-spacing: 0;
}

.small-box p {
  margin: 0;
  color: var(--saas-muted) !important;
  font-size: 13px;
  font-weight: 750;
  text-transform: none;
}

.small-box .icon {
  top: 22px;
  right: 22px;
  bottom: auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  padding: 0 !important;
  color: #ffffff !important;
  font-size: 23px;
  border-radius: var(--saas-radius);
  opacity: 1;
}

.bg-orange-dark,
.bg-teal-light,
.bg-pink-light,
.bg-purple-light,
.bg-maroon-light,
.bg-aqua,
.bg-blue,
.bg-green,
.bg-yellow,
.bg-red,
.bg-purple,
.bg-orange {
  color: #ffffff !important;
}

.bg-orange-dark,
.bg-orange {
  background: linear-gradient(135deg, #f97316, #d97706) !important;
}

.bg-teal-light,
.bg-aqua {
  background: linear-gradient(135deg, #14b8a6, #0891b2) !important;
}

.bg-pink-light,
.bg-maroon-light,
.bg-red {
  background: linear-gradient(135deg, #f43f5e, #db2777) !important;
}

.bg-purple-light,
.bg-purple,
.bg-blue {
  background: linear-gradient(135deg, #2563eb, #7c3aed) !important;
}

.bg-green {
  background: linear-gradient(135deg, #22c55e, #16a34a) !important;
}

.bg-yellow {
  background: linear-gradient(135deg, #f59e0b, #eab308) !important;
}

/* Forms */

label {
  color: var(--saas-text);
  font-weight: 700;
}

.form-horizontal .control-label {
  padding-top: 10px;
  color: var(--saas-text);
  font-size: 13px;
  font-weight: 750;
  text-align: right;
}

.form-group {
  margin-bottom: 18px;
}

.form-control,
select.form-control,
textarea.form-control,
input[type="text"].form-control,
input[type="password"].form-control,
input[type="email"].form-control,
input[type="number"].form-control,
input[type="date"].form-control {
  height: 42px;
  color: var(--saas-text);
  background: #ffffff;
  border: 1px solid var(--saas-border-strong);
  border-radius: var(--saas-radius-sm);
  box-shadow: none;
  transition: border-color var(--saas-transition), box-shadow var(--saas-transition), background-color var(--saas-transition);
}

textarea.form-control {
  min-height: 112px;
  height: auto;
  resize: vertical;
}

.form-control:hover {
  border-color: #b8c2d6;
}

.form-control:focus {
  border-color: var(--saas-primary);
  box-shadow: var(--saas-ring);
}

.form-control[readonly],
.form-control[disabled],
fieldset[disabled] .form-control {
  color: var(--saas-muted);
  background: #f2f4f7;
  border-color: var(--saas-border);
  cursor: not-allowed;
}

.has-error .form-control,
.form-group.has-error .form-control {
  border-color: #fca5a5;
  box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.08);
}

.form-horizontal > .form-group > span,
.has-error .control-label,
.form-group.has-error label {
  color: var(--saas-danger);
}

.input-group-addon {
  color: var(--saas-muted);
  background: var(--saas-surface-soft);
  border-color: var(--saas-border-strong);
  border-radius: var(--saas-radius-sm);
}

.input-group-addon.btn {
  border-radius: var(--saas-radius-sm);
}

.input-group-addon.btn a {
  color: inherit;
  font-weight: 800;
}

.input-group .form-control:first-child {
  border-top-left-radius: var(--saas-radius-sm);
  border-bottom-left-radius: var(--saas-radius-sm);
}

.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn {
  border-top-right-radius: var(--saas-radius-sm);
  border-bottom-right-radius: var(--saas-radius-sm);
}

.checkbox label,
.radio label {
  color: var(--saas-muted);
  font-weight: 650;
}

input[type="checkbox"],
input[type="radio"] {
  accent-color: var(--saas-primary);
}

.select2-container .select2-choice,
.select2-container-multi .select2-choices {
  min-height: 42px;
  color: var(--saas-text);
  background: #ffffff;
  border: 1px solid var(--saas-border-strong);
  border-radius: var(--saas-radius-sm);
  box-shadow: none;
}

.select2-container .select2-choice {
  display: flex;
  align-items: center;
  padding-left: 12px;
}

.select2-container-active .select2-choice,
.select2-container-active .select2-choices {
  border-color: var(--saas-primary);
  box-shadow: var(--saas-ring);
}

.select2-drop,
.select2-dropdown {
  border-color: var(--saas-border);
  border-radius: var(--saas-radius);
  box-shadow: var(--saas-shadow-lg);
}

.select2-results .select2-highlighted {
  color: #ffffff;
  background: var(--saas-primary);
}

/* Buttons */

.btn,
.dt-button,
button,
input[type="submit"],
input[type="button"] {
  letter-spacing: 0;
  transition: color var(--saas-transition), background-color var(--saas-transition), border-color var(--saas-transition), box-shadow var(--saas-transition), transform var(--saas-transition);
}

.btn {
  border-radius: var(--saas-radius-sm);
  font-weight: 800;
  box-shadow: var(--saas-shadow-sm);
}

.btn:hover,
.btn:focus {
  transform: translateY(-1px);
}

.btn:active,
.btn.active {
  transform: translateY(0);
  box-shadow: none;
}

.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
  cursor: not-allowed;
  opacity: 0.56;
  transform: none;
}

.btn.btn-primary,
.btn-primary,
.dt-button {
  color: #ffffff !important;
  background: var(--saas-primary) !important;
  border-color: var(--saas-primary) !important;
}

.btn.btn-primary:hover,
.btn-primary:hover,
.dt-button:hover {
  background: var(--saas-primary-dark) !important;
  border-color: var(--saas-primary-dark) !important;
}

/* btn-success = primary blue (used system-wide for add/create/submit) */
.btn.btn-success,
.btn-success,
a.btn-success,
input.btn-success,
button.btn-success {
  color: #ffffff !important;
  background: var(--saas-primary) !important;
  border-color: var(--saas-primary) !important;
}

.btn.btn-success:hover,
.btn-success:hover {
  background: var(--saas-primary-dark) !important;
  border-color: var(--saas-primary-dark) !important;
}

.btn.btn-info,
.btn-info {
  color: #ffffff !important;
  background: var(--saas-info) !important;
  border-color: var(--saas-info) !important;
}

.btn.btn-warning,
.btn-warning {
  color: #ffffff !important;
  background: var(--saas-warning) !important;
  border-color: var(--saas-warning) !important;
}

.btn.btn-danger,
.btn-danger {
  color: #ffffff !important;
  background: var(--saas-danger) !important;
  border-color: var(--saas-danger) !important;
}

.btn.btn-default,
.btn-default {
  color: var(--saas-text) !important;
  background: #ffffff !important;
  border-color: var(--saas-border-strong) !important;
}

.btn-xs {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border-radius: 9px;
}

.btn-sm,
.btn-group-sm > .btn {
  min-height: 34px;
  padding: 7px 12px;
}

.btn-lg,
.btn-group-lg > .btn {
  min-height: 48px;
  padding: 12px 18px;
  border-radius: 12px;
}

.btn-block + .btn-block,
a + .btn-block,
.btn-block + a.btn-block {
  margin-top: 10px;
}

.btn-cs,
.btn-sm-cs {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 36px;
  padding: 8px 13px;
  color: #ffffff !important;
  font-weight: 800;
  background: var(--saas-primary);
  border-radius: var(--saas-radius-sm);
  box-shadow: var(--saas-shadow-sm);
}

.mrg {
  margin: 2px 3px;
}

/* Tables and DataTables */

.table {
  margin-bottom: 0;
  color: var(--saas-text);
  background: #ffffff;
}

.table-bordered {
  border: 1px solid var(--saas-border);
}

.table > thead > tr > th,
.table-bordered > thead > tr > th {
  padding: 13px 14px;
  color: var(--saas-muted);
  font-size: 12px;
  font-weight: 850;
  text-transform: uppercase;
  background: var(--saas-surface-soft);
  border-color: var(--saas-border);
}

.table > tbody > tr > td,
.table-bordered > tbody > tr > td {
  padding: 13px 14px;
  color: var(--saas-text);
  font-size: 13px;
  vertical-align: middle;
  border-color: var(--saas-border);
}

.table-striped > tbody > tr:nth-of-type(odd) {
  background: #fbfcfe;
}

.table-hover > tbody > tr:hover {
  background: var(--saas-primary-soft);
}

.table img,
.img-rounded,
.img-circle {
  border-radius: 999px;
}

#hide-table,
.table-responsive {
  overflow-x: auto;
  border-radius: var(--saas-radius);
}

.dataTables_wrapper {
  color: var(--saas-muted);
}

.dataTables_wrapper .dt-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 14px;
}

.dataTables_wrapper .dt-button {
  padding: 8px 12px;
  border-radius: var(--saas-radius-sm);
  box-shadow: var(--saas-shadow-sm);
}

.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select {
  min-height: 38px;
  margin-left: 8px;
  color: var(--saas-text);
  background: #ffffff;
  border: 1px solid var(--saas-border-strong);
  border-radius: var(--saas-radius-sm);
}

.pagination > li > a,
.pagination > li > span {
  margin: 0 3px;
  color: var(--saas-muted);
  border: 1px solid var(--saas-border);
  border-radius: 8px !important;
}

.pagination > li > a:hover,
.pagination > li > span:hover {
  color: var(--saas-primary);
  background: var(--saas-primary-soft);
  border-color: rgba(37, 99, 235, 0.25);
}

.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
  color: #ffffff;
  background: var(--saas-primary);
  border-color: var(--saas-primary);
}

/* Tabs */

.nav-tabs-custom {
  margin-bottom: 24px;
}

.nav-tabs-custom > .nav-tabs {
  display: flex;
  gap: 6px;
  padding: 10px 12px 0;
  overflow-x: auto;
  background: #ffffff;
  border-bottom: 1px solid var(--saas-border);
}

.nav-tabs-custom > .nav-tabs > li {
  margin: 0;
  border: 0;
}

.nav-tabs-custom > .nav-tabs > li > a {
  padding: 10px 14px;
  color: var(--saas-muted);
  font-weight: 800;
  border: 1px solid transparent;
  border-radius: var(--saas-radius-sm) var(--saas-radius-sm) 0 0;
}

.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover,
.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus,
.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active {
  color: var(--saas-primary);
  background: var(--saas-primary-soft);
  border-color: transparent;
}

.nav-tabs-custom > .nav-tabs > li.active,
.nav-tabs-custom > .nav-tabs > li.active:hover {
  border: 0;
}

.nav-tabs-custom > .nav-tabs > li.active > a,
.nav-tabs-custom > .nav-tabs > li.active:hover > a {
  color: var(--saas-primary-dark);
  background: var(--saas-primary-soft);
  border: 1px solid rgba(37, 99, 235, 0.16);
  border-bottom-color: var(--saas-primary-soft);
}

.nav-tabs-custom > .tab-content {
  padding: 18px;
  background: #ffffff;
}

/* Switches */

.onoffswitch-small {
  min-width: 58px;
}

.onoffswitch-small-label {
  border-color: var(--saas-border-strong) !important;
  border-radius: 999px !important;
}

.onoffswitch-small-inner::before {
  background: var(--saas-success) !important;
}

.onoffswitch-small-switch {
  border-color: var(--saas-border-strong) !important;
  border-radius: 999px !important;
}

/* Auth pages */

html.white-bg-login,
body.white-bg-login {
  min-height: 100%;
  background:
    radial-gradient(circle at 18% 12%, rgba(20, 184, 166, 0.18), transparent 24rem),
    radial-gradient(circle at 85% 20%, rgba(37, 99, 235, 0.16), transparent 28rem),
    linear-gradient(180deg, #ffffff 0, #eef2f7 100%);
}

body.auth-page {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: 32px 18px;
}

.auth-shell {
  width: min(100%, 430px);
}

.auth-brand {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  margin-bottom: 20px;
  color: var(--saas-text);
  text-align: center;
}

.auth-brand img {
  width: 58px !important;
  height: 58px !important;
  padding: 7px;
  background: #ffffff;
  border: 1px solid var(--saas-border);
  border-radius: 16px;
  box-shadow: var(--saas-shadow);
}

.auth-brand h4 {
  margin: 0;
  color: var(--saas-text);
  font-size: 18px;
  font-weight: 850;
}

.form-box {
  width: 100%;
  margin: 0 auto;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.9);
  border: 1px solid rgba(229, 233, 242, 0.9);
  border-radius: 20px;
  box-shadow: var(--saas-shadow-lg);
  backdrop-filter: blur(18px);
}

.form-box > .header,
.form-box .header {
  padding: 24px 28px 8px;
  margin: 0;
  color: var(--saas-text);
  font-size: 24px;
  font-weight: 850;
  text-align: left;
  background: transparent;
  border: 0;
}

.form-box .body,
.form-box .footer {
  padding: 22px 28px 28px;
  color: var(--saas-text);
  background: transparent;
  border-radius: 0;
}

.form-box .body > .form-group,
.form-box .footer > .form-group {
  margin-top: 0;
}

.form-box .body > .form-group > label {
  display: block;
  margin-bottom: 7px;
  color: var(--saas-text);
  font-size: 13px;
  font-weight: 800;
}

.form-box .body > .form-group > input,
.form-box .footer > .form-group > input {
  border: 1px solid var(--saas-border-strong);
}

.auth-options {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin: 6px 0 18px;
}

.auth-options.checkbox {
  padding: 0;
}

.auth-options .pull-right {
  float: none !important;
}

.auth-options a {
  color: var(--saas-primary);
  font-weight: 800;
}

.password-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  margin: -6px 0 14px;
}

.password-toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 36px;
  padding: 7px 11px;
}

.auth-return {
  display: block;
  text-align: center;
}

/* Plugin and widget polish */

.datepicker,
.daterangepicker,
.bootstrap-datetimepicker-widget,
.ui-datepicker {
  border: 1px solid var(--saas-border);
  border-radius: var(--saas-radius);
  box-shadow: var(--saas-shadow-lg);
}

.modal-content {
  border: 1px solid var(--saas-border);
  border-radius: var(--saas-radius);
  box-shadow: var(--saas-shadow-lg);
}

.modal-header,
.modal-footer {
  border-color: var(--saas-border);
}

.toastr,
#toast-container > div {
  border-radius: var(--saas-radius) !important;
  box-shadow: var(--saas-shadow-lg) !important;
}

/* Responsive */

@media (max-width: 992px) {
  :root {
    --saas-sidebar-width: 280px;
  }

  body > .header .navbar {
    margin-left: 0;
  }

  .left-side,
  .row-offcanvas-left .sidebar-offcanvas {
    left: calc(var(--saas-sidebar-width) * -1);
    transform: none;
  }

  .row-offcanvas-left.active {
    left: 0;
  }

  .row-offcanvas-left.active .left-side,
  .row-offcanvas-left.active .sidebar-offcanvas {
    left: 0;
  }

  .right-side {
    margin-left: 0;
  }

  .main-footer {
    margin-left: 0;
  }

  .content {
    padding: 22px 18px;
  }
}

@media (max-width: 767px) {
  .navbar-right {
    padding-right: 8px;
  }

  .navbar-nav > li > a {
    padding: 0 10px;
  }

  body > .header .navbar .nav > li.user > a span {
    display: none;
  }

  .box .box-header {
    display: grid;
    gap: 10px;
  }

  .box > .box-header > .breadcrumb,
  .breadcrumb {
    float: none;
    margin: 0;
  }

  .form-horizontal .control-label {
    margin-bottom: 6px;
    text-align: left;
  }

  .page-header {
    display: grid;
  }

  .page-header .pull-right {
    width: 100%;
    margin-left: 0;
  }

  .small-box > .small-box-footer {
    min-height: 120px;
  }
}

@media (max-width: 560px) {
  :root {
    --saas-topbar-height: 104px;
  }

  body > .header {
    height: var(--saas-topbar-height);
  }

  body > .header .logo,
  body > .header .navbar {
    position: relative !important;
    float: none;
    width: 100%;
    height: 52px;
  }

  body > .header .logo {
    justify-content: center;
    border-right: 0;
    border-bottom: 1px solid var(--saas-border);
  }

  body > .header .navbar {
    min-height: 52px;
    margin: 0;
  }

  body > .header .navbar .sidebar-toggle {
    margin-top: 5px;
  }

  .navbar-nav > li > a,
  body > .header .navbar .nav > li.user > a {
    height: 52px;
    line-height: 52px;
  }

  .left-side {
    top: var(--saas-topbar-height);
  }

  .content {
    padding: 18px 12px;
  }

  .box .box-body,
  .nav-tabs-custom > .tab-content {
    padding: 16px;
  }

  .form-box > .header,
  .form-box .header {
    padding: 22px 22px 6px;
  }

  .form-box .body,
  .form-box .footer {
    padding: 20px 22px 24px;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}

/* =====================================================
   SIDEBAR SUBMENU — kill legacy #242424 dark background
   ===================================================== */

.skin-blue .sidebar > .sidebar-menu > li > .treeview-menu,
.skin-blue .sidebar .sidebar-menu .treeview-menu,
.sidebar .sidebar-menu .treeview-menu {
  background: transparent !important;
  border-left: 2px solid rgba(37, 99, 235, 0.14) !important;
  margin: 2px 0 6px 20px !important;
  padding: 4px 0 6px 10px !important;
  box-shadow: none !important;
}

.skin-blue .sidebar > .sidebar-menu > li > .treeview-menu > li > a,
.skin-blue .treeview-menu > li > a,
.sidebar .sidebar-menu .treeview-menu > li > a {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 7px 10px !important;
  color: var(--saas-muted) !important;
  font-size: 12.5px !important;
  font-weight: 650 !important;
  background: transparent !important;
  border-radius: 7px !important;
  transition: color 0.14s ease, background 0.14s ease !important;
}

.skin-blue .treeview-menu > li.active > a,
.skin-blue .treeview-menu > li > a:hover,
.sidebar .sidebar-menu .treeview-menu > li.active > a,
.sidebar .sidebar-menu .treeview-menu > li > a:hover {
  color: var(--saas-primary-dark) !important;
  background: var(--saas-primary-soft) !important;
}

/* Angle arrow on parent items */
.sidebar .sidebar-menu > li > a > .fa-angle-left,
.sidebar .sidebar-menu > li > a > .fa-angle-down {
  margin-left: auto !important;
  margin-right: 0 !important;
  font-size: 12px !important;
  color: var(--saas-muted-2) !important;
  transition: transform 0.22s ease !important;
}

.sidebar .sidebar-menu > li.active > a > .fa-angle-left {
  transform: rotate(-90deg) !important;
}

/* =====================================================
   HAMBURGER BUTTON — proper stacked bars + X animation
   ===================================================== */

body > .header .navbar .sidebar-toggle {
  flex-direction: column !important;
  gap: 5px !important;
  align-items: center !important;
  justify-content: center !important;
}

body > .header .navbar .sidebar-toggle .icon-bar {
  display: block !important;
  width: 20px !important;
  height: 2px !important;
  flex-shrink: 0 !important;
  background: var(--saas-text) !important;
  border-radius: 99px !important;
  transition: transform 0.22s cubic-bezier(0.4, 0, 0.2, 1),
              opacity 0.18s ease,
              background 0.14s ease !important;
}

body > .header .navbar .sidebar-toggle:hover .icon-bar {
  background: var(--saas-primary) !important;
}

/* Animate to X when sidebar is open */
body.sidebar-open .sidebar-toggle .icon-bar:nth-child(2) {
  transform: translateY(7px) rotate(45deg) !important;
  background: var(--saas-primary) !important;
}
body.sidebar-open .sidebar-toggle .icon-bar:nth-child(3) {
  opacity: 0 !important;
  transform: scaleX(0) !important;
}
body.sidebar-open .sidebar-toggle .icon-bar:nth-child(4) {
  transform: translateY(-7px) rotate(-45deg) !important;
  background: var(--saas-primary) !important;
}

/* =====================================================
   SIDEBAR BACKDROP OVERLAY (mobile)
   ===================================================== */

.sidebar-backdrop {
  position: fixed;
  inset: 0;
  z-index: 1015;
  background: rgba(17, 24, 39, 0.48);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.25s ease, visibility 0.25s ease;
}

.sidebar-backdrop.show {
  opacity: 1;
  visibility: visible;
}

/* =====================================================
   SIDEBAR SLIDE — smooth transform instead of left jump
   ===================================================== */

@media (max-width: 992px) {
  .left-side,
  .row-offcanvas-left .sidebar-offcanvas {
    left: 0 !important;
    transform: translateX(calc(var(--saas-sidebar-width) * -1)) !important;
    transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1) !important;
  }

  .row-offcanvas-left.active .left-side,
  .row-offcanvas-left.active .sidebar-offcanvas,
  body.sidebar-open .left-side {
    transform: translateX(0) !important;
  }

  /* Prevent page scroll when sidebar is open */
  body.sidebar-open {
    overflow: hidden !important;
  }
}

/* =====================================================
   FULL RESPONSIVE — tablet & mobile
   ===================================================== */

@media (max-width: 992px) {
  body > .header .logo {
    width: auto;
    min-width: 160px;
    padding: 0 18px;
    border-right: 0;
  }

  body > .header .navbar {
    margin-left: 0 !important;
  }
}

@media (max-width: 767px) {
  /* Topbar */
  .navbar-right {
    padding-right: 6px;
  }

  .navbar-nav > li > a {
    padding: 0 8px !important;
  }

  /* Hide username label — keep avatar */
  body > .header .navbar .nav > li.user > a > span:not(.caret) {
    display: none !important;
  }

  /* Content padding tighter */
  .content {
    padding: 16px 14px;
  }

  /* Box body scrollable */
  .box .box-body {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  /* Form labels stack vertically on mobile */
  .form-horizontal .form-group > [class*="col-sm-"],
  .form-horizontal .form-group > [class*="col-md-"] {
    float: none !important;
    width: 100% !important;
  }

  .form-horizontal .control-label {
    text-align: left !important;
    padding-bottom: 4px !important;
    padding-top: 0 !important;
  }

  /* Dashboard stat cards: 2-col on phones */
  .small-box {
    margin-bottom: 14px;
  }

  /* Page header stack */
  .page-header {
    flex-direction: column;
    align-items: flex-start;
  }

  .page-header .pull-right {
    width: 100%;
    margin-left: 0;
  }

  /* Modal full-width */
  .modal-dialog {
    margin: 10px;
  }

  /* DataTable controls stack */
  .dataTables_wrapper .dataTables_length,
  .dataTables_wrapper .dataTables_filter {
    float: none !important;
    text-align: left !important;
    margin-bottom: 10px;
  }

  /* Breadcrumb wrap */
  .box .box-header {
    flex-wrap: wrap;
  }
}

@media (max-width: 480px) {
  :root {
    --saas-sidebar-width: min(280px, 88vw);
    --saas-topbar-height: 56px;
  }

  body > .header {
    height: var(--saas-topbar-height);
  }

  body > .header .logo {
    height: var(--saas-topbar-height);
  }

  body > .header .navbar {
    min-height: var(--saas-topbar-height);
  }

  .navbar-nav > li > a,
  body > .header .navbar .nav > li.user > a {
    height: var(--saas-topbar-height);
    line-height: var(--saas-topbar-height);
  }

  body > .header .navbar .sidebar-toggle {
    margin-top: 7px;
  }

  .left-side {
    top: var(--saas-topbar-height);
  }

  .content {
    padding: 14px 10px;
  }

  .box .box-header {
    padding: 14px 16px;
  }

  .box .box-body {
    padding: 14px 16px;
  }

  /* Table cells min-width so they don't crush */
  .table > thead > tr > th,
  .table > tbody > tr > td {
    min-width: 80px;
    padding: 10px 10px;
  }

  /* Action btn clusters */
  .btn-xs {
    margin: 2px !important;
  }
}

/* =====================================================
   SIDEBAR UNIFIED TOGGLE — desktop + mobile
   ===================================================== */

.left-side {
  transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1) !important;
  will-change: transform;
}

.right-side,
.main-footer {
  transition: margin-left 0.28s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

/* =====================================================
   LOGO IMAGE — school photo instead of FA icon
   ===================================================== */

.logo-school-img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  border-radius: 10px !important;
}

/* =====================================================
   HEADER FLEX — single row always, no stacking on mobile
   ===================================================== */

body > .header {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  overflow: visible !important; /* dropdowns must escape */
}

/* Cancel the 560px two-row stacking from the original 560px block */
body > .header .logo {
  position: relative !important;
  float: none !important;
  width: auto !important;
  min-width: 56px !important;
  flex: 0 0 auto !important;
}

body > .header .navbar {
  position: relative !important;
  float: none !important;
  flex: 1 1 auto !important;
  width: auto !important;
  min-width: 0 !important;
  margin: 0 !important;
  min-height: var(--saas-topbar-height) !important;
  /* Make navbar itself a flex row so hamburger + right-nav both center */
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
}

/* Right nav: disable float, push to end via flex */
body > .header .navbar .navbar-right {
  float: none !important;
  margin-left: auto !important;
  margin-right: 0 !important;
  padding-right: 4px !important;
}

/* Hamburger: flex centers it — no manual margin-top needed */
body > .header .navbar .sidebar-toggle {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  flex-shrink: 0 !important;
}

@media (max-width: 560px) {
  :root {
    --saas-topbar-height: 58px;
  }

  body > .header {
    height: var(--saas-topbar-height) !important;
  }

  body > .header .logo {
    height: var(--saas-topbar-height) !important;
    padding: 0 10px 0 14px !important;
    border-right: 1px solid var(--saas-border) !important;
    border-bottom: 0 !important;
    justify-content: flex-start !important;
  }

  body > .header .navbar {
    height: var(--saas-topbar-height) !important;
  }

  .navbar-nav > li > a,
  body > .header .navbar .nav > li.user > a {
    height: var(--saas-topbar-height) !important;
    line-height: var(--saas-topbar-height) !important;
    padding: 0 8px !important;
  }

  body > .header .navbar .sidebar-toggle {
    margin: 0 0 0 10px !important;
  }

  /* Hide logo text on very small, keep icon */
  body > .header .logo .logo-text {
    display: none !important;
  }

  .left-side {
    top: var(--saas-topbar-height) !important;
  }

  .wrapper {
    padding-top: var(--saas-topbar-height) !important;
  }
}

/* =====================================================
   SIDEBAR — kill ALL legacy dark backgrounds with !important
   ===================================================== */

/* Sidebar panel bg */
.skin-blue .left-side,
.skin-blue .main-sidebar {
  background: var(--saas-sidebar) !important;
  box-shadow: 8px 0 30px rgba(16, 24, 40, 0.04) !important;
}

/* Top-level link default */
.skin-blue .sidebar > .sidebar-menu > li > a,
.sidebar .sidebar-menu > li > a {
  color: var(--saas-muted) !important;
  background: transparent !important;
}

/* Top-level hover AND active — nuke #161616 */
body.skin-blue .left-side .sidebar .sidebar-menu > li > a:hover,
body.skin-blue .left-side .sidebar .sidebar-menu > li.active > a,
body.skin-blue .left-side .sidebar .sidebar-menu > li.treeview.active > a,
body.skin-blue .left-side .sidebar .sidebar-menu > li.treeview.menu-open > a,
.skin-blue .sidebar > .sidebar-menu > li > a:hover,
.skin-blue .sidebar > .sidebar-menu > li.active > a,
.skin-blue .sidebar > .sidebar-menu > li.treeview.active > a,
.skin-blue .sidebar > .sidebar-menu > li.treeview.menu-open > a,
.sidebar .sidebar-menu > li > a:hover,
.sidebar .sidebar-menu > li.active > a {
  color: var(--saas-primary-dark) !important;
  background: var(--saas-primary-soft) !important;
  border-color: rgba(37, 99, 235, 0.12) !important;
}

/* Icons inside active/hover */
.skin-blue .sidebar > .sidebar-menu > li > a:hover > .fa,
.skin-blue .sidebar > .sidebar-menu > li.active > a > .fa,
.skin-blue .sidebar > .sidebar-menu > li.treeview.active > a > .fa,
.skin-blue .sidebar > .sidebar-menu > li.treeview.menu-open > a > .fa {
  color: var(--saas-primary) !important;
}

/* Treeview submenu bg — nuke #242424 at all specificity levels */
body.skin-blue .left-side .sidebar .sidebar-menu > li > ul.treeview-menu,
body.skin-blue .left-side .sidebar .sidebar-menu .treeview-menu,
.skin-blue .sidebar > .sidebar-menu > li > .treeview-menu,
.skin-blue .sidebar .sidebar-menu li > .treeview-menu,
.skin-blue .sidebar .treeview-menu,
.sidebar .sidebar-menu .treeview-menu,
ul.treeview-menu {
  background: transparent !important;
  background-color: transparent !important;
  box-shadow: none !important;
}

/* Treeview submenu links */
.skin-blue .treeview-menu > li > a,
.skin-blue .sidebar .treeview-menu > li > a,
.sidebar .sidebar-menu .treeview-menu > li > a {
  color: var(--saas-muted) !important;
  background: transparent !important;
}

.skin-blue .treeview-menu > li.active > a,
.skin-blue .treeview-menu > li > a:hover,
.skin-blue .sidebar .treeview-menu > li.active > a,
.skin-blue .sidebar .treeview-menu > li > a:hover,
.sidebar .sidebar-menu .treeview-menu > li.active > a,
.sidebar .sidebar-menu .treeview-menu > li > a:hover {
  color: var(--saas-primary-dark) !important;
  background: var(--saas-primary-soft) !important;
}

/* =====================================================
   FORMS / PANELS / TABLES — unify all old-style surfaces
   ===================================================== */

/* Panels (Bootstrap 3) */
.panel {
  border: 1px solid var(--saas-border) !important;
  border-radius: var(--saas-radius) !important;
  box-shadow: var(--saas-shadow) !important;
}

.panel-heading {
  padding: 16px 22px !important;
  color: var(--saas-text) !important;
  font-weight: 800 !important;
  background: #ffffff !important;
  border-bottom: 1px solid var(--saas-border) !important;
  border-radius: var(--saas-radius) var(--saas-radius) 0 0 !important;
}

.panel-body {
  padding: 20px 22px !important;
  background: #ffffff !important;
}

.panel-default > .panel-heading {
  color: var(--saas-text) !important;
  background: #ffffff !important;
  border-color: var(--saas-border) !important;
}

.panel-primary > .panel-heading {
  color: #ffffff !important;
  background: var(--saas-primary) !important;
  border-color: var(--saas-primary) !important;
}

.panel-success > .panel-heading {
  color: #ffffff !important;
  background: var(--saas-success) !important;
  border-color: var(--saas-success) !important;
}

.panel-danger > .panel-heading {
  color: #ffffff !important;
  background: var(--saas-danger) !important;
  border-color: var(--saas-danger) !important;
}

.panel-warning > .panel-heading {
  color: #ffffff !important;
  background: var(--saas-warning) !important;
  border-color: var(--saas-warning) !important;
}

.panel-info > .panel-heading {
  color: #ffffff !important;
  background: var(--saas-info) !important;
  border-color: var(--saas-info) !important;
}

/* Well (Bootstrap 3) */
.well {
  padding: 18px 22px !important;
  background: var(--saas-surface-soft) !important;
  border: 1px solid var(--saas-border) !important;
  border-radius: var(--saas-radius) !important;
  box-shadow: none !important;
}

/* List groups */
.list-group-item {
  padding: 12px 16px !important;
  color: var(--saas-text) !important;
  background: #ffffff !important;
  border-color: var(--saas-border) !important;
}

.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
  color: #ffffff !important;
  background: var(--saas-primary) !important;
  border-color: var(--saas-primary) !important;
}

.list-group-item:hover {
  background: var(--saas-primary-soft) !important;
}

/* Nav pills */
.nav-pills > li > a {
  padding: 10px 16px !important;
  color: var(--saas-muted) !important;
  border-radius: var(--saas-radius-sm) !important;
  font-weight: 700 !important;
}

.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
  color: #ffffff !important;
  background: var(--saas-primary) !important;
}

/* Badge */
.badge {
  padding: 3px 7px !important;
  font-weight: 800 !important;
  border-radius: 999px !important;
}

/* Label chips */
.label-primary { background: var(--saas-primary) !important; }
.label-success { background: var(--saas-success) !important; }
.label-danger  { background: var(--saas-danger) !important; }
.label-warning { background: var(--saas-warning) !important; color: #fff !important; }
.label-info    { background: var(--saas-info) !important; }
.label-default { background: var(--saas-muted-2) !important; }

/* Progress bar */
.progress {
  height: 10px !important;
  background: var(--saas-border) !important;
  border-radius: 999px !important;
  box-shadow: none !important;
}

.progress-bar {
  border-radius: 999px !important;
}

.progress-bar-primary { background: var(--saas-primary) !important; }
.progress-bar-success { background: var(--saas-success) !important; }
.progress-bar-danger  { background: var(--saas-danger) !important; }
.progress-bar-warning { background: var(--saas-warning) !important; }

/* Info box (AdminLTE widget) */
.info-box {
  border-radius: var(--saas-radius) !important;
  box-shadow: var(--saas-shadow) !important;
  min-height: 82px !important;
  overflow: hidden !important;
}

.info-box-icon {
  width: 70px !important;
  line-height: 82px !important;
  font-size: 32px !important;
  border-radius: var(--saas-radius) 0 0 var(--saas-radius) !important;
}

/* Timeline */
.timeline > li > .timeline-item {
  background: #ffffff !important;
  border: 1px solid var(--saas-border) !important;
  border-radius: var(--saas-radius) !important;
  box-shadow: var(--saas-shadow-sm) !important;
}

.timeline > li > .fa {
  background: var(--saas-primary) !important;
  border-color: var(--saas-border) !important;
}

/* =====================================================
   SIDEBAR BACKDROP — use 'active' class from JS
   ===================================================== */

.sidebar-backdrop.active {
  opacity: 1 !important;
  visibility: visible !important;
}

/* =====================================================
   SWEETALERT2 — integrate with design system
   ===================================================== */

.swal2-popup {
  border-radius: var(--saas-radius) !important;
  font-family: "Inter", "Segoe UI", Arial, sans-serif !important;
  box-shadow: var(--saas-shadow-lg) !important;
  padding: 2rem !important;
}

.swal2-title {
  font-size: 18px !important;
  font-weight: 800 !important;
  color: var(--saas-text) !important;
}

.swal2-html-container,
.swal2-content {
  font-size: 14px !important;
  color: var(--saas-muted) !important;
}

.swal2-confirm {
  border-radius: var(--saas-radius-sm) !important;
  font-weight: 800 !important;
  font-size: 13px !important;
  padding: 10px 20px !important;
  box-shadow: var(--saas-shadow-sm) !important;
}

.swal2-cancel {
  border-radius: var(--saas-radius-sm) !important;
  font-weight: 700 !important;
  font-size: 13px !important;
  padding: 10px 20px !important;
}

/* Toast notifications */
.swal2-toast {
  border-radius: var(--saas-radius) !important;
  box-shadow: var(--saas-shadow-lg) !important;
  font-family: "Inter", "Segoe UI", Arial, sans-serif !important;
}

.swal2-toast .swal2-title {
  font-size: 14px !important;
  font-weight: 700 !important;
}

/* =====================================================
   ACTION BUTTONS — unified icon-button palette
   ===================================================== */

/* View / detail button → slate */
.btn-xs.btn-primary,
a.btn-xs.btn-primary {
  color: #ffffff !important;
  background: var(--saas-primary) !important;
  border-color: var(--saas-primary) !important;
}

/* Edit button → amber (replaces ugly dark orange) */
.btn-xs.btn-warning,
a.btn-xs.btn-warning {
  color: #ffffff !important;
  background: #f59e0b !important;
  border-color: #f59e0b !important;
}

.btn-xs.btn-warning:hover,
a.btn-xs.btn-warning:hover {
  background: #d97706 !important;
  border-color: #d97706 !important;
}

/* Delete button → softer red */
.btn-xs.btn-danger,
a.btn-xs.btn-danger {
  color: #ffffff !important;
  background: #ef4444 !important;
  border-color: #ef4444 !important;
}

.btn-xs.btn-danger:hover,
a.btn-xs.btn-danger:hover {
  background: #dc2626 !important;
  border-color: #dc2626 !important;
}

/* btn-success already redefined at top as primary blue — stale block removed */

/* btn-info → teal instead of Bootstrap cyan */
.btn-info {
  color: #ffffff !important;
  background: #0891b2 !important;
  border-color: #0891b2 !important;
}

.btn-info:hover {
  background: #0e7490 !important;
  border-color: #0e7490 !important;
}

/* =====================================================
   TABLE ROWS — remove green stripe, clean neutrals
   ===================================================== */

.table-striped > tbody > tr:nth-of-type(odd) {
  background-color: #f8fafc !important;
}

.table-striped > tbody > tr:nth-of-type(even) {
  background-color: #ffffff !important;
}

/* Row state colors — replace green success rows */
.table > tbody > tr.success > td,
.table > tbody > tr.success > th {
  background-color: #ecfdf5 !important;
  color: #065f46 !important;
}

.table > tbody > tr.danger > td,
.table > tbody > tr.danger > th {
  background-color: #fef2f2 !important;
  color: #991b1b !important;
}

.table > tbody > tr.warning > td,
.table > tbody > tr.warning > th {
  background-color: #fffbeb !important;
  color: #92400e !important;
}

.table > tbody > tr.info > td,
.table > tbody > tr.info > th {
  background-color: #ecfeff !important;
  color: #155e75 !important;
}


/* =====================================================
   COMPREHENSIVE VISUAL FIXES — v2
   ===================================================== */

/* ---- 1. LOGIN BUTTONS ---- */

/* INGRESAR → primary blue (it's btn-success) */
body.auth-page .btn-success,
body.auth-page input.btn-success,
.form-box .btn-success,
.form-box input.btn-success {
  background: var(--saas-primary) !important;
  border-color: var(--saas-primary) !important;
  letter-spacing: 0.04em !important;
}

/* REGRESAR → clean secondary ghost */
.auth-return,
a.auth-return,
.btn.auth-return {
  color: var(--saas-muted) !important;
  background: #f1f5f9 !important;
  border-color: var(--saas-border-strong) !important;
  letter-spacing: 0.04em !important;
}

.auth-return:hover,
a.auth-return:hover {
  color: var(--saas-text) !important;
  background: var(--saas-border) !important;
  border-color: var(--saas-border-strong) !important;
  transform: none !important;
}

/* ---- 2. PAYMENT STATUS BADGES (no overflow) ---- */

/* btn-xs with text = status pill, not square icon button */
.table td .btn.btn-xs,
.table td button.btn-xs {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: 120px !important;
  height: auto !important;
  min-height: 22px !important;
  padding: 3px 9px !important;
  font-size: 11px !important;
  font-weight: 800 !important;
  letter-spacing: 0.02em !important;
  border-radius: 999px !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

/* Payment status colors */
.table td .btn.btn-xs.btn-success { background: #dcfce7 !important; color: #166534 !important; border-color: #bbf7d0 !important; }
.table td .btn.btn-xs.btn-warning { background: #fef9c3 !important; color: #854d0e !important; border-color: #fde68a !important; }
.table td .btn.btn-xs.btn-danger  { background: #fee2e2 !important; color: #991b1b !important; border-color: #fecaca !important; }
.table td .btn.btn-xs.btn-info    { background: #e0f2fe !important; color: #0c4a6e !important; border-color: #bae6fd !important; }

/* ---- 3. INPUT-GROUP-ADDON BTN-DANGER (date clearer, quick-add) ---- */

.input-group-addon.btn,
.input-group-addon.btn-danger,
span.input-group-addon.btn.btn-danger {
  color: var(--saas-muted) !important;
  background: var(--saas-surface-soft) !important;
  border-color: var(--saas-border-strong) !important;
  box-shadow: none !important;
}

.input-group-addon.btn:hover,
.input-group-addon.btn-danger:hover {
  color: var(--saas-danger) !important;
  background: var(--saas-danger-soft) !important;
  border-color: #fecaca !important;
}

/* ---- 4. QUICK-ADD "Agregar Rápidamente" (btn-danger in input-group) ---- */

.input-group > .btn.btn-danger:not(.input-group-addon),
.input-group-btn > .btn.btn-danger {
  color: var(--saas-primary) !important;
  background: var(--saas-primary-soft) !important;
  border-color: rgba(37, 99, 235, 0.25) !important;
  font-weight: 800 !important;
}

.input-group > .btn.btn-danger:not(.input-group-addon):hover,
.input-group-btn > .btn.btn-danger:hover {
  background: var(--saas-primary) !important;
  color: #ffffff !important;
  border-color: var(--saas-primary) !important;
}

/* ---- 5. IMAGE-PREVIEW-INPUT (foto selector — keep distinct) ---- */

.image-preview-input.btn,
.btn.image-preview-input {
  color: var(--saas-primary) !important;
  background: var(--saas-primary-soft) !important;
  border-color: rgba(37, 99, 235, 0.25) !important;
  font-weight: 700 !important;
}

.image-preview-input.btn:hover {
  background: var(--saas-primary) !important;
  color: #ffffff !important;
}

/* ---- 6. ICON BUTTON REFINEMENT (action column) ---- */

/* Slightly softer, more modern action buttons */
.btn-xs.mrg {
  width: 32px !important;
  height: 32px !important;
  border-radius: 8px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 1px !important;
  font-size: 13px !important;
  transition: transform 0.15s ease, box-shadow 0.15s ease !important;
}

.btn-xs.mrg:hover {
  transform: translateY(-1px) scale(1.08) !important;
  box-shadow: 0 4px 12px rgba(0,0,0,0.15) !important;
}

/* Action button specific colors (more refined palette) */
.btn-xs.mrg.btn-primary { background: #3b82f6 !important; border-color: #3b82f6 !important; }
.btn-xs.mrg.btn-warning { background: #f59e0b !important; border-color: #f59e0b !important; }
.btn-xs.mrg.btn-danger  { background: #f87171 !important; border-color: #f87171 !important; }
.btn-xs.mrg.btn-info    { background: #22d3ee !important; border-color: #22d3ee !important; }
.btn-xs.mrg.btn-success { background: #34d399 !important; border-color: #34d399 !important; }

/* ---- 7. SIDEBAR ICON SIZE UNIFORMITY ---- */

.sidebar .sidebar-menu > li > a > i,
.sidebar .sidebar-menu > li > a > .fa,
.sidebar .sidebar-menu > li > a > [class^="icon-"] {
  width: 20px !important;
  font-size: 15px !important;
  text-align: center !important;
  opacity: 0.75;
  transition: opacity 0.14s ease !important;
}

.sidebar .sidebar-menu > li.active > a > i,
.sidebar .sidebar-menu > li.active > a > .fa,
.sidebar .sidebar-menu > li > a:hover > i,
.sidebar .sidebar-menu > li > a:hover > .fa {
  opacity: 1 !important;
  color: var(--saas-primary) !important;
}

/* ---- 8. MODAL CLOSE BUTTON ---- */

.btn-default[data-dismiss="modal"],
button.btn-default[data-dismiss="modal"] {
  color: var(--saas-muted) !important;
  background: var(--saas-surface-soft) !important;
  border-color: var(--saas-border-strong) !important;
}

/* ---- 9. FORM SUBMIT BUTTONS — consistent size + spacing ---- */

input[type="submit"].btn,
button[type="submit"].btn {
  min-width: 140px;
  font-weight: 800 !important;
  letter-spacing: 0.01em;
}

/* ---- 10. BTN-INVOICE (payment action button) ---- */

.btn-invoice,
a.btn-invoice {
  color: #ffffff !important;
  background: #0891b2 !important;
  border-color: #0891b2 !important;
}

/* ---- 11. DRAFT / SEND BUTTONS in conversation ---- */

.btn-warning:not(.btn-xs):not(.auth-return) {
  color: #ffffff !important;
  background: #f59e0b !important;
  border-color: #f59e0b !important;
}

/* ---- 12. DT-BUTTONS (Copy/Excel/CSV/PDF) ---- */

.dt-button {
  color: var(--saas-text) !important;
  background: #ffffff !important;
  border: 1px solid var(--saas-border-strong) !important;
  font-size: 12px !important;
  font-weight: 700 !important;
}

.dt-button:hover {
  background: var(--saas-primary-soft) !important;
  color: var(--saas-primary) !important;
  border-color: rgba(37,99,235,0.3) !important;
}

/* ---- 13. BREADCRUMB ICON ---- */

.box .box-header .fa.icon-student,
.box .box-header [class^="icon-"] {
  color: var(--saas-primary);
}

/* ---- 14. PAGE-HEADER ICONS ---- */

.page-header .fa,
h3.box-title .fa {
  color: var(--saas-primary);
  opacity: 0.85;
}

/* ---- 15. ON/OFF TOGGLE — keep colored, not btn-success blue ---- */

.onoffswitch-small-inner::before {
  background: #16a34a !important;
  content: "ON" !important;
  font-size: 9px !important;
  font-weight: 800 !important;
  padding-left: 4px !important;
}

.onoffswitch-small-inner::after {
  content: "OFF" !important;
  font-size: 9px !important;
  font-weight: 800 !important;
  padding-right: 3px !important;
  color: var(--saas-muted) !important;
}

/* ---- 16. RESPONSIVE TABLE WRAPPING ---- */

@media (max-width: 767px) {
  .table td .btn.btn-xs,
  .table td button.btn-xs {
    max-width: 90px !important;
    font-size: 10px !important;
  }

  .btn-xs.mrg {
    width: 28px !important;
    height: 28px !important;
    font-size: 12px !important;
  }
}

/* =====================================================
   SAAS BADGE COMPONENT — status pills
   ===================================================== */

.saas-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  font-size: 11.5px;
  font-weight: 700;
  border-radius: 999px;
  white-space: nowrap;
  letter-spacing: 0.01em;
  border: 1px solid transparent;
}

.saas-badge .fa {
  font-size: 11px !important;
}

.saas-badge-success {
  background: #dcfce7;
  color: #166534;
  border-color: #bbf7d0;
}

.saas-badge-warning {
  background: #fef9c3;
  color: #854d0e;
  border-color: #fde68a;
}

.saas-badge-danger {
  background: #fee2e2;
  color: #991b1b;
  border-color: #fecaca;
}

.saas-badge-info {
  background: #e0f2fe;
  color: #0c4a6e;
  border-color: #bae6fd;
}

.saas-badge-neutral {
  background: var(--saas-surface-soft);
  color: var(--saas-muted);
  border-color: var(--saas-border);
}
