/* ─────────────────────────────────────────────────────────────
   Larco Capital — Architectural Property, Lima
   Palette: limestone ground, ink, one ultramarine accent.
   The blue is held back for actions, focus and the measured plan.
   ───────────────────────────────────────────────────────────── */

:root{
  --ink:      #12151a;
  --ink-soft: #1c212a;
  --ink-line: #2b3038;
  /* the light surfaces are white; the old limestone survives only where a
     dark panel needs a warm off-white text colour (the footer) */
  --ground:   #ffffff;
  --paper:    #ffffff;
  --limestone:#efefea;
  --fog:      #7b7f7a;
  --fog-dark: #9aa09b;
  --blue:     #1f3bd8;
  --blue-lit: #6f86ff;

  /* One family, three roles. Weight, size and tracking do the work that
     three different typefaces used to do. */
  --sans:    'Jost', 'Futura', 'Avenir Next', 'Helvetica Neue', Arial, sans-serif;
  --display: var(--sans);
  --serif:   var(--sans);
  --body:    var(--sans);
  --label:   var(--sans);

  --barh: 106px;   /* the two header rows; the layout reserves it */
  --wrap: 1440px;
  --gut: clamp(20px, 4.2vw, 68px);
  --rule: 1px solid color-mix(in srgb, var(--ink) 16%, transparent);
  --rule-dark: 1px solid color-mix(in srgb, #fff 14%, transparent);
  --ease: cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after{ box-sizing:border-box; }
[hidden]{ display:none !important; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--ground);
  color:var(--ink);
  font-family:var(--body);
  font-size:clamp(15.5px,.55vw + 13.9px,17.5px);
  font-weight:400;
  line-height:1.62;
  letter-spacing:.002em;
  -webkit-font-smoothing:antialiased;
}
img{ display:block; max-width:100%; }
a{ color:inherit; }
button,input,select,textarea{ font:inherit; color:inherit; }

:focus-visible{ outline:2px solid var(--blue); outline-offset:3px; }
.dark :focus-visible, .hero :focus-visible{ outline-color:var(--blue-lit); }

.sr-only{
  position:absolute; width:1px; height:1px; margin:-1px; padding:0;
  overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0;
}

.skip{
  position:absolute; left:-9999px; top:0; z-index:99;
  background:var(--ink); color:var(--paper); padding:12px 18px;
  font-family:var(--label); font-size:12px;
}
.skip:focus{ left:12px; top:12px; }

.wrap{ width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:var(--gut); }
section[id]{ scroll-margin-top:calc(var(--barh) + 10px); }

/* ── Type roles ───────────────────────────────────────────────── */
.display{
  font-family:var(--display);
  font-weight:400;
  line-height:1.08;
  letter-spacing:-.014em;
  margin:0;
  text-wrap:balance;
}
.h2{ font-size:clamp(32px,4.4vw,58px); line-height:1.1; }
.eyebrow{
  font-family:var(--label); font-size:11.5px; font-weight:500;
  letter-spacing:.2em; text-transform:uppercase;
  color:var(--fog); margin:0 0 18px;
  display:flex; align-items:center; gap:9px;
}
.dark .eyebrow, .hero .eyebrow{ color:var(--fog-dark); }
.eyebrow .dot{
  width:6px; height:6px; background:var(--blue-lit); border-radius:50%;
  box-shadow:0 0 0 4px color-mix(in srgb,var(--blue-lit) 22%,transparent);
}
.lede{
  font-family:var(--body); font-weight:300;
  font-size:clamp(21px,2vw,30px); line-height:1.42; letter-spacing:-.008em; margin:0;
}
.lede em{ font-style:italic; font-weight:400; color:var(--blue); }
.para{ max-width:46ch; color:color-mix(in srgb,var(--ink) 72%,transparent); margin:18px 0 0; }
.dark .para{ color:#b9bfba; }

/* ── Buttons ──────────────────────────────────────────────────── */
.btn{
  --bg:transparent; --fg:currentColor; --bd:currentColor;
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  font-family:var(--label); font-size:16px; font-weight:500; letter-spacing:.06em; text-transform:uppercase;
  padding:14px 26px; border:1px solid var(--bd); background:var(--bg); color:var(--fg);
  text-decoration:none; cursor:pointer; border-radius:0;
  transition:background .35s var(--ease), color .35s var(--ease), border-color .35s var(--ease);
}
.btn-solid{ --bg:var(--blue); --fg:#fff; --bd:var(--blue); }
.btn-solid:hover{ --bg:transparent; --fg:var(--blue); }
.dark .btn-solid:hover, .hero .btn-solid:hover{ --fg:var(--blue-lit); --bd:var(--blue-lit); }
.btn-ghost{ --bd:color-mix(in srgb,currentColor 35%,transparent); }
.btn-header{ margin-left:auto; --bg:var(--ink); --fg:var(--paper); --bd:var(--ink); padding:11px 24px; }
.btn-header:hover{ --bg:var(--blue); --fg:#fff; --bd:var(--blue); }
.btn-ghost:hover{ --bg:var(--ink); --fg:var(--paper); --bd:var(--ink); }
.btn-full{ width:100%; }

/* ── Top bar ──────────────────────────────────────────────────── */
/* White, always: it sits above the page rather than over the photograph. */
.topbar{
  position:sticky; top:0; z-index:50;
  background:#fff; color:var(--ink);
  border-bottom:var(--rule);
  transition:box-shadow .4s var(--ease);
}
.topbar.is-stuck{ box-shadow:0 10px 30px rgba(12,16,22,.07); }
.topbar-in{
  max-width:var(--wrap); margin-inline:auto; padding-inline:var(--gut);
  display:flex; align-items:center; gap:28px;
}
.topbar-util{ border-bottom:var(--rule); }
.topbar-util .topbar-in{ padding-block:8px; }
.topbar-main .topbar-in{ padding-block:8px; }
.util{ margin-left:auto; display:flex; align-items:center; gap:22px; }
.brand{ display:flex; align-items:center; gap:13px; text-decoration:none; }
.brand-mark{ width:30px; height:30px; align-self:center; color:var(--blue); flex:none; }
.brand-word{
  font-family:var(--display); font-weight:500;
  font-size:clamp(24px,2vw,30px); letter-spacing:.16em; text-transform:uppercase;
  line-height:1;
}
.nav{ display:flex; gap:34px; }
.nav a{
  font-family:var(--label); font-size:16px; font-weight:500; letter-spacing:.05em; text-transform:uppercase;
  text-decoration:none; opacity:.78; position:relative; padding-block:4px;
}
.nav a::after{
  content:""; position:absolute; left:0; bottom:0; width:100%; height:1px;
  background:currentColor; transform:scaleX(0); transform-origin:left;
  transition:transform .4s var(--ease);
}
.nav a:hover{ opacity:1; }
.nav a:hover::after{ transform:scaleX(1); }

/* ── Location button ──────────────────────────────────────────── */
.locbtn{
  display:inline-flex; align-items:center; gap:7px; text-decoration:none; padding:6px 0;
  font-family:var(--label); font-size:16px; font-weight:500;
  letter-spacing:.05em; text-transform:uppercase; white-space:nowrap;
  opacity:.85; transition:opacity .3s var(--ease), color .3s var(--ease);
}
.locbtn svg{ width:19px; height:19px; flex:none; }
.locbtn:hover{ opacity:1; color:var(--blue); }
.locbtn.is-current{ opacity:1; }

/* ── Language dropdown ───────────────────────────────────────── */
.lang{ position:relative; }
.lang-toggle{
  display:inline-flex; align-items:center; gap:7px; padding:6px 2px;
  background:none; border:0; cursor:pointer; color:inherit;
  font-family:var(--label); font-size:16px; font-weight:500;
  letter-spacing:.05em; text-transform:uppercase;
  opacity:.85; transition:opacity .3s var(--ease);
}
.lang-toggle:hover{ opacity:1; }
.lang-toggle > svg:first-child{ width:19px; height:19px; flex:none; }
.lang-caret{ width:15px; height:15px; flex:none; transition:transform .3s var(--ease); }
.lang-toggle[aria-expanded="true"] .lang-caret{ transform:rotate(180deg); }
.lang-menu{
  position:absolute; top:calc(100% + 10px); right:0; z-index:60;
  margin:0; padding:6px; list-style:none; min-width:192px;
  background:var(--paper); color:var(--ink);
  border:var(--rule); box-shadow:0 18px 44px rgba(10,12,16,.22);
}
.lang-btn{
  display:block; width:100%; text-align:left; padding:10px 12px;
  background:none; border:0; cursor:pointer; color:inherit;
  font-family:var(--label); font-size:16px; letter-spacing:.01em;
  transition:background .2s var(--ease), color .2s var(--ease);
}
.lang-btn:hover{ background:color-mix(in srgb,var(--ink) 7%,transparent); }
.lang-btn.is-on{ color:var(--blue); }
.lang-btn.is-on::after{ content:"·"; margin-left:8px; }

/* ── Hero ─────────────────────────────────────────────────────── */
.hero{
  position:relative; min-height:calc(100svh - var(--barh)); display:flex; align-items:flex-end;
  background:var(--ink); color:var(--paper); overflow:hidden; isolation:isolate;
}
.hero-stage{ position:absolute; inset:0; z-index:-2; }
.slide{
  position:absolute; inset:0; margin:0; opacity:0;
  transition:opacity 1.1s var(--ease);
}
.slide.is-active{ opacity:1; }
.slide img{
  width:100%; height:100%; object-fit:cover;
  transform:scale(1.06); transition:transform 9s linear;
}
.slide.is-active img{ transform:scale(1); }
/* the Huacachina frame is a portrait aerial: hold the oasis in the crop */
.slide-ica img{ object-position:50% 46%; }
.hero-veil{
  position:absolute; inset:0; z-index:-1;
  background:
    linear-gradient(to top, rgba(9,11,14,.92) 0%, rgba(9,11,14,.55) 38%, rgba(9,11,14,.12) 68%, rgba(9,11,14,.45) 100%),
    linear-gradient(to right, rgba(9,11,14,.65), transparent 62%);
}
.hero-place{
  font-family:var(--label); font-size:13px; letter-spacing:.14em; text-transform:uppercase;
  margin:20px 0 0; color:#cfd4cf;
}

.hero-index{
  position:absolute; left:var(--gut); bottom:clamp(34px,4.5vh,52px);
  display:flex; gap:26px; flex-wrap:wrap; z-index:2;
}
.hidx{
  background:none; border:0; padding:8px 0 10px; cursor:pointer;
  font-family:var(--label); font-size:11px; letter-spacing:.12em; text-transform:uppercase;
  color:#c3c8c3; opacity:.6; position:relative; display:flex; gap:9px; align-items:baseline;
  transition:opacity .3s var(--ease), color .3s var(--ease);
}
.hidx em{ font-style:normal; color:var(--blue-lit); }
.hidx::after{
  content:""; position:absolute; left:0; bottom:0; height:1px; width:100%;
  background:currentColor; opacity:.25;
}
.hidx.is-active{ opacity:1; color:#fff; }
.hidx.is-active::after{ background:var(--blue-lit); opacity:1; }
.hidx:hover{ opacity:1; }

/* ── Statement band ───────────────────────────────────────────── */
.band{ background:var(--paper); border-bottom:var(--rule); }
.band-grid{
  padding-block:clamp(56px,7vw,96px);
  display:grid; grid-template-columns:minmax(140px,1fr) minmax(0,3.4fr); gap:clamp(24px,4vw,64px);
}
.band-grid .eyebrow{ margin:6px 0 0; }
.band-stats{
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px;
  margin-top:clamp(34px,4vw,54px); padding-top:26px; border-top:var(--rule);
}
.band-stats b{ display:block; font-size:clamp(34px,3.8vw,54px); font-weight:400; letter-spacing:-.02em; line-height:1.02; font-variant-numeric:tabular-nums; }
.band-stats span{
  display:block; margin-top:8px; font-family:var(--label); font-size:11px;
  letter-spacing:.11em; text-transform:uppercase; color:var(--fog);
}

/* ── About ────────────────────────────────────────────────────── */
.about-grid{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.02fr);
  gap:clamp(34px,5vw,86px); align-items:center;
}
.eyebrow-accent{ color:var(--blue); }
.about .h2{ margin-bottom:26px; }
.about-copy p{ margin:0 0 20px; max-width:54ch; color:color-mix(in srgb,var(--ink) 76%,transparent); }
.about-cta{ margin-top:12px; }
.about-cta svg{ width:19px; height:19px; }
.about-figure{ margin:0; }
.about-figure img{ width:100%; aspect-ratio:4/3; object-fit:cover; }

@media (max-width:1080px){
  .about-grid{ grid-template-columns:1fr; gap:32px; }
  .about-figure{ order:-1; }
  .about-figure img{ aspect-ratio:16/10; }
}

/* ── Section frame ────────────────────────────────────────────── */
.section{ padding-block:clamp(64px,8vw,120px); }
.section.dark{ background:var(--ink); color:var(--paper); }
.sechead{
  display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between;
  gap:28px; padding-bottom:26px; margin-bottom:clamp(28px,3.4vw,48px); border-bottom:var(--rule);
}
.dark .sechead{ border-bottom:var(--rule-dark); }
.sechead-note{
  margin:0; max-width:38ch; font-size:14.5px; color:var(--fog);
}

/* ── Filters ──────────────────────────────────────────────────── */
.filters{ display:flex; flex-wrap:wrap; gap:8px; }
.chip{
  font-family:var(--label); font-size:16px; font-weight:500; letter-spacing:.04em; text-transform:uppercase;
  padding:10px 18px; border:1px solid color-mix(in srgb,var(--ink) 22%,transparent);
  background:transparent; cursor:pointer; color:var(--fog);
  transition:color .3s var(--ease), border-color .3s var(--ease), background .3s var(--ease);
}
.chip:hover{ color:var(--ink); border-color:var(--ink); }
.chip.is-on{ background:var(--ink); border-color:var(--ink); color:var(--paper); }

/* ── Property grid ────────────────────────────────────────────── */
.grid{ display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:clamp(20px,2.4vw,38px) clamp(16px,1.8vw,28px); }
.card{ grid-column:span 2; display:flex; flex-direction:column; }
.card-wide{ grid-column:span 3; }
.card.is-hidden{ display:none; }

.card-img{
  position:relative; display:block; overflow:hidden; background:#c8c8c2;
  aspect-ratio:4/3;
}
.card-wide .card-img{ aspect-ratio:16/10; }
.card-img img{
  width:100%; height:100%; object-fit:cover;
  transition:transform 1.1s var(--ease), filter .6s var(--ease);
}
.card:hover .card-img img{ transform:scale(1.04); }

.card-body{ padding-top:16px; }
.card-line{ display:flex; align-items:baseline; justify-content:space-between; gap:14px; border-bottom:var(--rule); padding-bottom:10px; }
.card-line h3{
  font-family:var(--display); font-weight:400;
  font-size:clamp(19px,1.45vw,24px); letter-spacing:-.012em; line-height:1.2; margin:0;
}
.price{ margin:0; font-family:var(--label); font-weight:400; font-size:14.5px; letter-spacing:.02em;
  font-variant-numeric:tabular-nums; white-space:nowrap; }
.card-place{ margin:11px 0 0; font-size:14px; color:var(--fog); }
.tags{ list-style:none; display:flex; flex-wrap:wrap; gap:6px 8px; margin:12px 0 0; padding:0; }
.tags li{
  font-family:var(--label); font-size:10.5px; letter-spacing:.09em; text-transform:uppercase;
  color:var(--fog); border:1px solid color-mix(in srgb,var(--ink) 14%,transparent); padding:4px 8px;
}
.grid-empty{ margin-top:36px; font-family:var(--label); font-size:13px; color:var(--fog); }


/* ── Ways in: one photograph, panels ruled across it ──────────── */
.split{
  position:relative; display:grid; grid-template-columns:repeat(5,minmax(0,1fr));
  min-height:clamp(340px,54vh,580px); background:var(--ink); overflow:hidden;
}
.split-stage{ position:absolute; inset:0; z-index:0; }
.split-bg{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  opacity:0; filter:brightness(.52) saturate(.9);
  transition:opacity .6s var(--ease);
}
.split-bg.is-on{ opacity:1; }
.split-panel{
  position:relative; z-index:1; display:flex; flex-direction:column;
  align-items:center; justify-content:center; text-decoration:none;
  padding:0 clamp(12px,1.4vw,20px); gap:clamp(14px,2vh,26px);
}
/* one vertical rule, through the middle of the pointed-at panel only,
   running to both edges of the band and opening around the label */
.split-panel::before, .split-panel::after{
  content:""; flex:1 1 auto; width:1px; min-height:10px;
  background:rgba(255,255,255,.85); opacity:0;
  transition:opacity .3s var(--ease);
}
.split-panel:hover::before, .split-panel:hover::after,
.split-panel:focus-visible::before, .split-panel:focus-visible::after{ opacity:1; }
.split-label{
  flex:0 0 auto; text-align:center; color:#fff;
  font-family:var(--display); font-weight:500;
  font-size:clamp(15px,1.45vw,22px); line-height:1.34; letter-spacing:.14em;
  text-transform:uppercase; text-shadow:0 1px 18px rgba(0,0,0,.5);
  transition:color .35s var(--ease), opacity .35s var(--ease);
}
.split:hover .split-panel:not(:hover) .split-label{ opacity:.66; }
.split-panel:hover .split-label, .split-panel:focus-visible .split-label{ color:var(--blue-lit); opacity:1; }
.split-panel:focus-visible{ outline:2px solid var(--blue-lit); outline-offset:-4px; }


/* ── Data table ───────────────────────────────────────────────── */
.table-scroll{ overflow-x:auto; }
.data{ width:100%; border-collapse:collapse; min-width:640px; }
.data th,.data td{ text-align:right; padding:16px 12px; border-bottom:var(--rule); }
.data thead th{
  font-family:var(--label); font-weight:500; font-size:10.5px; letter-spacing:.13em;
  text-transform:uppercase; color:var(--fog); border-bottom:1px solid var(--ink);
}
.data thead th:first-child{ text-align:left; padding-left:0; }
.data tbody th{ text-align:left; font-weight:500; font-size:16px; padding-left:0; }
.data tbody td{ font-family:var(--label); font-size:14px; }
.data tbody tr{ transition:background .3s var(--ease); }
.data tbody tr:hover{ background:color-mix(in srgb,var(--blue) 7%,transparent); }
.data tbody td:last-child{ padding-right:0; color:var(--blue); }

/* ── People ───────────────────────────────────────────────────── */
.people-sec{ background:var(--paper); }
.people{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:clamp(18px,2.2vw,34px); }
.person img{
  width:100%; aspect-ratio:4/5; object-fit:cover;
  filter:grayscale(1) contrast(1.04); transition:filter .6s var(--ease);
}
.person:hover img{ filter:grayscale(0) contrast(1); }
.person h3{
  margin:16px 0 0; font-family:var(--display); font-weight:500;
  font-size:19px; letter-spacing:-.008em; line-height:1.26;
}
.role{ margin:6px 0 0; font-family:var(--label); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--blue); }
.langs{ margin:8px 0 0; font-size:14px; color:var(--fog); }

/* ── Enquire ──────────────────────────────────────────────────── */
.enquire-grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.85fr); gap:clamp(36px,5vw,90px); align-items:start; }
.contact-list{ list-style:none; margin:38px 0 0; padding:0; max-width:380px; }
.contact-list li{ display:flex; justify-content:space-between; gap:20px; padding:13px 0; border-top:var(--rule-dark); }
.contact-list span{ font-family:var(--label); font-size:11px; letter-spacing:.13em; text-transform:uppercase; color:var(--fog-dark); }
.contact-list a{ text-decoration:none; font-family:var(--label); font-size:13px; }
.contact-list a:hover{ color:var(--blue-lit); }

.form{ border:var(--rule-dark); padding:clamp(22px,2.6vw,34px); background:var(--ink-soft); }
.field{ margin-bottom:20px; }
.field label{
  display:block; font-family:var(--label); font-size:10.5px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--fog-dark); margin-bottom:9px;
}
.field input,.field select,.field textarea{
  width:100%; background:transparent; border:0; border-bottom:1px solid var(--ink-line);
  padding:10px 0; color:var(--paper); border-radius:0;
  transition:border-color .3s var(--ease);
}
.field textarea{ resize:vertical; }
.field select{ appearance:none; background-image:linear-gradient(45deg,transparent 50%,var(--fog-dark) 50%),linear-gradient(135deg,var(--fog-dark) 50%,transparent 50%); background-position:calc(100% - 11px) 19px, calc(100% - 6px) 19px; background-size:5px 5px; background-repeat:no-repeat; }
.field select option{ background:var(--ink-soft); color:var(--paper); }
.field input::placeholder,.field textarea::placeholder{ color:#666c68; }
.field input:focus,.field select:focus,.field textarea:focus{ border-bottom-color:var(--blue-lit); outline:none; }
.field.is-bad input{ border-bottom-color:#e0603f; }
.form-note{ margin:14px 0 0; font-family:var(--label); font-size:11.5px; letter-spacing:.06em; color:var(--fog-dark); min-height:1.2em; }
.form-note.is-ok{ color:var(--blue-lit); }
.form-note.is-bad{ color:#e0603f; }

/* ── Footer ───────────────────────────────────────────────────── */
.footer{ background:var(--ink); color:var(--limestone); padding-block:clamp(38px,4.5vw,64px); border-top:var(--rule-dark); }
.footer-in{ display:grid; grid-template-columns:auto 1fr; gap:26px 40px; align-items:center; }
.footer .brand-mark{ color:var(--blue-lit); }
.footer .brand-word{ font-size:22px; letter-spacing:.18em; }

/* ── Brand ────────────────────────────────────────────────────────
   The signage sets LARCO in Trajan-style Roman capitals over a tracked
   sans CAPITAL between two rules. Cinzel is the closest face that is
   actually servable; Jost (already loaded) carries the second line.

   Sitewide: every page carries the same lockup. */
:root{ --brand-serif:'Cinzel', 'Trajan Pro', 'Times New Roman', serif; }

.brand{ align-items:center; gap:12px; }
.brand-word{
  display:flex; flex-direction:column; align-items:center;
  line-height:1;
}
.brand-name{
  font-family:var(--brand-serif);
  font-weight:500;
  font-size:21px;
  letter-spacing:.13em;
  text-transform:uppercase;
  /* Cinzel is a capitals face; the tracking is what makes it read as signage */
  text-indent:.13em;
}
.brand-suffix{
  display:flex; align-items:center; gap:7px;
  margin-top:4px;
  font-family:var(--label);
  font-size:9px; font-weight:400;
  letter-spacing:.34em; text-transform:uppercase;
  text-indent:.34em;
  color:color-mix(in srgb,currentColor 72%,transparent);
}
/* the two rules that flank CAPITAL on the signage */
.brand-suffix::before,
.brand-suffix::after{
  content:""; height:1px; width:14px; flex:none;
  background:currentColor; opacity:.5;
}
.footer .brand-name{ font-size:24px; }
.footer .brand-suffix{ font-size:10px; }

/* the descriptor that sits under the wordmark on the signage */
.brand-tagline{
  margin:10px 0 0 43px;   /* clears the mark, aligns to the wordmark */
  font-family:var(--label); font-size:11.5px;
  letter-spacing:.16em; text-transform:uppercase; color:var(--fog-dark);
}
.footer-nav{ display:flex; flex-wrap:wrap; gap:26px; justify-content:flex-end; }
.footer-nav a{ font-family:var(--label); font-size:16px; font-weight:500; letter-spacing:.05em; text-transform:uppercase; text-decoration:none; opacity:.7; }
.footer-nav a:hover{ opacity:1; color:var(--blue-lit); }
.footer-fine{ grid-column:1/-1; margin:0; padding-top:22px; border-top:var(--rule-dark); font-size:12.5px; color:var(--fog-dark); }

/* ── Property page ────────────────────────────────────────────── */
.pheader{
  position:relative; min-height:calc(90svh - var(--barh)); display:flex; align-items:flex-end;
  background:var(--ink); color:var(--paper); overflow:hidden; isolation:isolate;
}
.pheader-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; }
.pheader .hero-veil{ z-index:-1; }
.pheader-body{ position:relative; padding-bottom:clamp(56px,8vh,96px); }
.pheader .display{ font-size:clamp(40px,6.8vw,100px); }
.back{
  display:inline-block; margin-bottom:26px; text-decoration:none;
  font-family:var(--label); font-size:11.5px; letter-spacing:.13em; text-transform:uppercase; color:#cfd4cf;
}
.back:hover{ color:var(--blue-lit); }

.facts{ background:var(--paper); border-bottom:var(--rule); }
.facts-in{ padding-block:26px; }
.factset{ display:flex; flex-wrap:wrap; gap:20px clamp(28px,4.5vw,72px); margin:0; }
.factset div{ display:flex; flex-direction:column; gap:6px; }
.factset dt{ font-family:var(--label); font-size:10.5px; letter-spacing:.15em; text-transform:uppercase; color:var(--fog); }
.factset dd{ margin:0; font-size:16px; }
.fact-big{ font-family:var(--display); font-weight:500; font-size:23px; letter-spacing:-.01em; font-variant-numeric:tabular-nums; }

.gal{ display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:clamp(14px,1.6vw,26px); }
.gal figure{ margin:0; }
.gal img{ width:100%; height:100%; object-fit:cover; }
.gal figcaption{
  margin-top:10px; font-family:var(--label); font-size:10.5px; letter-spacing:.09em;
  text-transform:uppercase; color:var(--fog);
}
.gal-a{ grid-column:span 6; }
.gal-a img{ aspect-ratio:2.35/1; }
.gal-b,.gal-c{ grid-column:span 3; }
.gal-b img,.gal-c img{ aspect-ratio:4/3; }
.gal-d,.gal-e{ grid-column:span 3; }
.gal-d img,.gal-e img{ aspect-ratio:3/2; }

.survey-notes{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.05fr); gap:clamp(32px,5vw,88px); align-items:start; }
.notes{ margin:0; }
.notes div{ display:grid; grid-template-columns:150px minmax(0,1fr); gap:6px 24px; padding:20px 0; border-top:var(--rule-dark); }
.notes div:last-child{ border-bottom:var(--rule-dark); }
.notes dt{ font-family:var(--label); font-size:10.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--blue-lit); padding-top:3px; }
.notes dd{ margin:0; color:#b9bfba; font-size:15px; }

.plan-sec{ background:var(--paper); }
.plan{ margin:0; }
.plan svg{ width:100%; height:auto; display:block; }
.p-wall rect,.p-wall line{ stroke:var(--ink); stroke-width:2.4; fill:none; }
.p-open line{ stroke:var(--paper); stroke-width:4; }
.p-dim line{ stroke:var(--blue); stroke-width:1; }
.p-dim text{ font-family:var(--label); font-size:11px; letter-spacing:.1em; fill:var(--blue); }
.p-label text{ font-family:var(--label); font-size:12px; letter-spacing:.14em; text-transform:uppercase; fill:var(--ink); text-anchor:middle; }
.p-label .p-area{ font-size:10.5px; letter-spacing:.1em; fill:var(--fog); }
.p-deck rect{ stroke:var(--ink); stroke-width:1.4; fill:none; opacity:.55; }
.p-deck text{ font-family:var(--label); font-size:11px; letter-spacing:.12em; text-transform:uppercase; fill:var(--fog); }
.p-north circle{ fill:none; stroke:var(--blue); stroke-width:1; }
.p-north line{ stroke:var(--blue); stroke-width:1; }
.p-north path{ fill:var(--blue); }
.p-north text{ font-family:var(--label); font-size:11px; letter-spacing:.1em; fill:var(--blue); }
.p-tree circle{ fill:none; stroke:var(--blue); stroke-width:1; opacity:.7; }
.p-tree text{ font-family:var(--label); font-size:10.5px; letter-spacing:.08em; fill:var(--blue); }
.plan figcaption{
  margin-top:18px; padding-top:14px; border-top:var(--rule);
  font-family:var(--label); font-size:10.5px; letter-spacing:.11em; text-transform:uppercase; color:var(--fog);
}

.pfoot-grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.9fr); gap:clamp(34px,5vw,88px); align-items:start; }
.drive{ list-style:none; margin:0; padding:0; }
.drive li{ display:flex; justify-content:space-between; align-items:baseline; gap:24px; padding:16px 0; border-top:var(--rule); }
.drive li:last-child{ border-bottom:var(--rule); }
.drive span{ font-size:15.5px; }
.drive b{ font-family:var(--label); font-weight:500; font-size:13px; color:var(--blue); white-space:nowrap; }
.broker{ display:grid; grid-template-columns:150px minmax(0,1fr); gap:clamp(20px,2.4vw,30px); border:var(--rule); padding:clamp(20px,2.4vw,30px); background:var(--paper); }
.broker img{ width:100%; aspect-ratio:4/5; object-fit:cover; filter:grayscale(1); }
.broker-name{ margin:0; font-family:var(--display); font-weight:500; font-size:27px; letter-spacing:-.012em; line-height:1.16; }
.broker .btn{ margin-top:22px; }
.broker-alt{ margin-top:10px; }

