/* ════════════════════════════════════════════════════════════════════
   ct.css  —  "Component Theme" stylesheet
   ------------------------------------------------------------------
   Hii ndiyo CSS ya SHARED kwa HEADER na FOOTER za Siri za Chumbani.
   Imetolewa (extracted) 1:1 kutoka page ya "Brand Kit"
   (sirizachumbani.co.tz) — rangi, spacing, fonts, breakpoints —
   HAKUNA kilichobadilishwa.

   JINSI YA KUITUMIA kwenye page mpya yoyote:
   1. Weka <link rel="stylesheet" href="/dynamic/ct.css" /> kwenye <head>
   2. Weka Google Fonts link (Roboto + Inter) KABLA ya ct.css — angalia
      sehemu ya "FONTS INAYOHITAJIKA" chini kabisa ya faili hii.
   3. Weka <div id="header"></div> mahali unapotaka navbar ionekane
      (kawaida mstari wa kwanza ndani ya <body>)
   4. Weka <div id="footer"></div> mwishoni kabla ya </body>
   5. Weka <script src="/dynamic/cp.js"></script> baada ya #footer

   cp.js ndiyo itakayoingiza (inject) HTML ya header/footer kwenye
   hizo <div> mbili — style zote za hapa chini zitafanya kazi papo
   hapo bila kubadilisha chochote.

   MUHIMU: Vigezo vyote vinavyoanza na --hdr- ni "locked" — havitakiwi
   kubadilishwa wala kupewa jina jipya, kwa sababu ndiyo yanayofanya
   header ionekane sawa (identical) kwenye kila page ya brand hii.
   ════════════════════════════════════════════════════════════════════ */

:root {
  /* ============ HEADER / FOOTER BRAND VARIABLES ============
     Locked kwa Siri za Chumbani — usibadilishe wala kuzipa jina jipya. */
  --hdr-ink: #0c0505;
  --hdr-void: #170808;
  --hdr-brand: #c22219;
  --hdr-brand-bright: #e0362a;
  --hdr-paper: #f4ece7;
  --hdr-paper-dim: #cbb3ac;
  --hdr-gold: #c99a4a;
  --hdr-line: rgba(244, 236, 231, 0.1);
  --hdr-line-strong: rgba(250, 246, 243, 0.18);
  --hdr-font: 'Roboto', sans-serif;

  /* Body font inahitajika na footer links / footer-bottom */
  --body-font: 'Inter', sans-serif;

  /* ============ ACCENT MPYA ============
     Hizi si "locked" kama --hdr-*. --acc-blue/--acc-purple zinatumika
     TU kwenye background decoration ya .cta-hero (blobs) — hazigusi
     maandishi wala buttons. --acc-yellow (chini) ni tofauti: hiyo
     NDIYO inatumika kwenye maandishi ya .header-banner-link. */
  --acc-blue: #2f6fed;
  --acc-blue-bright: #4d8cff;
  /* Zamani ilikuwa zambarau (#6b4fd8). Sasa nyekundu-machungwa (rust),
     tofauti kidogo na --hdr-brand (#c22219) inayotumika blob nyingine,
     ili blob ya kushoto isifanane 100% na ya kulia. Jina la variable
     limebaki --acc-purple kwa makusudi (badiliko la thamani pekee,
     si jina) ili kuepuka kuvunja marejeleo mengine yanayoitumia. */
  --acc-purple: #a83a1f;
  /* Njano mpya ya brand — brand asset mpya. Inatumika kwenye
     .header-banner-link ("Gusa hapa") badala ya --hdr-brand-bright,
     ili link hiyo ionekane kwa njano badala ya nyekundu. */
  --acc-yellow: #ffd104;
}

/* ════════════════════════════════════════════════════════════════════
   BASE RESET — MINIMAL, kwa makusudi
   ------------------------------------------------------------------
   ct.css HAIWEKI background/color/font ya <body>, wala .wrap, tena.
   Kila page inamiliki background na .wrap yake yenyewe (kwa mfano:
   Confessions ni nyeusi na .wrap yake, Brand Kit ni nyeupe na .wrap
   yake — "True white body per brief"). ct.css inashughulikia
   HEADER/FOOTER/MENU pekee — component za pamoja, si page layout.

   Iwapo page yako mpya HAINA .wrap wala body background yake
   yenyewe, ONGEZA hivi kwenye <style> ya page hiyo (si hapa):

     body { background: var(--hdr-ink); color: var(--hdr-paper); }
     .wrap { max-width: 1180px; margin: 0 auto; padding: 0 28px; }
   ════════════════════════════════════════════════════════════════════ */
* { box-sizing: border-box; }

/* ════════════════════════════════════════════════════════════════════
   HEADER
   ════════════════════════════════════════════════════════════════════ */
