/* ✅ STABLE BASELINE (2026-03-12)
   Desktop/mid/mobile verified: spacing, providers, banner policy, footer.
   Avoid structural edits without re-testing all views. */
/* =====================================================
   ROOT / THEME VARIABLES
   ===================================================== */

:root {
  --mdc-theme-error: #971b2f;
  --cas-theme-primary: #0051ba;
  --mdc-theme-primary: var(--cas-theme-primary, #0051ba);
  --mdc-typography-font-family: Arial, sans-serif;
}

/* =====================================================
   HEADER (CAS / MDC)
   ===================================================== */

.mdc-top-app-bar__section {
  padding: 4px 12px;
  height: 62px;
  flex: 0 1 auto;
}

.mdc-top-app-bar__row .container {
  max-width: 100%;
}

.mdc-top-app-bar__section--align-start,
.mdc-top-app-bar__section--align-center {
  padding: 4px 0;
}

.cas-brand,
.ku-logo-left {
  height: 100%;
}

.ku-sso-title {
  font-size: 1.75rem;
  font-weight: 400;
}

/* =====================================================
   BUTTONS
   ===================================================== */

.mdc-button--raised:not(:disabled, .reveal-password) {
  border-radius: 3px;
  filter: none;
}

.mdc-button--raised:not(:disabled, .reveal-password):hover,
.mdc-button--raised:not(:disabled, .reveal-password):focus-visible {
  transform: none;
  box-shadow: none;
}

.mdc-button.btn-primary:not(:disabled):hover,
.mdc-button.btn-primary:not(:disabled):focus-visible {
  background-color: #2767ff;
}
/* =====================================================
   Reveal password alignment
   ===================================================== */

#login-form-controls .mdc-notched-outline {
  pointer-events: none;
}

#login-form-controls .reveal-password {
  pointer-events: auto;
  background-color: var(--cas-theme-primary) !important;
  border: none !important;
  box-shadow: none !important;
  width: 56px;
  height: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 0 4px 4px 0;
}

#login-form-controls .reveal-password i {
  color: #fff !important;
}

#login-form-controls .reveal-password:hover,
#login-form-controls .reveal-password:focus-visible {
  background-color: #2767ff !important;
}
/* =====================================================
   BACKGROUND IMAGE
   ===================================================== */

.bgimage {
  background-image: url("/cas/images/ku/ku-background-100af1d7c08701805f148697b8d37df6.png") !important;
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
}

/* =====================================================
   WRAPPER TRANSPARENCY (LOGIN ONLY)
   ===================================================== */

.mdc-card.mdc-card-content.card.flex-grow-1,
.mdc-card.mdc-card-content.card {
  background: transparent !important;
  box-shadow: none !important;
}

body.login .mdc-drawer-app-content,
body.login main#main-content {
  background-color: transparent !important;
}

/* =====================================================
   LOGIN MDC LABELS (KEEP BLACK)
   ===================================================== */

body.login #login-form-controls .mdc-floating-label,
body.login #login-form-controls
.mdc-text-field--focused .mdc-floating-label,
body.login #login-form-controls
.mdc-text-field--invalid .mdc-floating-label {
  color: #000 !important;
}

/* ✅ OPTION A: remove padding from ALL login sections */
.login-section.card-body {
  padding: 0 !important;
  margin: 0 !important;
}
#loginForm.login-section.card-body {
  background: transparent !important;
  box-shadow: none !important;
}
#loginForm #login-form-controls > h2 {
  margin-top: 0 !important;
}

#loginForm .form-wrapper {
  background-color: #ffffff;
  border-radius: 4px;
  padding: 1.5rem;
  box-shadow: 0 2px 6px rgba(0,0,0,.15);
  width: 100%;
}

/* ✅ MOBILE: keep login card from feeling too wide */
@media (max-width: 767.98px) {
  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  main#main-content {
    padding-left: clamp(12px, 4vw, 24px);
    padding-right: clamp(12px, 4vw, 24px);
  }

  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #loginForm .form-wrapper {
    max-width: 560px;
    margin: 0 auto;
    width: 100%;
  }
}

