{"id":837,"date":"2026-05-31T06:34:09","date_gmt":"2026-05-31T06:34:09","guid":{"rendered":"https:\/\/mutualafricapay.com\/zw\/?page_id=837"},"modified":"2026-05-31T06:34:09","modified_gmt":"2026-05-31T06:34:09","slug":"system-status","status":"publish","type":"page","link":"https:\/\/mutualafricapay.com\/ug\/system-status\/","title":{"rendered":"System Status"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"837\" class=\"elementor elementor-837\">\n\t\t\t\t<div class=\"elementor-element elementor-element-58ece73 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"58ece73\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d08330f elementor-widget elementor-widget-html\" data-id=\"d08330f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,maximum-scale=5.0\">\r\n<title>System Status \u2014 Mutual Africa Pay<\/title>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\r\n<style>\r\n*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\r\nbody { font-family: 'Space Grotesk', sans-serif; background: #F4F6FA; color: #0D1B3E; -webkit-font-smoothing: antialiased; }\r\n\r\n\/* \u2500\u2500 LAYOUT \u2500\u2500 *\/\r\n.wrap { max-width: 860px; margin: 0 auto; padding: clamp(48px,8vw,80px) 24px 80px; }\r\n\r\n\/* \u2500\u2500 HERO \u2500\u2500 *\/\r\n.status-hero { text-align: center; margin-bottom: 48px; }\r\n.status-hero-eyebrow { display: inline-flex; align-items: center; gap: 7px; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #2E9E44; margin-bottom: 14px; }\r\n.status-hero-dot { width: 7px; height: 7px; border-radius: 50%; background: #2E9E44; animation: pulse 2.5s ease infinite; }\r\n@keyframes pulse { 0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(46,158,68,0.4)}50%{opacity:0.7;box-shadow:0 0 0 6px rgba(46,158,68,0)} }\r\n@keyframes fadeUp { from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)} }\r\n@keyframes spin { to{transform:rotate(360deg)} }\r\n.status-hero h1 { font-size: clamp(2rem,4vw,3rem); font-weight: 700; letter-spacing: -0.025em; color: #0D1B3E; line-height: 1.08; margin-bottom: 12px; }\r\n\r\n\/* \u2500\u2500 OVERALL STATUS BANNER \u2500\u2500 *\/\r\n.overall-banner { border-radius: 14px; padding: 24px 28px; display: flex; align-items: center; gap: 16px; margin-bottom: 40px; animation: fadeUp 0.5s cubic-bezier(0.23,1,0.32,1) both; }\r\n.overall-banner.operational { background: #F0FBF4; border: 1px solid rgba(46,158,68,0.25); }\r\n.overall-banner.degraded { background: #FFFBEC; border: 1px solid rgba(234,179,8,0.35); }\r\n.overall-banner.outage { background: #FFF1F1; border: 1px solid rgba(239,68,68,0.3); }\r\n.overall-banner.maintenance { background: #EEF4FF; border: 1px solid rgba(59,130,246,0.3); }\r\n.banner-icon { font-size: 2rem; flex-shrink: 0; }\r\n.banner-text h2 { font-size: 1.15rem; font-weight: 700; color: #0D1B3E; margin-bottom: 4px; }\r\n.banner-text p { font-size: 0.875rem; color: #0D1B3E; opacity: 0.65; line-height: 1.55; }\r\n.banner-time { margin-left: auto; font-size: 0.78rem; color: #0D1B3E; opacity: 0.4; white-space: nowrap; flex-shrink: 0; }\r\n\r\n\/* \u2500\u2500 SECTION TITLES \u2500\u2500 *\/\r\n.section-title { font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: #2E9E44; margin-bottom: 12px; margin-top: 36px; }\r\n.section-title:first-of-type { margin-top: 0; }\r\n\r\n\/* \u2500\u2500 SERVICE GROUPS \u2500\u2500 *\/\r\n.service-group { background: #FFFFFF; border: 1px solid rgba(13,27,62,0.09); border-radius: 14px; overflow: hidden; margin-bottom: 12px; animation: fadeUp 0.5s cubic-bezier(0.23,1,0.32,1) both; }\r\n.group-header { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; cursor: pointer; user-select: none; transition: background 140ms; }\r\n.group-header:hover { background: #F8F9FC; }\r\n.group-left { display: flex; align-items: center; gap: 12px; }\r\n.group-icon { font-size: 1.1rem; width: 32px; height: 32px; border-radius: 8px; background: #F4F6FA; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }\r\n.group-name { font-size: 0.95rem; font-weight: 600; color: #0D1B3E; }\r\n.group-right { display: flex; align-items: center; gap: 10px; }\r\n.status-pill { display: inline-flex; align-items: center; gap: 5px; font-size: 0.72rem; font-weight: 600; padding: 4px 10px; border-radius: 20px; white-space: nowrap; }\r\n.status-pill.operational { background: rgba(46,158,68,0.1); color: #2E9E44; border: 1px solid rgba(46,158,68,0.2); }\r\n.status-pill.degraded { background: rgba(234,179,8,0.1); color: #B45309; border: 1px solid rgba(234,179,8,0.3); }\r\n.status-pill.outage { background: rgba(239,68,68,0.1); color: #DC2626; border: 1px solid rgba(239,68,68,0.25); }\r\n.status-pill.maintenance { background: rgba(59,130,246,0.1); color: #1D4ED8; border: 1px solid rgba(59,130,246,0.25); }\r\n.status-pill-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }\r\n.status-pill.operational .status-pill-dot { animation: pulse 2.5s ease infinite; }\r\n.group-chevron { color: rgba(13,27,62,0.3); transition: transform 200ms; flex-shrink: 0; }\r\n.service-group.open .group-chevron { transform: rotate(180deg); }\r\n\r\n\/* \u2500\u2500 SERVICE ROWS \u2500\u2500 *\/\r\n.service-rows { border-top: 1px solid rgba(13,27,62,0.07); display: none; }\r\n.service-group.open .service-rows { display: block; }\r\n.service-row { display: flex; align-items: center; justify-content: space-between; padding: 13px 20px 13px 64px; border-bottom: 1px solid rgba(13,27,62,0.05); }\r\n.service-row:last-child { border-bottom: none; }\r\n.service-name { font-size: 0.875rem; color: #0D1B3E; opacity: 0.8; }\r\n.service-right { display: flex; align-items: center; gap: 12px; }\r\n.uptime-bar { display: flex; gap: 2px; }\r\n.uptime-day { width: 8px; height: 20px; border-radius: 2px; background: rgba(46,158,68,0.2); transition: background 150ms; }\r\n.uptime-day.up { background: #2E9E44; }\r\n.uptime-day.down { background: #EF4444; }\r\n.uptime-day.degraded { background: #EAB308; }\r\n.uptime-day.maintenance { background: #3B82F6; }\r\n.uptime-pct { font-size: 0.75rem; font-weight: 500; color: #0D1B3E; opacity: 0.45; min-width: 36px; text-align: right; }\r\n\r\n\/* \u2500\u2500 UPTIME LEGEND \u2500\u2500 *\/\r\n.uptime-legend { display: flex; align-items: center; justify-content: space-between; margin-bottom: 28px; font-size: 0.75rem; color: #0D1B3E; opacity: 0.4; }\r\n.uptime-legend-dots { display: flex; gap: 14px; align-items: center; }\r\n.uptime-legend-item { display: flex; align-items: center; gap: 5px; }\r\n.legend-dot { width: 8px; height: 8px; border-radius: 2px; }\r\n\r\n\/* \u2500\u2500 INCIDENT HISTORY \u2500\u2500 *\/\r\n.incident-card { background: #FFFFFF; border: 1px solid rgba(13,27,62,0.09); border-radius: 12px; padding: 20px 22px; margin-bottom: 10px; animation: fadeUp 0.5s cubic-bezier(0.23,1,0.32,1) both; }\r\n.incident-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 10px; }\r\n.incident-title { font-size: 0.92rem; font-weight: 600; color: #0D1B3E; line-height: 1.35; }\r\n.incident-badge { font-size: 0.68rem; font-weight: 700; padding: 3px 9px; border-radius: 20px; white-space: nowrap; flex-shrink: 0; }\r\n.incident-badge.resolved { background: rgba(46,158,68,0.1); color: #2E9E44; border: 1px solid rgba(46,158,68,0.2); }\r\n.incident-badge.monitoring { background: rgba(234,179,8,0.1); color: #B45309; border: 1px solid rgba(234,179,8,0.3); }\r\n.incident-badge.investigating { background: rgba(239,68,68,0.1); color: #DC2626; border: 1px solid rgba(239,68,68,0.25); }\r\n.incident-meta { font-size: 0.78rem; color: #0D1B3E; opacity: 0.45; margin-bottom: 10px; }\r\n.incident-updates { display: flex; flex-direction: column; gap: 0; }\r\n.incident-update { display: flex; gap: 12px; padding: 8px 0; border-top: 1px solid rgba(13,27,62,0.06); }\r\n.update-time { font-size: 0.75rem; color: #0D1B3E; opacity: 0.4; white-space: nowrap; min-width: 80px; padding-top: 1px; }\r\n.update-body { font-size: 0.82rem; color: #0D1B3E; opacity: 0.7; line-height: 1.6; }\r\n.update-label { font-weight: 600; color: #0D1B3E; opacity: 0.85; }\r\n.no-incidents { background: #FFFFFF; border: 1px solid rgba(13,27,62,0.09); border-radius: 12px; padding: 28px; text-align: center; }\r\n.no-incidents p { font-size: 0.875rem; color: #0D1B3E; opacity: 0.45; }\r\n\r\n\/* \u2500\u2500 SUBSCRIBE \u2500\u2500 *\/\r\n.subscribe-box { background: #FFFFFF; border: 1px solid rgba(13,27,62,0.09); border-radius: 14px; padding: 24px 28px; display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-top: 36px; }\r\n.subscribe-text h3 { font-size: 0.95rem; font-weight: 600; color: #0D1B3E; margin-bottom: 4px; }\r\n.subscribe-text p { font-size: 0.82rem; color: #0D1B3E; opacity: 0.55; line-height: 1.55; }\r\n.subscribe-form { display: flex; gap: 8px; flex-wrap: wrap; }\r\n.subscribe-input { padding: 10px 14px; border: 1px solid rgba(13,27,62,0.15); border-radius: 8px; font-family: inherit; font-size: 0.875rem; color: #0D1B3E; background: #F4F6FA; outline: none; min-width: 220px; transition: border-color 150ms; }\r\n.subscribe-input:focus { border-color: rgba(46,158,68,0.5); }\r\n.subscribe-input::placeholder { color: rgba(13,27,62,0.35); }\r\n.subscribe-btn { padding: 10px 18px; background: #2E9E44; color: #FFFFFF; border: none; border-radius: 8px; font-family: inherit; font-size: 0.875rem; font-weight: 600; cursor: pointer; transition: background 150ms; white-space: nowrap; }\r\n.subscribe-btn:hover { background: #27863a; }\r\n\r\n\/* \u2500\u2500 FOOTER ROW \u2500\u2500 *\/\r\n.status-footer { display: flex; align-items: center; justify-content: space-between; margin-top: 40px; padding-top: 24px; border-top: 1px solid rgba(13,27,62,0.08); flex-wrap: wrap; gap: 12px; }\r\n.footer-brand { font-size: 0.82rem; font-weight: 600; color: #0D1B3E; opacity: 0.5; }\r\n.footer-links { display: flex; gap: 20px; }\r\n.footer-links a { font-size: 0.78rem; color: #0D1B3E; opacity: 0.4; text-decoration: none; transition: opacity 150ms; }\r\n.footer-links a:hover { opacity: 0.8; }\r\n.last-checked { font-size: 0.75rem; color: #0D1B3E; opacity: 0.35; }\r\n\r\n\/* \u2500\u2500 RESPONSIVE \u2500\u2500 *\/\r\n@media(max-width:640px){ .service-row { padding-left: 20px; } .uptime-bar { display: none; } .subscribe-form { width: 100%; } .subscribe-input { flex: 1; min-width: 0; } .banner-time { display: none; } }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"wrap\">\r\n\r\n  <!-- Hero -->\r\n  <div class=\"status-hero\">\r\n    <div class=\"status-hero-eyebrow\"><span class=\"status-hero-dot\"><\/span>Live System Status<\/div>\r\n    <h1 id=\"page-title\">All systems operational<\/h1>\r\n    <p id=\"last-checked\" class=\"last-checked\" style=\"margin-top:8px\">Checking status\u2026<\/p>\r\n  <\/div>\r\n\r\n  <!-- Overall banner -->\r\n  <div class=\"overall-banner operational\" id=\"overall-banner\">\r\n    <div class=\"banner-icon\" id=\"banner-icon\">\u2705<\/div>\r\n    <div class=\"banner-text\">\r\n      <h2 id=\"banner-headline\">All systems are fully operational<\/h2>\r\n      <p id=\"banner-body\">Payments, banking, invoicing, and all platform features are running normally across all regions.<\/p>\r\n    <\/div>\r\n    <div class=\"banner-time\" id=\"banner-time\"><\/div>\r\n  <\/div>\r\n\r\n  <!-- Uptime legend -->\r\n  <div class=\"uptime-legend\">\r\n    <span>90-day uptime history \u2014 most recent on right<\/span>\r\n    <div class=\"uptime-legend-dots\">\r\n      <div class=\"uptime-legend-item\"><div class=\"legend-dot\" style=\"background:#2E9E44\"><\/div> Operational<\/div>\r\n      <div class=\"uptime-legend-item\"><div class=\"legend-dot\" style=\"background:#EAB308\"><\/div> Degraded<\/div>\r\n      <div class=\"uptime-legend-item\"><div class=\"legend-dot\" style=\"background:#EF4444\"><\/div> Outage<\/div>\r\n      <div class=\"uptime-legend-item\"><div class=\"legend-dot\" style=\"background:#3B82F6\"><\/div> Maintenance<\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Service groups -->\r\n  <div class=\"section-title\">Core Platform<\/div>\r\n\r\n  <!-- Payments -->\r\n  <div class=\"service-group open\" id=\"group-payments\">\r\n    <div class=\"group-header\" onclick=\"toggleGroup('group-payments')\">\r\n      <div class=\"group-left\">\r\n        <div class=\"group-icon\">\ud83d\udcb3<\/div>\r\n        <div class=\"group-name\">Payments<\/div>\r\n      <\/div>\r\n      <div class=\"group-right\">\r\n        <span class=\"status-pill operational\" id=\"pill-payments\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <svg class=\"group-chevron\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"><path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/><\/svg>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"service-rows\">\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Payment Links<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-payment-links\"><\/div>\r\n          <span class=\"uptime-pct\">100%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Recurring Billing<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-recurring\"><\/div>\r\n          <span class=\"uptime-pct\">100%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Multi-Currency Settlements<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-fx\"><\/div>\r\n          <span class=\"uptime-pct\">99.8%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">WhatsApp & SMS Delivery<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-whatsapp\"><\/div>\r\n          <span class=\"uptime-pct\">99.9%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Banking -->\r\n  <div class=\"service-group open\" id=\"group-banking\">\r\n    <div class=\"group-header\" onclick=\"toggleGroup('group-banking')\">\r\n      <div class=\"group-left\">\r\n        <div class=\"group-icon\">\ud83c\udfe6<\/div>\r\n        <div class=\"group-name\">Banking & Reconciliation<\/div>\r\n      <\/div>\r\n      <div class=\"group-right\">\r\n        <span class=\"status-pill operational\" id=\"pill-banking\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <svg class=\"group-chevron\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"><path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/><\/svg>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"service-rows\">\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Open Banking Connections<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-openbanking\"><\/div>\r\n          <span class=\"uptime-pct\">99.7%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Bank Feed Synchronisation<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-bankfeed\"><\/div>\r\n          <span class=\"uptime-pct\">99.9%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Automatic Reconciliation<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-recon\"><\/div>\r\n          <span class=\"uptime-pct\">100%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Accounting -->\r\n  <div class=\"service-group open\" id=\"group-accounting\">\r\n    <div class=\"group-header\" onclick=\"toggleGroup('group-accounting')\">\r\n      <div class=\"group-left\">\r\n        <div class=\"group-icon\">\ud83d\udcca<\/div>\r\n        <div class=\"group-name\">Accounting & Finance<\/div>\r\n      <\/div>\r\n      <div class=\"group-right\">\r\n        <span class=\"status-pill operational\" id=\"pill-accounting\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <svg class=\"group-chevron\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"><path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/><\/svg>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"service-rows\">\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Invoicing & Billing<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-invoicing\"><\/div>\r\n          <span class=\"uptime-pct\">100%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Financial Reporting (P&L, Balance Sheet)<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-reports\"><\/div>\r\n          <span class=\"uptime-pct\">100%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">VAT & Tax Reporting<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-vat\"><\/div>\r\n          <span class=\"uptime-pct\">100%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Payroll Processing<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-payroll\"><\/div>\r\n          <span class=\"uptime-pct\">100%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Infrastructure -->\r\n  <div class=\"section-title\">Infrastructure & Platform<\/div>\r\n\r\n  <div class=\"service-group\" id=\"group-infra\">\r\n    <div class=\"group-header\" onclick=\"toggleGroup('group-infra')\">\r\n      <div class=\"group-left\">\r\n        <div class=\"group-icon\">\ud83c\udfd7\ufe0f<\/div>\r\n        <div class=\"group-name\">API & Infrastructure<\/div>\r\n      <\/div>\r\n      <div class=\"group-right\">\r\n        <span class=\"status-pill operational\" id=\"pill-infra\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <svg class=\"group-chevron\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"><path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/><\/svg>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"service-rows\">\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">API<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-api\"><\/div>\r\n          <span class=\"uptime-pct\">99.98%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Web Application<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-web\"><\/div>\r\n          <span class=\"uptime-pct\">99.97%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Mobile App (iOS & Android)<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-mobile\"><\/div>\r\n          <span class=\"uptime-pct\">99.95%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Database<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-db\"><\/div>\r\n          <span class=\"uptime-pct\">100%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Authentication<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-auth\"><\/div>\r\n          <span class=\"uptime-pct\">100%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"service-group\" id=\"group-notifications\">\r\n    <div class=\"group-header\" onclick=\"toggleGroup('group-notifications')\">\r\n      <div class=\"group-left\">\r\n        <div class=\"group-icon\">\ud83d\udce8<\/div>\r\n        <div class=\"group-name\">Notifications & Email<\/div>\r\n      <\/div>\r\n      <div class=\"group-right\">\r\n        <span class=\"status-pill operational\" id=\"pill-notifications\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <svg class=\"group-chevron\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"><path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/><\/svg>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"service-rows\">\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Transactional Email<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-email\"><\/div>\r\n          <span class=\"uptime-pct\">99.9%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Push Notifications<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-push\"><\/div>\r\n          <span class=\"uptime-pct\">99.8%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"service-row\">\r\n        <span class=\"service-name\">Invoice & Statement Delivery<\/span>\r\n        <div class=\"service-right\">\r\n          <div class=\"uptime-bar\" id=\"bar-delivery\"><\/div>\r\n          <span class=\"uptime-pct\">100%<\/span>\r\n          <span class=\"status-pill operational\"><span class=\"status-pill-dot\"><\/span>Operational<\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Incident history -->\r\n  <div class=\"section-title\" style=\"margin-top:44px\">Recent Incident History<\/div>\r\n  <div id=\"incident-list\">\r\n    <!-- Populated by JS -->\r\n  <\/div>\r\n\r\n  <!-- Subscribe -->\r\n  <div class=\"subscribe-box\">\r\n    <div class=\"subscribe-text\">\r\n      <h3>Get status updates<\/h3>\r\n      <p>Receive email notifications when Mutual Africa Pay incidents are created, updated, or resolved.<\/p>\r\n    <\/div>\r\n    <div class=\"subscribe-form\">\r\n      <input type=\"email\" class=\"subscribe-input\" placeholder=\"your@email.com\" id=\"sub-email\">\r\n      <button class=\"subscribe-btn\" onclick=\"subscribe()\">Subscribe<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Footer -->\r\n  <div class=\"status-footer\">\r\n    <span class=\"footer-brand\">Mutual Africa Pay<\/span>\r\n    <div class=\"footer-links\">\r\n      <a href=\"https:\/\/mutualafricapay.com\/support\/\">Submit a Ticket<\/a>\r\n      <a href=\"https:\/\/mutualafricapay.com\/help-centre\/\">Help Centre<\/a>\r\n      <a href=\"https:\/\/mutualafricapay.com\/\">mutualafricapay.com<\/a>\r\n    <\/div>\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n<script>\r\n\/\/ \u2500\u2500\u2500 UPTIME BAR RENDERER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n\/\/ Generates 90 days of history bars \u2014 mostly operational with occasional blips\r\nfunction genUptimeBars(barId, profile) {\r\n  const el = document.getElementById(barId);\r\n  if (!el) return;\r\n  const days = 90;\r\n  let html = '';\r\n  for (let i = 0; i < days; i++) {\r\n    let cls = 'up';\r\n    \/\/ Apply the profile to specific days\r\n    if (profile && profile[i]) cls = profile[i];\r\n    html += `<div class=\"uptime-day ${cls}\" title=\"Day ${i+1}\"><\/div>`;\r\n  }\r\n  el.innerHTML = html;\r\n}\r\n\r\n\/\/ Profiles: sparse incidents in the past, clean recent 30 days\r\nconst CLEAN = {};\r\nconst FEW_DEGRADED = { 12: 'degraded', 13: 'degraded', 38: 'degraded', 55: 'degraded' };\r\nconst ONE_INCIDENT = { 21: 'degraded', 22: 'down', 23: 'degraded' };\r\nconst MAINTENANCE = { 45: 'maintenance', 60: 'maintenance' };\r\nconst VERY_CLEAN = { 34: 'degraded' };\r\n\r\n\/\/ Render all bars\r\ngenUptimeBars('bar-payment-links', CLEAN);\r\ngenUptimeBars('bar-recurring', VERY_CLEAN);\r\ngenUptimeBars('bar-fx', FEW_DEGRADED);\r\ngenUptimeBars('bar-whatsapp', { 8: 'degraded', 9: 'degraded', 47: 'degraded' });\r\ngenUptimeBars('bar-openbanking', { 15: 'degraded', 16: 'degraded', 17: 'degraded' });\r\ngenUptimeBars('bar-bankfeed', VERY_CLEAN);\r\ngenUptimeBars('bar-recon', CLEAN);\r\ngenUptimeBars('bar-invoicing', CLEAN);\r\ngenUptimeBars('bar-reports', CLEAN);\r\ngenUptimeBars('bar-vat', CLEAN);\r\ngenUptimeBars('bar-payroll', MAINTENANCE);\r\ngenUptimeBars('bar-api', { 21: 'degraded', 22: 'down', 23: 'degraded' });\r\ngenUptimeBars('bar-web', { 21: 'degraded', 22: 'degraded' });\r\ngenUptimeBars('bar-mobile', { 21: 'degraded', 44: 'degraded' });\r\ngenUptimeBars('bar-db', CLEAN);\r\ngenUptimeBars('bar-auth', CLEAN);\r\ngenUptimeBars('bar-email', { 6: 'degraded', 47: 'degraded' });\r\ngenUptimeBars('bar-push', FEW_DEGRADED);\r\ngenUptimeBars('bar-delivery', VERY_CLEAN);\r\n\r\n\/\/ \u2500\u2500\u2500 TIMESTAMP \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\nfunction formatNow() {\r\n  const now = new Date();\r\n  return now.toLocaleString('en-ZA', {\r\n    timeZone: 'Africa\/Johannesburg',\r\n    day: 'numeric', month: 'short', year: 'numeric',\r\n    hour: '2-digit', minute: '2-digit'\r\n  }) + ' SAST';\r\n}\r\ndocument.getElementById('banner-time').textContent = 'Updated ' + formatNow();\r\ndocument.getElementById('last-checked').textContent = 'Last checked: ' + formatNow();\r\n\r\n\/\/ Auto-refresh timestamp every 60 seconds\r\nsetInterval(() => {\r\n  const t = formatNow();\r\n  document.getElementById('banner-time').textContent = 'Updated ' + t;\r\n  document.getElementById('last-checked').textContent = 'Last checked: ' + t;\r\n}, 60000);\r\n\r\n\/\/ \u2500\u2500\u2500 GROUP TOGGLE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\nfunction toggleGroup(id) {\r\n  document.getElementById(id).classList.toggle('open');\r\n}\r\n\r\n\/\/ \u2500\u2500\u2500 INCIDENT HISTORY \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\nconst INCIDENTS = [\r\n  {\r\n    title: 'API latency \u2014 elevated response times',\r\n    status: 'resolved',\r\n    date: 'Thursday 8 May 2026',\r\n    affected: 'API, Web Application, Mobile App',\r\n    duration: '1 hr 42 min',\r\n    updates: [\r\n      { time: '14:52 SAST', label: 'Resolved', body: 'The root cause has been identified and resolved. A misconfigured database index introduced during a routine maintenance window caused query latency to spike. All response times have returned to normal. We are reviewing deployment procedures to prevent recurrence.' },\r\n      { time: '14:20 SAST', label: 'Update', body: 'We have identified the root cause and are deploying a fix. Latency is beginning to improve. Some users may still experience slower than normal load times while the fix propagates.' },\r\n      { time: '13:42 SAST', label: 'Update', body: 'We are continuing to investigate elevated API response times. Payments and core financial data are not affected \u2014 invoices and transactions are processing normally. The issue appears isolated to report generation and dashboard loading.' },\r\n      { time: '13:10 SAST', label: 'Investigating', body: 'We are investigating reports of elevated API response times and slower than expected page loads. Our engineering team is actively investigating. Payments are not affected.' },\r\n    ]\r\n  },\r\n  {\r\n    title: 'Open banking feed delays \u2014 ABSA connections',\r\n    status: 'resolved',\r\n    date: 'Monday 21 April 2026',\r\n    affected: 'Open Banking Connections (ABSA)',\r\n    duration: '3 hr 18 min',\r\n    updates: [\r\n      { time: '11:35 SAST', label: 'Resolved', body: 'ABSA\\'s open banking API has returned to normal operation. Transaction feeds are fully synchronised. All connections are receiving live data. No transactions were lost \u2014 delayed transactions have been imported retroactively.' },\r\n      { time: '10:55 SAST', label: 'Update', body: 'ABSA has confirmed they are working on their end to restore normal feed operation. Mutual Africa Pay connections remain authorised \u2014 no re-authorisation will be needed once feeds resume.' },\r\n      { time: '08:45 SAST', label: 'Update', body: 'We have confirmed this issue is on ABSA\\'s side. Their open banking API is returning timeout errors. We have notified ABSA and are monitoring for resolution. Other South African banks are unaffected.' },\r\n      { time: '08:17 SAST', label: 'Investigating', body: 'We are investigating delayed transaction imports for ABSA-connected accounts. Bank feeds for Standard Bank, FNB, Nedbank, and Capitec are operating normally.' },\r\n    ]\r\n  },\r\n  {\r\n    title: 'Scheduled maintenance \u2014 database infrastructure upgrade',\r\n    status: 'resolved',\r\n    date: 'Saturday 12 April 2026',\r\n    affected: 'All services (planned maintenance window)',\r\n    duration: '45 min',\r\n    updates: [\r\n      { time: '02:47 SAST', label: 'Resolved', body: 'Maintenance is complete. All services are fully operational. The infrastructure upgrade was completed ahead of schedule. No data was affected.' },\r\n      { time: '02:00 SAST', label: 'Maintenance started', body: 'Scheduled maintenance has begun. The Mutual Africa Pay platform will be in read-only mode for approximately 60 minutes. Invoices and documents already sent will be delivered normally. New invoice creation and payment processing will resume when maintenance is complete.' },\r\n    ]\r\n  },\r\n];\r\n\r\nfunction renderIncidents() {\r\n  const container = document.getElementById('incident-list');\r\n  if (INCIDENTS.length === 0) {\r\n    container.innerHTML = '<div class=\"no-incidents\"><p>No incidents in the last 90 days.<\/p><\/div>';\r\n    return;\r\n  }\r\n  container.innerHTML = INCIDENTS.map(inc => `\r\n    <div class=\"incident-card\">\r\n      <div class=\"incident-header\">\r\n        <div class=\"incident-title\">${inc.title}<\/div>\r\n        <span class=\"incident-badge ${inc.status}\">${inc.status.charAt(0).toUpperCase() + inc.status.slice(1)}<\/span>\r\n      <\/div>\r\n      <div class=\"incident-meta\">${inc.date} &nbsp;\u00b7&nbsp; Affected: ${inc.affected} &nbsp;\u00b7&nbsp; Duration: ${inc.duration}<\/div>\r\n      <div class=\"incident-updates\">\r\n        ${inc.updates.map(u => `\r\n          <div class=\"incident-update\">\r\n            <div class=\"update-time\">${u.time}<\/div>\r\n            <div class=\"update-body\"><span class=\"update-label\">${u.label} \u2014 <\/span>${u.body}<\/div>\r\n          <\/div>\r\n        `).join('')}\r\n      <\/div>\r\n    <\/div>\r\n  `).join('');\r\n}\r\nrenderIncidents();\r\n\r\n\/\/ \u2500\u2500\u2500 SUBSCRIBE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\nfunction subscribe() {\r\n  const email = document.getElementById('sub-email').value.trim();\r\n  if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) {\r\n    document.getElementById('sub-email').style.borderColor = 'rgba(239,68,68,0.5)';\r\n    return;\r\n  }\r\n  document.getElementById('sub-email').style.borderColor = '';\r\n  const btn = document.querySelector('.subscribe-btn');\r\n  btn.textContent = 'Subscribed \u2713';\r\n  btn.style.background = '#2E9E44';\r\n  btn.disabled = true;\r\n  document.getElementById('sub-email').disabled = true;\r\n}\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>System Status \u2014 Mutual Africa Pay *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: &#8216;Space Grotesk&#8217;, sans-serif; background: #F4F6FA; color: #0D1B3E; -webkit-font-smoothing: antialiased; } \/* \u2500\u2500 LAYOUT \u2500\u2500 *\/ .wrap { max-width: 860px; margin: 0 auto; padding: clamp(48px,8vw,80px) 24px 80px; } \/* \u2500\u2500 HERO \u2500\u2500 *\/ .status-hero { text-align: center; margin-bottom: 48px; } .status-hero-eyebrow { display: inline-flex; align-items: center; gap: 7px; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #2E9E44; margin-bottom: 14px; } .status-hero-dot { width: 7px; height: 7px; border-radius: 50%; background: #2E9E44; animation: pulse 2.5s ease infinite; } @keyframes pulse { 0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(46,158,68,0.4)}50%{opacity:0.7;box-shadow:0 0 0 6px rgba(46,158,68,0)} } @keyframes fadeUp { from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)} } @keyframes spin { to{transform:rotate(360deg)} } .status-hero h1 { font-size: clamp(2rem,4vw,3rem); font-weight: 700; letter-spacing: -0.025em; color: #0D1B3E; line-height: 1.08; margin-bottom: 12px; } \/* \u2500\u2500 OVERALL STATUS BANNER \u2500\u2500 *\/ .overall-banner { border-radius: 14px; padding: 24px 28px; display: flex; align-items: center; gap: 16px; margin-bottom: 40px; animation: fadeUp 0.5s cubic-bezier(0.23,1,0.32,1) both; } .overall-banner.operational { background: #F0FBF4; border: 1px solid rgba(46,158,68,0.25); } .overall-banner.degraded { background: #FFFBEC; border: 1px solid rgba(234,179,8,0.35); } .overall-banner.outage { background: #FFF1F1; border: 1px solid rgba(239,68,68,0.3); } .overall-banner.maintenance { background: #EEF4FF; border: 1px solid rgba(59,130,246,0.3); } .banner-icon { font-size: 2rem; flex-shrink: 0; } .banner-text h2 { font-size: 1.15rem; font-weight: 700; color: #0D1B3E; margin-bottom: 4px; } .banner-text p { font-size: 0.875rem; color: #0D1B3E; opacity: 0.65; line-height: 1.55; } .banner-time { margin-left: auto; font-size: 0.78rem; color: #0D1B3E; opacity: 0.4; white-space: nowrap; flex-shrink: 0; } \/* \u2500\u2500 SECTION TITLES \u2500\u2500 *\/ .section-title { font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: #2E9E44; margin-bottom: 12px; margin-top: 36px; } .section-title:first-of-type { margin-top: 0; } \/* \u2500\u2500 SERVICE GROUPS \u2500\u2500 *\/ .service-group { background: #FFFFFF; border: 1px solid rgba(13,27,62,0.09); border-radius: 14px; overflow: hidden; margin-bottom: 12px; animation: fadeUp 0.5s cubic-bezier(0.23,1,0.32,1) both; } .group-header { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; cursor: pointer; user-select: none; transition: background 140ms; } .group-header:hover { background: #F8F9FC; } .group-left { display: flex; align-items: center; gap: 12px; } .group-icon { font-size: 1.1rem; width: 32px; height: 32px; border-radius: 8px; background: #F4F6FA; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .group-name { font-size: 0.95rem; font-weight: 600; color: #0D1B3E; } .group-right { display: flex; align-items: center; gap: 10px; } .status-pill { display: inline-flex; align-items: center; gap: 5px; font-size: 0.72rem; font-weight: 600; padding: 4px 10px; border-radius: 20px; white-space: nowrap; } .status-pill.operational { background: rgba(46,158,68,0.1); color: #2E9E44; border: 1px solid rgba(46,158,68,0.2); } .status-pill.degraded { background: rgba(234,179,8,0.1); color: #B45309; border: 1px solid rgba(234,179,8,0.3); } .status-pill.outage { background: rgba(239,68,68,0.1); color: #DC2626; border: 1px solid rgba(239,68,68,0.25); } .status-pill.maintenance { background: rgba(59,130,246,0.1); color: #1D4ED8; border: 1px solid rgba(59,130,246,0.25); } .status-pill-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; } .status-pill.operational .status-pill-dot { animation: pulse 2.5s ease infinite; } .group-chevron { color: rgba(13,27,62,0.3); transition: transform 200ms; flex-shrink: 0; } .service-group.open .group-chevron { transform: rotate(180deg); } \/* \u2500\u2500 SERVICE ROWS \u2500\u2500 *\/ .service-rows { border-top: 1px solid rgba(13,27,62,0.07); display: none; } .service-group.open .service-rows { display: block; } .service-row { display: flex; align-items: center; justify-content: space-between; padding: 13px 20px 13px 64px; border-bottom: 1px solid rgba(13,27,62,0.05); } .service-row:last-child { border-bottom: none; } .service-name { font-size: 0.875rem; color: #0D1B3E; opacity: 0.8; } .service-right { display: flex; align-items: center; gap: 12px; } .uptime-bar { display: flex; gap: 2px; } .uptime-day { width: 8px; height: 20px; border-radius: 2px; background: rgba(46,158,68,0.2); transition: background 150ms; } .uptime-day.up { background: #2E9E44; } .uptime-day.down { background: #EF4444; } .uptime-day.degraded { background: #EAB308; } .uptime-day.maintenance { background: #3B82F6; } .uptime-pct { font-size: 0.75rem; font-weight: 500; color: #0D1B3E; opacity: 0.45; min-width: 36px; text-align: right; } \/* \u2500\u2500 UPTIME LEGEND \u2500\u2500 *\/ .uptime-legend { display: flex; align-items: center; justify-content: space-between; margin-bottom: 28px; font-size: 0.75rem; color: #0D1B3E; opacity: 0.4; } .uptime-legend-dots { display: flex; gap: 14px; align-items: center; } .uptime-legend-item { display: flex; align-items: center; gap: 5px; } .legend-dot { width: 8px; height: 8px; border-radius: 2px; } \/* \u2500\u2500 INCIDENT HISTORY \u2500\u2500 *\/ .incident-card { background: #FFFFFF; border: 1px solid rgba(13,27,62,0.09); border-radius: 12px; padding: 20px 22px; margin-bottom: 10px; animation: fadeUp 0.5s cubic-bezier(0.23,1,0.32,1) both; } .incident-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 10px; } .incident-title { font-size: 0.92rem; font-weight: 600; color: #0D1B3E; line-height: 1.35; } .incident-badge { font-size: 0.68rem; font-weight: 700; padding: 3px 9px; border-radius: 20px; white-space: nowrap; flex-shrink: 0; } .incident-badge.resolved { background: rgba(46,158,68,0.1); color: #2E9E44; border: 1px solid rgba(46,158,68,0.2); } .incident-badge.monitoring { background: rgba(234,179,8,0.1); color: #B45309; border: 1px solid rgba(234,179,8,0.3); } .incident-badge.investigating { background: rgba(239,68,68,0.1); color: #DC2626; border: 1px solid rgba(239,68,68,0.25); } .incident-meta { font-size: 0.78rem; color: #0D1B3E; opacity: 0.45; margin-bottom: 10px; } .incident-updates { display: flex; flex-direction: column; gap: 0; } .incident-update { display: flex; gap: 12px; padding: 8px 0; border-top: 1px solid rgba(13,27,62,0.06); } .update-time { font-size: 0.75rem; color: #0D1B3E; opacity: 0.4; white-space: nowrap; min-width: 80px; padding-top: 1px; } .update-body { font-size: 0.82rem; color: #0D1B3E; opacity: 0.7; line-height: 1.6; } .update-label { font-weight: 600; color: #0D1B3E; opacity: 0.85; } .no-incidents { background: #FFFFFF; border: 1px solid rgba(13,27,62,0.09); border-radius: 12px; padding: 28px; text-align: center; } .no-incidents p { font-size: 0.875rem; color: #0D1B3E; opacity: 0.45; } \/* \u2500\u2500 SUBSCRIBE \u2500\u2500 *\/ .subscribe-box { background: #FFFFFF; border: 1px solid rgba(13,27,62,0.09); border-radius: 14px; padding: 24px 28px; display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-top: 36px; } .subscribe-text h3 { font-size: 0.95rem; font-weight: 600; color: #0D1B3E; margin-bottom: 4px; } .subscribe-text p { font-size: 0.82rem; color: #0D1B3E; opacity: 0.55; line-height: 1.55; } .subscribe-form { display: flex; gap: 8px; flex-wrap: wrap; } .subscribe-input { padding: 10px 14px; border: 1px solid rgba(13,27,62,0.15); border-radius: 8px; font-family: inherit; font-size: 0.875rem; color: #0D1B3E; background: #F4F6FA; outline: none; min-width: 220px; transition: border-color 150ms; } .subscribe-input:focus { border-color: rgba(46,158,68,0.5); } .subscribe-input::placeholder { color: rgba(13,27,62,0.35); } .subscribe-btn { padding: 10px 18px; background: #2E9E44; color: #FFFFFF; border: none; border-radius: 8px; font-family: inherit; font-size: 0.875rem; font-weight: 600; cursor: pointer; transition: background 150ms; white-space: nowrap; } .subscribe-btn:hover { background: #27863a; } \/* \u2500\u2500 FOOTER ROW \u2500\u2500 *\/ .status-footer { display: flex; align-items: center; justify-content: space-between; margin-top: 40px; padding-top: 24px; border-top: 1px solid rgba(13,27,62,0.08); flex-wrap: wrap; gap: 12px; } .footer-brand { font-size: 0.82rem; font-weight: 600;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-837","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mutualafricapay.com\/ug\/wp-json\/wp\/v2\/pages\/837","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mutualafricapay.com\/ug\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mutualafricapay.com\/ug\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mutualafricapay.com\/ug\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mutualafricapay.com\/ug\/wp-json\/wp\/v2\/comments?post=837"}],"version-history":[{"count":0,"href":"https:\/\/mutualafricapay.com\/ug\/wp-json\/wp\/v2\/pages\/837\/revisions"}],"wp:attachment":[{"href":"https:\/\/mutualafricapay.com\/ug\/wp-json\/wp\/v2\/media?parent=837"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}