/* Northline Commercial public styles */
:root {
    --navy: #173F35;
    --navy-700: #2C5B4F;
    --navy-900: #0D2822;
    --accent: #C45F36;
    --accent-600: #9E4527;
    --steel: #6E9185;
    --sky: #B7CEC4;
    --gold: #A8C3B8;
    --ink: #202824;
    --muted: #66716d;
    --line: #dce3de;
    --bg: #f3f4f0;
    --bg-soft: #faf9f4;
    --white: #fff;
    --radius: 16px;
    --radius-sm: 10px;
    --shadow: 0 12px 34px rgba(20, 54, 46, .12);
    --shadow-sm: 0 4px 14px rgba(20, 54, 46, .08);
    --font: 'Manrope', system-ui, sans-serif;
    --display: 'Newsreader', Georgia, serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
    margin: 0;
    font-family: var(--font);
    color: var(--ink);
    background: var(--bg);
    line-height: 1.55;
    -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
h1, h2, h3, h4 { margin: 0 0 .4em; line-height: 1.15; letter-spacing: 0; }
.container { width: min(1200px, 92vw); margin: 0 auto; }
.muted { color: var(--muted); }
.ic { vertical-align: middle; }

/* image fallback */
.img-fallback {
    background: linear-gradient(135deg, var(--navy) 0%, var(--navy-700) 60%, var(--accent-600) 140%);
    position: relative;
}
.img-fallback::after {
    content: "Northline";
    position: absolute; inset: 0;
    display: grid; place-items: center;
    color: rgba(255,255,255,.55); font-weight: 700; font-size: .8rem; letter-spacing: .12em;
}

/* buttons */
.btn {
    display: inline-flex; align-items: center; gap: .5rem;
    font-family: inherit; font-weight: 600; font-size: .92rem;
    padding: .7rem 1.2rem; border-radius: 999px; border: 1px solid transparent;
    cursor: pointer; transition: .18s ease; white-space: nowrap;
}
.btn-primary { background: var(--accent); color: #fff; box-shadow: 0 8px 20px rgba(196,95,54,.32); }
.btn-primary:hover { background: var(--accent-600); transform: translateY(-1px); }
.btn-dark { background: var(--navy); color: #fff; }
.btn-dark:hover { background: var(--navy-900); }
.btn-ghost { background: transparent; border-color: var(--line); color: var(--ink); }
.btn-ghost:hover { border-color: var(--navy); }
.btn-light { background: #fff; border-color: var(--line); }
.btn-light:hover { border-color: var(--navy); }
.btn-block { width: 100%; justify-content: center; }
.btn-lg { padding: .9rem 1.6rem; font-size: 1rem; }
.btn-search { padding: .85rem 1.5rem; }

.eyebrow { text-transform: uppercase; letter-spacing: .16em; font-size: .72rem; font-weight: 700; color: var(--accent); margin: 0 0 .6rem; }
.eyebrow.light { color: var(--gold); }

/* ---------- header ---------- */
.site-header {
    position: sticky; top: 0; z-index: 1000;
    background: rgba(255,255,255,.86); backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--line);
}
.header-inner { display: flex; align-items: center; gap: 1.5rem; padding: .85rem 0; }
.brand { display: flex; align-items: center; gap: .65rem; flex-shrink: 0; }
.brand-logo { height: 58px; width: auto; max-width: none; flex-shrink: 0; display: block; }
.brand-mark { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 11px; background: var(--navy); color: #fff; }
.brand-text { display: flex; flex-direction: column; line-height: 1; }
.brand-text strong { font-size: 1.02rem; letter-spacing: .04em; }
.brand-text small { font-size: .58rem; letter-spacing: .22em; color: var(--muted); margin-top: 3px; }
.logo-badge { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 12px; background: #fff; flex: none; padding: 7px; }
.logo-badge img { width: 100%; height: 100%; object-fit: contain; }
.main-nav { display: flex; align-items: center; gap: 1.1rem; margin-left: 1rem; }
.main-nav > a { font-weight: 600; font-size: .9rem; color: var(--ink); padding: .3rem 0; position: relative; white-space: nowrap; }
.main-nav > a:hover, .main-nav > a.is-active { color: var(--accent); }
.main-nav > a.is-active::after { content: ""; position: absolute; left: 0; right: 0; bottom: -4px; height: 2px; background: var(--accent); border-radius: 2px; }

/* Dropdown nav items (About, Calculators) */
.nav-item { position: relative; }
.nav-sub-toggle {
    display: inline-flex; align-items: center; gap: .25rem;
    font-weight: 600; font-size: .9rem; color: var(--ink);
    background: none; border: 0; cursor: pointer; padding: .3rem 0; font-family: inherit;
    white-space: nowrap;
}
.nav-sub-toggle .ic { transition: transform .2s ease; opacity: .7; }
.nav-item:hover .nav-sub-toggle, .nav-item.is-active .nav-sub-toggle { color: var(--accent); }
.nav-sub {
    position: absolute; top: calc(100% + 8px); left: 50%; transform: translateX(-50%) translateY(6px);
    min-width: 200px; background: #fff; border: 1px solid var(--line); border-radius: 14px;
    box-shadow: 0 18px 40px -18px rgba(15,23,42,.35); padding: .4rem; display: flex; flex-direction: column;
    opacity: 0; visibility: hidden; transition: opacity .18s ease, transform .18s ease; z-index: 60;
}
.nav-sub::before { content: ""; position: absolute; bottom: 100%; left: 0; right: 0; height: 10px; }
.nav-sub a { padding: .55rem .7rem; border-radius: 9px; font-size: .88rem; font-weight: 500; color: var(--ink); white-space: nowrap; }
.nav-sub a:hover { background: var(--wash, #f5f6f8); color: var(--accent); }
.nav-item:hover .nav-sub,
.nav-item:focus-within .nav-sub,
.nav-item.open .nav-sub { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); }
.nav-item:hover .nav-sub-toggle .ic, .nav-item.open .nav-sub-toggle .ic { transform: rotate(180deg); }
.nav-mobile-cta { display: none; }

.header-cta { margin-left: auto; display: flex; gap: .6rem; }
.nav-toggle { display: none; position: relative; flex-direction: column; gap: 5px; background: none; border: 0; cursor: pointer; padding: 6px; z-index: 70; }
.nav-toggle span { width: 24px; height: 2px; background: var(--ink); border-radius: 2px; transition: transform .25s ease, opacity .2s ease; }
.site-header.open .nav-toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.site-header.open .nav-toggle span:nth-child(2) { opacity: 0; }
.site-header.open .nav-toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.nav-backdrop { position: fixed; inset: 0; background: rgba(15,23,42,.45); z-index: 55; opacity: 0; transition: opacity .25s ease; }

@media (max-width: 1500px) {
    .header-inner { gap: 1rem; }
    .main-nav { gap: .8rem; margin-left: .4rem; }
    .header-cta { gap: .4rem; }
    .header-cta > .pwa-install { display: none !important; }
    .header-cta .btn { padding-inline: .85rem; font-size: .84rem; }
}


/* ---------- hero ---------- */
.hero { position: relative; color: #fff; padding: 4.5rem 0 5.5rem; }
.hero-bg {
    position: absolute; inset: 0; z-index: 0; overflow: hidden;
    background: var(--navy-900);
}
.hero-video {
    position: absolute; inset: 0; width: 100%; height: 100%;
    object-fit: cover; object-position: center top; z-index: 0; pointer-events: none;
}
.hero-bg::after {
    content: ""; position: absolute; inset: 0; z-index: 1;
    background: linear-gradient(90deg, rgba(13,40,34,.94) 0%, rgba(13,40,34,.76) 47%, rgba(13,40,34,.28) 100%);
}
.hero-inner { position: relative; z-index: 10; }
.hero-copy { max-width: 720px; }
.hero h1 { font-family: var(--display); font-weight: 600; font-size: clamp(2.1rem, 4.6vw, 3.5rem); }
.hero .eyebrow { color: #fff; }
.hero h1 span { color: var(--accent); font-style: italic; }
.hero-sub { font-size: 1.1rem; color: rgba(255,255,255,.8); max-width: 600px; }

.searchbar { position: relative; z-index: 40; background: #fff; border-radius: var(--radius); box-shadow: var(--shadow); margin-top: 2.2rem; padding: .5rem; color: var(--ink); }
.search-tabs { display: flex; gap: .3rem; padding: .35rem .35rem 0; }
.search-tabs .tab { padding: .55rem 1.3rem; border-radius: 10px 10px 0 0; font-weight: 600; font-size: .9rem; cursor: pointer; color: var(--muted); }
.search-tabs .tab input { display: none; }
.search-tabs .tab.is-active { background: var(--bg); color: var(--accent); }
.search-fields { display: grid; grid-template-columns: 1.1fr 1.7fr auto; gap: .5rem; padding: .5rem; }
.field { display: flex; flex-direction: column; gap: .25rem; padding: .55rem .85rem; border-radius: var(--radius-sm); background: var(--bg); }
.field label { font-size: .68rem; text-transform: uppercase; letter-spacing: .1em; color: var(--muted); font-weight: 700; }
.field input, .field select { border: 0; background: transparent; font-family: inherit; font-size: .98rem; font-weight: 600; color: var(--ink); outline: none; padding: 2px 0; }
.btn-search { align-self: stretch; }
.search-extra { display: grid; grid-template-columns: 1fr 1fr auto; gap: .5rem; padding: 0 .5rem .5rem; align-items: center; }
.field-range .range-pair { display: flex; align-items: center; gap: .4rem; }
.field-range .range-pair input { width: 100%; }
.field-range .range-pair span { color: var(--muted); font-weight: 700; }
.hero-ppm { background: transparent; padding: .3rem .5rem; color: var(--accent); font-weight: 700; font-size: .85rem; white-space: nowrap; }

.autocomplete { position: relative; }
.ac-list { position: absolute; top: calc(100% + 8px); left: -.85rem; right: -.85rem; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); box-shadow: var(--shadow); z-index: 30; max-height: 280px; overflow: auto; }
.ac-item { display: flex; justify-content: space-between; align-items: center; gap: .75rem; padding: .65rem .9rem; cursor: pointer; font-size: .92rem; }
.ac-item:hover, .ac-item.active { background: var(--bg); }
.ac-item small { color: var(--muted); }
.ac-item .ac-count { background: var(--accent); color: #fff; border-radius: 999px; padding: .05rem .5rem; font-size: .72rem; font-weight: 700; }
.ac-empty { padding: .7rem .9rem; color: var(--muted); font-size: .9rem; }

/* ---- Multi-select suburb input ---- */
.multi-suburb { position: relative; }
.ms-control { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; }
.ms-chips { display: contents; }
.ms-chip { display: inline-flex; align-items: center; gap: .35rem; background: var(--navy); color: #fff; border-radius: 999px; padding: .2rem .3rem .2rem .65rem; font-size: .82rem; font-weight: 600; line-height: 1; }
.ms-x { background: rgba(255,255,255,.18); color: #fff; border: 0; border-radius: 999px; width: 18px; height: 18px; font-size: 14px; line-height: 1; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.ms-x:hover { background: var(--accent); }
.ms-input { flex: 1; min-width: 120px; border: 0; background: transparent; font-family: inherit; font-size: .98rem; font-weight: 600; color: var(--ink); outline: none; padding: 2px 0; }
.ms-list { position: absolute; top: calc(100% + 10px); left: -.85rem; right: -.85rem; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); box-shadow: var(--shadow); z-index: 1000; max-height: 300px; overflow: auto; }
.ms-list .ac-item { color: var(--ink); }
/* In the search-page sidebar the dropdown should align to the box edges */
.filter-group .multi-suburb .ms-list { left: 0; right: 0; }
/* Raise the whole suburb field (and its dropdown) above later filter cards */
.filter-group .multi-suburb { position: relative; z-index: 60; background: var(--bg); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: .5rem .65rem; }
.filters { overflow: visible; }

.hero-quick { display: flex; flex-wrap: wrap; gap: .5rem .9rem; align-items: center; margin-top: 1.5rem; font-size: .88rem; color: rgba(255,255,255,.65); }
.hero-quick a { color: rgba(255,255,255,.92); border-bottom: 1px dashed rgba(255,255,255,.35); padding-bottom: 1px; }
.hero-quick a:hover { color: var(--accent); border-color: var(--accent); }

/* ---------- type strip ---------- */
.types-strip { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1rem; margin: -2.5rem auto 0; position: relative; z-index: 5; }
.type-tile { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 1.3rem 1rem; text-align: center; box-shadow: var(--shadow-sm); transition: .18s; }
.type-tile:hover { transform: translateY(-3px); box-shadow: var(--shadow); border-color: transparent; }
.type-ic { display: inline-grid; place-items: center; width: 52px; height: 52px; border-radius: 14px; background: rgba(14,42,71,.06); color: var(--navy); margin-bottom: .6rem; }
.type-tile:hover .type-ic { background: var(--accent); color: #fff; }
.type-label { display: block; font-weight: 700; }
.type-count { display: block; font-size: .8rem; color: var(--muted); }

/* ---------- sections ---------- */
.section { padding: 3.5rem 0; }
.section-head { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 1.6rem; gap: 1rem; }
.section-head h2 { font-family: var(--display); font-weight: 600; font-size: clamp(1.6rem, 3vw, 2.1rem); }

/* ---------- cards ---------- */
.card-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.4rem; }
.card { background: #fff; border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-sm); border: 1px solid var(--line); transition: .2s; display: flex; flex-direction: column; }
.card:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.card-media { position: relative; aspect-ratio: 16 / 10; overflow: hidden; }
.card-media img { width: 100%; height: 100%; object-fit: cover; transition: .4s; }
.card:hover .card-media img { transform: scale(1.06); }
.badge { position: absolute; font-size: .72rem; font-weight: 700; padding: .3rem .6rem; border-radius: 7px; backdrop-filter: blur(4px); display: inline-flex; align-items: center; gap: 4px; }
.badge-listing { top: .7rem; left: .7rem; background: var(--accent); color: #fff; }
.badge-type { top: .7rem; right: .7rem; background: rgba(14,42,71,.82); color: #fff; }
.badge-featured { bottom: .7rem; left: .7rem; background: rgba(199,154,75,.95); color: #fff; }
.badge-fire { bottom: .7rem; left: .7rem; background: linear-gradient(135deg, #ef4444, #b91c1c); color: #fff; box-shadow: 0 2px 10px rgba(220,38,38,.45); }
.badge-fire .ic { color: #ffe2b8; }
.badge-status { bottom: .7rem; right: .7rem; background: rgba(0,0,0,.7); color: #fff; }
.card-body { padding: 1rem 1.1rem 1.1rem; display: flex; flex-direction: column; gap: .35rem; flex: 1; }
.card-price { font-weight: 800; font-size: 1.18rem; color: var(--navy); }
.ppm { font-weight: 600; font-size: .8rem; color: var(--muted); }
.card-title { font-size: 1.02rem; font-weight: 700; line-height: 1.25; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.card-loc { color: var(--muted); font-size: .88rem; display: flex; align-items: center; gap: .35rem; margin: 0; }
.card-meta { display: flex; gap: 1rem; font-size: .85rem; color: var(--ink); margin-top: .2rem; }
.card-meta span { display: inline-flex; align-items: center; gap: .35rem; }
.card-foot { margin-top: auto; padding-top: .8rem; border-top: 1px solid var(--line); display: flex; justify-content: space-between; align-items: center; }
.card-foot .ref { font-size: .76rem; color: var(--muted); letter-spacing: .04em; }
.card-foot .more { display: inline-flex; align-items: center; gap: .3rem; font-weight: 700; font-size: .85rem; color: var(--accent); }

/* ---------- match cta ---------- */
.match-cta { background: var(--navy); color: #fff; padding: 3.5rem 0; }
.match-inner { display: grid; grid-template-columns: 1.1fr 1fr; gap: 2.5rem; align-items: center; }
.match-copy h2 { font-family: var(--display); font-weight: 600; font-size: clamp(1.7rem, 3vw, 2.3rem); }
.match-copy p { color: rgba(255,255,255,.78); max-width: 460px; }
.match-steps { display: flex; flex-direction: column; gap: .8rem; }
.step { display: flex; gap: 1rem; align-items: center; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.1); border-radius: var(--radius-sm); padding: 1rem 1.2rem; }
.step-n { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--accent); font-weight: 800; flex: none; }
.step strong { display: block; }
.step p { margin: 0; font-size: .88rem; color: rgba(255,255,255,.65); }

/* ---------- area chips ---------- */
.area-chips { display: flex; flex-wrap: wrap; gap: .6rem; }
.chip { background: #fff; border: 1px solid var(--line); border-radius: 999px; padding: .5rem 1rem; font-weight: 600; font-size: .9rem; transition: .15s; }
.chip:hover { border-color: var(--accent); color: var(--accent); }
.chip span { color: var(--muted); margin-left: .35rem; font-weight: 600; }

/* ---------- footer ---------- */
.site-footer { background: var(--navy-900); color: rgba(255,255,255,.72); margin-top: 2rem; }
.footer-grid { display: grid; grid-template-columns: 1.8fr 1fr 1fr 1fr 1.2fr; gap: 2rem; padding: 3rem 0 2rem; }
.footer-brand { display: flex; gap: .9rem; }
.footer-brand strong { color: #fff; letter-spacing: .04em; }
.footer-brand p { font-size: .9rem; margin: .4rem 0 0; max-width: 320px; }
.footer-col h4 { color: #fff; font-size: .8rem; text-transform: uppercase; letter-spacing: .12em; }
.footer-col a, .footer-col p { display: block; color: rgba(255,255,255,.7); font-size: .9rem; padding: .25rem 0; margin: 0; }
.footer-col a:hover { color: var(--accent); }
.footer-bottom { display: flex; justify-content: space-between; padding: 1.2rem 0; border-top: 1px solid rgba(255,255,255,.1); font-size: .82rem; }

/* ---------- search page ---------- */
.crumbs { font-size: .85rem; color: var(--muted); padding: 1.4rem 0 .4rem; }
.crumbs a:hover { color: var(--accent); }
.search-page { padding-bottom: 3rem; }
.search-layout { display: grid; grid-template-columns: 290px 1fr; gap: 1.6rem; align-items: start; }
.filters { position: sticky; top: 90px; background: var(--navy); color: #fff; border: 1px solid var(--navy-900); border-radius: var(--radius); padding: 1.3rem; box-shadow: var(--shadow-sm); }
.filters h3 { font-size: 1.05rem; color: #fff; }
.filter-group { margin-bottom: 1.1rem; }
.filter-group > label { display: block; font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; font-weight: 700; color: rgba(255,255,255,.72); margin-bottom: .4rem; }
.filter-group.two { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem; }
.filter-group input, .filter-group select { width: 100%; padding: .6rem .75rem; border: 1px solid var(--line); border-radius: var(--radius-sm); font-family: inherit; font-size: .92rem; outline: none; background: var(--bg-soft); }
.filter-group input:focus, .filter-group select:focus { border-color: var(--navy); background: #fff; }
.seg { display: flex; background: rgba(255,255,255,.12); border-radius: var(--radius-sm); padding: 3px; gap: 2px; }
.seg label { flex: 1; text-align: center; font-size: .85rem; font-weight: 600; padding: .5rem; border-radius: 8px; cursor: pointer; color: rgba(255,255,255,.75); }
.seg label.on { background: #fff; color: var(--accent); box-shadow: var(--shadow-sm); }
.seg input { display: none; }
.btn-block + .btn-block { margin-top: .5rem; }
.filters .btn-ghost { color: #fff; border-color: rgba(255,255,255,.4); }
.filters .btn-ghost:hover { background: rgba(255,255,255,.12); border-color: rgba(255,255,255,.6); }

.results-head { display: flex; justify-content: space-between; align-items: flex-end; margin-bottom: 1.3rem; gap: 1rem; }
.results-head h1 { font-size: 1.4rem; }
.results-head .muted { font-size: .9rem; }
.sort-form { display: flex; align-items: center; gap: .5rem; }
.sort-form label { font-size: .8rem; color: var(--muted); }
.sort-form select { padding: .5rem .7rem; border: 1px solid var(--line); border-radius: var(--radius-sm); font-family: inherit; background: #fff; }
.results .card-grid { grid-template-columns: repeat(2, 1fr); }

.empty { text-align: center; padding: 4rem 1rem; color: var(--muted); background: #fff; border: 1px dashed var(--line); border-radius: var(--radius); }
.empty h3 { color: var(--ink); margin-top: 1rem; }
.empty .btn { margin-top: 1rem; }

/* ---------- detail ---------- */
.detail { padding-bottom: 3rem; }
.gallery { display: grid; grid-template-columns: 1fr; gap: .7rem; margin-bottom: 1.6rem; }
.gallery-main { position: relative; aspect-ratio: 21 / 9; border-radius: var(--radius); overflow: hidden; }
.gallery-main img { width: 100%; height: 100%; object-fit: cover; }
.gallery-thumbs { display: flex; gap: .6rem; }
.thumb { width: 110px; height: 74px; border-radius: 10px; overflow: hidden; border: 2px solid transparent; padding: 0; cursor: pointer; background: none; }
.thumb img { width: 100%; height: 100%; object-fit: cover; }
.thumb.on { border-color: var(--accent); }

/* ---------- media tab sheet ---------- */
.media-panel { margin-bottom: 1.6rem; }
.media-units { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; margin-bottom: .8rem; }
.media-units-lbl { display: inline-flex; align-items: center; gap: .35rem; font-size: .76rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); }
.munit { border: 1px solid var(--line); background: #fff; color: var(--navy); padding: .4rem .8rem; border-radius: 999px; font-size: .85rem; font-weight: 600; cursor: pointer; }
.munit:hover { border-color: var(--accent); }
.munit.on { background: var(--navy); color: #fff; border-color: var(--navy); }
.media-tabs { display: flex; gap: .3rem; border-bottom: 1px solid var(--line); margin-bottom: .9rem; }
.mtab { display: inline-flex; align-items: center; gap: .4rem; border: 0; background: none; padding: .6rem .9rem; font-size: .92rem; font-weight: 600; color: var(--muted); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.mtab[hidden] { display: none; }
.mtab:hover { color: var(--navy); }
.mtab.on { color: var(--navy); border-bottom-color: var(--accent); }
.mtab svg { flex: none; }
.media-pane { display: none; }
.media-pane.on { display: block; }
.media-thumbs { display: flex; gap: .6rem; flex-wrap: wrap; margin-top: .7rem; }
.mthumb { width: 110px; height: 74px; border-radius: 10px; overflow: hidden; border: 2px solid transparent; padding: 0; cursor: pointer; background: none; }
.mthumb img { width: 100%; height: 100%; object-fit: cover; }
.mthumb.on { border-color: var(--accent); }
.media-pane[data-pane="tour"] [hidden] { display: none; }
.detail-grid { display: grid; grid-template-columns: 1fr 360px; gap: 2rem; align-items: start; }
.tags { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: .8rem; }
.tags .badge { position: static; }
.badge-ref { background: var(--bg); color: var(--muted); }
.detail-head h1 { font-family: var(--display); font-weight: 600; font-size: clamp(1.6rem, 3vw, 2.2rem); }
.detail-headline { margin: .3rem 0 .2rem; font-size: 1.02rem; font-weight: 600; color: var(--navy); line-height: 1.4; }
.detail-loc { color: var(--muted); display: flex; align-items: center; gap: .4rem; }
.detail-price { font-size: 1.8rem; font-weight: 800; color: var(--navy); margin-top: .5rem; }
.detail-sel { display: inline-flex; align-items: center; gap: .35rem; margin-top: .6rem; padding: .25rem .7rem; border-radius: 999px; background: var(--gold, #c8a24a); color: #fff; font-size: .82rem; font-weight: 700; letter-spacing: .02em; }
.spec-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin: 1.5rem 0; padding: 1.2rem; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.spec { display: flex; flex-direction: column; gap: .15rem; color: var(--navy); }
.spec span { font-weight: 700; font-size: 1.05rem; }
.spec small { color: var(--muted); font-weight: 500; font-size: .78rem; }
.prose { margin: 1.8rem 0; }
.prose h2 { font-size: 1.25rem; font-family: var(--display); font-weight: 600; }
.feature-list { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }
.feature-list li { display: flex; align-items: center; gap: .5rem; font-size: .94rem; }
.feature-list svg { color: var(--accent); flex: none; }

/* ---------- units ---------- */
.units-pill { display: inline-flex; align-items: center; gap: .35rem; background: var(--navy); color: #fff !important; padding: .12rem .5rem; border-radius: 999px; font-size: .76rem; font-weight: 700; }
.u-count { display: inline-grid; place-items: center; min-width: 1.5em; padding: 0 .35em; height: 1.5em; background: var(--accent); color: #fff; border-radius: 999px; font-size: .7em; vertical-align: middle; }
.units-intro { margin: -.3rem 0 .8rem; font-size: .9rem; }
.units-table { border: 1px solid var(--line); border-radius: var(--radius-sm); overflow: hidden; }
.units-row { display: grid; grid-template-columns: 1.6fr 1fr 1.1fr .9fr .9fr; align-items: center; gap: .6rem; padding: .7rem .9rem; border-top: 1px solid var(--line); font-size: .92rem; }
.units-row:first-child { border-top: 0; }
.units-head { background: var(--bg); font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; font-weight: 700; color: var(--muted); }
.units-row .u-name { font-weight: 700; color: var(--navy); }
.units-row .u-name small { display: block; font-weight: 500; color: var(--muted); }
.units-row .u-price { font-weight: 700; }
.u-status { display: inline-block; padding: .15rem .5rem; border-radius: 999px; font-size: .72rem; font-weight: 700; }
.u-status.s-available { background: #e7f7ee; color: #138a52; }
.u-status.s-under_offer { background: #fff4e0; color: #b9770a; }
.u-status.s-let, .u-status.s-sold { background: #f1f1f4; color: #8a8a96; }
.btn-xs { padding: .35rem .6rem; font-size: .78rem; border-radius: 8px; }
.u-na { color: var(--muted); }
.video-embed { position: relative; width: 100%; aspect-ratio: 16 / 9; border-radius: var(--radius); overflow: hidden; background: #000; }
.video-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.map-stub { background: linear-gradient(135deg, #eef1f6, #e2e7f0); border-radius: var(--radius); padding: 2.5rem; text-align: center; color: var(--navy); }
.map-stub p { font-weight: 700; margin: .5rem 0 0; }
.map-stub small { color: var(--muted); }
.prop-map { height: 320px; border-radius: var(--radius); overflow: hidden; border: 1px solid var(--line); box-shadow: var(--shadow-sm); z-index: 0; }
.map-cap { font-weight: 600; color: var(--navy); margin: .65rem 0 0; }
.map-link { display: inline-flex; align-items: center; gap: .3rem; margin-left: .6rem; font-weight: 600; color: var(--accent); font-size: .88rem; }
.map-link:hover { text-decoration: underline; }
.nlc-pin { background: none; border: 0; }
.nlc-pin-dot { display: block; width: 22px; height: 22px; border-radius: 50% 50% 50% 0; background: var(--accent); border: 3px solid #fff; box-shadow: 0 2px 6px rgba(0,0,0,.35); transform: rotate(-45deg); }
/* map layer toggle (street / satellite) */
.leaflet-control-layers { border: 1px solid var(--line); border-radius: 10px; box-shadow: 0 2px 8px rgba(20,54,46,.12); }
.leaflet-control-layers-toggle { width: 36px; height: 36px; background-size: 20px 20px; }
.leaflet-control-layers-expanded { padding: .5rem .7rem; color: var(--navy); font-weight: 600; font-size: .85rem; }
.leaflet-control-layers label { display: flex; align-items: center; gap: .4rem; margin: .15rem 0; cursor: pointer; }
.leaflet-control-layers-selector { accent-color: var(--accent); margin: 0; }

/* ---------- partners band ---------- */
.partners-band { padding: 2.4rem 0 2.8rem; border-top: 1px solid var(--line); background: var(--bg-soft); }
.partners-label { text-align: center; text-transform: uppercase; letter-spacing: .14em; font-size: .74rem; font-weight: 700; color: var(--muted); margin: 0 0 1.2rem; }
.partners-strip { display: grid; grid-template-columns: repeat(5, 1fr); border-block: 1px solid var(--line); }
.partners-strip span { padding: 1rem .75rem; color: var(--navy); font-size: .84rem; font-weight: 700; text-align: center; }
.partners-strip span + span { border-left: 1px solid var(--line); }
@media (max-width: 700px) {
    .partners-strip { grid-template-columns: 1fr; }
    .partners-strip span + span { border-left: 0; border-top: 1px solid var(--line); }
}

.detail-side { position: sticky; top: 90px; display: flex; flex-direction: column; gap: 1rem; }
.agent-card, .enquiry-card { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 1.3rem; box-shadow: var(--shadow-sm); }
.agent-top { display: flex; align-items: center; gap: .8rem; margin-bottom: 1rem; }
.agent-photo { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; }
.agent-top strong { display: block; }
.agent-top small { color: var(--muted); }
.agent-contact { display: flex; align-items: center; gap: .55rem; padding: .55rem 0; border-top: 1px solid var(--line); font-weight: 600; font-size: .92rem; }
.agent-contact:hover { color: var(--accent); }
.enquiry-card h3 { font-size: 1.1rem; }
.enquiry-form { display: flex; flex-direction: column; gap: .6rem; }
.enquiry-form input, .enquiry-form textarea { padding: .7rem .85rem; border: 1px solid var(--line); border-radius: var(--radius-sm); font-family: inherit; font-size: .92rem; outline: none; background: var(--bg-soft); resize: vertical; }
.enquiry-form input:focus, .enquiry-form textarea:focus { border-color: var(--navy); background: #fff; }
.fineprint { font-size: .76rem; color: var(--muted); margin: .2rem 0 0; }
.alert { padding: .8rem 1rem; border-radius: var(--radius-sm); font-size: .9rem; font-weight: 600; display: flex; align-items: center; gap: .5rem; margin-bottom: .8rem; }
.alert.ok { background: #e7f7ee; color: #138a52; }
.alert.err { background: #fdecec; color: #c0392b; }

/* ---------- requirement page ---------- */
.req-hero { background: linear-gradient(160deg, var(--navy-900), var(--navy)); color: #fff; padding: 3.5rem 0; }
.req-hero h1 { font-family: var(--display); font-weight: 600; font-size: clamp(1.9rem, 3.6vw, 2.8rem); }
.req-hero .lead { color: rgba(255,255,255,.8); max-width: 640px; font-size: 1.05rem; }
.req-hero .lead strong { color: #fff; }
.req-layout { display: grid; grid-template-columns: 1.6fr 1fr; gap: 1.6rem; margin: -2rem auto 3rem; position: relative; z-index: 2; align-items: start; }
.card-panel { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 1.6rem; box-shadow: var(--shadow); }
.req-form h3 { font-size: 1.05rem; margin-top: .5rem; padding-top: 1rem; }
.req-form h3:first-of-type { margin-top: 0; padding-top: 0; }
.req-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: .5rem; }
.req-grid .span2 { grid-column: 1 / -1; }

/* list-requirement form — light theme overrides (these controls are otherwise
   styled for the dark search sidebar, which made labels white-on-white here) */
.req-form .filter-group { margin-bottom: 0; }
.req-form .filter-group > label { color: var(--navy); }
.req-form .filter-group input,
.req-form .filter-group select,
.req-form .filter-group textarea {
    width: 100%; padding: .7rem .85rem; border: 1px solid var(--line);
    border-radius: var(--radius-sm); font-family: inherit; font-size: .95rem;
    color: var(--ink); background: var(--bg-soft); outline: none;
    transition: border-color .15s, box-shadow .15s, background .15s;
}
.req-form .filter-group input:focus,
.req-form .filter-group select:focus,
.req-form .filter-group textarea:focus {
    border-color: var(--accent); background: #fff; box-shadow: 0 0 0 3px rgba(196,95,54,.12);
}
.req-form .filter-group input::placeholder,
.req-form .filter-group textarea::placeholder { color: var(--muted); }
.req-form .filter-group textarea { resize: vertical; min-height: 120px; line-height: 1.55; }
.req-form .field-hint { display: block; margin-top: .35rem; font-size: .78rem; color: var(--muted); }
.req-form .seg { background: var(--bg); border: 1px solid var(--line); }
.req-form .seg label { color: var(--muted); }
.req-form .seg label.on { background: var(--navy); color: #fff; box-shadow: var(--shadow-sm); }
/* single-field autocomplete dropdown inside the form */
.req-form .autocomplete { position: relative; }
.req-form .autocomplete .ac-list { top: calc(100% + 6px); left: 0; right: 0; }
.req-form .filter-group input.is-readonly { background: var(--bg); color: var(--muted); cursor: default; }
.req-form .filter-group input.is-readonly:focus { box-shadow: none; border-color: var(--line); }
/* market insights box */
.req-insights { border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--bg-soft, #fbfcfd); padding: .85rem 1rem; }
.req-insights .ri-head { font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; font-weight: 800; color: var(--muted); margin-bottom: .55rem; }
.req-insights .ri-item { display: flex; align-items: flex-start; gap: .55rem; font-size: .9rem; font-weight: 600; padding: .25rem 0; color: var(--ink); }
.req-insights .ri-dot { width: 9px; height: 9px; border-radius: 50%; margin-top: .42rem; flex: none; background: var(--accent); }
.req-insights .ri-good .ri-dot { background: #16a34a; }
.req-insights .ri-good { color: #15803d; }
.req-insights .ri-warn .ri-dot { background: #f59e0b; }
.req-insights .ri-warn { color: #b45309; }
.req-insights .ri-info .ri-dot { background: var(--accent); }
.req-side .info-panel h3 { font-size: 1.05rem; }
.num-list { list-style: none; padding: 0; margin: 0 0 1rem; }
.num-list li { display: flex; align-items: flex-start; gap: .7rem; padding: .55rem 0; font-size: .92rem; }
.num-list span { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: var(--accent); color: #fff; font-weight: 800; font-size: .8rem; flex: none; }
.info-note { background: var(--bg); border-radius: var(--radius-sm); padding: .9rem 1rem; font-size: .88rem; color: var(--navy); display: flex; gap: .6rem; align-items: flex-start; }
.info-note svg { color: var(--accent); flex: none; }
.match-wrap { position: relative; }
.match-score { background: var(--navy); color: #fff; border-radius: var(--radius-sm) var(--radius-sm) 0 0; padding: .55rem .9rem; font-weight: 700; font-size: .88rem; display: flex; flex-direction: column; }
.match-score small { font-weight: 500; color: rgba(255,255,255,.65); font-size: .74rem; }
.match-wrap .card { border-radius: 0 0 var(--radius) var(--radius); }

@media (max-width: 980px) {
    .types-strip { grid-template-columns: repeat(2, 1fr); }
    .card-grid, .results .card-grid { grid-template-columns: repeat(2, 1fr); }
    .match-inner, .req-layout, .detail-grid, .footer-grid { grid-template-columns: 1fr; }
    .search-layout { grid-template-columns: 1fr; }
    .filters { position: static; }
    .detail-side { position: static; }
}@media (max-width: 1180px) {
    /* The header uses backdrop-filter which would make it the containing block
       for its position:fixed children (the drawer + backdrop), clipping them to
       the header's height. Disable it here so the off-canvas drawer fills the
       viewport correctly. */
    .site-header { backdrop-filter: none; -webkit-backdrop-filter: none; background: #fff; }
    .header-cta { display: none; }
    .nav-toggle { display: flex; margin-left: auto; }
    /* Off-canvas drawer */
    .main-nav {
        position: fixed; top: 0; right: 0; bottom: 0; width: min(86vw, 340px);
        margin: 0; padding: 5rem 1.4rem 2rem; gap: .2rem;
        flex-direction: column; align-items: stretch;
        background: #fff; border-left: 1px solid var(--line);
        box-shadow: -24px 0 60px -30px rgba(15,23,42,.5);
        transform: translateX(100%); transition: transform .3s cubic-bezier(.4,0,.2,1);
        overflow-y: auto; z-index: 60;
    }
    .site-header.open .main-nav { transform: translateX(0); }
    .site-header.open .nav-backdrop { display: block; opacity: 1; }
    .main-nav > a, .nav-sub-toggle {
        padding: .85rem .2rem; font-size: 1rem; border-bottom: 1px solid var(--line);
        width: 100%; justify-content: space-between; text-align: left;
    }
    .main-nav > a.is-active::after { display: none; }
    .nav-item { width: 100%; }
    .nav-sub {
        position: static; transform: none; opacity: 1; visibility: visible;
        box-shadow: none; border: 0; border-radius: 0; min-width: 0; padding: 0 0 .4rem .6rem;
        max-height: 0; overflow: hidden; transition: max-height .25s ease;
    }
    .nav-item.open .nav-sub { max-height: 320px; transform: none; left: auto; }
    .nav-sub a { padding: .6rem .4rem; }
    .nav-mobile-cta { display: flex; flex-direction: column; gap: .6rem; margin-top: 1.2rem; }
    .nav-mobile-cta .btn { width: 100%; justify-content: center; }
}@media (max-width: 720px) {
    .search-fields { grid-template-columns: 1fr; }
    .search-extra { grid-template-columns: 1fr; }
    .card-grid, .results .card-grid, .spec-row, .feature-list, .req-grid { grid-template-columns: 1fr; }
    .types-strip { grid-template-columns: 1fr 1fr; margin-top: 1.5rem; }
    .footer-bottom { flex-direction: column; gap: .5rem; }
}


/* ---------- blog / insights ---------- */
.page-head { background: var(--navy); color: #fff; padding: 3rem 0 2.4rem; }
.page-head .eyebrow { color: #fff; opacity: .8; }
.page-head h1 { color: #fff; margin: .3rem 0 .5rem; }
.page-head .lead { color: rgba(255,255,255,.85); max-width: 640px; }
.section { padding: 2.6rem 0; }
.section-title { font-family: 'Newsreader', serif; font-size: 1.6rem; margin: 0 0 1.2rem; color: var(--navy); }
.blog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.4rem; }
.blog-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; text-decoration: none; color: inherit; transition: transform .15s, box-shadow .15s; }
.blog-card:hover { transform: translateY(-3px); box-shadow: 0 16px 40px rgba(8,24,48,.12); }
.blog-cover { aspect-ratio: 16/10; overflow: hidden; background: var(--sand); }
.blog-cover img { width: 100%; height: 100%; object-fit: cover; }
.blog-card-body { padding: 1.1rem 1.2rem 1.3rem; display: flex; flex-direction: column; gap: .4rem; }
.blog-card-body h3 { font-size: 1.1rem; margin: .1rem 0; color: var(--navy); }
.blog-card-body p { font-size: .9rem; color: var(--steel); margin: 0; }
.read-more { display: inline-flex; align-items: center; gap: .35rem; color: var(--accent); font-weight: 700; font-size: .85rem; margin-top: .3rem; }
.article { max-width: 760px; padding-top: 2.4rem; padding-bottom: 2.4rem; }
.back-link { display: inline-flex; align-items: center; gap: .35rem; color: var(--accent); font-weight: 600; text-decoration: none; margin-bottom: 1rem; }
.article h1 { font-family: 'Newsreader', serif; font-size: 2.1rem; line-height: 1.15; margin: .3rem 0 1rem; }
.article-author { display: flex; align-items: center; gap: .7rem; margin-bottom: 1.4rem; }
.article-author img { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; }
.article-author strong { display: block; font-size: .9rem; }
.article-author small { color: var(--muted); }
.article-cover { border-radius: var(--radius); overflow: hidden; margin-bottom: 1.6rem; }
.article-cover img { width: 100%; display: block; }
.article-body p { font-size: 1.05rem; line-height: 1.7; color: #243b59; margin: 0 0 1.1rem; }
@media (max-width: 900px) { .blog-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 620px) { .blog-grid { grid-template-columns: 1fr; } }

/* ---- Listing insights ---- */
.insights-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0 0 1.4rem;padding:.85rem 1rem;background:var(--bg-soft);border:1px solid var(--line);border-radius:var(--radius-sm)}
.insights-lbl{display:inline-flex;align-items:center;gap:.4rem;font-weight:700;font-size:.82rem;color:var(--navy);margin-right:.2rem}
.insight-chip{font-size:.8rem;font-weight:600;padding:.32rem .7rem;border-radius:999px;border:1px solid transparent}
.insight-chip.i-good{background:#e7f6ed;color:#1d7a44;border-color:#bfe7cf}
.insight-chip.i-warn{background:#fdeee8;color:#b5521f;border-color:#f6cdb8}
.insight-chip.i-info{background:#eaf1f7;color:var(--accent-600);border-color:#cfe0ee}

/* ---- Agent socials ---- */
.agent-socials{display:flex;gap:.5rem;margin-top:.75rem}
.agent-social{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);color:var(--navy);background:var(--white);transition:.15s}
.agent-social:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm)}
.agent-social.s-whatsapp:hover{background:#25d366;color:#fff;border-color:#25d366}
.agent-social.s-instagram:hover{background:#d6286f;color:#fff;border-color:#d6286f}
.agent-social.s-linkedin:hover{background:#0a66c2;color:#fff;border-color:#0a66c2}

/* ---- Virtual walk-through ---- */
.walkthrough-intro{color:var(--muted);margin:.2rem 0 .9rem;scroll-margin-top:90px}
.walkthrough-embed{aspect-ratio:16 / 10;box-shadow:0 14px 36px -22px rgba(23,63,53,.55)}
.walkthrough-link{margin:.7rem 0 0;font-size:.9rem}
.walkthrough-link a{color:var(--accent);font-weight:600;text-decoration:none}
.walkthrough-link a:hover{text-decoration:underline}
.tour-pano{width:100%;aspect-ratio:16 / 10;min-height:380px;border-radius:var(--radius);overflow:hidden;background:#0b1622;box-shadow:0 14px 36px -22px rgba(23,63,53,.55)}
.tour-pano .pnlm-load-box{background:#0b1622}
.walkthrough-hint{display:flex;align-items:center;gap:.4rem;margin:.7rem 0 0;font-size:.85rem;color:var(--muted)}
.walkthrough-hint svg{flex:none;color:var(--accent)}
.tour-credit{margin:.35rem 0 0;font-size:.72rem;color:var(--muted);opacity:.75}
.tour-cta h3{display:flex;align-items:center;gap:.45rem}
.tour-cta p{color:var(--muted);font-size:.9rem;margin:.4rem 0 .9rem}

/* ---- Recent deals ---- */
.deals-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.1rem}
.deal-card{position:relative;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:var(--white)}
.deal-stamp{position:absolute;top:.7rem;left:.7rem;z-index:2;font-size:.72rem;font-weight:800;letter-spacing:.08em;padding:.3rem .6rem;border-radius:6px;color:#fff}
.deal-stamp.deal-sold{background:#b5521f}
.deal-stamp.deal-let{background:var(--accent)}
.deal-img{height:150px;background-size:cover;background-position:center;filter:grayscale(.15)}
.deal-body{padding:.85rem 1rem 1rem}
.deal-body strong{display:block;font-size:.95rem;color:var(--navy);margin-bottom:.25rem}
.deal-body small{display:inline-flex;align-items:center;gap:.3rem;color:var(--muted);font-size:.8rem}
@media(max-width:760px){.deals-grid{grid-template-columns:1fr}}

/* ---- Search results map ---- */
.results-view-toggle{display:inline-flex;gap:.3rem;margin-bottom:1rem;background:#eef1f5;padding:.25rem;border-radius:10px}
.view-btn{display:inline-flex;align-items:center;gap:.35rem;border:0;background:transparent;font:inherit;font-size:.85rem;font-weight:600;color:#5a6675;padding:.45rem .9rem;border-radius:8px;cursor:pointer}
.view-btn.on{background:#fff;color:#173F35;box-shadow:0 2px 8px rgba(20,54,46,.1)}
.results-map{height:560px;border-radius:16px;overflow:hidden;border:1px solid #e6e9ef;margin-bottom:1rem;position:relative;z-index:0;isolation:isolate}
.map-pop{display:block;width:200px;color:#173F35;text-decoration:none}
.map-pop-img{display:block;width:100%;height:104px;object-fit:cover;border-radius:8px;margin-bottom:.5rem;background:#eef1f6}
.map-pop strong{display:block;font-size:.92rem;margin-bottom:.15rem}
.map-pop span{display:block;font-size:.78rem;color:#687385}
.map-pop-price{margin-top:.35rem;font-weight:700;color:#C45F36 !important}
.marker-cluster-small,.marker-cluster-medium,.marker-cluster-large{background:rgba(196,95,54,.25)}
.marker-cluster-small div,.marker-cluster-medium div,.marker-cluster-large div{background:#C45F36;color:#fff;font-weight:700}

/* ---- Saved search / email alerts ---- */
.savesearch{margin:0 0 1.4rem;border:1px solid #e6e9ef;border-radius:12px;background:#fff;overflow:hidden}
.savesearch>summary{display:flex;align-items:center;gap:.5rem;cursor:pointer;list-style:none;padding:.85rem 1.1rem;font-weight:600;color:var(--accent);font-size:.92rem}
.savesearch>summary::-webkit-details-marker{display:none}
.savesearch[open]>summary{border-bottom:1px solid #eef1f5}
.savesearch-form{padding:1rem 1.1rem}
.savesearch-form .muted{font-size:.85rem;color:#687385;margin:0 0 .7rem}
.savesearch-row{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem}
.savesearch-row input[type=email]{flex:1 1 240px;padding:.6rem .8rem;border:1px solid #d8dde6;border-radius:9px;font:inherit;font-size:.9rem}
.savesearch-alerts{display:inline-flex;align-items:center;gap:.4rem;font-size:.85rem;color:#48525f}
.savesearch-flash{display:flex;align-items:center;gap:.5rem;padding:.7rem 1rem;border-radius:10px;font-size:.9rem;font-weight:500;margin:0 0 1.1rem}
.savesearch-flash.ok{background:#e7f6ee;color:#1c7a4b}
.savesearch-flash.err{background:#fdecec;color:#b5302a}

/* ---- SweetAlert2 — branded dialogs ---- */
.swal2-container{z-index:6000}
.nlc-swal{border-radius:var(--radius);padding:1.7rem 1.7rem 1.5rem;font-family:var(--font);box-shadow:0 26px 64px rgba(23,63,53,.34)}
.nlc-swal .swal2-title{font-size:1.25rem;font-weight:700;color:var(--navy)}
.nlc-swal .swal2-html-container{font-size:.95rem;color:var(--muted)}
.nlc-swal .swal2-actions{gap:.6rem;margin-top:1.4rem}
.nlc-swal-confirm,.nlc-swal-cancel{font:600 .9rem var(--font);padding:.65rem 1.3rem;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.nlc-swal-confirm{background:var(--accent);color:#fff}
.nlc-swal-confirm:hover{background:var(--accent-600)}
.nlc-swal-confirm.danger{background:#c0392b}
.nlc-swal-confirm.danger:hover{background:#a83224}
.nlc-swal-cancel{background:#fff;color:var(--ink);border-color:var(--line)}
.nlc-swal-cancel:hover{border-color:var(--muted)}

/* ---- Share dialog options ---- */
.share-opts{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem;margin:.4rem 0 0}
.share-opt{display:flex;align-items:center;gap:.6rem;padding:.7rem .9rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;color:var(--ink);font:600 .9rem var(--font);cursor:pointer;text-decoration:none;transition:border-color .15s,background .15s,transform .1s}
.share-opt:hover{border-color:var(--accent);background:var(--bg-soft);transform:translateY(-1px)}
.share-opt svg{flex:none;color:var(--accent)}
.share-copy{display:flex;gap:.5rem;margin-top:.9rem}
.share-copy input{flex:1;padding:.6rem .7rem;border:1px solid var(--line);border-radius:var(--radius-sm);font:inherit;font-size:.85rem;color:var(--muted);background:var(--bg-soft)}

/* ---- Detail title + share button ---- */
.detail-title-row{display:flex;align-items:flex-start;gap:.7rem}
.detail-title-row h1{flex:1;margin:0}
.share-btn{flex:none;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--accent);cursor:pointer;transition:background .15s,border-color .15s,color .15s,transform .1s}
.share-btn:hover{background:var(--accent);border-color:var(--accent);color:#fff;transform:translateY(-1px)}

/* ---- Gallery fullscreen ---- */
.gallery-main{position:relative}
.media-zoom{position:absolute;top:12px;right:12px;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;border:0;background:rgba(23,63,53,.6);color:#fff;cursor:pointer;backdrop-filter:blur(2px);transition:background .15s,transform .1s}
.media-zoom:hover{background:rgba(23,63,53,.85);transform:translateY(-1px)}
.gallery-main img{cursor:zoom-in}
.lightbox{position:fixed;inset:0;z-index:6500;display:flex;align-items:center;justify-content:center;background:rgba(13,40,34,.92);padding:2.2rem}
.lightbox[hidden]{display:none}
.lightbox img{max-width:100%;max-height:88vh;border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.lightbox-x{position:absolute;top:18px;right:22px;display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:50%;border:0;background:rgba(255,255,255,.12);color:#fff;cursor:pointer;transition:background .15s}
.lightbox-x:hover{background:rgba(255,255,255,.25)}
.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;border:0;background:rgba(255,255,255,.12);color:#fff;cursor:pointer;transition:background .15s}
.lightbox-nav:hover{background:rgba(255,255,255,.25)}
.lightbox-prev{left:22px}
.lightbox-next{right:22px}
.lightbox-count{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);color:#fff;font-size:.85rem;font-weight:600;opacity:.85;letter-spacing:.03em}
@media (max-width:560px){.lightbox-nav{width:42px;height:42px}.lightbox-prev{left:8px}.lightbox-next{right:8px}}

/* ===================== Brokers directory ===================== */
.broker-search{display:flex;align-items:center;gap:.6rem;margin-top:1.4rem;max-width:560px;background:#fff;border-radius:var(--radius);padding:.5rem .5rem .5rem 1rem;box-shadow:0 14px 40px -22px rgba(15,23,42,.45)}
.broker-search .bs-ic{color:var(--muted);display:flex}
.broker-search input{flex:1;border:0;background:none;font:inherit;font-size:.95rem;color:var(--ink);outline:none}
.btn-light{background:var(--accent);color:#fff;border:0;border-radius:var(--radius-sm);padding:.6rem 1.1rem;font-weight:600;cursor:pointer;white-space:nowrap}
.btn-light:hover{filter:brightness(1.05)}
.broker-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}
.broker-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;text-decoration:none;color:inherit;transition:transform .15s,box-shadow .15s}
.broker-card:hover{transform:translateY(-3px);box-shadow:0 16px 40px rgba(8,24,48,.12)}
.broker-photo{position:relative;aspect-ratio:4/3;background:var(--sand);overflow:hidden}
.broker-photo img{width:100%;height:100%;object-fit:cover}
.broker-leave{position:absolute;top:10px;left:10px;display:inline-flex;align-items:center;gap:.3rem;background:rgba(217,119,6,.95);color:#fff;font-size:.72rem;font-weight:600;padding:.28rem .55rem;border-radius:999px}
.broker-leave.inline{position:static;color:#b45309;background:rgba(217,119,6,.12);width:max-content;margin:.2rem 0 .6rem}
.broker-card-body{padding:1.1rem 1.2rem 1.3rem;display:flex;flex-direction:column;gap:.35rem}
.broker-card-body h3{font-size:1.12rem;margin:0;color:var(--navy)}
.broker-title{font-size:.86rem;color:var(--steel);margin:0}
.broker-areas{font-size:.82rem;color:var(--muted);display:flex;align-items:center;gap:.3rem;margin:.2rem 0}
.broker-counts{display:flex;gap:.6rem;margin:.4rem 0 .2rem}
.bc{font-size:.78rem;color:var(--steel);background:var(--bg-soft,#f5f6f8);border-radius:999px;padding:.3rem .7rem}
.bc strong{color:var(--navy);font-size:.92rem;margin-right:.15rem}
.bc-rent strong{color:var(--accent)}
.bc-sale strong{color:#0f766e}

/* ===================== Broker profile ===================== */
.broker-hero{background:var(--navy);color:#fff;padding:2.6rem 0}
.broker-hero-inner{display:grid;grid-template-columns:300px 1fr;gap:2.2rem;align-items:start}
.broker-hero-photo{border-radius:var(--radius);overflow:hidden;aspect-ratio:3/4;background:rgba(255,255,255,.08)}
.broker-hero-photo img{width:100%;height:100%;object-fit:cover}
.broker-hero-info .back-link{color:rgba(255,255,255,.8);margin-bottom:.6rem}
.broker-hero-info h1{color:#fff;font-family:'Newsreader',serif;font-size:2.2rem;margin:.2rem 0 .2rem}
.broker-hero-title{color:var(--gold,#e7b765);font-weight:600;margin:0 0 .8rem}
.broker-bio{color:rgba(255,255,255,.86);max-width:60ch;line-height:1.6}
.broker-hero-counts{display:flex;gap:.8rem;margin:1.1rem 0}
.bhc{display:flex;flex-direction:column;background:rgba(255,255,255,.1);border-radius:14px;padding:.7rem 1.1rem;color:#fff;text-decoration:none;min-width:96px;transition:background .15s}
.bhc:hover{background:rgba(255,255,255,.18)}
.bhc strong{font-size:1.5rem;line-height:1}
.bhc-rent strong{color:#7dd3fc}.bhc-sale strong{color:#6ee7b7}
.broker-contact-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.4rem}
.broker-contact-row .btn-ghost{color:#fff;border-color:rgba(255,255,255,.45)}
.broker-contact-row .btn-ghost:hover{background:rgba(255,255,255,.12);border-color:#fff}
.broker-contact-row .btn-ghost svg{stroke:#fff}
.broker-video{position:relative;aspect-ratio:16/9;border-radius:var(--radius);overflow:hidden;background:#000;max-width:820px}
.broker-video iframe{position:absolute;inset:0;width:100%;height:100%}
.area-chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.8rem}
.area-chip{display:inline-flex;align-items:center;gap:.3rem;background:#fff;border:1px solid var(--line);border-radius:999px;padding:.4rem .8rem;font-size:.85rem;font-weight:600;color:var(--navy);text-decoration:none;transition:border-color .15s,color .15s,transform .1s}
.area-chip:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}
.count-pill{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 .5rem;border-radius:999px;background:var(--bg-soft,#eef1f5);color:var(--steel);font-size:.82rem;font-weight:700;margin-left:.4rem;vertical-align:middle}

/* ===================== Calculators ===================== */
.calc-layout{display:grid;grid-template-columns:260px 1fr;gap:1.8rem;align-items:start}
.calc-tabs{display:flex;flex-direction:column;gap:.3rem;position:sticky;top:90px}
.calc-tab{display:flex;align-items:center;gap:.6rem;padding:.75rem .9rem;border-radius:12px;font-weight:600;font-size:.92rem;color:var(--ink);text-decoration:none;border:1px solid transparent;transition:background .15s,border-color .15s,color .15s}
.calc-tab:hover{background:var(--bg-soft,#f5f6f8)}
.calc-tab.is-active{background:#fff;border-color:var(--line);color:var(--accent);box-shadow:0 8px 24px -16px rgba(15,23,42,.4)}
.calc-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:1.6rem 1.8rem}
.calc-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem 1.6rem}
.calc-field{display:flex;flex-direction:column;gap:.35rem}
.calc-field label{font-size:.82rem;font-weight:600;color:var(--steel)}
.calc-field .input-prefix{position:relative;display:flex;align-items:center}
.calc-field .input-prefix span{position:absolute;left:.8rem;color:var(--muted);font-size:.9rem}
.calc-field input,.calc-field select{padding:.7rem .8rem;border:1px solid var(--line);border-radius:var(--radius-sm);font:inherit;font-size:.95rem;color:var(--ink);background:#fff;width:100%}
.calc-field .input-prefix input{padding-left:2rem}
.calc-result{margin-top:1.6rem;background:var(--navy);color:#fff;border-radius:var(--radius);padding:1.4rem 1.6rem;display:flex;flex-wrap:wrap;gap:1.4rem 2.2rem;align-items:flex-end}
.calc-result .cr-main{display:flex;flex-direction:column}
.calc-result .cr-main small{color:rgba(255,255,255,.7);font-size:.8rem;font-weight:500}
.calc-result .cr-main strong{font-size:2rem;line-height:1.1;font-family:'Newsreader',serif}
.calc-result .cr-item{display:flex;flex-direction:column}
.calc-result .cr-item small{color:rgba(255,255,255,.7);font-size:.78rem}
.calc-result .cr-item b{font-size:1.05rem;font-weight:600}
.calc-note{font-size:.8rem;color:var(--muted);margin-top:1rem}
.calc-schedule{margin-top:1.4rem;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.calc-schedule table{width:100%;border-collapse:collapse;font-size:.85rem}
.calc-schedule th,.calc-schedule td{padding:.55rem .8rem;text-align:right;border-bottom:1px solid var(--line)}
.calc-schedule th:first-child,.calc-schedule td:first-child{text-align:left}
.calc-schedule thead th{background:var(--bg-soft,#f5f6f8);color:var(--steel);font-weight:600}

/* ===================== About / Trends ===================== */
.about-section{padding:2.6rem 0}
.about-visual{width:min(1200px,92vw);height:clamp(220px,32vw,390px);margin:2rem auto 0;overflow:hidden;background:var(--navy)}
.about-visual img{width:100%;height:100%;object-fit:cover;object-position:center 58%}
.about-lead{max-width:70ch;color:var(--steel);line-height:1.7;font-size:1.02rem}
.value-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem;margin-top:1.6rem}
.value-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:1.4rem;display:flex;flex-direction:column;gap:.5rem}
.value-card .vc-ic{width:46px;height:46px;border-radius:12px;background:var(--accent-soft,#eef4ff);color:var(--accent);display:grid;place-items:center}
.value-card h3{margin:0;color:var(--navy);font-size:1.1rem}
.value-card p{margin:0;color:var(--steel);font-size:.9rem;line-height:1.55}
.team-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem;margin-top:1.4rem}
.team-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;text-decoration:none;color:inherit;transition:transform .15s,box-shadow .15s}
.team-card:hover{transform:translateY(-3px);box-shadow:0 16px 40px rgba(8,24,48,.12)}
.team-photo{aspect-ratio:1/1;background:var(--sand);overflow:hidden}
.team-photo img{width:100%;height:100%;object-fit:cover}
.team-body{padding:.9rem 1rem 1.1rem}
.team-body h3{margin:0;font-size:1rem;color:var(--navy)}
.team-body p{margin:.15rem 0 0;font-size:.82rem;color:var(--steel)}
.trends-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem;margin-top:1.4rem}
.trend-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:1.3rem 1.4rem}
.trend-card h3{margin:0 0 .2rem;font-size:1rem;color:var(--navy)}
.trend-stat{font-family:'Newsreader',serif;font-size:1.9rem;color:var(--accent);line-height:1.1}
.trend-delta{font-size:.82rem;font-weight:600}
.trend-up{color:#0f766e}.trend-down{color:#b91c1c}
.trend-spark{margin-top:.7rem}
.trend-table{width:100%;border-collapse:collapse;margin-top:1.4rem;font-size:.88rem;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.trend-table th,.trend-table td{padding:.6rem .9rem;text-align:right;border-bottom:1px solid var(--line)}
.trend-table th:first-child,.trend-table td:first-child{text-align:left}
.trend-table thead th{background:var(--bg-soft,#f5f6f8);color:var(--steel);font-weight:600}

@media (max-width:980px){
    .broker-grid,.value-grid,.trends-grid{grid-template-columns:repeat(2,1fr)}
    .team-grid{grid-template-columns:repeat(3,1fr)}
    .broker-hero-inner{grid-template-columns:220px 1fr}
    .calc-layout{grid-template-columns:1fr}
    .calc-tabs{position:static;flex-direction:row;flex-wrap:wrap;overflow-x:auto}
    .calc-grid{grid-template-columns:1fr}
}
@media (max-width:640px){
    .broker-grid,.value-grid,.trends-grid,.team-grid{grid-template-columns:1fr}
    .broker-hero-inner{grid-template-columns:1fr}
    .broker-hero-photo{max-width:260px}
}

