/*
 * NOUNUniversity Theme 17.0.9 — comprehensive public contrast boundary.
 *
 * This file is intentionally loaded after all legacy/public Theme 17 styles.
 * It excludes the standalone Student Commons document and the private Student
 * Portal workspace, which own separate audited contrast boundaries.
 */

body.ns17:not(.nsc5-document) {
  --ns1709-canvas: #ffffff;
  --ns1709-surface: #ffffff;
  --ns1709-surface-alt: #f1f5f3;
  --ns1709-ink: #10231b;
  --ns1709-body: #24392f;
  --ns1709-muted: #405249;
  --ns1709-border: #9aa9a1;
  --ns1709-border-soft: #cbd5d0;
  --ns1709-link: #005a36;
  --ns1709-link-hover: #00442a;
  --ns1709-primary: #005a36;
  --ns1709-primary-hover: #00442a;
  --ns1709-accent-soft: #dff3e8;
  --ns1709-focus: #005fcc;
  --ns1709-danger: #8f111b;
  --ns1709-danger-soft: #fff0f1;
  --ns1709-warning: #6b3d00;
  --ns1709-warning-soft: #fff4d6;
  --ns1709-success: #005a36;
  --ns1709-success-soft: #e2f5ea;
  color: var(--ns1709-body) !important;
  -webkit-text-fill-color: currentColor;
}

[data-theme="dark"] body.ns17:not(.nsc5-document),
body.ns17.dark-mode:not(.nsc5-document) {
  --ns1709-canvas: #0b1411;
  --ns1709-surface: #111b17;
  --ns1709-surface-alt: #192620;
  --ns1709-ink: #f7fbf9;
  --ns1709-body: #e0e9e4;
  --ns1709-muted: #c2cec7;
  --ns1709-border: #687a70;
  --ns1709-border-soft: #43544b;
  --ns1709-link: #9bf1c3;
  --ns1709-link-hover: #d0ffe6;
  --ns1709-primary: #005a36;
  --ns1709-primary-hover: #00442a;
  --ns1709-accent-soft: #183326;
  --ns1709-focus: #8cc8ff;
  --ns1709-danger: #ffb6bc;
  --ns1709-danger-soft: #3c181c;
  --ns1709-warning: #ffdc91;
  --ns1709-warning-soft: #3b2a0f;
  --ns1709-success: #9bf1c3;
  --ns1709-success-soft: #183326;
}

/* Global public text. The explicit text-fill assignment prevents browser and
   legacy theme declarations from producing apparently blank text. */
body.ns17:not(.nsc5-document) :where(
  .ns-main, .ns-main-editorial, .ns-content, .entry-content, .ns-ed-content,
  .ns-page-card, .ns-post-card, .ns-card, .ns-card-compact, .ns-widget,
  .ns-sidebar, .ns-breadcrumbs, .ns-search-dd, .ns-user-menu,
  .wp-block-group, .wp-block-table, .wp-block-quote, .comment-body
) {
  color: var(--ns1709-body) !important;
  -webkit-text-fill-color: currentColor !important;
}

body.ns17:not(.nsc5-document) :where(h1,h2,h3,h4,h5,h6,.ns-entry-title,.ns-card-title,.ns-widget-title,.wp-block-heading,strong,b,legend,summary) {
  color: var(--ns1709-ink) !important;
  -webkit-text-fill-color: currentColor !important;
}

body.ns17:not(.nsc5-document) :where(p,li,dd,dt,figcaption,caption,small,.ns-entry-meta,.ns-card-meta,.ns-ed-meta,.ns-bc,.ns-cat-desc,.ns-card-excerpt,.ns-author-bio) {
  color: var(--ns1709-muted) !important;
  -webkit-text-fill-color: currentColor !important;
  opacity: 1 !important;
}

body.ns17:not(.nsc5-document) :where(a:not(.ns17-btn):not(.ns-support-hdr-btn):not(.ns-svc-cta):not(.nsp-hub-inline-cta):not(.wp-element-button):not(.ns-cb-btn):not(.ns-share__btn)) {
  color: var(--ns1709-link) !important;
  -webkit-text-fill-color: currentColor !important;
}
body.ns17:not(.nsc5-document) :where(a:not(.ns17-btn):not(.ns-support-hdr-btn):not(.ns-svc-cta):not(.nsp-hub-inline-cta):not(.wp-element-button):not(.ns-cb-btn):not(.ns-share__btn)):hover,
body.ns17:not(.nsc5-document) :where(a:not(.ns17-btn):not(.ns-support-hdr-btn):not(.ns-svc-cta):not(.nsp-hub-inline-cta):not(.wp-element-button):not(.ns-cb-btn):not(.ns-share__btn)):focus-visible {
  color: var(--ns1709-link-hover) !important;
  -webkit-text-fill-color: currentColor !important;
}

