/**
 * Developers: directory + single developer page.
 *
 * Uses the existing brand tokens rather than introducing new ones, so this section reads
 * as part of the same site: ochre accents, graphite type, porcelain grounds, hairline
 * stone borders and square corners.
 */

/* The widget is dropped into an Elementor container. The design paints its own ground
   edge to edge, so the section fills the container and the inner .dw-wrap owns the
   reading width. Elementor containers are flex, so grow explicitly — a flex item at the
   default flex-grow:0 sizes to its content and leaves a gap on wide screens. */
.agi-dvw{
  flex:1 1 100%;
  min-width:0;
  width:auto;
  margin-inline:0;
}
.elementor-widget-agi_developers_grid{width:100%}
.elementor-widget-agi_developers_grid > .elementor-widget-container{margin:0}

/* ============================================================
   DEVELOPERS ARCHIVE  (/developers/)
   Ported from the approved design: dark plate wall, ochre figures,
   porcelain logo plates. Every rule is scoped under .agi-dvw and every
   design class carries a dw- prefix, so nothing leaks either way.
   ============================================================ */

/* ============================================================
   CONCEPT PLUS — DEVELOPERS ARCHIVE
   Direction B: "Logo Plates"
   Palette: live-site tokens only.
   ============================================================ */
.agi-dvw{
  --cp-ochre:#C8A96E;
  --cp-ochre-700:#A8894C;
  --cp-graphite:#1A3C5A;
  --cp-graphite-800:#22425E;
  --cp-graphite-600:#333333;
  --cp-porcelain:#EAE8E3;
  --cp-porcelain-100:#F8F6F1;
  --cp-stone:#B2B4B2;
  --cp-stone-200:#D8D9D7;

  /* hairlines = --cp-stone-200 held back so eight of them can sit on graphite */
  --hair:rgba(216,217,215,.18);
  --hair-mid:rgba(216,217,215,.30);
  --hair-up:rgba(216,217,215,.55);
  /* graphite washes for the duotone + scrim */
  --wash-90:rgba(26,60,90,.90);
  --wash-55:rgba(26,60,90,.55);
  --wash-20:rgba(26,60,90,.20);

  --ui:"Macan Pan","Outfit",system-ui,-apple-system,"Segoe UI",sans-serif;
  --serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;

  --pad:clamp(20px,4vw,56px);
  --maxw:1360px;
  --gap:clamp(18px,2.2vw,34px);
}.agi-dvw,.agi-dvw *,.agi-dvw *::before,.agi-dvw *::after{box-sizing:border-box}.agi-dvw{
  margin:0;
  background:var(--cp-graphite);
  color:var(--cp-stone-200);
  font-family:var(--ui);
  font-weight:300;
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}.agi-dvw img{max-width:100%;display:block}.agi-dvw a{color:inherit;text-decoration:none}.agi-dvw ul{margin:0;padding:0;list-style:none}.agi-dvw h1,.agi-dvw h2,.agi-dvw h3,.agi-dvw p{margin:0}.agi-dvw ::selection{background:var(--cp-ochre);color:var(--cp-graphite-600)}.agi-dvw :focus-visible{outline:2px solid var(--cp-porcelain-100);outline-offset:4px}.agi-dvw .dw-wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding-inline:var(--pad)}

/* micro-label ---------------------------------------------- */
.agi-dvw .dw-ml{
  font-family:var(--ui);
  font-size:10px;
  font-weight:400;
  letter-spacing:.22em;
  text-transform:uppercase;
  line-height:1.2;
}

/* ============ 1. TOP STRIP ============ */
.agi-dvw .dw-strip{border-bottom:1px solid var(--hair)}.agi-dvw .dw-strip__in{
  display:flex;flex-wrap:wrap;gap:10px 24px;
  align-items:baseline;justify-content:space-between;
  padding-block:18px;
}.agi-dvw .dw-strip__l{color:var(--cp-stone)}.agi-dvw .dw-strip__r{color:var(--cp-stone);opacity:.72}

/* ============ 2. MASTHEAD ============ */
/* Not a full screen: the ribbon below should be visible without scrolling, and the
   finder and the top of the wall should show enough to invite the scroll. */
.agi-dvw .dw-masthead{padding-block:clamp(28px,3.2vw,48px) clamp(20px,2.2vw,32px)}.agi-dvw .dw-masthead__in{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:clamp(20px,2.6vw,52px);
  align-items:end;
}@media (max-width:900px){.agi-dvw .dw-masthead__in{grid-template-columns:minmax(0,1fr);align-items:start}}.agi-dvw .dw-eyebrow{color:var(--cp-ochre);margin-bottom:clamp(10px,1.4vw,16px)}.agi-dvw h1{
  font-family:var(--serif);
  font-weight:300;
  color:var(--cp-porcelain-100);
  /* The design set this for the one word "Developers". The heading in use is a full
     sentence, which at the old 9.5vw ran to four lines and 427px, pushing the figure
     ribbon off the bottom of the screen. */
  font-size:clamp(30px,3.6vw,58px);
  line-height:1.02;
  letter-spacing:-.012em;
  overflow-wrap:break-word;
  text-wrap:balance;
  max-width:16ch;
}.agi-dvw h1 .dw-tally{
  display:inline-block;
  font-family:var(--ui);
  font-size:clamp(11px,1.1vw,13px);
  font-weight:300;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--cp-stone);
  vertical-align:top;
  margin-left:clamp(10px,1.4vw,18px);
  transform:translateY(.35em);
}.agi-dvw .dw-lede{
  font-size:clamp(15px,1.15vw,17px);
  line-height:1.72;
  color:var(--cp-stone-200);
  max-width:56ch;
}.agi-dvw .dw-lede + .dw-lede{margin-top:1em;color:var(--cp-stone)}.agi-dvw .dw-lede em{font-family:var(--serif);font-style:italic;font-size:1.12em;color:var(--cp-porcelain-100)}

/* ============ 3. FIGURE RIBBON ============ */
.agi-dvw .dw-ribbon{border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}.agi-dvw .dw-ribbon__in{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:26px 24px;
  padding-block:clamp(24px,3vw,34px);
}@media (min-width:900px){.agi-dvw .dw-ribbon__in{grid-template-columns:repeat(4,minmax(0,1fr));gap:0}.agi-dvw .dw-ribbon__in li{padding-left:clamp(20px,2.4vw,34px);border-left:1px solid var(--hair)}.agi-dvw .dw-ribbon__in li:first-child{padding-left:0;border-left:0}
}.agi-dvw .dw-ribbon .dw-v{
  display:block;
  font-size:clamp(30px,3.4vw,44px);
  font-weight:200;
  line-height:1;
  letter-spacing:-.01em;
  color:var(--cp-ochre);
  font-variant-numeric:tabular-nums;
}.agi-dvw .dw-ribbon .dw-l{display:block;margin-top:12px;color:var(--cp-stone)}

/* ============ 4. FINDER ============ */
.agi-dvw .dw-finder{padding-block:clamp(26px,3.4vw,40px);border-bottom:1px solid var(--hair)}.agi-dvw .dw-finder__in{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:16px 32px;
  align-items:end;
}@media (min-width:760px){.agi-dvw .dw-finder__in{grid-template-columns:minmax(0,1fr) auto;align-items:center}
}.agi-dvw .dw-finder__label{display:block;color:var(--cp-ochre);margin-bottom:12px}.agi-dvw .dw-finder__field{
  display:flex;align-items:center;gap:14px;
  border-bottom:1px solid var(--hair-mid);
  padding-bottom:10px;
  transition:border-color .3s ease;
}.agi-dvw .dw-finder__field:focus-within{border-bottom-color:var(--hair-up)}.agi-dvw .dw-finder__field input{
  flex:1 1 auto;min-width:0;
  -webkit-appearance:none;appearance:none;
  background:transparent;border:0;border-radius:0;
  font-family:var(--serif);
  font-size:clamp(22px,2.6vw,32px);
  font-weight:300;
  line-height:1.25;
  color:var(--cp-porcelain-100);
  padding:0;
}.agi-dvw .dw-finder__field input::placeholder{color:var(--cp-stone);opacity:.55}.agi-dvw .dw-finder__field input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}.agi-dvw .dw-finder__clear{
  flex:0 0 auto;
  display:none;
  background:none;border:0;padding:6px 2px;
  font-family:var(--ui);color:var(--cp-stone);
  cursor:pointer;
}html.js .agi-dvw .dw-finder__clear.is-on{display:block}.agi-dvw .dw-finder__clear:hover{color:var(--cp-porcelain-100)}.agi-dvw .dw-finder__count{color:var(--cp-stone);white-space:nowrap;font-variant-numeric:tabular-nums}