#header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  /* MUHIMU: lazima izidi .menu-overlay (z-index:1998) na .dropdown-menu
     (z-index:2000) ambazo ni ndani/nje yake — kwa kuwa .dropdown-menu ni
     MTOTO wa #header kwenye DOM (angalia cp.js), z-index yake ya 2000
     inatumika TU ndani ya stacking context ya #header, si dhidi ya
     .menu-overlay iliyo nje. #header ikiwa na z-index ndogo (1000 awali)
     ilisababisha #header nzima (pamoja na panel ya menu ndani yake)
     kubaki NYUMA ya .menu-overlay — ndiyo sababu menu ilikuwa
     "haionekani", ukungu wa overlay ulikuwa ukificha panel nzima. */
  z-index: 2500;
  background: rgb(12, 5, 5);
}

/* Kila page inayotumia header hii lazima iwe na <main> yenye margin-top
   sawa na hii, la sivyo content itafichwa nyuma ya fixed header.
   Inatumia --header-height (inayopimwa/kusasishwa na cp.js kupitia
   syncHeaderHeightVar/ResizeObserver) badala ya namba ngumu, ili
   ikiwa #header inaongezeka urefu (mfano: .header-banner mpya
   iliyoongezwa chini ya .header-inner), main isisukumwe chini
   kiotomatiki bila kuhitaji mtu ku-edit namba hii kwa mkono.
   Fallback ya 60px inabaki kwa page ambazo cp.js haijapakia bado
   (mfano: kabla ya JS ku-run) au kwa browser za zamani. */
main {
  margin-top: calc(var(--header-height, 60px) - 20px);
  position: relative;
  z-index: 1;
}

/* ════════════════════════════════════════════════════════════════════
   HEADER GLOW — blobs mbili zinazotumia rangi zile zile za hero/footer
   (--acc-purple kushoto, --hdr-brand kulia) ili header "ifanane"/iwe
   na undugu na footer, badala ya kuwa rangi moja tambarare.
   ------------------------------------------------------------------
   MUHIMU: overflow:hidden imewekwa kwenye .header-glow-mask (dirisha
   dogo jipya, mtoto wa kwanza wa #header — angalia cp.js), SI kwenye
   #header lenyewe. #header haiwezi kupata overflow:hidden kwa sababu
   .dropdown-menu (menu inayofunguka chini ya header) ni mtoto wa
   #header pia (ndani ya .header-inner > .menu-wrap), na inahitaji
   kutokea NJE ya box ndogo ya header (~80px) pale mtumiaji anapobonyeza
   menu button — overflow:hidden kwenye #header ingeikata/kuificha
   kabisa menu hiyo. .header-glow-mask badala yake ni dirisha
   lililojitenga (position:absolute; inset:0) linalofunika #header TU
   kwa ukubwa sawa, na ndiyo pekee lenye overflow:hidden — halihusiani
   kabisa na .header-inner wala kilichomo ndani yake.
   ════════════════════════════════════════════════════════════════════ */
.header-glow-mask {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}
.header-glow { position: absolute; pointer-events: none; z-index: 0; }
.header-glow-left {
  top: -70px; left: -100px; width: 220px; height: 220px;
  background: radial-gradient(circle at 50% 50%, var(--acc-purple), transparent 70%);
  border-radius: 50%; filter: blur(16px); opacity: 0.35;
}
.header-glow-right {
  top: -80px; right: -120px; width: 260px; height: 260px;
  background: radial-gradient(circle at 50% 50%, var(--hdr-brand), transparent 70%);
  border-radius: 50%; filter: blur(16px); opacity: 0.3;
}

/* position:relative + z-index:1 (MPYA) — hii ndiyo inayohakikisha
   logo/menu-button vinakaa JUU ya hizo blobs mbili (z-index:0) badala
   ya kufichwa nyuma yake. Bila hii, kwa vile .header-inner awali
   haikuwa "positioned element", blobs mpya zingeweza kuchorwa juu
   yake kwenye baadhi ya hali za stacking — sasa haiwezekani. */
.header-inner {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 28px;
  max-width: 1180px;
  margin: 0 auto;
}

.brand { display: flex; align-items: center; gap: 11px; }
/* Logo pekee — link tuli kuelekea homepage. (Ilikuwepo pia
   #brandWrap.is-cta-active .brand-mark, hali ya "imefichwa" kwa
   ajili ya "brand rotator" iliyokuwa kando yake — rotator hiyo
   yote imeondolewa, kwa hiyo hali hiyo imeondolewa pia.) */
.brand-mark {
  width: 44px; height: 44px;
  border-radius: 9px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  overflow: hidden;
  text-decoration: none;
}
.brand-mark svg { width: 100%; height: 100%; display: block; }

