/* ==========================================================================
   Sumadhura Belfort — Landing page styles
   Values replicate the original desktop design (1440px artboard).
   ========================================================================== */

:root {
    --vw: 1vw; --vh: 1vh; --vh: 1svh;  /* viewport units, see "same layout at 110% zoom" in index.php */
    --forest: #1E3B2B;
    --deep: #13291D;
    --cream: #F9F5EC;
    --sand: #F1EADB;
    --line: #E4DDCC;
    --ink: #1C2620;
    --body: #3D4A40;
    --muted: #5B6655;
    --olive: #5E6340;
    --gold: #A48A45;
    --accent: #CFE38F;
    --mint: #E7EBDD;
    --sage: #D9E0D0;
    --tag: #EEF0E2;

    --f-display: Archivo, 'Helvetica Neue', Arial, sans-serif;
    --f-serif: Marcellus, Georgia, serif;
    --f-body: Montserrat, 'Helvetica Neue', Arial, sans-serif;

    --pad-x: clamp(20px, calc(var(--vw) * 5.5), 80px);
    --header-h: clamp(64px, calc(var(--vh) * 11), 84px);
    --ease: cubic-bezier(.2, .7, .2, 1);
    --sec-y: clamp(56px, min(calc(var(--vw) * 7), calc(var(--vh) * 12)), 96px);
    --mbar-h: 0px;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: var(--header-h); }
body {
    margin: 0;
    background: var(--cream);
    font-family: var(--f-body);
    color: var(--ink);
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
}
img { max-width: 100%; }
a { color: var(--forest); }
a:hover { color: #3F4C3E; }
button { font-family: var(--f-body); }
[hidden] { display: none !important; }

/* ---------------- Keyframes ---------------- */
@keyframes fadeUp { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: none; } }
@keyframes heroZoom { from { transform: scale(1.14); } to { transform: scale(1); } }
@keyframes kenburns { from { transform: scale(1); } to { transform: scale(1.12); } }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(207, 227, 143, .85); } 100% { box-shadow: 0 0 0 18px rgba(207, 227, 143, 0); } }
@keyframes floaty { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
@keyframes scrollDot { 0% { transform: translateY(0); opacity: 1; } 100% { transform: translateY(16px); opacity: 0; } }
@keyframes barRun { from { width: 0; } to { width: 100%; } }
@keyframes lbIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes revealUp { from { opacity: 0; transform: translateY(48px); } to { opacity: 1; transform: none; } }
@keyframes clipIn { from { clip-path: inset(14% 6% 0 6% round 20px); opacity: .3; } to { clip-path: inset(0 0 0 0 round 20px); opacity: 1; } }
@keyframes growX { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes dash { to { stroke-dashoffset: -36; } }
@keyframes fz { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes shake { 10%, 90% { transform: translateX(-1px); } 20%, 80% { transform: translateX(2px); } 30%, 50%, 70% { transform: translateX(-4px); } 40%, 60% { transform: translateX(4px); } }

.fz0 { animation: fz .65s var(--ease) both; }
.hx { opacity: 0; animation: fadeUp .9s var(--ease) forwards; }
.d1 { animation-delay: .1s; } .d2 { animation-delay: .22s; } .d3 { animation-delay: .34s; }
.d4 { animation-delay: .46s; } .d5 { animation-delay: .58s; } .d6 { animation-delay: .7s; }
.herobg { animation: heroZoom 3.2s var(--ease) both; }
.badge { animation: floaty 4.5s ease-in-out infinite; }
.dot { animation: scrollDot 1.6s ease-in infinite; }
.pin { animation: pulse 2s ease-out infinite; transition: transform .25s ease; }
.wimg { transform: scale(1.12); }
.wimg.kb { animation: kenburns 7.5s ease-out forwards; }
.xfade { transition: opacity .9s ease; }
.route { stroke-dasharray: 10 8; animation: dash 1.1s linear infinite; }
.lb { animation: lbIn .35s ease both; }

.lift { transition: transform .3s ease, box-shadow .3s ease, background-color .3s ease, color .3s ease; }
.lift:hover { transform: translateY(-2px); box-shadow: 0 12px 26px rgba(20, 41, 29, .22); }

@supports (animation-timeline: view()) {
    .rv { animation: revealUp linear both; animation-timeline: view(); animation-range: entry 0% entry 55%; }
    .rvi { animation: clipIn linear both; animation-timeline: view(); animation-range: entry 0% entry 60%; }
    .rvx { transform-origin: left; animation: growX linear both; animation-timeline: view(); animation-range: entry 10% entry 80%; }
}

button:focus-visible, a:focus-visible, input:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }

/* ---------------- Type ---------------- */
.eyebrow { font-size: 13px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--olive); }
.eyebrow-accent { color: var(--accent); }
.eyebrow-line { display: flex; align-items: center; gap: 14px; color: var(--accent); }
.eyebrow-line::before { content: ''; display: block; width: 48px; height: 2px; background: var(--accent); }

.h2 {
    margin: 0; font-family: var(--f-display); font-stretch: 125%; font-weight: 500;
    font-size: clamp(26px, min(calc(var(--vw) * 2.8), calc(var(--vh) * 6)), 40px); line-height: 1.15; letter-spacing: .06em; text-transform: uppercase; color: var(--forest);
}
.h2-sm { font-size: clamp(24px, min(calc(var(--vw) * 2.4), calc(var(--vh) * 5.4)), 34px); line-height: 1.18; }
.h2-xl { font-size: clamp(30px, min(calc(var(--vw) * 3.2), calc(var(--vh) * 7)), 46px); line-height: 1.12; }
.h2-light { color: var(--cream); }

.body { margin: 0; font-size: 15px; line-height: 1.7; color: var(--body); }
.body-lg { margin: 0; font-size: 17px; line-height: 1.7; color: var(--body); }
.light { color: var(--sage) !important; }
.body-lg.light { color: var(--mint) !important; max-width: 520px; }
.label-sm { font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.label-xs { display: flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }

/* ---------------- Buttons ---------------- */
.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 10px;
    text-decoration: none; border-radius: 999px; font-weight: 600; cursor: pointer; border: none;
    font-family: var(--f-body);
}
.btn-forest { background: var(--forest); color: var(--cream); padding: 13px 22px; }
.btn-forest:hover { color: var(--cream); }
.btn-accent { background: var(--accent); color: var(--deep); }
.btn-accent:hover { color: var(--deep); }
.btn-outline { background: transparent; color: var(--forest); border: 1.5px solid var(--forest); }
.btn-ghost-light { color: var(--cream); border: 1.5px solid rgba(249, 245, 236, .8); background: rgba(12, 28, 19, .25); }
.btn-ghost-light:hover { color: var(--cream); }
.btn-lg { padding: 17px 30px; font-size: 15px; font-weight: 700; }
.btn-ghost-light.btn-lg { padding: 16px 26px; font-weight: 600; }
.btn-md { padding: 15px 24px; font-size: 15px; min-height: 46px; }
.btn-sm { padding: 10px 16px; font-size: 13px; align-self: flex-start; gap: 8px; }

/* ---------------- Chips ---------------- */
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip {
    font-family: var(--f-body); font-weight: 600; cursor: pointer;
    transition: background-color .3s ease, color .3s ease, transform .2s ease, border-color .3s ease;
}
.chip:hover { transform: translateY(-1px); }
.chip-forest {
    font-size: 12.5px; padding: 10px 14px; min-height: 40px; border-radius: 999px;
    border: 1.5px solid var(--forest); background: transparent; color: var(--forest);
}
.chip-forest.is-on { background: var(--forest); color: var(--cream); }
.chip-lg { font-size: 14px; padding: 10px 18px; min-height: 44px; background: #fff; }
.chip-count { opacity: .7; font-weight: 500; }
.chip-dot { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; padding: 8px 13px; background: #fff; }
.chip-dot .cdot { width: 9px; height: 9px; border-radius: 999px; background: var(--c); border: 1.5px solid var(--c); display: block; }
.chip-dot.is-on .cdot { border-color: #fff; }
.chip-gold {
    font-size: 14px; min-height: 44px; padding: 10px 16px; border-radius: 12px;
    border: 1.5px solid var(--gold); background: #fff; color: var(--ink);
}
.chip-gold.is-on { background: var(--gold); color: #fff; }
.chip-zone {
    font-size: 14px; min-height: 46px; padding: 12px 20px; border-radius: 999px;
    border: 1.5px solid #6F8A6F; background: transparent; color: var(--cream);
}
.chip-zone.is-on { background: var(--accent); color: var(--forest); border-color: var(--accent); }

.row { transition: background-color .25s ease, padding .25s ease; }
.row:hover { background: var(--sand); padding-left: 8px !important; padding-right: 8px !important; }

/* ---------------- Layout ---------------- */
.section { padding: var(--sec-y) var(--pad-x); display: flex; flex-direction: column; gap: 40px; scroll-margin-top: var(--header-h); }
.section-white { background: #fff; }
.section-cream { background: var(--cream); }
.section-deep { background: var(--deep); color: var(--cream); }
.section-forest { background: var(--forest); color: var(--cream); }
.section-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 80px; }
.section-head-l { display: flex; flex-direction: column; gap: 18px; }
.section-head-p { margin: 0; max-width: 500px; font-size: 15px; line-height: 1.7; color: var(--body); }

/* ---------------- Header ---------------- */
.site-header {
    height: var(--header-h); padding: 0 var(--pad-x);
    display: flex; align-items: center; justify-content: space-between;
    background: rgba(249, 245, 236, .9); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 40;
}
.brand img { height: clamp(34px, calc(var(--vh) * 6), 42px); width: auto; display: block; }
.primary-nav { display: flex; align-items: center; gap: clamp(14px, calc(var(--vw) * 1.6), 26px); white-space: nowrap; font-size: 14px; font-weight: 500; letter-spacing: .02em; }
.navlink { position: relative; padding: 6px 0; text-decoration: none; color: var(--ink); }
.navlink::after {
    content: ''; position: absolute; left: 0; bottom: 0; height: 1.5px; width: 100%;
    background: var(--forest); transform: scaleX(0); transform-origin: left; transition: transform .35s ease;
}
.navlink:hover::after { transform: scaleX(1); }
.nav-phone { text-decoration: none; color: var(--forest); font-weight: 600; display: flex; align-items: center; gap: 8px; margin-left: 6px; }
.primary-nav .btn-forest { font-size: 14px; }
.nav-toggle, .nav-call { display: none; }

/* ---------------- Hero ---------------- */
.hero {
    position: relative; overflow: hidden; background: var(--deep); display: flex; align-items: stretch;
    min-height: 780px; min-height: clamp(480px, calc(calc(var(--vh) * 100) - var(--header-h)), 780px); min-height: clamp(480px, calc(calc(var(--vh) * 100) - var(--header-h)), 780px);
}
.hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.hero-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(12, 28, 19, .9) 0%, rgba(12, 28, 19, .78) 34%, rgba(12, 28, 19, .25) 62%, rgba(12, 28, 19, 0) 80%); }
.hero-shade-bottom { position: absolute; left: 0; bottom: 0; width: 100%; height: 180px; background: linear-gradient(to top, rgba(12, 28, 19, .55), rgba(12, 28, 19, 0)); }
.hero-inner { position: relative; flex: 1; width: 100%; padding: clamp(20px, calc(var(--vh) * 4), 40px) var(--pad-x); display: flex; flex-direction: column; justify-content: center; gap: clamp(12px, calc(var(--vh) * 3), 28px); max-width: 820px; }
.hero-title {
    margin: 0; font-family: var(--f-display); font-stretch: 125%; font-weight: 500;
    font-size: clamp(34px, min(calc(var(--vw) * 4.5), calc(var(--vh) * 8)), 64px); line-height: 1.08; letter-spacing: .06em; text-transform: uppercase; color: var(--cream);
}
.hero-lead { margin: 0; font-size: clamp(15px, min(calc(var(--vw) * 1.5), calc(var(--vh) * 3)), 20px); line-height: 1.5; color: var(--mint); max-width: 540px; }
.hero-facts {
    display: flex; gap: clamp(20px, calc(var(--vw) * 3), 40px); padding: clamp(10px, calc(var(--vh) * 2.4), 22px) 0; max-width: 640px;
    border-top: 1px solid rgba(249, 245, 236, .28); border-bottom: 1px solid rgba(249, 245, 236, .28);
}
.hero-facts div { display: flex; flex-direction: column; gap: 4px; }
.hero-facts > div > span { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: #C9D3C0; }
.hero-facts strong { font-size: 18px; font-weight: 600; color: var(--cream); }
.hero-ctas { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; }
.hero-meta { display: flex; align-items: center; gap: 28px; font-size: 12px; color: #C9D3C0; letter-spacing: .02em; }
.scroll-cue { display: flex; align-items: center; gap: 10px; text-decoration: none; font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--cream); }
.scroll-cue:hover { color: var(--cream); }
.mouse { width: 22px; height: 34px; border-radius: 12px; border: 1.5px solid rgba(249, 245, 236, .8); display: flex; justify-content: center; padding-top: 6px; }
.mouse .dot { width: 4px; height: 7px; border-radius: 2px; background: var(--cream); display: block; }
.hero-badge {
    position: absolute; right: var(--pad-x); bottom: 64px; background: rgba(255, 255, 255, .96);
    border-radius: 18px; padding: 16px 20px; box-shadow: 0 18px 40px rgba(12, 28, 19, .3);
    display: flex; align-items: center; gap: 14px;
}
.hero-badge-num { width: 44px; height: 44px; border-radius: 999px; background: var(--forest); color: var(--accent); display: flex; align-items: center; justify-content: center; font-family: var(--f-serif); font-size: 18px; }
.hero-badge-text { display: flex; flex-direction: column; gap: 2px; }
.hero-badge-m { display: none; }
.hero-badge-text strong { font-size: 14px; color: var(--forest); }
.hero-badge-text span { font-size: 12px; color: var(--muted); }

/* ---------------- Marquee ---------------- */
.marquee { height: 64px; background: var(--forest); overflow: hidden; display: flex; align-items: center; }
.track { display: flex; white-space: nowrap; width: max-content; animation: marquee 38s linear infinite; }
.track:hover { animation-play-state: paused; }
.marquee-item {
    display: flex; align-items: center; gap: 28px; padding-right: 28px;
    font-family: var(--f-display); font-stretch: 125%; font-size: 15px; letter-spacing: .16em; text-transform: uppercase; color: var(--cream);
}
.marquee-item svg { color: var(--accent); }

/* ---------------- Overview ---------------- */
.overview { padding-top: calc(var(--sec-y) * 1.16); padding-bottom: calc(var(--sec-y) * 1.16); gap: clamp(36px, calc(var(--vh) * 8), 72px); }
.overview-top { display: flex; gap: clamp(32px, calc(var(--vw) * 5.5), 80px); }
.overview-copy { flex: 1; display: flex; flex-direction: column; gap: 24px; justify-content: center; }
.tags { display: flex; gap: 12px; flex-wrap: wrap; }
.tag { padding: 8px 14px; border-radius: 999px; background: var(--tag); color: #2F3A2A; font-size: 13px; font-weight: 500; }
.overview-img { width: 43%; aspect-ratio: 620 / 520; max-height: calc(calc(var(--vh) * 100) - var(--header-h) - 40px); flex-shrink: 0; border-radius: 20px; overflow: hidden; }
.overview-img img, .zw img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 1.2s var(--ease); }
.zw:hover img { transform: scale(1.06); }

.stats {
    min-height: 170px; background: var(--forest); border-radius: 20px; padding: 0 48px;
    display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); align-items: center;
}
.stat {
    display: flex; flex-direction: column; align-items: center; justify-content: flex-start; text-align: center;
    gap: 10px; padding: 6px 12px; border-left: 1px solid #3E5A47;
}
.stat:first-child { border-left: 0; }
.stat-v { font-family: var(--f-serif); font-size: 40px; line-height: 1; color: var(--accent); font-variant-numeric: tabular-nums; }
.stat-l { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--mint); line-height: 1.4; }

.pillars { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 40px; }
.pillar { display: flex; flex-direction: column; gap: 10px; padding-top: 20px; position: relative; }
.pillar-line { position: absolute; left: 0; top: 0; width: 100%; height: 2px; background: var(--gold); display: block; }
.pillar-t { font-size: 14px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--forest); }
.pillar-d { font-size: 14px; line-height: 1.6; color: var(--body); }

/* ---------------- Walkthrough video ---------------- */
.video-frame { position: relative; width: 100%; aspect-ratio: 16 / 9; margin-inline: auto;
    max-width: calc((calc(var(--vh) * 100) - var(--header-h) - 48px) * 16 / 9); border-radius: 20px; overflow: hidden; background: #0C1A12; box-shadow: 0 30px 60px rgba(0, 0, 0, .25); }
.video-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }
.video-poster { position: absolute; inset: 0; display: block; cursor: pointer; text-decoration: none; color: var(--cream); }
.video-poster img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 1.2s var(--ease); }
.video-poster:hover img { transform: scale(1.04); }
.video-poster-shade { position: absolute; inset: 0; background: rgba(8, 20, 13, .38); transition: background-color .4s ease; }
.video-poster:hover .video-poster-shade { background: rgba(8, 20, 13, .25); }
.video-play-btn {
    position: absolute; left: 50%; top: 50%; width: 96px; height: 96px; margin: -48px 0 0 -48px; border-radius: 999px;
    background: var(--accent); color: var(--deep); display: flex; align-items: center; justify-content: center;
    transition: transform .3s ease;
}
.video-play-btn svg { margin-left: 5px; }
.video-poster:hover .video-play-btn { transform: scale(1.08); }
.video-poster-label {
    position: absolute; left: 0; right: 0; top: calc(50% + 66px); text-align: center;
    font-size: 15px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--cream);
}
.video-frame.is-playing { background: #000; }
.video-placeholder { position: absolute; inset: 0; }
.video-placeholder img { width: 100%; height: 100%; object-fit: cover; display: block; opacity: .55; }
.video-placeholder-note {
    position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; gap: 14px;
    font-size: 15px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--cream);
}
.video-placeholder-note svg { width: 72px; height: 72px; padding: 22px; border-radius: 999px; background: var(--accent); color: var(--deep); }

