/* =====================================================================
   RSP site v3: the homepage, the campuses and the leasing pages.
   Loaded after main.css and responsive.css; everything new on the page
   lives here. Gotham for display lines, figures and interface; Georgia
   (upright) for section headings and sub headings. No full stops in
   headings. Grounds: white and black only. Nothing below 12px.

   Contents
     0  Tokens and type
     1  Links, buttons, slider navigation
     2  Header: menu icon and the menu panel
     3  Hero
     4  Statement and figures
     5  Lease and built to suit panels
     6  Our campuses
     7  In good company
     8  In their words
     9  One vision, every stage
    10  Media spotlight
    11  Footer
    12  Page hero, page head, boxed buttons, figures, fact tables
    13  Campuses page
    14  Available space
    15  Campus pages
    16  The request sheet
   ===================================================================== */

/* ---------- 0. Tokens and type ---------- */
/* inline icons (ic() in config.php): the size of the text they sit in, like the icon font they replaced */
/* same weight as the icon font's own rule (one class), so a container's rule for its icon (e.g. .rsp-btn i) still wins */
:where(i).ic { display: inline-block; height: 1em; line-height: 1; vertical-align: -.125em; font-style: normal; }
i.ic svg { display: block; fill: currentColor; color: inherit !important; transition: none !important; }
/* the drawing takes the text colour only, as the font glyph did (older rules recolour any svg path inside buttons and links) */
i.ic svg path { fill: currentColor !important; stroke: none !important; }
/* .headingmain letters (built in footer.php): each fades in once the heading is in view */
.headingmain .hm-ch { opacity: 0; }
.headingmain.hm-in .hm-ch { animation: hmFade 1s both; }
@keyframes hmFade { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .headingmain .hm-ch { opacity: 1; animation: none !important; } }
/* desktop hero films: their still frame is a background, so phones never download it */
@media (min-width: 768px) { video[data-poster-desk] { background: #000 var(--poster) center / cover no-repeat; } }
:root {
  --ink: #111214;
  --muted: #6b6e73;
  --rule: rgba(17, 18, 20, .14);
  --rule-soft: rgba(17, 18, 20, .08);
  --wrule: rgba(255, 255, 255, .18);
}
.pagescrolling, .news1 { background: #fff !important; }

.v3-h2, .h2.v3-h2, .headingmain.v3-h2 { font-family: 'Georgia' !important; font-weight: normal; font-size: clamp(34px, 3.6vw, 50px); line-height: 1.1; letter-spacing: .002em; color: var(--ink); margin: 0; text-transform: none; }
.v3-h2.light { color: #fff; }
.v3-h3 { font-family: 'Georgia' !important; font-weight: normal; font-size: clamp(24px, 2.2vw, 30px); line-height: 1.2; text-transform: none; letter-spacing: 0; margin: 0 0 12px; }
.v3-kicker { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .24em; text-transform: uppercase; color: var(--muted); margin: 0 0 18px; }
.light .v3-kicker, .bgblack .v3-kicker, .v3-words .v3-kicker { color: rgba(255,255,255,.55); }
.v3-sub { font-family: 'Georgia'; font-size: clamp(18px, 1.5vw, 21px); line-height: 1.5; color: var(--muted); margin: 16px 0 0; max-width: 52ch; }
.light .v3-sub, .v3-head.light .v3-sub { color: rgba(255,255,255,.66); }
.v3-head { margin-bottom: 56px; }
.v3-head.center { display: flex; flex-direction: column; align-items: center; text-align: center; }
.v3-head.center .v3-sub { margin-left: auto; margin-right: auto; }
@media (max-width: 767px) {
  .v3-h2, .h2.v3-h2, .headingmain.v3-h2 { font-size: 34px; }
  .v3-head { margin-bottom: 36px; }
  .v3-kicker { margin-bottom: 14px; }
}

/* ---------- 1. Links, buttons, slider navigation ---------- */
.lnk { display: inline-flex; align-items: center; gap: 12px; font-family: 'Gotham-m'; font-size: 13px; letter-spacing: .18em; text-transform: uppercase; color: var(--ink); padding-bottom: 6px; position: relative; white-space: nowrap; text-decoration: none; }
.lnk::after { content: ''; position: absolute; left: 0; bottom: 0; height: 1px; width: 100%; background: currentColor; transform-origin: right; transition: transform .45s cubic-bezier(.7,0,.2,1); }
.lnk:hover { color: inherit; text-decoration: none; }
.lnk:hover::after { transform: scaleX(0); transform-origin: left; animation: v3relink .9s .45s forwards; }
@keyframes v3relink { to { transform: scaleX(1); transform-origin: left; } }
.lnk .ar { width: 20px; height: 13px; flex: 0 0 auto; transition: transform .35s ease; }
.lnk:hover .ar { transform: translateX(5px); }
.lnk.light, .lnk.light:hover { color: #fff; }

.v3-btn { display: inline-flex; align-items: center; gap: 14px; background: var(--ink); color: #fff; font-family: 'Gotham-m'; font-size: 13px; letter-spacing: .18em; text-transform: uppercase; padding: 0 26px; height: 52px; border: 0; border-radius: 0; transition: background .3s, color .3s; }
.v3-btn .ar { width: 20px; height: 13px; transition: transform .35s ease; }
.v3-btn:hover { color: #fff; }
.v3-btn:hover .ar { transform: translateX(5px); }
.bgblack .v3-btn { background: #fff; color: #000; }

/* arrow, counter, progress, arrow */
.v3-slidenav { display: flex; align-items: center; justify-content: center; gap: 22px; color: #fff; margin-top: 44px; }
.v3-count { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .2em; font-variant-numeric: tabular-nums; color: rgba(255,255,255,.55); }
.v3-count b { font-weight: normal; color: #fff; }
.v3-prog { display: flex; gap: 6px; width: 140px; }
.v3-prog i { display: block; height: 1px; flex: 1; background: rgba(255,255,255,.28); transition: background .4s; }
.v3-prog i.on { background: #fff; }
.v3-nb { width: 44px; height: 44px; border-radius: 50%; border: 1px solid rgba(255,255,255,.45); background: none; color: #fff; display: inline-flex; align-items: center; justify-content: center; padding: 0; cursor: pointer; transition: background .3s, color .3s, border-color .3s; }
.v3-nb svg { width: 18px; height: 12px; }
.v3-nb:hover { background: #fff; color: #000; border-color: #fff; }
.v3-nb:focus { outline: 0; }
@media (max-width: 767px) { .v3-slidenav { gap: 14px; margin-top: 32px; } .v3-prog { width: 72px; } }

/* ---------- 2. Header: menu icon and the menu panel ---------- */
.hamb, .hamb .menu, .hamb .menu:hover, .scroll.hamb { background: none !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; box-shadow: none !important; border: 0 !important; border-radius: 0 !important; width: auto !important; height: auto !important; }
.hamb .menu { padding: 12px 0 12px 12px !important; }
#hamburger-11 { padding: 0 !important; border: 0 !important; width: 28px; height: 14px; position: relative; display: block; }
#hamburger-11 .line { position: absolute; right: 0; height: 1.5px !important; margin: 0 !important; background: #fff !important; transition: width .35s cubic-bezier(.2,.7,.2,1), transform .35s ease, opacity .2s; transform-origin: center; }
#hamburger-11 .line:nth-child(1) { top: 0; width: 28px !important; }
#hamburger-11 .line:nth-child(2) { display: none; }
#hamburger-11 .line:nth-child(3) { bottom: 0; width: 18px !important; }
.hamb .menu:hover #hamburger-11 .line:nth-child(3) { width: 28px !important; }
#hamburger-11.is-active { animation: none !important; }
#hamburger-11.is-active .line:nth-child(1) { transform: translateY(6.25px) rotate(45deg); width: 28px !important; }
#hamburger-11.is-active .line:nth-child(3) { transform: translateY(-6.25px) rotate(-45deg); width: 28px !important; }

/* the panel: white, Georgia items with numbers; a photograph and a line from a thinker on the left */
.menufix { background: #fff !important; }
.left-image-section { background: #000 !important; }
.left-image-section::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0) 45%, rgba(0,0,0,.72) 100%); pointer-events: none; }
.left-image-section img { filter: brightness(.92); }
.v3-mq { position: absolute; left: 8%; right: 10%; bottom: 56px; z-index: 2; color: #fff; opacity: 0; transform: translateY(10px); transition: opacity .6s ease, transform .6s ease; pointer-events: none; }
.v3-mq.on { opacity: 1; transform: none; }
.v3-mq p { font-family: 'Georgia' !important; font-size: clamp(22px, 1.9vw, 30px); line-height: 1.35; color: #fff; margin: 0 0 16px; max-width: 22ch; }
.v3-mq span { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: rgba(255,255,255,.72); }
.menufix .mainmenu { padding-left: 12% !important; counter-reset: v3m; }
.menufix .mainmenu > li { margin-bottom: 6px !important; counter-increment: v3m; }
.menufix .mainmenu > li > a.mt { font-family: 'Georgia' !important; font-size: clamp(28px, 2.6vw, 38px) !important; letter-spacing: 0 !important; text-transform: none; color: #111214 !important; padding: 8px 0 8px 44px; position: relative; display: block; line-height: 1.2; transition: opacity .35s ease, transform .5s ease .2s; }
.menufix .mainmenu > li > a.mt::before { content: counter(v3m, decimal-leading-zero); position: absolute; left: 0; top: 50%; transform: translateY(-50%); font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .2em; color: #6b6e73; }
.menufix .mainmenu:hover > li > a.mt { opacity: .32; }
.menufix .mainmenu > li:hover > a.mt { opacity: 1 !important; }
.menufix .drop { left: 64% !important; top: 4px !important; padding: 6px 0 0 !important; transform: translateX(-12px); min-width: 220px; }
.mainmenu > li:hover > .drop { transform: translateX(0); }
.menufix .drop li { padding: 0 !important; margin: 0 0 10px !important; }
.menufix .drop li a { font-family: 'Gotham' !important; font-size: 15px !important; letter-spacing: .01em; color: #6b6e73 !important; text-transform: none; transition: color .3s; }
.menufix .drop li a:hover { color: #111214 !important; }
.menufix .drop li.drop-all { display: none; }
/* a page that is not yet complete: a small tag beside its name in the menu */
.menufix .mainmenu > li > a.mt .v3-soon { display: inline-block; vertical-align: middle; margin: -4px 0 0 14px; padding: 5px 9px 4px; border: 1px solid rgba(17,18,20,.22); font-family: 'Gotham-m'; font-size: 12px; line-height: 1; letter-spacing: .16em; text-transform: uppercase; color: #6b6e73; }
/* the list and its footer scroll on their own on phones; on a laptop the wrapper steps aside */
.menuscroll { display: contents; }
.v3-menufoot { position: absolute; left: 12%; bottom: 36px; display: flex; gap: 14px; align-items: center; font-family: 'Gotham'; font-size: 13px; letter-spacing: .02em; color: #6b6e73; }
.v3-menufoot a { color: #6b6e73; }
.v3-menufoot a:hover { color: #111214; }
.menufix .sociallinks { margin-left: 12% !important; margin-top: 34px !important; }
.menufix .sociallinks a { background: none !important; border: 1px solid rgba(17,18,20,.2) !important; border-radius: 50% !important; width: 40px; height: 40px; color: #111214; }
.menufix .sociallinks a:hover { background: #111214 !important; color: #fff; border-color: #111214 !important; }
.menufix .sociallinks a i { color: inherit; }
/* the old footer rule (.ftright svg) pushed the menu icons 10px off centre: the icon sits in the middle of its circle */
.menufix .sociallinks a i.ic { height: auto; }
.menufix .sociallinks a i.ic svg { margin: 0 !important; }
.menu_close { background: none !important; border-radius: 0 !important; width: 44px !important; height: 44px !important; border: 1px solid transparent; transition: border-color .3s; }
.menufix .menu_close { top: 24px; right: 7%; }
.menu_close svg { width: 20px; height: 20px; }
.menu_close svg line, .menu_close:hover svg line { stroke: #111214 !important; stroke-width: .9; }
.menu_close:hover { background: none !important; border-color: rgba(17,18,20,.25); }
@media (hover: none) { .menufix .mainmenu:hover > li > a.mt { opacity: 1; } }
@media (max-width: 991px) {
  .left-image-section { display: none !important; }
  .menufix { width: 100% !important; max-width: 100% !important; padding: 80px 28px 40px !important; }
  .menufix .mainmenu { margin-left: 0 !important; padding-left: 0 !important; }
  .menufix .mainmenu > li > a.mt { font-size: 26px !important; padding: 10px 8px 10px 36px; display: flex !important; align-items: center; justify-content: space-between; }
  .menufix .mainmenu > li > a.mt svg { display: block; width: 14px; height: 14px; flex: 0 0 auto; }
  .menufix .drop { position: static !important; transform: none; padding: 4px 0 8px 36px !important; }
  .menufix .drop li.drop-all { display: block; }
  .menufix .mainmenu > li > a.mt { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
  .menufix .mainmenu > li > a.mt svg { pointer-events: none; }
  /* the panel fits the visible screen; the list sits in the middle when it fits and scrolls when it doesn't,
     so an opened section never slides under the close button or below the browser's toolbar */
  .menufix { height: 100vh !important; height: 100dvh !important; display: block !important; padding: 0 !important; overflow: hidden; }
  .menuscroll { display: flex; flex-direction: column; position: absolute; left: 0; right: 0; top: 92px; bottom: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; padding: 8px 28px 28px; }
  .menuscroll .mainmenu { margin: auto 0 !important; flex: 0 0 auto; }
  .v3-menufoot { position: static; margin: 28px 0 0; flex: 0 0 auto; flex-direction: column; align-items: flex-start; gap: 8px; }
  .v3-menufoot span { display: none; }
  .menufix .sociallinks { margin-left: 28px !important; }
  .menu_close { border: 0 !important; }
}

/* ---------- 3. Hero ---------- */
.homebanner .hometext.mainpage { overflow: hidden; }
.homebanner::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.18) 0%, rgba(0,0,0,0) 35%, rgba(0,0,0,.45) 100%); pointer-events: none; }
.homebanner .container { z-index: 1; }
.homebanner .down_chevron { bottom: 48px; }
/* two outlined blocks, bottom right */
.homebanner .v3-bannerlinks { display: grid; grid-template-columns: auto auto; gap: 12px; left: auto; right: 15px; bottom: 56px; }
.homebanner .v3-bannerlinks a.lnk { display: inline-flex; justify-content: center; align-items: center; gap: 0; height: 46px; margin: 0; padding: 0 24px !important; border: 1px solid rgba(255,255,255,.75) !important; background: rgba(0,0,0,.18) !important; backdrop-filter: blur(6px); font-size: 12px !important; white-space: nowrap; transition: background .3s, color .3s, border-color .3s; }
.homebanner .v3-bannerlinks a.lnk::before, .homebanner .v3-bannerlinks a.lnk::after, .homebanner .v3-bannerlinks a.lnk .ar { display: none; }
.homebanner .v3-bannerlinks a.lnk:hover { background: #fff !important; color: #000 !important; border-color: #fff !important; }
@media (max-width: 767px) {
  .homebanner .down_chevron { display: none; }
  .homebanner .v3-bannerlinks { grid-template-columns: 1fr 1fr; gap: 10px; left: 15px; right: 15px; bottom: 28px; }
  .homebanner .v3-bannerlinks a.lnk { height: 44px; padding: 0 8px !important; }
}

/* ---------- 4. Statement and figures: text left, ledger right ---------- */
.v3-black { padding: 104px 0; }
.v3-blackgrid { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: 96px; align-items: center; }
.v3-blacktext .v3-h2 { max-width: 14ch; }
.v3-black .v3-state { font-family: 'Gotham-l'; font-size: clamp(17px, 1.4vw, 19px); line-height: 1.6; color: rgba(255,255,255,.78); max-width: 50ch; margin: 28px 0 40px; }
.v3-ledger { margin: 0; border-top: 1px solid var(--wrule); }
.v3-ledgerrow { display: grid; grid-template-columns: auto 1fr; align-items: baseline; gap: 24px; padding: 26px 0; border-bottom: 1px solid var(--wrule); }
.v3-ledgerrow dt { font-family: 'Gotham-l'; font-weight: normal; font-size: clamp(48px, 4.6vw, 68px); line-height: 1; letter-spacing: -.02em; color: #fff; margin: 0; width: 3em; font-variant-numeric: tabular-nums; }
.v3-ledgerrow dd { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: rgba(255,255,255,.6); margin: 0; white-space: nowrap; }
.v3-ledger:not(.dark) .v3-ledgerrow dt { width: 3.7em; }
@media (max-width: 991px) {
  .v3-black { padding: 88px 0; }
  .v3-blackgrid { grid-template-columns: 1fr; gap: 56px; }
  .v3-black .v3-state { margin: 22px 0 32px; }
}
@media (max-width: 767px) {
  .v3-black { padding: 72px 0; }
  .v3-ledgerrow { padding: 20px 0; gap: 20px; }
  .v3-ledgerrow dd { white-space: normal; line-height: 1.5; letter-spacing: .16em; }
  .v3-ledger:not(.dark) .v3-ledgerrow dt { font-size: 44px; }
}

/* ---------- 5. Lease and built to suit panels ---------- */
.v3-panels { background: #fff; padding: 80px 0; }
.v3-panelgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.v3-panel { position: relative; display: flex; align-items: flex-end; aspect-ratio: 16/10; overflow: hidden; background: #000; color: #fff; min-width: 0; }
.v3-panel:hover { color: #fff; }
.v3-panel img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: brightness(.74); transition: transform 1.4s cubic-bezier(.2,.7,.2,1), filter .8s ease; }
.v3-panel:hover img { transform: scale(1.04); filter: brightness(.82); }
.v3-panel img.night { filter: brightness(1.02) contrast(1.04); }
.v3-panel:hover img.night { filter: brightness(1.08); }
.v3-panel::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0) 22%, rgba(0,0,0,.55) 58%, rgba(0,0,0,.9) 100%); }
.v3-panelin { position: relative; z-index: 1; padding: 40px; max-width: 540px; }
.v3-panelin .v3-kicker { color: rgba(255,255,255,.78); margin-bottom: 12px; }
.v3-panelin .v3-h3 { color: #fff; }
.v3-panelin p:not(.v3-kicker) { font-family: 'Gotham'; font-size: 17px; line-height: 1.55; color: #fff; margin: 0 0 24px; text-shadow: 0 1px 12px rgba(0,0,0,.35); }
@media (max-width: 991px) {
  .v3-panels { padding: 64px 0; }
  .v3-panelgrid { grid-template-columns: 1fr; gap: 16px; }
  .v3-panel { aspect-ratio: 4/3; }
  .v3-panelin { padding: 26px; }
  .v3-panelin p:not(.v3-kicker) { font-size: 16px; }
}

/* ---------- 6. Our campuses ----------
   The background slider sits behind; the section takes its height from the
   content. slick makes .pr-center the slide itself, so the slide classes sit
   on .pr-center. The centre card is white with the full content; the side
   cards are faint glass carrying the stacked mark, number and sector row. */
.v3-campuses { position: relative; background: #000; overflow: hidden; }
.v3-campuses .bg_slide { position: absolute; inset: 0; z-index: 0; }
.v3-campuses .bg_slide .slick-list, .v3-campuses .bg_slide .slick-track, .v3-campuses .bg_slide .item { height: 100% !important; }
.v3-campuses .bg_slide img { height: 100% !important; width: 100%; object-fit: cover; }
.v3-campuses .container { position: relative !important; z-index: 1; }
.v3-campuses .pad80 { padding-top: 48px !important; padding-bottom: 40px !important; }
.v3-campuses .v3-head { margin-bottom: 14px; }
.v3-campuses .v3-slidenav { margin-top: 6px; }
.v3-campuses .center-slider { margin-top: 0; overflow: hidden; padding: 0 0 12px; }
.v3-campuses .center-slider .slick-list { overflow: visible; perspective: 1600px; perspective-origin: 50% 50%; }
.v3-campuses .center-slider .slick-slide { padding: 10px 0; }
.center-slider .slick-arrow { display: none !important; }

/* the card */
.pr-center { position: relative; border-radius: 0; border-color: rgba(255,255,255,.32); min-height: 0 !important; text-align: left; padding-bottom: 32px; }
.center-slider .pr-center.slick-slide { transform-style: preserve-3d; backface-visibility: hidden; transition: transform .9s cubic-bezier(.2,.7,.2,1), opacity .9s ease, border-color .6s ease, box-shadow .9s ease; }
.center-slider .pr-center.slick-slide.slick-center { transform: scale(1) !important; box-shadow: 0 48px 90px -30px rgba(0,0,0,.65), 0 0 0 1px rgba(255,255,255,.06); z-index: 2; }
.center-slider .pr-center.slick-slide:not(.slick-center) { transform: perspective(1600px) rotateY(18deg) scale(.88) translateX(6%); opacity: .62; background: rgba(0,0,0,.18); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); border-color: rgba(255,255,255,.16); }
.center-slider .slick-center.slick-active ~ .pr-center.slick-slide:not(.slick-center) { transform: perspective(1600px) rotateY(-18deg) scale(.88) translateX(-6%); }
.center-slider .pr-center.slick-slide:not(.slick-center):hover { opacity: 1; border-color: rgba(255,255,255,.4); }
.center-slider .pr-center.slick-slide:not(.slick-center) > *:not(.pr-big) { opacity: 0; visibility: hidden; transition: opacity .3s; }
.center-slider .pr-center.slick-center > *:not(.pr-big) { opacity: 1; visibility: visible; transition: opacity .5s .2s; }
.center-slider .pr-center.slick-center .pr-big { opacity: 0; pointer-events: none; }

/* centre card content */
.pr-head { display: flex; justify-content: center; align-items: center; padding: 26px 32px 22px; }
.pr-center img.pr-logo { height: 44px; width: auto !important; margin: 0 !important; left: 0; position: static; opacity: 1 !important; }
.pr-vid { position: relative; margin-bottom: 22px; }
.pr-center video { margin-bottom: 0 !important; display: block; aspect-ratio: 16/9; object-fit: cover; }
.pr-center .pr-vid img.pr-poster { position: absolute; inset: 0; width: 100% !important; height: 100%; object-fit: cover; margin: 0 !important; left: 0; opacity: 1; transition: opacity .8s ease; pointer-events: none; }
.pr-vid.playing img.pr-poster { opacity: 0; }
.pr-sector, .pr-center p.pr-sector { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: var(--muted); margin: 0 0 12px !important; padding: 0 32px !important; opacity: 1 !important; transform: none !important; white-space: nowrap; font-size: 12px !important; }
.pr-center p:not(.pr-sector) { padding: 0 32px; font-size: 16px !important; line-height: 1.55; }
.center-slider .pr-center.slick-center p { color: #302925; }
.center-slider .pr-center.slick-center .pr-sector { color: var(--muted); }
.pr-center .lnk { margin: 12px 32px 0; color: var(--ink); }
.pr-center .lnk::after { display: none !important; }

/* side card content */
.pr-big { position: absolute; inset: 0; z-index: 1; display: flex; flex-direction: column; justify-content: space-between; align-items: stretch; padding: 26px 28px; text-align: left; opacity: 1; transition: opacity .5s ease; }
.pr-big > * { position: relative; z-index: 1; }
.pr-big .pr-n { font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .26em; color: rgba(255,255,255,.5); }
.pr-big .pr-mark { flex: 1; display: flex; align-items: center; justify-content: center; }
.pr-center .pr-big .pr-mark img { position: static; left: 0; width: 60% !important; max-width: 250px; height: auto; margin: 0; opacity: .8; transform: none; transition: transform .8s cubic-bezier(.2,.7,.2,1); }
.pr-center.slick-slide:not(.slick-center):hover .pr-big .pr-mark img { opacity: 1; transform: translateY(-6px); }
.pr-big .pr-foot { display: flex; justify-content: space-between; align-items: center; border-top: 1px solid rgba(255,255,255,.14); padding-top: 18px; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .24em; text-transform: uppercase; color: rgba(255,255,255,.5); white-space: nowrap; }
.pr-big .pr-foot span { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .26em; text-transform: uppercase; color: rgba(255,255,255,.72); white-space: nowrap; }
.pr-big .pr-foot svg { width: 20px; height: 13px; color: #fff; opacity: .6; transition: transform .4s ease, opacity .4s ease; }
.pr-center.slick-slide:not(.slick-center):hover .pr-foot svg { transform: translateX(6px); opacity: 1; }
@media (max-width: 991px) {
  .center-slider .pr-center.slick-slide:not(.slick-center), .center-slider .slick-center.slick-active ~ .pr-center.slick-slide:not(.slick-center) { transform: scale(.94); }
  .pr-center { border-color: rgba(255,255,255,.2); }
  .pr-head { padding: 20px 22px 16px; }
  .pr-center img.pr-logo { height: 36px; }
  .pr-sector, .pr-center p.pr-sector { padding: 0 22px !important; }
  .pr-center p:not(.pr-sector) { padding: 0 22px; }
  .pr-center .lnk { margin-left: 22px; margin-right: 22px; }
  .pr-big { padding: 20px 22px; }
  .pr-center .pr-big .pr-mark img { width: 50% !important; }
}
@media (max-width: 767px) {
  /* one card at a time: every card is the full white card */
  .center-slider .pr-center.slick-slide, .center-slider .pr-center.slick-slide:not(.slick-center) { background: #fff !important; opacity: 1 !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; border-color: #fff !important; transform: none !important; box-shadow: 0 30px 60px -30px rgba(0,0,0,.6); }
  .center-slider .pr-center.slick-slide .pr-big { display: none !important; }
  .center-slider .pr-center.slick-slide > *:not(.pr-big) { opacity: 1 !important; visibility: visible !important; }
  .center-slider .pr-center.slick-slide p { color: #302925 !important; }
  .center-slider .pr-center.slick-slide .pr-sector { color: #6b6e73 !important; }
  .pr-center img.pr-logo { height: 40px; }
  /* every card the same height: the track is a flex row, Explore sits at the foot of each card */
  .v3-campuses .center-slider .slick-track { display: flex !important; align-items: stretch; }
  .v3-campuses .center-slider .slick-slide { height: auto !important; display: flex !important; }
  .v3-campuses .pr-center { display: flex; flex-direction: column; width: 100%; }
  .v3-campuses .pr-center .lnk { margin-top: auto; align-self: flex-start; }
}

/* ---------- 7. In good company ----------
   One row of logos in equal boxes; each place dissolves to the next name
   (script), arrows deal the next set, hover a logo for its name and centre. */
.v3-occupiers { background: #fff; padding: 96px 0 64px; }
.v3-occupiers .v3-head { margin-bottom: 64px; }
.v3-facade { position: relative; }
.v3-cells { display: grid; grid-template-columns: repeat(6, 1fr); gap: 0; align-items: center; }
.v3-slot { position: relative; height: 96px; display: flex; align-items: center; justify-content: center; }
.v3-win { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 0 8%; opacity: 0; transform: translateY(10px); filter: blur(3px); transition: opacity .55s cubic-bezier(.2,.7,.2,1), transform .55s cubic-bezier(.2,.7,.2,1), filter .55s ease; cursor: default; }
.v3-win.on { opacity: 1; transform: none; filter: blur(0); }
.v3-win.off { opacity: 0; transform: translateY(-10px); filter: blur(3px); }
.v3-win img { display: block; width: 100%; max-width: 128px; height: 40px; object-fit: contain; transition: transform .5s ease; }
.v3-win img.sym { width: 56px; height: 56px; max-width: 56px; }
.v3-win img.mid { max-width: 112px; height: 36px; }
.v3-win:hover img { transform: translateY(-5px); }
.v3-wname { position: absolute; left: 0; right: 0; bottom: -2px; text-align: center; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: var(--muted); opacity: 0; transform: translateY(4px); transition: opacity .4s ease, transform .4s ease; white-space: nowrap; }
.v3-win:hover .v3-wname { opacity: 1; transform: none; }
.v3-occnav { margin-top: 36px; gap: 28px; }
.v3-occnav .v3-nb { border-color: var(--rule); color: var(--ink); }
.v3-occnav .v3-nb:hover { background: var(--ink); color: #fff; border-color: var(--ink); }
.v3-caption { margin: 0; min-width: 300px; min-height: 20px; text-align: center; font-size: 14px; letter-spacing: .04em; color: var(--muted); transition: opacity .3s; }
.v3-caption:empty { opacity: 0; }
.v3-caption b { font-family: 'Gotham-m'; font-weight: normal; color: var(--ink); }
.v3-caption .csym { width: 11px; height: 11px; vertical-align: -1px; margin: 0 3px 0 4px; }
@media (max-width: 1099px) { .v3-cells { grid-template-columns: repeat(5, 1fr); } }
@media (max-width: 767px) {
  .v3-occupiers { padding: 64px 0 56px; }
  .v3-occupiers .v3-head { margin-bottom: 36px; }
  .v3-cells { grid-template-columns: repeat(3, 1fr); row-gap: 8px; }
  .v3-slot { height: 84px; }
  .v3-win img { max-width: 96px; height: 30px; }
  .v3-win img.sym { width: 44px; height: 44px; max-width: 44px; }
  .v3-win img.mid { max-width: 88px; height: 28px; }
  .v3-wname { letter-spacing: .18em; }
  .v3-occnav { gap: 12px; margin-top: 24px; justify-content: center; }
  .v3-occnav .v3-nb { width: 40px; height: 40px; }
  .v3-caption { min-width: 0; flex: 1; font-size: 13px; }
  .v3-caption:empty { display: block; }
}

/* ---------- 8. In their words ----------
   One voice at a time: portrait left (drift drawn by script), words right,
   an index of names beneath with arrows and a hairline timer. */
.v3-words { background: #000; color: #fff; padding: 80px 0 72px; }
.v3-words .v3-head { margin-bottom: 40px; }
.v3-voices { position: relative; }
.v3-stage { position: relative; min-height: 440px; }
.v3-voice { position: absolute; inset: 0; display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 56px; align-items: center; opacity: 0; visibility: hidden; transition: opacity .9s ease, visibility 0s .9s; }
.v3-voice.on { opacity: 1; visibility: visible; transition: opacity .9s ease .1s, visibility 0s; }
.v3-vmedia { position: relative; display: block; height: 440px; overflow: hidden; background: #0a0a0a; }
.v3-vmedia img { width: 100%; height: 100%; object-fit: cover; display: block; transform: scale(1.05); will-change: transform; filter: brightness(.94); transition: filter .6s ease; }
.v3-vmedia::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0) 55%, rgba(0,0,0,.55) 100%); pointer-events: none; }
.v3-vmedia.film:hover img { filter: brightness(1.02); }
.v3-vplay { position: absolute; right: 24px; bottom: 24px; z-index: 1; width: 56px; height: 56px; border-radius: 50%; border: 1px solid rgba(255,255,255,.7); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 12px; background: rgba(0,0,0,.28); backdrop-filter: blur(6px); transition: transform .5s cubic-bezier(.2,.7,.2,1), background .4s, color .4s; }
.v3-vplay::before { content: ''; position: absolute; inset: -1px; border-radius: 50%; border: 1px solid rgba(255,255,255,.55); animation: v3ring 3.2s ease-out infinite; }
@keyframes v3ring { 0% { transform: scale(1); opacity: .8; } 100% { transform: scale(1.7); opacity: 0; } }
.v3-vplay i { margin-left: 4px; }
.v3-vmedia.film:hover .v3-vplay { transform: scale(1.08); background: #fff; color: #000; }
.v3-vbody { min-width: 0; color: #fff; }
.v3-vkick { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .24em; text-transform: uppercase; color: rgba(255,255,255,.55); margin: 0 0 22px; }
.v3-vline { font-family: 'Georgia'; font-size: clamp(22px, 1.9vw, 28px); line-height: 1.3; color: #fff; margin: 0 0 28px; max-width: 24ch; }
.v3-vquote { font-family: 'Georgia'; font-size: clamp(17px, 1.4vw, 20px); line-height: 1.55; color: #fff; margin: 0 0 28px; max-width: 46ch; }
.v3-vbody .v3-q { width: 32px; height: 32px; color: rgba(255,255,255,.3); margin-bottom: 16px; display: block; }
.v3-watch { display: inline-flex; align-items: center; gap: 16px; height: 48px; padding: 0 26px 0 12px; border: 1px solid rgba(255,255,255,.55); color: #fff; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; margin-bottom: 30px; transition: background .35s, color .35s, border-color .35s; }
.v3-watch:hover { background: #fff; color: #000; border-color: #fff; }
.v3-playdot { width: 30px; height: 30px; border-radius: 50%; border: 1px solid currentColor; color: inherit; display: inline-flex; align-items: center; justify-content: center; font-size: 9px; }
.v3-playdot i { margin-left: 2px; }
.v3-vwho { display: flex; align-items: center; gap: 18px; padding-top: 20px; border-top: 1px solid var(--wrule); max-width: 46ch; }
.v3-vlogo { height: 24px; width: auto; flex: 0 0 auto; }
.v3-vlogo.sym { height: 38px; }
.v3-vwho p { margin: 0; padding-left: 22px; border-left: 1px solid var(--wrule); font-family: 'Gotham-m'; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: #fff; }
.v3-vwho p span { display: block; font-family: 'Gotham-l'; font-size: 14px; letter-spacing: .02em; text-transform: none; color: rgba(255,255,255,.62); margin-top: 6px; }
/* index of names, arrows either side; the strip grows with the list */
.v3-vnav { display: flex; align-items: center; gap: 24px; margin-top: 40px; }
.v3-vnav .v3-nb { flex: 0 0 auto; }
.v3-vindex { flex: 1; display: flex; gap: 24px; overflow-x: auto; scrollbar-width: none; scroll-snap-type: x proximity; }
.v3-vindex::-webkit-scrollbar { display: none; }
.v3-vtab { position: relative; flex: 1 0 220px; scroll-snap-align: start; text-align: left; background: none; border: 0; border-top: 1px solid var(--wrule); padding: 16px 0 0; cursor: pointer; color: #fff; display: flex; gap: 16px; align-items: flex-start; opacity: .55; transition: opacity .3s; }
.v3-vtab:focus { outline: 0; }
.v3-vtab.on, .v3-vtab:hover { opacity: 1; }
.v3-vtab .bar { position: absolute; left: 0; top: -1px; height: 1px; width: 0; background: #fff; }
.v3-vtab.on .bar { width: 100%; transition: width var(--dur, 9s) linear; }
.v3-vtab .n { font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .22em; color: rgba(255,255,255,.6); padding-top: 4px; }
.v3-vtab .who b { display: block; font-family: 'Georgia'; font-weight: normal; font-size: 17px; line-height: 1.2; color: #fff; }
.v3-vtab .who > span { display: block; font-family: 'Gotham'; font-size: 13px; color: rgba(255,255,255,.6); margin-top: 6px; letter-spacing: .02em; }
@media (max-width: 991px) {
  .v3-stage { min-height: 0; }
  .v3-voice { position: relative; grid-template-columns: 1fr; gap: 28px; display: none; }
  .v3-voice.on { display: grid; animation: v3fade .7s ease both; }
  .v3-vmedia { height: 400px; }
  .v3-vnav { gap: 14px; }
  .v3-vtab { flex: 0 0 200px; }
}
@media (max-width: 767px) {
  /* phones: the index and arrows sit above the voice, the film's play button is the only play control, the portrait is shorter */
  .v3-voices { display: flex; flex-direction: column; }
  .v3-vnav { order: -1; margin: 0 0 24px; }
  .v3-watch { display: none; }
  .v3-vline { font-size: 20px; margin-bottom: 0; }
  .v3-words { padding: 64px 0 56px; }
  .v3-words .v3-head { margin-bottom: 28px; }
  .v3-vmedia { height: 250px; }
  /* who is speaking sits directly under the portrait, so face, name and company share one frame */
  .v3-voice { gap: 0; }
  .v3-vbody { display: flex; flex-direction: column; }
  .v3-vwho { order: -1; border-top: 0; border-bottom: 1px solid var(--wrule); padding: 16px 0 16px; margin-bottom: 18px; max-width: none; }
  .v3-vquote { margin-bottom: 0; }
  .v3-vplay { right: 16px; bottom: 16px; width: 48px; height: 48px; }
  .v3-vnav { gap: 12px; }
  .v3-vnav .v3-nb { width: 40px; height: 40px; }
  .v3-vtab { flex: 0 0 150px; }
  .v3-vtab .n { display: none; }
  .v3-vtab .who b { font-size: 16px; }
  .v3-vtab .who > span { font-size: 12px; }
}

/* ---------- 9. One vision, every stage ---------- */
.v3-way { padding: 72px 0 !important; background: #fff !important; }
.v3-way.logobg::before { z-index: 0; }
.v3-way .container { position: relative; z-index: 1; }
.v3-way .v3-head { margin-bottom: 36px; }
.v3-stagetabs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; margin-bottom: 36px; }
.v3-stab { position: relative; text-align: left; background: none; border: 0; border-top: 1px solid var(--rule); padding: 22px 0 0; cursor: pointer; color: var(--ink); display: flex; flex-direction: column; gap: 6px; transition: color .3s; }
.v3-stab:focus { outline: 0; }
.v3-stab .bar { position: absolute; left: 0; top: -1px; height: 1px; width: 0; background: var(--ink); }
.v3-stab.on .bar { width: 100%; transition: width var(--dur, 7s) linear; }
.v3-stab .n { font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .22em; color: var(--muted); }
.v3-stab .t { font-family: 'Georgia'; font-size: 26px; line-height: 1.15; color: #9a9ca1; transition: color .4s; }
.v3-stab.on .t, .v3-stab:hover .t { color: var(--ink); }
.v3-stab .who { font-family: 'Gotham'; font-size: 14px; color: var(--muted); letter-spacing: .02em; margin-top: 2px; }
.v3-stagebody { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 64px; align-items: center; }
.v3-stageimg { position: relative; aspect-ratio: 16/9; overflow: hidden; background: #000; }
.v3-stageimg img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transform: scale(1.03); transition: opacity .9s ease, transform 6s linear; }
.v3-stageimg img.on { opacity: 1; transform: scale(1); }
.v3-stagetxt { position: relative; min-width: 0; }
.v3-stagep { display: none; }
.v3-stagep.on { display: block; animation: v3fade .7s ease both; }
@keyframes v3fade { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.v3-stagep .v3-kicker { margin-bottom: 16px; }
.v3-stagep p:not(.v3-kicker) { font-family: 'Gotham-l'; font-size: 17px; line-height: 1.7; color: var(--ink); margin: 0 0 28px; max-width: 46ch; }
@media (max-width: 991px) {
  .v3-way { padding: 64px 0 !important; }
  .v3-stagetabs { gap: 18px; margin-bottom: 32px; }
  .v3-stab .t { font-size: 22px; }
  .v3-stab .who { display: none; }
  .v3-stagebody { grid-template-columns: 1fr; gap: 28px; }
  .v3-stagep p:not(.v3-kicker) { font-size: 16px; }
}
@media (max-width: 767px) {
  .v3-stagetabs { gap: 12px; }
  .v3-stab { padding-top: 14px; }
  .v3-stab .t { font-size: 18px; }
}

/* ---------- 10. Media spotlight ---------- */
.v3-media { padding: 88px 0 80px !important; border-top: 1px solid var(--rule-soft); }
.v3-media .v3-head { margin-bottom: 44px; }
.newsbox, .newsbox .newslogo, .headlines_large video, .headlines_large img { border-radius: 0; }
.newsbox:hover .lnk { color: #fff; }
.headlines_large { position: relative; }
.headlines_large .lnk { position: absolute; right: 28px; bottom: 26px; z-index: 2; }
.large_head_title img { max-height: 22px; }
.v3-more { text-align: center; margin-top: 56px; }
@media (max-width: 767px) { .headlines_large .lnk { right: 16px; bottom: 16px; } .v3-more { margin-top: 36px; } }

/* ---------- 11. Footer ---------- */
footer.v3-foot { background: #000; padding: 80px 0 32px; font-size: 14px; position: relative; overflow: hidden; }
footer.v3-foot::before { display: none; }
/* the old phone bar is gone, so the footer meets the bottom of the page */
footer.v3-foot { margin-bottom: 0 !important; }
.v3-ftop { display: flex; justify-content: space-between; align-items: flex-end; gap: 40px; padding-bottom: 44px; border-bottom: 1px solid var(--wrule); }
.v3-fbrand .footerlogo { width: 132px; height: auto; display: block; }
.v3-fbrand p { font-family: 'Georgia'; font-size: 18px; color: rgba(255,255,255,.66); margin: 22px 0 0; }
.v3-fcta { text-align: right; max-width: 520px; }
.v3-fcta h2 { font-family: 'Georgia' !important; font-weight: normal; font-size: clamp(24px, 2.1vw, 30px); line-height: 1.25; color: #fff; max-width: 15ch; margin: 0 0 20px auto; text-transform: none; }
.v3-fgrid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 40px; padding: 48px 0 56px; }
/* on a tablet held sideways the contact column needs more room, or the email address runs off the edge */
@media (min-width: 992px) and (max-width: 1279px) { .v3-fgrid { grid-template-columns: repeat(4, minmax(0, 1fr)) minmax(0, 1.5fr); gap: 28px; } }
.v3-fcol h6 { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .24em; text-transform: uppercase; color: #fff; margin: 0 0 22px; }
.v3-fcol h6::after { display: none; }
.v3-fcol h6 a { color: #fff; }
.v3-fcol ul { margin: 0; padding: 0; list-style: none; }
.v3-fcol li { margin: 0 0 12px; list-style: none; }
.v3-fcol li a { font-family: 'Gotham'; font-size: 15px; letter-spacing: .01em; text-transform: none; color: rgba(255,255,255,.66); transition: color .3s; position: relative; }
.v3-fcol li a:hover { color: #fff; }
.v3-fcol li a::after { display: none; }
.v3-social { display: flex; gap: 10px; margin-top: 26px; }
.v3-social a { width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--wrule); display: inline-flex; align-items: center; justify-content: center; color: #fff; font-size: 13px; transition: background .3s, color .3s, border-color .3s; }
.v3-social a:hover { background: #fff; color: #000; border-color: #fff; }
.v3-social a i { margin: 0; top: 0; }
.v3-fbot { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding-top: 24px; border-top: 1px solid var(--wrule); }
.v3-fbot ul { display: flex; gap: 28px; margin: 0; padding: 0; list-style: none; }
.v3-fbot li { margin: 0; list-style: none; }
.v3-fbot li a, .v3-fbot .copyright { font-family: 'Gotham'; font-size: 13px; letter-spacing: .04em; text-transform: none; color: rgba(255,255,255,.5); }
.v3-fbot li a:hover { color: #fff; }
.v3-fbot li a::after { display: none; }
@media (min-width: 1450px) {
  /* the old fixed-footer reveal is retired; the footer sits in flow */
  .pagescrolling { margin-bottom: 0 !important; }
  footer.v3-foot { position: relative !important; z-index: 1; }
}
@media (max-width: 991px) {
  footer.v3-foot { padding-top: 64px; }
  .v3-ftop { flex-direction: column; align-items: flex-start; gap: 32px; }
  .v3-fcta { text-align: left; max-width: none; }
  .v3-fcta h2 { margin-left: 0; }
  .v3-fgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 36px 28px; padding: 44px 0 48px; }
  .v3-fcontact { grid-column: 1 / -1; }
  .v3-fbot { flex-direction: column; align-items: flex-start; gap: 16px; }
}
@media (max-width: 767px) { .v3-fbot ul { flex-wrap: wrap; gap: 14px 22px; } }

/* =====================================================================
   Campuses, Available space and the campus pages
     12  Page hero, page head, boxed buttons, figures, fact tables
     13  Campuses page: map and entries, pipeline, standards, services, quiet line
     14  Available space: units, headcount measure, fit-out, next steps, contact
     15  Campus pages: available now, the campus, film, blocks and site plan,
         specifications, location map, gallery strip, enquire
     16  The request sheet
   ===================================================================== */

/* ---------- 12. Page hero, page head, boxed buttons, figures, fact tables ---------- */
.v3-page { background: #fff; }
/* position: sticky needs the viewport to be the scroll container, so the body must not clip */
html { overflow-x: hidden; }
body:not(.no-scroll):not(.v3-sheetopen) { overflow: visible !important; }
.v3-pagehero { position: relative; height: 72vh; min-height: 520px; max-height: 820px; background: #000; display: flex; align-items: center; justify-content: center; text-align: center; overflow: hidden; }
.v3-pagehero.tall { height: 86vh; min-height: 600px; max-height: 940px; }
.v3-pagehero > img, .v3-pagehero > video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: brightness(.86); }
.v3-pagehero::after { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse 46% 52% at 50% 50%, rgba(0,0,0,.34), rgba(0,0,0,0) 100%), linear-gradient(180deg, rgba(0,0,0,.28) 0%, rgba(0,0,0,.06) 40%, rgba(0,0,0,.5) 100%); pointer-events: none; }
.v3-pagehero-in { position: relative; z-index: 1; padding: 60px 24px 0; display: flex; flex-direction: column; align-items: center; }
.v3-pagehero-in .v3-kicker { color: rgba(255,255,255,.75); }
.v3-pagehero-in .v3-sub { color: rgba(255,255,255,.82); text-align: center; text-shadow: 0 1px 14px rgba(0,0,0,.35); }
.v3-pagehero-in .v3-h2 { text-shadow: 0 1px 20px rgba(0,0,0,.35); }
.v3-herologo { margin: 0; line-height: 0; }
.v3-herologo img { height: 60px; width: auto; filter: drop-shadow(0 2px 14px rgba(0,0,0,.35)); }
.v3-heroacts { display: flex; gap: 12px; margin-top: 40px; flex-wrap: wrap; justify-content: center; }
.v3-pagehead { padding: 168px 0 48px; text-align: center; }
.v3-pagehead .container { display: flex; flex-direction: column; align-items: center; }
.v3-pagehead .v3-sub { max-width: 60ch; }
.v3-updated { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: var(--muted); margin: 28px 0 0; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* boxed buttons carry no arrow */
.v3-box { display: inline-flex; align-items: center; justify-content: center; height: 48px; padding: 0 26px; border: 1px solid var(--ink); background: var(--ink); color: #fff; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; white-space: nowrap; cursor: pointer; transition: background .3s, color .3s, border-color .3s; }
.v3-box:hover { background: #fff; color: var(--ink); text-decoration: none; }
.v3-box.ghost { background: transparent; color: var(--ink); }
.v3-box.ghost:hover { background: var(--ink); color: #fff; }
.v3-box.light { background: rgba(0,0,0,.18); border-color: rgba(255,255,255,.75); color: #fff; backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.v3-box.light:hover { background: #fff; color: #000; border-color: #fff; }
.v3-box.light.ghost { background: transparent; backdrop-filter: none; }
.bgblack .v3-box.light { background: #fff; color: #000; border-color: #fff; backdrop-filter: none; }
.bgblack .v3-box.light:hover { background: transparent; color: #fff; }
.bgblack .v3-box.light.ghost { background: transparent; color: #fff; border-color: rgba(255,255,255,.6); }
.bgblack .v3-box.light.ghost:hover { background: #fff; color: #000; }
button.v3-box { border-radius: 0; }

/* figures in a row */
.v3-figs { display: flex; gap: 40px; flex-wrap: wrap; margin: 0; }
.v3-fig { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.v3-fig .n { font-family: 'Gotham-l'; font-size: clamp(30px, 2.6vw, 40px); line-height: 1; letter-spacing: -.01em; color: var(--ink); font-variant-numeric: tabular-nums; white-space: nowrap; }
.v3-fig .l { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
.v3-figs.light .n { color: #fff; }
.v3-figs.light .l { color: rgba(255,255,255,.6); }

/* fact tables: label, value, hairlines */
.v3-facts { margin: 0; border-top: 1px solid var(--rule); }
.v3-facts > div { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: 24px; padding: 14px 0; border-bottom: 1px solid var(--rule-soft); }
.v3-facts dt { font-family: 'Gotham-m'; font-size: 13px; letter-spacing: .04em; color: var(--ink); margin: 0; }
.v3-facts dd { font-family: 'Gotham-l'; font-size: 15px; line-height: 1.5; color: #3a3c40; margin: 0; }
.v3-facts.two { max-width: 960px; margin: 0 auto; }
.v3-facts.two > div { grid-template-columns: 260px minmax(0, 1fr); gap: 32px; padding: 18px 0; }
.v3-ledger.dark { border-top-color: var(--rule); }
.v3-ledger.dark .v3-ledgerrow { border-bottom-color: var(--rule); }
.v3-ledger.dark .v3-ledgerrow dt { color: var(--ink); font-size: clamp(40px, 3.6vw, 56px); }
.v3-ledger.dark .v3-ledgerrow dd { color: var(--muted); }
@media (max-width: 767px) {
  .v3-pagehero { height: 68vh; min-height: 460px; }
  .v3-pagehero.tall { height: 78vh; min-height: 520px; }
  .v3-herologo img { height: 44px; }
  .v3-heroacts { margin-top: 28px; gap: 10px; }
  .v3-heroacts .v3-box { padding: 0 18px; height: 44px; }
  .v3-pagehead { padding: 128px 0 36px; }
  .v3-figs { gap: 20px 24px; }
  .v3-fig .n { font-size: 26px; }
  .v3-fig .l { letter-spacing: .14em; }
  .v3-facts > div { grid-template-columns: 1fr; gap: 4px; padding: 12px 0; }
  .v3-facts.two > div { grid-template-columns: 1fr; gap: 4px; }
  .v3-box { height: 46px; padding: 0 20px; }
}

/* ---------- 13. Campuses page ---------- */
/* 13.1 Hero: footage, the words bottom-left, nothing over the picture */
.cp-hero { position: relative; height: 88vh; min-height: 540px; max-height: 900px; background: #000; overflow: hidden; }
.cp-hero picture, .cp-hero video, .cp-hero img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 62% 48%; }
.cp-hero::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.18) 0%, rgba(0,0,0,0) 32%, rgba(0,0,0,0) 55%, rgba(0,0,0,.55) 100%); pointer-events: none; }
.cp-hero .container { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; }
.cp-heroin { padding: 0 0 72px; max-width: 620px; }
.cp-heroin .v3-kicker { color: rgba(255,255,255,.72); margin-bottom: 20px; }
.cp-heroin h1 { font-family: 'Gotham-m' !important; font-weight: normal; font-size: clamp(38px, 4vw, 55px); line-height: 1.1; color: #fff; margin: 0; text-shadow: 0 1px 24px rgba(0,0,0,.3); }
.cp-heroin .v3-sub { color: rgba(255,255,255,.78); margin-top: 18px; max-width: 46ch; }
.cp-herolinks { display: flex; gap: 36px; margin-top: 28px; flex-wrap: wrap; }

/* 13.2 The wall: a strip of campuses, one open at a time */
.cp-wallsec { padding: 88px 0 0; background: #fff; }
.cp-wall { display: flex; gap: 6px; height: 580px; width: 100vw; margin-left: calc(50% - 50vw); background: #fff; }
.cp-panel { position: relative; flex: 1 1 0; min-width: 0; overflow: hidden; cursor: pointer; background: #000; transition: flex-grow .95s cubic-bezier(.65,0,.2,1); will-change: flex-grow; contain: layout paint; }
.cp-panel.open { flex-grow: 4.6; cursor: default; }
.cp-ph { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: brightness(.6) saturate(.8); transition: filter .9s ease; will-change: filter; }
.cp-panel.open .cp-ph { filter: none; }
.cp-rest { position: absolute; inset: 0; z-index: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; opacity: 1; transition: opacity .45s ease; }
.cp-panel.open .cp-rest { opacity: 0; transition: opacity .2s; }
.cp-num { position: absolute; top: 26px; font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .3em; color: rgba(255,255,255,.75); }
.cp-mark { width: 74px; max-width: 60%; height: auto; opacity: .95; }
/* the plate: a frosted rectangle rising from the bottom-left, sized to its words, its right edge dissolving into the photograph */
.cp-plate { position: absolute; left: 0; bottom: 0; width: min(400px, 40%); z-index: 2; transform: translateY(104%); transition: transform 1.25s cubic-bezier(.19,1,.22,1); pointer-events: none; }
.cp-panel.open .cp-plate { transform: none; transition-delay: .35s; pointer-events: auto; }
.cp-wall.top .cp-plate { bottom: auto; top: 0; transform: translateY(-104%); }
.cp-wall.top .cp-panel.open .cp-plate { transform: none; }
.cp-wall.top .cp-edge { top: auto; bottom: 0; }
.cp-glass { position: absolute; inset: 0; background: rgba(6,8,10,.42); backdrop-filter: blur(14px) saturate(1.2); -webkit-backdrop-filter: blur(14px) saturate(1.2); }
.cp-edge { position: absolute; left: 0; right: 0; top: 0; height: 1px; background: rgba(255,255,255,.35); }
.cp-in { position: relative; padding: 24px 28px 26px; color: #fff; opacity: 0; transform: translateY(22px); transition: opacity .7s ease, transform .9s cubic-bezier(.2,.7,.2,1); }
.cp-panel.open .cp-in { opacity: 1; transform: none; transition-delay: .8s; }
.cp-logo { height: 38px; width: auto; display: block; margin: 0 0 12px; }
.cp-addr { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: rgba(255,255,255,.72); margin: 0 0 14px; padding-bottom: 14px; border-bottom: 1px solid rgba(255,255,255,.22); }
.cp-figs { display: flex; gap: 22px; margin: 0 0 14px; }
.cp-fig { display: flex; flex-direction: column; gap: 7px; }
.cp-fig b { display: block; font-family: 'Gotham-l'; font-weight: normal; font-size: 22px; line-height: 1; white-space: nowrap; }
.cp-fig span { display: block; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: rgba(255,255,255,.62); margin-top: 4px; }
.cp-in .cp-line { font-family: 'Georgia'; font-size: 16px; line-height: 1.4; margin: 0 0 18px; max-width: 34ch; color: #fff; }
.cp-in .cp-addr { color: rgba(255,255,255,.72); }
.cp-links { display: flex; gap: 10px; flex-wrap: wrap; }
.cp-btn { display: inline-flex; align-items: center; justify-content: center; height: 36px; padding: 0 14px; border: 1px solid rgba(255,255,255,.8); color: #fff; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; text-decoration: none; white-space: nowrap; transition: background .3s, color .3s; }
.cp-btn.fill { background: #fff; color: var(--ink); }
.cp-btn:hover { background: #fff; color: var(--ink); text-decoration: none; }
/* index beneath */
.cp-index { display: flex; gap: 24px; margin-top: 26px; border-top: 1px solid var(--rule); }
.cp-tab { flex: 1; position: relative; padding: 16px 0 0; display: flex; gap: 14px; align-items: baseline; color: #9a9ca1; cursor: pointer; transition: color .3s; background: none; border: 0; text-align: left; }
.cp-tab.on, .cp-tab:hover { color: var(--ink); }
.cp-tab .bar { position: absolute; left: 0; top: -1px; height: 1px; width: 0; background: var(--ink); transition: width .6s ease; }
.cp-tab.on .bar { width: 100%; }
.cp-tab .n { font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .22em; }
.cp-tab .t { font-family: 'Georgia'; font-size: 18px; }
.cp-tab .s { font-family: 'Gotham'; font-size: 13px; color: #9a9ca1; margin-left: auto; }

/* 13.3 The map: a real Google map, with a panel for "from where you are" */
.cp-mapsec { padding: 112px 0 0; background: #fff; }
.cp-mapwrap { position: relative; width: 100vw; margin-left: calc(50% - 50vw); min-height: 640px; background: #f2f2f3; overflow: hidden; display: grid; grid-template-columns: 400px minmax(0, 1fr); }
.cp-gmap { position: relative; grid-column: 2; grid-row: 1; min-height: 640px; }
.cp-gmap .gm-style iframe + div { border: 0 !important; }
.cp-mapfall { position: absolute; inset: 0; background: #f4f4f5; grid-column: 2; grid-row: 1; background-image: linear-gradient(rgba(17,18,20,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(17,18,20,.05) 1px, transparent 1px); background-size: 72px 72px; }
.cp-mapfall .note { position: absolute; right: 24px; bottom: 18px; margin: 0; font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: #9a9ca1; }
.cp-pin { position: absolute; transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; gap: 8px; }
.cp-pin i { width: 12px; height: 12px; border-radius: 50%; background: var(--ink); border: 2px solid #fff; box-shadow: 0 0 0 1px var(--ink); display: block; }
.cp-pin.hollow i { background: #fff; }
.cp-pin span { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--ink); white-space: nowrap; }
.cp-pin small { display: block; font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .1em; color: var(--muted); text-transform: none; }
/* the panel */
.cp-mappanel { position: relative; grid-column: 1; grid-row: 1; background: #fff; border-right: 1px solid var(--rule); padding: 32px 32px 24px; display: flex; flex-direction: column; z-index: 2; }
.cp-mappanel .v3-kicker { margin-bottom: 10px; }
.cp-mappanel h3 { font-family: 'Georgia' !important; font-weight: normal; font-size: 22px; line-height: 1.15; margin: 0 0 16px; color: var(--ink); }
.cp-from { position: relative; }
.cp-from input { width: 100%; background: none; border: 0; border-bottom: 1px solid var(--ink); border-radius: 0; padding: 10px 36px 10px 0; font-family: 'Gotham'; font-size: 16px; color: var(--ink); outline: 0; }
.cp-from input::placeholder { color: #9a9ca1; }
.cp-locate { position: absolute; right: 0; top: 6px; width: 30px; height: 30px; background: none; border: 0; padding: 0; color: var(--ink); cursor: pointer; opacity: .7; }
.cp-locate:hover { opacity: 1; }
.cp-locate svg { width: 20px; height: 20px; }
.cp-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 0; }
.cp-chip { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); background: none; border: 1px solid var(--rule); padding: 8px 12px; cursor: pointer; transition: color .3s, border-color .3s; }
.cp-chip:hover, .cp-chip.on { color: var(--ink); border-color: var(--ink); }
.cp-chip[data-layer=metro]::before, .cp-chip[data-layer=airport]::before { content: ''; display: inline-block; width: 10px; height: 10px; margin-right: 8px; vertical-align: 0; }
.cp-chip[data-layer=metro]::before { background: #b38b14; border-radius: 50%; }
.cp-chip[data-layer=airport]::before { background: #2f6f9f; border-radius: 50%; }
.cp-times { margin: 20px 0 0; border-top: 1px solid var(--rule); }
.cp-time { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; align-items: center; padding: 11px 0; border-bottom: 1px solid var(--rule-soft); cursor: pointer; }
.cp-time .nm { font-family: 'Georgia'; font-size: 17px; color: var(--ink); }
.cp-time .sec { display: block; font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .12em; color: var(--muted); margin-top: 3px; text-transform: uppercase; }
.cp-time .tm { font-family: 'Gotham-l'; font-size: 22px; color: var(--ink); white-space: nowrap; font-variant-numeric: tabular-nums; text-align: right; }
.cp-time .tm small { display: block; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); margin-top: 3px; }
.cp-time.soon .nm::after { content: ' · 2029'; font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .12em; color: var(--muted); }
.cp-time:hover .nm { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }
.cp-layers { margin-top: auto; display: flex; gap: 8px; flex-wrap: wrap; padding-top: 18px; }
.cp-mappanel .cp-note { font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .06em; color: #9a9ca1; margin: 16px 0 0; }

/* 13.4 Turning Point */
.cp-tp { padding: 112px 0 112px; background: #fff; }
.cp-tpmap { position: relative; width: 100vw; margin-left: calc(50% - 50vw); height: 560px; background: #e9e9ea; overflow: hidden; }
.cp-tpmap .cp-gmap { inset: 0; }
.cp-tpmap .cp-mapfall { background: #ececed; }
.cp-tpmap .cp-mapfall .plot { position: absolute; left: 50%; top: 50%; width: 260px; height: 190px; transform: translate(-46%, -52%) rotate(-8deg); border: 1.5px solid #fff; background: rgba(37,60,123,.9); }
.cp-tpmap .cp-mapfall .rd { position: absolute; background: #fff; box-shadow: 0 0 0 1px rgba(17,18,20,.08); }
.cp-tpmap .cp-mapfall .rd.a { left: -5%; top: 27%; width: 110%; height: 22px; transform: rotate(-8deg); }
.cp-tpmap .cp-mapfall .rd.b { left: 31%; top: -5%; width: 14px; height: 110%; transform: rotate(-8deg); }
.cp-tplabel { position: absolute; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--ink); background: rgba(255,255,255,.9); padding: 7px 10px; white-space: nowrap; transform: translate(-50%, -50%); }
.cp-tplabel small { display: block; font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .1em; color: var(--muted); text-transform: none; margin-top: 2px; }
.cp-tpcap { position: absolute; left: 24px; bottom: 18px; margin: 0; font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink); background: rgba(255,255,255,.92); padding: 8px 12px; z-index: 2; max-width: 70%; line-height: 1.5; }
.cp-tpstate { position: absolute; right: 24px; top: 22px; z-index: 2; display: flex; align-items: center; gap: 10px; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--ink); background: rgba(255,255,255,.92); padding: 10px 14px; }
.cp-tpstate i { width: 7px; height: 7px; border-radius: 50%; background: var(--ink); display: block; animation: cpPulse 2.2s ease-in-out infinite; }
@keyframes cpPulse { 0%, 100% { opacity: .35; } 50% { opacity: 1; } }
/* timeline to 2029 */
.cp-tl { position: relative; height: 96px; margin: 72px 0 60px; }
.cp-tlline { position: absolute; left: 0; right: 0; top: 8px; height: 1px; background: var(--rule); }
.cp-tlfill { position: absolute; left: 0; top: 8px; height: 1px; width: 0; background: var(--ink); transition: width 2.4s cubic-bezier(.2,.7,.2,1); }
.cp-tl.on .cp-tlfill { width: 100%; }
.cp-tlp { position: absolute; top: 0; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; text-align: center; }
.cp-tlp:first-of-type { transform: none; align-items: flex-start; text-align: left; }
.cp-tlp:last-of-type { transform: translateX(-100%); align-items: flex-end; text-align: right; }
.cp-tlp i { width: 17px; height: 17px; border-radius: 50%; border: 1px solid var(--ink); background: #fff; display: block; transition: background .4s; }
.cp-tlp.on i { background: var(--ink); }
.cp-tlp b { font-family: 'Gotham-l'; font-weight: normal; font-size: 34px; line-height: 1; margin: 16px 0 8px; color: var(--ink); }
.cp-tlp:last-of-type b { font-size: 56px; }
.cp-tlp span { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
.cp-tpgrid { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: 80px; align-items: start; }
.cp-tp .cp-tptext { font-family: 'Gotham-l'; font-size: 17px; line-height: 1.7; color: #3a3c40; margin: 28px 0 0; }
.cp-tptext + .cp-tptext { margin-top: 18px; }
.cp-tp .cp-tpuse { margin: 22px 0 4px; padding: 14px 0; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); font-family: 'Gotham-l'; font-size: 14px; line-height: 1.6; color: #3a3c40; }
.cp-tpuse span { display: block; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: var(--muted); margin-bottom: 6px; }
.cp-tpacts { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 32px; }
.cp-tpmass { position: relative; height: 440px; background: #fff; overflow: hidden; cursor: grab; }
.cp-tpmass:active { cursor: grabbing; }
.cp-tpmass canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.cp-tp .cp-tpmasscap { margin: 12px 0 0; font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); line-height: 1.5; }
.cp-legend { margin: 14px 0 0; padding: 14px 0 0; border-top: 1px solid var(--rule); list-style: none; display: flex; flex-wrap: wrap; gap: 6px 18px; }
.cp-legend li { font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); display: flex; align-items: center; gap: 7px; }
.cp-legend i { width: 11px; height: 11px; display: block; border: 1px solid rgba(17,18,20,.18); }
.cp-legend i.mos { background: repeating-conic-gradient(#c9c9c9 0 25%, #eeeeee 0 50%) 0 0 / 6px 6px; }
.cp-tpfigs .v3-figs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.cp-tpfigs .v3-fig .n { font-size: clamp(28px, 2.4vw, 36px); }
.cp-tp.nomodel .cp-tpmass { display: none; }
.cp-tpwhere { margin-top: 72px; padding-top: 40px; border-top: 1px solid var(--rule); }
.cp-tpwhere .v3-kicker { margin-bottom: 28px; }
.cp-tpdist { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 24px; }
.cp-tpd { display: flex; flex-direction: column; gap: 8px; padding-left: 18px; border-left: 1px solid var(--rule); }
.cp-tpd b { font-family: 'Gotham-l'; font-weight: normal; font-size: clamp(30px, 2.6vw, 40px); line-height: 1; color: var(--ink); white-space: nowrap; }
.cp-tpd span { font-family: 'Georgia'; font-size: 17px; color: var(--ink); line-height: 1.3; }
.cp-tpd small { font-family: 'Gotham-l'; font-size: 13px; color: var(--muted); }

/* 13.5 RSP standards: one white model on the left, the standard and its studies on a black column */
.cp-std { padding: 104px 0 96px; background: #000; color: #fff; }
.cp-idx { display: flex; border-top: 1px solid rgba(255,255,255,.3); border-bottom: 1px solid rgba(255,255,255,.3); margin: 0; }
.cp-idx button { flex: 1; position: relative; padding: 18px 12px 16px; background: none; border: 0; color: rgba(255,255,255,.45); display: flex; flex-direction: column; align-items: flex-start; gap: 6px; transition: color .3s; cursor: pointer; text-align: left; }
.cp-idx button .n { font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .22em; }
.cp-idx button .t { font-family: 'Georgia'; font-size: 16px; line-height: 1.2; }
.cp-idx button.on, .cp-idx button:hover { color: #fff; }
.cp-idx button::after { content: ''; position: absolute; left: 0; right: 0; bottom: -1px; height: 1px; background: #fff; transform: scaleX(0); transition: transform .5s ease; }
.cp-idx button.on::after { transform: none; }
.cp-studio { display: grid; grid-template-columns: minmax(0, 1fr) 420px; align-items: stretch; width: 100vw; margin-left: calc(50% - 50vw); min-height: 600px; scroll-margin-top: 72px; }
.cp-stage { position: relative; min-height: 600px; overflow: hidden; background: #000; cursor: grab; touch-action: pan-y; }
.cp-stage canvas { position: absolute; inset: 0; }
.cp-stage:active { cursor: grabbing; }
.cp-stage canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.cp-hint { position: absolute; left: 28px; bottom: 22px; z-index: 3; font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: rgba(255,255,255,.4); }
.cp-reset { position: absolute; right: 24px; bottom: 18px; z-index: 3; background: transparent; border: 1px solid rgba(255,255,255,.35); padding: 10px 14px; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: #fff; cursor: pointer; transition: background .3s, color .3s; }
.cp-reset:hover { background: #fff; color: #000; }
.cp-focus { position: absolute; z-index: 2; transform: translate(-50%, calc(-100% - 26px)); background: rgba(255,255,255,.94); border: 1px solid var(--rule); padding: 9px 12px; pointer-events: none; opacity: 0; transition: opacity .3s; white-space: nowrap; }
.cp-focus::after { content: ''; position: absolute; left: 50%; top: 100%; height: 24px; border-left: 1px solid var(--ink); }
.cp-focus span { display: block; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
.cp-focus b { display: block; font-family: 'Georgia'; font-weight: normal; font-size: 14px; color: var(--ink); margin-top: 3px; }
.cp-studypanel { background: #fff; color: var(--ink); padding: 36px 36px 32px 40px; display: flex; flex-direction: column; }
.cp-stdnum { font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .24em; color: var(--muted); }
.cp-studypanel h3 { font-family: 'Georgia' !important; font-weight: normal; font-size: 26px; line-height: 1.12; margin: 10px 0 10px; color: var(--ink); }
.cp-studypanel .cp-stdlead { font-family: 'Gotham-l'; font-size: 13px; line-height: 1.6; color: var(--muted); margin: 0 0 18px; }
.cp-studieslbl { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: var(--muted); padding-bottom: 12px; border-bottom: 1px solid var(--ink); }
.cp-study { display: grid; grid-template-columns: 26px minmax(0, 1fr) 18px; gap: 8px; align-items: center; width: 100%; padding: 10px 0; background: none; border: 0; border-bottom: 1px solid var(--rule-soft); color: #9a9ca1; text-align: left; cursor: pointer; transition: color .3s; }
.cp-study .n { font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .2em; }
.cp-study .t { font-family: 'Georgia'; font-size: 15px; line-height: 1.3; }
.cp-study .ar { font-family: 'Gotham-l'; font-size: 16px; opacity: 0; transform: translateX(-4px); transition: opacity .3s, transform .3s; }
.cp-study:hover { color: var(--ink); }
.cp-study.on { color: var(--ink); }
.cp-study.on .ar { opacity: 1; transform: none; }
.cp-insight { margin-top: 18px; padding: 16px 0 0; border-top: 1px solid var(--ink); min-height: 150px; }
.cp-insight span { display: block; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: var(--muted); margin-bottom: 12px; }
.cp-insight b { display: block; font-family: 'Georgia'; font-weight: normal; font-size: 17px; color: var(--ink); line-height: 1.3; }
.cp-studypanel .cp-insight p { font-family: 'Gotham-l'; font-size: 13.5px; line-height: 1.65; color: #3a3c40; margin: 8px 0 0; }
.cp-stdtop { display: flex; align-items: center; justify-content: space-between; }
.cp-stdnav { display: flex; gap: 8px; }
.cp-stdnav .v3-nb { width: 36px; height: 36px; }
.cp-stdnav .v3-nb svg { width: 15px; height: 10px; }
.cp-stdnav .v3-nb { border-color: rgba(17,18,20,.35); color: var(--ink); }
.cp-stdnav .v3-nb:hover { background: var(--ink); color: #fff; border-color: var(--ink); }
.cp-std.nomodel .cp-stage { display: none; }
.cp-std.nomodel .cp-studio { grid-template-columns: 1fr; }


@media (max-width: 1024px) {
  .cp-tpgrid { grid-template-columns: 1fr; gap: 48px; }
  .cp-tpdist { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .cp-studio { grid-template-columns: 1fr; min-height: 0; }
  .cp-stage { height: 56vh; min-height: 360px; }
  .cp-hint { display: none; }
  .cp-reset { right: 16px; bottom: 14px; }
  .cp-studypanel { padding: 36px 20px 32px; }
  .cp-studypanel h3 { font-size: 26px; }
  .cp-insight { min-height: 0; }
  .cp-stdnav { padding-top: 24px; }
  .cp-idx { overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .cp-idx::-webkit-scrollbar { display: none; }
  .cp-idx button { flex: 0 0 auto; padding: 14px 16px 12px; }
  .cp-idx button .t { font-size: 15px; }
  .cp-mapwrap { grid-template-columns: 1fr; min-height: 0; }
  .cp-gmap, .cp-mapfall { grid-column: 1; grid-row: 1; min-height: 420px; height: 420px; }
  .cp-mappanel { grid-column: 1; grid-row: 2; border-right: 0; border-top: 1px solid var(--rule); padding: 32px 20px 28px; }
}
@media (max-width: 767px) {
  .cp-hero { height: 86vh; min-height: 520px; }
  .cp-heroin { padding-bottom: 56px; }
  .cp-herolinks { gap: 24px; margin-top: 26px; }
  .cp-wallsec, .cp-mapsec, .cp-tp, .cp-std { padding-top: 72px; }
  .cp-wall { flex-direction: column; height: auto; gap: 4px; }
  .cp-panel { flex: none; height: 96px; transition: height 1s cubic-bezier(.7,0,.2,1); }
  .cp-panel.open { flex: none; height: 600px; }
  .cp-rest { flex-direction: row; justify-content: flex-start; padding: 0 20px; gap: 18px; }
  .cp-num { position: static; }
  .cp-mark { width: auto; height: 44px; }
  .cp-plate { width: auto; right: 0; }
  .cp-in { padding: 22px 20px 22px; }
  .cp-logo { height: 34px; }
  .cp-index { display: none; }
  .cp-tpmap { height: 380px; }
  .cp-tpmap .cp-mapfall .note { display: none; }
  .cp-tpcap { left: 16px; bottom: 14px; max-width: calc(100% - 32px); font-size: 12px; }
  .cp-tl { margin: 48px 0 40px; height: 128px; }
  .cp-tlp b { font-size: 24px; }
  .cp-tlp:last-of-type b { font-size: 36px; }
  .cp-tlp span { max-width: 80px; line-height: 1.4; letter-spacing: .02em; font-size: 12px; font-family: 'Gotham-l'; text-transform: none; color: var(--ink); }
  .cp-tlp:last-of-type span { max-width: none; }
  .cp-tpdist { grid-template-columns: 1fr 1fr; gap: 28px 20px; }
  .cp-legend { gap: 6px 14px; }
  .cp-tpfigs .v3-figs { gap: 12px; }
  .cp-tpfigs .v3-fig .n { font-size: 20px; white-space: normal; }
  .cp-tpfigs .v3-fig .l { font-size: 12px; letter-spacing: .12em; }
  .cp-tpd b { font-size: 26px; }
  .cp-tpmass { height: 340px; }
}

/* ---------- 14. Available space ---------- */
.v3-unit { padding: 56px 0; border-top: 1px solid var(--rule); }
.v3-unit:first-of-type { border-top: 0; }
.v3-unitgrid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 72px; align-items: start; }
.v3-unit.flip .v3-unitgrid { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
.v3-unit.flip .v3-unitphoto { order: 2; }
.v3-unitphoto { position: relative; position: sticky; top: 96px; aspect-ratio: 4/5; overflow: hidden; background: #000; }
.v3-unitphoto img { width: 100%; height: 100%; object-fit: cover; display: block; }
.v3-unitstatus { position: absolute; left: 20px; top: 20px; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: #000; background: #fff; padding: 10px 14px; }
.v3-unittop { display: flex; justify-content: space-between; align-items: center; gap: 24px; margin-bottom: 26px; }
.v3-unith { font-family: 'Georgia' !important; font-weight: normal; font-size: clamp(32px, 3.2vw, 44px); line-height: 1.1; color: var(--ink); margin: 0 0 18px; text-transform: none; }
.v3-unitsum { font-family: 'Gotham-l'; font-size: 17px; line-height: 1.65; color: #3a3c40; max-width: 56ch; margin: 0 0 32px; }
.v3-unit .v3-figs { gap: 44px; margin-bottom: 36px; }
.v3-unit .v3-fig .n { font-size: clamp(22px, 2vw, 30px); }
.v3-unitacts { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 36px; }
.v3-unitlinks { display: flex; gap: 32px; flex-wrap: wrap; margin-top: 28px; }
.v3-fit { padding: 96px 0 80px; }
.v3-fit .v3-head { margin-bottom: 56px; }
.v3-fitrow { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 4fr) minmax(0, 5fr); gap: 56px; align-items: center; border-top: 1px solid var(--wrule); border-bottom: 1px solid var(--wrule); padding: 44px 0; }
.v3-fitin { display: flex; flex-direction: column; gap: 14px; margin: 0; }
.v3-fitin span { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: rgba(255,255,255,.6); }
.v3-fitin input { width: 100%; max-width: 220px; background: none; border: 0; border-bottom: 1px solid rgba(255,255,255,.6); color: #fff; font-family: 'Gotham-l'; font-size: clamp(44px, 4.4vw, 64px); line-height: 1.1; padding: 0 0 8px; border-radius: 0; outline: 0; -moz-appearance: textfield; font-variant-numeric: tabular-nums; }
.v3-fitin input::-webkit-outer-spin-button, .v3-fitin input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.v3-fitin input:focus { border-bottom-color: #fff; }
.v3-fitout { display: flex; flex-direction: column; gap: 14px; }
.v3-fitnum { font-family: 'Gotham-l'; font-size: clamp(30px, 2.8vw, 40px); line-height: 1.1; color: #fff; font-variant-numeric: tabular-nums; }
.v3-fitl { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: rgba(255,255,255,.6); }
.v3-fitunits { list-style: none; margin: 0; padding: 0; }
.v3-fitunits li { display: grid; grid-template-columns: 1fr auto; gap: 6px 20px; padding: 16px 0; border-top: 1px solid var(--wrule); align-items: center; transition: opacity .4s; }
.v3-fitunits li:first-child { border-top: 0; padding-top: 0; }
.v3-fitunits li:last-child { padding-bottom: 0; }
.v3-fitunits b { font-family: 'Georgia'; font-weight: normal; font-size: 17px; color: #fff; }
.v3-fitunits span { font-family: 'Gotham-l'; font-size: 14px; color: rgba(255,255,255,.6); }
.v3-fitunits em { grid-column: 1 / -1; font-style: normal; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: rgba(255,255,255,.55); }
.v3-fitunits li.fits em { color: #fff; }
.v3-fitunits li.fits em::before { content: ''; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #fff; margin-right: 10px; vertical-align: 1px; }
.v3-fitunits li.no { opacity: .45; }
.v3-fitnote { font-family: 'Gotham-l'; font-size: 13px; letter-spacing: .03em; color: rgba(255,255,255,.5); margin: 24px 0 0; text-align: center; }
.v3-fitout { padding: 104px 0 112px; }
.v3-ways, .v3-steps { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--rule); }
.v3-ways li, .v3-steps li { display: grid; grid-template-columns: 64px minmax(0, 3fr) minmax(0, 7fr); gap: 24px; align-items: baseline; padding: 26px 0; border-bottom: 1px solid var(--rule); }
.v3-ways .n, .v3-steps .n { font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .22em; color: var(--muted); }
.v3-ways .t, .v3-steps .t { font-family: 'Georgia'; font-size: clamp(20px, 1.7vw, 24px); line-height: 1.2; color: var(--ink); }
.v3-ways .s, .v3-steps .s { font-family: 'Gotham-l'; font-size: 16px; line-height: 1.55; color: #3a3c40; }
.v3-steps.light { border-top-color: var(--wrule); }
.v3-steps.light li { border-bottom-color: var(--wrule); }
.v3-steps.light .n { color: rgba(255,255,255,.5); }
.v3-steps.light .t { color: #fff; }
.v3-steps.light .s { color: rgba(255,255,255,.72); }
.v3-wstd { margin-top: 56px; padding-top: 36px; max-width: 72ch; margin-left: auto; margin-right: auto; text-align: center; }
.v3-wstd .v3-kicker { margin-bottom: 14px; }
.v3-wstd p:not(.v3-kicker) { font-family: 'Gotham-l'; font-size: 16px; line-height: 1.7; color: #3a3c40; margin: 0; }
.v3-next { padding: 0 0 104px; }
.v3-next .v3-head { margin-bottom: 48px; }
.v3-nextgrid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: 96px; align-items: start; }
.v3-nextgrid .v3-h2 { margin-bottom: 36px; }
.v3-nextgrid .v3-steps li { grid-template-columns: 48px minmax(0, 3fr) minmax(0, 6fr); }
.v3-contactcard { border: 1px solid var(--rule); padding: 40px; }
.v3-contactcard.light { border-color: var(--wrule); }
.v3-cname { font-family: 'Georgia'; font-size: 26px; line-height: 1.2; color: var(--ink); margin: 0 0 6px; }
.v3-crole { font-family: 'Gotham-l'; font-size: 14px; color: var(--muted); margin: 0 0 28px; }
.v3-cways { list-style: none; margin: 0 0 24px; padding: 0; border-top: 1px solid var(--rule); }
.v3-cways li { padding: 16px 0; border-bottom: 1px solid var(--rule-soft); display: flex; flex-direction: column; gap: 4px; }
.v3-cways li > a { font-family: 'Gotham'; font-size: 17px; color: var(--ink); }
.v3-cways li span { font-family: 'Gotham-l'; font-size: 13px; color: var(--muted); }
.v3-cways li span a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
.v3-cnote { font-family: 'Gotham-l'; font-size: 14px; line-height: 1.6; color: var(--muted); margin: 0 0 28px; }
.v3-contactcard.light .v3-cname, .v3-contactcard.light .v3-cways li > a, .v3-contactcard.light .v3-cways li span a { color: #fff; }
.v3-contactcard.light .v3-crole, .v3-contactcard.light .v3-cways li span, .v3-contactcard.light .v3-cnote { color: rgba(255,255,255,.62); }
.v3-contactcard.light .v3-cways, .v3-contactcard.light .v3-cways li { border-color: var(--wrule); }
.v3-contactcard .v3-kicker + .v3-cnote { margin-top: -6px; }
a.plain, .v3-cways li span a.plain { color: inherit !important; text-decoration: none !important; border: 0 !important; }
.v3-cbtns { display: none; }   /* phones only: see mobile.css */
@media (max-width: 991px) {
  .v3-unitgrid, .v3-unit.flip .v3-unitgrid { grid-template-columns: 1fr; gap: 36px; }
  .v3-unit.flip .v3-unitphoto { order: 0; }
  .v3-unitphoto { position: relative; top: 0; aspect-ratio: 4/3; }
  .v3-fit { padding: 72px 0 64px; }
  .v3-fitrow { grid-template-columns: 1fr; gap: 36px; }
  .v3-fitout { padding: 80px 0 64px; }
  .v3-ways li, .v3-steps li, .v3-nextgrid .v3-steps li { grid-template-columns: 40px 1fr; grid-template-areas: 'n t' 'n s'; row-gap: 8px; }
  .v3-ways .n, .v3-steps .n { grid-area: n; } .v3-ways .t, .v3-steps .t { grid-area: t; } .v3-ways .s, .v3-steps .s { grid-area: s; }
  .v3-next { padding-bottom: 80px; }
  .v3-nextgrid { grid-template-columns: 1fr; gap: 48px; }
  .v3-contactcard { padding: 28px; }
}
@media (max-width: 767px) {
  .v3-unit { padding: 40px 0; }
  .v3-unittop { flex-direction: column; align-items: flex-start; gap: 12px; }
  .v3-unitacts { flex-direction: column; align-items: stretch; }
  .v3-unitacts .v3-box { width: 100%; }
  .v3-unitlinks { gap: 16px 24px; }
}

/* ---------- 15. Campus pages ---------- */
.v3-avail { padding: 104px 0 96px; }
.v3-availgrid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 72px; align-items: start; }
.v3-availphoto { position: sticky; top: 96px; aspect-ratio: 4/5; overflow: hidden; background: #000; }
.v3-availphoto img { width: 100%; height: 100%; object-fit: cover; display: block; }
.v3-about { padding: 104px 0 96px; border-top: 1px solid var(--rule); }
.v3-about.nounit { border-top: 0; }
.v3-aboutgrid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: 96px; align-items: start; }
.v3-abouttext p:not(.v3-kicker) { font-family: 'Gotham-l'; font-size: clamp(16px, 1.3vw, 18px); line-height: 1.75; color: var(--ink); margin: 0 0 24px; max-width: 60ch; }
.v3-points { list-style: none; margin: 8px 0 24px; padding: 0; }
.v3-points li { font-family: 'Georgia'; font-size: 18px; line-height: 1.5; color: var(--ink); padding: 12px 0 12px 28px; border-top: 1px solid var(--rule-soft); position: relative; }
.v3-points li::before { content: ''; position: absolute; left: 0; top: 25px; width: 12px; height: 1px; background: var(--ink); }
.v3-occkick { margin-top: 32px; }
.v3-abouttext .v3-occlist { font-family: 'Georgia'; font-size: 17px; line-height: 1.9; color: #3a3c40; max-width: none; }
.v3-occlist i { font-style: normal; color: #b8babd; padding: 0 2px; }
.v3-film { position: relative; background: #000; }
.v3-filmin { position: relative; display: block; height: 72vh; min-height: 480px; max-height: 760px; overflow: hidden; }
.v3-filmin img { width: 100%; height: 100%; object-fit: cover; display: block; filter: brightness(.78); transition: transform 2s cubic-bezier(.2,.7,.2,1), filter .8s; }
.v3-filmin:hover img { transform: scale(1.03); filter: brightness(.88); }
.v3-filmin::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0) 50%, rgba(0,0,0,.6) 100%); pointer-events: none; }
.v3-filmtxt { position: absolute; left: 0; right: 0; bottom: 56px; z-index: 1; display: flex; flex-direction: column; align-items: center; text-align: center; color: #fff; }
.v3-filmtxt .v3-kicker { color: rgba(255,255,255,.7); margin-bottom: 12px; }
.v3-filmtxt .t { font-family: 'Georgia'; font-size: clamp(26px, 2.6vw, 38px); line-height: 1.15; }
.v3-filmin .v3-vplay { right: auto; bottom: auto; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 76px; height: 76px; font-size: 16px; }
.v3-filmin:hover .v3-vplay { transform: translate(-50%, -50%) scale(1.06); background: #fff; color: #000; }
.v3-blocks { padding: 104px 0 96px; border-top: 1px solid var(--rule); }
.v3-blocksgrid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 96px; align-items: start; }
.v3-blocksgrid.noplan { grid-template-columns: 1fr; }
.v3-planstick { position: sticky; top: 96px; }
.v3-plan { width: 100%; height: auto; display: block; }
.v3-plan .plot { fill: #f4f4f5; }
.v3-plan .green { fill: #e9ebe6; }
.v3-plan .road { fill: #ececed; }
.v3-plan .ramp { fill: #e6e6e8; }
.v3-plan .water { fill: #d9dde3; }
.v3-plan .wall { stroke: #111214; stroke-width: 3; }
.v3-plan .block polygon { fill: #cfd1d6; stroke: #fff; stroke-width: 2; transition: fill .45s ease; }
.v3-plan .block.avail polygon { fill: #111214; }
.v3-plan .block.on polygon { fill: #6b6e73; }
.v3-plan .block.avail.on polygon { fill: #000; }
.v3-plan .block text { font-family: 'Gotham-m'; font-size: 24px; letter-spacing: .12em; fill: #111214; text-anchor: middle; dominant-baseline: middle; pointer-events: none; }
.v3-plan .block.avail text, .v3-plan .block.on text { fill: #fff; }
.v3-plan .block { cursor: pointer; }
.v3-plan .pin circle { fill: #fff; stroke: #111214; stroke-width: 3; }
.v3-plan .pin text, .v3-plan .gate text, .v3-plan .road-label, .v3-plan .north text { font-family: 'Gotham-m'; font-size: 17px; letter-spacing: .14em; text-transform: uppercase; fill: #6b6e73; }
.v3-plan .gate line, .v3-plan .north line { stroke: #111214; stroke-width: 3; }
.v3-plan .north polygon { fill: #111214; }
.v3-plannote { font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .06em; color: var(--muted); margin: 14px 0 0; }
.v3-blocklist { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--rule); }
.v3-block { padding: 34px 0; border-bottom: 1px solid var(--rule); transition: opacity .4s; }
.v3-blockhead { display: flex; justify-content: space-between; align-items: baseline; gap: 24px; margin-bottom: 8px; }
.v3-blockname { font-family: 'Georgia'; font-size: clamp(21px, 1.8vw, 26px); line-height: 1.2; color: var(--ink); }
.v3-blockwho { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); white-space: nowrap; }
.v3-block.avail .v3-blockwho { color: var(--ink); }
.v3-blockarea { font-family: 'Gotham-m'; font-size: 13px; letter-spacing: .04em; color: var(--ink); margin: 0 0 14px; }
.v3-blocktext { font-family: 'Gotham-l'; font-size: 16px; line-height: 1.65; color: #3a3c40; margin: 0; max-width: 60ch; }
.v3-block .lnk { margin-top: 18px; }
.v3-blocksgrid.noplan .v3-blocklist { display: grid; grid-template-columns: 1fr 1fr; gap: 0 64px; border-top: 0; }
.v3-blocksgrid.noplan .v3-block { padding: 0 0 40px; border-bottom: 0; }
.v3-blockimg { width: 100%; aspect-ratio: 16/10; object-fit: cover; display: block; margin-bottom: 26px; }
.v3-specs { padding: 96px 0; border-top: 1px solid var(--rule); }
.v3-loc { padding: 96px 0; border-top: 1px solid var(--rule); }
.v3-locgrid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: 72px; align-items: start; }
.v3-mapwrap { position: relative; }
.v3-map { position: relative; aspect-ratio: 4/3; background: #f1f1f2; overflow: hidden; }
.v3-map .maplibregl-canvas-container canvas, .v3-map canvas { filter: grayscale(1) contrast(1.02); }
.v3-map .maplibregl-ctrl-attrib { display: none; }
.v3-map .maplibregl-ctrl-bottom-right { display: none; }
.v3-mk { position: relative; width: 12px; height: 12px; border-radius: 50%; background: #111214; border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(0,0,0,.15); cursor: default; }
.v3-mk span { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); white-space: nowrap; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .04em; color: #111214; background: rgba(255,255,255,.88); padding: 4px 8px; }
.v3-mk span i { font-style: normal; color: #6b6e73; margin-left: 6px; }
.v3-mk.home { width: 22px; height: 22px; background: #fff; border: 1px solid #111214; }
.v3-mk.home::after { content: ''; position: absolute; left: 50%; top: 50%; width: 8px; height: 8px; margin: -4px 0 0 -4px; border-radius: 50%; background: #111214; }
.v3-mk.home span { left: 28px; font-family: 'Georgia'; font-size: 15px; letter-spacing: 0; text-transform: none; }
.v3-mk.hide { display: none; }
.v3-mapfall { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; text-align: center; padding: 24px; font-family: 'Gotham-l'; font-size: 14px; color: var(--muted); }
.v3-map.ready .v3-mapfall { display: none; }
.v3-maptoggles { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.v3-maptoggles button { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); background: none; border: 1px solid var(--rule); border-radius: 0; padding: 10px 14px; cursor: pointer; transition: color .3s, border-color .3s, background .3s; }
.v3-maptoggles button.on { color: #fff; background: var(--ink); border-color: var(--ink); }
.v3-maptoggles button:focus { outline: 0; }
.v3-mapnote { font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .03em; color: var(--muted); margin: 14px 0 0; }
.v3-travel .v3-kicker { margin-bottom: 8px; }
.v3-travelled { margin: 0 0 28px; }
.v3-travelled > div { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--rule-soft); }
.v3-travelled dt { font-family: 'Gotham-m'; font-size: 13px; letter-spacing: .03em; color: var(--ink); margin: 0; }
.v3-travelled dd { font-family: 'Gotham-l'; font-size: 14px; line-height: 1.5; color: #3a3c40; margin: 0; }
.v3-address { font-family: 'Gotham-l'; font-size: 14px; line-height: 1.6; color: var(--muted); margin: 0 0 20px; }
.v3-gallery { padding: 96px 0 88px; border-top: 1px solid var(--rule); overflow: hidden; }
.v3-gallery .v3-head { margin-bottom: 44px; }
.v3-strip { display: flex; gap: 20px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding: 0 max(15px, calc((100% - 1280px) / 2 + 15px)); scroll-padding: 0 max(15px, calc((100% - 1280px) / 2 + 15px)); }   /* the first photo, and each one the arrows bring in, rests on the same line as the page's text (the 1280px container), never at the screen edge */
.v3-strip::-webkit-scrollbar { display: none; }
.v3-shot { flex: 0 0 auto; width: min(640px, 72vw); scroll-snap-align: start; display: block; color: var(--ink); }
.v3-shot:hover { color: var(--ink); }
.v3-shot img { width: 100%; aspect-ratio: 3/2; object-fit: cover; display: block; background: #eee; }
.v3-shot span { display: block; margin-top: 14px; font-family: 'Gotham-l'; font-size: 13px; letter-spacing: .04em; color: var(--muted); }
.v3-stripnav { color: var(--ink); margin-top: 36px; }
.v3-stripnav .v3-count { color: var(--muted); }
.v3-stripnav .v3-count b { color: var(--ink); }
.v3-stripnav .v3-nb { border-color: var(--rule); color: var(--ink); }
.v3-stripnav .v3-nb:hover { background: var(--ink); color: #fff; border-color: var(--ink); }
.v3-enquire { padding: 104px 0; }
.v3-enquire .v3-unitacts { margin-top: 40px; }
@media (max-width: 1199px) { .v3-strip { padding: 0 calc((100% - 960px) / 2 + 15px); scroll-padding: 0 calc((100% - 960px) / 2 + 15px); } }
@media (max-width: 991px) {
  .v3-avail { padding: 80px 0 72px; }
  .v3-availgrid { grid-template-columns: 1fr; gap: 36px; }
  .v3-availphoto { position: relative; top: 0; aspect-ratio: 4/3; }
  .v3-about, .v3-blocks, .v3-specs, .v3-loc, .v3-gallery, .v3-enquire { padding: 80px 0 72px; }
  .v3-aboutgrid { grid-template-columns: 1fr; gap: 40px; }
  .v3-blocksgrid { grid-template-columns: 1fr; gap: 40px; }
  .v3-planstick { position: relative; top: 0; max-width: 520px; margin: 0 auto; }
  .v3-blocksgrid.noplan .v3-blocklist { grid-template-columns: 1fr; }
  .v3-locgrid { grid-template-columns: 1fr; gap: 40px; }
  .v3-strip { padding: 0 calc((100% - 720px) / 2 + 15px); scroll-padding: 0 calc((100% - 720px) / 2 + 15px); }
  .v3-filmin { height: 60vh; min-height: 380px; }
}
@media (max-width: 767px) {
  .v3-strip { padding: 0 15px; gap: 12px; }
  .v3-shot { width: 84vw; }
  .v3-blockhead { flex-direction: column; align-items: flex-start; gap: 6px; }
  .v3-filmin { height: 56vh; min-height: 340px; }
  .v3-filmin .v3-vplay { width: 60px; height: 60px; font-size: 13px; }
  .v3-plan .block text { font-size: 30px; }
  .v3-plan .pin text, .v3-plan .gate text, .v3-plan .road-label { font-size: 22px; }
}

/* ---------- 16. The request sheet ---------- */
.v3-sheetwrap { position: fixed; inset: 0; z-index: 1200; visibility: hidden; }
.v3-sheetwrap.open { visibility: visible; }
.v3-sheetbg { position: absolute; inset: 0; background: rgba(0,0,0,.5); opacity: 0; transition: opacity .5s ease; }
.v3-sheetwrap.open .v3-sheetbg { opacity: 1; }
.v3-sheet { position: absolute; top: 0; right: 0; bottom: 0; width: min(560px, 100%); background: #fff; overflow-y: auto; transform: translateX(100%); transition: transform .6s cubic-bezier(.7,0,.2,1); -webkit-overflow-scrolling: touch; }
.v3-sheetwrap.open .v3-sheet { transform: none; }
.v3-sheetx { position: absolute; right: 24px; top: 24px; width: 44px; height: 44px; border-radius: 50%; border: 1px solid transparent; background: none; color: var(--ink); display: flex; align-items: center; justify-content: center; cursor: pointer; transition: border-color .3s; z-index: 1; }
.v3-sheetx svg { width: 18px; height: 18px; }
.v3-sheetx:hover { border-color: var(--rule); }
.v3-sheetx:focus { outline: 0; }
.v3-sheetin { padding: 64px 56px 48px; }
.v3-sheetin .v3-h3 { margin-bottom: 10px; }
.v3-sheetsub { font-family: 'Gotham-l'; font-size: 15px; line-height: 1.6; color: var(--muted); margin: 0 0 32px; }
.v3-form { position: relative; }
.v3-formgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 24px; }
.v3-f { display: flex; flex-direction: column; gap: 6px; margin: 0 0 22px; }
.v3-f > span { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.v3-f input, .v3-f textarea { width: 100%; background: none; border: 0; border-bottom: 1px solid var(--rule); border-radius: 0; padding: 8px 0; font-family: 'Gotham'; font-size: 16px; color: var(--ink); outline: 0; transition: border-color .3s; resize: vertical; }
.v3-f input:focus, .v3-f textarea:focus { border-bottom-color: var(--ink); }
.v3-f input::placeholder, .v3-f textarea::placeholder { color: #b0b2b6; }
.v3-f input.error, .v3-f textarea.error { border-bottom-color: #b4231f; }
.v3-form label.error { font-family: 'Gotham-l'; font-size: 12px; color: #b4231f; margin: -16px 0 16px; display: block; }
.v3-f select { width: 100%; background: none; border: 0; border-bottom: 1px solid var(--rule); border-radius: 0; padding: 8px 22px 8px 0; font-family: 'Gotham'; font-size: 16px; color: var(--ink); outline: 0; -webkit-appearance: none; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23111214' stroke-width='1.2'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 2px center; cursor: pointer; transition: border-color .3s; }
.v3-f select:focus { border-bottom-color: var(--ink); }
.v3-check { display: flex; flex-wrap: wrap; gap: 8px 22px; padding: 6px 0 2px; }
.v3-check label { position: relative; display: inline-flex; align-items: center; gap: 10px; margin: 0; cursor: pointer; font-family: 'Gotham'; font-size: 14px; color: var(--ink); }
.v3-check input { position: absolute; opacity: 0; width: 0; height: 0; }
.v3-check i { width: 16px; height: 16px; border: 1px solid var(--ink); flex: 0 0 auto; position: relative; transition: background .25s; }
.v3-check i::after { content: ''; position: absolute; left: 4px; top: 1px; width: 5px; height: 9px; border: solid #fff; border-width: 0 1.2px 1.2px 0; transform: rotate(45deg) scale(0); transition: transform .25s; }
.v3-check input:checked ~ i { background: var(--ink); }
.v3-check input:checked ~ i::after { transform: rotate(45deg) scale(1); }
.v3-fgroup { display: none; }
.v3-fgroup.on { display: block; }
.v3-times > span { margin-bottom: 10px; }
.v3-radio { display: flex; flex-wrap: wrap; gap: 8px; }
.v3-radio label { position: relative; margin: 0; cursor: pointer; font-family: 'Gotham'; font-size: 13px; color: var(--ink); border: 1px solid var(--rule); padding: 9px 12px; transition: background .3s, color .3s, border-color .3s; }
.v3-radio input { position: absolute; opacity: 0; width: 0; height: 0; }
.v3-radio label:has(input:checked) { background: var(--ink); color: #fff; border-color: var(--ink); }
.v3-fsend { display: flex; align-items: center; gap: 24px; margin-top: 10px; }
.v3-fnote { font-family: 'Gotham-l'; font-size: 12px; line-height: 1.5; color: var(--muted); margin: 0; }
.v3-sheetfoot { margin-top: 40px; padding-top: 24px; border-top: 1px solid var(--rule); }
.v3-sheetfoot p { font-family: 'Gotham-l'; font-size: 14px; color: var(--muted); margin: 0 0 6px; }
.v3-sheetfoot a { color: var(--ink); }
body.v3-sheetopen { overflow: hidden; }
.ui-datepicker { font-family: 'Gotham'; font-size: 13px; border-radius: 0; border: 1px solid var(--rule); background: #fff; z-index: 1300 !important; }
.ui-datepicker .ui-datepicker-header { background: none; border: 0; border-radius: 0; }
.ui-datepicker .ui-state-default { background: none; border: 0; text-align: center; color: var(--ink); }
.ui-datepicker .ui-state-active, .ui-datepicker .ui-state-hover { background: var(--ink); color: #fff; }
@media (max-width: 767px) {
  .v3-sheetin { padding: 72px 24px 40px; }
  .v3-formgrid { grid-template-columns: 1fr; gap: 0; }
  .v3-fsend { flex-direction: column; align-items: flex-start; gap: 14px; }
}

/* 13.7 Map labels and the place field (Google) */
.cp-glabel { position: absolute; transform: translateY(-50%); font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--ink); background: rgba(255,255,255,.92); padding: 6px 9px; white-space: nowrap; pointer-events: none; line-height: 1.2; }
.cp-glabel b { font-weight: normal; display: block; }
.cp-glabel small { display: block; font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .08em; text-transform: none; color: var(--muted); margin-top: 2px; }
.cp-glabel.minor { padding: 4px 7px; background: rgba(255,255,255,.85); }
.cp-glabel.minor small { margin: 0; color: var(--ink); }
.cp-glabel.light { background: rgba(255,255,255,.94); }
.cp-from gmp-place-autocomplete { display: block; width: 100%; --gmpx-color-surface: transparent; --gmpx-color-on-surface: #111214; --gmpx-font-family-base: 'Gotham', Helvetica, Arial, sans-serif; border-bottom: 1px solid var(--ink); }
.cp-from gmp-place-autocomplete::part(input), .cp-from gmp-place-autocomplete input { border: 0 !important; background: none !important; font-family: 'Gotham' !important; font-size: 16px !important; color: var(--ink) !important; padding: 10px 36px 10px 0 !important; box-shadow: none !important; }
.cp-locate.busy { animation: cpPulse 1s ease-in-out infinite; }
.cp-time .tm .dots { color: var(--muted); }
.cp-std.nomodel .cp-stage { display: none; }
.cp-std.nomodel .cp-tour { grid-template-columns: 1fr; }

/* 13.8 Map marks (HTML overlays) and the list */
.cp-pinhtml { position: absolute; display: flex; align-items: center; gap: 8px; pointer-events: auto; white-space: nowrap; transform: translate(-50%, -50%); }
.cp-pinhtml .sq { width: 36px; height: 36px; background: #fff; border: 1px solid rgba(17,18,20,.3); display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 10px rgba(0,0,0,.18); flex: 0 0 auto; transition: transform .25s, box-shadow .25s; }
.cp-pinhtml .sq img { width: 22px; height: 22px; display: block; }
.cp-pinhtml.campus:hover .sq, .cp-pinhtml.active .sq { transform: scale(1.15); box-shadow: 0 4px 16px rgba(0,0,0,.3); border-color: var(--ink); }
.cp-pinhtml.soon .sq { background: var(--ink); border-color: var(--ink); }
.cp-pinhtml .dot { width: 10px; height: 10px; border-radius: 50%; background: #fff; border: 2px solid var(--ink); flex: 0 0 auto; }
.cp-pinhtml .lb { display: block; line-height: 1.15; background: rgba(255,255,255,.92); padding: 4px 7px; }
.cp-pinhtml .lb b { display: block; font-family: 'Gotham-m'; font-weight: normal; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink); }
.cp-pinhtml .lb small { display: block; font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .08em; color: var(--muted); margin-top: 2px; }
.cp-pinhtml.minor { transform: translate(-5px, -50%); }
.cp-pinhtml.minor .dot { width: 9px; height: 9px; border-width: 1.5px; border-color: var(--muted); }
.cp-pinhtml.metro .dot { border-radius: 1px; transform: rotate(45deg); background: #c9a227; border-color: #c9a227; }
.cp-pinhtml.airport .dot { background: #4a6b78; border-color: #4a6b78; width: 11px; height: 11px; }
.cp-pinhtml.minor .lb { background: rgba(255,255,255,.8); padding: 2px 5px; }
.cp-pinhtml.minor .lb b { font-size: 12px; letter-spacing: .1em; color: var(--muted); }
.cp-pinhtml.origin { transform: translate(-7px, -50%); }
.cp-pinhtml.origin .dot { width: 14px; height: 14px; background: #253C7B; border: 3px solid #fff; box-shadow: 0 0 0 1.5px #253C7B; }
.cp-pinhtml.origin .lb { background: #253C7B; } .cp-pinhtml.origin .lb b { color: #fff; }
.cp-pinhtml.site .sq { width: 56px; height: 56px; background: transparent; border: 0; box-shadow: none; }
.cp-pinhtml.site .sq img { width: 40px; height: 40px; }
.cp-gmap.sat .cp-pinhtml .lb { background: rgba(0,0,0,.6); } .cp-gmap.sat .cp-pinhtml .lb b, .cp-gmap.sat .cp-pinhtml .lb small { color: #fff; }
.cp-time { grid-template-columns: 16px 26px minmax(0, 1fr) auto; gap: 12px; }
.cp-time .sym { width: 22px; height: 22px; display: block; }
.cp-time.on .nm { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }
.cp-time.off .sym, .cp-time.off .nm, .cp-time.off .sec, .cp-time.off .tm { opacity: .35; }
.cp-eye { width: 14px; height: 14px; border: 1px solid var(--ink); background: #fff; padding: 0; cursor: pointer; position: relative; }
.cp-eye.on { background: var(--ink); }
.cp-eye.on::after { content: ''; position: absolute; left: 4px; top: 1px; width: 3px; height: 7px; border: solid #fff; border-width: 0 1.5px 1.5px 0; transform: rotate(45deg); }
.cp-sep { width: 1px; height: 22px; background: var(--rule); margin: 0 4px; align-self: center; }
.cp-chip.locate { border-color: var(--ink); color: var(--ink); }
.cp-chip.busy { opacity: .5; }
.cp-tpcap i { display: inline-block; width: 10px; height: 10px; background: #253C7B; border: 1px solid #fff; vertical-align: -1px; margin-right: 8px; }
.cp-from gmp-place-autocomplete { --gmp-mat-color-primary: #111214; --gmp-mat-color-on-surface: #111214; --gmp-mat-color-surface: #fff; }
/* full-bleed strips: measured from the page edges, so a scrollbar never pushes them past the right edge */
.cp-wall, .cp-mapwrap, .cp-tpmap, .cp-studio { width: auto; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
.cp-tpmap .cp-gmap, .cp-tpmap .cp-mapfall { position: absolute; inset: 0; min-height: 0; height: auto; grid-column: auto; grid-row: auto; }

/* map markers shared by the Campuses page and the campus pages: one colour and glyph per kind */
.c-metro { --c: #b38b14; } .c-airport { --c: #2f6f9f; } .c-road { --c: #5a5f66; } .c-hotel { --c: #7c3d6b; }
.c-health { --c: #c9302c; } .c-retail { --c: #cf6a17; } .c-park { --c: #3b8650; } .c-civic { --c: #283c70; }
/* markers: a coloured disc with a white glyph, and a label that steps aside when it would collide */
.cp-pinhtml.cxp { gap: 6px; transform: translate(-12px, -50%); cursor: pointer; z-index: 2; }
.cp-pinhtml.cxp.left { flex-direction: row-reverse; transform: translate(calc(-100% + 12px), -50%); }
.cp-pinhtml.cxp.up { flex-direction: column-reverse; gap: 4px; transform: translate(-50%, calc(-100% + 12px)); }
.cp-pinhtml.cxp.down { flex-direction: column; gap: 4px; transform: translate(-50%, -12px); }
.cp-pinhtml.cxp .mk { width: 24px; height: 24px; border-radius: 50%; background: var(--c); border: 2px solid #fff; box-shadow: 0 1px 5px rgba(0,0,0,.3); display: flex; align-items: center; justify-content: center; flex: 0 0 auto; transition: transform .2s, box-shadow .2s; }
.cp-pinhtml.cxp .mk svg { width: 13px; height: 13px; display: block; fill: #fff; stroke: #fff; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.cp-pinhtml.cxp .lb { background: rgba(255,255,255,.96); padding: 4px 8px 5px 7px; border-left: 2px solid var(--c); box-shadow: 0 1px 4px rgba(0,0,0,.1); }
.cp-pinhtml.cxp .lb b { font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .01em; text-transform: none; color: var(--ink); line-height: 1.25; }
.cp-pinhtml.cxp .lb small { font-family: 'Gotham-l'; font-size: 12px; letter-spacing: .01em; color: var(--muted); margin-top: 1px; line-height: 1.25; }
.cp-pinhtml.cxp.nolb .lb { display: none; }
.cp-pinhtml.cxp:hover, .cp-pinhtml.cxp:focus-visible, .cp-pinhtml.cxp.peek, .cp-pinhtml.cxp.hl { z-index: 20; outline: none; }
.cp-pinhtml.cxp.nolb:hover .lb, .cp-pinhtml.cxp.nolb:focus-visible .lb, .cp-pinhtml.cxp.peek .lb, .cp-pinhtml.cxp.hl .lb { display: block; }
.cp-pinhtml.cxp:hover .mk, .cp-pinhtml.cxp.peek .mk, .cp-pinhtml.cxp.hl .mk { transform: scale(1.18); box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--c), 0 2px 8px rgba(0,0,0,.3); }
/* Campuses page map: a campus is its symbol, with its name beside it once chosen or hovered; nothing below 12px */
.cp-gmap .cp-pinhtml.campus { transform: translate(-18px, -50%); z-index: 3; cursor: pointer; }
.cp-gmap .cp-pinhtml.campus .lb { display: none; box-shadow: 0 1px 4px rgba(0,0,0,.12); }
.cp-gmap .cp-pinhtml.campus:hover .lb, .cp-gmap .cp-pinhtml.campus.active .lb { display: block; }
.cp-gmap .cp-pinhtml.campus:hover, .cp-gmap .cp-pinhtml.campus.active { z-index: 25; }
.cp-gmap .cp-pinhtml .lb b { font-size: 12px; letter-spacing: .12em; }
.cp-gmap .cp-pinhtml .lb small { font-size: 12px; letter-spacing: .04em; }
.cp-all { position: absolute; top: 20px; right: 20px; z-index: 4; font-family: 'Gotham-m'; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink); background: #fff; border: 1px solid var(--ink); padding: 10px 16px; cursor: pointer; box-shadow: 0 2px 10px rgba(0,0,0,.12); transition: background .25s, color .25s; }
.cp-all:hover { background: var(--ink); color: #fff; }
.cp-all[hidden] { display: none; }

/* phones and tablets: the hero banner overlapped the screen by 3px on each side, which let the page slide sideways */
@media (max-width: 991px) { .banner { margin: -3px 0; } }

/* grounds are black or white only: the old stylesheet's warm off-white showed through wherever a section had no background of its own */
body { background: #fff; }

/* ---------- Split hero (Media, Contact): the words on black beside a photograph, never the full screen ---------- */
/* the header sits solid on these pages, so it never lies grey across the photograph */
body:has(.v3-split) nav.header { background: #000; }
.v3-split { position: relative; display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); min-height: min(76vh, 720px); background: #000; color: #fff; }
.v3-splitimg { position: relative; order: 2; overflow: hidden; }
.v3-splitimg img, .v3-splitimg video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.v3-splittext { order: 1; display: flex; align-items: flex-end; }
/* the words start exactly where the page's container starts, at every width: the text column is 5/11 of the
   hero, so 220% of it is the hero's full width (and, unlike 100vw, never counts a scrollbar) */
.v3-splitin { width: 100%; padding: 140px clamp(32px, 4vw, 64px) 72px max(15px, calc((220% - 1280px) / 2 + 15px)); }
.v3-splitin > * { max-width: 520px; }
@media (max-width: 1199px) { .v3-splitin { padding-left: calc((220% - 960px) / 2 + 15px); } }
.v3-splitin .v3-kicker { color: rgba(255,255,255,.62); margin-bottom: 20px; }
.v3-splitin h1 { font-family: 'Gotham-m' !important; font-weight: normal; font-size: clamp(38px, 4vw, 55px); line-height: 1.08; color: #fff; margin: 0; }
.v3-splitin .v3-sub { color: rgba(255,255,255,.72); margin-top: 18px; max-width: 40ch; }
@media (max-width: 991px) {
  .v3-split { grid-template-columns: 1fr; min-height: 0; }
  .v3-splitimg { order: 1; height: 58vh; min-height: 360px; max-height: 560px; margin-top: 66px; }
  .v3-splittext { order: 2; }
  .v3-splitin { padding: 44px calc((100% - 720px) / 2 + 15px) 56px; }
  .v3-splitin > * { max-width: 560px; }
}
@media (max-width: 767px) {
  .v3-splitin { padding: 40px calc((100% - 540px) / 2 + 30px) 52px; }
}
@media (max-width: 575px) {
  .v3-splitin { padding: 36px 30px 48px; }
  .v3-splitin > * { max-width: none; }
}

/* office hours under the phone number; outside them (India time, rsp.js) a note offers a call back */
.v3-hours { display: block; font-family: 'Gotham'; font-size: 13px; line-height: 1.55; letter-spacing: .01em; text-transform: none; }
.v3-hours .v3-closed { display: block; }
.v3-hours .v3-closed[hidden] { display: none !important; }
.v3-hours a { color: inherit; text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; white-space: nowrap; }
.v3-fcol li .v3-fhours { margin-top: 4px; color: rgba(255,255,255,.5); }
.v3-fcol li .v3-fhours a { display: inline; padding: 0; font-size: inherit; color: #fff; }

/* a form on its way: a turning ring and "Sending" in the button (rsp.js rspSending) */
.is-sending, .is-sending:hover, .is-sending:focus, .is-sending[disabled] { background: var(--ink) !important; border-color: var(--ink) !important; color: #fff !important; cursor: progress; opacity: 1 !important; justify-content: center; gap: 12px; }
.v3-spin { display: inline-block; flex: 0 0 auto; width: 15px; height: 15px; border: 2px solid rgba(255,255,255,.28); border-top-color: #fff; border-radius: 50%; animation: v3spin .75s linear infinite; }
@keyframes v3spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .v3-spin { animation-duration: 2s; } }
.v3-wait { font-family: 'Gotham'; font-size: 14px; line-height: 1.5; color: var(--muted); margin: 14px 0 0; }

/* a form that could not be sent says so beside its button (custom.js rspFormError) */
.v3-err { color: #b4231f; font-family: 'Gotham'; font-size: 14px; line-height: 1.5; margin: 14px 0 0; }