/* ---- Menu button (hamburger / close toggle) ----
   ARCHITECTURE MPYA: kitufe hiki ndicho PEKEE (hakuna cha pili ndani
   ya panel tena) kinachofungua NA kufunga menu. Ili kifikie hilo bila
   kufunikwa na .dropdown-menu (panel, z-index:3000) wakati panel
   inapofunguka, kinapewa z-index KUBWA zaidi (3500) hapa chini —
   kinabaki JUU ya panel wakati wote, hata panel ikiwa imefunguka
   kikamilifu na kufunika screen nzima.

   KWA NINI HII INAFANYA KAZI (stacking context): .header-inner
   (mzazi wa moja kwa moja wa .menu-btn NA .dropdown-menu, angalia
   cp.js) ina position:relative + z-index:1, hivyo inaunda stacking
   context yake yenyewe. .dropdown-menu ina position:fixed, LAKINI
   kwa kuwa .header-inner haina transform/filter/isolation yoyote,
   .dropdown-menu HAITOROKI stacking context ya .header-inner —
   inabaki ndani yake sambamba na .menu-btn. Kwa hiyo z-index kati ya
   hizi mbili (3500 dhidi ya 3000) linalinganishwa moja kwa moja na
   linafanya kazi kihalisi, japo .dropdown-menu ni "fixed" na
   inafunika screen nzima kimwonekano.

   position:relative imeongezwa hapa chini (haikuwepo awali) kwa
   sababu z-index haifanyi kazi kwenye kipengele chenye
   position:static (default) — bila hii, namba 3500 isingekuwa na
   maana yoyote kwa browser. */
.menu-btn {
  display: flex; align-items: center; justify-content: center;
  width: 42px; height: 42px;
  border-radius: 3px;
  border: 1px solid var(--hdr-line-strong);
  background: transparent;
  color: var(--hdr-paper);
  cursor: pointer;
  flex-shrink: 0;
  transition: background 0.2s ease;
  position: relative;
  z-index: 3500;
}
.menu-btn:hover {
  background: rgba(244,236,231,0.06);
  border-color: var(--hdr-brand-bright);
}
.menu-btn:focus-visible {
  outline: 2px solid var(--acc-yellow);
  outline-offset: 2px;
}

/* ---- Icon: mistari mitatu inayogeuka kuwa × kwa smooth morph
   (rotation + translate), badala ya SVG mbili tofauti zinazobadilishana
   (kama ilivyokuwa awali) — hii ndiyo inatoa hisia "ya kitaalamu" ya
   UX: mabadiliko ya kuendelea (continuous), si kata-kata. Angalia
   markup mpya ya .bar-wrap/.bar ndani ya cp.js (HEADER_HTML). */
.menu-btn .bar-wrap {
  position: relative;
  width: 20px;
  height: 16px;
}
.menu-btn .bar {
  position: absolute;
  left: 0;
  width: 20px;
  height: 2px;
  border-radius: 2px;
  background: currentColor;
  transition: transform 0.35s cubic-bezier(0.65, 0, 0.35, 1),
              opacity 0.25s ease,
              top 0.35s cubic-bezier(0.65, 0, 0.35, 1);
}
.menu-btn .bar:nth-child(1) { top: 0; }
.menu-btn .bar:nth-child(2) { top: 7px; }
.menu-btn .bar:nth-child(3) { top: 14px; }

.menu-btn[aria-expanded="true"] .bar:nth-child(1) {
  top: 7px;
  transform: rotate(45deg);
}
.menu-btn[aria-expanded="true"] .bar:nth-child(2) {
  opacity: 0;
  transform: scaleX(0);
}
.menu-btn[aria-expanded="true"] .bar:nth-child(3) {
  top: 7px;
  transform: rotate(-45deg);
}

.menu-wrap { position: relative; }

/* ---- Desktop nav (links za moja kwa moja) ----
   Default: display:none — hii ndiyo hali ya simu/tablet (chini ya
   981px), sawa na jinsi ilivyokuwa kabla ya kuongeza links hizi.
   @media (min-width: 981px) chini ya faili hii ndiyo inayoifanya
   ionekane (display:flex) na kuficha .menu-btn wakati huo huo. */
.desktop-nav {
  display: none;
  align-items: center;
  gap: 6px;
}
.desktop-nav a {
  font-family: var(--hdr-font);
  font-size: 0.92rem;
  font-weight: 500;
  color: var(--hdr-paper);
  text-decoration: none;
  padding: 8px 14px;
  border-radius: 6px;
  transition: background 0.2s ease, color 0.2s ease;
  white-space: nowrap;
}
.desktop-nav a:hover {
  background: rgba(244, 236, 231, 0.08);
}
.desktop-nav a:focus-visible {
  outline: 2px solid var(--acc-yellow);
  outline-offset: 2px;
}
/* "Send Confession" — link ya nne, kuelekea /send. Haina class
   maalum (.desktop-nav-donate ya awali imeondolewa kabisa) — sasa
   inatumia .desktop-nav a ya kawaida hapo juu TU, kwa hiyo inafanana
   100% na About/Platform Rules/Brand Kit: font, size, spacing, na
   hover (mwanga mweupe hafifu) sawa kabisa, bila kusogezwa kulia. */

