/* Direction C — Campus. Bold and modern.
   Desktop values follow the 1440px comp; breakpoints at 1024px and 640px. */

:root {
  --gutter: 80px;
  --page-max: 1440px;
  --card-line: #E3EDF7;
}

body { background: var(--ice); }

.hero-wrap,
.film,
.browse,
.az,
.lease-wrap {
  max-width: var(--page-max);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

/* ------------------------------------------------------------ Header */

.site-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0 24px;
  padding: 14px var(--gutter);
  background: #FFFFFF;
}
.site-header__logo { display: block; border-radius: 6px; }
.site-header__logo img { height: 80px; width: auto; }

.mainnav ul { display: flex; column-gap: 30px; }
.mainnav a {
  display: inline-flex;
  align-items: center;
  min-height: var(--tap);
  color: var(--ink);
  font-size: 15px;
  font-weight: 600;
  text-decoration: none;
}
.mainnav a:hover { color: var(--navy); text-decoration: underline; text-underline-offset: 6px; text-decoration-thickness: 2px; }
.mainnav a[aria-current="page"] { color: var(--royal-ink); }

.site-header__actions { display: flex; align-items: center; gap: 8px; }
.call-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 50px;
  padding: 0 24px;
  border-radius: 999px;
  background: var(--navy);
  color: #FFFFFF;
  font-size: 15px;
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color .15s var(--ease);
}
.call-pill:hover { background: var(--navy-deep); color: #FFFFFF; }
.call-pill__icon { display: none; }

.nav-toggle { display: none; }

/* ------------------------------------------------------------ Hero */

.hero-wrap { padding-top: 24px; }
.hero {
  display: flex;
  align-items: center;
  gap: 48px;
  padding: 64px 64px 64px 72px;
  background: var(--navy);
  border-radius: 36px;
  overflow: hidden;
  color: #FFFFFF;
}
.hero__copy {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.hero__kicker {
  align-self: flex-start;
  padding: 8px 16px;
  border-radius: 999px;
  background: #1B4F8F;
  color: var(--on-navy);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
}
h1 {
  font-family: var(--font-display);
  font-size: 62px;
  line-height: 1.08;
  font-weight: 700;
  color: #FFFFFF;
}
.hero__accent { color: var(--sky); }
.hero__intro {
  max-width: 540px;
  font-size: 19px;
  line-height: 1.6;
  color: var(--on-navy-soft);
}

.hero-search { display: flex; flex-direction: column; gap: 8px; max-width: 560px; }
.hero-search__label { font-size: 14px; font-weight: 600; color: var(--on-navy); }
.hero-search__pill {
  display: flex;
  align-items: center;
  gap: 12px;
  height: 64px;
  padding: 0 8px 0 22px;
  background: #FFFFFF;
  border-radius: 999px;
}
.hero-search__pill:focus-within { box-shadow: 0 0 0 3px var(--navy), 0 0 0 6px var(--sky); }
.hero-search__icon { flex-shrink: 0; color: var(--navy); }
.hero-search__pill input {
  flex-grow: 1;
  min-width: 0;
  height: 100%;
  border: 0;
  outline: none;
  background: transparent;
  font-size: 17px;
  color: var(--ink);
}
.hero-search__pill input::placeholder { color: #5E6C84; opacity: 1; }
.hero-search__clear {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--tap);
  height: var(--tap);
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--muted);
}
.hero-search__clear:hover { background: var(--ice); color: var(--ink); }
.hero-search__submit {
  flex-shrink: 0;
  height: 48px;
  padding: 0 24px;
  border: 0;
  border-radius: 999px;
  background: var(--royal-ink);
  color: #FFFFFF;
  font-size: 15px;
  font-weight: 700;
  transition: background-color .15s var(--ease);
}
.hero-search__submit:hover { background: var(--navy); }
.hero-search__pill :focus-visible { outline-color: var(--focus); outline-offset: 2px; }

.facts { display: flex; gap: 48px; margin: 12px 0 0; }
.fact { display: flex; flex-direction: column-reverse; gap: 2px; }
.fact__num {
  margin: 0;
  font-family: var(--font-display);
  font-size: 44px;
  line-height: 1.2;
  font-weight: 700;
  color: var(--sky);
}
.fact__label { font-size: 14px; font-weight: 600; color: var(--on-navy-soft); }

/* ------------------------------------------------------------ Campus map */

.campus-map {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin: 0;
  width: 520px;
  max-width: 100%;
}
.campus-map__svg { width: 100%; height: auto; }
.campus-map__caption { font-size: 13px; color: var(--on-navy-soft); }
.campus-map__caption a {
  display: inline-block;
  padding-block: 14px;
  margin-block: -14px;
  color: #FFFFFF;
  font-weight: 600;
}
.campus-map__caption a:hover { color: var(--sky); }

.wing { cursor: pointer; outline: none; }
.wing__shape { transition: opacity .2s var(--ease); }
.wing:hover .wing__shape { opacity: .88; }
.wing:focus-visible .wing__shape,
.wing[aria-current="true"] .wing__shape { stroke: #FFFFFF; stroke-width: 5; }
.wing:focus-visible .wing__shape { stroke: var(--sky); stroke-dasharray: 8 6; }
.campus-map.has-active .wing:not([aria-current="true"]) { opacity: .5; }
.campus-map.has-active .wing:not([aria-current="true"]):hover,
.campus-map.has-active .wing:not([aria-current="true"]):focus-visible { opacity: 1; }

/* ------------------------------------------------------------ Film band */

.film {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
  align-items: center;
  gap: 64px;
  padding-top: 88px;
}
.film .video {
  border-radius: 28px;
  box-shadow: 0 24px 48px rgba(6, 42, 85, .18);
}
.film__play {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 92px;
  height: 92px;
  border-radius: 50%;
  background: #FFFFFF;
  box-shadow: 0 0 0 12px rgba(255, 255, 255, .28), 0 14px 32px rgba(6, 42, 85, .35);
  color: var(--navy);
  transform: translate(-50%, -50%);
  transition: transform .2s var(--ease), box-shadow .2s var(--ease);
}
.film__play svg { margin-left: 5px; }
.video__poster:hover .film__play {
  transform: translate(-50%, -50%) scale(1.06);
  box-shadow: 0 0 0 16px rgba(255, 255, 255, .32), 0 14px 32px rgba(6, 42, 85, .35);
}
.film__copy { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; }
.film__kicker {
  padding: 8px 16px;
  border-radius: 999px;
  background: var(--mist);
  color: var(--navy);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.film__text { max-width: 460px; font-size: 17px; line-height: 1.6; color: var(--muted); }
.film__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; margin-top: 8px; }
.film__actions .btn { gap: 10px; }
.film__yt {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: var(--tap);
  font-size: 16px;
  font-weight: 700;
  color: var(--royal-ink);
}
.film__yt:hover { color: var(--navy-deep); }

/* ------------------------------------------------------------ Section heads */

.section-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px 24px;
}
.section-title {
  font-family: var(--font-display);
  font-size: 38px;
  line-height: 1.15;
  font-weight: 700;
  color: var(--navy);
}
.section-title:focus { outline: none; }
.pdf-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: var(--tap);
  font-size: 16px;
  font-weight: 700;
}