@media (max-width:1080px){
  .survey-notes{ grid-template-columns:1fr; }
  .pfoot-grid{ grid-template-columns:1fr; }
  .gal-b,.gal-c,.gal-d,.gal-e{ grid-column:span 6; }
}
@media (max-width:720px){
  .notes div{ grid-template-columns:1fr; }
  .broker{ grid-template-columns:1fr; }
  .broker img{ max-width:180px; }
  .factset{ gap:16px 28px; }
}

/* ── Commercial page ──────────────────────────────────────────── */
.commhead{
  position:relative; display:flex; align-items:flex-end; overflow:hidden; isolation:isolate;
  min-height:clamp(320px,52vh,520px); background:var(--ink); color:var(--paper);
}
.commhead-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; }
.commhead .hero-veil{ z-index:-1; }
.commhead-body{ position:relative; padding-block:clamp(38px,6vh,68px); }
.commhead .h2{ margin-bottom:20px; }
.commhead-para{ max-width:58ch; color:#c4cac5; }
.commwhat{ padding-bottom:0; }
.commlines{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(24px,3vw,48px); margin:0; }
.commlines div{ padding-top:20px; border-top:2px solid var(--ink); }
.commlines dt{
  font-family:var(--display); font-weight:500; font-size:clamp(19px,1.5vw,23px);
  letter-spacing:-.008em; margin-bottom:10px;
}
.commlines dd{ margin:0; font-size:15.5px; color:color-mix(in srgb,var(--ink) 72%,transparent); }

@media (max-width:1080px){
  .commlines{ grid-template-columns:1fr; gap:0; }
  .commlines div{ padding-block:20px; border-top:1px solid color-mix(in srgb,var(--ink) 18%,transparent); }
  .commlines div:first-child{ border-top:2px solid var(--ink); }
}

/* ── Buy & rent: search results beside a map ──────────────────── */
.searchbar{ position:sticky; top:var(--barh); z-index:40; background:var(--paper); border-bottom:var(--rule); }
.searchbar-in{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; padding-block:14px; }
.searchbar-sep{ width:1px; align-self:stretch; background:color-mix(in srgb,var(--ink) 16%,transparent); margin-inline:4px; }

.pill{
  display:inline-flex; align-items:center; gap:8px; position:relative; min-height:44px; padding:0 14px;
  background:color-mix(in srgb,var(--ink) 5%,transparent);
  border:1px solid transparent; transition:border-color .25s var(--ease), background .25s var(--ease);
}
.pill:hover, .pill:focus-within{ border-color:color-mix(in srgb,var(--ink) 28%,transparent); }
.pill select, .pill input{
  appearance:none; background:transparent; border:0; padding:11px 20px 11px 0; border-radius:0;
  font-family:var(--label); font-size:15px; color:var(--ink); min-width:118px;
}
.pill select{
  background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);
  background-position:calc(100% - 9px) 20px, calc(100% - 4px) 20px;
  background-size:5px 5px; background-repeat:no-repeat; cursor:pointer;
}
.pill select:focus, .pill input:focus{ outline:none; }
.pill svg{ width:17px; height:17px; color:var(--fog); flex:none; }
.pill-btn{ background:color-mix(in srgb,var(--ink) 5%,transparent); cursor:pointer; font-family:var(--label); font-size:15px; color:var(--ink); }
.pill-btn.is-on{ background:var(--ink); color:var(--paper); }
.pill-btn.is-on svg{ color:currentColor; }
.pill-search{ flex:1 1 200px; }
.pill-search input{ width:100%; min-width:0; }
.btn-save{ padding:12px 20px; font-size:15px; letter-spacing:.04em; gap:9px; }
.btn-save svg{ width:18px; height:18px; }

