/* =========================================================
   Citrus Glen Capital — themeable design system
   10 color schemes + 8 fonts switchable via /admin.
   Semantic CSS variables scoped to [data-theme], [data-font].
   ========================================================= */

* { box-sizing: border-box; }
html, body {
  margin: 0; padding: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-family, -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text",
               "Inter", "Helvetica Neue", Helvetica, Arial, sans-serif);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-size: 17px;
  line-height: 1.5;
  text-rendering: optimizeLegibility;
  transition: background-color 300ms ease, color 300ms ease;
}
body { overflow-x: hidden; }

/* -------- SEMANTIC TOKENS (defaults shared across themes) -------- */
:root {
  --max: 1200px;
  --content: 980px;
  --radius: 18px;
  --radius-lg: 28px;
  --t-fast: 200ms cubic-bezier(.4,.0,.2,1);
  --t-med: 380ms cubic-bezier(.4,.0,.2,1);
  --t-slow: 600ms cubic-bezier(.16,.84,.44,1);

  /* Default font stack (overridden per [data-font]) */
  --font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text",
                 "Inter", "Helvetica Neue", Helvetica, Arial, sans-serif;
}

/* =========================================================
   THEMES (10)
   Each sets the semantic palette. Applied via data-theme on <html>.
   ========================================================= */

/* 1. CITRUS — default, warm orange on white */
:root, :root[data-theme="citrus"] {
  --bg:           #ffffff;
  --bg-alt:       #f5f5f7;
  --bg-nav:       rgba(255,255,255,0.72);
  --ink:          #1d1d1f;
  --ink-2:        #424245;
  --muted:        #86868b;
  --border:       #e8e8ed;
  --border-strong:#d2d2d7;
  --accent:       #e08a2b;
  --accent-deep:  #b86a15;
  --accent-soft:  #f6d7a8;
  --warm-tint:    #f6efe6;
  --accent-tint:  #fbf3e6;
  --cta-bg:       #0a0a0c;
  --cta-text:     #ffffff;
  --cta-text-muted: rgba(255,255,255,0.7);
  --cta-border:   rgba(255,255,255,0.3);
  --btn-primary-bg:   var(--ink);
  --btn-primary-text: #ffffff;
  --btn-primary-hover:#000000;
  --ph-stripe-opacity: 0.025;
  --ph-base-opacity:   0.05;
  color-scheme: light;
}

/* 2. MIDNIGHT — dark mode, warm orange accent preserved */
:root[data-theme="midnight"] {
  --bg:           #0a0a0c;
  --bg-alt:       #16161a;
  --bg-nav:       rgba(10,10,12,0.72);
  --ink:          #f5f5f7;
  --ink-2:        #c1c1c6;
  --muted:        #8e8e93;
  --border:       #2a2a2e;
  --border-strong:#3a3a3e;
  --accent:       #ffa94d;
  --accent-deep:  #ff8a00;
  --accent-soft:  #3a2a14;
  --warm-tint:    #221c15;
  --accent-tint:  #2a2218;
  --cta-bg:       #f5f5f7;
  --cta-text:     #0a0a0c;
  --cta-text-muted: rgba(0,0,0,0.65);
  --cta-border:   rgba(0,0,0,0.2);
  --btn-primary-bg:   #f5f5f7;
  --btn-primary-text: #0a0a0c;
  --btn-primary-hover:#ffffff;
  --ph-stripe-opacity: 0.06;
  --ph-base-opacity:   0.02;
  color-scheme: dark;
}

/* 3. FOREST — deep green on cream, organic */
:root[data-theme="forest"] {
  --bg:           #f8f6f0;
  --bg-alt:       #edeadf;
  --bg-nav:       rgba(248,246,240,0.82);
  --ink:          #1a2e1a;
  --ink-2:        #3a4e3a;
  --muted:        #7a8576;
  --border:       #d9d4c4;
  --border-strong:#b8b09a;
  --accent:       #2d6b3f;
  --accent-deep:  #1e4829;
  --accent-soft:  #c0d8c5;
  --warm-tint:    #e5e0d0;
  --accent-tint:  #d6e5d9;
  --cta-bg:       #1a2e1a;
  --cta-text:     #f8f6f0;
  --cta-text-muted: rgba(248,246,240,0.75);
  --cta-border:   rgba(248,246,240,0.3);
  --btn-primary-bg:   #1a2e1a;
  --btn-primary-text: #f8f6f0;
  --btn-primary-hover:#2d6b3f;
  --ph-stripe-opacity: 0.03;
  --ph-base-opacity:   0.05;
  color-scheme: light;
}