/* ---- Header nav cluster (desktop-nav + CTA button) ----
   Wrapper mpya, mzazi wa .desktop-nav NA .desktop-nav-cta pamoja.
   Default display:none (sawa na .desktop-nav ya awali) — hii ndiyo
   hali ya simu/tablet, cluster nzima haionekani, hamburger inabaki
   njia pekee ya navigation. @media (min-width: 981px) chini ya
   faili hii ndiyo inayoifanya ionekane (display:flex).
   margin-left: auto HAPA (kwenye cluster nzima), SIYO kwenye link
   au button moja moja — hii ndiyo inayosukuma KUNDI ZIMA (4 links +
   button) mpaka mwisho kabisa wa kulia, kando ya logo. gap kubwa
   (28px) kati ya .desktop-nav na .desktop-nav-cta ndani ya cluster
   hii ndiyo inayotenga button na zile 4 links za maandishi, ili
   "isikaribiane" nazo kama ulivyoomba. */
.header-nav-cluster {
  display: none;
  align-items: center;
  gap: 28px;
  margin-left: auto;
}

/* CTA button mpya — "CHANGIA JUKWAA", blue (--acc-blue, tofauti na
   --hdr-brand nyekundu inayotumika na CTA nyingine kama "Submit a
   Confession" ndani ya mobile side-panel), kuelekea /donate. Button
   halisi (background+padding+radius), si link ya maandishi tu kama
   About/Platform Rules/Brand Kit/Send Confession — ndiyo maana ina
   class yake tofauti (.desktop-nav-cta) badala ya kutumia .desktop-nav a. */
.desktop-nav-cta {
  display: inline-flex;
  align-items: center;
  font-family: var(--hdr-font);
  font-size: 0.92rem;
  font-weight: 700;
  color: #ffffff;
  text-decoration: none;
  background: var(--acc-blue);
  padding: 10px 20px;
  border-radius: 6px;
  white-space: nowrap;
  transition: background 0.2s ease;
}
.desktop-nav-cta:hover {
  background: var(--acc-blue-bright);
}
.desktop-nav-cta:focus-visible {
  outline: 2px solid var(--acc-yellow);
  outline-offset: 2px;
}

/* ════════════════════════════════════════════════════════════════════
   SIDE MENU — panel inayofunguka KULIA (imebadilisha .dropdown-menu
   ya zamani iliyokuwa inafunguka CHINI ya header). Ni fixed kwa
   dirisha zima (top:0; right:0; height:100%), si tena absolute chini
   ya menu button, kwa hiyo haitegemei tena .menu-wrap kwa positioning
   — imesalia ndani ya .menu-wrap kwenye DOM kwa urahisi tu wa markup.
   ════════════════════════════════════════════════════════════════════ */
.dropdown-menu {
  position: fixed;
  top: 0;
  right: 0;
  height: 100%;
  width: min(340px, 86vw);
  background: var(--hdr-void);
  /* MUHIMU: lazima izidi kila kitu kingine ndani ya #header, hasa
     .header-banner (z-index:1, lakini inakuja BAADAYE kwenye source
     order kuliko .header-inner > .dropdown-menu, hivyo bila z-index
     kubwa ya wazi hapa ingechorwa juu ya panel ndani ya stacking
     context ya #header). 3000 pia inabaki juu ya .menu-overlay (1998)
     kupitia #header (z-index:2500). */
  z-index: 3000;
  display: flex;
  flex-direction: column;
  transform: translateX(100%);
  transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
  overflow-y: auto;
  /* reset ya sifa za zamani za .dropdown-menu (opacity/visibility/
     padding) ambazo hazihitajiki tena kwenye muundo huu mpya */
  opacity: 1;
  visibility: visible;
  padding: 0;
  border-radius: 0;
}
.dropdown-menu.open {
  transform: translateX(0);
}

/* mng'ao mdogo wa brand ndani ya panel (--hdr-brand / --acc-purple),
   kufanana na blobs za header/footer. Mtoto wa kwanza wa .dropdown-menu
   ndani ya markup (angalia cp.js). */
.side-menu-glow {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}
.side-menu-glow::before,
.side-menu-glow::after {
  content: "";
  position: absolute;
  width: 220px;
  height: 220px;
  border-radius: 50%;
  filter: blur(40px);
  opacity: 0.28;
}
.side-menu-glow::before {
  top: -60px;
  right: -60px;
  background: radial-gradient(circle, var(--hdr-brand), transparent 70%);
}
.side-menu-glow::after {
  bottom: -60px;
  left: -80px;
  background: radial-gradient(circle, var(--acc-purple), transparent 70%);
}

.side-menu-header {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 20px;
  /* min-height: button (#menuToggle, .menu-btn) ni 42px kwa urefu na
     inakaa JUU ya header hii kwa z-index (angalia .menu-btn z-index:
     3500 dhidi ya .side-menu-header z-index:1) — kwa kuwa button
     "inaelea" juu, HAIONGEZI urefu wa .side-menu-header kiotomatiki
     kwenye layout ya kawaida ya flex (yenye "Menu" text pekee
     ingebaki fupi zaidi). Bila min-height, border-bottom (divider)
     ingeishia juu zaidi kuliko chini ya button na kuigusa/kuipitia.
     42px (button) + 18px*2 (padding ya juu-chini) = 78px inahakikisha
     header hii inatosha kuzunguka button nzima, hivyo divider
     inashuka CHINI ya button kikamilifu, si kuigusa. */
  min-height: 78px;
  border-bottom: 1px solid var(--hdr-line);
  flex-shrink: 0;
}
.side-menu-title {
  font-family: var(--hdr-font);
  font-weight: 700;
  font-size: 0.95rem;
  color: var(--hdr-paper);
  letter-spacing: 0.02em;
}