/* =====================================================
   ✅ LINK COLOR (login content only — excludes footer)
   ===================================================== */

body.login main#main-content a:link,
body.login main#main-content a:visited,
body.login main#main-content a:hover,
body.login main#main-content a:active,
body.login main#main-content a:focus-visible {
  color: var(--cas-theme-primary) !important;
}
/* =====================================================
   RESTORE LOGIN FORM FEEDBACK SPACING
   ===================================================== */

#loginForm .mdc-text-field-helper-line,
#loginForm .invalid-feedback {
  margin-top: 0.25rem;
  margin-bottom: 0.75rem;
  display: block;
}

#loginForm .mdc-text-field-helper-text--validation-msg {
  color: var(--mdc-theme-error);
  font-size: 0.85rem;
}

#loginForm #fieldsLegend {
  display: block;
  margin-top: 0.75rem;
  margin-bottom: 0.5rem;
  font-size: 0.85rem;
}

/* Banner should fill the same width as provider card */
#ku-banner img,
#banner-img {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  height: auto !important;
}

/* Restore white background for providers card */
#loginSide .card.bg-light,
#loginSide .card.bg-light > .card-body {
  background-color: #ffffff !important;
}

#loginSide .card.bg-light > .card-body {
  padding: .75rem !important;
}

/* =====================================================
   Provider buttons (right column) — KU styling
   ===================================================== */

#loginSide a[data-provider].btn-primary {
  background-color: #2767ff !important;
  border-color: #2767ff !important;
  color: #ffffff !important;
}

#loginSide a[data-provider].btn-primary:hover,
#loginSide a[data-provider].btn-primary:focus-visible {
  background-color: #2767ff !important;
  border-color: #2767ff !important;
  color: #ffffff !important;
  filter: brightness(0.93);
}

/* Ensure labels stay white */
#loginSide a[data-provider] .mdc-button__label {
  color: #ffffff !important;
}

body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
#loginForm {
  flex: 1 1 520px !important;
  min-width: 320px !important;
  position: relative;
  z-index: 2;
}

body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
#loginSide {
  flex: 0 0 328px !important;
  min-width: 280px !important;
  position: relative;
  z-index: 1;
}

/* =====================================================
   RIGHT COLUMN CONTAINER (single source of truth)
   ===================================================== */

#loginSide {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 0;
  width: 100%;
  max-width: 328px;
  overflow: hidden;
  row-gap: 16px; /* ✅ adds space between providers card and banner */
}

/* Hide the default CAS provider block when our right-column provider UI exists */
body.cas-has-loginSide #loginProviders {
  display: none !important;
}

/* Providers card itself */
#loginSide .card.bg-light {
  width: 100%;
  max-width: 100%;
  overflow: hidden;
}

/* Provider buttons – base rules */
#loginSide a[data-provider] {
  display: flex !important;
  align-items: center !important;
  width: 100% !important;
  max-width: 100%;
  min-width: 0;
  min-height: 48px !important;
  box-sizing: border-box !important;
  overflow: hidden;
}

#loginSide a[data-provider] .mdc-button__label {
  margin: 0 !important;
  line-height: 1.1 !important;
  white-space: nowrap;
}

/* Delegate Login (centered) */
#loginSide a[data-provider="Delegate-Login"] {
  justify-content: center !important;
  text-transform: none !important;
  font-size: 1.05rem;
  font-weight: 500;
  letter-spacing: normal;
}

/* =====================================================
   KUMC base (non-hover): badge panel + divider
   ===================================================== */

#loginSide a[data-provider="KUMC"] {
  justify-content: flex-start !important;
  border-radius: 3px;
  overflow: hidden;
  background-image:
    url("/cas/images/ku/kumc-ca2794539740422631abfbe88af2e854.jpg"),
    linear-gradient(rgba(255,255,255,0.12), rgba(255,255,255,0.12)),
    linear-gradient(rgba(255,255,255,0.35), rgba(255,255,255,0.35));
  background-repeat: no-repeat, no-repeat, no-repeat;
  background-position: 0 0, 0 0, 96px 0;
  background-size: 96px 100%, 96px 100%, 1px 100%;
  padding-left: 116px !important;
  padding-right: 16px !important;
}

