/* =====================================================================
   LocalHub — Premium Directory Template
   Design system • Clean Blue + Slate
   Author: LocalHub template
   Notes: Page-specific/hero/listing/gallery images live inline in the HTML
          (per template rules). This file holds reusable structure only.
   ===================================================================== */

/* ---------- Design tokens ---------- */
:root{
  /* brand */
  --blue-50:#eff6ff; --blue-100:#dbeafe; --blue-200:#bfdbfe; --blue-300:#93c5fd;
  --blue-400:#60a5fa; --blue-500:#3b82f6; --blue-600:#2563eb; --blue-700:#1d4ed8;
  --blue-800:#1e40af; --blue-900:#1e3a8a;
  --sky:#38bdf8;
  /* slate neutrals */
  --slate-50:#f8fafc; --slate-100:#f1f5f9; --slate-200:#e2e8f0; --slate-300:#cbd5e1;
  --slate-400:#94a3b8; --slate-500:#64748b; --slate-600:#475569; --slate-700:#334155;
  --slate-800:#1e293b; --slate-900:#0f172a; --slate-950:#020617;
  /* semantic */
  --amber:#f59e0b; --amber-soft:#fef3c7;
  --green:#16a34a; --green-soft:#dcfce7;
  --red:#dc2626;
  --bg:#ffffff;
  --bg-soft:var(--slate-50);
  --bg-panel:var(--slate-100);
  --text:var(--slate-900);
  --text-soft:var(--slate-600);
  --text-mute:var(--slate-400);
  --border:var(--slate-200);
  --primary:var(--blue-600);
  --primary-dark:var(--blue-700);
  --primary-ink:var(--blue-900);
  /* effects */
  --radius-sm:10px; --radius:16px; --radius-lg:22px; --radius-xl:28px; --radius-pill:999px;
  --shadow-xs:0 1px 2px rgba(15,23,42,.06);
  --shadow-sm:0 2px 8px rgba(15,23,42,.06),0 1px 2px rgba(15,23,42,.04);
  --shadow:0 10px 30px -12px rgba(15,23,42,.18),0 4px 10px -6px rgba(15,23,42,.10);
  --shadow-lg:0 24px 60px -20px rgba(15,23,42,.30),0 8px 20px -12px rgba(15,23,42,.16);
  --shadow-blue:0 18px 40px -16px rgba(37,99,235,.45);
  --ring:0 0 0 4px rgba(37,99,235,.16);
  --container:1200px;
  --header-h:74px;
  --grad-brand:linear-gradient(135deg,#2563eb 0%,#1e3a8a 100%);
  --grad-sky:linear-gradient(135deg,#38bdf8 0%,#2563eb 60%,#1e40af 100%);
  --grad-ink:linear-gradient(160deg,#1e3a8a 0%,#0f172a 70%,#020617 100%);
  --ease:cubic-bezier(.22,.61,.36,1);
  --font-sans:'Plus Jakarta Sans',ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --font-display:'Sora','Plus Jakarta Sans',ui-sans-serif,system-ui,sans-serif;
}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;font-family:var(--font-sans);color:var(--text);background:var(--bg);
  font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
img{max-width:100%;display:block;height:auto}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input,select,textarea{font-family:inherit;font-size:1rem}
ul{margin:0;padding:0;list-style:none}
h1,h2,h3,h4,h5{margin:0;font-family:var(--font-display);line-height:1.14;font-weight:700;letter-spacing:-.02em;color:var(--slate-900)}
h1{font-size:clamp(2.1rem,5vw,3.5rem)}
h2{font-size:clamp(1.6rem,3.4vw,2.5rem)}
h3{font-size:clamp(1.2rem,2vw,1.5rem)}
p{margin:0 0 1rem}
:focus-visible{outline:none;box-shadow:var(--ring);border-radius:8px}
::selection{background:var(--blue-200)}

/* ---------- Layout helpers ---------- */
.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:22px}
.container-wide{max-width:1360px}
.section{padding:clamp(48px,7vw,96px) 0}
.section-tight{padding:clamp(36px,5vw,64px) 0}
.bg-soft{background:var(--bg-soft)}
.bg-panel{background:var(--bg-panel)}
.bg-ink{background:var(--grad-ink);color:#fff}
.bg-ink h1,.bg-ink h2,.bg-ink h3{color:#fff}
.grid{display:grid;gap:24px}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
.flex{display:flex}
.center{align-items:center}
.between{justify-content:space-between}
.wrap{flex-wrap:wrap}
.gap-sm{gap:10px}.gap{gap:18px}.gap-lg{gap:32px}
.text-center{text-align:center}
.mt-0{margin-top:0}.mb-0{margin-bottom:0}
.muted{color:var(--text-soft)}
.mx-auto{margin-inline:auto}
.maxw-680{max-width:680px}
.maxw-760{max-width:760px}
.hide{display:none!important}

/* ---------- Eyebrow / section head ---------- */
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-sans);
  font-weight:700;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--primary);background:var(--blue-50);border:1px solid var(--blue-100);
  padding:7px 14px;border-radius:var(--radius-pill)}
.section-head{max-width:720px;margin-bottom:40px}
.section-head.center{margin-inline:auto;text-align:center}
.section-head p{margin-top:14px;color:var(--text-soft);font-size:1.08rem}
.section-head .eyebrow{margin-bottom:16px}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font-weight:700;font-size:.98rem;padding:13px 22px;border-radius:var(--radius-pill);
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),background .2s,color .2s;
  white-space:nowrap;line-height:1}