/* ============ 5. THE WALL ============ */
.agi-dvw .dw-wall{padding-block:clamp(38px,5vw,74px) clamp(56px,8vw,110px)}.agi-dvw .dw-grid{
  display:grid;
  /* three up, so the description has room to breathe */
  grid-template-columns:repeat(3,minmax(0,1fr));
  column-gap:var(--gap);
  row-gap:clamp(38px,5vw,66px);
}@media (max-width:1040px){.agi-dvw .dw-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.agi-dvw .dw-grid{grid-template-columns:minmax(0,1fr)}}.agi-dvw .dw-card{display:flex;flex-direction:column}html.js .agi-dvw .dw-card{opacity:0;transform:translateY(16px)}html.js .agi-dvw .dw-card.is-in{
  opacity:1;transform:none;
  transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1);
  transition-delay:calc(var(--d,0) * 55ms);
}.agi-dvw .dw-card.is-out{display:none}

/* --- plate frame --- */
.agi-dvw .dw-plate{
  position:relative;
  isolation:isolate;
  flex:0 0 auto;
  aspect-ratio:1/1;
  display:flex;flex-direction:column;gap:14px;
  padding:clamp(16px,1.7vw,22px);
  background:var(--cp-graphite-800);
  border:1px solid var(--hair);
  transition:border-color .45s ease,background-color .45s ease;
}.agi-dvw .dw-plate__bg{position:absolute;inset:0;z-index:-1;overflow:hidden;background:var(--cp-graphite);isolation:isolate}.agi-dvw .dw-plate__bg img{
  width:100%;height:100%;object-fit:cover;
  filter:grayscale(1) contrast(1.06) brightness(1.06);
  mix-blend-mode:luminosity;
  opacity:.6;
  transform:scale(1.01);
  transition:transform 1.1s cubic-bezier(.2,.7,.2,1),opacity .6s ease;
}.agi-dvw .dw-plate__bg::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,var(--wash-55) 0%,var(--wash-20) 34%,var(--wash-90) 100%);
}.agi-dvw .dw-plate__head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;color:var(--cp-stone)}.agi-dvw .dw-plate__head .dw-n{font-variant-numeric:tabular-nums;opacity:.8}.agi-dvw .dw-plate__head .dw-go{
  font-size:13px;line-height:1;letter-spacing:0;
  transition:transform .45s cubic-bezier(.2,.7,.2,1),color .45s ease;
}

/* --- the porcelain plate --- */
.agi-dvw .dw-plate__mark{
  position:relative;
  container-type:inline-size;   /* logos scale to the plate, not the viewport */
  width:100%;
  aspect-ratio:1.7/1;
  background:var(--cp-porcelain);
  display:grid;place-items:center;
  padding:clamp(18px,2vw,24px) clamp(26px,3vw,34px);
  transition:background-color .45s ease;
}.agi-dvw .dw-plate__mark::after{
  content:"";position:absolute;inset:9px;
  border:1px solid var(--cp-stone-200);
  pointer-events:none;
}
/* marks arrive in wildly different ratios (1:1 up to 8:1) — cap both axes so
   every plate carries roughly the same optical mass */
.agi-dvw .dw-plate__mark img{
  width:auto;height:auto;
  min-width:0;min-height:0;
  max-width:100%;
  max-height:76px;      /* fallback where container units are unsupported */
  max-height:44cqi;
  object-fit:contain;
  /* the supplied marks are dark on white or on transparency; multiply drops the
     baked-in white box (Aldar) straight onto the porcelain */
  mix-blend-mode:multiply;
}.agi-dvw .dw-plate__fallback{
  display:none;
  font-family:var(--serif);font-size:20px;line-height:1.2;
  color:var(--cp-graphite);text-align:center;padding:0 8px;
}.agi-dvw .dw-plate__mark.is-broken img{display:none}.agi-dvw .dw-plate__mark.is-broken .dw-plate__fallback{display:block}

/* --- foot: figures (live) or the quiet line (not) --- */
.agi-dvw .dw-plate__foot{flex:1 1 auto;display:flex;align-items:flex-end;min-height:34px}.agi-dvw .dw-figs{display:flex;flex-wrap:wrap;column-gap:16px;row-gap:6px;align-items:baseline}.agi-dvw .dw-figs li{display:flex;align-items:baseline;gap:7px}.agi-dvw .dw-figs .dw-v{
  font-size:clamp(17px,1.5vw,20px);
  font-weight:300;line-height:1.1;
  color:var(--cp-ochre);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}.agi-dvw .dw-figs .dw-p{
  font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  /* ochre-700 on graphite measures 3.45:1 — the full ochre clears 4.5:1 */
  color:var(--cp-ochre);margin-right:3px;
}.agi-dvw .dw-figs .dw-l{color:var(--cp-stone);letter-spacing:.16em}.agi-dvw .dw-pending{display:flex;align-items:center;gap:10px;color:var(--cp-stone)}.agi-dvw .dw-pending .dw-dot{
  width:4px;height:4px;border-radius:50%;
  background:var(--cp-stone);opacity:.7;flex:0 0 auto;
}

/* --- meta, on the dark ground --- */
.agi-dvw .dw-meta{padding-top:20px;flex:1 1 auto;display:flex;flex-direction:column}.agi-dvw .dw-meta__top{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 14px}.agi-dvw .dw-name{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(22px,1.85vw,27px);
  line-height:1.12;letter-spacing:-.005em;
  color:var(--cp-porcelain-100);
  overflow-wrap:break-word;
}
/* no opacity: stone at .85 over graphite measures 4.41:1, just under 4.5:1 */
.agi-dvw .dw-year{color:var(--cp-stone);white-space:nowrap}.agi-dvw .dw-places{display:flex;flex-wrap:wrap;margin-top:12px;font-size:13.5px;line-height:1.5;color:var(--cp-stone)}.agi-dvw .dw-places li{position:relative;padding-right:12px;margin-right:12px;overflow-wrap:break-word}.agi-dvw .dw-places li::after{
  content:"";position:absolute;right:0;top:.55em;
  width:1px;height:.85em;background:var(--hair-mid);
}.agi-dvw .dw-places li:last-child{padding-right:0;margin-right:0}.agi-dvw .dw-places li:last-child::after{display:none}

/* --- description, trimmed server-side to a fixed budget --- */
.agi-dvw .dw-desc{
  margin-top:14px;
  font-size:13.5px;line-height:1.72;
  color:var(--cp-stone);
  opacity:.92;
  /* the trim equalises the text; the clamp equalises the BOX, so a long word or a
     narrow column can never make one card taller than its neighbours */
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;
  overflow:hidden;
  min-height:calc(4 * 1.72em);
  overflow-wrap:break-word;
}

/* --- read more --- */
/* A span, not a nested <a>/<button>: the whole plate is already the link to the
   developer page, and nesting an interactive element inside an anchor is invalid
   markup that browsers unnest. This keeps one click target and stays valid. */
.agi-dvw .dw-more{
  display:inline-flex;align-items:center;gap:9px;
  align-self:flex-start;
  margin-top:16px;margin-bottom:18px;
  padding:9px 16px;
  border:1px solid var(--hair-mid);
  font-size:10px;letter-spacing:.2em;text-transform:uppercase;line-height:1;
  color:var(--cp-ochre);
  transition:background-color .4s ease,border-color .4s ease,color .4s ease;
}.agi-dvw .dw-more i{font-style:normal;transition:transform .4s cubic-bezier(.2,.7,.2,1)}.agi-dvw .dw-card:hover .dw-more,.agi-dvw .dw-card:focus-visible .dw-more{
  background:var(--cp-ochre);border-color:var(--cp-ochre);color:var(--cp-graphite);
}.agi-dvw .dw-card:hover .dw-more i{transform:translateX(3px)}

/* margin-top:auto drops the rule to the foot of the card, so every rule in a row
   sits on one line however many lines of communities sit above it */