.seg{ display:flex; border:1px solid var(--ink); }
.seg-btn{
  background:none; border:0; cursor:pointer; color:var(--ink);
  font-family:var(--label); font-size:14px; font-weight:500; letter-spacing:.06em;
  text-transform:uppercase; padding:12px 18px;
  transition:background .25s var(--ease), color .25s var(--ease);
}
.seg-btn + .seg-btn{ border-left:1px solid var(--ink); }
.seg-btn:hover{ background:color-mix(in srgb,var(--ink) 8%,transparent); }
.seg-btn.is-on{ background:var(--ink); color:var(--paper); }

.filter-panel{
  display:flex; flex-wrap:wrap; align-items:flex-end; gap:18px clamp(20px,3vw,44px);
  padding-block:18px; border-top:var(--rule);
}
.fld{ display:flex; flex-direction:column; gap:5px; }
.fld > span{
  font-family:var(--label); font-size:10.5px; font-weight:500; letter-spacing:.18em;
  text-transform:uppercase; color:var(--fog);
}
.fld select{
  appearance:none; background:transparent; border:0; border-bottom:1px solid var(--ink);
  padding:7px 22px 7px 0; font-size:15px; color:var(--ink); border-radius:0; min-width:150px; cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);
  background-position:calc(100% - 10px) 16px, calc(100% - 5px) 16px;
  background-size:5px 5px; background-repeat:no-repeat;
}
.fld select:focus{ outline:none; border-bottom-color:var(--blue); }
.fld-clear{
  align-self:flex-end; background:none; border:0; cursor:pointer; padding:8px 0;
  font-family:var(--label); font-size:13.5px; color:var(--fog);
  text-decoration:underline; text-underline-offset:4px;
}
.fld-clear:hover{ color:var(--blue); }