/* ---------------- Master plan ---------------- */
.masterplan {
    display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 3fr); grid-template-areas: "map head" "map side";
    grid-template-rows: auto 1fr; column-gap: clamp(24px, calc(var(--vw) * 3), 48px); row-gap: 18px; align-items: start;
}
.mp-head { grid-area: head; display: flex; flex-direction: column; gap: 18px; }
.mp-hint { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: var(--olive); }
.mp-map { grid-area: map; justify-self: start; aspect-ratio: 820 / 713;
    /* never taller than the screen, without distorting the pins */
    width: 100%; width: min(100%, calc((calc(var(--vh) * 100) - var(--header-h) - 32px) * 820 / 713)); border-radius: 20px; overflow: hidden; background: #E9EFE3; position: relative; }
@supports (aspect-ratio: 1) { .mp-map { height: auto; } }
.mp-canvas { position: absolute; inset: 0; }
.mp-canvas > img { width: 100%; height: 100%; object-fit: cover; display: block; }
.mp-pin {
    position: absolute; transform: translate(-50%, -50%); width: 26px; height: 26px; border-radius: 999px;
    border: 2px solid #fff; background: var(--gold); color: #fff; font-size: 11px; font-weight: 700; cursor: pointer;
    display: flex; align-items: center; justify-content: center; padding: 0; z-index: 2;
    transition: width .25s ease, height .25s ease, background-color .25s ease, transform .25s ease, opacity .3s ease;
}
.mp-pin:hover { transform: translate(-50%, -50%) scale(1.15); z-index: 4; }
.mp-pin.is-off { opacity: 0; pointer-events: none; transform: translate(-50%, -50%) scale(.5); animation: none; }
.mp-pin.is-on { width: 36px; height: 36px; background: var(--forest); z-index: 5; }
.mp-card {
    position: absolute; left: 20px; bottom: 20px; width: 340px; padding: 18px 20px; border-radius: 16px;
    background: rgba(255, 255, 255, .95); box-shadow: 0 16px 36px rgba(20, 41, 29, .2);
    display: flex; flex-direction: column; gap: 6px; z-index: 3;
}
.mp-card-k { font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: #6E6A3E; }
.mp-card-name { font-family: var(--f-serif); font-size: 22px; color: var(--forest); }
.mp-card-text { font-size: 13.5px; line-height: 1.55; color: var(--body); }
.mp-side { grid-area: side; display: flex; flex-direction: column; gap: 20px; min-width: 0; }
.mp-items { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 24px; border-top: 1px solid #DCD4C0; }
.mp-item {
    display: flex; gap: 12px; align-items: baseline; padding: 9px 0; border: 0; border-bottom: 1px solid var(--line); background: transparent;
    font: inherit; font-size: 13.5px; color: var(--ink); text-align: left; cursor: pointer; width: 100%;
}
.mp-item.is-on { background: var(--tag); padding-left: 8px; padding-right: 8px; }
.mp-item.is-on .mp-item-t { font-weight: 700; color: var(--forest); }
.mp-item-n { font-family: var(--f-serif); font-size: 13px; color: #6E6A3E; width: 22px; flex-shrink: 0; }

/* ---------------- Floor plans ---------------- */
.floorplans { gap: 36px; }
.cfg-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.cfg-tab {
    text-align: left; cursor: pointer; padding: 18px 24px; border-radius: 16px; border: 1.5px solid var(--forest);
    background: var(--cream); color: var(--forest); display: flex; justify-content: space-between; align-items: center; gap: 12px;
}
.cfg-tab.is-on { background: var(--forest); color: var(--cream); }
.cfg-tab-l { display: flex; flex-direction: column; gap: 4px; }
.cfg-tab-label { font-family: var(--f-serif); font-size: 24px; }
.cfg-tab-range { font-size: 13px; opacity: .85; }
.cfg-tab-m { display: none; }
.cfg-tab-units { font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; opacity: .85; }

.fp-wrap { display: flex; gap: 48px; align-items: flex-start; }
.fp-viewer {
    width: 58%; aspect-ratio: 3307 / 2339; flex-shrink: 0; border: 1px solid var(--line); border-radius: 20px;
    overflow: hidden; background: #fff; position: sticky; top: calc(var(--header-h) + 24px);
}
.fp-full {
    position: absolute; right: 136px; top: 16px; z-index: 2; width: 44px; height: 44px; border-radius: 999px;
    border: 1.5px solid var(--forest); background: #fff; color: var(--forest); display: flex; align-items: center; justify-content: center;
}
.fp-variant-chips { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.chip-plan { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: left; padding: 9px 12px; min-height: 0; }
.chip-plan-1 { font-size: 13.5px; font-weight: 700; }
.chip-plan-2 { font-size: 11.5px; font-weight: 500; opacity: .8; }
.btn-brochure { align-self: flex-start; gap: 10px; }
.fp-imgs { position: absolute; inset: 0; }
.fp-img { position: absolute; inset: 0; opacity: 0; }
.fp-img.is-on { opacity: 1; }
.fp-img img { width: 100%; height: 100%; object-fit: contain; display: block; transform-origin: 50% 50%; transition: transform .6s var(--ease); }
.fp-viewer.is-zoomed .fp-img img { transform: scale(1.7); }
.fp-zoom {
    position: absolute; right: 16px; top: 16px; z-index: 2; font-size: 13px; font-weight: 600; min-height: 44px; padding: 0 16px;
    border-radius: 999px; border: 1.5px solid var(--forest); background: #fff; color: var(--forest); cursor: pointer;
    display: flex; align-items: center; gap: 8px;
}
.fp-info { flex: 1; display: flex; flex-direction: column; gap: 26px; padding-top: 8px; min-width: 0; }
.fp-title { display: flex; flex-direction: column; gap: 6px; }
.fp-title-l { font-family: var(--f-serif); font-size: 36px; color: var(--forest); }
.fp-title-s { font-size: 14px; color: var(--muted); }
.fp-variants { display: flex; flex-direction: column; gap: 10px; }
.fp-variants .label-sm { font-weight: 600; letter-spacing: .14em; }
.fp-areas { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid var(--line); border-radius: 16px; overflow: hidden; }
.fp-areas > div { padding: 15px; display: flex; flex-direction: column; gap: 6px; background: var(--cream); }
.fp-areas > div + div { border-left: 1px solid var(--line); }
.fp-area-v { font-family: var(--f-serif); font-size: 28px; color: var(--ink); }
.fp-area-u { font-size: 12px; color: var(--muted); }
.fp-rows { display: flex; flex-direction: column; } 
.fp-row { display: flex; justify-content: space-between; padding: 14px 0; border-bottom: 1px solid var(--line); font-size: 15px; gap: 16px; }
.fp-row span { color: var(--muted); }
.fp-row strong { font-weight: 600; text-align: right; }
.fp-row-eff { flex-direction: column; gap: 8px; }
.fp-row-line { display: flex; justify-content: space-between; }
.eff-track { display: block; height: 6px; border-radius: 6px; background: var(--tag); }
.eff-bar { display: block; height: 6px; border-radius: 6px; background: var(--forest); transition: width .8s var(--ease); }
.fp-ctas { display: flex; gap: 14px; margin-top: 4px; flex-wrap: wrap; }
.fp-ctas .btn-forest { padding: 16px 26px; font-size: 15px; }

/* ---------------- Location ---------------- */
.loc-wrap { display: grid; grid-template-columns: minmax(0, 62fr) minmax(0, 38fr); gap: clamp(24px, calc(var(--vw) * 2.8), 40px); align-items: start; }
.loc-map {
    width: 100%; aspect-ratio: 860 / 567; border-radius: 20px; overflow: hidden; position: relative;
    background: var(--sand); border: 1px solid var(--line); touch-action: manipulation; user-select: none;
}
.loc-map.can-pan { cursor: grab; touch-action: none; }
.loc-map.is-dragging { cursor: grabbing; }
.loc-canvas {
    position: absolute; left: 0; top: 0; width: 100%; height: 100%; transform-origin: 0 0;
    transition: transform .8s var(--ease); --inv: 1;
}
.loc-map.is-dragging .loc-canvas { transition: none; }
.loc-canvas > img { width: 100%; height: 100%; display: block; pointer-events: none; }
.loc-veil { position: absolute; inset: 0; background: var(--cream); opacity: 0; transition: opacity .5s ease; pointer-events: none; }
.loc-map.has-sel .loc-veil { opacity: .28; }
.loc-route { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; }
.loc-route-label { position: absolute; z-index: 6; pointer-events: none; }
.inv { transform: translate(-50%, -50%) scale(var(--inv)); position: relative; }
.loc-route-label .inv {
    background: var(--forest); color: #fff; font-size: 13px; font-weight: 700; padding: 6px 12px; border-radius: 999px;
    white-space: nowrap; box-shadow: 0 6px 16px rgba(20, 41, 29, .3);
}
.loc-pin { position: absolute; z-index: 2; transition: opacity .4s ease; }
.loc-pin.is-hidden { opacity: 0; pointer-events: none; }
.loc-pin.is-hov { z-index: 6; }
.loc-pin.is-on { z-index: 7; }
.loc-pin-btn {
    width: 28px; height: 28px; border-radius: 999px; border: 2px solid #fff; color: #fff; padding: 0; cursor: pointer;
    display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 12px rgba(20, 41, 29, .35);
    transition: width .25s ease, height .25s ease;
}
.loc-pin.is-hov .loc-pin-btn { width: 34px; height: 34px; }
.loc-pin.is-on .loc-pin-btn { width: 38px; height: 38px; animation: pulse 2s ease-out infinite; }
.loc-pin-label {
    display: none; position: absolute; left: 50%; bottom: calc(100% + 8px); transform: translateX(-50%);
    background: #fff; color: var(--ink); font-size: 12.5px; font-weight: 600; padding: 6px 10px; border-radius: 8px;
    white-space: nowrap; box-shadow: 0 6px 18px rgba(20, 41, 29, .22); pointer-events: none;
}
.loc-pin.is-hov .loc-pin-label, .loc-pin.is-on .loc-pin-label { display: block; animation: fz .65s var(--ease) both; }
.loc-pin.lbl-left .loc-pin-label { left: auto; right: -6px; transform: none; }
.loc-home { position: absolute; z-index: 8; pointer-events: none; }
.loc-home .inv { display: flex; flex-direction: column; align-items: center; }
.loc-home-dot {
    width: 42px; height: 42px; border-radius: 999px; background: var(--forest); border: 3px solid #fff; display: flex;
    align-items: center; justify-content: center; color: var(--accent); font-family: var(--f-serif); font-size: 18px;
    box-shadow: 0 6px 16px rgba(20, 41, 29, .4);
}
.loc-home-label {
    position: absolute; top: calc(100% + 6px); background: var(--forest); color: var(--cream); font-size: 12px; font-weight: 700;
    letter-spacing: .06em; padding: 5px 10px; border-radius: 999px; white-space: nowrap;
}
.loc-hint {
    position: absolute; left: 16px; top: 16px; display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 999px;
    background: rgba(255, 255, 255, .92); font-size: 12px; font-weight: 600; color: var(--body); box-shadow: 0 4px 14px rgba(20, 41, 29, .12); z-index: 9;
}
.loc-tools { position: absolute; right: 16px; top: 16px; display: flex; flex-direction: column; gap: 8px; z-index: 9; }
.map-btn {
    width: 44px; height: 44px; border-radius: 12px; border: none; background: #fff; color: var(--forest); cursor: pointer;
    display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 14px rgba(20, 41, 29, .18);
}
.loc-card {
    position: absolute; left: 16px; bottom: 16px; width: 330px; background: rgba(255, 255, 255, .97); border-radius: 16px;
    padding: 16px 18px; box-shadow: 0 16px 36px rgba(20, 41, 29, .22); z-index: 9;
}
.loc-card > div { display: flex; flex-direction: column; gap: 8px; }
.loc-card-p { font-size: 14px; line-height: 1.55; color: var(--body); }
.loc-card-top { display: flex; justify-content: space-between; align-items: center; }
.loc-card-dot { width: 10px; height: 10px; border-radius: 999px; display: block; }
.loc-card-x { width: 32px; height: 32px; border-radius: 999px; border: none; background: var(--sand); color: var(--forest); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.loc-card-name { font-family: var(--f-serif); font-size: 21px; line-height: 1.2; color: var(--forest); }
.loc-card-min { font-family: var(--f-serif); font-size: 30px; color: var(--ink); }
.loc-card-min small { font-family: var(--f-body); font-size: 13px; font-weight: 600; color: var(--muted); }

.loc-side { display: flex; flex-direction: column; gap: 16px; min-width: 0; height: 0; min-height: 100%; }
.loc-range { display: flex; flex-direction: column; gap: 8px; padding: 14px 16px; border-radius: 14px; background: #fff; border: 1px solid var(--line); }
.loc-range-top { display: flex; justify-content: space-between; font-size: 13px; font-weight: 600; color: var(--ink); }
.loc-range-v { color: var(--forest); }
.loc-range input { width: 100%; accent-color: var(--forest); cursor: pointer; }
.loc-list-head {
    display: flex; justify-content: space-between; align-items: baseline; font-size: 12px; font-weight: 700; letter-spacing: .14em;
    text-transform: uppercase; color: var(--forest); padding-bottom: 8px; border-bottom: 2px solid var(--gold);
}
.loc-list-sub { font-weight: 500; letter-spacing: .04em; text-transform: none; color: var(--muted); }
.loc-list { flex: 1; overflow-y: auto; min-height: 0; margin-top: -10px; padding-right: 4px; }
.loc-item {
    width: 100%; text-align: left; cursor: pointer; border: none; border-bottom: 1px solid var(--line); background: transparent;
    display: flex; align-items: center; gap: 12px; padding: 9px 6px; font-size: 13.5px; color: var(--ink);
}
.loc-item.is-hov { background: var(--sand); }
.loc-item.is-on { background: var(--tag); }
.loc-item.is-on .loc-item-name { font-weight: 700; }
.loc-item-dot { width: 10px; height: 10px; border-radius: 999px; flex-shrink: 0; display: block; }
.loc-item-name { flex: 1; font-weight: 500; }
.loc-item-bar { display: block; width: 44px; height: 4px; border-radius: 4px; background: var(--line); flex-shrink: 0; }
.loc-item-bar span { display: block; height: 4px; border-radius: 4px; }
.loc-item-min { font-weight: 700; color: var(--forest); white-space: nowrap; width: 52px; text-align: right; }
.loc-empty { font-size: 14px; color: var(--muted); padding: 16px 6px; margin: 0; }

/* ---------------- Amenities ---------------- */
.amenities { gap: 36px; }
.amenities .chips { gap: 10px; }
.am-wrap { display: flex; gap: clamp(32px, calc(var(--vw) * 4), 56px); }
.am-img { width: 46%; aspect-ratio: 620 / 520; max-height: calc(calc(var(--vh) * 100) - var(--header-h) - 40px); flex-shrink: 0; border-radius: 20px; overflow: hidden; background: #2C4A37; position: relative; }
.am-slide { position: absolute; inset: 0; opacity: 0; pointer-events: none; }
.am-slide.is-on { opacity: 1; pointer-events: auto; z-index: 2; }
.am-photo { position: absolute; inset: 0; margin: 0; opacity: 0; }
.am-photo.is-on { opacity: 1; z-index: 1; }
.am-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.am-cap {
    position: absolute; left: 0; right: 0; bottom: 0; padding: 48px 20px 64px; font-size: 13.5px; font-weight: 500; color: var(--cream);
    background: linear-gradient(to top, rgba(8, 20, 13, .75), rgba(8, 20, 13, 0));
}
.am-nav { position: absolute; left: 20px; right: 20px; bottom: 18px; z-index: 3; display: flex; align-items: center; justify-content: space-between; }
.am-arrow {
    width: 40px; height: 40px; border-radius: 999px; border: 1.5px solid rgba(249, 245, 236, .7); background: rgba(8, 20, 13, .45);
    color: var(--cream); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background-color .3s ease;
}
.am-arrow:hover { background: var(--accent); color: var(--deep); border-color: var(--accent); }
.am-dots { display: flex; gap: 8px; }
.am-dot { width: 9px; height: 9px; padding: 0; border-radius: 999px; border: none; background: rgba(249, 245, 236, .45); cursor: pointer; transition: width .3s ease, background-color .3s ease; }
.am-dot.is-on { width: 26px; background: var(--accent); }
.am-count { z-index: 4;
    position: absolute; right: 18px; top: 18px; padding: 8px 14px; border-radius: 999px; background: rgba(8, 20, 13, .6);
    font-size: 12px; font-weight: 600; letter-spacing: .1em; color: var(--cream);
}
.am-info { flex: 1; display: flex; flex-direction: column; gap: 22px; min-width: 0; }
.am-head { font-family: var(--f-display); font-stretch: 125%; font-size: 26px; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; color: var(--accent); }
.am-desc { margin: 0; font-size: 16px; line-height: 1.7; color: var(--mint); }
.am-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 32px; border-top: 1px solid #3E5A47; }
.am-item { display: flex; gap: 12px; align-items: center; padding: 10px 0; border-bottom: 1px solid #3E5A47; font-size: 14.5px; color: var(--cream); }
.am-item svg { flex-shrink: 0; color: var(--accent); }
.am-info .btn-accent { align-self: flex-start; padding: 14px 22px; font-size: 14px; margin-top: 4px; }

/* ---------------- Gallery ---------------- */
.gallery { gap: 32px; }
.gallery .chips { gap: 10px; }
.g-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 210px; grid-auto-flow: dense; gap: 14px; }
.gtile {
    position: relative; overflow: hidden; border-radius: 16px; border: none; padding: 0; cursor: zoom-in; background: var(--line);
}
.gtile.g-big { grid-column: span 2; grid-row: span 2; }
.gtile.g-wide { grid-column: span 2; }
.gtile img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 1s var(--ease); }
.gtile:hover img { transform: scale(1.07); }
.gcap {
    position: absolute; left: 0; right: 0; bottom: 0; padding: 14px 16px;
    background: linear-gradient(to top, rgba(8, 20, 13, .85), rgba(8, 20, 13, 0)); color: #fff; text-align: left;
    display: flex; justify-content: space-between; align-items: flex-end; gap: 8px;
    transform: translateY(100%); transition: transform .45s var(--ease);
}
.gtile:hover .gcap, .gtile:focus-visible .gcap { transform: none; }
.gcap-t { display: flex; flex-direction: column; gap: 2px; }
.gcap-cat { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--accent); }
.gcap-title { font-size: 15px; font-weight: 600; }
.g-more-wrap { display: flex; justify-content: center; margin-top: -8px; }
.g-more-wrap .btn-forest { padding: 14px 26px; font-size: 15px; gap: 10px; }
.g-more-count { padding: 2px 9px; border-radius: 999px; background: var(--accent); color: var(--deep); font-size: 12.5px; font-weight: 700; }
.g-more-ico { transition: transform .3s ease; }
.js-g-more.is-open .g-more-ico { transform: rotate(180deg); }
.g-foot { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; }
.g-note { font-size: 12px; color: var(--muted); }
.g-foot .btn-outline { font-size: 14px; padding: 0 22px; background: #fff; }

/* Lightbox */
.lightbox {
    position: fixed; inset: 0; z-index: 100; background: rgba(9, 19, 13, .96);
    padding: 40px var(--pad-x); display: flex; flex-direction: column; gap: 20px;
}
.lb-top { display: flex; justify-content: space-between; align-items: center; color: var(--cream); gap: 16px; }
.lb-meta { display: flex; flex-direction: column; gap: 4px; }
.lb-k { font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); }
.lb-title { font-family: var(--f-serif); font-size: 26px; }
.lb-close {
    width: 48px; height: 48px; border-radius: 999px; border: 1.5px solid rgba(249, 245, 236, .5); background: transparent;
    color: var(--cream); cursor: pointer; display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.lb-mid { flex: 1; display: flex; align-items: center; gap: 24px; min-height: 0; }
.lb-nav {
    width: 56px; height: 56px; flex-shrink: 0; border-radius: 999px; border: none; background: var(--cream); color: var(--deep);
    cursor: pointer; display: flex; align-items: center; justify-content: center;
}
.lb-stage { flex: 1; height: 100%; display: flex; align-items: center; justify-content: center; min-width: 0; }
.lb-stage img { max-width: 100%; max-height: 100%; border-radius: 14px; display: block; box-shadow: 0 30px 60px rgba(0, 0, 0, .4); }
.lb-thumbs { display: flex; gap: 8px; justify-content: center; overflow: hidden; height: 64px; }
.lb-thumb {
    width: 96px; height: 64px; flex-shrink: 0; padding: 0; border-radius: 8px; overflow: hidden; cursor: pointer;
    border: 2px solid transparent; opacity: .5; background: var(--deep); transition: opacity .3s ease;
}
.lb-thumb.is-on { border-color: var(--accent); opacity: 1; }
.lb-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
body.no-scroll { overflow: hidden; }

/* ---------------- Enquire ---------------- */
.enquire { position: relative; overflow: hidden; background: #10241A; scroll-margin-top: var(--header-h); }
.enquire-bg {
    position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 45%; display: block;
    animation-duration: 30s !important; animation-iteration-count: infinite !important; animation-direction: alternate !important;
}
.enquire-shade { position: absolute; inset: 0; background: rgba(14, 32, 22, .74); }
.enquire-inner { position: relative; padding: var(--sec-y) var(--pad-x); display: flex; gap: clamp(32px, calc(var(--vw) * 5.5), 80px); align-items: center; }
.enquire-copy { flex: 1; display: flex; flex-direction: column; gap: 26px; color: var(--cream); }
.call-block { text-decoration: none; display: flex; align-items: center; gap: 16px; color: var(--cream); margin-top: 8px; }
.call-block:hover { color: var(--cream); }
.call-ring { width: 56px; height: 56px; border-radius: 999px; border: 1.5px solid var(--accent); display: flex; align-items: center; justify-content: center; color: var(--accent); }
.call-text { display: flex; flex-direction: column; gap: 2px; }
.call-text span { font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--sage); }
.call-text strong { font-family: var(--f-serif); font-size: 34px; font-weight: 400; }

.form-card {
    width: 540px; flex-shrink: 0; background: var(--cream); border-radius: 24px; padding: 40px;
    box-shadow: 0 30px 60px rgba(0, 0, 0, .3);
}
.lead-form { display: flex; flex-direction: column; gap: 18px; }
.form-head { display: flex; flex-direction: column; gap: 6px; }
.form-title { font-family: var(--f-serif); font-size: 28px; color: var(--forest); }
.form-sub { font-size: 14px; color: var(--muted); }
.form-alert {
    padding: 12px 14px; border-radius: 10px; background: #FBE9E7; border: 1px solid #E8B4AD; color: #8A2A1F;
    font-size: 13.5px; line-height: 1.5; font-weight: 500;
}
.hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.field { display: flex; flex-direction: column; gap: 6px; border: 0; padding: 0; margin: 0; min-width: 0; }
.field > label, .field legend { font-size: 13px; font-weight: 600; color: var(--ink); padding: 0; }
.field legend { margin-bottom: 8px; }
.field input[type="text"], .field input[type="tel"], .field input[type="email"] {
    font-family: var(--f-body); font-size: 15px; padding: 13px 14px; border-radius: 10px; border: 1px solid #C9C0AA;
    background: #fff; color: var(--ink); width: 100%;
    transition: border-color .2s ease, box-shadow .2s ease;
}
.field input:focus { outline: none; border-color: var(--forest); box-shadow: 0 0 0 3px rgba(30, 59, 43, .18); }
.phone-row { display: flex; gap: 8px; }
.phone-row input { flex: 1; min-width: 0; }
.cc-wrap { position: relative; flex-shrink: 0; }
.cc-face {
    display: flex; align-items: center; gap: 6px; height: 100%; min-height: 48px; padding: 0 30px 0 12px; border-radius: 10px;
    border: 1px solid #C9C0AA; background: #fff; font-size: 15px; font-weight: 600; color: var(--ink); white-space: nowrap; pointer-events: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%231E3B2B' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 10px center;
}
.cc-select { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; font-size: 16px; }
.cc-select:focus-visible + .cc-face { outline: 2px solid var(--gold); outline-offset: 2px; }
.field.has-error .cc-face { border-color: #B3261E; }
.field-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.field-error { font-size: 12px; font-weight: 500; color: #B3261E; min-height: 0; line-height: 1.4; }
.field-error:empty { display: none; }
.field.has-error input[type="text"], .field.has-error input[type="tel"], .field.has-error input[type="email"] {
    border-color: #B3261E; box-shadow: 0 0 0 3px rgba(179, 38, 30, .12);
}
.field.is-valid input[type="text"], .field.is-valid input[type="tel"], .field.is-valid input[type="email"] { border-color: #5E8C61; }
.field.shake { animation: shake .4s ease; }

.cfg-select {
    width: 100%; font-family: var(--f-body); font-size: 15px; padding: 13px 40px 13px 14px; border-radius: 10px;
    border: 1px solid #C9C0AA; background: #fff; color: var(--muted); cursor: pointer; appearance: none; -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23A48A45' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 14px center;
    transition: border-color .2s ease, box-shadow .2s ease;
}
.cfg-select.has-value { color: var(--ink); }
.cfg-select:focus { outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px rgba(164, 138, 69, .18); }
.cfg-select option { color: var(--ink); }
.field.has-error .cfg-select { border-color: #B3261E; box-shadow: 0 0 0 3px rgba(179, 38, 30, .12); }
.cfg-options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.cfg-opt { position: relative; display: block; }
.cfg-opt input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.cfg-opt span {
    display: flex; align-items: center; justify-content: center; min-height: 46px; border-radius: 10px;
    border: 1.5px solid #C9C0AA; background: #fff; color: var(--forest); font-size: 13px; font-weight: 600;
    transition: background-color .3s ease, color .3s ease, border-color .3s ease;
}
.cfg-opt input:checked + span { background: var(--forest); color: var(--cream); border-color: var(--forest); }
.cfg-opt input:focus-visible + span { outline: 2px solid var(--gold); outline-offset: 3px; }
.cfg-field.has-error .cfg-opt span { border-color: #B3261E; }

.form-note { margin: -4px 0 0; font-size: 11.5px; line-height: 1.5; color: var(--muted); }
.field > .consent-label { display: flex; gap: 10px; align-items: flex-start; font-size: 12px; line-height: 1.5; color: var(--body); font-weight: 400; cursor: pointer; }
.consent-label input { margin: 2px 0 0; width: 16px; height: 16px; accent-color: var(--forest); flex-shrink: 0; }

.btn-submit { font-size: 15px; min-height: 52px; width: 100%; position: relative; }
.spinner { display: none; width: 18px; height: 18px; border-radius: 999px; border: 2px solid rgba(249, 245, 236, .35); border-top-color: var(--cream); animation: spin .8s linear infinite; }
.btn-submit.is-loading { pointer-events: none; opacity: .85; }
.btn-submit.is-loading .spinner { display: block; }

.form-success { display: flex; flex-direction: column; gap: 14px; padding: 40px 0; align-items: flex-start; }
.success-ring { width: 56px; height: 56px; border-radius: 999px; background: var(--forest); display: flex; align-items: center; justify-content: center; }
.success-text { font-size: 15px; line-height: 1.6; color: var(--body); }
.form-success .btn-outline { font-size: 14px; padding: 0 20px; min-height: 44px; }

/* ---------------- Popup form ---------------- */
.modal { position: fixed; inset: 0; z-index: 120; display: flex; align-items: center; justify-content: center; padding: 24px; }
.modal-backdrop { position: absolute; inset: 0; background: rgba(9, 19, 13, .72); backdrop-filter: blur(4px); animation: lbIn .3s ease both; }
.modal-card {
    position: relative; width: 100%; max-width: 540px; max-height: calc(calc(var(--vh) * 100) - 48px); overflow-y: auto;
    background: var(--cream); border-radius: 24px; padding: 40px; box-shadow: 0 30px 80px rgba(0, 0, 0, .4);
    animation: fz .45s var(--ease) both;
}
.modal-x {
    position: absolute; right: 18px; top: 18px; width: 40px; height: 40px; border-radius: 999px; border: none;
    background: var(--sand); color: var(--forest); cursor: pointer; display: flex; align-items: center; justify-content: center;
}
.modal-card .form-head { padding-right: 44px; }
.btn-ico-dl { display: none; }
.lead-box[data-mode="brochure"] .btn-ico-dl { display: block; }
.success-text a { color: var(--forest); font-weight: 600; }

/* ---------------- Footer ---------------- */
.site-footer { padding: 72px var(--pad-x) 32px; background: var(--deep); color: var(--sage); display: flex; flex-direction: column; gap: 56px; }
.footer-top { display: flex; gap: 80px; }
.footer-brand { width: 420px; flex-shrink: 0; display: flex; flex-direction: column; gap: 20px; font-size: 14px; line-height: 1.7; }
.footer-brand img { height: 52px; width: auto; align-self: flex-start; display: block; }
.site-footer a { color: var(--cream); text-decoration: none; }
.site-footer .strong { color: var(--cream); font-weight: 600; }
.footer-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 40px; font-size: 14px; align-content: start; }
.footer-links a { color: var(--sage); }
.footer-links a:hover { color: var(--cream); }
.footer-k { grid-column: span 2; font-size: 12px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); }
.footer-rera { flex: 1; display: flex; flex-direction: column; gap: 12px; font-size: 13px; line-height: 1.6; }
.footer-disclaimer { font-size: 12px; color: #B7C2AE; margin-top: 8px; }
.footer-bottom { display: flex; justify-content: space-between; padding-top: 22px; border-top: 1px solid #2E4A38; font-size: 12px; color: #B7C2AE; gap: 16px; }
.footer-bottom a { color: #B7C2AE; display: flex; align-items: center; gap: 8px; }

/* ---------------- Thank-you page ---------------- */
.ty-header-actions { display: flex; align-items: center; gap: 22px; }
.ty-header-actions .btn-forest { font-size: 14px; }
.ty-hero { position: relative; min-height: calc(calc(var(--vh) * 100) - var(--header-h)); min-height: calc(calc(var(--vh) * 100) - var(--header-h)); overflow: hidden; background: #10241A; display: flex; align-items: center; }
.ty-hero-bg {
    position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 45%; display: block;
    animation-duration: 30s !important; animation-iteration-count: infinite !important; animation-direction: alternate !important;
}
.ty-hero-shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(14, 32, 22, .82), rgba(14, 32, 22, .9)); }
.ty-hero-inner {
    position: relative; width: 100%; max-width: 820px; margin: 0 auto; padding: 80px var(--pad-x);
    display: flex; flex-direction: column; align-items: center; text-align: center; gap: 22px; color: var(--cream);
}
.ty-check {
    width: 84px; height: 84px; border-radius: 999px; background: var(--accent); color: var(--deep);
    display: flex; align-items: center; justify-content: center;
}
.ty-title {
    margin: 0; font-family: var(--f-display); font-stretch: 125%; font-weight: 500; font-size: 56px; line-height: 1.08;
    letter-spacing: .05em; text-transform: uppercase; color: var(--cream);
}
.ty-lead { margin: 0; max-width: 640px; font-size: 18px; line-height: 1.65; color: var(--mint); }
.ty-lead strong { color: var(--accent); font-weight: 600; }
.ty-download {
    display: flex; align-items: center; gap: 18px; width: 100%; max-width: 620px; margin-top: 6px; padding: 18px 20px;
    border-radius: 18px; background: rgba(249, 245, 236, .1); border: 1px solid rgba(249, 245, 236, .22);
    backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); text-align: left;
}
.ty-pdf {
    width: 52px; height: 60px; flex-shrink: 0; border-radius: 8px; background: var(--cream); color: #B3261E;
    display: flex; align-items: flex-end; justify-content: center; padding-bottom: 10px; font-size: 13px; font-weight: 800; letter-spacing: .06em;
    clip-path: polygon(0 0, 72% 0, 100% 22%, 100% 100%, 0 100%);
}
.ty-download-text { flex: 1; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.ty-download-text strong { font-size: 16px; color: var(--cream); }
.ty-download-text span { font-size: 13px; color: var(--sage); }
.ty-download .btn { flex-shrink: 0; }
.ty-note { margin: -6px 0 0; font-size: 13px; color: var(--sage); }
.ty-ctas { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; margin-top: 6px; }
.ty-ctas .btn-ghost-light { font-weight: 600; }

.ty-next { gap: 40px; }
.ty-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.ty-step { background: #fff; border: 1px solid var(--line); border-radius: 20px; padding: 28px; display: flex; flex-direction: column; gap: 10px; }
.ty-step-n { font-family: var(--f-serif); font-size: 32px; color: var(--gold); line-height: 1; }
.ty-step-t { font-size: 15px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--forest); }
.ty-step-d { font-size: 14.5px; line-height: 1.65; color: var(--body); }
.ty-explore { display: flex; flex-direction: column; gap: 16px; padding-top: 8px; }
.ty-explore-k { font-size: 13px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--olive); }
.ty-explore-links { display: flex; flex-wrap: wrap; gap: 12px; }
.ty-explore-links .btn-outline { background: #fff; font-size: 14px; }

@media (max-width: 1100px) {
    .ty-steps { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
    .ty-header-actions .nav-phone span { display: none; }
    .ty-header-actions { gap: 12px; }
    .ty-header-actions .btn-forest { padding: 10px 16px; font-size: 13px; }
    .ty-hero-inner { padding-top: 56px; padding-bottom: 56px; gap: 18px; }
    .ty-check { width: 68px; height: 68px; }
    .ty-title { font-size: 34px; }
    .ty-lead { font-size: 16px; }
    .ty-download { flex-wrap: wrap; padding: 16px; }
    .ty-download .btn { width: 100%; }
    .ty-ctas { flex-direction: column; width: 100%; }
    .ty-ctas .btn { width: 100%; }
    .ty-explore-links .btn { flex: 1 1 calc(50% - 6px); padding: 12px 10px; font-size: 13px; }
}

/* ==========================================================================
   Typography system — one size per role, used by every section.
   Desktop values below; phones get their own set in the 720px query.
   ========================================================================== */
:root {
    --fs-h1: clamp(30px, min(calc(var(--vw) * 3.9), calc(var(--vh) * 8)), 58px);
    --fs-h2: clamp(26px, min(calc(var(--vw) * 2.8), calc(var(--vh) * 6)), 40px);
    --fs-h3: clamp(20px, calc(var(--vw) * 1.7), 24px);
    --fs-body: 16px;
    --fs-small: 13px;
    --fs-eyebrow: 13px;
}
.hero-title { font-size: var(--fs-h1); }
.h2, .h2-sm, .h2-xl { font-size: var(--fs-h2); line-height: 1.15; }
.am-head, .fp-tagline { font-size: var(--fs-h3); line-height: 1.3; }
.body, .body-lg, .section-head-p, .am-desc, .pillar-d, .fp-blurb, .ty-lead, .ty-step-d, .ov-features li {
    font-size: var(--fs-body); line-height: 1.7;
}
.eyebrow { font-size: var(--fs-eyebrow); }
.mp-hint, .loc-card-p, .mp-card-text, .label-sm, .g-note { font-size: var(--fs-small); }

/* Overview feature list */
.ov-features { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 24px; }
.ov-features li { display: flex; align-items: flex-start; gap: 10px; color: var(--ink); font-weight: 500; }
.ov-features svg { flex-shrink: 0; margin-top: 5px; color: var(--gold); }
.pillars { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pillar-t { font-size: 15px; }

/* Floor plan copy */
.fp-tagline { margin: 6px 0 0; font-family: var(--f-display); font-stretch: 110%; font-weight: 600; color: var(--forest); }
.fp-blurb { margin: 0; color: var(--body); }


/* ---- Hero headline: always two lines ---- */
.hero-title .hero-line { display: block; white-space: nowrap; }
.hero-inner { max-width: 1040px; }
.hero-lead { max-width: 600px; font-size: clamp(15px, calc(var(--vw) * 1.25), 18px); line-height: 1.6; color: var(--mint); margin: 0; }

/* ---- Master plan: plan on the left (~60%), heading + zones + 2-column list on the right ---- */
.masterplan { grid-template-columns: minmax(0, 62fr) minmax(0, 38fr); column-gap: clamp(28px, calc(var(--vw) * 3.5), 56px); row-gap: 20px; }
.mp-map { width: 100%; justify-self: stretch; }
.mp-side { height: auto; min-height: 0; overflow: visible; gap: 18px; }
.mp-items { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 20px; overflow: visible; max-height: none; padding-right: 0; }
.mp-cats { gap: 8px; }
.mp-head { gap: 14px; }
/* Heading always on three lines */
.mp-title { font-size: clamp(22px, calc(var(--vw) * 2.2), 36px); line-height: 1.16; }
.mp-title span { display: block; white-space: nowrap; }
.mp-pin.is-on.is-off { opacity: 1; pointer-events: auto; transform: translate(-50%, -50%); } /* selected pin always visible */

/* ---- Floor plans: compact panel (details removed) ---- */
.fp-info { gap: 20px; }
.fp-ctas { margin-top: 0; }

/* Mobile-only fixed bar: never on desktop */
.m-bar { display: none; }

/* ==========================================================================
   Responsive — the design is a 1440px desktop artboard; everything below
   scales with the screen width AND height (laptops like 1280 × 585 included).
   ========================================================================== */

/* Desktop/mobile copy variants and touch wording */
.m-only, .w-touch { display: none; }
@media (hover: none), (pointer: coarse) {
    .w-touch { display: inline; }
    .w-mouse { display: none; }
}

/* Short laptop screens (e.g. 1280 × 585): tighter hero, compact forms */
@media (min-width: 721px) and (max-height: 820px) {
    .hero-badge { bottom: 24px; padding: 12px 16px; }
    .btn-lg { padding: 13px 24px; font-size: 14px; }
    .btn-ghost-light.btn-lg { padding: 12px 22px; }
    .mouse { width: 18px; height: 28px; }
    .marquee { height: 52px; }
    .form-card { padding: 26px 28px; }
}

/* Compact enquiry forms: labels inside the boxes (phones, short screens, popup) */
@media (max-width: 720px), (max-height: 820px) {
    .modal { padding: 10px; }
    .modal-card {
        padding: 20px 18px 18px; border-radius: 20px;
        max-height: calc(calc(var(--vh) * 100) - 20px); max-height: calc(calc(var(--vh) * 100) - 20px); overflow-y: auto; overscroll-behavior: contain;
    }
    .modal-x { right: 12px; top: 12px; width: 36px; height: 36px; }
    :is(.modal-card, .form-card) .lead-form { gap: 10px; }
    :is(.modal-card, .form-card) .form-head { gap: 2px; }
    :is(.modal-card, .form-card) .form-title { font-size: 22px; line-height: 1.2; }
    :is(.modal-card, .form-card) .form-sub { font-size: 12.5px; }
    :is(.modal-card, .form-card) .form-alert { padding: 8px 12px; font-size: 12.5px; }
    :is(.modal-card, .form-card) .field { position: relative; gap: 3px; }
    :is(.modal-card, .form-card) .field:not(.field-phone):not(.consent) > label {
        position: absolute; left: 14px; top: 7px; z-index: 1; pointer-events: none;
        font-size: 10.5px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); line-height: 1.2;
    }
    /* Phone: the placeholder ("Mobile · 10 digits") acts as the label; real label kept for screen readers */
    :is(.modal-card, .form-card) .field-phone > label {
        position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
    }
    :is(.modal-card, .form-card) .field input[type="text"] { padding: 22px 14px 7px; font-size: 15px; line-height: 1.3; }
    :is(.modal-card, .form-card) .field input[type="tel"] { padding: 14px; font-size: 15px; line-height: 1.3; }
    :is(.modal-card, .form-card) .cc-face { min-height: 48px; }
    :is(.modal-card, .form-card) .field.has-error > label { color: #B3261E; }
    :is(.modal-card, .form-card) .field-error { font-size: 11.5px; line-height: 1.3; }
    :is(.modal-card, .form-card) .cfg-field legend { font-size: 12px; margin-bottom: 6px; }
    :is(.modal-card, .form-card) .cfg-opt span { min-height: 40px; }
    :is(.modal-card, .form-card) .form-note { font-size: 11px; line-height: 1.4; margin-top: -2px; }
    :is(.modal-card, .form-card) .btn-submit { min-height: 48px; }
}

@media (max-width: 1400px) {
    .fp-viewer { width: 55%; }
    .form-card { width: 480px; }
}

/* Menu collapses before it can wrap (BUG-09) */
@media (max-width: 1099px) {
    .nav-call {
        display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin-left: auto; margin-right: 4px;
        border-radius: 999px; color: var(--forest);
    }
    .nav-toggle {
        display: flex; flex-direction: column; justify-content: center; gap: 5px; width: 44px; height: 44px;
        border: none; background: transparent; cursor: pointer; padding: 10px;
    }
    .nav-toggle span { display: block; height: 2px; background: var(--forest); border-radius: 2px; transition: transform .3s ease, opacity .3s ease; }
    .nav-open .nav-toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
    .nav-open .nav-toggle span:nth-child(2) { opacity: 0; }
    .nav-open .nav-toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
    .primary-nav {
        position: absolute; top: var(--header-h); left: 0; right: 0; flex-direction: column; align-items: flex-start;
        background: var(--cream); padding: 20px var(--pad-x) 28px; gap: 14px; border-bottom: 1px solid var(--line);
        display: none; font-size: 15px; max-height: calc(calc(var(--vh) * 100) - var(--header-h)); overflow-y: auto;
    }
    .nav-open .primary-nav { display: flex; }
    .nav-phone { margin-left: 0; }
}

@media (max-width: 1100px) {
    .section-head { flex-direction: column; align-items: flex-start; gap: 18px; }
    .overview-top, .fp-wrap, .am-wrap, .enquire-inner, .footer-top { flex-direction: column; }
    .overview-img, .am-img, .fp-viewer { width: 100%; max-height: none; }
    .masterplan { grid-template-columns: 1fr; grid-template-areas: "head" "map" "side"; }
    .mp-title { font-size: clamp(22px, calc(var(--vw) * 4), 34px); }
    .mp-map { width: 100%; }
    .loc-wrap { grid-template-columns: 1fr; }
    .loc-side { height: auto; min-height: 0; }
    .loc-list { max-height: 420px; }
    .fp-viewer { position: relative; top: 0; }
    .stats { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px 0; padding: 32px; }
    .stat:nth-child(3n + 1) { border-left: 0; }
    .pillars { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .form-card { width: 100%; max-width: 560px; }
    .enquire-inner { align-items: stretch; }
    .footer-brand { width: auto; }
    .hero-badge { display: none; }
}

/* ---------------- Phones ---------------- */
@media (max-width: 720px) {
    :root {
        --pad-x: 20px; --header-h: 64px; --sec-y: 56px; --mbar-h: 72px;
        --fs-h1: clamp(22px, calc(var(--vw) * 7.2), 32px); --fs-h2: 26px; --fs-h3: 19px; --fs-body: 15px; --fs-small: 12.5px; --fs-eyebrow: 11.5px;
    }
    .d-only { display: none !important; }
    .m-only { display: inline; }
    body { padding-bottom: calc(var(--mbar-h) + env(safe-area-inset-bottom, 0px)); }
    .brand img { height: 34px; }
    .section { gap: 26px; }

    /* Horizontal scroll rows (chips, tags) */
    .scroll-row, .gallery .chips, .loc-side > .chips, .mp-cats, .amenities .chips, .fp-variant-chips {
        flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch;
        margin-right: calc(-1 * var(--pad-x)); padding-right: var(--pad-x); scroll-snap-type: x proximity;
    }
    :is(.scroll-row, .gallery .chips, .loc-side > .chips, .mp-cats, .amenities .chips, .fp-variant-chips)::-webkit-scrollbar { display: none; }
    :is(.scroll-row, .gallery .chips, .loc-side > .chips, .mp-cats, .amenities .chips, .fp-variant-chips) > * { flex-shrink: 0; scroll-snap-align: start; }

    /* Fixed call + enquiry bar (BUG-24) */
    .m-bar {
        display: flex !important; position: fixed; left: 0; right: 0; bottom: 0; z-index: 60; display: flex; gap: 10px;
        padding: 10px 16px calc(10px + env(safe-area-inset-bottom, 0px)); background: rgba(249, 245, 236, .97);
        border-top: 1px solid var(--line); box-shadow: 0 -8px 24px rgba(20, 41, 29, .1); backdrop-filter: blur(10px);
    }
    .m-bar .btn { flex: 1; min-height: 50px; font-size: 15px; font-weight: 700; }
    .m-bar-call { flex: 0 0 38% !important; border: 1.5px solid var(--forest); color: var(--forest); background: transparent; }
    .m-bar-cta { flex: 1; }
    body.no-scroll .m-bar { display: none !important; }

    /* Hero (BUG-10, 11, 26) */
    .hero { min-height: calc(calc(var(--vh) * 100) - var(--header-h) - var(--mbar-h)); }
    .hero-title { letter-spacing: .04em; line-height: 1.12; }
    /* Phones: headline on three lines — Tropical Living, / Beautifully / Elevated */
    .hero-title .hero-line { white-space: normal; }
    .hero-title .hero-line-m { display: block; }
    .hero-lead { font-size: 14.5px; line-height: 1.55; }
    .hero-bg { object-position: 50% 30% !important; }
    .hero-shade { background: linear-gradient(180deg, rgba(12, 28, 19, .25) 0%, rgba(12, 28, 19, .35) 30%, rgba(12, 28, 19, .82) 58%, rgba(12, 28, 19, .96) 100%); }
    .hero-shade-bottom { display: none; }
    .hero-inner { justify-content: flex-end; gap: 14px; padding-top: 72px; padding-bottom: 18px; }
    .eyebrow-line { font-size: 11.5px; gap: 10px; }
    .eyebrow-line::before { width: 28px; }
    .hero-lead { font-size: 15px; color: #F1F4EA; text-shadow: 0 1px 12px rgba(0, 0, 0, .4); }
    .hero-facts { gap: 0; padding: 12px 0; display: grid; grid-template-columns: 1.2fr 1fr 1fr; }
    .hero-facts div { gap: 2px; }
    .hero-facts > div > span { font-size: 10px; letter-spacing: .1em; }
    .hero-facts strong { font-size: 13.5px; white-space: nowrap; }
    .hero-ctas { flex-wrap: nowrap; gap: 10px; }
    .hero-ctas .btn { flex: 1; padding: 14px 12px; font-size: 14.5px; }
    .hero-meta { font-size: 10px; gap: 0; }
    .scroll-cue { display: none; }
    .hero-badge {
        display: flex; top: 14px; right: 14px; bottom: auto; padding: 5px 12px 5px 5px; border-radius: 999px; gap: 8px;
        box-shadow: 0 8px 20px rgba(12, 28, 19, .3); animation: none;
    }
    .hero-badge-num { width: 32px; height: 32px; font-size: 12px; }
    .hero-badge-text { display: none; }
    .hero-badge-m { display: inline; font-size: 12.5px; font-weight: 700; color: var(--forest); }
    .marquee { height: 48px; }
    .marquee-item { font-size: 12.5px; gap: 18px; padding-right: 18px; }

    /* Overview (BUG-27) */
    .overview { gap: 32px; }
    .overview-copy { gap: 18px; }
    .tags { flex-wrap: nowrap; }
    .stats { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px 0; padding: 22px 8px; border-radius: 16px; }
    .stat { padding: 0 6px; gap: 6px; }
    .stat:nth-child(3n + 1) { border-left: 0; }
    .stat-v { font-size: 25px; }
    .stat-l { font-size: 9.5px; letter-spacing: .08em; }
    .pillars, .overview .pillars { display: none !important; } /* phones: the three points are hidden */
    .ov-features { grid-template-columns: 1fr; gap: 8px; }
    /* Tower tags come after the image on phones */
    .overview-copy { display: contents; }
    .overview-img { order: 1; }
    .overview-copy .tags { order: 2; }
    .overview-top { gap: 18px; }

    .video-play-btn { width: 68px; height: 68px; margin: -34px 0 0 -34px; }
    .video-play-btn svg { width: 26px; height: 26px; }
    .video-poster-label { top: calc(50% + 46px); font-size: 12px; }

    /* Master plan (BUG-28, 40) */
    .masterplan { row-gap: 16px; }
    .mp-head { gap: 12px; }
    .mp-head .body { display: none; }
    .mp-title { font-size: clamp(17px, calc(var(--vw) * 5.3), 24px); }
    .mp-card { position: static; width: auto; margin: 0; border-radius: 0; box-shadow: none; padding: 14px 16px; }
    .mp-map { aspect-ratio: auto; }
    .mp-canvas { position: relative; aspect-ratio: 820 / 713; }
    .mp-pin { width: 22px; height: 22px; font-size: 9.5px; border-width: 1.5px; }
    .mp-pin.is-on { width: 30px; height: 30px; font-size: 11px; }
    .mp-side { gap: 12px; }
    .mp-items { display: flex; gap: 8px; border: 0; overflow-x: auto; scrollbar-width: none; margin-right: calc(-1 * var(--pad-x)); padding: 2px var(--pad-x) 2px 0; }
    .mp-items::-webkit-scrollbar { display: none; }
    .mp-item {
        flex-shrink: 0; width: auto; padding: 9px 14px !important; border: 1.5px solid var(--forest); border-radius: 999px;
        align-items: center; gap: 8px; white-space: nowrap; font-size: 13px; font-weight: 600; color: var(--forest); background: #fff;
    }
    .mp-item:hover { padding-left: 14px !important; }
    .mp-item.is-on { background: var(--forest); color: var(--cream); }
    .mp-item.is-on .mp-item-t { color: var(--cream); }
    .mp-item.is-on .mp-item-n { color: var(--accent); }
    .btn-brochure { align-self: stretch; }

    /* Floor plans (BUG-29) */
    .cfg-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; border: 1.5px solid var(--forest); border-radius: 14px; overflow: hidden; }
    .cfg-tab { border: 0; border-radius: 0; padding: 10px 4px; justify-content: center; text-align: center; box-shadow: none !important; transform: none !important; }
    .cfg-tab + .cfg-tab { border-left: 1.5px solid var(--forest); }
    .cfg-tab-l, .cfg-tab-units { display: none; }
    .cfg-tab-m { display: flex !important; flex-direction: column; align-items: center; gap: 1px; }
    .cfg-tab-m strong { font-size: 15px; }
    .cfg-tab-m small { font-size: 10.5px; opacity: .85; }
    .fp-wrap { gap: 14px; align-items: stretch; }
    .fp-variant-chips { display: flex; gap: 8px; }
    .fp-info { display: contents; }
    .fp-title { order: 0; gap: 4px; }
    .fp-title-l { font-size: 24px; }
    .fp-variants { order: 1; gap: 8px; }
    .fp-viewer { order: 2; }
    .fp-areas { order: 3; }
    .fp-rows { order: 4; flex-direction: row; flex-wrap: wrap; gap: 8px; }
    .fp-ctas { order: 5; }
    .fp-ctas .btn { width: 100%; }
    .fp-row-eff, .fp-units { display: none; }
    .fp-fact { padding: 7px 12px; border: 1px solid var(--line); border-radius: 999px; background: var(--cream); font-size: 13px; gap: 6px; }
    .fp-fact span { font-size: 11px; }
    .chip-plan { padding: 9px 14px; min-height: 0; font-size: 13px; white-space: nowrap; }
    .fp-areas > div { padding: 12px; }
    .fp-area-v { font-size: 22px; }
    .fp-full { right: 116px; }
    .fp-zoom { right: 10px; top: 10px; }

    /* Location (BUG-30, 42) */
    .loc-wrap { display: flex; flex-direction: column; align-items: stretch; gap: 14px; }
    .loc-side > * { min-width: 0; }
    .loc-side { display: contents; }
    .loc-side > .chips { order: 1; }
    .loc-map { order: 2; aspect-ratio: auto; touch-action: pan-y; }
    .loc-range { order: 3; }
    .loc-list-head { order: 4; }
    .loc-list { order: 5; max-height: 360px; margin-top: -6px; }
    .loc-canvas { position: relative; aspect-ratio: 860 / 567; height: auto; }
    .loc-card { position: static; width: auto; border-radius: 0; box-shadow: none; }
    .loc-hint { display: none; }
    .loc-tools { top: 10px; left: 10px; right: auto; flex-direction: row; gap: 6px; }
    .map-btn { width: 36px; height: 36px; border-radius: 10px; }
    .loc-home-dot { width: 32px; height: 32px; font-size: 14px; border-width: 2px; }
    .loc-home-label { left: auto; right: -4px; top: calc(100% + 4px); font-size: 10.5px; padding: 3px 8px; }
    .loc-pin-btn { width: 24px; height: 24px; }
    .loc-pin-btn svg { width: 12px; height: 12px; }

    /* Amenities */
    /* Amenity lists: two columns on phones too */
    .am-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 14px; }
    .am-item { font-size: 13px; gap: 8px; padding: 9px 0; align-items: flex-start; line-height: 1.35; }
    .am-item svg { margin-top: 2px; }

    /* Gallery: swipe carousel (BUG-31) */
    .g-grid {
        display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none;
        margin-right: calc(-1 * var(--pad-x)); padding-right: var(--pad-x);
    }
    .g-grid::-webkit-scrollbar { display: none; }
    .gtile, .gtile.g-big, .gtile.g-wide { flex: 0 0 84%; aspect-ratio: 4 / 3; height: auto; scroll-snap-align: start; }
    .gcap { transform: none; }
    .g-more-wrap { display: none; }
    .g-foot { flex-wrap: nowrap; }
    .g-note { font-size: 11.5px; }
    .g-foot .btn-outline { padding: 0 18px; min-height: 40px; font-size: 13px; }

    .lightbox { padding: 20px; }
    .lb-nav { width: 44px; height: 44px; }
    .lb-mid { gap: 10px; }
    .lb-thumbs { display: none; }
    .form-card { padding: 22px 18px; }
    .call-text strong { font-size: 26px; }

    /* Footer (BUG-33) */
    .site-footer { padding-top: 48px; gap: 28px; }
    .footer-top { gap: 24px; }
    .footer-disclaimer { margin-top: 0; }
    .footer-bottom { flex-direction: column; }
}


/* ==========================================================================
   QA round 2 fixes
   ========================================================================== */

/* BUG-06 — short laptop screens (e.g. 1280 × 585): scale more with height */
@media (min-width: 721px) {
    :root { --sec-y: clamp(48px, min(calc(var(--vw) * 7), calc(var(--vh) * 10)), 96px); --fs-h2: clamp(24px, min(calc(var(--vw) * 2.8), calc(var(--vh) * 5.4)), 40px); }
}
@media (min-width: 721px) and (max-height: 640px) {
    .section { gap: 28px; }
    .section-head { gap: 40px; }
    .eyebrow { margin-bottom: -4px; }
    .cfg-tab { padding: 12px 18px; }
    .cfg-tab-label { font-size: 20px; }
}

/* BUG-09 — header never lets the logo touch the menu */
.brand { flex-shrink: 0; margin-right: 24px; }
/* Desktop menu from 1250 px: compact between 1250 and 1440 so the logo never touches it */
@media (min-width: 1100px) and (max-width: 1440px) {   /* same header at 100% and 110% zoom */
    .primary-nav { gap: clamp(12px, calc(var(--vw) * 1.25), 20px); font-size: 13.5px; }
    .primary-nav .btn-forest { padding: 10px 16px; font-size: 13px; }
}

@media (max-width: 1099px) {
    .nav-call {
        display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin-left: auto; margin-right: 4px;
        border-radius: 999px; color: var(--forest);
    }
    .nav-toggle {
        display: flex; flex-direction: column; justify-content: center; gap: 5px; width: 44px; height: 44px;
        border: none; background: transparent; cursor: pointer; padding: 10px;
    }
    .nav-toggle span { display: block; height: 2px; background: var(--forest); border-radius: 2px; transition: transform .3s ease, opacity .3s ease; }
    .nav-open .nav-toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
    .nav-open .nav-toggle span:nth-child(2) { opacity: 0; }
    .nav-open .nav-toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
    .primary-nav {
        position: absolute; top: var(--header-h); left: 0; right: 0; flex-direction: column; align-items: flex-start;
        background: var(--cream); padding: 20px var(--pad-x) 28px; gap: 14px; border-bottom: 1px solid var(--line);
        display: none; font-size: 15px; max-height: calc(calc(var(--vh) * 100) - var(--header-h)); overflow-y: auto;
        box-shadow: 0 18px 30px rgba(20, 41, 29, .12);
    }
    .nav-open .primary-nav { display: flex; }
    .nav-phone { margin-left: 0; }
}

/* BUG-56 — Scroll cue centred at the bottom of the hero */
.hero-scroll { position: absolute; left: 50%; bottom: clamp(14px, calc(var(--vh) * 3), 28px); transform: translateX(-50%); z-index: 3; }
.hero-inner { padding-bottom: clamp(48px, calc(var(--vh) * 8), 72px); }

/* Desktop headline: smaller ceiling so the real (wider) font never overflows */
@media (min-width: 721px) {
    :root { --fs-h1: clamp(30px, min(calc(var(--vw) * 3.4), calc(var(--vh) * 7.5)), 52px); }
}

/* BUG-52 — master plan heading stays inside the column */
.mp-title { font-size: clamp(20px, calc(var(--vw) * 1.85), 32px); }

/* BUG-55 — info card moves to the corner with the fewest pins */
.mp-card { transition: left .35s ease, right .35s ease, top .35s ease, bottom .35s ease; }
.mp-card[data-corner="br"] { left: auto; right: 20px; }
.mp-card[data-corner="tl"] { bottom: auto; top: 20px; }
.mp-card[data-corner="tr"] { left: auto; right: 20px; bottom: auto; top: 20px; }
.mp-pin { transition: width .25s ease, height .25s ease, background-color .25s ease, transform .25s ease, opacity .3s ease, margin .3s ease; }

/* BUG-49 — Repose Zone has no marker on the architect's plan */
.mp-item.no-pin .mp-item-t { color: var(--muted); }
.mp-item-note { font-size: 11px; color: var(--muted); font-weight: 500; }

/* BUG-54 — location labels never cropped by the map edge */
.loc-pin.lbl-below .loc-pin-label { bottom: auto; top: calc(100% + 8px); }
.loc-pin.lbl-right .loc-pin-label { left: -6px; transform: none; }

/* BUG-19 / 29 — floor-plan panel: chips, areas and facts back */
.fp-variant-chips { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.chip-plan { text-align: left; padding: 10px 14px; font-size: 13.5px; }
.fp-info { gap: 20px; }

/* BUG-25 / 53 — form: email + consent */
.field > .consent-label { display: flex; gap: 10px; align-items: flex-start; font-size: 12px; line-height: 1.5; color: var(--body); font-weight: 400; cursor: pointer; }
.consent-label input { margin: 2px 0 0; width: 16px; height: 16px; accent-color: var(--forest); flex-shrink: 0; }
.field.consent.has-error .consent-label span { color: #B3261E; }
.form-sub[hidden] { display: none; }
.field input[type="email"] {
    font-family: var(--f-body); font-size: 15px; padding: 13px 14px; border-radius: 10px; border: 1px solid #C9C0AA;
    background: #fff; color: var(--ink); width: 100%; transition: border-color .2s ease, box-shadow .2s ease;
}
.field input[type="email"]:focus { outline: none; border-color: var(--forest); box-shadow: 0 0 0 3px rgba(30, 59, 43, .18); }
.field.has-error input[type="email"] { border-color: #B3261E; box-shadow: 0 0 0 3px rgba(179, 38, 30, .12); }
.field.is-valid input[type="email"] { border-color: #5E8C61; }

/* BUG-41 — searchable country-code picker */
.cc-wrap { position: relative; flex-shrink: 0; }
.cc-select { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; left: 0; bottom: 0; }
button.cc-face { cursor: pointer; font-family: var(--f-body); pointer-events: auto; }
.cc-pop {
    position: absolute; top: calc(100% + 6px); left: 0; z-index: 30; width: min(320px, calc(var(--vw) * 82)); display: flex; flex-direction: column;
    background: #fff; border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 18px 40px rgba(20, 41, 29, .22); overflow: hidden;
}
.cc-pop[hidden] { display: none; }
.cc-search { margin: 10px; padding: 10px 12px; border: 1px solid #C9C0AA; border-radius: 8px; font: 14px var(--f-body); }
.cc-search:focus { outline: none; border-color: var(--forest); }
.cc-list { max-height: 240px; overflow-y: auto; display: flex; flex-direction: column; padding: 0 6px 8px; overscroll-behavior: contain; }
.cc-item {
    display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 0; border-radius: 8px; background: transparent;
    font: 14px var(--f-body); color: var(--ink); text-align: left; cursor: pointer;
}
.cc-item:hover, .cc-item:focus { background: var(--sand); outline: none; }
.cc-item.is-on { background: var(--tag); font-weight: 600; }
.cc-item[hidden] { display: none; }
.cc-name { flex: 1; }
.cc-dial { color: var(--muted); font-variant-numeric: tabular-nums; }

/* Compact forms (phones, short screens, popup): email + consent */
@media (max-width: 720px), (max-height: 820px) {
    :is(.modal-card, .form-card) .field input[type="email"] { padding: 22px 14px 7px; font-size: 15px; line-height: 1.3; }
    /* Consent text sits in normal flow under the BHK buttons (never on top of the submit button) */
    :is(.modal-card, .form-card) .field.consent > .consent-label {
        position: static; display: flex; gap: 10px; align-items: flex-start; margin: 0;
        font-size: 11px; line-height: 1.4; text-transform: none; letter-spacing: 0; color: var(--body); font-weight: 400; pointer-events: auto;
    }
    .modal-card .cc-pop { position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%); width: min(340px, calc(var(--vw) * 90)); }
    .modal-card .cc-list { max-height: calc(var(--vh) * 50); }
}

/* ---------------- Phones ---------------- */
@media (max-width: 720px) {
    /* BUG-50 — when a place is picked, the Belfort label steps aside */
    .loc-map.has-sel .loc-home-label { display: none; }
    .loc-pin.is-on { z-index: 9; }
    /* BUG-52 on phones: lines may wrap rather than run off-screen */
    .mp-title span { white-space: normal; }
    .mp-card { transition: none; }
    /* floor-plan chips / facts on phones */
    .fp-variant-chips { display: flex; }
    .chip-plan { white-space: nowrap; }
    .fp-areas { order: 3; }
    .hero-scroll { display: none; }
    .hero-inner { padding-bottom: 18px; }
}


/* ---- Floor plans: layout buttons on one line (desktop + mobile) ---- */
.fp-variant-chips { display: flex; flex-wrap: nowrap; gap: 8px; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.fp-variant-chips::-webkit-scrollbar { display: none; }
.fp-variant-chips .chip-plan { flex: 1 0 auto; white-space: nowrap; text-align: center; padding: 9px 10px; font-size: 12.5px; }
@media (min-width: 721px) { .fp-variant-chips { scrollbar-width: thin; } } /* 3 BHK has 4 layouts: a thin bar shows there's one more */

/* ---- Floor plans on phones: as the mobile design ---- */
@media (max-width: 720px) {
    .fp-intro, .fp-title { display: none !important; }          /* no paragraph / tagline text */
    .fp-variants .label-sm { display: none; }
    .fp-variant-chips .chip-plan { flex: 0 0 auto; }
    .fp-areas { order: 3; }
    .fp-areas .label-sm { font-size: 10.5px; letter-spacing: .08em; }
    .fp-rows { order: 4; display: flex; flex-direction: row; flex-wrap: wrap; gap: 8px; }
    .fp-fact { padding: 8px 12px; border: 0; border-radius: 10px; background: var(--sand); font-size: 13px; gap: 5px; justify-content: flex-start; }
    .fp-fact strong { font-weight: 600; }
    .fp-fact-facing > span, .fp-fact-towers > span { display: none; }   /* "East facing", "Tower A & B" */
    .fp-fact-facing strong::after { content: " facing"; }
    .fp-fact-floors > span { font-size: 13px; color: var(--ink); }      /* "Floors 3rd – 24th" */
}


/* ---- Round 3 UI ---- */
/* Layout buttons: room for the hover lift so the top border is never cut */
.fp-variant-chips { padding: 4px 2px 4px; margin: -4px -2px -4px; }
.fp-variant-chips .chip-plan:hover { transform: none; }
/* Location pins slide apart smoothly */
.loc-pin { transition: opacity .4s ease, margin .3s ease; }

@media (max-width: 720px) {
    /* Fact chips on one line: East facing · Tower A & B · Floors 3rd – 24th */
    .fp-rows { flex-wrap: nowrap; gap: 6px; overflow-x: auto; scrollbar-width: none; }
    .fp-rows::-webkit-scrollbar { display: none; }
    .fp-fact { flex: 0 0 auto; white-space: nowrap; padding: 7px 10px; font-size: 12.5px; }
    .fp-fact-floors > span { font-size: 12.5px; }
    /* Tower tags: compact single row */
    .overview .tags { gap: 8px; }
    .overview .tag { white-space: nowrap; font-size: 12px; padding: 7px 12px; }
    /* Smaller location pins on phones so they can be told apart */
    .loc-pin-btn { width: 22px; height: 22px; border-width: 1.5px; }
    .loc-pin-btn svg { width: 11px; height: 11px; }
    .loc-pin.is-on .loc-pin-btn { width: 30px; height: 30px; }
    .loc-pin-label { font-size: 11px; padding: 4px 8px; }
    .loc-route-label { display: none !important; } /* travel time is shown in the card below the map */
}


/* ==========================================================================
   Responsive pass — 1920/1536 wide screens and 768–1100 px tablets
   ========================================================================== */
/* Wide screens: keep content in a 1440 px column, centred */
@media (min-width: 1600px) {
    :root { --pad-x: calc((calc(var(--vw) * 100) - 1440px) / 2 + 80px); }
    .hero-badge { right: var(--pad-x); }
}

/* Tablets (721–1100 px) */
@media (min-width: 721px) and (max-width: 1100px) {
    /* Floor-plan tabs: compact segmented control, like mobile */
    .cfg-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; border: 1.5px solid var(--forest); border-radius: 14px; overflow: hidden; }
    .cfg-tab { border: 0; border-radius: 0; padding: 12px 8px; justify-content: center; text-align: center; box-shadow: none !important; transform: none !important; }
    .cfg-tab + .cfg-tab { border-left: 1.5px solid var(--forest); }
    .cfg-tab-l, .cfg-tab-units { display: none; }
    .cfg-tab-m { display: flex !important; flex-direction: column; align-items: center; gap: 2px; }
    .cfg-tab-m strong { font-size: 17px; }
    .cfg-tab-m small { font-size: 12px; opacity: .85; }
    /* Floor plan: image and details side by side are too narrow — stack them neatly */
    .fp-viewer { max-width: 760px; margin-inline: auto; }
    .fp-info { max-width: 760px; width: 100%; margin-inline: auto; }
    /* Master plan / location / amenities: comfortable widths */
    .mp-map { max-width: 820px; margin-inline: auto; }
    .mp-side, .mp-head { max-width: 820px; width: 100%; margin-inline: auto; }
    .am-img { max-width: 760px; margin-inline: auto; }
    .am-info { max-width: 760px; width: 100%; margin-inline: auto; }
    /* Enquiry: copy and form centred when stacked */
    .enquire-copy { max-width: 640px; }
    .form-card { margin-inline: auto; }
    .stats { padding: 28px 16px; }
    .stat-v { font-size: 32px; }
    .pillars { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
    .hero-badge { display: flex; bottom: 24px; }
}



/* ==========================================================================
   QA round 3 (Oct 13)
   ========================================================================== */
/* BUG-06: less empty space above section headings on short laptop screens */
@media (min-width: 721px) and (max-height: 820px) {
    :root { --sec-y: clamp(40px, calc(var(--vh) * 7), 72px); }
    .section { gap: clamp(22px, calc(var(--vh) * 4), 40px); }
}

/* Location: the info card moves to the corner with fewer pins (desktop) */
.loc-card { transition: left .35s ease, right .35s ease; }
.loc-card[data-corner="br"] { left: auto; right: 16px; }

/* BUG-70: "Zoom In" sits at the bottom centre, clear of the key-plan thumbnails */
.fp-zoom { top: auto; right: auto; bottom: 14px; left: 50%; translate: -50% 0; }

/* BUG-72: country search — empty result message */
.cc-empty { display: block; padding: 6px 16px 14px; font-size: 13px; color: var(--muted); }
.cc-empty[hidden] { display: none; }

/* BUG-74: thank-you page has no sticky bar, so no bottom gap */
@media (max-width: 720px) { body.page-thanks { padding-bottom: env(safe-area-inset-bottom, 0px); } }

@media (max-width: 720px) {
    /* BUG-50: Belfort label covered nearby pins — the "B" marker alone marks Belfort on phones */
    .loc-home-label { display: none !important; }
    /* BUG-73: sticky bar text stays on one line, even at 320 px */
    .m-bar { gap: 8px; padding-left: 12px; padding-right: 12px; }
    .m-bar .btn { white-space: nowrap; font-size: 14.5px; padding: 0 12px; min-height: 48px; }
    .m-bar-call { flex: 0 0 34% !important; }
}
/* BUG-73: short phones (e.g. 320 × 568): hero buttons fit above the sticky bar */
@media (max-width: 720px) and (max-height: 700px) {
    .hero-inner { padding-top: 56px; padding-bottom: 14px; gap: 10px; }
    .hero-title { font-size: clamp(20px, 6.6vw, 26px); }
    .hero-lead { font-size: 13.5px; line-height: 1.5; }
    .hero-facts { padding: 8px 0; } 
    .hero-ctas .btn { padding: 12px 10px; font-size: 10.5px; }
    .hero-badge { top: 10px; right: 10px; }
}
@media (max-width: 360px) {
    .m-bar .btn { font-size: 13.5px; }
    .loc-home-label {
    font-size: 5px!important;}  
}
/* BUG-73: phones in landscape (e.g. 667 × 375, 844 × 390): no fixed bar over the content, compact hero */
@media (orientation: landscape) and (max-height: 500px) {
    .m-bar { display: none !important; }
    body { padding-bottom: 0 !important; }
    .hero { min-height: 0 !important; }
    .hero-inner { justify-content: center; padding-top: 24px; padding-bottom: 24px; gap: 10px; }
    .hero-title { font-size: clamp(20px, 4.6vw, 30px); }
    .hero-lead { font-size: 13.5px; max-width: 560px; }
    .hero-facts { padding: 8px 0; }
    .hero-scroll, .hero-badge { display: none !important; }
    .site-header { height: 56px; }
    :root { --header-h: 56px; }
}


/* ==========================================================================
   QA round 4 (Oct 13, part 2)
   ========================================================================== */
/* BUG-25: labels ABOVE the fields on every form (inline, popup, brochure), as in the design */
@media (max-width: 720px), (max-height: 820px) {
    :is(.modal-card, .form-card) .field:not(.consent) > label,
    :is(.modal-card, .form-card) .field.field-phone > label,
    :is(.modal-card, .form-card) .field:not(.field-phone):not(.consent) > label {
        position: static; width: auto; height: auto; overflow: visible; clip: auto; white-space: normal;
        font-size: 13px; font-weight: 600; letter-spacing: 0; text-transform: none; color: var(--ink);
        line-height: 1.3; pointer-events: auto; margin: 0 0 2px;
    }
    :is(.modal-card, .form-card) .field input[type="text"],
    :is(.modal-card, .form-card) .field input[type="email"],
    :is(.modal-card, .form-card) .field input[type="tel"] { padding: 12px 14px; font-size: 15px; line-height: 1.3; }
    :is(.modal-card, .form-card) .cc-face { min-height: 46px; }
    :is(.modal-card, .form-card) .field { gap: 4px; }
    :is(.modal-card, .form-card) .lead-form { gap: 12px; }
    .modal-card { overflow-y: auto; }
}

/* BUG-69: the "Explore the neighbourhood" card sits under the map on every screen,
   so it can never cover pins */
.loc-map { aspect-ratio: auto; }
.loc-canvas { position: relative; aspect-ratio: 860 / 567; height: auto; }
.loc-card, .loc-card[data-corner] {
    position: static; width: auto; border-radius: 0; box-shadow: none; background: #fff;
    border-top: 1px solid var(--line); padding: 14px 18px;
}
.loc-card > div { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 6px 14px; }
.loc-card .js-card-empty { flex-direction: column; align-items: flex-start; gap: 4px; }
.loc-card .loc-card-top { width: 100%; }
.loc-card .loc-card-name { font-size: 19px; }
.loc-card .loc-card-min { font-size: 24px; }
.loc-card .btn-sm { margin-left: auto; }

/* BUG-50: "Sumadhura Belfort" is a small tooltip above the B marker — it never covers pins */
.loc-home .inv { flex-direction: column-reverse; }
.loc-home-label {
    position: absolute; top: auto; bottom: calc(100% + 6px); left: 50%; right: auto; transform: translateX(-50%);
    font-size: 10.5px; letter-spacing: .04em; padding: 3px 8px; border-radius: 6px; opacity: .92;
}
.loc-home-label::after {
    content: ''; position: absolute; left: 50%; top: 100%; margin-left: -4px;
    border: 4px solid transparent; border-top-color: var(--forest);
}
.loc-home-dot { width: 34px; height: 34px; font-size: 15px; }
/* Tablets and phones: the tooltip only appears when the B marker is tapped */
@media (max-width: 1100px) {
    .loc-home { pointer-events: auto; cursor: pointer; }
    .loc-home-label { display: none !important; }
    .loc-home.is-tip .loc-home-label { display: block !important; }
    .loc-home-dot { width: 28px; height: 28px; font-size: 13px; border-width: 2px; }
}
 

/* ---- Oct 13, part 3 ---- */
/* Phones: the menu panel shows links only — Call and Book A Site Visit are already in the bottom bar */
@media (max-width: 720px) {
    .primary-nav .nav-phone, .primary-nav .btn-forest { display: none !important; }
}
/* "Sumadhura Belfort" tooltip: extra small, sits just above the B, never over other pins */
.loc-home-label {
    font-size: 9px; font-weight: 600; letter-spacing: .03em; line-height: 1.2;
    padding: 2px 6px !important; border-radius: 4px; bottom: calc(100% + 4px) !important; white-space: nowrap;
    box-shadow: 0 2px 6px rgba(20, 41, 29, .25);
}
.loc-home-label::after { border-width: 3px; margin-left: -3px; }
.loc-map.has-sel .loc-home-label { opacity: 0; }          /* steps aside while a place is selected */
.loc-home:hover .loc-home-label, .loc-home.is-tip .loc-home-label { opacity: 1; }


/* ==========================================================================
   Location map + country list fixes (Oct 15)
   ========================================================================== */
/* Travel time now sits inside the place's own label ("Hopefarm Metro Station · 12 min"),
   so the separate bubble on the route can't be covered any more */
.loc-route-label { display: none !important; }
.loc-pin-min { display: none; font-weight: 700; color: var(--forest); }
.loc-pin.is-on .loc-pin-min { display: inline; }

/* Place names always sit ON TOP of the Belfort pin and its label */
.loc-pin.is-hov, .loc-pin.is-on { z-index: 12 !important; }
.loc-pin-label { z-index: 2; }

/* The map already prints the Sumadhura Belfort logo, so the dark name label is hidden
   on every screen; it appears only when you hover (desktop) or tap (touch) the B pin */
.loc-home { pointer-events: auto; cursor: pointer; }
.loc-home .loc-home-label { display: none !important; }
.loc-home:hover .loc-home-label, .loc-home.is-tip .loc-home-label { display: block !important; opacity: 1 !important; }
.loc-map.has-sel .loc-home:not(.is-tip):not(:hover) .loc-home-label { display: none !important; }

/* Country list: "India" (first row) fully visible; the list scrolls inside its own box */
.cc-list { position: relative; }
.cc-pop.is-floating {
    position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%); z-index: 300;
    width: min(360px, 92vw); max-height: min(72vh, 480px); display: flex; flex-direction: column;
    box-shadow: 0 0 0 100vmax rgba(9, 19, 13, .35), 0 24px 60px rgba(9, 19, 13, .35);
}
.cc-pop.is-floating[hidden] { display: none; }
.cc-pop.is-floating .cc-list { flex: 1; min-height: 0; max-height: none; }


/* ---- Oct 16: map labels inside the map, popup country list ---- */
.loc-pin-label.is-below { bottom: auto !important; top: calc(100% + 8px) !important; }
@media (max-width: 720px) {
    /* long names wrap onto two lines instead of running off the map */
    .loc-pin-label { white-space: normal; width: max-content; max-width: min(230px, 62vw); text-align: center; line-height: 1.3; }
}
/* Clicking the dimmed area around the country list closes only the list, not the popup */
.cc-overlay { position: fixed; inset: 0; z-index: 299; background: transparent; }


/* ---- Oct 16 (2): the picked place and its name always sit above every other pin ---- */
.loc-pin.is-on { z-index: 30 !important; }
.loc-pin.is-hov:not(.is-on) { z-index: 20 !important; }
.loc-pin.is-on .loc-pin-label { z-index: 5; box-shadow: 0 6px 18px rgba(20, 41, 29, .28); }
/* other pins step back a little while a place is picked, so the route and name stand out */
.loc-map.has-sel .loc-pin:not(.is-on):not(.is-hov):not(.is-hidden) { opacity: .55; }


/* ---- travel time never splits across lines ("· 3 min" stays together) ---- */
.loc-pin-min { white-space: nowrap; }

/* ==========================================================================
   Same layout at 110% browser zoom (CSS-only, works even without the head script).
   Between 1100 and 1365 px wide (e.g. a 1366 × 768 laptop zoomed to 110%) the page
   is drawn as the 1366 px layout and scaled down to fit — every section identical.
   ========================================================================== */
@media (min-width: 1100px) and (max-width: 1101.999px) { html { zoom: 0.80527; } :root { --vw: 13.66px; --vh: calc(1vh / 0.80527); } }
@media (min-width: 1102px) and (max-width: 1103.999px) { html { zoom: 0.80673; } :root { --vw: 13.66px; --vh: calc(1vh / 0.80673); } }
@media (min-width: 1104px) and (max-width: 1105.999px) { html { zoom: 0.80820; } :root { --vw: 13.66px; --vh: calc(1vh / 0.80820); } }
@media (min-width: 1106px) and (max-width: 1107.999px) { html { zoom: 0.80966; } :root { --vw: 13.66px; --vh: calc(1vh / 0.80966); } }
@media (min-width: 1108px) and (max-width: 1109.999px) { html { zoom: 0.81113; } :root { --vw: 13.66px; --vh: calc(1vh / 0.81113); } }
@media (min-width: 1110px) and (max-width: 1111.999px) { html { zoom: 0.81259; } :root { --vw: 13.66px; --vh: calc(1vh / 0.81259); } }
@media (min-width: 1112px) and (max-width: 1113.999px) { html { zoom: 0.81406; } :root { --vw: 13.66px; --vh: calc(1vh / 0.81406); } }
@media (min-width: 1114px) and (max-width: 1115.999px) { html { zoom: 0.81552; } :root { --vw: 13.66px; --vh: calc(1vh / 0.81552); } }
@media (min-width: 1116px) and (max-width: 1117.999px) { html { zoom: 0.81698; } :root { --vw: 13.66px; --vh: calc(1vh / 0.81698); } }
@media (min-width: 1118px) and (max-width: 1119.999px) { html { zoom: 0.81845; } :root { --vw: 13.66px; --vh: calc(1vh / 0.81845); } }
@media (min-width: 1120px) and (max-width: 1121.999px) { html { zoom: 0.81991; } :root { --vw: 13.66px; --vh: calc(1vh / 0.81991); } }
@media (min-width: 1122px) and (max-width: 1123.999px) { html { zoom: 0.82138; } :root { --vw: 13.66px; --vh: calc(1vh / 0.82138); } }
@media (min-width: 1124px) and (max-width: 1125.999px) { html { zoom: 0.82284; } :root { --vw: 13.66px; --vh: calc(1vh / 0.82284); } }
@media (min-width: 1126px) and (max-width: 1127.999px) { html { zoom: 0.82430; } :root { --vw: 13.66px; --vh: calc(1vh / 0.82430); } }
@media (min-width: 1128px) and (max-width: 1129.999px) { html { zoom: 0.82577; } :root { --vw: 13.66px; --vh: calc(1vh / 0.82577); } }
@media (min-width: 1130px) and (max-width: 1131.999px) { html { zoom: 0.82723; } :root { --vw: 13.66px; --vh: calc(1vh / 0.82723); } }
@media (min-width: 1132px) and (max-width: 1133.999px) { html { zoom: 0.82870; } :root { --vw: 13.66px; --vh: calc(1vh / 0.82870); } }
@media (min-width: 1134px) and (max-width: 1135.999px) { html { zoom: 0.83016; } :root { --vw: 13.66px; --vh: calc(1vh / 0.83016); } }
@media (min-width: 1136px) and (max-width: 1137.999px) { html { zoom: 0.83163; } :root { --vw: 13.66px; --vh: calc(1vh / 0.83163); } }
@media (min-width: 1138px) and (max-width: 1139.999px) { html { zoom: 0.83309; } :root { --vw: 13.66px; --vh: calc(1vh / 0.83309); } }
@media (min-width: 1140px) and (max-width: 1141.999px) { html { zoom: 0.83455; } :root { --vw: 13.66px; --vh: calc(1vh / 0.83455); } }
@media (min-width: 1142px) and (max-width: 1143.999px) { html { zoom: 0.83602; } :root { --vw: 13.66px; --vh: calc(1vh / 0.83602); } }
@media (min-width: 1144px) and (max-width: 1145.999px) { html { zoom: 0.83748; } :root { --vw: 13.66px; --vh: calc(1vh / 0.83748); } }
@media (min-width: 1146px) and (max-width: 1147.999px) { html { zoom: 0.83895; } :root { --vw: 13.66px; --vh: calc(1vh / 0.83895); } }
@media (min-width: 1148px) and (max-width: 1149.999px) { html { zoom: 0.84041; } :root { --vw: 13.66px; --vh: calc(1vh / 0.84041); } }
@media (min-width: 1150px) and (max-width: 1151.999px) { html { zoom: 0.84187; } :root { --vw: 13.66px; --vh: calc(1vh / 0.84187); } }
@media (min-width: 1152px) and (max-width: 1153.999px) { html { zoom: 0.84334; } :root { --vw: 13.66px; --vh: calc(1vh / 0.84334); } }
@media (min-width: 1154px) and (max-width: 1155.999px) { html { zoom: 0.84480; } :root { --vw: 13.66px; --vh: calc(1vh / 0.84480); } }
@media (min-width: 1156px) and (max-width: 1157.999px) { html { zoom: 0.84627; } :root { --vw: 13.66px; --vh: calc(1vh / 0.84627); } }
@media (min-width: 1158px) and (max-width: 1159.999px) { html { zoom: 0.84773; } :root { --vw: 13.66px; --vh: calc(1vh / 0.84773); } }
@media (min-width: 1160px) and (max-width: 1161.999px) { html { zoom: 0.84919; } :root { --vw: 13.66px; --vh: calc(1vh / 0.84919); } }
@media (min-width: 1162px) and (max-width: 1163.999px) { html { zoom: 0.85066; } :root { --vw: 13.66px; --vh: calc(1vh / 0.85066); } }
@media (min-width: 1164px) and (max-width: 1165.999px) { html { zoom: 0.85212; } :root { --vw: 13.66px; --vh: calc(1vh / 0.85212); } }
@media (min-width: 1166px) and (max-width: 1167.999px) { html { zoom: 0.85359; } :root { --vw: 13.66px; --vh: calc(1vh / 0.85359); } }
@media (min-width: 1168px) and (max-width: 1169.999px) { html { zoom: 0.85505; } :root { --vw: 13.66px; --vh: calc(1vh / 0.85505); } }
@media (min-width: 1170px) and (max-width: 1171.999px) { html { zoom: 0.85652; } :root { --vw: 13.66px; --vh: calc(1vh / 0.85652); } }
@media (min-width: 1172px) and (max-width: 1173.999px) { html { zoom: 0.85798; } :root { --vw: 13.66px; --vh: calc(1vh / 0.85798); } }
@media (min-width: 1174px) and (max-width: 1175.999px) { html { zoom: 0.85944; } :root { --vw: 13.66px; --vh: calc(1vh / 0.85944); } }
@media (min-width: 1176px) and (max-width: 1177.999px) { html { zoom: 0.86091; } :root { --vw: 13.66px; --vh: calc(1vh / 0.86091); } }
@media (min-width: 1178px) and (max-width: 1179.999px) { html { zoom: 0.86237; } :root { --vw: 13.66px; --vh: calc(1vh / 0.86237); } }
@media (min-width: 1180px) and (max-width: 1181.999px) { html { zoom: 0.86384; } :root { --vw: 13.66px; --vh: calc(1vh / 0.86384); } }
@media (min-width: 1182px) and (max-width: 1183.999px) { html { zoom: 0.86530; } :root { --vw: 13.66px; --vh: calc(1vh / 0.86530); } }
@media (min-width: 1184px) and (max-width: 1185.999px) { html { zoom: 0.86676; } :root { --vw: 13.66px; --vh: calc(1vh / 0.86676); } }
@media (min-width: 1186px) and (max-width: 1187.999px) { html { zoom: 0.86823; } :root { --vw: 13.66px; --vh: calc(1vh / 0.86823); } }
@media (min-width: 1188px) and (max-width: 1189.999px) { html { zoom: 0.86969; } :root { --vw: 13.66px; --vh: calc(1vh / 0.86969); } }
@media (min-width: 1190px) and (max-width: 1191.999px) { html { zoom: 0.87116; } :root { --vw: 13.66px; --vh: calc(1vh / 0.87116); } }
@media (min-width: 1192px) and (max-width: 1193.999px) { html { zoom: 0.87262; } :root { --vw: 13.66px; --vh: calc(1vh / 0.87262); } }
@media (min-width: 1194px) and (max-width: 1195.999px) { html { zoom: 0.87408; } :root { --vw: 13.66px; --vh: calc(1vh / 0.87408); } }
@media (min-width: 1196px) and (max-width: 1197.999px) { html { zoom: 0.87555; } :root { --vw: 13.66px; --vh: calc(1vh / 0.87555); } }
@media (min-width: 1198px) and (max-width: 1199.999px) { html { zoom: 0.87701; } :root { --vw: 13.66px; --vh: calc(1vh / 0.87701); } }
@media (min-width: 1200px) and (max-width: 1201.999px) { html { zoom: 0.87848; } :root { --vw: 13.66px; --vh: calc(1vh / 0.87848); } }
@media (min-width: 1202px) and (max-width: 1203.999px) { html { zoom: 0.87994; } :root { --vw: 13.66px; --vh: calc(1vh / 0.87994); } }
@media (min-width: 1204px) and (max-width: 1205.999px) { html { zoom: 0.88141; } :root { --vw: 13.66px; --vh: calc(1vh / 0.88141); } }
@media (min-width: 1206px) and (max-width: 1207.999px) { html { zoom: 0.88287; } :root { --vw: 13.66px; --vh: calc(1vh / 0.88287); } }
@media (min-width: 1208px) and (max-width: 1209.999px) { html { zoom: 0.88433; } :root { --vw: 13.66px; --vh: calc(1vh / 0.88433); } }
@media (min-width: 1210px) and (max-width: 1211.999px) { html { zoom: 0.88580; } :root { --vw: 13.66px; --vh: calc(1vh / 0.88580); } }
@media (min-width: 1212px) and (max-width: 1213.999px) { html { zoom: 0.88726; } :root { --vw: 13.66px; --vh: calc(1vh / 0.88726); } }
@media (min-width: 1214px) and (max-width: 1215.999px) { html { zoom: 0.88873; } :root { --vw: 13.66px; --vh: calc(1vh / 0.88873); } }
@media (min-width: 1216px) and (max-width: 1217.999px) { html { zoom: 0.89019; } :root { --vw: 13.66px; --vh: calc(1vh / 0.89019); } }
@media (min-width: 1218px) and (max-width: 1219.999px) { html { zoom: 0.89165; } :root { --vw: 13.66px; --vh: calc(1vh / 0.89165); } }
@media (min-width: 1220px) and (max-width: 1221.999px) { html { zoom: 0.89312; } :root { --vw: 13.66px; --vh: calc(1vh / 0.89312); } }
@media (min-width: 1222px) and (max-width: 1223.999px) { html { zoom: 0.89458; } :root { --vw: 13.66px; --vh: calc(1vh / 0.89458); } }
@media (min-width: 1224px) and (max-width: 1225.999px) { html { zoom: 0.89605; } :root { --vw: 13.66px; --vh: calc(1vh / 0.89605); } }
@media (min-width: 1226px) and (max-width: 1227.999px) { html { zoom: 0.89751; } :root { --vw: 13.66px; --vh: calc(1vh / 0.89751); } }
@media (min-width: 1228px) and (max-width: 1229.999px) { html { zoom: 0.89898; } :root { --vw: 13.66px; --vh: calc(1vh / 0.89898); } }
@media (min-width: 1230px) and (max-width: 1231.999px) { html { zoom: 0.90044; } :root { --vw: 13.66px; --vh: calc(1vh / 0.90044); } }
@media (min-width: 1232px) and (max-width: 1233.999px) { html { zoom: 0.90190; } :root { --vw: 13.66px; --vh: calc(1vh / 0.90190); } }
@media (min-width: 1234px) and (max-width: 1235.999px) { html { zoom: 0.90337; } :root { --vw: 13.66px; --vh: calc(1vh / 0.90337); } }
@media (min-width: 1236px) and (max-width: 1237.999px) { html { zoom: 0.90483; } :root { --vw: 13.66px; --vh: calc(1vh / 0.90483); } }
@media (min-width: 1238px) and (max-width: 1239.999px) { html { zoom: 0.90630; } :root { --vw: 13.66px; --vh: calc(1vh / 0.90630); } }
@media (min-width: 1240px) and (max-width: 1241.999px) { html { zoom: 0.90776; } :root { --vw: 13.66px; --vh: calc(1vh / 0.90776); } }
@media (min-width: 1242px) and (max-width: 1243.999px) { html { zoom: 0.90922; } :root { --vw: 13.66px; --vh: calc(1vh / 0.90922); } }
@media (min-width: 1244px) and (max-width: 1245.999px) { html { zoom: 0.91069; } :root { --vw: 13.66px; --vh: calc(1vh / 0.91069); } }
@media (min-width: 1246px) and (max-width: 1247.999px) { html { zoom: 0.91215; } :root { --vw: 13.66px; --vh: calc(1vh / 0.91215); } }
@media (min-width: 1248px) and (max-width: 1249.999px) { html { zoom: 0.91362; } :root { --vw: 13.66px; --vh: calc(1vh / 0.91362); } }
@media (min-width: 1250px) and (max-width: 1251.999px) { html { zoom: 0.91508; } :root { --vw: 13.66px; --vh: calc(1vh / 0.91508); } }
@media (min-width: 1252px) and (max-width: 1253.999px) { html { zoom: 0.91654; } :root { --vw: 13.66px; --vh: calc(1vh / 0.91654); } }
@media (min-width: 1254px) and (max-width: 1255.999px) { html { zoom: 0.91801; } :root { --vw: 13.66px; --vh: calc(1vh / 0.91801); } }
@media (min-width: 1256px) and (max-width: 1257.999px) { html { zoom: 0.91947; } :root { --vw: 13.66px; --vh: calc(1vh / 0.91947); } }
@media (min-width: 1258px) and (max-width: 1259.999px) { html { zoom: 0.92094; } :root { --vw: 13.66px; --vh: calc(1vh / 0.92094); } }
@media (min-width: 1260px) and (max-width: 1261.999px) { html { zoom: 0.92240; } :root { --vw: 13.66px; --vh: calc(1vh / 0.92240); } }
@media (min-width: 1262px) and (max-width: 1263.999px) { html { zoom: 0.92387; } :root { --vw: 13.66px; --vh: calc(1vh / 0.92387); } }
@media (min-width: 1264px) and (max-width: 1265.999px) { html { zoom: 0.92533; } :root { --vw: 13.66px; --vh: calc(1vh / 0.92533); } }
@media (min-width: 1266px) and (max-width: 1267.999px) { html { zoom: 0.92679; } :root { --vw: 13.66px; --vh: calc(1vh / 0.92679); } }
@media (min-width: 1268px) and (max-width: 1269.999px) { html { zoom: 0.92826; } :root { --vw: 13.66px; --vh: calc(1vh / 0.92826); } }
@media (min-width: 1270px) and (max-width: 1271.999px) { html { zoom: 0.92972; } :root { --vw: 13.66px; --vh: calc(1vh / 0.92972); } }
@media (min-width: 1272px) and (max-width: 1273.999px) { html { zoom: 0.93119; } :root { --vw: 13.66px; --vh: calc(1vh / 0.93119); } }
@media (min-width: 1274px) and (max-width: 1275.999px) { html { zoom: 0.93265; } :root { --vw: 13.66px; --vh: calc(1vh / 0.93265); } }
@media (min-width: 1276px) and (max-width: 1277.999px) { html { zoom: 0.93411; } :root { --vw: 13.66px; --vh: calc(1vh / 0.93411); } }
@media (min-width: 1278px) and (max-width: 1279.999px) { html { zoom: 0.93558; } :root { --vw: 13.66px; --vh: calc(1vh / 0.93558); } }
@media (min-width: 1280px) and (max-width: 1281.999px) { html { zoom: 0.93704; } :root { --vw: 13.66px; --vh: calc(1vh / 0.93704); } }
@media (min-width: 1282px) and (max-width: 1283.999px) { html { zoom: 0.93851; } :root { --vw: 13.66px; --vh: calc(1vh / 0.93851); } }
@media (min-width: 1284px) and (max-width: 1285.999px) { html { zoom: 0.93997; } :root { --vw: 13.66px; --vh: calc(1vh / 0.93997); } }
@media (min-width: 1286px) and (max-width: 1287.999px) { html { zoom: 0.94143; } :root { --vw: 13.66px; --vh: calc(1vh / 0.94143); } }
@media (min-width: 1288px) and (max-width: 1289.999px) { html { zoom: 0.94290; } :root { --vw: 13.66px; --vh: calc(1vh / 0.94290); } }
@media (min-width: 1290px) and (max-width: 1291.999px) { html { zoom: 0.94436; } :root { --vw: 13.66px; --vh: calc(1vh / 0.94436); } }
@media (min-width: 1292px) and (max-width: 1293.999px) { html { zoom: 0.94583; } :root { --vw: 13.66px; --vh: calc(1vh / 0.94583); } }
@media (min-width: 1294px) and (max-width: 1295.999px) { html { zoom: 0.94729; } :root { --vw: 13.66px; --vh: calc(1vh / 0.94729); } }
@media (min-width: 1296px) and (max-width: 1297.999px) { html { zoom: 0.94876; } :root { --vw: 13.66px; --vh: calc(1vh / 0.94876); } }
@media (min-width: 1298px) and (max-width: 1299.999px) { html { zoom: 0.95022; } :root { --vw: 13.66px; --vh: calc(1vh / 0.95022); } }
@media (min-width: 1300px) and (max-width: 1301.999px) { html { zoom: 0.95168; } :root { --vw: 13.66px; --vh: calc(1vh / 0.95168); } }
@media (min-width: 1302px) and (max-width: 1303.999px) { html { zoom: 0.95315; } :root { --vw: 13.66px; --vh: calc(1vh / 0.95315); } }
@media (min-width: 1304px) and (max-width: 1305.999px) { html { zoom: 0.95461; } :root { --vw: 13.66px; --vh: calc(1vh / 0.95461); } }
@media (min-width: 1306px) and (max-width: 1307.999px) { html { zoom: 0.95608; } :root { --vw: 13.66px; --vh: calc(1vh / 0.95608); } }
@media (min-width: 1308px) and (max-width: 1309.999px) { html { zoom: 0.95754; } :root { --vw: 13.66px; --vh: calc(1vh / 0.95754); } }
@media (min-width: 1310px) and (max-width: 1311.999px) { html { zoom: 0.95900; } :root { --vw: 13.66px; --vh: calc(1vh / 0.95900); } }
@media (min-width: 1312px) and (max-width: 1313.999px) { html { zoom: 0.96047; } :root { --vw: 13.66px; --vh: calc(1vh / 0.96047); } }
@media (min-width: 1314px) and (max-width: 1315.999px) { html { zoom: 0.96193; } :root { --vw: 13.66px; --vh: calc(1vh / 0.96193); } }
@media (min-width: 1316px) and (max-width: 1317.999px) { html { zoom: 0.96340; } :root { --vw: 13.66px; --vh: calc(1vh / 0.96340); } }
@media (min-width: 1318px) and (max-width: 1319.999px) { html { zoom: 0.96486; } :root { --vw: 13.66px; --vh: calc(1vh / 0.96486); } }
@media (min-width: 1320px) and (max-width: 1321.999px) { html { zoom: 0.96633; } :root { --vw: 13.66px; --vh: calc(1vh / 0.96633); } }
@media (min-width: 1322px) and (max-width: 1323.999px) { html { zoom: 0.96779; } :root { --vw: 13.66px; --vh: calc(1vh / 0.96779); } }
@media (min-width: 1324px) and (max-width: 1325.999px) { html { zoom: 0.96925; } :root { --vw: 13.66px; --vh: calc(1vh / 0.96925); } }
@media (min-width: 1326px) and (max-width: 1327.999px) { html { zoom: 0.97072; } :root { --vw: 13.66px; --vh: calc(1vh / 0.97072); } }
@media (min-width: 1328px) and (max-width: 1329.999px) { html { zoom: 0.97218; } :root { --vw: 13.66px; --vh: calc(1vh / 0.97218); } }
@media (min-width: 1330px) and (max-width: 1331.999px) { html { zoom: 0.97365; } :root { --vw: 13.66px; --vh: calc(1vh / 0.97365); } }
@media (min-width: 1332px) and (max-width: 1333.999px) { html { zoom: 0.97511; } :root { --vw: 13.66px; --vh: calc(1vh / 0.97511); } }
@media (min-width: 1334px) and (max-width: 1335.999px) { html { zoom: 0.97657; } :root { --vw: 13.66px; --vh: calc(1vh / 0.97657); } }
@media (min-width: 1336px) and (max-width: 1337.999px) { html { zoom: 0.97804; } :root { --vw: 13.66px; --vh: calc(1vh / 0.97804); } }
@media (min-width: 1338px) and (max-width: 1339.999px) { html { zoom: 0.97950; } :root { --vw: 13.66px; --vh: calc(1vh / 0.97950); } }
@media (min-width: 1340px) and (max-width: 1341.999px) { html { zoom: 0.98097; } :root { --vw: 13.66px; --vh: calc(1vh / 0.98097); } }
@media (min-width: 1342px) and (max-width: 1343.999px) { html { zoom: 0.98243; } :root { --vw: 13.66px; --vh: calc(1vh / 0.98243); } }
@media (min-width: 1344px) and (max-width: 1345.999px) { html { zoom: 0.98389; } :root { --vw: 13.66px; --vh: calc(1vh / 0.98389); } }
@media (min-width: 1346px) and (max-width: 1347.999px) { html { zoom: 0.98536; } :root { --vw: 13.66px; --vh: calc(1vh / 0.98536); } }
@media (min-width: 1348px) and (max-width: 1349.999px) { html { zoom: 0.98682; } :root { --vw: 13.66px; --vh: calc(1vh / 0.98682); } }
@media (min-width: 1350px) and (max-width: 1351.999px) { html { zoom: 0.98829; } :root { --vw: 13.66px; --vh: calc(1vh / 0.98829); } }
@media (min-width: 1352px) and (max-width: 1353.999px) { html { zoom: 0.98975; } :root { --vw: 13.66px; --vh: calc(1vh / 0.98975); } }
@media (min-width: 1354px) and (max-width: 1355.999px) { html { zoom: 0.99122; } :root { --vw: 13.66px; --vh: calc(1vh / 0.99122); } }
@media (min-width: 1356px) and (max-width: 1357.999px) { html { zoom: 0.99268; } :root { --vw: 13.66px; --vh: calc(1vh / 0.99268); } }
@media (min-width: 1358px) and (max-width: 1359.999px) { html { zoom: 0.99414; } :root { --vw: 13.66px; --vh: calc(1vh / 0.99414); } }
@media (min-width: 1360px) and (max-width: 1361.999px) { html { zoom: 0.99561; } :root { --vw: 13.66px; --vh: calc(1vh / 0.99561); } }
@media (min-width: 1362px) and (max-width: 1363.999px) { html { zoom: 0.99707; } :root { --vw: 13.66px; --vh: calc(1vh / 0.99707); } }
@media (min-width: 1364px) and (max-width: 1365.999px) { html { zoom: 0.99854; } :root { --vw: 13.66px; --vh: calc(1vh / 0.99854); } }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation: none !important; transition: none !important; }
    .hx { opacity: 1; }
    html { scroll-behavior: auto; }
}
    .footer-bottom {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    padding: 20px 0;
    width: 100%;
}

.footer-copyright {
    flex-shrink: 0;
    text-decoration: none;
}

.footer-bottom-links {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 24px;
}

.footer-bottom-links a {
    text-decoration: none;
}

.footer-bottom-links .d-only {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

/* Mobile responsive */
@media (max-width: 767px) {
    .footer-bottom {
        flex-direction: column;
        align-items: flex-start;
        gap: 15px;
    }

    .footer-bottom-links {
        flex-wrap: wrap;
        justify-content: flex-start;
        gap: 12px 18px;
    }
}