.agi-dvw .dw-rule{position:relative;display:block;height:1px;margin-top:auto;background:var(--hair)}.agi-dvw .dw-rule::after{
  content:"";position:absolute;left:0;top:0;height:1px;width:100%;
  background:var(--cp-ochre);
  transform:scaleX(0);transform-origin:left center;
  transition:transform .55s cubic-bezier(.2,.7,.2,1);
}

/* --- hover / focus --- */
.agi-dvw .dw-card:hover .dw-rule::after,.agi-dvw .dw-card:focus-visible .dw-rule::after{transform:scaleX(1)}.agi-dvw .dw-card:hover .dw-plate{border-color:var(--hair-mid)}.agi-dvw .dw-card:hover .dw-plate__mark{background:var(--cp-porcelain-100)}.agi-dvw .dw-card:hover .dw-plate__bg img{transform:scale(1.06);opacity:.68}.agi-dvw .dw-card:hover .dw-plate__head .dw-go{transform:translate(3px,-3px);color:var(--cp-porcelain-100)}

/* ============ 6. EMPTY STATE ============ */
.agi-dvw .dw-empty{display:none;border:1px solid var(--hair);padding:clamp(28px,4vw,52px)}html.js .agi-dvw .dw-empty.is-on{display:block}.agi-dvw .dw-empty .dw-ml{color:var(--cp-ochre);margin-bottom:14px}.agi-dvw .dw-empty p{font-family:var(--serif);font-size:clamp(22px,2.4vw,30px);font-weight:300;line-height:1.3;color:var(--cp-porcelain-100)}.agi-dvw .dw-empty button{
  margin-top:22px;background:none;border:0;border-bottom:1px solid var(--hair-mid);
  padding:0 0 6px;font-family:var(--ui);color:var(--cp-stone);cursor:pointer;
  transition:color .3s ease,border-color .3s ease;
}.agi-dvw .dw-empty button:hover{color:var(--cp-porcelain-100);border-bottom-color:var(--hair-up)}

/* ============ 7. FOOT ============ */
.agi-dvw .dw-foot{border-top:1px solid var(--hair)}.agi-dvw .dw-foot__in{
  display:flex;flex-wrap:wrap;gap:14px 40px;justify-content:space-between;
  padding-block:clamp(26px,3vw,38px) clamp(46px,6vw,72px);
  color:var(--cp-stone);
}.agi-dvw .dw-foot__in p{max-width:62ch;font-size:12.5px;line-height:1.7;letter-spacing:.01em;opacity:.85}

/* ============ header entrance ============ */
@keyframes agiDwRise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.agi-dvw .dw-masthead__in > *,.agi-dvw .dw-ribbon__in,.agi-dvw .dw-finder__in{animation:agiDwRise .9s cubic-bezier(.2,.7,.2,1) both}.agi-dvw .dw-masthead__in > *:nth-child(2){animation-delay:.09s}.agi-dvw .dw-ribbon__in{animation-delay:.16s}.agi-dvw .dw-finder__in{animation-delay:.22s}@media (prefers-reduced-motion:reduce){.agi-dvw,.agi-dvw *,.agi-dvw *::before,.agi-dvw *::after{animation:none!important;transition:none!important}html.js .agi-dvw .dw-card{opacity:1;transform:none}.agi-dvw .dw-rule::after{transform:scaleX(0)}.agi-dvw .dw-card:hover .dw-rule::after{transform:scaleX(1)}
}


/* ============================================================
   SINGLE DEVELOPER PAGE
   Ported from the approved design: dark gallery hero + ochre
   figure ribbon, supporting rail, two-column profile, catalogue
   lots on a white ground, private enquiry panel.
   Everything is scoped under .agi-dvp2 so none of it leaks into
   the theme.
   ============================================================ */

/* The theme wraps content in .ast-container (max-width:1240px + 20px padding).
   This design is full-bleed by intent, so the wrapper escapes that box and spans
   the viewport. Widths inside are governed by .shell / the section paddings. */
.agi-dvp2{
  /* Astra's .ast-container is display:flex, so this wrapper is a flex item. With the
     default flex-grow:0 it sized to its CONTENT and left a gap on wide screens.
     Growing it fills the row; min-width:0 stops long content forcing an overflow.
     (No 50vw trick — vw counts the scrollbar and pulled the wrapper off the edge.) */
  flex:1 1 100%;
  min-width:0;
  width:auto;
  margin-inline:0;
}
/* Astra adds its own vertical rhythm around archive content; the sections own it. */
.tax-goyzer_developer .site-content .ast-container{padding-left:0;padding-right:0;max-width:none}
.tax-goyzer_developer .site-main,
.tax-goyzer_developer .ast-archive-description{margin:0;padding:0}

.agi-dvp2{
  --rule-dark:rgba(178,180,178,.24);
  --rule-soft:rgba(178,180,178,.13);
  --shade:rgba(0,0,0,.42);
  --sans:var(--cp-font);
  --serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --gut:clamp(20px,5vw,88px);
  --bay:clamp(56px,8vw,120px);
  --shell:1360px;
  font-family:var(--sans);
  font-weight:300;
  line-height:1.62;
  color:var(--cp-graphite);
}
.agi-dvp2 .shell{max-width:var(--shell);margin-inline:auto;width:100%}
/* ---------- micro labels ---------- */
.agi-dvp2 .mlab{font-size:10px;line-height:1;letter-spacing:.24em;text-transform:uppercase;font-weight:400;color:var(--cp-ochre)}
.agi-dvp2 .mlab--stone{color:var(--cp-stone)}
.agi-dvp2 .mlab--gold7{color:var(--cp-ochre-700)}
/* ---------- reveal (fails open with no JS) ---------- */
html.js .agi-dvp2 .reveal{opacity:0;transform:translateY(18px);transition:opacity .9s cubic-bezier(.22,.61,.36,1),transform .9s cubic-bezier(.22,.61,.36,1)}
html.js .agi-dvp2 .reveal.in{opacity:1;transform:none}
html.js .agi-dvp2 .reveal.d1{transition-delay:.09s}
html.js .agi-dvp2 .reveal.d2{transition-delay:.18s}
html.js .agi-dvp2 .reveal.d3{transition-delay:.27s}
@media (prefers-reduced-motion:reduce){
html.js .agi-dvp2 .reveal, html.js .agi-dvp2 .reveal.in{opacity:1 !important;transform:none !important;transition:none !important}
}
.agi-dvp2 .wordmark{font-size:13px;letter-spacing:.30em;font-weight:400;text-transform:uppercase;white-space:nowrap}
.agi-dvp2 .wordmark i{font-style:normal;color:var(--cp-ochre)}
/* ---------- animated stat icons ----------
   Lottie injects an <svg> that fills its container, so these slots must carry
   explicit dimensions — without them the icon expands to the size of the hero. */
.agi-dvp2 .stat-ico{
  display:block;
  width:30px;height:30px;
  margin:0 0 12px;
  flex:0 0 auto;
  opacity:.92;
}
.agi-dvp2 .stat-ico svg{display:block;width:100%;height:100%}
.agi-dvp2 .enq-ico{
  display:block;
  width:44px;height:44px;
  margin:26px 0 0;
  flex:0 0 auto;
}
.agi-dvp2 .enq-ico svg{display:block;width:100%;height:100%}
@media (max-width:700px){
  .agi-dvp2 .stat-ico{width:24px;height:24px;margin-bottom:8px}
  .agi-dvp2 .enq-ico{width:36px;height:36px;margin-top:18px}
}

/* ---------- hero ---------- */
.agi-dvp2 .hero{position:relative;isolation:isolate;background:var(--cp-graphite);display:flex;flex-direction:column;min-height:min(100svh,940px)}
.agi-dvp2 .hero-media{position:absolute;inset:0;z-index:0;overflow:hidden;background:var(--cp-graphite)}
.agi-dvp2 .hero-media img{
  width:100%;height:100%;object-fit:cover;object-position:50% 44%;
  filter:grayscale(1) contrast(1.06);
  mix-blend-mode:luminosity;opacity:.46;
  transform:scale(1.03);
}
.agi-dvp2 .hero-media::after{
  content:"";position:absolute;inset:0;
  background:
    linear-gradient(180deg,var(--shade) 0%,rgba(0,0,0,0) 30%,rgba(0,0,0,0) 44%,var(--shade) 100%),
    linear-gradient(90deg,rgba(26,60,90,.88) 0%,rgba(26,60,90,.28) 58%,rgba(26,60,90,.62) 100%);
}
.agi-dvp2 .hero-tint{position:absolute;inset:0;z-index:1;background:var(--cp-ochre);opacity:.06;mix-blend-mode:overlay;pointer-events:none}
.agi-dvp2 .hero-body{position:relative;z-index:2;flex:1;display:flex;align-items:flex-end;padding:clamp(120px,15vh,190px) var(--gut) clamp(40px,6vh,74px)}
/* The hero carries the profile in its own column, so a visitor reaches the
   property list without scrolling through a separate prose section. */
