/* NOUN Student Portal 6.31.54 — final workspace visibility, mobile drawer and contrast authority.
 * Loaded after every retained Workspace stylesheet. It deliberately owns only private-workspace
 * visibility/contrast and responsive safe-area behaviour. */

body.nsp-private-workspace{
  --nsp54-canvas:#f6f8f6;
  --nsp54-surface:#ffffff;
  --nsp54-surface-2:#f0f5f2;
  --nsp54-text:#14231b;
  --nsp54-body:#34483c;
  --nsp54-muted:#5a6c62;
  --nsp54-line:#c7d3cc;
  --nsp54-line-strong:#aabbb1;
  --nsp54-accent:#17633f;
  --nsp54-accent-hover:#0f4d30;
  --nsp54-accent-soft:#e6f3eb;
  --nsp54-danger:#a22b32;
}
html[data-theme="dark"] body.nsp-private-workspace{
  --nsp54-canvas:#08120d;
  --nsp54-surface:#0f1b15;
  --nsp54-surface-2:#16251d;
  --nsp54-text:#f5faf7;
  --nsp54-body:#dce7e0;
  --nsp54-muted:#b7c6bd;
  --nsp54-line:#40564a;
  --nsp54-line-strong:#587264;
  --nsp54-accent:#92ddb0;
  --nsp54-accent-hover:#b0ebc8;
  --nsp54-accent-soft:#183726;
  --nsp54-danger:#ffb4b8;
}

/* Baseline semantic visibility. Restrict this to Workspace-owned surfaces so service-specific
 * status colours and primary buttons can keep their intended visual meaning. */
body.nsp-private-workspace #nsp-app#nsp-app .nsp-workspace{
  color:var(--nsp54-text)!important;
  -webkit-text-fill-color:currentColor!important;
}
body.nsp-private-workspace #nsp-app#nsp-app .nsp-workspace :is(
  .nsw-page-head h1,.nsw-page-head h2,.nsw-section-heading h2,.nsw-section-heading h3,
  .nsw-panel h2,.nsw-panel h3,.nsw-card h2,.nsw-card h3,.nsw-order-card h2,.nsw-order-card h3,
  .nsw-account-card h2,.nsw-account-card h3,.nsw-tool-card h2,.nsw-tool-card h3,
  .nsw-support-centre h1,.nsw-support-centre h2,.nsw-support-centre h3,
  .nsw-profile-details-panel h2,.nsw-profile-details-panel h3
){color:var(--nsp54-text)!important;-webkit-text-fill-color:currentColor!important;opacity:1!important}
body.nsp-private-workspace #nsp-app#nsp-app .nsp-workspace :is(
  .nsw-page-head p,.nsw-section-heading p,.nsw-panel>p,.nsw-card>p,.nsw-order-card p,
  .nsw-account-card p,.nsw-tool-card p,.nsw-action-copy p,.nsw-order-reference,
  .nsw-support-centre p,.nsw-profile-details-panel p
){color:var(--nsp54-body)!important;-webkit-text-fill-color:currentColor!important;opacity:1!important}
body.nsp-private-workspace #nsp-app#nsp-app .nsp-workspace :is(
  small,.nsw-muted,.nsp-muted,.nsp-hint,.nsp-field-hint,.nsw-service-delivery,.nsw-form-status
){color:var(--nsp54-muted)!important;-webkit-text-fill-color:currentColor!important;opacity:1!important}

/* Forms and secondary controls: prevent inherited low-contrast theme values. */
body.nsp-private-workspace #nsp-app#nsp-app .nsp-workspace :is(input,select,textarea){
  color:var(--nsp54-text)!important;background:var(--nsp54-surface)!important;
  border-color:var(--nsp54-line-strong)!important;-webkit-text-fill-color:currentColor!important;
}
body.nsp-private-workspace #nsp-app#nsp-app .nsp-workspace :is(input,textarea)::placeholder{color:var(--nsp54-muted)!important;opacity:1!important}
body.nsp-private-workspace #nsp-app#nsp-app .nsp-workspace :is(input,select,textarea):focus{
  border-color:var(--nsp54-accent)!important;outline:2px solid color-mix(in srgb,var(--nsp54-accent) 45%,transparent)!important;outline-offset:1px!important;
}
body.nsp-private-workspace #nsp-app#nsp-app .nsp-workspace :is(.nsw-secondary-button,.nsw-action-button,.nsw-link-button){
  opacity:1!important;-webkit-text-fill-color:currentColor!important;
}
html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsp-workspace :is(.nsw-secondary-button,.nsw-action-button){
  background:var(--nsp54-surface-2)!important;color:var(--nsp54-text)!important;border-color:var(--nsp54-line-strong)!important;
}
html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsp-workspace .nsw-link-button{color:var(--nsp54-accent)!important}

