/* ==========================================================================
   CB NOVA TECH — SECTION PATTERNS
   Composed from tokens + components. Each pattern is reusable across pages.
   ========================================================================== */

/* ==========================================================================
   1. HERO
   ========================================================================== */

.cb-hero {
  position: relative;
  isolation: isolate;
  background: var(--cb-grad-hero);
  color: var(--cb-on-dark);
  padding-top: calc(var(--cb-header-h) + clamp(2.5rem, 1.5rem + 5vw, 6rem));
  padding-bottom: clamp(3.5rem, 2rem + 6vw, 7rem);
  overflow: hidden;
  color-scheme: dark;
}
.cb-hero__inner {
  position: relative;
  z-index: 2;
  display: grid;
  gap: clamp(2.5rem, 1.5rem + 4vw, 4rem);
  align-items: center;
}
@media (min-width: 1024px) {
  .cb-hero__inner { grid-template-columns: 1.05fr 0.95fr; }
}

.cb-hero__title {
  font-size: var(--cb-fs-hero);
  line-height: var(--cb-lh-tight);
  letter-spacing: var(--cb-ls-hero);
  font-weight: var(--cb-fw-extra);
  color: #fff;
  margin-bottom: var(--cb-sp-5);
  text-wrap: balance;
}
.cb-hero__lead {
  font-size: var(--cb-fs-lg);
  line-height: 1.6;
  color: var(--cb-on-dark-muted);
  max-width: 54ch;
  margin-bottom: var(--cb-sp-7);
}
.cb-hero__actions { margin-bottom: var(--cb-sp-7); }

/* Micro trust row directly under the hero CTAs. */
.cb-hero__micro {
  display: flex;
  flex-wrap: wrap;
  gap: var(--cb-sp-3) var(--cb-sp-6);
  font-size: var(--cb-fs-sm);
  color: var(--cb-on-dark-muted);
}
.cb-hero__micro-item { display: inline-flex; align-items: center; gap: var(--cb-sp-2); }
.cb-hero__micro-item svg { width: 17px; height: 17px; color: var(--cb-cyan-400); flex: none; }