.btn svg{width:18px;height:18px}
.btn-primary{background:var(--primary);color:#fff;box-shadow:var(--shadow-blue)}
.btn-primary:hover{background:var(--primary-dark);transform:translateY(-2px)}
.btn-ghost{background:#fff;color:var(--slate-800);border:1.5px solid var(--border);box-shadow:var(--shadow-xs)}
.btn-ghost:hover{border-color:var(--blue-300);color:var(--primary);transform:translateY(-2px)}
.btn-dark{background:var(--slate-900);color:#fff}
.btn-dark:hover{background:var(--slate-800);transform:translateY(-2px)}
.btn-light{background:rgba(255,255,255,.14);color:#fff;border:1.5px solid rgba(255,255,255,.28);backdrop-filter:blur(6px)}
.btn-light:hover{background:rgba(255,255,255,.24);transform:translateY(-2px)}
.btn-sm{padding:10px 16px;font-size:.9rem}
.btn-lg{padding:16px 30px;font-size:1.05rem}
.btn-block{width:100%}
.btn-icon{padding:12px;border-radius:12px}

/* ---------- Badges & chips ---------- */
.badge{display:inline-flex;align-items:center;gap:6px;font-size:.76rem;font-weight:700;
  padding:5px 11px;border-radius:var(--radius-pill);letter-spacing:.01em}
.badge-verified{background:var(--blue-50);color:var(--blue-700);border:1px solid var(--blue-100)}
.badge-featured{background:linear-gradient(135deg,#fde68a,#f59e0b);color:#7c2d12}
.badge-sponsored{background:var(--slate-100);color:var(--slate-600);border:1px solid var(--border)}
.badge-open{background:var(--green-soft);color:#15803d}
.badge-closed{background:#fee2e2;color:#b91c1c}
.badge-new{background:#ede9fe;color:#6d28d9}
.chip{display:inline-flex;align-items:center;gap:7px;font-size:.85rem;font-weight:600;
  color:var(--slate-600);background:#fff;border:1px solid var(--border);
  padding:8px 14px;border-radius:var(--radius-pill);transition:.2s}
.chip:hover{border-color:var(--blue-300);color:var(--primary);box-shadow:var(--shadow-xs);transform:translateY(-1px)}
.chip.is-active{background:var(--primary);color:#fff;border-color:var(--primary)}
.tag{display:inline-flex;font-size:.74rem;font-weight:600;color:var(--slate-600);
  background:var(--slate-100);padding:4px 10px;border-radius:8px}

/* ---------- Rating stars ---------- */
.stars{--pct:100%;display:inline-block;position:relative;font-size:1rem;line-height:1;letter-spacing:2px;
  font-family:var(--font-sans)}
.stars::before{content:"★★★★★";color:var(--slate-200)}
.stars::after{content:"★★★★★";color:var(--amber);position:absolute;inset:0;width:var(--pct);overflow:hidden}
.rating{display:inline-flex;align-items:center;gap:8px;font-weight:600}
.rating .score{color:var(--slate-900);font-weight:800}
.rating .count{color:var(--text-mute);font-weight:500;font-size:.9rem}

/* ---------- Header / nav ---------- */
.site-header{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.82);
  backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid transparent;transition:.3s}
.site-header.scrolled{border-color:var(--border);box-shadow:var(--shadow-sm)}
.nav{height:var(--header-h);display:flex;align-items:center;justify-content:space-between;gap:20px}
.brand{display:inline-flex;align-items:center;gap:11px;font-family:var(--font-display);
  font-weight:800;font-size:1.24rem;letter-spacing:-.03em;color:var(--slate-900)}
.brand-mark{width:38px;height:38px;border-radius:11px;background:var(--grad-brand);
  display:grid;place-items:center;color:#fff;box-shadow:var(--shadow-blue);flex:0 0 auto}
.brand-mark svg{width:20px;height:20px}
.nav-links{display:flex;align-items:center;gap:4px}
.nav-links a{padding:9px 14px;border-radius:10px;font-weight:600;font-size:.95rem;color:var(--slate-600);transition:.2s}
.nav-links a:hover{color:var(--primary);background:var(--blue-50)}
.nav-links a.active{color:var(--primary)}
.nav-cta{display:flex;align-items:center;gap:12px}
.nav-toggle{display:none;width:44px;height:44px;border-radius:12px;border:1px solid var(--border);
  background:#fff;place-items:center;color:var(--slate-800)}
.nav-toggle svg{width:22px;height:22px}
/* mobile drawer */
.mobile-menu{position:fixed;inset:0;z-index:70;visibility:hidden;pointer-events:none}
.mobile-menu .scrim{position:absolute;inset:0;background:rgba(15,23,42,.5);opacity:0;transition:.3s}
.mobile-menu .panel{position:absolute;top:0;right:0;height:100%;width:min(84vw,360px);
  background:#fff;box-shadow:var(--shadow-lg);transform:translateX(100%);transition:transform .38s var(--ease);
  padding:22px;display:flex;flex-direction:column;gap:6px;overflow-y:auto}
.mobile-menu.open{visibility:visible;pointer-events:auto}
.mobile-menu.open .scrim{opacity:1}
.mobile-menu.open .panel{transform:translateX(0)}
.mobile-menu .panel a{padding:14px 12px;border-radius:12px;font-weight:600;color:var(--slate-700);border-bottom:1px solid var(--slate-100)}
.mobile-menu .panel a:hover{background:var(--blue-50);color:var(--primary)}
.mobile-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}

/* ---------- Hero ---------- */
.hero{position:relative;overflow:hidden;color:#fff}
.hero-inner{position:relative;z-index:2;padding:clamp(56px,9vw,120px) 0 clamp(64px,9vw,110px)}
.hero-overlay{position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(2,6,23,.55) 0%,rgba(2,6,23,.62) 40%,rgba(2,6,23,.78) 100%)}
.hero h1{color:#fff;max-width:15ch}
.hero .lead{font-size:clamp(1.05rem,2vw,1.28rem);color:rgba(226,232,240,.94);max-width:52ch;margin:18px 0 30px}
.hero-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.7fr);gap:clamp(32px,6vw,88px);align-items:center}
.hero-copy{min-width:0}
.hero-badges{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.hero-badge{display:inline-flex;align-items:center;gap:8px;font-size:.85rem;font-weight:600;
  color:#e2e8f0;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);
  padding:8px 14px;border-radius:var(--radius-pill);backdrop-filter:blur(6px)}
.hero-badge svg{width:16px;height:16px;color:var(--sky)}
.hero-owner-card{width:min(100%,390px);justify-self:end;padding:clamp(24px,3vw,32px);border:1px solid rgba(191,219,254,.3);
  border-radius:var(--radius-xl);background:linear-gradient(145deg,rgba(255,255,255,.16),rgba(37,99,235,.18));
  box-shadow:0 24px 60px rgba(2,6,23,.3);backdrop-filter:blur(14px)}
.hero-card-kicker{display:inline-flex;align-items:center;gap:7px;color:#bfdbfe;font-size:.75rem;font-weight:800;
  letter-spacing:.08em;text-transform:uppercase}
.hero-card-kicker::before{content:"";width:8px;height:8px;border-radius:50%;background:#60a5fa;box-shadow:0 0 0 5px rgba(96,165,250,.14)}
.hero-owner-card h2{color:#fff;font-size:clamp(1.45rem,2.6vw,1.9rem);margin:14px 0 10px}
.hero-owner-card p{color:rgba(226,232,240,.9);margin:0 0 20px}
.hero-card-points{display:grid;gap:10px;margin:0 0 22px;padding:0;list-style:none}
.hero-card-points li{display:flex;align-items:flex-start;gap:10px;color:#e2e8f0;font-size:.94rem;font-weight:600}
.hero-card-points li::before{content:"✓";display:grid;place-items:center;width:20px;height:20px;flex:0 0 auto;border-radius:50%;
  color:#dbeafe;background:rgba(37,99,235,.45);font-size:.78rem}
.hero-owner-card .btn{margin-top:2px}
.hero-card-note{display:block;color:rgba(191,219,254,.82);font-size:.8rem;margin-top:13px;text-align:center}

/* ---------- Search bar ---------- */
.searchbar{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);
  padding:10px;display:grid;grid-template-columns:1.4fr 1fr 1fr auto;gap:8px;align-items:stretch;
  border:1px solid rgba(255,255,255,.6);max-width:900px}
.search-field{display:flex;align-items:center;gap:11px;padding:8px 14px;border-radius:var(--radius);
  transition:background .2s,box-shadow .2s;position:relative}
.search-field:focus-within{background:var(--blue-50);box-shadow:inset 0 0 0 1.5px var(--blue-200)}
.search-field .ic{width:22px;height:22px;color:var(--primary);flex:0 0 auto}
.search-field .f-label{display:block;font-size:.68rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.08em;color:var(--text-mute)}
.search-field input,.search-field select{width:100%;border:none;background:transparent;outline:none;
  font-weight:600;color:var(--slate-900);padding:2px 0;font-size:.98rem}
.search-field select{appearance:none;cursor:pointer}
.search-field.divider{border-left:1px solid var(--border)}
.searchbar .btn{align-self:stretch}
.search-tags{display:flex;flex-wrap:wrap;gap:9px;margin-top:20px;align-items:center}
.search-tags .lbl{font-size:.85rem;color:rgba(226,232,240,.8);font-weight:600}
.search-tags a{font-size:.85rem;font-weight:600;color:#e2e8f0;background:rgba(255,255,255,.1);
  border:1px solid rgba(255,255,255,.16);padding:6px 13px;border-radius:var(--radius-pill);transition:.2s}
.search-tags a:hover{background:#fff;color:var(--primary);border-color:#fff}

/* ---------- Stats strip ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.stat{text-align:center}
.stat .num{font-family:var(--font-display);font-weight:800;font-size:clamp(1.8rem,3.2vw,2.6rem);
  color:var(--primary);letter-spacing:-.03em;line-height:1}
.stat .lbl{margin-top:8px;font-weight:600;color:var(--text-soft);font-size:.95rem}
.bg-ink .stat .num{color:var(--sky)}
.bg-ink .stat .lbl{color:rgba(226,232,240,.85)}

/* ---------- Cards: generic ---------- */
.card{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm);overflow:hidden;transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .3s}
.card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);border-color:var(--blue-200)}

/* ---------- Listing card ---------- */
.listing-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);
  overflow:hidden;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;
  transition:transform .38s var(--ease),box-shadow .38s var(--ease),border-color .3s}
.listing-card:hover{transform:translateY(-8px);box-shadow:var(--shadow-lg);border-color:var(--blue-200)}
.listing-media{position:relative;aspect-ratio:4/3;overflow:hidden}
.listing-media img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.listing-card:hover .listing-media img{transform:scale(1.07)}
.listing-placement-card{position:relative;isolation:isolate;min-height:100%;padding:30px;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start;
  border:1px solid var(--blue-200);border-radius:var(--radius-lg);background:linear-gradient(145deg,#eff6ff 0%,#fff 52%,#dbeafe 100%);box-shadow:var(--shadow-sm);
  transition:transform .38s var(--ease),box-shadow .38s var(--ease),border-color .3s}
.listing-placement-card::before,.listing-placement-card::after{content:"";position:absolute;z-index:-1;border-radius:50%;pointer-events:none}
.listing-placement-card::before{width:240px;height:240px;right:-105px;top:-112px;background:rgba(37,99,235,.14)}
.listing-placement-card::after{width:150px;height:150px;left:-80px;bottom:-92px;background:rgba(14,165,233,.12)}
.listing-placement-card:hover{transform:translateY(-8px);box-shadow:var(--shadow-lg);border-color:var(--primary)}
.placement-icon{width:48px;height:48px;display:grid;place-items:center;margin-bottom:20px;border-radius:15px;background:var(--grad-brand);color:#fff;font-size:1.25rem;box-shadow:var(--shadow-blue)}
.placement-kicker{font-size:.75rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--primary)}
.listing-placement-card h3{font-size:1.45rem;margin:9px 0 10px}
.listing-placement-card p{max-width:31ch;margin:0;color:var(--text-soft);line-height:1.65}
.listing-placement-card .btn{margin-top:auto;padding-inline:18px}
.placement-note{margin-top:15px;color:var(--slate-500);font-size:.82rem;font-weight:600}
.listing-media .badge{position:absolute;top:12px}
.listing-media .badge-featured{left:12px}
.listing-media .badge-open,.listing-media .badge-closed{right:12px}
.listing-fav{position:absolute;bottom:12px;right:12px;width:38px;height:38px;border-radius:50%;
  background:rgba(255,255,255,.92);display:grid;place-items:center;color:var(--slate-500);
  box-shadow:var(--shadow-sm);transition:.2s}
.listing-fav:hover{color:var(--red);transform:scale(1.1)}
.listing-fav svg{width:19px;height:19px}
.listing-body{padding:18px 18px 20px;display:flex;flex-direction:column;gap:10px;flex:1}
.listing-cat{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;font-weight:700;
  color:var(--primary);text-transform:uppercase;letter-spacing:.04em}
.listing-title{font-family:var(--font-display);font-weight:700;font-size:1.16rem;letter-spacing:-.02em}
.listing-title a:hover{color:var(--primary)}
.listing-meta{display:flex;align-items:center;gap:6px;color:var(--text-soft);font-size:.9rem}
.listing-meta svg{width:15px;height:15px;color:var(--text-mute)}
.listing-desc{color:var(--text-soft);font-size:.92rem;margin:0}
.listing-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.listing-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:auto;padding-top:14px;border-top:1px solid var(--slate-100)}
.listing-actions{display:flex;gap:8px}
.icon-btn{width:40px;height:40px;border-radius:11px;border:1px solid var(--border);
  display:grid;place-items:center;color:var(--slate-600);transition:.2s;background:#fff}
.icon-btn:hover{border-color:var(--blue-300);color:var(--primary);background:var(--blue-50)}
.icon-btn svg{width:18px;height:18px}
/* list view variant */
.listing-list .listing-card{flex-direction:row}
.listing-list .listing-media{aspect-ratio:auto;width:32%;min-width:210px}
.listing-list .listing-body{flex:1}

/* ---------- Category card ---------- */
.cat-card{position:relative;border-radius:var(--radius-lg);overflow:hidden;aspect-ratio:5/4;
  display:block;box-shadow:var(--shadow-sm);transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.cat-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg)}
.cat-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.cat-card:hover img{transform:scale(1.08)}
.cat-card .cat-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(2,6,23,0) 30%,rgba(2,6,23,.82) 100%)}
.cat-card .cat-info{position:absolute;left:0;right:0;bottom:0;padding:18px;color:#fff;z-index:2}
.cat-card .cat-info h3{color:#fff;font-size:1.15rem}
.cat-card .cat-info .count{font-size:.85rem;color:rgba(226,232,240,.9);font-weight:600}
.cat-card .cat-arrow{position:absolute;top:16px;right:16px;width:36px;height:36px;border-radius:50%;
  background:rgba(255,255,255,.16);backdrop-filter:blur(6px);display:grid;place-items:center;color:#fff;
  transform:translateY(6px);opacity:0;transition:.3s;z-index:2}
.cat-card:hover .cat-arrow{transform:translateY(0);opacity:1}
.cat-card .cat-arrow svg{width:18px;height:18px}
/* compact icon-tile category (used in grids of many) */
.cat-tile{display:flex;align-items:center;gap:14px;padding:16px;background:#fff;border:1px solid var(--border);
  border-radius:var(--radius);box-shadow:var(--shadow-xs);transition:.25s}
.cat-tile:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--blue-200)}
.cat-tile .ic{width:48px;height:48px;border-radius:13px;background:var(--blue-50);color:var(--primary);
  display:grid;place-items:center;flex:0 0 auto}
.cat-tile .ic svg{width:24px;height:24px}
.cat-tile .t{font-weight:700;font-size:1rem}
.cat-tile .c{font-size:.82rem;color:var(--text-mute)}

/* ---------- Location card ---------- */
.loc-card{position:relative;border-radius:var(--radius-lg);overflow:hidden;aspect-ratio:4/5;display:block;
  box-shadow:var(--shadow-sm);transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.loc-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg)}
.loc-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.loc-card:hover img{transform:scale(1.07)}
.loc-card .loc-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(2,6,23,.05) 30%,rgba(2,6,23,.8) 100%)}
.loc-card .loc-info{position:absolute;left:0;right:0;bottom:0;padding:18px;color:#fff;z-index:2}
.loc-card .loc-info h3{color:#fff;font-size:1.25rem;display:flex;align-items:center;gap:7px}
.loc-card .loc-info .count{font-size:.85rem;color:rgba(226,232,240,.9);font-weight:600}

/* ---------- How it works ---------- */
.step{position:relative;background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:30px 26px;box-shadow:var(--shadow-sm);transition:.3s}
.step:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:var(--blue-200)}
.step .step-ic{width:58px;height:58px;border-radius:16px;background:var(--grad-brand);color:#fff;
  display:grid;place-items:center;box-shadow:var(--shadow-blue);margin-bottom:18px}
.step .step-ic svg{width:27px;height:27px}
.step .step-n{position:absolute;top:24px;right:26px;font-family:var(--font-display);font-weight:800;
  font-size:2.4rem;color:var(--slate-100);line-height:1}
.step h3{font-size:1.2rem;margin-bottom:8px}
.step p{color:var(--text-soft);margin:0}

/* ---------- Feature / benefit item ---------- */
.feature{display:flex;gap:16px;align-items:flex-start}
.feature .f-ic{width:48px;height:48px;border-radius:13px;background:var(--blue-50);color:var(--primary);
  display:grid;place-items:center;flex:0 0 auto}
.feature .f-ic svg{width:24px;height:24px}
.feature h3{font-size:1.1rem;margin-bottom:6px}
.feature p{color:var(--text-soft);margin:0;font-size:.96rem}

/* ---------- Map preview ---------- */
.map-wrap{position:relative;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-lg);
  border:1px solid var(--border)}
.map-wrap img{width:100%;height:100%;object-fit:cover;display:block}
.map-pin{position:absolute;width:44px;height:44px;transform:translate(-50%,-100%);z-index:3;cursor:pointer}
.map-pin .dot{width:44px;height:44px;border-radius:50% 50% 50% 0;background:var(--primary);transform:rotate(-45deg);
  box-shadow:var(--shadow);display:grid;place-items:center}
.map-pin .dot::after{content:"";width:15px;height:15px;border-radius:50%;background:#fff;transform:rotate(45deg)}
.map-pin .pulse{position:absolute;left:50%;top:50%;width:44px;height:44px;border-radius:50%;
  background:rgba(37,99,235,.35);transform:translate(-50%,-50%);animation:pulse 2.4s var(--ease) infinite;z-index:-1}
.map-pin:hover .dot{background:var(--amber)}
.map-card{position:absolute;left:16px;bottom:16px;z-index:4;background:#fff;border-radius:var(--radius);
  box-shadow:var(--shadow-lg);padding:12px;display:flex;gap:12px;align-items:center;max-width:290px;border:1px solid var(--border)}
.map-card img{width:64px;height:64px;border-radius:12px;object-fit:cover;flex:0 0 auto}
.map-card .mc-t{font-weight:700;font-size:.98rem}
.map-card .mc-m{font-size:.82rem;color:var(--text-soft)}
@keyframes pulse{0%{transform:translate(-50%,-50%) scale(.5);opacity:.8}100%{transform:translate(-50%,-50%) scale(2.4);opacity:0}}

/* ---------- Testimonials ---------- */
.tcard{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px;
  box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:16px;height:100%;transition:.3s}
.tcard:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
.tcard .quote{font-size:1.02rem;color:var(--slate-700);line-height:1.65}
.tcard .who{display:flex;align-items:center;gap:12px;margin-top:auto}
.tcard .who img{width:48px;height:48px;border-radius:50%;object-fit:cover}
.tcard .who .n{font-weight:700;font-size:.95rem}
.tcard .who .r{font-size:.82rem;color:var(--text-mute)}

/* ---------- Trust logos / badges ---------- */
.trust-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:16px 34px;opacity:.9}
.trust-item{display:inline-flex;align-items:center;gap:10px;font-weight:700;color:var(--slate-500);font-size:1.02rem}
.trust-item svg{width:26px;height:26px;color:var(--slate-400)}

/* ---------- Breadcrumbs ---------- */
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:.85rem;color:var(--text-mute);padding:16px 0}
.crumbs a{color:var(--text-soft);font-weight:600}
.crumbs a:hover{color:var(--primary)}
.crumbs .sep{color:var(--slate-300)}
.crumbs .cur{color:var(--slate-800);font-weight:600}

/* ---------- Filters / toolbar ---------- */
.toolbar{position:sticky;top:var(--header-h);z-index:40;background:rgba(255,255,255,.9);
  backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}
.toolbar-inner{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 0;flex-wrap:wrap}
.filter-chips{display:flex;gap:9px;flex-wrap:wrap;align-items:center}
.select{appearance:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23475569' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 14px center;
  border:1.5px solid var(--border);border-radius:12px;padding:11px 40px 11px 15px;font-weight:600;color:var(--slate-700);cursor:pointer;transition:.2s}
.select:hover,.select:focus{border-color:var(--blue-300)}
.view-toggle{display:inline-flex;border:1.5px solid var(--border);border-radius:12px;overflow:hidden;background:#fff}
.view-toggle button{width:42px;height:42px;display:grid;place-items:center;color:var(--slate-500);transition:.2s}
.view-toggle button.active{background:var(--primary);color:#fff}
.view-toggle svg{width:19px;height:19px}
.result-count{font-weight:700;color:var(--slate-800)}
.result-count span{color:var(--primary)}

/* filter sidebar */
.filter-panel{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:22px;box-shadow:var(--shadow-sm);position:sticky;top:calc(var(--header-h) + 78px)}
.filter-group{padding:16px 0;border-bottom:1px solid var(--slate-100)}
.filter-group:first-child{padding-top:0}
.filter-group:last-child{border-bottom:none;padding-bottom:0}
.filter-group h4{font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;color:var(--slate-500);margin-bottom:14px}
.check{display:flex;align-items:center;gap:11px;padding:7px 0;cursor:pointer;font-size:.95rem;color:var(--slate-700);font-weight:500}
.check input{width:19px;height:19px;accent-color:var(--primary);cursor:pointer}
.check .ct{flex:1}
.check .cn{color:var(--text-mute);font-size:.85rem}
.check:hover{color:var(--primary)}
.filter-search{display:flex;align-items:center;gap:9px;border:1.5px solid var(--border);border-radius:12px;padding:10px 13px;margin-bottom:6px}
.filter-search svg{width:18px;height:18px;color:var(--text-mute)}
.filter-search input{border:none;outline:none;width:100%;font-weight:500}
.range{width:100%;accent-color:var(--primary)}

/* mobile filter toggle */
.filter-mobile-btn{display:none}

/* ---------- Pagination ---------- */
.pagination{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:44px;flex-wrap:wrap}
.pagination a,.pagination span{min-width:44px;height:44px;padding:0 12px;display:inline-flex;align-items:center;
  justify-content:center;border:1.5px solid var(--border);border-radius:12px;font-weight:700;color:var(--slate-600);
  background:#fff;transition:.2s}
.pagination a:hover{border-color:var(--blue-300);color:var(--primary)}
.pagination .cur{background:var(--primary);color:#fff;border-color:var(--primary)}
.pagination .dots{border:none;background:none}

/* ---------- Listing detail ---------- */
.detail-hero{position:relative}
.gallery-grid{display:grid;grid-template-columns:2fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:10px;
  border-radius:var(--radius-lg);overflow:hidden;height:clamp(320px,42vw,480px)}
.gallery-grid a{overflow:hidden;position:relative;display:block}
.gallery-grid a:first-child{grid-row:1/3}
.gallery-grid img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.gallery-grid a:hover img{transform:scale(1.06)}
.gallery-more{position:absolute;right:12px;bottom:12px;background:rgba(15,23,42,.75);color:#fff;
  padding:9px 15px;border-radius:var(--radius-pill);font-weight:700;font-size:.85rem;backdrop-filter:blur(4px)}
.detail-head{display:flex;flex-wrap:wrap;gap:18px;justify-content:space-between;align-items:flex-start;margin:26px 0}
.detail-head h1{font-size:clamp(1.8rem,3.6vw,2.6rem)}
.detail-metaline{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:12px;color:var(--text-soft);font-size:.95rem}
.detail-metaline .dot{width:4px;height:4px;border-radius:50%;background:var(--slate-300)}
.detail-metaline svg{width:16px;height:16px;color:var(--text-mute);vertical-align:-3px;margin-right:4px}
.panel{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);padding:26px;box-shadow:var(--shadow-sm)}
.panel + .panel{margin-top:24px}
.panel h2{font-size:1.4rem;margin-bottom:16px}
.amenity-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.amenity{display:flex;align-items:center;gap:11px;font-weight:600;color:var(--slate-700);font-size:.95rem}
.amenity .a-ic{width:38px;height:38px;border-radius:11px;background:var(--blue-50);color:var(--primary);display:grid;place-items:center;flex:0 0 auto}
.amenity .a-ic svg{width:19px;height:19px}
.hours-row{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--slate-100);font-size:.95rem}
.hours-row:last-child{border-bottom:none}
.hours-row.today{font-weight:700;color:var(--slate-900)}
.hours-row .h-time{color:var(--text-soft)}
/* sticky contact aside */
.contact-card{position:sticky;top:calc(var(--header-h) + 20px);background:#fff;border:1px solid var(--border);
  border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow)}
.contact-card .cc-actions{display:flex;flex-direction:column;gap:10px;margin:18px 0}
.contact-line{display:flex;align-items:flex-start;gap:12px;padding:11px 0;border-top:1px solid var(--slate-100);font-size:.93rem}
.contact-line .cl-ic{width:38px;height:38px;border-radius:11px;background:var(--slate-100);color:var(--slate-600);display:grid;place-items:center;flex:0 0 auto}
.contact-line .cl-ic svg{width:18px;height:18px}
.contact-line > :last-child{min-width:0;overflow-wrap:anywhere;word-break:break-word}
.contact-line a{font-weight:600;color:var(--slate-800)}
.contact-line a:hover{color:var(--primary)}

/* review item */
.review{padding:20px 0;border-bottom:1px solid var(--slate-100);display:flex;gap:14px}
.review:last-child{border-bottom:none}
.review img{width:48px;height:48px;border-radius:50%;flex:0 0 auto;object-fit:cover}
.review .r-head{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:center}
.review .r-name{font-weight:700}
.review .r-date{font-size:.82rem;color:var(--text-mute)}
.review p{margin:8px 0 0;color:var(--slate-600)}
.rating-summary{display:flex;gap:26px;align-items:center;flex-wrap:wrap}
.rating-big{text-align:center}
.rating-big .rb-num{font-family:var(--font-display);font-weight:800;font-size:3.2rem;line-height:1;color:var(--slate-900)}
.rating-bars{flex:1;min-width:220px;display:flex;flex-direction:column;gap:7px}
.rbar{display:flex;align-items:center;gap:10px;font-size:.82rem;color:var(--text-soft)}
.rbar .track{flex:1;height:8px;border-radius:99px;background:var(--slate-100);overflow:hidden}
.rbar .fill{height:100%;background:var(--amber);border-radius:99px}

/* ---------- FAQ accordion ---------- */
.faq{border:1px solid var(--border);border-radius:var(--radius);background:#fff;overflow:hidden;margin-bottom:12px;transition:.25s}
.faq.open{border-color:var(--blue-200);box-shadow:var(--shadow-sm)}
.faq-q{width:100%;text-align:left;display:flex;justify-content:space-between;align-items:center;gap:16px;
  padding:20px 22px;font-weight:700;font-size:1.03rem;color:var(--slate-800)}
.faq-q .fq-ic{width:30px;height:30px;border-radius:9px;background:var(--blue-50);color:var(--primary);
  display:grid;place-items:center;flex:0 0 auto;transition:.3s}
.faq.open .fq-ic{background:var(--primary);color:#fff;transform:rotate(45deg)}
.faq-q .fq-ic svg{width:18px;height:18px}
.faq-a{max-height:0;overflow:hidden;transition:max-height .38s var(--ease)}
.faq-a-inner{padding:0 22px 22px;color:var(--text-soft)}

/* ---------- Pricing ---------- */
.price-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;align-items:stretch}
.price-card{background:#fff;border:1.5px solid var(--border);border-radius:var(--radius-xl);padding:32px 28px;
  box-shadow:var(--shadow-sm);display:flex;flex-direction:column;position:relative;transition:.3s}
.price-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg)}
.price-card.popular{border-color:var(--primary);box-shadow:var(--shadow-blue);transform:scale(1.02)}
.price-card.popular:hover{transform:scale(1.02) translateY(-6px)}
.price-flag{position:absolute;top:-14px;left:50%;transform:translateX(-50%);background:var(--grad-brand);
  color:#fff;font-weight:700;font-size:.78rem;padding:7px 16px;border-radius:var(--radius-pill);box-shadow:var(--shadow-blue);letter-spacing:.03em}
.price-name{font-weight:800;font-size:1.2rem;font-family:var(--font-display)}
.price-desc{color:var(--text-soft);font-size:.92rem;margin:6px 0 18px}
.price-amt{display:flex;align-items:baseline;gap:4px}
.price-amt .cur{font-size:1.3rem;font-weight:700;color:var(--slate-700)}
.price-amt .val{font-family:var(--font-display);font-weight:800;font-size:3rem;letter-spacing:-.03em;color:var(--slate-900)}
.price-amt .per{color:var(--text-mute);font-weight:600}
.price-feats{margin:22px 0;display:flex;flex-direction:column;gap:13px}
.price-feats li{display:flex;gap:11px;align-items:flex-start;font-size:.95rem;color:var(--slate-700)}
.price-feats .pf-ic{width:22px;height:22px;border-radius:50%;background:var(--green-soft);color:var(--green);
  display:grid;place-items:center;flex:0 0 auto;margin-top:1px}
.price-feats .pf-ic svg{width:14px;height:14px}
.price-feats .off{color:var(--text-mute)}
.price-feats .off .pf-ic{background:var(--slate-100);color:var(--slate-400)}
.price-card .btn{margin-top:auto}
/* comparison table */
.compare{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}
.compare th,.compare td{padding:16px 20px;text-align:center;border-bottom:1px solid var(--slate-100)}
.compare th:first-child,.compare td:first-child{text-align:left;font-weight:600;color:var(--slate-700)}
.compare thead th{background:var(--slate-50);font-family:var(--font-display);font-size:1rem}
.compare tbody tr:hover{background:var(--blue-50)}
.compare .yes{color:var(--green)}.compare .no{color:var(--slate-300)}
.compare svg{width:20px;height:20px}

/* ---------- Forms ---------- */
.form-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);padding:clamp(24px,4vw,40px);box-shadow:var(--shadow-sm)}
.form-section{padding-bottom:26px;margin-bottom:26px;border-bottom:1px solid var(--slate-100)}
.form-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}
.form-section-head{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.form-section-head .fs-n{width:34px;height:34px;border-radius:10px;background:var(--grad-brand);color:#fff;
  display:grid;place-items:center;font-weight:800;flex:0 0 auto;box-shadow:var(--shadow-blue)}
.form-section-head h3{font-size:1.15rem}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.field{margin-bottom:18px}
.field:last-child{margin-bottom:0}
.field label{display:block;font-weight:600;font-size:.9rem;color:var(--slate-700);margin-bottom:8px}
.field label .req{color:var(--red)}
.field input,.field select,.field textarea{width:100%;border:1.5px solid var(--border);border-radius:12px;
  padding:13px 15px;background:#fff;color:var(--slate-900);transition:.2s;outline:none}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue-400);box-shadow:var(--ring)}
.field textarea{resize:vertical;min-height:130px}
.field .hint{font-size:.8rem;color:var(--text-mute);margin-top:6px}
.input-icon{position:relative}
.input-icon svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--text-mute)}
.input-icon input{padding-left:42px}
/* upload dropzone */
.dropzone{border:2px dashed var(--slate-300);border-radius:var(--radius);padding:34px;text-align:center;
  background:var(--slate-50);transition:.25s;cursor:pointer}
.dropzone:hover{border-color:var(--blue-400);background:var(--blue-50)}
.dropzone .dz-ic{width:56px;height:56px;border-radius:16px;background:#fff;color:var(--primary);
  display:grid;place-items:center;margin:0 auto 14px;box-shadow:var(--shadow-sm)}
.dropzone .dz-ic svg{width:26px;height:26px}
/* plan radio cards */
.plan-select{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.plan-opt{position:relative;border:1.5px solid var(--border);border-radius:var(--radius);padding:18px;cursor:pointer;transition:.2s}
.plan-opt:hover{border-color:var(--blue-300)}
.plan-opt input{position:absolute;opacity:0}
.plan-opt input:checked + .plan-inner{}
.plan-opt:has(input:checked){border-color:var(--primary);background:var(--blue-50);box-shadow:var(--ring)}
.plan-opt .p-name{font-weight:700}
.plan-opt .p-price{color:var(--primary);font-weight:800;font-family:var(--font-display);margin-top:4px}
.plan-opt .p-note{font-size:.8rem;color:var(--text-mute)}

/* ---------- Newsletter ---------- */
.newsletter{position:relative;overflow:hidden;border-radius:var(--radius-xl);padding:clamp(32px,5vw,56px);
  background:var(--grad-brand);color:#fff}
.newsletter h2{color:#fff}
.newsletter form{display:flex;gap:10px;max-width:480px;margin-top:22px;flex-wrap:wrap}
.newsletter input{flex:1;min-width:200px;border:none;border-radius:var(--radius-pill);padding:15px 20px;font-weight:500;outline:none}
.newsletter .deco{position:absolute;border-radius:50%;background:rgba(255,255,255,.1);pointer-events:none}

/* ---------- CTA banner ---------- */
.cta-banner{position:relative;overflow:hidden;border-radius:var(--radius-xl);color:#fff;isolation:isolate}
.cta-banner .cta-bg{position:absolute;inset:0;z-index:-2}
.cta-banner .cta-bg img{width:100%;height:100%;object-fit:cover}
.cta-banner .cta-ov{position:absolute;inset:0;z-index:-1;background:linear-gradient(120deg,rgba(30,58,138,.92),rgba(37,99,235,.7))}
.cta-inner{padding:clamp(40px,6vw,72px);display:flex;flex-wrap:wrap;gap:26px;align-items:center;justify-content:space-between}
.cta-inner h2{color:#fff;max-width:18ch}
.cta-inner p{color:rgba(226,232,240,.94);max-width:52ch;margin:12px 0 0}

/* ---------- Footer ---------- */
.site-footer{background:var(--slate-950);color:#cbd5e1;padding-top:64px}
.footer-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:40px;padding-bottom:48px;border-bottom:1px solid rgba(255,255,255,.08)}
.footer-brand .brand{color:#fff;margin-bottom:16px}
.footer-brand p{color:var(--slate-400);max-width:34ch;font-size:.95rem}
.footer-col h4{color:#fff;font-family:var(--font-sans);font-size:.82rem;text-transform:uppercase;letter-spacing:.08em;margin-bottom:16px}
.footer-col a{display:block;padding:6px 0;color:var(--slate-400);font-size:.94rem;transition:.2s}
.footer-col a:hover{color:#fff}
.footer-social{display:flex;gap:10px;margin-top:18px}
.footer-social a{width:40px;height:40px;border-radius:11px;background:rgba(255,255,255,.06);display:grid;place-items:center;color:var(--slate-300);transition:.2s}
.footer-social a:hover{background:var(--primary);color:#fff;transform:translateY(-3px)}
.footer-social svg{width:19px;height:19px}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;padding:24px 0;color:var(--slate-500);font-size:.88rem}
.footer-bottom a{color:var(--slate-400)}
.footer-bottom a:hover{color:#fff}
.footer-badges{display:flex;gap:20px;flex-wrap:wrap;padding:24px 0;border-bottom:1px solid rgba(255,255,255,.08)}
.footer-badges .fb{display:flex;align-items:center;gap:10px;color:var(--slate-400);font-size:.9rem;font-weight:600}
.footer-badges svg{width:22px;height:22px;color:var(--sky)}

/* ---------- Article / blog ---------- */
.article-head{max-width:760px;margin:0 auto}
.article-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;color:var(--text-soft);font-size:.9rem;margin-top:18px}
.article-meta img{width:44px;height:44px;border-radius:50%}
.prose{max-width:760px;margin:0 auto;font-size:1.08rem;line-height:1.8;color:var(--slate-700)}
.prose h2{margin:38px 0 16px;font-size:1.7rem}
.prose h3{margin:28px 0 12px}
.prose p{margin-bottom:20px}
.prose ul.bullets{margin:0 0 20px;padding-left:0;display:flex;flex-direction:column;gap:10px}
.prose ul.bullets li{position:relative;padding-left:30px}
.prose ul.bullets li::before{content:"";position:absolute;left:0;top:9px;width:16px;height:16px;border-radius:50%;
  background:var(--blue-100);box-shadow:inset 0 0 0 4px var(--primary)}
.prose blockquote{margin:26px 0;padding:18px 24px;border-left:4px solid var(--primary);background:var(--blue-50);border-radius:0 12px 12px 0;font-style:italic;color:var(--slate-700)}
.prose img{border-radius:var(--radius);margin:26px 0}
.toc{background:var(--slate-50);border:1px solid var(--border);border-radius:var(--radius);padding:22px 24px}
.toc h4{font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;color:var(--slate-500);margin-bottom:12px}
.toc a{display:block;padding:6px 0;color:var(--slate-600);font-weight:600;font-size:.95rem}
.toc a:hover{color:var(--primary)}
.blog-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;
  box-shadow:var(--shadow-sm);transition:.35s;display:flex;flex-direction:column}
.blog-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);border-color:var(--blue-200)}
.blog-media{aspect-ratio:10/7;overflow:hidden}
.blog-media img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.blog-card:hover .blog-media img{transform:scale(1.06)}
.blog-body{padding:20px;display:flex;flex-direction:column;gap:10px;flex:1}
.blog-body h3{font-size:1.14rem}
.blog-body h3 a:hover{color:var(--primary)}
.blog-body .b-meta{margin-top:auto;display:flex;gap:12px;color:var(--text-mute);font-size:.83rem;font-weight:600}

/* ---------- Mobile sticky CTA ---------- */
.sticky-cta{position:fixed;left:0;right:0;bottom:0;z-index:55;background:#fff;border-top:1px solid var(--border);
  box-shadow:0 -8px 24px -12px rgba(15,23,42,.2);padding:12px 16px;display:none;gap:10px;align-items:center}
.sticky-cta .sc-info{flex:1;min-width:0}
.sticky-cta .sc-t{font-weight:700;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sticky-cta .sc-m{font-size:.8rem;color:var(--text-soft)}

/* ---------- Reveal animation ---------- */
[data-reveal]{opacity:0;transform:translateY(26px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
[data-reveal].in{opacity:1;transform:none}
[data-reveal-delay="1"]{transition-delay:.08s}
[data-reveal-delay="2"]{transition-delay:.16s}
[data-reveal-delay="3"]{transition-delay:.24s}
[data-reveal-delay="4"]{transition-delay:.32s}
[data-reveal-delay="5"]{transition-delay:.40s}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  [data-reveal]{opacity:1;transform:none}
}

/* ---------- Divider / misc ---------- */
.divider{height:1px;background:var(--border);border:none;margin:0}
.pill-list{display:flex;flex-wrap:wrap;gap:10px}
.link-arrow{display:inline-flex;align-items:center;gap:7px;font-weight:700;color:var(--primary)}
.link-arrow svg{width:18px;height:18px;transition:transform .25s var(--ease)}
.link-arrow:hover svg{transform:translateX(4px)}
.avatar-stack{display:flex}
.avatar-stack img,.avatar-stack .avatar-initials{width:38px;height:38px;border-radius:50%;border:2.5px solid #fff;margin-left:-12px;object-fit:cover}
.avatar-stack img:first-child,.avatar-stack .avatar-initials:first-child{margin-left:0}

/* Initials avatar (replaces photographic avatar placeholders) */
.avatar-initials{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;
  color:#fff;font-family:var(--font-display);font-weight:700;line-height:1;flex:0 0 auto;
  letter-spacing:.02em;text-transform:uppercase;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}
.avatar-initials svg{width:56%;height:56%}

/* ---------- Location navigation dropdown ---------- */
.nav-dropdown{position:relative}
.nav-dropdown summary{list-style:none;display:flex;align-items:center;gap:7px;padding:9px 14px;border-radius:10px;
  font-weight:600;font-size:.95rem;color:var(--slate-600);cursor:pointer;transition:.2s;user-select:none}
.nav-dropdown summary::-webkit-details-marker{display:none}
.nav-dropdown summary:hover,.nav-dropdown[open] summary,.nav-dropdown summary.active{color:var(--primary);background:var(--blue-50)}
.nav-dropdown summary svg{width:15px;height:15px;transition:transform .2s}
.nav-dropdown[open] summary svg{transform:rotate(180deg)}
.nav-dropdown-menu{position:absolute;z-index:80;top:calc(100% + 10px);left:50%;transform:translateX(-50%);width:230px;
  padding:9px;background:#fff;border:1px solid var(--border);border-radius:15px;box-shadow:var(--shadow-lg)}
.nav-dropdown-menu::before{content:"";position:absolute;left:50%;top:-6px;width:11px;height:11px;background:#fff;
  border-left:1px solid var(--border);border-top:1px solid var(--border);transform:translateX(-50%) rotate(45deg)}
.nav-links .nav-dropdown-menu a{position:relative;display:flex;align-items:center;justify-content:space-between;padding:11px 12px;border-radius:10px}
.nav-links .nav-dropdown-menu a:last-child{margin-top:5px;padding-top:12px;border-top:1px solid var(--slate-100);border-radius:0 0 10px 10px;color:var(--primary)}
.mobile-location-menu{border-bottom:1px solid var(--slate-100)}
.mobile-location-menu summary{list-style:none;padding:14px 12px;border-radius:12px;font-weight:600;color:var(--slate-700);cursor:pointer}
.mobile-location-menu summary::-webkit-details-marker{display:none}
.mobile-location-menu summary::after{content:"+";float:right;color:var(--primary);font-size:1.15rem}
.mobile-location-menu[open] summary::after{content:"−"}
.mobile-menu .panel .mobile-location-menu a{margin-left:12px;padding:11px 12px;border-bottom:0;font-size:.92rem;background:var(--slate-50)}

/* ---------- Search-index featured listings ---------- */
[data-contextual-featured][hidden]{display:none!important}
.contextual-featured-shell{position:relative;overflow:hidden}
.contextual-featured-shell::before{content:"";position:absolute;inset:0;background:
  radial-gradient(circle at 8% 12%,rgba(37,99,235,.10),transparent 28%),
  radial-gradient(circle at 92% 88%,rgba(14,165,233,.10),transparent 30%);pointer-events:none}
.contextual-featured-grid{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.context-featured-card{min-width:0;overflow:hidden;background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm);display:flex;flex-direction:column;transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .3s}
.context-featured-card:hover{transform:translateY(-7px);box-shadow:var(--shadow-lg);border-color:var(--blue-200)}
.context-featured-cover{position:relative;isolation:isolate;min-height:190px;padding:24px;display:flex;flex-direction:column;justify-content:space-between;color:#fff;overflow:hidden}
.context-featured-cover::before,.context-featured-cover::after{content:"";position:absolute;z-index:-1;border-radius:50%;background:rgba(255,255,255,.13)}
.context-featured-cover::before{width:190px;height:190px;right:-65px;top:-95px}
.context-featured-cover::after{width:120px;height:120px;left:-55px;bottom:-70px}
.context-featured-cover-image{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover}
.context-featured-cover.has-image::before{inset:0;z-index:-1;width:auto;height:auto;border-radius:0;background:linear-gradient(180deg,rgba(15,23,42,.18),rgba(15,23,42,.38) 42%,rgba(15,23,42,.88));box-shadow:none}
.context-featured-cover.has-image::after{display:none}
.context-featured-cover.has-image .context-featured-monogram{width:44px;height:44px;border-radius:14px;background:rgba(15,23,42,.46);font-size:1.15rem;backdrop-filter:blur(8px)}
.context-featured-cover.has-image .context-featured-label{background:rgba(15,23,42,.58);backdrop-filter:blur(8px)}
.context-featured-theme-0{background:linear-gradient(140deg,#0f766e,#0891b2 55%,#2563eb)}
.context-featured-theme-1{background:linear-gradient(140deg,#4338ca,#7c3aed 54%,#db2777)}
.context-featured-theme-2{background:linear-gradient(140deg,#b45309,#ea580c 52%,#dc2626)}
.context-featured-theme-3{background:linear-gradient(140deg,#0369a1,#0f766e 58%,#16a34a)}
.context-featured-theme-4{background:linear-gradient(140deg,#9d174d,#db2777 50%,#7c3aed)}
.context-featured-theme-5{background:linear-gradient(140deg,#1e293b,#1e40af 56%,#0f766e)}
.context-featured-theme-6{background:linear-gradient(140deg,#166534,#0f766e 54%,#0891b2)}
.context-featured-theme-7{background:linear-gradient(140deg,#7c2d12,#be123c 52%,#7e22ce)}
.context-featured-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.context-featured-monogram{width:54px;height:54px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.35);border-radius:17px;
  background:rgba(255,255,255,.15);font-family:var(--font-display);font-weight:800;font-size:1.45rem;box-shadow:inset 0 1px 0 rgba(255,255,255,.18)}
.context-featured-label{padding:7px 10px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(15,23,42,.22);
  font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}
.context-featured-cover-copy{margin-top:28px}
.context-featured-cover-copy span{display:block;margin-bottom:6px;font-size:.76rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.78)}
.context-featured-cover-copy h3{color:#fff;font-size:1.35rem;line-height:1.2;overflow-wrap:anywhere}
.context-featured-body{padding:21px;display:flex;flex-direction:column;gap:13px;flex:1}
.context-featured-meta{display:flex;flex-wrap:wrap;gap:8px 12px;color:var(--text-soft);font-size:.87rem;font-weight:600}
.context-featured-rating{display:flex;align-items:center;gap:7px;font-size:.86rem}
.context-featured-rating .stars{letter-spacing:1px;color:var(--amber);font-size:.9rem}
.context-featured-desc{color:var(--text-soft);font-size:.91rem;line-height:1.6;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.context-featured-tags{display:flex;flex-wrap:wrap;gap:7px}
.context-featured-tags span{padding:5px 8px;border-radius:999px;background:var(--slate-100);color:var(--slate-600);font-size:.73rem;font-weight:700}
.context-featured-foot{margin-top:auto;padding-top:14px;border-top:1px solid var(--slate-100);display:flex;align-items:center;justify-content:space-between;gap:10px}
.context-featured-cta{min-height:100%;padding:28px;border:1px solid var(--blue-200);border-radius:var(--radius-lg);
  background:linear-gradient(145deg,#eff6ff,#fff 52%,#dbeafe);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;align-items:flex-start}
.context-featured-cta h3{margin:18px 0 9px}.context-featured-cta p{color:var(--text-soft);font-size:.92rem}.context-featured-cta .btn{margin-top:auto}
.context-featured-cta-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:15px;background:var(--grad-brand);color:#fff;font-size:1.3rem;box-shadow:var(--shadow-blue)}

/* ---------- Basic listing profile ---------- */
.basic-profile-hero{padding:34px 0 12px}
.basic-profile-card{display:grid;grid-template-columns:minmax(230px,.7fr) minmax(0,1.3fr);overflow:hidden;border:1px solid var(--border);
  border-radius:var(--radius-xl);background:#fff;box-shadow:var(--shadow-md)}
.basic-profile-cover{position:relative;isolation:isolate;min-height:330px;padding:34px;color:#fff;background:linear-gradient(145deg,#1e293b,#1d4ed8 58%,#0891b2);
  display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}
.basic-profile-cover::before,.basic-profile-cover::after{content:"";position:absolute;z-index:-1;border-radius:50%;background:rgba(255,255,255,.12)}
.basic-profile-cover::before{width:280px;height:280px;right:-125px;top:-130px}.basic-profile-cover::after{width:180px;height:180px;left:-90px;bottom:-95px}
.basic-profile-mark{width:72px;height:72px;display:grid;place-items:center;border-radius:22px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.3);
  font-family:var(--font-display);font-weight:800;font-size:2rem}
.basic-profile-cover h2{color:#fff;font-size:1.5rem}.basic-profile-cover p{color:rgba(255,255,255,.8);font-size:.9rem}
.basic-profile-main{padding:clamp(26px,5vw,48px)}
.basic-profile-main h1{margin:12px 0 14px;font-size:clamp(2rem,4vw,3.4rem)}
.basic-profile-summary{font-size:1.02rem;color:var(--text-soft);line-height:1.75}
.basic-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:25px 0}
.basic-fact{padding:14px 15px;border:1px solid var(--border);border-radius:13px;background:var(--slate-50)}
.basic-fact span{display:block;margin-bottom:4px;color:var(--text-mute);font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.basic-claim-note{display:flex;align-items:flex-start;gap:13px;margin-top:22px;padding:17px;border:1px solid var(--blue-100);border-radius:14px;background:var(--blue-50)}
.basic-claim-note strong{display:block;margin-bottom:3px}.basic-claim-note p{margin:0;color:var(--text-soft);font-size:.88rem}

/* ---------- Responsive ---------- */
@media (max-width:1024px){
  :root{--header-h:66px}
  .nav-links,.nav-cta .btn-ghost{display:none}
  .nav-toggle{display:grid}
  .g4{grid-template-columns:repeat(3,1fr)}
  .price-grid{grid-template-columns:1fr}
  .price-card.popular{transform:none}
  .footer-grid{grid-template-columns:1fr 1fr}
  .gallery-grid{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}
  .gallery-grid a:first-child{grid-row:auto;grid-column:1/3}
  .contextual-featured-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .featured-benefits-layout,
  .featured-profile-layout,
  .grid[style*="grid-template-columns:1fr 1.15fr"],
  .grid[style*="grid-template-columns:1fr 360px"]{grid-template-columns:minmax(0,1fr)!important}
  .featured-benefits-layout{gap:36px}
  .featured-benefits-layout>*,.featured-profile-layout>*{min-width:0;max-width:100%}
  .featured-benefits-preview{justify-self:center;width:min(100%,720px)}
  .featured-profile-layout aside{width:100%}
  .featured-profile-layout .contact-card{position:static;top:auto;width:100%}
}
@media (max-width:860px){
  :root{--header-h:66px}
  .grid[style*="grid-template-columns"]{grid-template-columns:1fr!important}
  .nav-links,.nav-cta .btn-ghost{display:none}
  .nav-toggle{display:grid}
  .searchbar{grid-template-columns:1fr;padding:8px}
  .search-field.divider{border-left:none;border-top:1px solid var(--border)}
  .hero-layout{grid-template-columns:1fr;gap:32px}
  .hero-owner-card{justify-self:start;max-width:520px}
  .stats{grid-template-columns:repeat(2,1fr);gap:28px 18px}
  .g3,.g4{grid-template-columns:repeat(2,1fr)}
  .g2{grid-template-columns:1fr}
  .amenity-grid{grid-template-columns:1fr}
  .plan-select{grid-template-columns:1fr}
  .form-row{grid-template-columns:1fr}
  .listing-list .listing-card{flex-direction:column}
  .listing-list .listing-media{width:100%;aspect-ratio:4/3;min-width:0}
  .toolbar{position:static}
  .filter-panel{position:static}
  .filter-mobile-btn{display:inline-flex}
  .cta-inner{padding:36px 24px;align-items:flex-start}
  .basic-profile-card{grid-template-columns:1fr}.basic-profile-cover{min-height:230px}
}
@media (max-width:600px){
  .contextual-featured-grid{grid-template-columns:1fr}
  .basic-facts{grid-template-columns:1fr}
  .container{padding-inline:16px}
  .section{padding:52px 0}
  .section-tight{padding:36px 0}
  .nav{gap:10px}
  .brand{min-width:0;max-width:46vw;font-size:1.05rem;overflow:hidden}
  .brand img{max-width:100%;height:auto;object-fit:contain}
  .nav-cta{gap:7px}
  .nav-cta .btn-primary{padding:10px 13px;font-size:.82rem}
  .nav-toggle{width:40px;height:40px}
  .hero-inner{padding:48px 0 56px}
  .hero h1{font-size:clamp(2.15rem,11vw,3.1rem);max-width:none}
  .hero .lead{font-size:1rem;margin:15px 0 24px}
  .hero-owner-card{width:100%;padding:22px}
  .hero-owner-card .btn,.searchbar .btn{width:100%}
  .hero-badges{gap:8px}.hero-badge{padding:7px 10px;font-size:.78rem}
  .stats{grid-template-columns:1fr 1fr;gap:24px 10px}
  .g3,.g4{grid-template-columns:1fr}
  .panel,.contact-card{padding:20px}
  .detail-head{margin:20px 0;gap:14px}
  .detail-head>div{min-width:0;width:100%}
  .detail-head h1{font-size:clamp(1.75rem,9vw,2.35rem);overflow-wrap:anywhere}
  .detail-metaline{gap:9px;font-size:.88rem}
  .gallery-grid{height:auto;grid-template-rows:220px 130px}
  .gallery-grid a:first-child{grid-column:1/3}
  .hours-row{gap:14px}.hours-row .h-time{text-align:right}
  .review{gap:10px}.review img{width:40px;height:40px}
  .rating-summary{align-items:flex-start}.rating-bars{min-width:100%}
  .listing-body{padding:18px}
  .listing-title{font-size:1.08rem}
  .context-featured-cover{min-height:180px;padding:20px}
  .context-featured-body{padding:18px}
  .context-featured-foot{align-items:stretch;flex-direction:column}
  .context-featured-foot .btn{width:100%}
  .context-featured-cta{padding:24px;min-height:330px}
  .featured-benefits-layout{gap:28px}
  .featured-benefits-layout .feature{display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px}
  .featured-benefits-layout .feature .f-ic{width:44px;height:44px}
  .featured-benefits-layout .feature h3{font-size:1.04rem;overflow-wrap:anywhere}
  .featured-benefits-layout .feature p{font-size:.92rem;overflow-wrap:anywhere}
  .featured-benefits-preview{width:100%}
  .featured-profile-layout{gap:22px!important}
  .featured-profile-layout .panel,.featured-profile-layout .contact-card{width:100%;padding:20px}
  .basic-profile-main{padding:24px 20px}.basic-profile-main h1{font-size:2rem;overflow-wrap:anywhere}
  .basic-profile-cover{padding:24px;min-height:210px}
  .cta-inner{padding:30px 20px;flex-direction:column}
  .cta-inner>div,.cta-inner .btn{width:100%}
  .newsletter{padding:28px 20px}.newsletter input,.newsletter .btn{width:100%;min-width:0}
  .price-card{padding:28px 20px}
  .footer-grid{grid-template-columns:1fr;gap:30px}
  .footer-bottom{align-items:flex-start;flex-direction:column}
  .footer-badges{gap:14px}
  .pagination a,.pagination span{min-width:40px;height:40px}
  .mobile-menu .panel{width:min(92vw,360px)}
}
@media (max-width:420px){
  .nav-cta .btn-primary{display:none}
  .brand{max-width:68vw}
  .stats{grid-template-columns:1fr}
  .gallery-grid{grid-template-rows:200px 115px}
  .featured-benefits-layout .feature{grid-template-columns:40px minmax(0,1fr)}
  .featured-benefits-layout .feature .f-ic{width:40px;height:40px}
}

/* Claimed listing: intentionally lighter than the Featured profile */
.claimed-gallery-section{padding-top:4px}
.claimed-gallery-grid{display:grid;grid-template-columns:2fr 1fr;grid-template-rows:1fr 1fr;gap:10px;height:390px;overflow:hidden;border-radius:var(--radius-lg);background:var(--soft)}
.claimed-gallery-grid a{display:block;overflow:hidden;position:relative}
.claimed-gallery-grid a:first-child{grid-row:1/3}
.claimed-gallery-grid img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}
.claimed-gallery-grid a:hover img{transform:scale(1.035)}
.claimed-profile-content .panel{box-shadow:none}
.claimed-profile-content .contact-card{box-shadow:var(--shadow-sm)}
.claimed-review-snapshot .review{border-bottom:0;padding-bottom:0}
@media(max-width:760px){
  .claimed-gallery-grid{grid-template-columns:1fr 1fr;grid-template-rows:220px 150px;height:auto}
  .claimed-gallery-grid a:first-child{grid-row:auto;grid-column:1/3}
  .claimed-profile-layout{grid-template-columns:1fr!important}
}

/* ---------- Cross-page responsive safeguards ---------- */
html,body{max-width:100%;overflow-x:hidden}
main,section,article,aside,header,footer,.container,.grid,.flex,.panel,.card{min-width:0}
iframe,video,canvas,table{max-width:100%}
input,select,textarea{max-width:100%;min-width:0}
a[href^="mailto:"],a[href^="http"],.prose,.muted,.listing-desc,.footer-brand p{overflow-wrap:anywhere;word-break:break-word}
.grid>*{min-width:0}

@media(max-width:860px){
  .grid[style*="grid-template-columns"]>*{min-width:0}
  .flex.between{flex-wrap:wrap}
  .compare{min-width:620px}
  .contact-card,.panel,.listing-card,.price-card{max-width:100%}
}
@media(max-width:600px){
  .btn{max-width:100%;white-space:normal;line-height:1.25;text-align:center}
  .btn svg{flex:0 0 auto}
  .eyebrow,.badge,.chip,.tag{max-width:100%;white-space:normal;overflow-wrap:anywhere}
  .section-head{margin-bottom:28px}
  .detail-head,.detail-metaline,.listing-foot,.card-foot,.toolbar-inner{min-width:0;flex-wrap:wrap}
  .hours-row>*{min-width:0}
  .hours-row .h-time{overflow-wrap:anywhere}
  .form-group,.form-field,.search-field{min-width:0}
  .sticky-cta{padding:10px 12px}
  .sticky-cta .btn{flex:0 1 auto;padding-inline:15px}
}
