/* ============================
   WHISPER WEBSITE — uganda.css
   ============================ */

/* * { border: 1px solid red; } */

:root {
  /* ---- Brand colour ---- */
  --wh-color-brand: #187a2b;
  --wh-color-brand-light: #8ae79c;
  --wh-color-brand-dark: #096d1c;
  --wh-color-accent: #f5a623;         /* the Whisper amber/orange from the logo */

  /* ---- Neutral palette ---- */
  --wh-color-text: #122f4d;
  --wh-color-text-brand: #ffffff;     /* for text on wh-color-brand background */
  --wh-color-text-display2: #1f4e79;
  --wh-color-text-muted: #5a6470;
  --wh-color-bg: #ffffff;
  --wh-color-highlight: #ebfaf1;       /* cards, form background */
  --wh-color-neutral: #f1e8dd;
  --wh-color-off: #f0f0f0;             /* deactivated or read only elements */
  --wh-color-border: #d8dee4;

  /* ---- Functional ---- */
  --wh-color-link: var(--wh-color-text);
  --wh-color-link-hover: var(--wh-color-text);
  --wh-color-focus: #2b7de9;

  /* ---- Typography ---- */
  --wh-font-display: "Poppins", system-ui, sans-serif;   /* For headings */
  --wh-font-display2: Arial, system-ui, sans-serif;      /* Incidental display font */
  --wh-font-body: "Manrope", system-ui, sans-serif;      /* For body */
  --wh-weight-display: 600;
  --wh-weight-display2: 700;
  --wh-weight-body: 400;

  --wh-text-sm: 1rem;
  --wh-text-base: 1.2rem;
  --wh-text-lg: 1.4rem;
  --wh-text-xl: 1.5rem;
  --wh-text-2xl: 1.7rem;
  --wh-line-body: 1.6;
  --wh-line-tight: 1.1;

  /* ---- Spacing scale ---- */
  --wh-space-1: 0.25rem;
  --wh-space-2: 0.6rem;
  --wh-space-3: 0.75rem;
  --wh-space-4: var(--wh-text-base);
  --wh-space-6: 1.5rem;
  --wh-space-8: 2rem;
  --wh-space-12: 3rem;
  --wh-space-16: 4rem;

  /* ---- Layout ---- */
  --wh-content-max: 70rem;
  --wh-radius: 8px;
  --wh-radius-box: 10px;
  --wh-shadow: 3px 3px 2px rgba(64, 64, 64, 0.2);

  color-scheme: light dark;

  --pixiedust: 0;

  --whisper-yellow: #F7C825;

  --wh-color-alert-urgent: #c0392b;    /* red - serious clinical notices */
  --wh-color-alert-info: var(--wh-color-highlight);      /* general information */
  --wh-color-alert-advert: var(--wh-color-brand);    /* green - good news, new services */
}

body.magical {
  --pixiedust: 1;
  --pixiedust-color-1: var(--wh-color-highlight);
  --pixiedust-color-2: var(--wh-color-brand-light);
  --pixiedust-color-3: var(--wh-color-brand);
}

/* =====
   FONTS
   ===== */

/*
 * Global base styles for the Whisper Uganda site.
 * Fonts are self-hosted (subsetted) for performance and GDPR compliance —
 * drop the .woff2 files into /public/fonts/ with the names below.
 *
 * font-display: swap keeps text visible during font load, which matters on
 * the slower mobile connections common for the Uganda audience.
 */

@font-face {
  font-display: swap;
  font-family: 'Poppins';
  font-style: normal;
  font-weight: var(--wh-weight-display);
  src: url('poppins-v24-latin-600.woff2') format('woff2');
}

@font-face {
  font-display: swap;
  font-family: 'Manrope';
  font-style: normal;
  font-weight: var(--wh-weight-body);
  src: url('manrope-v20-latin-regular.woff2') format('woff2');
}


/* ===========
   BASE STYLES
   =========== */

html {scroll-behavior:smooth; overflow-x: hidden;}

*,
*::before,
*::after {
  box-sizing: border-box;
}

body {
  background-color: var(--wh-color-bg);
  color: var(--wh-color-text);
  font-size: var(--wh-text-base);
  font-family: var(--wh-font-body);
  font-weight: var(--wh-weight-body);
  line-height: var(--wh-line-body);
  -webkit-font-smoothing: antialiased;
  position: relative;
  overflow-y: auto;
  margin: 0;
  width: 100vw;
}

h1, h2, h3 {font-family: var(--wh-font-display);
  font-weight: var(--wh-weight-display);
  line-height: var(--wh-line-tight);
  color: var(--wh-color-text);
  margin: 0 0 var(--wh-space-4);}
h1 {font-size: var(--wh-text-2xl); margin-top:10px;}
h2 {font-size: var(--wh-text-xl); margin-top:20px;}
h3 {font-size: var(--wh-text-lg);}
h4 {font-size: var(--wh-text-base);}
.display {font-family: var(--wh-font-display);}

svg.icon {width:48px; height:48px;}

p, li, label, button, input, .container1 {font-size: var(--wh-text-base);}
ul {margin:0px 10px 0px 25px;}
li {line-height: var(--wh-line-body); margin-bottom: var(--wh-space-2);}
p {margin-bottom: var(--wh-space-4);}
a {color: var(--wh-color-link);}
a:hover {color: var(--wh-color-link-hover);}
figcaption {font-style: italic;}
figure {margin: 10px auto; max-width: 100%;}
#pageheader {pointer-events:none;}
header {max-height: 132px}
header div {max-height:132px;}
.topmenu {pointer-events:auto;}
div {box-sizing: border-box;}


