/* ==========================================================================
   Rasmussen program page — PRINT STYLESHEET
   Target: /degrees/nursing/practical-nursing/ (works for any page built on
   the same program-page widgets: hero-csplit, otabs, faq-list, tflat, etc.)

   Goals
   1. Print the *information* (dates, costs, outcomes, courses, requirements,
      FAQs, accreditation, footnotes) — not the marketing chrome.
   2. Expand everything hidden behind tabs and accordions.
   3. Black-on-white, ink-light, readable at arm's length; brand green used
      only for headings and rules.
   4. Keep the existing footnote print behaviour (littlefoot + .page-footnotes).

   Load with:  <link rel="stylesheet" href="print.css" media="print">
   or append to the main bundle (everything is already inside @media print).
   ========================================================================== */

@media print {

  /* ---------- 0. Tokens ---------------------------------------------------- */
  :root {
    --p-ink: #000;
    --p-muted: #444;
    --p-rule: #bbb;
    --p-brand: #004712;            /* Rasmussen green — prints as near-black in grayscale */
    --p-tint: #f2f5f3;             /* very light fill for key boxes (ignored if bg graphics off) */
    --p-origin: "rasmussen.edu";   /* prefix printed before root-relative link URLs */
  }

  @page {
    size: letter;
    margin: 0.6in 0.6in 0.7in;
  }

  /* ---------- 1. Global reset --------------------------------------------- */
  *,
  *::before,
  *::after {
    background: transparent !important;
    color: var(--p-ink) !important;
    box-shadow: none !important;
    text-shadow: none !important;
    filter: none !important;
    -webkit-text-fill-color: currentColor !important;  /* gradient text (e.g. h1 .accent) is transparent once backgrounds are stripped */
    -webkit-mask-image: none !important;               /* scroll-fade masks (e.g. campus list) */
    mask-image: none !important;
    animation: none !important;
    transition: none !important;
  }

  html, body {
    background: #fff !important;
    font-size: 10.5pt;
    line-height: 1.4;
    width: auto !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    /* An open modal (e.g. the full course list) locks scrolling with
       overflow:hidden / position:fixed on html/body, which cuts print to one page */
    overflow: visible !important;
    position: static !important;
  }

  body { print-color-adjust: exact; -webkit-print-color-adjust: exact; }

  /* Scroll-reveal widgets sit at opacity:0 until scrolled into view, and the
     hero's entrance animation starts from opacity:0 — with animations off
     they would print blank. */
  .reveal,
  [class*="reveal"],
  .hero-csplit-text > * {
    opacity: 1 !important;
    transform: none !important;
    visibility: visible !important;
  }

  /* Fixed/sticky elements repeat on every page or overlap content */
  nav.navbar, #subnav, .cb-aside-sticky, .header {
    position: static !important;
  }

  .site-wrapper, main, section, .container-xxl, .grid-container {
    width: 100% !important;
    max-width: none !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    min-height: 0 !important;
    height: auto !important;
    overflow: visible !important;
  }

  main#main-contents { padding-top: 0 !important; margin-top: 0 !important; }

  /* With padding removed for print, text sits flush against the left edge of
     these overflow:hidden boxes, and the first letter's stem gets clipped
     ("FROM" printed as "-ROM", "Read More" as "ead More"). */
  .blog-promo,
  .faq-item,
  .admit-acc-item,
  caption {
    overflow: visible !important;
  }

  /* ---------- 2. Remove non-informational UI ------------------------------ */
  #skip-nav-container,
  #cookieBar,
  #navSearchScrim,
  #navSearchBar,
  #navPhoneBar,
  .navbar-ai-bar-zone,
  .navbar-nav,
  .navbar-right,
  #meganav,
  #subnav,
  #breadcrumbs,

  /* calls to action & interactive-only controls */
  .cta-pair,
  .card-actions,
  .btn,
  .otabs-tablist,
  .curr-toggle,            /* "Show all courses" button — the list itself prints (section 12b) */
  .course-lb-close,
  .course-lb-foot,
  .faq-chevron,
  .cm2-filters,
  .cm2-mapcol,
  .cm2-search-label,
  .citem-pin,
  .cb-actions,
  .cb-acc-links,
  .blog-promo-media,

  /* whole sections that are forms, video or pure CTA */
  #request-info-area,
  #dual-cta,
  .figure-video,
  .video-schema,
  .story2-media-col,
  iframe,
  video,
  form,

  /* decorative imagery (saves ink, keeps flow tight) */
  .hero-csplit-media,
  .cb-figure,
  .cb-media-grid picture,

  /* footer navigation */
  .footer-brand,
  .footer-cols,
  .footer-divider {
    display: none !important;
  }

  /* Empty stat lists render as blank boxes */
  .oblk-set--stats:not(:has(li *)) { display: none !important; }

  /* ---------- 3. Print masthead (logo only) ------------------------------- */
  nav.navbar {
    display: block !important;
    height: auto !important;
    padding: 0 0 8pt !important;
    margin: 0 0 14pt !important;
    border-bottom: 2pt solid var(--p-brand) !important;
  }
  nav.navbar .navbar-inner { display: block !important; padding: 0 !important; height: auto !important; }
  .navbar-logo { display: inline-block !important; }
  .navbar-logo svg { height: 34pt !important; width: auto !important; }
  /* keep logo artwork colours */
  .navbar-logo svg *, .navbar-logo svg *::before { color: inherit !important; }

  /* ---------- 4. Typography ----------------------------------------------- */
  h1, h2, h3, h4, h5 {
    font-family: inherit;
    line-height: 1.2 !important;
    break-after: avoid;
    page-break-after: avoid;
    break-inside: avoid;
  }
  h1 { font-size: 22pt !important; margin: 0 0 6pt !important; }
  h1 *, h1 span { color: var(--p-brand) !important; }
  h1 { color: var(--p-brand) !important; }

  h2 {
    font-size: 15pt !important;
    color: var(--p-brand) !important;
    margin: 0 0 6pt !important;
    padding-top: 4pt !important;
  }
  h3 { font-size: 12pt !important; margin: 10pt 0 4pt !important; }
  h4 { font-size: 11pt !important; margin: 8pt 0 3pt !important; }

  p, li, dd, dt, td, th, blockquote { orphans: 3; widows: 3; }
  p { margin: 0 0 6pt !important; }
  /* Normalise "lede" paragraphs that are oversized on screen */
  main p, main li, main dd { font-size: 10.5pt !important; line-height: 1.4 !important; }
  hr.cb-rule { display: none !important; }
  .cb-head, .sec-head, .cb-copy { margin-bottom: 4pt !important; padding: 0 !important; max-width: none !important; }

  ul, ol { padding-left: 16pt !important; margin: 0 0 6pt !important; }

  /* Content lists use icon bullets drawn with backgrounds/masks — those are
     stripped above, so fall back to real bullets */
  main ul:not([class]) { list-style: disc !important; display: block !important; }
  main ul:not([class]) > li { padding-left: 0 !important; margin: 0 0 2pt !important; }
  main ul:not([class]) > li::before { content: none !important; display: none !important; }

  /* Section eyebrows ("PROGRAM OVERVIEW", "COURSES"...) */
  .oblk-eyebrow,
  [class*="eyebrow"],
  .sec-head > p:first-child,
  .cb-head > p:first-child {
    font-size: 8pt !important;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--p-muted) !important;
    margin: 0 0 2pt !important;
    break-after: avoid;          /* never strand the eyebrow at the foot of a page */
    page-break-after: avoid;
  }

  /* Keep each section's eyebrow + heading (+ intro) together, and keep that
     group on the same page as the first lines of the content that follows */
  .sec-head,
  .cb-head,
  .otabs-left,
  .overview-lede > h2,
  .story2-flat-head,
  .campusmap2-head,
  .cb-cards-feat-top,
  .oblk-intro {
    break-inside: avoid;
    page-break-inside: avoid;
    break-after: avoid;
    page-break-after: avoid;
  }

  /* ---------- 5. Section rhythm ------------------------------------------- */
  main > section {
    padding: 8pt 0 !important;
    margin: 0 !important;
    border-top: 0.75pt solid var(--p-rule) !important;
  }
  main > section#program-hero { border-top: 0 !important; padding-top: 0 !important; }

  /* ---------- 5b. Tighten vertical spacing --------------------------------
     Screen spacing (40px block margins, 32px grid gaps) wastes paper.
     Measured at print width this saves roughly one page on this layout. */
  main > section :last-child { margin-bottom: 0 !important; }   /* no trailing gap before the section rule */
  .cb-acc,
  .admit-accordion { margin-top: 6pt !important; }
  .curr-split-grid { gap: 6pt !important; }
  .tflat-split { gap: 6pt !important; }
  .tflat-foot { padding-top: 0 !important; border-top: 0 !important; margin-top: 4pt !important; }
  .cb-cards-feat-top { margin-bottom: 6pt !important; padding-bottom: 0 !important; }
  .cb-cards-feat-grid { margin-top: 0 !important; }
  .cb-cards-feat-card > :first-child,
  .cb-cards-feat-card-title,
  .res-card-body > :first-child,
  .req-card > :first-child { margin-top: 0 !important; }
  #related-programs .row > [class*="col-"] { margin-top: 0 !important; }
  .story2 { margin-top: 4pt !important; padding-top: 0 !important; border-top: 0 !important; }
  .blog-promo-link { margin-top: 4pt !important; }
  .campusmap2-head { margin-bottom: 4pt !important; }
  .campusmap2-grid { gap: 4pt !important; }
  .faq-call { padding: 0 !important; margin-top: 6pt !important; }   /* "Still have questions?" line */
  .urgency-inner { padding: 0 !important; }

  /* Flatten site grids to a single readable column by default */
  .overview-grid,
  .curr-split-grid,
  .cb-media-grid,
  .cb-aside-grid,
  .campusmap2-grid,
  .story2,
  .tflat-split,
  .otabs,
  .hero-csplit-grid,
  .blog-promo {
    display: block !important;
  }
  .row { display: block !important; margin: 0 !important; }
  .row > [class*="col-"] { width: 100% !important; max-width: 100% !important; flex: none !important; padding: 0 !important; }

  /* ---------- 6. Hero + key dates (the "at a glance" block) --------------- */
  .hero-csplit-modes {
    list-style: none !important;
    padding: 0 !important;
    margin: 0 0 4pt !important;
    font-size: 8.5pt !important;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
  }
  /* Badge is a pill (padding + border + coloured .dot) on screen; flatten it so
     the text lines up with the title's left edge */
  .hero-csplit-modes li {
    display: inline !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
  }
  .hero-csplit-modes .dot { display: none !important; }
  .hero-csplit-eyebrow { padding: 0 !important; margin-left: 0 !important; }

  .hero-csplit-text { padding: 0 !important; margin: 0 !important; }
  .hero-csplit-sub { font-size: 11pt !important; }

  .hero-csplit-props {
    list-style: none !important;
    padding: 0 !important;
    margin: 6pt 0 0 !important;
  }
  .hero-csplit-props li { display: block !important; padding: 0 !important; }
  .hero-csplit-props svg { display: none !important; }
  .hero-csplit-prop-lead { font-weight: 700; }

  /* Start dates — the single most actionable fact on the page */
  #urgency-banner {
    border: 1.5pt solid var(--p-brand) !important;
    border-radius: 4pt;
    background: var(--p-tint) !important;
    padding: 8pt 10pt !important;
    margin: 4pt 0 6pt !important;
    break-inside: avoid;
  }
  .urgency-inner, .urgency-left { display: block !important; }
  .urgency-starts {
    list-style: none !important;
    padding: 0 !important;
    margin: 0 !important;
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 4pt 16pt;
  }
  .urgency-starts svg, .urgency-starts img { display: none !important; }

  /* ---------- 7. Overview fact rail -> compact 5-up stat strip ------------ */
  .cb-rail--facts { margin-top: 8pt !important; border: 0 !important; padding: 0 !important; }
  .cb-rail-stats {
    display: grid !important;
    grid-template-columns: repeat(5, 1fr);
    gap: 0;
    border: 0.75pt solid var(--p-rule) !important;
    margin: 0 !important;
    break-inside: avoid;
  }
  .cb-rail-stat {
    padding: 6pt !important;
    border-right: 0.75pt solid var(--p-rule) !important;
    margin: 0 !important;
  }
  .cb-rail-stat:last-child { border-right: 0 !important; }
  .cbr-label { font-size: 7.5pt !important; text-transform: uppercase; letter-spacing: 0.05em; color: var(--p-muted) !important; }
  .cbr-value { font-size: 12pt !important; font-weight: 700; margin: 2pt 0 0 !important; color: var(--p-brand) !important; }
  .cb-rail-stat svg, .cb-rail-stat img { display: none !important; }

  /* ---------- 8. Tabs -> all panels, stacked ------------------------------ */
  /* Panels share grid-area 1/1 on screen; un-grid so they stack */
  .otabs-panels { display: block !important; height: auto !important; }
  .otabs-left, .otabs-sub { max-width: none !important; width: auto !important; }
  .otabs-panel,
  .otabs-panel[hidden] {
    display: block !important;
    grid-area: auto !important;
    transform: none !important;
    opacity: 1 !important;
    visibility: visible !important;
    position: static !important;
    height: auto !important;
    margin: 0 0 10pt !important;
    break-inside: auto;
  }
  .otabs-panel + .otabs-panel { border-top: 0.5pt dashed var(--p-rule) !important; padding-top: 6pt !important; }
  .oblk-set {
    list-style: none !important;
    padding: 0 !important;
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 6pt 14pt;
  }
  .oblk-set--content, .oblk-set--cards { grid-template-columns: 1fr 1fr 1fr; }
  .oblk-set li {
    break-inside: avoid;
    padding: 6pt 8pt !important;
    margin: 0 !important;
    min-height: 0 !important;
    border: 0.5pt solid var(--p-rule) !important;
    border-radius: 3pt;
  }
  .oblk-set--stats li { display: block !important; }
  .oblk-set--tiles { grid-template-columns: repeat(3, 1fr); gap: 4pt 8pt; }
  .oblk-set--tiles li { padding: 3pt 6pt !important; font-size: 9.5pt; }
  .oblk-set--tiles li * { font-size: 9.5pt !important; margin: 0 !important; }
  .oblk-set li h4 { margin-top: 0 !important; font-size: 10pt !important; }
  .oblk-set li p { font-size: 9pt !important; }
  .oblk-intro, .oblk-intro-body { max-width: none !important; padding: 0 !important; margin: 0 0 6pt !important; }
  .otabs-panels { margin: 6pt 0 0 !important; padding: 0 !important; }
  .oblk-set img, .oblk-set svg { display: none !important; }
  .oblk-stat-num { display: block; font-size: 14pt !important; font-weight: 700; color: var(--p-brand) !important; }

  /* ---------- 9. Accordions -> fully expanded ----------------------------- */
  .faq-a,
  .admit-acc-body,
  .faq-item:not(.open) .faq-a {
    display: block !important;
    max-height: none !important;
    height: auto !important;
    overflow: visible !important;
    visibility: visible !important;
    opacity: 1 !important;
    padding: 2pt 0 6pt !important;
  }
  .faq-q,
  .admit-acc-btn {
    display: block !important;
    width: 100%;
    text-align: left !important;
    border: 0 !important;
    padding: 0 !important;
    margin: 8pt 0 2pt !important;
    font: inherit;
    font-size: 11pt !important;
    font-weight: 700 !important;
    break-after: avoid;
    page-break-after: avoid;
  }
  .faq-q::before, .faq-q::after,
  .admit-acc-btn::before, .admit-acc-btn::after { content: none !important; }
  .admit-acc-btn svg { display: none !important; }
  .faq-item, .admit-acc-item { border: 0 !important; break-inside: auto; padding: 0 !important; margin: 0 !important; }
  .faq-list { gap: 0 !important; }

  /* Admission requirements are lazy-loaded on first click (data-load-state).
     If the reader never opened one, don't print the empty body. */
  .admit-acc-item:not([data-load-state="loaded"]) .admit-acc-body { display: none !important; }

  /* FAQ: Q in bold, answer indented — scannable */
  #faq .faq-a { padding-left: 10pt !important; border-left: 1.5pt solid var(--p-rule) !important; }

  /* ---------- 10. Tables (outcome rates, LPN/LVN/CNA comparison) ---------- */
  .table-container, .table-responsive, table { overflow: visible !important; width: 100% !important; }
  table {
    min-width: 0 !important;            /* .table-aeo-hscroll forces 800px on screen */
    table-layout: auto !important;
    border-collapse: collapse !important;
    font-size: 9pt !important;
    margin: 4pt 0 6pt !important;
  }
  thead { display: table-header-group; }   /* repeat header row on each page */
  tr, img { break-inside: avoid; page-break-inside: avoid; }
  th, td {
    border: 0.5pt solid var(--p-rule) !important;
    padding: 3pt 5pt !important;
    vertical-align: top !important;
    text-align: left;
    white-space: normal !important;
  }
  th { font-weight: 700; background: var(--p-tint) !important; }
  /* .table-responsive collapses to stacked "label: value" cards below ~992px,
     which is narrower than a printed page — restore the real table grid */
  table.table-responsive thead { display: table-header-group !important; }
  table.table-responsive tbody { display: table-row-group !important; }
  table.table-responsive tr { display: table-row !important; }
  table tr { border: 0 !important; }
  table.table-responsive th,
  table.table-responsive td { display: table-cell !important; width: auto !important; }
  table.table-responsive .cell-label { display: none !important; }
  table.table-responsive tbody th { font-weight: 600; background: transparent !important; }
  table.table-responsive td { text-align: right !important; font-variant-numeric: tabular-nums; }
  caption { caption-side: top; text-align: left; font-size: 8.5pt; color: var(--p-muted) !important; padding: 0 0 3pt !important; }

  td p, th p, td div, th div { margin: 0 !important; padding: 0 !important; font-size: 9pt !important; line-height: 1.3 !important; }
  td, th { line-height: 1.3 !important; height: auto !important; }
  .content-below-table,
  .content-below-table p,
  .content-below-table li { font-size: 8.5pt !important; color: var(--p-muted) !important; margin: 0 0 2pt !important; padding: 0 !important; }
  .content-below-table { padding-top: 2pt !important; }

  /* ---------- 11. Advancement ladder -> 4-step row ------------------------ */
  .ladder-cards {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr);
    gap: 0;
    border: 0.75pt solid var(--p-rule) !important;
    break-inside: avoid;
    margin-top: 6pt !important;
  }
  .ladder-card {
    padding: 6pt !important;
    border: 0 !important;
    border-right: 0.75pt solid var(--p-rule) !important;
    border-radius: 0 !important;
    transform: none !important;
  }
  .ladder-card:last-child { border-right: 0 !important; }
  .ladder-card.current { outline: 1.5pt solid var(--p-brand); outline-offset: -1.5pt; }
  .ladder-card.current .ladder-step::after { content: " — you are here"; font-weight: 400; text-transform: none; }
  .ladder-step { font-size: 7.5pt !important; text-transform: uppercase; letter-spacing: 0.05em; font-weight: 700; color: var(--p-muted) !important; }
  .ladder-title { font-weight: 700; font-size: 10pt !important; margin: 2pt 0 !important; }
  .ladder-desc { font-size: 9pt !important; }
  .ladder-card a, .ladder-card .btn { display: none !important; }
  .ladder-card [class*="badge"], .ladder-card [class*="here"] { display: none !important; }

  /* ---------- 12. Courses -------------------------------------------------- */
  .curr-acc-label { margin-top: 4pt !important; font-size: 9pt !important; letter-spacing: 0.06em; }
  #courses .faq-q { font-size: 10.5pt !important; margin-top: 6pt !important; }
  .curr-acc-q { display: block !important; }
  .curr-acc-code, .curr-acc-name { display: inline !important; padding: 0 !important; border: 0 !important; margin: 0 !important; font-size: 10.5pt !important; }
  .curr-acc-code::after { content: " · "; font-weight: 400; }
  #courses .faq-a { font-size: 9.5pt !important; }

  /* ---------- 12b. Full course list (loaded client-side) ------------------
     "Show all courses" fills the list in the browser. If it has been loaded,
     print it inline under Courses whether the panel is open or closed;
     if it hasn't, print nothing (no empty box). */

  /* Inline expander: .curr-all collapses with grid-template-rows: 0fr */
  .curr-allwrap { display: block !important; height: auto !important; margin: 8pt 0 0 !important; }
  /* The inner always holds an empty .curr-all-pad placeholder, so test for real
     content — otherwise an empty ~45px block prints at the end of Courses */
  .curr-allwrap:not(:has(.curr-all-inner :is(li, p, h3, h4, table, dl, .faq-item))),
  .curr-acc-foot:not(:has(.curr-all-inner :is(li, p, h3, h4, table, dl, .faq-item))) { display: none !important; }
  .curr-all {
    display: block !important;
    grid-template-rows: none !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    opacity: 1 !important;
    visibility: visible !important;
  }
  .curr-all-inner { overflow: visible !important; min-height: 0 !important; height: auto !important; }

  /* Lightbox variant: render the modal as a normal block where it sits in
     the DOM (inside #courses) — no overlay, scrim, close button or CTAs */
  .course-lb:has(.course-lb-breakdown > *, .course-lb-req > *) {
    display: block !important;
    position: static !important;
    inset: auto !important;
    transform: none !important;
    z-index: auto !important;
    width: auto !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    opacity: 1 !important;
    visibility: visible !important;
    margin: 8pt 0 0 !important;
    padding: 0 !important;
  }
  .course-lb:not(:has(.course-lb-breakdown > *, .course-lb-req > *)) { display: none !important; }
  .course-lb-panel, .course-lb-head, .course-lb-body {
    position: static !important;
    width: auto !important;
    max-width: none !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    transform: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
  }
  .course-lb-breakdown:has(> *),
  .course-lb-req:has(> *) { display: block !important; }
  [class*="backdrop"], [class*="scrim"], .course-lb::before, .course-lb::after { display: none !important; }

  /* Keep each course (code, title, credits, description) together */
  .curr-all-inner li, .curr-all-inner tr, .curr-all-inner .faq-item,
  .course-lb-breakdown li, .course-lb-req li { break-inside: avoid; }
  .curr-all-inner h3, .curr-all-inner h4,
  .course-lb h3, .course-lb h4 { font-size: 10.5pt !important; margin: 8pt 0 2pt !important; }
  .curr-all-inner p, .curr-all-inner li,
  .course-lb p, .course-lb li { font-size: 9.5pt !important; }
  /* Quick Course Facts (right-hand aside on screen) prints BEFORE Featured Courses */
  .curr-split-grid { display: flex !important; flex-direction: column !important; }
  .curr-vp { order: -1; border: 0 !important; padding: 0 !important; margin: 0 !important; position: static !important; }
  .curr-vp-card {
    border: 0.75pt solid var(--p-rule) !important;
    padding: 8pt 10pt !important;
    margin: 4pt 0 6pt !important;
    break-inside: avoid;
    position: static !important;
  }

  /* ---------- 13. Tuition — the cost box ---------------------------------- */
  .tflat, .tflat-grid, .tflat-col { display: block !important; border: 0 !important; padding: 0 !important; }
  .tflat-col {
    max-width: 4.2in;
    border: 1.5pt solid var(--p-brand) !important;
    border-radius: 4pt;
    padding: 8pt 10pt !important;
    break-inside: avoid;
  }
  .tflat-name { margin-top: 0 !important; }
  .tflat-row {
    display: grid !important;
    grid-template-columns: 1fr 1.2em auto;
    align-items: baseline;
    padding: 2pt 0 !important;
  }
  .tflat-op { text-align: center; }
  .tflat-fig { text-align: right; font-variant-numeric: tabular-nums; }
  .tflat-rule { border-top: 0.5pt solid var(--p-rule) !important; margin: 2pt 0 !important; height: 0 !important; }
  .tflat-rule-strong { border-top: 1pt solid var(--p-ink) !important; }
  .tflat-total { font-weight: 700; font-size: 11.5pt !important; }
  .tflat-total .tflat-fig { color: var(--p-brand) !important; }
  .tflat-foot, .tflat-note, .tflat-foot p, .tflat-note p { font-size: 8.5pt !important; color: var(--p-muted) !important; margin-top: 6pt !important; }
  .tflat-aside {
    border: 0.75pt solid var(--p-rule) !important;
    padding: 6pt 10pt !important;
    margin-top: 8pt !important;
    max-width: 4.2in;
    break-inside: avoid;
  }

  /* ---------- 14. Card grids (ways to save, admissions, related) ---------- */
  .cb-cards-feat-grid,
  .req-grid {
    list-style: none !important;
    padding: 0 !important;
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 8pt 14pt;
  }
  .req-grid { grid-template-columns: repeat(3, 1fr); }
  .cb-cards-feat-card,
  .req-card,
  .res-card {
    border: 0.75pt solid var(--p-rule) !important;
    border-radius: 3pt;
    padding: 6pt 8pt !important;
    break-inside: avoid;
    height: auto !important;
  }
  .cb-cards-feat-card img, .cb-cards-feat-card svg,
  .req-card img, .req-card svg,
  .res-card img { display: none !important; }
  .cb-cards-feat-card-cta { margin-top: 4pt !important; }
  .cb-cards-feat-card-cta a { display: block !important; width: auto !important; font-size: 9pt !important; font-weight: 600; }
  .cb-cards-feat-card-cta a svg { display: none !important; }
  .cb-cards-feat-card-cta a::after { display: block; font-weight: 400; }
  .rc-val { font-size: 16pt !important; font-weight: 700; color: var(--p-brand) !important; line-height: 1 !important; }
  .rc-title { font-weight: 700; margin: 2pt 0 !important; }
  .rc-desc { font-size: 9pt !important; }

  .res-card-body { border: 0 !important; padding: 0 !important; }
  .res-card h3 { margin-top: 2pt !important; font-size: 10.5pt !important; }
  .res-card-text, .res-card-text p { font-size: 9pt !important; }

  /* Centered marketing headings read better left-aligned on paper */
  main .center, main .text-center, main .sec-head, main .story2-flat-head,
  main .story2-body, main .story2-attribution, main .story2-attribution *,
  main .story2-quote, main .section-sub, #faq .container-xxl > *, #faq p {
    text-align: left !important;
    margin-left: 0 !important;
    max-width: none !important;
  }

  #related-programs .row {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr);
    gap: 8pt;
  }

  /* ---------- 15. Testimonials ------------------------------------------- */
  .story2-quote {
    margin: 4pt 0 !important;
    padding: 0 0 0 10pt !important;
    border-left: 2pt solid var(--p-brand) !important;
    font-style: italic;
    font-size: 10pt !important;
  }
  .story2-quote svg, .story2-attribution img { display: none !important; }
  .story2-mark, .story2::before,
  .story2-quote::before, .story2-quote::after { content: none !important; display: none !important; }
  .story2-body { padding: 0 !important; }
  .story2-flat-head { margin-bottom: 4pt !important; }
  .story2-attribution { font-size: 9pt !important; padding-left: 12pt !important; }
  .story2, .story2-body { break-inside: avoid; }

  /* Blog promo: compact, with the article URL */
  .blog-promo, .blog-promo-body { padding: 0 !important; margin: 0 !important; border: 0 !important; }
  .blog-promo-title { font-size: 12pt !important; }
  .blog-promo-body a svg { display: none !important; }
  .blog-promo-body a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 8pt; font-weight: 400; color: var(--p-muted) !important; }
  .blog-promo-body a[href^="/"]::after { content: " (" var(--p-origin) attr(href) ")"; font-size: 8pt; font-weight: 400; color: var(--p-muted) !important; }

  /* ---------- 16. Campuses -> plain two-state list ------------------------ */
  .cm2-railcol { display: block !important; }
  .cm2-list {
    display: grid !important;
    grid-template-columns: repeat(5, auto);
    justify-content: start;
    gap: 3pt 18pt;
    margin: 0 !important;            /* site uses a negative gutter that pushes it past the page edge */
    max-height: none !important;
    overflow: visible !important;
  }
  .citem, .citem * { opacity: 1 !important; }
  .citem {
    display: block !important;
    border: 0 !important;
    padding: 0 !important;
    text-align: left !important;
    font: inherit;
  }
  .citem-city { font-weight: 700; display: block; }
  .citem-state { font-size: 8.5pt; color: var(--p-muted) !important; display: block; }
  .citem svg, .citem img { display: none !important; }

  /* ---------- 17. Accreditation ------------------------------------------ */
  .cb-acc-card {
    border: 0.75pt solid var(--p-rule) !important;
    padding: 6pt 10pt !important;
    margin-top: 8pt !important;
    break-inside: avoid;
  }
  .cb-acc-seal { height: auto !important; min-height: 0 !important; padding: 0 !important; margin: 0 0 4pt !important; aspect-ratio: auto !important; }
  .cb-acc-seal img { max-height: 40pt !important; width: auto !important; position: static !important; }
  address { font-style: normal; }

  /* ---------- 18. Links: show where they go ------------------------------- */
  a { text-decoration: underline; }

  /* Body-copy links: print destination so the paper copy is still useful */
  main p a[href^="http"]:not([data-rel="footnote"])::after,
  main li a[href^="http"]:not([data-rel="footnote"])::after,
  main address a[href^="http"]::after {
    content: " (" attr(href) ")";
    font-size: 8pt;
    color: var(--p-muted) !important;
    word-break: break-all;
  }
  main p a[href^="/"]:not([data-rel="footnote"])::after,
  main li a[href^="/"]:not([data-rel="footnote"])::after,
  main .cb-cards-feat-card a[href^="/"]::after {
    content: " (" var(--p-origin) attr(href) ")";
    font-size: 8pt;
    color: var(--p-muted) !important;
    word-break: break-all;
  }
  /* Some links already use ::after for an arrow icon (fixed size, absolute, masked) */
  main a[href]::after {
    position: static !important;
    width: auto !important;
    height: auto !important;
    -webkit-mask: none !important;
    mask: none !important;
    transform: none !important;
  }
  /* phone / mail / in-page anchors: the visible text is enough */
  a[href^="tel:"]::after,
  a[href^="mailto:"]::after,
  a[href^="#"]::after,
  a[href^="javascript"]::after,
  td a::after, th a::after { content: none !important; }   /* tables: sources are already footnoted */

  /* Next-step links worth keeping on paper — printed as plain text links with
     their URL instead of buttons (all other Apply/Request Info CTAs stay hidden):
     - Tuition: "Use our tuition estimator"
     - Nursing Information Sessions: registration CTA
     - Related Programs: "Explore program" on each card */
  #nis-info-session .cb-actions.cta-pair { display: block !important; margin: 4pt 0 0 !important; padding: 0 !important; }
  .tflat-foot .res-link,
  .res-card .res-link,
  #nis-info-session .cb-actions .btn {
    display: inline !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    min-height: 0 !important;
    height: auto !important;
    font-size: 9.5pt !important;
    font-weight: 700 !important;
    text-decoration: underline !important;
    text-transform: none !important;
    letter-spacing: normal !important;
  }
  .tflat-foot .res-link { display: block !important; margin-top: 4pt !important; }
  .res-card .res-link { display: block !important; margin-top: 4pt !important; }
  .tflat-foot .res-link svg,
  .res-card .res-link svg,
  #nis-info-session .cb-actions .btn svg { display: none !important; }
  .tflat-foot .res-link[href^="/"]::after,
  .res-card .res-link[href^="/"]::after,
  #nis-info-session .cb-actions .btn[href^="/"]::after {
    content: " (" var(--p-origin) attr(href) ")";
    font-size: 8pt;
    font-weight: 400;
    color: var(--p-muted) !important;
    word-break: break-all;
  }
  .tflat-foot .res-link[href^="http"]::after,
  .res-card .res-link[href^="http"]::after,
  #nis-info-session .cb-actions .btn[href^="http"]::after {
    content: " (" attr(href) ")";
    font-size: 8pt;
    font-weight: 400;
    color: var(--p-muted) !important;
    word-break: break-all;
  }

  /* ---------- 19. Footnotes (builds on the existing littlefoot rules) ---- */
  /* Popover buttons are screen-only; the original <span.sup-footnote> refs print instead */
  .littlefoot__button, .littlefoot__popover { display: none !important; }

  .sup-footnote.littlefoot--print {
    display: inline !important;
    font-size: 7pt !important;
    vertical-align: super;
    line-height: 0;
    color: var(--p-ink) !important;
  }
  /* Back-to-back refs (ref, littlefoot button, ref) would print as "12";
     separate them so they read as "1,2" */
  .sup-footnote + .littlefoot + .sup-footnote::before { content: ","; }
  .sup-footnote a { text-decoration: none; color: var(--p-ink) !important; }
  .sup-footnote a::after { content: none !important; }

  .page-footnotes {
    display: block !important;
    break-before: page;              /* footnotes start on a fresh page */
    page-break-before: always;
    padding-top: 0 !important;
  }
  .page-footnotes > .grid-container::before {
    content: "Footnotes on this page";
    display: block;
    font-weight: 700;
    font-size: 10pt;
    color: var(--p-brand) !important;
    margin-bottom: 6pt;
    border-bottom: 1pt solid var(--p-brand);
    padding-bottom: 3pt;
  }
  .page-footnotes hr { display: none !important; }
  .littlefoot--print,
  .littlefoot--print p,
  .littlefoot--print li,
  .littlefoot--print a {
    color: var(--p-muted) !important;   /* #919191 is too faint on paper */
    font-size: 8pt !important;
    line-height: 1.35 !important;
  }
  .page-footnotes ol { padding-left: 18pt !important; list-style: decimal !important; }
  /* BUG FIX: littlefoot's print rule sets .littlefoot--print to display:block,
     which drops the <li> number and shifts the numbering of every later
     footnote. Keep them as list items so "21" in the text = item 21 here. */
  .page-footnotes li,
  .page-footnotes li.littlefoot--print {
    display: list-item !important;
    margin-bottom: 2pt !important;
    break-inside: avoid;
  }
  .page-footnotes li, .page-footnotes li * {
    font-size: 8pt !important;
    line-height: 1.35 !important;
    color: var(--p-muted) !important;
  }
  .page-footnotes a[href^="#"], .footnote-backref, a[rev="footnote"] { display: none !important; }

  /* ---------- 20. Footer + legal notice ---------------------------------- */
  footer.footer {
    border-top: 0.75pt solid var(--p-rule) !important;
    padding: 8pt 0 0 !important;
    margin-top: 10pt !important;
    font-size: 8pt !important;
    color: var(--p-muted) !important;
  }
  .footer-accreditation, .footer-bottom { display: block !important; font-size: 8pt !important; }
  .footer-bottom a::after { content: none !important; }
  .footer-bottom nav, .footer-bottom ul { display: none !important; }

  .alert-bar.footer-alert {
    border: 0.75pt solid var(--p-rule) !important;
    padding: 6pt 8pt !important;
    margin: 8pt 0 !important;
    break-inside: avoid;
  }
  .alert-bar.footer-alert, .alert-bar.footer-alert * {
    font-size: 8.5pt !important;
    text-align: left !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  .footer-accreditation, .footer-accreditation * { text-align: left !important; }
}
