/* V207 — Student-only mobile safe area + stable side drawer.
   V38 replaces the shared dashboard/public header with .student-global-* for students,
   so the V204/V205 .ks-dashboard-* and .public-site-* fixes never reached the final
   student DOM. Keep this override last in the cascade and limited to narrow screens. */

@media (max-width: 980px) {
  :root {
    --vnt-student-header-base: 78px;
    --vnt-student-safe-top: env(safe-area-inset-top, 0px);
    --vnt-student-safe-bottom: env(safe-area-inset-bottom, 0px);
  }

  /* Keep the final V38 student header below the Android/iOS status-bar or cutout. */
  .student-global-header {
    box-sizing: border-box !important;
    min-height: calc(var(--vnt-student-header-base) + var(--vnt-student-safe-top)) !important;
    padding-top: var(--vnt-student-safe-top) !important;
    overflow: visible !important;
  }

  /* Reserve exactly the same total header height on both student layout variants. */
  body.student-global-public {
    padding-top: calc(var(--vnt-student-header-base) + var(--vnt-student-safe-top)) !important;
  }

  body:has(.ks-dashboard .student-global-header) .ks-dashboard {
    padding-top: calc(var(--vnt-student-header-base) + var(--vnt-student-safe-top)) !important;
  }

  /*
   * Keep the menu mounted as a true vertical side drawer. V38 originally toggled
   * display:none/flex; transform + visibility prevents older flex/display rules from
   * collapsing the student menu to a clipped horizontal strip on some WebViews.
   */
  .student-global-nav {
    display: flex !important;
    position: fixed !important;
    top: calc(var(--vnt-student-header-base) + var(--vnt-student-safe-top)) !important;
    right: 8px !important;
    left: auto !important;
    bottom: max(8px, var(--vnt-student-safe-bottom)) !important;
    width: min(86vw, 320px) !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    margin: 0 !important;
    padding: 12px !important;
    z-index: 240 !important;
    flex: 0 0 auto !important;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    gap: 5px !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateX(calc(100% + 20px));
    transition: transform .2s ease, opacity .2s ease, visibility 0s linear .2s;
  }

  html[dir="ltr"] .student-global-nav {
    right: auto !important;
    left: 8px !important;
    transform: translateX(calc(-100% - 20px));
  }

  .student-global-nav.open {
    display: flex !important;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateX(0) !important;
    transition: transform .2s ease, opacity .2s ease, visibility 0s;
  }

  .student-global-nav > a {
    display: flex !important;
    flex: 0 0 auto !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 46px !important;
    align-items: center !important;
    justify-content: space-between !important;
    white-space: normal !important;
    overflow-wrap: anywhere;
  }

  .student-global-logout {
    margin-top: auto !important;
  }
}

@media (max-width: 760px) {
  :root {
    --vnt-student-header-base: 70px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .student-global-nav {
    transition: none !important;
  }
}