/* Kitufe cha × ndani ya panel (#dropdownMenuClose, .side-menu-close)
   KIMEONDOLEWA KABISA kwenye ARCHITECTURE mpya — #menuToggle peke
   yake (kilicho JUU ya panel kwa z-index, angalia .menu-btn hapo
   juu) sasa ndicho PEKEE kinachofungua NA kufunga menu. Hii ndiyo
   inayoondoa kabisa hisia ya "vitufe viwili tofauti" — kuna kitufe
   KIMOJA cha kimwili kinachobadilika bar->X. */

.side-menu-nav {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  padding: 12px;
  gap: 2px;
}
.dropdown-menu a {
  display: flex; align-items: center; gap: 10px;
  padding: 14px 14px;
  border-radius: 8px;
  text-decoration: none;
  color: var(--hdr-paper);
  font-family: var(--hdr-font);
  font-size: 0.92rem;
  font-weight: 500;
  transition: background 0.2s ease, padding-left 0.2s ease;
}
.dropdown-menu a:hover {
  background: rgba(244,236,231,0.06);
  padding-left: 18px;
}
.dropdown-menu a.is-cta {
  margin-top: 10px;
  background: var(--hdr-brand);
  color: var(--hdr-paper);
  font-weight: 700;
  justify-content: center;
}
.dropdown-menu a.is-cta:hover {
  background: var(--hdr-brand-bright);
  padding-left: 14px;
}
.dropdown-menu hr { border: none; border-top: 1px solid var(--hdr-line-strong); margin: 8px 4px; }

.side-menu-footer {
  position: relative;
  z-index: 1;
  margin-top: auto;
  padding: 18px 20px;
  border-top: 1px solid var(--hdr-line);
  font-family: var(--body-font);
  font-size: 0.72rem;
  color: var(--hdr-paper-dim);
  flex-shrink: 0;
}

@media (max-width: 480px) {
  .dropdown-menu { width: 100vw; }
}

/* Banner ndogo, mtoto wa moja kwa moja wa #header, chini ya
   .header-inner (yaani chini ya logo/menu bar) — inachukua upana
   kamili wa #header. position:relative + z-index:1 kwa sababu ile
   ile ya .header-inner juu: bila hivyo blobs za .header-glow-mask
   (z-index:0) zingeweza kuchorwa juu yake kwenye baadhi ya hali za
   stacking. Rangi ya link (.header-banner-link) sasa inatumia
   --acc-yellow (#ffd104) — brand asset mpya ya njano — badala ya
   --hdr-brand-bright ya awali (ambayo bado inatumika sehemu
   nyingine: .dropdown-menu a.is-cta juu na .footer-col-links
   a:hover chini, hazikuguswa). Font-size imepunguzwa pia (0.85rem
   -> 0.72rem desktop, 0.78rem -> 0.66rem mobile). border-top ya
   .header-banner (mstari uliokuwa juu ya banner) na border-bottom
   ya #header (mstari uliokuwa chini ya banner nzima) zimeondolewa
   kimakusudi — banner sasa haina mstari wowote pembeni, "ncha kali"
   tu kati ya menu bar na content. */
.header-banner {
  position: relative;
  /* MUHIMU: .header-banner ni SIBLING wa .header-inner (wote ni watoto
     wa moja kwa moja wa #header — angalia cp.js), SI mtoto wa
     .header-inner. .dropdown-menu (z-index:3000) ni mtoto WA NDANI ya
     .header-inner, kwa hiyo z-index yake kubwa inatumika tu KATIKA
     stacking context ya .header-inner (z-index:1) — haiwezi "kutoka
     nje" kuzidi ndugu za .header-inner moja kwa moja.
     Kwa DOM order .header-banner inakuja BAADA ya .header-inner, na
     kabla wote wawili walikuwa na z-index:1 sawa — kwa utaratibu wa
     stacking, aliyekuja mwisho (.header-banner) alichorwa JUU,
     akifunika .dropdown-menu iliyo ndani ya .header-inner.
     Suluhisho: .header-banner lazima iwe na z-index NDOGO kuliko
     .header-inner (0 badala ya 1) ili ibaki nyuma yake kabisa —
     background yake bado inaonekana sahihi kwa sababu haigongani na
     .header-glow-mask (z-index:0) upande wa chini wala haihitaji kuwa
     juu ya kitu kingine chochote. */
  z-index: 0;
  padding: 10px 20px;
  background: rgba(224, 54, 42, 0.14);
  font-family: var(--body-font);
  font-size: 0.72rem;
  color: var(--hdr-paper);
  text-align: center;
}
.header-banner-link {
  color: var(--acc-yellow);
  text-decoration: underline;
  font-weight: 600;
}
.header-banner-link:hover { color: var(--hdr-gold); }