/* 4. OCEAN — cool blue on soft white */
:root[data-theme="ocean"] {
  --bg:           #f4f7fa;
  --bg-alt:       #e8eef5;
  --bg-nav:       rgba(244,247,250,0.80);
  --ink:          #0a1e3a;
  --ink-2:        #2a4264;
  --muted:        #5d7694;
  --border:       #cfd9e8;
  --border-strong:#a6b8cf;
  --accent:       #1e6bc6;
  --accent-deep:  #0b4d99;
  --accent-soft:  #b5d0ed;
  --warm-tint:    #dde7f2;
  --accent-tint:  #d4e4f5;
  --cta-bg:       #0a1e3a;
  --cta-text:     #f4f7fa;
  --cta-text-muted: rgba(244,247,250,0.7);
  --cta-border:   rgba(244,247,250,0.3);
  --btn-primary-bg:   #0a1e3a;
  --btn-primary-text: #ffffff;
  --btn-primary-hover:#1e6bc6;
  --ph-stripe-opacity: 0.025;
  --ph-base-opacity:   0.04;
  color-scheme: light;
}

/* 5. ROSE — warm pink on off-white */
:root[data-theme="rose"] {
  --bg:           #fffaf8;
  --bg-alt:       #fbeae3;
  --bg-nav:       rgba(255,250,248,0.80);
  --ink:          #2a1a1a;
  --ink-2:        #5a3a3a;
  --muted:        #a08880;
  --border:       #f0d9d0;
  --border-strong:#d8b4a8;
  --accent:       #d14d6c;
  --accent-deep:  #a02d4e;
  --accent-soft:  #f7cdd4;
  --warm-tint:    #fae0d8;
  --accent-tint:  #fbe0e4;
  --cta-bg:       #2a1a1a;
  --cta-text:     #fffaf8;
  --cta-text-muted: rgba(255,250,248,0.75);
  --cta-border:   rgba(255,250,248,0.3);
  --btn-primary-bg:   #2a1a1a;
  --btn-primary-text: #fffaf8;
  --btn-primary-hover:#d14d6c;
  --ph-stripe-opacity: 0.025;
  --ph-base-opacity:   0.04;
  color-scheme: light;
}

/* 6. MONOCHROME — pure grayscale, no accent color */
:root[data-theme="monochrome"] {
  --bg:           #ffffff;
  --bg-alt:       #f0f0f0;
  --bg-nav:       rgba(255,255,255,0.72);
  --ink:          #000000;
  --ink-2:        #333333;
  --muted:        #777777;
  --border:       #dcdcdc;
  --border-strong:#b8b8b8;
  --accent:       #000000;
  --accent-deep:  #000000;
  --accent-soft:  #d8d8d8;
  --warm-tint:    #eaeaea;
  --accent-tint:  #e5e5e5;
  --cta-bg:       #000000;
  --cta-text:     #ffffff;
  --cta-text-muted: rgba(255,255,255,0.7);
  --cta-border:   rgba(255,255,255,0.3);
  --btn-primary-bg:   #000000;
  --btn-primary-text: #ffffff;
  --btn-primary-hover:#333333;
  --ph-stripe-opacity: 0.05;
  --ph-base-opacity:   0.04;
  color-scheme: light;
}