/* ------------------------------------------------------------ Browse tiles */

.browse {
  display: flex;
  flex-direction: column;
  gap: 28px;
  padding-top: 80px;
}
.tiles {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 20px;
}
.tile {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 28px;
  height: 100%;
  min-height: 280px;
  padding: 28px;
  border-radius: 24px;
  background: var(--tile-bg);
  color: var(--tile-ink);
  text-decoration: none;
  transition: transform .2s var(--ease), box-shadow .2s var(--ease);
}
.tile:hover { color: var(--tile-ink); transform: translateY(-3px); box-shadow: 0 14px 28px rgba(6, 42, 85, .18); }
.tile:focus-visible { outline: 3px solid var(--navy); outline-offset: 4px; border-radius: 24px; }
.tile[aria-current="true"] { box-shadow: 0 0 0 4px var(--ice), 0 0 0 7px var(--navy); }
.tile__top { display: flex; align-items: center; justify-content: space-between; }
.tile__num {
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px solid currentColor;
  border-radius: 50%;
  font-family: var(--font-caps);
  font-size: 20px;
  font-weight: 700;
}
.tile__count {
  font-family: var(--font-display);
  font-size: 52px;
  line-height: 1;
  font-weight: 700;
}
.tile__body { display: flex; flex-direction: column; gap: 8px; }
.tile__title {
  font-family: var(--font-caps);
  font-size: 20px;
  line-height: 1.25;
  font-weight: 700;
}
.tile__tagline { font-size: 14.5px; line-height: 1.5; }
.tile__cta { margin-top: 6px; font-size: 14px; font-weight: 800; }
.tile__cta--on { display: none; }
.tile[aria-current="true"] .tile__cta--off { display: none; }
.tile[aria-current="true"] .tile__cta--on { display: inline; }

