/* ============================================================================
   CABANGA AFRICA — DIVI BRAND LAYER
   Master Brand Manual v1.0
   "To Think. To Understand. To Lead."

   Structure
   00  Tokens (palette + type scale)
   01  Global type system (Barlow / Barlow Condensed)
   02  Kill the Divi blue — monochrome accent everywhere
   03  Buttons (flat, uppercase, ink)
   04  Header & primary navigation
   05  Editorial motifs (eyebrow, hairline rule, numbered index, CTA band, mesh)
   06  Imagery — muted grayscale editorial treatment
   07  Surfaces, structure, flat-broadsheet detailing
   08  Interface furniture (scrollbar, selection, focus)
   09  Accessibility floor (focus visibility, reduced motion)
   ============================================================================ */


/* ── 00 · TOKENS ─────────────────────────────────────────────────────────── */
:root {
	/* Primary */
	--cab-ink:        #1A1A1A;  /* anchor */
	--cab-true-black: #0E0E0E;
	--cab-white:      #FFFFFF;

	/* Secondary */
	--cab-grey-body:  #5C5E60;  /* body text */
	--cab-grey-label: #848688;  /* labels / eyebrows */
	--cab-grey-line:  #D4D4D2;  /* rules / hairlines */

	/* Surface */
	--cab-offwhite:   #F4F4F2;  /* section backgrounds */

	/* Type */
	--cab-display: "Barlow Condensed", "Arial Narrow", sans-serif;
	--cab-body:    "Barlow", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

	/* Motif geometry */
	--cab-rule:    1px;         /* hairline weight */
	--cab-radius:  0px;         /* broadsheet = no rounding */
}


/* ── 01 · GLOBAL TYPE SYSTEM ─────────────────────────────────────────────── */

/* Body & interface → Barlow */
body,
.et_pb_module,
.et_pb_text,
p, li, td, th, input, textarea, select, label,
.et_pb_blurb_description,
.comment-content {
	font-family: var(--cab-body) !important;
	color: var(--cab-grey-body);
	-webkit-font-smoothing: antialiased;
}

body { background: var(--cab-white); }

/* Display & headlines → Barlow Condensed, uppercase, tight, ink */
h1, h2, h3, h4,
.et_pb_module h1, .et_pb_module h2, .et_pb_module h3, .et_pb_module h4,
.entry-title, .et_pb_post_title h1, .et_pb_slide_title,
.et_pb_blurb_header, .widgettitle, .et_pb_toggle_title,
.et_pb_promo_title, .et_pb_fullwidth_header h1 {
	font-family: var(--cab-display) !important;
	color: var(--cab-ink);
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.01em;
	line-height: 1.04;
}