/* 7. SLATE — navy/blue-gray, professional */
:root[data-theme="slate"] {
  --bg:           #f6f8fb;
  --bg-alt:       #e9eef5;
  --bg-nav:       rgba(246,248,251,0.80);
  --ink:          #1b2538;
  --ink-2:        #3d4a60;
  --muted:        #7a879c;
  --border:       #d5dce7;
  --border-strong:#afbbcd;
  --accent:       #4b5d7a;
  --accent-deep:  #2f3e56;
  --accent-soft:  #c3cddd;
  --warm-tint:    #dfe6f0;
  --accent-tint:  #dce2ec;
  --cta-bg:       #1b2538;
  --cta-text:     #f6f8fb;
  --cta-text-muted: rgba(246,248,251,0.7);
  --cta-border:   rgba(246,248,251,0.3);
  --btn-primary-bg:   #1b2538;
  --btn-primary-text: #ffffff;
  --btn-primary-hover:#4b5d7a;
  --ph-stripe-opacity: 0.025;
  --ph-base-opacity:   0.04;
  color-scheme: light;
}

/* 8. DESERT — warm terracotta on sand */
:root[data-theme="desert"] {
  --bg:           #faf3e9;
  --bg-alt:       #f0e4cf;
  --bg-nav:       rgba(250,243,233,0.82);
  --ink:          #3a1f12;
  --ink-2:        #5d3d2a;
  --muted:        #8f7560;
  --border:       #e0cfb1;
  --border-strong:#c4a97f;
  --accent:       #c25a2b;
  --accent-deep:  #923a14;
  --accent-soft:  #f2c8a8;
  --warm-tint:    #ecdcb8;
  --accent-tint:  #f4dac0;
  --cta-bg:       #3a1f12;
  --cta-text:     #faf3e9;
  --cta-text-muted: rgba(250,243,233,0.75);
  --cta-border:   rgba(250,243,233,0.3);
  --btn-primary-bg:   #3a1f12;
  --btn-primary-text: #faf3e9;
  --btn-primary-hover:#c25a2b;
  --ph-stripe-opacity: 0.03;
  --ph-base-opacity:   0.06;
  color-scheme: light;
}

/* 9. ELECTRIC — bright neon on charcoal */
:root[data-theme="electric"] {
  --bg:           #0e0e12;
  --bg-alt:       #1a1a22;
  --bg-nav:       rgba(14,14,18,0.75);
  --ink:          #f5f5fa;
  --ink-2:        #c4c4d0;
  --muted:        #7e7e90;
  --border:       #2c2c38;
  --border-strong:#40404e;
  --accent:       #00e5ff;
  --accent-deep:  #00a3b8;
  --accent-soft:  #0d3a46;
  --warm-tint:    #1e1424;
  --accent-tint:  #0a2a36;
  --cta-bg:       #00e5ff;
  --cta-text:     #0e0e12;
  --cta-text-muted: rgba(14,14,18,0.7);
  --cta-border:   rgba(14,14,18,0.3);
  --btn-primary-bg:   #00e5ff;
  --btn-primary-text: #0e0e12;
  --btn-primary-hover:#00ffff;
  --ph-stripe-opacity: 0.08;
  --ph-base-opacity:   0.02;
  color-scheme: dark;
}

/* 10. NAVY — deep navy background, cyan accent */
:root[data-theme="navy"] {
  --bg:           #0e1f3a;
  --bg-alt:       #16294a;
  --bg-nav:       rgba(14,31,58,0.78);
  --ink:          #eef3fb;
  --ink-2:        #c0cee0;
  --muted:        #8aa1bd;
  --border:       #1f3357;
  --border-strong:#34507d;
  --accent:       #38b2dd;
  --accent-deep:  #1d8ab6;
  --accent-soft:  #1c3550;
  --warm-tint:    #1a2c4d;
  --accent-tint:  #16344f;
  --cta-bg:       #eef3fb;
  --cta-text:     #0e1f3a;
  --cta-text-muted: rgba(14,31,58,0.65);
  --cta-border:   rgba(14,31,58,0.2);
  --btn-primary-bg:   #38b2dd;
  --btn-primary-text: #0e1f3a;
  --btn-primary-hover:#5cc7ed;
  --ph-stripe-opacity: 0.06;
  --ph-base-opacity:   0.02;
  color-scheme: dark;
}