/* =============
   ACCESSIBILITY
   ============= */

/* Visible focus ring — keyboard only */
*:focus {
  outline: none;
}

*:focus-visible {
  outline: 3px solid blue !important;
}

/* Skip links */
.skip-link {
  position: absolute;
  left: -999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.skip-link:focus {
  top: 0px;
  left: 0px;
  width: 250px;
  height: 40px;
  overflow: visible;
  padding: 0.5em;
  background: var(--wh-color-brand);
  color: var(--wh-color-text-brand);
  z-index: 10;
}
.skip-link div {max-width: 250px;}

/* Visually hidden headings for SEO / screen readers */
.seo-heading {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  white-space: nowrap;
}


/* ============================
   LAYOUT — HEADER, NAV, FOOTER
   ============================ */

.header {max-height: 138px; padding: 10px 0 0 0; position:relative;}

div.topmenu {padding: 6px 0px 0px 0px; float: right;}
div.topmenu ul.nav {margin-bottom: 4px !important;}
div.topmenu ul.nav li {display: inline-block; padding: 0; margin: 4px 8px 0 0; position:relative; z-index:2;}
div.topmenu img:hover {opacity: 0.8; background-color: var(--whisper-yellow);}

/* Force top menu (flags) into pseudo drop-down. Visibility hidden stops flags flickering on load. */
div.topmenu header ul {display: inline-block; visibility: hidden;}
div.topmenu ul.nav {list-style: none;}
#downarrow {margin: 0 0 0 5px; cursor: pointer;}

#fwcontnav {background-color: var(--wh-color-bg); border-top: 2px solid var(--wh-color-bg); border-bottom: 2px solid var(--wh-color-bg);}
#myTopnav {margin-bottom: 0rem !important; margin-left: -25px; position: static; z-index:10;}
#myTopnav ul.nav {width: 100%; font-weight: bold; font-family: sans-serif; margin-bottom: 0rem;}
#myTopnav ul.nav > li.parent > a {display: none;}  /* Hide menu title link */
#myTopnav ul.nav li {font-size: 1.3rem; letter-spacing: 0.8px; margin-bottom: 0rem; line-height: 0.7rem;}
#myTopnav ul.nav li ul li {display: inline-block; padding: 6px 4px 6px 0px; margin: 4px 20px 4px 20px; text-transform: uppercase; border-style: none; line-height: 0.7rem;}
#myTopnav ul.nav li ul li:last-child {border-right: 0px solid #333333; margin-bottom: 0rem; line-height: 0.7rem;}
#myTopnav ul.nav li ul li.active a {color: #181818;}
#myTopnav div.nav {overflow: hidden;}
#myTopnav ul.nav li ul li a {color:var(--wh-color-text); text-decoration: none;}
#myTopnav ul.nav li ul li a:hover {color: var(--wh-color-brand-light);}

button#navbtn {display: none; padding: 4px 12px; float: right; margin-right: 100px; background-color: #FFECBB; border: 0; outline: 0; border-radius: var(--wh-radius); z-index:10;}
button#navbtn:hover {background-color: var(--whisper-yellow); color: #333333;}

#contcontr {margin: 10px auto;}
.row {margin-left: 0px;}
#maincontent {margin-left:0px;}

div.fullwidthbgndclr0 {background-color: inherit;}
div.fullwidthbgndclr1 {background:var(--wh-color-highlight); border-top: 2px solid var(--wh-color-bg); border-bottom: 2px solid var(--wh-color-bg); max-width: 100%;}

.footer {padding: 10px 0 70px 0; color:inherit; background-color:var(--wh-color-highlight);}
.footer p {font-size: var(--wh-text-sm);}
.footer a {font-weight: bold;}
.footer a img:hover {opacity: 0.8;}
div.footleft {float: left; color: inherit;}
div.footright {float: right; color: inherit;}

#sidebar {padding-left: 10px; border-left: 1px dotted #FFECBB;}


/* =====================
   LAYOUT — CONTENT AREA
   ===================== */

.main.container {max-width: 100vw; background-color: var(--wh-color-bg); padding: 0px;}
.toph3 {margin-top: 0; margin-bottom: 20px; line-height: 20px;}

a:link, a:visited {text-decoration: underline;}
a:hover {text-decoration: none;}
#maincontent p.readmore a:link, #maincontent p.readmore a:visited {text-decoration: none;}

div.page-header {border-bottom: 1px dotted #FFECBB !important; margin-bottom: 15px !important;}
div.blog div.page-header h2 {font-size: var(--wh-text-lg); font-weight: var(--wh-weight-body);}
p.readmore a.btn {font-size: 12px; padding: 1px 12px 3px 12px; background: #FFECBB;}
p.readmore a span.icon-chevron-right {margin: 4px 4px 0 0;}

div.blogarts ul {list-style: none; margin-left: 0;}
div.blogarts ul li a {text-decoration: underline;}
div.blogarts ul li a:hover {text-decoration: none;}

.item-image {padding: 10px;}

span#right-hand-header {font-weight: bold; float: right; margin-top: -45px; margin-right: 20px; margin-bottom: 10px;}
img.whisper-logo {margin-left: 10px;}


/* ==========================
   LAYOUT — COLUMN CONTAINERS
   ========================== */

.one-column-container {
  display: grid;
  max-width: 1000px;
  padding: 20px;
}

.two-column-container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0px 12px;
}
.two-column-container > div {max-width: 100vw;}

.three-column-container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0px 12px;
  padding: 0px 0px;
  box-sizing: border-box;
  max-width: 100vw;
}
.three-column-container img,
.three-column-container table,
.three-column-container iframe,
.three-column-container video {
  max-width: 100%;
  height: auto;
}

.two-thirds-container {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 0px 12px;
  padding: 0px 0px;
  box-sizing: border-box;
  max-width: 100vw;
}

.three-column-container > *, .two-thirds-container > * {
  min-width: 0;      /* prevents grid blowout from wide content */
  max-width: 96vw;
  box-sizing: border-box;
}

.column {margin: 0px; padding: 0px;}

.highlight-box {
  border-radius: var(--wh-radius-box);
  padding: 10px;
  background-color:var(--wh-color-highlight);
  margin: 10px;
  max-width: 100vw;
}
.highlight-box img {margin: 0 auto;}
.highlight-box a {overflow: hidden;}
.highlight-box h2 {margin-top: 0px;}


/* ================================================
   LAYOUT — PICTUREHOOKS (decorative image anchors)
   ================================================ */

div.picturehook {height: 0px; position: relative; z-index: 10;}

.picturehook::before {
  content: "";
  position: absolute;
  display: none;
  right: 0; top: 0;
  width: 100px;
  height: 100px;
  background-repeat: no-repeat;
  background-size: contain;
  overflow-x: clip;
  pointer-events: none;
}

#topcenter, #bottomcenter {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
}