/* --- Hero background decoration (decorative, aria-hidden) --- */
.cb-hero__bg { position: absolute; inset: 0; z-index: 1; pointer-events: none; overflow: hidden; }
.cb-hero__glow {
  position: absolute;
  width: 60vw; height: 60vw;
  max-width: 760px; max-height: 760px;
  border-radius: 50%;
  filter: blur(90px);
  opacity: 0.30;
}
.cb-hero__glow--a { top: -22%; right: -12%; background: radial-gradient(circle, #1c78ee 0%, transparent 68%); }
.cb-hero__glow--b { bottom: -28%; left: -14%; background: radial-gradient(circle, #17b8e0 0%, transparent 68%); opacity: 0.20; }

/* --- Hero visual: an abstract "analytics + security" composition built in
   CSS/SVG rather than a heavy hero image. Costs ~0 bytes and is razor sharp
   on every DPI, which keeps LCP fast. --- */

.cb-hero__visual { position: relative; }

.cb-dashboard {
  position: relative;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(111,220,255,0.18);
  border-radius: var(--cb-r-xl);
  padding: var(--cb-sp-4);
  box-shadow: 0 32px 80px rgba(0,0,0,0.42);
  backdrop-filter: blur(12px);
}
.cb-dashboard__bar {
  display: flex; align-items: center; gap: var(--cb-sp-2);
  padding-bottom: var(--cb-sp-4);
  border-bottom: 1px solid rgba(111,220,255,0.12);
  margin-bottom: var(--cb-sp-4);
}
.cb-dashboard__dot { width: 9px; height: 9px; border-radius: 50%; background: rgba(255,255,255,0.20); }
.cb-dashboard__url {
  margin-left: var(--cb-sp-3);
  display: inline-flex; align-items: center; gap: 6px;
  padding: 3px 10px;
  font-size: 11px;
  color: var(--cb-cyan-300);
  background: rgba(111,220,255,0.08);
  border-radius: var(--cb-r-pill);
}
.cb-dashboard__url svg { width: 11px; height: 11px; }

.cb-dashboard__kpis {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--cb-sp-3);
  margin-bottom: var(--cb-sp-4);
}
.cb-kpi {
  padding: var(--cb-sp-3);
  background: rgba(255,255,255,0.045);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: var(--cb-r-md);
}
.cb-kpi__label {
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(214,228,247,0.60);
  margin-bottom: 4px;
}
.cb-kpi__bar { height: 5px; border-radius: 3px; background: rgba(255,255,255,0.10); overflow: hidden; }
.cb-kpi__fill {
  height: 100%;
  border-radius: 3px;
  background: var(--cb-grad-brand);
  width: 0;
  transition: width 1.1s var(--cb-ease-out);
  transition-delay: var(--cb-kpi-delay, 0ms);
}
.is-visible .cb-kpi__fill { width: var(--cb-kpi-w, 60%); }

/* Chart area */
.cb-dashboard__chart {
  position: relative;
  height: clamp(120px, 18vw, 170px);
  padding: var(--cb-sp-3);
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: var(--cb-r-md);
}
.cb-chart-svg { width: 100%; height: 100%; overflow: visible; }
.cb-chart-line {
  fill: none;
  stroke: url(#cbChartGrad);
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  /* Draw-on reveal driven by JS setting the dash length. */
  stroke-dasharray: var(--cb-path-len, 1000);
  stroke-dashoffset: var(--cb-path-len, 1000);
  transition: stroke-dashoffset 1.6s var(--cb-ease-out) 200ms;
}
.is-visible .cb-chart-line { stroke-dashoffset: 0; }
.cb-chart-area {
  fill: url(#cbAreaGrad);
  opacity: 0;
  transition: opacity 900ms var(--cb-ease) 900ms;
}
.is-visible .cb-chart-area { opacity: 1; }
.cb-chart-grid line { stroke: rgba(255,255,255,0.07); stroke-width: 1; }

/* Floating security badge over the dashboard */
.cb-hero__shield {
  position: absolute;
  right: clamp(-8px, -1vw, 0px);
  bottom: -22px;
  display: flex; align-items: center; gap: var(--cb-sp-3);
  padding: var(--cb-sp-3) var(--cb-sp-4);
  background: rgba(6,26,58,0.94);
  border: 1px solid rgba(111,220,255,0.26);
  border-radius: var(--cb-r-lg);
  box-shadow: 0 18px 44px rgba(0,0,0,0.44);
  backdrop-filter: blur(10px);
}
.cb-hero__shield svg { width: 22px; height: 22px; color: var(--cb-cyan-400); flex: none; }
.cb-hero__shield-title { font-size: var(--cb-fs-xs); font-weight: var(--cb-fw-semibold); color: #fff; }
.cb-hero__shield-sub { font-size: 10px; color: var(--cb-on-dark-muted); }

@media (max-width: 1023px) {
  .cb-hero__visual { max-width: 560px; width: 100%; margin-inline: auto; }
  .cb-hero__shield { right: 0; }
}
/* At the very smallest sizes the KPI row becomes unreadable — drop it
   rather than shrink it into noise. */
@media (max-width: 400px) {
  .cb-dashboard__kpis { grid-template-columns: repeat(2, 1fr); }
  .cb-dashboard__kpis > :nth-child(3) { display: none; }
  .cb-hero__shield { position: static; margin-top: var(--cb-sp-4); }
}

/* --- Compact page hero (inner pages) --- */
.cb-pagehero {
  position: relative;
  isolation: isolate;
  background: var(--cb-grad-hero);
  color: var(--cb-on-dark);
  padding-top: calc(var(--cb-header-h) + clamp(2rem, 1.2rem + 3.6vw, 4.5rem));
  padding-bottom: clamp(2.5rem, 1.6rem + 3.6vw, 5rem);
  overflow: hidden;
  color-scheme: dark;
}
.cb-pagehero__inner { position: relative; z-index: 2; max-width: 840px; }
.cb-pagehero__title { color: #fff; margin-bottom: var(--cb-sp-4); }
.cb-pagehero__lead {
  font-size: var(--cb-fs-lg);
  color: var(--cb-on-dark-muted);
  max-width: 60ch;
  line-height: 1.6;
}
.cb-pagehero__actions { margin-top: var(--cb-sp-7); }

/* Breadcrumbs */
.cb-crumbs {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--cb-sp-2);
  font-size: var(--cb-fs-xs);
  margin-bottom: var(--cb-sp-5);
  color: var(--cb-on-dark-muted);
}
.cb-crumbs a { color: var(--cb-on-dark-muted); text-decoration: none; }
.cb-crumbs a:hover { color: #fff; text-decoration: underline; }
.cb-crumbs__sep { opacity: 0.45; }
.cb-crumbs [aria-current="page"] { color: #fff; font-weight: var(--cb-fw-medium); }
/* Light-background variant */
.cb-crumbs--light { color: var(--cb-ink-faint); }
.cb-crumbs--light a { color: var(--cb-ink-faint); }
.cb-crumbs--light a:hover { color: var(--cb-blue-600); }
.cb-crumbs--light [aria-current="page"] { color: var(--cb-ink); }

/* ==========================================================================
   2. TRUST BAR
   ========================================================================== */

.cb-trustbar {
  background: var(--cb-white);
  border-bottom: 1px solid var(--cb-border);
  padding-block: clamp(1.75rem, 1.3rem + 1.8vw, 2.75rem);
}
.cb-trustbar__grid {
  display: grid;
  /* Two-up on small screens, then an explicit 4 across at desktop.
     auto-fit would leave a collapsed fifth track at container width, which
     throws the vertical divider rhythm out by a few pixels. */
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
  gap: var(--cb-sp-5) var(--cb-sp-6);
}
@media (min-width: 1000px) {
  .cb-trustbar__grid { grid-template-columns: repeat(4, 1fr); }
}
.cb-trustbar__item {
  display: flex;
  align-items: center;
  gap: var(--cb-sp-4);
  min-width: 0;
}
/* Vertical hairline between items on wide viewports only. */
@media (min-width: 900px) {
  .cb-trustbar__item + .cb-trustbar__item {
    padding-left: var(--cb-sp-6);
    border-left: 1px solid var(--cb-border);
  }
}
.cb-trustbar__icon {
  width: 42px; height: 42px; flex: none;
  display: grid; place-items: center;
  color: var(--cb-blue-600);
  background: linear-gradient(140deg, rgba(11,95,208,0.09), rgba(23,184,224,0.09));
  border-radius: var(--cb-r-md);
}
.cb-trustbar__icon svg { width: 21px; height: 21px; }
.cb-trustbar__title {
  font-family: var(--cb-font-display);
  font-size: var(--cb-fs-sm);
  font-weight: var(--cb-fw-bold);
  color: var(--cb-ink);
  line-height: 1.3;
}
.cb-trustbar__text { font-size: var(--cb-fs-xs); color: var(--cb-ink-faint); margin-top: 2px; }

/* ==========================================================================
   3. SERVICES GRID
   ========================================================================== */

.cb-services { display: grid; gap: var(--cb-grid-gap); }
@media (min-width: 700px)  { .cb-services { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1120px) { .cb-services { grid-template-columns: repeat(3, 1fr); } }

/* The first card spans two columns on the widest layout, creating a
   deliberate editorial rhythm instead of a flat 3×2 grid. */
@media (min-width: 1120px) {
  .cb-services__item--feature { grid-column: span 2; }
  .cb-services__item--feature .cb-card { flex-direction: row; align-items: flex-start; gap: var(--cb-sp-6); }
  .cb-services__item--feature .cb-icon-tile { margin-bottom: 0; }
  .cb-services__item--feature .cb-services__body { flex: 1; min-width: 0; }
}

.cb-service-card__cta {
  display: inline-flex; align-items: center; gap: var(--cb-sp-2);
  font-size: var(--cb-fs-sm);
  font-weight: var(--cb-fw-semibold);
  color: var(--cb-blue-600);
  text-decoration: none;
}
.cb-service-card__cta svg {
  width: 15px; height: 15px;
  transition: transform var(--cb-dur-base) var(--cb-ease-out);
}
.cb-card--link:hover .cb-service-card__cta svg { transform: translateX(4px); }

/* ==========================================================================
   4. ALTERNATING FEATURE BANDS (Website Dev / AI & Data / IT / Training)
   ========================================================================== */

.cb-band { position: relative; }
.cb-band__media {
  position: relative;
  border-radius: var(--cb-r-xl);
  overflow: hidden;
  box-shadow: var(--cb-shadow-xl);
  background: var(--cb-mist-deep);
}
.cb-band__media img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4 / 3; }
.cb-section--dark .cb-band__media { box-shadow: 0 32px 80px rgba(0,0,0,0.44); }

/* Feature chips beneath band copy */
.cb-chips { display: flex; flex-wrap: wrap; gap: var(--cb-sp-3); margin-top: var(--cb-sp-6); }
.cb-chip {
  display: inline-flex; align-items: center; gap: var(--cb-sp-2);
  padding: 0.55rem 0.9rem;
  font-size: var(--cb-fs-xs);
  font-weight: var(--cb-fw-medium);
  color: var(--cb-navy-700);
  background: var(--cb-white);
  border: 1px solid var(--cb-border);
  border-radius: var(--cb-r-md);
  box-shadow: var(--cb-shadow-xs);
}
.cb-chip svg { width: 15px; height: 15px; color: var(--cb-blue-600); flex: none; }
.cb-section--dark .cb-chip {
  color: var(--cb-on-dark);
  background: rgba(255,255,255,0.05);
  border-color: var(--cb-border-dark);
  box-shadow: none;
}
.cb-section--dark .cb-chip svg { color: var(--cb-cyan-400); }

/* ==========================================================================
   5. PROCESS TIMELINE
   Horizontal on desktop (per brief), vertical on mobile.
   ========================================================================== */

.cb-process { position: relative; }

/* -- Mobile: vertical rail -- */
.cb-process__list { display: grid; gap: var(--cb-sp-7); position: relative; }
.cb-process__item { position: relative; padding-left: 72px; }
.cb-process__item .cb-step__num { position: absolute; left: 0; top: 0; margin-bottom: 0; }
/* Connector line between numbers. */
.cb-process__item::before {
  content: "";
  position: absolute;
  left: 23.5px;
  top: 48px;
  bottom: calc(var(--cb-sp-7) * -1);
  width: 1.5px;
  background: linear-gradient(to bottom, rgba(11,95,208,0.28), rgba(11,95,208,0.06));
}
.cb-process__item:last-child::before { display: none; }
.cb-section--dark .cb-process__item::before {
  background: linear-gradient(to bottom, rgba(111,220,255,0.34), rgba(111,220,255,0.05));
}

/* -- Desktop: horizontal rail -- */
@media (min-width: 1024px) {
  .cb-process__list { grid-template-columns: repeat(5, 1fr); gap: var(--cb-sp-5); }
  .cb-process__item { padding-left: 0; padding-top: 0; }
  .cb-process__item .cb-step__num { position: static; margin-bottom: var(--cb-sp-5); }
  .cb-process__item::before {
    left: 48px; right: calc(var(--cb-sp-5) * -1);
    top: 23.5px; bottom: auto;
    width: auto; height: 1.5px;
    background: linear-gradient(to right, rgba(11,95,208,0.28), rgba(11,95,208,0.06));
  }
  .cb-section--dark .cb-process__item::before {
    background: linear-gradient(to right, rgba(111,220,255,0.34), rgba(111,220,255,0.05));
  }
  /* 4-step variant (used on service pages) */
  .cb-process__list--4 { grid-template-columns: repeat(4, 1fr); }
}

/* ==========================================================================
   6. TECHNOLOGY ECOSYSTEM  (Business → Data → AI → Insights → Growth)
   ========================================================================== */

.cb-ecosystem {
  display: grid;
  gap: var(--cb-sp-4);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 168px), 1fr));
  align-items: stretch;
}
.cb-eco-node {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--cb-sp-3);
  padding: var(--cb-sp-5) var(--cb-sp-4);
  background: rgba(255,255,255,0.045);
  border: 1px solid var(--cb-border-dark);
  border-radius: var(--cb-r-lg);
  transition: background-color var(--cb-dur-base) var(--cb-ease),
              border-color var(--cb-dur-base) var(--cb-ease),
              transform var(--cb-dur-base) var(--cb-ease-out);
}
.cb-eco-node:hover {
  background: rgba(255,255,255,0.085);
  border-color: rgba(111,220,255,0.34);
  transform: translateY(-3px);
}
.cb-eco-node__icon {
  width: 46px; height: 46px;
  display: grid; place-items: center;
  color: var(--cb-cyan-300);
  background: rgba(111,220,255,0.10);
  border: 1px solid rgba(111,220,255,0.20);
  border-radius: var(--cb-r-md);
}
.cb-eco-node__icon svg { width: 22px; height: 22px; }
.cb-eco-node__label {
  font-family: var(--cb-font-display);
  font-size: var(--cb-fs-sm);
  font-weight: var(--cb-fw-bold);
  color: #fff;
}
.cb-eco-node__text { font-size: var(--cb-fs-xs); color: var(--cb-on-dark-muted); line-height: 1.5; }

/* Connector arrows between nodes — desktop only, decorative. */
@media (min-width: 900px) {
  .cb-eco-node:not(:last-child)::after {
    content: "";
    position: absolute;
    top: calc(var(--cb-sp-5) + 23px);
    right: calc(var(--cb-sp-4) * -1 - 5px);
    width: 12px; height: 12px;
    border-top: 1.5px solid rgba(111,220,255,0.42);
    border-right: 1.5px solid rgba(111,220,255,0.42);
    transform: rotate(45deg);
    pointer-events: none;
  }
}

/* ==========================================================================
   7. WHY / PILLARS
   ========================================================================== */

.cb-pillar {
  position: relative;
  padding-top: var(--cb-sp-6);
  border-top: 2px solid var(--cb-border);
  transition: border-color var(--cb-dur-base) var(--cb-ease);
}
.cb-pillar:hover { border-top-color: var(--cb-blue-600); }
.cb-pillar__icon { color: var(--cb-blue-600); width: 26px; height: 26px; margin-bottom: var(--cb-sp-4); }
.cb-pillar__title { margin-bottom: var(--cb-sp-3); }
.cb-pillar__text { font-size: var(--cb-fs-sm); color: var(--cb-ink-muted); }
.cb-section--dark .cb-pillar { border-top-color: var(--cb-border-dark); }
.cb-section--dark .cb-pillar:hover { border-top-color: var(--cb-cyan-400); }
.cb-section--dark .cb-pillar__icon { color: var(--cb-cyan-300); }
.cb-section--dark .cb-pillar__text { color: var(--cb-on-dark-muted); }

/* ==========================================================================
   8. INDUSTRIES
   ========================================================================== */

.cb-industry {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--cb-sp-4);
  padding: var(--cb-sp-5);
  background: var(--cb-white);
  border: 1px solid var(--cb-border);
  border-radius: var(--cb-r-lg);
  text-decoration: none;
  color: var(--cb-ink);
  transition: all var(--cb-dur-base) var(--cb-ease);
  min-width: 0;
}
.cb-industry:hover {
  color: var(--cb-blue-600);
  border-color: rgba(11,95,208,0.28);
  box-shadow: var(--cb-shadow-md);
  transform: translateY(-3px);
}
.cb-industry__icon {
  width: 38px; height: 38px; flex: none;
  display: grid; place-items: center;
  color: var(--cb-blue-600);
  background: rgba(11,95,208,0.07);
  border-radius: var(--cb-r-sm);
}
.cb-industry__icon svg { width: 19px; height: 19px; }
.cb-industry__label {
  font-family: var(--cb-font-display);
  font-size: var(--cb-fs-sm);
  font-weight: var(--cb-fw-semibold);
  line-height: 1.35;
  min-width: 0;
}

/* ==========================================================================
   9. CTA BAND
   ========================================================================== */

.cb-cta {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: var(--cb-grad-hero);
  color: var(--cb-on-dark);
  color-scheme: dark;
}
.cb-cta__inner { position: relative; z-index: 2; text-align: center; max-width: 800px; margin-inline: auto; }
.cb-cta__title { color: #fff; margin-bottom: var(--cb-sp-5); }
.cb-cta__lead {
  font-size: var(--cb-fs-lg);
  color: var(--cb-on-dark-muted);
  line-height: 1.6;
  margin-bottom: var(--cb-sp-8);
}
.cb-cta__glow {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 70vw; height: 70vw;
  max-width: 900px; max-height: 900px;
  background: radial-gradient(circle, rgba(28,120,238,0.30) 0%, transparent 62%);
  filter: blur(70px);
  z-index: 1;
  pointer-events: none;
}
/* Reassurance line under the CTA buttons. */
.cb-cta__note {
  margin-top: var(--cb-sp-6);
  font-size: var(--cb-fs-sm);
  color: var(--cb-on-dark-muted);
  display: inline-flex; align-items: center; gap: var(--cb-sp-2);
}
.cb-cta__note svg { width: 16px; height: 16px; color: var(--cb-cyan-400); flex: none; }

/* Inline mid-page CTA (lighter weight) */
.cb-cta-inline {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--cb-sp-6);
  padding: clamp(1.75rem, 1.2rem + 2.2vw, 2.75rem);
  background: linear-gradient(120deg, rgba(11,95,208,0.055), rgba(23,184,224,0.055));
  border: 1px solid rgba(11,95,208,0.15);
  border-radius: var(--cb-r-xl);
}
.cb-cta-inline__title { margin-bottom: var(--cb-sp-2); }
.cb-cta-inline__text { font-size: var(--cb-fs-sm); color: var(--cb-ink-muted); }

/* ==========================================================================
   10. CONTACT
   ========================================================================== */

.cb-contact { display: grid; gap: clamp(2rem, 1.2rem + 3.4vw, 4rem); }
@media (min-width: 960px) { .cb-contact { grid-template-columns: 1fr 1.15fr; align-items: start; } }

.cb-contact__panel {
  padding: clamp(1.5rem, 1.1rem + 1.6vw, 2.5rem);
  background: var(--cb-white);
  border: 1px solid var(--cb-border);
  border-radius: var(--cb-r-xl);
  box-shadow: var(--cb-shadow-lg);
}
.cb-contact__item {
  display: flex;
  align-items: flex-start;
  gap: var(--cb-sp-4);
  padding-block: var(--cb-sp-4);
  border-bottom: 1px solid var(--cb-line-soft);
}
.cb-contact__item:last-child { border-bottom: 0; }
.cb-contact__icon {
  width: 40px; height: 40px; flex: none;
  display: grid; place-items: center;
  color: var(--cb-blue-600);
  background: rgba(11,95,208,0.07);
  border-radius: var(--cb-r-md);
}
.cb-contact__icon svg { width: 19px; height: 19px; }
.cb-contact__label {
  font-size: var(--cb-fs-xs);
  font-weight: var(--cb-fw-semibold);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--cb-ink-faint);
  margin-bottom: 3px;
}
.cb-contact__value {
  font-size: var(--cb-fs-base);
  font-weight: var(--cb-fw-medium);
  color: var(--cb-ink);
  text-decoration: none;
  /* Long emails must wrap rather than overflow on 320px screens. */
  overflow-wrap: anywhere;
}
a.cb-contact__value:hover { color: var(--cb-blue-600); }

/* ==========================================================================
   11. ARTICLE / PROSE
   ========================================================================== */

.cb-prose { font-size: var(--cb-fs-base); line-height: var(--cb-lh-body); color: var(--cb-ink); }
.cb-prose > * + * { margin-top: var(--cb-sp-5); }
.cb-prose h2 { font-size: var(--cb-fs-h3); margin-top: var(--cb-sp-9); }
.cb-prose h3 { font-size: var(--cb-fs-xl); margin-top: var(--cb-sp-7); }
.cb-prose h4 { margin-top: var(--cb-sp-6); }
.cb-prose ul, .cb-prose ol { padding-left: var(--cb-sp-5); display: grid; gap: var(--cb-sp-2); }
.cb-prose ul { list-style: disc; }
.cb-prose ol { list-style: decimal; }
.cb-prose li::marker { color: var(--cb-blue-600); }
.cb-prose img { border-radius: var(--cb-r-lg); }
.cb-prose a { text-decoration: underline; }
.cb-prose table { display: block; overflow-x: auto; white-space: nowrap; }
.cb-prose th, .cb-prose td {
  padding: var(--cb-sp-3) var(--cb-sp-4);
  border: 1px solid var(--cb-border);
  text-align: left;
}
.cb-prose th { background: var(--cb-mist); font-weight: var(--cb-fw-semibold); }

/* ==========================================================================
   12. PAGINATION
   ========================================================================== */

.cb-pagination { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--cb-sp-2); margin-top: var(--cb-sp-9); }
.cb-pagination .page-numbers {
  display: grid; place-items: center;
  min-width: var(--cb-tap); height: var(--cb-tap);
  padding-inline: var(--cb-sp-3);
  font-size: var(--cb-fs-sm);
  font-weight: var(--cb-fw-medium);
  color: var(--cb-ink-muted);
  background: var(--cb-white);
  border: 1px solid var(--cb-border);
  border-radius: var(--cb-r-md);
  text-decoration: none;
  transition: all var(--cb-dur-fast) var(--cb-ease);
}
.cb-pagination .page-numbers:hover { color: var(--cb-blue-600); border-color: var(--cb-blue-600); }
.cb-pagination .page-numbers.current {
  color: #fff; background: var(--cb-blue-600); border-color: var(--cb-blue-600);
}
.cb-pagination .dots { border-color: transparent; background: none; }

/* ==========================================================================
   13. EMPTY / PLACEHOLDER STATE
   Used wherever real content (case studies, testimonials) is not yet
   supplied — visible to admins, honest to visitors.
   ========================================================================== */

.cb-empty {
  display: grid;
  place-items: center;
  gap: var(--cb-sp-4);
  padding: clamp(2.5rem, 2rem + 3vw, 4.5rem) var(--cb-sp-5);
  text-align: center;
  background:
    repeating-linear-gradient(45deg, transparent, transparent 12px, rgba(11,95,208,0.02) 12px, rgba(11,95,208,0.02) 24px),
    var(--cb-mist);
  border: 1.5px dashed var(--cb-border);
  border-radius: var(--cb-r-xl);
}
.cb-empty__icon { width: 40px; height: 40px; color: var(--cb-ink-faint); opacity: 0.6; }
.cb-empty__title { font-size: var(--cb-fs-xl); }
.cb-empty__text { font-size: var(--cb-fs-sm); color: var(--cb-ink-muted); max-width: 46ch; }
.cb-section--dark .cb-empty {
  background: rgba(255,255,255,0.03);
  border-color: var(--cb-border-dark);
}