@media (max-width: 620px) {
  .header-banner { font-size: 0.66rem; padding: 9px 14px; }
}

.menu-overlay {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(12, 5, 5, 0.6);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease;
  z-index: 1998;
  pointer-events: none;
}
.menu-overlay.open { opacity: 1; visibility: visible; pointer-events: auto; }

/* ════════════════════════════════════════════════════════════════════
   HERO (.cta-hero) + FOOTER GLOW
   ------------------------------------------------------------------
   #footer sasa ndiyo "canvas" moja YA PAMOJA kwa HERO na FOOTER-GRID
   (angalia cp.js: FOOTER_GLOW_HTML + HERO_HTML + FOOTER_HTML zote ni
   watoto wa moja kwa moja wa #footer). overflow/isolation zimewekwa
   kwenye #footer (siyo .cta-hero pekee kama awali), ili blob nyekundu
   ya kulia (br) itiririke bila kikomo kupitia .footer-divider hadi
   chini kabisa ya footer-bottom, badala ya kukatika ghafla mwishoni
   mwa hero. Blob ya kushoto-juu (tl, bluu/purple) inabaki ndani ya
   .cta-hero pekee — ni ya hero peke yake, haikuwa na tatizo lolote.
   Maandishi na button zinabaki kwenye --hdr-* zilizolocked; blobs
   pekee ndizo zinazotumia --acc-blue/--acc-purple/--hdr-brand mpya.
   ════════════════════════════════════════════════════════════════════ */
#footer { position: relative; overflow: hidden; isolation: isolate; background: var(--hdr-ink); padding: 0 0 20px; }
#footer > .wrap { position: relative; z-index: 1; max-width: 1180px; margin: 0 auto; padding-left: 28px; padding-right: 28px; }

.hero-blob { position: absolute; pointer-events: none; z-index: 0; }

/* Blob ya kulia (mwekundu) — mtoto wa moja kwa moja wa #footer
   (angalia cp.js), siyo wa .cta-hero, kwa hiyo inaenea nyuma ya HERO
   NA FOOTER pamoja kama background moja endelevu. Positioning imebadilika
   kutoka `bottom:` (ilipokuwa imefungiwa ndani ya .cta-hero pekee)
   kwenda `top:` (sasa relative kwa #footer nzima) — `top:180px` +
   `height:620px` inafikisha ukingo wa blob hadi ~800px kutoka juu ya
   #footer, ikizidi urefu halisi wa footer nzima (~587px desktop) ili
   mng'ao uendelee bila pengo hadi mwisho. Angalia pia @media (max-width:
   620px) chini — footer ya mobile ni ndefu zaidi (grid 2x2), hivyo blob
   ya mobile ina thamani tofauti kabisa, ndefu zaidi si fupi zaidi.

   NOTE: ile "ring" ya outline (mstari mwembamba wa duara, SVG separate
   kutoka kwa hii fill) imeondolewa kabisa kwa maombi ya mtumiaji — sasa
   ni glow fill pekee (radial-gradient blur), hakuna SVG stroke tena. */
.blob-fill-br {
  top: 180px; right: -260px; width: 620px; height: 620px;
  background: radial-gradient(circle at 60% 40%, var(--hdr-brand), transparent 70%);
  border-radius: 50%; filter: blur(14px); opacity: 0.35;
}

.cta-hero {
  position: relative;
  z-index: 1;
  padding: 100px 28px 120px;
  text-align: center;
}
/* Blob ya kushoto-juu (nyekundu-machungwa/rust, --acc-purple) —
   vilevile "ring" ya outline imeondolewa; glow fill pekee ndiyo
   iliyobaki. */
.blob-fill-tl {
  top: -110px; left: -140px; width: 320px; height: 320px;
  background: radial-gradient(circle at 30% 30%, var(--acc-purple), transparent 70%);
  border-radius: 50%; filter: blur(10px); opacity: 0.55;
}
.cta-hero-inner { position: relative; z-index: 1; }
.cta-hero h2 {
  font-family: var(--hdr-font);
  font-weight: 900;
  font-size: clamp(1.7rem, 4.6vw, 3rem);
  line-height: 1.1;
  color: var(--hdr-paper);
  letter-spacing: -0.01em;
  max-width: 700px;
  margin: 0 auto 36px;
}
.cta-hero h2 .accent { color: var(--hdr-brand-bright); }

.cta-row { display: inline-flex; align-items: center; gap: 18px; }
.cta-spark { width: 30px; height: 20px; flex-shrink: 0; color: var(--hdr-gold); opacity: 0.85; }
.cta-spark.right { transform: scaleX(-1); }