/* 11. SKY — soft pale blue background, deep navy ink */
:root[data-theme="sky"] {
  --bg:           #eef5fb;
  --bg-alt:       #d9e8f5;
  --bg-nav:       rgba(238,245,251,0.82);
  --ink:          #0a2540;
  --ink-2:        #2c4566;
  --muted:        #6987a8;
  --border:       #c9dcec;
  --border-strong:#9bb6d1;
  --accent:       #2f7dc7;
  --accent-deep:  #1b5793;
  --accent-soft:  #b6d2ec;
  --warm-tint:    #dde8f4;
  --accent-tint:  #d2e2f2;
  --cta-bg:       #0a2540;
  --cta-text:     #eef5fb;
  --cta-text-muted: rgba(238,245,251,0.7);
  --cta-border:   rgba(238,245,251,0.3);
  --btn-primary-bg:   #0a2540;
  --btn-primary-text: #ffffff;
  --btn-primary-hover:#2f7dc7;
  --ph-stripe-opacity: 0.025;
  --ph-base-opacity:   0.04;
  color-scheme: light;
}

/* 12. PAPER — warm cream, classic print feel */
:root[data-theme="paper"] {
  --bg:           #f5efdf;
  --bg-alt:       #ebe3ce;
  --bg-nav:       rgba(245,239,223,0.80);
  --ink:          #2a2418;
  --ink-2:        #4d4430;
  --muted:        #8a8068;
  --border:       #d8cdaf;
  --border-strong:#b5a782;
  --accent:       #8b3d1f;
  --accent-deep:  #5e2610;
  --accent-soft:  #e2c8ac;
  --warm-tint:    #e4d9ba;
  --accent-tint:  #e8d3bd;
  --cta-bg:       #2a2418;
  --cta-text:     #f5efdf;
  --cta-text-muted: rgba(245,239,223,0.75);
  --cta-border:   rgba(245,239,223,0.3);
  --btn-primary-bg:   #2a2418;
  --btn-primary-text: #f5efdf;
  --btn-primary-hover:#8b3d1f;
  --ph-stripe-opacity: 0.03;
  --ph-base-opacity:   0.05;
  color-scheme: light;
}

/* =========================================================
   FONTS (8). Stacks applied via data-font on <html>.
   Google Fonts link tags are injected by settings.js.
   ========================================================= */
:root[data-font="system"] {
  --font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text",
                 "Inter", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
:root[data-font="inter"]         { --font-family: "Inter", -apple-system, sans-serif; }
:root[data-font="plex"]          { --font-family: "IBM Plex Sans", -apple-system, sans-serif; }
:root[data-font="space"]         { --font-family: "Space Grotesk", -apple-system, sans-serif; }
:root[data-font="playfair"]      { --font-family: "Playfair Display", Georgia, serif; }
:root[data-font="dmserif"]       { --font-family: "DM Serif Display", Georgia, serif; }
:root[data-font="merriweather"]  { --font-family: "Merriweather", Georgia, serif; }
:root[data-font="jetbrains"]     { --font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace; }

/* Slab-serif feel helps the "editorial" themes sit better */
:root[data-font="merriweather"] .display,
:root[data-font="playfair"]     .display,
:root[data-font="dmserif"]      .display,
:root[data-font="merriweather"] .h-section,
:root[data-font="playfair"]     .h-section,
:root[data-font="dmserif"]      .h-section {
  letter-spacing: -0.012em;
}

/* =========================================================
   LAYOUT AND TYPOGRAPHY
   ========================================================= */
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; border: 0; background: none; color: inherit; }
img { max-width: 100%; display: block; }

h1, h2, h3, h4 { margin: 0; font-weight: 600; letter-spacing: -0.022em; color: var(--ink); }
p { margin: 0; }

.eyebrow {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--accent-deep);
  text-transform: uppercase;
  display: inline-flex; align-items: center; gap: 6px;
}

.display {
  font-size: clamp(40px, 6.4vw, 80px);
  line-height: 1.04;
  font-weight: 600;
  letter-spacing: -0.028em;
}
.h-section {
  font-size: clamp(32px, 4.2vw, 52px);
  line-height: 1.08;
  letter-spacing: -0.022em;
  font-weight: 600;
}
.h-sub {
  font-size: clamp(20px, 2vw, 24px);
  line-height: 1.35;
  color: var(--ink-2);
  font-weight: 400;
}
.body-lg { font-size: 19px; line-height: 1.55; color: var(--ink-2); }
.caption { font-size: 13px; color: var(--muted); }

