/*
Theme Name: VoiceGrid
Theme URI: https://voicegrid.co.zw
Author: VoiceGrid Technology
Author URI: https://voicegrid.co.zw
Description: A one-page business theme for VoiceGrid Technology, built around Yeastar PBX and UCaaS solutions. Editable services and FAQ post types, a Customizer panel for hero copy/contact/stats, scroll-reveal animation, an interactive auto-cycling call-routing diagram, a team-size calculator, floating WhatsApp/back-to-top buttons, and built-in SEO meta + LocalBusiness schema.
Version: 1.2.0
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: voicegrid
*/

:root{
  --ink:#101B2A;
  --ink-soft:#233246;
  --paper:#F1F3F0;
  --panel:#FBFCFA;
  --line:#D3DAD4;
  --line-strong:#AAB6AD;
  --signal:#12897B;
  --signal-dark:#0D6B60;
  --pulse:#E8A63D;
  --muted:#57666B;
  --muted-on-ink:#A9B7C4;
  --radius:10px;
  --max:1180px;
  --shadow-sm:0 1px 2px rgba(16,27,42,0.05);
  --shadow-md:0 16px 32px -18px rgba(16,27,42,0.30);
  --shadow-lg:0 28px 56px -24px rgba(16,27,42,0.34);
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important;}
}

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'Inter',system-ui,-apple-system,sans-serif;
  font-size:16px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}

h1,h2,h3,h4{
  font-family:'Space Grotesk',system-ui,sans-serif;
  font-weight:600;
  line-height:1.15;
  margin:0;
  letter-spacing:-0.01em;
}

p{margin:0;}
a{color:inherit;text-decoration:none;}
ul{margin:0;padding:0;list-style:none;}
img,svg{display:block;max-width:100%;}
button{font-family:inherit;}

:focus-visible{outline:2px solid var(--signal);outline-offset:2px;}

.wrap{max-width:var(--max);margin:0 auto;padding:0 28px;}
@media (max-width:640px){.wrap{padding:0 20px;}}

section{position:relative;}

/* ---------- reveal-on-scroll ---------- */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s cubic-bezier(.2,.7,.3,1), transform .6s cubic-bezier(.2,.7,.3,1);}
.reveal.in-view{opacity:1;transform:translateY(0);}
@media (prefers-reduced-motion: reduce){.reveal{opacity:1;transform:none;transition:none;}}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:13px 24px;
  font-size:15px;
  font-weight:600;
  border-radius:var(--radius);
  border:1px solid transparent;
  cursor:pointer;
  transition:background 0.15s ease, border-color 0.15s ease, color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}