#loginSide a[data-provider="KUMC"] .mdc-button__label {
  flex: 1 1 auto;
  text-align: center;
  font-weight: 500;
  white-space: nowrap;
}

/* Hide only when JS has detected loginSide AND form isn't present */
body.login.cas-has-loginSide:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view):not(.cas-has-loginForm)
#loginSide,
body.login.cas-has-loginSide:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view):not(.cas-has-loginForm)
#ku-banner,
body.login.cas-has-loginSide:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view):not(.cas-has-loginForm)
#loginProviders {
  display: none !important;
}
/* =====================================================
   ✅ CAS-only services: keep banner, hide providers UI
   (no provider buttons present)
   ===================================================== */

/* Hide the providers card only (but keep #loginSide so banner can show) */
body.login.cas-has-loginSide:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view):not(.cas-has-loginSide-providers)
#loginSide .card.bg-light {
  display: none !important;
}

/* Also hide the "Or log in with:" label if it’s outside the card (safe attempts) */
body.login.cas-has-loginSide:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view):not(.cas-has-loginSide-providers)
#loginSide h2,
body.login.cas-has-loginSide:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view):not(.cas-has-loginSide-providers)
#loginSide .providers-title,
body.login.cas-has-loginSide:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view):not(.cas-has-loginSide-providers)
#loginSide .loginProvidersTitle {
  display: none !important;
}
/* =====================================================
   ✅ MID-WIDTH FIX: keep gap + prevent provider panel sliding behind
   Applies before the mobile stack kicks in
   ===================================================== */
/* Wrapper that holds left login + right providers (LOGIN ONLY) */
body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
.mdc-card.mdc-card-content.card.flex-grow-1 {
  display: flex !important;
  align-items: flex-start !important;
  gap: clamp(16px, 3vw, 36px) !important;
  flex-wrap: wrap !important;
}
/* =====================================================
   ✅ DESKTOP: keep 2-column layout (do NOT wrap)
   Ensures banner stays in the right column even on CAS-only services
   ===================================================== */
@media (min-width: 992px) {

  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  .mdc-card.mdc-card-content.card.flex-grow-1 {
    align-items: flex-start !important;
  }

  /* Lock the left column width so it doesn't force wrapping */
  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #loginForm {
    flex: 0 0 520px !important;
    max-width: 520px !important;
    min-width: 520px !important;
  }

  /* Lock the right column width so it always sits beside the form */
  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #loginSide {
    flex: 0 0 328px !important;
    max-width: 328px !important;
    min-width: 328px !important;
    align-self: flex-start !important;
  }
}
@media (min-width: 992px) {
  .mdc-top-app-bar__row .container,
  main#main-content .container {
    max-width: none !important;
  }
}

/* =====================================================
   ✅ DESKTOP ALIGNMENT: line up banner top with login form card top
   ===================================================== */
@media (min-width: 992px) {

  /* Ensure the two columns align from the same top edge */
  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  .mdc-card.mdc-card-content.card.flex-grow-1 {
    align-items: flex-start !important;
  }

  /* Remove any padding/margin coming from the login-side wrapper */
  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #loginSide.login-section.card-body {
    padding-top: 0 !important;
    margin-top: 0 !important;
  }

  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #loginSide {
    padding-top: 0 !important;
    margin-top: 0 !important;
    align-self: flex-start !important;
  }

  /* Remove any default margin on the banner wrapper/image */
  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #ku-banner {
    margin-top: 0 !important;
  }

  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #ku-banner img,
  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #banner-img {
    margin-top: 0 !important;
    display: block !important;
  }
}
/* =====================================================
   ✅ KEEP SIDE-BY-SIDE until mobile (>=768px)
   ===================================================== */
@media (min-width: 768px) {
  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  .mdc-card.mdc-card-content.card.flex-grow-1 {
    flex-wrap: nowrap !important;
  }
}
/* =====================================================
   CAS PROCESSING STATE
   ===================================================== */