.cta-button {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: var(--hdr-brand);
  color: var(--hdr-paper);
  font-family: var(--hdr-font);
  font-weight: 700;
  font-size: 1rem;
  padding: 15px 28px;
  border-radius: 8px;
  text-decoration: none;
  border: 1px solid rgba(244,236,231,0.08);
  transition: background 0.2s ease, transform 0.2s ease;
  white-space: nowrap;
}
.cta-button:hover { background: var(--hdr-brand-bright); transform: translateY(-1px); }
.cta-button svg { width: 16px; height: 16px; flex-shrink: 0; }

/* ════════════════════════════════════════════════════════════════════
   FOOTER (muundo mpya — brand block + General + Follow Us)
   ------------------------------------------------------------------
   NOTE: footer HTML (kwenye cp.js) ina <div class="wrap"> ndani yake.
   Rule hapa chini (footer > .wrap) inaifanya footer iwe na max-width
   sahihi YENYEWE, bila kutegemea .wrap ya page nzima kuwepo mahali
   pengine — kwa hiyo footer itaonekana sahihi hata kwenye page
   isiyo na .wrap yake yenyewe.
   ════════════════════════════════════════════════════════════════════ */
.footer-divider { border: none; border-top: 1px solid var(--hdr-line); margin: 0 0 48px; }

.footer-grid {
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr;
  gap: 32px;
  padding-bottom: 32px;
}

.footer-brand-block { display: flex; flex-direction: column; gap: 16px; }

.footer-badge {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  background: rgba(244,236,231,0.03);
  border: 1px solid var(--hdr-line-strong);
  border-radius: 8px;
  padding: 8px 12px;
  width: fit-content;
}
.footer-badge-icon {
  width: 24px; height: 24px;
  border-radius: 6px;
  background: var(--hdr-gold);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  color: var(--hdr-ink);
}
.footer-badge-icon svg { width: 13px; height: 13px; }
.footer-badge-text { display: flex; flex-direction: column; gap: 1px; }
.footer-badge-eyebrow { font-family: var(--hdr-font); font-size: 0.56rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--hdr-paper-dim); }
.footer-badge-main { font-family: var(--hdr-font); font-size: 0.78rem; font-weight: 700; color: var(--hdr-paper); }

.footer-col h4 { font-family: var(--hdr-font); font-size: 0.6rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--hdr-paper-dim); margin-bottom: 14px; }
.footer-col-links { display: flex; flex-direction: column; gap: 12px; }
.footer-col-links a {
  font-family: var(--body-font);
  font-size: 0.82rem;
  color: var(--hdr-paper);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  width: fit-content;
  transition: color 0.15s ease;
}
.footer-col-links a:hover { color: var(--hdr-brand-bright); }
.footer-col-links a svg { width: 14px; height: 14px; flex-shrink: 0; fill: currentColor; opacity: 0.85; transition: opacity 0.2s ease; }
.footer-col-links a:hover svg { opacity: 1; }

.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  padding-top: 22px;
  border-top: 1px solid var(--hdr-line);
  font-family: var(--body-font);
  font-size: 0.7rem;
  color: var(--hdr-paper-dim);
}
.footer-bottom-links { display: flex; gap: 20px; }
.footer-bottom-links a { color: var(--hdr-paper-dim); text-decoration: none; }
.footer-bottom-links a:hover { color: var(--hdr-paper); }

/* ════════════════════════════════════════════════════════════════════
   RESPONSIVE
   ------------------------------------------------------------------
   HEADER: haina breakpoint maalum — inajinyoosha kiasili kwa
   flex-wrap pekee (tabia ya kawaida ya flexbox), sawa na chanzo.

   HERO + FOOTER (mpya): zina breakpoints mbili hapa chini —
   980px (tablet: footer-grid inapungua kutoka 3 columns kwenda 2x2)
   na 620px (mobile: General + Follow Us upande kwa upande kwa 2
   columns, huku brand-block ikichukua upana kamili juu yake —
   hii inafupisha urefu wa footer kwenye simu).
   ════════════════════════════════════════════════════════════════════ */
/* ---- BREAKPOINT YA HEADER: desktop dhidi ya hamburger ----
   Chini ya 981px (simu/tablet): .desktop-nav inabaki display:none
   (default hapo juu), .menu-btn inaonekana kama kawaida — hamburger
   + side-panel HAVIJABADILIKA kabisa kwenye ukubwa huu. .header-banner
   ("Changia jukwaa...Gusa hapa") pia inaonekana kama kawaida hapa —
   HAIJABADILIKA kwenye simu/tablet.
   Kuanzia 981px (laptop/desktop): .desktop-nav inaonekana (links za
   moja kwa moja, kama DPO Pay), .menu-btn na side-panel yake
   vinafichwa — havihitajiki tena kwa sababu links tayari zinaonekana.
   .header-banner PIA inafichwa kwenye desktop kwa maombi ya mtumiaji
   (banner ilikuwa ikichukua nafasi ya ziada chini ya nav bar kwenye
   desktop, wakati "Changia Jukwaa" tayari ipo kama link ndani ya
   .desktop-nav yenyewe — banner si lazima tena hapo, inabaki muhimu
   TU kwa simu ambako haina nafasi ya kuonyesha link hiyo moja kwa
   moja). --header-height (cp.js/ResizeObserver) inasasika kiotomatiki
   ikiwa fupi kwenye desktop kwa sababu inapima urefu HALISI wa
   #header baada ya banner kutoweka — hakuna namba ngumu ya kurekebisha.
   980px imechaguliwa kufanana na @media (max-width: 980px) iliyopo
   chini (footer-grid) — breakpoint moja, si mbili tofauti ovyo. */
