/* ==========================================================
   EMPYR LIVINGS — white / navy-blue / gold
   ========================================================== */

*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }

:root{
  --navy:#0B2545;
  --navy-deep:#071A33;
  --blue:#1B4A8A;
  --blue-soft:#EAF1FA;
  --gold:#B8912F;
  --gold-light:#D9B65C;
  --gold-wash:#FBF6E9;
  --ink:#22303F;
  --muted:#5D6B7A;
  --slate:#5D6B7A;
  --line:#E3E8EF;
  --border-soft:#E3E8EF;
  --bg:#FFFFFF;
  --bg-alt:#F7F9FC;
  --radius:14px;
  --shadow:0 1px 2px rgba(11,37,69,.05), 0 8px 24px rgba(11,37,69,.06);
  --shadow-lg:0 12px 40px rgba(11,37,69,.12);
}

html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  font-family:'Inter',system-ui,sans-serif;
  background:var(--bg); color:var(--ink);
  line-height:1.6; overflow-x:hidden;
  padding-top:72px;
}
img{ max-width:100%; display:block; }
a{ color:var(--blue); }
:focus-visible{ outline:3px solid var(--gold); outline-offset:2px; }
.serif{ font-family:'Playfair Display',Georgia,serif; }
#bg-canvas{ display:none; }

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

.wrap{ max-width:1180px; margin:0 auto; padding:0 28px; }
section{ padding:76px 0; }
.sec-head{ margin-bottom:38px; max-width:60ch; }
.sec-head.center{ margin-left:auto; margin-right:auto; text-align:center; }
.sec-head h2{
  font-family:'Playfair Display',Georgia,serif;
  font-size:clamp(1.7rem,3.2vw,2.4rem); font-weight:600;
  color:var(--navy); line-height:1.18; letter-spacing:-.01em;
}
.sec-head p{ margin-top:12px; color:var(--muted); font-size:1rem; }
.eyebrow{
  font-size:.74rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--gold); font-weight:600; margin-bottom:10px;
}
.tint{ background:var(--bg-alt); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }

/* ---------- nav ---------- */
nav{
  position:fixed; top:0; left:0; right:0; z-index:100;
  display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding:0 28px; height:72px;
  background:rgba(255,255,255,.96); backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
}
.logo{
  font-family:'Playfair Display',Georgia,serif; font-size:1.32rem; font-weight:600;
  color:var(--navy); text-decoration:none; letter-spacing:-.01em; flex-shrink:0; line-height:1.1;
}
.logo span{ color:var(--gold); font-style:italic; }
.nav-center{ display:flex; gap:22px; align-items:center; }
.nav-center a{
  font-size:.86rem; font-weight:500; color:var(--ink);
  text-decoration:none; padding:6px 0; border-bottom:2px solid transparent;
  transition:color .16s, border-color .16s; white-space:nowrap;
}
.nav-center a:hover{ color:var(--blue); }
.nav-center a.active{ color:var(--navy); border-bottom-color:var(--gold); }
.nav-cta{
  background:var(--gold); color:#fff; font-size:.85rem; font-weight:600;
  padding:11px 22px; border-radius:100px; text-decoration:none;
  white-space:nowrap; flex-shrink:0; transition:background .18s;
}
.nav-cta:hover{ background:#9E7B24; }
.nav-hamburger{
  display:none; flex-direction:column; gap:5px; cursor:pointer;
  background:none; border:0; padding:8px;
}
.nav-hamburger span{ display:block; width:24px; height:2px; background:var(--navy); border-radius:2px; transition:transform .28s, opacity .2s; }
.nav-hamburger.open span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.nav-hamburger.open span:nth-child(2){ opacity:0; }
.nav-hamburger.open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }
.nav-mobile-menu{
  display:none; position:fixed; inset:72px 0 0 0; z-index:99;
  background:#fff; flex-direction:column; align-items:stretch;
  padding:26px 28px; gap:2px; overflow-y:auto;
}
.nav-mobile-menu.open{ display:flex; }
.nav-mobile-menu a{
  font-size:1.06rem; font-weight:500; color:var(--navy); text-decoration:none;
  padding:15px 0; border-bottom:1px solid var(--line);
}
.nav-mobile-menu .mob-cta{
  margin-top:20px; background:var(--gold); color:#fff; text-align:center;
  border:0; border-radius:100px; padding:15px; font-weight:600;
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  font-size:.9rem; font-weight:600; padding:13px 26px; border-radius:100px;
  border:1.5px solid var(--navy); color:var(--navy); background:#fff;
  text-decoration:none; cursor:pointer; min-height:46px; font-family:inherit;
  transition:background .18s,color .18s,border-color .18s,transform .12s;
}
.btn:hover{ background:var(--navy); color:#fff; }
.btn:active{ transform:translateY(1px); }
.btn-solid{ background:var(--gold); border-color:var(--gold); color:#fff; }
.btn-solid:hover{ background:#9E7B24; border-color:#9E7B24; color:#fff; }
.btn-ghost{ background:transparent; border-color:var(--line); color:var(--navy); }
.btn-ghost:hover{ background:var(--blue-soft); border-color:var(--blue); color:var(--navy); }
.btn-block{ width:100%; }

/* ---------- hero ---------- */
.hero{
  position:relative;
  background:linear-gradient(168deg,#0B2545 0%,#123A6B 55%,#0B2545 100%);
  background-color:var(--navy);
  color:#fff; text-align:center; padding:92px 28px 84px;
}
.hero::after{
  content:''; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(75% 55% at 50% 0%, rgba(184,145,47,.22), transparent 70%);
}
.hero.hero-photo::after{ background:none; }
.hero.hero-photo{ background-attachment:scroll; }
.hero > *{ position:relative; z-index:1; }
.hero-eyebrow{
  display:inline-block; font-size:.72rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--gold-light); font-weight:600; margin-bottom:20px;
  border:1px solid rgba(217,182,92,.4); border-radius:100px; padding:6px 16px;
}
.hero h1{
  font-family:'Playfair Display',Georgia,serif; font-weight:600;
  font-size:clamp(2.2rem,5.4vw,3.9rem); line-height:1.1; color:#fff;
  letter-spacing:-.015em; max-width:16ch; margin:0 auto;
}
.hero h1 em{ color:var(--gold-light); font-style:italic; }
.hero-sub{ margin:22px auto 30px; max-width:52ch; color:rgba(255,255,255,.82); font-size:1.03rem; }
.hero-actions{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; }
.hero .btn{ background:#fff; border-color:#fff; color:var(--navy); }
.hero .btn:hover{ background:var(--gold); border-color:var(--gold); color:#fff; }
.hero .btn-solid{ background:var(--gold); border-color:var(--gold); color:#fff; }
.hero .btn-solid:hover{ background:#fff; border-color:#fff; color:var(--navy); }
.hero-scroll{ display:none; }

.hero-search{ display:flex; gap:10px; max-width:560px; margin:0 auto 16px; }
.hero-search input{
  flex:1; font-family:inherit; font-size:1rem; color:var(--ink);
  padding:15px 20px; border:0; border-radius:100px; background:#fff;
  box-shadow:0 6px 22px rgba(7,26,51,.22);
}
.hero-search input::placeholder{ color:#9AA7B4; }
.hero-search input:focus{ outline:none; box-shadow:0 0 0 3px var(--gold), 0 6px 22px rgba(7,26,51,.22); }
.hero-search .btn{ flex-shrink:0; }
.hero .hero-search .btn-solid{ background:var(--gold); border-color:var(--gold); color:#fff; }
.hero .hero-search .btn-solid:hover{ background:#9E7B24; border-color:#9E7B24; color:#fff; }

.hero-quick{ display:flex; flex-wrap:wrap; gap:8px; justify-content:center; margin-bottom:28px; }
.hero-quick a{
  font-size:.82rem; font-weight:500; text-decoration:none; color:rgba(255,255,255,.9);
  border:1px solid rgba(255,255,255,.28); border-radius:100px; padding:7px 15px;
  transition:background .16s, border-color .16s;
}
.hero-quick a:hover{ background:rgba(255,255,255,.14); border-color:rgba(255,255,255,.5); }

/* ---------- page hero ---------- */
.page-hero{ padding:56px 28px 30px; max-width:1180px; margin:0 auto; }
.page-hero h1{
  font-family:'Playfair Display',Georgia,serif; font-weight:600;
  font-size:clamp(1.9rem,4vw,2.9rem); color:var(--navy); line-height:1.14; letter-spacing:-.01em;
}
.page-hero p{ margin-top:14px; color:var(--muted); max-width:62ch; font-size:1.02rem; }

/* ---------- panels ---------- */
.panels{ display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:20px; }
.panel{
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  padding:26px 24px; text-decoration:none; color:inherit; display:block;
  transition:border-color .18s, box-shadow .18s, transform .18s;
}
a.panel:hover{ border-color:var(--gold); box-shadow:var(--shadow); transform:translateY(-3px); }
.panel h3{
  font-family:'Playfair Display',Georgia,serif; font-size:1.24rem; font-weight:600;
  color:var(--navy); margin-bottom:8px;
}
.panel p{ color:var(--muted); font-size:.92rem; }
.panel .count{
  display:inline-block; margin-top:16px; font-size:.8rem; font-weight:600;
  color:var(--gold); background:var(--gold-wash); border-radius:100px; padding:5px 13px;
}

/* ---------- cards ---------- */
.grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(270px,1fr)); gap:22px; }
.card{
  position:relative;
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  overflow:hidden; text-decoration:none; color:inherit;
  display:flex; flex-direction:column;
  transition:box-shadow .2s, transform .2s, border-color .2s;
}
.card:hover{ box-shadow:var(--shadow-lg); transform:translateY(-4px); border-color:#D6DEE9; }
.card-art{ position:relative; aspect-ratio:4/3; overflow:hidden; background:var(--bg-alt); display:block; }
.card-art img{ width:100%; height:100%; object-fit:cover; transition:transform .5s; }
.card:hover .card-art img{ transform:scale(1.04); }
.art-fallback{
  width:100%; height:100%; display:flex; align-items:center; justify-content:center;
  font-family:'Playfair Display',Georgia,serif; font-size:2.6rem; color:rgba(255,255,255,.9);
}
.badge{
  position:absolute; top:14px; left:14px; z-index:2;
  font-size:.7rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  padding:6px 13px; border-radius:100px; color:#fff; background:var(--navy);
}
.badge-new{ background:var(--gold); }
.badge-uc{ background:var(--blue); }
.badge-ready{ background:#1C7A55; }
.card-body{ padding:20px 22px 22px; display:flex; flex-direction:column; flex:1; }
.card-body h3{
  font-family:'Playfair Display',Georgia,serif; font-size:1.2rem; font-weight:600;
  color:var(--navy); line-height:1.25;
}
.card-loc{ font-size:.84rem; color:var(--muted); margin-top:5px; }
.card-meta{ display:flex; flex-wrap:wrap; gap:8px; margin:14px 0; font-size:.78rem; color:var(--ink); }
.card-meta span{ background:var(--bg-alt); border:1px solid var(--line); border-radius:100px; padding:5px 11px; }
.card-price{
  display:flex; align-items:flex-end; justify-content:space-between; gap:12px;
  margin-top:auto; padding-top:16px; border-top:1px solid var(--line);
}
.card-price small{ display:block; font-size:.7rem; color:var(--muted); text-transform:uppercase; letter-spacing:.08em; }
.card-price b{ font-size:1.14rem; color:var(--gold); font-weight:700; }
.card-price .go{ font-size:.82rem; font-weight:600; color:var(--blue); }
.card-actions{ display:flex; gap:9px; padding:0 22px 20px; }
.card-actions .ca{
  flex:1; text-align:center; font-size:.82rem; font-weight:600; padding:10px;
  border-radius:100px; text-decoration:none; border:1.5px solid var(--line);
  color:var(--navy); background:#fff; transition:background .16s,border-color .16s,color .16s;
}
.card-actions .ca:hover{ border-color:var(--navy); background:var(--navy); color:#fff; }
.card-actions .ca-wa{ border-color:#25D366; color:#128C4A; }
.card-actions .ca-wa:hover{ background:#25D366; border-color:#25D366; color:#fff; }

/* ---------- search portal ---------- */
.searchbar{ display:flex; gap:10px; margin-bottom:16px; }
.searchbar input{
  flex:1; font-family:inherit; font-size:1rem; color:var(--ink);
  padding:14px 18px; border:1.5px solid var(--line); border-radius:100px;
  background:#fff; transition:border-color .16s, box-shadow .16s;
}
.searchbar input::placeholder{ color:#9AA7B4; }
.searchbar input:focus{ outline:none; border-color:var(--blue); box-shadow:0 0 0 3px rgba(27,74,138,.12); }
.searchbar .btn{ flex-shrink:0; padding-left:30px; padding-right:30px; }

.filter-bar{
  background:var(--bg-alt); border:1px solid var(--line); border-radius:var(--radius);
  padding:20px 22px; margin-bottom:22px; display:flex; flex-direction:column; gap:14px;
}
.filter-row{ display:flex; flex-wrap:wrap; gap:9px; align-items:center; }
.filter-row .flabel{
  font-size:.72rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  color:var(--muted); min-width:74px;
}
.chip{
  font-size:.85rem; font-weight:500; padding:8px 16px; border-radius:100px;
  border:1.5px solid var(--line); background:#fff; color:var(--ink);
  cursor:pointer; font-family:inherit; transition:all .16s; white-space:nowrap;
}
.chip:hover{ border-color:var(--blue); color:var(--blue); }
.chip.on{ background:var(--navy); border-color:var(--navy); color:#fff; }
.filter-selects{ gap:9px; }
.filter-bar select{
  font-family:inherit; font-size:.85rem; color:var(--ink);
  padding:8px 32px 8px 14px; border:1.5px solid var(--line); border-radius:100px;
  background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath fill='%235D6B7A' d='M1 1l5 5 5-5'/%3E%3C/svg%3E") no-repeat right 13px center/10px;
  -webkit-appearance:none; appearance:none; cursor:pointer;
}
.filter-bar select:focus{ outline:none; border-color:var(--blue); }
.chip-reset{ margin-left:auto; color:var(--muted); }
.chip-reset:hover{ border-color:var(--gold); color:#8A6C1E; }

.result-head{ display:flex; flex-wrap:wrap; align-items:center; gap:10px 16px; margin-bottom:20px; }
.result-count{ margin:0; font-size:.88rem; color:var(--muted); font-weight:500; }
.active-filters{ display:flex; flex-wrap:wrap; gap:7px; }
.pill{
  font-family:inherit; font-size:.76rem; font-weight:600;
  padding:5px 12px; border-radius:100px; cursor:pointer;
  background:var(--blue-soft); border:1px solid #CFE0F5; color:var(--blue);
  transition:background .16s, color .16s;
}
.pill:hover{ background:var(--blue); color:#fff; border-color:var(--blue); }
.pill span[aria-hidden]{ margin-left:4px; opacity:.7; }
.load-more-wrap{ text-align:center; margin-top:34px; }

/* ---------- stats ---------- */
.stats{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:26px;
  background:var(--gold-wash); border:1px solid #F0E4C4; border-radius:var(--radius);
  padding:34px 30px;
}
.stat{ text-align:center; }
.stat b{
  display:block; font-family:'Playfair Display',Georgia,serif;
  font-size:1.85rem; font-weight:600; color:var(--navy);
}
.stat span{ font-size:.78rem; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }

/* ---------- detail page ---------- */
.detail-hero{ background:var(--bg-alt); border-bottom:1px solid var(--line); padding:34px 0 0; }
.detail-banner{ position:relative; border-radius:var(--radius); overflow:hidden; background:var(--navy); }
.detail-banner img,.detail-banner .art-fallback{ width:100%; height:clamp(220px,38vw,420px); object-fit:cover; }
.detail-banner-text{
  position:absolute; inset:auto 0 0 0; padding:30px 28px;
  background:linear-gradient(to top,rgba(7,26,51,.92),rgba(7,26,51,.25) 70%,transparent);
  color:#fff;
}
.detail-banner-text .dev{ font-size:.82rem; color:var(--gold-light); font-weight:600; letter-spacing:.06em; text-transform:uppercase; }
.detail-banner-text h1{
  font-family:'Playfair Display',Georgia,serif; font-size:clamp(1.7rem,3.6vw,2.7rem);
  font-weight:600; margin:6px 0; line-height:1.14;
}
.detail-banner-text .loc{ font-size:.94rem; color:rgba(255,255,255,.85); }
.detail-grid{ display:grid; grid-template-columns:1fr 360px; gap:48px; align-items:start; }
.detail-grid h2.serif{ color:var(--navy) !important; }

.spec-table{ border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; }
.spec-row{
  display:grid; grid-template-columns:190px 1fr; gap:16px;
  padding:14px 18px; border-bottom:1px solid var(--line); font-size:.92rem;
}
.spec-row:last-child{ border-bottom:0; }
.spec-row:nth-child(odd){ background:var(--bg-alt); }
.spec-row dt{ color:var(--muted); font-weight:500; }
.spec-row dd{ color:var(--navy); font-weight:600; }
.locked{
  background:var(--gold-wash); border:1.5px dashed var(--gold); color:#8A6C1E;
  font-size:.82rem; font-weight:600; padding:6px 15px; border-radius:100px;
  cursor:pointer; font-family:inherit; transition:background .16s,color .16s;
}
.locked:hover{ background:var(--gold); color:#fff; border-style:solid; }

.hl-list{ list-style:none; display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:12px; }
.hl-list li{ position:relative; padding-left:28px; font-size:.94rem; color:var(--ink); }
.hl-list li::before{ content:'✓'; position:absolute; left:0; top:0; color:var(--gold); font-weight:700; }

.sticky-form{
  position:sticky; top:96px;
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  padding:26px 24px; box-shadow:var(--shadow);
}
.sticky-form h3{
  font-family:'Playfair Display',Georgia,serif; font-size:1.28rem;
  font-weight:600; color:var(--navy); margin-bottom:6px;
}
.sticky-form p.small{ font-size:.86rem; color:var(--muted); margin-bottom:18px; }

.cta-strip{ display:flex; flex-wrap:wrap; gap:10px; margin:26px 0; }
.cta-strip button{
  font-size:.86rem; font-weight:600; padding:11px 20px; border-radius:100px;
  border:1.5px solid var(--line); background:#fff; color:var(--navy);
  cursor:pointer; font-family:inherit; transition:all .16s;
}
.cta-strip button:hover{ border-color:var(--gold); background:var(--gold-wash); color:#8A6C1E; }

.disclaimer{
  font-size:.78rem; color:var(--muted); line-height:1.7;
  background:var(--bg-alt); border:1px solid var(--line);
  border-radius:var(--radius); padding:18px 20px; margin-top:30px;
}

/* ---------- forms ---------- */
.form-grid{ display:flex; flex-direction:column; gap:15px; }
.form-row2{ display:grid; grid-template-columns:1fr 1fr; gap:15px; }
.field{ display:flex; flex-direction:column; gap:6px; }
.field label{ font-size:.82rem; font-weight:600; color:var(--navy); }
.field input,.field select,.field textarea{
  font-family:inherit; font-size:.95rem; color:var(--ink);
  padding:12px 14px; border:1.5px solid var(--line); border-radius:10px;
  background:#fff; width:100%; transition:border-color .16s, box-shadow .16s;
}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none; border-color:var(--blue); box-shadow:0 0 0 3px rgba(27,74,138,.12);
}
.field textarea{ resize:vertical; }
.form-error{ color:#C0392B; font-size:.85rem; min-height:1em; }
.consent{ font-size:.76rem; color:var(--muted); text-align:center; }

/* ---------- modal ---------- */
.modal{
  position:fixed; inset:0; z-index:200; display:none;
  align-items:center; justify-content:center; padding:20px;
  background:rgba(7,26,51,.6); backdrop-filter:blur(4px);
}
.modal.open{ display:flex; }
.modal-box{
  background:#fff; border-radius:18px; padding:32px 28px;
  width:100%; max-width:440px; max-height:92vh; overflow-y:auto;
  position:relative; box-shadow:var(--shadow-lg);
}
.modal-box h3{ font-family:'Playfair Display',Georgia,serif; font-size:1.4rem; font-weight:600; color:var(--navy); }
.modal-box .modal-sub{ font-size:.9rem; color:var(--muted); margin:8px 0 20px; }
.modal-close{
  position:absolute; top:14px; right:16px; font-size:1.7rem; line-height:1;
  background:none; border:0; color:var(--muted); cursor:pointer; padding:4px 8px;
}
.modal-close:hover{ color:var(--navy); }

/* ---------- empty state ---------- */
.empty-state{
  text-align:center; padding:56px 24px;
  background:var(--bg-alt); border:1px dashed var(--line); border-radius:var(--radius);
}
.empty-state b{ display:block; font-size:1.1rem; color:var(--navy); margin-bottom:8px; }
.empty-state p{ color:var(--muted); font-size:.92rem; }

/* ---------- floating actions ---------- */
.float-wa{
  position:fixed; right:18px; bottom:88px; z-index:90;
  width:56px; height:56px; border-radius:50%;
  background:#25D366; display:flex; align-items:center; justify-content:center;
  box-shadow:0 6px 20px rgba(37,211,102,.42); text-decoration:none; transition:transform .18s;
}
.float-wa:hover{ transform:scale(1.07); }
.float-wa svg{ width:30px; height:30px; fill:#fff; }

.mobile-bar{
  display:none; position:fixed; left:0; right:0; bottom:0; z-index:95;
  background:#fff; border-top:1px solid var(--line);
  padding:9px 12px; gap:9px; box-shadow:0 -3px 16px rgba(11,37,69,.08);
}
.mobile-bar a,.mobile-bar button{
  flex:1; text-align:center; font-size:.88rem; font-weight:600;
  padding:12px; border-radius:100px; text-decoration:none;
  border:1.5px solid var(--navy); color:var(--navy); background:#fff;
  cursor:pointer; font-family:inherit;
}
.mobile-bar .mb-enq{ background:var(--gold); border-color:var(--gold); color:#fff; }

/* ---------- footer ---------- */
footer{ background:var(--navy-deep); color:rgba(255,255,255,.72); padding:58px 0 26px; margin-top:20px; }
footer .logo{ color:#fff; }
footer .logo span{ color:var(--gold-light); }
.foot-grid{ display:grid; grid-template-columns:1.6fr 1fr 1fr 1.2fr; gap:36px; }
.foot-grid h4{
  font-size:.78rem; letter-spacing:.12em; text-transform:uppercase;
  color:var(--gold-light); margin-bottom:14px; font-weight:700;
}
.foot-grid p{ font-size:.88rem; line-height:1.8; }
.foot-grid a{ display:block; font-size:.88rem; color:rgba(255,255,255,.72); text-decoration:none; padding:4px 0; }
.foot-grid a:hover{ color:var(--gold-light); }
.foot-brand p{ margin-top:14px; max-width:38ch; }
.foot-rera{
  display:inline-block; margin-top:16px; font-size:.76rem; font-weight:600;
  color:var(--gold-light); border:1px solid rgba(217,182,92,.35);
  border-radius:100px; padding:5px 14px;
}
.foot-bottom{
  margin-top:40px; padding-top:22px; border-top:1px solid rgba(255,255,255,.12);
  display:flex; flex-wrap:wrap; gap:14px; justify-content:space-between;
  font-size:.8rem; color:rgba(255,255,255,.55);
}
.foot-bottom a{ color:rgba(255,255,255,.7); text-decoration:none; margin-left:18px; }
.foot-bottom a:hover{ color:var(--gold-light); }

/* ---------- blog ---------- */
.blog-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(310px,1fr)); gap:26px; }
.blog-card{
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  padding:26px 24px; text-decoration:none; color:inherit;
  display:flex; flex-direction:column;
  transition:box-shadow .2s, transform .2s, border-color .2s;
}
.blog-card:hover{ box-shadow:var(--shadow-lg); transform:translateY(-4px); border-color:#D6DEE9; }
.blog-cat{
  font-size:.7rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  color:var(--gold); margin-bottom:10px;
}
.blog-card h3{
  font-family:'Playfair Display',Georgia,serif; font-size:1.22rem; font-weight:600;
  color:var(--navy); line-height:1.3;
}
.blog-card p{ font-size:.9rem; color:var(--muted); margin-top:10px; flex:1; }
.blog-meta{ margin-top:16px; font-size:.78rem; color:var(--muted); display:flex; gap:12px; }

.article{ max-width:74ch; margin:0 auto; }
.article h2{
  font-family:'Playfair Display',Georgia,serif; font-size:1.6rem; font-weight:600;
  color:var(--navy); margin:36px 0 12px; line-height:1.25;
}
.article h3{ font-size:1.12rem; font-weight:700; color:var(--navy); margin:26px 0 8px; }
.article p{ margin-bottom:16px; font-size:1.02rem; line-height:1.78; }
.article ul,.article ol{ margin:0 0 18px 22px; }
.article li{ margin-bottom:9px; font-size:1.02rem; line-height:1.7; }
.article table{ width:100%; border-collapse:collapse; margin:20px 0; font-size:.92rem; }
.article th,.article td{ border:1px solid var(--line); padding:11px 13px; text-align:left; }
.article th{ background:var(--bg-alt); color:var(--navy); font-weight:600; }
.article blockquote{
  border-left:4px solid var(--gold); background:var(--gold-wash);
  padding:16px 20px; margin:22px 0; border-radius:0 10px 10px 0;
  font-size:.98rem; color:var(--ink);
}
.article-meta{ color:var(--muted); font-size:.86rem; margin-bottom:8px; }

/* ---------- services ---------- */
.svc{ display:grid; grid-template-columns:repeat(auto-fit,minmax(270px,1fr)); gap:22px; }
.svc-card{
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  padding:28px 26px; border-top:4px solid var(--gold);
}
.svc-card h3{
  font-family:'Playfair Display',Georgia,serif; font-size:1.26rem;
  font-weight:600; color:var(--navy); margin-bottom:10px;
}
.svc-card p{ font-size:.93rem; color:var(--muted); margin-bottom:14px; }
.svc-card ul{ list-style:none; }
.svc-card li{ font-size:.88rem; padding-left:22px; position:relative; margin-bottom:7px; }
.svc-card li::before{ content:'—'; position:absolute; left:0; color:var(--gold); }

/* ---------- locality chips ---------- */
.loc-strip{ display:flex; flex-wrap:wrap; gap:10px; }
.loc-strip a{
  font-size:.86rem; font-weight:500; text-decoration:none; color:var(--navy);
  background:#fff; border:1.5px solid var(--line); border-radius:100px; padding:9px 18px;
  transition:all .16s;
}
.loc-strip a:hover{ border-color:var(--gold); background:var(--gold-wash); color:#8A6C1E; }

/* ---------- requirement matcher ---------- */
.matcher{
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  padding:28px 26px; box-shadow:var(--shadow);
}
.ms-step{ margin-bottom:24px; }
.ms-step:last-of-type{ margin-bottom:0; }
.ms-label{
  display:flex; align-items:center; gap:10px;
  font-size:.92rem; font-weight:600; color:var(--navy); margin-bottom:12px;
}
.ms-num{
  display:inline-flex; align-items:center; justify-content:center;
  width:24px; height:24px; border-radius:50%; flex-shrink:0;
  background:var(--gold); color:#fff; font-size:.76rem; font-weight:700;
}
.ms-opts{ display:flex; flex-wrap:wrap; gap:8px; }
.ms-opts.ms-scroll{ flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; padding-bottom:4px; }
.ms-opts.ms-scroll::-webkit-scrollbar{ display:none; }
.ms-opts.ms-scroll .ms-opt{ flex:0 0 auto; }
.ms-opt{
  font-family:inherit; font-size:.85rem; font-weight:500;
  padding:9px 16px; border-radius:100px; cursor:pointer;
  border:1.5px solid var(--line); background:#fff; color:var(--ink);
  transition:all .16s; white-space:nowrap;
}
.ms-opt:hover{ border-color:var(--blue); color:var(--blue); }
.ms-opt.on{ background:var(--navy); border-color:var(--navy); color:#fff; }
.ms-result{ margin-top:26px; padding-top:24px; border-top:1px solid var(--line); }
.ms-brief{
  font-size:.74rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  color:var(--gold); margin-bottom:10px;
}
.ms-result h3{
  font-family:'Playfair Display',Georgia,serif; font-size:1.3rem; font-weight:600;
  color:var(--navy); line-height:1.3; margin-bottom:10px;
}
.ms-result p{ font-size:.93rem; color:var(--muted); margin-bottom:18px; max-width:56ch; }
.ms-alt{ margin:14px 0 0 !important; font-size:.85rem !important; }
.ms-alt a{ color:var(--blue); }


/* ---------- EMI calculator ---------- */
.emi{
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  padding:26px 24px; box-shadow:var(--shadow);
}
.emi h3{
  font-family:'Playfair Display',Georgia,serif; font-size:1.24rem; font-weight:600;
  color:var(--navy); margin-bottom:18px;
}
.emi-row{
  display:flex; justify-content:space-between; align-items:baseline;
  gap:12px; margin:16px 0 7px;
}
.emi-row label{ font-size:.85rem; font-weight:500; color:var(--muted); }
.emi-row output{ font-size:.88rem; font-weight:700; color:var(--navy); }
.emi input[type=range]{
  width:100%; -webkit-appearance:none; appearance:none;
  height:4px; border-radius:4px; background:var(--line); cursor:pointer;
}
.emi input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none; width:20px; height:20px; border-radius:50%;
  background:var(--gold); border:3px solid #fff; box-shadow:0 1px 5px rgba(11,37,69,.3); cursor:pointer;
}
.emi input[type=range]::-moz-range-thumb{
  width:20px; height:20px; border-radius:50%; background:var(--gold);
  border:3px solid #fff; box-shadow:0 1px 5px rgba(11,37,69,.3); cursor:pointer; border-color:#fff;
}
.emi input[type=range]:focus-visible{ outline:3px solid var(--gold); outline-offset:4px; }
.emi-out{
  margin:24px 0 16px; padding:20px; border-radius:12px;
  background:var(--gold-wash); border:1px solid #F0E4C4;
}
.emi-big{ text-align:center; margin-bottom:16px; }
.emi-big small{
  display:block; font-size:.72rem; letter-spacing:.1em; text-transform:uppercase;
  color:var(--muted); margin-bottom:4px;
}
.emi-big b{
  font-family:'Playfair Display',Georgia,serif; font-size:1.9rem;
  font-weight:600; color:var(--navy);
}
.emi-break{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; text-align:center; }
.emi-break dt{ font-size:.7rem; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; }
.emi-break dd{ font-size:.92rem; font-weight:700; color:var(--navy); margin-top:3px; }
.emi-note{ font-size:.75rem; color:var(--muted); line-height:1.65; margin-bottom:16px; }

/* ---------- save / shortlist ---------- */
.card{ position:relative; }
.card-save{
  position:absolute; top:12px; right:12px; z-index:3;
  width:36px; height:36px; border-radius:50%; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.92); border:1px solid rgba(11,37,69,.1);
  backdrop-filter:blur(4px); transition:background .16s, transform .12s;
}
.card-save:hover{ background:#fff; transform:scale(1.07); }
.card-save svg{ width:17px; height:17px; fill:none; stroke:var(--navy); stroke-width:1.8; }
.card-save.on svg{ fill:var(--gold); stroke:var(--gold); }

.saved-bar{
  display:flex; align-items:center; justify-content:space-between; gap:14px;
  background:var(--navy); color:#fff; border-radius:var(--radius);
  padding:14px 20px; margin-bottom:22px;
}
.saved-bar p{ font-size:.9rem; margin:0; }
.saved-bar b{ color:var(--gold-light); }
.saved-bar .btn{ background:var(--gold); border-color:var(--gold); color:#fff; padding:9px 20px; min-height:auto; }
.saved-bar .btn:hover{ background:#fff; border-color:#fff; color:var(--navy); }

@media (max-width:860px){
  .emi-break{ grid-template-columns:1fr; gap:9px; text-align:left; }
  .emi-break > div{ display:flex; justify-content:space-between; }
  .emi-break dd{ margin-top:0; }
  .emi-big b{ font-size:1.6rem; }
  .saved-bar{ flex-direction:column; align-items:stretch; text-align:center; }
}

/* ---------- responsive ---------- */
@media (max-width:1000px){
  .detail-grid{ grid-template-columns:1fr; gap:34px; }
  .sticky-form{ position:static; }
  .foot-grid{ grid-template-columns:1fr 1fr; gap:28px; }
}

@media (max-width:860px){
  nav{ padding:0 18px; }
  .nav-center, nav .nav-cta{ display:none; }
  .nav-hamburger{ display:flex; }
  .wrap{ padding:0 18px; }
  section{ padding:50px 0; }
  body{ padding-bottom:62px; }
  .mobile-bar{ display:flex; }
  .float-wa{ bottom:78px; width:52px; height:52px; }

  .hero{ padding:56px 20px 52px; }
  .hero h1{ font-size:clamp(2rem,8vw,2.7rem); max-width:14ch; }
  .hero-sub{ font-size:.96rem; max-width:36ch; margin-bottom:22px; }
  .hero-actions{ flex-direction:column; }
  .hero-actions .btn{ width:100%; }
  .hero-search{ flex-direction:column; gap:9px; }
  .hero-search .btn{ width:100%; }
  .hero-quick{ margin-bottom:22px; }

  .page-hero{ padding:36px 18px 20px; }
  .page-hero p{ font-size:.95rem; max-width:40ch; }
  .sec-head{ margin-bottom:26px; }
  .sec-head h2{ font-size:1.5rem; }
  .sec-head p{ font-size:.93rem; max-width:40ch; }
  .desktop-only{ display:none; }

  .grid{ grid-template-columns:1fr; gap:20px; }
  .blog-grid{ grid-template-columns:1fr; }
  .form-row2{ grid-template-columns:1fr; }
  .stats{ grid-template-columns:1fr 1fr; gap:20px; padding:26px 20px; }
  .stat b{ font-size:1.5rem; }
  .spec-row{ grid-template-columns:130px 1fr; gap:12px; font-size:.88rem; }
  .foot-grid{ grid-template-columns:1fr; gap:26px; }
  .detail-hero{ padding-top:18px; }
  .article p,.article li{ font-size:.98rem; }

  .searchbar{ flex-direction:column; }
  .searchbar .btn{ width:100%; }
  .filter-bar{ padding:16px; }
  .filter-row{ flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; padding-bottom:3px; }
  .filter-row::-webkit-scrollbar{ display:none; }
  .filter-row .flabel{ min-width:auto; }
  .chip{ flex:0 0 auto; }
  .filter-selects{ flex-wrap:wrap !important; overflow:visible !important; }
  .chip-reset{ margin-left:0; }
  .result-head{ margin-bottom:16px; }

  .matcher{ padding:22px 18px; }
  .ms-result h3{ font-size:1.12rem; }

  .emi-break{ grid-template-columns:1fr; gap:9px; text-align:left; }
  .emi-break > div{ display:flex; justify-content:space-between; }
  .emi-break dd{ margin-top:0; }
  .emi-big b{ font-size:1.6rem; }
  .saved-bar{ flex-direction:column; align-items:stretch; text-align:center; }

  /* iOS zooms the page if an input is smaller than 16px */
  input,select,textarea{ font-size:16px !important; }
}

@media (max-width:400px){
  .wrap{ padding:0 15px; }
  .stats{ gap:14px; }
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation-duration:.01ms !important; transition-duration:.01ms !important; }
  html{ scroll-behavior:auto; }
}

/* ---------- more-photos prompt ---------- */
.photo-note{
  display:flex; align-items:center; gap:22px; flex-wrap:wrap;
  background:var(--blue-soft); border:1px solid #CFE0F5;
  border-radius:var(--radius); padding:22px 24px; margin:30px 0 40px;
}
.photo-note > div{ flex:1; min-width:240px; }
.photo-note b{ display:block; font-size:1rem; color:var(--navy); margin-bottom:6px; }
.photo-note p{ font-size:.88rem; color:var(--muted); margin:0; max-width:56ch; }
.photo-note .btn{ flex-shrink:0; }
@media (max-width:860px){
  .photo-note{ padding:18px; gap:16px; }
  .photo-note .btn{ width:100%; }
}

/* ---------- partners ---------- */
.team-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(290px,1fr)); gap:26px; }
.team-card{
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  padding:30px 26px; text-align:center;
  transition:box-shadow .2s, transform .2s, border-color .2s;
}
.team-card:hover{ box-shadow:var(--shadow-lg); transform:translateY(-3px); border-color:#D6DEE9; }
.team-photo{
  width:104px; height:104px; margin:0 auto 18px; border-radius:50%;
  overflow:hidden; background:var(--navy);
  display:flex; align-items:center; justify-content:center;
  border:3px solid var(--gold);
}
.team-photo img{ width:100%; height:100%; object-fit:cover; }
.team-photo span{
  font-family:'Playfair Display',Georgia,serif; font-size:2rem; font-weight:600; color:var(--gold-light);
}
.team-card h2{
  font-family:'Playfair Display',Georgia,serif; font-size:1.26rem; font-weight:600;
  color:var(--navy); margin-bottom:4px;
}
.team-role{
  font-size:.74rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  color:var(--gold); margin-bottom:10px;
}
.team-focus{
  font-size:.84rem; color:var(--blue); background:var(--blue-soft);
  border-radius:100px; padding:6px 14px; display:inline-block; margin-bottom:14px;
}
.team-bio{ font-size:.9rem; color:var(--muted); line-height:1.7; margin-bottom:20px; }
.team-links{ display:flex; gap:8px; justify-content:center; }
.team-links a{
  flex:1; font-size:.82rem; font-weight:600; padding:9px 4px;
  border-radius:100px; text-decoration:none; border:1.5px solid var(--line);
  color:var(--navy); background:#fff; transition:all .16s;
}
.team-links a:hover{ background:var(--navy); border-color:var(--navy); color:#fff; }

@media (max-width:860px){
  .team-grid{ grid-template-columns:1fr; gap:20px; }
  .team-card{ padding:24px 20px; }
}

/* ---------- full-bleed hero banner ---------- */
.hero-banner{
  position:relative; padding:0; min-height:clamp(480px,68vh,660px);
  display:flex; align-items:center; text-align:left; overflow:hidden;
  background:var(--navy);
}
.hero-banner .hero-media{ position:absolute; inset:0; z-index:0; }
.hero-banner .hero-media img{ width:100%; height:100%; object-fit:cover; }
/* Light enough that the banner photo is clearly visible; the text sits on
   its own scrim below, so readability does not depend on burying the image. */
.hero-banner::before{
  content:''; position:absolute; inset:0; z-index:1;
  background:
    linear-gradient(100deg, rgba(7,26,51,.78) 0%, rgba(7,26,51,.52) 38%, rgba(7,26,51,.12) 66%, rgba(7,26,51,0) 100%),
    linear-gradient(0deg, rgba(7,26,51,.45) 0%, rgba(7,26,51,0) 45%);
}
.hero-banner::after{ display:none; }
.hero-inner{
  position:relative; z-index:2;
  max-width:1180px; width:100%; margin:0 auto; padding:64px 28px;
}
/* .hero h1 sets `margin:0 auto`, which re-centres the headline inside its
   own max-width. The banner layout needs it hard against the left edge. */
.hero-banner h1{
  margin:0 auto 0 0; max-width:15ch; text-align:left;
  font-size:clamp(2.1rem,5vw,3.6rem);
  text-shadow:0 2px 24px rgba(7,26,51,.55);
}
.hero-banner .hero-sub{ text-shadow:0 1px 12px rgba(7,26,51,.6); }
.hero-banner .hero-eyebrow{ margin-bottom:18px; }
.hero-banner .hero-sub{ margin:18px 0 26px; max-width:46ch; }
.hero-banner .hero-search{ margin:0 0 14px; max-width:520px; }
.hero-banner .hero-quick{ justify-content:flex-start; margin-bottom:0; }

/* ---------- developer logo marquee ---------- */
.dev-section{ overflow:hidden; }
.dev-marquee{
  position:relative; overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
}
.dev-track{
  display:flex; gap:16px; width:max-content;
  animation:dev-scroll 70s linear infinite;
}
.dev-marquee:hover .dev-track{ animation-play-state:paused; }
@keyframes dev-scroll{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }
.dev-logo{
  flex:0 0 auto; width:158px; height:88px;
  display:flex; align-items:center; justify-content:center;
  background:#fff; border:1px solid var(--line); border-radius:12px;
  padding:14px; transition:border-color .18s, box-shadow .18s;
}
.dev-logo:hover{ border-color:var(--gold); box-shadow:var(--shadow); }
.dev-logo img{ max-width:100%; max-height:100%; object-fit:contain; }
.dev-name{
  font-size:.8rem; font-weight:600; color:var(--navy);
  text-align:center; line-height:1.3;
}

/* ---------- region rails ---------- */
.rail-panel{
  background:var(--bg-alt); border:1px solid var(--line);
  border-radius:20px; padding:30px 0 26px 30px;
}
.rail-head{
  display:flex; align-items:baseline; justify-content:space-between;
  gap:16px; padding-right:30px; margin-bottom:22px;
}
.rail-head h2{
  font-family:'Playfair Display',Georgia,serif; font-size:1.55rem;
  font-weight:600; color:var(--navy);
}
.rail-head a{
  font-size:.84rem; font-weight:600; color:var(--blue);
  text-decoration:none; white-space:nowrap;
}
.rail-head a:hover{ color:var(--gold); }
.rail{
  display:flex; gap:20px; overflow-x:auto; padding:4px 30px 14px 0;
  scroll-snap-type:x mandatory; scrollbar-width:thin;
}
.rail > .card{ flex:0 0 286px; scroll-snap-align:start; }
.rail::-webkit-scrollbar{ height:7px; }
.rail::-webkit-scrollbar-track{ background:transparent; }
.rail::-webkit-scrollbar-thumb{ background:#CBD5E1; border-radius:10px; }
.rail::-webkit-scrollbar-thumb:hover{ background:var(--blue); }

.enquire-wrap{ max-width:660px; }

@media (max-width:860px){
  .hero-banner{ min-height:auto; }
  .hero-banner::before{
    background:linear-gradient(180deg, rgba(7,26,51,.86) 0%, rgba(7,26,51,.92) 100%);
  }
  .hero-inner{ padding:48px 18px; }
  .hero-banner h1{ max-width:13ch; }
  .hero-banner .hero-sub{ max-width:34ch; }
  .hero-banner .hero-search{ max-width:none; }

  .trust-grid{ grid-template-columns:1fr 1fr; padding:20px 0; }
  .trust-item{ padding:10px; }
  .trust-item:nth-child(2){ border-right:0; }
  .trust-item:nth-child(1),.trust-item:nth-child(2){ border-bottom:1px solid rgba(255,255,255,.12); }
  .trust-item b{ font-size:1.3rem; }

  .rail-panel{ border-radius:16px; padding:22px 0 18px 18px; }
  .rail-head{ padding-right:18px; margin-bottom:16px; }
  .rail-head h2{ font-size:1.3rem; }
  .rail{ padding-right:18px; gap:14px; }
  .rail > .card{ flex:0 0 250px; }
  .dev-logo{ width:130px; height:74px; padding:11px; }
  .dev-track{ animation-duration:50s; }
}

@media (prefers-reduced-motion:reduce){
  .dev-track{ animation:none; }
  .dev-marquee{ overflow-x:auto; }
}

/* ---------- image banner blocks ---------- */
.promo{
  position:relative; overflow:hidden; border-radius:20px;
  min-height:clamp(260px,34vw,380px);
  display:flex; align-items:center;
  background:var(--navy);
}
.promo-media{ position:absolute; inset:0; z-index:0; }
.promo-media img{ width:100%; height:100%; object-fit:cover; }
.promo-media .promo-fallback{
  width:100%; height:100%;
  background:
    radial-gradient(90% 70% at 78% 30%, rgba(184,145,47,.34), transparent 62%),
    linear-gradient(140deg, #0B2545 0%, #123A6B 55%, #071A33 100%);
}
.promo::before{
  content:''; position:absolute; inset:0; z-index:1;
  background:linear-gradient(100deg, rgba(7,26,51,.86) 0%, rgba(7,26,51,.6) 44%, rgba(7,26,51,.1) 78%, rgba(7,26,51,0) 100%);
}
.promo-inner{ position:relative; z-index:2; padding:44px 46px; max-width:620px; }
.promo .eyebrow{ color:var(--gold-light); }
.promo h2{
  font-family:'Playfair Display',Georgia,serif; font-weight:600; color:#fff;
  font-size:clamp(1.5rem,3vw,2.2rem); line-height:1.18; margin-bottom:12px;
  text-shadow:0 2px 20px rgba(7,26,51,.5);
}
.promo p{ color:rgba(255,255,255,.86); font-size:.98rem; margin-bottom:22px; max-width:46ch; }
.promo-actions{ display:flex; gap:12px; flex-wrap:wrap; }
.promo .btn{ background:#fff; border-color:#fff; color:var(--navy); }
.promo .btn:hover{ background:var(--gold); border-color:var(--gold); color:#fff; }
.promo .btn-solid{ background:var(--gold); border-color:var(--gold); color:#fff; }
.promo .btn-solid:hover{ background:#fff; border-color:#fff; color:var(--navy); }

@media (max-width:860px){
  .promo{ border-radius:16px; min-height:auto; }
  .promo::before{ background:linear-gradient(180deg, rgba(7,26,51,.82) 0%, rgba(7,26,51,.92) 100%); }
  .promo-inner{ padding:32px 22px; }
  .promo-actions .btn{ width:100%; }
}

/* ---------- animated stat bar ---------- */
.statbar{
  padding:0; background:linear-gradient(180deg, var(--gold-wash) 0%, #FFFCF4 100%);
  border-top:1px solid #F0E4C4; border-bottom:1px solid #F0E4C4;
}
.stat-row{
  display:grid; grid-template-columns:repeat(6,1fr);
  padding:30px 0;
}
.stat-cell{ text-align:center; padding:4px 10px; border-right:1px solid rgba(184,145,47,.28); }
.stat-cell:last-child{ border-right:0; }
.stat-cell b{
  display:block; font-family:'Playfair Display',Georgia,serif;
  font-size:clamp(1.3rem,2.2vw,1.85rem); font-weight:600; color:var(--gold);
  font-variant-numeric:tabular-nums; line-height:1.1;
}
.stat-cell span{
  display:block; margin-top:6px;
  font-size:.7rem; letter-spacing:.09em; text-transform:uppercase; color:var(--muted);
}

/* short gold rule under a centred heading */
.sec-head .rule{
  width:56px; height:3px; border-radius:3px; background:var(--gold);
  margin:14px auto 0;
}

/* ---------- region tiles ---------- */
.region-tiles{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:18px;
  max-width:980px; margin:0 auto;
}
.region-tile{
  display:flex; align-items:center; gap:14px;
  background:#fff; border:1px solid var(--line); border-radius:14px;
  padding:18px 20px; text-decoration:none; color:inherit;
  box-shadow:0 1px 2px rgba(11,37,69,.04);
  transition:border-color .18s, box-shadow .18s, transform .18s;
}
.region-tile:hover{ border-color:var(--gold); box-shadow:var(--shadow); transform:translateY(-3px); }
.region-ico{
  flex:0 0 auto; width:42px; height:42px; border-radius:11px;
  background:var(--gold-wash); display:flex; align-items:center; justify-content:center;
}
.region-ico svg{ width:21px; height:21px; fill:var(--gold); }
.region-text b{
  display:block; font-size:.98rem; font-weight:600; color:var(--navy);
}
.region-text small{ font-size:.78rem; color:var(--muted); }

/* ---------- rail head with arrows ---------- */
.rail-sub{ font-size:.84rem; color:var(--muted); margin-top:4px; }
.rail-sub a{ color:var(--blue); text-decoration:none; font-weight:600; }
.rail-sub a:hover{ color:var(--gold); }
.rail-nav{ display:flex; gap:9px; flex-shrink:0; }
.rail-btn{
  width:40px; height:40px; border-radius:50%; cursor:pointer;
  background:#fff; border:1.5px solid var(--line); color:var(--navy);
  font-size:1rem; line-height:1; font-family:inherit;
  display:flex; align-items:center; justify-content:center;
  transition:all .16s;
}
.rail-btn:hover:not(:disabled){ background:var(--navy); border-color:var(--navy); color:#fff; }
.rail-btn:disabled{ opacity:.35; cursor:default; }

@media (max-width:860px){
  .stat-row{ grid-template-columns:repeat(3,1fr); padding:22px 0; gap:14px 0; }
  .stat-cell:nth-child(3n){ border-right:0; }
  .stat-cell:nth-child(-n+3){ padding-bottom:16px; border-bottom:1px solid rgba(184,145,47,.28); }
  .stat-cell b{ font-size:1.15rem; }
  .stat-cell span{ font-size:.63rem; letter-spacing:.05em; }
  .region-tiles{ grid-template-columns:1fr 1fr; gap:12px; }
  .region-tile{ flex-direction:column; text-align:center; gap:9px; padding:16px 12px; }
  .region-text b{ font-size:.88rem; }
  .rail-nav{ display:none; }
}

@media (max-width:400px){
  .stat-row{ grid-template-columns:1fr 1fr; }
  .stat-cell:nth-child(3n){ border-right:1px solid rgba(184,145,47,.28); }
  .stat-cell:nth-child(2n){ border-right:0; }
}

/* ---------- hero banner slider ---------- */
.hs{
  position:relative; width:100%; overflow:hidden;
  background:var(--navy);
  height:clamp(420px,72vh,720px);
}
.hs-track{ position:absolute; inset:0; }
.hs-slide{
  position:absolute; inset:0; display:block; text-decoration:none;
  opacity:0; visibility:hidden; transition:opacity .8s ease, visibility .8s;
}
.hs-slide.on{ opacity:1; visibility:visible; }
.hs-slide picture,.hs-slide img{ width:100%; height:100%; object-fit:cover; display:block; }
.hs-slide::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(100deg, rgba(7,26,51,.82) 0%, rgba(7,26,51,.5) 40%, rgba(7,26,51,.08) 72%, rgba(7,26,51,0) 100%);
}
.hs-text{
  position:absolute; z-index:2; left:0; right:0; bottom:0;
  max-width:1180px; margin:0 auto; padding:0 28px 92px;
  color:#fff;
}
.hs-eyebrow{
  display:inline-block; font-size:.72rem; letter-spacing:.14em; text-transform:uppercase;
  font-weight:700; color:var(--gold-light);
  border:1px solid rgba(217,182,92,.45); border-radius:100px; padding:6px 15px; margin-bottom:16px;
}
.hs-text h2{
  font-family:'Playfair Display',Georgia,serif; font-weight:600; color:#fff;
  font-size:clamp(1.9rem,4.4vw,3.2rem); line-height:1.1; max-width:16ch;
  text-shadow:0 2px 26px rgba(7,26,51,.6);
}
.hs-text p{
  margin-top:12px; max-width:44ch; font-size:1rem; color:rgba(255,255,255,.9);
  text-shadow:0 1px 14px rgba(7,26,51,.6);
}
.hs-cta{
  display:inline-block; margin-top:22px;
  background:var(--gold); color:#fff; font-size:.88rem; font-weight:600;
  padding:12px 26px; border-radius:100px; transition:background .18s;
}
.hs-slide:hover .hs-cta{ background:#9E7B24; }

.hs-arrow{
  position:absolute; top:50%; transform:translateY(-50%); z-index:3;
  width:46px; height:46px; border-radius:50%; cursor:pointer;
  background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.3);
  color:#fff; font-size:1.5rem; line-height:1;
  display:flex; align-items:center; justify-content:center;
  backdrop-filter:blur(6px); transition:background .16s;
}
.hs-arrow:hover{ background:rgba(255,255,255,.3); }
.hs-prev{ left:20px; }
.hs-next{ right:20px; }

.hs-dots{
  position:absolute; z-index:3; left:0; right:0; bottom:34px;
  display:flex; gap:9px; justify-content:center;
}
.hs-dot{
  width:30px; height:4px; border-radius:4px; cursor:pointer; padding:0;
  background:rgba(255,255,255,.35); border:0; transition:background .2s, width .2s;
}
.hs-dot.on{ background:var(--gold-light); width:46px; }

/* ---------- top localities slider ---------- */
.loc-rail{
  display:flex; gap:18px; overflow-x:auto;
  padding:4px 4px 16px; scroll-snap-type:x mandatory; scrollbar-width:thin;
}
.loc-rail::-webkit-scrollbar{ height:6px; }
.loc-rail::-webkit-scrollbar-thumb{ background:#CBD5E1; border-radius:10px; }
.loc-card{
  flex:0 0 232px; scroll-snap-align:start;
  border-radius:14px; overflow:hidden; text-decoration:none; color:inherit;
  border:1px solid var(--line); background:#fff;
  transition:transform .2s, box-shadow .2s, border-color .2s;
}
.loc-card:hover{ transform:translateY(-4px); box-shadow:var(--shadow-lg); border-color:#D6DEE9; }
.loc-img{ display:block; height:150px; overflow:hidden; background:var(--bg-alt); }
.loc-img img{ width:100%; height:100%; object-fit:cover; transition:transform .5s; }
.loc-card:hover .loc-img img{ transform:scale(1.06); }
.loc-img.loc-fallback{
  background:
    radial-gradient(80% 70% at 70% 25%, rgba(184,145,47,.4), transparent 62%),
    linear-gradient(150deg, #0B2545, #123A6B 55%, #071A33);
}
.loc-body{ display:block; padding:14px 16px 16px; }
.loc-body b{ display:block; font-size:1rem; color:var(--navy); }
.loc-body small{ font-size:.8rem; color:var(--muted); }

/* ---------- floating quote button ---------- */
.quote-fab{
  position:fixed; left:18px; bottom:20px; z-index:90;
  background:var(--gold); color:#fff; border:0; cursor:pointer;
  font-family:inherit; font-size:.88rem; font-weight:600;
  padding:14px 26px; border-radius:100px;
  box-shadow:0 6px 20px rgba(184,145,47,.42);
  transition:background .18s, transform .16s;
}
.quote-fab:hover{ background:#9E7B24; transform:translateY(-2px); }

@media (max-width:860px){
  .hs{ height:clamp(400px,62vh,540px); }
  .hs-text{ padding:0 18px 84px; }
  .hs-text h2{ font-size:clamp(1.6rem,7vw,2.2rem); max-width:13ch; }
  .hs-text p{ font-size:.92rem; max-width:32ch; }
  .hs-arrow{ display:none; }
  .hs-dots{ bottom:28px; }
  .loc-card{ flex:0 0 190px; }
  .loc-img{ height:124px; }
  .quote-fab{ left:14px; bottom:76px; padding:12px 20px; font-size:.82rem; }
}

@media (prefers-reduced-motion:reduce){
  .hs-slide{ transition:none; }
}

/* ---------- compact hero, used when the banner slider is live ---------- */
.hero-compact{ min-height:auto; }
.hero-compact .hero-media,
.hero-compact::before{ display:none; }
.hero-compact{ background:var(--navy-deep); }
.hero-compact .hero-inner{ padding:38px 28px 34px; }
.hero-compact h1{
  font-size:clamp(1.5rem,3vw,2.1rem); max-width:26ch; text-shadow:none;
}
.hero-compact .hero-eyebrow{ margin-bottom:12px; }
.hero-compact .hero-sub{ margin:10px 0 20px; max-width:56ch; font-size:.95rem; text-shadow:none; }
.hero-compact .hero-search{ margin-bottom:12px; max-width:620px; }
@media (max-width:860px){
  .hero-compact .hero-inner{ padding:28px 18px 26px; }
  .hero-compact h1{ max-width:20ch; }
}


/* ---------- company logo (image only; space is kept until it is uploaded) ---------- */
.logo{ display:inline-flex; align-items:center; min-width:150px; min-height:44px; }
.logo-img{ display:block; height:44px; width:auto; max-width:190px; object-fit:contain; }
.logo-on-dark{ display:none; }
.logo-inv{ filter:brightness(0) invert(1); }
footer .logo-on-dark{ display:block; height:48px; }
footer .logo{ min-height:48px; }
.logo-foot{ margin-bottom:4px; }
@media (max-width:860px){ .logo-img{ height:38px; max-width:160px; } .logo{ min-width:130px; min-height:38px; } }