.wrap { max-width: var(--max); margin: 0 auto; padding: 0 24px; }
.content { max-width: var(--content); margin: 0 auto; padding: 0 24px; }
.section { padding: 120px 0; }
.section-sm { padding: 80px 0; }
@media (max-width: 720px) {
  .section { padding: 72px 0; }
  .section-sm { padding: 56px 0; }
}

/* -------- Buttons -------- */
.btn {
  display: inline-flex; align-items: center; gap: 6px;
  height: 44px; padding: 0 22px;
  border-radius: 999px;
  font-size: 15px; font-weight: 500;
  transition: transform var(--t-fast), background var(--t-fast), opacity var(--t-fast), color var(--t-fast), border-color var(--t-fast);
  will-change: transform;
}
.btn-primary { background: var(--btn-primary-bg); color: var(--btn-primary-text); }
.btn-primary:hover { transform: scale(1.02); background: var(--btn-primary-hover); }
.btn-ghost { background: transparent; color: var(--ink); border: 1px solid var(--border-strong); }
.btn-ghost:hover { background: var(--bg-alt); }
.btn-accent { background: var(--accent); color: var(--btn-primary-text); }
.btn-accent:hover { background: var(--accent-deep); transform: scale(1.02); }
.btn-outline-light { color: var(--cta-text); border: 1px solid var(--cta-border); }
.btn-outline-light:hover { background: rgba(128,128,128,0.1); }

.link {
  color: var(--accent-deep);
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 17px;
  transition: color var(--t-fast);
}
.link:hover { color: var(--accent); }
.link .chev { transition: transform var(--t-fast); }
.link:hover .chev { transform: translateX(3px); }

/* -------- Nav -------- */
.nav {
  position: fixed; top: 0; left: 0; right: 0;
  height: 52px;
  z-index: 1000;
  display: flex; align-items: center;
  background: var(--bg-nav);
  backdrop-filter: saturate(180%) blur(20px);
  -webkit-backdrop-filter: saturate(180%) blur(20px);
  border-bottom: 1px solid transparent;
  transition: border-color var(--t-fast), background var(--t-fast);
}
.nav.scrolled { border-bottom-color: var(--border); }
.nav-inner {
  max-width: var(--max);
  width: 100%;
  margin: 0 auto;
  padding: 0 24px;
  display: flex; align-items: center; justify-content: space-between;
  gap: 24px;
}
.brand { display: flex; align-items: center; gap: 10px; font-size: 15px; font-weight: 600; letter-spacing: -0.01em; }
.brand-mark { display: inline-flex; align-items: center; height: 22px; color: var(--accent); }
.brand-mark img { display: block; height: 100%; width: auto; }
.brand-mark svg { display: block; }
.brand-mark-lg { display: inline-flex; align-items: center; height: 28px; }
.brand-mark-lg img { display: block; height: 100%; width: auto; }
.wordmark { display: inline-flex; align-items: baseline; gap: 6px; }
.wordmark .mute { color: var(--muted); font-weight: 500; }
.nav-links { display: flex; align-items: center; gap: 6px; list-style: none; margin: 0; padding: 0; }
.nav-links a {
  padding: 6px 14px;
  font-size: 13px; color: var(--ink); opacity: 0.88;
  transition: opacity var(--t-fast);
  border-radius: 999px;
}
.nav-links a:hover { opacity: 1; }
.nav-links a.active { opacity: 1; color: var(--accent-deep); }

.nav-cta {
  height: 32px; padding: 0 14px;
  background: var(--btn-primary-bg); color: var(--btn-primary-text);
  border-radius: 999px;
  font-size: 13px; font-weight: 500;
  display: inline-flex; align-items: center;
  transition: background var(--t-fast);
}
.nav-cta:hover { background: var(--btn-primary-hover); }
.nav-right { display: flex; align-items: center; gap: 10px; }
.nav-toggle { display: none; color: var(--ink); }

