/* ============================================================
   SAS GREI — Foncière institutionnelle premium
   Design system : navy/charcoal + off-white + violet #9B8ABB + or
   ============================================================ */

:root {
  /* Type scale (fluid) */
  --text-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.8125rem);
  --text-sm: clamp(0.875rem, 0.82rem + 0.2vw, 0.9375rem);
  --text-base: clamp(1rem, 0.96rem + 0.2vw, 1.0625rem);
  --text-lg: clamp(1.125rem, 1rem + 0.5vw, 1.375rem);
  --text-xl: clamp(1.5rem, 1.2rem + 1.1vw, 2.125rem);
  --text-2xl: clamp(2rem, 1.3rem + 2.4vw, 3.25rem);
  --text-3xl: clamp(2.6rem, 1.4rem + 4vw, 4.75rem);
  --text-hero: clamp(2.9rem, 1rem + 6vw, 6rem);

  /* Spacing */
  --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem; --space-4: 1rem;
  --space-5: 1.25rem; --space-6: 1.5rem; --space-8: 2rem; --space-10: 2.5rem;
  --space-12: 3rem; --space-16: 4rem; --space-20: 5rem; --space-24: 6rem; --space-32: 8rem;

  /* Color — light/institutional */
  --navy: #14213a;          /* deep navy primary */
  --navy-800: #1c2c4c;
  --charcoal: #2a2e38;
  --canvas: #f7f5f0;        /* warm off-white */
  --surface: #ffffff;
  --surface-2: #f1eee7;
  --surface-3: #ebe7de;
  --border: #ddd8cd;
  --divider: #e6e2d8;

  --text: #1a2236;
  --text-muted: #5d6377;
  --text-faint: #8b8f9c;
  --text-inverse: #f5f3ee;

  --violet: #9b8abb;        /* brand accent */
  --violet-deep: #7c6aa1;
  --violet-soft: #ece7f2;
  --gold: #c9a961;          /* prestige touch */
  --gold-deep: #a98a47;

  --radius-sm: 3px;
  --radius-md: 6px;
  --radius-lg: 10px;
  --radius-full: 9999px;

  --shadow-sm: 0 1px 3px rgba(20,33,58,.06);
  --shadow-md: 0 8px 28px rgba(20,33,58,.10);
  --shadow-lg: 0 24px 60px rgba(20,33,58,.16);

  --content-narrow: 680px;
  --content-default: 1020px;
  --content-wide: 1280px;

  --transition: 320ms cubic-bezier(0.16, 1, 0.3, 1);

  --font-display: 'Cormorant Garamond', 'EB Garamond', Georgia, serif;
  --font-body: 'Inter', 'Helvetica Neue', system-ui, sans-serif;
}

/* ---------- base ---------- */
*,*::before,*::after { box-sizing: border-box; margin:0; padding:0; }
html {
  -webkit-text-size-adjust:none; text-size-adjust:none;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility; scroll-behavior:smooth; scroll-padding-top:6rem;
}
body {
  min-height:100dvh; line-height:1.65; font-family:var(--font-body);
  font-size:var(--text-base); color:var(--text); background:var(--canvas);
  overflow-x:hidden;
}
img,picture,svg,video { display:block; max-width:100%; height:auto; }
ul[role='list'],ol[role='list'] { list-style:none; }
input,button,textarea,select { font:inherit; color:inherit; }
button { cursor:pointer; background:none; border:none; }
a { color:inherit; text-decoration:none; }

h1,h2,h3,h4 { font-family:var(--font-display); font-weight:600; line-height:1.08; letter-spacing:-0.01em; text-wrap:balance; }
p,li { text-wrap:pretty; }

::selection { background:rgba(155,138,187,.3); color:var(--navy); }
:focus-visible { outline:2px solid var(--violet-deep); outline-offset:3px; border-radius:var(--radius-sm); }

a,button,input,textarea,select,[role='button'] {
  transition:color var(--transition),background var(--transition),
    border-color var(--transition),box-shadow var(--transition),transform var(--transition),opacity var(--transition);
}

