/* Shared internal layouts. Loaded only outside the homepage. */

/* Canonical vertical position for internal pages whose first content element
 * is the page title. Dedicated templates opt into this primitive instead of
 * carrying their own header compensation or top padding. */
:root {
  --jci-page-heading-offset: 48px;
  --jci-page-title-media-gap: 20px;
}

.jci-page-heading-band {
  padding-top: var(--jci-page-heading-offset);
}

.jci-page-heading-band h1:first-child {
  margin-top: 0;
}

/* Canonical full-width image immediately following an internal page title.
 * The primitive owns the title/media gap so Contact, Information sessions and
 * other internal pages cannot drift through page-specific spacing overrides. */
.jci-page-hero {
  width: 100%;
  margin: var(--jci-page-title-media-gap) 0 0;
  overflow: hidden;
}

.jci-page-hero img {
  display: block;
  width: 100%;
  max-width: none;
  height: auto;
}


@media (max-width: 720px) {
  :root {
    --jci-page-heading-offset: 34px;
  }
}

/* 2026-06-18 standard internal page layout lock */
body.page-template-default:not(.home):not(.front-page) main > .container:not(.bgblack):not(.bggray):not(.bglightblue):not(.jci-global-prefooter):not(.jci-container) {
  width: calc(100% - 40px) !important;
  max-width: 1280px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box !important;
}

body.page-template-default:not(.home):not(.front-page) main > .container:first-child,
body.page-template-default:not(.home):not(.front-page) main > .container-inner:first-child {
  padding-top: var(--jci-page-heading-offset) !important;
}

body.page-template-default:not(.home):not(.front-page) main > .container-inner:first-child h1:first-child,
body.page-template-default:not(.home):not(.front-page) main > .container:first-child h1:first-child {
  margin-top: 0 !important;
}

body.page-template-default:not(.home):not(.front-page) main > .container:not(.bgblack):not(.bggray):not(.bglightblue):not(.jci-global-prefooter) img.w100,
body.page-template-default:not(.home):not(.front-page) main > .container:not(.bgblack):not(.bggray):not(.bglightblue):not(.jci-global-prefooter) img[class*="w100"] {
  width: 100% !important;
  max-width: 100% !important;
  height: auto !important;
}