body.cas-processing #loginSide,
body.cas-processing #loginProviders,
body.cas-processing #ku-banner {
  display: none !important;
}
/* =====================================================
   ✅ PROCESSING REQUEST: widen the main panel
   ===================================================== */

body.cas-processing #loginForm {
  width: calc(100% - 2rem) !important;
  max-width: 820px !important;   /* try 900px if you want wider */
  margin: 0.75rem auto 0 auto !important;
  flex: 0 0 auto !important;
}

/* If the processing content is NOT inside #loginForm in your theme,
   this catches the common wrapper */
body.cas-processing .mdc-card.mdc-card-content.card.flex-grow-1 {
  display: block !important;
  column-gap: 0 !important;
}
@media (min-width: 992px) {
  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  .mdc-card.mdc-card-content.card.flex-grow-1 {
    column-gap: 36px !important;
  }
}
/* =====================================================
   ✅ PROCESSING REQUEST: neutral info panel style
   ===================================================== */

body.cas-processing #loginForm .card,
body.cas-processing #loginForm .mdc-card,
body.cas-processing #loginForm .alert {
  background-color: #e7f0ff !important; /* soft KU-ish blue */
  color: #083a7a !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

body.cas-processing #loginForm .card *,
body.cas-processing #loginForm .mdc-card *,
body.cas-processing #loginForm .alert * {
  color: #083a7a !important;
}
/* =====================================================
   ✅ MOBILE LOGIN (authoritative)
   Providers should match desktop styling (use #loginSide)
   ===================================================== */
@media (max-width: 767.98px) {

  /* ✅ Show loginSide ONLY when real providers exist
     (also overrides Bootstrap d-none d-md-block) */
  body.login.cas-has-loginSide.cas-has-loginSide-providers
  :not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #loginSide.d-none.d-md-block,
  body.login.cas-has-loginSide.cas-has-loginSide-providers
  :not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #loginSide.d-none {
    display: flex !important;
  }

  /* ✅ Hide loginSide when it exists but has NO providers */
  body.login.cas-has-loginSide:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view):not(.cas-has-loginSide-providers)
  #loginSide {
    display: none !important;
  }

  /* ✅ Stack login form first, providers second */
  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  .mdc-card.mdc-card-content.card.flex-grow-1 {
    display: flex !important;
    flex-direction: column !important;
    row-gap: 16px !important;
  }

  /* ✅ Full-width layout — ONLY when providers are meant to be shown */
  body.login.cas-has-loginSide.cas-has-loginSide-providers
  :not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #loginForm,
  body.login.cas-has-loginSide.cas-has-loginSide-providers
  :not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #loginSide {
    width: 100% !important;
    max-width: none !important;
    flex: 0 0 auto !important;
  }

 /* Providers card width (mobile): match login card */
  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #loginSide .card.bg-light {
    width: 100% !important;
    max-width: 560px !important;
    margin: 0 auto !important;
  }

  /* Banner behavior on small screens (keep as you prefer) */
  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #ku-banner {
    display: none !important;
  }

  /* ✅ Never show default CAS providers on mobile login */
  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #loginProviders {
    display: none !important;
  }
}
/* =====================================================
   ✅ PROCESSING REQUEST: widen the inner card itself
   ===================================================== */

body.cas-processing .mdc-card,
body.cas-processing .card {
  width: calc(100% - 2rem) !important;
  max-width: 900px !important;   /* try 1000px if you want even wider */
  margin: 0.75rem auto 0 auto !important;
}
body.cas-processing .mdc-card,
body.cas-processing .card {
  padding-left: 2rem !important;
  padding-right: 2rem !important;
}
/* =====================================================
   ✅ DESKTOP: ensure visible space between providers card and banner
   ===================================================== */
@media (min-width: 992px) {
  body.login:not(.cas-processing):not(.cas-success-view):not(.cas-logout-view)
  #loginSide .card.bg-light {
    margin-bottom: 16px !important; /* tune 12–20 */
  }
}
/* =====================================================
   LOGIN SUCCESS
   ===================================================== */