.agi-dvp2 .hero-grid{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  grid-template-areas:"id profile" "foot foot";
  column-gap:clamp(32px,5vw,86px);
  row-gap:clamp(24px,3.2vw,42px);
  align-items:end;
}
.agi-dvp2 .hero-id{grid-area:id;display:grid;gap:clamp(20px,2.6vw,34px);align-content:end}
.agi-dvp2 .hero-foot{grid-area:foot}

.agi-dvp2 .hero-profile{
  grid-area:profile;
  align-self:end;
  padding-left:clamp(16px,1.8vw,26px);
  border-left:1px solid var(--rule-dark);
  max-width:60ch;
}
.agi-dvp2 .hero-profile .mlab{display:block;margin-bottom:clamp(10px,1.2vw,16px)}
.agi-dvp2 .hero-profile-copy p{
  margin:0 0 .8em;
  font-size:clamp(13px,.92vw,14.5px);
  line-height:1.72;
  color:rgba(234,232,227,.74);
}
.agi-dvp2 .hero-profile-copy p:last-child{margin-bottom:0}
/* The opening sentence carries a little more presence than the body. */
.agi-dvp2 .hero-profile-copy p:first-child{color:var(--cp-porcelain);font-size:clamp(14px,1.02vw,16px);line-height:1.62}

/* The name no longer needs to hold the full width beside a column of prose. */
.agi-dvp2 .hero-grid .hero-name{max-width:11ch}

@media (max-width:1080px){
  .agi-dvp2 .hero-grid{
    grid-template-columns:1fr;
    grid-template-areas:"id" "profile" "foot";
    align-items:start;
  }
  .agi-dvp2 .hero-profile{
    border-left:0;
    padding-left:0;
    border-top:1px solid var(--rule-dark);
    padding-top:clamp(16px,3vw,24px);
    max-width:none;
  }
  .agi-dvp2 .hero-grid .hero-name{max-width:14ch}
}