/* the page runs full width here: results left, map right */
.props{ padding-block:0; }
.props > .wrap{ max-width:none; padding:0; }
.res-shell{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:start; }
.res-col{ padding:clamp(26px,3vw,44px) clamp(20px,3vw,48px); }
.res-head{ margin:0 0 14px; font-size:clamp(24px,2.4vw,34px); }
.res-count{ color:var(--fog); font-weight:400; white-space:nowrap; }
.res-count b{ font-weight:500; font-variant-numeric:tabular-nums; }

.zonelinks{ list-style:none; display:flex; flex-wrap:wrap; gap:8px 20px; margin:0 0 22px; padding:0; }
.zonelinks button{
  background:none; border:0; padding:2px 0; cursor:pointer; color:var(--ink);
  font-size:14.5px; text-decoration:underline; text-underline-offset:4px;
  text-decoration-color:color-mix(in srgb,var(--ink) 35%,transparent);
}
.zonelinks button:hover{ color:var(--blue); text-decoration-color:var(--blue); }
.zonelinks span{ color:var(--fog); }

.res-tools{
  display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px;
  padding-bottom:18px; margin-bottom:22px; border-bottom:var(--rule);
}
.sortline{ display:inline-flex; align-items:center; gap:9px; }
.sortline svg{ width:19px; height:19px; color:var(--ink); flex:none; }
.sortline select{
  appearance:none; background:transparent; border:0; padding:4px 20px 4px 0; cursor:pointer;
  font-family:var(--label); font-size:15px; color:var(--ink);
  background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);
  background-position:calc(100% - 9px) 13px, calc(100% - 4px) 13px;
  background-size:5px 5px; background-repeat:no-repeat;
}
.sortline select:focus{ outline:none; }