.sr-only { position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0; }

@media (prefers-reduced-motion: reduce) {
  *,*::before,*::after { animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important; }
}

/* ---------- layout helpers ---------- */
.wrap { width:100%; max-width:var(--content-wide); margin-inline:auto; padding-inline:clamp(1.25rem,5vw,3.5rem); }
.wrap-narrow { max-width:var(--content-narrow); }
.wrap-default { max-width:var(--content-default); }
.section { padding-block:clamp(var(--space-16),9vw,var(--space-32)); }
.section-sm { padding-block:clamp(var(--space-12),6vw,var(--space-20)); }

.eyebrow {
  font-family:var(--font-body); font-size:var(--text-xs); font-weight:600;
  letter-spacing:.22em; text-transform:uppercase; color:var(--violet-deep);
  display:inline-flex; align-items:center; gap:.6rem;
}
.eyebrow::before { content:''; width:28px; height:1px; background:var(--violet-deep); display:inline-block; }
.eyebrow.gold { color:var(--gold-deep); }
.eyebrow.gold::before { background:var(--gold-deep); }
.eyebrow.light { color:var(--violet); }
.eyebrow.light::before { background:var(--violet); }

.lead { font-size:var(--text-lg); color:var(--text-muted); line-height:1.6; max-width:46ch; }