.btn-primary{background:var(--signal);color:#fff;}
.btn-primary:hover{background:var(--signal-dark);color:#fff;transform:translateY(-2px);box-shadow:0 14px 28px -14px rgba(18,137,123,0.5);}
.btn-ghost{border-color:var(--line-strong);color:var(--ink);background:transparent;}
.btn-ghost:hover{border-color:var(--ink);transform:translateY(-2px);}
.btn-ghost-invert{border-color:rgba(255,255,255,0.35);color:#fff;background:transparent;}
.btn-ghost-invert:hover{border-color:#fff;transform:translateY(-2px);}

/* ---------- header ---------- */
header.site-header{
  position:sticky;top:0;z-index:50;
  background:rgba(241,243,240,0.9);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
  transition:box-shadow .25s ease, background .25s ease;
}
header.site-header.is-scrolled{
  background:rgba(241,243,240,0.98);
  box-shadow:0 12px 28px -20px rgba(16,27,42,0.45);
}
.nav-row{display:flex;align-items:center;justify-content:space-between;height:72px;}
.logo{display:flex;align-items:center;gap:10px;font-family:'Space Grotesk';font-weight:700;font-size:19px;}
.logo img{max-height:40px;width:auto;}
.logo-mark{width:22px;height:22px;flex-shrink:0;}
nav.primary-nav{display:flex;align-items:center;gap:32px;}
nav.primary-nav ul{display:flex;align-items:center;gap:32px;}
nav.primary-nav a{font-size:14.5px;font-weight:500;color:var(--ink-soft);padding:6px 0;border-bottom:1px solid transparent;transition:color .2s ease, border-color .2s ease;}
nav.primary-nav a:hover{border-bottom-color:var(--signal);color:var(--ink);}
nav.primary-nav a.active{color:var(--ink);border-bottom-color:var(--signal);}
.nav-cta{display:flex;align-items:center;gap:18px;}
.nav-links-desktop{display:flex;align-items:center;gap:32px;}
.mobile-toggle{display:none;background:none;border:none;padding:8px;cursor:pointer;}
.mobile-toggle span{display:block;width:22px;height:2px;background:var(--ink);margin:4px 0;transition:transform .2s ease, opacity .2s ease;}

@media (max-width:860px){
  .nav-links-desktop{
    position:absolute;top:72px;left:0;right:0;
    background:var(--paper);
    border-bottom:1px solid var(--line);
    flex-direction:column;align-items:flex-start;gap:0;
    padding:8px 0;
    display:none;
  }
  .nav-links-desktop.open{display:flex;}
  .nav-links-desktop nav.primary-nav{flex-direction:column;align-items:flex-start;width:100%;gap:0;}
  .nav-links-desktop nav.primary-nav ul{flex-direction:column;align-items:flex-start;width:100%;gap:0;}
  .nav-links-desktop a{width:100%;padding:14px 28px;border-bottom:1px solid var(--line);}
  .mobile-toggle{display:block;}
  .nav-cta .btn-primary{display:none;}
}

/* ---------- hero ---------- */
.hero{
  padding:76px 0 64px;
  background-image:radial-gradient(circle, var(--line) 1px, transparent 1px);
  background-size:28px 28px;
  background-position:-6px -6px;
}
.hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;}
@media (max-width:920px){.hero-grid{grid-template-columns:1fr;gap:44px;}}

.hero h1{font-size:clamp(34px,4.4vw,50px);max-width:11.5ch;animation:heroFade .7s ease both;}
.hero .lede{margin-top:20px;font-size:18px;color:var(--muted);max-width:46ch;animation:heroFade .7s .1s ease both;}
.hero .actions{margin-top:32px;display:flex;flex-wrap:wrap;gap:14px;animation:heroFade .7s .2s ease both;}
.hero .microcopy{margin-top:22px;font-size:13.5px;color:var(--muted);animation:heroFade .7s .3s ease both;}
@keyframes heroFade{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:translateY(0);}}
@media (prefers-reduced-motion: reduce){
  .hero h1,.hero .lede,.hero .actions,.hero .microcopy{animation:none;}
}

.diagram-panel{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:calc(var(--radius) + 6px);
  box-shadow:var(--shadow-lg);
  padding:22px 18px 14px;
}
.diagram-panel .cap{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px;gap:12px;}
.diagram-panel .cap span:first-child{font-size:13px;font-weight:600;color:var(--ink-soft);}
.diagram-panel .cap span:last-child{font-size:12px;color:var(--signal);font-weight:600;text-align:right;transition:opacity .15s ease;}

.route-node{cursor:pointer;}
.route-node circle.hit{fill:transparent;}
.route-node circle.node-dot{transition:stroke .3s ease, stroke-width .3s ease;}
.route-node text{transition:fill .3s ease, font-weight .1s ease;}
.route-node:not(.active) text{fill:#57666B;font-weight:400;}
.route-node.active text{fill:#101B2A;font-weight:700;}
.route-node:hover circle.node-dot{stroke:#12897B;}
.route-node:focus-visible circle.node-dot{stroke:#12897B;outline:none;}

.route-line{transition:stroke .3s ease, stroke-width .3s ease;}
.route-line:not(.active){stroke:#AAB6AD;stroke-width:1.2;stroke-dasharray:2 5;}
.route-line.active{stroke:#12897B;stroke-width:1.8;stroke-dasharray:none;}

.pulse-dot{
  offset-path:path('M50,160 L220,160 L440,160');
  offset-distance:0%;
  opacity:0;
}
.pulse-dot.pulse-run{
  animation:travel 2.6s ease-in-out 1 both;
}
@keyframes travel{
  0%{offset-distance:0%;opacity:0;}
  8%{opacity:1;}
  92%{opacity:1;}
  100%{offset-distance:100%;opacity:1;}
}
@media (prefers-reduced-motion: reduce){
  .pulse-dot{offset-distance:100%;opacity:1;}
}

/* ---------- strip: why us ---------- */
.strip{
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:var(--panel);
}
.strip-grid{display:grid;grid-template-columns:repeat(4,1fr);}
@media (max-width:920px){.strip-grid{grid-template-columns:1fr 1fr;}}
@media (max-width:560px){.strip-grid{grid-template-columns:1fr;}}
.strip-item{
  padding:30px 26px;
  border-left:1px solid var(--line);
  transition:background .2s ease;
}
.strip-item:hover{background:rgba(18,137,123,0.045);}
.strip-item:first-child{border-left:none;}
@media (max-width:920px){
  .strip-item:nth-child(odd){border-left:none;}
  .strip-item{border-top:1px solid var(--line);}
  .strip-item:nth-child(-n+2){border-top:none;}
}
@media (max-width:560px){
  .strip-item{border-left:none !important;}
  .strip-item:not(:first-child){border-top:1px solid var(--line);}
}
.strip-item svg{width:26px;height:26px;color:var(--signal);margin-bottom:14px;}
.strip-item h3{font-size:16px;margin-bottom:6px;}
.strip-item p{font-size:14px;color:var(--muted);}

/* ---------- generic section heading ---------- */
.section-pad{padding:88px 0;}
@media (max-width:640px){.section-pad{padding:60px 0;}}
.section-head{max-width:56ch;margin-bottom:48px;}
.section-head h2{font-size:clamp(26px,3.2vw,34px);}
.section-head p{margin-top:14px;font-size:16.5px;color:var(--muted);}

/* ---------- services ---------- */
.services-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;}
@media (max-width:760px){.services-grid{grid-template-columns:1fr;}}
.service-card{
  background:var(--panel);padding:34px;
  border:1px solid var(--line);border-radius:calc(var(--radius) + 4px);
  box-shadow:var(--shadow-sm);
  transition:transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}
.service-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-md);border-color:var(--signal);}
.service-card svg{width:30px;height:30px;color:var(--signal);margin-bottom:18px;}
.service-card h3{font-size:19px;margin-bottom:8px;}
.service-card p.desc{color:var(--muted);font-size:14.5px;margin-bottom:18px;}
.service-card ul li{
  font-size:14px;color:var(--ink-soft);
  padding:8px 0;border-top:1px solid var(--line);
}
.service-card ul li:first-child{border-top:none;}

.process-mini{display:flex;gap:0;margin-top:6px;}
.process-step{flex:1;position:relative;padding-top:26px;}
.process-step:not(:last-child)::after{
  content:'';position:absolute;top:9px;left:calc(50% + 12px);right:calc(-50% + 12px);
  height:1px;background:var(--line-strong);
}
.process-step .num{
  position:absolute;top:0;left:0;
  width:18px;height:18px;border-radius:50%;
  border:1px solid var(--signal);color:var(--signal);
  font-size:10.5px;font-weight:600;
  display:flex;align-items:center;justify-content:center;
  background:var(--panel);
}
.process-step .lbl{font-size:12.5px;color:var(--muted);}

/* ---------- brand strip ---------- */
.brands{padding:44px 0;border-top:1px solid var(--line);}
.brands .label{font-size:13px;color:var(--muted);margin-bottom:20px;}
.brand-row{display:flex;flex-wrap:wrap;gap:12px;}
.brand-chip{
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:12px 20px;
  font-family:'Space Grotesk';
  font-weight:600;
  font-size:15px;
  color:var(--ink-soft);
  background:var(--panel);
  transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.brand-chip:hover{transform:translateY(-3px);box-shadow:var(--shadow-sm);border-color:var(--signal);}

/* ---------- ucaas dark band ---------- */
.ucaas{
  background:var(--ink);
  color:#fff;
  background-image:radial-gradient(circle, rgba(255,255,255,0.09) 1px, transparent 1px);
  background-size:26px 26px;
}
.ucaas .section-head p{color:var(--muted-on-ink);}
.ucaas-top{display:grid;grid-template-columns:1.1fr 1fr;gap:56px;align-items:start;}
@media (max-width:920px){.ucaas-top{grid-template-columns:1fr;}}
.ucaas-highlights{display:flex;flex-direction:column;gap:22px;}
.ucaas-h-item{border-top:1px solid rgba(255,255,255,0.16);padding-top:18px;transition:border-color .2s ease;}
.ucaas-h-item:hover{border-top-color:var(--pulse);}
.ucaas-h-item h4{font-size:16px;margin-bottom:6px;color:#fff;}
.ucaas-h-item p{font-size:14px;color:var(--muted-on-ink);}

.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(255,255,255,0.14);border:1px solid rgba(255,255,255,0.14);margin-top:52px;border-radius:calc(var(--radius) + 4px);overflow:hidden;}
@media (max-width:640px){.stat-row{grid-template-columns:1fr;}}
.stat{background:var(--ink);padding:26px 24px;}
.stat .num{font-family:'Space Grotesk';font-size:34px;font-weight:700;}
.stat .lbl{font-size:13px;color:var(--muted-on-ink);margin-top:4px;}

.benefit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:52px;}
@media (max-width:860px){.benefit-grid{grid-template-columns:1fr 1fr;}}
@media (max-width:560px){.benefit-grid{grid-template-columns:1fr;}}
.benefit{padding:20px 0;border-top:1px solid rgba(255,255,255,0.16);transition:border-color .2s ease;}
.benefit:hover{border-top-color:var(--signal);}
.benefit h4{font-size:14.5px;margin-bottom:6px;color:#fff;}
.benefit p{font-size:13.5px;color:var(--muted-on-ink);}

/* ---------- faq ---------- */
.faq-list{border-top:1px solid var(--line);}
.faq-item{border-bottom:1px solid var(--line);}
.faq-q{
  width:100%;text-align:left;background:none;border:none;
  padding:22px 4px;display:flex;justify-content:space-between;align-items:center;
  gap:20px;cursor:pointer;font-size:16.5px;font-weight:500;color:var(--ink);
  transition:color .2s ease;
}
.faq-q:hover{color:var(--signal);}
.faq-q .plus{
  flex-shrink:0;width:20px;height:20px;position:relative;
}
.faq-q .plus::before,.faq-q .plus::after{
  content:'';position:absolute;background:var(--ink);
  transition:transform .2s ease, background .2s ease;
}
.faq-q:hover .plus::before,.faq-q:hover .plus::after{background:var(--signal);}
.faq-q .plus::before{top:9px;left:2px;right:2px;height:1.5px;}
.faq-q .plus::after{left:9px;top:2px;bottom:2px;width:1.5px;}
.faq-item.open .plus::after{transform:rotate(90deg);}
.faq-a{
  max-height:0;overflow:hidden;transition:max-height .3s ease;
}
.faq-a p{padding:0 4px 22px;font-size:15px;color:var(--muted);max-width:64ch;}

/* ---------- contact ---------- */
.contact-grid{display:grid;grid-template-columns:1.1fr 0.9fr;gap:24px;}
@media (max-width:860px){.contact-grid{grid-template-columns:1fr;}}
.contact-cards{display:grid;grid-template-columns:1fr;gap:16px;}
.contact-card{
  background:var(--panel);padding:28px 30px;
  border:1px solid var(--line);border-radius:calc(var(--radius) + 4px);
  box-shadow:var(--shadow-sm);
  transition:transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.contact-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);border-color:var(--signal);}
.contact-card h4{font-size:14px;color:var(--muted);font-weight:500;margin-bottom:10px;}
.contact-card .val{font-family:'Space Grotesk';font-size:17px;font-weight:600;transition:color .2s ease;}
.contact-card .val + .val{margin-top:4px;}
.contact-card a.val:hover{color:var(--signal);}

.office-panel{
  background:var(--panel);padding:30px;
  border:1px solid var(--line);border-radius:calc(var(--radius) + 4px);
  box-shadow:var(--shadow-sm);
}
.office-panel h3{font-size:18px;margin-bottom:18px;}
.office-row{display:flex;justify-content:space-between;padding:10px 0;border-top:1px solid var(--line);font-size:14.5px;}
.office-row:first-of-type{border-top:none;}
.office-row span:first-child{color:var(--muted);}
.office-panel .btn{margin-top:22px;width:100%;justify-content:center;}

/* ---------- cta banner ---------- */
.cta-banner{
  background:var(--signal);
  color:#fff;
  padding:64px 0;
  text-align:left;
}
.cta-banner .row{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;}
.cta-banner h2{font-size:clamp(24px,3vw,30px);max-width:22ch;color:#fff;}
.cta-banner .btn-primary{background:#fff;color:var(--signal-dark);}
.cta-banner .btn-primary:hover{background:#EFF3EE;box-shadow:0 14px 28px -14px rgba(0,0,0,0.25);}

/* ---------- footer ---------- */
footer.site-footer{background:var(--ink);color:var(--muted-on-ink);padding:64px 0 32px;font-size:14px;}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:40px;}
@media (max-width:760px){.footer-grid{grid-template-columns:1fr 1fr;}}
@media (max-width:480px){.footer-grid{grid-template-columns:1fr;}}
.footer-grid h5{color:#fff;font-family:'Space Grotesk';font-size:14px;font-weight:600;margin-bottom:16px;}
.footer-grid li{padding:6px 0;}
.footer-grid a{transition:color .2s ease;}
.footer-grid a:hover{color:#fff;}
.footer-logo{display:flex;align-items:center;gap:10px;font-family:'Space Grotesk';font-weight:700;font-size:18px;color:#fff;margin-bottom:14px;}
.footer-bottom{margin-top:52px;padding-top:24px;border-top:1px solid rgba(255,255,255,0.14);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:13px;}

/* ---------- generic page content (page.php) ---------- */
.page-content-wrap{padding:88px 0;max-width:760px;}
.page-content-wrap h1{font-size:clamp(28px,4vw,40px);margin-bottom:24px;}
.page-content-wrap p{margin-bottom:1em;color:var(--ink-soft);}

/* ---------- accessibility: skip link ---------- */
.skip-link{
  position:absolute;left:-9999px;top:0;
  background:var(--ink);color:#fff;
  padding:12px 20px;border-radius:0 0 8px 0;
  z-index:100;font-size:14px;font-weight:600;
}
.skip-link:focus{left:0;}

/* ---------- floating WhatsApp button ---------- */
.wa-float{
  position:fixed;right:22px;bottom:22px;z-index:60;
  width:56px;height:56px;border-radius:50%;
  background:var(--signal);color:#fff;
  display:flex;align-items:center;justify-content:center;
  box-shadow:var(--shadow-lg);
  transition:transform .2s ease, box-shadow .2s ease;
}
.wa-float:hover{transform:translateY(-3px) scale(1.04);box-shadow:0 20px 40px -16px rgba(18,137,123,0.55);}
.wa-float svg{width:24px;height:24px;position:relative;z-index:2;}
.wa-ring{
  position:absolute;inset:0;border-radius:50%;
  border:2px solid var(--signal);
  animation:waPulse 2.4s ease-out infinite;
}
@keyframes waPulse{
  0%{transform:scale(1);opacity:.6;}
  100%{transform:scale(1.7);opacity:0;}
}
@media (prefers-reduced-motion: reduce){.wa-ring{animation:none;display:none;}}
@media (max-width:640px){.wa-float{right:16px;bottom:16px;width:50px;height:50px;}}

/* ---------- back-to-top button ---------- */
.back-to-top{
  position:fixed;left:22px;bottom:22px;z-index:60;
  width:44px;height:44px;border-radius:50%;
  background:var(--panel);border:1px solid var(--line);color:var(--ink);
  display:flex;align-items:center;justify-content:center;
  box-shadow:var(--shadow-sm);cursor:pointer;
  opacity:0;pointer-events:none;transform:translateY(8px);
  transition:opacity .2s ease, transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.back-to-top.show{opacity:1;pointer-events:auto;transform:translateY(0);}
.back-to-top:hover{box-shadow:var(--shadow-md);border-color:var(--signal);}
.back-to-top svg{width:18px;height:18px;}
@media (max-width:640px){.back-to-top{left:16px;bottom:16px;width:40px;height:40px;}}

/* ---------- team-size sizer ---------- */
.sizer{
  margin-top:48px;padding:32px;
  border:1px solid var(--line);border-radius:calc(var(--radius) + 4px);
  background:var(--panel);box-shadow:var(--shadow-sm);
  display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center;
}
@media (max-width:760px){.sizer{grid-template-columns:1fr;}}
.sizer-head h3{font-size:19px;margin-bottom:8px;}
.sizer-head p{font-size:14.5px;color:var(--muted);}
.sizer-body input[type="range"]{width:100%;accent-color:var(--signal);margin:14px 0 6px;}
.sizer-value{font-family:'Space Grotesk';font-weight:700;font-size:22px;margin-bottom:14px;}
.sizer-value span{color:var(--signal);}
.sizer-result{border-top:1px solid var(--line);padding-top:14px;}
.sizer-result h4{font-size:16px;margin-bottom:6px;}
.sizer-result p{font-size:14px;color:var(--muted);}
