:root{
  --navy:#0B1E33;
  --navy-2:#132B47;
  --ink:#1A2229;
  --ink-soft:#5B6770;
  --paper:#FBFAF7;
  --line:#E4E1D9;
  --teal:#1F6F63;
  --teal-light:#E9F2F0;
  --gold:#B08D4F;
  --white:#FFFFFF;
  --radius:14px;
  --max:1240px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:'Inter',system-ui,sans-serif;
  color:var(--ink);
  background:var(--paper);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{font-family:'Fraunces',serif;font-weight:500;letter-spacing:-0.01em;color:var(--navy)}
a{text-decoration:none;color:inherit}
img{max-width:100%;display:block}
.wrap{max-width:var(--max);margin:0 auto;padding:0 28px}
.eyebrow{font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--teal);font-weight:600}

header{position:sticky;top:0;z-index:50;background:rgba(251,250,247,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.nav-inner{display:flex;align-items:center;justify-content:space-between;height:76px}
.logo{font-family:'Fraunces',serif;font-size:21px;font-weight:600;color:var(--navy);display:flex;align-items:center;gap:8px}
.logo .dot{width:8px;height:8px;border-radius:50%;background:var(--teal);display:inline-block}
nav ul{display:flex;gap:34px;list-style:none}
nav a{font-size:14.5px;font-weight:500;color:var(--ink);opacity:.85}
nav a:hover{opacity:1;color:var(--teal)}
.nav-cta{display:flex;gap:12px;align-items:center}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 22px;border-radius:999px;font-size:14.5px;font-weight:600;border:1px solid transparent;cursor:pointer;transition:.15s}
.btn-primary{background:var(--navy);color:#fff}
.btn-primary:hover{background:var(--navy-2)}
.btn-ghost{border-color:var(--line);color:var(--navy)}
.btn-ghost:hover{border-color:var(--navy)}
@media(max-width:900px){nav ul{display:none}}

.hero{padding:88px 0 64px;position:relative;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:center}
.hero h1{font-size:52px;line-height:1.08;margin:18px 0 20px}
.hero p.lead{font-size:19px;color:var(--ink-soft);max-width:520px;margin-bottom:34px}
.search-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:0 20px 50px -30px rgba(11,30,51,.35)}
.search-row{display:flex;gap:10px;flex-wrap:wrap}
.search-row input, .search-row select{flex:1;min-width:160px;padding:14px 16px;border:1px solid var(--line);border-radius:10px;font-size:15px;font-family:inherit;background:var(--paper)}
.search-row button{border:none;background:var(--teal);color:#fff;font-weight:600;border-radius:10px;padding:14px 24px;font-size:15px;cursor:pointer}
.search-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.chip{font-size:12.5px;padding:6px 12px;border-radius:999px;background:var(--teal-light);color:var(--teal);font-weight:600}
.hero-stats{display:flex;gap:34px;margin-top:36px}
.hero-stats div b{display:block;font-family:'Fraunces',serif;font-size:26px;color:var(--navy)}
.hero-stats div span{font-size:13px;color:var(--ink-soft)}
.hero-visual{background:linear-gradient(160deg,var(--navy),var(--navy-2));border-radius:20px;height:460px;position:relative;overflow:hidden;display:flex;align-items:flex-end;padding:32px;color:#fff}
.hero-visual .badge{position:absolute;top:24px;right:24px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);border-radius:999px;padding:8px 16px;font-size:12.5px}
.hero-visual p{font-size:15px;opacity:.85;max-width:320px}

.trust-bar{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:26px 0;background:#fff}
.trust-bar .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:20px}
.trust-item{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--ink-soft);font-weight:500}
.trust-item svg{flex-shrink:0}

section{padding:90px 0}
.section-head{max-width:640px;margin-bottom:50px}
.section-head h2{font-size:36px;margin-top:12px}
.section-head p{color:var(--ink-soft);font-size:17px;margin-top:14px}

.cat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}
.cat-card{border:1px solid var(--line);border-radius:var(--radius);padding:26px 20px;background:#fff;transition:.15s}
.cat-card:hover{border-color:var(--teal);transform:translateY(-3px);box-shadow:0 14px 30px -20px rgba(11,30,51,.3)}
.cat-card .n{font-family:'Fraunces',serif;font-size:15px;color:var(--navy);margin-bottom:6px}
.cat-card .d{font-size:13px;color:var(--ink-soft)}
@media(max-width:1000px){.cat-grid{grid-template-columns:repeat(2,1fr)}}

.why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.why-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:30px}
.why-card .ico{width:44px;height:44px;border-radius:10px;background:var(--teal-light);display:flex;align-items:center;justify-content:center;margin-bottom:18px}
.why-card h3{font-size:19px;margin-bottom:10px}
.why-card p{font-size:14.5px;color:var(--ink-soft)}
@media(max-width:900px){.why-grid{grid-template-columns:1fr}}

