/* ============================================================
   Campus pages, second design (includes/campus-page-v2.php).
   Black and white grounds, hairlines, Gotham interface, Georgia headings.
   ============================================================ */

.cx-sec { padding: 96px 0; }
.cx-sec .v3-head { margin-bottom: 56px; }
.cx .v3-head, .cx-reveal { opacity: 0; transform: translateY(18px); transition: opacity .8s ease, transform .9s cubic-bezier(.2,.7,.2,1); }
.cx .v3-head.in, .cx-reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .cx .v3-head, .cx-reveal { opacity: 1; transform: none; transition: none; } }
@media (max-width: 767px) { .cx-sec { padding: 64px 0; } .cx-sec .v3-head { margin-bottom: 36px; } }

/* ---------- 1. Hero ---------- */
.cx-hero { height: 92vh; min-height: 560px; max-height: 960px; }
.cx-hero::after { background: linear-gradient(90deg, rgba(0,0,0,.42) 0%, rgba(0,0,0,.12) 45%, rgba(0,0,0,0) 65%), linear-gradient(180deg, rgba(0,0,0,.28) 0%, rgba(0,0,0,0) 28%, rgba(0,0,0,0) 45%, rgba(0,0,0,.72) 100%); }
.cx-heroin { padding: 0 0 96px; max-width: 720px; color: #fff; }
.cx-herologo { margin: 0 0 22px; }
.cx-hero .cx-herologo img { position: static; inset: auto; height: clamp(44px, 4.6vw, 64px); width: auto; object-fit: contain; object-position: left; display: block; filter: drop-shadow(0 1px 14px rgba(0,0,0,.35)); }
.cx-herowhere { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: rgba(255,255,255,.78); margin: 0 0 16px; }
.cx-heroline { font-family: 'Georgia'; font-size: clamp(19px, 1.6vw, 23px); line-height: 1.4; color: #fff; margin: 0 0 30px; max-width: 44ch; text-wrap: balance; text-shadow: 0 1px 14px rgba(0,0,0,.35); }
.cx-heroacts { display: flex; gap: 12px; flex-wrap: wrap; }
.cx-heroindex { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; border-top: 1px solid rgba(255,255,255,.22); background: rgba(0,0,0,.18); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.cx-heroindex .container { display: flex; gap: 34px; overflow-x: auto; scrollbar-width: none; }
.cx-heroindex .container::-webkit-scrollbar { display: none; }
.cx-heroindex a { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: rgba(255,255,255,.72); padding: 16px 0; white-space: nowrap; position: relative; transition: color .3s; }
.cx-heroindex a::after { content: ''; position: absolute; left: 0; right: 0; top: -1px; height: 1px; background: #fff; transform: scaleX(0); transition: transform .4s ease; }
.cx-heroindex a:hover { color: #fff; } .cx-heroindex a:hover::after { transform: none; }
@media (max-width: 767px) {
  .cx-hero { height: 86vh; min-height: 520px; }
  .cx-heroin { padding-bottom: 74px; }
  .cx-hero .cx-herologo img { height: 40px; }
  .cx-heroline { font-size: 18px; margin-bottom: 22px; }
  .cx-heroacts .v3-box { flex: 1 1 100%; }
  .cx-heroindex .container { gap: 22px; }
  .cx-heroindex a { padding: 13px 0; font-size: 12px; letter-spacing: .1em; }
}

/* ---------- 2. The campus ---------- */
.cx-about { padding-bottom: 0; }
.cx-aboutgrid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 72px; align-items: start; }
.cx-lead { font-family: 'Georgia'; font-size: clamp(24px, 2.2vw, 32px); line-height: 1.3; color: var(--ink); margin: 0; }
.cx-abouttext p { font-family: 'Gotham-l'; font-size: 16.5px; line-height: 1.75; color: #2c2e32; margin: 0 0 20px; }
.cx-abouttext p:last-child { margin-bottom: 0; }
.cx-occkick { font-family: 'Gotham-m' !important; font-size: 12px !important; letter-spacing: .22em; text-transform: uppercase; color: var(--muted) !important; margin: 28px 0 8px !important; }
.cx-occlist { font-family: 'Georgia' !important; font-size: 16px !important; color: var(--ink) !important; }
.cx-occlist i { font-style: normal; color: var(--muted); padding: 0 4px; }
.cx-figs { display: grid; grid-template-columns: repeat(var(--n, 5), minmax(0, 1fr)); margin-top: 72px; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.cx-fig { padding: 30px 24px 30px 0; border-right: 1px solid var(--rule-soft); }
.cx-fig + .cx-fig { padding-left: 24px; }
.cx-fig:last-child { border-right: 0; }
.cx-fig .n { display: block; font-family: 'Gotham-l'; font-size: clamp(34px, 3.2vw, 46px); line-height: 1; letter-spacing: -.01em; color: var(--ink); font-variant-numeric: tabular-nums; white-space: nowrap; }
.cx-fig .l { display: block; margin-top: 12px; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); line-height: 1.5; }
.cx-wide { margin: 0; width: auto; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); margin-top: 0; }
.cx-wide img { width: 100%; height: clamp(360px, 56vh, 680px); object-fit: cover; display: block; }
.cx-wide figcaption { font-family: 'Gotham-l'; font-size: 13px; letter-spacing: .04em; color: var(--muted); padding: 14px 15px 0; max-width: 1140px; margin: 0 auto; }
.cx-about .cx-figs { margin-bottom: 72px; }
/* the film band: a silent loop, the full film in the lightbox */
.cx-film { position: relative; display: block; width: auto; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); height: clamp(380px, 64vh, 720px); overflow: hidden; background: #000; color: #fff; }
.cx-filmvid { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.cx-film::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0) 45%, rgba(0,0,0,.62) 100%); pointer-events: none; }
.cx-filmtxt { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; max-width: 1140px; margin: 0 auto; padding: 0 15px 48px; display: flex; flex-direction: column; align-items: flex-start; }
.cx-filmtxt .k { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: rgba(255,255,255,.78); margin-bottom: 12px; }
.cx-filmtxt .t { font-family: 'Georgia'; font-size: clamp(26px, 2.6vw, 38px); line-height: 1.15; color: #fff; margin-bottom: 22px; text-wrap: balance; text-shadow: 0 1px 18px rgba(0,0,0,.35); }
.cx-filmplay, .cx-galfilm { display: inline-flex; align-items: center; gap: 12px; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; }
.cx-filmplay { color: #fff; }
.cx-filmplay i, .cx-galfilm i { width: 40px; height: 40px; border-radius: 50%; border: 1px solid currentColor; display: inline-flex; align-items: center; justify-content: center; transition: background .3s; flex: 0 0 auto; }
.cx-filmplay i::before, .cx-galfilm i::before { content: ''; width: 0; height: 0; border-style: solid; border-width: 6px 0 6px 10px; border-color: transparent transparent transparent currentColor; margin-left: 3px; }
.cx-film:hover .cx-filmplay i { background: rgba(255,255,255,.18); }
.cx-film:hover, .cx-film:focus { color: #fff; text-decoration: none; }
.cx-galfilm { color: var(--ink); font-size: 12px; white-space: nowrap; }
.cx-galfilm i { width: 32px; height: 32px; }
.cx-galfilm:hover { color: var(--ink); text-decoration: none; } .cx-galfilm:hover i { background: var(--ink); color: #fff; }
@media (max-width: 767px) { .cx-film { height: 62vw; min-height: 300px; } .cx-filmtxt { padding-bottom: 26px; } .cx-filmtxt .t { font-size: 22px; margin-bottom: 14px; } .cx-filmplay i { width: 34px; height: 34px; } }
@media (max-width: 991px) {
  .cx-aboutgrid { grid-template-columns: 1fr; gap: 28px; }
  .cx-figs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .cx-fig:nth-child(3) { border-right: 0; }
  .cx-fig:nth-child(n+4) { border-top: 1px solid var(--rule-soft); padding-left: 0; }
  .cx-fig:nth-child(4) { padding-left: 0; } .cx-fig:nth-child(5) { padding-left: 24px; }
}
@media (max-width: 767px) {
  .cx-lead { font-size: 23px; }
  .cx-abouttext p { font-size: 15.5px; }
  .cx-figs { grid-template-columns: 1fr 1fr; margin-top: 44px; margin-bottom: 48px; }
  .cx-fig { padding: 20px 14px 20px 0; border-right: 1px solid var(--rule-soft) !important; }
  .cx-fig:nth-child(even) { border-right: 0 !important; padding-left: 14px; }
  .cx-fig:nth-child(odd) { padding-left: 0; }
  .cx-fig:nth-child(n+3) { border-top: 1px solid var(--rule-soft); }
  .cx-fig:last-child:nth-child(odd) { grid-column: 1 / -1; border-right: 0 !important; }
  .cx-fig .n { font-size: 30px; }
  .cx-wide img { height: 56vw; }
}

/* ---------- 3. The blocks ---------- */
.cx-blocksgrid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 72px; align-items: start; }
.cx-plancol { align-self: stretch; }
.cx-planstick { position: sticky; top: 104px; }
.cx-plan, .v3-plan { width: 100%; height: auto; display: block; }
.cx .v3-plan .plot { fill: #f6f6f7; } .cx .v3-plan .green { fill: #eaece7; } .cx .v3-plan .road { fill: #ebebec; }
.cx .v3-plan .block polygon { fill: #d3d5d9; stroke: #fff; stroke-width: 2.5; transition: fill .4s ease; cursor: pointer; }
.cx .v3-plan .block text { font-family: 'Gotham-m'; font-size: 26px; fill: #fff; text-anchor: middle; pointer-events: none; letter-spacing: .06em; }
.cx .v3-plan .block.avail polygon { fill: var(--ink); }
.cx .v3-plan .block.avail text { font-size: 18px; }
.cx .v3-plan .block:hover polygon, .cx .v3-plan .block.on polygon { fill: #7c7f85; }
.cx .v3-plan .block.avail:hover polygon, .cx .v3-plan .block.avail.on polygon { fill: #000; }
.cx .v3-plan .pin circle { fill: #fff; stroke: var(--ink); stroke-width: 2.5; }
.cx .v3-plan .pin text, .cx .v3-plan .road-label, .cx .v3-plan .north text { font-family: 'Gotham-m'; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; fill: var(--muted); }
.cx .v3-plan .north line { stroke: var(--ink); stroke-width: 2; } .cx .v3-plan .north polygon { fill: var(--ink); }
.cx .v3-plan .park { fill: #eef0eb; stroke: #e1e3df; stroke-width: 1.5; }
.cx .v3-plan .svc polygon { fill: #e6e7ea; stroke: #fff; stroke-width: 2; }
.cx .v3-plan .garden polygon, .cx .v3-plan .garden path { fill: #dde5d6; stroke: #fff; stroke-width: 2.5; }
.cx .v3-plan .garden text { font-family: 'Gotham-m'; font-size: 26px; fill: #66755e; text-anchor: middle; letter-spacing: .06em; pointer-events: none; }
.cx .v3-plan .fountain { fill: #fff; stroke: #8fa088; stroke-width: 2.5; pointer-events: none; }
.cx-plannote { font-family: 'Gotham-l'; font-size: 12.5px; letter-spacing: .04em; color: var(--muted); margin: 14px 0 0; display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.cx-plankey { display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }
.cx-plankey i { width: 10px; height: 10px; background: var(--ink); display: inline-block; }

.cx-blocklist { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ink); }
.cx-block { border-bottom: 1px solid var(--rule); }
.cx-blocks { overflow-anchor: none; }
.cx-blockhead { width: 100%; display: grid; grid-template-columns: 34px minmax(0, 1fr) auto auto 20px; align-items: center; gap: 20px; padding: 22px 0; background: none; border: 0; text-align: left; color: var(--ink); cursor: pointer; }
.cx-blockhead .num { font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .22em; color: var(--muted); }
.cx-blockhead .nm b { display: block; font-family: 'Georgia'; font-weight: normal; font-size: 22px; line-height: 1.2; color: var(--ink); }
.cx-blockhead .nm small { display: block; font-family: 'Gotham-l'; font-size: 13px; color: var(--muted); margin-top: 4px; }
.cx-blockhead .who { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); white-space: nowrap; }
.cx-blockhead .who.now { color: #fff; background: var(--ink); padding: 7px 10px; }
.cx-blockhead .who.none { display: none; }
.cx-blockhead .ar { font-family: 'Gotham-l'; font-size: 14px; color: var(--ink); white-space: nowrap; font-variant-numeric: tabular-nums; }
.cx-chev { width: 18px; height: 12px; color: var(--muted); transition: transform .45s cubic-bezier(.2,.7,.2,1); }
.cx-block.open .cx-chev { transform: rotate(180deg); color: var(--ink); }
.cx-block:hover .cx-blockhead .nm b { text-decoration: underline; text-underline-offset: 5px; text-decoration-thickness: 1px; }
.cx-blockbody { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .65s cubic-bezier(.2,.7,.2,1); }
.cx-block.open .cx-blockbody { grid-template-rows: 1fr; }
.cx-blockin { overflow: hidden; min-height: 0; opacity: 0; transition: opacity .45s ease; }
.cx-block.open .cx-blockin { opacity: 1; transition-delay: .2s; }
.cx-gal { margin: 4px 0 26px; }
.cx-galframe { position: relative; aspect-ratio: 3/2; overflow: hidden; background: #000; }
.cx-galshot { position: absolute; inset: 0; display: block; opacity: 0; transition: opacity .7s ease; pointer-events: none; }
.cx-galshot.on { opacity: 1; pointer-events: auto; }
.cx-galshot img { width: 100%; height: 100%; object-fit: cover; display: block; transform: scale(1.02); transition: transform 1.6s cubic-bezier(.2,.7,.2,1); }
.cx-galshot.on img { transform: none; }
.cx-galbar { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; margin-top: 14px; }
.cx-galcap { flex: 1 1 auto; font-family: 'Gotham-l'; font-size: 13px; letter-spacing: .04em; color: var(--muted); margin: 0; line-height: 1.5; }
.cx-galnav { display: flex; align-items: center; gap: 14px; flex: 0 0 auto; }
.cx-galnav button { width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--rule); background: none; color: var(--ink); display: inline-flex; align-items: center; justify-content: center; padding: 0; cursor: pointer; transition: background .3s, color .3s, border-color .3s; }
.cx-galnav button svg { width: 16px; height: 11px; }
.cx-galnav button:hover { background: var(--ink); color: #fff; border-color: var(--ink); }
.cx-galnav .cnt { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .2em; color: var(--muted); font-variant-numeric: tabular-nums; }
.cx-galnav .cnt b { font-weight: normal; color: var(--ink); }
.cx-blocktext p { font-family: 'Gotham-l'; font-size: 15.5px; line-height: 1.7; color: #2c2e32; margin: 0 0 30px; }
.cx-availpanel { border-top: 1px solid var(--ink); padding-top: 22px; margin-bottom: 30px; }
.cx-availkick { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--ink); margin: 0 0 14px; }
.cx-availacts { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 26px; }
.cx-availlinks { display: flex; gap: 30px; flex-wrap: wrap; margin-top: 22px; }
.cx-block.avail .cx-blockhead { scroll-margin-top: 90px; }
@media (max-width: 991px) {
  .cx-blocksgrid { grid-template-columns: 1fr; gap: 40px; }
  .cx-plancol { align-self: auto; }
  .cx-planstick { position: static; }
  .cx-blockhead { grid-template-columns: 30px minmax(0, 1fr) auto 18px; gap: 14px; }
  .cx-blockhead .ar { display: none; }
}
@media (max-width: 767px) {
  .cx-blockhead { padding: 18px 0; grid-template-columns: minmax(0, 1fr) auto 18px; }
  .cx-blockhead .num { display: none; }
  .cx-blockhead .nm b { font-size: 19px; }
  .cx-blockhead .who { font-size: 12px; letter-spacing: .08em; }
  .cx-galbar { flex-direction: column; gap: 12px; }
  .cx-availacts .v3-box { flex: 1 1 100%; }
  .cx-availkick { font-size: 12px; letter-spacing: .14em; }
  .cx .v3-plan .block text { font-size: 30px; }
}

/* ---------- 4. Specifications: the spec sheet ---------- */
.cx-specs .v3-head { margin-bottom: 64px; }
.cx-specgrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 56px; }
.cx-spectitle { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: rgba(255,255,255,.55); margin: 0; padding-bottom: 14px; border-bottom: 1px solid rgba(255,255,255,.4); }
.cx-specgroup dl { margin: 0; }
.cx-specgroup dl div { padding: 18px 0 16px; border-bottom: 1px solid var(--wrule); }
.cx-specgroup dt { font-family: 'Georgia'; font-size: 17px; color: #fff; margin: 0 0 6px; }
.cx-specgroup dd { font-family: 'Gotham-l'; font-size: 14px; line-height: 1.6; color: rgba(255,255,255,.7); margin: 0; }
@media (max-width: 991px) { .cx-specgrid { grid-template-columns: 1fr; gap: 40px; } }
@media (max-width: 767px) { .cx-specs .v3-head { margin-bottom: 36px; } .cx-specgroup dt { font-size: 16px; } .cx-specgroup dd { font-size: 13.5px; } }

/* ---------- 5. Location ---------- */
.cx-loc { padding-bottom: 0; }
.cx-locgrid { display: grid; grid-template-columns: minmax(0, 1fr) 400px; width: auto; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); border-top: 1px solid var(--rule); }
.cx-mapwrap { position: relative; min-height: 600px; background: #f3f3f4; }
.cx-gmap { position: absolute; inset: 0; }
.cx-mapchips { position: absolute; left: 24px; bottom: 24px; z-index: 2; display: flex; gap: 6px; flex-wrap: wrap; max-width: calc(100% - 96px); }
.cx-mapchips button { display: inline-flex; align-items: center; gap: 8px; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; background: rgba(255,255,255,.96); color: var(--ink); border: 1px solid rgba(17,18,20,.14); padding: 8px 12px 8px 10px; cursor: pointer; box-shadow: 0 1px 4px rgba(0,0,0,.08); transition: background .25s, color .25s, opacity .25s; }
.cx-mapchips button i { width: 10px; height: 10px; border-radius: 50%; background: var(--c); box-shadow: inset 0 0 0 1.5px var(--c); flex: 0 0 auto; transition: background .25s; }
.cx-mapchips button:hover { border-color: rgba(17,18,20,.4); }
.cx-mapchips button.on { background: var(--ink); color: #fff; border-color: var(--ink); }
.cx-mapchips button.on i { box-shadow: 0 0 0 2px #fff; }
.cx-mapchips button.all { padding-left: 12px; }
.cx-mapchips button:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

/* the centre itself: its own logo on a white plate, pointing down to a dot in the centre's colour with a slow ring around it */
.cx-gmap .cp-pinhtml.campus { flex-direction: column; align-items: center; gap: 0; transform: translate(-50%, calc(-100% + 11px)); z-index: 3; pointer-events: none; }
.cx-gmap .cp-pinhtml.campus .plate { display: block; background: #fff; padding: 14px 18px; box-shadow: 0 10px 28px rgba(17,18,20,.22), 0 1px 3px rgba(17,18,20,.14); }
.cx-gmap .cp-pinhtml.campus .plate img { display: block; height: 48px; width: auto; }
.cx-gmap .cp-pinhtml.campus .tip { width: 0; height: 0; border-left: 10px solid transparent; border-right: 10px solid transparent; border-top: 10px solid #fff; margin-top: -1px; filter: drop-shadow(0 3px 2px rgba(17,18,20,.14)); }
.cx-gmap .cp-pinhtml.campus .pt { position: relative; width: 22px; height: 22px; border-radius: 50%; background: var(--acc); border: 4px solid #fff; box-shadow: 0 1px 6px rgba(0,0,0,.35); margin-top: 6px; }
.cx-gmap .cp-pinhtml.campus .pt::after { content: ''; position: absolute; inset: -4px; border-radius: 50%; border: 2px solid var(--acc); animation: cxRing 2.6s cubic-bezier(.2,.6,.3,1) infinite; }
@keyframes cxRing { 0% { transform: scale(1); opacity: .7; } 100% { transform: scale(3); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .cx-gmap .cp-pinhtml.campus .pt::after { animation: none; opacity: 0; } }

/* beside the map: transport first, then the nearest of each kind */
.cx-travel { padding: 40px clamp(24px, 3vw, 48px) 48px; border-left: 1px solid var(--rule); }
.cx-travel .v3-kicker { margin-bottom: 10px; }
.cx-near { list-style: none; margin: 0 0 30px; padding: 0; border-top: 1px solid var(--ink); }
.cx-near li { display: grid; grid-template-columns: 10px minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--rule-soft); }
.cx-near li[data-pin] { cursor: pointer; }
.cx-near li i { width: 10px; height: 10px; border-radius: 50%; background: var(--c); transition: transform .2s; }
.cx-near .n { font-family: 'Georgia'; font-size: 16px; line-height: 1.35; color: var(--ink); }
.cx-near .n small { display: block; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); margin-bottom: 3px; }
.cx-near .d { font-family: 'Gotham-l'; font-size: 13.5px; line-height: 1.45; color: var(--muted); text-align: right; max-width: 15em; }
.cx-near li[data-pin]:hover i, .cx-near li[data-pin]:focus-visible i { transform: scale(1.4); }
.cx-near li[data-pin]:hover .n, .cx-near li[data-pin]:focus-visible .n { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.cx-near li:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.cx-address { font-family: 'Gotham-l'; font-size: 14px; line-height: 1.6; color: var(--muted); margin: 0 0 18px; }
.cx-mapfall { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: 'Gotham-l'; font-size: 14px; color: var(--muted); }
@media (min-width: 992px) { .cx-mapwrap { align-self: start; position: sticky; top: 80px; height: min(720px, calc(100vh - 110px)); min-height: 560px; } }
@media (max-width: 991px) { .cx-locgrid { grid-template-columns: 1fr; } .cx-mapwrap { min-height: 460px; } .cx-travel { border-left: 0; border-top: 1px solid var(--rule); } }
@media (max-width: 767px) { .cx-mapwrap { min-height: 440px; } .cx-gmap .cp-pinhtml.campus .plate { padding: 10px 13px; } .cx-gmap .cp-pinhtml.campus .plate img { height: 38px; } .cx-gmap .cp-pinhtml.cxp .mk { width: 22px; height: 22px; } .cx-gmap .cp-pinhtml.cxp .mk svg { width: 12px; height: 12px; } .cx-gmap .cp-pinhtml.cxp:not(.peek):not(.hl) .lb small { display: none; } .cx-gmap .cp-pinhtml.cxp .lb { padding: 3px 7px 4px 6px; } .cx-travel { padding: 32px 15px 40px; } .cx-near .d { font-size: 13px; } .cx-mapchips { left: 0; right: 0; bottom: 12px; max-width: none; flex-wrap: nowrap; overflow-x: auto; padding: 0 15px; scrollbar-width: none; } .cx-mapchips::-webkit-scrollbar { display: none; } .cx-mapchips button { flex: 0 0 auto; } }

/* ---------- 6. Gallery, 7. Next steps: inherited from v3, lightly tuned ---------- */
.cx-gallery { border-top: 0; }
.cx-gallery .v3-head { opacity: 1; transform: none; }