/* Public surfaces. */
body.ns17:not(.nsc5-document) :where(
  .ns-post-card,.ns-page-card,.ns-card,.ns-card-compact,.ns-widget,.ns-sidebar,
  .ns17-route-card,.ns17-service-card,.ns17-tool-card,.ns17-guide-card,
  .ns17-next-card,.ns17-panel-grid>div,.ns-author-box,.ns-share,
  .ns-toc,.ns-ed-toc,.ns-search-dd,.ns-user-menu,.comment-body,
  .wp-block-group,.wp-block-table,.wp-block-quote
) {
  background-color: var(--ns1709-surface) !important;
  border-color: var(--ns1709-border-soft) !important;
  color: var(--ns1709-body) !important;
  -webkit-text-fill-color: currentColor !important;
}

body.ns17:not(.nsc5-document) :where(.ns17-route-card,.ns17-service-card,.ns17-tool-card,.ns17-guide-card,.ns-card,.ns-card-compact):hover {
  border-color: var(--ns1709-link) !important;
  color: var(--ns1709-ink) !important;
  -webkit-text-fill-color: currentColor !important;
}

/* Header and navigation. */
body.ns17:not(.nsc5-document) :where(.ns-hdr,.sub-menu,.tng-nav__mobile[data-style="platform"]) {
  background: var(--ns1709-surface) !important;
  border-color: var(--ns1709-border-soft) !important;
}
body.ns17:not(.nsc5-document) :where(.ns-logo,.ns-nav-ul>li>a,.sub-menu a,.ns-user-btn,.ns-user-name,.ns-user-chev,.tng-nav__mobile a,.tng-nav__mobile button) {
  color: var(--ns1709-ink) !important;
  -webkit-text-fill-color: currentColor !important;
  opacity: 1 !important;
}
body.ns17:not(.nsc5-document) :where(.ns-nav-ul>li>a,.sub-menu a,.tng-nav__mobile a):hover,
body.ns17:not(.nsc5-document) :where(.ns-nav-ul>li.current-menu-item>a,.ns-nav-ul>li.current-menu-ancestor>a,.sub-menu a[aria-current="page"]) {
  background: var(--ns1709-accent-soft) !important;
  color: var(--ns1709-link-hover) !important;
  -webkit-text-fill-color: currentColor !important;
}

