/* ─────────────────────────────────────────────────────────────────────────
   RESIDENCY PROGRAMME — page-specific styles
   Loaded conditionally via functions.php on is_page( 'residency' ).
   Depends on: tokens.css, base.css, components.css, modal.css, style.css.

   Variable mapping from v24 → WP build:
     v24 --cta-live      → var(--hub-residency)
     v24 --cream         → var(--surface-cream)
     v24 --forest        → var(--surface-forest)
     v24 --deep          → var(--surface-deep)
     v24 --serene        → #DAEEDF (mint, hardcoded — promote to token if reused)

   Note: .rp-section-dark is intentionally cream-backed (not dark). v24 inverted
   the Discovery Week section but kept the legacy class name.

   TODO: testimonials, ipnav, faq, vlb-lightbox styles are duplicated here
   from short-stays.css. Extract to components.css after Events page is built
   (it will need them all too).
   ───────────────────────────────────────────────────────────────────── */


/* ── BROW + HEADING UTILITIES (page-scoped helpers) ──────────────────── */
.brow{font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;}
.brow-green{color:var(--hub-residency);}
.brow-light{color:#9FE1CB;}


/* ── SECTION SHELL ────────────────────────────────────────────────────── */
.rp-section{padding:96px 64px;}
.rp-section-inner{max-width:1152px;margin:0 auto;}
.rp-section-white{background:#fff;}
.rp-section-cream{background:var(--surface-cream);}

/* Discovery Week — v24 inverted this from dark to cream; class name kept.
   Section-scoped overrides flip the "light" colors to dark on this cream bg. */
.rp-section-dark{
	background:var(--surface-cream);
	color:var(--on-light-body);
}
.rp-section-dark .rp-h2-light{color:var(--surface-forest);}
.rp-section-dark .brow-light{color:var(--hub-residency);}
.rp-section-dark .rp-cta-light{color:var(--hub-residency);}
.rp-section-dark .rp-cta-light::after{color:var(--hub-residency);}
.rp-section-dark .rp-feature-bar{background:var(--hub-residency);}
.rp-section-dark .rp-feature-h{color:var(--surface-forest);}
.rp-section-dark .rp-feature-p{color:var(--on-light-body);}
.rp-section-dark .rp-feature{border-bottom-color:rgba(27,58,45,.08);}
.rp-section-dark .rp-img-ph-light{color:rgba(27,58,45,.4);}
.rp-section-dark .rp-programme-img-dw{background:linear-gradient(145deg,#E8E3D5,#D9D2BD);}

/* Seasonal Stay — mint backdrop; same dark-text override pattern */
.rp-section-mid{
	background:#DAEEDF;
	color:var(--on-light-body);
}
.rp-section-mid .rp-h2-light{color:var(--surface-forest);}
.rp-section-mid .brow-light{color:var(--hub-residency);}
.rp-section-mid .rp-cta-light{color:var(--hub-residency);}
.rp-section-mid .rp-cta-light::after{color:var(--hub-residency);}
.rp-section-mid .rp-feature-bar{background:var(--hub-residency);}
.rp-section-mid .rp-feature-h{color:var(--surface-forest);}
.rp-section-mid .rp-feature-p{color:var(--on-light-body);}
.rp-section-mid .rp-feature{border-bottom-color:rgba(27,58,45,.08);}
.rp-section-mid .rp-img-ph-light{color:rgba(27,58,45,.4);}
.rp-section-mid .rp-programme-img-sea{background:linear-gradient(145deg,#9FE1CB,#7AC4A6);}


/* ── TYPOGRAPHY HELPERS ──────────────────────────────────────────────── */
.rp-h2{
	font-family:var(--font-heading);
	font-size:clamp(28px,3.5vw,44px);
	font-weight:500;line-height:1.15;
	text-wrap:balance;margin-bottom:20px;
}
.rp-h2-dark{color:var(--on-light-h);}
.rp-h2-light{color:#fff;}
.rp-h3{
	font-family:var(--font-heading);
	font-size:clamp(22px,2.5vw,32px);
	font-weight:500;line-height:1.2;
	text-wrap:balance;margin-bottom:16px;
}
.rp-lead{
	font-size:18px;line-height:1.85;
	color:var(--on-light-body);
	text-wrap:pretty;
	margin-bottom:24px;max-width:640px;
}
.rp-body{
	font-size:17px;line-height:1.85;
	color:var(--on-light-body);
	text-wrap:pretty;
	margin-bottom:20px;
}
.rp-cta{
	font-size:15px;font-weight:500;
	color:var(--hub-residency);
	display:inline-flex;align-items:center;gap:8px;
	min-height:44px;margin-top:auto;
	transition:opacity .2s;
}
.rp-cta::after{content:'\2192';font-size:16px;}
.rp-cta:hover{opacity:.7;}
.rp-cta-light{color:#9FE1CB;}
.rp-cta-light::after{color:#9FE1CB;}


/* ── TWO-COLUMN LAYOUTS ──────────────────────────────────────────────── */
.rp-two-col       {display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center;}
.rp-two-col-wide  {display:grid;grid-template-columns:3fr 2fr;gap:80px;align-items:center;}
.rp-two-col-wide-r{display:grid;grid-template-columns:2fr 3fr;gap:80px;align-items:center;}


/* ── IMAGE PLACEHOLDERS ──────────────────────────────────────────────── */
.rp-img{
	border-radius:12px;
	display:flex;align-items:center;justify-content:center;
	background:linear-gradient(145deg,#DAEEDF,#B0BFA1);
}
.rp-img-overview  {height:420px;}
.rp-img-wellness  {height:480px;}
.rp-img-facilities{height:400px;}
.rp-img-daily     {height:520px;}
.rp-img-dark      {background:linear-gradient(145deg,#2D5C45,#1B3A2D);}
.rp-img-ltl       {border-radius:12px;height:300px;background:linear-gradient(145deg,#9CAE8E,#7E9070);display:flex;align-items:center;justify-content:center;}
.rp-img-ph{
	font-size:10px;letter-spacing:.07em;
	color:rgba(27,58,45,.25);
	text-align:center;line-height:2;
}
.rp-img-ph-light{color:rgba(200,216,192,.2);}


/* ── HERO ─────────────────────────────────────────────────────────────── */
.rp-hero{
	background:var(--surface-forest);
	min-height:88vh;
	display:grid;grid-template-columns:2fr 3fr;
	align-items:center;
	overflow:hidden;
	position:relative;
}
.rp-hero::after{content:'';position:absolute;inset:0;pointer-events:none;z-index:0;}
.rp-hero-copy{
	padding:100px 64px 80px;
	display:flex;flex-direction:column;justify-content:center;
	position:relative;z-index:1;
}
.rp-hero-brow{
	font-size:11px;font-weight:500;letter-spacing:.12em;
	text-transform:uppercase;color:#9FE1CB;
	margin-bottom:20px;
}
.rp-hero-h{
	font-family:var(--font-heading);
	font-size:clamp(40px,5vw,64px);
	font-weight:500;color:#fff;
	line-height:1.1;text-wrap:balance;
	margin-bottom:24px;
}
.rp-hero-sub{
	font-size:18px;color:rgba(200,216,192,.75);
	line-height:1.8;max-width:480px;
	text-wrap:pretty;margin-bottom:40px;
}
.rp-hero-ctas{display:flex;gap:16px;align-items:center;flex-wrap:wrap;}
.rp-hero-cta-primary{
	background:var(--surface-cream);color:var(--surface-forest);
	padding:0 28px;height:52px;
	border-radius:6px;
	font-size:15px;font-weight:500;
	display:inline-flex;align-items:center;
	transition:opacity .2s;cursor:pointer;
}
.rp-hero-cta-primary:hover{opacity:.85;}
.rp-hero-cta-secondary{
	color:#9FE1CB;
	font-size:15px;font-weight:500;
	display:inline-flex;align-items:center;gap:8px;
	height:52px;transition:opacity .2s;cursor:pointer;
}
.rp-hero-cta-secondary::after{content:'\2192';}
.rp-hero-cta-secondary:hover{opacity:.7;}
.rp-hero-img{
	height:88vh;
	background:linear-gradient(160deg,#2D5C45,#1B3A2D);
	display:flex;align-items:center;justify-content:center;
	position:relative;z-index:0;
}
.rp-hero-img-ph{
	font-size:11px;letter-spacing:.07em;
	color:rgba(200,216,192,.2);
	text-align:center;line-height:2;
}

/* Looping hero video. Sits as a child of .rp-hero-img and covers the
   div with object-fit cover. Hidden on mobile to save bandwidth. */
.rp-hero-img .hero-video{
	position:absolute;
	inset:0;
	width:100%;
	height:100%;
	object-fit:cover;
	z-index:0;
}
@media(max-width:860px){
	.rp-hero-img .hero-video{display:none;}
}

/* Desktop only: short gradient overlay on the image's left edge to soften
   the transition from the dark forest copy column to the photo. */
@media(min-width:861px){
	.rp-hero-img::before{
		content:'';
		position:absolute;
		inset:0;
		background:linear-gradient(to right,
			var(--surface-forest) 0%,
			transparent 12%);
		pointer-events:none;
		z-index:1;
	}
}


/* ── IN-PAGE NAV (sticky, scroll spy) ─────────────────────────────────── */
.ipnav{
	position:sticky;top:80px;z-index:90;
	background:var(--surface-cream);
	border-bottom:1px solid rgba(27,58,45,.1);
	min-height:53px;
	display:flex;align-items:stretch;
}
.ipnav-inner{
	display:flex;
	overflow-x:auto;scrollbar-width:none;
	-webkit-overflow-scrolling:touch;
	touch-action:pan-x;
	overscroll-behavior-x:contain;
	padding:0 40px;
}
.ipnav-inner::-webkit-scrollbar{display:none;}
.ipnav-link{
	font-size:13px;font-weight:500;
	color:rgba(27,58,45,.5);
	padding:16px 20px;
	white-space:nowrap;
	border:none;background:none;
	border-bottom:2px solid transparent;
	transition:color .2s,border-color .2s;
	font-family:inherit;cursor:pointer;
	-webkit-appearance:none;
	-webkit-tap-highlight-color:transparent;
	touch-action:manipulation;
}
.ipnav-link:hover{color:var(--on-light-h);}
.ipnav-link.active{
	color:var(--hub-residency);
	border-bottom-color:var(--hub-residency);
}


/* ── WELLNESS ─────────────────────────────────────────────────────────── */
.rp-wellness-list{margin-top:24px;display:flex;flex-direction:column;gap:12px;}
.rp-wellness-item{
	font-size:15px;color:var(--on-light-body);
	padding-left:20px;position:relative;line-height:1.6;
}
.rp-wellness-item::before{
	content:'';position:absolute;left:0;top:9px;
	width:6px;height:6px;border-radius:50%;
	background:var(--hub-residency);
}
.rp-wellness-note{
	font-size:15px;color:var(--on-light-body);
	margin-top:28px;line-height:1.75;
	text-wrap:pretty;
}
.rp-family-note{
	background:var(--surface-cream);
	border-radius:10px;
	padding:24px 28px;
	margin-top:28px;
	border-left:3px solid var(--hub-residency);
}
.rp-family-note-label{
	font-size:12px;font-weight:500;
	letter-spacing:.08em;text-transform:uppercase;
	color:var(--on-cream-label);
	margin-bottom:8px;
}
.rp-family-note-p{
	font-size:15px;color:var(--on-light-body);
	line-height:1.75;text-wrap:pretty;margin:0;
}


/* ── FACILITIES ──────────────────────────────────────────────────────── */
.rp-fac-groups{
	display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
	gap:24px;margin-top:48px;
}
.rp-fac-group{
	background:var(--surface-cream);
	border-radius:12px;padding:28px;
}
.rp-fac-group-icon{
	width:40px;height:40px;border-radius:8px;
	background:var(--surface-forest);
	display:flex;align-items:center;justify-content:center;
	margin-bottom:16px;
}
.rp-fac-group-icon-img{width:20px;height:20px;object-fit:contain;display:block;}
.rp-fac-group-h{
	font-size:15px;font-weight:500;
	color:var(--on-light-h);margin-bottom:16px;
}
.rp-fac-item{
	font-size:14px;color:var(--on-light-body);
	padding:8px 0;
	border-bottom:1px solid rgba(27,58,45,.06);
	line-height:1.4;
}
.rp-fac-item:last-child{border-bottom:none;padding-bottom:0;}


/* ── DAILY LIFE ──────────────────────────────────────────────────────── */
.rp-daily-quote{
	font-family:var(--font-heading);
	font-size:22px;font-weight:500;
	color:var(--on-light-h);
	line-height:1.5;
	border-left:3px solid var(--hub-residency);
	padding-left:24px;
	margin:32px 0;
	text-wrap:balance;
}


/* ── PATHWAY (WAYS TO STAY) ──────────────────────────────────────────── */
.rp-pathway{padding:96px 64px;background:#fff;}
.rp-pathway-inner{max-width:1152px;margin:0 auto;}
.rp-pathway-intro{max-width:600px;margin-bottom:56px;}
.rp-pathway-intro-sub{
	font-size:18px;color:var(--on-light-body);
	line-height:1.75;margin-top:12px;text-wrap:pretty;
}
.rp-pathways{
	display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
	gap:20px;
}
.rp-path-card{
	border:1px solid rgba(27,58,45,.1);
	border-radius:12px;padding:28px;
	display:flex;flex-direction:column;
	transition:border-color .2s;
}
.rp-path-card:hover{border-color:var(--hub-residency);}
.rp-path-num{
	font-family:var(--font-heading);
	font-size:36px;font-weight:500;
	color:rgba(27,58,45,.1);
	line-height:1;margin-bottom:16px;
}
.rp-path-brow{
	font-size:10px;font-weight:500;
	letter-spacing:.12em;text-transform:uppercase;
	color:var(--hub-residency);margin-bottom:8px;
}
.rp-path-h{
	font-family:var(--font-heading);
	font-size:20px;font-weight:500;
	color:var(--on-light-h);
	line-height:1.2;margin-bottom:12px;text-wrap:balance;
}
.rp-path-p{
	font-size:14px;color:var(--on-light-body);
	line-height:1.75;flex:1;
	text-wrap:pretty;margin-bottom:24px;
}
.rp-path-cta{
	font-size:14px;font-weight:500;
	color:var(--hub-residency);
	display:inline-flex;align-items:center;gap:6px;
	min-height:44px;margin-top:auto;
	border-top:1px solid rgba(27,58,45,.08);
	padding-top:16px;width:100%;
	cursor:pointer;
}
.rp-path-cta::after{content:'\2192';}


/* ── DECORATIVE BREAK ────────────────────────────────────────────────── */
.rp-pathway-break{
	width:100%;height:380px;
	background:linear-gradient(145deg,#2D5C45,#1B3A2D 60%,#243F30);
	display:flex;align-items:center;justify-content:center;
	position:relative;overflow:hidden;
}
.rp-pathway-break-ph{
	font-size:11px;letter-spacing:.07em;
	color:rgba(255,255,255,.18);font-style:italic;
	text-align:center;padding:0 24px;line-height:1.8;
}


/* ── DISCOVERY WEEK / SEASONAL STAY (shared programme layout) ────────── */
.rp-programme-layout{
	display:grid;grid-template-columns:2fr 3fr;
	gap:80px;align-items:start;
}
.rp-programme-sub{
	font-size:18px;color:rgba(27,58,45,.55);
	margin-bottom:24px;font-style:italic;
}
.rp-programme-p{
	font-size:17px;color:var(--on-light-body);
	line-height:1.85;text-wrap:pretty;margin-bottom:20px;
}
.rp-programme-features{
	margin-top:32px;
	display:flex;flex-direction:column;gap:20px;
}
.rp-feature{
	display:flex;align-items:flex-start;gap:14px;
	padding-bottom:20px;
	border-bottom:1px solid rgba(200,216,192,.1);
}
.rp-feature-last,
.rp-feature:last-child{border-bottom:none;padding-bottom:0;}
.rp-feature-bar{
	width:3px;min-height:40px;border-radius:2px;
	background:#9FE1CB;flex-shrink:0;margin-top:4px;
}
.rp-feature-h{
	font-size:14px;font-weight:500;color:#fff;
	margin-bottom:4px;
}
.rp-feature-p{
	font-size:13px;color:rgba(200,216,192,.6);
	line-height:1.65;text-wrap:pretty;
}
.rp-programme-img{
	border-radius:12px;
	display:flex;align-items:center;justify-content:center;
	min-height:320px;
}


/* ── LONG-TERM LIVING ────────────────────────────────────────────────── */
.rp-ltl{
	background:#B0BFA1;
	padding:96px 64px;
	color:var(--on-light-body);
}
.rp-ltl-inner{max-width:1152px;margin:0 auto;}
.rp-ltl-quote{
	font-family:var(--font-heading);
	font-size:clamp(22px,2.5vw,32px);font-weight:500;
	color:var(--on-light-h);line-height:1.45;
	border-left:3px solid var(--hub-residency);
	padding-left:28px;
	margin:40px 0;text-wrap:balance;
}
.rp-ltl-img-col{display:flex;flex-direction:column;gap:16px;}
.rp-ltl .brow-light{color:var(--hub-residency);}
.rp-ltl .rp-h2-light{color:var(--surface-forest);}
.rp-ltl .rp-img-ph-light{color:rgba(27,58,45,.4);}

.rp-included{
	margin-top:56px;
	border-top:1px solid rgba(27,58,45,.12);
	padding-top:40px;
}
.rp-included-grid{
	display:grid;grid-template-columns:repeat(3,1fr);
	gap:8px 28px;
	background:#fff;
	margin-top:24px;
	border-radius:16px;
	padding:28px 36px;
}
.rp-included-item{
	display:flex;align-items:center;gap:16px;
	padding:12px 4px;
}
.rp-included-icon{
	width:48px;height:48px;flex-shrink:0;
	color:var(--hub-residency);
	display:flex;align-items:center;justify-content:center;
}
.rp-included-icon svg{width:44px;height:44px;display:block;}
.rp-included-icon-img{width:100%;height:100%;object-fit:contain;display:block;}
.rp-included-text{
	font-size:15px;
	color:var(--on-light-body);
	line-height:1.5;
}


/* ── SUITE TYPES (UNITS) ─────────────────────────────────────────────── */
.rp-units-grid{
	display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
	gap:24px;margin-top:48px;
}

/* Smart desktop stacking — column count adapts to card count so no card sits alone.
   Defaults to 4-col. Specific counts shift to 3-col where 4-col would orphan cards:
     1 card  → 1 col          2 cards → 2 col          3 cards → 3 col
     4 cards → 4 col (def)    5 cards → 3+2            6 cards → 3+3
     7 cards → 4+3 (def)      8 cards → 4+4 (def)      9 cards → 3+3+3
   10+ cards use 4-col default. Tablet/mobile rules below override this entirely. */
@media (min-width:861px){
	.rp-units-grid:has(.rp-unit-card:nth-child(1):last-child){grid-template-columns:1fr;}
	.rp-units-grid:has(.rp-unit-card:nth-child(2):last-child){grid-template-columns:repeat(2,minmax(0,1fr));}
	.rp-units-grid:has(.rp-unit-card:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr));}
	.rp-units-grid:has(.rp-unit-card:nth-child(5):last-child){grid-template-columns:repeat(3,minmax(0,1fr));}
	.rp-units-grid:has(.rp-unit-card:nth-child(6):last-child){grid-template-columns:repeat(3,minmax(0,1fr));}
	.rp-units-grid:has(.rp-unit-card:nth-child(9):last-child){grid-template-columns:repeat(3,minmax(0,1fr));}
}

.rp-unit-card{
	border:1px solid rgba(27,58,45,.1);
	border-radius:12px;overflow:hidden;
	display:flex;flex-direction:column;
}
.rp-unit-img-wrap{
	position:relative;height:220px;
	background:linear-gradient(145deg,#DAEEDF,#B0BFA1);
	flex-shrink:0;overflow:hidden;
	display:flex;align-items:center;justify-content:center;
}
.rp-unit-img-studioplus{background:linear-gradient(145deg,#DAEEDF,#B0BFA1);}
.rp-unit-img-studio    {background:linear-gradient(145deg,#C0DD97,#B0BFA1);}
.rp-unit-img-twobed    {background:linear-gradient(145deg,#B0BFA1,#DAEEDF);}
.rp-unit-img-loft      {background:linear-gradient(145deg,#D9CFAE,#E8E0C5);}
.rp-unit-photo-btn{
	position:absolute;bottom:12px;right:12px;
	background:rgba(255,255,255,.92);
	border:none;border-radius:20px;
	padding:6px 14px;
	font-size:12px;font-weight:500;
	color:#1B3A2D;cursor:pointer;
	display:flex;align-items:center;gap:6px;
	min-height:44px;
	-webkit-tap-highlight-color:transparent;
	touch-action:manipulation;font-family:inherit;
}
.rp-unit-photo-btn svg{width:14px;height:14px;flex-shrink:0;}
.rp-unit-body{padding:24px;display:flex;flex-direction:column;flex:1;}
.rp-unit-name{
	font-family:var(--font-heading);
	font-size:22px;color:var(--on-light-h);margin-bottom:4px;
}
.rp-unit-size{
	font-size:13px;color:rgba(27,58,45,.4);
	margin-bottom:16px;
}
.rp-unit-desc{
	font-size:14px;color:var(--on-light-body);
	line-height:1.75;margin-bottom:20px;
	flex:1;text-wrap:pretty;
}
.rp-unit-cta{
	margin-top:20px;padding-top:16px;
	font-size:14px;font-weight:500;
	color:var(--hub-residency);
	display:inline-flex;align-items:center;gap:6px;
	min-height:44px;
	border-top:1px solid rgba(27,58,45,.08);
}
.rp-unit-cta::after{content:'\2192';}
.rp-units-note{
	font-size:13px;color:rgba(27,58,45,.45);
	margin-top:16px;line-height:1.6;
}


/* ── LEASES (rp-pt) — tabs + rate cards + currency pills ─────────────── */
.rp-pt{
	background:var(--surface-cream);
	padding:32px 64px 80px;
}
/* Tighten unit-section bottom padding so leases reads as continuous cream block */
#units{padding-bottom:32px;}
.rp-pt-inner{max-width:1152px;margin:0 auto;}
.rp-pt-period{
	font-size:13px;color:rgba(27,58,45,.5);
	margin-top:-4px;margin-bottom:32px;
}
.rp-pt-tabs{
	display:flex;gap:4px;
	background:rgba(27,58,45,.08);
	border-radius:8px;padding:4px;
	margin-bottom:32px;width:fit-content;
}
.rp-pt-tab{
	padding:10px 24px;
	border:none;border-radius:6px;
	font-size:14px;font-weight:500;
	cursor:pointer;
	color:rgba(27,58,45,.5);background:none;
	font-family:inherit;
	transition:all .2s;
	-webkit-appearance:none;
	-webkit-tap-highlight-color:transparent;
	touch-action:manipulation;
	white-space:nowrap;
}
.rp-pt-tab.active{background:#fff;color:var(--on-light-h);}

.rp-pt-panel{display:none;}
.rp-pt-panel.active{display:block;}

.rp-pt-grid{
	display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
	gap:24px;margin-bottom:16px;
}
.rp-pt-card{
	background:#fff;
	padding:24px;
	border-radius:10px;
}
.rp-pt-card-name{font-size:16px;font-weight:500;color:var(--on-light-h);margin-bottom:4px;}
.rp-pt-card-size{font-size:13px;color:rgba(27,58,45,.35);margin-bottom:16px;}
.rp-pt-card-from{font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:rgba(27,58,45,.45);margin-bottom:4px;}
.rp-pt-card-amount{font-family:var(--font-heading);font-size:30px;color:var(--on-light-h);line-height:1;}
.rp-pt-card-amount.tbc{color:rgba(27,58,45,.3);font-size:24px;}
.rp-pt-card-per{font-size:12px;color:rgba(27,58,45,.5);margin-top:6px;}

.rp-pt-pills{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px;}
.rp-pt-pill{
	padding:5px 14px;border-radius:20px;
	background:var(--surface-cream);
	border:1px solid rgba(27,58,45,.1);
	font-size:13px;color:var(--on-light-body);
	cursor:pointer;font-family:inherit;
	-webkit-appearance:none;
	-webkit-tap-highlight-color:transparent;
	touch-action:manipulation;
}
.rp-pt-pill.active{
	background:var(--surface-forest);
	color:#fff;
	border-color:var(--surface-forest);
}
.rp-pt-note{
	font-size:12px;color:rgba(27,58,45,.45);
	margin-top:10px;
}
.rp-pt-policy{
	font-size:12px;color:rgba(27,58,45,.45);
	margin-top:2px;
	line-height:1.55;
}
.rp-pt-policy a{
	color:var(--hub-residency);
	text-decoration:underline;
	text-underline-offset:2px;
}
.rp-pt-policy a:hover{opacity:.8;}


/* ── LEASE PROCESS (LP) — 5-step horizontal accordion ────────────────── */
.lp-tabs{
	display:grid;grid-template-columns:repeat(5,minmax(0,1fr));
	gap:0;
	border-top:1px solid rgba(27,58,45,.1);
	border-bottom:1px solid rgba(27,58,45,.1);
	margin-top:48px;
}
.lp-tab{
	background:none;border:none;cursor:pointer;
	padding:24px 16px;
	display:flex;flex-direction:column;align-items:flex-start;gap:8px;
	text-align:left;
	border-right:1px solid rgba(27,58,45,.08);
	transition:background .2s;
	font-family:inherit;
	-webkit-tap-highlight-color:transparent;
	touch-action:manipulation;
	-webkit-appearance:none;
	width:100%;min-height:44px;
}
.lp-tab:last-child{border-right:none;}
.lp-tab:hover{background:rgba(59,109,17,.04);}
.lp-tab.active{background:rgba(59,109,17,.06);}
.lp-tab.active .lp-tab-num{
	background:var(--hub-residency);
	color:#fff;border-color:var(--hub-residency);
}
.lp-tab.active .lp-tab-title{color:var(--surface-forest);}
.lp-tab-num{
	width:28px;height:28px;border-radius:50%;
	background:transparent;
	border:1.5px solid rgba(27,58,45,.2);
	color:var(--on-light-body);
	display:flex;align-items:center;justify-content:center;
	font-family:var(--font-heading);
	font-size:14px;font-weight:500;
	transition:background .2s, color .2s, border-color .2s;
	flex-shrink:0;
}
.lp-tab-title{
	font-size:14px;font-weight:500;
	color:var(--on-light-body);
	line-height:1.3;text-wrap:balance;
	transition:color .2s;
}
.lp-panels{position:relative;min-height:160px;}
.lp-panel{display:none;padding:32px 16px 8px;}
.lp-panel.active{display:block;animation:lpFadeIn .25s ease;}
@keyframes lpFadeIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:translateY(0);}}
.lp-panel-content{
	display:grid;grid-template-columns:1fr 1.5fr;
	gap:32px;align-items:start;
}
.lp-panel-h{
	font-family:var(--font-heading);
	font-size:24px;font-weight:500;
	color:var(--surface-forest);
	line-height:1.2;text-wrap:balance;
}
.lp-panel-p{
	font-size:16px;color:var(--on-light-body);
	line-height:1.85;text-wrap:pretty;margin:0;
}
.lp-panel-p a{color:var(--hub-residency);}
.lp-next{
	margin-top:20px;
	background:none;border:none;cursor:pointer;padding:0;
	font-family:inherit;font-size:14px;font-weight:500;
	color:var(--hub-residency);
	display:inline-flex;align-items:center;gap:6px;min-height:44px;
	-webkit-tap-highlight-color:transparent;touch-action:manipulation;-webkit-appearance:none;
	transition:opacity .2s;
}
.lp-next::after{content:'\2192';}
.lp-next:hover{opacity:.65;}

.rp-apply-note{
	background:var(--surface-cream);
	border-radius:12px;
	padding:32px;margin-top:48px;
	display:grid;grid-template-columns:1fr 1fr;gap:32px;
}
.rp-apply-note-h{
	font-size:12px;font-weight:500;
	letter-spacing:.08em;text-transform:uppercase;
	color:var(--on-cream-label);
	margin-bottom:6px;
}
.rp-apply-note-p{
	font-size:14px;color:var(--on-light-body);
	line-height:1.65;
}
.rp-apply-note-p a{
	color:var(--hub-residency);
	text-decoration:underline;
	text-underline-offset:2px;
}
.rp-apply-note-p a:hover{opacity:.8;}


/* ── FAQ (.faq-* prefix — harmonised) ────────────────────────────────── */
.rp-faq-inner{max-width:800px;}

.faq-toggle-section{
	display:flex;align-items:center;justify-content:space-between;
	cursor:pointer;padding:0;
	background:none;border:none;
	width:100%;font-family:inherit;
	text-align:left;
	-webkit-tap-highlight-color:transparent;
	touch-action:manipulation;
	-webkit-appearance:none;
}
.faq-section-h{margin:0;}
.faq-toggle-icon{
	font-size:13px;font-weight:500;
	color:var(--hub-residency);
	display:flex;align-items:center;gap:8px;
	white-space:nowrap;flex-shrink:0;
}
.faq-toggle-icon::after{content:'\2193';transition:transform .25s;}
.faq-toggle-section[aria-expanded="true"] .faq-toggle-icon::after{transform:rotate(180deg);}

.faq-collapsible{
	max-height:0;overflow:hidden;
	transition:max-height .4s ease;
}
.faq-collapsible.open{max-height:4000px;}

.faq-list{margin-top:32px;}
.faq-item{
	border-bottom:1px solid rgba(27,58,45,.1);
}
.faq-trigger{
	width:100%;text-align:left;
	padding:24px 0;
	background:none;border:none;
	font-family:inherit;cursor:pointer;
	display:flex;align-items:center;justify-content:space-between;gap:16px;
	font-size:16px;font-weight:500;
	color:var(--on-light-h);
	-webkit-tap-highlight-color:transparent;
	touch-action:manipulation;
	-webkit-appearance:none;
}
.faq-trigger:hover{color:var(--hub-residency);}
.faq-icon{
	font-size:20px;
	color:var(--hub-residency);
	flex-shrink:0;
	transition:transform .25s;
	font-weight:300;
}
.faq-trigger[aria-expanded="true"] .faq-icon{transform:rotate(45deg);}
.faq-answer{
	max-height:0;overflow:hidden;
	transition:max-height .3s ease;
}
.faq-answer-inner{
	padding-bottom:24px;
	font-size:16px;color:var(--on-light-body);
	line-height:1.8;text-wrap:pretty;
}
.faq-answer-inner a{color:var(--hub-residency);}
.faq-trigger[aria-expanded="true"] + .faq-answer{max-height:600px;}


/* ── BUTTON RESET FOR LINK-STYLE CTAS ─────────────────────────────────
   Several CTA classes are used on both <a> and <button> elements
   (anchors for in-page scroll links, buttons for modal triggers).
   These rules strip browser default button styles so both render
   identically. They don't affect anchor tags.
   ───────────────────────────────────────────────────────────────────── */
button.rp-cta,
button.rp-cta-light,
button.rp-path-cta,
button.rp-unit-cta,
button.rp-btm-cta{
	background:none;
	border:none;
	padding:0;
	font-family:inherit;
	cursor:pointer;
	text-align:left;
	-webkit-appearance:none;
	-webkit-tap-highlight-color:transparent;
	touch-action:manipulation;
}
button.rp-hero-cta-primary,
button.rp-hero-cta-secondary{
	border:none;
	font-family:inherit;
	cursor:pointer;
	-webkit-appearance:none;
	-webkit-tap-highlight-color:transparent;
	touch-action:manipulation;
}


/* ── BOTTOM CTA ──────────────────────────────────────────────────────── */
.rp-bottom-cta{
	background:var(--surface-cream);
	padding:80px 64px;
	border-top:1px solid rgba(27,58,45,.08);
}
.rp-bottom-cta-inner{
	max-width:1152px;margin:0 auto;
	display:grid;grid-template-columns:1fr 1fr;gap:2px;
}
.rp-btm-col{
	padding:40px;background:#fff;
	display:flex;flex-direction:column;
}
.rp-btm-col:first-child{border-radius:12px 0 0 12px;}
.rp-btm-col:last-child{border-radius:0 12px 12px 0;}
.rp-btm-label{
	font-size:10px;font-weight:500;
	letter-spacing:.12em;text-transform:uppercase;
	color:var(--on-cream-label);
	margin-bottom:12px;
}
.rp-btm-h{
	font-family:var(--font-heading);
	font-size:24px;color:var(--on-light-h);
	margin-bottom:12px;text-wrap:balance;
}
.rp-btm-p{
	font-size:15px;color:var(--on-light-body);
	line-height:1.75;margin-bottom:24px;text-wrap:pretty;
}
.rp-btm-cta{
	font-size:15px;font-weight:500;
	color:var(--hub-residency);
	display:inline-flex;align-items:center;gap:8px;
	min-height:44px;margin-top:auto;
}
.rp-btm-cta::after{content:'\2192';}


/* ── TESTIMONIALS (duplicated from short-stays.css; extract later) ───── */
.testimonials{
	background:var(--surface-cream);
	padding:80px 64px;
}
.testi-inner{max-width:1152px;margin:0 auto;}
.testi-header{
	display:flex;align-items:center;justify-content:space-between;
	margin-bottom:32px;
}
.testi-h{
	font-family:var(--font-heading);
	font-size:36px;font-weight:500;
	color:var(--on-light-h);text-wrap:balance;
}
.testi-track{
	display:flex;gap:20px;
	overflow-x:scroll;
	scroll-snap-type:x mandatory;
	-webkit-overflow-scrolling:touch;
	scroll-behavior:smooth;
	scrollbar-width:none;
	padding-bottom:4px;
}
.testi-track::-webkit-scrollbar{display:none;}
@media(min-width:861px){
	.testi-track{justify-content:safe center;}
	.testi-track.has-overflow{justify-content:flex-start;}
}
.testi-card{
	min-width:340px;max-width:340px;
	border-radius:12px;overflow:hidden;
	border:1px solid rgba(27,58,45,.1);
	flex-shrink:0;
	display:flex;flex-direction:column;
	background:#fff;
	scroll-snap-align:start;
}
.testi-img{
	height:180px;flex-shrink:0;
	position:relative;
	display:flex;align-items:center;justify-content:center;
}
.testi-img--highlight{background:#B0BFA1;}
.testi-pull{
	font-family:var(--font-heading);
	font-size:18px;font-weight:400;
	color:#1B3A2D;
	line-height:1.5;text-align:center;
	padding:0 28px;text-wrap:balance;
}
.testi-body{
	padding:24px;
	display:flex;flex-direction:column;flex:1;
}
.testi-bar{
	width:24px;height:2px;border-radius:1px;
	margin-bottom:14px;flex-shrink:0;
}
.testi-bar-residency{background:var(--hub-residency);}
.testi-quote{
	font-family:var(--font-heading);
	font-size:15px;font-weight:400;
	color:var(--on-light-h);
	line-height:1.7;flex:1;margin-bottom:14px;text-wrap:pretty;
}
.testi-name{font-size:13px;font-weight:500;color:var(--on-light-h);}
.testi-attr{font-size:12px;color:var(--on-cream-label);margin-top:2px;}
.testi-dots{display:flex;gap:7px;margin-top:24px;justify-content:center;}
.testi-dot{
	cursor:pointer;background:none;border:none;
	padding:4px;
	width:7px;height:7px;border-radius:50%;
	background:rgba(27,58,45,.2);
	transition:background .2s;
	-webkit-tap-highlight-color:transparent;
}
.testi-dot.active{background:var(--on-light-h);}


/* ── SUITE LIGHTBOX (duplicated from short-stays.css; extract later) ── */
.vlb-overlay{
	display:none;
	position:fixed;inset:0;
	background:rgba(0,0,0,.92);
	z-index:500;
	align-items:center;justify-content:center;
}
.vlb-overlay.open{display:flex;}
.vlb-box{
	background:#fff;
	border-radius:12px;overflow:hidden;
	width:min(920px,94vw);max-height:90vh;
	display:grid;grid-template-columns:1fr 360px;
}
.vlb-img-side{
	background:var(--surface-forest);
	display:flex;flex-direction:column;
	position:relative;
}
.vlb-img-main{
	flex:1;
	display:flex;align-items:center;justify-content:center;
	background:linear-gradient(145deg,#2D5C45,#1B3A2D);
	min-height:360px;
}
.vlb-img-ph{
	font-size:10px;letter-spacing:.07em;
	color:rgba(200,216,192,.2);
	text-align:center;
}
.vlb-arrow{
	position:absolute;top:50%;
	transform:translateY(-50%);
	width:44px;height:44px;
	background:rgba(255,255,255,.12);
	border:none;color:#fff;
	font-size:20px;cursor:pointer;
	display:flex;align-items:center;justify-content:center;
	border-radius:50%;
	transition:background .2s;
	-webkit-tap-highlight-color:transparent;
}
.vlb-arrow:hover{background:rgba(255,255,255,.25);}
.vlb-arrow-l{left:12px;}
.vlb-arrow-r{right:12px;}
.vlb-thumbs{
	display:flex;gap:6px;padding:10px 12px;
	overflow-x:auto;scrollbar-width:none;
	background:rgba(0,0,0,.3);
}
.vlb-thumbs::-webkit-scrollbar{display:none;}
.vlb-thumb{
	width:48px;height:36px;border-radius:4px;
	flex-shrink:0;cursor:pointer;
	border:2px solid transparent;
	background:rgba(255,255,255,.15);
	transition:border-color .15s;
	-webkit-tap-highlight-color:transparent;
	-webkit-appearance:none;
}
.vlb-thumb.active{border-color:#9FE1CB;}
.vlb-info-side{
	padding:32px;
	display:flex;flex-direction:column;
	overflow-y:auto;
}
.vlb-close{
	align-self:flex-end;
	width:44px;height:44px;
	background:none;
	border:1px solid rgba(27,58,45,.15);
	border-radius:50%;
	font-size:18px;
	color:var(--on-light-h);
	cursor:pointer;
	display:flex;align-items:center;justify-content:center;
	-webkit-tap-highlight-color:transparent;
}
.vlb-suite-tag{
	font-size:10px;font-weight:500;
	letter-spacing:.1em;text-transform:uppercase;
	color:var(--hub-residency);
	margin-top:16px;margin-bottom:4px;
}
.vlb-counter{
	font-family:var(--font-heading);
	font-size:16px;color:rgba(27,58,45,.35);
	margin-bottom:16px;
}
.vlb-photo-name{
	font-family:var(--font-heading);
	font-size:22px;color:var(--on-light-h);
	margin-bottom:8px;
}
.vlb-photo-desc{
	font-size:14px;color:var(--on-light-body);
	line-height:1.75;flex:1;
}


/* ═════════════════════════════════════════════════════════════════════
   RESPONSIVE — tablet (≤860px)
   ═════════════════════════════════════════════════════════════════════ */
@media(max-width:860px){
	.rp-section{padding:64px 24px;}
	.rp-body, .rp-lead{font-size:18px;}

	/* Hero on mobile: stacked. Image in its own zone above (grid-row:1),
	   copy in dark forest band below (grid-row:2). No darkening overlay —
	   photo is the photo. Focal point dropdown per image field handles
	   which part of the photo shows when the zone crops to cover. */
	.rp-hero{
		grid-template-columns:1fr;
		grid-template-rows:auto auto;
		min-height:auto;
		align-items:stretch;
	}
	.rp-hero::after{
		background:none;
	}
	.rp-hero-img{
		grid-row:1;
		position:relative;
		width:100%;
		height:60vh;
		min-height:360px;
		max-height:580px;
	}
	.rp-hero-copy{
		grid-row:2;
		position:relative;
		z-index:auto;
		padding:48px 24px 56px;
		width:100%;
	}
	.rp-hero-h{font-size:clamp(32px,8vw,52px);}
	.rp-hero-ctas{flex-direction:column;align-items:flex-start;}
	.rp-hero-cta-primary{width:100%;justify-content:center;height:56px;font-size:16px;}
	.rp-hero-cta-secondary{height:56px;font-size:16px;}

	/* Two-col layouts stack — copy always first */
	.rp-two-col,
	.rp-two-col-wide,
	.rp-two-col-wide-r{grid-template-columns:1fr;gap:40px;}

	/* Photos reduce on mobile (per memory rule) */
	.rp-img-overview,
	.rp-img-wellness,
	.rp-img-facilities,
	.rp-img-daily,
	.rp-img-ltl{height:220px !important;min-height:unset !important;}

	/* IPnav clears the shorter mobile nav */
	.ipnav{top:64px;}
	.ipnav-inner{padding:0 16px;}
	.ipnav-link{padding:14px 14px;font-size:14px;}

	/* Facilities → single column */
	.rp-fac-groups{grid-template-columns:1fr;}

	/* Pathway → 2 columns on tablet */
	.rp-pathway{padding:64px 24px;}
	.rp-pathways{grid-template-columns:1fr 1fr;}

	/* Decorative break */
	.rp-pathway-break{height:240px;}

	/* Programme layout */
	.rp-programme-layout{grid-template-columns:1fr;gap:40px;}
	.rp-programme-features{margin-top:24px;}
	.rp-feature{padding-bottom:16px;}

	/* Long-term living */
	.rp-ltl{padding:64px 24px;}

	/* Units → 2 columns on tablet */
	.rp-units-grid{grid-template-columns:1fr 1fr;}

	/* Included grid → 2 columns */
	.rp-included-grid{grid-template-columns:1fr 1fr;padding:24px 28px;}
	.rp-included-icon{width:28px;height:28px;}
	.rp-included-icon svg{width:26px;height:26px;}
	.rp-included-item{gap:12px;}

	/* Leases */
	.rp-pt{padding:24px 24px 64px;}
	#units{padding-bottom:24px;}
	.rp-pt-tabs{width:100%;}
	.rp-pt-tab{flex:1;min-width:0;padding:10px 8px;font-size:13px;white-space:normal;text-align:center;line-height:1.25;text-wrap:balance;display:flex;align-items:center;justify-content:center;}
	.rp-pt-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
	.rp-pt-card{padding:20px 18px;}
	.rp-pt-card-amount{font-size:26px;}

	/* Lease process */
	.lp-tab-title{display:none;}
	.lp-tab{padding:18px 8px;align-items:center;}
	.lp-panel{padding:24px 0 8px;}
	.lp-panel-content{grid-template-columns:1fr;gap:12px;}
	.lp-panel-h{font-size:22px;}

	/* FAQ */
	.faq-toggle-section{flex-direction:column;align-items:flex-start;gap:16px;}
	.faq-trigger{padding:20px 0;font-size:17px;}
	.faq-icon{font-size:22px;}

	/* Lease process notes */
	.rp-apply-note{grid-template-columns:1fr;}

	/* Bottom CTA */
	.rp-bottom-cta{padding:56px 24px;}
	.rp-bottom-cta-inner{grid-template-columns:1fr;gap:2px;}
	.rp-btm-col:first-child{border-radius:12px 12px 0 0;}
	.rp-btm-col:last-child{border-radius:0 0 12px 12px;}

	/* Testimonials */
	.testimonials{padding:64px 24px;}
	.testi-card{min-width:280px;max-width:280px;}

	/* Lightbox */
	.vlb-box{grid-template-columns:1fr;max-height:95vh;}
	.vlb-img-side{min-height:240px;}
	.vlb-info-side{padding:20px;}
}


/* ═════════════════════════════════════════════════════════════════════
   RESPONSIVE — mobile (≤480px)
   ═════════════════════════════════════════════════════════════════════ */
@media(max-width:480px){
	.testimonials{padding:48px 20px;}
	.rp-section{padding:48px 20px;}
	.rp-h2{font-size:clamp(26px,6vw,36px);}
	.rp-h3{font-size:clamp(20px,5vw,28px);}

	.rp-pathway-break{height:180px;}
	.rp-pathways{grid-template-columns:1fr;}

	/* Single-column grids */
	.rp-units-grid{grid-template-columns:1fr;}
	.rp-pt-grid{grid-template-columns:1fr;}
	.rp-included-grid{grid-template-columns:1fr 1fr;padding:18px 14px;gap:6px;}
	.rp-included-item{flex-direction:column;align-items:center;text-align:center;gap:8px;padding:14px 8px;}
	.rp-included-icon{width:30px;height:30px;}
	.rp-included-icon svg{width:28px;height:28px;}
	.rp-included-text{font-size:13.5px;line-height:1.35;}
	.rp-pt-tab{font-size:12px;padding:10px 6px;}
}


/* ═════════════════════════════════════════════════════════════════════
   ILLUSTRATION CLUSTERS — section-heading sidecars
   Cluster image sits to the right of section intro copy (brow + h2 +
   sub) on desktop. Hidden on mobile to keep the layout focused.
   Same primitive as Short Stays direct-booking cluster.
   ═════════════════════════════════════════════════════════════════════ */

/* Two-column intro wrapper: copy left, cluster right.
   Applied to the wrapper that surrounds an existing .rp-pathway-intro
   or inline intro (brow + h2 + .rp-lead). */
.rp-intro-with-cluster{
	display:grid;
	grid-template-columns:1fr auto;
	gap:48px;
	align-items:start;
	margin-bottom:56px;
}
/* The intro block keeps its own max-width constraint so the cluster
   doesn't push the copy too wide on intermediate viewports. */
.rp-intro-with-cluster > .rp-pathway-intro{
	margin-bottom:0;
}

/* Cluster slot — same primitive as Short Stays.
   Width: clamp(180px, 20vw, 260px) → ~230px in a 1152px container.
   Aspect: 1:1. Both overridable per-instance via inline CSS variables.
   Dashed border + label shown while empty; both stripped when populated. */
.cluster-slot{
	width:var(--cluster-w, clamp(180px,20vw,260px));
	aspect-ratio:var(--cluster-aspect, 1);
	border:1.5px dashed rgba(27,58,45,.22);
	border-radius:12px;
	display:flex;align-items:center;justify-content:center;
	flex-shrink:0;
	background-repeat:no-repeat;
	background-position:center;
	background-size:contain;
	pointer-events:none;
	position:relative;
}
.cluster-slot::before{
	content:'Illustration cluster';
	font-size:11px;letter-spacing:.1em;
	text-transform:uppercase;
	color:rgba(27,58,45,.4);
	font-family:var(--font-body, 'DM Sans', sans-serif);
}
.cluster-slot.is-populated{border:none;}
.cluster-slot.is-populated::before{display:none;}

.cluster-img-single{
	width:100%;
	height:100%;
	object-fit:contain;
	display:block;
	pointer-events:none;
	user-select:none;
}

/* Hide clusters on mobile — cards below already carry the section.
   Two-column intro wrapper collapses back to a single column so the
   intro copy reads naturally. */
@media(max-width:860px){
	.rp-intro-with-cluster{
		grid-template-columns:1fr;
		gap:0;
	}
	.cluster-slot{display:none;}
}

/* ============================================================
   ACF wrapper rules — body copy is now editable via wysiwyg
   fields that render <p> children. These rules target the
   wrapper div so the prose styling stays identical to the
   original .rp-body / .rp-programme-p / .rp-family-note-p.
============================================================ */

/* Mirrors .rp-body (Overview, Wellness, Facilities, Daily life) */
.rp-overview-body p,
.rp-wellness-body p,
.rp-facilities-body p,
.rp-daily-body-top p,
.rp-daily-body-bottom p{
	font-size:17px;
	line-height:1.85;
	color:var(--on-light-body);
	text-wrap:pretty;
	margin-bottom:20px;
}
.rp-overview-body p:last-child,
.rp-wellness-body p:last-child,
.rp-facilities-body p:last-child,
.rp-daily-body-top p:last-child,
.rp-daily-body-bottom p:last-child{
	margin-bottom:0;
}

/* Mirrors .rp-programme-p (Discovery Week, Seasonal stay, Long-term living) */
.rp-programme-body p,
.rp-ltl-body-top p,
.rp-ltl-body-bottom p{
	font-size:17px;
	color:var(--on-light-body);
	line-height:1.85;
	text-wrap:pretty;
	margin-bottom:20px;
}
.rp-programme-body p:last-child,
.rp-ltl-body-top p:last-child,
.rp-ltl-body-bottom p:last-child{
	margin-bottom:0;
}

/* Mirrors .rp-family-note-p (Wellness — family note box) */
.rp-family-note-body p{
	font-size:15px;
	color:var(--on-light-body);
	line-height:1.75;
	text-wrap:pretty;
	margin:0;
}
.rp-family-note-body p + p{
	margin-top:14px;
}