.switch{ display:inline-flex; align-items:center; gap:10px; cursor:pointer; font-family:var(--label); font-size:15px; }
.switch input{ position:absolute; opacity:0; width:0; height:0; }
.switch-track{
  position:relative; width:46px; height:26px; border-radius:999px;
  background:color-mix(in srgb,var(--ink) 22%,transparent); transition:background .25s var(--ease);
}
.switch-knob{
  position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%;
  background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.25); transition:transform .25s var(--ease);
}
.switch input:checked + .switch-track{ background:var(--ink); }
.switch input:checked + .switch-track .switch-knob{ transform:translateX(20px); }
.switch input:focus-visible + .switch-track{ outline:2px solid var(--blue); outline-offset:3px; }

.results{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(16px,1.8vw,24px); }
.res{ display:flex; flex-direction:column; border:var(--rule); background:var(--paper); }
.res.is-hidden{ display:none; }
.res-media{ position:relative; }
.res-img{ display:block; overflow:hidden; background:#c8c8c2; }
.res-img img{ width:100%; aspect-ratio:4/3; object-fit:cover; transition:transform 1.1s var(--ease); }
.res:hover .res-img img{ transform:scale(1.04); }
.res-badge, .res-deal{
  position:absolute; font-family:var(--label); font-size:10.5px; font-weight:500;
  letter-spacing:.14em; text-transform:uppercase; padding:5px 9px; z-index:1;
}
.res-badge{ top:10px; left:10px; background:var(--blue); color:#fff; }
.res-deal{ bottom:10px; left:10px; background:rgba(255,255,255,.94); color:var(--ink); }
.res-fav{
  position:absolute; top:8px; right:8px; z-index:2;
  display:flex; align-items:center; justify-content:center; width:34px; height:34px;
  background:transparent; border:0; cursor:pointer; color:#fff;
  filter:drop-shadow(0 1px 3px rgba(0,0,0,.45));
  transition:color .25s var(--ease);
}
.res-fav svg{ width:22px; height:22px; }
.res-fav:hover{ color:var(--blue-lit); }
.res-fav.is-on{ color:var(--blue-lit); }
.res-fav.is-on svg path{ fill:currentColor; }
.res-body{ padding:16px 18px 20px; }
.res-place{
  margin:0; font-size:13.5px; color:var(--fog);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.res-name{ margin:7px 0 0; font-size:17px; font-weight:500; }
.res-name a{ text-decoration:none; display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.res-name a:hover{ color:var(--blue); }
.res-price{
  margin:10px 0 0; font-family:var(--display); font-weight:500;
  font-size:clamp(19px,1.5vw,23px); letter-spacing:-.012em; font-variant-numeric:tabular-nums;
}
.res-specs{ margin:12px 0 0; font-size:13.5px; line-height:1.65; color:color-mix(in srgb,var(--ink) 72%,transparent); }
.res.is-lit{ border-color:var(--blue); }

/* the map holds the right half and stays put */
.mappanel{ position:sticky; top:var(--barh); height:calc(100svh - var(--barh)); }
.map-canvas{ width:100%; height:100%; background:var(--paper); }
/* switching the map off gives the results the whole width */
.res-shell[data-view="list"]{ grid-template-columns:1fr; }
.res-shell[data-view="list"] .mappanel{ display:none; }
.res-shell[data-view="list"] .results{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.res-shell[data-view="list"] .res-col{ max-width:var(--wrap); margin-inline:auto; width:100%; }
.map-area-search{
  position:absolute; top:16px; left:50%; transform:translateX(-50%); z-index:500;
  display:inline-flex; align-items:center; gap:9px; padding:11px 18px; cursor:pointer;
  background:var(--paper); border:1px solid var(--ink); color:var(--ink);
  font-family:var(--label); font-size:14px; box-shadow:0 10px 26px rgba(10,12,16,.18);
}
.map-area-search svg{ width:16px; height:16px; }
.map-area-search:hover{ background:var(--ink); color:var(--paper); }
.map-note{
  position:absolute; left:14px; bottom:52px; z-index:500; margin:0; max-width:38ch;
  font-family:var(--label); font-size:10.5px; letter-spacing:.08em; color:var(--fog);
  background:color-mix(in srgb,var(--paper) 88%,transparent); padding:6px 9px;
}

/* ── Leaflet, dressed to match the page ───────────────────────── */
.leaflet-container{ font-family:var(--body); background:var(--paper); }
.leaflet-tile-pane{ filter:grayscale(.55) saturate(.55) contrast(.94) brightness(1.03) sepia(.1); }
.leaflet-container a{ color:var(--blue); }
.leaflet-bar{ border:0; box-shadow:none; }
.leaflet-bar a, .leaflet-bar a:hover{
  width:34px; height:34px; line-height:34px; background:var(--paper); color:var(--ink);
  border:1px solid color-mix(in srgb,var(--ink) 18%,transparent); border-radius:0 !important; font-weight:400;
}
.leaflet-bar a:first-child{ border-bottom:0; }
.leaflet-bar a:hover{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.leaflet-control-attribution{
  background:color-mix(in srgb,var(--paper) 88%,transparent);
  font-family:var(--label); font-size:9.5px; letter-spacing:.06em; color:var(--fog);
  padding:3px 8px; border-left:var(--rule); border-top:var(--rule);
}
.leaflet-control-attribution a{ color:var(--fog); text-decoration:none; }
.leaflet-control-scale{ margin:0 0 14px 14px; }
.leaflet-control-scale-line{
  background:transparent; border:1px solid var(--ink); border-top:0; border-radius:0;
  font-family:var(--label); font-size:10px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--ink); padding:2px 6px; line-height:1.4;
}
.leaflet-popup-content-wrapper{
  border-radius:0; background:var(--paper); color:var(--ink);
  border:1px solid var(--ink); box-shadow:0 18px 40px rgba(10,12,16,.18);
}
.leaflet-popup-tip{ background:var(--paper); border:1px solid var(--ink); box-shadow:none; }
.leaflet-popup-content{ margin:16px 18px; font-size:14px; line-height:1.55; }
.leaflet-popup-content b{
  display:block; font-family:var(--display); font-weight:500; font-size:17px;
  letter-spacing:-.008em; margin-bottom:4px;
}
.leaflet-popup-content .pop-place{
  font-family:var(--label); font-size:10.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--fog);
}
.leaflet-popup-content .pop-price{ font-variant-numeric:tabular-nums; }
.leaflet-container a.leaflet-popup-close-button{ color:var(--fog); font-weight:400; padding:8px 8px 0 0; }
.leaflet-container a.leaflet-popup-close-button:hover{ color:var(--ink); background:transparent; }
.map-area{ transition:fill-opacity .3s var(--ease), stroke-opacity .3s var(--ease); }

/* counts in a dark disc */
.lc-cluster{ background:none; border:0; }
.lc-cluster span{
  display:flex; align-items:center; justify-content:center; width:46px; height:46px;
  border-radius:50%; background:color-mix(in srgb,var(--ink) 88%,transparent); color:#fff;
  font-family:var(--label); font-size:15px; font-variant-numeric:tabular-nums;
  box-shadow:0 4px 14px rgba(10,12,16,.28); transition:background .25s var(--ease);
}
.lc-cluster:hover span{ background:var(--blue); }

.pager{ display:flex; flex-wrap:wrap; gap:6px; margin-top:clamp(24px,3vw,38px); }
.pager-btn{
  min-width:42px; padding:10px 12px; background:none; cursor:pointer;
  border:1px solid color-mix(in srgb,var(--ink) 24%,transparent);
  font-family:var(--label); font-size:14px; color:var(--ink);
  transition:border-color .25s var(--ease), background .25s var(--ease), color .25s var(--ease);
}
.pager-btn:hover:not(:disabled){ border-color:var(--ink); }
.pager-btn.is-on{ background:var(--ink); border-color:var(--ink); color:var(--paper); }
.pager-btn:disabled{ opacity:.35; cursor:default; }

.savesearch{
  display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:20px;
  margin-top:clamp(28px,3.4vw,48px); padding-top:26px; border-top:var(--rule);
}
.savesearch-title{ font-size:clamp(20px,2vw,26px); margin:0 0 10px; }
.savesearch p{ margin:0; max-width:52ch; font-size:14.5px; color:color-mix(in srgb,var(--ink) 74%,transparent); }

@media (max-width:1180px){
  .res-shell{ grid-template-columns:1fr; }
  .mappanel{ position:relative; top:0; height:min(62vh,540px); order:-1; border-bottom:var(--rule); }
}
@media (max-width:720px){
  .searchbar{ position:static; }
  .pill{ flex:1 1 100%; }
  .pill select{ width:100%; }
  .searchbar-sep{ display:none; }
  .btn-save{ width:100%; justify-content:center; }
  .results{ grid-template-columns:1fr; }
}

/* ── Sell: the four steps, on paper ───────────────────────────── */
.steps{ list-style:none; margin:0; padding:0; }
.steps li{
  display:grid; grid-template-columns:78px minmax(0,1fr); gap:8px 26px;
  padding:clamp(22px,2.6vw,34px) 0; border-top:var(--rule);
}
.steps li:last-child{ border-bottom:var(--rule); }
.stepno{
  font-family:var(--label); font-size:13px; font-weight:500; letter-spacing:.16em;
  color:var(--blue); grid-row:span 2; padding-top:6px;
}
.steps h2{
  margin:0; font-family:var(--display); font-weight:500;
  font-size:clamp(21px,2vw,29px); letter-spacing:-.012em;
}
.steps p{ margin:0; grid-column:2; max-width:60ch; color:color-mix(in srgb,var(--ink) 74%,transparent); }

@media (max-width:1080px){
  .props-grid{ grid-template-columns:1fr; }
  .map{ position:static; order:-1; max-width:520px; }
}
@media (max-width:720px){
  .plot{ grid-template-columns:110px minmax(0,1fr); gap:14px; }
  .props-count{ margin-left:0; }
  .steps li{ grid-template-columns:1fr; }
  .stepno{ grid-row:auto; padding-top:0; }
  .steps p{ grid-column:1; }
}

/* ── Locations page ───────────────────────────────────────────── */
.pagehead{ padding:clamp(44px,6vw,92px) 0 clamp(34px,4vw,54px); border-bottom:var(--rule); }
.pagehead .h2{ margin-bottom:22px; }
.pagehead-para{ max-width:56ch; }
.offices{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(28px,3.4vw,54px); }
.office img{ width:100%; aspect-ratio:4/3; object-fit:cover; }
.office:last-child img{ object-position:50% 46%; }
.office-body{ padding-top:22px; }
.office-city{ font-size:clamp(30px,3vw,42px); font-weight:400; letter-spacing:-.02em; margin:0 0 6px; }
.office-facts{ margin:18px 0 0; }
.office-facts div{
  display:grid; grid-template-columns:120px minmax(0,1fr); gap:6px 22px;
  padding:14px 0; border-top:var(--rule);
}
.office-facts div:last-child{ border-bottom:var(--rule); }
.office-facts dt{
  font-family:var(--label); font-size:10.5px; font-weight:500; letter-spacing:.18em;
  text-transform:uppercase; color:var(--fog); padding-top:3px;
}
.office-facts dd{ margin:0; font-size:15.5px; }
.office-facts a{ text-decoration:none; border-bottom:1px solid color-mix(in srgb,var(--ink) 25%,transparent); }
.office-facts a:hover{ color:var(--blue); border-bottom-color:var(--blue); }
.visit-grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.05fr); gap:clamp(32px,5vw,88px); align-items:start; }
.visit-grid .btn{ margin-top:30px; }

@media (max-width:1080px){
  .offices{ grid-template-columns:1fr; }
  .visit-grid{ grid-template-columns:1fr; }
}
@media (max-width:720px){
  .office-facts div{ grid-template-columns:1fr; }
}

/* ── City selector: the offices list in the hero ──────────────── */
.offpick{
  position:absolute; right:var(--gut); bottom:clamp(34px,6vh,62px); z-index:3;
  text-align:right; max-width:min(46vw,540px);
}
.offpick-label{
  margin:0 0 12px; font-family:var(--label); font-size:12px; font-weight:500;
  letter-spacing:.26em; text-transform:uppercase; color:rgba(255,255,255,.6);
}
.offpick-list{ list-style:none; margin:0; padding:0; }
.offpick-item{
  position:relative; display:block; width:100%; text-align:right;
  background:none; border:0; cursor:pointer; padding:8px 0 12px;
  font-family:var(--display); font-weight:500;
  font-size:clamp(30px,4.4vw,60px); line-height:1.04; letter-spacing:.04em;
  text-transform:uppercase; color:rgba(255,255,255,.58);
  transition:color .3s var(--ease);
}
.offpick-item:hover{ color:rgba(255,255,255,.85); }
.offpick-item.is-on{ color:#fff; }
.offpick-item::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:rgba(255,255,255,.26); transition:background .3s var(--ease);
}
.offpick-item.is-on::after{ background:rgba(255,255,255,.7); }
.offpick-item.is-on::before{
  content:""; position:absolute; left:0; bottom:0; width:clamp(48px,7vw,88px); height:2px;
  background:var(--blue-lit);
}
/* shared: the count line under the section head */
.city-note{ margin:0 0 clamp(20px,2.4vw,30px); font-size:14.5px; color:var(--fog); }

@media (max-width:900px){
  .offpick{ position:static; width:100%; max-width:none; text-align:left;
    padding:0 var(--gut) clamp(26px,6vh,46px); }
  .offpick-item{ text-align:left; font-size:clamp(28px,9vw,44px); }
  .offpick-item.is-on::before{ width:56px; }
}

/* ── Reveal ───────────────────────────────────────────────────── */
.reveal{ opacity:0; transform:translateY(22px); transition:opacity .8s var(--ease), transform .8s var(--ease); }
.reveal.is-in{ opacity:1; transform:none; }

/* ── Responsive ───────────────────────────────────────────────── */
@media (max-width:1080px){
  .nav{ display:none; }
  .split{ grid-template-columns:repeat(2,minmax(0,1fr)); min-height:0; }
  .split-panel{ min-height:clamp(180px,26vh,240px); }
  .topbar-main .topbar-in{ justify-content:flex-end; padding-block:8px; }
  .grid{ grid-template-columns:repeat(4,minmax(0,1fr)); }
  .card, .card-wide{ grid-column:span 2; }
  .card-wide .card-img{ aspect-ratio:4/3; }
    .people{ grid-template-columns:repeat(2,minmax(0,1fr)); }
    .enquire-grid{ grid-template-columns:1fr; }
  .band-grid{ grid-template-columns:1fr; }
}
@media (max-width:720px){
  .brand-word{ white-space:nowrap; font-size:19px; letter-spacing:.12em; }
  .brand-mark{ width:24px; height:24px; }
  :root{ --barh:48px; }
  .topbar-in{ gap:14px; }
  .topbar-util{ border-bottom:0; }
  .util{ gap:16px; }
  .lang-toggle, .locbtn{ font-size:14px; }
  /* the action row folds away; every section carries its own call to action */
  .topbar-main{ display:none; }
  .locbtn{ gap:0; }
  .locbtn span{ position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
  .hero{ min-height:calc(92svh - var(--barh)); }
        .hero-index{ gap:16px; }
  .hidx em{ display:none; }
  .grid{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:30px 16px; }
  .card, .card-wide{ grid-column:span 2; }
  .band-stats{ grid-template-columns:1fr; gap:18px; }
  .split{ grid-template-columns:1fr; }
  .split-panel{ min-height:150px; }
    .footer-in{ grid-template-columns:1fr; }
  .footer-nav{ justify-content:flex-start; }
}

/* Touch targets. On a phone the header controls collapse to bare icons
   and the footer links sit on their text box alone, both well under the
   44px a finger needs. The boxes grow; nothing moves visually. */
@media (max-width:720px){
  .locbtn{
    min-width:44px; min-height:44px;
    justify-content:center;
    margin-right:-10px;   /* keeps the icon optically on the gutter */
  }
  .lang-toggle{ min-height:44px; }
  .brand{ min-height:44px; }
  .footer-nav{ gap:14px 26px; }
  .footer-nav a{ padding-block:9px; }
  .contact-list a{ padding-block:6px; }
  /* search controls on the results page */
  .seg-btn, .pill, .pill-btn{ min-height:44px; }
  .res-fav{ width:40px; height:40px; }
  [data-zone-link]{ min-height:40px; }
  .res-name a{ padding-block:6px; }
  .office-facts dd a, .back{ display:inline-block; padding-block:8px; }
}

/* The narrow end of the range. At 320px the wordmark plus the language
   and location controls are a few pixels wider than the viewport, which
   is enough to give the whole page a horizontal scroll. */
@media (max-width:380px){
  .brand-word{ font-size:16px; letter-spacing:.08em; }
  .brand{ gap:9px; }
  .util{ gap:12px; }
  .lang-toggle{ gap:5px; }
  .lang-toggle > svg:first-child{ width:17px; height:17px; }
}

@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.001ms !important; transition-duration:.001ms !important; }
  .reveal{ opacity:1; transform:none; }
  .slide img{ transform:none; }
}