/* h5 / h6 stay condensed but read as small labels */
h5, h6 {
	font-family: var(--cab-display) !important;
	color: var(--cab-ink);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

/* Fluid masthead scale — tall, decisive presence */
h1, .entry-title, .et_pb_post_title h1, .et_pb_fullwidth_header h1 {
	font-size: clamp(2.6rem, 5.5vw, 5rem);
}
h2 { font-size: clamp(2rem, 3.6vw, 3.25rem); }
h3 { font-size: clamp(1.5rem, 2.4vw, 2.1rem); }

/* Body sizing — high value per word, comfortable long-form */
body, p, .et_pb_text {
	font-size: 1.0625rem;
	line-height: 1.7;
	font-weight: 400;
}

/* Links — ink, never blue. Hairline underline on hover. */
a {
	color: var(--cab-ink);
	text-decoration: none;
	transition: color .2s ease, border-color .2s ease;
}
a:hover { color: var(--cab-grey-body); }

blockquote {
	border-left: 3px solid var(--cab-ink);
	color: var(--cab-ink);
	font-family: var(--cab-display);
	font-weight: 600;
	font-style: normal;
}


/* ── 02 · KILL THE DIVI BLUE ─────────────────────────────────────────────── */
/* Divi's stock accent is #2ea3f2. The manual forbids decorative colour, so we
   repaint every accent surface in the monochrome system.                      */

.et_pb_bg_layout_light .et_pb_promo a.et_pb_promo_button,
.et_pb_button,
.et_pb_contact_submit,
.et_pb_newsletter_button,
.et_pb_pricing_table_button,
.et_pb_promo_button {
	color: var(--cab-white) !important;
	background: var(--cab-ink) !important;
	border-color: var(--cab-ink) !important;
}

/* Tabs, toggles, accordions, pagination active states */
.et_pb_tabs_controls li.et_pb_tab_active,
.et_pb_accordion .et_pb_toggle.et_pb_toggle_open,
.et_pb_pricing_heading,
.woocommerce span.onsale,
.et-pb-active-slide {
	background-color: var(--cab-ink) !important;
	border-color: var(--cab-ink) !important;
}

/* Form focus / active borders */
.et_pb_contact_field input:focus,
.et_pb_contact_field textarea:focus,
input:focus, textarea:focus {
	border-color: var(--cab-ink) !important;
}

/* Search icon, social icons, misc accents */
#et_search_icon:hover,
.et_pb_social_media_follow a:hover,
.et-search-form input:focus { color: var(--cab-ink) !important; }


/* ── 03 · BUTTONS ────────────────────────────────────────────────────────── */
.et_pb_button,
.et_pb_contact_submit,
a.et_pb_button {
	font-family: var(--cab-display) !important;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	border-radius: var(--cab-radius) !important;
	border-width: 1px !important;
	padding: 0.7em 1.8em !important;
	transition: background .2s ease, color .2s ease, border-color .2s ease;
}
.et_pb_button:hover,
.et_pb_contact_submit:hover,
a.et_pb_button:hover {
	background: var(--cab-white) !important;
	color: var(--cab-ink) !important;
	border-color: var(--cab-ink) !important;
}
/* Divi adds an animated arrow pseudo on hover — keep it, just inherit ink. */
.et_pb_button:after { color: inherit !important; }

/* Secondary / ghost button utility */
.cab-btn-ghost.et_pb_button,
a.cab-btn-ghost {
	background: transparent !important;
	color: var(--cab-ink) !important;
	border-color: var(--cab-ink) !important;
}
.cab-btn-ghost.et_pb_button:hover {
	background: var(--cab-ink) !important;
	color: var(--cab-white) !important;
}


/* ── 04 · HEADER & PRIMARY NAVIGATION ────────────────────────────────────── */
#main-header { box-shadow: 0 1px 0 var(--cab-grey-line); }

#top-menu li a,
.et-menu li a {
	font-family: var(--cab-display);
	text-transform: uppercase;
	font-weight: 600;
	letter-spacing: 0.06em;
	color: var(--cab-ink);
	font-size: 0.95rem;
}
#top-menu li a:hover { color: var(--cab-grey-body); opacity: 1; }

/* Active item gets a hairline underscore, not a colour swap */
#top-menu li.current-menu-item > a {
	color: var(--cab-ink);
	box-shadow: inset 0 -2px 0 var(--cab-ink);
}

/* Dropdowns — flat, hairline-bordered */
#top-menu li ul {
	border-top: 2px solid var(--cab-ink);
	box-shadow: none;
	border-radius: 0;
}


/* ── 05 · EDITORIAL MOTIFS ───────────────────────────────────────────────── */

/* 5.1 Eyebrow label — small spaced uppercase kicker above a headline.
   Usage: wrap text in <span class="cab-eyebrow">Intelligence</span>          */
.cab-eyebrow {
	display: inline-block;
	font-family: var(--cab-display);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.22em;
	font-size: 0.72rem;
	color: var(--cab-grey-label);
	margin-bottom: 0.6em;
}

/* 5.2 Hairline rule — thin divider + short underscore beneath section titles.
   Usage: <hr class="cab-rule">  or add .cab-underscore to a heading.          */
.cab-rule,
hr.cab-rule {
	border: 0;
	height: var(--cab-rule);
	background: var(--cab-grey-line);
	margin: 2.5rem 0;
}
.cab-underscore::after {
	content: "";
	display: block;
	width: 48px;
	height: 3px;
	background: var(--cab-ink);
	margin-top: 0.5em;
}

/* 5.3 Numbered index — 01–04 sequencing for divisions / processes.
   Usage: <span class="cab-index" data-num="01"></span>  (CSS prints the num)
   Only use where the content is genuinely a sequence.                         */
