/* ==========================================================================
   Builder Sections — front rendering styles (fed by :root theme variables
   from rayonner.css / ThemeService overrides)
   ========================================================================== */

.sx-container { width: min(1180px, 92%); margin-inline: auto; }
.sx-pad { padding: clamp(3rem, 7vw, 5.5rem) 0; }
.sx-pad-sm { padding: clamp(1.6rem, 4vw, 2.6rem) 0; }
.sx-tint { background: color-mix(in srgb, var(--r-navy-800) 6%, #fff); }

.sx-kicker {
    font-size: .78rem; font-weight: 600; letter-spacing: .22em;
    text-transform: uppercase; color: var(--r-gold-500); margin: 0 0 .9rem;
}

/* ── Hero ─────────────────────────────────────────────────────────────── */
.sx-hero {
    position: relative; display: flex; align-items: center;
    background: linear-gradient(115deg, var(--r-navy-900), var(--r-navy-700));
    background-size: cover; background-position: center;
    color: #fff; min-height: 420px;
}
.sx-hero-full { min-height: max(94vh, 700px); }
.sx-hero-large { min-height: 640px; }
.sx-hero-compact { min-height: 420px; }
.sx-hero-bg { position: absolute; z-index: 0; inset: 0; overflow: hidden; }
.sx-hero-bg img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sx-hero-overlay::before {
    content: ""; position: absolute; z-index: 1; inset: 0;
    background: linear-gradient(180deg, rgba(8,48,36,.62), rgba(8,48,36,.45));
}
.sx-hero-inner { position: relative; z-index: 2; padding: clamp(6rem, 14vh, 9rem) 0 clamp(3.5rem, 9vh, 6rem); max-width: 780px; }
.sx-hero-center .sx-hero-inner { margin-inline: auto; text-align: center; }
.sx-hero-heading {
    font-family: var(--r-font-display); font-size: clamp(2.1rem, 4.6vw, 3.7rem);
    line-height: 1.08; margin: 0 0 1.1rem; font-weight: 600;
    color: #fff; /* explicit: a bare h1's rayonner.css ink color beats .sx-hero inheritance */
}
.sx-hero-sub { font-size: clamp(1rem, 1.5vw, 1.18rem); color: rgba(255,255,255,.82); margin: 0 0 1.8rem; max-width: 640px; }
.sx-hero-center .sx-hero-sub { margin-inline: auto; }

/* ── Buttons ─────────────────────────────────────────────────────────── */
.sx-btn {
    display: inline-block; background: var(--r-gold-500); color: var(--r-navy-900);
    font-weight: 600; font-size: .95rem; padding: .95em 1.9em;
    border-radius: 999px; text-decoration: none; transition: transform .2s ease, background .2s ease;
}
.sx-btn:hover { background: var(--r-gold-400); transform: translateY(-2px); }

/* ── Section head group ───────────────────────────────────────────────── */
.sx-head { max-width: 680px; margin: 0 auto clamp(2rem, 5vw, 3.2rem); text-align: center; }
.sx-head h2, .sx-split-body h2, .sx-cta h2, .sx-strip h2 {
    font-family: var(--r-font-display); font-weight: 600; line-height: 1.15;
    font-size: clamp(1.7rem, 3.2vw, 2.5rem); color: var(--r-navy-800); margin: 0 0 .7rem;
}
.sx-head p { color: #5a6a7a; font-size: 1.05rem; margin: 0; }

/* ── Bands ─────────────────────────────────────────────────────────────*/
.sx-band { padding: clamp(3rem, 7vw, 5rem) 0; }
.sx-band-dark { background: var(--r-navy-800); color: #fff; }
.sx-band-dark .sx-head h2 { color: #fff; }
.sx-band-dark .sx-head p { color: rgba(255,255,255,.7); }
.sx-band-gold { background: linear-gradient(115deg, var(--r-gold-500), var(--r-gold-600)); color: var(--r-navy-900); }
.sx-band-gold .sx-head h2 { color: var(--r-navy-900); }
.sx-band-light { background: color-mix(in srgb, var(--r-navy-800) 5%, #fff); }

/* ── Stats ─────────────────────────────────────────────────────────────*/
.sx-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.2rem; text-align: center; }
.sx-stat-value { font-family: var(--r-font-display); font-size: clamp(2rem, 4vw, 3rem); font-weight: 700; }
.sx-stat-value small { font-size: .55em; color: var(--r-gold-500); margin-left: .1em; }
.sx-band-dark .sx-stat-label { color: rgba(255,255,255,.82); opacity: 1; }
.sx-band-gold .sx-stat-label { color: rgba(10,61,46,.78); opacity: 1; }
.sx-stat-label { margin-top: .3rem; font-size: .92rem; letter-spacing: .04em; color: #4c5b69; }
@media (max-width: 767px) { .sx-stats { grid-template-columns: repeat(2, 1fr); } }

/* ── Features ──────────────────────────────────────────────────────────*/
.sx-features { display: grid; gap: 1.4rem; }
.sx-cols-2 { grid-template-columns: repeat(2, 1fr); }
.sx-cols-3 { grid-template-columns: repeat(3, 1fr); }
.sx-cols-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 991px) { .sx-cols-3, .sx-cols-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 575px) { .sx-cols-2, .sx-cols-3, .sx-cols-4 { grid-template-columns: 1fr; } }
.sx-features-cards .sx-feature {
    background: #fff; border: 1px solid var(--r-line, #e7e3da); border-radius: var(--r-radius);
    padding: 1.9rem 1.6rem; transition: transform .25s ease, box-shadow .25s ease;
}
.sx-features-cards .sx-feature:hover { transform: translateY(-4px); box-shadow: 0 18px 40px rgba(8,48,36,.09); }
.sx-features-minimal .sx-feature { padding: .6rem .4rem; }
.sx-feature-icon {
    width: 52px; height: 52px; border-radius: 14px; display: grid; place-items: center;
    background: color-mix(in srgb, var(--r-gold-500) 15%, #fff); color: var(--r-gold-600);
    margin-bottom: 1.1rem;
}
.sx-feature-icon svg { width: 26px; height: 26px; }
.sx-feature h3 { font-family: var(--r-font-display); font-size: 1.2rem; color: var(--r-navy-800); margin: 0 0 .5rem; }
.sx-feature p { color: #5a6a7a; font-size: .95rem; line-height: 1.65; margin: 0; }

/* ── Split (image + text) ───────────────────────────────────────────────*/
.sx-split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 5vw, 4.5rem); align-items: center; }
.sx-split-left .sx-split-media { order: -1; }
.sx-split-right .sx-split-media { order: 2; }
@media (max-width: 767px) { .sx-split { grid-template-columns: 1fr; } .sx-split-right .sx-split-media { order: 0; } }
.sx-split-media img { width: 100%; border-radius: var(--r-radius); display: block; box-shadow: 0 24px 60px rgba(8,48,36,.14); }
.sx-split-body h2 { margin-top: 0; }
.sx-split-body .sx-richtext { margin-bottom: 1.4rem; }

/* ── Cards ─────────────────────────────────────────────────────────────*/
.sx-cards { display: grid; gap: 1.5rem; }
.sx-card {
    background: #fff; border: 1px solid var(--r-line, #e7e3da); border-radius: var(--r-radius);
    overflow: hidden; display: flex; flex-direction: column; transition: transform .25s ease, box-shadow .25s ease;
}
.sx-card:hover { transform: translateY(-4px); box-shadow: 0 18px 44px rgba(8,48,36,.10); }
.sx-card-media img { width: 100%; aspect-ratio: 16/10; object-fit: cover; display: block; }
.sx-card-body { padding: 1.4rem 1.4rem 1.6rem; flex: 1; }
.sx-card-body h3 { font-family: var(--r-font-display); font-size: 1.25rem; color: var(--r-navy-800); margin: 0 0 .5rem; }
.sx-card-body p { color: #5a6a7a; font-size: .94rem; line-height: 1.65; margin: 0 0 .8rem; }
.sx-link { color: var(--r-gold-600); font-weight: 600; font-size: .92rem; text-decoration: none; }
.sx-link:hover { color: var(--r-gold-500); }

/* ── CTA panel ─────────────────────────────────────────────────────────*/
.sx-cta { border-radius: calc(var(--r-radius) + 8px); padding: clamp(2.6rem, 6vw, 4rem) clamp(1.6rem, 4vw, 4rem); }
.sx-cta-center { text-align: center; }
.sx-cta-dark { background: var(--r-navy-800); color: #fff; }
.sx-cta-dark h2 { color: #fff; }
.sx-cta-dark p { color: rgba(255,255,255,.78); }
.sx-cta-gold { background: linear-gradient(115deg, var(--r-gold-500), var(--r-gold-600)); color: var(--r-navy-900); }
.sx-cta-gold h2 { color: var(--r-navy-900); }
.sx-cta-gold p { color: rgba(8,48,36,.78); }
.sx-cta-gold .sx-btn { background: var(--r-navy-900); color: #fff; }
.sx-cta-gold .sx-btn:hover { background: var(--r-navy-700); }
.sx-cta-light { background: color-mix(in srgb, var(--r-navy-800) 6%, #fff); }
.sx-cta p { font-size: 1.06rem; margin: 0 0 1.6rem; }

/* ── Rich text ─────────────────────────────────────────────────────────*/
.sx-width-narrow { max-width: 760px; }
.sx-width-normal { max-width: 980px; }
.sx-richtext { color: #41505f; line-height: 1.8; font-size: 1.02rem; }
.sx-richtext h3 { font-family: var(--r-font-display); color: var(--r-navy-800); margin: 1.6em 0 .5em; font-size: 1.35rem; }
.sx-richtext h4 { font-family: var(--r-font-display); color: var(--r-navy-800); margin: 1.4em 0 .4em; }
.sx-richtext p { margin: 0 0 1em; }
.sx-richtext ul, .sx-richtext ol { margin: 0 0 1em 1.2em; }
.sx-richtext a { color: var(--r-gold-600); }

/* ── Logos ─────────────────────────────────────────────────────────────*/
.sx-logos { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 2.2rem; }
.sx-logos img { max-height: 44px; width: auto; filter: grayscale(1); opacity: .75; transition: .25s; }
.sx-logos img:hover { filter: none; opacity: 1; }
.sx-logos-heading { text-align: center; color: #75828f; font-size: .85rem; letter-spacing: .16em; text-transform: uppercase; margin-bottom: 1.6rem; }

/* ── Quote ─────────────────────────────────────────────────────────────*/
.sx-quote { margin: 0; text-align: center; }
.sx-quote p { font-family: var(--r-font-display); font-size: clamp(1.4rem, 2.8vw, 2rem); font-style: italic; color: var(--r-navy-800); line-height: 1.4; margin: 0 0 1.4rem; }
.sx-quote footer strong { display: block; color: var(--r-gold-600); font-size: 1rem; }
.sx-quote footer span { color: #75828f; font-size: .9rem; }

/* ── Contact strip ─────────────────────────────────────────────────────*/
.sx-strip { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.2rem; }
.sx-strip .sx-strip h2, .sx-strip h2 { color: #fff; margin: 0; font-size: clamp(1.4rem, 2.6vw, 2rem); }
.sx-strip-contacts { display: flex; flex-wrap: wrap; gap: 1.6rem; }
.sx-strip-contacts a { display: inline-flex; align-items: center; gap: .6rem; color: #fff; text-decoration: none; font-weight: 600; }
.sx-strip-contacts a:hover { color: var(--r-gold-400); }
.sx-strip-contacts svg { width: 20px; height: 20px; color: var(--r-gold-500); }

/* ── Placeholder notice (builder only) ──────────────────────────────────*/
.sx-ph {
    border: 1.5px dashed #c3ccd4; border-radius: var(--r-radius); color: #8a97a3;
    text-align: center; padding: 2.2rem 1.2rem; font-size: .92rem; grid-column: 1 / -1; width: 100%;
}

/* ==========================================================================
   Navigation — dropdowns & mega menus (extends rayonner.css .r-nav)
   ========================================================================== */
.r-nav-item { position: relative; }
/* Hover bridge (Phase 15): the dropdown sits 10px below the nav item; without
   an invisible connector the pointer leaves the hover zone while travelling
   to the panel and it snaps shut. The bridge keeps :hover alive across the
   gap. Desktop only — mobile nav is in-flow (position: static). */
@media (min-width: 992px) {
    .r-nav-item::after {
        content: ""; position: absolute; left: -6px; right: -6px; top: 100%;
        height: 14px; display: none;
    }
    .r-nav-item:hover::after, .r-nav-item:focus-within::after { display: block; }
}
.r-nav-parent {
    cursor: pointer; display: inline-flex; align-items: center; gap: .3rem;
    /* Match .r-nav a in rayonner.css — spans get no link colour otherwise. */
    color: rgba(255, 255, 255, .88); font-size: .93rem; font-weight: 500;
    letter-spacing: .02em; padding-block: .4rem; white-space: nowrap;
}
.r-nav-item:hover .r-nav-parent, .r-nav-parent.active { color: #fff; }
.r-nav-parent i {
    border: solid currentColor; border-width: 0 1.5px 1.5px 0;
    display: inline-block; padding: 3px; transform: rotate(45deg) translateY(-2px); transition: transform .2s;
}
.r-nav-item:hover .r-nav-parent i, .r-nav-item:focus-within .r-nav-parent i { transform: rotate(225deg) translateY(0); }
.r-drop {
    position: absolute; top: calc(100% + 10px); left: 0; min-width: 230px;
    background: #fff; border-radius: 12px; box-shadow: 0 24px 60px rgba(8,48,36,.16);
    padding: .6rem; display: none; flex-direction: column; z-index: 120;
}
.r-drop a { color: var(--r-ink); padding: .6rem .9rem; border-radius: 8px; font-size: .95rem; text-decoration: none; }
.r-drop a:hover, .r-drop a.active { background: color-mix(in srgb, var(--r-navy-800) 7%, #fff); color: var(--r-navy-800); }
.r-nav-item:hover > .r-drop, .r-nav-item:focus-within > .r-drop { display: flex; }
.r-mega {
    position: absolute; top: calc(100% + 10px); left: 50%; transform: translateX(-50%);
    width: min(720px, 92vw); background: #fff; border-radius: 16px;
    box-shadow: 0 24px 60px rgba(8,48,36,.16); padding: 1.4rem 1.6rem; display: none; z-index: 120;
}
.r-has-mega:hover .r-mega, .r-has-mega:focus-within .r-mega { display: block; }
.r-mega-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1.2rem; }
.r-mega-col { display: flex; flex-direction: column; }
.r-mega-head {
    font-weight: 700; color: var(--r-navy-800); font-size: .82rem; letter-spacing: .08em;
    text-transform: uppercase; padding-bottom: .55rem; margin-bottom: .55rem;
    border-bottom: 2px solid var(--r-gold-500); text-decoration: none;
}
.r-mega-col a:not(.r-mega-head) { color: #55636f; padding: .3rem 0; font-size: .93rem; text-decoration: none; }
.r-mega-col a:not(.r-mega-head):hover { color: var(--r-gold-600); }

/* Mobile nav: dropdowns collapse inline */
@media (max-width: 991px) {
    .r-drop, .r-mega { position: static; transform: none; width: 100%; box-shadow: none; display: none; padding: .3rem 0 .6rem 1rem; background: transparent; }
    .r-nav-item.r-open > .r-drop, .r-nav-item.r-open > .r-mega { display: block; }
    .r-mega-grid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Phase 4 — Projects & Services portfolio system (pj-* / sv-*)
   Consumes Theme Builder tokens; used by front module pages AND the
   dynamic project_grid / service_list builder sections (preview parity).
   ========================================================================== */

.pj-filters { display: flex; flex-wrap: wrap; gap: .55rem; margin-bottom: 2.2rem; }
.pj-filters .pj-chip {
    display: inline-flex; align-items: center; gap: .4rem; padding: .5rem 1rem;
    border: 1px solid #dfe5ec; border-radius: 999px; font-size: .86rem; font-weight: 600;
    color: #42566b; text-decoration: none; background: #fff; transition: all .18s ease;
}
.pj-filters .pj-chip:hover { border-color: var(--r-gold-500); color: var(--r-navy-800); }
.pj-filters .pj-chip.is-active {
    background: var(--r-navy-800); border-color: var(--r-navy-800); color: #fff;
}
.pj-filters .pj-chip .pj-count {
    font-size: .72rem; font-weight: 700; opacity: .65;
}
.pj-filters-sep { width: 1px; align-self: stretch; background: #e3e8ee; margin: 0 .35rem; }

.pj-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.6rem; }
.pj-grid-cta { margin-top: 2rem; text-align: center; }

.pj-card {
    background: #fff; border: 1px solid #e7ebf0; border-radius: var(--r-radius, 14px);
    overflow: hidden; display: flex; flex-direction: column;
    transition: transform .22s ease, box-shadow .22s ease;
}
.pj-card:hover { transform: translateY(-4px); box-shadow: 0 18px 44px rgba(8, 48, 36, .12); }
.pj-card-media { position: relative; display: block; aspect-ratio: 16 / 10; overflow: hidden; background: #0c1c2e; }
.pj-card-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.pj-card:hover .pj-card-media img { transform: scale(1.05); }

.pj-status {
    position: absolute; top: .8rem; left: .8rem; padding: .28rem .7rem; border-radius: 999px;
    font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #fff;
}
.pj-status-upcoming  { background: #8a6d1f; }
.pj-status-ongoing   { background: #1e6b3a; }
.pj-status-completed { background: var(--r-navy-800); }
.pj-status-on_hold   { background: #8a3b2e; }
.pj-featured {
    position: absolute; top: .8rem; right: .8rem; padding: .28rem .7rem; border-radius: 999px;
    font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
    background: var(--r-gold-500); color: var(--r-navy-900);
}

.pj-card-body { padding: 1.2rem 1.3rem 1.35rem; display: flex; flex-direction: column; gap: .45rem; flex: 1; }
.pj-cat {
    font-size: .72rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;
    color: var(--r-gold-600);
}
.pj-card-body h3 { margin: 0; font-family: var(--r-font-display); font-size: 1.22rem; line-height: 1.28; }
.pj-card-body h3 a { color: var(--r-navy-900); text-decoration: none; }
.pj-card-body h3 a:hover { color: var(--r-gold-600); }
.pj-loc { margin: 0; font-size: .85rem; color: #6b7c8e; }
.pj-ex  { margin: 0; font-size: .92rem; color: #42566b; line-height: 1.55; }
.pj-price { margin: .2rem 0 0; font-weight: 800; color: var(--r-navy-800); font-size: 1rem; }
.pj-more {
    margin-top: auto; padding-top: .7rem; font-weight: 700; font-size: .88rem;
    color: var(--r-gold-600); text-decoration: none;
}
.pj-more:hover { color: var(--r-navy-800); }

/* ── Project detail ── */
.pj-hero {
    position: relative; color: #fff; background: var(--r-navy-900);
    min-height: 520px; display: flex; align-items: center; padding: 5.5rem 0 4.6rem; overflow: hidden;
    isolation: isolate;
}
.pj-hero::after {
    /* Dark emerald wash so white hero text stays readable on any photo */
    content: ""; position: absolute; inset: 0; z-index: -1;
    background: linear-gradient(180deg, rgba(4,32,24,.42) 0%, rgba(7,48,34,.66) 55%, rgba(6,42,32,.82) 100%);
}
.pj-hero-bg { position: absolute; inset: 0; z-index: -2; }
.pj-hero-bg img { width: 100%; height: 100%; object-fit: cover; }
.pj-hero-inner { position: relative; }
@media (max-width: 767.98px) { .pj-hero { min-height: 420px; } }
.pj-hero .sx-breadcrumb { color: rgba(255,255,255,.65); font-size: .85rem; margin-bottom: .9rem; }
.pj-hero .sx-breadcrumb a { color: var(--r-gold-400); text-decoration: none; }
.pj-hero h1 { font-family: var(--r-font-display); font-size: clamp(1.9rem, 4vw, 3rem); margin: 0 0 .6rem; color: #fff; }
.pj-hero .pj-hero-meta { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; color: rgba(255,255,255,.85); }
.pj-hero .pj-status { position: static; display: inline-block; }
.pj-hero .pj-featured { position: static; display: inline-block; }
.pj-hero-ex { margin-top: .9rem; max-width: 56ch; color: rgba(255,255,255,.82); line-height: 1.6; }

.pj-facts {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 1px;
    background: #e7ebf0; border: 1px solid #e7ebf0; border-radius: var(--r-radius, 14px);
    overflow: hidden; margin: -2.2rem auto 0; position: relative; z-index: 2; max-width: 1140px;
}
.pj-fact { background: #fff; padding: 1rem 1.2rem; }
.pj-fact .k { font-size: .72rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; color: #7a8a9b; }
.pj-fact .v { margin-top: .25rem; font-weight: 700; color: var(--r-navy-900); }

/* Type badge (hero + cards) */
.pj-type-badge {
    padding: .28rem .7rem; border-radius: 999px; font-size: .68rem; font-weight: 800;
    letter-spacing: .08em; text-transform: uppercase;
    background: rgba(201, 162, 39, .16); color: var(--r-gold-400); border: 1px solid rgba(201, 162, 39, .45);
}
.pj-type-inline { color: var(--r-navy-700); }

/* Housing / plot tables */
.pj-table-wrap { overflow-x: auto; border: 1px solid #e7ebf0; border-radius: var(--r-radius, 14px); background: #fff; }
.pj-table { width: 100%; border-collapse: collapse; font-size: .94rem; min-width: 420px; }
.pj-table th, .pj-table td { text-align: left; padding: .8rem 1.1rem; border-bottom: 1px solid #eef1f5; }
.pj-table thead th { font-size: .74rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #7a8a9b; background: #f7f9fb; }
.pj-table .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.pj-table tbody tr:last-child td { border-bottom: 0; }
.pj-table tbody tr:hover td { background: #fafcf9; }
.pj-table tfoot th, .pj-table tfoot td { background: var(--r-navy-900); color: #fff; border-bottom: 0; font-size: .95rem; }

/* Price trend card */
.pj-trend {
    display: grid; grid-template-columns: 1.7fr 1fr; gap: 0; border-radius: var(--r-radius, 14px); overflow: hidden;
    border: 1px solid rgba(10, 61, 46, .18); background: linear-gradient(120deg, #f3faf6, #eef6f1);
}
@media (max-width: 767.98px) { .pj-trend { grid-template-columns: 1fr; } }
.pj-trend-main { padding: 1.4rem 1.6rem; }
.pj-trend-label { font-size: .76rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--r-emerald-800, #0a3d2e); }
.pj-trend-figures { display: flex; align-items: baseline; gap: 1rem; margin-top: .55rem; }
.pj-trend-pct { font-family: var(--r-font-display); font-size: clamp(2rem, 4vw, 2.9rem); font-weight: 800; color: var(--r-emerald-700, #14573f); line-height: 1; }
.pj-trend-delta { font-size: 1.15rem; font-weight: 800; color: var(--r-gold-600); }
.pj-trend-range { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem; margin-top: .8rem; font-size: .92rem; font-weight: 700; color: var(--r-navy-800); }
.pj-trend-range svg { color: var(--r-emerald-700, #14573f); }
.pj-trend-range em { font-style: normal; font-weight: 500; color: #7a8a9b; font-size: .82rem; }
.pj-trend-side {
    background: linear-gradient(150deg, var(--r-emerald-800, #0a3d2e), var(--r-emerald-600, #14573f)); color: #fff;
    padding: 1.4rem 1.6rem; display: flex; flex-direction: column; justify-content: center; gap: .6rem;
}
.pj-trend-clock { display: inline-flex; align-items: center; gap: .5rem; font-weight: 800; font-size: 1.05rem; color: var(--r-gold-400); }
.pj-trend-note { font-size: .8rem; color: rgba(255, 255, 255, .72); line-height: 1.5; }

.pj-section { padding: 2.6rem 0 0; }
.pj-section:last-of-type { padding-bottom: 3.4rem; }
.pj-section h2 { font-family: var(--r-font-display); font-size: 1.55rem; color: var(--r-navy-900); margin: 0 0 1.1rem; }
.pj-section h2 .pj-h2-note { font-size: .85rem; font-weight: 600; color: #7a8a9b; font-family: var(--r-font-body, inherit); }

.pj-body { color: #39485c; line-height: 1.75; font-size: .98rem; }
.pj-body img { max-width: 100%; border-radius: 10px; }

.pj-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.pj-gallery figure { margin: 0; border-radius: 10px; overflow: hidden; border: 1px solid #e7ebf0; }
.pj-gallery img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.pj-gallery figcaption { padding: .5rem .8rem; font-size: .8rem; color: #6b7c8e; background: #fff; }

.pj-video { position: relative; aspect-ratio: 16 / 9; border-radius: 12px; overflow: hidden; background: #000; margin-bottom: 1rem; }
.pj-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.pj-video-file { width: 100%; border-radius: 12px; margin-bottom: 1rem; background: #000; }

.pj-masterplan img { width: 100%; border-radius: 12px; border: 1px solid #e7ebf0; }
.pj-map { border-radius: 12px; overflow: hidden; border: 1px solid #e7ebf0; }
.pj-map iframe { width: 100%; height: 380px; border: 0; display: block; }

.pj-amenities { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: .8rem; }
.pj-amenity {
    display: flex; align-items: center; gap: .65rem; background: #f7f9fb;
    border: 1px solid #e7ebf0; border-radius: 10px; padding: .75rem .9rem;
    font-size: .9rem; font-weight: 600; color: var(--r-navy-800);
}
.pj-amenity svg { width: 18px; height: 18px; color: var(--r-gold-600); flex: none; }

.pj-timeline { position: relative; margin-left: .55rem; padding-left: 1.6rem; border-left: 2px solid #e7ebf0; display: grid; gap: 1.4rem; }
.pj-tl-item { position: relative; }
.pj-tl-item::before {
    content: ""; position: absolute; left: -2.02rem; top: .3rem; width: .8rem; height: .8rem;
    border-radius: 50%; background: #c3ccd6; border: 2px solid #fff; box-shadow: 0 0 0 2px #e7ebf0;
}
.pj-tl-item.is-done::before { background: #1e6b3a; box-shadow: 0 0 0 2px #bfe3cd; }
.pj-tl-item.is-in_progress::before { background: var(--r-gold-500); box-shadow: 0 0 0 2px #f0e2bb; }
.pj-tl-head { display: flex; flex-wrap: wrap; gap: .6rem; align-items: baseline; }
.pj-tl-head h3 { margin: 0; font-size: 1.05rem; color: var(--r-navy-900); }
.pj-tl-date { font-size: .78rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--r-gold-600); }
.pj-tl-status { font-size: .7rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; padding: .15rem .55rem; border-radius: 999px; }
.pj-tl-status.is-done { background: #e2f3e9; color: #1e6b3a; }
.pj-tl-status.is-in_progress { background: #faf0d7; color: #8a6d1f; }
.pj-tl-status.is-pending { background: #eef1f5; color: #6b7c8e; }
.pj-tl-item p { margin: .35rem 0 0; color: #42566b; font-size: .92rem; line-height: 1.6; }

.pj-progress { display: grid; gap: 1.1rem; }
.pj-prog-head { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; }
.pj-prog-head h3 { margin: 0; font-size: .98rem; color: var(--r-navy-900); }
.pj-prog-head .pj-prog-pct { font-weight: 800; color: var(--r-gold-600); }
.pj-prog-bar { height: 8px; border-radius: 999px; background: #e9edf2; overflow: hidden; margin-top: .4rem; }
.pj-prog-bar > span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--r-gold-500), var(--r-gold-600)); }
.pj-prog-note { margin: .4rem 0 0; font-size: .88rem; color: #55636f; line-height: 1.55; }
.pj-prog-date { font-size: .75rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: #8b99a8; }

.pj-downloads { display: grid; gap: .7rem; }
.pj-download {
    display: flex; align-items: center; gap: .8rem; padding: .85rem 1.05rem;
    border: 1px solid #e7ebf0; border-radius: 10px; text-decoration: none;
    color: var(--r-navy-800); font-weight: 700; font-size: .92rem; background: #fff;
    transition: border-color .18s ease;
}
.pj-download:hover { border-color: var(--r-gold-500); }
.pj-download svg { width: 18px; height: 18px; color: var(--r-gold-600); flex: none; }
.pj-download .pj-dl-hint { margin-left: auto; font-size: .75rem; font-weight: 700; color: #8b99a8; text-transform: uppercase; letter-spacing: .07em; }

/* ── Services ── */
.sv-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.6rem; }
.sv-card {
    background: #fff; border: 1px solid #e7ebf0; border-radius: var(--r-radius, 14px);
    padding: 1.6rem 1.5rem; display: flex; flex-direction: column; gap: .6rem;
    transition: transform .22s ease, box-shadow .22s ease;
}
.sv-card:hover { transform: translateY(-4px); box-shadow: 0 18px 44px rgba(8, 48, 36, .12); }
.sv-card-icon {
    width: 52px; height: 52px; border-radius: 14px; display: grid; place-items: center;
    background: linear-gradient(135deg, var(--r-navy-800), var(--r-navy-700)); color: var(--r-gold-400);
}
.sv-card-icon svg { width: 26px; height: 26px; }
.sv-card h3 { margin: 0; font-family: var(--r-font-display); font-size: 1.2rem; }
.sv-card h3 a { color: var(--r-navy-900); text-decoration: none; }
.sv-card h3 a:hover { color: var(--r-gold-600); }
.sv-card p { margin: 0; color: #42566b; font-size: .92rem; line-height: 1.6; }

.sv-banner { position: relative; border-radius: var(--r-radius, 14px); overflow: hidden; margin-bottom: 2rem; background: var(--r-navy-900); }
.sv-banner img { width: 100%; aspect-ratio: 21 / 7; object-fit: cover; display: block; opacity: .9; }
.sv-head { display: flex; gap: 1.1rem; align-items: center; margin-bottom: 1.2rem; }
.sv-head .sv-card-icon { width: 64px; height: 64px; border-radius: 16px; flex: none; }
.sv-head .sv-card-icon svg { width: 32px; height: 32px; }
.sv-head h1 { margin: 0; font-family: var(--r-font-display); color: var(--r-navy-900); font-size: clamp(1.7rem, 3.4vw, 2.4rem); }
.sv-lede { font-size: 1.08rem; color: #39485c; line-height: 1.7; max-width: 62ch; }

.pj-empty {
    border: 1px dashed #cfd8e2; border-radius: var(--r-radius, 14px); padding: 3rem 1.5rem;
    text-align: center; color: #6b7c8e; background: #fbfcfe;
}
.pj-empty strong { display: block; color: var(--r-navy-800); margin-bottom: .3rem; }

@media (max-width: 991px) {
    .pj-grid, .sv-grid, .pj-gallery { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
    .pj-grid, .sv-grid, .pj-gallery, .pj-amenities { grid-template-columns: 1fr; }
    .pj-facts { grid-template-columns: repeat(2, 1fr); margin-top: -1.2rem; }
    .pj-hero { padding: 3.6rem 0 3rem; }
}

/* ── Form Renderer (rf-*) — Phase 5 ─────────────────────────────────── */
.rf { --rf-radius: 12px; }
.rf-card { background: #fff; border: 1px solid var(--r-line); border-radius: 16px; padding: clamp(1.2rem, 3vw, 2rem); box-shadow: 0 18px 45px rgba(8, 48, 36, .07); }
.rf-plain { padding: 0; }
.rf-result { border-radius: 10px; padding: .9rem 1.1rem; margin-bottom: 1rem; font-weight: 600; }
.rf-ok { background: #e7f6ec; color: #1e7e3f; border: 1px solid #bfe6cb; }
.rf-err { background: #fceceb; color: #b4342a; border: 1px solid #f3c6c2; }

.rf-steps-nav { display: flex; gap: .5rem; list-style: none; margin: 0 0 1.4rem; padding: 0; flex-wrap: wrap; }
.rf-step-nav { display: flex; align-items: center; gap: .5rem; font-size: .85rem; font-weight: 600; color: var(--r-muted); padding: .4rem .8rem; border-radius: 999px; border: 1px solid var(--r-line); }
.rf-step-nav span { display: inline-grid; place-items: center; width: 1.5rem; height: 1.5rem; border-radius: 50%; background: #f0ede5; color: var(--r-navy-800); font-size: .78rem; }
.rf-step-nav.is-current { color: var(--r-navy-800); border-color: var(--r-gold-500); }
.rf-step-nav.is-current span { background: var(--r-gold-500); color: #fff; }
.rf-step-nav.is-done span { background: #1e7e3f; color: #fff; }

.rf-step { border: 0; padding: 0; margin: 0; display: none; }
.rf-step.is-active { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem 1.2rem; }
.rf:not([data-rf-multi="1"]) .rf-steps-nav { display: none; }
.rf-heading { grid-column: 1 / -1; font-family: var(--r-font-display, "Playfair Display", Georgia, serif); font-size: 1.35rem; color: var(--r-navy-800); margin: .4rem 0 0; }
.rf-paragraph { grid-column: 1 / -1; color: var(--r-body); }
.rf-field { min-width: 0; }
.rf-field:not(.rf-half) { grid-column: 1 / -1; }
.rf-half { grid-column: span 1; }
.rf-label { display: block; font-weight: 600; font-size: .92rem; color: var(--r-navy-800); margin-bottom: .35rem; }
.rf-req { color: #b4342a; }
.rf-input { width: 100%; padding: .72rem .9rem; border: 1px solid var(--r-line); border-radius: var(--rf-radius); font: inherit; color: var(--r-ink); background: #fff; transition: border-color .2s, box-shadow .2s; }
.rf-input:focus { outline: none; border-color: var(--r-gold-500); box-shadow: 0 0 0 3px rgba(201, 164, 92, .18); }
.rf-choices { display: grid; gap: .45rem; }
.rf-choice, .rf-consent { display: flex; gap: .55rem; align-items: flex-start; font-size: .95rem; color: var(--r-body); }
.rf-choice input, .rf-consent input { margin-top: .2rem; accent-color: var(--r-gold-600); }
.rf-choices > .rf-label { margin-bottom: .1rem; }
.rf-help { font-size: .8rem; color: var(--r-muted); margin-top: .3rem; }
.rf-error { font-size: .82rem; color: #b4342a; margin-top: .3rem; font-weight: 600; }
.rf-hp { position: absolute; left: -9999px; top: -9999px; height: 1px; width: 1px; overflow: hidden; }
.rf-step-actions { grid-column: 1 / -1; display: flex; justify-content: space-between; gap: 1rem; margin-top: .4rem; }
.rf-btn-prev { background: transparent; border: 1px solid var(--r-line); color: var(--r-body); }
.rf-btn-prev:hover { background: #f5f2ea; transform: none; }
.rf-submit { margin-top: 1.2rem; display: flex; align-items: center; gap: 1rem; }
.rf-submit .sx-btn[disabled] { opacity: .55; pointer-events: none; }
.rf-sending { color: var(--r-muted); font-size: .9rem; }

@media (max-width: 640px) {
    .rf-step.is-active { grid-template-columns: 1fr; }
    .rf-half { grid-column: 1 / -1; }
}

/* ==========================================================================
   Phase 6 — Content Modules (blog, testimonials, team, partners, careers,
   FAQs, downloads, gallery, search). Shared with builder dynamic sections.
   ========================================================================== */

.r-search-link { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 50%; color: var(--r-navy-800); transition: .2s var(--r-ease); }
.r-search-link:hover { background: color-mix(in srgb, var(--r-gold-500) 16%, #fff); color: var(--r-gold-600); }

/* ── Blog cards (bc-) ───────────────────────────────────────────────── */
.bc-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.bc-card { background: var(--r-card); border: 1px solid var(--r-line); border-radius: var(--r-radius); overflow: hidden; display: flex; flex-direction: column; box-shadow: var(--r-shadow-sm); transition: transform .28s var(--r-ease), box-shadow .28s var(--r-ease); }
.bc-card:hover { transform: translateY(-4px); box-shadow: var(--r-shadow-md); }
.bc-thumb { display: block; aspect-ratio: 16/9; overflow: hidden; background: linear-gradient(115deg, var(--r-navy-900), var(--r-navy-700)); }
.bc-thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--r-ease); }
.bc-card:hover .bc-thumb img { transform: scale(1.05); }
.bc-thumb-ph { display: block; width: 100%; height: 100%; background:
    radial-gradient(circle at 78% 22%, color-mix(in srgb, var(--r-gold-500) 34%, transparent) 0 90px, transparent 92px),
    linear-gradient(115deg, var(--r-navy-900), var(--r-navy-600)); }
.bc-body { padding: 1.15rem 1.25rem 1.3rem; display: flex; flex-direction: column; gap: .55rem; flex: 1; }
.bc-meta { display: flex; gap: .8rem; align-items: center; font-size: .78rem; color: var(--r-muted); letter-spacing: .04em; }
.bc-cat { background: color-mix(in srgb, var(--r-gold-500) 15%, #fff); color: var(--r-gold-600); font-weight: 600; text-transform: uppercase; font-size: .68rem; letter-spacing: .1em; padding: .22rem .55rem; border-radius: 99px; }
.bc-cat-hero { display: inline-block; margin-bottom: .8rem; text-decoration: none; }
.bc-body h3 { font-family: var(--r-font-display); font-size: 1.22rem; line-height: 1.3; margin: 0; color: var(--r-navy-800); }
.bc-body h3 a { color: inherit; text-decoration: none; }
.bc-body h3 a:hover { color: var(--r-gold-600); }
.bc-body p { margin: 0; color: var(--r-body); font-size: .92rem; line-height: 1.65; flex: 1; }
.bc-more { color: var(--r-gold-600); font-weight: 600; font-size: .85rem; text-decoration: none; margin-top: .2rem; }
.bc-more:hover { text-decoration: underline; }

.bc-search { display: flex; gap: .7rem; max-width: 560px; margin: 0 auto 1.6rem; }
.bc-search input[type="search"] { flex: 1; border: 1px solid var(--r-line); border-radius: 99px; padding: .68rem 1.2rem; font: inherit; background: var(--r-card); color: var(--r-ink); }
.bc-search input[type="search"]:focus { outline: 2px solid color-mix(in srgb, var(--r-gold-500) 55%, #fff); border-color: var(--r-gold-500); }
.bc-search .sx-btn { border: none; cursor: pointer; }
.bc-result-note { text-align: center; color: var(--r-muted); font-size: .9rem; margin: 0 0 1.4rem; }
.bc-result-note a { color: var(--r-gold-600); }
.bc-pager { display: flex; justify-content: center; align-items: center; gap: 1rem; margin-top: 2.2rem; }
.bc-pager-info { color: var(--r-muted); font-size: .85rem; }

/* ── Article page ───────────────────────────────────────────────────── */
.bc-hero-meta { display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; }
.bc-article { max-width: 780px; margin: 0 auto; }
.bc-cover { width: 100%; border-radius: var(--r-radius-lg); box-shadow: var(--r-shadow-md); margin-bottom: 1.8rem; aspect-ratio: 16/9; object-fit: cover; }
.bc-content { font-size: 1.06rem; }
.bc-tags { display: flex; flex-wrap: wrap; gap: .55rem; margin: 2rem 0 0; }
.bc-back { margin: 2.2rem 0 0; }
.bc-back a { color: var(--r-gold-600); text-decoration: none; font-weight: 600; font-size: .92rem; }
.bc-back a:hover { text-decoration: underline; }
.bc-related { margin-top: 3.4rem; }
.bc-related h2 { font-family: var(--r-font-display); color: var(--r-navy-800); font-size: 1.6rem; margin: 0 0 1.3rem; }

/* ── Testimonials (ts-) ─────────────────────────────────────────────── */
.ts-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.ts-card { margin: 0; background: var(--r-card); border: 1px solid var(--r-line); border-radius: var(--r-radius); padding: 1.5rem 1.5rem 1.3rem; box-shadow: var(--r-shadow-sm); display: flex; flex-direction: column; gap: .9rem; }
.ts-stars { color: var(--r-gold-500); letter-spacing: .12em; font-size: .95rem; }
.ts-stars span { opacity: .25; }
.ts-stars span.on { opacity: 1; }
.ts-card blockquote { margin: 0; font-family: var(--r-font-display); font-size: 1.05rem; line-height: 1.6; color: var(--r-navy-800); flex: 1; }
.ts-card figcaption { display: flex; gap: .8rem; align-items: center; }
.ts-avatar { width: 46px; height: 46px; border-radius: 50%; object-fit: cover; }
.ts-initials { width: 46px; height: 46px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: linear-gradient(115deg, var(--r-navy-800), var(--r-navy-600)); color: var(--r-gold-400); font-weight: 700; font-size: .85rem; letter-spacing: .04em; }
.ts-card figcaption strong { display: block; color: var(--r-ink); font-size: .92rem; }
.ts-card figcaption em { display: block; font-style: normal; color: var(--r-muted); font-size: .8rem; }

/* Carousel variant */
.ts-carousel { position: relative; }
.ts-track { display: flex; gap: 1.5rem; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; -webkit-overflow-scrolling: touch; padding-bottom: .25rem; }
.ts-track::-webkit-scrollbar { display: none; }
.ts-slide { flex: 0 0 calc((100% - 3rem) / 3); scroll-snap-align: start; display: flex; }
.ts-slide .ts-card { width: 100%; }
.ts-controls { display: flex; align-items: center; justify-content: center; gap: 1rem; margin-top: 1.4rem; }
.ts-btn { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--r-line); background: var(--r-card); color: var(--r-navy-800); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; font-size: 1.1rem; transition: background .2s ease, color .2s ease, border-color .2s ease; }
.ts-btn:hover, .ts-btn:focus-visible { background: var(--r-navy-800); color: #fff; border-color: var(--r-navy-800); }
.ts-dots { display: flex; gap: .45rem; }
.ts-dot { width: 9px; height: 9px; border-radius: 50%; border: 0; padding: 0; background: color-mix(in srgb, var(--r-navy-800) 22%, transparent); cursor: pointer; transition: background .2s ease, transform .2s ease; }
.ts-dot.on { background: var(--r-gold-500); transform: scale(1.25); }
.ts-dot:focus-visible { outline: 2px solid var(--r-gold-500); outline-offset: 2px; }
@media (max-width: 980px) { .ts-slide { flex-basis: calc((100% - 1.5rem) / 2); } }
@media (max-width: 640px) { .ts-slide { flex-basis: 88%; } }

/* Projects inside the shared snap-track carousel */
.pj-carousel .ts-slide .pj-card { width: 100%; display: flex; flex-direction: column; }
.pj-carousel .ts-controls { margin-top: 1.6rem; }

/* ── Team (tm-) ─────────────────────────────────────────────────────── */
.tm-group + .tm-group { margin-top: clamp(2.8rem, 5vw, 4.6rem); }
.tm-group-head { margin-bottom: 1.25rem; }
.tm-group-head p { margin: 0 0 .3rem; color: var(--r-gold-600); font-size: .74rem; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }
.tm-group-head h2 { margin: 0; color: var(--r-navy-900); font-family: var(--r-font-display); font-size: clamp(1.55rem, 2.5vw, 2.05rem); }
/* Leadership is intentionally two-up; the wider team uses three cards per row. */
.tm-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.4rem; }
.tm-grid-lead { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.tm-card { background: var(--r-card); border: 1px solid var(--r-line); border-radius: var(--r-radius); overflow: hidden; box-shadow: var(--r-shadow-sm); transition: transform .28s var(--r-ease), box-shadow .28s var(--r-ease); }
.tm-card:hover { transform: translateY(-4px); box-shadow: var(--r-shadow-md); }
.tm-photo { aspect-ratio: 1/1; background: linear-gradient(115deg, var(--r-navy-900), var(--r-navy-600)); display: flex; align-items: center; justify-content: center; overflow: hidden; }
.tm-photo img { width: 100%; height: 100%; object-fit: cover; }
.tm-initials { font-family: var(--r-font-display); font-size: 2.2rem; color: var(--r-gold-400); }
.tm-body { padding: 1.05rem 1.1rem 1.15rem; }
.tm-body h3 { font-family: var(--r-font-display); margin: 0 0 .25rem; font-size: 1.12rem; color: var(--r-navy-800); }
.tm-role { color: var(--r-gold-600); font-size: .78rem; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; margin-bottom: .55rem; }
.tm-body p { margin: 0 0 .7rem; font-size: .87rem; color: var(--r-body); line-height: 1.6; }
.tm-links { display: flex; flex-wrap: wrap; gap: .35rem .9rem; font-size: .78rem; }
.tm-links a { color: var(--r-muted); text-decoration: none; word-break: break-all; }
.tm-links a:hover { color: var(--r-gold-600); }
.tm-card-lg .tm-initials { font-size: 3rem; }
.tm-more { display: inline-block; margin-top: .75rem; font-weight: 700; font-size: .85rem; color: var(--r-gold-600); text-decoration: none; }
.tm-more:hover { color: var(--r-navy-800); }
@media (max-width: 820px) { .tm-grid, .tm-grid-lead { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 540px) { .tm-grid, .tm-grid-lead { grid-template-columns: 1fr; } }

/* ── Team member profile page ─────────────────────────────────────────── */
.tm-profile { display: grid; grid-template-columns: 320px 1fr; gap: 2.4rem; align-items: start; }
@media (max-width: 900px) { .tm-profile { grid-template-columns: 1fr; } }
.tm-profile-photo { border-radius: var(--r-radius); overflow: hidden; aspect-ratio: 1/1; background: linear-gradient(115deg, var(--r-navy-900), var(--r-navy-600)); display: flex; align-items: center; justify-content: center; box-shadow: var(--r-shadow-md); }
.tm-profile-photo img { width: 100%; height: 100%; object-fit: cover; }
.tm-initials-xl { font-size: 4.5rem; }
.tm-profile-card { margin-top: 1.1rem; padding: 1.1rem 1.2rem; background: var(--r-card); border: 1px solid var(--r-line); border-radius: var(--r-radius); box-shadow: var(--r-shadow-sm); }
.tm-profile-card strong { display: block; color: var(--r-navy-900); }
.tm-profile-card > span { display: block; color: var(--r-muted); font-size: .88rem; margin-top: .15rem; }
.tm-profile-links { list-style: none; margin: .8rem 0 0; padding: .8rem 0 0; border-top: 1px solid var(--r-line); display: grid; gap: .5rem; }
.tm-profile-links a { color: var(--r-body); font-size: .88rem; text-decoration: none; word-break: break-all; }
.tm-profile-links a:hover { color: var(--r-gold-600); }
.tm-back { display: inline-block; margin-top: 1rem; font-size: .86rem; font-weight: 600; color: var(--r-muted); text-decoration: none; }
.tm-back:hover { color: var(--r-navy-800); }
.tm-profile-main h2 { font-family: var(--r-font-display); color: var(--r-navy-900); font-size: 1.6rem; margin: 0 0 1rem; }
.tm-bio > :first-child { margin-top: 0; }
.tm-bio > :last-child { margin-bottom: 0; }
.tm-bio p, .tm-bio ul, .tm-bio ol { margin: 0 0 1rem; }
.tm-bio ul, .tm-bio ol { padding-left: 1.3rem; }
.tm-bio h3, .tm-bio h4 { color: var(--r-navy-800); font-family: var(--r-font-display); margin: 1.5rem 0 .6rem; }
.tm-bio a { color: var(--r-gold-600); font-weight: 600; text-decoration: underline; text-underline-offset: .14em; }
.tm-bio a:hover { color: var(--r-navy-800); }
.tm-muted { color: var(--r-muted); }
.tm-cta-mini { margin-top: 2rem; padding: 1.3rem 1.4rem; background: linear-gradient(120deg, var(--r-emerald-800, #0a3d2e), var(--r-emerald-600, #14573f)); border-radius: var(--r-radius); display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; justify-content: space-between; }
.tm-cta-mini p { margin: 0; color: rgba(255,255,255,.85); font-size: .95rem; flex: 1 1 260px; }

/* ── Partners (pt-) ─────────────────────────────────────────────────── */
.pt-cloud { display: flex; flex-wrap: wrap; justify-content: center; gap: .9rem; }
.pt-item { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: .25rem; min-width: 150px; padding: .9rem 1.4rem; background: var(--r-card); border: 1px solid var(--r-line); border-radius: var(--r-radius); box-shadow: var(--r-shadow-sm); text-decoration: none; transition: transform .25s var(--r-ease), box-shadow .25s var(--r-ease); }
a.pt-item:hover { transform: translateY(-3px); box-shadow: var(--r-shadow-md); }
.pt-item img { max-width: 130px; max-height: 44px; object-fit: contain; }
.pt-word { font-family: var(--r-font-display); font-weight: 600; color: var(--r-navy-700); font-size: 1rem; text-align: center; }
.pt-item small { color: var(--r-muted); font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; }

/* ── FAQs (fq-) ─────────────────────────────────────────────────────── */
.fq-wrap { max-width: 860px; margin-inline: auto; }
.fq-cat { font-family: var(--r-font-display); color: var(--r-navy-800); font-size: 1.25rem; margin: 2rem 0 .9rem; }
.fq-cat:first-child { margin-top: 0; }
.fq-item { background: var(--r-card); border: 1px solid var(--r-line); border-radius: var(--r-radius); margin-bottom: .7rem; box-shadow: var(--r-shadow-sm); overflow: hidden; }
.fq-item summary { list-style: none; cursor: pointer; padding: 1rem 1.25rem; display: flex; justify-content: space-between; align-items: center; gap: 1rem; font-weight: 600; color: var(--r-navy-800); font-size: .99rem; }
.fq-item summary::-webkit-details-marker { display: none; }
.fq-item summary:hover { color: var(--r-gold-600); }
.fq-icon { flex: none; width: 22px; height: 22px; border-radius: 50%; border: 1.5px solid var(--r-gold-500); position: relative; transition: transform .3s var(--r-ease); }
.fq-icon::before, .fq-icon::after { content: ""; position: absolute; background: var(--r-gold-600); inset: 50% auto auto 50%; transform: translate(-50%, -50%); }
.fq-icon::before { width: 10px; height: 1.6px; }
.fq-icon::after { width: 1.6px; height: 10px; transition: opacity .2s; }
.fq-item[open] .fq-icon { transform: rotate(180deg); }
.fq-item[open] .fq-icon::after { opacity: 0; }
.fq-answer { padding: 0 1.25rem 1.15rem; color: var(--r-body); line-height: 1.75; font-size: .93rem; }
.fq-answer p { margin: 0 0 .7em; }
.fq-answer a { color: var(--r-gold-600); }

/* ── Downloads (dl-) ────────────────────────────────────────────────── */
.dl-wrap { max-width: 900px; margin-inline: auto; }
.dl-cat { font-family: var(--r-font-display); color: var(--r-navy-800); font-size: 1.25rem; margin: 2rem 0 .9rem; }
.dl-cat:first-child { margin-top: 0; }
.dl-list { display: flex; flex-direction: column; gap: .7rem; }
.dl-row { display: flex; align-items: center; gap: 1rem; background: var(--r-card); border: 1px solid var(--r-line); border-radius: var(--r-radius); padding: .9rem 1.15rem; text-decoration: none; box-shadow: var(--r-shadow-sm); transition: transform .25s var(--r-ease), box-shadow .25s var(--r-ease); }
.dl-row:hover { transform: translateY(-2px); box-shadow: var(--r-shadow-md); }
.dl-ext { flex: none; width: 52px; height: 52px; border-radius: 12px; background: linear-gradient(115deg, var(--r-navy-800), var(--r-navy-600)); color: var(--r-gold-400); display: inline-flex; align-items: center; justify-content: center; font-size: .7rem; font-weight: 700; letter-spacing: .04em; }
.dl-main { flex: 1; min-width: 0; }
.dl-main strong { display: block; color: var(--r-navy-800); font-size: .98rem; }
.dl-main em { display: block; font-style: normal; color: var(--r-muted); font-size: .82rem; margin-top: .15rem; }
.dl-count { flex: none; color: var(--r-muted); font-size: .78rem; }
.dl-btn { flex: none; background: var(--r-gold-500); color: var(--r-navy-900); font-weight: 700; font-size: .8rem; padding: .5rem 1rem; border-radius: 99px; }
.dl-row:hover .dl-btn { background: var(--r-gold-400); }

/* ── Careers (jb-) ──────────────────────────────────────────────────── */
.jb-list { display: flex; flex-direction: column; gap: .9rem; max-width: 900px; margin-inline: auto; }
.jb-card { display: flex; align-items: center; justify-content: space-between; gap: 1.2rem; background: var(--r-card); border: 1px solid var(--r-line); border-radius: var(--r-radius); padding: 1.25rem 1.4rem; box-shadow: var(--r-shadow-sm); transition: transform .25s var(--r-ease), box-shadow .25s var(--r-ease); }
.jb-card:hover { transform: translateY(-2px); box-shadow: var(--r-shadow-md); }
.jb-card h3 { font-family: var(--r-font-display); margin: 0 0 .35rem; font-size: 1.25rem; color: var(--r-navy-800); }
.jb-card h3 a { color: inherit; text-decoration: none; }
.jb-card h3 a:hover { color: var(--r-gold-600); }
.jb-meta { color: var(--r-muted); font-size: .85rem; }
.jb-closes { color: var(--r-gold-600); font-size: .78rem; font-weight: 600; margin-top: .3rem; }
.jb-btn { flex: none; text-decoration: none; }
.jb-layout { display: grid; grid-template-columns: 1.6fr 1fr; gap: 2.4rem; align-items: start; }
.jb-h { font-family: var(--r-font-display); color: var(--r-navy-800); font-size: 1.45rem; margin: 0 0 .9rem; }
.jb-main .jb-h:not(:first-child) { margin-top: 2.2rem; }
.jb-apply-card { position: sticky; top: calc(var(--r-header-h) + 12px); background: var(--r-card); border: 1px solid var(--r-line); border-radius: var(--r-radius-lg); padding: 1.5rem 1.5rem 1.2rem; box-shadow: var(--r-shadow-md); }
.jb-apply-card h2 { font-family: var(--r-font-display); color: var(--r-navy-800); font-size: 1.3rem; margin: 0 0 1rem; }
.jb-apply-card .rf-field { margin-bottom: .9rem; }
.jb-privacy { color: var(--r-muted); font-size: .74rem; margin: .7rem 0 0; text-align: center; }
.jb-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.jb-flash { border-radius: 10px; padding: .85rem 1rem; font-size: .88rem; line-height: 1.55; margin-bottom: 1rem; }
.jb-flash-ok { background: color-mix(in srgb, #2e7d4f 12%, #fff); border: 1px solid color-mix(in srgb, #2e7d4f 35%, #fff); color: #205c39; }
.jb-flash-err { background: color-mix(in srgb, #b4423a 10%, #fff); border: 1px solid color-mix(in srgb, #b4423a 32%, #fff); color: #8a2f29; }
.jb-err[hidden] { display: block; }
.rf-error.jb-err { position: static; }

/* ── Gallery (gl-) ──────────────────────────────────────────────────── */
.gl-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.gl-card { position: relative; display: block; border-radius: var(--r-radius); overflow: hidden; aspect-ratio: 4/3; text-decoration: none; box-shadow: var(--r-shadow-sm); background: linear-gradient(115deg, var(--r-navy-900), var(--r-navy-600)); }
.gl-card img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--r-ease); }
.gl-card:hover img { transform: scale(1.06); }
.gl-card-body { position: absolute; inset: auto 0 0 0; padding: 2.2rem 1.15rem 1rem; background: linear-gradient(transparent, rgba(8, 48, 36, .88)); color: #fff; display: flex; flex-direction: column; gap: .15rem; }
.gl-card-body strong { font-family: var(--r-font-display); font-size: 1.15rem; }
.gl-card-body em { font-style: normal; color: rgba(255, 255, 255, .72); font-size: .78rem; }
.gl-ph { display: block; width: 100%; height: 100%; }
.gl-items { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.gl-item { margin: 0; border-radius: var(--r-radius); overflow: hidden; position: relative; aspect-ratio: 4/3; background: linear-gradient(115deg, var(--r-navy-900), var(--r-navy-600)); box-shadow: var(--r-shadow-sm); }
.gl-item img { width: 100%; height: 100%; object-fit: cover; transition: transform .45s var(--r-ease); }
.gl-item:hover img { transform: scale(1.05); }
.gl-item[data-gl-item] { cursor: zoom-in; }
.gl-item figcaption { position: absolute; inset: auto 0 0 0; padding: 1.6rem .9rem .7rem; background: linear-gradient(transparent, rgba(8, 48, 36, .82)); color: #fff; font-size: .78rem; }
.gl-video { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .55rem; color: #fff; text-decoration: none; }
.gl-play { width: 52px; height: 52px; border-radius: 50%; background: var(--r-gold-500); color: var(--r-navy-900); display: inline-flex; align-items: center; justify-content: center; font-size: 1.1rem; padding-left: 4px; }
.gl-vid-label { font-size: .82rem; color: rgba(255, 255, 255, .8); }
.gl-lightbox { position: fixed; inset: 0; z-index: 600; background: rgba(8, 48, 36, .92); backdrop-filter: blur(6px); display: flex; align-items: center; justify-content: center; padding: 2.5rem 1rem; }
.gl-lightbox[hidden] { display: none; }
.gl-lb-stage { margin: 0; max-width: min(1020px, 92vw); max-height: 84vh; display: flex; flex-direction: column; gap: .7rem; }
.gl-lb-stage img { max-width: 100%; max-height: 76vh; object-fit: contain; border-radius: 10px; box-shadow: var(--r-shadow-lg); }
.gl-lb-stage figcaption { color: rgba(255, 255, 255, .85); text-align: center; font-size: .88rem; }
.gl-lb-close, .gl-lb-prev, .gl-lb-next { position: absolute; background: rgba(255, 255, 255, .1); color: #fff; border: 1px solid rgba(255, 255, 255, .22); cursor: pointer; border-radius: 50%; transition: background .2s; }
.gl-lb-close:hover, .gl-lb-prev:hover, .gl-lb-next:hover { background: var(--r-gold-500); color: var(--r-navy-900); }
.gl-lb-close { top: 1.1rem; right: 1.1rem; width: 44px; height: 44px; font-size: 1.5rem; line-height: 1; }
.gl-lb-prev, .gl-lb-next { top: 50%; transform: translateY(-50%); width: 48px; height: 48px; font-size: 1.7rem; line-height: 1; }
.gl-lb-prev { left: 1.1rem; }
.gl-lb-next { right: 1.1rem; }
body.gl-lb-open { overflow: hidden; }

/* ── Search results (sr-) ───────────────────────────────────────────── */
.sr-big { max-width: 640px; margin-bottom: 2rem; }
.sr-group { margin-bottom: 2rem; }
.sr-group-t { font-family: var(--r-font-display); color: var(--r-navy-800); font-size: 1.3rem; margin: 0 0 .9rem; display: flex; align-items: center; gap: .6rem; }
.sr-list { display: flex; flex-direction: column; gap: .6rem; }
.sr-row { display: block; background: var(--r-card); border: 1px solid var(--r-line); border-radius: var(--r-radius); padding: .85rem 1.1rem; text-decoration: none; box-shadow: var(--r-shadow-sm); transition: transform .22s var(--r-ease), box-shadow .22s var(--r-ease); }
.sr-row:hover { transform: translateY(-2px); box-shadow: var(--r-shadow-md); }
.sr-row strong { display: block; color: var(--r-navy-800); font-size: .97rem; }
.sr-row em { display: block; font-style: normal; color: var(--r-muted); font-size: .83rem; margin-top: .15rem; }
.sr-hints { text-align: center; margin-top: 1rem; }
.sr-hints .pj-filters { margin-top: 1.1rem; }

@media (max-width: 900px) {
    .bc-grid, .ts-grid, .gl-grid { grid-template-columns: repeat(2, 1fr); }
    .tm-grid { grid-template-columns: repeat(2, 1fr); }
    .tm-grid-lead { grid-template-columns: repeat(2, 1fr); }
    .jb-layout { grid-template-columns: 1fr; }
    .jb-apply-card { position: static; }
}

@media (max-width: 640px) {
    .bc-grid, .ts-grid, .gl-grid, .gl-items, .tm-grid, .tm-grid-lead { grid-template-columns: 1fr; }
    .bc-search { flex-direction: column; }
    .bc-search .sx-btn { align-self: stretch; }
    .dl-row { flex-wrap: wrap; }
    .dl-count { display: none; }
    .jb-card { flex-direction: column; align-items: flex-start; }
    .gl-lb-prev { left: .4rem; }
    .gl-lb-next { right: .4rem; }
}

/* ── Phase 7: floating WhatsApp contact panel ─────────────────────────── */
.wap { position: fixed; right: 22px; bottom: 22px; z-index: 90; display: grid; justify-items: end; gap: .75rem; }
.wap-fab { width: 58px; height: 58px; border-radius: 50%; border: 0; cursor: pointer; background: #25d366; color: #fff; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 10px 26px rgba(9, 20, 34, .35); transition: transform .18s ease, background .18s ease; position: relative; }
.wap-fab:hover { transform: translateY(-2px) scale(1.04); }
.wap-fab-icon { width: 30px; height: 30px; }
.wap-fab-close { width: 22px; height: 22px; display: none; }
.wap.is-open .wap-fab { background: var(--r-navy-900); }
.wap.is-open .wap-fab-icon { display: none; }
.wap.is-open .wap-fab-close { display: block; }
.wap-body { width: min(330px, calc(100vw - 44px)); background: #fff; border-radius: 18px; overflow: hidden; box-shadow: 0 22px 60px rgba(9, 20, 34, .32); animation: wap-in .22s ease; }
@keyframes wap-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.wap-head { background: var(--r-navy-900); color: #fff; padding: 1rem 1.15rem; display: grid; gap: .15rem; }
.wap-head strong { font-family: var(--r-font-display); font-size: 1.05rem; color: var(--r-gold-400); }
.wap-head span { font-size: .78rem; color: rgba(255, 255, 255, .72); }
.wap-agents { list-style: none; margin: 0; padding: .45rem; display: grid; gap: .2rem; max-height: 320px; overflow-y: auto; }
.wap-agent { display: flex; align-items: center; gap: .7rem; padding: .55rem .6rem; border-radius: 12px; text-decoration: none; color: inherit; transition: background .15s ease; }
.wap-agent:hover { background: #f4f2ec; }
.wap-avatar { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; flex: none; }
.wap-avatar-initials { display: inline-flex; align-items: center; justify-content: center; background: var(--r-navy-800); color: var(--r-gold-400); font-weight: 700; font-size: .82rem; }
.wap-agent-text { display: grid; gap: .1rem; min-width: 0; flex: 1; }
.wap-agent-text strong { font-size: .9rem; }
.wap-agent-text small { font-size: .74rem; color: #74828f; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wap-dot { width: 9px; height: 9px; border-radius: 50%; flex: none; }
.wap-dot-online { background: #25d366; box-shadow: 0 0 0 3px rgba(37, 211, 102, .18); }
.wap-dot-away { background: #e0a633; box-shadow: 0 0 0 3px rgba(224, 166, 51, .18); }
.wap-dot-offline { background: #9aa7b4; box-shadow: 0 0 0 3px rgba(154, 167, 180, .18); }
.wap-foot { padding: .6rem; text-align: center; font-size: .7rem; color: #9aa7b4; border-top: 1px solid #eef1f4; }
@media (max-width: 575.98px) { .wap { right: 14px; bottom: 14px; } }

/* ── Phase 7: footer newsletter ───────────────────────────────────────── */
.r-footer-newsletter { background: linear-gradient(120deg, var(--r-emerald-800, #0a3d2e), var(--r-emerald-600, #14573f) 55%, var(--r-emerald-800, #0a3d2e)); border-top: 3px solid var(--r-gold-500); padding: 2.1rem 0; margin-top: clamp(3rem, 7vw, 5rem); }
.r-footer-newsletter-inner { display: grid; grid-template-columns: 1.1fr 1fr; gap: 1.6rem; align-items: center; }
@media (max-width: 860px) { .r-footer-newsletter-inner { grid-template-columns: 1fr; } }
.r-footer-newsletter-text h4 { color: #fff; font-family: var(--r-font-display); font-size: 1.35rem; margin: 0 0 .3rem; }
.r-footer-newsletter-text p { margin: 0; font-size: .88rem; color: rgba(255, 255, 255, .72); }
.r-footer-newsletter-form { display: flex; gap: .55rem; }
.r-footer-newsletter-input { flex: 1; min-width: 0; padding: .78rem 1rem; border-radius: 999px; border: 1px solid rgba(255, 255, 255, .22); background: rgba(255, 255, 255, .06); color: #fff; font-size: .9rem; outline: none; }
.r-footer-newsletter-input::placeholder { color: rgba(255, 255, 255, .45); }
.r-footer-newsletter-input:focus { border-color: var(--r-gold-400); }
.r-footer-newsletter-btn { padding: .78rem 1.5rem; border-radius: 999px; border: 0; cursor: pointer; font-weight: 600; font-size: .9rem; white-space: nowrap; background: linear-gradient(90deg, var(--r-gold-400), var(--r-gold-600)); color: var(--r-navy-900); transition: transform .15s ease; }
.r-footer-newsletter-btn:hover { transform: translateY(-1px); }
.r-footer-newsletter-msg { grid-column: 1 / -1; margin: .7rem 0 0; font-size: .84rem; }
.r-footer-newsletter-msg.ok { color: #7fe0a8; }
.r-footer-newsletter-msg.err { color: #ffb3a6; }
@media (max-width: 767.98px) { .r-footer-newsletter { grid-template-columns: 1fr; } }

/* ── Project detail tabs (pj-tab) — keeps long detail pages compact ─────── */
.pj-tabwrap { margin-top: 2.2rem; }
.pj-tabs {
    display: flex; flex-wrap: wrap; gap: .45rem;
    padding: .45rem; border-radius: 999px;
    background: color-mix(in srgb, var(--r-navy-800) 5%, #fff);
    border: 1px solid var(--r-line);
    position: sticky; top: calc(var(--r-header-h, 84px) + 10px); z-index: 40;
    backdrop-filter: blur(10px);
}
.pj-tab {
    border: 0; cursor: pointer; border-radius: 999px;
    padding: .62rem 1.25rem; font: inherit; font-weight: 600; font-size: .9rem;
    color: var(--r-muted); background: transparent;
    transition: background .2s var(--r-ease), color .2s var(--r-ease);
    white-space: nowrap;
}
.pj-tab:hover { background: color-mix(in srgb, var(--r-navy-800) 9%, #fff); color: var(--r-navy-800); }
.pj-tab.on {
    background: linear-gradient(135deg, var(--r-navy-800), var(--r-navy-900, #07241b));
    color: #fff; box-shadow: 0 6px 18px rgba(8, 48, 36, .25);
}
.pj-tab.on::after {
    content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%;
    background: var(--r-gold-500); margin-left: .5rem; vertical-align: 2px;
}
.pj-tabwrap.js-tabs .pj-panel { display: none; }
.pj-tabwrap.js-tabs .pj-panel.on { display: block; animation: pjPanelIn .32s var(--r-ease); }
.pj-panel { padding-top: 1.8rem; }
.pj-h3 { margin: 1.9rem 0 .9rem; font-family: var(--r-font-display); font-size: 1.3rem; color: var(--r-navy-900); }
.pj-h3:first-child { margin-top: 0; }
@keyframes pjPanelIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (max-width: 700px) {
    .pj-tabs { border-radius: 18px; position: static; }
    .pj-tab { flex: 1 1 auto; text-align: center; padding: .58rem .8rem; font-size: .85rem; }
}
@media (prefers-reduced-motion: reduce) { .pj-tabwrap.js-tabs .pj-panel.on { animation: none; } }

/* ── Careers compensation (Phase 11) ─────────────────────────── */
.jb-salary { margin-top: .3rem; font-weight: 700; color: var(--r-green-700, #0f5132); font-size: .95rem; }
.jb-commission { margin-top: .15rem; font-size: .8rem; font-weight: 600; color: var(--r-gold-600, #a5811f); }
.jb-pay-strip { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .9rem; margin-top: .9rem; }
.jb-pay-salary { font-size: 1.06rem; font-weight: 800; color: #fff; background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.28); padding: .4rem .85rem; border-radius: 999px; }
.jb-pay-commission { font-size: .85rem; font-weight: 600; color: var(--r-gold-300, #e6c87a); background: rgba(201,164,92,.14); border: 1px solid rgba(201,164,92,.4); padding: .4rem .85rem; border-radius: 999px; }

/* ==========================================================================
   Affiliate program page + per-project enquiry (Phase 13)
   ========================================================================== */
.af-intro { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: 2.4rem; align-items: start; margin: 3rem 0; }
.af-intro-copy h2, .af-apply h2 { font-family: var(--r-font-display); color: var(--r-navy-800); margin: 0 0 1rem; font-size: clamp(1.5rem, 3vw, 2.1rem); }
.af-intro-copy p { color: var(--r-muted); line-height: 1.75; }
.af-benefits { display: flex; flex-direction: column; gap: 1rem; }
.af-benefit { display: flex; gap: .95rem; align-items: flex-start; background: #fff; border: 1px solid var(--r-line); border-radius: 14px; padding: 1rem 1.15rem; }
.af-benefit-ico { flex: none; width: 42px; height: 42px; border-radius: 11px; display: grid; place-items: center; color: var(--r-gold-600); background: color-mix(in srgb, var(--r-gold-500) 12%, #fff); }
.af-benefit-ico svg { width: 22px; height: 22px; }
.af-benefit strong { display: block; color: var(--r-navy-800); margin-bottom: .2rem; }
.af-benefit p { margin: 0; color: var(--r-muted); font-size: .92rem; line-height: 1.6; }
.af-sub { color: var(--r-muted); margin: -.5rem 0 1.4rem; }
.af-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1.1rem; }
.af-step { position: relative; background: #fff; border: 1px solid var(--r-line); border-radius: 14px; padding: 1.4rem 1.2rem 1.2rem; }
.af-step-n { position: absolute; top: -14px; left: 1.1rem; width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: var(--r-navy-800); color: var(--r-gold-400); font-weight: 700; font-size: .95rem; }
.af-step strong { display: block; margin: .35rem 0 .35rem; color: var(--r-navy-800); text-transform: uppercase; letter-spacing: .04em; font-size: .95rem; }
.af-step p { margin: 0; color: var(--r-muted); font-size: .92rem; line-height: 1.6; }
.af-who { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: .9rem; }
.af-who-item { display: flex; gap: .7rem; align-items: center; border: 1px solid var(--r-line); border-radius: 12px; padding: .95rem 1.05rem; background: #fff; color: var(--r-navy-800); font-weight: 600; font-size: .95rem; }
.af-who-item svg { flex: none; width: 20px; height: 20px; color: var(--r-gold-600); }
.af-note { margin: 1.2rem 0 0; color: var(--r-muted); font-size: .88rem; }
.af-apply { max-width: 860px; margin: 3rem auto 1rem; scroll-margin-top: 110px; }
.af-apply-head { margin-bottom: 1.2rem; }
.af-apply-head p { color: var(--r-muted); line-height: 1.7; margin: 0; }
.af-form .af-fs { border: 1px solid var(--r-line); border-radius: 14px; padding: 1.2rem 1.15rem 1.3rem; margin: 0 0 1.1rem; background: #fff; }
.af-form .af-fs legend { padding: 0 .4rem; font-weight: 700; color: var(--r-navy-800); font-size: 1rem; }
.af-fs-hint { display: block; font-weight: 400; font-size: .8rem; color: var(--r-muted); }
.af-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .9rem 1rem; }
.af-grid .rf-field { min-width: 0; }
.af-form .rf-field { margin-bottom: .9rem; }
.af-grid .rf-field { margin-bottom: 0; }
.af-success { display: flex; gap: 1rem; align-items: flex-start; background: color-mix(in srgb, #2e7d4f 9%, #fff); border: 1px solid color-mix(in srgb, #2e7d4f 30%, #fff); border-radius: 14px; padding: 1.4rem 1.3rem; }
.af-success svg { flex: none; width: 34px; height: 34px; color: #2e7d4f; }
.af-success strong { display: block; color: #205c39; font-size: 1.05rem; margin-bottom: .3rem; }
.af-success p { margin: 0; color: #2c5f43; line-height: 1.6; }

.pj-inquiry { max-width: 1060px; margin: 3rem auto 1rem; padding: 0 var(--r-gutter, 1.2rem); scroll-margin-top: 110px; }
.pj-inquiry-card { background: linear-gradient(160deg, var(--r-navy-900), var(--r-navy-800) 55%, var(--r-navy-700)); border-radius: 20px; padding: clamp(1.4rem, 4vw, 2.6rem); display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(1.4rem, 3.4vw, 2.6rem); align-items: start; }
.pj-inquiry-intro h2 { font-family: var(--r-font-display); color: #fff; margin: 0 0 .8rem; font-size: clamp(1.5rem, 2.6vw, 2rem); }
.pj-inquiry-intro p { color: rgba(255,255,255,.82); line-height: 1.7; margin: 0 0 1.1rem; }
.pj-inquiry-points { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .55rem; }
.pj-inquiry-points li { position: relative; padding-left: 1.5rem; color: rgba(255,255,255,.78); font-size: .94rem; line-height: 1.55; }
.pj-inquiry-points li::before { content: ""; position: absolute; left: 0; top: .42rem; width: .9rem; height: .5rem; border-left: 2px solid var(--r-gold-500); border-bottom: 2px solid var(--r-gold-500); transform: rotate(-45deg); }
.pj-inquiry-form { background: #fff; border-radius: 16px; padding: clamp(1.1rem, 2.6vw, 1.7rem); }
.pj-inquiry-form .rf-field { margin-bottom: .9rem; }
.pj-plot-picker { border: 1px solid var(--r-line); border-radius: 12px; padding: .9rem .9rem .6rem; }
.pj-plot-picker legend { padding: 0 .35rem; }
.pj-plot-hint { display: block; font-weight: 400; font-size: .78rem; color: var(--r-muted); }
.pj-plot-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; }
.pj-plot-option { display: flex; gap: .55rem; align-items: flex-start; border: 1px solid var(--r-line); border-radius: 10px; padding: .6rem .65rem; cursor: pointer; transition: border-color .2s, background .2s; }
.pj-plot-option:hover { border-color: color-mix(in srgb, var(--r-gold-500) 55%, #fff); }
.pj-plot-option input { margin-top: .25rem; accent-color: var(--r-gold-600); }
.pj-plot-option input:checked + .pj-plot-body { color: var(--r-navy-800); }
.pj-plot-option:has(input:checked) { border-color: var(--r-gold-500); background: color-mix(in srgb, var(--r-gold-500) 8%, #fff); }
.pj-plot-body { display: flex; flex-direction: column; gap: .1rem; }
.pj-plot-name { font-weight: 600; color: var(--r-navy-800); font-size: .92rem; }
.pj-plot-price { color: var(--r-gold-700, #96702b); font-size: .85rem; font-weight: 600; }

@media (max-width: 991px) {
    .af-intro { grid-template-columns: 1fr; }
    .pj-inquiry-card { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
    .af-grid, .pj-plot-grid { grid-template-columns: 1fr; }
}

/* ── Page-builder "Columns" setting (Phase 13.1) ──────────────────────────
   Dynamic-content grid sections (Projects, Services, Latest Posts,
   Testimonials, Team, Gallery) can be set to 2 / 3 / 4 columns in the page
   builder. The .sx-cnum wrapper stretches the inner grid to N equal columns
   edge-to-edge, and degrades like the native grids: 2 columns on tablets,
   1 on phones. */
.sx-cnum { display: block; }
.sx-cnum-2 > .pj-grid, .sx-cnum-2 > .sv-grid, .sx-cnum-2 > .bc-grid,
.sx-cnum-2 > .ts-grid, .sx-cnum-2 > .tm-grid, .sx-cnum-2 > .gl-items { grid-template-columns: repeat(2, 1fr); }
.sx-cnum-3 > .pj-grid, .sx-cnum-3 > .sv-grid, .sx-cnum-3 > .bc-grid,
.sx-cnum-3 > .ts-grid, .sx-cnum-3 > .tm-grid, .sx-cnum-3 > .gl-items { grid-template-columns: repeat(3, 1fr); }
.sx-cnum-4 > .pj-grid, .sx-cnum-4 > .sv-grid, .sx-cnum-4 > .bc-grid,
.sx-cnum-4 > .ts-grid, .sx-cnum-4 > .tm-grid, .sx-cnum-4 > .gl-items { grid-template-columns: repeat(4, 1fr); }

@media (max-width: 900px) {
    .sx-cnum-2 > .pj-grid, .sx-cnum-2 > .sv-grid, .sx-cnum-2 > .bc-grid,
    .sx-cnum-2 > .ts-grid, .sx-cnum-2 > .tm-grid, .sx-cnum-2 > .gl-items,
    .sx-cnum-3 > .pj-grid, .sx-cnum-3 > .sv-grid, .sx-cnum-3 > .bc-grid,
    .sx-cnum-3 > .ts-grid, .sx-cnum-3 > .tm-grid, .sx-cnum-3 > .gl-items,
    .sx-cnum-4 > .pj-grid, .sx-cnum-4 > .sv-grid, .sx-cnum-4 > .bc-grid,
    .sx-cnum-4 > .ts-grid, .sx-cnum-4 > .tm-grid, .sx-cnum-4 > .gl-items { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 640px) {
    .sx-cnum-2 > .pj-grid, .sx-cnum-2 > .sv-grid, .sx-cnum-2 > .bc-grid,
    .sx-cnum-2 > .ts-grid, .sx-cnum-2 > .tm-grid, .sx-cnum-2 > .gl-items,
    .sx-cnum-3 > .pj-grid, .sx-cnum-3 > .sv-grid, .sx-cnum-3 > .bc-grid,
    .sx-cnum-3 > .ts-grid, .sx-cnum-3 > .tm-grid, .sx-cnum-3 > .gl-items,
    .sx-cnum-4 > .pj-grid, .sx-cnum-4 > .sv-grid, .sx-cnum-4 > .bc-grid,
    .sx-cnum-4 > .ts-grid, .sx-cnum-4 > .tm-grid, .sx-cnum-4 > .gl-items { grid-template-columns: 1fr; }
}

/* ── Phase 14 ──────────────────────────────────────────────────────────
   Blog article hero clearance, engagement (like/share/comments), services
   carousel sizing, rich-content tables/callouts. */

/* Blog article hero: extra top clearance so the fixed header/logo never
   overlaps the breadcrumb→title→excerpt block, on any screen size. */
.bc-hero { padding: calc(var(--r-header-h, 84px) + 3.4rem) 0 4rem; min-height: 560px; }
.bc-hero .pj-hero-inner { max-width: 900px; }
.bc-hero-excerpt { font-size: 1.05rem; margin: .2rem 0 1rem; }
@media (max-width: 767.98px) {
    .bc-hero { padding: calc(var(--r-header-h, 84px) + 2.4rem) 0 3.2rem; min-height: 460px; }
}

/* Engagement row (like + share) */
.bc-engage { display: flex; flex-wrap: wrap; align-items: center; gap: .9rem 1.2rem; margin: 2.4rem 0 0; padding: 1.1rem 0; border-top: 1px solid var(--r-line); border-bottom: 1px solid var(--r-line); }
.bc-like-btn { display: inline-flex; align-items: center; gap: .5rem; padding: .55rem 1.15rem; border: 1.5px solid var(--r-line); background: var(--r-card); border-radius: 999px; font: inherit; font-weight: 600; color: var(--r-navy-700); cursor: pointer; transition: border-color .2s ease, background .2s ease, color .2s ease; }
.bc-like-btn:hover { border-color: var(--r-gold-500); }
.bc-like-btn.is-liked { background: var(--r-navy-800); border-color: var(--r-navy-800); color: #fff; }
.bc-like-btn.is-liked svg { color: var(--r-gold-400); }
.bc-share { display: flex; align-items: center; gap: .45rem; flex-wrap: wrap; margin-left: auto; }
.bc-share-label { font-weight: 600; color: var(--r-muted); font-size: .9rem; margin-right: .2rem; }
.bc-share-btn { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 50%; border: 1.5px solid var(--r-line); color: var(--r-navy-700); background: var(--r-card); transition: color .2s ease, border-color .2s ease, transform .2s ease; font-size: 1.05rem; }
.bc-share-btn:hover { transform: translateY(-1px); border-color: currentColor; }
.bc-share-whatsapp:hover { color: #128c4b; }
.bc-share-facebook:hover { color: #1877f2; }
.bc-share-x:hover { color: #000; }
.bc-share-linkedin:hover { color: #0a66c2; }
.bc-share-telegram:hover { color: #229ed9; }
.bc-share-email:hover { color: var(--r-navy-800); }
.bc-share-copy { width: auto; padding: 0 1rem; border-radius: 999px; gap: .35rem; font: inherit; font-size: .85rem; font-weight: 600; cursor: pointer; }
.bc-share-copy.is-copied { color: var(--r-gold-600); border-color: var(--r-gold-500); }

/* Comments */
.bc-comments { margin-top: 2.6rem; scroll-margin-top: calc(var(--r-header-h, 84px) + 1rem); }
.bc-comments > h2 { display: flex; align-items: center; gap: .6rem; font-size: 1.35rem; margin: 0 0 1.2rem; }
.bc-comments-n { display: inline-flex; align-items: center; justify-content: center; min-width: 1.7rem; height: 1.7rem; padding: 0 .45rem; border-radius: 999px; background: var(--r-navy-800); color: var(--r-gold-400); font-size: .85rem; font-weight: 700; }
.bc-comments-empty { color: var(--r-muted); background: var(--r-card); border: 1px dashed var(--r-line); border-radius: var(--r-radius); padding: 1.1rem 1.2rem; }
.bc-comment-list { list-style: none; margin: 0 0 2rem; padding: 0; display: flex; flex-direction: column; gap: 1rem; }
.bc-comment { background: var(--r-card); border: 1px solid var(--r-line); border-radius: var(--r-radius); padding: 1rem 1.2rem; }
.bc-comment-head { display: flex; align-items: center; gap: .6rem; margin-bottom: .35rem; }
.bc-avatar { width: 34px; height: 34px; border-radius: 50%; background: linear-gradient(115deg, var(--r-navy-800), var(--r-navy-600)); color: var(--r-gold-400); display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: .9rem; flex: none; }
.bc-comment-head small { color: var(--r-muted); margin-left: auto; }
.bc-comment p { margin: 0; line-height: 1.65; color: var(--r-ink); }
.bc-comment-form { background: var(--r-soft, #f7f9fb); border: 1px solid var(--r-line); border-radius: var(--r-radius); padding: 1.4rem; margin-top: .4rem; }
.bc-comment-form h3 { margin: 0 0 .3rem; font-size: 1.1rem; }
.bc-muted { color: var(--r-muted); font-size: .88rem; margin: 0 0 1rem; }
.bc-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem; }
.bc-field { margin-bottom: .9rem; display: flex; flex-direction: column; gap: .35rem; }
.bc-field label { font-weight: 600; font-size: .88rem; color: var(--r-navy-800); }
.bc-field input, .bc-field textarea { font: inherit; padding: .6rem .8rem; border: 1px solid var(--r-line); border-radius: 10px; background: #fff; color: var(--r-ink); }
.bc-field input:focus, .bc-field textarea:focus { outline: 2px solid var(--r-gold-400); outline-offset: 1px; border-color: var(--r-gold-500); }
@media (max-width: 640px) { .bc-form-grid { grid-template-columns: 1fr; } }

/* Services inside the shared snap-track carousel */
.sv-carousel .ts-slide .sv-card { width: 100%; display: flex; flex-direction: column; }
.sv-carousel .ts-controls { margin-top: 1.6rem; }

/* Rich content tables & callouts (services / pages / posts). */
.pj-body table, .sx-richtext table { width: 100%; border-collapse: collapse; margin: 1.2rem 0 1.6rem; font-size: .95rem; }
.pj-body th, .pj-body td, .sx-richtext th, .sx-richtext td { text-align: left; padding: .65rem .9rem; border: 1px solid var(--r-line); vertical-align: top; }
.pj-body thead th, .sx-richtext thead th { background: var(--r-navy-800); color: #fff; font-weight: 600; border-color: var(--r-navy-800); }
.pj-body tbody tr:nth-child(even), .sx-richtext tbody tr:nth-child(even) { background: var(--r-soft, #f7f9fb); }
.pj-body blockquote, .sx-richtext blockquote { border-left: 3px solid var(--r-gold-500); background: #faf7f0; padding: .9rem 1.1rem; margin: 1.2rem 0; border-radius: 0 10px 10px 0; }
.pj-body blockquote p:last-child, .sx-richtext blockquote p:last-child { margin: 0; }
.pj-body h2, .sx-richtext h2 { margin: 0 0 1rem; }
/* Services overview intro lead under the hero. */
.sv-intro-lead { max-width: 62ch; margin: 0 auto .6rem; text-align: center; color: var(--r-muted); line-height: 1.75; font-size: 1.03rem; }
.sv-intro-more { max-width: 62ch; margin: 0 auto 2.2rem; text-align: center; color: var(--r-navy-800); font-weight: 500; }

/* ==========================================================================
   Phase 15 — page heroes, blog carousel, contact blocks, service covers
   ========================================================================== */

/* Service cards with a cover photo (falls back to the icon tile). */
.sv-card.sv-has-cover { padding: 0; overflow: hidden; }
.sv-card-cover { display: block; aspect-ratio: 16 / 10; overflow: hidden; }
.sv-card-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .45s ease; }
.sv-card:hover .sv-card-cover img { transform: scale(1.05); }
.sv-card.sv-has-cover .sv-card-body { padding: 1.2rem 1.4rem 1.5rem; display: flex; flex-direction: column; gap: .6rem; flex: 1; }

/* Service detail hero — reuses the blog/careers hero shell (bc-hero). */
.sv-hero .sv-hero-icon { width: 54px; height: 54px; border-radius: 14px; display: grid; place-items: center; background: rgba(255,255,255,.14); color: var(--r-gold-400); border: 1px solid rgba(255,255,255,.22); margin-bottom: 1rem; }
.sv-hero .sv-hero-icon svg { width: 27px; height: 27px; }

/* Blog cards inside the shared snap-track carousel. */
.bp-carousel .ts-slide .bc-card { width: 100%; display: flex; flex-direction: column; }
.bp-carousel .ts-controls { margin-top: 1.6rem; }

/* Contact info cards (address / phone / e-mail / WhatsApp from Settings). */
.ci-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 1.3rem; }
.ci-card {
    background: #fff; border: 1px solid #e7ebf0; border-radius: var(--r-radius, 14px);
    padding: 1.4rem 1.3rem; display: flex; flex-direction: column; gap: .45rem;
    transition: transform .22s ease, box-shadow .22s ease;
}
.ci-card:hover { transform: translateY(-3px); box-shadow: 0 16px 40px rgba(8,48,36,.10); }
.ci-card-icon { width: 46px; height: 46px; border-radius: 12px; display: grid; place-items: center; background: linear-gradient(135deg, var(--r-navy-800), var(--r-navy-700)); color: var(--r-gold-400); margin-bottom: .35rem; }
.ci-card-icon svg { width: 22px; height: 22px; }
.ci-card h3 { margin: 0; font-family: var(--r-font-display); font-size: 1.05rem; color: var(--r-navy-900); }
.ci-card p { margin: 0; color: #55636f; line-height: 1.6; font-size: .95rem; }
.ci-card a.ci-link { color: var(--r-gold-600); font-weight: 600; text-decoration: none; font-size: .9rem; margin-top: .2rem; }
.ci-card a.ci-link:hover { text-decoration: underline; }
.ci-value { word-break: break-word; }

/* Google Map embed (src = office address, no API key required). */
.map-frame {
    position: relative; border-radius: var(--r-radius, 14px); overflow: hidden;
    border: 1px solid #e7ebf0; box-shadow: 0 14px 36px rgba(8,48,36,.08); background: #e9eef2;
}
.map-frame.map-medium { aspect-ratio: 16 / 8; }
.map-frame.map-large  { aspect-ratio: 16 / 9; min-height: 420px; }
.map-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
@media (max-width: 720px) { .map-frame.map-medium, .map-frame.map-large { aspect-ratio: 4 / 3; min-height: 300px; } }

/* ── Project detail: conversion-first property page ────────────────────── */
.pdx-showcase { padding: clamp(1.1rem, 2.8vw, 2rem) 0 0; background: linear-gradient(180deg, #f5f7f8 0%, #fff 88%); }
.pdx-showcase-media { display: grid; grid-template-columns: minmax(0, 1fr); min-height: clamp(260px, 40vw, 535px); overflow: hidden; border-radius: 22px; background: var(--r-navy-900); box-shadow: 0 20px 55px rgba(9, 27, 49, .14); }
.pdx-showcase-media.has-gallery { grid-template-columns: minmax(0, 1.72fr) minmax(210px, .72fr); }
.pdx-showcase-primary, .pdx-showcase-thumb { display: block; margin: 0; min-height: 0; overflow: hidden; background: var(--r-navy-900); }
.pdx-showcase-primary img, .pdx-showcase-thumb img { width: 100%; height: 100%; display: block; object-fit: cover; transition: transform .5s var(--r-ease, ease); }
.pdx-showcase-primary:hover img, .pdx-showcase-thumb:hover img { transform: scale(1.025); }
.pdx-showcase-side { position: relative; display: grid; grid-template-rows: 1fr 1fr; gap: 3px; min-height: 100%; border-left: 3px solid #fff; }
.pdx-showcase-side-single .pdx-showcase-thumb { grid-row: 1 / -1; }
.pdx-photo-count { position: absolute; right: .9rem; bottom: .9rem; display: inline-flex; align-items: center; gap: .43rem; padding: .58rem .78rem; border-radius: 9px; color: #fff; background: rgba(10, 24, 43, .82); font-size: .82rem; font-weight: 800; text-decoration: none; backdrop-filter: blur(7px); }
.pdx-photo-count:hover { background: var(--r-navy-900); }
.pdx-photo-count svg { width: 16px; height: 16px; }
.pdx-summary { position: relative; z-index: 2; display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, 310px); gap: clamp(1.5rem, 4vw, 4.25rem); margin: -2.4rem clamp(.85rem, 3vw, 2.4rem) 0; padding: clamp(1.35rem, 3.5vw, 2.45rem); border: 1px solid #e5e9ed; border-radius: 18px; background: #fff; box-shadow: 0 17px 46px rgba(9, 27, 49, .1); }
.pdx-breadcrumb { display: flex; flex-wrap: wrap; gap: .35rem; margin: 0 0 1rem; color: #7b8997; font-size: .76rem; font-weight: 700; letter-spacing: .035em; }
.pdx-breadcrumb a { color: inherit; text-decoration: none; }
.pdx-breadcrumb a:hover { color: var(--r-gold-600); }
.pdx-breadcrumb span { color: #b7c0c8; }
.pdx-badges { display: flex; flex-wrap: wrap; gap: .42rem; margin-bottom: .85rem; }
.pdx-status, .pdx-badge-featured, .pdx-badge-neutral { display: inline-flex; align-items: center; min-height: 26px; padding: .22rem .65rem; border-radius: 999px; font-size: .71rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.pdx-status { background: #e8f4ec; color: #187345; }
.pdx-status-upcoming { background: #ebeff7; color: #365078; }
.pdx-status-on_hold { background: #f7eee1; color: #8d6428; }
.pdx-status-completed { background: #e5f0f5; color: #236276; }
.pdx-badge-featured { color: #73521d; background: #faf0da; }
.pdx-badge-neutral { color: #506070; background: #eef2f5; }
.pdx-summary h1 { max-width: 17ch; margin: 0; color: var(--r-navy-900); font-family: var(--r-font-display); font-size: clamp(2rem, 4.3vw, 3.4rem); line-height: 1.06; letter-spacing: -.03em; }
.pdx-location { display: flex; align-items: center; gap: .4rem; margin: .75rem 0 0; color: #43576b; font-size: .96rem; font-weight: 600; }
.pdx-location svg { width: 18px; height: 18px; color: var(--r-gold-600); flex: none; }
.pdx-lede { max-width: 67ch; margin: .9rem 0 0; color: #5a6878; font-size: 1rem; line-height: 1.65; }
.pdx-summary-action { align-self: center; padding: .25rem 0 .25rem clamp(1rem, 3vw, 2.35rem); border-left: 1px solid #e7ebee; }
.pdx-price-label { display: block; margin-bottom: .28rem; color: #778591; font-size: .72rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.pdx-price { display: block; color: var(--r-navy-900); font-family: var(--r-font-display); font-size: clamp(1.5rem, 2.5vw, 2rem); line-height: 1.15; }
.pdx-price-note { display: block; margin: .45rem 0 1.05rem; color: #657485; font-size: .83rem; line-height: 1.45; }
.pdx-btn { display: inline-flex; align-items: center; justify-content: center; gap: .65rem; min-height: 46px; padding: .75rem 1rem; border: 1px solid transparent; border-radius: 9px; font-family: inherit; font-size: .9rem; font-weight: 800; text-align: center; text-decoration: none; cursor: pointer; transition: transform .2s, background .2s, box-shadow .2s; }
.pdx-btn:hover { transform: translateY(-1px); }
.pdx-btn-primary { width: 100%; color: #fff; background: var(--r-navy-800); box-shadow: 0 9px 18px rgba(9, 35, 64, .18); }
.pdx-btn-primary:hover { color: #fff; background: var(--r-navy-900); box-shadow: 0 12px 21px rgba(9, 35, 64, .23); }
.pdx-summary-links { display: flex; flex-wrap: wrap; gap: .5rem 1rem; margin-top: .85rem; }
.pdx-summary-links a, .pdx-text-cta { color: var(--r-gold-700, #8b651d); font-size: .78rem; font-weight: 800; text-decoration: none; }
.pdx-summary-links a:hover, .pdx-text-cta:hover { color: var(--r-navy-800); text-decoration: underline; }
.pdx-fact-strip { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); margin: 1.15rem 0 0; border: 1px solid #e7ebef; border-radius: 13px; background: #fff; overflow: hidden; }
.pdx-fact { min-width: 0; padding: 1rem 1.1rem; border-right: 1px solid #e7ebef; }
.pdx-fact:last-child { border-right: 0; }
.pdx-fact span { display: block; margin-bottom: .3rem; color: #7a8793; font-size: .69rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.pdx-fact strong { display: block; overflow: hidden; color: var(--r-navy-800); font-size: .88rem; line-height: 1.38; text-overflow: ellipsis; }
.pdx-jump-nav { position: sticky; z-index: 15; top: 0; margin-top: 1.25rem; border-top: 1px solid #e6eaed; border-bottom: 1px solid #e6eaed; background: rgba(255,255,255,.96); backdrop-filter: blur(8px); }
.pdx-jump-nav > div { display: flex; align-items: center; min-height: 54px; gap: clamp(.9rem, 2.3vw, 1.8rem); overflow-x: auto; scrollbar-width: none; }
.pdx-jump-nav > div::-webkit-scrollbar { display: none; }
.pdx-jump-nav a { flex: 0 0 auto; color: #647485; font-size: .83rem; font-weight: 800; text-decoration: none; white-space: nowrap; }
.pdx-jump-nav a:hover { color: var(--r-gold-700, #8b651d); }
.pdx-jump-nav .pdx-jump-cta { margin-left: auto; padding: .52rem .78rem; border-radius: 7px; color: #fff; background: var(--r-navy-800); }
.pdx-jump-nav .pdx-jump-cta:hover { color: #fff; background: var(--r-navy-900); }
.pdx-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(295px, 355px); align-items: start; gap: clamp(2rem, 5vw, 5.5rem); padding-top: clamp(2.8rem, 6vw, 5.25rem); padding-bottom: clamp(3rem, 6vw, 5rem); }
.pdx-content { min-width: 0; }
.pdx-section { scroll-margin-top: 76px; padding: 0 0 clamp(2.6rem, 5vw, 4.25rem); margin-bottom: clamp(2.5rem, 5vw, 4.25rem); border-bottom: 1px solid #e8ecef; }
.pdx-section:last-child { margin-bottom: 0; }
.pdx-section-heading { margin-bottom: 1.35rem; }
.pdx-section-heading > span, .pdx-related-head > div > span { display: block; margin-bottom: .35rem; color: var(--r-gold-700, #8b651d); font-size: .72rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.pdx-section-heading h2, .pdx-related-head h2 { margin: 0; color: var(--r-navy-900); font-family: var(--r-font-display); font-size: clamp(1.65rem, 3vw, 2.2rem); line-height: 1.15; letter-spacing: -.02em; }
.pdx-body { max-width: 73ch; color: #4f6172; font-size: 1rem; line-height: 1.78; }
.pdx-body > :first-child { margin-top: 0; }
.pdx-body h2, .pdx-body h3 { color: var(--r-navy-800); font-family: var(--r-font-display); line-height: 1.25; }
.pdx-body h2 { font-size: 1.45rem; margin: 2rem 0 .7rem; }
.pdx-body h3 { font-size: 1.2rem; margin: 1.6rem 0 .6rem; }
.pdx-body p, .pdx-body ul, .pdx-body ol { margin: 0 0 1.05rem; }
.pdx-body li { margin: .38rem 0; }
.pdx-body table, .pdx-pricing-block .pj-table { width: 100%; border-collapse: collapse; margin: 1rem 0 0; font-size: .9rem; }
.pdx-body th, .pdx-body td, .pdx-pricing-block .pj-table th, .pdx-pricing-block .pj-table td { padding: .75rem .85rem; border: 1px solid #e3e9ed; text-align: left; vertical-align: top; }
.pdx-body thead th, .pdx-pricing-block .pj-table thead th { color: #fff; background: var(--r-navy-800); border-color: var(--r-navy-800); }
.pdx-body tbody tr:nth-child(even), .pdx-pricing-block .pj-table tbody tr:nth-child(even) { background: #f8fafb; }
.pdx-masterplan { margin-top: 2rem; }
.pdx-section-subhead { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: .8rem; }
.pdx-section-subhead h3, .pdx-pricing-block h3 { margin: 0; color: var(--r-navy-800); font-family: var(--r-font-display); font-size: 1.22rem; }
.pdx-section-subhead span { color: #7a8894; font-size: .8rem; }
.pdx-masterplan img { display: block; width: 100%; border: 1px solid #e5eaed; border-radius: 12px; }
.pdx-pricing-block { margin-top: 1.8rem; }
.pdx-trend-wrap .pj-trend { margin: 0; }
.pdx-text-cta { display: inline-flex; gap: .35rem; margin-top: 1.3rem; font-size: .88rem; }
.pdx-amenities { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .72rem; }
.pdx-amenity { display: flex; align-items: center; gap: .75rem; min-height: 62px; padding: .72rem .9rem; border: 1px solid #e4e9ed; border-radius: 10px; color: #405467; font-size: .9rem; font-weight: 700; background: #fff; }
.pdx-amenity-icon { display: grid; place-items: center; width: 28px; height: 28px; flex: none; border-radius: 50%; color: #90702b; background: #faf1dc; }
.pdx-amenity-icon svg { width: 15px; height: 15px; }
.pdx-video { margin-bottom: 1.4rem; }
.pdx-video .pj-video, .pdx-video .pj-video-file { margin: 0; }
.pdx-media-caption { margin: -.75rem 0 1.3rem; color: #73818d; font-size: .82rem; }
.pdx-gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .9rem; }
.pdx-gallery-item { position: relative; display: block; aspect-ratio: 1.35 / 1; overflow: hidden; border-radius: 11px; color: #fff; background: var(--r-navy-900); text-decoration: none; }
.pdx-gallery-item img { width: 100%; height: 100%; display: block; object-fit: cover; transition: transform .35s var(--r-ease, ease); }
.pdx-gallery-item:hover img { transform: scale(1.045); }
.pdx-gallery-item span { position: absolute; right: 0; bottom: 0; left: 0; padding: 1.5rem .75rem .7rem; color: #fff; background: linear-gradient(transparent, rgba(5, 20, 36, .78)); font-size: .78rem; font-weight: 700; }
.pdx-location-copy { margin: -.4rem 0 1.05rem; color: #617182; line-height: 1.6; }
.pdx-location-copy strong { color: var(--r-navy-800); }
.pdx-map .pj-map { margin: 0; border-radius: 12px; overflow: hidden; }
.pdx-progress { display: grid; gap: 1.1rem; }
.pdx-progress-item { padding: 1rem 1.1rem; border: 1px solid #e5e9ed; border-radius: 11px; background: #fff; }
.pdx-progress-head, .pdx-timeline-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.pdx-progress-head h3, .pdx-timeline-head h3 { margin: 0; color: var(--r-navy-800); font-size: 1rem; }
.pdx-progress-head strong { color: var(--r-gold-700, #8b651d); }
.pdx-progress-bar { display: block; width: 100%; height: 8px; margin-top: .55rem; overflow: hidden; border: 0; border-radius: 99px; background: #e8edf0; color: var(--r-gold-600); }
.pdx-progress-bar::-webkit-progress-bar { background: #e8edf0; border-radius: 99px; }
.pdx-progress-bar::-webkit-progress-value { border-radius: 99px; background: linear-gradient(90deg, var(--r-gold-400), var(--r-gold-600)); }
.pdx-progress-bar::-moz-progress-bar { border-radius: 99px; background: linear-gradient(90deg, var(--r-gold-400), var(--r-gold-600)); }
.pdx-progress-item p, .pdx-timeline-item p { margin: .55rem 0 0; color: #677686; font-size: .87rem; line-height: 1.55; }
.pdx-progress-item small { display: block; margin-top: .45rem; color: #87939e; font-size: .72rem; font-weight: 700; }
.pdx-timeline { position: relative; display: grid; gap: 1.15rem; margin-top: 1.55rem; padding-left: 1.5rem; }
.pdx-timeline::before { position: absolute; top: .4rem; bottom: .4rem; left: .32rem; width: 2px; background: #e5eaed; content: ''; }
.pdx-timeline-item { position: relative; }
.pdx-timeline-item::before { position: absolute; top: .31rem; left: -1.5rem; width: .72rem; height: .72rem; border: 2px solid #fff; border-radius: 50%; background: #adb9c2; box-shadow: 0 0 0 2px #dfe6eb; content: ''; }
.pdx-timeline-item.is-done::before { background: #23834e; box-shadow: 0 0 0 2px #bde0ca; }
.pdx-timeline-item.is-in_progress::before { background: var(--r-gold-500); box-shadow: 0 0 0 2px #f1e1bd; }
.pdx-timeline-head time { color: #7e8b96; font-size: .74rem; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; }
.pdx-downloads { display: grid; gap: .75rem; }
.pdx-downloads a { display: grid; grid-template-columns: 37px minmax(0, 1fr) auto; align-items: center; gap: .85rem; padding: .85rem .95rem; border: 1px solid #e2e8ec; border-radius: 10px; color: var(--r-navy-800); text-decoration: none; transition: border-color .2s, transform .2s, box-shadow .2s; }
.pdx-downloads a:hover { border-color: #d2b36d; transform: translateY(-1px); box-shadow: 0 7px 16px rgba(9, 35, 64, .07); }
.pdx-download-icon { display: grid; place-items: center; width: 37px; height: 37px; border-radius: 8px; color: #90702b; background: #faf1dc; }
.pdx-download-icon svg { width: 18px; height: 18px; }
.pdx-downloads strong, .pdx-downloads small { display: block; }
.pdx-downloads strong { font-size: .88rem; }
.pdx-downloads small { margin-top: .12rem; color: #7d8a95; font-size: .72rem; }
.pdx-sidebar { position: sticky; top: 76px; scroll-margin-top: 80px; }
.pdx-inquiry-card { overflow: hidden; border: 1px solid #dfe5e9; border-radius: 15px; background: #fff; box-shadow: 0 15px 38px rgba(9, 31, 54, .09); }
.pdx-inquiry-header { padding: 1.45rem 1.35rem 1.25rem; color: #fff; background: linear-gradient(145deg, var(--r-navy-900), var(--r-navy-700)); }
.pdx-inquiry-header > span { display: block; margin-bottom: .45rem; color: var(--r-gold-400); font-size: .69rem; font-weight: 900; letter-spacing: .11em; text-transform: uppercase; }
.pdx-inquiry-header h2 { margin: 0; color: #fff; font-family: var(--r-font-display); font-size: 1.55rem; line-height: 1.13; }
.pdx-inquiry-header p { margin: .62rem 0 .85rem; color: rgba(255,255,255,.79); font-size: .83rem; line-height: 1.6; }
.pdx-inquiry-header ul { display: grid; gap: .34rem; margin: 0; padding: 0; list-style: none; }
.pdx-inquiry-header li { position: relative; padding-left: 1.15rem; color: rgba(255,255,255,.85); font-size: .78rem; }
.pdx-inquiry-header li::before { position: absolute; top: .32rem; left: .12rem; width: .55rem; height: .3rem; border-bottom: 2px solid var(--r-gold-400); border-left: 2px solid var(--r-gold-400); transform: rotate(-45deg); content: ''; }
.pdx-inquiry-form { padding: 1.1rem 1.15rem 1.2rem; }
.pdx-inquiry-form .rf-field { margin-bottom: .82rem; }
.pdx-inquiry-form .rf-label { margin-bottom: .32rem; color: #405466; font-size: .79rem; }
.pdx-inquiry-form .rf-label small { color: #85919b; font-weight: 500; }
.pdx-inquiry-form .rf-input { min-height: 40px; padding: .57rem .68rem; border-radius: 8px; font-size: .86rem; }
.pdx-inquiry-form textarea.rf-input { min-height: 70px; resize: vertical; }
.pdx-plot-picker { padding: .75rem; border: 1px solid #e4e9ed; border-radius: 9px; }
.pdx-plot-picker legend { padding: 0 .2rem; }
.pdx-plot-hint { display: block; margin: -.05rem 0 .55rem; color: #7a8792; font-size: .72rem; }
.pdx-plot-list { display: grid; gap: .43rem; }
.pdx-plot-list label { display: flex; align-items: flex-start; gap: .52rem; padding: .53rem .55rem; border: 1px solid #e3e8eb; border-radius: 7px; cursor: pointer; }
.pdx-plot-list label:has(input:checked) { border-color: #d1b067; background: #fffbf2; }
.pdx-plot-list input { margin-top: .21rem; accent-color: var(--r-gold-600); }
.pdx-plot-list strong, .pdx-plot-list small { display: block; }
.pdx-plot-list strong { color: #3d5062; font-size: .77rem; }
.pdx-plot-list small { margin-top: .1rem; color: #927129; font-size: .72rem; font-weight: 800; }
.pdx-form-submit { margin-top: .05rem; }
.pdx-form-note { margin: .65rem 0 0; color: #84909a; font-size: .69rem; line-height: 1.45; text-align: center; }
.pdx-inquiry-success { display: flex; gap: .75rem; margin: 1.15rem; padding: 1rem; border-radius: 10px; color: #226840; background: #eaf7ed; }
.pdx-inquiry-success svg { width: 26px; height: 26px; flex: none; }
.pdx-inquiry-success strong { font-size: .9rem; }
.pdx-inquiry-success p { margin: .25rem 0 0; font-size: .82rem; line-height: 1.5; }
.pdx-related { padding: clamp(2.7rem, 6vw, 5rem) 0; border-top: 1px solid #e7ebee; background: #f7f9fa; }
.pdx-related-head { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; }
.pdx-related-head > a { color: var(--r-gold-700, #8b651d); font-size: .86rem; font-weight: 800; text-decoration: none; white-space: nowrap; }
.pdx-related-head > a:hover { color: var(--r-navy-800); }

@media (max-width: 1040px) {
    .pdx-layout { grid-template-columns: minmax(0, 1fr) minmax(275px, 315px); gap: 2rem; }
    .pdx-summary { gap: 1.5rem; margin-right: 1rem; margin-left: 1rem; }
    .pdx-summary-action { padding-left: 1.35rem; }
    .pdx-fact-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .pdx-fact:nth-child(3n) { border-right: 0; }
    .pdx-fact:nth-child(n+4) { border-top: 1px solid #e7ebef; }
}
@media (max-width: 820px) {
    .pdx-showcase-media.has-gallery { grid-template-columns: minmax(0, 1.55fr) minmax(145px, .65fr); min-height: 330px; }
    .pdx-layout { grid-template-columns: 1fr; padding-top: 2.7rem; }
    .pdx-sidebar { position: static; order: -1; }
    .pdx-inquiry-card { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); }
    .pdx-inquiry-header { padding: 1.6rem; }
    .pdx-inquiry-form { padding: 1.15rem; }
    .pdx-inquiry-success { align-self: center; }
}
@media (max-width: 640px) {
    .pdx-showcase { padding-top: .7rem; }
    .pdx-showcase-media, .pdx-showcase-media.has-gallery { min-height: 250px; border-radius: 14px; }
    .pdx-showcase-media.has-gallery { grid-template-columns: 1fr; }
    .pdx-showcase-side { display: none; }
    .pdx-summary { display: block; margin: -1.1rem .55rem 0; padding: 1.1rem; border-radius: 13px; }
    .pdx-summary h1 { font-size: clamp(1.75rem, 9vw, 2.35rem); }
    .pdx-summary-action { margin-top: 1.15rem; padding: 1rem 0 0; border-top: 1px solid #e8ecef; border-left: 0; }
    .pdx-price { font-size: 1.55rem; }
    .pdx-fact-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: .8rem; border-radius: 10px; }
    .pdx-fact { padding: .85rem .8rem; border-top: 1px solid #e7ebef; }
    .pdx-fact:nth-child(-n+2) { border-top: 0; }
    .pdx-fact:nth-child(2n) { border-right: 0; }
    .pdx-fact:nth-child(3n) { border-right: 1px solid #e7ebef; }
    .pdx-fact:last-child { border-right: 0; }
    .pdx-jump-nav { margin-top: .8rem; }
    .pdx-jump-nav > div { min-height: 49px; gap: 1rem; }
    .pdx-jump-nav .pdx-jump-cta { margin-left: 0; }
    .pdx-section { margin-bottom: 2.5rem; padding-bottom: 2.5rem; }
    .pdx-section-heading { margin-bottom: 1rem; }
    .pdx-amenities, .pdx-gallery { grid-template-columns: 1fr; }
    .pdx-gallery-item { aspect-ratio: 1.5 / 1; }
    .pdx-inquiry-card { display: block; }
    .pdx-inquiry-header { padding: 1.35rem 1.15rem; }
    .pdx-section-subhead { display: block; }
    .pdx-section-subhead span { display: block; margin-top: .25rem; }
    .pdx-body { font-size: .96rem; }
    .pdx-body th, .pdx-body td, .pdx-pricing-block .pj-table th, .pdx-pricing-block .pj-table td { padding: .62rem; }
    .pdx-related-head { align-items: flex-start; }
    .pdx-related-head > a { font-size: .78rem; }
}

/* Project image lightbox + dedicated video section. */
.pdx-showcase-primary > a { display: block; width: 100%; height: 100%; cursor: zoom-in; }
.pdx-showcase-thumb { cursor: zoom-in; }
.pdx-video-list { display: grid; gap: 1.3rem; }
.pdx-video { margin: 0; }
.pdx-video .pj-video, .pdx-video .pj-video-file { margin: 0; }
.pdx-video figcaption { padding: .65rem .78rem; color: #697887; border: 1px solid #e5eaed; border-top: 0; border-radius: 0 0 10px 10px; background: #fff; font-size: .81rem; line-height: 1.5; }
.pdx-video .pj-video + figcaption { margin-top: 0; }
body.pdx-lightbox-open { overflow: hidden; }
.pdx-lightbox { position: fixed; z-index: 200; inset: 0; display: flex; align-items: center; justify-content: center; padding: clamp(1rem, 4vw, 3rem); }
.pdx-lightbox[hidden] { display: none; }
.pdx-lightbox-backdrop { position: absolute; z-index: 0; inset: 0; width: 100%; height: 100%; border: 0; background: rgba(3, 14, 27, .91); cursor: zoom-out; }
.pdx-lightbox-frame { position: relative; z-index: 1; display: grid; justify-items: center; max-width: min(1180px, 100%); max-height: 100%; margin: 0; }
.pdx-lightbox-frame img { display: block; max-width: 100%; max-height: calc(100vh - 7rem); width: auto; height: auto; border-radius: 8px; box-shadow: 0 24px 70px rgba(0, 0, 0, .48); object-fit: contain; }
.pdx-lightbox-frame figcaption { max-width: min(780px, 100%); margin-top: .75rem; color: rgba(255, 255, 255, .9); font-size: .88rem; line-height: 1.45; text-align: center; }
.pdx-lightbox-close, .pdx-lightbox-nav { position: absolute; z-index: 2; display: inline-grid; place-items: center; border: 1px solid rgba(255,255,255,.26); color: #fff; background: rgba(12, 31, 51, .7); cursor: pointer; backdrop-filter: blur(5px); transition: background .2s, transform .2s, opacity .2s; }
.pdx-lightbox-close:hover, .pdx-lightbox-nav:hover:not(:disabled) { background: var(--r-navy-900); transform: scale(1.04); }
.pdx-lightbox-close { top: clamp(.85rem, 3vw, 1.5rem); right: clamp(.85rem, 3vw, 1.5rem); width: 42px; height: 42px; border-radius: 50%; font-size: 1.8rem; font-weight: 300; line-height: 1; }
.pdx-lightbox-nav { top: 50%; width: 47px; height: 58px; border-radius: 9px; font-family: Arial, sans-serif; font-size: 2.5rem; font-weight: 300; line-height: 1; transform: translateY(-50%); }
.pdx-lightbox-nav:hover:not(:disabled) { transform: translateY(-50%) scale(1.04); }
.pdx-lightbox-prev { left: clamp(.6rem, 3vw, 2rem); }
.pdx-lightbox-next { right: clamp(.6rem, 3vw, 2rem); }
.pdx-lightbox-nav:disabled { opacity: .34; cursor: default; }
.pdx-lightbox-count { position: absolute; z-index: 2; bottom: clamp(.9rem, 3vw, 1.5rem); left: 50%; padding: .4rem .68rem; border-radius: 999px; color: rgba(255,255,255,.9); background: rgba(12, 31, 51, .7); font-size: .76rem; font-weight: 800; transform: translateX(-50%); }
@media (max-width: 640px) {
    .pdx-lightbox { padding: 1rem .55rem 3.2rem; }
    .pdx-lightbox-frame img { max-height: calc(100vh - 8.5rem); border-radius: 5px; }
    .pdx-lightbox-nav { top: auto; bottom: .7rem; width: 45px; height: 40px; border-radius: 8px; transform: none; font-size: 2rem; }
    .pdx-lightbox-nav:hover:not(:disabled) { transform: scale(1.04); }
    .pdx-lightbox-prev { left: calc(50% - 54px); }
    .pdx-lightbox-next { right: calc(50% - 54px); }
    .pdx-lightbox-count { bottom: 1.7rem; }
}


/* v1.6.5 — public layout reservations and CSP-safe presentation helpers. */
.sx-content-900 { max-width: 900px; }
.sx-content-860 { max-width: 860px; }
.sx-content-640 { max-width: 640px; }
.sx-text-center { text-align: center; }
.af-hero-action { margin: 1.2rem 0 0; }
.bc-hero-title { max-width: 22ch; }
.jb-hero-title, .sv-hero-title { max-width: 24ch; }
.sr-hints-links { justify-content: center; }
.ns-keep-btn { margin-inline-start: .6rem; background: var(--r-navy-800); color: #fff; }
.ns-keep-btn:hover { background: var(--r-navy-900); color: #fff; }
.r-section-paper { background: #fff; border-block: 1px solid var(--r-line); }
.r-home-section-head { max-width: 720px; }
.r-home-pillars { margin-top: 2.5rem; }
.r-home-pillar:nth-child(2) { transition-delay: 70ms; }
.r-home-pillar:nth-child(3) { transition-delay: 140ms; }
.r-home-pillar:nth-child(4) { transition-delay: 210ms; }
.r-cta-eyebrow { justify-content: center; width: 100%; }
