/*
 * Campus theme for the public website.
 *
 * Sizes follow measurements of the Provus EDU design; the CSS itself is
 * original. Colours come from school settings through --cp-* tokens set in
 * themes/campus/layout/app.blade.php. Pages without their own campus view still
 * use Bootstrap and main.css markup, so the "shared pages" section restyles it.
 */

:root {
  --cp-text: #343a40;
  --cp-heading: #000;
  --cp-surface: #fff;
  --cp-surface-alt: #f8f5f2;
  --cp-surface-cool: #f7f8fa;
  --cp-font: 'Source Sans 3', serif;
  /* The design's signature: two large corners, two small. */
  --cp-corner: 40px 4px;
  --cp-shadow: 0 0 8px rgba(0, 0, 0, .15);
  --cp-gutter: 24px;
}

body.campus {
  background: var(--cp-surface);
  color: var(--cp-text);
  font-family: var(--cp-font);
  font-size: 16px;
  line-height: 24px;
  overflow-x: hidden;
}

.campus h1, .campus h2, .campus h3, .campus h4, .campus h5, .campus h6 {
  font-family: var(--cp-font);
  font-weight: 700;
}

.campus a { color: var(--cp-link); }
.campus a:hover { color: var(--cp-primary-accent); }
.campus :focus-visible { outline: 3px solid var(--cp-accent); outline-offset: 2px; }

.cp-container { margin: 0 auto; max-width: 984px; padding: 0 12px; width: 100%; }

/* Content widens in two steps on large screens. */
@media (min-width: 1440px) {
  .cp-container { max-width: 1252px; }
}

@media (min-width: 1680px) {
  .cp-container { max-width: 1568px; }
}

/* ── Buttons ─────────────────────────────────────────── */
.campus .cp-btn {
  align-items: center;
  border: 0;
  border-radius: 100px;
  cursor: pointer;
  display: inline-flex;
  font-size: 20px;
  font-weight: 600;
  justify-content: center;
  letter-spacing: 2px;
  line-height: 18px;
  padding: 20px;
  text-decoration: none;
  text-transform: uppercase;
  transition: background-color .2s, color .2s;
}