@media (max-width: 860px) {
  .nav-links { display: none; }
  .nav-toggle { display: inline-flex; width: 36px; height: 36px; align-items: center; justify-content: center; }
  .nav-mobile {
    position: fixed; top: 52px; left: 0; right: 0; bottom: 0;
    background: var(--bg);
    backdrop-filter: blur(20px);
    padding: 24px;
    display: flex; flex-direction: column; gap: 4px;
    transform: translateY(-8px); opacity: 0; pointer-events: none;
    transition: opacity var(--t-med), transform var(--t-med);
    z-index: 999;
  }
  .nav-mobile.open { opacity: 1; transform: translateY(0); pointer-events: auto; }
  .nav-mobile a {
    font-size: 22px; font-weight: 500; padding: 16px 8px;
    border-bottom: 1px solid var(--border);
    color: var(--ink);
  }
  .nav-mobile a.active { color: var(--accent-deep); }
  .nav-mobile .nav-cta { margin-top: 16px; height: 44px; font-size: 15px; padding: 0 22px; align-self: flex-start; }
  .hide-mobile { display: none !important; }
}

.reveal { opacity: 0; transform: translateY(24px); transition: opacity var(--t-slow), transform var(--t-slow); }
.reveal.in { opacity: 1; transform: translateY(0); }

.grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
@media (max-width: 860px) {
  .grid-2, .grid-3 { grid-template-columns: 1fr; }
  .grid-4 { grid-template-columns: repeat(2, 1fr); }
}

/* =========================================================
   IMAGE WRAPPER (.ph) — now hosts <img>; stripe pattern is a load-time fallback.
   ========================================================= */
.ph {
  position: relative;
  background: var(--bg-alt);
  border-radius: var(--radius);
  overflow: hidden;
  background-image:
    linear-gradient(135deg, rgba(0,0,0,var(--ph-base-opacity)) 0%, rgba(0,0,0,calc(var(--ph-base-opacity) * 2)) 100%),
    repeating-linear-gradient(45deg, transparent 0px, transparent 24px,
      rgba(0,0,0,var(--ph-stripe-opacity)) 24px, rgba(0,0,0,var(--ph-stripe-opacity)) 25px);
}
.ph > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}
/* Label visible only when there's no image inside */
.ph::after {
  content: attr(data-label);
  position: absolute;
  left: 16px; bottom: 14px;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 11px;
  color: var(--muted);
  letter-spacing: 0.02em;
  text-transform: uppercase;
  pointer-events: none;
}
.ph:has(> img)::after { display: none; }
.ph-dark {
  background: #0a0a0c;
  background-image:
    linear-gradient(135deg, rgba(255,255,255,0.04) 0%, rgba(255,255,255,0.01) 100%),
    repeating-linear-gradient(45deg, transparent 0px, transparent 24px,
      rgba(255,255,255,0.04) 24px, rgba(255,255,255,0.04) 25px);
}
.ph-dark::after { color: rgba(255,255,255,0.45); }
.ph-accent { background: var(--accent-tint); }
.ph-warm { background: var(--warm-tint); }

/* Hero visual */
.hero-visual { aspect-ratio: 16/9; border-radius: var(--radius-lg); }

/* Metrics */
.metric { text-align: center; padding: 24px 8px; }
.metric-value {
  font-size: clamp(40px, 5.4vw, 64px);
  font-weight: 600;
  letter-spacing: -0.028em;
  color: var(--ink);
  line-height: 1;
}
.metric-label { margin-top: 14px; color: var(--muted); font-size: 15px; }

/* Region list */
.region-list { display: flex; flex-direction: column; justify-content: center; gap: 24px; padding: 16px 8px; }
.region-row {
  display: flex; justify-content: space-between; align-items: baseline;
  padding-bottom: 20px; border-bottom: 1px solid var(--border);
}
.region-row .name { font-size: 22px; font-weight: 600; letter-spacing: -0.01em; }
.region-row .detail { color: var(--muted); font-size: 15px; }