body.cas-success-view .alert-success {
  background-color: #c3e6cb !important;
  color: #155724 !important;
  border-radius: 0 !important;
  border: 0 !important;
  width: 100% !important;
  max-width: 820px !important;
  margin: 0 auto !important;
  padding: 1.05rem 1.5rem !important;
}

body.cas-success-view .alert-success * {
  color: #155724 !important;
}

body.cas-success-view .mdc-card.mdc-card-content.card.flex-grow-1 {
  display: block !important;
  column-gap: 0 !important;
}

body.cas-success-view #loginForm {
  width: 100% !important;
  max-width: none !important;
  flex: 0 0 auto !important;
}

body.cas-success-view #loginSide,
body.cas-success-view #ku-banner {
  display: none !important;
}
/* =====================================================
   ✅ LOGOUT SUCCESS – FULL-WIDTH (fills outer area)
   ===================================================== */

body.cas-logout-view #logoutMessage,
body.cas-logout-view #logoutBody {
  background-color: #c3e6cb !important;
  color: #155724 !important;

  /* Fill the available content width */
  width: 100% !important;
  max-width: none !important;

  /* Align with the main content wrapper */
  margin: 0 !important;

  /* Comfortable padding, not too tall */
  padding: 0.75rem 1.25rem !important;

  border-radius: 0 !important;
}

/* Keep text left justified */
body.cas-logout-view #logoutMessage *,
body.cas-logout-view #logoutBody * {
  color: #155724 !important;
  text-align: left !important;
}

body.cas-logout-view #logoutMessage h1,
body.cas-logout-view #logoutBody h1 {
  margin: 0 0 0.25rem 0 !important;
  line-height: 1.15 !important;
}

body.cas-logout-view #logoutMessage p,
body.cas-logout-view #logoutBody p {
  margin: 0.15rem 0 !important;
  line-height: 1.25 !important;
}

/* =====================================================
   ✅ LOGOUT: release from login-form width constraint
   ===================================================== */
body.cas-logout-view #loginForm {
  width: 100% !important;
  max-width: none !important;
  flex: 0 0 auto !important;
}
/* =====================================================
   ✅ LOGOUT: remove the big white wrapper slab
   (must come AFTER other .mdc-card rules)
   ===================================================== */
body.cas-logout-view .mdc-card.card {
  background: transparent !important;
  box-shadow: none !important;
  border: 0 !important;
  padding: 0 !important;
}
/* =====================================================
   ✅ LOGOUT: hide right column providers + any banner fragments
   ===================================================== */
body.cas-logout-view #loginSide,
body.cas-logout-view #loginProviders,
body.cas-logout-view #ku-banner {
  display: none !important;
}

/* Optional: make wrapper single-column on logout */
body.cas-logout-view .mdc-card.mdc-card-content.card.flex-grow-1 {
  display: block !important;
}
/* =====================================================
   ✅ DESKTOP: show banner for ALL real login pages that have loginSide
   (providers OR CAS-only services)
   ===================================================== */
@media (min-width: 992px) {
  body.login.cas-has-loginSide.cas-has-loginForm
  #ku-banner {
    display: block !important;
  }
}

/* =====================================================
   FOOTER
   ===================================================== */

.cas-footer {
  padding: 1rem;
  background-color: #0051ba;
}

.cas-footer,
.cas-footer a {
  color: #ffffff;
}

@media (max-width: 960px) {
  #casFooter {
    display: block !important;
  }
}

/* =====================================================
   CAMPUS ALERT
   ===================================================== */

#campusalert {
  width: 100%;
  background-color: #f20017;
  position: relative;
  z-index: 9000;
}

#campusalert .text {
  margin: auto;
  padding: 10px;
}

#campusalert .text .link {
  font-size: 16px;
  font-weight: 600;
  padding: 10px 0;
}

#campusalert .text a {
  color: #ffffff;
  text-decoration: none;
}

#campusalert .text a:hover {
  text-decoration: underline;
}

#campusalert.All-Clear {
  background-color: #2e7d32;
}