#topright, #bottomright {
  position: absolute;
  left: 100%;
  transform: translateX(-50%);
}


/* ==========
   TYPOGRAPHY
   ========== */

blockquote {
  font-size: var(--wh-text-base);
  font-style: italic;
  padding: 35px 20px 50px 20px;
  margin: 20px;
  background-color: #FDF3CE;
  background-image: url("/images/graphics/66-quote.png");
  background-repeat: no-repeat;
  text-indent: 48px;
  border: none;
}
blockquote.singlecol {float: right; max-width: 420px;}
span.quotefrom {font-style: normal; font-weight: bold; float: right; margin: 7px;}
p.quote {font-weight: bold; margin-left: 36px;}


/* ==============================
   BUTTONS & SHARED UI COMPONENTS
   ============================== */

/* Generic reveal/QR button */
.button {
  display: inline-block;
  padding: 10px 20px;
  background-color: var(--wh-color-brand);
  color: var(--wh-color-text-brand);
  border-radius: var(--wh-radius);
  font-size: var(--wh-text-base);
  cursor: pointer;
  transition: background-color 0.3s ease;
}
.button:hover {background-color: var(--wh-color-brand-light);}

/* Tab-style branch selection buttons */
.branch-buttons.highlight-box {
  background: var(--wh-color-neutral);
  max-width: 370px;
  margin: 16px 0px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 10px 12px;
}
.branch-buttons > div {
  gap: 2px;
  flex-shrink: 1;
}
.branch-buttons button {
  border: solid 1px #CCCCCC;
  border-radius: var(--wh-radius);
  background-color: var(--wh-color-off);
  color: var(--wh-color-text);
  width: 82px;
  flex-shrink: 0;
  height: 36px;
  text-align:center;
  padding-left: 8px;
  font-size: var(--wh-text-sm);
  cursor: pointer;
  margin: 0 0.25em;
  transition: background-color 0.25s ease, transform 0.15s ease;
}
.branch-buttons button:hover,
.branch-buttons button.active:hover {
  background-color: var(--wh-color-brand-light);
  color: var(--wh-color-brand-text);
}
.branch-buttons button.active {
  border: none;
  color: #FFF;
  background-color: var(--wh-color-brand);
  font-weight: 600;
  transform: translateY(-2px);
  box-shadow: var(--wh-shadow);
}


/* ===========
   ALERT BANDS (news alerts at top of screen)
   =========== */

.alert-bands {max-width:1170px; margin:0px auto;}

.alert-band {
    background-color: var(--wh-color-alert-info);
    color: var(--color-text);
    padding: 10px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 10px;
}
.alert-text {flex:1; text-align:center;}
.alert-band.alert-band-advert {background-color: var(--wh-color-alert-advert); color:white;}
.alert-band.alert-band-urgent {background-color: var(--wh-color-alert-urgent); color:white;}
.alert-band a {color:inherit; text-decoration:underline;}

/* display:revert on branch classes resolves to block, overriding .alert-band flex layout */
.js-enabled .alert-band.jinja-branch.active,
.js-enabled .alert-band.kampala-branch.active {display: flex;}

.alert-band-close {
    border: 1px solid var(--wh-color-text);
    width: 26px;
    height: 26px;
    border-radius: 0px;
    color: var(--wh-color-text);
    background-color: var(--wh-color-bg);
    -webkit-appearance: none;
    appearance: none;
    margin-right:10px;
    line-height: 26px; 
    padding: 0;              
    box-sizing: border-box;
    text-align: center; 
    display: flex;
    align-items: center;
    justify-content: center;
    padding-bottom: 2px;
}
@supports (-webkit-touch-callout: none) {
    .alert-band-close {
        padding-bottom: 5px;
    }
}

/* =====
   FORMS
   ===== */

.formDescription {font-style: italic;}
.formControls {max-width: 500px;}
.rsform-submit-button {margin-left: 50px;}