/* Capability cards */
.cap-list { display: flex; flex-direction: column; gap: 20px; }
.cap {
  background: var(--bg-alt);
  color: var(--ink);
  border-radius: var(--radius-lg);
  padding: 64px 40px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 40px;
  align-items: center;
}
.cap .cap-copy h3 { font-size: clamp(28px, 3vw, 40px); margin-top: 14px; }
.cap .cap-copy p {
  margin-top: 18px;
  font-size: 18px;
  line-height: 1.55;
  max-width: 480px;
  color: var(--ink-2);
}
.cap .cap-eyebrow {
  font-size: 13px; font-weight: 600; letter-spacing: 0.02em;
  color: var(--accent-deep); text-transform: uppercase;
}
.cap .cap-visual { aspect-ratio: 5/4; border-radius: var(--radius); }
.cap.warm   { background: var(--warm-tint); }
.cap.accent { background: var(--accent-tint); }
.cap.dark   { background: var(--cta-bg); color: var(--cta-text); }
.cap.dark h3 { color: var(--cta-text); }
.cap.dark .cap-copy p { color: var(--cta-text-muted); }
.cap.dark .cap-eyebrow { color: var(--cta-text-muted); }

@media (max-width: 860px) {
  .cap { grid-template-columns: 1fr; padding: 40px 28px; gap: 32px; }
  .cap .cap-visual { aspect-ratio: 16/10; }
}

/* Project cards */
.project-card { display: block; }
.project-card .ph {
  aspect-ratio: 4/3;
  border-radius: var(--radius);
  transition: transform var(--t-med);
}
.project-card:hover .ph { transform: translateY(-4px); }
.project-meta { margin-top: 16px; }
.project-meta .loc {
  font-size: 12px; color: var(--muted);
  text-transform: uppercase; letter-spacing: 0.04em;
}
.project-meta .name { font-size: 22px; font-weight: 600; margin-top: 6px; letter-spacing: -0.01em; }
.project-meta .desc { font-size: 15px; color: var(--ink-2); margin-top: 4px; }

/* Status + type pills (cards on /projects, /portal, /project) */
.status-row {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin-top: 14px;
}
.status-pill, .type-pill {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 11px; font-weight: 600;
  letter-spacing: 0.06em; text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid transparent;
  white-space: nowrap;
}
.status-pill::before {
  content: ""; display: inline-block;
  width: 6px; height: 6px; border-radius: 50%;
  background: currentColor;
}
.status-pill.status-completed   { background: rgba(46, 160, 67, 0.12);  color: #2da647; border-color: rgba(46,160,67,0.25); }
.status-pill.status-in-progress { background: rgba(255, 165, 0, 0.14);  color: #c87a00; border-color: rgba(255,165,0,0.30); }
.status-pill.status-planning    { background: var(--accent-soft);       color: var(--accent-deep); border-color: var(--border-strong); }
.status-pill.status-neutral     { background: var(--bg-alt);             color: var(--muted); border-color: var(--border); }

.type-pill.type-hold {
  background: var(--bg-alt); color: var(--ink-2); border-color: var(--border);
}
.type-pill.type-distribution {
  background: var(--accent-tint, var(--accent-soft));
  color: var(--accent-deep);
  border-color: var(--accent);
}

/* Timeline progress bar */
.timeline-bar {
  margin-top: 8px;
  height: 6px;
  background: var(--border);
  border-radius: 999px;
  overflow: hidden;
}
.timeline-bar > span {
  display: block; height: 100%;
  background: var(--accent);
  border-radius: inherit;
  transition: width var(--t-med);
}
.timeline-meta {
  display: flex; justify-content: space-between;
  font-size: 12px; color: var(--muted);
  margin-top: 4px;
}

/* Dark CTA */
.cta-dark {
  border-radius: var(--radius-lg);
  background: var(--cta-bg);
  color: var(--cta-text);
  padding: 72px 40px;
  text-align: center;
}
.cta-dark h2 { color: var(--cta-text); }
.cta-dark p {
  color: var(--cta-text-muted);
  font-size: 19px;
  max-width: 560px;
  margin: 20px auto 32px;
}
.cta-dark .btns { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }

/* Hero layout */
.hero { padding-top: 140px; padding-bottom: 80px; }
.hero .content { text-align: center; }
.hero-ctas { margin-top: 36px; display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }

/* Footer */
.footer {
  border-top: 1px solid var(--border);
  background: var(--bg-alt);
  padding: 64px 0 40px;
  color: var(--ink-2);
}
.footer-grid { display: grid; grid-template-columns: 1.4fr repeat(3, 1fr); gap: 48px; }
.footer h5 {
  font-size: 12px; text-transform: uppercase;
  letter-spacing: 0.04em; color: var(--muted);
  margin-bottom: 14px; font-weight: 600;
}
.footer a {
  display: block; padding: 4px 0;
  color: var(--ink);
  font-size: 13px;
  transition: color var(--t-fast);
}
.footer a:hover { color: var(--accent-deep); }
.footer-brand-desc { font-size: 13px; color: var(--muted); max-width: 280px; line-height: 1.6; margin-top: 12px; }
.footer-bottom {
  margin-top: 48px; padding-top: 24px;
  border-top: 1px solid var(--border);
  display: flex; justify-content: space-between;
  color: var(--muted); font-size: 12px;
  flex-wrap: wrap; gap: 12px;
}
.footer-legal { display: flex; gap: 20px; }
@media (max-width: 860px) { .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; } }
@media (max-width: 520px) { .footer-grid { grid-template-columns: 1fr; } }

/* Institutional partners */
.partners-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 18px;
}
.partner-card {
  display: flex; flex-direction: column;
  padding: 24px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg-alt);
  transition: transform var(--t-fast), border-color var(--t-fast), box-shadow var(--t-fast);
  text-decoration: none;
  color: inherit;
}
.partner-card:hover {
  transform: translateY(-3px);
  border-color: var(--border-strong);
  box-shadow: 0 16px 32px -20px rgba(0,0,0,0.18);
}
.partner-card .partner-mark {
  width: 48px; height: 48px;
  border-radius: 12px;
  background: var(--accent-soft);
  color: var(--accent-deep);
  display: grid; place-items: center;
  font-size: 18px; font-weight: 700;
  letter-spacing: -0.02em;
  margin-bottom: 16px;
  overflow: hidden;
}
.partner-card .partner-mark img {
  width: 100%; height: 100%; object-fit: cover;
}
.partner-card .partner-name {
  font-size: 16px; font-weight: 600;
  color: var(--ink);
  letter-spacing: -0.01em;
}
.partner-card .partner-role {
  font-size: 13px; color: var(--muted);
  margin-top: 4px; line-height: 1.4;
}
.partner-card .partner-link {
  margin-top: 14px;
  font-size: 12px; color: var(--accent-deep);
  font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase;
  display: inline-flex; align-items: center; gap: 4px;
}
.partner-card.no-link .partner-link { display: none; }

