/* NexGen Production QA & Stabilization rc268
   Intentionally excludes the approved Student Portal and locked public homepage. */

/* Layout containment: prevent oversized children from widening portal shells. */
:is(body.admin-site,body.teacher-site,body.auth-site) main,
:is(body.admin-site,body.teacher-site,body.auth-site) .content,
:is(body.admin-site,body.teacher-site,body.auth-site) form,
:is(body.admin-site,body.teacher-site,body.auth-site) section,
:is(body.admin-site,body.teacher-site,body.auth-site) article{
  min-width:0;
}
:is(body.admin-site,body.teacher-site,body.auth-site) img,
:is(body.admin-site,body.teacher-site,body.auth-site) video,
:is(body.admin-site,body.teacher-site,body.auth-site) canvas,
:is(body.admin-site,body.teacher-site,body.auth-site) svg{
  max-width:100%;
}

/* Production focus visibility — keyboard users must never lose the cursor. */
:is(body.admin-site,body.teacher-site,body.auth-site) :is(
  a,button,input,select,textarea,[tabindex]:not([tabindex="-1"])
):focus-visible{
  outline:3px solid rgba(57,102,207,.34)!important;
  outline-offset:2px!important;
}

/* Forms retain each suite's visual language while meeting practical readability/tap targets. */
:is(body.admin-site,body.teacher-site,body.auth-site) :is(input,select,textarea){
  max-width:100%;
}
:is(body.admin-site,body.teacher-site) :is(input,select,textarea,button,.btn){
  font-size:max(14px,1em);
}
:is(body.admin-site,body.teacher-site) :is(button,.btn,a.btn,input[type="submit"],input[type="button"]){
  min-height:38px;
}

/* Long values, names, IDs and URLs should wrap instead of breaking cards. */
:is(body.admin-site,body.teacher-site) :is(
  td,th,.card,.panel,[class*="Card"],[class*="card"],[class*="Panel"],[class*="panel"]
){
  overflow-wrap:anywhere;
  word-break:normal;
}

/* Tables: preserve existing style, only guarantee safe horizontal behavior. */
:is(body.admin-site,body.teacher-site) :is(
  .table-wrap,[class*="table-wrap"],[class*="tableWrap"],[class*="TableWrap"]
){
  max-width:100%;
  overflow-x:auto;
  overscroll-behavior-inline:contain;
  -webkit-overflow-scrolling:touch;
}

/* Alerts should remain visible and readable even when old modules use tiny defaults. */
:is(body.admin-site,body.teacher-site,body.auth-site) :is(.alert,.notice,[class*="alert"]){
  line-height:1.5;
}

/* Skip link: visible when keyboard-focused, otherwise unobtrusive. */
.ng-skip-link{
  position:fixed!important;
  left:12px!important;
  top:12px!important;
  z-index:100000!important;
  transform:translateY(-150%)!important;
  padding:10px 14px!important;
  border-radius:9px!important;
  background:#0d2850!important;
  color:#fff!important;
  font-size:14px!important;
  font-weight:850!important;
  text-decoration:none!important;
  box-shadow:0 10px 28px rgba(0,0,0,.18)!important;
}
.ng-skip-link:focus{
  transform:none!important;
}

/* Preserve reduced-motion preferences across premium Admin/Lecturer effects. */
@media(prefers-reduced-motion:reduce){
  :is(body.admin-site,body.teacher-site,body.auth-site) *,
  :is(body.admin-site,body.teacher-site,body.auth-site) *::before,
  :is(body.admin-site,body.teacher-site,body.auth-site) *::after{
    scroll-behavior:auto!important;
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
  }
}

/* Mobile: 16px form controls prevent browser zoom and improve readability. */
@media(max-width:700px){
  :is(body.admin-site,body.teacher-site,body.auth-site) :is(input,select,textarea){
    font-size:16px!important;
  }
}

/* Print: hide portal chrome without changing screen layouts. */
@media print{
  body.admin-site .sidebar,
  body.teacher-site .sidebar,
  :is(body.admin-site,body.teacher-site) .topbar,
  :is(body.admin-site,body.teacher-site) [class*="sidebar-overlay"],
  :is(body.admin-site,body.teacher-site) [data-admin-menu-toggle],
  :is(body.admin-site,body.teacher-site) [data-lecturer-menu-toggle]{
    display:none!important;
  }
  :is(body.admin-site,body.teacher-site) main,
  :is(body.admin-site,body.teacher-site) .content{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding:0!important;
  }
}