.cab-index::before {
	content: attr(data-num);
	font-family: var(--cab-display);
	font-weight: 800;
	font-size: 1.4em;
	color: var(--cab-grey-line);
	display: inline-block;
	margin-right: 0.6em;
	vertical-align: -0.05em;
}

/* 5.4 Angled CTA band — dark call-to-action block with a subtle diagonal edge.
   Apply to an et_pb_section: add the CSS class "cab-cta-band" in the Divi
   section's Advanced → CSS Class field.                                       */
.cab-cta-band {
	background: var(--cab-ink) !important;
	clip-path: polygon(0 0, 100% 2.5vw, 100% 100%, 0 calc(100% - 2.5vw));
	padding-top: 6vw !important;
	padding-bottom: 6vw !important;
}
.cab-cta-band, .cab-cta-band * { color: var(--cab-white) !important; }
.cab-cta-band h1, .cab-cta-band h2, .cab-cta-band h3 { color: var(--cab-white) !important; }
.cab-cta-band .et_pb_button {
	background: var(--cab-white) !important;
	color: var(--cab-ink) !important;
	border-color: var(--cab-white) !important;
}

/* 5.5 Network-mesh motif — a fine constellation suggesting a connected
   continent. Apply class "cab-mesh" to a section for a subtle textured field. */
.cab-mesh {
	position: relative;
	background-color: var(--cab-true-black);
	background-image:
		radial-gradient(circle, rgba(255,255,255,0.18) 1px, transparent 1.4px),
		radial-gradient(circle, rgba(255,255,255,0.10) 1px, transparent 1.4px);
	background-size: 46px 46px, 92px 92px;
	background-position: 0 0, 23px 23px;
}
.cab-mesh, .cab-mesh * { color: var(--cab-white) !important; }


/* ── 06 · IMAGERY — MUTED GRAYSCALE EDITORIAL ────────────────────────────── */
/* "Photography is muted and editorial — reduced opacity and light grayscale."
   Scoped to post/blog/featured imagery so logos, icons and the wordmark are
   left untouched. Add class "cab-mute" to force the treatment anywhere;
   add "no-mute" to opt an image out.                                          */
.et_pb_post .entry-featured-image-url img,
.et_pb_blog_grid .et_pb_image_container img,
.et_pb_image.cab-mute img,
.post-thumbnail img,
img.cab-mute {
	filter: grayscale(100%) contrast(1.02);
	opacity: 0.92;
	transition: filter .4s ease, opacity .4s ease;
}
.et_pb_post .entry-featured-image-url img:hover,
.et_pb_blog_grid .et_pb_image_container img:hover,
.et_pb_image.cab-mute img:hover,
.post-thumbnail img:hover,
img.cab-mute:hover {
	filter: grayscale(20%) contrast(1.0);
	opacity: 1;
}
img.no-mute,
.no-mute img { filter: none !important; opacity: 1 !important; }


/* ── 07 · SURFACES & FLAT-BROADSHEET DETAILING ──────────────────────────── */

/* Off-white section surface. Add class "cab-surface" to any Divi section.    */
.cab-surface { background-color: var(--cab-offwhite) !important; }

/* Strip rounding from interface elements for the editorial broadsheet feel.  */
.et_pb_button, .et_pb_contact_field input, .et_pb_contact_message textarea,
.et_pb_newsletter input, .et-search-form input, .et_pb_promo,
.et_pb_pricing_table, .et_pb_blurb_content .et-pb-icon,
input, textarea, select {
	border-radius: var(--cab-radius) !important;
}

/* Hairline rules under post titles in feeds */
.et_pb_post .entry-title { padding-bottom: 0.4em; }

/* Captions / meta read as Signal Grey labels */
.post-meta, .post-meta a, .et_pb_title_meta_container,
figcaption, .wp-caption-text {
	font-family: var(--cab-body);
	color: var(--cab-grey-label);
	font-size: 0.82rem;
	letter-spacing: 0.02em;
}
.post-meta a:hover { color: var(--cab-ink); }


/* ── 08 · INTERFACE FURNITURE ────────────────────────────────────────────── */