/* Interactive map */
.map-frame {
  position: relative;
  aspect-ratio: 4/3;
  min-height: 380px;        /* guarantees non-zero height before aspect-ratio resolves */
  width: 100%;
  border-radius: var(--radius-lg);
  overflow: hidden;
  border: 1px solid var(--border);
  background: var(--bg-alt);
}
#map {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  background: var(--bg-alt);
}
.leaflet-container {
  background: var(--bg-alt) !important;
  font-family: var(--font-family) !important;
}
.leaflet-popup-content-wrapper {
  background: var(--bg) !important;
  color: var(--ink) !important;
  border: 1px solid var(--border-strong);
  border-radius: 12px !important;
  box-shadow: 0 12px 28px -16px rgba(0,0,0,0.25) !important;
}
.leaflet-popup-tip { background: var(--bg) !important; }
.leaflet-popup-content { margin: 14px 18px !important; }
.region-popup .name {
  font-size: 16px; font-weight: 700; color: var(--ink);
  margin-bottom: 4px; letter-spacing: -0.01em;
}
.region-popup .detail {
  font-size: 12px; color: var(--muted);
  margin-bottom: 12px;
}
.region-popup .stats {
  display: grid; grid-template-columns: 1fr 1fr; gap: 8px 14px;
  border-top: 1px solid var(--border); padding-top: 10px;
}
.region-popup .stat-label {
  font-size: 10px; color: var(--muted);
  text-transform: uppercase; letter-spacing: 0.06em;
}
.region-popup .stat-value {
  font-size: 14px; font-weight: 600; color: var(--ink);
  margin-top: 2px;
}
.region-popup .stat-value.accent { color: var(--accent-deep); }

::selection { background: var(--accent-soft); color: var(--ink); }