/* Filled and outlined controls, including all nested labels/icons. */
body.ns17:not(.nsc5-document) :where(
  .ns17-btn-primary,.ns17-btn-dark,.ns-support-hdr-btn,.ns-svc-cta,
  .nsp-hub-inline-cta,.ns-load-more-btn,.wp-element-button,
  input[type="submit"],button[type="submit"],.ns-btt,.nspwa-install-pill
) {
  background: var(--ns1709-primary) !important;
  border-color: var(--ns1709-primary) !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  opacity: 1 !important;
}
body.ns17:not(.nsc5-document) :where(
  .ns17-btn-primary,.ns17-btn-dark,.ns-support-hdr-btn,.ns-svc-cta,
  .nsp-hub-inline-cta,.ns-load-more-btn,.wp-element-button,
  input[type="submit"],button[type="submit"],.ns-btt,.nspwa-install-pill
) :where(span,strong,b,small,svg) {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}
body.ns17:not(.nsc5-document) :where(
  .ns17-btn-primary,.ns17-btn-dark,.ns-support-hdr-btn,.ns-svc-cta,
  .nsp-hub-inline-cta,.ns-load-more-btn,.wp-element-button,
  input[type="submit"],button[type="submit"],.ns-btt,.nspwa-install-pill
):hover {
  background: var(--ns1709-primary-hover) !important;
  border-color: var(--ns1709-primary-hover) !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

body.ns17:not(.nsc5-document) :where(
  .ns17-btn-secondary,.ns-icon-btn,.ns-nav-toggle,.ns-user-btn,.ns-portal-btn,
  .ns-cmt-open,.page-numbers,.nav-links a,.post-page-numbers,.ns-search-submit,
  button:not([type="submit"]):not(.ns-share__btn):not(.ns-cb-btn)
) {
  background: var(--ns1709-surface) !important;
  border-color: var(--ns1709-border) !important;
  color: var(--ns1709-link) !important;
  -webkit-text-fill-color: currentColor !important;
  opacity: 1 !important;
}
body.ns17:not(.nsc5-document) :where(
  .ns17-btn-secondary,.ns-icon-btn,.ns-nav-toggle,.ns-user-btn,.ns-portal-btn,
  .ns-cmt-open,.page-numbers,.nav-links a,.post-page-numbers,.ns-search-submit,
  button:not([type="submit"]):not(.ns-share__btn):not(.ns-cb-btn)
):hover {
  background: var(--ns1709-accent-soft) !important;
  border-color: var(--ns1709-link) !important;
  color: var(--ns1709-link-hover) !important;
  -webkit-text-fill-color: currentColor !important;
}

/* Fields and option controls. */
body.ns17:not(.nsc5-document) :where(input:not([type="checkbox"]):not([type="radio"]),select,textarea) {
  background: var(--ns1709-surface) !important;
  border-color: var(--ns1709-border) !important;
  color: var(--ns1709-ink) !important;
  -webkit-text-fill-color: var(--ns1709-ink) !important;
  opacity: 1 !important;
}
body.ns17:not(.nsc5-document) :where(input,textarea)::placeholder {
  color: var(--ns1709-muted) !important;
  -webkit-text-fill-color: var(--ns1709-muted) !important;
  opacity: 1 !important;
}
body.ns17:not(.nsc5-document) select option {
  background: var(--ns1709-surface) !important;
  color: var(--ns1709-ink) !important;
}
body.ns17:not(.nsc5-document) :where(input[type="checkbox"],input[type="radio"]) {
  accent-color: var(--ns1709-primary) !important;
}

/* Editorial post hero: explicit inverse rules stop the generic dark-mode link
   rule from turning the category pill into pale text on a pale background. */
body.ns17:not(.nsc5-document) .ns-ed-hero {
  background: var(--ns1709-surface-alt) !important;
  border-color: var(--ns1709-border-soft) !important;
  color: var(--ns1709-ink) !important;
  -webkit-text-fill-color: currentColor !important;
}
[data-theme="dark"] body.ns17:not(.nsc5-document) .ns-ed-hero,
body.ns17.dark-mode:not(.nsc5-document) .ns-ed-hero {
  background: #1b2b32 !important;
  border-color: #5c707a !important;
  color: #ffffff !important;
}
body.ns17:not(.nsc5-document) .ns-ed-hero-has-img {
  background-image: var(--ns-ed-bg) !important;
  background-position: center !important;
  background-size: cover !important;
  background-color: #10231b !important;
  color: #ffffff !important;
}
body.ns17:not(.nsc5-document) .ns-ed-hero-overlay {
  background: linear-gradient(180deg,rgba(2,15,10,.58),rgba(2,15,10,.88)) !important;
}
body.ns17:not(.nsc5-document) :where(.ns-ed-title,.ns-ed-hero .ns-ed-title) {
  color: inherit !important;
  -webkit-text-fill-color: currentColor !important;
}
body.ns17:not(.nsc5-document) :where(.ns-ed-sub,.ns-ed-meta,.ns-ed-meta a,.ns-ed-bc,.ns-ed-bc a) {
  color: var(--ns1709-muted) !important;
  -webkit-text-fill-color: currentColor !important;
  opacity: 1 !important;
}
[data-theme="dark"] body.ns17:not(.nsc5-document) :where(.ns-ed-sub,.ns-ed-meta,.ns-ed-meta a,.ns-ed-bc,.ns-ed-bc a),
body.ns17.dark-mode:not(.nsc5-document) :where(.ns-ed-sub,.ns-ed-meta,.ns-ed-meta a,.ns-ed-bc,.ns-ed-bc a),
body.ns17:not(.nsc5-document) .ns-ed-hero-has-img :where(.ns-ed-sub,.ns-ed-meta,.ns-ed-meta a,.ns-ed-bc,.ns-ed-bc a) {
  color: #e0e9e4 !important;
  -webkit-text-fill-color: #e0e9e4 !important;
}
body.ns17:not(.nsc5-document) .ns-ed-cat {
  background: var(--ns1709-primary) !important;
  border: 1px solid var(--ns1709-primary) !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  opacity: 1 !important;
}
body.ns17:not(.nsc5-document) .ns-ed-cat:hover,
body.ns17:not(.nsc5-document) .ns-ed-cat:focus-visible {
  background: var(--ns1709-primary-hover) !important;
  border-color: #ffffff !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}
body.ns17:not(.nsc5-document) .ns-ed-hero-has-img .ns-ed-cat {
  background: rgba(0,68,42,.94) !important;
  border-color: rgba(255,255,255,.82) !important;
}

/* Editorial body, TOC and drop cap. */
body.ns17:not(.nsc5-document) .ns-ed-body {
  background: var(--ns1709-canvas) !important;
  color: var(--ns1709-body) !important;
}
body.ns17:not(.nsc5-document) .ns-ed-toc {
  background: var(--ns1709-surface) !important;
  border-color: var(--ns1709-border) !important;
}
body.ns17:not(.nsc5-document) .ns-ed-toc :where(strong,li,li::before) {
  color: var(--ns1709-muted) !important;
  -webkit-text-fill-color: currentColor !important;
}
body.ns17:not(.nsc5-document) .ns-ed-toc a {
  color: var(--ns1709-link) !important;
  -webkit-text-fill-color: var(--ns1709-link) !important;
}
body.ns17:not(.nsc5-document) .ns-ed-toc a:hover,
body.ns17:not(.nsc5-document) .ns-ed-toc a.ns-ed-toc-active {
  color: var(--ns1709-link-hover) !important;
  -webkit-text-fill-color: var(--ns1709-link-hover) !important;
}
body.ns17:not(.nsc5-document) .ns-ed-content > p:first-of-type::first-letter {
  color: var(--ns1709-link) !important;
  -webkit-text-fill-color: var(--ns1709-link) !important;
}
[data-theme="dark"] body.ns17:not(.nsc5-document) .ns-ed-content > p:first-of-type::first-letter,
body.ns17.dark-mode:not(.nsc5-document) .ns-ed-content > p:first-of-type::first-letter {
  color: #9bf1c3 !important;
  -webkit-text-fill-color: #9bf1c3 !important;
}

/* Pills, tags, badges and counters. Notification/count text must never inherit
   transparent or surface-coloured text-fill. */
body.ns17:not(.nsc5-document) :where(.ns-tag,.ns-card-cat,.ns-cat-label,[class*="badge"],[class*="pill"],[class*="count"]) {
  background: var(--ns1709-accent-soft) !important;
  border-color: var(--ns1709-link) !important;
  color: var(--ns1709-link-hover) !important;
  -webkit-text-fill-color: var(--ns1709-link-hover) !important;
  opacity: 1 !important;
}
body.ns17:not(.nsc5-document) :where(.ns-tag,.ns-card-cat,.ns-cat-label,[class*="badge"],[class*="pill"],[class*="count"]) :where(span,strong,b,small) {
  color: inherit !important;
  -webkit-text-fill-color: currentColor !important;
}

/* Social/share buttons retain their semantic brand backgrounds while labels
   remain visible in both browser themes. */
body.ns17:not(.nsc5-document) :where(.ns-share__btn,.ns-cb-btn) {
  opacity: 1 !important;
  -webkit-text-fill-color: currentColor !important;
}
body.ns17:not(.nsc5-document) :where(.ns-share__btn,.ns-cb-btn) :where(span,strong,b,svg) {
  color: inherit !important;
  -webkit-text-fill-color: currentColor !important;
}
body.ns17:not(.nsc5-document) .ns-share__btn--copy {
  background: var(--ns1709-surface) !important;
  border-color: var(--ns1709-border) !important;
  color: var(--ns1709-link) !important;
}

/* Tables and notices. */
body.ns17:not(.nsc5-document) table {
  background: var(--ns1709-surface) !important;
  color: var(--ns1709-body) !important;
}
body.ns17:not(.nsc5-document) table th {
  background: var(--ns1709-accent-soft) !important;
  color: var(--ns1709-ink) !important;
  -webkit-text-fill-color: var(--ns1709-ink) !important;
}
body.ns17:not(.nsc5-document) table td {
  background: var(--ns1709-surface) !important;
  border-color: var(--ns1709-border-soft) !important;
  color: var(--ns1709-body) !important;
  -webkit-text-fill-color: var(--ns1709-body) !important;
}
body.ns17:not(.nsc5-document) :where(blockquote,.wp-block-quote,.ns-notice,.ns-alert) {
  background: var(--ns1709-surface-alt) !important;
  border-color: var(--ns1709-link) !important;
  color: var(--ns1709-body) !important;
}
body.ns17:not(.nsc5-document) :where(blockquote,.wp-block-quote,.ns-notice,.ns-alert) :where(p,li,strong) {
  color: inherit !important;
  -webkit-text-fill-color: currentColor !important;
}

/* Disabled states stay distinguishable without hiding their labels. */
body.ns17:not(.nsc5-document) :where(button:disabled,input:disabled,select:disabled,textarea:disabled,[aria-disabled="true"]) {
  background: var(--ns1709-surface-alt) !important;
  border-color: var(--ns1709-border) !important;
  color: var(--ns1709-muted) !important;
  -webkit-text-fill-color: var(--ns1709-muted) !important;
  opacity: 1 !important;
  filter: none !important;
  box-shadow: none !important;
}

body.ns17:not(.nsc5-document) :focus-visible {
  outline: 3px solid var(--ns1709-focus) !important;
  outline-offset: 3px !important;
}

@media (forced-colors: active) {
  body.ns17:not(.nsc5-document) :where(button,a,input,select,textarea,summary,[role="button"]) {
    forced-color-adjust: auto;
  }
  body.ns17:not(.nsc5-document) :focus-visible { outline-color: Highlight !important; }
  body.ns17:not(.nsc5-document) :where([class*="badge"],[class*="pill"],[class*="count"],.ns-ed-cat) {
    border: 1px solid CanvasText !important;
  }
}