.compare{background:var(--navy);color:#fff;border-radius:24px;padding:56px;display:grid;grid-template-columns:1fr 1fr;gap:40px}
.compare h2{color:#fff;font-size:30px}
.compare-table{width:100%;border-collapse:collapse;font-size:14.5px}
.compare-table td{padding:12px 0;border-bottom:1px solid rgba(255,255,255,.12)}
.compare-table td:first-child{color:rgba(255,255,255,.6)}
.compare-table td:last-child{text-align:right;font-weight:600;color:#fff}
.check{color:#5FD1B5}
@media(max-width:900px){.compare{grid-template-columns:1fr;padding:36px 24px}}

.provider-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.provider-card{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#fff}
.provider-card .img{height:170px;background:linear-gradient(135deg,var(--teal-light),#dfeee9)}
.provider-card .body{padding:22px}
.provider-card .tag{font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);font-weight:700}
.provider-card h3{font-size:19px;margin:8px 0 6px}
.provider-card p{font-size:13.5px;color:var(--ink-soft);margin-bottom:14px}
.provider-card .meta{display:flex;gap:14px;font-size:12.5px;color:var(--ink-soft);border-top:1px solid var(--line);padding-top:14px}
@media(max-width:1000px){.provider-grid{grid-template-columns:1fr}}

.cta-band{background:var(--teal);border-radius:24px;padding:60px;text-align:center;color:#fff}
.cta-band h2{color:#fff;font-size:32px}
.cta-band p{max-width:520px;margin:14px auto 28px;opacity:.9}
.cta-band .btn-primary{background:#fff;color:var(--teal)}
.cta-band .btn-primary:hover{background:#f2f2f2}

footer{background:var(--navy);color:rgba(255,255,255,.7);padding:64px 0 32px;margin-top:60px}
.foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px;margin-bottom:48px}
.foot-grid h4{color:#fff;font-family:'Inter';font-size:13px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:16px}
.foot-grid ul{list-style:none}
.foot-grid li{margin-bottom:10px;font-size:14px}
.foot-grid a:hover{color:#fff}
.foot-bottom{border-top:1px solid rgba(255,255,255,.12);padding-top:24px;display:flex;justify-content:space-between;font-size:12.5px;flex-wrap:wrap;gap:10px}
@media(max-width:900px){.foot-grid{grid-template-columns:1fr 1fr}}

/* Sub-page hero (non-homepage) */
.page-hero{padding:64px 0 48px;border-bottom:1px solid var(--line);background:#fff}
.page-hero .eyebrow{margin-bottom:14px;display:block}
.page-hero h1{font-size:44px;max-width:800px}
.page-hero p.lead{font-size:18px;color:var(--ink-soft);max-width:640px;margin-top:16px}
.breadcrumb{font-size:13px;color:var(--ink-soft);margin-bottom:20px}
.breadcrumb a{color:var(--teal)}

.two-col{display:grid;grid-template-columns:2fr 1fr;gap:56px}
.side-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:26px;margin-bottom:20px}
.side-card h4{font-size:15px;margin-bottom:12px}
.faq-item{border-bottom:1px solid var(--line);padding:20px 0}
.faq-item h4{font-size:17px;margin-bottom:8px;color:var(--navy)}
.faq-item p{font-size:14.5px;color:var(--ink-soft)}

.pricing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.price-card{border:1px solid var(--line);border-radius:var(--radius);padding:32px;background:#fff}
.price-card.featured{border-color:var(--teal);box-shadow:0 20px 50px -30px rgba(31,111,99,.4);position:relative}
.price-card .plan{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);font-weight:600}
.price-card .amt{font-family:'Fraunces',serif;font-size:36px;color:var(--navy);margin:10px 0}
.price-card ul{list-style:none;margin:20px 0}
.price-card li{font-size:14px;padding:8px 0;border-top:1px solid var(--line);color:var(--ink-soft)}
.price-card li:first-child{border-top:none}

@media(max-width:900px){.two-col{grid-template-columns:1fr}.pricing-grid{grid-template-columns:1fr}}
@media(max-width:640px){
  .hero-grid{grid-template-columns:1fr}
  .hero h1,.page-hero h1{font-size:32px}
  .cat-grid{grid-template-columns:1fr 1fr}
  .why-grid,.provider-grid{grid-template-columns:1fr}
  section{padding:56px 0}
}

/* ============================================================
   Luxury directory (/luxury-rehabs/), generated by
   tools/build_directory.py. See _data/*.json for content.
   ============================================================ */

.lux-intro-wrap{max-width:820px;margin-top:20px}
.lux-intro{font-size:16.5px;color:var(--ink-soft);margin-bottom:16px;line-height:1.7}
.lux-intro strong{color:var(--ink);font-weight:600}
.lux-intro a{color:var(--teal);font-weight:600}
.lux-hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}

.disclosure-bar{background:var(--navy);color:rgba(255,255,255,.82);padding:18px 0;font-size:13.5px}
.disclosure-bar strong{color:#fff}

.lux-cat-grid{grid-template-columns:repeat(4,1fr)}
.lux-cat-grid .n{font-size:14px;line-height:1.35;margin-bottom:8px}

/* Listing cards: wide horizontal row on desktop, stacked on mobile */
.lux-list{display:flex;flex-direction:column;gap:20px}
.lux-card{display:grid;grid-template-columns:300px 1fr;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;transition:.18s}
.lux-card:hover{border-color:var(--gold);box-shadow:0 18px 40px -28px rgba(11,30,51,.45)}
.lux-card-media{position:relative;min-height:230px;
  background:linear-gradient(150deg,var(--navy),var(--navy-2) 60%,#1d3a5c)}
.lux-badge{position:absolute;top:16px;left:16px;background:rgba(255,255,255,.94);color:var(--navy);
  font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  padding:7px 13px;border-radius:999px;border:1px solid var(--gold)}
.lux-badge-inline{position:static;display:inline-block;margin-right:8px}
.lux-card-body{padding:26px 28px}
.lux-card-body h3{font-size:23px;margin-bottom:6px}
.lux-card-body h3 a:hover{color:var(--teal)}
.lux-hook{font-size:14.5px;color:var(--ink-soft);font-style:italic;margin-bottom:16px}
.lux-facts{list-style:none;display:flex;flex-direction:column;gap:7px;margin-bottom:16px}
.lux-facts li{font-size:14px;color:var(--ink);display:flex;gap:9px;align-items:flex-start}
.lux-amenities{border-top:1px solid var(--line);padding-top:14px;margin-bottom:16px}
.lux-amenities strong{font-size:11.5px;letter-spacing:.07em;text-transform:uppercase;
  color:var(--ink-soft);display:block;margin-bottom:9px}
.lux-amenities ul{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:6px 18px}
.lux-amenities li{font-size:13.5px;color:var(--ink-soft);position:relative;padding-left:14px}
.lux-amenities li::before{content:"•";position:absolute;left:0;color:var(--gold)}
.lux-cta{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}

.reported{font-size:12px;color:var(--ink-soft);font-style:italic;font-weight:400}

.status-pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;
  padding:6px 12px;border-radius:999px}
.status-pending{background:#FBEFD8;color:#7A5A15;border:1px solid #E8D3A0}
.status-flag{background:#FBE2E2;color:#7A1F1F;border:1px solid #E8A8A8}

.notice-banner{text-align:center;padding:13px 20px;font-size:13.5px;line-height:1.55}
.notice-warn{background:#FBEFD8;border-bottom:1px solid #E8D3A0;color:#7A5A15}
.notice-flag{background:#FBE2E2;border-bottom:1px solid #E8A8A8;color:#7A1F1F}

.cred-box{border-radius:var(--radius);padding:18px 20px;font-size:14.5px;line-height:1.6}
.cred-warn{background:#FBEFD8;border:1px solid #E8D3A0;color:#7A5A15}
.cred-flag{background:#FBE2E2;border:1px solid #E8A8A8;color:#7A1F1F}

.profile-hero{height:240px;background:linear-gradient(150deg,var(--navy),var(--navy-2) 60%,#1d3a5c)}
.profile-head{display:flex;justify-content:space-between;align-items:flex-end;margin-top:-52px;
  padding:0 4px;gap:16px;flex-wrap:wrap}
.profile-avatar{width:104px;height:104px;border-radius:16px;background:var(--navy);
  border:5px solid #fff;display:flex;align-items:center;justify-content:center;color:#fff;
  font-family:'Fraunces',serif;font-size:24px;flex-shrink:0}
.stat-row{display:flex;gap:34px;padding:26px 0;border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);margin:28px 0;flex-wrap:wrap}
.stat-row div b{display:block;font-family:'Fraunces',serif;font-size:19px;color:var(--navy);
  font-weight:500;line-height:1.3}
.stat-row div span{font-size:12.5px;color:var(--ink-soft)}

.body-copy{color:var(--ink-soft);font-size:15px;line-height:1.7}
.body-list{color:var(--ink-soft);font-size:15px;padding-left:20px;line-height:1.8}
.fact-table{width:100%;font-size:14px;border-collapse:collapse}
.fact-table td{padding:9px 0;border-top:1px solid var(--line);vertical-align:top}
.fact-table td:first-child{color:var(--ink-soft);padding-right:12px}
.fact-table td:last-child{text-align:right}
.fact-table tr:first-child td{border-top:none}

.faq-item h3{font-size:17px;margin-bottom:8px;color:var(--navy);font-family:'Fraunces',serif;font-weight:500}

.form-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:32px}
.form-row{margin-bottom:18px}
.form-row label{display:block;font-size:13.5px;font-weight:600;color:var(--navy);margin-bottom:8px}
.form-row input[type=text],.form-row input[type=tel],.form-row input[type=email],
.form-row select,.form-row textarea{width:100%;padding:13px 14px;border:1px solid var(--line);
  border-radius:10px;font-size:15px;font-family:inherit;background:var(--paper)}
.form-row textarea{resize:vertical;min-height:110px}
.check-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.check-grid label,.check-inline{font-weight:400;font-size:14px;color:var(--ink-soft);
  display:flex;align-items:center;gap:8px;margin-bottom:0}
.form-note{font-size:12.5px;color:var(--ink-soft);margin-top:16px;line-height:1.6}
.form-note a{color:var(--teal)}
.btn[disabled]{opacity:.55;cursor:not-allowed}

@media(max-width:1000px){
  .lux-cat-grid{grid-template-columns:repeat(2,1fr)}
}
/* Card drops its side image and goes full width on tablet down. The
   single-column treatments below (full-width stacked buttons, one-column
   amenity and checkbox lists) are phone ergonomics - applying them at tablet
   width produced ~700px-wide buttons, so they start lower down. */
@media(max-width:820px){
  .lux-card{grid-template-columns:1fr}
  .lux-card-media{min-height:150px}
  .stat-row{gap:22px}
  .stat-row div{min-width:calc(50% - 11px)}
}

@media(max-width:560px){
  .lux-amenities ul{grid-template-columns:1fr}
  .lux-cta{flex-direction:column}
  .lux-cta .btn{width:100%}
  .check-grid{grid-template-columns:1fr}
}

/* ---- Mobile header fix -------------------------------------------------
   .nav-inner was locked to height:76px while the pill CTAs wrapped to two or
   three lines (96px tall), so they overflowed the header and, with
   border-radius:999px, rendered as dark blobs. The category nav was also
   display:none under 900px with no hamburger, leaving no way to move between
   categories from the header on a phone.

   CSS-only by necessity: the host site's CSP has no 'unsafe-inline' in
   script-src, so a JS drawer would be blocked. The nav becomes a
   horizontally scrollable row instead.
   ----------------------------------------------------------------------- */
.btn{white-space:nowrap}

@media(max-width:900px){
  .nav-inner{height:auto;min-height:0;flex-wrap:wrap;gap:8px;padding-top:9px;padding-bottom:0}
  .logo{font-size:19px}
  .nav-cta{gap:8px}
  .nav-cta .btn-ghost{display:none}
  .nav-cta .btn{padding:9px 16px;font-size:13.5px}

  nav{order:3;width:100%;margin:0 -28px;padding:0 28px;
      border-top:1px solid var(--line)}
  nav ul{display:flex;gap:20px;overflow-x:auto;padding:7px 0 8px;
         scrollbar-width:none;-ms-overflow-style:none}
  nav ul::-webkit-scrollbar{display:none}
  nav ul li{flex:0 0 auto}
  nav a{white-space:nowrap;font-size:13.5px}
}

@media(max-width:420px){
  .logo{font-size:17px}
  .nav-cta .btn{padding:9px 13px;font-size:13px}
}

/* Breadcrumb sits above the profile hero so the avatar's -52px pull overlaps
   the hero image as intended, instead of colliding with the breadcrumb text
   (which wraps to two lines on narrow screens). */
.profile-crumb{padding-top:20px;padding-bottom:4px}
@media(max-width:640px){
  .profile-head{margin-top:-34px}
  .profile-avatar{width:84px;height:84px;font-size:20px}
  .stat-row{gap:18px}
}

/* Mobile gutters: the default 28px side padding left 319px of usable width,
   3px short of fitting the logo and CTA on one row, which pushed the sticky
   header to three rows (136px). Tighter gutters fit them on one row and give
   the cards more width. */
@media(max-width:640px){ .wrap{padding:0 20px} }
@media(max-width:420px){ .wrap{padding:0 16px} }

/* iOS Safari auto-zooms any focused form control whose font-size is under
   16px, which yanks the layout and forces the user to pinch back out. Bump
   controls to 16px on small screens, and enlarge the checkboxes so they are
   comfortably tappable. */
@media(max-width:640px){
  .form-row input[type=text],
  .form-row input[type=tel],
  .form-row input[type=email],
  .form-row select,
  .form-row textarea{font-size:16px}
  .check-grid input[type=checkbox],
  .check-inline input[type=checkbox]{width:18px;height:18px;flex:0 0 auto}
  /* "reported" reads as a stray fragment when the price wraps; give it its
     own line on narrow screens. */
  .lux-facts .reported{display:block;margin-top:1px}
}

/* Verified state. Only reachable via verified:true + a lastVerified date
   inside VERIFICATION_INTERVAL_DAYS in _data/facilities.json. The generator
   derives it, so it cannot be set by hand-editing a page. */
.status-verified{background:var(--teal-light);color:var(--teal);border:1px solid var(--teal)}
.notice-ok{background:var(--teal-light);border-bottom:1px solid var(--teal);color:var(--teal)}
.cred-ok{background:var(--teal-light);border:1px solid var(--teal);color:var(--teal)}