/* Header/popover legibility, including account and unified Notifications + Support. */
html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app :is(.nsw-topbar,.nsw-notification-panel,.nsw-support-inbox-panel,.nsp-user-menu,.nsp-search-dd){
  color:var(--nsp54-text)!important;border-color:var(--nsp54-line)!important;
}
html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app :is(.nsw-support-inbox-panel,.nsw-notification-panel,.nsp-user-menu,.nsp-search-dd){background:var(--nsp54-surface)!important}
html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app :is(.nsw-support-inbox-panel,.nsw-notification-panel,.nsp-user-menu,.nsp-search-dd) :is(strong,b,label){color:var(--nsp54-text)!important}
html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app :is(.nsw-support-inbox-panel,.nsw-notification-panel,.nsp-user-menu,.nsp-search-dd) :is(small,p){color:var(--nsp54-muted)!important}

/* --------------------------------------------------------------------------
   Phone services drawer — final two-theme authority + dynamic viewport safety.
   -------------------------------------------------------------------------- */
@media (max-width:759px){
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar{
    height:100dvh!important;max-height:100dvh!important;min-height:0!important;
    top:0!important;bottom:0!important;overflow:hidden!important;
    background:var(--nsp54-surface)!important;color:var(--nsp54-text)!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory{
    color:var(--nsp54-text)!important;background:var(--nsp54-surface)!important;
    padding:20px 22px calc(188px + env(safe-area-inset-bottom))!important;
    scrollbar-color:var(--nsp54-line-strong) transparent!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory .nsw-menu-heading{
    border-bottom:1px solid var(--nsp54-line)!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory .nsw-menu-heading strong{
    color:var(--nsp54-text)!important;-webkit-text-fill-color:currentColor!important;
    font-size:1.16rem!important;font-weight:820!important;letter-spacing:-.01em!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory .nsw-menu-heading button{
    display:grid!important;place-items:center!important;width:44px!important;height:44px!important;
    background:var(--nsp54-surface-2)!important;border:1px solid var(--nsp54-line-strong)!important;
    color:var(--nsp54-text)!important;-webkit-text-fill-color:currentColor!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory .nsw-menu-heading button svg{
    color:inherit!important;stroke:currentColor!important;opacity:1!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory h2{
    color:var(--nsp54-muted)!important;-webkit-text-fill-color:currentColor!important;
    font-size:.72rem!important;font-weight:850!important;letter-spacing:.09em!important;opacity:1!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory> :is(a,button){
    color:var(--nsp54-text)!important;-webkit-text-fill-color:currentColor!important;
    border-bottom-color:var(--nsp54-line)!important;background:transparent!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory> :is(a,button):hover,
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory> :is(a,button):focus-visible{
    background:var(--nsp54-surface-2)!important;color:var(--nsp54-text)!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory> :is(a,button)>span{
    color:inherit!important;-webkit-text-fill-color:currentColor!important;font-weight:590!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory> :is(a,button) small{
    color:var(--nsp54-muted)!important;-webkit-text-fill-color:currentColor!important;
    font-size:.75rem!important;line-height:1.42!important;opacity:1!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory> :is(a,button)>svg{
    color:var(--nsp54-accent)!important;stroke:currentColor!important;opacity:1!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory> :is(a,button)>svg:last-child{
    color:var(--nsp54-text)!important;
  }

  /* Fixed support lives above a permanently reachable Logout row. */
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar.open .nsw-sidebar-help{
    left:12px!important;right:12px!important;
    bottom:calc(62px + env(safe-area-inset-bottom))!important;
    min-height:62px!important;
    background:var(--nsp54-surface-2)!important;color:var(--nsp54-text)!important;
    border:1px solid var(--nsp54-line-strong)!important;
    box-shadow:0 12px 30px rgba(10,25,17,.14)!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar.open .nsw-sidebar-help>span{
    background:var(--nsp54-accent-soft)!important;color:var(--nsp54-accent)!important;
    -webkit-text-fill-color:currentColor!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar.open .nsw-sidebar-help>span svg{
    color:inherit!important;stroke:currentColor!important;opacity:1!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar.open .nsw-sidebar-help strong{
    color:var(--nsp54-text)!important;-webkit-text-fill-color:currentColor!important;opacity:1!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar.open .nsw-sidebar-help small{
    color:var(--nsp54-muted)!important;-webkit-text-fill-color:currentColor!important;opacity:1!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar.open .nsw-sidebar-help>svg{
    color:var(--nsp54-muted)!important;stroke:currentColor!important;opacity:1!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar .nsw-logout{
    min-height:56px!important;height:auto!important;bottom:0!important;
    padding:10px 22px calc(10px + env(safe-area-inset-bottom))!important;
    background:var(--nsp54-surface)!important;color:var(--nsp54-danger)!important;
    border-top:1px solid var(--nsp54-line)!important;
    -webkit-text-fill-color:currentColor!important;
  }
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar .nsw-logout :is(span,svg){color:inherit!important;-webkit-text-fill-color:currentColor!important;stroke:currentColor!important}

  /* Backdrop needs enough opacity in both themes without muddying the drawer. */
  body.nsp-private-workspace #nsp-app#nsp-app .nsp-side-overlay,
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar-overlay{background:rgba(4,12,8,.58)!important}
}

/* Dark phone drawer: explicit ownership beats retained light-mode !important rules. */
@media (max-width:759px){
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar,
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory{
    background:#07110c!important;color:#f5faf7!important;
  }
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory .nsw-menu-heading{border-color:#4b6255!important}
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory .nsw-menu-heading button{
    background:#14241b!important;border-color:#5b7365!important;color:#f5faf7!important;
  }
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory h2{color:#c4d2c9!important}
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory> :is(a,button){
    color:#eef6f1!important;border-bottom-color:#40564a!important;
  }
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory> :is(a,button)>span{color:#eef6f1!important}
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory> :is(a,button) small{color:#bac8c0!important}
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory> :is(a,button)>svg{color:#96dfb3!important}
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory> :is(a,button)>svg:last-child{color:#e6efe9!important}
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory> :is(a,button):hover,
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-mobile-directory> :is(a,button):focus-visible{background:#12241a!important;color:#fff!important}
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar.open .nsw-sidebar-help{
    background:#102219!important;border-color:#53705f!important;color:#f5faf7!important;
    box-shadow:0 12px 34px rgba(0,0,0,.38)!important;
  }
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar.open .nsw-sidebar-help>span{background:#1a3a29!important;color:#9be5b8!important}
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar.open .nsw-sidebar-help strong{color:#f5faf7!important}
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar.open .nsw-sidebar-help small{color:#c2d0c7!important}
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar.open .nsw-sidebar-help>svg{color:#d7e3dc!important}
  html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar .nsw-logout{
    background:#09150f!important;color:#ffb4b8!important;border-color:#40564a!important;
  }
}

/* Tablet rail readability: labels must remain legible at compact sizes. */
@media (min-width:760px) and (max-width:1100px){
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-primary-nav .nsp-nav-item{color:#d5e1da!important}
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-primary-nav .nsp-nav-item>span{color:inherit!important;-webkit-text-fill-color:currentColor!important}
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-primary-nav .nsp-nav-item.active{color:#fff!important}
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar-help strong{color:#fff!important}
  body.nsp-private-workspace #nsp-app#nsp-app .nsw-sidebar-help small{color:#d0ddd5!important}
}

/* States that often become unreadable when a broad theme rule wins. */
html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsp-workspace :is(
  .nsw-status,.nsw-count-badge,.nsw-reason,.nsp-badge,.nsw-support-badge,.nsw-support-priority-chip
){opacity:1!important;-webkit-text-fill-color:currentColor!important}
html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsp-workspace .nsw-status:not(.is-payment):not(.is-attention):not(.is-completed):not(.is-cancelled){background:#1a2a21!important;color:#dce7e0!important}
html[data-theme="dark"] body.nsp-private-workspace #nsp-app#nsp-app .nsp-workspace :is(.nsw-count-badge,.nsw-reason){background:#183726!important;color:#a9e8c1!important}

/* Focus and disabled states must communicate state without disappearing. */
body.nsp-private-workspace #nsp-app#nsp-app :is(a,button,input,select,textarea):focus-visible{outline:2px solid var(--nsp54-accent)!important;outline-offset:2px!important}
body.nsp-private-workspace #nsp-app#nsp-app :is(button,a,[role="button"])[aria-disabled="true"],
body.nsp-private-workspace #nsp-app#nsp-app :is(button,input,select,textarea):disabled{opacity:.58!important;cursor:not-allowed!important}

@media (prefers-reduced-motion:reduce){
  body.nsp-private-workspace #nsp-app#nsp-app *{scroll-behavior:auto!important}
}
