@font-face{font-family:"Plus Jakarta Sans";font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/plus-jakarta-sans-latin-400-normal.woff2") format("woff2");}
@font-face{font-family:"Plus Jakarta Sans";font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/plus-jakarta-sans-latin-500-normal.woff2") format("woff2");}
@font-face{font-family:"Plus Jakarta Sans";font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/plus-jakarta-sans-latin-600-normal.woff2") format("woff2");}
@font-face{font-family:"Plus Jakarta Sans";font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/plus-jakarta-sans-latin-700-normal.woff2") format("woff2");}
:root{--bg:#0a0a0d;--bg-elevated:#111114;--bg-card:#111114;--border:rgba(255,255,255,.10);--border-strong:rgba(255,255,255,.16);--text:#fff;--text-muted:#9aa0ab;--text-dim:#808792;--accent:#39ff9a;--blue:#55b9ff;--orange:#ffad57;--error:#ff6262;--warning:#ffd05c;--max-width:1160px;--radius:14px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-family:"Plus Jakarta Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;font-size:16px;line-height:1.7}body:before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at 10% 0%,rgba(57,255,154,.045),transparent 30%),radial-gradient(circle at 90% 15%,rgba(85,185,255,.04),transparent 30%);z-index:-1}body.menu-open{overflow:hidden}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:none}img{max-width:100%;display:block}.container{max-width:var(--max-width);margin:auto;padding:0 28px}.narrow{max-width:820px}.section{padding:92px 0}.compact-section{padding:70px 0}.hero-section{padding:90px 0 80px}.section-heading{max-width:780px;margin:0 0 42px}.section-heading.center,.center{text-align:center;margin-left:auto;margin-right:auto}.section-lead,.hero-subtitle{color:var(--text-muted);max-width:720px;font-size:1.03rem;line-height:1.8}.label{display:inline-flex;align-items:center;gap:7px;color:var(--accent);background:rgba(57,255,154,.09);border:1px solid rgba(57,255,154,.18);border-radius:999px;padding:5px 11px;font-size:.72rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;margin-bottom:16px}.label:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 10px currentColor}h1,h2,h3{color:#fff;font-family:"Plus Jakarta Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.08;letter-spacing:-.035em;margin:0;font-weight:700}h1{font-size:clamp(2.7rem,6vw,5.6rem)}h2{font-size:clamp(1.7rem,3vw,2.5rem)}h3{font-size:1.15rem}p{margin:0 0 1rem}.page-title{font-size:clamp(2.6rem,6vw,5.3rem)}.hero-title{font-size:clamp(2.8rem,6vw,5.8rem);max-width:900px}.hero-grid,.about-hero{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}.btn-group{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}.center-buttons{justify-content:center}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 21px;border-radius:999px;border:1px solid transparent;font:700 .86rem/1 "Plus Jakarta Sans",sans-serif;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.btn:hover{transform:translateY(-2px)}.btn-primary{background:var(--accent);color:#06140d;box-shadow:0 0 28px rgba(57,255,154,.20)}.btn-primary:hover{box-shadow:0 0 38px rgba(57,255,154,.32)}.btn-secondary{background:transparent;border-color:var(--border-strong);color:#fff}.btn-secondary:hover{border-color:rgba(255,255,255,.28)}nav{position:sticky;top:0;z-index:100;background:rgba(10,10,13,.82);backdrop-filter:blur(18px);border-bottom:1px solid var(--border)}.nav-inner{max-width:var(--max-width);margin:auto;padding:17px 28px;display:flex;align-items:center;justify-content:space-between}.nav-brand{display:inline-flex;align-items:center;gap:10px;color:#aeb4bd;font:700 1rem/1 "Plus Jakarta Sans",sans-serif;letter-spacing:-.02em}.nav-brand:hover{text-decoration:none}.nav-actions{display:flex;align-items:center;gap:12px}.nav-links>a,.nav-cta{display:none}.menu-toggle{width:44px;height:40px;border:1px solid var(--border-strong);border-radius:999px;background:rgba(255,255,255,.025);color:#fff;display:grid;place-items:center;cursor:pointer;font-size:0}.menu-toggle:after{content:"☰";font-size:18px}.menu-toggle:hover{border-color:var(--accent);color:var(--accent)}.site-menu{position:fixed;inset:0;z-index:99999;background:#050609;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease,visibility .2s ease}.site-menu.open{opacity:1;visibility:visible;pointer-events:auto}.site-menu-inner{position:absolute;inset:0;max-width:900px;margin:auto;padding:30px 34px;display:flex;flex-direction:column}.menu-head{display:flex;align-items:center;justify-content:space-between}.menu-head .label{margin:0}.menu-close{width:44px;height:44px;border:1px solid var(--border);border-radius:50%;background:transparent;color:#fff;font-size:30px;cursor:pointer}.menu-close:hover{color:var(--accent);border-color:var(--accent)}.menu-grid{display:flex;flex-direction:column;justify-content:center;align-items:center;flex:1;gap:8px;text-align:center}.menu-column{width:100%}.menu-label{color:var(--text-dim);font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;margin-top:18px}.menu-column>a{display:block;padding:7px 0;color:#fff;font:600 clamp(1.5rem,4vw,2.4rem)/1.1 "Plus Jakarta Sans",sans-serif;letter-spacing:-.035em}.menu-column>a span{display:block;color:var(--text-muted);font:400 .8rem/1.5 "Plus Jakarta Sans",sans-serif;margin-top:5px}.menu-column>a:hover{color:var(--accent)}.menu-footer{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding-top:20px;border-top:1px solid var(--border)}.menu-footer .btn{width:100%}.social-icons{display:flex;justify-content:center;gap:10px}.social-icons a{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:#fff;color:#050609;font-weight:800;font-size:.78rem}.grid,.principles-grid,.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.card,.principle,.privacy-card,.contact-choice{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:26px}.card p,.principle p{color:var(--text-muted)}.principles-grid{grid-template-columns:repeat(4,1fr);border:0}.principle{min-height:190px}.principle>span{color:var(--accent);font-size:.72rem;font-weight:700}.principle h3{margin:24px 0 9px}.card-accent-green{border-top:2px solid var(--accent);border-left:0}.card-accent-orange{border-top:2px solid var(--orange);border-left:0}.card-accent-blue{border-top:2px solid var(--blue);border-left:0}.stats{grid-template-columns:repeat(4,1fr)}.stat-value{display:block;color:var(--accent);font-size:1.8rem;font-weight:800}.stat-label{color:var(--text-muted);font-size:.8rem}.compact-band{background:var(--bg-elevated);border-block:1px solid var(--border)}.terminal{background:#0c0c10;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.terminal-header{display:flex;align-items:center;gap:8px;padding:11px 14px;border-bottom:1px solid var(--border);color:var(--text-dim);font-size:.75rem}.terminal-dot{width:8px;height:8px;border-radius:50%;background:var(--text-dim)}.terminal-body{padding:18px;font:400 .8rem/1.8 ui-monospace,SFMono-Regular,monospace;overflow:auto}.prompt{color:var(--accent)}.command{color:#fff}.output{color:var(--text-muted)}.highlight{color:var(--blue)}.path-diagram{display:flex;gap:8px;flex-wrap:wrap;align-items:center;justify-content:center}.path-diagram span{padding:7px 12px;border:1px solid var(--border);background:var(--bg-card);border-radius:999px;color:var(--text-muted);font-size:.75rem}.path-diagram b{color:var(--accent)}.feature-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:28px}.clean-list{list-style:none;padding:0;margin:0}.clean-list li{padding:10px 0;border-bottom:1px solid var(--border);color:var(--text-muted)}.clean-list li:before{content:"✓ ";color:var(--accent)}.contact-choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;max-width:900px;margin:auto}.choice-meta{color:var(--text-dim);font-size:.78rem;margin-top:18px}.form-input,select,textarea,input{width:100%;background:#0c0c10;color:#fff;border:1px solid var(--border);border-radius:12px;padding:14px 15px;font:400 .95rem/1.4 "Plus Jakarta Sans",sans-serif}.form-input:focus,select:focus,textarea:focus,input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(57,255,154,.08)}textarea{min-height:140px;resize:vertical}.about-signal{border:1px solid var(--border);border-radius:16px;background:linear-gradient(145deg,#11151c,#0b0c10);padding:24px;min-height:320px}.signal-top{display:flex;justify-content:space-between;color:var(--text-dim);font-size:.65rem;letter-spacing:.08em}.signal-grid{display:grid;grid-template-columns:1fr 1fr;margin-top:42px;border:1px solid var(--border)}.signal-grid div{min-height:86px;padding:14px;border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.signal-grid strong,.signal-grid span{display:block}.signal-grid span{color:var(--text-dim);font-size:.68rem;margin-top:5px}.signal-line{height:45px;margin-top:22px;display:flex;align-items:end;gap:5px}.signal-line i{display:block;width:8px;background:var(--accent);opacity:.6}.signal-status{margin-top:15px;color:var(--accent);font-size:.68rem}.about-metrics{display:grid;grid-template-columns:repeat(4,1fr)}.about-metrics div{padding:10px 22px;border-left:1px solid var(--border)}.about-metrics div:first-child{border-left:0}.about-metrics strong{display:block;color:var(--accent);font-size:1.35rem}.about-metrics span{display:block;color:var(--text-muted);font-size:.75rem}.editorial-grid{display:grid;grid-template-columns:70px 1fr;gap:0 24px;max-width:900px}.editorial-number{color:var(--accent);font-size:.75rem;border-top:1px solid var(--border);padding-top:18px}.editorial-grid>div:nth-child(2n){border-top:1px solid var(--border);padding:18px 0 28px}.editorial-grid p{color:var(--text-muted);max-width:680px}.process-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.tag{display:inline-block;border:1px solid var(--border);border-radius:999px;padding:4px 10px;color:var(--text-muted);font-size:.7rem}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px;border-bottom:1px solid var(--border)}th{color:var(--blue)}td{color:var(--text-muted)}.privacy-card{padding:28px}.hero-highlight,.contact-gradient{background:linear-gradient(135deg,#07142b 0%,#10345c 55%,#2b86c9 100%);color:#fff}.hero-highlight .hero-subtitle,.contact-gradient .section-lead{color:rgba(255,255,255,.78)}.contact-gradient .label{background:rgba(57,255,154,.12)}.contact-gradient .form-input,.contact-gradient select,.contact-gradient textarea{background:#0d0f14;border-color:rgba(255,255,255,.14)}.trust-row{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.trust-card{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:20px}.trust-card h3{margin-bottom:10px}.trust-trustpilot{background:linear-gradient(145deg,rgba(57,255,154,.055),var(--bg-card))}.trust-sourceforge{background:linear-gradient(145deg,rgba(255,173,87,.055),var(--bg-card))}.trust-addon{background:linear-gradient(145deg,rgba(85,185,255,.055),var(--bg-card))}.trust-stars{color:var(--orange);letter-spacing:2px}.testimonial{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:32px;margin-bottom:18px}.testimonial blockquote{font:600 clamp(1.2rem,2.2vw,1.8rem)/1.4 "Plus Jakarta Sans",sans-serif;margin:0 0 22px}.testimonial-meta{display:flex;justify-content:flex-end;align-items:center;gap:12px;color:var(--text-muted);font-size:.8rem}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:rgba(57,255,154,.1);color:var(--accent)}.faq{display:grid;gap:10px}.faq-item{border:1px solid var(--border);border-radius:14px;background:var(--bg-card);overflow:hidden}.faq-question{width:100%;display:flex;justify-content:space-between;gap:20px;background:transparent;border:0;color:#fff;text-align:left;padding:20px;font:650 1rem/1.4 "Plus Jakarta Sans",sans-serif;cursor:pointer}.faq-question .plus{font-size:1.4rem;color:var(--accent);transition:transform .2s}.faq-answer{max-height:0;overflow:hidden;padding:0 20px;color:var(--text-muted);transition:max-height .25s ease,padding .25s ease}.faq-item.open .faq-answer{max-height:300px;padding:0 20px 20px}.faq-item.open .plus{transform:rotate(45deg)}footer{border-top:0;background:linear-gradient(135deg,#07142b 0%,#10345c 55%,#2b86c9 100%);color:#fff}.footer-inner{max-width:var(--max-width);margin:auto;padding:65px 28px 26px;display:grid;grid-template-columns:1.2fr 1fr;gap:45px}.footer-links{display:grid;grid-template-columns:1fr 1fr;gap:10px 35px}.footer-links a{color:rgba(255,255,255,.78)}.footer-links a:hover{color:#fff}.footer-links span{grid-column:1/-1;color:#fff;font-weight:800;margin-top:12px}.footer-inner:after{content:"Follow Us  ·  support@africalatency.dev";grid-column:1/-1;border-top:1px solid rgba(255,255,255,.18);padding-top:22px;color:#fff}.login-page{min-height:100vh;display:grid;place-items:center;padding:30px}.login-card{width:min(460px,100%);background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:34px}.login-card h1{font-size:2.1rem;margin-bottom:8px}.required{color:var(--error)}.password-wrap{position:relative}.password-toggle{position:absolute;right:10px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--text-muted);cursor:pointer}.login-links{display:flex;justify-content:space-between;gap:12px;margin-top:15px;font-size:.8rem}.login-card .btn{width:100%;margin-top:22px}.login-logo{display:flex;align-items:center;gap:10px;color:#aeb4bd;font:700 1rem/1 "Plus Jakarta Sans",sans-serif;margin-bottom:35px}.login-logo:before{content:"";width:20px;height:20px;border:2px solid var(--accent);border-radius:6px;transform:rotate(45deg)}@media(max-width:900px){.hero-grid,.about-hero,.feature-grid,.contact-choice-grid{grid-template-columns:1fr}.grid,.trust-row,.principles-grid,.process-grid{grid-template-columns:1fr 1fr}.stats{grid-template-columns:1fr 1fr}.footer-inner{grid-template-columns:1fr}.about-metrics{grid-template-columns:1fr 1fr}.site-menu-inner{padding:24px}.menu-grid{justify-content:center;padding-top:0}.menu-column>a{font-size:1.8rem}}@media(max-width:640px){.container{padding:0 18px}.section{padding:66px 0}.hero-section{padding:62px 0}.hero-title,.page-title{font-size:2.55rem}.btn-group{flex-direction:column;align-items:stretch}.btn{width:100%}.grid,.trust-row,.principles-grid,.process-grid,.stats{grid-template-columns:1fr}.about-metrics{grid-template-columns:1fr 1fr}.about-metrics div{padding:10px 14px}.about-metrics div:nth-child(odd){border-left:0}.footer-inner{padding:55px 18px 22px}.footer-links{grid-template-columns:1fr}.footer-links span{grid-column:auto}.menu-footer{grid-template-columns:1fr}.menu-column>a{font-size:1.65rem}.editorial-grid{grid-template-columns:42px 1fr}}
/* login page — added 2026-09-07 */
.login-page-offset{align-items:start;padding-top:18vh;padding-bottom:5vh}.login-card h1{font-size:2.1rem;margin-bottom:8px}.login-field{margin-bottom:17px}.login-field label{display:block;color:var(--text-muted);font-size:.8rem;font-weight:600;margin:0 0 7px}.password-toggle{width:38px;height:38px;border-radius:8px;display:grid;place-items:center}.password-toggle:hover{color:var(--accent);background:rgba(57,255,154,.06)}.login-links a{color:var(--accent)}.login-links span{color:var(--text-muted)}@media(max-width:640px){.login-page-offset{padding-top:12vh;padding-bottom:4vh}.login-card{padding:28px 22px}.login-links{flex-direction:column;align-items:flex-start}.login-card .btn{width:100%}}


/* Site-wide section typography and eyebrow standard. */
.section-heading > .label,
.section-heading > .eyebrow,
.section-heading .section-eyebrow,
.regional-panel-kicker,
.section-eyebrow,
.section-kicker,
.section-label,
.eyebrow {
  display: block;
  margin: 0 0 0.85rem;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  color: #38A1E0;
  font-size: 0.75rem !important;
  font-weight: 600 !important;
  line-height: 1.4;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
}
.section-heading h2,
.section-heading .section-title,
.regional-insight-panel > h2,
.cta-section h2,
main > section > .container > h2 {
  margin-bottom: 1rem !important;
  color: #FFFFFF !important;
  font-size: clamp(1.875rem, 3.2vw, 2.25rem) !important;
  font-weight: 700 !important;
  letter-spacing: -0.025em !important;
  line-height: 1.15 !important;
}
.section-heading > p,
.section-heading .section-lead,
main > section .section-lead {
  max-width: 42rem;
  color: #A0AEC0 !important;
  font-size: 1rem !important;
  line-height: 1.625 !important;
}


/* PR 3 typography accessibility guardrails: scalable leading, readable metadata and restrained tracking. */
:root {
  --text-dim: #808792;
}
body {
  line-height: 1.65;
}
body p,
body li,
body label,
body blockquote,
body dd,
body dt {
  line-height: 1.65 !important;
  letter-spacing: normal !important;
}
body h1,
body .hero-title {
  line-height: 1.2 !important;
  letter-spacing: -0.02em !important;
}
body h2 {
  line-height: 1.25 !important;
  letter-spacing: normal !important;
}
body h3,
body h4 {
  line-height: 1.3 !important;
  letter-spacing: normal !important;
}
body *:not(h1):not(h1 *):not(.hero-title):not(.hero-title *) {
  letter-spacing: normal !important;
}
body small,
body [class*="kicker"],
body [class*="eyebrow"],
body [class*="footnote"],
body [class*="caption"],
body [class*="meta"],
body [class*="badge"],
body [class*="status"],
body [class*="label"],
body [class*="note"],
body [class*="tag"],
body [class*="disclaimer"],
body [class*="before-after"] span,
body [class*="before-after"] small {
  font-size: max(12px, 0.9em) !important;
  line-height: 1.4 !important;
}

/* PR 3 follow-up: keep the guardrails valid without shrinking ordinary body copy. */
html body { line-height: 1.65 !important; }
html body p,
html body li,
html body label,
html body blockquote,
html body dd,
html body dt { line-height: 1.65 !important; }
html body h1,
html body h2,
html body h3,
html body h4 { line-height: 1.2 !important; }
html body *:not(h1):not(h1 *):not(.hero-title):not(.hero-title *) { letter-spacing: normal !important; }
html body small,
html body [class*="kicker"],
html body [class*="eyebrow"],
html body [class*="footnote"],
html body [class*="caption"],
html body [class*="meta"],
html body [class*="badge"],
html body [class*="status"],
html body [class*="label"],
html body [class*="note"],
html body [class*="tag"],
html body [class*="disclaimer"],
html body [class*="before-after"] span,
html body [class*="before-after"] small { font-size: max(12px, 0.8rem) !important; line-height: 1.4 !important; }


/* Higher-specificity override for page-specific heading rules. */
html body main > section h1:not(.guardrail-exempt),
html body main > section h2:not(.guardrail-exempt),
html body main > section h3:not(.guardrail-exempt),
html body main > section h4:not(.guardrail-exempt) { line-height: 1.2 !important; }


/* Inline links in prose remain distinguishable without relying on colour alone. */
html body main p a:not(.btn):not(.btn-primary):not(.plan-cta):not(.plan-select):not(.al-primary-cta):not(.al-panel-link):not(.visibility-report-cta):not(.get-started-primary),
html body main li a:not(.btn):not(.btn-primary):not(.plan-cta):not(.plan-select):not(.al-primary-cta):not(.al-panel-link):not(.visibility-report-cta):not(.get-started-primary),
html body main dd a:not(.btn):not(.btn-primary):not(.plan-cta):not(.plan-select):not(.al-primary-cta):not(.al-panel-link):not(.visibility-report-cta):not(.get-started-primary),
html body main dt a:not(.btn):not(.btn-primary):not(.plan-cta):not(.plan-select):not(.al-primary-cta):not(.al-panel-link):not(.visibility-report-cta):not(.get-started-primary) {
  text-decoration: underline !important;
  text-underline-offset: 0.15em;
  text-decoration-thickness: 1px;
}
html body aside#al-cookie-banner p a {
  text-decoration: underline !important;
  text-underline-offset: 0.15em;
  text-decoration-thickness: 1px;
}

/* Prevent the optional-services grid from extending beyond narrow 320px viewports. */
@media (max-width: 360px) {
  main .principles-grid {
    width: 100%;
    max-width: calc(100vw - 36px);
    min-width: 0;
    grid-template-columns: minmax(0, 1fr);
  }
  main .principles-grid > .principle {
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }
  main .principles-grid > .principle h3,
  main .principles-grid > .principle p,
  main .principles-grid > .principle .status-label {
    min-width: 0;
    overflow-wrap: anywhere;
  }
}

/* Keep optional-service cards inside their grid tracks at every viewport width. */
main .principles-grid {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: hidden;
}
main .principles-grid > .principle {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-wrap: anywhere;
}
main .principles-grid > .principle h3,
main .principles-grid > .principle p,
main .principles-grid > .principle .status-label {
  min-width: 0;
  max-width: 100%;
  overflow-wrap: anywhere;
}