/* Submit button on RSForm forms */
body.ug .formResponsive button[type=submit] {
  background-color: var(--wh-color-brand);
  color: var(--wh-color-text-brand);
  font-weight: bold;
  padding: 10px 15px;
  border-radius: var(--wh-radius);
  font-size: var(--wh-text-base);
}
body.ug .formResponsive button[type=submit]:hover {
  background-color: var(--wh-color-brand-light);
  color: var(--wh-color-text);
}

/* Spam prevention — honeypot field */
.rsform-block-messagebody {display: none; visibility: hidden;}

/* Read-only RSForm fields */
input.rsform-input-box[readonly="readonly"] {background-color: var(--wh-color-off) !important; color: var(--wh-color-text-brand) !important;}

/* Contact details form */
#contactdetails {float: left; margin: 0 15px 15px 0; max-width: 50%;}
#contactmap {float: right;}
#contactdetails div.formControlLabel {font-weight: bold;}
#contactdetails div.formControls input {width: 96%; padding: .6rem 1rem;}
#contactdetails div.formControls textarea {width: 96%; padding: .6rem 1rem;}

.clicktocall {display: none;}


/* ============
   TABLE STYLES
   ============ */

table.tabstyle1 tr:nth-child(even) {background-color: #FFECBB;}
table.tabstyle1 tr:nth-child(odd) {background-color: #FFFFFF;}
table.tabstyle1 td,th {padding: 4px 8px; font-weight: bold; font-size: 1.1rem;}
table.tabstyle1 th {text-align: left;}
table.tabstyle1 {margin-bottom: 20px;}
table.tabstyle1 tr {border-style: none;}


/* =====================
   FLOATING CALL BUTTONS
   ===================== */

#floating-contact-buttons {
  position: fixed;
  bottom: 14px;
  right: 10px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  z-index: 10;
}
.fab-call-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}

.fab-call-label {
  font-size: 0.8em;
  font-weight: var(--wh-weight-display);
  color: #FF0000;
  background-color: var(--wh-color-bg);
  text-align: center;
  line-height: 1em;
  letter-spacing: 0.05em;
}

/* Hide call button on desktop */
@media (min-width: 992px) {
  #floating-contact-buttons { display: none; }
}


/* ===============
   MISC COMPONENTS
   =============== */

/* Table of contents */
#toc {background-color: var(--wh-color-neutral); margin-top:25px;}
#toc li {line-height: 2rem;}
#toc h2 {margin-top: 0; font-size: var(--wh-text-base);}
#toc ul {list-style-type: none; margin: 0; padding-left: 1em;}
#toc li {margin: 0.25em 0;}
#toc ul ul {padding-left: 1.2em; border-left: 1px dotted #bbb; margin-left: 0.5em;}

.back-to-top {text-align: right; font-size: var(--wh-text-sm); margin-top:0px; margin-bottom:0px;}
.back-to-top a {text-decoration: none;}
.back-to-top a:hover,
.back-to-top a:focus {text-decoration: underline;}
.back-to-top {display:none;}

/* Donate badges */
#donatebadges {float: right; margin-bottom: 15px;}
#donatebadges img {margin-left: 20px;}

/* Show/hide on mobile */
div.showonmobile {display: none;}
div.hideonmobile {display: block;}