body.page-template-default:not(.home):not(.front-page) main > .container.bgblack,
body.page-template-default:not(.home):not(.front-page) main > .container.bggray,
body.page-template-default:not(.home):not(.front-page) main > .container.bglightblue,
body.page-template-default:not(.home):not(.front-page) main > .jci-global-prefooter {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

@media (max-width: 720px) {
  body.page-template-default:not(.home):not(.front-page) main > .container:not(.bgblack):not(.bggray):not(.bglightblue):not(.jci-global-prefooter):not(.jci-container) {
    width: 100% !important;
  }

  body.page-template-default:not(.home):not(.front-page) main > .container:first-child,
  body.page-template-default:not(.home):not(.front-page) main > .container-inner:first-child {
    padding-top: var(--jci-page-heading-offset) !important;
  }
}

/* Program page widths are owned by jci-container--program. */

body.page-template-default:not(.home):not(.front-page) main > h1,
body.page-template-default:not(.home):not(.front-page) main > h2,
body.page-template-default:not(.home):not(.front-page) main > h3,
body.page-template-default:not(.home):not(.front-page) main > p {
  width: calc(100% - 40px) !important;
  max-width: 1280px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box !important;
}

@media (max-width: 720px) {
  body.page-template-default:not(.home):not(.front-page) main > h1,
  body.page-template-default:not(.home):not(.front-page) main > h2,
  body.page-template-default:not(.home):not(.front-page) main > h3,
  body.page-template-default:not(.home):not(.front-page) main > p {
    width: calc(100% - 28px) !important;
  }
}

/* 2026-06-18 article template container parity */
body:not(.home):not(.front-page) main .jci-article__header,
body:not(.home):not(.front-page) main .jci-article__hero,
body:not(.home):not(.front-page) main .jci-article__body-grid {
  width: calc(100% - 40px) !important;
  max-width: 1280px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box !important;
}

@media (max-width: 720px) {
  body:not(.home):not(.front-page) main .jci-article__header,
  body:not(.home):not(.front-page) main .jci-article__hero,
  body:not(.home):not(.front-page) main .jci-article__body-grid {
    width: calc(100% - 28px) !important;
  }
}

/* 2026-06-18 unified internal container and full-width header images */
:root {
  --jci-internal-gutter: 20px;
  --jci-internal-container-width: calc(100% - (var(--jci-internal-gutter) * 2));
}

body:not(.home):not(.front-page) main .container-inner,
body:not(.home):not(.front-page) main .jci-article__header,
body:not(.home):not(.front-page) main .jci-article__hero,
body:not(.home):not(.front-page) main .jci-article__body-grid,
body:not(.home):not(.front-page) main > h1,
body:not(.home):not(.front-page) main > h2,
body:not(.home):not(.front-page) main > h3,
body:not(.home):not(.front-page) main > p {
  max-width: 1280px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box !important;
}

/* Full-width sections are explicit in their templates; generic containers stay contained. */

body.page-id-41548 main h2.center.black + .container-inner,
body.page-id-41548 main h2.center.black + div {
  padding-left: 0 !important;
  padding-right: 0 !important;
}

@media (max-width: 720px) {
  :root {
    --jci-internal-gutter: 14px;
  }
}

/* Information Sessions keeps only its page-specific banner rules here.
 * Its title-adjacent image uses the shared .jci-page-hero primitive above. */
.jci-information-sessions-banner {
  width: 100%;
}

.jci-information-sessions-banner__inner {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(28px, 5vw, 72px);
  align-items: start;
  padding-top: 40px;
  padding-bottom: 40px;
}

.jci-information-sessions-banner__action {
  display: flex;
  align-items: flex-start;
}

.jci-information-sessions-banner__inner--single {
  grid-template-columns: minmax(0, 1fr);
}

.jci-information-sessions-banner__action .btn3 {
  display: inline-flex;
  align-items: center;
  width: auto;
  text-decoration: none;
}

@media (max-width: 720px) {
  .jci-information-sessions-banner__inner {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .jci-information-sessions-banner__action .btn3 {
    width: 100%;
    justify-content: center;
  }
}


.jci-information-sessions-title {
  text-transform: uppercase;
}

.jci-information-sessions-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 44px;
  margin-top: 54px;
}

.jci-information-session-group {
  min-width: 0;
}

.jci-information-session-group__title {
  margin: 0;
  color: var(--color-brand-blue, #487cff);
  font-family: "DM Sans", sans-serif;
  font-size: 26px;
  font-weight: 700;
  line-height: 1.15;
}

.jci-information-session-group__rule {
  width: 100%;
  height: 4px;
  margin-top: 12px;
  background: #e6e3e4;
}

.jci-information-session-group__cards {
  display: grid;
  gap: 0;
}

.jci-info-session-card {
  padding: 18px 0 20px;
  border-bottom: 1px solid #e2e5ea;
}

.jci-info-session-card__title {
  margin: 0;
  font-family: "DM Sans", sans-serif;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.35;
  text-transform: uppercase;
}

.jci-info-session-card__title a {
  color: var(--color-brand-navy, #041c40);
  text-decoration: none;
}

.jci-info-session-card__title a:hover,
.jci-info-session-card__title a:focus-visible {
  color: var(--color-brand-blue, #487cff);
}

.jci-info-session-card__meta {
  display: grid;
  gap: 8px;
  margin: 16px 0 0;
}

.jci-info-session-card__meta-item {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  align-items: center;
  gap: 4px;
  min-width: 0;
}

.jci-info-session-card__meta dt {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
  margin: 0;
  color: #34383f;
  font-size: 13px;
  font-weight: 400;
  line-height: 1.3;
}

.jci-info-session-card__meta dd {
  min-width: 0;
  margin: 0;
  color: #34383f;
  font-size: 13px;
  line-height: 1.3;
}

.jci-info-session-card__meta-icon {
  display: inline-flex;
  width: 14px;
  height: 14px;
  align-items: center;
  justify-content: center;
  color: var(--color-brand-blue, #487cff);
}

.jci-info-session-card__meta-icon svg {
  display: block;
  width: 100%;
  height: 100%;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.jci-info-session-card__cta.btn1 {
  display: inline-flex;
  width: auto;
  min-width: 0;
  min-height: 36px;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 20px;
  padding: 0 16px;
  text-decoration: none;
}

.jci-info-session-card__cta .jci-button-arrow__icon {
  margin: 0;
}

.jci-information-session-group__empty {
  padding: 20px 0;
  color: #4f5661;
  font-size: 14px;
  line-height: 1.5;
}

.jci-information-session-group__empty p {
  margin: 0;
}

.jci-information-session-group__empty-link {
  margin-top: 16px;
  color: var(--color-brand-blue, #487cff);
  font-weight: 700;
}

@media (max-width: 900px) {
  .jci-information-sessions-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 620px) {
  .jci-information-sessions-list {
    grid-template-columns: minmax(0, 1fr);
    gap: 34px;
    margin-top: 40px;
  }

  .jci-information-session-group__title {
    font-size: 24px;
  }
}

/* Information sessions reuses the canonical request-form heading hierarchy,
 * while preserving this page's white form section from the supplied design. */
.jci-information-sessions-form {
  --jci-program-request-form-background: #fff;
}

/* Courses: one semantic feature grid for desktop and mobile. The template no
 * longer needs legacy Bootstrap-like rows/columns, which previously introduced
 * uneven vertical rhythm when it collapsed to one column. */
.jci-courses-features__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 34px 56px;
  width: min(83.333%, 1060px);
  margin-inline: auto;
}

.jci-courses-feature {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  align-items: start;
  gap: 16px;
  min-width: 0;
}

.jci-courses-feature__icon {
  display: block;
  width: 48px;
  height: 48px;
  object-fit: contain;
}

.jci-courses-feature__content {
  display: grid;
  gap: 0;
  min-width: 0;
}

.jci-courses-feature__title,
.jci-courses-feature__description {
  margin: 0;
}

.jci-courses-feature__title {
  line-height: 1.25;
}

.jci-courses-feature__description {
  max-width: 420px;
  line-height: 1.5;
}


/* Courses catalogue progress mirrors the Academic Programs result footer: a
 * concise visible/total count followed by the shared progressive action. */
.jci-courses-results-footer {
  display: grid;
  justify-items: center;
  gap: 14px;
  width: 100%;
  margin: 0 auto;
  padding-top: 60px;
}

.jci-courses-results-progress {
  margin: 0;
  color: #667386;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.4;
}

.jci-courses-results-toggle {
  margin: 0;
}

/* Courses progressive disclosure: keep the SVG arrow optically centered with
 * the label in both desktop and mobile. The 1px shift compensates for the
 * glyph's visual position inside the source SVG viewBox. */
[data-jci-course-listing-toggle] .jci-progressive-toggle__label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

[data-jci-course-listing-toggle] .jci-course-listing-toggle__icon {
  display: block;
  flex: 0 0 14px;
  width: 14px;
  height: 14px;
  object-fit: contain;
  transform: translateY(1px);
}

/* Program listing hero: Masters and Courses.
 *
 * Component layout is owned by selector scope and load order, not blanket
 * !important. The only remaining important declarations in this block are
 * visibility toggles for compact/open state.
 *
 * The component is attached by theme-interactions.js using the stable legacy
 * .masters-hero structure. It therefore also works if WordPress serves a
 * translated page ID or an older cached copy of the PHP template.
 */
.jci-program-listing-hero {
  background: #fff;
  isolation: isolate;
}

@media (min-width: 1025px) {
  body:not(.home):not(.front-page) :is(
    .jci-program-type-menu-bar .jci-container--page,
    .jci-courses-subject-menu-bar .jci-container--page
  ) {
    --jci-container-local-gutter: 40px;
  }
}

.jci-program-listing-hero__sentinel {
  display: block;
  width: 1px;
  height: 1px;
  margin: 0;
  padding: 0;
  pointer-events: none;
}

/* Full-width Program types navigation.
 *
 * The outer bar owns the sticky positioning and white background. The
 * horizontal menu remains constrained by jci-container--page inside it.
 */
body:not(.home):not(.front-page) > .site-wrapper main .jci-program-type-menu-bar {
  width: 100%;
  max-width: none;
  margin: 0;
  border-top: 0;
  /*border-bottom: 1px solid rgba(4, 28, 64, 0.12);*/
  box-sizing: border-box;
  background: #fff;
}

body:not(.home):not(.front-page) .jci-program-type-menu-bar .jci-program-type-menu-slot {
  margin-top: 0;
  margin-bottom: 0;
  border-top: 0;
  border-bottom: 0;
}

@media (min-width: 1025px) {
  body:not(.home):not(.front-page) > .site-wrapper main .jci-program-type-menu-bar {
    position: sticky;
    top: var(
      --jci-header-visual-offset,
      var(--jci-header-offset, 120px)
    );
    z-index: 30;
    box-shadow: none;
  }
}

/* Program listing heroes remain fully expanded in normal document flow.
 *
 * The Program types bar is sticky independently, so listing heroes must never
 * enter the legacy compact state. Collapsing the introduction and features
 * changes the document height while scrolling and makes the course cards jump.
 */
@media (min-width: 1025px) {
  .masters-hero.jci-program-listing-hero,
  .masters-hero.jci-program-listing-hero.is-compact {
    position: relative;
    top: auto;
    height: auto;
    min-height: 0;
    max-height: none;
    overflow: visible;
  }

  .masters-hero.jci-program-listing-hero.is-compact .jci-program-listing-hero__details {
    display: block !important;
  }

  .masters-hero.jci-program-listing-hero.is-compact .jci-program-listing-hero__intro,
  .masters-hero.jci-program-listing-hero.is-compact .jci-program-listing-hero__features {
    display: grid !important;
    max-height: none !important;
    overflow: visible !important;
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
  }
}

@media (max-width: 1024px) {
  .masters-hero.jci-program-listing-hero,
  .masters-hero.jci-program-listing-hero.is-compact {
    position: relative;
    top: auto;
    z-index: auto;
    height: auto;
    min-height: 0;
    box-shadow: none;
  }

  .masters-hero.jci-program-listing-hero [data-jci-listing-collapsible="true"] {
    display: block !important;
    height: auto;
    min-height: 0;
    max-height: none;
    overflow: visible;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }
}

/* Program listing content reuses legacy markup but is owned here. */
body:not(.home):not(.front-page) .jci-program-listing-hero {
  padding-top: clamp(40px, 5vw, 64px);
}

body:not(.home):not(.front-page) .jci-program-listing-hero__features {
  margin-bottom: 0;
}

/* Program listing feature panels. Long-program archives keep the established
 * legacy item markup, while Courses owns a fully canonical component.
 *
 * Both variants share the same desktop panel geometry: the grey surface owns
 * the vertical padding and the external separation, while each feature owns
 * only its lateral padding. This avoids the doubled Course bottom padding and
 * keeps Courses and the other Program-type listings visually consistent. */
@media (min-width: 769px) {
  body:not(.home):not(.front-page) .jci-program-listing-hero__features {
    --jci-program-feature-padding-inline: 30px;
  }

  body.jci-courses-page .jci-program-listing-hero__features--courses {
    margin-bottom: 40px;
  }

  body:not(.home):not(.front-page) .jci-program-listing-hero__features:not(.jci-program-listing-hero__features--courses) .masters-feature {
    padding-inline: var(--jci-program-feature-padding-inline);
  }
}

.jci-program-listing-hero__features--courses {
  --jci-course-feature-padding-block: 30px;
  display: block;
  width: 100%;
  margin: 0;
  padding: var(--jci-course-feature-padding-block) 0;
  box-sizing: border-box;
  background-color: #76747433;
}

.jci-program-listing-hero__features--courses > .jci-program-listing-hero__features-grid {
  display: flex;
  align-items: stretch;
  width: 100%;
  min-width: 0;
}

.jci-program-listing-hero__features--courses .jci-program-listing-hero__feature {
  position: relative;
  display: grid;
  flex: 1 1 0;
  min-width: 0;
  align-content: start;
  gap: 4px;
  padding: 0 var(--jci-program-feature-padding-inline, 30px);
  box-sizing: border-box;
  text-align: left;
}

.jci-program-listing-hero__features--courses .jci-program-listing-hero__feature + .jci-program-listing-hero__feature::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 4px;
  background-color: #fff;
}

.jci-program-listing-hero__features--courses .jci-program-listing-hero__feature strong {
  font-size: 14px;
  line-height: 20px;
  font-weight: 700;
  color: var(--bs-body-color);
}

.jci-program-listing-hero__features--courses .jci-program-listing-hero__feature span {
  font-size: 14px;
  line-height: 20px;
  color: var(--bs-body-color);
}

/* Program-type listing feature panels keep a 40px desktop separation before
 * the next content/navigation block. Courses receives the same rhythm above;
 * mobile spacing remains owned by its Subject areas component. */
@media (min-width: 769px) {
  body.jci-program-type-page:not(.jci-courses-page) .jci-program-listing-hero__features {
    margin-bottom: 40px;
  }
}

/* Long-program feature panels divide the available width by the number of
 * rendered items. Courses uses the canonical inner flex row above. */
@media (min-width: 769px) {
  body:not(.home):not(.front-page) .jci-program-listing-hero__features:not(.jci-program-listing-hero__features--courses) {
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: minmax(0, 1fr);
  }
}

body:not(.home):not(.front-page) .jci-program-listing-hero__features:not(.jci-program-listing-hero__features--courses) .masters-feature {
  display: grid;
  align-content: start;
  gap: 4px;
}

body:not(.home):not(.front-page) .masters-list .masters__wrapper {
  min-height: min(48vw, 560px);
}

body:not(.home):not(.front-page) .masters-list .master-image img {
  width: 100%;
  height: 100%;
  min-height: 420px;
  object-fit: cover;
}

body:not(.home):not(.front-page) .masters-list .master-image img[src^="data:image/gif"] {
  background: #e6e6e6;
}

body:not(.home):not(.front-page) .masters-list .master-content {
  display: flex;
  flex-direction: column;
  justify-content: start !important;
  padding: clamp(48px, 5vw, 72px) clamp(44px, 5vw, 70px);
}

body:not(.home):not(.front-page) .masters-list .master__list a {
  display: flex;
  align-items: center;
  gap: 10px;
}

body:not(.home):not(.front-page) .masters-list .master__list a > img.fletxa2 {
  content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23487cff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E");
  flex: 0 0 22px;
  width: 22px;
  min-width: 22px;
  max-width: 22px;
  height: 14px;
  margin: 0;
  object-fit: contain;
}

@media (max-width: 992px) {
  body:not(.home):not(.front-page) .masters-list .masters__wrapper {
    min-height: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .masters-hero.jci-program-listing-hero {
    transition: none;
  }
}

/* 2026-07-20 canonical interior page H1.
 * Use .jci-page-h1 in new templates. The compatibility selector applies the
 * same heading contract to existing non-home, non-magazine page H1s.
 */
.jci-page-h1 {
  font-size: 60px !important;
  line-height: 60px !important;
  letter-spacing: 0px !important;
  color: #0B2A4C !important;
}

/* Compatibility fallback for legacy page headings that do not opt into the
 * explicit .jci-page-h1 contract. Keep this non-important so component-owned
 * templates loaded later can define their own heading treatment cleanly. */
:where(body:not(.home):not(.front-page):not(.single-post):not(.single-program):not(.category):not(.error404):not(.page-template-template-the-magazine-home):not(.page-template-template-the-magazine-latest-news):not(.page-template-template-people):not(.page-template-template-csr):not(.page-template-template-rankings):not(.page-template-template-business-solutions) > .site-wrapper main h1) {
  font-size: 60px;
  line-height: 60px;
  letter-spacing: 0;
  color: #0B2A4C;
}

.jci-page-h1:not(.jci-page-h1--wide) {
  max-width: 500px !important;
}

:where(body:not(.home):not(.front-page):not(.single-post):not(.single-program):not(.category):not(.error404):not(.page-template-template-the-magazine-home):not(.page-template-template-the-magazine-latest-news):not(.page-template-template-people):not(.page-template-template-csr):not(.page-template-template-rankings):not(.page-template-template-business-solutions) > .site-wrapper main h1:not(.jci-page-h1--wide)) {
  max-width: 500px;
}


@media (min-width: 769px) {
  .jci-page-h1--wide {
    white-space: nowrap;
  }
}

/* 2026-07-20 interior page container parity with single program pages.
 * Scope: main content only. Excludes home/front page, header, footer and
 * single-program because courses/programs already own this geometry in
 * program-hero.css.
 */
@media (min-width: 769px) {
  body:not(.home):not(.front-page):not(.single-program) {
    --jci-interior-page-gutter: var(--jci-container-page-edge);
  }

  body:not(.home):not(.front-page):not(.single-program) > .site-wrapper main :is(
    .container,
    .container-inner,
    .row.container-inner,
    .container-inner.row,
    section.container-inner,
    .jci-new-section__inner,
    .jci-new-hero__inner,
    .jci-new-business__inner,
    .jci-program-listing-hero__features-shell
  ).jci-container:not(.jci-container--page):not(.jci-container--program):not(.jci-container--secondary-nav):not(.jci-container--editorial):not(.jci-container--wide):not(.jci-container--search):not(.jci-container--testimonial):not(.jci-container--reading):not(.jci-container--flush) {
    --jci-container-local-gutter: var(--jci-interior-page-gutter);
    width: min(
      var(--jci-container-max-page, 1280px),
      calc(100% - (var(--jci-interior-page-gutter) * 2))
    ) !important;
    margin-left: var(--jci-interior-page-gutter) !important;
    margin-right: auto !important;
  }

  body:not(.home):not(.front-page):not(.single-program) > .site-wrapper main :is(
    .container-inner,
    .row.container-inner,
    .container-inner.row,
    section.container-inner
  ).jci-container > .row,
  body:not(.home):not(.front-page):not(.single-program) > .site-wrapper main :is(
    .container-inner,
    .row.container-inner,
    .container-inner.row,
    section.container-inner
  ).jci-container.row {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  body:not(.home):not(.front-page):not(.single-program) > .site-wrapper main :is(
    .container-inner,
    .row.container-inner,
    .container-inner.row,
    section.container-inner
  ).jci-container.row > [class*="col-"]:first-child,
  body:not(.home):not(.front-page):not(.single-program) > .site-wrapper main :is(
    .container-inner,
    .row.container-inner,
    .container-inner.row,
    section.container-inner
  ).jci-container > .row > [class*="col-"]:first-child {
    padding-left: 0 !important;
  }
}

/* Program type subject groups. Moved from template-program-type.php. */
.jci-program-type-subjects .masters__wrapper {
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		align-items: stretch;
		width: 100%;
		max-width: none;
		margin: 0;
		padding: 0;
	}

	.jci-program-type-subjects .master-image {
		min-width: 0;
		min-height: 520px;
		overflow: hidden;
	}

	.jci-program-type-subjects .master-image img {
		display: block;
		width: 100%;
		height: 100%;
		object-fit: cover;
	}

	body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects {
		/* The subject composition is full bleed, but its textual edge follows the
		 * same canonical page grid as the secondary navigation. */
		--jci-program-subject-center-gap: clamp(48px, 5vw, 88px);
	}

	body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects .master-content {
		display: flex;
		align-items: center;
		justify-content: flex-start;
		min-width: 0;
		padding: 0 var(--jci-container-page-edge) 0 0 !important;
		box-sizing: border-box;
		background: #eef3ff;
	}

	body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects .master-content__inner {
		width: 100%;
		max-width: 560px;
		min-width: 0;
		margin: 0;
		padding-block: clamp(36px, 5vw, 80px);
		padding-inline-start: var(--jci-program-subject-center-gap);
		padding-inline-end: 0;
		box-sizing: border-box;
	}

	body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects .masters__wrapper.is-reverse .master-image {
		order: 2;
	}

	body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects .masters__wrapper.is-reverse .master-content {
		order: 1;
		align-items: flex-start;
		justify-content: flex-start;
		padding: 0 0 0 var(--jci-container-page-edge) !important;
	}

	body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects .masters__wrapper.is-reverse .master-content__inner {
		margin-left: 0;
		padding-inline-start: 0;
		padding-inline-end: var(--jci-program-subject-center-gap);
	}

	body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects .masters__wrapper.has-no-image .master-content {
		grid-column: 1 / -1;
		justify-content: center;
		padding-inline: var(--jci-container-page-edge) !important;
	}

	body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects .masters__wrapper.has-no-image .master-content__inner {
		width: 100%;
		max-width: var(--jci-container-max-page, 1280px);
		margin-inline: auto;
		padding-inline: 0;
	}

	body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects .master-content__inner > h2 {
		margin-bottom: 14px;
	}

	.jci-program-type-subjects .sport-business__description {
		margin-bottom: 28px;
	}

	.jci-program-format-group + .jci-program-format-group {
		margin-top: 28px;
	}

	.jci-program-format-group__title {
		margin: 0 0 12px;
		font-size: 13px;
		font-weight: 700;
		line-height: 1.3;
		letter-spacing: .02em;
		text-transform: uppercase;
	}

	.jci-program-list {
		border-top: 1px solid rgba(7, 27, 58, .45);
	}

	.jci-program-list__item {
		padding: 14px 0 16px;
		border-bottom: 1px solid rgba(7, 27, 58, .45);
	}

	.jci-program-list__main {
		display: grid;
		grid-template-columns: 20px minmax(0, 1fr);
		gap: 12px;
		align-items: start;
		color: #071b3a;
		text-decoration: none;
	}

	.jci-program-list__main:hover,
	.jci-program-list__main:focus-visible {
		color: #315eff;
		text-decoration: none;
	}

	.jci-program-list__main:focus-visible {
		outline: 2px solid currentColor;
		outline-offset: 3px;
	}

	.jci-program-list__arrow {
		display: inline-flex;
		width: 18px;
		height: 18px;
		margin-top: 2px;
		align-items: center;
		justify-content: center;
		color: #315eff;
	}

	.jci-program-list__arrow svg {
		display: block;
		width: 100%;
		height: 100%;
		fill: none;
		stroke: currentColor;
		stroke-width: 2.2;
		stroke-linecap: round;
		stroke-linejoin: round;
	}

	.jci-program-list__title {
		font-size: 17px;
		font-weight: 500;
		line-height: 1.35;
	}

	.jci-program-list__meta {
		display: flex;
		flex-wrap: wrap;
		gap: 4px 14px;
		margin: 12px 0 0 32px;
		font-size: 12px;
		color: #071b3a;
	}



	.jci-program-type-empty {
		padding: 48px 20px;
	}

	@media (max-width: 767px) {
		.jci-program-type-subjects .masters__wrapper {
			grid-template-columns: minmax(0, 1fr);
		}

		.jci-program-type-subjects .masters__wrapper .master-image,
		.jci-program-type-subjects .masters__wrapper.is-reverse .master-image {
			order: 1;
			min-height: 260px;
		}

		body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects .masters__wrapper .master-content,
		body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects .masters__wrapper.is-reverse .master-content,
		body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects .masters__wrapper.has-no-image .master-content {
			order: 2;
			justify-content: flex-start;
			padding: 0 !important;
		}

		/* Match the desktop selectors so their directional padding cannot leak into
		 * mobile. Every subject-area content block uses the same canonical gutter
		 * on both sides, regardless of image order. */
		body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects .masters__wrapper .master-content__inner,
		body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects .masters__wrapper.is-reverse .master-content__inner,
		body:not(.home):not(.front-page) .masters-list.jci-program-type-subjects .masters__wrapper.has-no-image .master-content__inner {
			width: 100%;
			max-width: none;
			margin-inline: 0;
			padding-block: 30px 38px;
			padding-inline: var(--jci-container-gutter-mobile, 16px);
		}

		.jci-program-type-subjects .jci-program-list__meta {
			flex-direction: row;
			flex-wrap: wrap;
			align-items: center;
			gap: 4px 8px;
			margin-top: 6px;
			font-size: clamp(10.5px, 2.9vw, 12px);
		}

		.jci-program-type-subjects .jci-program-list__meta-item {
			flex: 0 1 auto;
			min-width: 0;
			flex-wrap: nowrap;
			gap: 4px;
			padding: 0;
			border-radius: 0;
			background: transparent;
			white-space: nowrap;
		}

		.jci-program-type-subjects .jci-program-list__meta-value {
			flex-wrap: nowrap;
			white-space: nowrap;
		}
	}

/* Canonical overlapping wide testimonial. The component owns its compact width,
 * media ratio and overlap geometry so every `wide` consumer renders identically,
 * regardless of the surrounding page container. This prevents program-type and
 * subject-area templates from silently expanding the same testimonial format. */
@media (min-width: 768px) {
	.jci-testimonial--wide.jci-testimonial--overlap {
		--jci-wide-testimonial-card-drop: clamp(44px, 4vw, 60px);
		--jci-wide-testimonial-overlap: clamp(96px, 8vw, 120px);
		position: relative;
		display: grid;
		grid-template-columns: minmax(0, 55fr) minmax(0, 45fr);
		gap: 0;
		align-items: start;
		width: min(100%, var(--jci-container-max-testimonial, 760px));
		margin-inline: auto;
		padding-bottom: var(--jci-wide-testimonial-card-drop);
	}

	.jci-testimonial--wide.jci-testimonial--overlap > [class*="col-"] {
		width: 100%;
		max-width: none;
		min-width: 0;
		padding: 0;
	}

	.jci-testimonial--wide.jci-testimonial--overlap > .col-6.desktop {
		position: relative;
		aspect-ratio: 5 / 3;
		overflow: hidden;
	}

	.jci-testimonial--wide.jci-testimonial--overlap .col-6.desktop > img.w100 {
		position: absolute;
		inset: 0;
		display: block;
		width: 100%;
		height: 100%;
		object-fit: cover;
		object-position: center;
	}

	.jci-testimonial--wide.jci-testimonial--overlap > .col-6:last-child {
		position: absolute;
		right: 0;
		bottom: 0;
		width: 45%;
		min-width: 0;
		margin-top: 0;
		transform: none;
		z-index: 1;
	}

	.jci-testimonial--wide.jci-testimonial--overlap .fotografia-desc-big {
		position: relative;
		top: auto;
		left: auto;
		width: calc(100% + var(--jci-wide-testimonial-overlap));
		margin: 0 0 0 calc(-1 * var(--jci-wide-testimonial-overlap));
		padding: clamp(28px, 2.6vw, 38px);
		background: #fff;
	}

	.jci-testimonial--wide.jci-testimonial--overlap .jci-testimonial__wide-quote {
		margin: 0 0 22px;
		color: var(--color-brand-navy, #041c40);
		font-size: 16px;
		font-weight: 700;
		line-height: 1.4;
	}

	.jci-testimonial--wide.jci-testimonial--overlap .jci-testimonial__wide-quote p {
		margin: 0;
	}

	.jci-testimonial--wide.jci-testimonial--overlap .jci-testimonial__wide-attribution {
		display: grid;
		gap: 2px;
		margin: 0;
		color: var(--color-brand-navy, #041c40);
		font-size: 12px;
		line-height: 1.35;
	}

	.jci-testimonial--wide.jci-testimonial--overlap .jci-testimonial__wide-attribution strong {
		font-weight: 700;
	}
}

/* Mobile keeps the same component ownership while returning the image and copy
 * to normal document flow. */
@media (max-width: 767px) {
	.jci-testimonial--wide.jci-testimonial--overlap,
	.jci-testimonial--wide.jci-testimonial--overlap > [class*="col-"] {
		width: 100%;
		max-width: none;
		margin: 0;
		padding: 0;
	}

	.jci-testimonial--wide.jci-testimonial--overlap {
		display: block;
	}

	.jci-testimonial--wide.jci-testimonial--overlap > .col-6:last-child {
		transform: none;
	}

	.jci-testimonial--wide.jci-testimonial--overlap .fotografia-max.mobile {
		display: block;
		width: 100%;
		height: auto;
		max-height: none;
		object-fit: contain;
	}

	.jci-testimonial--wide.jci-testimonial--overlap .fotografia-desc-big {
		position: static;
		width: 100%;
		margin: 0;
		padding: 20px 0 0;
		background: transparent;
		color: var(--color-brand-navy, #041c40);
		font-size: 14px;
		line-height: 1.45;
	}

	.jci-testimonial--wide.jci-testimonial--overlap .jci-testimonial__wide-quote {
		display: block;
		margin: 0 0 16px;
		font-size: 17px;
		font-weight: 600;
		line-height: 1.4;
	}

	.jci-testimonial--wide.jci-testimonial--overlap .jci-testimonial__wide-quote p,
	.jci-testimonial--wide.jci-testimonial--overlap .jci-testimonial__wide-attribution {
		margin: 0;
	}

	.jci-testimonial--wide.jci-testimonial--overlap .jci-testimonial__wide-attribution {
		display: grid;
		gap: 2px;
		font-size: 12px;
		line-height: 1.35;
	}

	.jci-testimonial--wide.jci-testimonial--overlap .fotografia-desc-big .fletxa2.mobile {
		display: none;
	}
}