.agi-dvp2 .plate-row{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap}
.agi-dvp2 .plate{
  background:var(--cp-porcelain-100);
  border:1px solid var(--cp-stone-200);
  padding:clamp(16px,2vw,24px) clamp(20px,2.4vw,30px);
  width:min(258px,58vw);
  display:grid;place-items:center;position:relative;
}
.agi-dvp2 .plate::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--cp-ochre)}
.agi-dvp2 .plate img{width:100%;max-height:88px;object-fit:contain}
.agi-dvp2 .plate-meta{text-align:right;display:grid;gap:10px;justify-items:end}
.agi-dvp2 .plate-meta .est{font-size:clamp(13px,1.1vw,15px);letter-spacing:.16em;text-transform:uppercase;color:var(--cp-porcelain);font-weight:300}
@media (max-width:640px){
.agi-dvp2 .plate-meta{text-align:left;justify-items:start}
}
.agi-dvp2 .hero-name{
  font-weight:200;
  font-size:clamp(2.55rem,8.2vw,7.4rem);
  line-height:.96;
  letter-spacing:clamp(.012em,.4vw,.045em);
  color:var(--cp-porcelain-100);
  max-width:14ch;
}
.agi-dvp2 .hero-name em{font-style:normal;display:block}
.agi-dvp2 .hero-foot{display:flex;flex-wrap:wrap;align-items:baseline;gap:clamp(14px,2.4vw,40px);justify-content:space-between}
.agi-dvp2 .communities{display:flex;flex-wrap:wrap;gap:clamp(10px,1.4vw,22px);align-items:center}
.agi-dvp2 .communities li{font-size:clamp(12px,1vw,14px);letter-spacing:.14em;text-transform:uppercase;color:var(--cp-porcelain);font-weight:300;display:flex;align-items:center;gap:clamp(10px,1.4vw,22px)}
.agi-dvp2 .communities li+li::before{content:"";width:4px;height:4px;border-radius:50%;background:var(--cp-ochre);display:block;flex:none}
.agi-dvp2 .hero-note{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--cp-stone)}
/* ---------- lead statistics ribbon ---------- */
.agi-dvp2 .ribbon{position:relative;z-index:2;border-top:1px solid var(--rule-dark);background:linear-gradient(180deg,rgba(0,0,0,.16),rgba(0,0,0,.46))}
.agi-dvp2 .ribbon-in{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding-inline:var(--gut)}
.agi-dvp2 .stat{padding:clamp(22px,3vw,38px) clamp(14px,2.2vw,34px) clamp(22px,3vw,34px) 0}
.agi-dvp2 .stat+.stat{border-left:1px solid var(--rule-dark);padding-left:clamp(18px,2.6vw,44px)}
.agi-dvp2 .stat .fig{font-weight:200;color:var(--cp-ochre);font-size:clamp(2.4rem,5.2vw,4.4rem);line-height:1;letter-spacing:.01em;display:flex;align-items:baseline;gap:.3em}
.agi-dvp2 .stat .pre{font-size:clamp(11px,1vw,13px);letter-spacing:.2em;color:var(--cp-stone);font-weight:400;transform:translateY(-.9em)}
.agi-dvp2 .stat .lab{margin-top:clamp(10px,1.2vw,16px);font-size:10px;letter-spacing:.26em;text-transform:uppercase;color:var(--cp-porcelain);font-weight:400}
@media (max-width:720px){
.agi-dvp2 .ribbon-in{grid-template-columns:1fr}
.agi-dvp2 .stat{padding:18px 0;display:flex;align-items:baseline;justify-content:space-between;gap:18px}
.agi-dvp2 .stat+.stat{border-left:0;border-top:1px solid var(--rule-dark);padding-left:0}
.agi-dvp2 .stat .fig{font-size:2.2rem}
.agi-dvp2 .stat .lab{margin-top:0;text-align:right}
}
/* ---------- supporting rail ---------- */
.agi-dvp2 .rail{background:var(--cp-graphite-800);border-top:1px solid var(--rule-dark)}
.agi-dvp2 .rail-in{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1px;background:var(--rule-soft);margin-inline:var(--gut)}
.agi-dvp2 .rail-cell{background:var(--cp-graphite-800);padding:clamp(18px,2vw,26px) clamp(10px,1.6vw,22px)}
.agi-dvp2 .rail-cell .v{font-size:clamp(.98rem,1.5vw,1.35rem);font-weight:300;color:var(--cp-porcelain-100);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agi-dvp2 .rail-cell .v span{font-size:.62em;letter-spacing:.14em;color:var(--cp-ochre);margin-right:.42em;vertical-align:.14em}
.agi-dvp2 .rail-cell .k{margin-top:8px;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--cp-stone)}
@media (max-width:980px){
.agi-dvp2 .rail-in{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:520px){
.agi-dvp2 .rail-in{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* ---------- profile: the bright breath ---------- */
.agi-dvp2 .profile{background:var(--cp-porcelain-100);color:var(--cp-graphite);padding:var(--bay) var(--gut)}
.agi-dvp2 .profile-in{max-width:74ch;margin-inline:auto;text-align:center}
.agi-dvp2 .profile .rule{width:1px;height:clamp(44px,6vw,78px);background:var(--cp-stone-200);margin:0 auto clamp(24px,3vw,36px)}
.agi-dvp2 .lede{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(1.5rem,3.3vw,2.7rem);line-height:1.24;
  color:var(--cp-graphite);margin-top:clamp(20px,2.4vw,30px);
  text-wrap:balance;
}
.agi-dvp2 .profile-copy{margin-top:clamp(34px,4.4vw,58px);text-align:left;max-width:64ch;margin-inline:auto}
.agi-dvp2 .profile-copy p{font-size:clamp(15px,1.08vw,17px);line-height:1.78;color:var(--cp-graphite-600)}
.agi-dvp2 .profile-copy p+p{margin-top:1.35em}
.agi-dvp2 .profile-copy p:first-child::first-letter{
  font-family:var(--serif);font-weight:400;color:var(--cp-ochre-700);
  float:left;font-size:3.5em;line-height:.78;margin:.06em .12em 0 0;
}
.agi-dvp2 .facts{margin-top:clamp(40px,5vw,68px);border-top:1px solid var(--cp-stone-200);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));text-align:left}
.agi-dvp2 .facts div{padding:clamp(18px,2vw,26px) clamp(10px,1.6vw,22px) 0 0}
.agi-dvp2 .facts div+div{border-left:1px solid var(--cp-stone-200);padding-left:clamp(16px,2vw,26px)}
.agi-dvp2 .facts dt{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--cp-ochre-700);margin-bottom:9px}
.agi-dvp2 .facts dd{font-size:clamp(13px,1vw,15px);line-height:1.5;color:var(--cp-graphite)}
@media (max-width:820px){
.agi-dvp2 .facts{grid-template-columns:repeat(2,minmax(0,1fr))}
.agi-dvp2 .facts div:nth-child(odd){border-left:0;padding-left:0}
.agi-dvp2 .facts div:nth-child(n+3){border-top:1px solid var(--cp-stone-200);margin-top:6px}
}
@media (max-width:430px){
.agi-dvp2 .facts{grid-template-columns:1fr}
.agi-dvp2 .facts div{border-left:0 !important;padding-left:0 !important}
.agi-dvp2 .facts div+div{border-top:1px solid var(--cp-stone-200);margin-top:6px}
}
/* ---------- the wall ---------- */
.agi-dvp2 .wall-sec{background:var(--cp-graphite);padding:var(--bay) var(--gut) clamp(70px,8vw,120px)}
.agi-dvp2 .wall-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;padding-bottom:clamp(22px,2.6vw,32px);border-bottom:1px solid var(--rule-dark)}
.agi-dvp2 .wall-title{font-weight:200;font-size:clamp(1.85rem,3.6vw,3rem);line-height:1.06;letter-spacing:.02em;color:var(--cp-porcelain-100);margin-top:14px}
.agi-dvp2 .wall-count{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--cp-stone);white-space:nowrap}
.agi-dvp2 .wall-count b{color:var(--cp-ochre);font-weight:400}
.agi-dvp2 .filters{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;border-bottom:1px solid var(--rule-dark)}
.agi-dvp2 .field{position:relative;padding:clamp(14px,1.6vw,20px) 0;min-width:0}
.agi-dvp2 .field+.field{border-left:1px solid var(--rule-dark);padding-left:clamp(16px,2vw,28px)}
.agi-dvp2 .field label{display:block;font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--cp-stone);margin-bottom:9px}
.agi-dvp2 .field input, .agi-dvp2 .field select{
  width:100%;background:transparent;border:0;border-bottom:1px solid transparent;
  padding:4px 22px 7px 0;font-size:clamp(14px,1.05vw,16px);font-weight:300;
  color:var(--cp-porcelain-100);appearance:none;-webkit-appearance:none;border-radius:0;outline:none;transition:border-color .3s;
}
.agi-dvp2 .field input::placeholder{color:var(--cp-stone);opacity:.7}
.agi-dvp2 .field input:focus, .agi-dvp2 .field select:focus{border-bottom-color:var(--cp-ochre)}
.agi-dvp2 .field select option{background:var(--cp-graphite-800);color:var(--cp-porcelain-100)}
.agi-dvp2 .caret{position:absolute;right:2px;bottom:calc(clamp(14px,1.6vw,20px) + 12px);width:7px;height:7px;border-right:1px solid var(--cp-ochre);border-bottom:1px solid var(--cp-ochre);transform:rotate(45deg);pointer-events:none}
@media (max-width:900px){
.agi-dvp2 .filters{grid-template-columns:1fr 1fr}
.agi-dvp2 .field:nth-child(odd){border-left:0;padding-left:0}
.agi-dvp2 .field:nth-child(even){border-left:1px solid var(--rule-dark);padding-left:clamp(16px,2vw,28px)}
.agi-dvp2 .field:nth-child(n+3){border-top:1px solid var(--rule-dark)}
}
@media (max-width:520px){
.agi-dvp2 .filters{grid-template-columns:1fr}
.agi-dvp2 .field{border-left:0 !important;padding-left:0 !important}
.agi-dvp2 .field+.field{border-top:1px solid var(--rule-dark)}
}
.agi-dvp2 .wall{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(30px,4.2vw,86px) clamp(20px,2.6vw,46px);margin-top:clamp(40px,5vw,78px)}
.agi-dvp2 .lot{grid-column:span 12;min-width:0}
.agi-dvp2 .lot.is-out{display:none}
@media (min-width:1000px){
.agi-dvp2 .lot:nth-child(1){grid-column:span 7}
.agi-dvp2 .lot:nth-child(2){grid-column:span 5;margin-top:clamp(0px,5vw,92px)}
.agi-dvp2 .lot:nth-child(3){grid-column:span 5}
.agi-dvp2 .lot:nth-child(4){grid-column:span 7;margin-top:clamp(0px,3vw,48px)}
}
@media (min-width:640px) and (max-width:999px){
.agi-dvp2 .lot{grid-column:span 6}
.agi-dvp2 .lot:nth-child(even){margin-top:clamp(0px,4vw,42px)}
}
.agi-dvp2 .frame{position:relative;display:block;overflow:hidden;background:var(--cp-graphite-800);border:1px solid var(--rule-soft)}
.agi-dvp2 .frame img{width:100%;height:100%;object-fit:cover;aspect-ratio:3/2;filter:saturate(.86) contrast(1.02);transition:transform 1.1s cubic-bezier(.22,.61,.36,1),filter .8s}
.agi-dvp2 .lot:nth-child(2) .frame img{aspect-ratio:4/5}
.agi-dvp2 .lot:nth-child(3) .frame img{aspect-ratio:1/1}
@media (max-width:999px){
.agi-dvp2 .frame img{aspect-ratio:4/3 !important}
}
.agi-dvp2 .frame::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 44%,var(--shade) 100%);transition:opacity .6s}
.agi-dvp2 .lot:hover .frame img, .agi-dvp2 .lot:focus-within .frame img{transform:scale(1.045);filter:saturate(1) contrast(1.04)}
.agi-dvp2 .badges{position:absolute;top:0;left:0;z-index:3;display:flex;flex-wrap:wrap}
.agi-dvp2 .badge{font-size:10px;letter-spacing:.2em;text-transform:uppercase;padding:9px 14px;font-weight:500;background:var(--cp-ochre);color:var(--cp-graphite)}
.agi-dvp2 .badge--ghost{background:rgba(0,0,0,.5);color:var(--cp-porcelain-100);border:1px solid var(--rule-dark);font-weight:400}
.agi-dvp2 .meta{
  position:absolute;left:0;right:0;bottom:0;z-index:3;
  padding:clamp(15px,1.8vw,24px) clamp(16px,2vw,28px);
  border-top:1px solid var(--rule-dark);
  background:rgba(0,0,0,.55);
  display:flex;flex-wrap:wrap;gap:10px clamp(14px,2vw,28px);align-items:center;
}
.agi-dvp2 .meta span{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--cp-porcelain-100);display:flex;align-items:center;gap:clamp(14px,2vw,28px)}
.agi-dvp2 .meta span+span::before{content:"";width:1px;height:11px;background:var(--rule-dark);display:block;flex:none}
.agi-dvp2 .meta .ref{margin-left:auto;color:var(--cp-ochre);letter-spacing:.2em}
@media (hover:hover) and (min-width:640px){
.agi-dvp2 .meta{transform:translateY(101%);opacity:0;transition:transform .6s cubic-bezier(.22,.61,.36,1),opacity .45s}
.agi-dvp2 .lot:hover .meta, .agi-dvp2 .lot:focus-within .meta{transform:none;opacity:1}
}
.agi-dvp2 .caption{display:flex;align-items:baseline;justify-content:space-between;gap:18px;padding-top:clamp(16px,1.8vw,22px);flex-wrap:wrap}
.agi-dvp2 .caption h3{font-size:clamp(1.1rem,1.7vw,1.55rem);font-weight:300;letter-spacing:.02em;color:var(--cp-porcelain-100);line-height:1.2}
.agi-dvp2 .caption .loc{margin-top:7px;font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--cp-stone)}
.agi-dvp2 .caption .price{font-size:clamp(1rem,1.35vw,1.28rem);font-weight:300;color:var(--cp-ochre);letter-spacing:.03em;white-space:nowrap}
.agi-dvp2 .caption .price small{font-size:.62em;letter-spacing:.18em;color:var(--cp-stone);margin-right:.5em}
.agi-dvp2 .empty{grid-column:1/-1;padding:56px 0;border-top:1px solid var(--rule-dark);color:var(--cp-stone);font-size:12px;letter-spacing:.16em;text-transform:uppercase}
/* ---------- enquiry ---------- */
.agi-dvp2 .enq{background:var(--cp-graphite-600);padding:var(--bay) var(--gut)}
.agi-dvp2 .enq-grid{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:clamp(36px,5vw,90px);align-items:start}
@media (max-width:900px){
.agi-dvp2 .enq-grid{grid-template-columns:minmax(0,1fr);gap:40px}
}
.agi-dvp2 .enq h2{font-weight:200;font-size:clamp(1.85rem,3.4vw,2.9rem);line-height:1.08;letter-spacing:.02em;color:var(--cp-porcelain-100);margin-top:16px;max-width:16ch}
.agi-dvp2 .enq .said{margin-top:22px;color:var(--cp-stone);font-size:clamp(14px,1.02vw,16px);line-height:1.75;max-width:44ch}
.agi-dvp2 .enq .direct{margin-top:clamp(28px,3vw,40px);border-top:1px solid var(--rule-dark);padding-top:20px;display:grid;gap:7px;justify-items:start}
.agi-dvp2 .enq .direct a{font-size:clamp(14px,1.1vw,17px);letter-spacing:.06em;color:var(--cp-porcelain-100);transition:color .3s}
.agi-dvp2 .enq .direct a:hover{color:var(--cp-ochre)}
.agi-dvp2 .form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(20px,3vw,44px)}
.agi-dvp2 .ff{position:relative;padding-top:clamp(20px,2.4vw,30px);border-top:1px solid var(--rule-dark);min-width:0}
.agi-dvp2 .ff--wide{grid-column:1/-1}
.agi-dvp2 .ff label{display:block;font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--cp-ochre);margin-bottom:10px}
.agi-dvp2 .ff input, .agi-dvp2 .ff select, .agi-dvp2 .ff textarea{
  width:100%;background:transparent;border:0;border-bottom:1px solid var(--rule-dark);
  padding:6px 22px 14px 0;font-size:clamp(15px,1.05vw,16.5px);font-weight:300;color:var(--cp-porcelain-100);
  appearance:none;-webkit-appearance:none;border-radius:0;outline:none;transition:border-color .35s;
}
.agi-dvp2 .ff textarea{resize:vertical;min-height:96px;line-height:1.6}
.agi-dvp2 .ff input::placeholder, .agi-dvp2 .ff textarea::placeholder{color:var(--cp-stone);opacity:.55}
.agi-dvp2 .ff input:focus, .agi-dvp2 .ff select:focus, .agi-dvp2 .ff textarea:focus{border-bottom-color:var(--cp-ochre)}
.agi-dvp2 .ff select option{background:var(--cp-graphite-600);color:var(--cp-porcelain-100)}
.agi-dvp2 .ff .caret{bottom:20px}
@media (max-width:620px){
.agi-dvp2 .form{grid-template-columns:minmax(0,1fr)}
.agi-dvp2 .ff--wide{grid-column:auto}
}
.agi-dvp2 .actions{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-top:clamp(30px,3.4vw,44px)}
.agi-dvp2 .submit{
  background:var(--cp-ochre);color:var(--cp-graphite);border:1px solid var(--cp-ochre);
  padding:17px clamp(28px,3.6vw,54px);font-size:11px;letter-spacing:.24em;text-transform:uppercase;font-weight:500;
  cursor:pointer;border-radius:0;transition:background .35s,color .35s;
}
.agi-dvp2 .submit:hover, .agi-dvp2 .submit:focus-visible{background:transparent;color:var(--cp-ochre)}
.agi-dvp2 .consent{font-size:11px;letter-spacing:.1em;color:var(--cp-stone);max-width:40ch;line-height:1.6}
.agi-dvp2 .formnote{grid-column:1/-1;margin-top:22px;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--cp-ochre)}
/* ===== ported from Option A: catalogue lots, set on a white ground ===== */
.agi-dvp2 .bs-listings{background:#fff;padding:clamp(48px,7vw,104px) 0}
.agi-dvp2 .bs-listings > *{width:min(1280px,calc(100% - clamp(40px,8vw,96px)));margin-inline:auto}
/* ---------- shared type ---------- */
.agi-dvp2 .bs-micro{
  font-size:10px;
  letter-spacing:.22em;
  text-transform:uppercase;
  font-weight:400;
  line-height:1.4;
  color:var(--cp-graphite);
  margin:0;
}
.agi-dvp2 .bs-micro-ochre{color:var(--cp-ochre-700)}
.agi-dvp2 .bs-micro-stone{color:var(--cp-stone)}
.agi-dvp2 .bs-numeral{
  font-family:var(--serif);
  font-size:clamp(20px,2vw,26px);
  line-height:1;
  color:var(--cp-ochre-700);
  font-weight:500;
}
.agi-dvp2 .bs-kicker{
  display:flex;align-items:center;gap:clamp(10px,1.5vw,20px);
  border-bottom:1px solid var(--cp-graphite);
  padding-bottom:10px;
  margin-bottom:clamp(24px,3vw,44px);
}
.agi-dvp2 .bs-kicker .bs-flex-rule{flex:1 1 auto;height:1px;background:var(--cp-stone-200);min-width:12px}
.agi-dvp2 .bs-kicker .bs-micro{white-space:nowrap}
.agi-dvp2 .bs-kicker .bs-tail{display:none}
@media(min-width:760px){
.agi-dvp2 .bs-kicker .bs-tail{display:block}
}
.agi-dvp2 .bs-lead-cell .bs-note{margin:1.2em 0 0;margin-top:auto;padding-top:18px;font-size:12.5px;color:var(--cp-stone);letter-spacing:.015em;line-height:1.5;max-width:30ch}
@media(max-width:560px){
.agi-dvp2 .bs-index-head .bs-micro-stone{display:none}
}
/* ---------- listings ---------- */
.agi-dvp2 .bs-listings{padding:clamp(40px,5vw,72px) 0 clamp(30px,4vw,56px);border-top:1px solid var(--cp-stone-200)}
.agi-dvp2 .bs-filters{
  display:grid;grid-template-columns:1fr;gap:1px;
  background:var(--cp-stone-200);
  border:1px solid var(--cp-stone-200);
  margin-bottom:clamp(16px,1.8vw,22px);
}
@media(min-width:620px){
.agi-dvp2 .bs-filters{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(min-width:620px) and (max-width:999px){
.agi-dvp2 .bs-field-submit{grid-column:1 / -1}
}
@media(min-width:1000px){
.agi-dvp2 .bs-filters{grid-template-columns:1.5fr 1fr 1fr 1fr auto}
}
.agi-dvp2 .bs-field{background:var(--cp-porcelain-100);padding:11px clamp(12px,1.3vw,18px) 12px;display:flex;flex-direction:column;gap:7px;min-width:0}
.agi-dvp2 .bs-field label{color:var(--cp-ochre-700)}
.agi-dvp2 .bs-field input, .agi-dvp2 .bs-field select{
  border:0;background:transparent;padding:0;width:100%;
  font-size:15px;font-weight:300;color:var(--cp-graphite);
  letter-spacing:.01em;
}
.agi-dvp2 .bs-field input::placeholder{color:var(--cp-stone);opacity:1}
.agi-dvp2 .bs-field select{appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:18px;background-image:linear-gradient(45deg,transparent 49%,var(--cp-graphite) 50%,var(--cp-graphite) 56%,transparent 57%),linear-gradient(-45deg,transparent 49%,var(--cp-graphite) 50%,var(--cp-graphite) 56%,transparent 57%);background-size:6px 6px;background-position:right 4px center,right 0 center;background-repeat:no-repeat}
.agi-dvp2 .bs-field-submit{background:var(--cp-graphite);display:flex}
.agi-dvp2 .bs-field-submit button{
  background:transparent;border:0;color:var(--cp-porcelain-100);
  padding:16px clamp(20px,2.4vw,34px);width:100%;cursor:pointer;
  font-size:10px;letter-spacing:.24em;text-transform:uppercase;
  transition:background .35s ease,color .35s ease;
}
.agi-dvp2 .bs-field-submit button:hover{background:var(--cp-ochre-700)}
.agi-dvp2 .bs-result-line{display:flex;justify-content:space-between;align-items:baseline;gap:14px;flex-wrap:wrap;padding-bottom:clamp(18px,2vw,28px)}
.agi-dvp2 .bs-reset{border:0;background:transparent;cursor:pointer;color:var(--cp-ochre-700);padding:0;font-size:10px;letter-spacing:.22em;text-transform:uppercase;border-bottom:1px solid var(--cp-stone-200);transition:border-color .3s ease}
.agi-dvp2 .bs-reset:hover{border-color:var(--cp-ochre-700)}
.agi-dvp2 .bs-lot{
  display:grid;grid-template-columns:1fr;row-gap:16px;
  border-top:1px solid var(--cp-graphite);
  padding:clamp(20px,2.4vw,30px) 0 clamp(24px,3vw,38px);
}
.agi-dvp2 .bs-lot:first-of-type{border-top-width:4px}
.agi-dvp2 .bs-lot.bs-is-hidden{display:none}
.agi-dvp2 .bs-lot-no{display:flex;align-items:baseline;gap:10px}
.agi-dvp2 .bs-lot-no .bs-n{font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1;font-family:var(--serif);font-size:clamp(30px,3.4vw,44px);line-height:.9;color:var(--cp-graphite);transition:color .4s ease}
.agi-dvp2 .bs-lot:hover .bs-lot-no .bs-n{color:var(--cp-ochre-700)}
.agi-dvp2 .bs-lot-img{position:relative;overflow:hidden;background:var(--cp-porcelain);align-self:start}
.agi-dvp2 .bs-lot-img img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/3;transition:transform 1.1s cubic-bezier(.22,.61,.2,1)}
.agi-dvp2 .bs-lot:hover .bs-lot-img img{transform:scale(1.045)}
.agi-dvp2 .bs-badges{position:absolute;top:0;left:0;display:flex;flex-direction:column;align-items:flex-start}
.agi-dvp2 .bs-badge{padding:7px 12px 6px;font-size:9.5px;letter-spacing:.2em;text-transform:uppercase}
.agi-dvp2 .bs-badge-offplan{background:var(--cp-graphite);color:var(--cp-porcelain-100)}
.agi-dvp2 .bs-badge-handover{background:var(--cp-porcelain-100);color:var(--cp-ochre-700);border:1px solid var(--cp-ochre);border-top:0}
.agi-dvp2 .bs-lot-body{min-width:0}
.agi-dvp2 .bs-lot-name{
  font-family:var(--serif);font-size:clamp(27px,3vw,40px);line-height:1.06;
  letter-spacing:-0.015em;margin:9px 0 4px;font-weight:400;
}
.agi-dvp2 .bs-lot-name a{background-image:linear-gradient(var(--cp-ochre-700),var(--cp-ochre-700));background-repeat:no-repeat;background-position:0 100%;background-size:0 1px;transition:background-size .5s cubic-bezier(.22,.61,.2,1)}
.agi-dvp2 .bs-lot:hover .bs-lot-name a, .agi-dvp2 .bs-lot-name a:hover{background-size:100% 1px}
.agi-dvp2 .bs-specs{display:grid;grid-template-columns:1fr;margin-top:clamp(14px,1.6vw,20px)}
@media(min-width:520px) and (max-width:719px){
.agi-dvp2 .bs-specs{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(18px,2.4vw,40px)}
}
.agi-dvp2 .bs-spec{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:9px 0 8px;border-top:1px solid var(--cp-stone-200);min-width:0}
.agi-dvp2 .bs-spec .bs-v{font-size:14.5px;color:var(--cp-graphite);text-align:right;letter-spacing:.01em;font-weight:400}
.agi-dvp2 .bs-spec .bs-v.bs-muted{color:var(--cp-stone)}
.agi-dvp2 .bs-lot-price{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.agi-dvp2 .bs-lot-price .bs-amount{margin:0;font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1;font-family:var(--serif);font-size:clamp(30px,3.3vw,42px);line-height:.92;color:var(--cp-graphite);display:flex;align-items:baseline;gap:.3em}
.agi-dvp2 .bs-lot-price .bs-amount .bs-cur{font-family:var(--sans);font-size:10px;letter-spacing:.2em;color:var(--cp-ochre-700);transform:translateY(-0.95em)}
.agi-dvp2 .bs-psf{padding-top:11px;border-top:1px solid var(--cp-stone-200);width:100%;display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.agi-dvp2 .bs-psf .bs-v{font-size:13.5px;color:var(--cp-graphite)}
.agi-dvp2 .bs-lot-cta{
  display:inline-block;border:1px solid var(--cp-graphite);
  padding:12px 20px;font-size:10px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--cp-graphite);transition:background .38s ease,color .38s ease,border-color .38s ease;
  align-self:stretch;text-align:center;
}
.agi-dvp2 .bs-lot-cta:hover{background:var(--cp-graphite);color:var(--cp-porcelain-100)}
@media(min-width:720px){
.agi-dvp2 .bs-lot{grid-template-columns:clamp(52px,5.2vw,74px) minmax(0,262px) minmax(0,1fr);column-gap:clamp(18px,2.4vw,36px)}
.agi-dvp2 .bs-lot-no{grid-column:1;grid-row:1}
.agi-dvp2 .bs-lot-img{grid-column:2;grid-row:1 / span 2}
.agi-dvp2 .bs-lot-body{grid-column:3;grid-row:1}
.agi-dvp2 .bs-lot-price{grid-column:3;grid-row:2;border-top:1px solid var(--cp-graphite);padding-top:16px;flex-direction:row;flex-wrap:wrap;align-items:flex-end;gap:clamp(16px,2vw,30px)}
.agi-dvp2 .bs-psf{width:auto;border-top:0;padding-top:0;flex-direction:column;gap:7px;align-items:flex-start}
.agi-dvp2 .bs-lot-cta{align-self:flex-end;margin-left:auto}
}
@media(min-width:1120px){
.agi-dvp2 .bs-specs{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(18px,2.4vw,40px)}
.agi-dvp2 .bs-lot{grid-template-columns:clamp(62px,5.6vw,90px) minmax(0,330px) minmax(0,1fr) minmax(0,224px)}
.agi-dvp2 .bs-lot-body{grid-column:3;grid-row:1 / span 2}
.agi-dvp2 .bs-lot-price{grid-column:4;grid-row:1 / span 2;border-top:0;padding-top:0;padding-left:clamp(18px,2vw,30px);border-left:1px solid var(--cp-stone-200);flex-direction:column;align-items:stretch;gap:14px}
.agi-dvp2 .bs-psf{flex-direction:row;justify-content:space-between;align-items:baseline;border-top:1px solid var(--cp-stone-200);padding-top:12px;width:100%}
.agi-dvp2 .bs-lot-cta{margin-left:0;margin-top:auto}
}
.agi-dvp2 .bs-no-results{margin:0;display:none;border-top:1px solid var(--cp-graphite);padding:clamp(34px,5vw,64px) 0;font-family:var(--serif);font-size:clamp(20px,2.2vw,28px);color:var(--cp-stone)}
.agi-dvp2 .bs-no-results.bs-is-on{display:block}
.agi-dvp2 .bs-lots-foot{border-top:4px solid var(--cp-graphite);padding-top:13px;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap}
/* ---------- motion ---------- */
html.js .agi-dvp2 .bs-rv{opacity:0;transform:translateY(14px);transition:opacity .8s cubic-bezier(.22,.61,.2,1),transform .8s cubic-bezier(.22,.61,.2,1)}
html.js .agi-dvp2 .bs-rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
html.js .agi-dvp2 .bs-rv{opacity:1;transform:none;transition:none}
}
/* Small screens: collapse the lot ledger to a single column and let long
   micro-labels wrap rather than forcing the page wider. */
@media (max-width:760px){
.agi-dvp2 .bs-lot{grid-template-columns:1fr !important;row-gap:14px}
.agi-dvp2 .bs-lot-no{display:flex;align-items:baseline;gap:10px}
.agi-dvp2 .bs-tail{white-space:normal}
.agi-dvp2 .bs-kicker{flex-wrap:wrap;row-gap:8px}
.agi-dvp2 .bs-filters{grid-template-columns:1fr !important}
}
/* --- Profile: two-column spread, so the properties sit higher on the page. --- */
.agi-dvp2 .profile-in{max-width:min(1180px,100%)}
.agi-dvp2 .profile .rule{height:clamp(28px,3.4vw,44px);margin-bottom:clamp(14px,1.8vw,22px)}
.agi-dvp2 .profile-spread{
  display:grid;
  /* The statement takes the narrower column; the prose earns the wider one. */
  grid-template-columns:minmax(0,5fr) minmax(0,7fr);
  gap:clamp(28px,4vw,64px);
  align-items:start;
  text-align:left;
  margin-top:clamp(18px,2.4vw,30px);
}
.agi-dvp2 .profile-spread .lede{
  margin:0;
  font-size:clamp(1.35rem,2.3vw,2rem);
  line-height:1.2;
  text-wrap:balance;
  /* An ochre hairline ties the statement to the prose beside it. */
  padding-left:clamp(14px,1.6vw,22px);
  border-left:2px solid var(--cp-ochre);
}
.agi-dvp2 .profile-spread .profile-copy{margin:0}
.agi-dvp2 .profile-spread .profile-copy p{margin:0 0 .85em;font-size:clamp(14px,1.02vw,15.5px);line-height:1.72}
.agi-dvp2 .profile-spread .profile-copy p:last-child{margin-bottom:0}
.agi-dvp2 .profile .facts{margin-top:clamp(26px,3.2vw,42px)}
@media (max-width:860px){
.agi-dvp2 .profile-spread{grid-template-columns:1fr;gap:20px}
.agi-dvp2 .profile-spread .lede{font-size:clamp(1.25rem,4.6vw,1.6rem)}
}

/* ============================================================
   ONE-SCREEN HERO  (desktop only)
   The hero, its profile column and the figure ribbon together fill
   one viewport below the fixed 108px site header, so the first
   scroll lands on the property list. Type is sized against BOTH
   width and height — min(vw,vh) — so a short laptop screen shrinks
   the display type instead of pushing the ribbon off screen.
   Scoped to >=1081px: below that the layout stacks and has its own
   rhythm, and these rules must not override the mobile ribbon.
   ============================================================ */
@media (min-width:1081px){
  .agi-dvp2 .hero{
    /* --hdr is declared on the wrapper, not here: JS sets it there from the real
       header height, and a local declaration would shadow that inherited value. */
    min-height:calc(100svh - var(--hdr, 108px));
    justify-content:space-between;
  }
  .agi-dvp2 .hero-body{
    padding-top:clamp(26px,4.5vh,60px);
    padding-bottom:clamp(18px,3vh,34px);
    align-items:center;
  }
  .agi-dvp2 .hero-grid{row-gap:clamp(14px,2.2vh,30px)}
  .agi-dvp2 .hero-id{gap:clamp(12px,2vh,26px)}
  .agi-dvp2 .plate{width:clamp(96px,11vh,140px);padding:clamp(10px,1.4vh,18px)}

  .agi-dvp2 .hero-grid .hero-name{
    font-size:clamp(2.1rem,min(5.6vw,8.4vh),5.1rem);
    line-height:.98;
    max-width:12ch;
  }

  .agi-dvp2 .hero-profile{max-width:66ch}
  .agi-dvp2 .hero-profile-copy p{
    font-size:clamp(12.5px,min(.86vw,1.62vh),15px);
    line-height:1.66;
  }
  .agi-dvp2 .hero-profile-copy p:first-child{
    font-size:clamp(13px,min(.94vw,1.78vh),16px);
    line-height:1.56;
  }

  /* The ribbon is the floor of the hero, not a separate band. */
  .agi-dvp2 .ribbon{flex:0 0 auto}
  .agi-dvp2 .ribbon-in{padding-block:clamp(14px,2.4vh,30px)}
  .agi-dvp2 .stat .fig{font-size:clamp(1.9rem,min(4.2vw,6.2vh),3.9rem)}
  .agi-dvp2 .stat .lab{margin-top:clamp(6px,1vh,14px);font-size:clamp(9px,1.1vh,11px)}

  /* No short-screen escape is needed: min-height fills the viewport when the
     content is shorter, and the box simply grows when the content is taller —
     it can never clip. Releasing it made the hero collapse on a 768px screen. */
}

/* Touch targets on the developer page. The ported design sets its own field
   sizing, which lands at 40-42px on a phone; everything interactive clears 44px
   here, and inputs sit at 16px so iOS does not zoom the page on focus. */
@media (max-width:640px){
	.agi-dvp2 #filters input,
	.agi-dvp2 #filters select,
	.agi-dvp2 #filters button,
	.agi-dvp2 .form input,
	.agi-dvp2 .form select{
		min-height:46px;
	}
	.agi-dvp2 .form textarea{min-height:96px}
	.agi-dvp2 .form .submit,
	.agi-dvp2 .bs-reset,
	.agi-dvp2 .bs-lot-cta{
		min-height:48px;
		display:inline-flex;
		align-items:center;
		justify-content:center;
	}
	.agi-dvp2 #filters input,
	.agi-dvp2 .form input,
	.agi-dvp2 .form textarea{font-size:16px}
}

/* --------------------------------- developer card on a listing page ---- */

.cp-dev-card {
	background: #fff;
	border: 1px solid var(--cp-stone-200, #D8D9D7);
	padding: 18px;
	margin-bottom: 16px;
}

.cp-dev-eyebrow {
	font-size: 10px;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--cp-ochre-700, #A8894C);
	margin-bottom: 12px;
}

.cp-dev-top {
	display: flex;
	align-items: center;
	gap: 14px;
	text-decoration: none;
	color: inherit;
}

.cp-dev-logo {
	flex: 0 0 auto;
	width: 54px;
	height: 54px;
	display: flex;
	align-items: center;
	justify-content: center;
	border: 1px solid var(--cp-stone-200, #D8D9D7);
	overflow: hidden;
}

.cp-dev-logo img { max-width: 82%; max-height: 82%; object-fit: contain; }
.cp-dev-id { display: flex; flex-direction: column; gap: 3px; }

.cp-dev-name {
	font-size: 16px;
	color: var(--cp-graphite, #1A3C5A);
	line-height: 1.2;
}

.cp-dev-founded { font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: #8A8C8A; }

.cp-dev-more {
	display: inline-block;
	margin-top: 14px;
	padding-top: 12px;
	border-top: 1px solid var(--cp-stone-200, #D8D9D7);
	width: 100%;
	font-size: 12px;
	color: var(--cp-graphite, #1A3C5A);
	text-decoration: none;
	transition: color .25s ease;
}

.cp-dev-more:hover { color: var(--cp-ochre-700, #A8894C); }

/* Touch targets. Everything interactive clears 44px on a phone — measured at 375px,
   where the default padding alone left fields and buttons at 35-41px. */
@media (max-width: 640px) {
	.agi-dvp-f input,
	.agi-dvp-f select,
	.agi-dvp-form input,
	.agi-dvp-form select {
		min-height: 46px;
	}

	.agi-dvp-form-btn,
	.agi-dvp-reset {
		min-height: 48px;
		display: inline-flex;
		align-items: center;
		justify-content: center;
	}

	.agi-dvp-form textarea { min-height: 96px; }

	/* The archive's clear and reset are text buttons; give them a real target.
	   (Its search field is set in a display size well over 16px, so iOS will not
	   zoom the page on focus and needs no override here.) */
	.agi-dvw .dw-finder__clear,
	.agi-dvw .dw-empty button {
		min-height: 44px;
		display: inline-flex;
		align-items: center;
	}

	.agi-dvp-f input,
	.agi-dvp-form input,
	.agi-dvp-form textarea { font-size: 16px; }
}

@media (prefers-reduced-motion: reduce) {
	.agi-dvp-card-link,
	.agi-dvp-card-img img { transition: none; }
	.agi-dvp-card-link:hover { transform: none; }
	.agi-dvp-card-link:hover .agi-dvp-card-img img { transform: none; }
}