/* ---------- buttons ---------- */
.btn {
  display:inline-flex; align-items:center; gap:.6rem; justify-content:center;
  font-family:var(--font-body); font-size:var(--text-sm); font-weight:600;
  letter-spacing:.02em; padding:.95rem 1.7rem; border-radius:var(--radius-sm);
  border:1px solid transparent;
}
.btn svg { width:1em; height:1em; transition:transform var(--transition); }
.btn:hover svg { transform:translateX(3px); }
.btn-primary { background:var(--violet-deep); color:#fff; }
.btn-primary:hover { background:var(--navy); }
.btn-dark { background:var(--navy); color:var(--text-inverse); }
.btn-dark:hover { background:var(--navy-800); }
.btn-ghost { border-color:var(--border); color:var(--navy); background:transparent; }
.btn-ghost:hover { border-color:var(--navy); background:var(--navy); color:#fff; }
.btn-light { background:#fff; color:var(--navy); }
.btn-light:hover { background:var(--violet-soft); }
.btn-outline-light { border-color:rgba(245,243,238,.4); color:var(--text-inverse); }
.btn-outline-light:hover { border-color:#fff; background:#fff; color:var(--navy); }

/* ---------- header ---------- */
.site-header {
  position:fixed; top:0; left:0; right:0; z-index:100;
  transition:background var(--transition),box-shadow var(--transition),border-color var(--transition);
  border-bottom:1px solid transparent;
}
.site-header.scrolled {
  background:rgba(247,245,240,.88); backdrop-filter:blur(14px) saturate(1.4);
  border-color:var(--divider); box-shadow:var(--shadow-sm);
}
.nav { display:flex; align-items:center; justify-content:space-between; height:78px; gap:2rem; }
.brand { display:flex; align-items:center; gap:.7rem; color:var(--navy); }
.brand .logo { width:40px; height:40px; flex:none; }
.brand-text { display:flex; flex-direction:column; line-height:1; }
.brand-name { font-family:var(--font-display); font-size:1.45rem; font-weight:700; letter-spacing:.04em; color:var(--navy); }
.brand-sub { font-size:.62rem; letter-spacing:.24em; text-transform:uppercase; color:var(--text-faint); margin-top:3px; }

/* header over dark hero */
.site-header:not(.scrolled) .brand-name { color:#fff; }
.site-header:not(.scrolled) .brand .logo { color:#fff; }
.site-header:not(.scrolled) .brand-sub { color:rgba(245,243,238,.65); }
.site-header:not(.scrolled) .nav-links a { color:rgba(245,243,238,.86); }
.site-header:not(.scrolled) .nav-links a:hover,
.site-header:not(.scrolled) .nav-links a.active { color:#fff; }
.site-header:not(.scrolled) .nav-toggle span { background:#fff; }
.no-hero .site-header { background:rgba(247,245,240,.88); backdrop-filter:blur(14px); border-color:var(--divider); }
.no-hero .site-header .brand-name { color:var(--navy); }
.no-hero .site-header .brand-sub { color:var(--text-faint); }
.no-hero .site-header .nav-links a { color:var(--text-muted); }
.no-hero .site-header .nav-toggle span { background:var(--navy); }

.nav-links { display:flex; align-items:center; gap:2rem; list-style:none; }
.nav-links a {
  font-size:var(--text-sm); font-weight:500; color:var(--text-muted); position:relative; padding:.3rem 0;
}
.nav-links a:hover,.nav-links a.active { color:var(--navy); }
.nav-links a.active::after {
  content:''; position:absolute; left:0; bottom:-2px; width:100%; height:2px; background:var(--violet-deep);
}
.nav-cta { margin-left:.5rem; }
.nav-toggle { display:none; flex-direction:column; gap:5px; padding:8px; }
.nav-toggle span { width:24px; height:2px; background:var(--navy); transition:var(--transition); }

@media (max-width:920px){
  .nav-links {
    position:fixed; inset:78px 0 auto 0; flex-direction:column; align-items:flex-start; gap:0;
    background:var(--canvas); padding:1rem clamp(1.25rem,5vw,3.5rem) 2rem; border-bottom:1px solid var(--divider);
    transform:translateY(-120%); transition:transform var(--transition); box-shadow:var(--shadow-md);
  }
  .nav-links.open { transform:translateY(0); }
  .nav-links a { color:var(--navy)!important; width:100%; padding:.95rem 0; border-bottom:1px solid var(--divider); font-size:var(--text-base); }
  .nav-links a.active::after { display:none; }
  .nav-links .nav-cta { margin:1rem 0 0; width:100%; }
  .nav-toggle { display:flex; }
  .site-header:not(.scrolled) .nav-links a { color:var(--navy)!important; }
}

/* ---------- footer ---------- */
.site-footer { background:var(--navy); color:rgba(245,243,238,.7); padding-block:var(--space-20) var(--space-10); }
.footer-grid { display:grid; grid-template-columns:1.6fr 1fr 1fr 1.2fr; gap:var(--space-12) var(--space-8); }
.footer-brand .brand-name { color:#fff; }
.footer-brand .brand-sub { color:rgba(245,243,238,.5); }
.footer-brand p { margin-top:1.2rem; font-size:var(--text-sm); max-width:34ch; color:rgba(245,243,238,.6); }
.footer-col h4 { font-family:var(--font-body); font-size:var(--text-xs); font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--violet); margin-bottom:1.1rem; }
.footer-col ul { list-style:none; display:flex; flex-direction:column; gap:.7rem; }
.footer-col a,.footer-col li { font-size:var(--text-sm); color:rgba(245,243,238,.66); }
.footer-col a:hover { color:#fff; }
.footer-bottom { margin-top:var(--space-16); padding-top:var(--space-8); border-top:1px solid rgba(245,243,238,.12);
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:1rem; font-size:var(--text-xs); color:rgba(245,243,238,.45); }
.footer-eco { font-size:var(--text-xs); color:rgba(245,243,238,.55); line-height:1.9; }
.footer-eco strong { color:rgba(245,243,238,.85); font-weight:600; }
@media (max-width:860px){ .footer-grid { grid-template-columns:1fr 1fr; } .footer-brand { grid-column:1/-1; } }
@media (max-width:520px){ .footer-grid { grid-template-columns:1fr; } }

/* ---------- hero ---------- */
.hero { position:relative; min-height:100vh; display:flex; align-items:flex-end; color:#fff; isolation:isolate; }
.hero-bg { position:absolute; inset:0; z-index:-2; }
.hero-bg img { width:100%; height:100%; object-fit:cover; }
.hero::after { content:''; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(180deg, rgba(12,20,40,.55) 0%, rgba(12,20,40,.25) 35%, rgba(12,20,40,.78) 100%); }
.hero-inner { padding-block:clamp(7rem,14vh,11rem) clamp(3.5rem,8vh,6rem); width:100%; }
.hero h1 { font-size:var(--text-hero); font-weight:600; max-width:16ch; color:#fff; letter-spacing:-0.015em; }
.hero h1 em { font-style:italic; color:var(--violet); }
.hero .lead { color:rgba(245,243,238,.86); max-width:52ch; margin-top:1.6rem; font-size:var(--text-lg); }
.hero-cta { display:flex; flex-wrap:wrap; gap:1rem; margin-top:2.4rem; }
.hero-scroll { position:absolute; bottom:2rem; right:clamp(1.25rem,5vw,3.5rem); font-size:var(--text-xs);
  letter-spacing:.2em; text-transform:uppercase; color:rgba(245,243,238,.6); writing-mode:vertical-rl; }

/* page hero (interior) */
.page-hero { padding-top:clamp(9rem,16vh,12rem); padding-bottom:clamp(3rem,6vw,5rem); background:var(--navy); color:#fff; position:relative; overflow:hidden; }
.page-hero::before { content:''; position:absolute; top:-30%; right:-10%; width:55%; height:160%;
  background:radial-gradient(circle, rgba(155,138,187,.22), transparent 65%); }
.page-hero h1 { font-size:var(--text-3xl); color:#fff; max-width:18ch; position:relative; }
.page-hero h1 em { font-style:italic; color:var(--violet); }
.page-hero .lead { color:rgba(245,243,238,.78); margin-top:1.3rem; position:relative; max-width:56ch; }
.page-hero .eyebrow { color:var(--violet); }
.page-hero .eyebrow::before { background:var(--violet); }

/* ---------- generic section heads ---------- */
.section-head { max-width:64ch; }
.section-head h2 { font-size:var(--text-2xl); margin-top:.8rem; color:var(--navy); }
.section-head p { margin-top:1.1rem; color:var(--text-muted); font-size:var(--text-lg); }
.center { text-align:center; margin-inline:auto; }
.center .eyebrow { justify-content:center; }

/* ---------- pillars ---------- */
.pillars { display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-6); margin-top:var(--space-12); }
.pillar { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md);
  padding:var(--space-8); display:flex; flex-direction:column; gap:1rem; transition:var(--transition); position:relative; overflow:hidden; }
.pillar::before { content:''; position:absolute; top:0; left:0; width:100%; height:3px; background:var(--violet); transform:scaleX(0); transform-origin:left; transition:transform var(--transition); }
.pillar:hover { box-shadow:var(--shadow-md); transform:translateY(-4px); }
.pillar:hover::before { transform:scaleX(1); }
.pillar-num { font-family:var(--font-display); font-size:var(--text-xl); color:var(--violet-deep); font-style:italic; }
.pillar h3 { font-size:var(--text-lg); color:var(--navy); }
.pillar p { font-size:var(--text-sm); color:var(--text-muted); }
.pillar .tag { font-size:var(--text-xs); letter-spacing:.12em; text-transform:uppercase; color:var(--gold-deep); font-weight:600; }
@media (max-width:860px){ .pillars { grid-template-columns:1fr; } }

/* ---------- track record bar ---------- */
.track { background:var(--navy); color:#fff; }
.track-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:var(--space-8); }
.stat { text-align:center; padding-block:var(--space-4); }
.stat .num { font-family:var(--font-display); font-size:var(--text-3xl); font-weight:600; color:#fff; line-height:1; }
.stat .num span { color:var(--violet); }
.stat .label { font-size:var(--text-xs); letter-spacing:.14em; text-transform:uppercase; color:rgba(245,243,238,.6); margin-top:.7rem; }
@media (max-width:760px){ .track-grid { grid-template-columns:1fr 1fr; gap:var(--space-10) var(--space-6); } }

/* ---------- editorial split ---------- */
.split { display:grid; grid-template-columns:1fr 1fr; gap:clamp(2rem,5vw,5rem); align-items:center; }
.split.reverse .split-media { order:2; }
.split-media img { width:100%; border-radius:var(--radius-md); box-shadow:var(--shadow-md); }
.split-body h2 { font-size:var(--text-2xl); color:var(--navy); margin-top:.8rem; }
.split-body p { margin-top:1.2rem; color:var(--text-muted); }
@media (max-width:860px){ .split { grid-template-columns:1fr; gap:2rem; } .split.reverse .split-media { order:0; } }

/* reassurance list */
.reassure-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:var(--space-6) var(--space-8); margin-top:var(--space-8); }
.reassure { display:flex; gap:1rem; }
.reassure .ico { flex:none; width:42px; height:42px; border-radius:var(--radius-sm); background:var(--violet-soft);
  display:grid; place-items:center; color:var(--violet-deep); }
.reassure .ico svg { width:20px; height:20px; }
.reassure h4 { font-family:var(--font-body); font-size:var(--text-base); font-weight:700; color:var(--navy); }
.reassure p { font-size:var(--text-sm); color:var(--text-muted); margin-top:.3rem; }
@media (max-width:680px){ .reassure-grid { grid-template-columns:1fr; } }

/* ---------- cards / grid ---------- */
.cards { display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-8); }
@media (max-width:980px){ .cards { grid-template-columns:repeat(2,1fr); } }
@media (max-width:620px){ .cards { grid-template-columns:1fr; } }

.card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md); overflow:hidden;
  display:flex; flex-direction:column; transition:var(--transition); }
.card:hover { box-shadow:var(--shadow-md); transform:translateY(-4px); }
.card-media { aspect-ratio:4/3; overflow:hidden; background:var(--surface-2); position:relative; }
.card-media img { width:100%; height:100%; object-fit:cover; transition:transform 600ms cubic-bezier(.16,1,.3,1); }
.card:hover .card-media img { transform:scale(1.05); }
.card-body { padding:var(--space-6); display:flex; flex-direction:column; gap:.7rem; flex:1; }
.card-city { font-size:var(--text-xs); letter-spacing:.14em; text-transform:uppercase; color:var(--text-faint); display:flex; align-items:center; gap:.4rem; }
.card h3 { font-size:var(--text-lg); color:var(--navy); }
.card p { font-size:var(--text-sm); color:var(--text-muted); }
.card-foot { margin-top:auto; padding-top:1rem; border-top:1px solid var(--divider); display:flex; gap:1.4rem; }
.kpi { display:flex; flex-direction:column; }
.kpi .v { font-family:var(--font-display); font-size:var(--text-lg); font-weight:600; color:var(--navy); }
.kpi .v span { color:var(--violet-deep); }
.kpi .k { font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; color:var(--text-faint); }

.badge { align-self:flex-start; font-size:var(--text-xs); font-weight:600; letter-spacing:.08em; text-transform:uppercase;
  padding:.3rem .7rem; border-radius:var(--radius-full); background:var(--violet-soft); color:var(--violet-deep); }
.badge.ct { background:#f3ebde; color:var(--gold-deep); }
.badge.lt { background:var(--violet-soft); color:var(--violet-deep); }
.badge.gestion { background:#e4eaea; color:#3d5a5a; }
.badge.dpe { background:#e2efe0; color:#3f6e34; }
.card-media .badge { position:absolute; top:.85rem; left:.85rem; backdrop-filter:blur(6px); background:rgba(255,255,255,.9); }

/* listing price */
.price { font-family:var(--font-display); font-size:var(--text-xl); font-weight:600; color:var(--navy); }
.listing-meta { display:flex; gap:1.2rem; flex-wrap:wrap; font-size:var(--text-sm); color:var(--text-muted); }
.listing-meta b { color:var(--navy); font-weight:600; }

/* ---------- empty state ---------- */
.empty { text-align:center; padding:clamp(3rem,8vw,6rem) 1.5rem; border:1px dashed var(--border);
  border-radius:var(--radius-lg); background:var(--surface); max-width:680px; margin-inline:auto; }
.empty .ico { width:64px; height:64px; margin:0 auto 1.5rem; border-radius:var(--radius-full);
  background:var(--violet-soft); display:grid; place-items:center; color:var(--violet-deep); }
.empty .ico svg { width:28px; height:28px; }
.empty h3 { font-size:var(--text-xl); color:var(--navy); }
.empty p { color:var(--text-muted); margin:1rem auto 0; max-width:46ch; }
.empty .newsletter { margin-top:2rem; display:flex; gap:.6rem; max-width:420px; margin-inline:auto; }
.empty .newsletter input { flex:1; padding:.85rem 1rem; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--canvas); }

/* skeleton */
.skeleton { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md); overflow:hidden; }
.sk-media { aspect-ratio:4/3; background:linear-gradient(100deg,var(--surface-2) 30%,var(--surface-3) 50%,var(--surface-2) 70%); background-size:200% 100%; animation:shimmer 1.4s infinite; }
.sk-line { height:14px; border-radius:4px; margin:1rem var(--space-6); background:linear-gradient(100deg,var(--surface-2) 30%,var(--surface-3) 50%,var(--surface-2) 70%); background-size:200% 100%; animation:shimmer 1.4s infinite; }
.sk-line.short { width:50%; }
@keyframes shimmer { to { background-position:-200% 0; } }

/* ---------- invest paths ---------- */
.paths { display:grid; grid-template-columns:1fr 1fr; gap:var(--space-8); }
@media (max-width:860px){ .paths { grid-template-columns:1fr; } }
.path { border:1px solid var(--border); border-radius:var(--radius-lg); padding:var(--space-10); background:var(--surface); position:relative; overflow:hidden; }
.path.featured { background:var(--navy); color:#fff; border-color:var(--navy); }
.path.featured h3,.path.featured .path-obj .v { color:#fff; }
.path.featured p { color:rgba(245,243,238,.74); }
.path.featured .path-row { border-color:rgba(245,243,238,.14); }
.path.featured .path-row .k { color:rgba(245,243,238,.55); }
.path.featured .path-row .val { color:#fff; }
.path-tag { font-size:var(--text-xs); letter-spacing:.18em; text-transform:uppercase; font-weight:700; color:var(--violet-deep); }
.path.featured .path-tag { color:var(--violet); }
.path h3 { font-size:var(--text-xl); margin:.6rem 0 .4rem; color:var(--navy); }
.path-obj { margin:1.4rem 0; }
.path-obj .v { font-family:var(--font-display); font-size:var(--text-2xl); font-weight:600; color:var(--navy); }
.path-obj .v span { color:var(--violet); }
.path-obj .k { font-size:var(--text-sm); color:var(--text-muted); }
.path.featured .path-obj .k { color:rgba(245,243,238,.6); }
.path-rows { margin:1.6rem 0; }
.path-row { display:flex; justify-content:space-between; padding:.85rem 0; border-top:1px solid var(--divider); font-size:var(--text-sm); }
.path-row .k { color:var(--text-muted); }
.path-row .val { font-weight:600; color:var(--navy); }
.path .btn { width:100%; margin-top:.5rem; }

/* ---------- process steps ---------- */
.steps { display:grid; grid-template-columns:repeat(5,1fr); gap:var(--space-6); margin-top:var(--space-12); counter-reset:step; }
@media (max-width:900px){ .steps { grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .steps { grid-template-columns:1fr; } }
.step { position:relative; padding-top:var(--space-8); }
.step .n { font-family:var(--font-display); font-size:var(--text-2xl); font-style:italic; color:var(--violet); line-height:1; }
.step h4 { font-family:var(--font-body); font-size:var(--text-base); font-weight:700; color:var(--navy); margin-top:.6rem; }
.step p { font-size:var(--text-sm); color:var(--text-muted); margin-top:.4rem; }

/* ---------- FAQ ---------- */
.faq { max-width:var(--content-narrow); margin-inline:auto; }
.faq-item { border-bottom:1px solid var(--divider); }
.faq-q { width:100%; display:flex; justify-content:space-between; align-items:center; gap:1rem; text-align:left;
  padding:1.5rem 0; font-family:var(--font-display); font-size:var(--text-lg); font-weight:600; color:var(--navy); }
.faq-q .pm { flex:none; width:24px; height:24px; position:relative; }
.faq-q .pm::before,.faq-q .pm::after { content:''; position:absolute; background:var(--violet-deep); top:50%; left:50%; transform:translate(-50%,-50%); }
.faq-q .pm::before { width:14px; height:2px; }
.faq-q .pm::after { width:2px; height:14px; transition:transform var(--transition); }
.faq-item.open .pm::after { transform:translate(-50%,-50%) scaleY(0); }
.faq-a { max-height:0; overflow:hidden; transition:max-height var(--transition); }
.faq-a p { padding-bottom:1.5rem; color:var(--text-muted); font-size:var(--text-base); }

/* ---------- CTA band ---------- */
.cta-band { background:var(--navy); color:#fff; position:relative; overflow:hidden; }
.cta-band::before { content:''; position:absolute; inset:0; background:radial-gradient(circle at 80% 20%, rgba(155,138,187,.25), transparent 55%); }
.cta-band .wrap { position:relative; text-align:center; }
.cta-band h2 { font-size:var(--text-2xl); color:#fff; max-width:20ch; margin-inline:auto; }
.cta-band p { color:rgba(245,243,238,.74); margin:1.2rem auto 2rem; max-width:50ch; }
.cta-band .hero-cta { justify-content:center; }

/* ---------- carousel ---------- */
.carousel { position:relative; }
.carousel-track { display:flex; gap:var(--space-6); overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:1rem; scrollbar-width:none; }
.carousel-track::-webkit-scrollbar { display:none; }
.carousel-track > * { scroll-snap-align:start; flex:0 0 clamp(280px,80vw,380px); }
.carousel-nav { display:flex; gap:.6rem; justify-content:flex-end; margin-bottom:1.2rem; }
.carousel-nav button { width:46px; height:46px; border:1px solid var(--border); border-radius:var(--radius-full); display:grid; place-items:center; color:var(--navy); }
.carousel-nav button:hover { background:var(--navy); color:#fff; border-color:var(--navy); }

/* ---------- contact ---------- */
.contact-grid { display:grid; grid-template-columns:1.5fr 1fr; gap:clamp(2rem,5vw,4rem); align-items:start; }
@media (max-width:860px){ .contact-grid { grid-template-columns:1fr; } }
.form-field { margin-bottom:var(--space-5); }
.form-field label { display:block; font-size:var(--text-sm); font-weight:600; color:var(--navy); margin-bottom:.5rem; }
.form-field label .req { color:var(--violet-deep); }
.form-field input,.form-field textarea,.form-field select {
  width:100%; padding:.95rem 1.1rem; border:1px solid var(--border); border-radius:var(--radius-sm);
  background:var(--surface); font-size:var(--text-base); color:var(--text); }
.form-field input:focus,.form-field textarea:focus,.form-field select:focus { border-color:var(--violet-deep); outline:none; box-shadow:0 0 0 3px rgba(155,138,187,.18); }
.form-field textarea { min-height:140px; resize:vertical; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:var(--space-5); }
@media (max-width:520px){ .form-row { grid-template-columns:1fr; } }
.form-msg { margin-top:1rem; padding:1rem 1.2rem; border-radius:var(--radius-sm); font-size:var(--text-sm); display:none; }
.form-msg.ok { display:block; background:#e4f0e2; color:#2f5b27; border:1px solid #bcd9b4; }
.form-msg.err { display:block; background:#f6e3e3; color:#8a2c2c; border:1px solid #e0bcbc; }

.contact-card { background:var(--navy); color:#fff; border-radius:var(--radius-lg); padding:var(--space-8); }
.contact-card h3 { font-size:var(--text-lg); color:#fff; }
.contact-line { display:flex; gap:.9rem; margin-top:1.5rem; align-items:flex-start; }
.contact-line .ico { flex:none; color:var(--violet); margin-top:2px; }
.contact-line .ico svg { width:18px; height:18px; }
.contact-line .lbl { font-size:var(--text-xs); letter-spacing:.12em; text-transform:uppercase; color:rgba(245,243,238,.5); }
.contact-line .val { font-size:var(--text-sm); color:rgba(245,243,238,.9); margin-top:2px; }
.contact-line a.val:hover { color:var(--violet); }

/* ---------- blog ---------- */
.filters { display:flex; flex-wrap:wrap; gap:.7rem; margin-bottom:var(--space-10); }
.filter-chip { font-size:var(--text-sm); font-weight:500; padding:.55rem 1.1rem; border:1px solid var(--border); border-radius:var(--radius-full); color:var(--text-muted); }
.filter-chip:hover { border-color:var(--navy); color:var(--navy); }
.filter-chip.active { background:var(--navy); color:#fff; border-color:var(--navy); }
.article-meta { display:flex; gap:1rem; align-items:center; font-size:var(--text-xs); color:var(--text-faint); }
.article-meta .cat { color:var(--violet-deep); font-weight:600; letter-spacing:.08em; text-transform:uppercase; }

/* prose for blog detail */
.prose { max-width:68ch; margin-inline:auto; font-size:var(--text-lg); line-height:1.8; color:var(--charcoal); }
.prose h2 { font-size:var(--text-xl); color:var(--navy); margin:2.5rem 0 1rem; }
.prose h3 { font-size:var(--text-lg); color:var(--navy); margin:2rem 0 .8rem; }
.prose p { margin-bottom:1.4rem; }
.prose ul,.prose ol { margin:0 0 1.4rem 1.4rem; display:flex; flex-direction:column; gap:.6rem; }
.prose a { color:var(--violet-deep); text-decoration:underline; text-underline-offset:3px; }
.prose blockquote { border-left:3px solid var(--violet); padding-left:1.4rem; margin:2rem 0; font-style:italic; color:var(--text-muted); font-family:var(--font-display); font-size:var(--text-xl); }
.prose img { border-radius:var(--radius-md); margin:2rem 0; }
.prose strong { color:var(--navy); font-weight:600; }

/* detail gallery */
.gallery { display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-4); }
.gallery img { width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:var(--radius-sm); }
.gallery img:first-child { grid-column:span 2; grid-row:span 2; aspect-ratio:auto; height:100%; }
@media (max-width:620px){ .gallery { grid-template-columns:1fr 1fr; } .gallery img:first-child { grid-column:span 2; } }

/* before/after */
.ba { display:grid; grid-template-columns:1fr 1fr; gap:var(--space-4); }
.ba figure { position:relative; }
.ba img { width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:var(--radius-sm); }
.ba figcaption { position:absolute; top:.75rem; left:.75rem; font-size:var(--text-xs); font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  padding:.3rem .7rem; border-radius:var(--radius-full); background:rgba(20,33,58,.85); color:#fff; }
@media (max-width:520px){ .ba { grid-template-columns:1fr; } }

/* breadcrumb */
.crumb { font-size:var(--text-sm); color:rgba(245,243,238,.6); display:flex; gap:.5rem; margin-bottom:1.2rem; position:relative; }
.crumb a:hover { color:#fff; }

/* reveal animation — only hide when JS reveal is active, so failures keep content visible */
.js-reveal .reveal { opacity:0; transform:translateY(24px); transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1); }
.js-reveal .reveal.in { opacity:1; transform:none; }

/* full bleed divider image */
.fullbleed { height:clamp(280px,45vh,520px); overflow:hidden; }
.fullbleed img { width:100%; height:100%; object-fit:cover; }

.muted-section { background:var(--surface-2); }