/* ------------------------------------------------------------ A to Z */

.az {
  display: flex;
  flex-direction: column;
  gap: 28px;
  padding-top: 88px;
  padding-bottom: 88px;
  scroll-margin-top: 16px;
}
.az__intro { display: flex; flex-direction: column; gap: 10px; }
.az__lede { font-size: 17px; color: var(--muted); }

.letters__list { display: flex; flex-wrap: wrap; gap: 6px; }
.letters button {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 1.5px solid var(--line-strong);
  border-radius: 10px;
  background: #FFFFFF;
  color: var(--navy);
  font-family: var(--font-caps);
  font-size: 16px;
  font-weight: 700;
  transition: background-color .15s var(--ease), color .15s var(--ease);
}
.letters button:hover:not(:disabled) { background: var(--navy); border-color: var(--navy); color: #FFFFFF; }
.letters button:disabled {
  border-color: transparent;
  background: transparent;
  color: #8A9AB0;
  cursor: default;
}

.az-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px 16px;
  margin-top: -8px;
}
.az-status { font-size: 15px; color: var(--muted); min-height: 1.5em; }
.az-status strong { color: var(--ink); }
.az-clear {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: var(--tap);
  padding: 0 18px;
  border: 1.5px solid var(--navy);
  border-radius: 999px;
  background: #FFFFFF;
  color: var(--navy);
  font-size: 14px;
  font-weight: 700;
}
.az-clear:hover { background: var(--navy); color: #FFFFFF; }

.cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}
.card {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 24px;
  background: #FFFFFF;
  border: 1.5px solid var(--line);
  border-radius: 20px;
  scroll-margin-top: 24px;
}
.card:focus { outline: none; }
.card:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; border-radius: 20px; }
.card.is-flash { animation: card-flash 1.6s var(--ease); }
@keyframes card-flash {
  0%, 30% { border-color: var(--royal); box-shadow: 0 0 0 4px var(--mist); }
  100% { border-color: var(--line); box-shadow: 0 0 0 0 transparent; }
}
.card__top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.card__cat {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px 6px 8px;
  border-radius: 999px;
  background: var(--cat-tint);
  color: var(--ink);
  font-size: 13px;
  font-weight: 700;
}
.card__dot {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--cat-dot);
  color: var(--cat-ink);
  font-size: 11px;
  font-weight: 800;
}
.card__letter {
  font-family: var(--font-display);
  font-size: 30px;
  line-height: 1;
  font-weight: 700;
  color: #C6DBEF;
}
.card__name {
  font-family: var(--font-caps);
  font-size: 19px;
  line-height: 1.3;
  font-weight: 700;
  color: var(--navy);
}
.card__desc {
  flex-grow: 1;
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--muted);
}
.card__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px 12px;
  padding-top: 12px;
  border-top: 1.5px solid var(--card-line);
}
.card__phone {
  display: inline-flex;
  align-items: center;
  min-height: var(--tap);
  padding: 0 16px;
  border-radius: 999px;
  background: var(--navy);
  color: #FFFFFF;
  font-size: 14.5px;
  font-weight: 700;
  text-decoration: none;
  font-variant-numeric: tabular-nums;
  transition: background-color .15s var(--ease);
}
.card__phone:hover { background: var(--navy-deep); color: #FFFFFF; }
.card__none { font-size: 14px; color: #52627A; }
.card__web {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: var(--tap);
  font-size: 14.5px;
  font-weight: 700;
  color: var(--royal-ink);
  text-decoration: none;
}
.card__web:hover { color: var(--navy-deep); text-decoration: underline; text-underline-offset: 3px; }

.empty,
.notice {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
  padding: 36px;
  background: #FFFFFF;
  border: 1.5px dashed var(--line-strong);
  border-radius: 20px;
}
.empty__title {
  font-family: var(--font-caps);
  font-size: 22px;
  font-weight: 700;
  color: var(--navy);
}
.empty__hint,
.notice p { font-size: 15.5px; line-height: 1.6; color: var(--muted); }
.notice a { font-weight: 700; }
.empty__reset {
  margin-top: 6px;
  min-height: 50px;
  padding: 0 24px;
  border: 0;
  border-radius: 999px;
  background: var(--navy);
  color: #FFFFFF;
  font-size: 15px;
  font-weight: 700;
}
.empty__reset:hover { background: var(--navy-deep); }

/* ------------------------------------------------------------ Leasing band */

.lease-wrap { padding-bottom: 88px; }
.lease {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px 48px;
  padding: 56px 64px;
  background: var(--mist);
  border-radius: 32px;
}
.lease__copy { display: flex; flex-direction: column; gap: 10px; max-width: 700px; }
.lease__title {
  font-family: var(--font-display);
  font-size: 36px;
  line-height: 1.15;
  font-weight: 700;
  color: var(--navy);
}
.lease__text { font-size: 17px; line-height: 1.6; color: var(--muted); }
.lease__actions { display: flex; flex-wrap: wrap; gap: 12px; flex-shrink: 0; }
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 54px;
  padding: 0 26px;
  border-radius: 999px;
  font-size: 16px;
  font-weight: 700;
  text-decoration: none;
  transition: background-color .15s var(--ease), color .15s var(--ease);
}
.btn--solid { background: var(--navy); color: #FFFFFF; }
.btn--solid:hover { background: var(--navy-deep); color: #FFFFFF; }
.btn--outline { border: 2px solid var(--navy); color: var(--navy); }
.btn--outline:hover { background: var(--navy); color: #FFFFFF; }

/* ------------------------------------------------------------ Footer */

.site-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px 40px;
  padding: 44px var(--gutter) 96px;
  background: var(--navy-deep);
  color: var(--on-navy-soft);
}
.site-footer__id { display: flex; flex-direction: column; gap: 8px; }
.site-footer__name {
  font-family: var(--font-display);
  font-size: 24px;
  font-weight: 700;
  color: #FFFFFF;
}
.site-footer__addr { font-size: 15px; }
.site-footer__addr a {
  display: inline-block;
  padding-block: 12px;
  margin-block: -12px;
  color: #FFFFFF;
  font-weight: 700;
}
.site-footer__note { max-width: 460px; font-size: 14px; line-height: 1.6; }

/* ------------------------------------------------------------ Touch */

@media (pointer: coarse) {
  .letters button { width: var(--tap); height: var(--tap); }
}

/* ============================================================ Header squeeze */

@media (max-width: 1280px) {
  .mainnav ul { column-gap: 20px; }
  .call-pill { padding: 0 20px; }
}

/* The eight-link nav stops fitting beside the logo and call button here. */
@media (max-width: 1180px) {
  .nav-toggle {
    display: none;
    align-items: center;
    gap: 8px;
    min-height: 50px;
    padding: 0 18px;
    border: 1.5px solid var(--navy);
    border-radius: 999px;
    background: #FFFFFF;
    color: var(--navy);
    font-size: 15px;
    font-weight: 700;
  }
  .js .nav-toggle { display: inline-flex; }
  .nav-toggle[aria-expanded="true"] { background: var(--navy); color: #FFFFFF; }

  .mainnav { order: 3; width: 100%; }
  .js .mainnav { display: none; }
  .js .mainnav.is-open { display: block; }
  .mainnav ul { flex-wrap: wrap; column-gap: 24px; padding: 8px 0 4px; }
  .js .mainnav ul { flex-direction: column; padding: 12px 0 4px; }
  .js .mainnav li + li { border-top: 1px solid var(--line); }
  .js .mainnav a { width: 100%; min-height: 52px; font-size: 16px; }
}

/* ============================================================ ≤ 1024px */

@media (max-width: 1024px) {
  :root { --gutter: 40px; }

  .hero {
    flex-direction: column;
    align-items: stretch;
    gap: 40px;
    padding: 56px 48px;
  }
  h1 { font-size: 54px; }
  .campus-map { align-self: center; }

  .film { grid-template-columns: minmax(0, 1fr); gap: 32px; padding-top: 72px; }
  .film__copy { order: -1; }
  .film__text { max-width: 620px; }
  /* The poster sits right below and is itself the play button. */
  .film__actions { margin-top: 0; }
  .film__actions [data-video-trigger] { display: none; }

  .browse { padding-top: 64px; }
  .tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .tile { min-height: 250px; }

  .az { padding-top: 72px; padding-bottom: 72px; }
  .cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .lease { flex-direction: column; align-items: flex-start; padding: 48px; }

  .site-footer { flex-direction: column; align-items: flex-start; }
}

/* ============================================================ ≤ 640px */

@media (max-width: 640px) {
  :root { --gutter: 20px; }

  .site-header { gap: 0 12px; padding-block: 10px; }
  .site-header__logo img { height: 56px; }
  .call-pill { gap: 6px; min-height: var(--tap); padding: 0 16px; }
  .call-pill__icon { display: block; }
  .call-pill__num {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }
  .nav-toggle { min-height: var(--tap); padding: 0 14px; }

  .hero-wrap { padding: 12px 12px 0; }
  .hero { gap: 32px; padding: 36px 20px 28px; border-radius: 28px; }
  .hero__kicker { font-size: 12px; letter-spacing: .12em; }
  h1 { font-size: clamp(34px, 10vw, 44px); }
  .hero__intro { font-size: 17px; }
  .hero-search__pill { height: 58px; gap: 8px; padding: 0 6px 0 16px; }
  .hero-search__icon { width: 20px; height: 20px; }
  .hero-search__pill input { font-size: 16px; }
  .hero-search__submit { height: 46px; padding: 0 18px; }
  .facts { gap: 28px; margin-top: 4px; }
  .fact__num { font-size: 36px; }
  .fact__label { font-size: 13px; }

  .film { gap: 24px; padding-top: 56px; }
  .film .video { border-radius: 20px; }
  .film__play { width: 72px; height: 72px; box-shadow: 0 0 0 8px rgba(255, 255, 255, .28), 0 10px 24px rgba(6, 42, 85, .35); }
  .film__play svg { width: 24px; height: 24px; margin-left: 4px; }
  .film__text { font-size: 16px; }

  .browse { gap: 20px; padding-top: 48px; }
  .section-title { font-size: 30px; }

  /* Tiles become a horizontal scroller that bleeds to the screen edge. */
  .tiles {
    position: relative; /* contain the visually-hidden labels inside the scroller */
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: min(78%, 280px);
    gap: 12px;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: var(--gutter);
    margin-inline: calc(var(--gutter) * -1);
    padding: 8px var(--gutter) 12px;
    scrollbar-width: thin;
  }
  .tiles li { scroll-snap-align: start; }
  .tile { min-height: 230px; padding: 24px; gap: 20px; }
  .tile:hover { transform: none; }
  .tile__count { font-size: 44px; }

  .az { gap: 22px; padding-top: 56px; padding-bottom: 56px; }
  .az__lede { font-size: 16px; }
  .letters__list { gap: 4px; }
  .cards { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .card { padding: 20px; }

  .empty,
  .notice { padding: 24px 20px; }

  .lease-wrap { padding-bottom: 56px; }
  .lease { padding: 36px 24px; border-radius: 24px; }
  .lease__title { font-size: 28px; }
  .lease__actions { width: 100%; }
  .btn { flex: 1 1 auto; }

  .site-footer { padding-top: 36px; }
}