/* Page sharing */
.share-page {float: right; font-size: var(--wh-text-base); margin: 10px;}
.share-page a {margin: 5px; display: inline-block;}
.share-page .fa-facebook-official {color: #3b5998;}
.share-page .fa-twitter-square {color: #55acee;}
.share-page .fa-envelope-o {color: #666;}

/* Image download with toast notification */
.image-download {
  position: relative;
  display: inline-block;
  margin-bottom: 12px;
}
.image-download img {
  display: block;
  width: auto;
  height: auto;
  max-width: 600px;
  margin-bottom: 4px;
}
.image-toast {
  position: absolute;
  top: 10px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(255, 255, 255, 0.9);
  color: #000;
  padding: 6px 12px;
  border: 1px solid var(--wh-color-text);
  border-radius: var(--wh-radius);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
  z-index: 10;
}
.image-toast.show {opacity: 1;}

/* Copy-to-clipboard button state */
.copied {
  color: white;
  transition: background-color 0.3s ease;
}
.copied::after {
  content: " (copied)";
  display: inline-block;
  margin-left: 5px;
}
.hide-after::after {display: none;}

/* Reveal image containers (QR code reveal via checkbox) */
.reveal-image-container {
  text-align: center;
  margin-top: -10px;
  margin-bottom: 10px;
}
.image-container {
  margin-top: 20px;
  opacity: 0;
  max-height: 0;
  overflow: hidden;
  transition: opacity 0.3s ease, max-height 0.3s ease;
}
input[type="checkbox"]:checked ~ .image-container {
  opacity: 1;
  max-height: 500px;
}

/* Image with centred text overlay — NOTE: distinct from .image-container above */
.image-overlay-container {
  position: relative;
  text-align: center;
  color: white;
}
.image-centered-text {
  position: absolute;
  top: 60%;
  left: 50%;
  transform: translate(-50%, -50%);
}


/* =============
   YOUTUBE EMBED
   ============= */

.youtube-container {display: block; position: relative; margin: 10px; max-width: 100%; height: 0; width: 0; color: white; font-weight: bold;}
.youtube-player {display: block; position: absolute; left: 0; top: 0; color: white; overflow: hidden; width: 100%; height: 100%;}
img.youtube-thumb {bottom: 0; display: block; left: 0; margin: auto; width: 100%; position: absolute; right: 0; top: 0; overflow: hidden;}
div.youtube-caption {height: 30px; width: 100%; margin-left: 10px; margin-top: 10px; position: absolute; color: #FFFFFF; font-family: sans-serif; font-size: var(--wh-text-base);}
div.play-button {height: 56px; width: 80px; left: 50%; top: 50%; margin-left: -36px; margin-top: -36px; position: absolute; background: url("/images/graphics/youtube-button.png") no-repeat;}
div.youtube-loading {font-size: var(--wh-text-2xl); color: white; background-color: black; text-align: center; align-items: center; justify-content: center; padding-top: 25%; position: absolute; top: 0; left: 0; width: 1px; height: 1px; z-index: 1; display: flex;}
.youtube-iframe {position: absolute; top: 0; left: 0; height: 100%; width: 100%; z-index: 2;}
iframe.youtube-player {width: 100%; height: 100%; display: block; border: 0;}


/* ========================
   TOLLFREE, BUTTONS & HERO
   ======================== */
.tollfree {
  position: absolute;
  right: 80px;
  top: 15px;
  text-align: center;
  line-height: var(--wh-line-tight);
  font-family: var(--wh-font-display2);
}

.tollfree-header {
  display: flex;
  align-items: center;
  gap: 6px;
  justify-content: center;
  padding-left: 38px;
  font-family: var(--wh-font-display2);
}

.tollfree-rule {
  display: inline-block;
  width: 32px;
  height: 2px;
  background-color: var(--wh-color-text-display2);
}

.tollfree-label {
  font-size: var(--wh-text-lg);
  font-weight: var(--wh-weight-display2);
  color: var(--wh-color-text-display2);
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.tollfree-number {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2.5rem;
  font-weight: var(--wh-weight-display2);
  color: var(--wh-color-text-display2);
  gap: 6px;
  margin-bottom: 4px;
  font-family: var(--wh-font-display2);
}

.tollfree-icon {color: var(--wh-color-text-display2);}
.tollfree-icon svg {width: 36px; height: 36px;}
.tollfree-address {var(--wh-font-body); padding-left: 20px;}

/* Contact Us page */
.tollfree-contact .tollfree-header {padding-left:0px;}
.tollfree-contact {line-height: var(--wh-line-tight); margin-bottom: 20px;}
.tollfree-contact .tollfree-number {margin-top: 5px;}

.wh-button, .wh-button-white, .wh-button-square, .wh-button-wide {
  display: inline-flex;
  border: none;
  border-radius: 40px;
  padding: 10px 20px 10px 10px;
  font-size: 1.1rem;
  line-height: 25px;
  text-decoration: none;
  cursor: pointer;
  margin: 0px 0.25rem;
  color: var(--wh-color-text-brand);
  background-color: var(--wh-color-brand);
  font-weight: var(--wh-weight-display);
  box-shadow: var(--wh-shadow);
  transition: 0.2s ease;
}
.wh-button {padding-left:20px;}
a.wh-button-wide {text-decoration:none;}

.wh-button, .wh-button-white, .wh-button-wide {
  align-items: center;
  justify-content: space-between;
  text-align: center;
  white-space: nowrap;
}
.wh-button svg, .wh-button-white svg, .wh-button-wide svg {width:48px; height:32px;}
body.ug .wh-button {color: var(--wh-color-text-brand);}
.wh-button-square {max-height: 90px; line-height:1.3em; border-radius: var(--wh-radius); display: inline-block;}
.wh-button-white {background: var(--wh-color-bg); color: var(--wh-color-brand); border: 2px solid var(--wh-color-brand);}
.wh-button-white, .wh-button-wide {margin:10px 0px 10px 10px; max-width: 75%;}
.wh-button-white .arrow, .wh-button-wide .arrow {font-size: 2em; margin-left: auto; margin-top: -3px;}

.wh-button:link, .wh-button:visited,
.wh-button-white:link, .wh-button-white:visited,
.tiktok-link:link, .tiktok-link:visited {
  text-decoration: none;
}

a.wh-button:hover, a.wh-button:focus, .wh-button-wide:hover, .wh-button-wide:focus, .wh-button-square:hover, .wh-button-square:focus {
  background: var(--wh-color-brand-light);
  box-shadow: var(--wh-shadow);
  transform: translateY(-1px);
}
.wh-button.active {
  background-color: var(--wh-color-brand);
  font-weight: 600;
  transform: translateY(2px);
  box-shadow: var(--wh-shadow);
}

.copy-button.wh-button-wide {max-width:100%;}

.hero {position: relative;}
.hero img {border-radius:20px;}

.hero-tagline {
  position: absolute;
  top: 40px;
  left: 20px;
  right: 20px;
  font-size: 2.5rem;
  line-height: 3rem;
  font-weight: 700;
  color: var(--color-brand-dark);
  margin: 0 0 0px;
}
.tagline-highlight {color:var(--wh-color-brand);}

.hero-sub {
    position: absolute;
    top: 210px;
    left: 20px;
    font-size: var(--wh-text-base); 
    margin: 10px; 
    max-width: 400px;
}

.hero-sub .wh-button-wide, .hero-sub .wh-button-white {width:330px; margin:8px 6px;}
.hero-badges {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: auto auto;
  column-gap: 10px;
  max-width: 723px;
  list-style: none;
  padding: 0;
  margin: 25px 0px 0px;
}
.hero-badges li {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto;
  column-gap: 10px;
}
.hero-badges .badge-icon {
  width: 36px;
  grid-column: 1;
  grid-row: 1 / 3;
  align-self: start;
  color: var(--wh-color-brand);
  font-size: 2.5rem;
  margin: -8px 0px 10px;
}
.hero-badges .badge-icon svg {width:36px; height:36px;}
.hero-badges .badge-text {margin-top:8px;}
.hero-badges li b {grid-column: 2; grid-row: 1;}
.hero-badges li br {display: none;}


/* ======================
   CLINIC DAYS & SERVICES
   ====================== */

.clinic-days {
  margin-left: 10px;
  border-collapse: collapse;
  width: 100%;
}
.clinic-days td {padding: 4px 12px 4px 0; vertical-align: top;}
.clinic-days td:last-child {color: var(--wh-color-brand); font-weight: 600; white-space: nowrap;}

#clinic-days-container {
  position: relative;
  padding-bottom: 40px;
  margin-top: 30px;
  margin-bottom: 40px;
}
#clinic-days-container h2 {color: var(--wh-color-brand); text-transform: uppercase;}

#circle-24-7 {
  position: absolute;
  bottom: -40px;
  left: 50%;
  transform: translateX(-50%);
  width: 80px;
  height: 80px;
  border-radius: 50%;
  background: var(--wh-color-brand);
  color: var(--wh-color-text-brand);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: var(--wh-weight-display);
  font-size: var(--wh-text-base);
  text-align: center;
  line-height: 1.1;
  padding-bottom: 8px;
}

.services-list {margin-bottom:20px;}
.services-list .wh-button-wide { width:330px; }


/* ===========
   SPECIALTIES
   =========== */

.specialties-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
}
.specialty-card {
  flex: 0 0 18%;
  display: flex;
  height: 100px;
  flex-direction: column;
  align-items: center;
  text-align: center;
  background: var(--wh-color-bg);
  border-radius: var(--wh-radius-box);
  padding: 6px;
}
.specialty-card svg {width: 48px; height: 48px; color:var(--wh-color-brand);}

/* ==========
   WHY CHOOSE
   ========== */

#why-choose {margin-top: 80px;}
#why-choose h2 {max-width: 250px;}
#why-choose ul {list-style: none; padding: 0; margin: 0;}
#why-choose li {display: flex; align-items: center; gap: 5px; margin-bottom: -5px; line-height:2.5em; }
#why-choose li svg {width: 24px; height: 24px; flex-shrink: 0; color:var(--wh-color-brand);}


/* ========
   INSURERS
   ======== */

ul.insurers {
  display: flex;
  flex-wrap: nowrap;
  gap: 8px 8px;
  align-items: center;
  list-style: none;
  padding: 0;
  margin-left: 0px;
  max-width: 1200px;
}
.insurers li {flex: 0 0 auto; font-size: var(--wh-text-base); text-align: center; color: #666;}
.insurers img {width: auto; height: 58px;}
.insurer {position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap;}

/* ==============
   TIKTOK SAMPLER
   ============== */

.tiktok-sampler {background:var(--wh-color-highlight); padding: 10px 0px 15px 0px; margin: 40px 0px 10px 0px; border-radius: var(--wh-radius-box); max-width: 400px; position: relative;}
.tiktok-sampler-header {display: flex; align-items: center; justify-content: space-between; margin-bottom: 0px;}
.tiktok-sampler-left {display: flex; flex-direction: column; align-items: flex-start; gap: 2px;}
.tiktok-sampler-left .logo {margin:0px;}
.tiktok-sampler-right {margin-right:8px;}
.tiktok-sampler-handle {display:flex; flex-direction: column; margin-left:6px;}
.tiktok-sampler-container {display: grid; gap: 0px; justify-content: center; padding: 0px; grid-template-columns: 1fr 1fr 1fr;}
.tiktok-link {display: flex; flex-direction: column; align-items: stretch; text-decoration: none; width: 120px; flex-shrink: 0; padding-top:10px; padding-left:6px;}
.tiktok-thumbnail-container {position: relative; width: 100%; padding-top: 140%; border-radius: var(--wh-radius);}
.tiktok-thumbnail {position: absolute; top: 0; left: 0; width: 120px; object-fit: cover; display: block;}


/* =============================================================================
   LOGO & HEADER
   ============================================================================= */

.logo-wrapper, .footer-logo-wrapper {
  position: relative;
  display: flex;
  vertical-align: middle;
  margin-top: 2px;
  margin-right: 1rem;
  overflow: visible;
  padding-bottom: 10px;
  flex-direction: column;
}
.logo-wrapper {pointer-events:auto;}
.logo-tagline {background-color: var(--wh-color-bg); margin:0px 0px 0px 10px; max-width:279px; font-weight:500;}
.footer-logo-wrapper .logo-tagline { padding-left:5px; padding-bottom:10px; }
/* Branch name next to logo */
.logo-wrapper::after {
  font-size: 2rem;
  font-family: var(--wh-font-display);
  font-weight: var(--wh-weight-display);
  color: var(--wh-color-brand);
  margin-left: 0.6em;
  position: absolute;
  top: 0.6em;
  left: var(--branch-left, 275px);
  white-space: nowrap;
  transition: opacity 0.25s ease;
  content: var(--branch-text, "");
}

/* Branch-specific content (JS-enhanced) */
.jinja-branch, .kampala-branch {display: revert;}
.js-enabled .jinja-branch:not(.active), .js-enabled .kampala-branch:not(.active) {display: none;}
.jinja-branch::before {content: "(Jinja branch) "; font-weight: bold;}
.kampala-branch::before {content: "(Kampala branch) "; font-weight: bold;}
.js-enabled .jinja-branch::before, .js-enabled .kampala-branch::before {content: none;}


/* =======================
   ANIMATED BLUE BUTTERFLY
   ======================= */

body.magical #topcenter::before {
  left: -140px;
  top: -130px;
  width: 125px;
  height: 125px;
  background-image: url("/images/decor/blue-butterfly-graphic.png");
  animation: flapping 16s infinite;
  display: block;
}

@keyframes flapping {
  0%, 100% {transform: rotate(20deg);}
  15%, 16%, 17%, 18% {transform: rotate(20deg) scaleX(1);}
  15.5%, 16.5%, 17.5% {transform: rotate(20deg) scaleX(0.6);}
}


/* ==============
   GOOGLE REVIEWS
   ============== */

.review-header {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 0.75rem;
  flex-wrap: wrap;
}
.review-header svg {width:48px; height:48px;}
.review-score { font-size: 34px; font-weight: var(--wh-weight-display); line-height: 1; display: block; }
.review-stars,
.review-mini-stars { display: flex; gap: 3px; }
.review-stars svg { width: 17px; height: 17px; color:var(--whisper-yellow); }
.review-mini-stars svg { width: 14px; height: 15px; color:var(--whisper-yellow); }
.review-count { font-size: var(--wh-text-sm); margin-top: 3px; }
.review-divider { width: 1px; height: 50px; }
.review-source { font-size: 1.1rem; line-height: 1.4rem; }
.review-source strong { font-size: var(--wh-text-base); display: block; font-weight: 600; }

.review-cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  margin-bottom: 1rem;
  margin-right: 10px;
}
.review-card {
  border: 0.5px solid var(--wh-color-brand);
  border-radius: var(--wh-radius);
  padding: 10px;
}
.review-card-top { display: flex; align-items: center; gap: 9px; margin-bottom: 0px; }
.review-avatar {
  width: 34px; height: 34px; border-radius: 50%;
  background: var(--wh-color-brand);
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 700; color: white;
  flex-shrink: 0;
}
.review-inline {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-bottom: 7px;
}
.review-name { font-size: var(--wh-text-sm); font-weight: 600; }
.review-date { font-size: var(--wh-text-sm); }
.review-mini-stars { margin-bottom: 7px; }
.review-mini-stars svg { height:24px; }
.review-text {
  font-size: var(--wh-text-sm); line-height: 1.1rem; margin: 0; padding: 0;
  border: none; font-style: normal;
  background-color: inherit;
  background-image: none;
}
.reviews .wh-button-white {padding-left:20px; width:330px;}

/* UG FOOTER */

.social-row {
  margin-left: 20px;
  margin-bottom: 50px;
  display: flex;
  gap: 25px;
  align-items: center;
  flex-wrap: wrap;
}

.social-btn {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 2px solid var(--wh-color-brand-dark);
  background: transparent;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  transition: background 0.2s ease, border-color 0.2s ease, transform 0.15s ease;
}

.social-btn svg {
  width: 18px;
  height: 18px;
  color:var(--wh-color-brand);
  transition: fill 0.2s ease, stroke 0.2s ease;
}

.social-btn:hover {
  background:var(--wh-color-brand);
  color:var(--wh-color-text-brand);
  border-color:var(--wh-color-brand);
  transform: translateY(-2px);
}

.social-btn:hover svg {
  color:var(--wh-color-text-brand);
}

/* ======================
   RESPONSIVE BREAKPOINTS
   ====================== */

@media (max-width: 1200px) {
  span#right-hand-header {display: none;}
  .hero-tagline {font-size: 2rem; line-height: 2.9rem; top:20px; left:20px;}
  .hero-sub {top:160px; font-size: var(--wh-text-sm); margin-left:0px; max-width:380px;}
  .hero-badges {grid-template-columns: repeat(2, 1fr);}
  .specialties-grid {grid-template-columns: repeat(3, 1fr);}
  .tiktok-sampler-container {grid-template-columns: 1fr 1fr;}

  ul.insurers {
    display: grid;
    grid-template-columns: repeat(8, 1fr);
    align-items: center;
  }
  .insurers li {
    flex: unset;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .insurers img {
    width: 100%;
    height: auto;
    max-height: 58px;
    object-fit: contain;
  }
}

@media (max-width: 979px) {
  p, h1, h2, h3, .highlight-box {/* margin:20px 0px 10px;*/ max-width: 96vw;}
  h1 {padding-left:10px;}
  h2, .highlight-box {margin-top:40px;}
  ul {max-width:100%;}
  div.showonmobile {display: block;}
  div.hideonmobile {display: none;}
  .qr-code {display: none;}
  .clicktocall {display: block;}
  .reveal-image-container {display: none;}
  .phone-button {
    display: inline-block;
    gap: 8px;
    background-image: url('/images/graphics/phone-button.png');
    background-repeat: no-repeat;
    background-size: 58px 58px;
    padding-left: 24px;
    font-size: 16px;
    color: #333;
    width: 58px;
    height: 58px;
    vertical-align: middle;
    text-decoration: none;
  }
  .back-to-top {display:block;}
  #myTopnav {position:absolute; width:724px; top:-62px; margin-left:0px;}
  #myTopnav ul {background-color:var(--wh-color-highlight);}
  #myTopnav ul.nav {overflow-y: hidden; max-height: 0px; transition-property: all; transition-duration: .5s; transition-timing-function: cubic-bezier(0, 1, 0.5, 1);}
  #myTopnav ul.nav li ul li {display: block; padding: 3px 0px; margin: 4px 0px 4px 10px; line-height: 2rem;}
  #myTopnav ul.nav li ul li:last-child {margin-bottom: 30px; line-height: 2rem;}
  #myTopnav ul.navresp {max-height: 300px;}
  #myTopnav ul.nav-child li a {float: none; text-align: left; text-decoration: none;}
  button#navbtn, button#navbtn:hover {display:block; color:inherit; background-color:inherit; margin: 8px 0; padding: 0px 12px; z-index: 10;}
  button#navbtn svg {width:36px; height:36px;}
  .fullwidthbgndclr0 {background-color: #333333;}
  #fwcontnav {margin-bottom: 0px; position:relative;}
  div#contcontr {position:static; margin-top:0px;}
  #maincontent {padding-left:8px;}
  #contactdetails {float: none; margin: 0 0 15px 0; max-width: 100%;}
  #contactmap {float: none;}
  body.magical #topcenter::before {left:10px; top:-120px;}
  .two-thirds-container {grid-template-columns: 600px;}
  .two-column-container {grid-template-columns: auto;}
  .three-column-container {grid-template-columns: 600px;}

  .branch-buttons.highlight-box {padding: 10px 16px;}
  .hero-tagline {font-size: 2rem; line-height: 3rem; top:100px; left:10px;}
  .hero-sub {position:static; margin:10px 5px 10px 5px;}
  .hero-badges {grid-template-columns: 1fr;}
  .hero-badges li {font-size: var(--wh-text-base); padding-left: 40px;}
  .hero-badges li .badge-icon {margin-left: -40px;}
  .specialties-grid {grid-template-columns: repeat(3, 1fr);}
  .specialty-card {display:flex; flex-direction:column;}
  #why-choose {margin-top:20px;}
  .tiktok-sampler-container {grid-template-columns: 1fr 1fr 1fr;}
  ul.insurers {
    grid-template-columns: repeat(5, 1fr);
  }
  .social-row {margin-bottom:20px;}
}

@media (max-width: 767px) {
  body {padding: 0;}
  div.container {padding-left: 20px; padding-right: 20px;}
  #donatebadges {float: none;}
  #donatebadges img {margin-left: 0; margin-right: 20px;}
  h1 {margin-top:0px;}
  .nav {max-width: 100%;}
  figure, figure.pull-left, figure.pull-right {float: none; margin: 20px 10px;}
}

@media (max-width: 650px) {
  #contactdetails div.formControls input {width: 96% !important;}
  #contactdetails div.formControls textarea {width: 96% !important;}
  div.footleft {float: inherit; text-align: center;}
  div.footright {float: inherit; text-align: center; margin-top: 40px;}
  ul.insurers {grid-template-columns: repeat(4, 1fr);}
}

@media (max-width: 600px) {
  .youtube-container {max-width: 400px; margin: 20px auto;}
}

@media (max-width: 575px) {
  .whisper-logo-wrapper {width:240px;}
  .whisper-logo, .logo-tagline, .footer-logo-tagline {width:240px;}
  .logo-tagline {font-size: var(--wh-text-sm);}
  .footer-logo-wrapper .logo-tagline { padding-left:0px; }
  .logo-wrapper::after {font-size: 1.6rem; margin-left: 0.2em; top: 1.3em; left: var(--branch-left, 260px);}
  .hero-tagline {font-size: 1.6rem; line-height: 2.6rem; top:100px;}
}

@media (max-width: 500px) {
  div.container {padding-left: 0px; padding-right: 0px;}
  #contactdetails div.formControls input {width: 92% !important;}
  #contactdetails div.formControls textarea {width: 92% !important;}
  .image-download img {max-width: 400px;}
  body.ug.butterfly #topcenter::before {top: -70px;}
  .hero-tagline {font-size: var(--wh-text-lg); line-height: 2.4rem; top:100px; left:10px;}
  .specialties-grid {grid-template-columns: repeat(2, 1fr);}
  ul.insurers {grid-template-columns: repeat(3, 1fr);}
}

@media (max-width: 440px) {
  .hero-tagline {font-size: 1.3rem; line-height: 2.3rem;}
}

@media (max-width: 400px) {
  button.copy-button {padding:5px;}
  .copy-icon {margin:1px;}
  .whisper-logo-wrapper {width:220px;}
  .whisper-logo, .logo-tagline {width:220px;}
  .logo-tagline {font-size:0.95rem;}
  .logo-wrapper::after {font-size: 1.7rem; top: 1.2em; left: var(--branch-left, 230px);}
  .buttons.highlight-box {max-width:100%;}
  ul.insurers {grid-template-columns: repeat(2, 1fr);}
}

@media (max-width: 390px) {
  .hero-tagline {font-size: var(--wh-text-base); line-height: 2.2rem;}
  .wh-button-white, .wh-button-wide {max-width: 90%;}
}

@media (max-width: 380px) {
  .logo-wrapper::after {font-size: 1.6rem; top: 1em; left: var(--branch-left, 225px);}
}