@media (min-width: 981px) {
  .header-nav-cluster { display: flex; }
  .desktop-nav { display: flex; }
  .menu-wrap .menu-btn { display: none; }
  .dropdown-menu { display: none; }
  .header-banner { display: none; }
}

@media (max-width: 980px) {
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px 24px; }
  .footer-brand-block { grid-column: 1 / -1; }
}

@media (max-width: 620px) {
  /* Nafasi tupu juu ya "Send Your First Confession!" na chini ya
     button ya "Send Now" ilikuwa kubwa mno kwenye simu (80px juu,
     90px chini, kisha 48px zaidi kutoka footer-divider chini yake
     — jumla ~138px ya nafasi tupu chini ya button pekee). Imepunguzwa
     hapa kwa simu TU (desktop bado ni 100px/120px na divider 48px,
     havijaguswa kabisa) ili hero na footer vibane bila kubadilisha
     ukubwa wa maandishi, button, wala rangi/blobs — nafasi pekee
     ndiyo iliyopunguzwa. Namba mpya (48px, 28px) zinatumia hiyo hiyo
     spacing scale iliyokwishatumika sehemu nyingine za faili hii
     (linganisha na .footer-grid gap: 32px, .footer-bottom padding-top:
     22px) badala ya namba mpya za ovyo. */
  .cta-hero { padding: 48px 20px 48px; }
  .footer-divider { margin-bottom: 28px; }
  .cta-hero h2 { margin-bottom: 28px; }
  .cta-row { flex-direction: column; gap: 14px; }
  .cta-spark { display: none; }
  /* Send Now button — ndogo kidogo kwenye simu pekee (desktop
     haijaguswa kabisa, bado 1rem font / 15px 28px padding).
     width imebadilika kutoka 100% (ilijaza screen nzima) kwenda
     auto (inajipima kwa maandishi yake, kama desktop), ili
     ionekane "ndogo" kimzunguko pia si kimo tu. Height inabaki
     ~46px (juu ya 44px touch-target minimum ya accessibility). */
  .cta-button { width: auto; justify-content: center; font-size: 0.9375rem; padding: 13px 22px; }

  /* General + Follow Us upande kwa upande (2 columns); brand-block
     (col ya 1 kwenye HTML) ichukue upana kamili. */
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 28px 20px; }
  .footer-brand-block { grid-column: 1 / -1; }
  .footer-badge { width: 100%; }

  /* Copyright na Terms/Privacy — center kwenye simu pekee (desktop
     inabaki space-between, copyright kushoto na links kulia, kama
     awali). Bado ni flex-direction: column (mstari mmoja juu ya
     mwingine), tofauti ni tu jinsi kila mstari unavyojipanga kwa
     upana: center badala ya flex-start (kushoto). */
  .footer-bottom { flex-direction: column; align-items: center; gap: 12px; text-align: center; }
  .footer-bottom-links { gap: 16px; flex-wrap: wrap; justify-content: center; }

  /* Blob nyekundu (br) kwenye simu — footer ya mobile ni NDEFU ZAIDI
     kuliko desktop (footer-grid inapangana 2x2 badala ya row moja),
     kwa hiyo blob inahitaji kuwa ndefu zaidi (siyo fupi zaidi) ili
     mng'ao uendelee kufika chini kabisa bila pengo la giza tupu.
     Upana (right offset) umepunguzwa kidogo tu ili usisukume upana wa
     ukurasa; #footer's overflow:hidden inazuia scroll ya kando yoyote. */
  .blob-fill-br { width: 820px; height: 820px; top: 100px; right: -420px; }
}

/* ════════════════════════════════════════════════════════════════════
   FONTS INAYOHITAJIKA (siyo ndani ya CSS hii — weka kwenye <head>)
   ------------------------------------------------------------------
   Header/footer zinategemea Roboto (--hdr-font) na Inter (--body-font)
   kutoka Google Fonts. Bila hii, --hdr-font itaanguka kwenye
   default sans-serif ya kawaida na jina la brand halitaonekana sawa.

   Weka mistari hii miwili KABLA ya <link rel="stylesheet" href="/dynamic/ct.css" />:

   <link rel="preconnect" href="https://fonts.googleapis.com" />
   <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Roboto:wght@400;500;700;900&display=swap" rel="stylesheet" />
   ════════════════════════════════════════════════════════════════════ */