/* Monochrome scrollbar (even the furniture stays in palette). */
* { scrollbar-width: thin; scrollbar-color: var(--cab-grey-label) var(--cab-offwhite); }
*::-webkit-scrollbar { width: 11px; height: 11px; }
*::-webkit-scrollbar-track { background: var(--cab-offwhite); }
*::-webkit-scrollbar-thumb {
	background: var(--cab-grey-label);
	border: 3px solid var(--cab-offwhite);
}
*::-webkit-scrollbar-thumb:hover { background: var(--cab-ink); }

/* Text selection in ink. */
::selection { background: var(--cab-ink); color: var(--cab-white); }
::-moz-selection { background: var(--cab-ink); color: var(--cab-white); }


/* ── 09 · ACCESSIBILITY FLOOR ────────────────────────────────────────────── */

/* Visible keyboard focus — never remove it, keep it on-brand. */
a:focus-visible, button:focus-visible,
.et_pb_button:focus-visible, input:focus-visible,
textarea:focus-visible, select:focus-visible {
	outline: 2px solid var(--cab-ink);
	outline-offset: 2px;
}

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


/* ============================================================================
   10 · HOME / FRONT-PAGE HELPERS
   Classes to paste into a Divi module/row/section's Advanced → CSS Class field
   when building the magazine front page. See the Home Build Recipe document.
   ============================================================================ */

/* Utility bar — thin uppercase strip */
.cab-util { border-bottom: 1px solid var(--cab-grey-line) !important; padding: 4px 0 !important; }
.cab-util .et_pb_text {
	font-family: var(--cab-display); text-transform: uppercase;
	letter-spacing: 0.14em; font-size: 0.72rem; color: var(--cab-grey-label);
}
.cab-util .et_pb_text b, .cab-util .et_pb_text strong { color: var(--cab-ink); font-weight: 700; }

/* Masthead — centred, ink underline, oversized wordmark */
.cab-mast { border-bottom: 2px solid var(--cab-ink) !important; text-align: center; }
.cab-mast .et_pb_text { text-align: center; }
.cab-wordmark h1, .cab-wordmark h2 {
	font-size: clamp(3.4rem, 9vw, 7.2rem) !important;
	letter-spacing: 0.04em !important; line-height: 0.9 !important; margin: 0.04em 0 !important;
}

/* Lead story — big main headline, compact side rail */
.cab-lead-main .entry-title { font-size: clamp(2.1rem, 4vw, 3.4rem) !important; line-height: 1.02 !important; }
.cab-lead-side .et_pb_post { padding-bottom: 18px; margin-bottom: 18px; border-bottom: 1px solid var(--cab-grey-line); }
.cab-lead-side .entry-title { font-size: 1.35rem !important; }
.cab-lead-side .post-content, .cab-lead-side .et_pb_image_container { display: none; } /* titles + meta only */

/* Secondary cards row */
.cab-cards .entry-title { font-size: 1.5rem !important; }

/* "The Latest" desks — headline lists, no thumbnails */
.cab-desk .et_pb_post { padding: 14px 0 !important; margin: 0 !important; border-bottom: 1px solid var(--cab-grey-line); background: transparent !important; }
.cab-desk .et_pb_post:first-child { padding-top: 0 !important; }
.cab-desk .entry-title { font-size: 1.05rem !important; line-height: 1.15 !important; }
.cab-desk .et_pb_image_container, .cab-desk .post-content-inner { display: none; } /* hide image + excerpt */
.cab-desk-title h4, .cab-desk-title h2 { padding-bottom: 10px; border-bottom: 2px solid var(--cab-ink); margin-bottom: 6px; }

/* Ecosystem band — faded numbered pillars (overrides the band's white-force) */
.cab-pillar .cab-num {
	display: block; font-family: var(--cab-display); font-weight: 800;
	font-size: 2.2rem; line-height: 1; color: rgba(255,255,255,0.35) !important; margin-bottom: 0.2em;
}

/* Newsletter optin — flat, ink */
.cab-signup .et_pb_newsletter_form input { border-radius: 0 !important; border: 1px solid var(--cab-ink) !important; }
.cab-signup .et_pb_newsletter_button { background: var(--cab-ink) !important; border-color: var(--cab-ink) !important; }