.campus .cp-btn-primary { background: var(--cp-accent); color: var(--cp-on-accent-text); }
.campus .cp-btn-primary:hover { background: var(--cp-accent-hover); color: var(--cp-on-accent-text); }
.campus .cp-btn-secondary { background: var(--cp-surface-alt); color: var(--cp-link); }
.campus .cp-btn-secondary:hover { background: var(--cp-surface); color: var(--cp-link); }
.campus .cp-btn-outline { background: var(--cp-surface); border: 2px solid var(--cp-primary-accent); color: #000; }
.campus .cp-btn-outline:hover { background: var(--cp-primary-accent); color: var(--cp-on-primary); }

/* ── Header ──────────────────────────────────────────── */
.cp-header { background: var(--cp-surface); position: sticky; top: 0; z-index: 1020; }
.cp-utility { background: var(--cp-primary); }
.cp-utility .cp-container { align-items: center; display: flex; gap: 16px; justify-content: flex-end; min-height: 42px; }
/* Language menu. Google's own widget stays hidden and does the translating. */
.cp-translate-engine { height: 1px; left: -9999px; overflow: hidden; position: absolute; width: 1px; }
.cp-lang { flex: none; margin-left: 12px; }
.cp-lang-button {
  align-items: center;
  background: var(--cp-surface-alt);
  border: 0;
  border-radius: 100px;
  color: var(--cp-link);
  cursor: pointer;
  display: inline-flex;
  font-size: 14px;
  font-weight: 600;
  gap: 6px;
  height: 30px;
  padding: 0 12px;
  transition: background-color .2s;
  white-space: nowrap;
}
.cp-lang-button:hover, .cp-lang-button[aria-expanded="true"] { background: var(--cp-surface); }
.cp-lang-button .bi-chevron-down { font-size: 11px; -webkit-text-stroke: .5px currentColor; }
.cp-lang .dropdown-menu { border: 0; border-radius: 20px 4px; box-shadow: var(--cp-shadow); min-width: 190px; padding: 8px; }
.campus .cp-lang .dropdown-item { border-radius: 4px; color: #000; font-size: 16px; padding: 8px 12px; }
.campus .cp-lang .dropdown-item:hover, .campus .cp-lang .dropdown-item:focus { background: var(--cp-surface-alt); color: var(--cp-link); }
.campus .cp-lang .dropdown-item.active { background: var(--cp-primary); color: var(--cp-on-primary); }
.cp-lang-credit { color: #595959; font-size: 12px; line-height: 16px; padding: 8px 12px 4px; }

/* Google's bar would push the page down under the sticky header. */
.goog-te-banner-frame, iframe.skiptranslate, .skiptranslate > iframe, #goog-gt-tt, .goog-te-balloon-frame { display: none !important; }
body.campus { top: 0 !important; }
font.goog-text-highlight, .goog-text-highlight { background: none !important; box-shadow: none !important; }
.campus .cp-utility a { color: var(--cp-on-primary); font-size: 16px; font-weight: 500; line-height: 26px; text-decoration: none; }
.campus .cp-utility a:hover { text-decoration: underline; }

.cp-bar > .cp-container { align-items: center; display: flex; justify-content: space-between; min-height: 95px; position: relative; }

/* The school lockup: crest, a woven strip in the brand colours, then the name. */
.campus a.cp-brand { align-items: center; color: inherit; display: flex; flex: none; gap: 12px; max-width: 280px; text-decoration: none; }
.cp-brand img { display: block; flex: none; height: 58px; width: auto; }
.cp-brand-weave {
  background: repeating-linear-gradient(180deg, var(--cp-primary) 0 6px, var(--cp-accent) 6px 12px, var(--cp-surface) 12px 14px, var(--cp-primary) 14px 20px, var(--cp-surface) 20px 22px);
  background-size: 100% 66px;
  flex: none;
  height: 52px;
  transition: background-position .5s ease;
  width: 5px;
}
.cp-brand:hover .cp-brand-weave { background-position: 0 22px; }
.cp-brand-name { display: block; min-width: 0; }
.cp-brand-name strong {
  color: var(--cp-link);
  display: block;
  font-family: 'Fjalla One', var(--cp-font);
  font-size: 20px;
  font-weight: 400;
  letter-spacing: .3px;
  line-height: 23px;
}
.cp-brand-name span {
  color: var(--cp-text);
  display: block;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .5px;
  line-height: 16px;
  margin-top: 2px;
}
.cp-search-menu { display: none; }

/* A centred search box would sit on the school name on tablets. */
@media (max-width: 991.98px) {
  .cp-bar > .cp-container > .cp-search { left: auto; right: 78px; transform: none; }
}

.cp-search { left: 50%; position: absolute; top: 13px; transform: translateX(-50%); width: 225px; }
.cp-search input {
  background: var(--cp-surface);
  border: 1px solid #747474;
  border-radius: 40px;
  color: #403c3a;
  font-size: 18px;
  height: 40px;
  padding: 10px 10px 10px 32px;
  width: 100%;
}
.cp-search i { color: #5f6368; font-size: 16px; left: 11px; line-height: 40px; pointer-events: none; position: absolute; top: 0; -webkit-text-stroke: .6px #5f6368; }

.cp-toggle { background: none; border: 0; color: var(--cp-link); cursor: pointer; height: 38px; padding: 0; position: relative; width: 54px; }
.cp-toggle span { background: currentColor; display: block; height: 2px; margin: 0 auto; position: absolute; right: 13px; transition: transform .2s, opacity .2s; width: 24px; }
.cp-toggle span:nth-child(1) { top: 11px; }
.cp-toggle span:nth-child(2) { top: 18px; }
.cp-toggle span:nth-child(3) { top: 25px; }
.cp-toggle[aria-expanded="true"] { color: #000; }
.cp-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.cp-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.cp-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* The menu covers the page below the header, on every screen size. */
.cp-menu { background: var(--cp-surface); left: 0; min-height: calc(100vh - 137px); position: absolute; right: 0; top: 100%; z-index: 1030; }
.cp-menu.collapsing { transition: none; }
.cp-menu ul { list-style: none; margin: 0; padding: 0; }
.cp-menu .cp-container > ul { padding: 0 30px; }
.campus .cp-menu a { color: #000; display: block; font-size: 18px; font-weight: 600; line-height: 27px; padding: 15px 0; text-decoration: none; }
.campus .cp-menu a:hover, .campus .cp-menu a.active { color: var(--cp-link); }
.cp-menu .cp-sub { padding-left: 20px; }
.campus .cp-menu .cp-sub a { font-weight: 400; padding: 8px 0; }

/* From 1440px the menu sits across the header and the search moves right. */
@media (max-width: 1439.98px) {
  .cp-menu-open > .cp-container > .cp-search { display: none; }
}

@media (min-width: 1440px) {
  .cp-toggle { display: none; }
  .cp-search { left: auto; right: 12px; transform: none; }
  .cp-bar { position: relative; }
  .cp-menu.collapse { background: none; bottom: 0; display: block; min-height: 0; pointer-events: none; top: 0; }
  /* Room for the school name on the left and the search on the right. */
  .cp-menu .cp-container { align-items: center; display: flex; height: 100%; justify-content: center; padding-left: 292px; padding-right: 237px; }
  /* A fixed-width list, so the links keep their place beside the logo. */
  .cp-menu .cp-container > ul { display: flex; gap: 24px; padding: 0; pointer-events: auto; white-space: nowrap; }
  .cp-menu li { position: relative; }
  .campus .cp-menu .cp-container > ul > li > a { padding: 20px 0; }
  /* Translations run longer, so the links shrink and may take two lines. */
  html.translated-ltr .cp-menu .cp-container > ul { gap: 14px; white-space: normal; }
  html.translated-ltr .campus .cp-menu .cp-container > ul > li > a { font-size: 15px; line-height: 18px; padding: 8px 0; }
  .cp-menu .cp-sub {
    background: var(--cp-surface);
    white-space: normal;
    border-radius: 4px;
    box-shadow: var(--cp-shadow);
    display: none;
    left: 0;
    min-width: 220px;
    padding: 8px 16px;
    position: absolute;
    top: 100%;
  }
  .cp-menu li:hover > .cp-sub, .cp-menu li:focus-within > .cp-sub { display: block; }
}

/* Wide screens have room for the name and the design's own menu position. */
@media (min-width: 1680px) {
  .cp-menu .cp-container { justify-content: flex-start; padding-left: 363px; }
  .cp-menu .cp-container > ul { gap: 32px; }
}

@media (max-width: 767.98px) {
  .cp-utility .cp-container { min-height: 36px; }
  .campus .cp-utility a { font-size: 14px; line-height: 20px; }
  .campus .cp-utility .cp-container > a { white-space: nowrap; }
  .cp-utility .cp-container { gap: 12px; }
  .cp-lang { margin-left: 0; }
  .cp-bar > .cp-container { min-height: 84px; }
  .cp-bar > .cp-container > .cp-search { display: none; }
  .cp-search-menu { display: block; left: auto; margin: 16px 30px 8px; max-width: none; position: relative; top: auto; transform: none; width: auto; }
  .cp-search input { font-size: 16px; }
  .campus a.cp-brand { flex: 0 1 auto; gap: 10px; max-width: calc(100% - 62px); }
  .cp-brand img { height: 52px; }
  .cp-brand-weave { height: 46px; }
  .cp-brand-name strong { font-size: 17px; line-height: 20px; }
  .cp-brand-name span { font-size: 12px; line-height: 14px; }
  .cp-menu { min-height: calc(100vh - 120px); }
}

/* ── Hero ────────────────────────────────────────────── */
.campus .cp-hero { background: var(--cp-primary) center / cover no-repeat; color: #fff; padding: 0; position: relative; }
.cp-hero-slide { align-items: center; background: center / cover no-repeat; display: flex; min-height: 175px; }
.cp-hero .carousel-item.active, .cp-hero .carousel-item-next, .cp-hero .carousel-item-prev { display: flex; }
.cp-hero-content { padding-bottom: 24px; padding-top: 24px; }
/* Buttons sit beside the text, so they don't add to the height. */
.cp-hero-text { align-items: center; column-gap: 32px; display: grid; grid-template-columns: minmax(0, 1fr) auto; }
.cp-hero-text > h1, .cp-hero-text > p { grid-column: 1; }
.cp-hero-centered .cp-hero-text { margin: 0 auto; max-width: none; text-align: center; }
.campus .cp-hero h1 { color: #fff; font-size: 40px; line-height: 46px; margin: 0 0 4px; text-shadow: 0 0 10px #000; }
.campus .cp-hero p { color: #fff; font-size: 20px; font-weight: 600; line-height: 28px; margin: 0; text-shadow: 0 0 10px #000; }
.cp-hero-actions { display: flex; gap: 16px; grid-column: 2; grid-row: 1 / span 2; }
.cp-hero-centered .cp-hero-actions { justify-content: center; }
.cp-hero .carousel-indicators { margin-bottom: 16px; }
.cp-hero .carousel-control-prev, .cp-hero .carousel-control-next { width: 6%; }

/* Apply is in the menu; three links and the language box will not fit on a phone. */
@media (max-width: 479.98px) {
  .cp-utility-apply { display: none; }
}

@media (max-width: 767.98px) {
  .cp-hero-slide { min-height: 110px; }
  .cp-hero-text { grid-template-columns: minmax(0, 1fr); }
  .cp-hero-actions { display: none; }
  .campus .cp-hero h1 { font-size: 28px; line-height: 34px; }
  .campus .cp-hero p { font-size: 15px; line-height: 20px; }
  .cp-hero-content { padding: 16px 20px; }
  .campus .cp-btn { font-size: 18px; padding: 18px 20px; }
}

/* ── Sections and headings ───────────────────────────── */
.campus .cp-section { background: transparent; color: var(--cp-text); padding: 64px 0; }
.campus .cp-section-cool { background: var(--cp-surface-cool); }

/* The plus-sign background, drawn here rather than loaded as an image. */
.campus .cp-section-plus {
  background-color: var(--cp-surface-alt);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' fill='%23dfe3ea'%3E%3Cpath d='M23 14h2v8h8v2h-8v8h-2v-8h-8v-2h8zM83 40h3v11h11v3H86v11h-3V54H72v-3h11zM35 84h2v6h6v2h-6v6h-2v-6h-6v-2h6z'/%3E%3C/svg%3E");
  padding: 80px 0;
}

.cp-title { margin-bottom: 40px; text-align: center; }
.campus .cp-title h2, .campus .cp-h2 { color: var(--cp-link); font-size: 52px; line-height: 62px; margin: 12px 0; }
.campus .cp-h3 { color: var(--cp-link); font-size: 32px; line-height: 44px; margin: 12px 0; }
.cp-title p { margin: 16px auto 0; max-width: 780px; }

/* A heading sitting on a line that runs the full width behind it. */
.cp-line { margin-bottom: 50px; text-align: center; }
.campus .cp-line h2 { color: var(--cp-link); font-size: 52px; line-height: 62px; margin: 12px 0; position: relative; }
.campus .cp-line h2::before { background: var(--cp-primary); content: ''; height: 2px; left: 0; position: absolute; right: 0; top: 50%; }
.cp-line h2 span { background: var(--cp-surface); display: inline-block; padding: 0 40px; position: relative; }
.cp-section-cool .cp-line h2 span { background: var(--cp-surface-cool); }
.cp-line p { margin: 16px auto 0; max-width: 780px; }

@media (max-width: 767.98px) {
  .campus .cp-title h2, .campus .cp-h2, .campus .cp-line h2 { font-size: 32px; line-height: 40px; }
  .campus .cp-h3 { font-size: 26px; line-height: 34px; }
  .cp-line h2 span { padding: 0 16px; }
}

.cp-split { align-items: center; display: grid; gap: 24px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cp-split-top { align-items: start; }
.cp-split-image { border-radius: var(--cp-corner); display: block; object-fit: cover; object-position: top center; width: 100%; }
.cp-prose p:last-of-type { margin-bottom: 16px; }

@media (max-width: 991.98px) {
  .cp-split { grid-template-columns: minmax(0, 1fr); }
}

.cp-center { margin-top: 32px; text-align: center; }

/* Uppercase underlined text links under a paragraph. */
.campus .cp-links { display: flex; flex-direction: column; gap: 16px; margin: 16px 0 24px; }
.campus .cp-links a { color: var(--cp-link); font-size: 16px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; }

/* ── Cards ───────────────────────────────────────────── */
.cp-grid { display: grid; gap: 24px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cp-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

@media (max-width: 991.98px) {
  .cp-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 767.98px) {
  .cp-grid { grid-template-columns: minmax(0, 1fr); }
  .cp-grid-4 { gap: 16px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.cp-card {
  background: var(--cp-surface);
  border-radius: var(--cp-corner);
  box-shadow: var(--cp-shadow);
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
}

.cp-card-body { color: #000; display: flex; flex: 1; flex-direction: column; font-size: 18px; line-height: 27px; padding: 40px; }
.campus .cp-card h3 { color: #000; font-size: 22px; line-height: 28px; margin: 0 0 8px; }
.campus .cp-card h3 a { color: #000; text-decoration: none; }
.campus .cp-card h3 a:hover { color: var(--cp-link); }
.cp-card p { margin-bottom: 24px; }
.cp-card-action { margin-top: auto; }

.cp-media { aspect-ratio: 2 / 1; background: var(--cp-surface-alt); display: block; overflow: hidden; }
.cp-media img { display: block; height: 100%; object-fit: cover; width: 100%; }
.cp-date { color: #000; font-size: 18px; line-height: 27px; margin-bottom: 8px; }

/* Program tiles: a photo with the title and an arrow along the bottom. */
.campus a.cp-tile {
  background: var(--cp-primary) center / cover no-repeat;
  border-radius: var(--cp-corner);
  box-shadow: var(--cp-shadow);
  color: #fff;
  display: flex;
  flex-direction: column;
  aspect-ratio: 8 / 5;
  justify-content: flex-end;
  overflow: hidden;
  position: relative;
  text-decoration: none;
}
.cp-tile::before { background: linear-gradient(0deg, rgba(0, 0, 0, .75), rgba(0, 0, 0, .15)); content: ''; inset: 0; position: absolute; }
.cp-tile span { align-items: center; display: flex; font-size: 20px; font-weight: 700; gap: 12px; justify-content: space-between; line-height: 26px; padding: 0 32px 32px; position: relative; }

@media (max-width: 767.98px) {
  .cp-tile span { font-size: 18px; line-height: 24px; }
}

/* Support cards: an icon over an uppercase title. */
.cp-support { background: var(--cp-surface); border-radius: 4px; box-shadow: var(--cp-shadow); height: 100%; padding: 40px; }
.cp-support i { color: var(--cp-link); display: block; font-size: 36px; line-height: 1; margin-bottom: 20px; }
.campus .cp-support h3 { color: #000; font-size: 22px; line-height: 28px; margin: 0 0 8px; text-transform: uppercase; }
.cp-support p { margin: 0; }

/* The maroon date block, also used for headline figures. */
.cp-block { background: var(--cp-primary); border: 1px solid #e7e8e9; border-radius: 4px; color: var(--cp-on-primary); padding: 32px 8px; text-align: center; }
.cp-block strong { color: var(--cp-on-primary); display: block; font-size: 40px; font-weight: 700; line-height: 48px; }
.cp-block span { display: block; font-size: 16px; font-weight: 600; letter-spacing: 2px; line-height: 24px; margin-top: 8px; text-transform: uppercase; }

/* ── People ──────────────────────────────────────────── */
.cp-person-photo { aspect-ratio: 1 / 1; background: var(--cp-surface-alt); display: block; overflow: hidden; }
.cp-person-photo img { display: block; height: 100%; object-fit: cover; object-position: top center; width: 100%; }
.cp-person-empty {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23c9c2c2'%3E%3Cpath d='M12 12a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm0 2c-4.4 0-8 2.2-8 5v3h16v-3c0-2.8-3.6-5-8-5Z'/%3E%3C/svg%3E");
  background-position: center;
  background-repeat: no-repeat;
  background-size: 55%;
}
.cp-person .cp-card-body { font-size: 16px; line-height: 24px; padding: 24px; }
.campus .cp-person h3 { font-size: 20px; line-height: 26px; overflow-wrap: anywhere; }
.cp-person p { margin: 0; }

@media (max-width: 767.98px) {
  .cp-person .cp-card-body { padding: 12px; }
  .campus .cp-person h3 { font-size: 16px; line-height: 22px; }
  .cp-person p { font-size: 14px; line-height: 20px; }
}

.cp-filter { align-items: flex-end; display: flex; flex-wrap: wrap; gap: 16px; margin-bottom: 32px; }
.cp-filter > div { flex: 0 1 18rem; min-width: 14rem; }
.cp-filter label { display: block; font-weight: 600; margin-bottom: 4px; }
.cp-filter select { border-radius: 100px; height: 58px; padding-left: 20px; padding-right: 40px; text-overflow: ellipsis; }
.cp-count { margin-bottom: 24px; }

@media (max-width: 767.98px) {
  .cp-filter > div { flex: 1 1 100%; }
}

/* ── Quotes and call to action ───────────────────────── */
.cp-testimonial p { font-size: 18px; line-height: 27px; }
.cp-testimonial-by { align-items: center; display: flex; gap: 12px; margin-top: auto; }
.cp-testimonial-by img { border-radius: 50%; height: 52px; object-fit: cover; width: 52px; }
.cp-testimonial-by span { display: block; }

.cp-cta { background: var(--cp-surface-alt); padding: 64px 40px; text-align: center; }
.cp-cta p { color: #000; font-size: 18px; line-height: 27px; margin: 0 auto 24px; max-width: 860px; }

.cp-notice { background: var(--cp-accent); color: var(--cp-on-accent-text); padding: 12px 0; }
.cp-notice .cp-container { align-items: center; display: flex; flex-wrap: wrap; gap: 8px 24px; justify-content: space-between; }
.campus .cp-notice a { color: inherit; font-weight: 700; }

.cp-pills { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin-bottom: 40px; }
.campus a.cp-pill { background: var(--cp-surface); border: 2px solid var(--cp-primary-accent); border-radius: 100px; color: #000; font-weight: 600; padding: 8px 20px; text-decoration: none; }
.campus a.cp-pill:hover, .campus a.cp-pill.active { background: var(--cp-primary-accent); color: var(--cp-on-primary); }

.cp-article { margin: 0 auto; max-width: 800px; }
.cp-article-image { border-radius: var(--cp-corner); display: block; margin-bottom: 32px; width: 100%; }
.cp-article-body { font-size: 18px; line-height: 27px; overflow-wrap: break-word; }
.cp-article-body img { border-radius: 12px; height: auto; max-width: 100%; }

.campus .pagination { justify-content: center; margin-top: 40px; }
.campus .page-link { color: var(--cp-link); }
.campus .page-item.active .page-link { background: var(--cp-primary); border-color: var(--cp-primary); color: var(--cp-on-primary); }

.cp-empty { padding: 40px 0; text-align: center; }
.cp-empty i { display: block; font-size: 48px; margin-bottom: 8px; }

/* ── Footer ──────────────────────────────────────────── */
.cp-footer { background: var(--cp-primary); color: var(--cp-on-primary); padding: 60px 0; }
.cp-footer-grid { display: grid; gap: 24px; grid-template-columns: 2fr 1fr 1fr 1.5fr; }
.campus .cp-footer h2 { color: var(--cp-on-primary); font-size: 16px; font-weight: 600; line-height: 26px; margin: 8px 0 16px; }
.campus .cp-footer a { color: var(--cp-on-primary); text-decoration: none; }
.campus .cp-footer a:hover { text-decoration: underline; }
.cp-footer ul { list-style: none; margin: 0; padding: 0; }
.cp-footer li { margin-bottom: 8px; }
.cp-footer-brand img { display: block; height: 58px; margin-bottom: 24px; width: auto; }
.cp-footer-brand p { line-height: 26px; margin: 0; }
.cp-footer-bottom { border-top: 1px solid rgba(255, 255, 255, .25); display: flex; flex-wrap: wrap; gap: 8px 32px; justify-content: space-between; line-height: 26px; margin-top: 48px; padding-top: 24px; }
.cp-footer-legal { display: flex; flex-wrap: wrap; gap: 8px 32px; }

@media (max-width: 991.98px) {
  .cp-footer-grid { grid-template-columns: repeat(3, 1fr); }
  .cp-footer-brand { grid-column: 1 / -1; }
}

@media (max-width: 575.98px) {
  .cp-footer-grid { grid-template-columns: minmax(0, 1fr); }
}

/* ── Shared pages: contact, terms, admission, access ─── */
.campus .main { color: var(--cp-text); }
.campus .main > section .container, .campus .main > .page-title .container, .campus .page-header-banner .container { max-width: 984px; }

@media (min-width: 1440px) {
  .campus .main > section .container, .campus .main > .page-title .container, .campus .page-header-banner .container { max-width: 1252px; }
}

@media (min-width: 1680px) {
  .campus .main > section .container, .campus .main > .page-title .container, .campus .page-header-banner .container { max-width: 1568px; }
}

/* Page heads use the same photo hero as the theme's own pages. */
body.campus .page-title, body.campus .page-header-banner {
  align-items: center;
  background: var(--cp-primary) var(--cp-hero-image) center / cover no-repeat;
  border: 0;
  display: flex;
  min-height: 175px;
  padding: 0;
  text-align: left;
}
body.campus .page-title .breadcrumbs,
body.campus .page-header-banner nav,
body.campus .page-header-banner .header-icon { display: none !important; }
body.campus .page-header-banner > .container { text-align: left !important; }
.campus .page-title .heading { background: none; border: 0; padding: 0; width: 100%; }
.campus .page-title .heading .row { justify-content: flex-start !important; text-align: left !important; }
.campus .page-title .heading .col-lg-8 { width: 100%; }
body.campus .page-title h1, body.campus .page-header-banner h1 { color: #fff; font-size: 40px; font-weight: 700; line-height: 46px; margin: 0 0 4px; text-shadow: 0 0 10px #000; }
body.campus .page-title p, body.campus .page-header-banner p { color: #fff; font-size: 20px; font-weight: 600; line-height: 28px; opacity: 1; text-shadow: 0 0 10px #000; }

.campus .section { background: transparent; }
.campus .section-title h2 { color: var(--cp-link); font-size: 52px; font-weight: 700; line-height: 62px; }
.campus .section-title h2::after, .campus .section-title h2::before { display: none; }

.campus .info-card, .campus .form-wrapper, body.campus .activation-card {
  background: var(--cp-surface);
  border: 0;
  border-radius: var(--cp-corner);
  box-shadow: var(--cp-shadow);
}
.campus .info-card, .campus .form-wrapper, body.campus .activation-card { padding: 40px; }
body.campus .page-header-banner p { margin: 0; max-width: 620px; }
.campus .main h2 { color: var(--cp-link); font-weight: 700; }
.campus .main > .section:first-of-type .section-title, .campus .main > section:first-of-type.section { padding-top: 48px; }
body.campus .activation-card-icon { background: var(--cp-primary); color: var(--cp-on-primary); }
body.campus .activation-card-title, body.campus .activation-section label { color: var(--cp-link); }
.campus .info-card h3 { color: #000; font-size: 22px; line-height: 28px; }
.campus .icon-box { background: var(--cp-surface-alt); color: var(--cp-link); }
body.campus .activation-section { background: transparent; padding: 64px 0; }

.campus .form-control, .campus .input-group-text { border-radius: 4px; font-size: 16px; }

.campus .btn-primary,
.campus .contact button[type="submit"],
body.campus .btn-verify,
body.campus .btn-pay {
  background: var(--cp-accent);
  border: 0;
  border-radius: 100px;
  color: var(--cp-on-accent-text);
  font-size: 20px;
  font-weight: 600;
  letter-spacing: 2px;
  line-height: 18px;
  padding: 20px;
  text-transform: uppercase;
}
.campus .btn-primary:hover,
.campus .contact button[type="submit"]:hover,
body.campus .btn-verify:hover,
body.campus .btn-pay:hover { background: var(--cp-accent-hover); box-shadow: none; color: var(--cp-on-accent-text); transform: none; }

@media (max-width: 767.98px) {
  body.campus .page-title, body.campus .page-header-banner { min-height: 110px; }
  body.campus .page-title h1, body.campus .page-header-banner h1 { font-size: 28px; line-height: 34px; }
  body.campus .page-title p, body.campus .page-header-banner p { font-size: 15px; line-height: 20px; }
  .campus .section-title h2 { font-size: 32px; line-height: 40px; }
  .campus .info-card, .campus .form-wrapper, body.campus .activation-card { padding: 24px; }
}
